Timeline



Jul 18, 2017:

11:11 PM Changeset in webkit [219652] by Carlos Garcia Campos
  • 7 edits in trunk/Source

WebDriver: handle invalid selector errors
https://bugs.webkit.org/show_bug.cgi?id=174619

Reviewed by Brian Burg.

Source/WebDriver:

Add InvalidSelector error and handle it in case of protocol server error.

  • CommandResult.cpp:

(WebDriver::CommandResult::CommandResult):
(WebDriver::CommandResult::httpStatusCode):
(WebDriver::CommandResult::errorString):

  • CommandResult.h:

Source/WebKit:

We are currently handling only XPathException and only when it's an invalid expression. In the xpath case, the
spec also says "If any item in result is not an element return an error with error code invalid selector.", so
we should also handle TYPE_ERR (The expression could not be converted to return the specified type.). However,
since the spec says "or other error", I think we can simplify this and simply throw InvalidSelector inside the
catch, without checking any specific error. This is causing 14 failures in selenium tests.

§12. Element Retrieval. Step 6: If a DOMException, SyntaxError, XPathException, or other error occurs during the
execution of the element location strategy, return error invalid selector.
https://www.w3.org/TR/webdriver/#dfn-find

  • UIProcess/Automation/Automation.json: Add InvalidSelector error.
  • UIProcess/Automation/atoms/FindNodes.js:

(tryToFindNode): Raise InvalidSelector in case of error.

  • WebProcess/Automation/WebAutomationSessionProxy.cpp:

(WebKit::WebAutomationSessionProxy::evaluateJavaScriptFunction): Handle InvalidSelector exceptions.

11:10 PM Changeset in webkit [219651] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit

Web Automation: error details not passed to DidEvaluateJavaScriptFunction message when callback was not called before page unload
https://bugs.webkit.org/show_bug.cgi?id=174624

Reviewed by Brian Burg.

There's a variable errorMessage, but it's unused.

  • WebProcess/Automation/WebAutomationSessionProxy.cpp:

(WebKit::WebAutomationSessionProxy::didClearWindowObjectForFrame): Pass errorMessage instead of String() to DidEvaluateJavaScriptFunction.

11:08 PM Changeset in webkit [219650] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit

Web Automation: evaluateJavaScriptFunction should always notify the web process before returning early
https://bugs.webkit.org/show_bug.cgi?id=174623

Reviewed by Brian Burg.

It currently returns early if page, frame or scriptObject are nullptr, in which cases the UI process is not
notified. This causes test testShouldNotBeAbleToDoAnythingTheFrameIsDeletedFromUnderUs to hang, because message
DidEvaluateJavaScriptFunction is never sent when the given frame no longer exists. We should send
DidEvaluateJavaScriptFunction with WindowNotFound in case of page is nullptr and FrameNotFound if the frame is
nullptr. The scriptObject early return is actually wrong, because scriptObjectForFrame creates a new script if
there's isn't one for the given frame.

  • WebProcess/Automation/WebAutomationSessionProxy.cpp:

(WebKit::WebAutomationSessionProxy::evaluateJavaScriptFunction):

11:07 PM Changeset in webkit [219649] by Carlos Garcia Campos
  • 3 edits in trunk/Source/WebKit

Web Automation: pending evaluate script callbacks are stored with the wrong frame ID when using the default main frame
https://bugs.webkit.org/show_bug.cgi?id=174622

Reviewed by Brian Burg.

The frameHandle argument is optional in evaluateJavaScriptFunction(), when not provided we pass 0 to the web
process. The proxy gets the web page main frame when received frame ID is 0, but the given frameID is
still used as key of m_webFramePendingEvaluateJavaScriptCallbacksMap and also passed to the javascript function
as argument. I think r203442 was actually a workaround to this bug, making it even more hidden. Both
m_webFrameScriptObjectMap and m_webFramePendingEvaluateJavaScriptCallbacksMap should never have 0 as a
key, since they always use a frame ID, and the frame identifier counter starts at 1. This is causing test
testShouldDetectPageLoadsWhileWaitingOnAnAsyncScriptAndReturnAnError to hang, because when the page is unloaded
and didClearWindowObjectForFrame is called, we try to get the pending callbacks of frame 1, but they were stored
as frame 0 so DidEvaluateJavaScriptFunction message is never sent to the UI process.

  • WebProcess/Automation/WebAutomationSessionProxy.cpp:

(WebKit::WebAutomationSessionProxy::evaluateJavaScriptFunction): Use always the actual frameID from the WebFrame
we are using.

  • WebProcess/Automation/WebAutomationSessionProxy.h: Do not allow 0 as a key of

m_webFramePendingEvaluateJavaScriptCallbacksMap and m_webFrameScriptObjectMap.

10:47 PM Changeset in webkit [219648] by aestes@apple.com
  • 36 edits in trunk

[Xcode] Enable CLANG_WARN_RANGE_LOOP_ANALYSIS
https://bugs.webkit.org/show_bug.cgi?id=174631

Reviewed by Tim Horton.

Source/bmalloc:

  • Configurations/Base.xcconfig:

Source/JavaScriptCore:

  • Configurations/Base.xcconfig:
  • b3/B3FoldPathConstants.cpp:
  • b3/B3LowerMacros.cpp:
  • b3/air/AirAllocateRegistersByGraphColoring.cpp:
  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::check):
(JSC::DFG::ByteCodeParser::planLoad):

Source/ThirdParty/ANGLE:

  • Configurations/Base.xcconfig:

Source/WebCore:

  • Configurations/Base.xcconfig:
  • rendering/Grid.cpp:

(WebCore::Grid::insert):

  • rendering/RenderTreeAsText.cpp:

(WebCore::write):

  • rendering/SimpleLineLayoutCoverage.cpp:

(WebCore::SimpleLineLayout::printSimpleLineLayoutCoverage):

Source/WebCore/PAL:

  • Configurations/Base.xcconfig:

Source/WebInspectorUI:

  • Configurations/Base.xcconfig:

Source/WebKit:

  • Configurations/Base.xcconfig:
  • Shared/API/APIArray.cpp:

(API::Array::toStringVector):

  • UIProcess/Plugins/PlugInAutoStartProvider.cpp:

(WebKit::PlugInAutoStartProvider::setAutoStartOriginsArray):

  • UIProcess/UserContent/WebUserContentControllerProxy.cpp:

(WebKit::WebUserContentControllerProxy::addProcess):
(WebKit::WebUserContentControllerProxy::removeAllUserScripts):
(WebKit::WebUserContentControllerProxy::removeAllUserStyleSheets):

  • UIProcess/ios/forms/WKFileUploadPanel.mm:

(-[WKFileUploadPanel presentWithParameters:resultListener:]):

  • WebProcess/InjectedBundle/InjectedBundlePageEditorClient.cpp:

(WebKit::InjectedBundlePageEditorClient::getPasteboardDataForRange):

Source/WebKitLegacy/mac:

  • Configurations/Base.xcconfig:

Source/WTF:

  • Configurations/Base.xcconfig:

Tools:

  • DumpRenderTree/mac/Configurations/Base.xcconfig:
  • MiniBrowser/Configurations/Base.xcconfig:
  • MobileMiniBrowser/Configurations/Base.xcconfig:
  • TestWebKitAPI/Configurations/Base.xcconfig:
  • WebKitTestRunner/Configurations/Base.xcconfig:
9:53 PM Changeset in webkit [219647] by Yusuke Suzuki
  • 14 edits in trunk/Source

WTF::Thread should have the threads stack bounds.
https://bugs.webkit.org/show_bug.cgi?id=173975

Reviewed by Mark Lam.

Source/JavaScriptCore:

There is a site in JSC that try to walk another thread's stack.
Currently, stack bounds are stored in WTFThreadData which is located
in TLS. Thus, only the thread itself can access its own WTFThreadData.
We workaround this situation by holding StackBounds in MachineThread in JSC,
but StackBounds should be put in WTF::Thread instead.

This patch adds StackBounds to WTF::Thread. StackBounds information is tightly
coupled with Thread. Thus putting it in WTF::Thread is natural choice.

  • heap/MachineStackMarker.cpp:

(JSC::MachineThreads::MachineThread::MachineThread):
(JSC::MachineThreads::MachineThread::captureStack):

  • heap/MachineStackMarker.h:

(JSC::MachineThreads::MachineThread::stackBase):
(JSC::MachineThreads::MachineThread::stackEnd):

  • runtime/VMTraps.cpp:

Source/WebCore:

When creating WebThread, we first allocate WebCore::ThreadGlobalData in UI thread
and share it with WebThread.
The problem is that WebCore::ThreadGlobalData has CachedResourceRequestInitiators.
It allocates AtomicString, which requires WTFThreadData.

In this patch, we call WTF::initializeThreading() before allocating WebCore::ThreadGlobalData.
And we also call AtomicString::init() before calling WebCore::ThreadGlobalData since
WebCore::ThreadGlobalData allocates AtomicString.

  • platform/ios/wak/WebCoreThread.mm:

(StartWebThread):

Source/WTF:

We move StackBounds from WTFThreadData to WTF::Thread.
One important thing is that we should make valid StackBounds
visible to Thread::create() caller. When the caller get
WTF::Thread from Thread::create(), this WTF::Thread should
have a valid StackBounds. But StackBounds information can be
retrived only in the WTF::Thread's thread itself.

We also clean up WTF::initializeThreading. StringImpl::empty()
is now statically initialized by using constexpr constructor.
Thus we do not need to call StringImpl::empty() explicitly here.
And WTF::initializeThreading() does not have any main thread
affinity right now in all the platforms. So we fix the comment
in Threading.h. Then, now, WTF::initializeThreading() is called
in UI thread when using Web thread in iOS.

  • wtf/StackBounds.h:

(WTF::StackBounds::emptyBounds):
(WTF::StackBounds::StackBounds):

  • wtf/Threading.cpp:

(WTF::threadEntryPoint):
(WTF::Thread::create):
(WTF::Thread::currentMayBeNull):
(WTF::Thread::initialize):
(WTF::initializeThreading):

  • wtf/Threading.h:

(WTF::Thread::stack):

  • wtf/ThreadingPthreads.cpp:

(WTF::Thread::initializeCurrentThreadEvenIfNonWTFCreated):
(WTF::Thread::current):
(WTF::initializeCurrentThreadEvenIfNonWTFCreated): Deleted.
(WTF::Thread::currentMayBeNull): Deleted.

  • wtf/ThreadingWin.cpp:

(WTF::Thread::initializeCurrentThreadEvenIfNonWTFCreated):
(WTF::Thread::initializeCurrentThreadInternal):
(WTF::Thread::current):

  • wtf/WTFThreadData.cpp:

(WTF::WTFThreadData::WTFThreadData):

  • wtf/WTFThreadData.h:

(WTF::WTFThreadData::stack):

8:54 PM Changeset in webkit [219646] by mmaxfield@apple.com
  • 4 edits
    10 adds in trunk

Setting the minimum font size preference doesn’t affect absolute line-height values, so lines overlap
https://bugs.webkit.org/show_bug.cgi?id=174406
<rdar://problem/10139227>

Reviewed by Simon Fraser.

Source/WebCore:

When the minimumFontSize API preference is set, we will increase the font size without increasing
the line height. If the content specifies line-height as an absolute value, there can be two
unfortunate results:

  • Adjacent lines in a paragraph can overlap
  • If the paragraph (or containin block or whatever) uses overflow: hidden, the first and last lines

can be cut off and potentially indecipherable.

Instead, we should use the minimum font size preference as a signal that we should increase the
line-height as well as the font-size. Eventually, we will want to increase it by an amount
proportional to the increase in font-size (which can be due to minimumFontSize, minimumLogicalFontSize,
text autosizing, etc.). However, because minimumLogicalFontSize is on by default, this would cause
a behavior change on many webpages which use small text, so such a change would be too risky right now.
Instead, we can pretend that minimumFontSize is the only cause that text increases, and use this as the
only signal to boost the corresponding line-height.

Tests: fast/text/line-height-minimumFontSize-text-zoom.html

fast/text/line-height-minimumFontSize-visual.html
fast/text/line-height-minimumFontSize-zoom.html
fast/text/line-height-minimumFontSize.html
fast/text/line-height-minimumFontSize-autosize.html

  • css/StyleBuilderCustom.h:

(WebCore::computeBaseSpecifiedFontSize):
(WebCore::computeLineHeightMultiplierDueToFontSize):
(WebCore::StyleBuilderCustom::applyValueLineHeight):
(WebCore::StyleBuilderCustom::applyValueFill):
(WebCore::StyleBuilderCustom::applyValueStroke):
(WebCore::StyleBuilderCustom::applyValueContent):

  • rendering/TextAutoSizing.cpp:

LayoutTests:

  • fast/text/line-height-minimumFontSize-autosize-expected.text: Added.
  • fast/text/line-height-minimumFontSize-autosize.html: Added.
  • fast/text/line-height-minimumFontSize-expected.txt: Added.
  • fast/text/line-height-minimumFontSize-text-zoom-expected.html: Added.
  • fast/text/line-height-minimumFontSize-text-zoom.html: Added.
  • fast/text/line-height-minimumFontSize-visual-expected.html: Added.
  • fast/text/line-height-minimumFontSize-visual.html: Added.
  • fast/text/line-height-minimumFontSize-zoom-expected.html: Added.
  • fast/text/line-height-minimumFontSize-zoom.html: Added.
  • fast/text/line-height-minimumFontSize.html: Added.
6:13 PM Changeset in webkit [219645] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

Media controls are missing content in fullscreen when document has scroll offset.
https://bugs.webkit.org/show_bug.cgi?id=174644
<rdar://problem/32415323>

Reviewed by Simon Fraser.

If a non-user initiated scrolling (result of resize for example) is processed asynchronously, it might
leapfrog other, programatic scrollings and trigger unintentional scroll offsets (and turn into unwanted clippings).
This patch ensures that both resize and top content inset change are translated into programatic scrolling.

Unable to test full screen video.

  • page/FrameView.cpp:

(WebCore::FrameView::setFrameRect):
(WebCore::FrameView::topContentInsetDidChange):

6:05 PM Changeset in webkit [219644] by aestes@apple.com
  • 27 edits in trunk

[Xcode] Enable CLANG_WARN_OBJC_LITERAL_CONVERSION
https://bugs.webkit.org/show_bug.cgi?id=174631

Reviewed by Sam Weinig.

Source/bmalloc:

  • Configurations/Base.xcconfig:

Source/JavaScriptCore:

  • Configurations/Base.xcconfig:

Source/ThirdParty/ANGLE:

  • Configurations/Base.xcconfig:

Source/ThirdParty/libwebrtc:

  • Configurations/Base.xcconfig:

Source/WebCore:

  • Configurations/Base.xcconfig:
  • platform/ios/PlatformPasteboardIOS.mm:

(WebCore::PlatformPasteboard::write):

Source/WebCore/PAL:

  • Configurations/Base.xcconfig:

Source/WebInspectorUI:

  • Configurations/Base.xcconfig:

Source/WebKit:

  • Configurations/Base.xcconfig:

Source/WebKitLegacy/mac:

  • Configurations/Base.xcconfig:

Source/WTF:

  • Configurations/Base.xcconfig:

Tools:

  • DumpRenderTree/mac/Configurations/Base.xcconfig:
  • MiniBrowser/Configurations/Base.xcconfig:
  • MobileMiniBrowser/Configurations/Base.xcconfig:
  • TestWebKitAPI/Configurations/Base.xcconfig:
  • WebKitTestRunner/Configurations/Base.xcconfig:
5:33 PM Changeset in webkit [219643] by rniwa@webkit.org
  • 2 edits in trunk/Websites/browserbench.org

Merge r219640 into Speedometer 1.0.

  • Speedometer/resources/benchmark-runner.js:

(BenchmarkRunner.prototype._writeMark):
(BenchmarkRunner.prototype._runTest):
(BenchmarkRunner.prototype._runTestAndRecordResults):

4:54 PM Changeset in webkit [219642] by commit-queue@webkit.org
  • 4 edits
    2 adds in trunk

Align quirky number parsing with other browsers
https://bugs.webkit.org/show_bug.cgi?id=155874

Patch by Ali Juma <ajuma@chromium.org> on 2017-07-18
Reviewed by Simon Fraser.

Source/WebCore:

Parse unit-less non-zero values for animation-duration and transition-duration
as invalid time values in quirks mode.

Test: fast/css/animation-transition-duration-quirksmode.html

  • css/parser/CSSPropertyParser.cpp:

(WebCore::consumeAnimationValue):

LayoutTests:

  • animations/animation-add-events-in-handler.html:
  • fast/css/animation-transition-duration-quirksmode-expected.txt: Added.
  • fast/css/animation-transition-duration-quirksmode.html: Added.
4:32 PM Changeset in webkit [219641] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

HysteresisActivity cannot be used in the UIProcess
https://bugs.webkit.org/show_bug.cgi?id=174643
<rdar://problem/33086442>

Reviewed by Tim Horton.

Port HysteresisActivity to RunLoop::Timer so that it can safely be used in
the UIProcess as well.

  • platform/HysteresisActivity.h:
4:22 PM Changeset in webkit [219640] by commit-queue@webkit.org
  • 2 edits in trunk/PerformanceTests

Add performance.mark()s around each test step
https://bugs.webkit.org/show_bug.cgi?id=174530

Patch by Matt Kotsenas <mattkot@microsoft.com> on 2017-07-18
Reviewed by Ryosuke Niwa.

Add performance.mark() around each test step to make analysis
simpler. Now each test step can be investigated via dev tools, ETW, etc.

  • Speedometer/resources/benchmark-runner.js:

(BenchmarkRunner.prototype._writeMark):
(BenchmarkRunner.prototype._runTest):
(BenchmarkRunner.prototype._runTestAndRecordResults):

4:19 PM Changeset in webkit [219639] by Joseph Pecoraro
  • 8 edits in trunk

Web Inspector: Modernize InjectedScriptSource
https://bugs.webkit.org/show_bug.cgi?id=173890

Reviewed by Brian Burg.

Source/JavaScriptCore:

  • inspector/InjectedScript.h:

Reorder functions to be slightly better.

  • inspector/InjectedScriptSource.js:
  • Convert to classes named InjectedScript and RemoteObject
  • Align InjectedScript's API with the wrapper C++ interfaces
  • Move some code to RemoteObject where appropriate (subtype, describe)
  • Move some code to helper functions (isPrimitiveValue, isDefined)
  • Refactor for readability and modern features
  • Remove some unused / unnecessary code

Source/WebCore:

Covered by existing tests.

  • inspector/CommandLineAPIModuleSource.js:

(CommandLineAPIImpl.prototype.copy):
(CommandLineAPIImpl.prototype._inspect):
Use RemoteObject, a new parameter.

LayoutTests:

  • inspector/model/remote-object-expected.txt:
  • inspector/model/stack-trace-expected.txt:

Now that we use classes, implicitly strict mode, the call frame
for evaluate gets tail call eliminated.

4:08 PM Changeset in webkit [219638] by rniwa@webkit.org
  • 3 edits
    2 adds in trunk

REGRESSION(r218910): Crash when password field changes to text field
https://bugs.webkit.org/show_bug.cgi?id=174560

Reviewed by Zalan Bujtas.

Source/WebCore:

The crash was caused by textMarkerDataForFirstPositionInTextControl accessing a nullptr returned by getOrCreate.
Unfortunately, in order to this fix bug while preserving the exact behavior would require synchronously creating
a renderer for the editing host when the input type changed since we can't create an accessbility object out of
a renderer-less node.

Instead, revert back to pre-r218910 behavior of always using the text control element's axID when notifying
the value change. While this is inconsistent with the way editing commands report content changes, I've since
learned that VoiceOver has code to deal with this exact situation.

Test: accessibility/mac/input-type-change-crash-2.html

  • accessibility/AXObjectCache.cpp:

(WebCore::AXObjectCache::textMarkerDataForFirstPositionInTextControl):

LayoutTests:

Added a regression test based on the test case provided by Daniel Bates.

  • accessibility/mac/input-type-change-crash-2-expected.txt: Added.
  • accessibility/mac/input-type-change-crash-2.html: Added.
3:54 PM Changeset in webkit [219637] by dbates@webkit.org
  • 2 edits in trunk/Tools

lldb: Add type summary for StringView
https://bugs.webkit.org/show_bug.cgi?id=174637

Reviewed by Sam Weinig.

For debugging convenience, adds a pretty-print type summary for StringView. Evaluating a
StringView object will print output that has the form:

(WTF::StringView) $4 = { length = 2, contents = 'li' } {

m_characters = 0x000000011b57abb5 "eeeeeefjh0n"
m_length = 2
m_is8Bit = true
m_underlyingString = 0x0000614000000a90

}

  • lldb/lldb_webkit.py:

(lldb_init_module): Use WTFStringView_SummaryProvider to format StringView types.
(WTFStringView_SummaryProvider):
(WTFStringViewProvider):
(WTFStringViewProvider.
init):
(WTFStringViewProvider.is_8bit): Access field StringView.m_is8Bit.
(WTFStringViewProvider.get_length): Access field StringView.m_length.
(WTFStringViewProvider.get_characters): Access field StringView.m_characters.
(WTFStringViewProvider.to_string): Returns the string represented by the StringView.

3:40 PM Changeset in webkit [219636] by mark.lam@apple.com
  • 5 edits in trunk/Source/JavaScriptCore

Butterfly storage need not be initialized for indexing type Undecided.
https://bugs.webkit.org/show_bug.cgi?id=174516

Reviewed by Saam Barati.

While it's not incorrect to initialize the butterfly storage when the
indexingType is Undecided, it is inefficient as we'll end up initializing
it again later when we convert the storage to a different indexingType.
Some of our code already skips initializing Undecided butterflies.
This patch makes it the consistent behavior everywhere.

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::emitAllocateRawObject):

  • runtime/JSArray.cpp:

(JSC::JSArray::tryCreateUninitializedRestricted):

  • runtime/JSArray.h:

(JSC::JSArray::tryCreate):

  • runtime/JSObject.cpp:

(JSC::JSObject::ensureLengthSlow):

3:28 PM Changeset in webkit [219635] by BJ Burg
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: adjust wording of "clear when page {navigates -> loads}"
https://bugs.webkit.org/show_bug.cgi?id=174589
<rdar://problem/32797981>

Reviewed by Joseph Pecoraro.

  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Views/SettingsTabContentView.js:

(WebInspector.SettingsTabContentView.prototype._createGeneralSettingsView):

3:24 PM Changeset in webkit [219634] by Matt Baker
  • 11 edits
    2 adds in trunk

Web Inspector: Refactoring: replace InspectorCanvasAgent::CanvasEntry with a helper class
https://bugs.webkit.org/show_bug.cgi?id=174311

Reviewed by Devin Rousso.

Source/WebCore:

This patch adds a helper class for tracking canvases and their data. The
current approach of defining a helper structure in the agent's header is
awkward to use and maintain, and won't scale well as more canvas instrumentation
points and data are added.

  • CMakeLists.txt:
  • WebCore.xcodeproj/project.pbxproj:

New file.

  • inspector/InspectorCanvas.cpp: Added.

(WebCore::InspectorCanvas::create):
(WebCore::InspectorCanvas::InspectorCanvas):
(WebCore::InspectorCanvas::buildObjectForCanvas):

  • inspector/InspectorCanvas.h: Added.
  • inspector/InspectorCanvasAgent.cpp:

(WebCore::InspectorCanvasAgent::InspectorCanvasAgent):
(WebCore::InspectorCanvasAgent::enable):
(WebCore::InspectorCanvasAgent::requestNode):
(WebCore::InspectorCanvasAgent::requestContent):
(WebCore::InspectorCanvasAgent::requestCSSCanvasClientNodes):
(WebCore::InspectorCanvasAgent::resolveCanvasContext):
(WebCore::InspectorCanvasAgent::frameNavigated):
(WebCore::InspectorCanvasAgent::didCreateCSSCanvas):
(WebCore::InspectorCanvasAgent::didChangeCSSCanvasClientNodes):
(WebCore::InspectorCanvasAgent::didCreateCanvasRenderingContext):
(WebCore::InspectorCanvasAgent::didChangeCanvasMemory):
(WebCore::InspectorCanvasAgent::canvasDestroyed):
(WebCore::InspectorCanvasAgent::canvasDestroyedTimerFired):
(WebCore::InspectorCanvasAgent::clearCanvasData):
(WebCore::InspectorCanvasAgent::unbindCanvas):
(WebCore::InspectorCanvasAgent::assertInspectorCanvas):
(WebCore::InspectorCanvasAgent::findInspectorCanvas):
(WebCore::InspectorCanvasAgent::getCanvasEntry): Deleted.
(WebCore::InspectorCanvasAgent::buildObjectForCanvas): Deleted.

  • inspector/InspectorCanvasAgent.h:
  • inspector/InspectorController.cpp:

(WebCore::InspectorController::InspectorController):
Remove unused constructor argument.

LayoutTests:

Updated test expectations for new error strings.

  • inspector/canvas/css-canvas-clients-expected.txt:
  • inspector/canvas/requestContent-2d-expected.txt:
  • inspector/canvas/requestNode-expected.txt:
  • inspector/canvas/resolveCanvasContext-2d-expected.txt:
3:07 PM Changeset in webkit [219633] by sbarati@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

AirLowerAfterRegAlloc may incorrectly use a callee save that's live as a scratch register
https://bugs.webkit.org/show_bug.cgi?id=174515
<rdar://problem/33358092>

Reviewed by Filip Pizlo.

AirLowerAfterRegAlloc was computing the set of available scratch
registers incorrectly. It was always excluding callee save registers
from the set of live registers. It did not guarantee that live callee save
registers were not in the set of scratch registers that could
get clobbered. That's incorrect as the shuffling code is free
to overwrite whatever is in the scratch register it gets passed.

  • b3/air/AirLowerAfterRegAlloc.cpp:

(JSC::B3::Air::lowerAfterRegAlloc):

  • b3/testb3.cpp:

(JSC::B3::functionNineArgs):
(JSC::B3::testShuffleDoesntTrashCalleeSaves):
(JSC::B3::run):

  • jit/RegisterSet.h:
2:45 PM Changeset in webkit [219632] by graouts@webkit.org
  • 4 edits in trunk/LayoutTests

Turn tests at media/modern-media-controls/playback-support back on
https://bugs.webkit.org/show_bug.cgi?id=174639

Reviewed by Dean Jackson.

  • media/modern-media-controls/playback-support/playback-support-button-click.html:
  • platform/ios-simulator/TestExpectations:
  • platform/mac/TestExpectations:
2:44 PM Changeset in webkit [219631] by graouts@webkit.org
  • 5 edits in trunk/LayoutTests

Turn tests at media/modern-media-controls/pip-support back on
https://bugs.webkit.org/show_bug.cgi?id=174636

Reviewed by Dean Jackson.

  • media/modern-media-controls/pip-support/ipad/pip-support-tap.html:
  • platform/ios-simulator/TestExpectations:
  • platform/mac-elcapitan/TestExpectations:
  • platform/mac/TestExpectations:
2:34 PM Changeset in webkit [219630] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebCore

[Curl] Move detail implementation from ResourceHandle to ResourceHandleInternal
https://bugs.webkit.org/show_bug.cgi?id=174641

After moving stuff from ResourceHandleManager to ResourceHandle on
https://bugs.webkit.org/show_bug.cgi?id=173630, still there're many violation
remains between ResourceHandle and ResourceHandleInternal classes.
Many of implementation detail should be move to ResourceHandleInternal
to improve build speed.

Patch by Basuke Suzuki <Basuke Suzuki> on 2017-07-18
Reviewed by Alex Christensen.

  • platform/network/ResourceHandle.h:
  • platform/network/ResourceHandleInternal.h:

(WebCore::ResourceHandleInternal::ResourceHandleInternal):

  • platform/network/curl/ResourceHandleCurl.cpp:

(WebCore::ResourceHandleInternal::~ResourceHandleInternal):
(WebCore::ResourceHandle::start):
(WebCore::ResourceHandle::cancel):
(WebCore::ResourceHandleInternal::initialize):
(WebCore::ResourceHandleInternal::applyAuthentication):
(WebCore::ResourceHandleInternal::setupPUT):
(WebCore::ResourceHandleInternal::setupPOST):
(WebCore::ResourceHandleInternal::setupFormData):
(WebCore::ResourceHandle::platformSetDefersLoading):
(WebCore::ResourceHandleInternal::didFinish):
(WebCore::ResourceHandleInternal::didFail):
(WebCore::ResourceHandleInternal::calculateWebTimingInformations):
(WebCore::ResourceHandleInternal::handleLocalReceiveResponse):
(WebCore::ResourceHandleInternal::willPrepareSendData):
(WebCore::ResourceHandleInternal::didReceiveHeaderLine):
(WebCore::ResourceHandleInternal::didReceiveAllHeaders):
(WebCore::ResourceHandleInternal::didReceiveContentData):
(WebCore::ResourceHandleInternal::readCallback):
(WebCore::ResourceHandleInternal::headerCallback):
(WebCore::ResourceHandleInternal::writeCallback):
(WebCore::ResourceHandle::platformLoadResourceSynchronously):
(WebCore::ResourceHandleInternal::dispatchSynchronousJob):
(WebCore::ResourceHandleInternal::handleDataURL):
(WebCore::ResourceHandle::initialize): Deleted.
(WebCore::ResourceHandle::applyAuthentication): Deleted.
(WebCore::ResourceHandle::setupPUT): Deleted.
(WebCore::ResourceHandle::setupPOST): Deleted.
(WebCore::ResourceHandle::setupFormData): Deleted.
(WebCore::ResourceHandle::didFinish): Deleted.
(WebCore::ResourceHandle::didFail): Deleted.
(WebCore::ResourceHandle::calculateWebTimingInformations): Deleted.
(WebCore::ResourceHandle::handleLocalReceiveResponse): Deleted.
(WebCore::ResourceHandle::willPrepareSendData): Deleted.
(WebCore::ResourceHandle::didReceiveHeaderLine): Deleted.
(WebCore::ResourceHandle::didReceiveAllHeaders): Deleted.
(WebCore::ResourceHandle::didReceiveContentData): Deleted.
(WebCore::ResourceHandle::readCallback): Deleted.
(WebCore::ResourceHandle::headerCallback): Deleted.
(WebCore::ResourceHandle::writeCallback): Deleted.
(WebCore::ResourceHandle::dispatchSynchronousJob): Deleted.
(WebCore::ResourceHandle::handleDataURL): Deleted.

2:30 PM Changeset in webkit [219629] by Matt Lewis
  • 2 edits in trunk/LayoutTests

Marked http/tests/cache/disk-cache/redirect-chain-limits.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=172662

Unreviewed test gardening.

  • platform/wk2/TestExpectations:
2:23 PM Changeset in webkit [219628] by aestes@apple.com
  • 26 edits in trunk

[Xcode] Enable CLANG_WARN_NON_LITERAL_NULL_CONVERSION
https://bugs.webkit.org/show_bug.cgi?id=174631

Reviewed by Dan Bernstein.

Source/bmalloc:

  • Configurations/Base.xcconfig:

Source/JavaScriptCore:

  • Configurations/Base.xcconfig:

Source/ThirdParty/ANGLE:

  • Configurations/Base.xcconfig:

Source/ThirdParty/libwebrtc:

  • Configurations/Base.xcconfig:

Source/WebCore:

  • Configurations/Base.xcconfig:

Source/WebCore/PAL:

  • Configurations/Base.xcconfig:

Source/WebInspectorUI:

  • Configurations/Base.xcconfig:

Source/WebKit:

  • Configurations/Base.xcconfig:

Source/WebKitLegacy/mac:

  • Configurations/Base.xcconfig:

Source/WTF:

  • Configurations/Base.xcconfig:

Tools:

  • DumpRenderTree/mac/Configurations/Base.xcconfig:
  • MiniBrowser/Configurations/Base.xcconfig:
  • MobileMiniBrowser/Configurations/Base.xcconfig:
  • TestWebKitAPI/Configurations/Base.xcconfig:
  • WebKitTestRunner/Configurations/Base.xcconfig:
2:21 PM Changeset in webkit [219627] by Matt Lewis
  • 2 edits in trunk/LayoutTests

Marked http/tests/cache/disk-cache/disk-cache-vary-cookie.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=172662

Unreviewed test gardening.

  • platform/wk2/TestExpectations:
2:11 PM Changeset in webkit [219626] by Wenson Hsieh
  • 2 edits in trunk/Source/WebKitLegacy/mac

[iOS DnD] [WK1] Add missing calls to WebThreadLock() in some WebView drag-and-drop SPIs
https://bugs.webkit.org/show_bug.cgi?id=174640
<rdar://problem/33297400>

Reviewed by Tim Horton.

Adds a missing call to WebThreadLock() in -_requestStartDataInteraction:globalPosition:. Previously, this was
invoked at the call site in UIKit, but was removed after some refactoring in UIKit. Instead, we should lock the
web thread here, to match the other WebView drag and drop SPI methods.

This patch also adds a WebThreadLock() call in -_dataInteractionCaretRect. While this is fine today, since all
existing callers of _dataInteractionCaretRect already invoke other methods that WebThreadLock() beforehand, we
should make this robust against future UIKit changes that could make this no longer the case.

  • WebView/WebView.mm:

(-[WebView _requestStartDataInteraction:globalPosition:]):
(-[WebView _dataInteractionCaretRect]):

1:30 PM Changeset in webkit [219625] by commit-queue@webkit.org
  • 4 edits
    2 adds in trunk

[macOS] Mouse pointer does not hide during fullscreen playback
https://bugs.webkit.org/show_bug.cgi?id=174638
<rdar://problem/33244399>

Patch by Antoine Quint <Antoine Quint> on 2017-07-18
Reviewed by Dean Jackson.

Source/WebCore:

Test: media/modern-media-controls/css/webkit-cursor-visibility-auto-hide.html

The user-agent stylesheet sets the "-webkit-cursor-visibility" to "auto-hide" for fullscreen <video>
elements. Since we reset the page styles, including UA styles, on .media-controls-container, we need
to explicitly inherit this style property from the page to ensure the mouse pointer automatically
hides in fullscreen.

  • Modules/modern-media-controls/controls/media-controls.css:

(.media-controls-container):

LayoutTests:

Add a test that checks that the "-webkit-cursor-visibility" is set to "auto-hide" when
in fullscreen for the media controls container.

  • media/modern-media-controls/css/webkit-cursor-visibility-auto-hide-expected.txt: Added.
  • media/modern-media-controls/css/webkit-cursor-visibility-auto-hide.html: Added.
  • platform/ios-simulator/TestExpectations:
1:21 PM Changeset in webkit [219624] by Devin Rousso
  • 5 edits
    1 add in trunk

Web Inspector: Add memoryCost to Inspector Protocol objects
https://bugs.webkit.org/show_bug.cgi?id=174478

Reviewed by Joseph Pecoraro.

Source/JavaScriptCore:

For non-array and non-object InspectorValue, calculate memoryCost as the sizeof the object,
plus the memoryCost of the data if it is a string.

For array InspectorValue, calculate memoryCost as the sum of the memoryCost of all items.

For object InspectorValue, calculate memoryCost as the sum of the memoryCost of the string
key plus the memoryCost of the InspectorValue for each entry.

Test: TestWebKitAPI/Tests/JavaScriptCore/InspectorValue.cpp

  • inspector/InspectorValues.h:
  • inspector/InspectorValues.cpp:

(Inspector::InspectorValue::memoryCost):
(Inspector::InspectorObjectBase::memoryCost):
(Inspector::InspectorArrayBase::memoryCost):

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/JavaScriptCore/InspectorValue.cpp: Added.

(TestWebKitAPI::TEST(InspectorValue, MemoryCostNull)):
(TestWebKitAPI::TEST(InspectorValue, MemoryCostBoolean)):
(TestWebKitAPI::TEST(InspectorValue, MemoryCostDouble)):
(TestWebKitAPI::TEST(InspectorValue, MemoryCostInteger)):
(TestWebKitAPI::TEST(InspectorValue, MemoryCostString)):
(TestWebKitAPI::TEST(InspectorValue, MemoryCostStringEmpty)):
(TestWebKitAPI::TEST(InspectorValue, MemoryCostStringNull)):
(TestWebKitAPI::TEST(InspectorValue, MemoryCostStringGrowing)):
(TestWebKitAPI::TEST(InspectorValue, MemoryCostStringUnicode)):
(TestWebKitAPI::TEST(InspectorValue, MemoryCostObject)):
(TestWebKitAPI::TEST(InspectorValue, MemoryCostObjectEmpty)):
(TestWebKitAPI::TEST(InspectorValue, MemoryCostObjectGrowing)):
(TestWebKitAPI::TEST(InspectorValue, MemoryCostArray)):
(TestWebKitAPI::TEST(InspectorValue, MemoryCostArrayEmpty)):
(TestWebKitAPI::TEST(InspectorValue, MemoryCostArrayGrowing)):

1:14 PM Changeset in webkit [219623] by commit-queue@webkit.org
  • 32 edits
    1 delete in trunk

[WebIDL] Remove custom bindings for MockContentFilterSettings
https://bugs.webkit.org/show_bug.cgi?id=174606

Patch by Sam Weinig <sam@webkit.org> on 2017-07-18
Reviewed by Andy Estes.

Source/WebCore:

  • PlatformMac.cmake:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/JSMockContentFilterSettingsCustom.cpp: Removed.

Remove JSMockContentFilterSettingsCustom.

  • testing/MockContentFilterSettings.h:
  • testing/MockContentFilterSettings.idl:

Switch from constants to IDL enums to make the bindings and tests simpler.

LayoutTests:

  • contentfiltering/allow-after-add-data.html:
  • contentfiltering/allow-after-finished-adding-data.html:
  • contentfiltering/allow-after-response.html:
  • contentfiltering/allow-after-will-send-request.html:
  • contentfiltering/allow-empty-document.html:
  • contentfiltering/allow-media-document.html:
  • contentfiltering/allow-never.html:
  • contentfiltering/block-after-add-data-then-allow-unblock.html:
  • contentfiltering/block-after-add-data-then-deny-unblock.html:
  • contentfiltering/block-after-add-data.html:
  • contentfiltering/block-after-finished-adding-data-then-allow-unblock.html:
  • contentfiltering/block-after-finished-adding-data-then-deny-unblock.html:
  • contentfiltering/block-after-finished-adding-data.html:
  • contentfiltering/block-after-response-then-allow-unblock.html:
  • contentfiltering/block-after-response-then-deny-unblock.html:
  • contentfiltering/block-after-response.html:
  • contentfiltering/block-after-will-send-request-then-allow-unblock.html:
  • contentfiltering/block-after-will-send-request-then-deny-unblock.html:
  • contentfiltering/block-after-will-send-request.html:
  • contentfiltering/block-never.html:
  • contentfiltering/modify-request-url.html:
  • contentfiltering/resources/contentfiltering.js:
  • http/tests/contentfiltering/allow-after-redirect.html:
  • http/tests/contentfiltering/block-after-redirect.html:
  • http/tests/contentfiltering/load-substitute-data-from-appcache.html:
  • http/tests/contentfiltering/modify-redirect-request-url.html:

Update tests to use new MockContentFilterSettings enums rather than constants.

1:12 PM Changeset in webkit [219622] by weinig@apple.com
  • 12 edits
    7 adds in trunk

[WebIDL] Replace some custom bindings code in JSCSSStyleDeclarationCustom.cpp with named getters/setters
https://bugs.webkit.org/show_bug.cgi?id=174529

Reviewed by Chris Dumez.

Source/WebCore:

  • CMakeLists.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • css/CSSAllInOne.cpp:

Add CSSStyleDeclaration.cpp

  • bindings/js/JSCSSStyleDeclarationCustom.cpp:

Move getter / setter / getOwnProperties logic from here to CSSStyleDeclaration.cpp.

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateGetOwnPropertySlot):
(GenerateGetOwnPropertySlotByIndex):
(InstanceOverridesGetOwnPropertySlot):
(GenerateHeader):
Remove support for no longer needed [CustomGetOwnPropertySlotAndDescriptor].
Add support for [PutOnlyForSupportedProperties], which allows named setters to behave
a bit more like normal setters by allowing the implementation to note which properties
are supported which in turn, allows the bindings to continue down the normal put path
for unsupported properties. This is necessary to mimic the behavior of CSSStyleDeclaration
which is using named setters in place hundreds of additional properties.

(InstanceOverridesDefineOwnProperty):
Add [DefaultDefineOwnProperty] to allow disabling defineOwnProperty overriding that comes
automatically with named setters. We need this for CSSStyleDeclaration since the named
setter usage modeling real properties, not a dictionary style setter. We may want to
revisit this, and add support for DefineOwnProperty here, but this allows us to maintain
the status quo.

(GenerateDefineOwnProperty):
Fix the case when you have a named setter, an indexed getter, but no indexed setter. In that
case, we would get a compile error, due to the index variable being unused.

  • bindings/scripts/IDLAttributes.json:

Remove support for no longer needed [CustomGetOwnPropertySlotAndDescriptor], add
[PutOnlyForSupportedProperties] and [DefaultDefineOwnProperty].

  • css/CSSStyleDeclaration.h:
  • css/CSSStyleDeclaration.cpp: Added.

(WebCore::CSSStyleDeclaration::namedItem):
(WebCore::CSSStyleDeclaration::setNamedItem):
(WebCore::CSSStyleDeclaration::isSupportedPropertyName):
(WebCore::CSSStyleDeclaration::supportedPropertyNames):
Use standard getter / setter functions to implement CSS property name getting and setting.
Convert from Identifier to AtomicString, which are now bridgeable.

  • css/CSSStyleDeclaration.idl:

Add named getter and setter. Remove [CustomGetOwnPropertyNames], [CustomGetOwnPropertySlotAndDescriptor]
and [CustomPut], add [DefaultDefineOwnProperty].

  • bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp: Added.
  • bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.h: Added.
  • bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp: Added.
  • bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.h: Added.
  • bindings/scripts/test/TestNamedSetterWithIndexedGetter.idl: Added.
  • bindings/scripts/test/TestNamedSetterWithIndexedGetterAndSetter.idl: Added.

Add tests for improved behavior when using named setters with variations of indexed getters and setters as well.

LayoutTests:

  • fast/dom/CSSStyleDeclaration/cssstyledeclaration-properties-descriptor-expected.txt:
  • fast/dom/CSSStyleDeclaration/cssstyledeclaration-properties-descriptor.html:

Update test and result to match standard and other browsers.

12:59 PM Changeset in webkit [219621] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebCore

[iOS] WebKit media controls are sometimes shown after exiting full screen on vimeo.com
https://bugs.webkit.org/show_bug.cgi?id=174627
<rdar://problem/33301005>

Patch by Antoine Quint <Antoine Quint> on 2017-07-18
Reviewed by Dean Jackson, provisionally reviewed by Jeremy Jones.

On iOS 11, both the WebKit media controls and the Vimeo custom controls would appear sometimes when exiting
from fullscreen when the video was playing and the user would tap the X button, which would pause the video
as well as exit fullscreen.

The reason this happens is that the ControlsVisibilitySupport object, which governs whether the WebKit media
controls should be displayed for a given video, woud listen to "pause" and "webkitfullscreenchange" events
and determine whether to show the WebKit media controls. We listen to the "pause" event because when media
pauses, and the video has the "controls" attribute set, we should show the controls and suspend the controls
auto-hide timer. And we're interested in knowing when we enter and exit fullscreen because we want to override
the "controls" attribute not being set when we enter fullscreen.

However, on iOS 11, it appears that the "webkitfullscreenchange" event is not reliably fired as the user enters
and exits fullscreen, which is tracked by webkit.org/b/174626. So, when the user exits fullscreen, we would be
informed of the video being paused via a "pause" event, but not of the video exiting fullscreen. And because
media events are asynchronous, the "pause" event would sometimes be fired before we exited fullscreen, and when
the _updateControls() would run, we would sometimes determine that we are in fullscreen still and determine
that the WebKit media controls should be shown.

Of course, on iOS, the WebKit media controls are not shown and instead we delegate to AVKit to display media controls.
So we could simply disregard this whole logic in iOS. But we choose to instead use the "webkitpresentationmodechanged"
when the presentation mode API is supported, as is the case on iOS 11, to determine changes of media fullscreen state.
This way, should we ever choose to support fullscreen media controls provided by WebKit on iOS, this logic is already
correct and we write less platform-specific code.

This, alas, cannot be tested since we can't force the X button to be tapped within the AVKit fullscreen controls.

  • Modules/modern-media-controls/media/controls-visibility-support.js:

(ControlsVisibilitySupport.prototype.get mediaEvents):

  • Modules/modern-media-controls/media/media-controller.js:

(MediaController):

  • Modules/modern-media-controls/media/start-support.js:

(StartSupport.prototype.get mediaEvents):

12:31 PM Changeset in webkit [219620] by Matt Lewis
  • 47 edits
    9 deletes in trunk

Unreviewed, rolling out r219610.

This caused an api failure on all platforms for the test
SnapshotImageLargeAsyncDecoding

Reverted changeset:

"Async image decoding for large images should be disabled
after the first time a tile is painted"
https://bugs.webkit.org/show_bug.cgi?id=174451
http://trac.webkit.org/changeset/219610

11:54 AM Changeset in webkit [219619] by Devin Rousso
  • 7 edits
    6 adds in trunk

Add CanvasRenderingContext2D::getTransform
https://bugs.webkit.org/show_bug.cgi?id=174278

Reviewed by Dean Jackson.

Source/WebCore:

Tests: fast/canvas/2d.getTransform.modification.html

fast/canvas/2d.getTransform.newobject.html
fast/canvas/2d.setTransform.matrix.html

  • css/DOMMatrixReadOnly.h:

Make DOMMatrixReadOnly::validateAndFixup public so that values of DOMMatrixInit are still
usable without having to construct a DOMMatrixReadOnly. This is beneficial in the case that
an exception is thrown, as the validateAndFixup check can happen without any allocations.

  • html/canvas/CanvasRenderingContext2D.idl:
  • html/canvas/CanvasRenderingContext2D.h:
  • html/canvas/CanvasRenderingContext2D.cpp:

(WebCore::CanvasRenderingContext2D::getTransform):
(WebCore::CanvasRenderingContext2D::setTransform):

LayoutTests:

  • canvas/philip/tests/2d.missingargs.html:

CanvasRenderingContext2D.prototype.setTransform no longer throws an error with no arguments.

  • fast/canvas/2d.getTransform.modification-expected.txt: Added.
  • fast/canvas/2d.getTransform.modification.html: Added.
  • fast/canvas/2d.getTransform.newobject-expected.txt: Added.
  • fast/canvas/2d.getTransform.newobject.html: Added.
  • fast/canvas/2d.setTransform.matrix-expected.txt: Added.
  • fast/canvas/2d.setTransform.matrix.html: Added.
11:39 AM Changeset in webkit [219618] by aestes@apple.com
  • 26 edits in trunk

[Xcode] Enable CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING
https://bugs.webkit.org/show_bug.cgi?id=174631

Reviewed by Darin Adler.

Source/bmalloc:

  • Configurations/Base.xcconfig:

Source/JavaScriptCore:

  • Configurations/Base.xcconfig:

Source/ThirdParty/ANGLE:

  • Configurations/Base.xcconfig:

Source/ThirdParty/libwebrtc:

  • Configurations/Base.xcconfig:

Source/WebCore:

  • Configurations/Base.xcconfig:

Source/WebCore/PAL:

  • Configurations/Base.xcconfig:

Source/WebInspectorUI:

  • Configurations/Base.xcconfig:

Source/WebKit:

  • Configurations/Base.xcconfig:

Source/WebKitLegacy/mac:

  • Configurations/Base.xcconfig:

Source/WTF:

  • Configurations/Base.xcconfig:

Tools:

  • DumpRenderTree/mac/Configurations/Base.xcconfig:
  • MiniBrowser/Configurations/Base.xcconfig:
  • MobileMiniBrowser/Configurations/Base.xcconfig:
  • TestWebKitAPI/Configurations/Base.xcconfig:
  • WebKitTestRunner/Configurations/Base.xcconfig:
10:05 AM Changeset in webkit [219617] by matthew_hanson@apple.com
  • 15 edits in tags/Safari-604.1.32.0.1

Revert r219413. rdar://problem/33337335

10:05 AM Changeset in webkit [219616] by matthew_hanson@apple.com
  • 5 edits in tags/Safari-604.1.32.0.1/Source

Revert r219423. rdar://problem/33337335

10:03 AM Changeset in webkit [219615] by Jonathan Bedard
  • 3 edits in trunk/Source/WebCore

Unreviewed build fix after r219595

  • platform/graphics/cocoa/FontDescriptionCocoa.cpp:

(WebCore::makeNeverDestroyed): Remove duplicate makeNeverDestroyed definition.

  • platform/ios/DragImageIOS.mm:

(WebCore::cascadeForSystemFont): Return correct FontCascade object.
(WebCore::createDragImageForLink): Fix compiler error.

9:51 AM Changeset in webkit [219614] by dbates@webkit.org
  • 2 edits in trunk/Source/WebCore

Cleanup: Remove AlternativeTextInfo and use Variant to represent alternative text info details
https://bugs.webkit.org/show_bug.cgi?id=174604

I inadvertently did not commit some of my local changes.

  • editing/AlternativeTextController.cpp:

(WebCore::AlternativeTextController::startAlternativeTextUITimer):
(WebCore::AlternativeTextController::stopAlternativeTextUITimer):
(WebCore::AlternativeTextController::applyPendingCorrection):
(WebCore::AlternativeTextController::hasPendingCorrection):
(WebCore::AlternativeTextController::show):
(WebCore::AlternativeTextController::handleCancelOperation):
(WebCore::AlternativeTextController::dismiss):
(WebCore::AlternativeTextController::dismissSoon):
(WebCore::AlternativeTextController::applyAutocorrectionBeforeTypingIfAppropriate):
(WebCore::AlternativeTextController::timerFired):
(WebCore::AlternativeTextController::handleAlternativeTextUIResult):
(WebCore::AlternativeTextController::respondToMarkerAtEndOfWord):
(WebCore::AlternativeTextController::markerDescriptionForAppliedAlternativeText):

9:31 AM Changeset in webkit [219613] by dbates@webkit.org
  • 3 edits in trunk/Source/WebCore

Cleanup: Remove AlternativeTextInfo and use Variant to represent alternative text info details
https://bugs.webkit.org/show_bug.cgi?id=174604

Reviewed by Darin Adler.

Remove struct AlternativeTextInfo and represent the alternative text info as instance variables
using Variant to hold either an autocorrection replacement string or the alternative dictation
context.

Not functionality changed. So, no new tests.

  • editing/AlternativeTextController.cpp: Remove header Event.h as it is ultimately included by TextEvent.h.

(WebCore::AlternativeTextController::show): Update code as needed.
(WebCore::AlternativeTextController::timerFired): Ditto.
(WebCore::AlternativeTextController::alternativeTextClient): Substitute nullptr for 0.
(WebCore::AlternativeTextController::respondToMarkerAtEndOfWord): Update code as needed.
(WebCore::AutocorrectionAlternativeDetails::create): Deleted.
(WebCore::AutocorrectionAlternativeDetails::replacementString): Deleted.
(WebCore::AutocorrectionAlternativeDetails::AutocorrectionAlternativeDetails): Deleted.
(WebCore::DictationAlternativeDetails::create): Deleted.
(WebCore::DictationAlternativeDetails::dictationContext): Deleted.
(WebCore::DictationAlternativeDetails::DictationAlternativeDetails): Deleted.

  • editing/AlternativeTextController.h: Remove header Range.h and forward declare Range. Include header

Position.h and wtf/Variant.h. Sort forward declarations.
(WebCore::AlternativeTextDetails::~AlternativeTextDetails): Deleted.

9:31 AM Changeset in webkit [219612] by Matt Lewis
  • 2 edits in trunk/LayoutTests

Rebaseline inspector/model/remote-object.html.
https://bugs.webkit.org/show_bug.cgi?id=173991

Unreviewed test gardening.

  • inspector/model/remote-object-expected.txt:
9:25 AM Changeset in webkit [219611] by msaboff@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

[JSC] There should be a debug option to dump a compiled RegExp Pattern
https://bugs.webkit.org/show_bug.cgi?id=174601

Reviewed by Alex Christensen.

Added the debug option dumpCompiledRegExpPatterns which will dump the YarrPattern and related
objects after a regular expression has been compiled.

  • runtime/Options.h:
  • yarr/YarrPattern.cpp:

(JSC::Yarr::YarrPattern::compile):
(JSC::Yarr::indentForNestingLevel):
(JSC::Yarr::dumpUChar32):
(JSC::Yarr::PatternAlternative::dump):
(JSC::Yarr::PatternTerm::dumpQuantifier):
(JSC::Yarr::PatternTerm::dump):
(JSC::Yarr::PatternDisjunction::dump):
(JSC::Yarr::YarrPattern::dumpPattern):

  • yarr/YarrPattern.h:

(JSC::Yarr::YarrPattern::global):

9:03 AM Changeset in webkit [219610] by commit-queue@webkit.org
  • 47 edits
    9 adds in trunk

Async image decoding for large images should be disabled after the first time a tile is painted
https://bugs.webkit.org/show_bug.cgi?id=174451

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2017-07-18
Reviewed by Simon Fraser.

Source/WebCore:

Flashing because of DOM mutation can be fixed by disabling the asynchronous
image decoding after the first time a tile was painted.

We can detect this by consulting the tile repaintCount. If it is zero, then
it is safe to use asynchronous image decoded. If the tile repaintCount is
greater than zero, we are not sure if the renderer rectangle has an image
drawn in it already or not. In this case we have to use the synchronous
image decoding to avoid causing a flash.

Tests: fast/images/async-image-background-change.html

fast/images/async-image-src-change.html
http/tests/multipart/multipart-async-image.html

  • page/PageOverlayController.cpp:

(WebCore::PageOverlayController::paintContents):

  • page/PageOverlayController.h:
  • page/linux/ResourceUsageOverlayLinux.cpp:
  • page/mac/ServicesOverlayController.h:
  • page/mac/ServicesOverlayController.mm:

(WebCore::ServicesOverlayController::Highlight::paintContents):

  • platform/graphics/BitmapImage.h:
  • platform/graphics/GraphicsLayer.cpp:

(WebCore::GraphicsLayer::paintGraphicsLayerContents):

  • platform/graphics/GraphicsLayer.h:
  • platform/graphics/GraphicsLayerClient.h:

(WebCore::GraphicsLayerClient::paintContents):

  • platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:

(WebCore::LayerClient::platformCALayerPaintContents):

  • platform/graphics/ca/GraphicsLayerCA.cpp:

(WebCore::GraphicsLayerCA::platformCALayerPaintContents):

  • platform/graphics/ca/GraphicsLayerCA.h:
  • platform/graphics/ca/PlatformCALayer.h:
  • platform/graphics/ca/PlatformCALayerClient.h:

(WebCore::PlatformCALayerClient::platformCALayerRepaintCount):

  • platform/graphics/ca/TileCoverageMap.cpp:

(WebCore::TileCoverageMap::platformCALayerPaintContents):

  • platform/graphics/ca/TileCoverageMap.h:
  • platform/graphics/ca/TileGrid.cpp:

(WebCore::TileGrid::platformCALayerPaintContents):
(WebCore::TileGrid::platformCALayerRepaintCount):

  • platform/graphics/ca/TileGrid.h:
  • platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:

(PlatformCALayer::drawLayerContents):

  • platform/graphics/ca/win/PlatformCALayerWin.cpp:

(PlatformCALayer::drawLayerContents):

  • platform/graphics/ca/win/PlatformCALayerWinInternal.cpp:

(PlatformCALayerWinInternal::displayCallback):

  • platform/graphics/ca/win/WebTiledBackingLayerWin.cpp:

(WebTiledBackingLayerWin::displayCallback):

  • platform/graphics/mac/WebLayer.mm:

(-[WebLayer drawInContext:]):
(-[WebSimpleLayer drawInContext:]):

  • rendering/RenderBoxModelObject.cpp:

(WebCore::RenderBoxModelObject::decodingModeForImageDraw):

  • rendering/RenderElement.h:
  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::paintContents):

  • rendering/RenderLayerBacking.h:
  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::paintContents):

  • rendering/RenderLayerCompositor.h:
  • testing/Internals.cpp:

(WebCore::imageFromImageElement):
(WebCore::bitmapImageFromImageElement):
(WebCore::Internals::imageFrameIndex):
(WebCore::Internals::setImageFrameDecodingDuration):
(WebCore::Internals::resetImageAnimation):
(WebCore::Internals::isImageAnimating):
(WebCore::Internals::setClearDecoderAfterAsyncFrameRequestForTesting):
(WebCore::Internals::imageDecodeCount):
(WebCore::Internals::setLargeImageAsyncDecodingEnabledForTesting):

  • testing/Internals.h:
  • testing/Internals.idl:

Source/WebKit:

  • Shared/mac/RemoteLayerBackingStore.mm:

(WebKit::RemoteLayerBackingStore::drawInContext):

  • WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:

(WebKit::CompositingCoordinator::paintContents):

  • WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h:

Source/WebKitLegacy/win:

  • FullscreenVideoController.cpp:

(FullscreenVideoController::LayerClient::platformCALayerPaintContents):

  • WebCoreSupport/AcceleratedCompositingContext.cpp:

(AcceleratedCompositingContext::paintContents):

  • WebCoreSupport/AcceleratedCompositingContext.h:

LayoutTests:

To test async image decoding for large images, we have to create the <img>
element dynamically so we can listen to the load and webkitImageFrameReady
events and know reliably when to end the test. But with this patch the async
image decoding for large images will be disabled after the first paint.
That means async image decoding for large images will be disabled always
unless we force the async image decoding till the image is painted for the
first time. We use Internals::setLargeImageAsyncDecodingEnabledForTesting()
to force the async image decoding. So painting an image in this case will
require multiple paints; in all of them the async image decoding will be
enabled. But this is okay because it resembles the case where the <img> is
created from a static <img> tag in the HTML file.

For new tests, where we want to make sure that mutating the DOM will not
cause a flash, async image decoding will be forced till the image is drawn
for the first time. After that the async image decoding is enabled but not
forced.

Disable new tests for WK1 because the async image decoding is always enabled
because tiling does not necessarily exist in WK1 . But eventually the async
image decoding for large images will be always disabled for WK1.

  • fast/images/async-image-background-change-expected.html: Added.
  • fast/images/async-image-background-change.html: Added.
  • fast/images/async-image-background-image-repeated.html:
  • fast/images/async-image-background-image.html:
  • fast/images/async-image-multiple-clients-repaint.html:
  • fast/images/async-image-src-change-expected.html: Added.
  • fast/images/async-image-src-change.html: Added.
  • fast/images/resources/green-400x400.png: Added.
  • fast/images/resources/red-100x100.png: Added.
  • fast/images/resources/red-400x400.png: Added.
  • http/tests/multipart/multipart-async-image-expected.txt: Added.
  • http/tests/multipart/multipart-async-image.html: Added.
  • platform/ios-wk1/TestExpectations:
  • platform/mac-wk1/TestExpectations:
6:03 AM Changeset in webkit [219609] by Michael Catanzaro
  • 2 edits in trunk/LayoutTests

Unreviewed GTK test gardening

fast/forms/range/input-appearance-range-rtl.html is desired to fail.

  • platform/gtk/TestExpectations:
4:21 AM Changeset in webkit [219608] by clopez@igalia.com
  • 2 edits in trunk/Source/WebDriver

[GTK] Fix build with Clang after r219605.
https://bugs.webkit.org/show_bug.cgi?id=166682

Unreviewed build fix.

Clang-3.8 complains with the following error:
non-constant-expression cannot be narrowed from type 'gboolean' (aka 'int') to 'bool' in initializer list [-Wc++11-narrowing]

  • glib/SessionHostGlib.cpp: insert an explicit cast to silence this issue.
12:33 AM Changeset in webkit [219607] by Chris Dumez
  • 16 edits in trunk

DOMException should have its properties on the prototype
https://bugs.webkit.org/show_bug.cgi?id=174597

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

  • web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-constructor-behavior.any-expected.txt:
  • web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-constructor-behavior.any.worker-expected.txt:
  • web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-custom-bindings.any-expected.txt:
  • web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-custom-bindings.any.worker-expected.txt:
  • web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/exceptions-expected.txt:

Rebaseline now that more checks are passing.

  • web-platform-tests/url/urlsearchparams-constructor-expected.txt:
  • web-platform-tests/url/urlsearchparams-constructor.html:

Re-sync test from upstream as it would start failing otherwise.

Source/WebCore:

DOMException should have its properties on the prototype, as other interfaces:

No new tests, rebaselined existing tests.

  • bindings/scripts/CodeGeneratorJS.pm:

(InterfaceRequiresAttributesOnInstance):

LayoutTests:

Rebaseline inspector tests whose output changed slightly now that the
DOMException have moved to the prototype.

  • inspector/debugger/setPauseOnExceptions-all-expected.txt:
  • inspector/debugger/setPauseOnExceptions-none-expected.txt:
  • inspector/debugger/setPauseOnExceptions-uncaught-expected.txt:
12:20 AM Changeset in webkit [219606] by commit-queue@webkit.org
  • 12 edits
    2 deletes in trunk/Source/WebCore

[Curl] Unify ResourceHandleManager into CurlJobManager.
https://bugs.webkit.org/show_bug.cgi?id=173991

Use CurlJobManager to make ResourceHandle run in background.
CurlJobManager::start() now accept callback to manage life cycle
of the resource easily in a same context.
Actual management tasks of CurlJobManager is now private class
in CurlJobManager which is better thread safeness.
ResourceHandleManager is deleted at all.

Patch by Basuke Suzuki <Basuke Suzuki> on 2017-07-18
Reviewed by Alex Christensen.

  • platform/Curl.cmake:
  • platform/network/ResourceHandle.h:
  • platform/network/curl/CookieJarCurl.cpp:

(WebCore::cookiesForSession):

  • platform/network/curl/CurlContext.cpp:

(WebCore::CurlHandle::CurlHandle):
(WebCore::CurlHandle::~CurlHandle):
(WebCore::CurlHandle::errorDescription):
(WebCore::CurlHandle::perform):
(WebCore::CurlHandle::pause):
(WebCore::CurlHandle::appendRequestHeaders):
(WebCore::CurlHandle::appendRequestHeader):
(WebCore::CurlHandle::enableRequestHeaders):
(WebCore::CurlHandle::fetchCookieList):
(WebCore::CurlHandle::getEffectiveURL):
(WebCore::CurlHandle::setPrivateData): Deleted.
(WebCore::CurlHandle::clearRequestHeaders): Deleted.
(WebCore::CurlHandle::getCookieList): Deleted.
(WebCore::CurlHandle::clearCookieList): Deleted.

  • platform/network/curl/CurlContext.h:

(WebCore::CurlSList::CurlSList):
(WebCore::CurlSList::~CurlSList):
(WebCore::CurlSList::operator struct curl_slist ):
(WebCore::CurlSList::head):
(WebCore::CurlSList::isEmpty):
(WebCore::CurlSList::clear):
(WebCore::CurlSList::append):
(WebCore::CurlHandle::errorCode):
(WebCore::CurlHandle::setErrorCode):
(WebCore::CurlHandle::privateData):
(WebCore::CurlHandle::setPrivateData):

  • platform/network/curl/CurlDownload.cpp:

(WebCore::CurlDownload::start):
(WebCore::CurlDownload::cancel):
(WebCore::CurlDownload::addHeaders):
(WebCore::CurlDownload::didReceiveData):
(WebCore::CurlDownload::didFail):
(WebCore::CurlDownload::handleCurlMsg): Deleted.

  • platform/network/curl/CurlDownload.h:
  • platform/network/curl/CurlJobManager.cpp:

(WebCore::CurlJobList::append):
(WebCore::CurlJobList::cancel):
(WebCore::CurlJobList::complete):
(WebCore::CurlJobList::isEmpty):
(WebCore::CurlJobList::withJob):
(WebCore::CurlJobList::withCurlHandle):
(WebCore::CurlJob::invoke):
(WebCore::CurlJobManager::add):
(WebCore::CurlJobManager::cancel):
(WebCore::CurlJobManager::callOnJobThread):
(WebCore::CurlJobManager::startThreadIfNeeded):
(WebCore::CurlJobManager::stopThreadIfNoMoreJobRunning):
(WebCore::CurlJobManager::stopThread):
(WebCore::CurlJobManager::updateJobs):
(WebCore::CurlJobManager::workerThread):
(WebCore::CurlJobManager::CurlJobManager): Deleted.
(WebCore::CurlJobManager::~CurlJobManager): Deleted.
(WebCore::CurlJobManager::remove): Deleted.
(WebCore::CurlJobManager::getActiveCount): Deleted.
(WebCore::CurlJobManager::getPendingCount): Deleted.
(WebCore::CurlJobManager::stopThreadIfIdle): Deleted.
(WebCore::CurlJobManager::updateHandleList): Deleted.
(WebCore::CurlJobManager::addToCurl): Deleted.
(WebCore::CurlJobManager::removeFromCurl): Deleted.

  • platform/network/curl/CurlJobManager.h:

(WebCore::CurlJob::CurlJob):
(WebCore::CurlJob::~CurlJob):
(WebCore::CurlJob::operator=):
(WebCore::CurlJob::curlHandle):
(WebCore::CurlJob::ticket):
(WebCore::CurlJob::finished):
(WebCore::CurlJob::error):
(WebCore::CurlJob::cancel):
(WebCore::CurlJobManager::singleton):
(WebCore::CurlJobManager::~CurlJobManager):
(WebCore::CurlJobManager::isActiveJob):
(WebCore::CurlJobManager::runThread): Deleted.
(WebCore::CurlJobManager::setRunThread): Deleted.

  • platform/network/curl/ResourceError.h:

(WebCore::ResourceError::ResourceError):

  • platform/network/curl/ResourceHandleCurl.cpp:

(WebCore::ResourceHandle::~ResourceHandle):
(WebCore::ResourceHandle::start):
(WebCore::ResourceHandle::cancel):
(WebCore::ResourceHandle::initialize):
(WebCore::ResourceHandle::applyAuthentication):
(WebCore::getFormElementsCount):
(WebCore::ResourceHandle::setupPUT):
(WebCore::ResourceHandle::setupPOST):
(WebCore::ResourceHandle::setupFormData):
(WebCore::ResourceHandle::setHostAllowsAnyHTTPSCertificate):
(WebCore::ResourceHandle::setClientCertificateInfo):
(WebCore::ResourceHandle::platformSetDefersLoading):
(WebCore::ResourceHandle::didFinish):
(WebCore::ResourceHandle::didFail):
(WebCore::ResourceHandle::shouldUseCredentialStorage):
(WebCore::ResourceHandle::didReceiveAuthenticationChallenge):
(WebCore::ResourceHandle::receivedCredential):
(WebCore::ResourceHandle::receivedRequestToContinueWithoutCredential):
(WebCore::ResourceHandle::receivedCancellation):
(WebCore::ResourceHandle::calculateWebTimingInformations):
(WebCore::ResourceHandle::handleLocalReceiveResponse):
(WebCore::ResourceHandle::willPrepareSendData):
(WebCore::ResourceHandle::didReceiveHeaderLine):
(WebCore::ResourceHandle::didReceiveAllHeaders):
(WebCore::ResourceHandle::didReceiveContentData):
(WebCore::ResourceHandle::readCallback):
(WebCore::ResourceHandle::headerCallback):
(WebCore::ResourceHandle::writeCallback):
(WebCore::ResourceHandle::platformLoadResourceSynchronously):
(WebCore::ResourceHandle::dispatchSynchronousJob):
(WebCore::calculateWebTimingInformations): Deleted.
(WebCore::handleLocalReceiveResponse): Deleted.
(WebCore::writeCallback): Deleted.
(WebCore::headerCallback): Deleted.
(WebCore::readCallback): Deleted.
(WebCore::setupFormData): Deleted.
(WebCore::ResourceHandle::handleCurlMsg): Deleted.

  • platform/network/curl/ResourceHandleManager.cpp: Removed.
  • platform/network/curl/ResourceHandleManager.h: Removed.
12:20 AM Changeset in webkit [219605] by Carlos Garcia Campos
  • 5 edits
    23 adds in trunk

Add initial implementation of WebDriver process to run the HTTP server
https://bugs.webkit.org/show_bug.cgi?id=166682

Reviewed by Brian Burg.

.:

Enable WebDriver in the GTK port by default.

  • Source/CMakeLists.txt:
  • Source/cmake/OptionsGTK.cmake:
  • Source/cmake/WebKitFS.cmake:
  • Source/cmake/WebKitFeatures.cmake:

Source/WebDriver:

Add WebDriver process that runs the HTTP server and implements an initial set of commands. Most of the code is
cross-platform, only the HTTP server implementation, the code to launch the browser and the communication with
the remote inspector requires platform specific code. This patch includes the GTK port implementation, using
libsoup for the HTTP server, and GLib for launching the browser and communicating with the remote
inspector. This implementation follows the w3c spec (https://www.w3.org/TR/webdriver) as close as possible, but
using the official selenium python tests as reference.

  • CMakeLists.txt: Added.
  • Capabilities.h: Added.
  • CommandResult.cpp: Added.
  • CommandResult.h: Added.
  • HTTPServer.cpp: Added.
  • HTTPServer.h: Added.
  • PlatformGTK.cmake: Added.
  • Session.cpp: Added.
  • Session.h: Added.
  • SessionHost.cpp: Added.
  • SessionHost.h: Added.
  • WebDriverMain.cpp: Added.
  • WebDriverService.cpp: Added.
  • WebDriverService.h: Added.
  • config.h: Added.
  • glib/SessionHostGlib.cpp: Added.
  • gtk/WebDriverServiceGtk.cpp: Added.
  • soup/HTTPServerSoup.cpp: Added.

Jul 17, 2017:

11:28 PM Changeset in webkit [219604] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit

Web Automation: link and partial link queries don't work if text link contains trailing or leading whitespaces
https://bugs.webkit.org/show_bug.cgi?id=174499

Reviewed by Brian Burg.

This is causing test test_Driver_Can_Get_Link_By_Link_Test_Ignoring_Trailing_Whitespace to fail.

  • UIProcess/Automation/atoms/FindNodes.js:

(switch): Use normalize-space() in in the links xpath expressions.

10:57 PM Changeset in webkit [219603] by Konstantin Tokarev
  • 2 edits in trunk/Source/WebCore

Unreviewed fix to Mac CMake build after r219474.

  • PlatformMac.cmake:
10:46 PM Changeset in webkit [219602] by Konstantin Tokarev
  • 13 edits in trunk

[cmake] Set library types before their targets are created
https://bugs.webkit.org/show_bug.cgi?id=174600

Reviewed by Michael Catanzaro.

Since r219560 library targets are created before PlatformXXX.cmake
files are processed, however library type must be passed in
add_library() call and cannot be changed afterwards. Set these
variables in OptionsXXX.cmake.

.:

  • CMakeLists.txt:
  • Source/cmake/OptionsMac.cmake:
  • Source/cmake/OptionsWPE.cmake:
  • Source/cmake/OptionsWin.cmake:

Source/WebCore:

No new tests needed.

  • PlatformMac.cmake:

Source/WebKitLegacy:

  • PlatformMac.cmake:
  • PlatformWin.cmake:

Source/WTF:

  • wtf/PlatformGTK.cmake:
  • wtf/PlatformMac.cmake:
10:19 PM Changeset in webkit [219601] by Michael Catanzaro
  • 4 edits
    1 add in trunk/LayoutTests

Unreviewed GTK test gardening

  • TestExpectations: Skip tests that are clearly intended to have Skip expectations.
  • platform/gtk/TestExpectations:
  • platform/gtk/crypto/subtle/aes-cbc-cfb-encrypt-malformed-parameters-expected.txt:
9:06 PM Changeset in webkit [219600] by commit-queue@webkit.org
  • 9 edits
    1 move in trunk/Source

Move USE_AVFOUNDATION definition on Windows to wtf/Platform.h
https://bugs.webkit.org/show_bug.cgi?id=174356

Patch by Yoshiaki Jitsukawa <Yoshiaki.Jitsukawa@sony.com> on 2017-07-17
Reviewed by Brent Fulgham.

Move the definition of USE_AVFOUNDATION on Windows to wtf/platform.h

Source/WebCore:

Rename WebCoreHeaderDetection.h to AVFoundationHeaderDetection.h

  • AVFoundationSupport.py: Moved to Source/WTF/AVFoundationSupport.py.
  • DerivedSources.make:
  • PlatformWin.cmake:
  • config.h:
  • platform/graphics/ca/win/PlatformCALayerWin.cpp:
  • platform/graphics/ca/win/PlatformCALayerWinInternal.cpp:

Source/WTF:

Add a custom command to generate AVFoundationHeaderDetection.h, which
is renamed from WebCoreHeaderDetection.h

  • AVFoundationSupport.py: Moved from Source/WebCore/AVFoundationSupport.py.
  • wtf/Platform.h:
  • wtf/PlatformWin.cmake:
8:52 PM Changeset in webkit [219599] by commit-queue@webkit.org
  • 15 edits
    1 add in trunk/Source

[WebIDL] Remove custom bindings that require non-caching JS strings
https://bugs.webkit.org/show_bug.cgi?id=174552

Patch by Sam Weinig <sam@webkit.org> on 2017-07-17
Reviewed by Darin Adler.

Source/WebCore:

Adds two new types, UncachedString and OwnedString (both of which
are simple structs that wrap a String) to communicate to the bindings
layer which function to use when converting to a JS string.

  • bindings/IDLTypes.h:

(WebCore::IDLString::isNullValue):
Add overloads of isNullValue for UncachedString and OwnedString.

  • bindings/js/JSDOMConvertStrings.h:

(WebCore::JSConverter<IDLDOMString>::convert):
(WebCore::JSConverter<IDLByteString>::convert):
(WebCore::JSConverter<IDLUSVString>::convert):
Add overloads of convert for UncachedString that uses JSC::jsString
and for OwnedString that uses JSC::jsOwnedString.

  • bindings/js/JSHTMLCanvasElementCustom.cpp:

(WebCore::JSHTMLCanvasElement::toDataURL): Deleted.
Remove custom binding for toDataURL.

  • bindings/js/JSXMLHttpRequestCustom.cpp:

(WebCore::JSXMLHttpRequest::retrieveResponse):
(WebCore::JSXMLHttpRequest::responseText): Deleted.
Remove custom binding for responseText. Replace the caller of the
binding function with a simple conversion that will do the same thing.

  • bindings/js/StringAdaptors.h: Added.

Add UncachedString and OwnedString adaptors.

  • html/HTMLCanvasElement.cpp:

(WebCore::HTMLCanvasElement::toDataURL):
Move quality conversion here, matching toBlob and the spec. Return a UncachedString
to instruct the bindings to use JSC::jsString and not JSC::jsStringWithCache.

(WebCore::HTMLCanvasElement::toBlob):
Use asNumber() rather than toNumber(), since we just checked that it is a number.

  • html/HTMLCanvasElement.h:

Update header to account for returning an UncachedString.

  • html/HTMLCanvasElement.idl:

Remove [Custom] and make the signature of toDataURL match the spec (and what we have been doing).

  • inspector/InspectorCanvasAgent.cpp:

(WebCore::InspectorCanvasAgent::requestContent):
Update to account for UncachedString.

  • xml/XMLHttpRequest.cpp:

(WebCore::XMLHttpRequest::responseText):

  • xml/XMLHttpRequest.h:

Update responseText to return OwnedString. OwnedString instruct the bindings to
use JSC::jsOwnedString and not JSC::jsStringWithCache.

  • xml/XMLHttpRequest.idl:

Remove [CustomGetter].

Source/WebKitLegacy/mac:

  • DOM/DOMHTMLCanvasElement.mm:

(-[DOMHTMLCanvasElement toDataURL:]):
Update to account for implementation now returning an UncachedString.

8:35 PM Changeset in webkit [219598] by Chris Dumez
  • 5 edits
    9 copies
    5 moves
    8 adds
    5 deletes in trunk/LayoutTests/imported/w3c

Update WebIDL web-platform-tests from upstream
https://bugs.webkit.org/show_bug.cgi?id=174603

Reviewed by Sam Weinig.

Update WebIDL web-platform-tests from upstream 4c1301113.

  • web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-constants.any-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-constants-expected.txt.
  • web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-constants.any.html: Copied from LayoutTests/imported/w3c/web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/constructor-object.worker.html.
  • web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-constants.any.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-constants.html.

(test.):
(test):

  • web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-constants.any.worker-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-constants-expected.txt.
  • web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-constants.any.worker.html: Copied from LayoutTests/imported/w3c/web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/constructor-object.worker.html.
  • web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-constructor-and-prototype.any-expected.txt: Added.
  • web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-constructor-and-prototype.any.html: Copied from LayoutTests/imported/w3c/web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/constructor-object.worker.html.
  • web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-constructor-and-prototype.any.js: Added.

(test):

  • web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-constructor-and-prototype.any.worker-expected.txt: Added.
  • web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-constructor-and-prototype.any.worker.html: Copied from LayoutTests/imported/w3c/web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/constructor-object.worker.html.
  • web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-constructor-behavior.any-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-constructor-expected.txt.
  • web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-constructor-behavior.any.html: Copied from LayoutTests/imported/w3c/web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/constructor-object.worker.html.
  • web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-constructor-behavior.any.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-constructor.html.

(test):
(forEach):

  • web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-constructor-behavior.any.worker-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-constructor-expected.txt.
  • web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-constructor-behavior.any.worker.html: Copied from LayoutTests/imported/w3c/web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/constructor-object.worker.html.
  • web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-custom-bindings.any-expected.txt: Added.
  • web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-custom-bindings.any.html: Copied from LayoutTests/imported/w3c/web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/constructor-object.worker.html.
  • web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-custom-bindings.any.js: Added.

(test):

  • web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-custom-bindings.any.worker-expected.txt: Added.
  • web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-custom-bindings.any.worker.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/constructor-object.worker.html.
  • web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/constructor-object-expected.txt: Removed.
  • web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/constructor-object.html: Removed.
  • web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/constructor-object.js: Removed.
  • web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/constructor-object.worker-expected.txt: Removed.
  • web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/constructor-object.worker.js: Removed.
  • web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/exceptions-expected.txt:
  • web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/exceptions.html:
  • web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/w3c-import.log:
  • web-platform-tests/WebIDL/ecmascript-binding/legacy-platform-object-expected.txt: Added.
  • web-platform-tests/WebIDL/ecmascript-binding/legacy-platform-object.html: Added.
  • web-platform-tests/WebIDL/ecmascript-binding/w3c-import.log:
7:43 PM Changeset in webkit [219597] by dbates@webkit.org
  • 13 edits in trunk/Source

Cleanup: Use OptionSet to represent marker types
https://bugs.webkit.org/show_bug.cgi?id=174594

Reviewed by Darin Adler.

Remove class DocumentMarker::MarkerTypes that duplicates most of functionality of OptionSet
and use OptionSet directly to represent a set of marker types.

No functionality changed. So, no new tests.

Source/WebCore:

  • dom/Document.cpp:

(WebCore::Document::updateLayout):

  • dom/DocumentMarker.h:

(WebCore::DocumentMarker::MarkerTypes::MarkerTypes): Deleted.
(WebCore::DocumentMarker::MarkerTypes::contains): Deleted.
(WebCore::DocumentMarker::MarkerTypes::intersects): Deleted.
(WebCore::DocumentMarker::MarkerTypes::operator==): Deleted.
(WebCore::DocumentMarker::MarkerTypes::add): Deleted.
(WebCore::DocumentMarker::MarkerTypes::remove): Deleted.
(WebCore::DocumentMarker::AllMarkers::AllMarkers): Deleted.

  • dom/DocumentMarkerController.cpp:

(WebCore::DocumentMarkerController::possiblyHasMarkers):
(WebCore::DocumentMarkerController::detach):
(WebCore::DocumentMarkerController::removeMarkers):
(WebCore::DocumentMarkerController::addMarker):
(WebCore::DocumentMarkerController::copyMarkers):
(WebCore::DocumentMarkerController::markersFor):
(WebCore::DocumentMarkerController::markersInRange):
(WebCore::DocumentMarkerController::removeMarkersFromList):
(WebCore::DocumentMarkerController::repaintMarkers):
(WebCore::DocumentMarkerController::shiftMarkers):
(DocumentMarkerController::setMarkersActive):
(DocumentMarkerController::hasMarkers):
(DocumentMarkerController::clearDescriptionOnMarkersIntersectingRange):
Update code as needed.

  • dom/DocumentMarkerController.h:

(WebCore::DocumentMarkerController::hasMarkers):
Update code as needed.

  • editing/AlternativeTextController.cpp:

(WebCore::markerTypesForAutocorrection):
(WebCore::markerTypesForReplacement):
(WebCore::markerTypesForAppliedDictationAlternative):
Marked as inline and returns an OptionSet<DocumentMarker::MarkerType>. It is unnecessary to use NeverDestroyed
in these functions as constructing an OptionSet and copying/moving it is very efficient. Such operations are
effectively equivalent to an integral assignment and copy of an integral value, respectively.

(WebCore::AlternativeTextController::applyAlternativeTextToRange):
(WebCore::AlternativeTextController::respondToUnappliedSpellCorrection):
(WebCore::AlternativeTextController::markCorrection):
Update code as needed.

  • editing/AlternativeTextController.h: While I am here, remove some unnecessary #includes and group

forward declarations of structs.

  • editing/CompositeEditCommand.cpp:

(WebCore::CompositeEditCommand::replaceTextInNodePreservingMarkers): Update code as needed.

  • editing/Editor.cpp:

(WebCore::Editor::updateMarkersForWordsAffectedByEditing): Ditto.

  • editing/SpellChecker.cpp:

(WebCore::SpellChecker::didCheckSucceed): Ditto.

  • page/ios/FrameIOS.mm:

(WebCore::Frame::interpretationsForCurrentRoot): Ditto.

  • testing/Internals.cpp:

(WebCore::markerTypesFrom): Ditto.
(WebCore::Internals::markerCountForNode): Ditto.
(WebCore::Internals::markerAt): Ditto.

Source/WebKitLegacy/ios:

  • WebCoreSupport/WebVisiblePosition.mm:

(-[WebVisiblePosition enclosingRangeWithDictationPhraseAlternatives:]): Update code as needed.
(-[WebVisiblePosition enclosingRangeWithCorrectionIndicator]): Ditto.

7:00 PM Changeset in webkit [219596] by Devin Rousso
  • 2 edits in trunk/Source/WebCore

Web Inspector: overlay page highlight doesn't disappear when a page is constantly updating
https://bugs.webkit.org/show_bug.cgi?id=174468

Reviewed by Simon Fraser.

Do not allow the PageOverlay to start another fade animation of the same type if one has
already started. As an example, if the PageOverlay is fading out, startFadeOutAnimation
should just return.

  • page/PageOverlay.cpp:

(WebCore::PageOverlay::startFadeInAnimation):
(WebCore::PageOverlay::startFadeOutAnimation):

6:53 PM Changeset in webkit [219595] by Darin Adler
  • 190 edits in trunk/Source

Improve use of NeverDestroyed
https://bugs.webkit.org/show_bug.cgi?id=174348

Reviewed by Sam Weinig.

Source/JavaScriptCore:

  • heap/MachineStackMarker.cpp:
  • wasm/WasmMemory.cpp:

Removed unneeded includes of NeverDestroyed.h in files that do not make use
of NeverDestroyed.

Source/WebCore:

  • Modules/encryptedmedia/MediaKeySession.cpp: Removed unneeded include of

NeverDestroyed.h.

  • Modules/encryptedmedia/legacy/LegacyCDM.cpp:

(WebCore::installedCDMFactories): Use makeNeverDestroyed and a lambda rather
than a separate boolean for initialization.

  • Modules/encryptedmedia/legacy/LegacyCDMSessionClearKey.cpp:

(WebCore::clearKeyVM): Removed unneeded use of NeverDestroyed to hold a
RefPtr. Simple to just use leakRef instead.

  • Modules/gamepad/GamepadManager.cpp: Added an include of NeverDestroyed.h.
  • Modules/indexeddb/IDBTransaction.cpp: Removed unneeded include of

NeverDestroyed.h.

  • Modules/indexeddb/server/MemoryObjectStore.cpp: Ditto.
  • Modules/mediasession/MediaSessionManager.cpp: Moved include of

NeverDestroyed.h here ...

  • Modules/mediasession/MediaSessionManager.h: ... from here.
  • Modules/mediasource/MediaSourceRegistry.cpp: Moved include of

NeverDestroyed.h here ...

  • Modules/mediasource/MediaSourceRegistry.h: ... from here.
  • Modules/mediasource/SourceBuffer.cpp: Removed unneeded include of

NeverDestroyed.h.

  • Modules/plugins/QuickTimePluginReplacement.h: Initialize

m_scriptObject in the class definition.

  • Modules/plugins/QuickTimePluginReplacement.mm:

(WebCore::QuickTimePluginReplacement::supportsMimeType): Use
makeNeverDestroyed and the HashSet constructor instead of a loop.
(WebCore::QuickTimePluginReplacement::supportsFileExtension): Ditto.
(WebCore::QuickTimePluginReplacement::QuickTimePluginReplacement): Did a
slight cleanup of the initializers.
(WebCore::QuickTimePluginReplacement::~QuickTimePluginReplacement): Added
a FIXME; unclear why there is code here at all.

  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::inheritsPresentationalRole): Use
makeNeverDestroyed and the Vector constructor instead of using empty
vector checks and Vector::add. Use std::any_of rather than Vector::contains
since we now are matching against pointers.

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateEnumerationImplementationContent): Use const NeverDestroyed.

  • bindings/scripts/test/JS/JSTestCallbackInterface.cpp:
  • bindings/scripts/test/JS/JSTestObj.cpp:
  • bindings/scripts/test/JS/JSTestStandaloneDictionary.cpp:
  • bindings/scripts/test/JS/JSTestStandaloneEnumeration.cpp:

Regenerated.

  • css/CSSProperty.cpp:

(WebCore::borderDirections): Removed unnecesssary use of NeverDestroyed
for a global object that has a trivial destructor.

  • css/ElementRuleCollector.cpp:

(WebCore::leftToRightDeclaration): Removed unneeded use of NeverDestroyed to hold a
Ref. Simple to just use leakRef instead. Also use a lambda instead of an explicit
isEmpty check each time this is called.
(WebCore::rightToLeftDeclaration): Ditto.

  • css/makeprop.pl: Removed unneeded include of NeverDestroyed.h and the

uneeded global emptyShorthand. Constructing an empty StylePropertyShorthand
is no less efficient than copying a global empty one was.

  • dom/CustomElementReactionQueue.cpp: Added an include of NeverDestroyed.h.
  • dom/DOMImplementation.cpp: Removed unneeded include of NeverDestroyed.h.
  • dom/InputEvent.cpp: Ditto.
  • dom/Microtasks.cpp: Moved include of NeverDestroyed.h here ...
  • dom/Microtasks.h: ... from here.
  • dom/MutationObserver.cpp: Added an include of NeverDestroyed.h.
  • dom/ScopedEventQueue.cpp: Moved include of NeverDestroyed.h here ...
  • dom/ScopedEventQueue.h: ... from here. Added Forward.h.
  • dom/ScriptElement.cpp:

(WebCore::isLegacySupportedJavaScriptLanguage): Use makeNeverDestroyed
and the HashSet constructor rather than an isEmpty check and a lot of
add function calls. Also removed comments that don't have value any more,
with dubious no longer relevant claims about the behavior of old web browsers.
The function that calls this one already has sufficient comments about why we
hope some day this function can be eliminated.

  • dom/SecurityContext.cpp: Removed unneeded include of NeverDestroyed.h.
  • dom/make_names.pl:

(printFactoryCppFile): Instead of using a "populate" function, use a function
that creates as HashMap. Then use const auto and makeNeverDestroyed.
(printWrapperFactoryCppFile): Ditto.

  • editing/AlternativeTextController.cpp:

(WebCore::markerTypesForAutocorrection): Use makeNeverDestroyed
and the Vector constructor rather than an isEmpty check and a lot of
append function calls.
(WebCore::markerTypesForReplacement): Ditto.
(WebCore::markerTypesForAppliedDictationAlternative): Ditto.

  • editing/EditingStyle.cpp:

(WebCore::htmlElementEquivalents): Use const auto, makeNeverDestroyed,
the Vector constructor, and new rather than make_unique. Changed return
type to use const pointers rather than unique_ptr with non-const type.
(WebCore::EditingStyle::conflictsWithImplicitStyleOfElement): Updated
for the above change to htmlElementEquivalents.
(WebCore::htmlAttributeEquivalents): Same approach as above.
(WebCore::EditingStyle::conflictsWithImplicitStyleOfAttributes): Ditto.
(WebCore::elementMatchesAndPropertyIsNotInInlineStyleDecl): Take
references instead of pointers.
(WebCore::EditingStyle::mergeInlineAndImplicitStyleOfElement): Updated
for the above.

  • editing/FormatBlockCommand.cpp:

(WebCore::isElementForFormatBlock): Use const auto, makeNeverDestroyed,
and the HashSet constructor rather than isEmpty and a lot of calls to add.

  • editing/RemoveFormatCommand.cpp:

(WebCore::isElementForRemoveFormatCommand): Ditto.

  • editing/ReplaceSelectionCommand.cpp:

(WebCore::isProhibitedParagraphChild): Use const auto, makeNeverDestroyed,
and a lambda, rather than isEmpty and a lot of calls to add.

  • html/Autofill.cpp:

(WebCore::fieldNameMap): Changed return type to be const. Use const auto,
makeNeverDestroyed, a lambda, and an array of values rather than isEmpty
and a lot of calls to add. Stopped doing the ConstructFromLiteral
optimization here. (Easy to add it back if that is a mistake.)

  • html/HTMLObjectElement.cpp:

(WebCore::isRecognizedTagName): Use const auto, makeNeverDestroyed, and
a lambda rather than isEmpty.

  • html/HTMLStyleElement.cpp: Added include of NeverDestroyed.h.
  • html/HTMLVideoElement.cpp: Removed uneeded include of NeverDestroyed.h.
  • html/InputType.cpp:

(WebCore::createInputTypeFactoryMap): Replaced the populate function
with this create function.
(WebCore::InputType::create): Use const auto and makeNeverDestroyed
istead of isEmpty. Also put the map right where it is used so it's
not initialized in code path where not needed.

  • html/parser/HTMLParserIdioms.cpp: Removed uneeded include of

NeverDestroyed.h.

  • inspector/InspectorApplicationCacheAgent.cpp:

(WebCore::InspectorApplicationCacheAgent::networkStateChanged):
Merged into a single line.

  • loader/ContentFilter.cpp:

(WebCore::blockedPageURL): Use const auto and makeNeverDestroyed
rather than std::call_once. Since this is a URL and has a non-thread-safe
reference count, this was not thread safe before, so no need to use the
more roundabout and less efficient idiom for its thread safety.

  • loader/CrossOriginAccessControl.cpp:

(WebCore::isOnAccessControlResponseHeaderWhitelist): Deleted.

  • loader/CrossOriginAccessControl.h: Deleted unused function

isOnAccessControlResponseHeaderWhitelist.

  • loader/EmptyClients.cpp: Use leakRef instead of NeverDestroyed<Ref>.
  • loader/appcache/ApplicationCacheStorage.cpp: Removed unneeded include of

NeverDestroyed.h.

  • page/CaptionUserPreferences.cpp: Ditto.
  • page/DebugPageOverlays.cpp:

(WebCore::touchEventRegionColors): Changed the return type to const, since
the callers do not modify the map. Use const auto, makeNeverDestroyed, and
a lambda rather than isEmpty and repeated calls to add.

  • page/MainFrame.cpp: Removed unneeded include of NeverDestroyed.h.
  • page/MemoryRelease.cpp:

(WebCore::releaseMemory): Use a function directly instead of calling it
inside a lambda.

  • page/NavigatorBase.cpp:

(WebCore::NavigatorBase::onLine): Updated to call
NetworkStateNotifier::singleton.

  • page/Page.cpp:

(WebCore::allPages): Made this a function instead of a global to use the
normal idiom for such globals.
(WebCore::Page::forEachPage): Updated for change to allPages.
(WebCore::networkStateChanged): Ditto. Also removed a bit of unnecessary
churn by using const AtomicString& instead of AtomicString.
(WebCore::Page::Page): Moved initialization of most data members to the
class definition. Removed initialiation of allPages. Updated the use of
NetworkStateNotifier for its new slightly changed interface.
(WebCore::Page::~Page): Updated for change to allPages.
(WebCore::Page::clearPreviousItemFromAllPages): Ditto.
(WebCore::Page::updateStyleForAllPagesAfterGlobalChangeInEnvironment): Ditto.
(WebCore::Page::refreshPlugins): Ditto.

  • page/Page.h: Moved initialization of most data members here.
  • page/PerformanceUserTiming.cpp: Removed many unneded includes.

(WebCore::restrictedMarkFunction): Use const auto, makeNeverDestroyed, and
a lambda instead of isEmpty. Also use an array rather than std::array and
got rid fo the unneeded use of anonymous namespace since this is fine in
the top level WebCore namespace.
(WebCore::clearPerformanceEntries): Tweaked coding style.
(WebCore::UserTiming::mark): Ditto.
(WebCore::UserTiming::findExistingMarkStartTime): Got rid of double hash
table lookup by using find instead of using contains followed by get.
removed unneeded explicit cast to double. Tweaked coding style.
(WebCore::convertToEntrySequence): Tweaked coding style.
(WebCore::getEntrySequenceByName): Deleted.
(WebCore::UserTiming::getMarks): Call get directly instead of getEntrySequenceByName.
(WebCore::UserTiming::getMeasures): Ditto.

  • page/RuntimeEnabledFeatures.cpp: Moved include of NeverDestroyed.h here ...
  • page/RuntimeEnabledFeatures.h: ... from here. Added Forward.h and Noncopyable.h.
  • platform/LocalizedStrings.cpp: Removed unneeded include of NeverDestroyed.h.
  • platform/MIMETypeRegistry.cpp:

(WebCore::initializeSupportedImageMIMETypes): Added a missing const for a global
constant array.
(WebCore::initializeSupportedJavaScriptMIMETypes): Ditto.
(WebCore::initializeSupportedNonImageMimeTypes): Ditto.
(WebCore::typesForCommonExtension): Replaced the old mediaMIMETypeMap function
with this one. Moved the common media types array here since it's only used here.
Use const auto, makeNeverDestroyed, and a lambda instead of using an isEmpty check.
Iterate the array using a mdoern for loop. Use HashMap::ensure to avoid the
double hashing that the old code was doing. And moved the code to find an entry
in the map in here from the client functions.
(WebCore::MIMETypeRegistry::getMediaMIMETypeForExtension): Updated to use the
typesForCommonExtension, and changed logic to use this first, and only call
getMIMETypeForExtension for extensions not in the map. This gives the same
result but should be slightly more efficient.
(WebCore::MIMETypeRegistry::getMediaMIMETypesForExtension): Updated to use the
typesForCommonExtension function. Comment about strategy is now in there.
(WebCore::initializeUnsupportedTextMIMETypes): Added a missing const for a global
constant array. Also started using ASCIILiteral.

  • platform/MainThreadSharedTimer.cpp: Moved include of NeverDestroyed.h here ...
  • platform/MainThreadSharedTimer.h: ... from here. Added Forward.h.
  • platform/SchemeRegistry.cpp:

(WebCore::add): Added helper functions to keep code below simpler.
(WebCore::makeNeverDestroyedSchemeSet): Ditto.
(WebCore::allBuiltinSchemes): Use const auto, makeNeverDestroyed, a lambda,
and the helper functions above, rather than isEmpty.
(WebCore::builtinLocalURLSchemes): Use const auto, makeNeverDestroyed, and
the HashSet constructor instead of isEmpty and add calls. Also changed the
return type to be const.
(WebCore::localURLSchemes): Copy the map using assignment instead of an
isEmpty function and a loop with calls to add.
(WebCore::builtinSecureSchemes): Use const auto, makeNeverDestroyed, and
the Vector constructor rather than isEmpty, repeated calls to append,
and shrinkToFit.
(WebCore::secureSchemes): Use auto and makeNeverDestroyedSchemeSet rather
than isEmpty and repeated calls to add.
(WebCore::builtinSchemesWithUniqueOrigins): More of the same.
(WebCore::schemesWithUniqueOrigins): Ditto.
(WebCore::builtinEmptyDocumentSchemes): Ditto.
(WebCore::emptyDocumentSchemes): Ditto.
(WebCore::schemesForbiddenFromDomainRelaxation): Ditto.
(WebCore::builtinCanDisplayOnlyIfCanRequestSchemes): Ditto.
(WebCore::canDisplayOnlyIfCanRequestSchemes): Ditto.
(WebCore::builtinCORSEnabledSchemes): Ditto.
(WebCore::CORSEnabledSchemes): Ditto.
(WebCore::SchemeRegistry::shouldTreatURLSchemeAsLocal): Replaced check for
empty string with check for null string, since that's slightly more efficient
for non-null, non-empty strings, and the hash table can handle empty strings
just fine.
(WebCore::SchemeRegistry::registerURLSchemeAsNoAccess): Added null check here.
(WebCore::SchemeRegistry::shouldTreatURLSchemeAsNoAccess): Ditto.
(WebCore::SchemeRegistry::registerURLSchemeAsDisplayIsolated): Ditto.
(WebCore::SchemeRegistry::shouldTreatURLSchemeAsDisplayIsolated): Ditto.
(WebCore::SchemeRegistry::registerURLSchemeAsSecure): Ditto.
(WebCore::SchemeRegistry::shouldTreatURLSchemeAsSecure): Ditto.
(WebCore::SchemeRegistry::registerURLSchemeAsEmptyDocument): Ditto.
(WebCore::SchemeRegistry::shouldLoadURLSchemeAsEmptyDocument): Ditto.
(WebCore::SchemeRegistry::setDomainRelaxationForbiddenForURLScheme): Ditto.
(WebCore::SchemeRegistry::isDomainRelaxationForbiddenForURLScheme): Ditto.
(WebCore::SchemeRegistry::canDisplayOnlyIfCanRequest): Ditto.
(WebCore::SchemeRegistry::registerAsCanDisplayOnlyIfCanRequest): Ditto.
(WebCore::SchemeRegistry::registerURLSchemeAsNotAllowingJavascriptURLs): Ditto.
(WebCore::SchemeRegistry::shouldTreatURLSchemeAsNotAllowingJavascriptURLs): Ditto.
(WebCore::SchemeRegistry::registerURLSchemeAsAllowingLocalStorageAccessInPrivateBrowsing): Ditto.
(WebCore::SchemeRegistry::allowsLocalStorageAccessInPrivateBrowsing): Ditto.
(WebCore::SchemeRegistry::registerURLSchemeAsAllowingDatabaseAccessInPrivateBrowsing): Ditto.
(WebCore::SchemeRegistry::allowsDatabaseAccessInPrivateBrowsing): Ditto.
(WebCore::SchemeRegistry::registerURLSchemeAsCORSEnabled): Ditto.
(WebCore::SchemeRegistry::shouldTreatURLSchemeAsCORSEnabled): Ditto.
(WebCore::SchemeRegistry::registerURLSchemeAsBypassingContentSecurityPolicy): Ditto.
(WebCore::SchemeRegistry::removeURLSchemeRegisteredAsBypassingContentSecurityPolicy): Ditto.
(WebCore::SchemeRegistry::schemeShouldBypassContentSecurityPolicy): Ditto.
(WebCore::SchemeRegistry::registerURLSchemeAsAlwaysRevalidated): Ditto.
(WebCore::SchemeRegistry::shouldAlwaysRevalidateURLScheme): Ditto.
(WebCore::SchemeRegistry::registerURLSchemeAsCachePartitioned): Ditto.
(WebCore::SchemeRegistry::shouldPartitionCacheForURLScheme): Ditto.
(WebCore::SchemeRegistry::isUserExtensionScheme): Tweaked #if a bit.
(WebCore::SchemeRegistry::isBuiltinScheme): Added null check.

  • platform/cocoa/WebVideoFullscreenModelVideoElement.mm:

(WebVideoFullscreenModelVideoElement::observedEventNames): Use const auto,
makeNeverDestroyed, and the Vector constructor rather than a call to size
and then append eacn time this funciton is called.

  • platform/gamepad/cocoa/GameControllerGamepadProvider.h: Moved include of

NeverDestroyed.h from here ...

  • platform/gamepad/cocoa/GameControllerGamepadProvider.mm: ... to here.
  • platform/gamepad/mac/HIDGamepadProvider.cpp: Moved include of

NeverDestroyed.h here ...

  • platform/gamepad/mac/HIDGamepadProvider.h: ... from here.
  • platform/graphics/FontCascade.cpp:

(WebCore::FontCascade::hasValidAverageCharWidth): Use const auto,
makeNeverDestroyed, and the HashSet constructor.

  • platform/graphics/ImageBuffer.cpp:

(WebCore::ImageBuffer::transformColorSpace): Removed unneeded use of
NeverDestroyed<Vector<int>> here, instead using const std::array.

  • platform/graphics/ImageBuffer.h: Changed platformTransformColorSpace to take

const std::array<uint8_t, 256>& instead of const Vector<int>&, since the whole
pointer of the argument is that it's a table to map bytes onto other bytes.

  • platform/graphics/MediaPlaybackTarget.h: Removed unneeded include of

NeverDestroyed.h, unneeded unused noMediaPlaybackTargetContext function,
and unneeded include of MediaPlaybackTargetContext.h, forward declaring instead.
Made most functions in this class pure virtual instead of having default
implementations.

  • platform/graphics/avfoundation/MediaPlaybackTargetMac.h: Added include

of MediaPlaybackTargetContext.h now that it was removed above.

  • platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:

(WebCore::MediaPlayerPrivateAVFoundation::staticMIMETypeList): Use const auto,
makeNeverDestroyed, and the HashSet constructor.

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:

(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::isAvailable): Reversed the sense
of the boolean logic here to make this simpler and easier to read.
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::getSupportedTypes): Changed
the implementation here, which empties out the passed in hash set, to use
the clear function rather than assignment from a global empty hash set. Added
a FIXME because it seems peculiar that this would be considered OK.
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::supportsType): Used ? : to make
this a little more terse; I think it's clearer.

  • platform/graphics/cairo/ImageBufferCairo.cpp:

(WebCore::ImageBuffer::platformTransformColorSpace): Updated for change to
argument type.

  • platform/graphics/cg/ImageDecoderCG.cpp: Removed unneeded include of

NeverDestroyed.h.
(WebCore::appendImageSourceOption): Streamlined code using auto with
adoptCF; there is no need to write out the type of the RetainPtr.
(WebCore::imageSourceOptions): Instead of NeverDestroyed<RetainPtr>, just use
const auto and leakRef.
(WebCore::imageSourceAsyncOptions): Ditto.

  • platform/graphics/gtk/GdkCairoUtilities.cpp:

(WebCore::getDefaultCairoFontOptions): Instead of using LazyNeverDestroyed
on a pointer, just use a global pointer. There is no need to use any kind
of NeverDestroyed on a type with a trivial destructor such as a pointer.

  • platform/graphics/ios/FontCacheIOS.mm:

(WebCore::platformFontWithFamilySpecialCase): Instead of using
NeverDestroyed<RetainPtr> just use a raw pointer global.

  • platform/graphics/mac/FontCacheMac.mm:

(WebCore::platformFontWithFamilySpecialCase): Ditto.

  • platform/graphics/mac/MediaPlayerPrivateQTKit.mm:

(WebCore::createFileTypesSet): Return the HashSet instead of adding to it.
Use Objective-C for/in syntax for an NSArray, not C++ for syntax, although
it seems the C++ syntax was working fine.
(WebCore::mimeCommonTypesCache): Fixed return type so we won't copy the
HashMap every time this function is called. Use const auto and makeNeverDestroyed
instead of using a boolean to do one time initialization.
(WebCore::mimeModernTypesCache): Ditto.
(WebCore::MediaPlayerPrivateQTKit::disableUnsupportedTracks): Marked a
constant array const.

  • platform/ios/Device.cpp:

(WebCore::deviceClass): Use a lambda to initialize a variable here instead
of using std::call_once. This function does not need to be thread safe.
(WebCore::deviceName): Use const NeverDestroyed instead of LazyNeverDestroyed
and std::call_once. This function does not need to be thread safe.

  • platform/ios/DragImageIOS.mm: Make defaultLinkIndicatorOptions be a

constant instead of a variable.
(WebCore::cascadeForSystemFont): Added helper function.
(WebCore::createDragImageForLink): Use const auto and makeNeverDestroyed
instead of LazyNeverDestroyed and dispatch_once. This code does not need
to be thread safe since its arguments include, for example, a DOM element.

  • platform/ios/LegacyTileLayerPool.h: Removed unneeded include of

NeverDestroyed.h.

  • platform/ios/QuickLook.mm:

(WebCore::QLPreviewGetSupportedMIMETypesSet): Use a global raw pointer
instead of NeverDestroyed<RetainPtr<NSSet>>.
(WebCore::createQLPreviewProtocol): Deleted.
(WebCore::QLPreviewProtocol): Use a global raw pointer instead of
a NeverDestroyed<Vector<char>>. It's cleaner to use fastStrdup instead
of appending to an array, and less wasteful of memory too.

  • platform/ios/WebCoreMotionManager.mm: Removed unneeded include of

NeverDestroyed.h.

  • platform/ios/WebSQLiteDatabaseTrackerClient.h: Ditto.
  • platform/mac/DragImageMac.mm: Ditto.
  • platform/mediastream/CaptureDeviceManager.cpp: Ditto.
  • platform/mediastream/RealtimeMediaSourceSupportedConstraints.cpp: Ditto.
  • platform/mock/MockRealtimeMediaSource.cpp:

(WebCore::MockRealtimeMediaSource::audioDevices): Use auto,
makeNeverDestroyed, and a lambda instead of checking size each time.
(WebCore::MockRealtimeMediaSource::videoDevices): Ditto.

  • platform/mock/mediasource/MockMediaPlayerMediaSource.cpp:

(WebCore::mimeTypeCache): Use const auto, makeNeverDestroyed, and the
HashSet constructor instead of an explicit boolean to initialize.

  • platform/network/BlobRegistryImpl.cpp:

(WebCore::blobUtilityQueue): Use a global with a raw reference instead
of a NeverDestroyed<Ref>.

  • platform/network/NetworkStateNotifier.cpp:

(WebCore::NetworkStateNotifier::singleton): Renamed this from
networkStateNotifier. We must have missed this when we changed to use the
singleton idiom consistently. Also changed to use normal NeverDestroyed
rather than using LazyNeverDestroyed and call_once, because this is not
used from multiple threads and has no special thread safety requirements.
(WebCore::NetworkStateNotifier::NetworkStateNotifier): Moved the constructor
here and construct the timer. Before the timer was used only on the Mac
platform but now it is there for all platforms.
(WebCore::NetworkStateNotifier::onLine): Moved function here from the header.
It's a littlel less trivial than before because it now triggers a call to
updateState as needed.
(WebCore::NetworkStateNotifier::addListener): Renamed from
addNetworkStateChangeListener since there is only one kind of listener and
the old name was too wordy. Changed to call the new startObserving function,
and guaranteed to call it onlh once. The platform-specific logic for iOS is
now inside the iOS version of that function instead of here.
(WebCore::NetworkStateNotifier::updateState): Moved here now that it is the
same for all platforms. The actual state updating is done in a function named
updateStateWithoutNotifying, which is implemented for each platform.
(WebCore::NetworkStateNotifier::updateStateSoon): New function which takes
advantage of the timer to coalesce network state updates.
(WebCore::NetworkStateNotifier::updateStateWithoutNotifying): Empty stub
version of this function.
(WebCore::NetworkStateNotifier::startObserving): Ditto.
(WebCore::NetworkStateNotifier::notifyNetworkStateChange): Deleted. Code from
this has moved into updateState.

  • platform/network/NetworkStateNotifier.h: Greatly cut down what part of this

class is platform-specific.

  • platform/network/ios/NetworkStateNotifierIOS.mm:

(-[WebNetworkStateObserver initWithBlock:]): Simplified this class so it
takes a block, rather than using a pointer to the C++ notifier and doing
WebThreadRun.
(-[WebNetworkStateObserver dealloc]): Ditto.
(-[WebNetworkStateObserver networkStateChanged:]): Ditto.
(WebCore::NetworkStateNotifier::updateStateWithoutNotifying):
This now calls isNetworkReachable.
(WebCore::NetworkStateNotifier::startObserving): Check the
Settings::shouldOptOutOfNetworkStateObservation function, and if it's OK
to observe, then create the observer. This code now takes care of the
WebThreadRun and calls updateStateSoon.
(WebCore::NetworkStateNotifier::NetworkStateNotifier): Deleted. The
constructor is now platform independent.
(WebCore::NetworkStateNotifier::~NetworkStateNotifier): Deleted. This
object is never destroyed so we should not write a destructor for it.
(WebCore::NetworkStateNotifier::registerObserverIfNecessary): Deleted.
Replaced by startObserving.
(WebCore::NetworkStateNotifier::onLine): Deleted. This function is now
platform-independent.
(WebCore::setOnLine): Deleted. The logic from this is now in
updateState and updateStateWithoutNotifying.

  • platform/network/mac/NetworkStateNotifierMac.cpp:

(WebCore::NetworkStateNotifier::updateStateWithoutNotifying): Renamed
this from updateState and tightened up the code a bit. Also changed
to not assume anything. If there is an error, we leave m_isOnLine alone.
Default behavior is now in the platform-independent code, and the default
is to treat things as on-line if updateStateWithoutNotifying was called
and it was never able to update the state even once.
(WebCore::NetworkStateNotifier::startObserving): Moved most of the code
from the constructor into this function.
(WebCore::NetworkStateNotifier::dynamicStoreCallback): Deleted. This is
now a lambda inside startObserving.
(WebCore::NetworkStateNotifier::networkStateChangeTimerFired): Deleted.
This function is now platform-independent and is named updateState.

  • platform/network/win/NetworkStateNotifierWin.cpp:

(WebCore::NetworkStateNotifier::updateStateWithoutNotifying): Renamed
from updateState and tightened the code up a bit. Also changed
to not assume anything. If there is an error, we leave m_isOnLine alone.
Default behavior is now in the platform-independent code, and the default
is to treat things as on-line if updateStateWithoutNotifying was called
and it was never able to update the state even once.
(WebCore::NetworkStateNotifier::addressChanged): Deleted.
This function is now platform-independent and is named updateState.
(WebCore::NetworkStateNotifier::addressChangeCallback): Renamed from
addrChangeCallback. Simplified by using the singleton function instead
of relying on the context pointer.
(WebCore::NetworkStateNotifier::startObserving): Moved most of the code
from the constructor here.

  • platform/text/LocaleToScriptMappingDefault.cpp:

(WebCore::scriptNameToCode): Use makeNeverDestroyed.
(WebCore::localeToScriptCodeForFontSelection): Ditto.

  • platform/text/ios/LocalizedDateCache.h: Moved include of

NeverDestroyed.h from here ...

  • platform/text/ios/LocalizedDateCache.mm: ... to here.
  • platform/wpe/RenderThemeWPE.cpp:

(WebCore::RenderTheme::singleton): Use a theme that is never destroyed
rather than Ref that is never destroyed.

  • platform/wpe/RenderThemeWPE.h: Use friend NeverDestroyed rather than

a create function since RenderTheme is no longer reference counted.

  • rendering/RenderTheme.h: Made RenderTheme no longer reference counted.
  • rendering/RenderThemeGtk.cpp:

(WebCore::RenderThemeGtk::create): Deleted.
(WebCore::RenderTheme::singleton): Use a theme that is never destroyed
rather than Ref that is never destroyed.

  • rendering/RenderThemeGtk.h: Use friend NeverDestroyed rather than

a create function since RenderTheme is no longer reference counted.

  • rendering/RenderThemeIOS.h: Ditto.
  • rendering/RenderThemeIOS.mm:

(WebCore::RenderThemeIOS::create): Deleted.
(WebCore::RenderTheme::singleton): Use a theme that is never destroyed
rather than Ref that is never destroyed.

  • rendering/RenderThemeMac.h: Use friend NeverDestroyed rather than

a create function since RenderTheme is no longer reference counted.
Also marked a lot of functions final rather than override and initialized
data members in the class deifnition.

  • rendering/RenderThemeMac.mm: Moved some SPI interfaces to the top of the

file. They should really go into SPI headers.
(-[WebCoreRenderThemeNotificationObserver init]): Removed the theme argument
here because the theme is a singleton and we don't need a pointer to it.
Add the observer here instead of doing it in the caller.
(-[WebCoreRenderThemeNotificationObserver systemColorsDidChange:]): Call
platformColorsDidChange through the singleton rather than using a pointer.
(-[WebCoreTextFieldCell _coreUIDrawOptionsWithFrame:inView:includeFocus:]):
Tightened up the code a bit by using CFAutorelease instead of using a
combination of NSMakeCollectable, autorelease, and a typecast to accomplish
the same thing.
(WebCore::RenderTheme::singleton): Use a theme that is never destroyed
rather than Ref that is never destroyed.
(WebCore::RenderThemeMac::create): Deleted.
(WebCore::RenderThemeMac::RenderThemeMac): Moved initialization into the
class definition and observing into the WebCoreRenderThemeNotificationObserver
init function.
(WebCore::RenderThemeMac::~RenderThemeMac): Deleted. No need for this since
the object will never be destroyed.
(WebCore::RenderThemeMac::mediaControlsBase64StringForIconNameAndType):
Removed an unnecessary conversion from C string literal to WTF::String and
then to NSString. Instead, just use an NSString literal.

  • rendering/RenderThemeWin.cpp:

(WebCore::RenderThemeWin::create): Deleted.
(WebCore::RenderTheme::singleton): Use a theme that is never destroyed
rather than Ref that is never destroyed.

  • rendering/RenderThemeWin.h: Use friend NeverDestroyed rather than

a create function since RenderTheme is no longer reference counted.

  • rendering/svg/RenderSVGResource.cpp:

(WebCore::removeFromCacheAndInvalidateDependencies): Moved a global into
the code where it is used.

  • svg/SVGAnimatedLength.cpp: Removed unneeded include of NeverDestroyed.h.
  • svg/SVGAnimationElement.cpp:

(WebCore::SVGAnimationElement::isSupportedAttribute): Use const auto,
makeNeverDestroyed, a lambda, and the new HashSet::add overload instead of
an isEmpty check and lots of separate add function calls.

  • svg/SVGClipPathElement.cpp:

(WebCore::SVGClipPathElement::isSupportedAttribute): Ditto.

  • svg/SVGComponentTransferFunctionElement.cpp:

(WebCore::SVGComponentTransferFunctionElement::isSupportedAttribute): Ditto.

  • svg/SVGCursorElement.cpp:

(WebCore::SVGCursorElement::isSupportedAttribute): Ditto.

  • svg/SVGElement.cpp:

(WebCore::createAttributeNameToCSSPropertyIDMap): Replaced the populate
function with this create function.
(WebCore::createAttributeNameToAnimatedPropertyTypeMap): Ditto.
(WebCore::attributeNameToAnimatedPropertyTypeMap): Changed return type to
const reference. Use const auto and makeNeverDestroyed instead of using
isEmpty and a populate function.
(WebCore::createCSSPropertyWithSVGDOMNameToAnimatedPropertyTypeMap):
More of the same.
(WebCore::cssPropertyWithSVGDOMNameToAnimatedPropertyTypeMap): Ditto.
(WebCore::SVGElement::childShouldCreateRenderer): Use an array instead of
a HashSet since we are checking against only 3 or 4 values.
(WebCore::addQualifiedName): Deleted.
(WebCore::SVGElement::animatableAttributeForName): Use const auto,
makeNeverDestroyed, and a lambda to efficiently build the map in this function.
(WebCore::SVGElement::cssPropertyIdForSVGAttributeName): Use const auto and
makeNeverDestroyed instead of using isEmpty and a populate function.

  • svg/SVGFilterElement.cpp:

(WebCore::SVGFilterElement::isSupportedAttribute): Use const auto,
makeNeverDestroyed, a lambda, and the new HashSet::add overload instead of
an isEmpty check and lots of separate add function calls.

  • svg/SVGFilterPrimitiveStandardAttributes.cpp:

(WebCore::SVGFilterPrimitiveStandardAttributes::isSupportedAttribute): Ditto.

  • svg/SVGForeignObjectElement.cpp:

(WebCore::SVGForeignObjectElement::isSupportedAttribute): Ditto.

  • svg/SVGGElement.cpp:

(WebCore::SVGGElement::isSupportedAttribute): Ditto.

  • svg/SVGGradientElement.cpp:

(WebCore::SVGGradientElement::isSupportedAttribute): Ditto.

  • svg/SVGGraphicsElement.cpp:

(WebCore::SVGGraphicsElement::isSupportedAttribute): Ditto.

  • svg/SVGImageElement.cpp:

(WebCore::SVGImageElement::isSupportedAttribute): Ditto.

  • svg/SVGLangSpace.cpp:

(WebCore::addWithAndWithoutXMLPrefix): Added helper. Uses xmlAtom instead
of making our own NeverDestroyed local xmlPrefix.
(WebCore::SVGLangSpace::addSupportedAttributes): Rewrote to use helper.

  • svg/SVGLineElement.cpp:

(WebCore::SVGLineElement::isSupportedAttribute): Use const auto,
makeNeverDestroyed, a lambda, and the new HashSet::add overload instead of
an isEmpty check and lots of separate add function calls.

  • svg/SVGLinearGradientElement.cpp:

(WebCore::SVGLinearGradientElement::isSupportedAttribute): Ditto.

  • svg/SVGMarkerElement.cpp:

(WebCore::SVGMarkerElement::isSupportedAttribute): Ditto.

  • svg/SVGMaskElement.cpp:

(WebCore::SVGMaskElement::isSupportedAttribute): Ditto.

  • svg/SVGPathElement.cpp:

(WebCore::SVGPathElement::isSupportedAttribute): Ditto.

  • svg/SVGPatternElement.cpp:

(WebCore::SVGPatternElement::isSupportedAttribute): Ditto.

  • svg/SVGRadialGradientElement.cpp:

(WebCore::SVGRadialGradientElement::isSupportedAttribute): Ditto.

  • svg/SVGTextContentElement.cpp:

(WebCore::SVGTextContentElement::isSupportedAttribute): Ditto.

  • svg/SVGTextPathElement.cpp:

(WebCore::SVGTextPathElement::isSupportedAttribute): Ditto.

  • svg/animation/SVGSMILElement.cpp:

(WebCore::SVGSMILElement::isSupportedAttribute): Ditto.

  • testing/MockContentFilterSettings.h: Removed unneeded include of

NeverDestroyed.h.

  • testing/MockGamepadProvider.cpp: Moved include of

NeverDestroyed.h here ...

  • testing/MockGamepadProvider.h: ... from here.
  • testing/MockPreviewLoaderClient.h: Removed unneeded include of

NeverDestroyed.h.

  • workers/Worker.cpp:

(WebCore::allWorkers): Changed this from a global to a function.
(WebCore::Worker::networkStateChanged): Updated for above change and
made this a member function.
(WebCore::Worker::Worker): Updated for above change and
change to NetworkStateNotifier.
(WebCore::Worker::~Worker): Ditto.

  • workers/Worker.h: Made networkStateChanged a static member instead of

a friend since that is a cleaner way to give it access to private member
functions.

  • xml/XPathFunctions.cpp:

(WebCore::XPath::createFunctionMap): Use create instead of populate style.
(WebCore::XPath::Function::create): Use const auto and makeNeverDestroyed
instead of an isEmpty check.

  • xml/XPathParser.cpp:

(WebCore::XPath::createAxisNamesMap): Use create instead of populate style.
(WebCore::XPath::parseAxisName): Use const auto and makeNeverDestroyed
instead of an isEmpty check.

Source/WebKit:

  • DatabaseProcess/DatabaseProcess.h: Removed unneeded include of

NeverDestroyed.h.

  • NetworkProcess/cache/NetworkCacheKey.cpp: Ditto.
  • NetworkProcess/capture/NetworkCaptureManager.cpp: Moved include of

NeverDestroyed.h here ...

  • NetworkProcess/capture/NetworkCaptureManager.h: ... from here.
  • PluginProcess/PluginProcess.cpp: Moved include of NeverDestroyed.h

here ...

  • PluginProcess/PluginProcess.h: ... from here.
  • Shared/API/Cocoa/_WKRemoteObjectInterface.mm:

(isContainerClass): Removed trivial inefficient use of
LazyNeverDestroyed<HashSet> to check against two classes.
Instead wrote out the boolean expression.

  • Shared/mac/SecItemShim.cpp: Removed unneeded include of

NeverDestroyed.h.

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitialize): Call
installMemoryPressureHandler instead of WebMemoryPressureHandler::singleton.

  • UIProcess/Gamepad/UIGamepadProvider.h: Removed unneeded include

of NeverDestroyed.h.

  • UIProcess/Plugins/PluginProcessManager.cpp: Moved include of

NeverDestroyed.h here ...

  • UIProcess/Plugins/PluginProcessManager.h: ... from here.
  • UIProcess/WebInspectorProxy.cpp: Removed unneeded include

of NeverDestroyed.h.

  • UIProcess/WebPageProxy.h: Added now-needed include of

MediaPlaybackTargetContext.h.

  • UIProcess/WebPasteboardProxy.cpp: Moved include of

NeverDestroyed.h here ...

  • UIProcess/WebPasteboardProxy.h: ... from here.
  • UIProcess/ios/WebMemoryPressureHandlerIOS.h: Removed the

WebMemoryPressureHandler class from this header. Callers don't need to
know if there is a class. They simply indicate when it's time to install
the handler. Another way to put it is that this class had no functions
other than the singleton function.

  • UIProcess/ios/WebMemoryPressureHandlerIOS.mm:

(WebKit::installMemoryPressureHandler): Replaced the class with this function.
It creates a dispatch source and then resumes it. To avoid having the source
look like a leak, we keep it in a global variable.

  • WebProcess/Gamepad/WebGamepadProvider.h: Include Forward.h instead of

NeverDestroyed.h.

  • WebProcess/WebCoreSupport/WebPasteboardOverrides.cpp: Moved include of

NeverDestroyed.h here ...

  • WebProcess/WebCoreSupport/WebPasteboardOverrides.h: ... from here.
  • WebProcess/WebCoreSupport/WebPlatformStrategies.h: Removed unneeded

include of NeverDestroyed.h.

Source/WebKitLegacy:

  • Storage/StorageThread.cpp:

(WebCore::StorageThread::releaseFastMallocFreeMemoryInAllThreads):
Simplify code by using a modern for loop and passing a function without wrapping
it in a lambda.

Source/WebKitLegacy/mac:

  • Misc/WebStringTruncator.mm:

(+[WebStringTruncator centerTruncateString:toWidth:]): Replace
NeverDestroyed<RetainPtr> with just an NSFont * global.

  • Plugins/Hosted/NetscapePluginHostManager.h: Removed unneeded include of

NeverDestroyed.h.

  • Storage/WebDatabaseManager.mm: Ditto.
  • WebCoreSupport/WebFrameNetworkingContext.mm: Ditto.
  • WebCoreSupport/WebPlatformStrategies.mm: Ditto.
  • WebView/WebView.mm: Removed unneeded include of NetworkStateNotifier.h.

(aeDescFromJSValue): Removed double hashing by using the return value from
add rather than calling contains before calling add.

Source/WTF:

  • wtf/HashSet.h: Added an overload of HashSet::add that takes an initializer list of

const references. This is handy to add a bunch of values all at once. Later we can
consider optimizing to grow the hash table only once instead of deciding whether to
grow repeatedly as we add each value.
(WTF::copyToVector): Changed to use std::copy, removing 4 of the 6 lines of code here.

  • wtf/MemoryPressureHandler.cpp: Include NeverDestroyed.h here ...
  • wtf/MemoryPressureHandler.h: ... not here.
  • wtf/NeverDestroyed.h: Added the ability to have a const NeverDestroyed.

Added a makeNeverDestroyed function that deduces the type from the argument.
With auto, this can be used to avoid writing out a long type twice.

  • wtf/ThreadingPthreads.cpp: Removed unneeded include of NeverDestroyed.h.
  • wtf/text/AtomicString.cpp: Ditto.
6:45 PM Changeset in webkit [219594] by timothy_horton@apple.com
  • 8 edits
    2 adds in trunk

Page using safe area constant properties jumps to correct layout after resize
https://bugs.webkit.org/show_bug.cgi?id=174598
<rdar://problem/33364275>

Reviewed by Simon Fraser.

Source/WebKit:

Test: fast/events/ios/rotation/safe-area-insets-during-safari-type-rotation.html

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _beginAnimatedResizeWithUpdates:]):

  • UIProcess/WebPageProxy.h:
  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::dynamicViewportSizeUpdate):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::dynamicViewportSizeUpdate):
Plumb unobscured safe area insets through in the dynamicViewportSizeUpdate,
like we do in VisibleContentRectUpdate (once again sad that these aren't
more similar), so that it will be correct in the during-rotation snapshot,
instead of only becoming correct in the first visible content rect update
post-rotation.

LayoutTests:

  • fast/events/ios/rotation/safe-area-insets-during-safari-type-rotation-expected.txt: Added.
  • fast/events/ios/rotation/safe-area-insets-during-safari-type-rotation.html: Added.

Add a test making sure that dynamic-viewport-update-based rotation
updates safe area insets when needed.

6:12 PM Changeset in webkit [219593] by jmarcell@apple.com
  • 7 edits in tags/Safari-604.1.32.0.1/Source

Versioning.

5:51 PM Changeset in webkit [219592] by jmarcell@apple.com
  • 1 copy in tags/Safari-604.1.32.0.1

New tag.

5:25 PM Changeset in webkit [219591] by beidson@apple.com
  • 4 edits in trunk/Source/WebCore

REGRESSION(r219298): imported/w3c/IndexedDB-private-browsing/idbfactory_open.html is crashing occassionaly (UniqueIDBDatabase being taken from the IDBServer set twice).
<rdar://problem/33294987> and https://bugs.webkit.org/show_bug.cgi?id=174354

Reviewed by Alex Christensen.

No new tests (Covered by existing tests).

  • Modules/indexeddb/server/IDBServer.cpp:

(WebCore::IDBServer::IDBServer::postDatabaseTaskReply): Remove a now invalid ASSERT

  • Modules/indexeddb/server/UniqueIDBDatabase.cpp:

(WebCore::IDBServer::UniqueIDBDatabase::scheduleShutdownForClose): Add a RELEASE_ASSERT.
(WebCore::IDBServer::UniqueIDBDatabase::didDeleteBackingStore): Instead of an ad-hoc main thread dispatch, use the "schedule task reply" system

to keep dispatch ordering in tact.

(WebCore::IDBServer::UniqueIDBDatabase::postDatabaseTaskReply): Remove a now invalid ASSERT
(WebCore::IDBServer::UniqueIDBDatabase::immediateCloseForUserDelete): Only take the owning pointer if the object doesn't already own itself.

5:15 PM Changeset in webkit [219590] by Wenson Hsieh
  • 2 edits in trunk/Tools

Unreviewed, fix the iOS build.

I missed a spot when renaming -synchronouslyLoadHTML: to -synchronouslyLoadHTMLString:.

  • TestWebKitAPI/Tests/ios/DataInteractionTests.mm:

(TestWebKitAPI::TEST):

4:56 PM Changeset in webkit [219589] by jmarcell@apple.com
  • 7 edits in branches/safari-604-branch/Source

Versioning.

4:56 PM Changeset in webkit [219588] by Chris Dumez
  • 3 edits in trunk/Source/WebKit

UserMediaPermissionRequestManagerProxy should not use WebCore::Timer
https://bugs.webkit.org/show_bug.cgi?id=174599
<rdar://problem/33362600>

Reviewed by Tim Horton.

UserMediaPermissionRequestManagerProxy should not use WebCore::Timer since it runs in the
UIProcess. Switch to using RunLoop::Timer instead.

  • UIProcess/UserMediaPermissionRequestManagerProxy.cpp:

(WebKit::UserMediaPermissionRequestManagerProxy::UserMediaPermissionRequestManagerProxy):

  • UIProcess/UserMediaPermissionRequestManagerProxy.h:
4:55 PM Changeset in webkit [219587] by Chris Dumez
  • 3 edits in trunk/Source/WebKit

NETWORK_SESSION does not need didReceiveAuthenticationChallenge(uint64_t, uint64_t, const AuthenticationChallenge&)
https://bugs.webkit.org/show_bug.cgi?id=174595

Reviewed by Alex Christensen.

  • Shared/Authentication/AuthenticationManager.cpp:

(WebKit::AuthenticationManager::didReceiveAuthenticationChallenge):

  • Shared/Authentication/AuthenticationManager.h:
4:49 PM Changeset in webkit [219586] by Matt Lewis
  • 2 edits in trunk/LayoutTests

Fixed test expectations after r219518.
https://bugs.webkit.org/show_bug.cgi?id=174472

Unreviewed test gardening.

  • platform/mac/TestExpectations:
4:17 PM Changeset in webkit [219585] by Wenson Hsieh
  • 14 edits
    1 add in trunk

[iOS DnD] Web process uses too much memory when beginning a drag on a very large image
https://bugs.webkit.org/show_bug.cgi?id=174585
<rdar://problem/33302541>

Reviewed by Tim Horton.

Source/WebCore:

Currently, attempting to drag a very large image fails, either due to us telling CoreGraphics to create an image
buffer that is too large, or because the web process exceeds its memory limit and gets jetsamed. There are two
places where we can optimize our memory use during the drag initialization sequence, and this patch improves
both.

First, on iOS, we attempt to encode and send over a WebCore::Image in the PasteboardImage when writing to the
item providers upon starting a drag. Currently, this Image is only used in the drag and drop codepath, in
PlatformPasteboard::writeObjectRepresentations, to grab the size of the image being written for the purpose of
specifying estimated display size. Serializing and deserializing an Image calls into Image::nativeImage, which
attempts to draw the contents of the image into a buffer so that it can be shipped across to the UI process.
Instead, we can simply compute the size in the web process while we already have the Image, and simply send that
across. For copy/paste, this doesn't result in any behavior change, since we don't use the PasteboardImage's
image in the first place.

Secondly, when starting a drag, we try to allocate create an image buffer the size of the WebCore::Image for the
purpose of generating the drag preview. Instead, this patch establishes a limit on the size of this drag preview
image, such that if the Image's size is larger, we'll scale down the drag preview image to be the maximum
allowed size.

Test: DataInteractionTests.CanStartDragOnEnormousImage.

  • editing/ios/EditorIOS.mm:

(WebCore::Editor::writeImageToPasteboard):

  • platform/Pasteboard.h:
  • platform/graphics/GeometryUtilities.cpp:

(WebCore::sizeWithAreaAndAspectRatio):

Introduce a new helper function to compute a size with the given aspect ratio and area.

  • platform/graphics/GeometryUtilities.h:
  • platform/ios/DragImageIOS.mm:

(WebCore::createDragImageFromImage):

  • platform/ios/PlatformPasteboardIOS.mm:

(WebCore::PlatformPasteboard::writeObjectRepresentations):

Source/WebKit:

Add IPC support for serializing/deserializing the size of an image written to the pasteboard. See WebCore
ChangeLogs for more details.

  • Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<PasteboardImage>::encode):
(IPC::ArgumentCoder<PasteboardImage>::decode):

Tools:

Adds a new test verifying that we don't try to allocate any image buffer equal to the true size of the image
being dragged when initiating a drag.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit2Cocoa/enormous.svg: Added.
  • TestWebKitAPI/Tests/ios/DataInteractionTests.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/cocoa/TestWKWebView.h:

Add a new -synchronouslyLoadHTMLString: helper that works like -synchronouslyLoadTestPage:, but takes markup.

  • TestWebKitAPI/cocoa/TestWKWebView.mm:

(-[TestWKWebView synchronouslyLoadHTMLString:]):

4:12 PM Changeset in webkit [219584] by Konstantin Tokarev
  • 2 edits in trunk/Source/WebKit

Unreviewed attempt to fix Mac cmake build

  • PlatformMac.cmake: Remove reference to file which is gone since r219025
4:06 PM Changeset in webkit [219583] by jmarcell@apple.com
  • 1 copy in tags/Safari-604.1.32

Tag Safari-604.1.32.

3:56 PM Changeset in webkit [219582] by jmarcell@apple.com
  • 5 edits in branches/safari-604-branch/Source

Cherry-pick r219423. rdar://problem/33337335

3:56 PM Changeset in webkit [219581] by jmarcell@apple.com
  • 15 edits in branches/safari-604-branch

Cherry-pick r219413. rdar://problem/33337335

3:50 PM Changeset in webkit [219580] by Michael Catanzaro
  • 9 edits in trunk

[CMake] Include most CMake modules from WebKitCommon.cmake
https://bugs.webkit.org/show_bug.cgi?id=174546

Reviewed by Konstantin Tokarev.

.:

  • CMakeLists.txt:
  • Source/cmake/OptionsCommon.cmake:
  • Source/cmake/WebKitCommon.cmake:
  • Source/cmake/WebKitMacros.cmake:

Source/WebCore:

  • WebCoreMacros.cmake:

Source/WebKit:

  • CMakeLists.txt:
3:49 PM Changeset in webkit [219579] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk/LayoutTests

media element handle adding source immediately before src.
https://bugs.webkit.org/show_bug.cgi?id=174284

Patch by Jeremy Jones <jeremyj@apple.com> on 2017-07-17
Reviewed by David Kilzer.

Adds missing -expected and tests to make sure resulting currentSrc is correct.

  • TestExpectations:
  • media/video-source-before-src-expected.txt: Added.
  • media/video-source-before-src.html:
3:42 PM Changeset in webkit [219578] by Michael Catanzaro
  • 19 edits in trunk

[CMake] Macros in WebKitMacros.cmake should be prefixed with WEBKIT_ namespace
https://bugs.webkit.org/show_bug.cgi?id=174547

Reviewed by Alex Christensen.

.:

  • Source/cmake/WebKitMacros.cmake:

Source/JavaScriptCore:

  • CMakeLists.txt:
  • shell/CMakeLists.txt:

Source/ThirdParty:

  • brotli/CMakeLists.txt:
  • woff2/CMakeLists.txt:
  • xdgmime/CMakeLists.txt:

Source/WebCore:

  • CMakeLists.txt:
  • WebCoreMacros.cmake:

Source/WebKit:

  • CMakeLists.txt:

Source/WebKitLegacy:

  • CMakeLists.txt:

Tools:

  • DumpRenderTree/PlatformWin.cmake:
  • DumpRenderTree/TestNetscapePlugIn/CMakeLists.txt:
3:40 PM Changeset in webkit [219577] by commit-queue@webkit.org
  • 3 edits in trunk/Tools

Update style checker to deal with "final"
https://bugs.webkit.org/show_bug.cgi?id=174528

Patch by Yoshiaki Jitsukawa <Yoshiaki.Jitsukawa@sony.com> on 2017-07-17
Reviewed by Alex Christensen.

check-webkit-style shouldn't complain about an open brace to start a
line after a function definition with "final" or "const final".

  • Scripts/webkitpy/style/checkers/cpp.py:

(check_braces):

  • Scripts/webkitpy/style/checkers/cpp_unittest.py:

(CppStyleTest.test_brace_at_begin_of_line):

2:54 PM Changeset in webkit [219576] by Matt Lewis
  • 3 edits in trunk/LayoutTests

Fixed test expectations after r219518.
https://bugs.webkit.org/show_bug.cgi?id=174472

Unreviewed test gardening.

  • platform/ios-wk1/TestExpectations:
  • platform/mac/TestExpectations:
2:43 PM Changeset in webkit [219575] by jmarcell@apple.com
  • 7 edits in trunk/Source

Versioning.

2:32 PM Changeset in webkit [219574] by jmarcell@apple.com
  • 1 copy in branches/safari-604-branch

New branch.

1:48 PM Changeset in webkit [219573] by achristensen@apple.com
  • 9 edits in trunk

Modernize content extension code
https://bugs.webkit.org/show_bug.cgi?id=174588

Reviewed by Sam Weinig.

Source/WebCore:

No change in behavior. Just use Ref instead of RefPtr where possible.

  • contentextensions/ContentExtension.cpp:

(WebCore::ContentExtensions::ContentExtension::create):

  • contentextensions/ContentExtension.h:
  • contentextensions/ContentExtensionsBackend.cpp:

(WebCore::ContentExtensions::ContentExtensionsBackend::addContentExtension):
(WebCore::ContentExtensions::ContentExtensionsBackend::actionsForResourceLoad):

  • contentextensions/ContentExtensionsBackend.h:

Source/WebKit:

  • WebProcess/UserContent/WebUserContentController.cpp:

(WebKit::WebUserContentController::addContentRuleLists):

Tools:

  • TestWebKitAPI/Tests/WebCore/ContentExtensions.cpp:

(TestWebKitAPI::InMemoryCompiledContentExtension::createFromFilter):
(TestWebKitAPI::testRequest):
(TestWebKitAPI::makeBackend):
(TestWebKitAPI::TEST_F):

1:39 PM Changeset in webkit [219572] by Chris Dumez
  • 2 edits in trunk/LayoutTests

fast/workers/worker-user-gesture.html crashes on iOS
https://bugs.webkit.org/show_bug.cgi?id=174592

Reviewed by Simon Fraser.

Make sure the tap/click event is fully processed before finishing the test by using
the promise returned by UIHelper.activateAt().

  • fast/workers/worker-user-gesture.html:
1:24 PM Changeset in webkit [219571] by Simon Fraser
  • 4 edits
    2 adds in trunk

clientX/clientY on TouchEvent.touches are wrong
https://bugs.webkit.org/show_bug.cgi?id=174561
Source/WebCore:

rdar://problem/33336041

Reviewed by Tim Horton.

Do some refactoring so that WebKitAdditions code that computes Touch coordinates can use
the same code that MouseRelatedEvent uses.

There is no behavior change in this patch, but the test exercises a behavior change in
WebKitAdditions code.

Test: fast/events/touch/ios/touches-client-coords-after-zoom.html

  • dom/MouseRelatedEvent.cpp:

(WebCore::MouseRelatedEvent::init):
(WebCore::MouseRelatedEvent::frameViewFromDOMWindow):
(WebCore::MouseRelatedEvent::pagePointToClientPoint):
(WebCore::MouseRelatedEvent::pagePointToAbsolutePoint):
(WebCore::MouseRelatedEvent::initCoordinates):
(WebCore::MouseRelatedEvent::documentToAbsoluteScaleFactor):
(WebCore::MouseRelatedEvent::computePageLocation):
(WebCore::MouseRelatedEvent::locationInRootViewCoordinates):
(WebCore::MouseRelatedEvent::frameView): Deleted.

  • dom/MouseRelatedEvent.h:

LayoutTests:

Reviewed by Tim Horton.

  • fast/events/touch/ios/touches-client-coords-after-zoom-expected.txt: Added.
  • fast/events/touch/ios/touches-client-coords-after-zoom.html: Added.
12:54 PM WebKitGTK/DependenciesPolicy edited by clopez@igalia.com
(diff)
12:53 PM Changeset in webkit [219570] by jmarcell@apple.com
  • 1 copy in tags/Safari-604.1.31.3

Tag Safari-604.1.31.3.

12:22 PM Changeset in webkit [219569] by commit-queue@webkit.org
  • 5 edits in trunk/Source

Add video fullscreen transition logging.
https://bugs.webkit.org/show_bug.cgi?id=174474

Patch by Jeremy Jones <jeremyj@apple.com> on 2017-07-17
Reviewed by Jer Noble.

Source/WebCore:

No new tests, because there is no functional change.

This change just adds logging.

  • html/HTMLVideoElement.cpp:

(WebCore::HTMLVideoElement::webkitEnterFullscreen):
(WebCore::HTMLVideoElement::webkitExitFullscreen):
(WebCore::HTMLVideoElement::webkitSetPresentationMode):

Source/WebKit:

No functional change. Just adds logging.

  • Platform/Logging.h:
  • WebProcess/cocoa/WebVideoFullscreenManager.mm:

(WebKit::WebVideoFullscreenManager::enterVideoFullscreenForVideoElement):
(WebKit::WebVideoFullscreenManager::exitVideoFullscreenForVideoElement):
(WebKit::WebVideoFullscreenManager::exitVideoFullscreenToModeWithoutAnimation):
(WebKit::WebVideoFullscreenManager::didSetupFullscreen):
(WebKit::WebVideoFullscreenManager::didEnterFullscreen):
(WebKit::WebVideoFullscreenManager::didExitFullscreen):
(WebKit::WebVideoFullscreenManager::didCleanupFullscreen):
(WebKit::WebVideoFullscreenManager::setVideoLayerFrameFenced):

12:14 PM Changeset in webkit [219568] by Chris Dumez
  • 4 edits
    2 adds in trunk

click event does not dispatch to parent when child target stops hit testing after mousedown
https://bugs.webkit.org/show_bug.cgi?id=174564
<rdar://problem/33340234>

Reviewed by Simon Fraser.

Source/WebCore:

As per [1], if the mouse down node and the mouse release node differ, then we are supposed to
fire the click event at their common ancestor, if such node exists. This patch implements this
logic. This also aligns our behavior with Blink.

[1] https://w3c.github.io/uievents/#events-mouseevent-event-order

Test: fast/events/mouse-click-different-mouseDown-mouseUp-nodes.html

  • page/EventHandler.cpp:

(WebCore::targetNodeForClickEvent):

LayoutTests:

Add layout test coverage.

  • fast/events/mouse-click-different-mouseDown-mouseUp-nodes-expected.txt: Added.
  • fast/events/mouse-click-different-mouseDown-mouseUp-nodes.html: Added.
12:10 PM Changeset in webkit [219567] by beidson@apple.com
  • 8 edits
    2 adds in trunk

WKHTTPCookieStore observing only works on the default cookie store.
<rdar://problem/33330724> and https://bugs.webkit.org/show_bug.cgi?id=174580

Reviewed by Sam Weinig.

Source/WebCore:

Covered by new API tests.

startObservingCookieChanges and stopObservingCookieChanges are passed a NetworkStorageSession to observe.
On Mac/iOS, the passed-in storage session was ignored and the shared cookie storage was assumed.
Let's fix that.

Also, since using NSNotification based observing only works reliably for the shared cookie storage,
switch to direct CFHTTPCookieStorageRef observing.

  • WebCore.xcodeproj/project.pbxproj:
  • platform/network/NetworkStorageSession.h:
  • platform/network/cocoa/CookieStorageObserver.h: Added.
  • platform/network/cocoa/CookieStorageObserver.mm: Added.

(WebCore::cookiesChanged):
(WebCore::CookieStorageObserver::create):
(WebCore::CookieStorageObserver::CookieStorageObserver):
(WebCore::CookieStorageObserver::~CookieStorageObserver):
(WebCore::CookieStorageObserver::startObserving):
(WebCore::CookieStorageObserver::stopObserving):
(WebCore::CookieStorageObserver::cookiesDidChange):

  • platform/network/cocoa/NetworkStorageSessionCocoa.mm:

(WebCore::NetworkStorageSession::cookieStorageObserver):

  • platform/network/mac/CookieStorageMac.mm:

(WebCore::startObservingCookieChanges):
(WebCore::stopObservingCookieChanges):
(-[WebCookieStorageObjCAdapter notifyCookiesChangedOnMainThread]): Deleted.
(-[WebCookieStorageObjCAdapter cookiesChangedNotificationHandler:]): Deleted.
(-[WebCookieStorageObjCAdapter startListeningForCookieChangeNotificationsWithCallback:]): Deleted.
(-[WebCookieStorageObjCAdapter stopListeningForCookieChangeNotifications]): Deleted.

  • platform/spi/cf/CFNetworkSPI.h:

Tools:

  • TestWebKitAPI/Tests/WebKit2Cocoa/WKHTTPCookieStore.mm:

(runTestWithWebsiteDataStore): Refactor the cookie observing test out so it can be

called for the default store, a non-persistent store, and a custom store.

(TEST):

11:30 AM Changeset in webkit [219566] by jmarcell@apple.com
  • 11 edits
    2 adds in branches/safari-604.1.31-branch

Cherry-pick r219545. rdar://problem/33221110

11:18 AM Changeset in webkit [219565] by commit-queue@webkit.org
  • 4 edits
    1 move in trunk/Source/WebCore

[WebIDL] Rename JSCSSValueCustom.cpp to JSDeprecatedCSSOMValueCustom.cpp to match the underlying class
https://bugs.webkit.org/show_bug.cgi?id=174550

Patch by Sam Weinig <sam@webkit.org> on 2017-07-17
Reviewed by Brady Eidson.

  • CMakeLists.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/JSBindingsAllInOne.cpp:
  • bindings/js/JSCSSValueCustom.cpp: Removed.
  • bindings/js/JSDeprecatedCSSOMValueCustom.cpp: Renamed from bindings/js/JSCSSValueCustom.cpp.

Rename file and update references.

11:10 AM Changeset in webkit [219564] by graouts@webkit.org
  • 5 edits in trunk

REGRESSION: order of AirPlay and volume controls is inconsistent between <audio> and <video>
https://bugs.webkit.org/show_bug.cgi?id=174581
<rdar://problem/33297519>

Reviewed by Sam Weinig.

Source/WebCore:

We had an inconsistency between <audio> and <video> controls for the relative order of the
volume and AirPlay buttons. The <video> layout was correct (volume first and AirPlay after)
and the <audio> layout now is the same.

  • Modules/modern-media-controls/controls/inline-media-controls.js:

(InlineMediaControls.prototype._rightContainerButtons):

LayoutTests:

Update the audio controls layout test to match the new expectations.

  • media/modern-media-controls/audio/audio-controls-buttons-expected.txt:
  • media/modern-media-controls/audio/audio-controls-buttons.html:
11:01 AM WebKitGTK/DependenciesPolicy edited by clopez@igalia.com
(diff)
10:56 AM Changeset in webkit [219563] by weinig@apple.com
  • 2 edits in trunk/Tools

[Scripts] Fix missing variable warnings from svn-create-patch when there are untracked files
https://bugs.webkit.org/show_bug.cgi?id=174575

Reviewed by Brady Eidson.

  • Scripts/svn-create-patch:

(findModificationType):
Add support for more status codes. C -> conflicted, ? -> untracked, ! -> missing. Give a
default value of "unknown".

(generateFileList):
Handle all the new modification types. Abort on conflicted, missing, and unknown. Log
for untracked, which matches our old behavior.

10:14 AM WebKitGTK/2.16.x edited by clopez@igalia.com
(diff)
9:38 AM Changeset in webkit [219562] by sbarati@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Remove custom defined RELEASE_ASSERT in DFGObjectAllocationSinkingPhase
https://bugs.webkit.org/show_bug.cgi?id=174584

Rubber stamped by Keith Miller.

I used it to diagnose a bug. The bug is now fixed. This custom
RELEASE_ASSERT is no longer needed.

  • dfg/DFGObjectAllocationSinkingPhase.cpp:
8:30 AM Changeset in webkit [219561] by Michael Catanzaro
  • 2 edits in trunk/Source/JavaScriptCore

-Wformat-truncation warning in ConfigFile.cpp
https://bugs.webkit.org/show_bug.cgi?id=174506

Reviewed by Darin Adler.

Check if the JSC config filename would be truncated due to exceeding max path length. If so,
return ParseError.

  • runtime/ConfigFile.cpp:

(JSC::ConfigFile::parse):

8:16 AM Changeset in webkit [219560] by Konstantin Tokarev
  • 14 edits in trunk

[CMake] Create targets before WEBKIT_INCLUDE_CONFIG_FILES_IF_EXISTS is called
https://bugs.webkit.org/show_bug.cgi?id=174557

Reviewed by Michael Catanzaro.

.:

  • Source/cmake/WebKitMacros.cmake:

Source/JavaScriptCore:

  • CMakeLists.txt:

Source/WebCore:

No new tests needed.

  • CMakeLists.txt:

Source/WebCore/PAL:

No new tests needed.

  • pal/CMakeLists.txt:

Source/WebKit:

  • CMakeLists.txt:

Source/WebKitLegacy:

  • CMakeLists.txt:

Source/WTF:

  • wtf/CMakeLists.txt:
7:56 AM Changeset in webkit [219559] by Michael Catanzaro
  • 5 edits
    1 delete in trunk/Source/WebCore

Unreviewed, rolling out r219556.

Broke build without WebCrypto

Reverted changeset:

"[CMake] Clean up Web Crypto build targets"
https://bugs.webkit.org/show_bug.cgi?id=174253
http://trac.webkit.org/changeset/219556

5:55 AM Changeset in webkit [219558] by graouts@webkit.org
  • 5 edits
    2 adds in trunk

Media controls draw behind captions
https://bugs.webkit.org/show_bug.cgi?id=174579
<rdar://problem/33295427>

Reviewed by Dean Jackson.

Source/WebCore:

Ensure the captions container is added as a previous sibling to the controls container.

Test: media/modern-media-controls/media-controls/media-controls-display-above-captions.html

  • Modules/modern-media-controls/media/media-controller.js:

(MediaController):

LayoutTests:

Add a new test that checks the order in which order the captions and controls containers appear
under the media shadow root.

  • media/modern-media-controls/media-controls/media-controls-display-above-captions-expected.txt: Added.
  • media/modern-media-controls/media-controls/media-controls-display-above-captions.html: Added.
  • platform/ios-simulator/TestExpectations:
  • platform/mac/TestExpectations:
5:10 AM Changeset in webkit [219557] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

Add some missing build dependencies on Fedora
https://bugs.webkit.org/show_bug.cgi?id=174578

Unreviewed dependency update.

Patch by Charlie Turner <cturner@igalia.com> on 2017-07-17

  • gtk/install-dependencies:
1:45 AM Changeset in webkit [219556] by zandobersek@gmail.com
  • 5 edits
    1 add in trunk/Source/WebCore

[CMake] Clean up Web Crypto build targets
https://bugs.webkit.org/show_bug.cgi?id=174253

Reviewed by Michael Catanzaro.

Gather the common WebCrypto source files in CMakeLists.txt, including them
in the build unconditionally and instead relying on ENABLE_SUBTLE_CRYPTO
build guards to exclude the code from compilation if the feature is disabled.

PlatformGTK.cmake, PlatformMac.cmake and PlatformWPE.cmake can then remove
duplicated build targets. PlatformMac.cmake still lists all the Mac-specific
Web Crypto build targets.

PlatformGTK.cmake and PlatformWPE.cmake now include GCrypt.cmake if the build
was configured to enable the use of libgcrypt. The new CMake file adds the
libgcrypt-specific Web Crypto build targets to the build if the feature was
enabled, and also sets up libgcrypt include directiories and libraries.

No new tests -- no change in behavior.

  • CMakeLists.txt:
  • PlatformGTK.cmake:
  • PlatformMac.cmake:
  • PlatformWPE.cmake:
  • platform/GCrypt.cmake: Added.
12:03 AM Changeset in webkit [219555] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit

Web Automation: link and partial link queries don't work if the link contains formatting tags
https://bugs.webkit.org/show_bug.cgi?id=174498

Reviewed by Brian Burg.

So, for example, if we find links with text "Foo" and there's a link like <a href=""><bA>Foo</b></a> we fail
with no such element error. This causes test test_Link_With_Formatting_Tags to fail.

  • UIProcess/Automation/atoms/FindNodes.js:

(switch): Use descendant-or-self::text() instead of just text() in the links xpath expressions.

12:01 AM Changeset in webkit [219554] by Carlos Garcia Campos
  • 3 edits in trunk/Source/WebKit

Web Automation: FindNodes should throw an error in case of invalid strategy
https://bugs.webkit.org/show_bug.cgi?id=174497

Reviewed by Brian Burg.

We are currently returning null or empty list. According to the spec in 12.2 Find Element and 12.3 Find
Elements, step 4: "If location strategy is not present as a keyword in the table of location strategies, return
error with error code invalid argument.".
https://www.w3.org/TR/webdriver/#find-element.

This is causing test test_should_throw_an_error_if_user_passes_in_invalid_by_when_find_elements to fail.

  • UIProcess/Automation/atoms/FindNodes.js:

(switch): Throw an error in case of unknown strategy.

  • WebProcess/Automation/WebAutomationSessionProxy.cpp:

(WebKit::WebAutomationSessionProxy::evaluateJavaScriptFunction): Handle InvalidParameter exceptions.

Jul 16, 2017:

11:58 PM Changeset in webkit [219553] by Michael Catanzaro
  • 3 edits in trunk/Source/WebCore

-Wreorder warning caused by GraphicsContext3D cleanup
https://bugs.webkit.org/show_bug.cgi?id=174511

Reviewed by Carlos Garcia Campos.

  • platform/graphics/cairo/GraphicsContext3DCairo.cpp:

(WebCore::GraphicsContext3D::GraphicsContext3D):

  • platform/graphics/opengl/GraphicsContext3DOpenGLES.cpp:

(WebCore::GraphicsContext3D::GraphicsContext3D):

10:29 PM Changeset in webkit [219552] by commit-queue@webkit.org
  • 6 edits
    4 adds in trunk

Dismissing the captions panel using the mouse is too eager to remove the captions panel and media controls
https://bugs.webkit.org/show_bug.cgi?id=174571
<rdar://problem/33294968>

Patch by Antoine Quint <Antoine Quint> on 2017-07-16
Reviewed by Eric Carlson.

Source/WebCore:

We did several things wrong when dismissing the tracks panel:

  • we did not check whether we were hosted in a shadow root when figuring if a click was on the tracks panel
  • we did not check whether we clicked over the media when dismissing the tracks panel
  • we did not check whether auto-hide was on before fading the media controls out when we clicked outside the media controls bounds

We now correctly account for all of those cases and implement the following behavior when clickng as the tracks
panel is presented:

  • dismiss the panel if the click is outside of the panel
  • dismiss the panel and the media controls if the click is outside the video and the media controls have auto-hide on (ie. media is playing)
  • dismiss the panel and the media controls after the track selection animation is finished if a track is selected

Tests: media/modern-media-controls/tracks-panel/tracks-panel-up-click-outside-media-does-not-dimiss-media-controls-when-media-is-paused.html

media/modern-media-controls/tracks-panel/tracks-panel-up-click-over-media-does-not-dimiss-media-controls-when-media-is-playing.html

  • Modules/modern-media-controls/controls/media-controls.js:

(MediaControls.prototype.hideTracksPanel): Only hide the media controls if we clicked outside of the media
controls bounds and if we have auto-hide on when idle (ie. the media is playing).
(MediaControls.prototype.isPointInControls): Add an option to specify whether the container should be
considered when checking if a point is contained within the media controls bounds.

  • Modules/modern-media-controls/controls/tracks-panel.js:

(TracksPanel.prototype._handleMousedown):
(TracksPanel.prototype._isPointInTracksPanel): Correctly check whether the element that we started pressing
on is contained within the tracks panel, accounting for the case where we are presented within a shadow root
(ie. always when runing inside a Web page).

LayoutTests:

Adding a method to show the tracks panel for a given shadow root and adding new tests to check the correct
behavior when dismissing the tracks panel when clicking over the media element or outside the media element
when it's paused.

  • media/modern-media-controls/resources/media-controls-utils.js:

(pressOnElement):
(pressAtPoint):
(showTracksPanel):
(finishMediaControlsTest): Deleted.

  • media/modern-media-controls/tracks-panel/tracks-panel-up-click-outside-media-does-not-dimiss-media-controls-when-media-is-paused-expected.txt: Added.
  • media/modern-media-controls/tracks-panel/tracks-panel-up-click-outside-media-does-not-dimiss-media-controls-when-media-is-paused.html: Added.
  • media/modern-media-controls/tracks-panel/tracks-panel-up-click-over-media-does-not-dimiss-media-controls-when-media-is-playing-expected.txt: Added.
  • media/modern-media-controls/tracks-panel/tracks-panel-up-click-over-media-does-not-dimiss-media-controls-when-media-is-playing.html: Added.
  • platform/mac/TestExpectations:
7:10 PM Changeset in webkit [219551] by commit-queue@webkit.org
  • 6 edits
    2 adds in trunk

DisallowUserAgentShadowContent moves out of non-UA shadow roots
https://bugs.webkit.org/show_bug.cgi?id=165647

Patch by Ali Juma <ajuma@chromium.org> on 2017-07-16
Reviewed by Ryosuke Niwa.

Source/WebCore:

Make rect-based hit-testing include nodes in non-UA shadow trees when the
HitTestRequest has type DisallowUserAgentShadowContent.

Test: fast/dom/nodesFromRect/nodesFromRect-shadow.html

  • rendering/HitTestResult.cpp:

(WebCore::HitTestResult::addNodeToRectBasedTestResult):

  • testing/Internals.cpp:

(WebCore::Internals::nodesFromRect):

  • testing/Internals.h:

LayoutTests:

  • fast/dom/nodesFromRect/nodesFromRect-shadow-expected.txt: Added.
  • fast/dom/nodesFromRect/nodesFromRect-shadow.html: Added.
  • fast/dom/nodesFromRect/resources/nodesFromRect.js:

(check):
(checkShadowContent):
(nodesFromRectAsString):

6:43 PM Changeset in webkit [219550] by beidson@apple.com
  • 5 edits in trunk

Crash when a WKHTTPCookieStore outlives its owning WKWebsiteDataStore.
<rdar://problem/33341730> and https://bugs.webkit.org/show_bug.cgi?id=174574

Reviewed by Tim Horton.

Source/WebKit:

Instead of holding a weak reference to its owning API::WebsiteDataStore,
API::HTTPCookieStore can hold a strong reference to the owner's implementation
WebKit::WebsiteDataStore.

  • UIProcess/API/APIHTTPCookieStore.cpp:

(API::HTTPCookieStore::HTTPCookieStore):
(API::HTTPCookieStore::cookies):
(API::HTTPCookieStore::setCookie):
(API::HTTPCookieStore::deleteCookie):
(API::HTTPCookieStore::registerObserver):
(API::HTTPCookieStore::unregisterObserver):
(API::HTTPCookieStore::cookieManagerDestroyed):
(API::HTTPCookieStore::registerForNewProcessPoolNotifications):

  • UIProcess/API/APIHTTPCookieStore.h:

Tools:

  • TestWebKitAPI/Tests/WebKit2Cocoa/WKHTTPCookieStore.mm:

(-[CookieNavigationDelegate webView:didFinishNavigation:]):
(TEST):

3:23 PM Changeset in webkit [219549] by commit-queue@webkit.org
  • 4 edits
    2 adds in trunk

Clicking edges of media control buttons changes visual state of button (pressed) but doesn't execute action
https://bugs.webkit.org/show_bug.cgi?id=174565
<rdar://problem/33294833>

Patch by Antoine Quint <Antoine Quint> on 2017-07-16
Reviewed by Dean Jackson.

Source/WebCore:

WebCore doesn't dispatch a "click" event to a parent element when a child that was the original target when
the "mousedown" occured is no longer hit-testing at the location where the mouse pointer is at when the "mouseup"
occurs (see webkit.org/b/174564). Since button icons, which are a <picture> element that is a child of the
<button> element for media controls buttons, shrink to 89% of their size when the ":active" pseudo-class matches,
clicking on the edges of the media controls buttons would not trigger the expected action.

Test: media/modern-media-controls/button/button-click-on-edges.html

  • Modules/modern-media-controls/controls/button.css:

(button > picture):

LayoutTests:

Add a new test where we click on the edge of a button and check that we trigger the Button's
UI delegate. This test fails prior to this patch.

  • media/modern-media-controls/button/button-click-on-edges-expected.txt: Added.
  • media/modern-media-controls/button/button-click-on-edges.html: Added.
  • platform/ios-simulator/TestExpectations:
2:36 PM Changeset in webkit [219548] by commit-queue@webkit.org
  • 11 edits in trunk/Source/WebCore

Make the decision for asynchronously decoding an image be in one place
https://bugs.webkit.org/show_bug.cgi?id=174479

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2017-07-16
Reviewed by Tim Horton.

Move all the logic of whether a large image should be asynchronously decoded
or not be in one place: RenderBoxModelObject::decodingModeForImageDraw().

  • loader/cache/CachedImage.cpp:

(WebCore::CachedImage::addPendingImageDrawingClient): Fixing unrelated
spelling error.

  • platform/RuntimeApplicationChecks.h:
  • platform/cocoa/RuntimeApplicationChecksCocoa.mm:

(WebCore::IOSApplication::isIBooks):
(WebCore::IOSApplication::isIBooksStorytime):

  • platform/graphics/BitmapImage.cpp:

(WebCore::BitmapImage::updateFromSettings): Remove reading the setting
largeImageAsyncDecodingEnabled from this function because it will be read
by RenderBoxModelObject::decodingModeForImageDraw().
(WebCore::BitmapImage::dataChanged):
(WebCore::BitmapImage::draw):
(WebCore::BitmapImage::shouldAnimate):
(WebCore::BitmapImage::canAnimate):
(WebCore::BitmapImage::canUseAsyncDecodingForLargeImages):
(WebCore::BitmapImage::shouldUseAsyncDecodingForAnimatedImages):
(WebCore::BitmapImage::canDestroyDecodedData):
(WebCore::BitmapImage::shouldUseAsyncDecodingForLargeImages): Deleted.

  • platform/graphics/BitmapImage.h:
  • platform/graphics/ImageSource.cpp:

(WebCore::ImageSource::canUseAsyncDecoding): It is okay to keep the
decoded frame if canUseAsyncDecodingForLargeImages() is true by the setting
largeImageAsyncDecodingEnabled is false.
(WebCore::ImageSource::shouldUseAsyncDecoding): Deleted.

  • platform/graphics/ImageSource.h:
  • rendering/RenderBoxModelObject.cpp:

(WebCore::RenderBoxModelObject::decodingModeForImageDraw): The plan is to
add a new Internal settings to force asynchronous image decoding regardless
of the image size and the settings.
(WebCore::RenderBoxModelObject::paintFillLayerExtended):

  • rendering/RenderBoxModelObject.h:
  • rendering/RenderImage.cpp:

(WebCore::RenderImage::paintIntoRect):

7:28 AM Changeset in webkit [219547] by Michael Catanzaro
  • 7 edits in trunk

[CMake] Raise minimum CMake requirement
https://bugs.webkit.org/show_bug.cgi?id=174545

Reviewed by Konstantin Tokarev.

.:

  • CMakeLists.txt:
  • Source/cmake/OptionsCommon.cmake:
  • Source/cmake/OptionsGTK.cmake:
  • Source/cmake/OptionsJSCOnly.cmake:

Source/WebCore:

  • WebCoreMacros.cmake:
5:51 AM Changeset in webkit [219546] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

[GTK] Sort inspector GResource manifest to ensure reproducible builds
https://bugs.webkit.org/show_bug.cgi?id=174540

Patch by Bernhard M. Wiedemann <bwiedemann@suse.de> on 2017-07-16
Reviewed by Michael Catanzaro.

  • gtk/generate-inspector-gresource-manifest.py:

(get_filenames): sort list of input files

Jul 15, 2017:

11:57 PM Changeset in webkit [219545] by beidson@apple.com
  • 11 edits
    2 adds in trunk

Make sure all CFHTTPCookieStorageRefs we create are scheduled.
<rdar://problem/33221110> and https://bugs.webkit.org/show_bug.cgi?id=174513

Reviewed by Tim Horton.

Source/WebCore:

  • platform/spi/cf/CFNetworkSPI.h:

Source/WebKit:

Whenever we create a CFHTTPCookieStorage from identifying data it is unscheduled.
We need to schedule it on the appropriate RunLoop.

This patch also cleans up the creation of the identifying data itself.

  • NetworkProcess/mac/RemoteNetworkingContext.mm:

(WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession):

  • Shared/cf/CookieStorageUtilsCF.h: Added.
  • Shared/cf/CookieStorageUtilsCF.mm: Added.

(WebKit::cookieStorageFromIdentifyingData):
(WebKit::identifyingDataFromCookieStorage):

  • Shared/mac/ChildProcessMac.mm:

(WebKit::ChildProcess::setSharedHTTPCookieStorage):

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitializeWebProcess):
(WebKit::WebProcessPool::platformInitializeNetworkProcess):

  • UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:

(WebKit::WebsiteDataStore::parameters):

  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm:

(WebKit::WebFrameNetworkingContext::ensureWebsiteDataStoreSession):

Tools:

  • TestWebKitAPI/Tests/WebKit2Cocoa/WKHTTPCookieStore.mm:

(TEST): Make this test more reliable by clearing everything beforehand.

11:08 PM Changeset in webkit [219544] by mmaxfield@apple.com
  • 18 edits in trunk/Source/WebCore

Rename RenderStyle::fontSize() to RenderStyle::computedFontPixelSize()
https://bugs.webkit.org/show_bug.cgi?id=174509

Reviewed by Simon Fraser.

We have three font size functions:

  • computedFontSize(): returns a float
  • specifiedFontSize(): also returns a float
  • fontSize(): returns the rounded computedFontSize()

FontDescription uses the convention of labelling rounded values as "pixel",
so a better name font fontSize() is computedFontPixelSize().

Also, because font sizes can never be negative, switch the type from an int
to an unsigned.

No new tests because there is no behavior change.

  • accessibility/atk/WebKitAccessibleInterfaceText.cpp:

(getAttributeSetForAccessibilityObject):

  • css/StyleResolver.cpp:

(WebCore::StyleResolver::adjustRenderStyle):

  • platform/graphics/FontDescription.h:

(WebCore::FontDescription::computedPixelSize):
(WebCore::FontDescription::fontSelectionRequest):

  • rendering/RenderBlock.cpp:

(WebCore::styleForFirstLetter):

  • rendering/RenderRubyRun.cpp:

(WebCore::shouldOverhang):
(WebCore::RenderRubyRun::getOverhang):

  • rendering/RenderRubyText.cpp:

(WebCore::RenderRubyText::adjustInlineDirectionLineBounds):

  • rendering/RenderThemeGtk.cpp:

(WebCore::adjustSearchFieldIconStyle):
(WebCore::paintSearchFieldIcon):

  • rendering/RenderThemeIOS.mm:

(WebCore::RenderThemeIOS::adjustCheckboxStyle):
(WebCore::RenderThemeIOS::adjustRadioStyle):

  • rendering/RenderThemeMac.mm:

(WebCore::RenderThemeMac::controlSizeForFont):
(WebCore::RenderThemeMac::controlSizeForSystemFont):
(WebCore::RenderThemeMac::paintMenuListButtonDecorations):
(WebCore::RenderThemeMac::popupInternalPaddingBox):
(WebCore::RenderThemeMac::adjustMenuListButtonStyle):

  • rendering/RenderThemeWin.cpp:

(WebCore::RenderThemeWin::adjustSearchFieldCancelButtonStyle):
(WebCore::RenderThemeWin::adjustSearchFieldResultsDecorationPartStyle):
(WebCore::RenderThemeWin::adjustSearchFieldResultsButtonStyle):

  • rendering/TextDecorationPainter.cpp:

(WebCore::TextDecorationPainter::paintTextDecoration):

  • rendering/mathml/RenderMathMLRow.cpp:

(WebCore::RenderMathMLRow::computeLineVerticalStretch):

  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::computedFontPixelSize):
(WebCore::RenderStyle::computedLineHeight):
(WebCore::RenderStyle::fontSize): Deleted.

  • rendering/style/RenderStyle.h:
  • style/InlineTextBoxStyle.cpp:

(WebCore::visualOverflowForDecorations):

  • style/StyleTreeResolver.cpp:

(WebCore::Style::TreeResolver::resolveElement):

  • svg/SVGLengthContext.cpp:

(WebCore::SVGLengthContext::convertValueFromUserUnitsToEMS):
(WebCore::SVGLengthContext::convertValueFromEMSToUserUnits):

10:52 PM Changeset in webkit [219543] by mmaxfield@apple.com
  • 4 edits
    2 adds in trunk

line-height: <number> gets visually applied twice when text autosizing is in effect
https://bugs.webkit.org/show_bug.cgi?id=174536
<rdar://problem/33338259>

Reviewed by Simon Fraser.

Source/WebCore:

StyleBuilderConverter::convertLineHeight() converts line-height: <number> into a
"percentage" length. Then, when layout needs to know what the computed value of
line-height is, RenderStyle::computedLineHeight() multiplies this percentage by
the computed font size.

With autosizing, the computed font size already incorporates the autosizing
multiplier, so we shouldn't also incorporate this multiplier into the percentage
value itself. getComputedStyle()'s lineHeightFromStyle() was compensating for
this double application by multiplying the percentage by the font-size's specified
value instead of its computed value, which is incorrect.

Test: fast/text-autosizing/line-height-number.html

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::lineHeightFromStyle):

  • css/StyleBuilderConverter.h:

(WebCore::StyleBuilderConverter::convertLineHeight):

LayoutTests:

  • fast/text-autosizing/line-height-number-expected.html: Added.
  • fast/text-autosizing/line-height-number.html: Added.
9:47 PM Changeset in webkit [219542] by ddkilzer@apple.com
  • 2 edits in trunk/Tools

Make it possible to extend check-webkit-style with Apple-internal checkers
<https://webkit.org/b/174464>
<rdar://problem/25564402>

Reviewed by Darin Adler.

  • Scripts/webkitpy/style/checker.py: Import apple_additions.

(_all_categories): Add categories from apple_additions() if it
exists.
(CheckerDispatcher._create_checker): Create python checker
from apple_additions() if it exists.

9:01 PM Changeset in webkit [219541] by Wenson Hsieh
  • 9 edits
    2 adds in trunk

[iOS WK2] Presenting an action sheet on an image map prevents selection UI from updating
https://bugs.webkit.org/show_bug.cgi?id=174539
<rdar://problem/33307395>

Reviewed by Darin Adler.

Source/WebCore:

Currently, if TextIndicator fails to take a snapshot in TextIndicator::createWithRange, we will enter an
inconsistent state in the web process where Editor will continue to ignore selection changes until the next time
Editor::setIgnoreSelectionChanges(false) is called. This causes us to indefinitely defer EditorState updates to
the UI process, which leads to selection UI appearing unresponsive.

To fix this, we introduce a new TemporarySelectionChange object to simplify selection changes and/or
EditorState-update-ignoring behaviors within the scope of a single function. The constructor applies these
temporary changes, and the destructor reverts them as needed to their prior values.

This patch only adopts TemporarySelectionChange in order to fix this bug, but future patches will replace the
remaining places where we temporarily change selection and/or ignore selection with this helper.

Test: ActionSheetTests.ImageMapDoesNotDestroySelection.

  • editing/Editor.cpp:

(WebCore::TemporarySelectionChange::TemporarySelectionChange):
(WebCore::TemporarySelectionChange::~TemporarySelectionChange):

  • editing/Editor.h:
  • editing/FrameSelection.h:

(WebCore::FrameSelection::isUpdateAppearanceEnabled):

  • page/TextIndicator.cpp:

(WebCore::TextIndicator::createWithRange):

Source/WebKit:

Small tweak to avoid presenting at the element rect or text rect if the interaction information failed to
capture valid bounds for the element. We instead fall back to presenting at the touch location. This addresses
problems when presenting the action sheet popover on image maps on iPad, where GetPositionInformation fails to
capture correct data about for the <area>.

  • UIProcess/ios/WKActionSheetAssistant.mm:

(presentationStyleForView):

Tools:

Adds a new unit test suite to cover action sheet popover presentation.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit2Cocoa/image-map.html: Added.
  • TestWebKitAPI/Tests/ios/ActionSheetTests.mm: Added.

(-[ActionSheetObserver waitForActionSheetAfterBlock:]):

Runs the given block and waits until the UI process has indicated that it will present an action sheet.

(-[ActionSheetObserver _webView:actionsForElement:defaultActions:]):
(TestWebKitAPI::IPadUserInterfaceSwizzler::IPadUserInterfaceSwizzler):

Helper class to alter the behavior of [[UIDevice currentDevice] userInterfaceIdiom] for testing.

(TestWebKitAPI::IPadUserInterfaceSwizzler::padUserInterfaceIdiom):
(TestWebKitAPI::TEST):

8:45 PM Changeset in webkit [219540] by weinig@apple.com
  • 2 edits in trunk/Tools

[Scripts] Make svn-create-patch work better when called in sub directories
https://bugs.webkit.org/show_bug.cgi?id=174551

Reviewed by Darin Adler.

  • Fixes manufacturePatchForAdditionWithHistory to use the correct path by ensuring that the prefix is applied as is done in generateDiff.
  • Silence output of explanatory lines from svn stat (" > move to ...") that show up in STDERR when running svn-create-patch.
  • Add verbose logging that I found useful while debugging this issue.
  • Scripts/svn-create-patch:

(findBaseUrl):
(findMimeType):
(findSourceFileAndRevision):
(generateDiff):
(generateFileList):
(manufacturePatchForAdditionWithHistory):

3:03 PM Changeset in webkit [219539] by mmaxfield@apple.com
  • 4 edits in trunk/Source/WebCore

Clean up line-height and minimumFontSize functions
https://bugs.webkit.org/show_bug.cgi?id=174535

Reviewed by Simon Fraser.

No behavior change.

No new tests because there is no behavior change.

  • css/StyleBuilderConverter.h:

(WebCore::StyleBuilderConverter::convertLineHeight):

  • css/StyleResolver.cpp:

(WebCore::StyleResolver::styleForKeyframe):
(WebCore::StyleResolver::adjustRenderStyle):
(WebCore::StyleResolver::pseudoStyleRulesForElement):
(WebCore::StyleResolver::applyMatchedProperties):
(WebCore::StyleResolver::cascadedPropertiesForRollback):
(WebCore::StyleResolver::applyProperty):
(WebCore::StyleResolver::checkForZoomChange):
(WebCore::StyleResolver::createFilterOperations):
(WebCore::StyleResolver::CascadedProperties::set):
(WebCore::StyleResolver::applyCascadedProperties):

  • style/StyleFontSizeFunctions.cpp:

(WebCore::Style::computedFontSizeFromSpecifiedSize):
(WebCore::Style::computedFontSizeFromSpecifiedSizeForSVGInlineText):
(): Deleted.

2:47 PM Changeset in webkit [219538] by Jonathan Bedard
  • 2 edits in trunk/Tools

Unreviewed build fix after r219537.

  • TestWebKitAPI/Tests/ios/DataInteractionTests.mm:

Jul 14, 2017:

10:41 PM Changeset in webkit [219537] by Jonathan Bedard
  • 22 edits
    1 copy in trunk

Add iOS 11 SPI
https://bugs.webkit.org/show_bug.cgi?id=174430
<rdar://problem/33269288>

Reviewed by Tim Horton.

Source/WebCore:

  • WebCore.xcodeproj/project.pbxproj: Add sqlite3SPI.h header.
  • platform/ios/PlatformPasteboardIOS.mm: Move UIKit SPI to UIKitSPI.h.
  • platform/ios/WebItemProviderPasteboard.mm: Ditto.
  • platform/network/cf/FormDataStreamCFNet.cpp: Explicitly define fnfErr and remove

MacErrors.h header for iOS.

  • platform/spi/cocoa/IOSurfaceSPI.h: IOSurface is no longer SPI in iOS 11.
  • platform/spi/cocoa/PassKitSPI.h: Do not re-define setRequiredShippingContactFields

and setRequiredBillingContactFields in iOS 11.

  • platform/spi/cocoa/QuartzCoreSPI.h: Added QuartzCoreSPI used in iOS 11.
  • platform/spi/ios/UIKitSPI.h: Add drag-and-drop SPI.
  • platform/spi/ios/sqlite3SPI.h: Define required sqlite3 macros.
  • platform/sql/SQLiteFileSystem.cpp: Use sqlite3SPI.h.

Source/WebKit:

  • Platform/spi/ios/UIKitSPI.h: Add drag-and-drop SPI for iOS 11.
  • UIProcess/ios/WKContentViewInteraction.mm: Move UIKit SPI to UIKitSPI.h.

Source/WebKitLegacy:

  • Storage/StorageTracker.cpp: sqlite3_private.h no longer exists in the iOS

Simulator SDK, explicitly define the required macro.

Source/WTF:

  • Configurations/WTF.xcconfig: Exclude MachExceptions.def when building iOS 11 for

the iOS simulator.

Tools:

  • TestWebKitAPI/Tests/ios/DataInteractionTests.mm: Define drag-and-drop API required for testing.
  • TestWebKitAPI/ios/DataInteractionSimulator.h: Ditto.
  • TestWebKitAPI/ios/DataInteractionSimulator.mm: Ditto.
10:23 PM Changeset in webkit [219536] by zandobersek@gmail.com
  • 4 edits in trunk

[GCrypt] Implement CryptoKeyRSA PKCS#8 exports
https://bugs.webkit.org/show_bug.cgi?id=173697

Reviewed by Jiewen Tan.

Source/WebCore:

Implement the PKCS#8 import operation for RSA keys for platforms that use
libgcrypt.

In CryptoKeyRSA::exportPkcs8(), we bail early with an invalid access exception if
this export is not being done for a private key. Otherwise, we start with creating
the RSAPrivateKey ASN.1 structure, writing out '0' under the version element
and then retrieving the modulus, public and private exponent and both primes.
MPI data for those parameters is written out into corresponding elements in the
RSAPrivateKey structure. We then manually compute values of both exponents and
the coefficient parameters, using the private exponent's and both primes' MPI
values. The p and q parameters (i.e. the primes) are switched in libgcrypt,
deviating from the standard practice, so we have to operate with those two
accordingly. We eliminate the optional otherPrimeInfos attribute on the
RSAPrivateKey structure. Support for this attribute will be added later.

We then create the PrivateKeyInfo ASN.1 structure, and write out '0' under the
version element. The id-rsaEncryption object identifier is written out under
the algorithm.algorithm element. In the future, an object identifier that
matches this key's algorithm will have to be written out here (id-RSASSA-PSS or
id-RSAES-OAEP), along with the appropriate parameters structure, but no test in
WebKit or the web-platform-tests suite covers this detail. For now, a null value
is written out under the algorithm.parameters element.

Data for the RSAPrivateKey structure is retrieved and written out under the
privateKey element. The optional attributes element on the PrivateKeyInfo
structure is eliminated.

Data that was encoded through the PrivateKeyInfo structure is then retrieved
and returned from the exportPkcs8() method.

No new tests -- related tests are now passing and are unskipped.

  • crypto/gcrypt/CryptoKeyRSAGCrypt.cpp:

(WebCore::CryptoKeyRSA::exportPkcs8):

LayoutTests:

  • platform/gtk/TestExpectations: Unskip the RSA PKCS#8 export tests
10:20 PM Changeset in webkit [219535] by zandobersek@gmail.com
  • 4 edits in trunk

[GCrypt] Implement CryptoKeyRSA PKCS#8 imports
https://bugs.webkit.org/show_bug.cgi?id=173696

Reviewed by Jiewen Tan.

Source/WebCore:

Implement the PKCS#8 import operation for RSA keys for platforms that use
libgcrypt.

In CryptoKeyRSA::importPkcs8(), the provided key data is decoded against the
'PrivateKeyInfo ASN.1 structure. We then validate the version` element and
check that the privateKeyAlgorithm.algorithm element contains a supported
object identifier. This check is for now mostly superficial, only ensuring
that the object identifier is either id-rsaEncryption, id-RSAES-OAEP or
id-RSASSA-PSS. This has to be further extended to also check the
id-sha{1,256,384,512}WithRSAEncryption identifiers as well as decoding the
privateKeyAlgorithm.parameters element against a specific ASN.1 structure, if
necessary (RSASSA-PSS-params or RSAES-OAEP-params), and cross-checking the
specified digest algorithm with the algorithm that's specified through the main
object identifier or the structure contained in privateKeyAlgorithm.parameters.
This is avoided for now because no test in WebKit or the web-platform-tests
suite covers this detail of the specification.

Data under the privateKey element is decoded against the RSAPrivateKey ASN.1
structure, and the version element of that structure is validated. We then
retrieve data from that structure for the modulus, public exponent, private
exponent, both primes, both exponents and the coefficient parameters, bailing if
any of them is missing. Because libgcrypt switches the use of p and q parameters,
deviating from the standard use, we have to recompute the u parameter (the
coefficient). With that calculated, we're then able to construct the private-key
s-expression, embedding into it all the necessary parameters, and transferring
the ownership of this object to the new CryptoKeyRSA object that's then returned
from the importPkcs8() method.

No new tests -- related tests are now passing and are unskipped.

  • crypto/gcrypt/CryptoKeyRSAGCrypt.cpp:

(WebCore::CryptoKeyRSA::importPkcs8):

LayoutTests:

  • platform/gtk/TestExpectations: Unskip the RSA PKCS#8 import tests

that are now passing.

5:29 PM Changeset in webkit [219534] by Jonathan Bedard
  • 2 edits in trunk/Tools

Failing to install on iPad simulators
https://bugs.webkit.org/show_bug.cgi?id=174532
<rdar://problem/33328347>

Reviewed by Stephanie Lewis.

  • Scripts/webkitpy/xcode/simulated_device.py:

(SimulatedDevice.install_app): Place install command in retry try-except block.

4:13 PM Changeset in webkit [219533] by jeffm@apple.com
  • 5 edits in trunk

Source/WebKit:
-[WKWebProcessBundleParameters setParametersForKeyWithDictionary:] passing wrong parameters to -setParameter:forKey
https://bugs.webkit.org/show_bug.cgi?id=174524

Reviewed by Sam Weinig.

  • WebProcess/InjectedBundle/API/Cocoa/WKWebProcessBundleParameters.mm:

(-[WKWebProcessBundleParameters setParametersForKeyWithDictionary:]):
Pass the dictionary key and value in the correct order.

Tools:
Add test for -[WKProcessPool _setObjectsForBundleParametersWithDictionary:].
https://bugs.webkit.org/show_bug.cgi?id=174524

Reviewed by Sam Weinig.

  • TestWebKitAPI/Tests/WebKit2Cocoa/BundleParameters.mm:

(TEST):
Renamed TestParameter to TestParameter1.
Add test for -[WKProcessPool _setObjectsForBundleParametersWithDictionary:].

  • TestWebKitAPI/Tests/WebKit2Cocoa/BundleParametersPlugIn.mm:

(-[BundleParametersPlugIn webProcessPlugIn:didCreateBrowserContextController:]):
Observe changes for two bundle parameters.

(-[BundleParametersPlugIn dealloc]):
Remove observers for two bundle parameters.

4:03 PM Changeset in webkit [219532] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKitLegacy/win

[Curl] Don't start downloading more than once for same request
https://bugs.webkit.org/show_bug.cgi?id=174172

Patch by Basuke Suzuki <Basuke Suzuki> on 2017-07-14
Reviewed by Alex Christensen.

  • WebDownloadCurl.cpp:

(WebDownload::init):

4:02 PM Changeset in webkit [219531] by Chris Dumez
  • 3 edits
    3 adds in trunk

Possible crash in ~UserGestureIndicator() when on non-main thread
https://bugs.webkit.org/show_bug.cgi?id=174522
<rdar://problem/30283071>

Reviewed by Sam Weinig.

Source/WebCore:

UserGestureIndicator objects may be constructed / destructed in worker thread
(e.g. in DOMTimer::fired()). The UserGestureIndicator constructor / destructor
are supposed to be no-op on non-main threads so that it is safe. However,
we were mistakenly initializing m_previousToken data member in the constructor
on background thread, which meant that we could crash later on in the
UserGestureIndicator destructor when destroying m_previousToken.

Test: fast/workers/worker-user-gesture.html

  • dom/UserGestureIndicator.cpp:

(WebCore::currentToken):
(WebCore::UserGestureIndicator::UserGestureIndicator):

LayoutTests:

Add layout test coverage.

  • fast/workers/worker-user-gesture-expected.txt: Added.
  • fast/workers/worker-user-gesture.html: Added.
  • fast/workers/worker-user-gesture.js: Added.

(setInterval):

3:52 PM Changeset in webkit [219530] by Brent Fulgham
  • 3 edits in trunk/Source/WebKit

Monitor directory for new statistics files after a delete operation
https://bugs.webkit.org/show_bug.cgi?id=174521
<rdar://problem/33322189>

Reviewed by Chris Dumez.

Create a FileMonitor to watch the data directory when the statistics file is
deleted by an external process. If it sees the file get created externally, merge
those data into the in-memory store.

  • UIProcess/Storage/ResourceLoadStatisticsPersistentStorage.cpp:

(WebKit::ResourceLoadStatisticsPersistentStorage::startMonitoringDisk): Added.
(WebKit::ResourceLoadStatisticsPersistentStorage::monitorDirectoryForNewStatistics):

  • UIProcess/Storage/ResourceLoadStatisticsPersistentStorage.h:
3:51 PM Changeset in webkit [219529] by Matt Lewis
  • 9 edits
    2 deletes in trunk/Source

Unreviewed, rolling out r219516.

This caused an API failure on macOS.

Reverted changeset:

"Make sure all CFHTTPCookieStorageRefs we create are
scheduled."
https://bugs.webkit.org/show_bug.cgi?id=174513
http://trac.webkit.org/changeset/219516

3:27 PM Changeset in webkit [219528] by dbates@webkit.org
  • 4 edits
    3 adds in trunk

REGRESSION (r219013): Compute source frame info for frameless document
https://bugs.webkit.org/show_bug.cgi?id=174385
<rdar://problem/33217736>

Reviewed by Brady Eidson.

Source/WebKit:

Fixes an issue where we would crash in WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction()
when computing the frame info for a now-frameless document. One way this can happen is when the frame
that contains the document that initiated the navigation is removed from the page.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::decidePolicyForNavigationAction): Check that we have a valid page ID before
looking up the WebPage object corresponding to it.

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction): Compute a FrameInfoData
object from the source document directly as opposed to using WebFrame::info() as the latter requires
that we have a valid WebCore frame and the source document may not have a frame.

LayoutTests:

  • http/tests/navigation/resources/window-open-redirect-and-remove-opener.html: Added.
  • http/tests/navigation/window-open-redirect-and-remove-opener-expected.txt: Added.
  • http/tests/navigation/window-open-redirect-and-remove-opener.html: Added.
3:25 PM Changeset in webkit [219527] by Matt Lewis
  • 2 edits in trunk/LayoutTests

Fixed expectations after Mac expectation change.
https://trac.webkit.org/changeset/219507/webkit

Unreviewed test gardening.

  • platform/wk2/TestExpectations:
3:04 PM Changeset in webkit [219526] by jer.noble@apple.com
  • 23 edits in trunk/Source

Allow clients to override their own hardware media requirements where no fallback media exists.
https://bugs.webkit.org/show_bug.cgi?id=174426
<rdar://problem/32537704>

Reviewed by Eric Carlson.

Source/WebCore:

Add a new setting which allows clients to specify their own mediaContentTypesRequiringHardwareSupport should be
ignared in the case where no fallback exists, such as the case of a single <source> element, or setting the src
attribute directly.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::havePotentialSourceChild):
(WebCore::HTMLMediaElement::selectNextSourceChild):
(WebCore::HTMLMediaElement::sourceWasAdded):
(WebCore::HTMLMediaElement::sourceWasRemoved):
(WebCore::HTMLMediaElement::mediaPlayerShouldCheckHardwareSupport):

  • html/HTMLMediaElement.h:
  • page/Settings.h:
  • platform/graphics/MediaPlayer.cpp:

(WebCore::MediaPlayer::shouldCheckHardwareSupport):

  • platform/graphics/MediaPlayer.h:

(WebCore::MediaPlayerClient::mediaPlayerShouldCheckHardwareSupport):

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:

(WebCore::MediaPlayerPrivateAVFoundationObjC::assetStatus):

  • platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:

(WebCore::SourceBufferPrivateAVFObjC::didParseStreamDataAsAsset):

Source/WebKit:

Add a new WKWebViewConfiguration property, as well as a new WKPreferences function, both to control
WebCore's new allowMediaContentTypesRequiringHardwareSupportAsFallback setting.

  • Shared/WebPreferencesDefinitions.h:
  • UIProcess/API/C/WKPreferences.cpp:

(WKPreferencesGetAllowMediaContentTypesRequiringHardwareSupportAsFallback):
(WKPreferencesSetAllowMediaContentTypesRequiringHardwareSupportAsFallback):

  • UIProcess/API/C/WKPreferencesRef.h:
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _initializeWithConfiguration:]):

  • UIProcess/API/Cocoa/WKWebViewConfiguration.mm:

(-[WKWebViewConfiguration init]):
(-[WKWebViewConfiguration copyWithZone:]):
(-[WKWebViewConfiguration _setAllowMediaContentTypesRequiringHardwareSupportAsFallback:]):
(-[WKWebViewConfiguration _allowMediaContentTypesRequiringHardwareSupportAsFallback]):

  • UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):

Source/WebKitLegacy/mac:

Add a new WebPreferences property to control WebCore's new
allowMediaContentTypesRequiringHardwareSupportAsFallback setting.

  • WebView/WebPreferenceKeysPrivate.h:
  • WebView/WebPreferences.mm:

(+[WebPreferences initialize]):
(-[WebPreferences allowMediaContentTypesRequiringHardwareSupportAsFallback]):
(-[WebPreferences setAllowMediaContentTypesRequiringHardwareSupportAsFallback:]):

  • WebView/WebPreferencesPrivate.h:
  • WebView/WebView.mm:

(-[WebView _preferencesChanged:]):

2:45 PM Changeset in webkit [219525] by Chris Dumez
  • 5 edits in trunk/Source

Possible crash under NetworkSocketStream::didFailSocketStream()
https://bugs.webkit.org/show_bug.cgi?id=174526
<rdar://problem/32831441>

Reviewed by Brent Fulgham.

Source/WebCore:

Call m_client.didFailSocketStream() asynchronously in the constructor as our
caller (the client) is also being initialized at this point.

  • platform/network/cf/SocketStreamHandleImplCFNet.cpp:

(WebCore::SocketStreamHandleImpl::SocketStreamHandleImpl):

Source/WebKit:

For robustness, initialize the SocketStreamHandleImpl after the other
data members. We are passing |this| to the SocketStreamHandleImpl when
constructing it so it is unsafe to have uninitialized data members
at this point.

  • NetworkProcess/NetworkSocketStream.cpp:

(WebKit::NetworkSocketStream::NetworkSocketStream):

  • NetworkProcess/NetworkSocketStream.h:
2:43 PM Changeset in webkit [219524] by commit-queue@webkit.org
  • 4 edits
    4 adds in trunk

WebRTC: silence data not sent for disabled audio track
https://bugs.webkit.org/show_bug.cgi?id=174456
<rdar://problem/33284623>

Patch by Youenn Fablet <youenn@apple.com> on 2017-07-14
Reviewed by Eric Carlson.

Source/WebCore:

Test: webrtc/audio-muted-stats.html

webrtc/audio-muted-stats2.html

Adding a timer-based approach to send 10ms of silence every second.
This is consistent with how muted video tracks are implemented.
In case the audio track is muted at the time it is added, no silence data is sent.

  • platform/mediastream/mac/RealtimeOutgoingAudioSource.cpp:

(WebCore::RealtimeOutgoingAudioSource::RealtimeOutgoingAudioSource):
(WebCore::RealtimeOutgoingAudioSource::initializeConverter):
(WebCore::RealtimeOutgoingAudioSource::stop):
(WebCore::RealtimeOutgoingAudioSource::sourceMutedChanged):
(WebCore::RealtimeOutgoingAudioSource::sourceEnabledChanged):
(WebCore::RealtimeOutgoingAudioSource::handleMutedIfNeeded):
(WebCore::RealtimeOutgoingAudioSource::sendSilence):

  • platform/mediastream/mac/RealtimeOutgoingAudioSource.h:

LayoutTests:

  • webrtc/audio-muted-stats-expected.txt: Added.
  • webrtc/audio-muted-stats.html: Added.
  • webrtc/audio-muted-stats2-expected.txt: Added.
  • webrtc/audio-muted-stats2.html: Added.
2:26 PM Changeset in webkit [219523] by Jonathan Bedard
  • 1 edit
    181 adds in trunk/LayoutTests

Add High Sierra test expectations
https://bugs.webkit.org/show_bug.cgi?id=174518
<rdar://problem/32716970>

Unreviewed test gardening.

  • platform/mac-highsierra: Added.
  • platform/mac-highsierra-wk1: Added.
  • platform/mac-highsierra-wk2: Added.
1:29 PM Changeset in webkit [219522] by Michael Catanzaro
  • 9 edits
    1 copy
    1 delete in trunk

[CMake] Unclear distinction between WebKitHelpers and WebKitMacros
https://bugs.webkit.org/show_bug.cgi?id=153189

Reviewed by Antonio Gomes.

.:

Merge WebKitHelpers.cmake into WebKitMacros.cmake, since there is no meaningful distinction
between the macros that belong in each file. Then, move the macros that are only needed by
one project into project-specific CMake files. Retain here only the macros that are needed
in multiple places.

  • Source/cmake/OptionsCommon.cmake: Update a comment.
  • Source/cmake/OptionsGTK.cmake: New location for libtool macro, exclusively needed here.
  • Source/cmake/WebKitCommon.cmake: Do not include WebKitHelpers.cmake.
  • Source/cmake/WebKitHelpers.cmake: Removed.
  • Source/cmake/WebKitMacros.cmake:

Source/WebCore:

  • CMakeLists.txt: Include WebCoreMacros.cmake.
  • WebCoreMacros.cmake: Added.

Source/WebKit:

New location for macros that are exclusively needed here.

  • CMakeLists.txt:
1:27 PM Changeset in webkit [219521] by commit-queue@webkit.org
  • 5 edits in trunk

Unreviewed, rolling out r219510.
https://bugs.webkit.org/show_bug.cgi?id=174525

Need to revert length() == 0 check for null string (Requested
by yusukesuzuki on #webkit).

Reverted changeset:

"[WTF] Newly added AtomicStringImpl should use BufferInternal
static string if StringImpl is static"
https://bugs.webkit.org/show_bug.cgi?id=174501
http://trac.webkit.org/changeset/219510

1:17 PM Changeset in webkit [219520] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Fix style for name of class alloc function in WebVideoFullscreenInterfaceAVKit.
https://bugs.webkit.org/show_bug.cgi?id=174476

Patch by Jeremy Jones <jeremyj@apple.com> on 2017-07-14
Reviewed by Alex Christensen.

No new tests because no behavior change.

This is a rename for per style requirements.

  • platform/ios/WebVideoFullscreenInterfaceAVKit.mm:

(allocWebAVPictureInPicturePlayerLayerViewInstance):
(WebAVPlayerLayerView_pictureInPicturePlayerLayerView):
(allocWebAVPlayerLayerViewInstance):
(WebVideoFullscreenInterfaceAVKit::setupFullscreen):
(getWebAVPictureInPicturePlayerLayerViewClass): Deleted.
(getWebAVPlayerLayerViewClass): Deleted.

1:08 PM Changeset in webkit [219519] by jer.noble@apple.com
  • 7 edits
    2 adds in trunk

[MSE] Removing samples when presentation order does not match decode order can cause bad behavior.
https://bugs.webkit.org/show_bug.cgi?id=174514

Reviewed by Sam Weinig.

Source/WebCore:

Test: media/media-source/media-source-remove-decodeorder-crash.html

Fix the algorithm in removeCodedFrames() so that it's not possible to have a removePresentationStart >
removePresentationEnd (and also removeDecodeStart > removeDecodeEnd).

  • Modules/mediasource/SampleMap.cpp:

(WebCore::PresentationOrderSampleMap::findSampleContainingOrAfterPresentationTime):
(WebCore::PresentationOrderSampleMap::findSampleStartingAfterPresentationTime):

  • Modules/mediasource/SampleMap.h:
  • Modules/mediasource/SourceBuffer.cpp:

(WebCore::SourceBuffer::removeCodedFrames):

Tools:

  • TestWebKitAPI/Tests/WebCore/SampleMap.cpp:

(TestWebKitAPI::TEST_F):

LayoutTests:

  • media/media-source/media-source-remove-decodeorder-crash-expected.txt: Added.
  • media/media-source/media-source-remove-decodeorder-crash.html: Added.
1:04 PM Changeset in webkit [219518] by Matt Lewis
  • 2 edits in trunk/LayoutTests

Correcting test expectations after mac-expectation changes.
https://bugs.webkit.org/show_bug.cgi?id=174472

Unreviews test gardening.

  • platform/mac/TestExpectations:
12:34 PM Changeset in webkit [219517] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Increase CoreAudio render audio buffer sizes for WebRTC
https://bugs.webkit.org/show_bug.cgi?id=174508

Patch by Youenn Fablet <youenn@apple.com> on 2017-07-14
Reviewed by Eric Carlson.

Covered by manually testing audio rendering through WebRTC sites.

  • platform/mediastream/mac/AudioTrackPrivateMediaStreamCocoa.cpp:

(WebCore::AudioTrackPrivateMediaStreamCocoa::createAudioUnit): Setting audio buffer size equivalent to 20 ms.

12:16 PM Changeset in webkit [219516] by beidson@apple.com
  • 9 edits
    2 adds in trunk/Source

Make sure all CFHTTPCookieStorageRefs we create are scheduled.
<rdar://problem/33221110> and https://bugs.webkit.org/show_bug.cgi?id=174513

Reviewed by Tim Horton.

Source/WebCore:

  • platform/spi/cf/CFNetworkSPI.h:

Source/WebKit:

Whenever we create a CFHTTPCookieStorage from identifying data it is unscheduled.
We need to schedule it on a RunLoop.

This patch also cleans up the creation of the identifying data itself.

  • NetworkProcess/mac/RemoteNetworkingContext.mm:

(WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession):

  • Shared/cf/CookieStorageUtilsCF.cpp: Added.

(WebKit::cookieStorageFromIdentifyingData):
(WebKit::identifyingDataFromCookieStorage):

  • Shared/cf/CookieStorageUtilsCF.h: Added.
  • Shared/mac/ChildProcessMac.mm:

(WebKit::ChildProcess::setSharedHTTPCookieStorage):

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitializeWebProcess):
(WebKit::WebProcessPool::platformInitializeNetworkProcess):

  • UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:

(WebKit::WebsiteDataStore::parameters):

  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm:

(WebKit::WebFrameNetworkingContext::ensureWebsiteDataStoreSession):

12:02 PM Changeset in webkit [219515] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Remove CoreAudioCaptureSource speaker configuration
https://bugs.webkit.org/show_bug.cgi?id=174512

Patch by Youenn Fablet <youenn@apple.com> on 2017-07-14
Reviewed by Eric Carlson.

Covered by manually testing audio rendering through WebRTC sites.

  • platform/mediastream/mac/CoreAudioCaptureSource.cpp:

(WebCore::CoreAudioSharedUnit::setupAudioUnit):

11:55 AM Changeset in webkit [219514] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

Potential null-dereference under NetworkRTCProvider::resolvedName()
https://bugs.webkit.org/show_bug.cgi?id=174507
<rdar://problem/32597868>

Reviewed by Youenn Fablet.

NetworkRTCProvider::resolvedName() could do a null dereference of m_connection
because m_connection is nullified in NetworkRTCProvider::close() but resolvers
were only closed later on in the NetworkRTCProvider destructor.

To address the issue, we now stop DNS resolvers earlier, in NetworkRTCProvider::close().
Also fix unsafe modification of m_resolvers HashMap when iterating over it.

  • NetworkProcess/webrtc/NetworkRTCProvider.cpp:

(WebKit::NetworkRTCProvider::~NetworkRTCProvider):
(WebKit::NetworkRTCProvider::close):
(WebKit::NetworkRTCProvider::Resolver::~Resolver):
(WebKit::NetworkRTCProvider::stopResolver):

11:35 AM Changeset in webkit [219513] by eric.carlson@apple.com
  • 2 edits in trunk/Source/WebCore

[MediaStream] Limit the number of remote video samples queued
https://bugs.webkit.org/show_bug.cgi?id=174505
<rdar://problem/33223015>

Reviewed by Youenn Fablet.

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:

(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::removeOldSamplesFromPendingQueue): Only
enqueue a fixed number of frames with invalid or negative decode times.

10:47 AM Changeset in webkit [219512] by sbarati@apple.com
  • 4 edits in trunk

Fix ambiguous description text in ARES-6 about the data the benchmark measures
https://bugs.webkit.org/show_bug.cgi?id=174510

Rubber stamped by Filip Pizlo.

  • ARES-6/about.html:
10:44 AM Changeset in webkit [219511] by commit-queue@webkit.org
  • 9 edits in trunk/Source

Report CoreAudioCaptureSource failure in case shared unit stops working properly
https://bugs.webkit.org/show_bug.cgi?id=174494

Patch by Youenn Fablet <youenn@apple.com> on 2017-07-14
Reviewed by Eric Carlson.

Source/WebCore:

Manual test by interrupting an audio capture on Mac.

This patch adds a timer to CoreAudioSharedUnit.
In case the capture callback is not called after one second, the shared unit is said to fail.
Each source is notified that capture is failing.
This will in turn trigger onend track event so that web pages can remedy capture failure.

Timer starts with 10 seconds for audio data to start being captured.
It is then decreased to 2 seconds.

  • platform/mediastream/RealtimeMediaSource.cpp:

(WebCore::RealtimeMediaSource::captureFailed):

  • platform/mediastream/RealtimeMediaSource.h:
  • platform/mediastream/mac/CoreAudioCaptureSource.cpp:

(WebCore::CoreAudioSharedUnit::CoreAudioSharedUnit):
(WebCore::CoreAudioSharedUnit::processMicrophoneSamples):
(WebCore::CoreAudioSharedUnit::startInternal):
(WebCore::CoreAudioSharedUnit::verifyIsCapturing):
(WebCore::CoreAudioSharedUnit::stopInternal):

Source/WebKit:

In case of capture failure, send a CaptureFailure message so that the
correct behavior happens in the Web process.

  • UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
  • WebProcess/cocoa/UserMediaCaptureManager.cpp:

(WebKit::UserMediaCaptureManager::captureFailed):

  • WebProcess/cocoa/UserMediaCaptureManager.h:
  • WebProcess/cocoa/UserMediaCaptureManager.messages.in:
10:37 AM Changeset in webkit [219510] by Yusuke Suzuki
  • 5 edits in trunk

[WTF] Newly added AtomicStringImpl should use BufferInternal static string if StringImpl is static
https://bugs.webkit.org/show_bug.cgi?id=174501

Reviewed by Darin Adler.

Source/WTF:

When creating AtomicStringImpl from static StringImpl, we can just use createWithoutCopying
to create a BufferInternal AtomicStringImpl which m_data{8,16} is static string's one.

  • wtf/text/AtomicStringImpl.cpp:

(WTF::CStringTranslator::hash):
(WTF::CStringTranslator::equal):
(WTF::CStringTranslator::translate):
(WTF::AtomicStringImpl::add):
(WTF::HashTranslatorCharBuffer::HashTranslatorCharBuffer):
(WTF::UCharBufferTranslator::hash):
(WTF::UCharBufferTranslator::equal):
(WTF::UCharBufferTranslator::translate):
(WTF::LCharBufferTranslator::hash):
(WTF::LCharBufferTranslator::equal):
(WTF::LCharBufferTranslator::translate):
(WTF::BufferFromStaticDataTranslator::hash):
(WTF::BufferFromStaticDataTranslator::equal):
(WTF::BufferFromStaticDataTranslator::translate):
(WTF::AtomicStringImpl::addLiteral):
(WTF::addSymbol):
(WTF::addStatic):
(WTF::AtomicStringImpl::addSlowCase):
(WTF::AtomicStringImpl::lookUp):
(WTF::CharBufferFromLiteralDataTranslator::hash): Deleted.
(WTF::CharBufferFromLiteralDataTranslator::equal): Deleted.
(WTF::CharBufferFromLiteralDataTranslator::translate): Deleted.
(WTF::addSubstring): Deleted.

  • wtf/text/StringImpl.h:

Tools:

  • TestWebKitAPI/Tests/WTF/StringImpl.cpp:

(TestWebKitAPI::TEST):

10:33 AM Changeset in webkit [219509] by jer.noble@apple.com
  • 4 edits
    2 adds in trunk

Adding the 'autoplay' attribute to a media element during a user gesture should remove user gesture restrictions.
https://bugs.webkit.org/show_bug.cgi?id=174373

Reviewed by Eric Carlson.

Source/WebCore:

Test: media/video-add-autoplay-user-gesture.html

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::parseAttribute):

LayoutTests:

  • media/video-add-autoplay-user-gesture-expected.txt: Added.
  • media/video-add-autoplay-user-gesture.html: Added.
  • media/platform/ios/TestExpectations: Skipped; requires EventSender.
10:31 AM Changeset in webkit [219508] by Matt Lewis
  • 5 edits in trunk

Unreviewed, rolling out r219500.

The test is consistently failing on iOS simulator.

Reverted changeset:

"AX: VoiceOver silent or skipping over time values on media
player."
https://bugs.webkit.org/show_bug.cgi?id=174324
http://trac.webkit.org/changeset/219500

10:15 AM Changeset in webkit [219507] by Jonathan Bedard
  • 7 edits in trunk

Tools:
Bring mac expectations in-line with other platforms
https://bugs.webkit.org/show_bug.cgi?id=174472
<rdar://problem/33297388>

Reviewed by David Kilzer.

The override order for Mac test expectations does not conform to the pattern used by iOS,
GTK, Windows and WPE. Before this change, El Capitan's baseline search path looks like this:

platform/mac-wk2
platform/wk2
platform/mac-elcapitan
platform/mac-sierra
generic

After this change, El Capitan's baseline search path looks like this:

platform/mac-sierra-wk2
platform/mac-sierra
platform/mac-wk2
platform/wk2
generic

  • Scripts/webkitpy/port/mac.py:

(MacPort.init): If a specific version is specified in the port name, use that
as the os version.
(MacPort.default_baseline_search_path): Expectation search paths should work the
same way they do on other ports. Port + version overrides port, port overrides generic
and wk1/wk2 should override expectations for the two combined.

  • Scripts/webkitpy/port/mac_unittest.py:

(MacTest.test_tests_for_other_platforms): Deleted.
(MacTest._assert_search_path): Deleted.
(MacTest.test_baseline_search_path): Deleted.

  • Scripts/webkitpy/tool/commands/rebaseline_unittest.py:

(TestRebaselineTest.test_baseline_directory): Adjust expectations for new over-ride order.
(test_rebaseline_test_and_print_scm_changes): Ditto.
(test_rebaseline_and_copy_test): Ditto.
(test_rebaseline_and_copy_test_no_existing_result): Ditto.
(test_rebaseline_and_copy_test_with_lion_result): Ditto.
(test_rebaseline_and_copy_no_overwrite_test): Ditto.

LayoutTests:
Add script to rebase patches during the WebKit2->WebKit/WebKit->WebKitLegacy transition
https://bugs.webkit.org/show_bug.cgi?id=174438
<rdar://problem/33277112>

Reviewed by David Kilzer.

  • platform/mac-wk2/TestExpectations: Move skipped tests because of webkit.org/b/174504.
  • platform/wk2/TestExpectations: Ditto.
9:03 AM Changeset in webkit [219506] by Yusuke Suzuki
  • 7 edits in trunk/Source

[WTF] Use std::unique_ptr for StackTrace
https://bugs.webkit.org/show_bug.cgi?id=174495

Reviewed by Alex Christensen.

Source/JavaScriptCore:

  • runtime/ExceptionScope.cpp:

(JSC::ExceptionScope::unexpectedExceptionMessage):

  • runtime/VM.cpp:

(JSC::VM::throwException):

Source/WTF:

Instead of returning pointer to heap allocated StackTrace,
we should return std::unique_ptr<StackTrace>.
And we also move WTFGetBackTrace from Assertions.cpp to
StackTrace.cpp to consolidate stack trace related operations
into StackTrace.cpp.

  • wtf/Assertions.cpp:
  • wtf/StackTrace.cpp:

(WTFGetBacktrace):
(WTF::StackTrace::captureStackTrace):

  • wtf/StackTrace.h:
8:58 AM Changeset in webkit [219505] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

[WinCairo] error 'm_compositorTexture': undeclared identifier since Bug 174345
https://bugs.webkit.org/show_bug.cgi?id=174493

Patch by Fujii Hironori <Fujii Hironori> on 2017-07-14
Reviewed by Alex Christensen.

Compilation errors are reported by the code using a member
m_compositorTexture of GraphicsContext3D which exists only if
USE(COORDINATED_GRAPHICS_THREADED). WinCairo port doesn't use it.

  • platform/graphics/cairo/GraphicsContext3DCairo.cpp:

(WebCore::GraphicsContext3D::GraphicsContext3D):
Use m_compositorTexture only if USE(COORDINATED_GRAPHICS_THREADED).
(WebCore::GraphicsContext3D::~GraphicsContext3D): Ditto.

  • platform/graphics/opengl/GraphicsContext3DOpenGLES.cpp:

(WebCore::GraphicsContext3D::reshapeFBOs):
Ditto. Fix the wrong indentation level.

8:54 AM Changeset in webkit [219504] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

[HarfBuzz] Decomposed Vietnamese characters are rendered incorrectly
https://bugs.webkit.org/show_bug.cgi?id=174418

Patch by Fujii Hironori <Fujii Hironori> on 2017-07-14
Reviewed by Michael Catanzaro.

Source/WebCore:

HarfBuzzShaper should normalize the input text before collecting
HarfBuzzRuns. Actually, HarfBuzzShaper::setNormalizedBuffer does
the task. But, this function hasn't been called from anywhere
since Bug 108077.

Test: fast/text/international/vietnamese-nfd.html

  • platform/graphics/harfbuzz/HarfBuzzShaper.cpp:

(WebCore::HarfBuzzShaper::HarfBuzzShaper):
Call setNormalizedBuffer instead of normalizeCharacters.
(WebCore::normalizeCharacters): Deleted.

LayoutTests:

  • fast/text/international/vietnamese-nfd-expected.html: Added.
  • fast/text/international/vietnamese-nfd.html: Added.
5:06 AM Changeset in webkit [219503] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[WinCairo] Build broken "Cannot open include file: 'GL/glext.h'" since Bug 172104
https://bugs.webkit.org/show_bug.cgi?id=174492

Patch by Fujii Hironori <Fujii Hironori> on 2017-07-14
Reviewed by Žan Doberšek.

WinCairo port uses GLES. OpenGLShims.h shouldn't be included.

  • platform/graphics/cairo/GraphicsContext3DCairo.cpp:

Include "OpenGLShims.h" only if !USE(OPENGL_ES_2) instead of USE(OPENGL).

1:21 AM Changeset in webkit [219502] by Yusuke Suzuki
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] Use WTFMove to prune liveness in DFGAvailabilityMap
https://bugs.webkit.org/show_bug.cgi?id=174423

Reviewed by Saam Barati.

  • dfg/DFGAvailabilityMap.cpp:

(JSC::DFG::AvailabilityMap::pruneHeap):
(JSC::DFG::AvailabilityMap::pruneByLiveness):

1:17 AM Changeset in webkit [219501] by Chris Dumez
  • 4 edits in trunk/Source/WebCore

PageCache::removeAllItemsForPage(Page&) may reenter itself and cause crashes
https://bugs.webkit.org/show_bug.cgi?id=174473
<rdar://problem/32177485>

Reviewed by Antti Koivisto.

This could happen when a Page containing an SVGImage is removed from PageCache and
this resulted in the destruction of the SVGImage. Because the SVGImage has an internal
utility Page, it will also call PageCache::removeAllItemsForPage(WebCore::Page&) upon
destruction, causing us to reenter.

Address the issue by not calling PageCache::removeAllItemsForPage() for utility pages
since those cannot be in PageCache in the first place.

Also add assertions to make sure:

  1. We never insert a utility page into PageCache
  2. PageCache::removeAllItemsForPage() does not reenter

No new tests, because I was unable to write a test which reproduced the crash. This
is in theory testable using an API test which enables PageCache, loads a page
containing an SVGImage, navigates away from this page so that it goes into PageCache,
and then calls [WebView _close]. However, when I tried writing such test, I could
not get the SVGImage to get destroyed while PageCache::removeAllItemsForPage() is
called for the top-level page for some reason. Something seems to be keeping the
SVGImage alive longer. I tried disabling the MemoryCache but it did not help.

  • history/PageCache.cpp:

(WebCore::PageCache::addIfCacheable):
(WebCore::PageCache::removeAllItemsForPage):

  • history/PageCache.h:
  • page/Page.cpp:

(WebCore::Page::~Page):

12:07 AM Changeset in webkit [219500] by commit-queue@webkit.org
  • 5 edits in trunk

AX: VoiceOver silent or skipping over time values on media player.
https://bugs.webkit.org/show_bug.cgi?id=174324
<rdar://problem/32021784>

Patch by Aaron Chu <aaron_chu@apple.com> on 2017-07-14
Reviewed by Antoine Quint.

Added role attribute to modern media controls time lable class so that VoiceOver can access the time label when the media is playing.

Source/WebCore:

Updated: media/modern-media-controls/time-label/time-label.html

  • Modules/modern-media-controls/controls/time-label.js:

LayoutTests:

  • media/modern-media-controls/time-label/time-label-expected.txt:
  • media/modern-media-controls/time-label/time-label.html:
Note: See TracTimeline for information about the timeline view.