Timeline



Jan 26, 2017:

11:14 PM Changeset in webkit [211256] by Chris Dumez
  • 7 edits in trunk/Source/WebCore

Revert r210474 it is no longer needed
https://bugs.webkit.org/show_bug.cgi?id=167487

Reviewed by Daniel Bates.

Revert r210474 it is no longer needed after r211254.

  • dom/Document.cpp:

(WebCore::Document::canNavigate):

  • html/HTMLAnchorElement.cpp:

(WebCore::HTMLAnchorElement::handleClick):

  • html/HTMLLinkElement.cpp:

(WebCore::HTMLLinkElement::handleClick):

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::urlSelected):
(WebCore::FrameLoader::submitForm):
(WebCore::FrameLoader::loadFrameRequest):

  • mathml/MathMLElement.cpp:

(WebCore::MathMLElement::defaultEventHandler):

  • svg/SVGAElement.cpp:

(WebCore::SVGAElement::defaultEventHandler):

10:09 PM Changeset in webkit [211255] by commit-queue@webkit.org
  • 2 edits
    5 adds in trunk/Source/WebCore

[WebRTC] Implement WebRTC PeerConnection backend based on libwebrtc
https://bugs.webkit.org/show_bug.cgi?id=167289

Patch by Youenn Fablet <youennf@gmail.com> on 2017-01-26
Reviewed by Alex Christensen.

Introducing an initial implementation of WebRTC peer connection backend based on LibWebRTC.
This is done behind a compilation flag which is off by default, until the implementation is ready.

The backend implements the PeerConnectionBackend API.
The implementation is split into LibWebRTCPeerConnectionBackend which contains mostly generic code and
passes the real work to LibWebRTCMediaEndpoint.
The latter class is implementing the API using LibWebRTC.

  • Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp: Added.

(WebCore::LibWebRTCMediaEndpoint::LibWebRTCMediaEndpoint):
(WebCore::sessionDescriptionType):
(WebCore::LibWebRTCMediaEndpoint::doSetLocalDescription):
(WebCore::LibWebRTCMediaEndpoint::doSetRemoteDescription):
(WebCore::LibWebRTCMediaEndpoint::addPendingIceCandidates):
(WebCore::streamId):
(WebCore::LibWebRTCMediaEndpoint::doCreateOffer):
(WebCore::LibWebRTCMediaEndpoint::doCreateAnswer):
(WebCore::LibWebRTCMediaEndpoint::getStats):
(WebCore::LibWebRTCMediaEndpoint::StatsCollector::StatsCollector):
(WebCore::LibWebRTCMediaEndpoint::StatsCollector::OnStatsDelivered):
(WebCore::signalingState):
(WebCore::LibWebRTCMediaEndpoint::OnSignalingChange):
(WebCore::trackId):
(WebCore::createMediaStreamTrack):
(WebCore::LibWebRTCMediaEndpoint::addStream):
(WebCore::LibWebRTCMediaEndpoint::OnAddStream):
(WebCore::LibWebRTCMediaEndpoint::OnRemoveStream):
(WebCore::LibWebRTCMediaEndpoint::OnDataChannel):
(WebCore::LibWebRTCMediaEndpoint::stop):
(WebCore::LibWebRTCMediaEndpoint::OnRenegotiationNeeded):
(WebCore::iceConnectionState):
(WebCore::LibWebRTCMediaEndpoint::OnIceConnectionChange):
(WebCore::LibWebRTCMediaEndpoint::OnIceGatheringChange):
(WebCore::LibWebRTCMediaEndpoint::OnIceCandidate):
(WebCore::LibWebRTCMediaEndpoint::OnIceCandidatesRemoved):
(WebCore::LibWebRTCMediaEndpoint::createSessionDescriptionSucceeded):
(WebCore::LibWebRTCMediaEndpoint::createSessionDescriptionFailed):
(WebCore::LibWebRTCMediaEndpoint::setLocalSessionDescriptionSucceeded):
(WebCore::LibWebRTCMediaEndpoint::setLocalSessionDescriptionFailed):
(WebCore::LibWebRTCMediaEndpoint::setRemoteSessionDescriptionSucceeded):
(WebCore::LibWebRTCMediaEndpoint::setRemoteSessionDescriptionFailed):

  • Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h: Added.
  • Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp: Added.

(WebCore::createLibWebRTCPeerConnectionBackend):
(WebCore::libWebRTCProvider):
(WebCore::LibWebRTCPeerConnectionBackend::LibWebRTCPeerConnectionBackend):
(WebCore::configurationFromMediaEndpointConfiguration):
(WebCore::LibWebRTCPeerConnectionBackend::setConfiguration):
(WebCore::LibWebRTCPeerConnectionBackend::getStats):
(WebCore::LibWebRTCPeerConnectionBackend::doSetLocalDescription):
(WebCore::LibWebRTCPeerConnectionBackend::doSetRemoteDescription):
(WebCore::LibWebRTCPeerConnectionBackend::doCreateOffer):
(WebCore::LibWebRTCPeerConnectionBackend::doCreateAnswer):
(WebCore::LibWebRTCPeerConnectionBackend::doStop):
(WebCore::LibWebRTCPeerConnectionBackend::doAddIceCandidate):
(WebCore::LibWebRTCPeerConnectionBackend::markAsNeedingNegotiation):
(WebCore::LibWebRTCPeerConnectionBackend::createReceiver):
(WebCore::LibWebRTCPeerConnectionBackend::createDataChannelHandler):

  • Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.h: Added.
  • WebCore.xcodeproj/project.pbxproj:
9:36 PM Changeset in webkit [211254] by Chris Dumez
  • 38 edits
    8 adds in trunk

Crash when navigating back to a page in PacheCache when one of its frames has been removed
https://bugs.webkit.org/show_bug.cgi?id=167421
<rdar://problem/30188490>

Reviewed by Darin Adler.

Source/WebCore:

Disallow page caching of a page if:

  1. The main window has an opener (i.e. it was opened via window.open)
  2. It has ever used window.open()

This is because allowing page caching in this case would allow such
windows to script each other even after one of them entered Page
Cache. Allowing this is dangerous and easily causes crashes.

This is a short term workaround until we find a better solution to
the problem. One issue is this workaround is that navigating back
to a page that has an opener or used window.open() will not longer
get the page from PageCache. As a result, state may be lost upon
navigating back. However, we never guarantee that pages get page
cached, and Chrome does not have a PageCache.

Tests: fast/history/page-cache-after-window-open.html

fast/history/page-cache-back-navigation-crash.html
fast/history/page-cache-with-opener.html

  • dom/Document.cpp:

(WebCore::Document::hasEverCalledWindowOpen):
(WebCore::Document::markHasCalledWindowOpen):

  • dom/Document.h:
  • history/PageCache.cpp:

(WebCore::canCachePage):

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::createWindow):

  • page/DiagnosticLoggingKeys.cpp:

(WebCore::DiagnosticLoggingKeys::hasCalledWindowOpenKey):
(WebCore::DiagnosticLoggingKeys::hasOpenerKey):

  • page/DiagnosticLoggingKeys.h:
  • page/Page.cpp:

(WebCore::Page::openedByWindowOpen):

  • page/Page.h:
  • page/Settings.in:

Source/WebKit/mac:

Add a new setting allowing layout tests to enable PageCache in a window
that has an opener, for convenience.

  • WebView/WebPreferenceKeysPrivate.h:
  • WebView/WebPreferences.mm:

(+[WebPreferences initialize]):
(-[WebPreferences allowsPageCacheWithWindowOpener]):
(-[WebPreferences setAllowsPageCacheWithWindowOpener:]):

  • WebView/WebPreferencesPrivate.h:
  • WebView/WebView.mm:

(-[WebView _preferencesChanged:]):

Source/WebKit/win:

Add a new setting allowing layout tests to enable PageCache in a window
that has an opener, for convenience.

  • WebPreferenceKeysPrivate.h:
  • WebPreferences.cpp:

(WebPreferences::initializeDefaultSettings):

  • WebPreferences.h:

Source/WebKit2:

Add a new setting allowing layout tests to enable PageCache in a window
that has an opener, for convenience.

  • Shared/WebPreferencesDefinitions.h:
  • UIProcess/API/C/WKPreferences.cpp:

(WKPreferencesSetAllowsPageCacheWithWindowOpener):
(WKPreferencesGetAllowsPageCacheWithWindowOpener):

  • UIProcess/API/C/WKPreferencesRefPrivate.h:
  • WebProcess/InjectedBundle/InjectedBundle.cpp:

(WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):

Tools:

Add a new setting allowing layout tests to enable PageCache in a window
that has an opener, for convenience.

  • DumpRenderTree/mac/DumpRenderTree.mm:

(resetWebPreferencesToConsistentValues):

  • DumpRenderTree/win/DumpRenderTree.cpp:

(resetWebPreferencesToConsistentValues):

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::resetPreferencesToConsistentValues):

LayoutTests:

  • fast/history/page-cache-after-window-open-expected.txt: Added.
  • fast/history/page-cache-after-window-open.html: Added.
  • fast/history/page-cache-back-navigation-crash-expected.txt: Added.
  • fast/history/page-cache-back-navigation-crash.html: Added.
  • fast/history/page-cache-with-opener-expected.txt: Added.
  • fast/history/page-cache-with-opener.html: Added.
  • fast/history/resources/page-cache-window-with-iframe.html: Added.
  • fast/history/resources/page-cache-window-with-opener.html: Added.

Add layout test coverage.

  • editing/mac/input/unconfirmed-text-navigation-with-page-cache.html:
  • fast/harness/page-cache-crash-on-data-urls.html:
  • fast/harness/use-page-cache.html:
  • fast/history/page-cache-after-window-open-expected.txt: Added.
  • fast/history/page-cache-after-window-open.html: Added.
  • fast/history/page-cache-with-opener-expected.txt: Added.
  • fast/history/page-cache-with-opener.html: Added.
  • fast/history/resources/page-cache-window-with-opener.html: Added.
  • fast/loader/stateobjects/no-popstate-when-back-to-stateless-entry-with-page-cache.html:
  • fast/loader/stateobjects/popstate-fires-with-page-cache.html:
  • tiled-drawing/tiled-drawing-scroll-position-page-cache-restoration.html:

These tests relied on using window.open() to test PageCache for convenience. They now
need to override a setting in order to be allowed to do so.

8:54 PM Changeset in webkit [211253] by commit-queue@webkit.org
  • 12 edits
    9 adds in trunk

[WebRTC] Add a LibWebRTC mock for testing
https://bugs.webkit.org/show_bug.cgi?id=167429

Patch by Youenn Fablet <youennf@gmail.com> on 2017-01-26
Reviewed by Alex Christensen.

Source/WebCore:

Covered by updated tests although feature is behind a flag, off by default.
MockLibWebRTCPeerConnection will allow us testing the code above the WebRTC implementation above LibWebRTC,
without reyling on it and controlling the way that the peer connections will behave.
Adding support for mock factory to create real peer connections in case where we want to do full testing through the local loopback.

Tests: fast/mediastream/getUserMedia-webaudio.html

webrtc/datachannel/basic.html
webrtc/video.html

  • WebCore.xcodeproj/project.pbxproj:
  • testing/Internals.cpp:

(WebCore::Internals::Internals):
(WebCore::Internals::useMockRTCPeerConnectionFactory):

  • testing/Internals.h:
  • testing/Internals.idl:
  • testing/MockLibWebRTCPeerConnection.cpp: Added.

(WebCore::useMockRTCPeerConnectionFactory):
(WebCore::MockLibWebRTCPeerConnectionForIceCandidates::MockLibWebRTCPeerConnectionForIceCandidates):
(WebCore::MockLibWebRTCPeerConnectionForIceCandidates::gotLocalDescription):
(WebCore::MockLibWebRTCPeerConnectionForIceConnectionState::MockLibWebRTCPeerConnectionForIceConnectionState):
(WebCore::MockLibWebRTCPeerConnectionForIceConnectionState::gotLocalDescription):
(WebCore::MockLibWebRTCPeerConnectionFactory::MockLibWebRTCPeerConnectionFactory):
(WebCore::MockLibWebRTCPeerConnectionFactory::CreatePeerConnection):
(WebCore::MockLibWebRTCPeerConnectionFactory::CreateLocalMediaStream):
(WebCore::MockLibWebRTCPeerConnection::SetLocalDescription):
(WebCore::MockLibWebRTCPeerConnection::SetRemoteDescription):
(WebCore::MockLibWebRTCPeerConnection::CreateDataChannel):
(WebCore::MockLibWebRTCPeerConnection::AddStream):
(WebCore::MockLibWebRTCPeerConnection::RemoveStream):
(WebCore::MockLibWebRTCPeerConnection::CreateOffer):
(WebCore::MockLibWebRTCPeerConnection::CreateAnswer):

  • testing/MockLibWebRTCPeerConnection.h: Added.

(WebCore::MockLibWebRTCPeerConnection::~MockLibWebRTCPeerConnection):
(WebCore::MockLibWebRTCPeerConnection::MockLibWebRTCPeerConnection):
(WebCore::MockLibWebRTCPeerConnection::local_streams):
(WebCore::MockLibWebRTCPeerConnection::remote_streams):
(WebCore::MockLibWebRTCPeerConnection::CreateDtmfSender):
(WebCore::MockLibWebRTCPeerConnection::GetStats):
(WebCore::MockLibWebRTCPeerConnection::local_description):
(WebCore::MockLibWebRTCPeerConnection::remote_description):
(WebCore::MockLibWebRTCPeerConnection::AddIceCandidate):
(WebCore::MockLibWebRTCPeerConnection::RegisterUMAObserver):
(WebCore::MockLibWebRTCPeerConnection::signaling_state):
(WebCore::MockLibWebRTCPeerConnection::ice_connection_state):
(WebCore::MockLibWebRTCPeerConnection::ice_gathering_state):
(WebCore::MockLibWebRTCPeerConnection::StopRtcEventLog):
(WebCore::MockLibWebRTCPeerConnection::Close):
(WebCore::MockLibWebRTCPeerConnection::gotLocalDescription):
(WebCore::MockLibWebRTCIceCandidate::MockLibWebRTCIceCandidate):
(WebCore::MockLibWebRTCAudioTrack::MockLibWebRTCAudioTrack):
(WebCore::MockLibWebRTCVideoTrack::MockLibWebRTCVideoTrack):
(WebCore::MockLibWebRTCDataChannel::MockLibWebRTCDataChannel):
(WebCore::MockLibWebRTCPeerConnectionFactory::create):

LayoutTests:

  • TestExpectations: Marking webrtc new tests as skipped for the moment.
  • fast/mediastream/RTCPeerConnection-createAnswer.html:
  • fast/mediastream/RTCPeerConnection-icecandidate-event.html:
  • fast/mediastream/RTCPeerConnection-iceconnectionstatechange-event.html:
  • webrtc/datachannel/basic.html: Added.
  • webrtc/routines.js: Added.

(createConnections):
(closeConnections):
(onCreateSessionDescriptionError):
(gotDescription1):
(gotDescription2):
(iceCallback1):
(iceCallback2):
(onAddIceCandidateSuccess):
(onAddIceCandidateError):

  • webrtc/video.html: Added.
8:29 PM Changeset in webkit [211252] by akling@apple.com
  • 2 edits in branches/safari-603-branch/Source/WebCore

Branch-specific fix for a crash seen after merging r201777.
<rdar://problem/30209068>

Reviewed by Andy Estes.

Add null checking of the FrameView in Document::destroyRenderTree() before
calling functions on it. This is not necessary in trunk, as the FrameView
is guaranteed to be present there.

FrameView can be missing on the branch, since render trees for page cached documents
are destroyed when leaving the page cache, not when entering it (trunk behavior.)
When leaving the page cache, the FrameView is already detached, hence the bug.

  • dom/Document.cpp:

(WebCore::Document::destroyRenderTree):

8:25 PM ComplexTextController edited by mmaxfield@apple.com
(diff)
8:22 PM Changeset in webkit [211251] by Wenson Hsieh
  • 1 edit
    2 adds in trunk/Websites/webkit.org

Unreviewed, add a demo page for an input events blog post

  • demos/input-events/index.html: Added.
8:16 PM ComplexTextController edited by mmaxfield@apple.com
(diff)
8:13 PM ComplexTextController edited by mmaxfield@apple.com
(diff)
8:11 PM image1.JPG attached to ComplexTextController by mmaxfield@apple.com
Example
8:08 PM ComplexTextController created by mmaxfield@apple.com
6:52 PM Changeset in webkit [211250] by dbates@webkit.org
  • 2 edits
    3 adds in trunk/LayoutTests

[QuickLook] Add test to ensure that RTF documents have a unique origin
https://bugs.webkit.org/show_bug.cgi?id=167480

Reviewed by Andy Estes.

  • http/tests/quicklook/resources/document-domain-is-empty-string.rtf: Added.
  • http/tests/quicklook/rtf-document-domain-is-empty-string-expected.txt: Added.
  • http/tests/quicklook/rtf-document-domain-is-empty-string.html: Added.
  • platform/ios-simulator/TestExpectations: Skip the test in OpenSource as we

do not support touch events.

6:17 PM Changeset in webkit [211249] by commit-queue@webkit.org
  • 6 edits in trunk

Page should be able to request pointer lock without user gesture if it relinquished it without a user gesture
https://bugs.webkit.org/show_bug.cgi?id=167126

Patch by Jeremy Jones <jeremyj@apple.com> on 2017-01-26
Reviewed by Jon Lee.

Source/WebCore:

Enabled pointer-lock/locked-element-removed-from-dom.html for WK2.
Not enable in WK1 because of https://bugs.webkit.org/show_bug.cgi?id=167127

This change allows a page to lock the pointer again without a user gesture if it was unlocked by
the page and not by the user. See https://www.w3.org/TR/2016/REC-pointerlock-20161027/ 5.1 Methods

  • page/PointerLockController.cpp:

When a document acquires pointer lock with a user gesture, that document is allowed to request pointer lock again
until the user takes an action to end pointer lock. We know it is a user action because user actions always
call requestPointerUnlockAndForceCursorVisible().

When the page requests a pointer unlock (via requestPointerUnlock), that document is allowed to continue to relock
the page. This continues until there is either an unlock request form the user
via requestPointerUnlockAndForceCursorVisible or a didLosePointerLock without a pointer unlock request.

(WebCore::PointerLockController::PointerLockController):
(WebCore::PointerLockController::requestPointerLock):
(WebCore::PointerLockController::requestPointerUnlock):
(WebCore::PointerLockController::requestPointerUnlockAndForceCursorVisible):
(WebCore::PointerLockController::elementRemoved):
(WebCore::PointerLockController::documentDetached):
(WebCore::PointerLockController::didAcquirePointerLock):
(WebCore::PointerLockController::didLosePointerLock):
(WebCore::PointerLockController::clearElement):

  • page/PointerLockController.h:

LayoutTests:

Enable pointer-lock/locked-element-removed-from-dom.html for WK2 by enabling for Mac and disabling for WK1.
Not enable in WK1 becuase of https://bugs.webkit.org/show_bug.cgi?id=167127

  • platform/mac-wk1/TestExpectations:
  • platform/mac/TestExpectations:
6:00 PM Changeset in webkit [211248] by aestes@apple.com
  • 6 edits
    3 adds
    3 deletes in trunk

[QuickLook] REGRESSION (WebKit2): Requests are made to invalid x-apple-ql-id: URLs
https://bugs.webkit.org/show_bug.cgi?id=167453

Reviewed by Brent Fulgham.

Source/WebCore:

Requests to x-apple-ql-id: URLs should be filtered by
-[QLPreviewConverter safeRequestForRequest:]. This method checks that the URL is one of the
ones generated for the current preview, and changes it to "about:" if it isn't.

WebCore::safeQLURLForDocumentURLAndResourceURL() was responsible for finding the
QLPreviewConverter instance to use by looking it up in an NSMutableDictionary using the
document URL as a key. In WebKit1, this dictionary was populated by the
QuickLookHandleClient when new QuickLookHandles were created, but the WebKit2
QuickLookHandleClient never did this. As a result, requests to invalid URLs were not being
rewritten.

An easy way to load a QuickLook document with invalid URLs is to create an HTML file with a
Microsoft Office extension (e.g. .xls); QuickLook, iWork, and Office support opening HTML
files with Office document extensions. In r207155 we applied a Content Security Policy to
QuickLook documents that only allows x-apple-ql-id: resources to load. This blocked
cross-origin requests from loading, but same-origin requests to URLs that weren't generated
by QLPreviewConverter were still allowed to load.

This change blocks these URLs by calling -[QLPreviewConverter safeRequestForRequest:] in a
way that works for both WebKit1 and WebKit2.

After implementing QuickLook for WebKit2, we found a bug when loading HTML-as-Office
documents (webkit.org/b/135651) that presented as a nil MIME type in the preview
NSURLResponse returned by QLPreviewConverter. Unfortunately r172159 papered over the actual
bug by failing to load previews with nil MIME types.

The real issue was that we were asking for the preview response before QuickLook had
received enough data to determine a MIME type, so this change also removes the bad fix from
r172159 and instead waits until QuickLook has converted the document to ask for its preview
response. This restores the ability to load HTML files with Office document extensions.
These two fixes are combined in a single patch because I don't know how to create an invalid
QuickLook URL for testing without loading an HTML-as-Office document.

Test: quicklook/invalid-ql-id-url.html

  • loader/ResourceLoader.cpp:

(WebCore::ResourceLoader::willSendRequestInternal): Called
QuickLookHandle::willSendRequest() if m_documentLoader has a QuickLookHandle.

  • loader/cache/CachedResource.cpp:

(WebCore::CachedResource::load): Removed the call to
WebCore::safeQLURLForDocumentURLAndResourceURL().

  • loader/ios/QuickLook.h: Removed safeQLURLForDocumentURLAndResourceURL() and declared

QuickLookHandle::willSendRequest().

  • loader/ios/QuickLook.mm: Removed _previewResponse and _hasFailed ivars from

WebPreviewConverter.
(-[WebPreviewConverter initWithResourceLoader:resourceResponse:quickLookHandle:]): Stopped
setting _previewResponse.
(-[WebPreviewConverter _sendDidReceiveResponseIfNecessary]): Only emptied _bufferedDataArray
if we haven't already called -_sendDidReceiveResponseIfNecessary; removed the check for a
nil _previewResponse MIME type; accessed -[QLPreviewConverter previewResponse] now that the
document has been converted and asserted its MIME type is non-nil.
(-[WebPreviewConverter connection:didReceiveData:lengthReceived:]): Removed _hasFailed check.
(-[WebPreviewConverter connectionDidFinishLoading:]): Ditto.
(isQuickLookPasswordError): Moved the check for password failure errors to here from
-connection:didFailWithError: for better readability.
(-[WebPreviewConverter connection:didFailWithError:]): Removed _hasFailed check and used
more early returns.
(WebCore::QuickLookHandle::willSendRequest): Filtered the request through
-[QLPreviewConverter safeRequestWithRequest:] if the request URL's scheme is x-apple-ql-id:.
(WebCore::safeQLURLForDocumentURLAndResourceURL): Deleted.

LayoutTests:

  • quicklook/invalid-ql-id-url-expected.txt: Added.
  • quicklook/invalid-ql-id-url.html: Added.
  • quicklook/nil-response-mime-type-expected.txt: Removed.
  • quicklook/nil-response-mime-type.html: Removed.
  • quicklook/resources/invalid-ql-id-url.xls: Added.
  • quicklook/resources/nil-response-mime-type.xls: Removed.
5:47 PM Changeset in webkit [211247] by keith_miller@apple.com
  • 339 edits in trunk

classInfo should take a VM so it is not materialized from the object on each call
https://bugs.webkit.org/show_bug.cgi?id=167424

Rubber Stamped by Michael Saboff.

Previously, classInfo() would get the VM from the target's
MarkedBlock. Most callers already have a VM on hand, so it is
wasteful to compute the VM from the marked block every time. This
patch refactors some of the most common callers of classInfo(),
jsDynamicCast and inherits to take a VM as well.

Source/JavaScriptCore:

  • API/JSCallbackConstructor.cpp:

(JSC::JSCallbackConstructor::finishCreation):

  • API/JSCallbackFunction.cpp:

(JSC::JSCallbackFunction::finishCreation):

  • API/JSCallbackObjectFunctions.h:

(JSC::JSCallbackObject<Parent>::asCallbackObject):
(JSC::JSCallbackObject<Parent>::finishCreation):

  • API/JSObjectRef.cpp:

(JSObjectSetPrototype):
(classInfoPrivate):
(JSObjectGetPrivate):
(JSObjectSetPrivate):
(JSObjectGetPrivateProperty):
(JSObjectSetPrivateProperty):
(JSObjectDeletePrivateProperty):

  • API/JSTypedArray.cpp:

(JSValueGetTypedArrayType):
(JSObjectMakeTypedArrayWithArrayBuffer):
(JSObjectMakeTypedArrayWithArrayBufferAndOffset):
(JSObjectGetTypedArrayBytesPtr):
(JSObjectGetTypedArrayLength):
(JSObjectGetTypedArrayByteLength):
(JSObjectGetTypedArrayByteOffset):
(JSObjectGetTypedArrayBuffer):
(JSObjectGetArrayBufferBytesPtr):
(JSObjectGetArrayBufferByteLength):

  • API/JSValue.mm:

(isDate):
(isArray):
(valueToObjectWithoutCopy):

  • API/JSValueRef.cpp:

(JSValueIsArray):
(JSValueIsDate):
(JSValueIsObjectOfClass):

  • API/JSWeakObjectMapRefPrivate.cpp:
  • API/JSWrapperMap.mm:

(tryUnwrapObjcObject):

  • API/ObjCCallbackFunction.h:
  • API/ObjCCallbackFunction.mm:

(tryUnwrapConstructor):

  • bindings/ScriptFunctionCall.cpp:

(Deprecated::ScriptFunctionCall::call):

  • bytecode/CallVariant.h:

(JSC::CallVariant::internalFunction):
(JSC::CallVariant::function):
(JSC::CallVariant::isClosureCall):
(JSC::CallVariant::executable):
(JSC::CallVariant::functionExecutable):
(JSC::CallVariant::nativeExecutable):

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::finishCreation):
(JSC::CodeBlock::setConstantRegisters):
(JSC::CodeBlock::replacement):
(JSC::CodeBlock::computeCapabilityLevel):
(JSC::CodeBlock::nameForRegister):

  • bytecode/ObjectAllocationProfile.h:

(JSC::ObjectAllocationProfile::possibleDefaultPropertyCount):

  • bytecode/ObjectPropertyCondition.cpp:

(JSC::ObjectPropertyCondition::attemptToMakeEquivalenceWithoutBarrier):

  • bytecode/ObjectPropertyCondition.h:

(JSC::ObjectPropertyCondition::isValidValueForPresence):

  • bytecode/PropertyCondition.cpp:

(JSC::PropertyCondition::isValidValueForAttributes):
(JSC::PropertyCondition::isValidValueForPresence):
(JSC::PropertyCondition::attemptToMakeEquivalenceWithoutBarrier):

  • bytecode/PropertyCondition.h:
  • bytecode/SpeculatedType.cpp:

(JSC::speculationFromCell):

  • debugger/Debugger.cpp:
  • debugger/DebuggerCallFrame.cpp:

(JSC::DebuggerCallFrame::functionName):
(JSC::DebuggerCallFrame::scope):
(JSC::DebuggerCallFrame::type):

  • debugger/DebuggerScope.cpp:

(JSC::DebuggerScope::name):
(JSC::DebuggerScope::location):

  • dfg/DFGAbstractInterpreter.h:
  • dfg/DFGAbstractInterpreterInlines.h:

(JSC::DFG::AbstractInterpreter<AbstractStateType>::AbstractInterpreter):
(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::get):
(JSC::DFG::ByteCodeParser::handleIntrinsicCall):
(JSC::DFG::ByteCodeParser::planLoad):
(JSC::DFG::ByteCodeParser::checkPresenceLike):
(JSC::DFG::ByteCodeParser::load):
(JSC::DFG::ByteCodeParser::parseBlock):

  • dfg/DFGConstantFoldingPhase.cpp:

(JSC::DFG::ConstantFoldingPhase::foldConstants):

  • dfg/DFGDesiredWeakReferences.cpp:

(JSC::DFG::DesiredWeakReferences::reallyAdd):

  • dfg/DFGFixupPhase.cpp:

(JSC::DFG::FixupPhase::fixupMakeRope):

  • dfg/DFGFrozenValue.h:

(JSC::DFG::FrozenValue::FrozenValue):
(JSC::DFG::FrozenValue::dynamicCast):

  • dfg/DFGGraph.cpp:

(JSC::DFG::Graph::dump):
(JSC::DFG::Graph::tryGetConstantClosureVar):
(JSC::DFG::Graph::tryGetFoldableView):
(JSC::DFG::Graph::getRegExpPrototypeProperty):
(JSC::DFG::Graph::isStringPrototypeMethodSane):
(JSC::DFG::Graph::canOptimizeStringObjectAccess):

  • dfg/DFGLazyJSValue.cpp:

(JSC::DFG::LazyJSValue::tryGetStringImpl):
(JSC::DFG::LazyJSValue::tryGetString):

  • dfg/DFGLazyJSValue.h:
  • dfg/DFGNode.cpp:

(JSC::DFG::Node::convertToPutStructureHint):

  • dfg/DFGNode.h:

(JSC::DFG::Node::dynamicCastConstant):
(JSC::DFG::Node::castConstant):

  • dfg/DFGOperations.cpp:
  • dfg/DFGSafeToExecute.h:

(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileIn):
(JSC::DFG::SpeculativeJIT::compileMaterializeNewObject):

  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::emitCall):
(JSC::DFG::SpeculativeJIT::compile):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::emitCall):
(JSC::DFG::SpeculativeJIT::compile):

  • dfg/DFGStrengthReductionPhase.cpp:

(JSC::DFG::StrengthReductionPhase::handleNode):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileDirectCallOrConstruct):
(JSC::FTL::DFG::LowerDFGToB3::compileIn):
(JSC::FTL::DFG::LowerDFGToB3::compileMaterializeCreateActivation):
(JSC::FTL::DFG::LowerDFGToB3::compileStringReplace):

  • ftl/FTLOperations.cpp:

(JSC::FTL::operationMaterializeObjectInOSR):

  • heap/CodeBlockSet.cpp:

(JSC::CodeBlockSet::lastChanceToFinalize):
(JSC::CodeBlockSet::deleteUnmarkedAndUnreferenced):

  • heap/CodeBlockSet.h:
  • heap/GCAssertions.h:
  • heap/Heap.cpp:

(JSC::Heap::lastChanceToFinalize):
(JSC::Heap::protectedObjectTypeCounts):
(JSC::Heap::objectTypeCounts):
(JSC::Heap::deleteUnmarkedCompiledCode):

  • heap/HeapSnapshotBuilder.cpp:

(JSC::HeapSnapshotBuilder::json):

  • heap/SlotVisitor.cpp:

(JSC::validate):

  • inspector/InjectedScriptHost.h:
  • inspector/JSGlobalObjectInspectorController.cpp:

(Inspector::JSGlobalObjectInspectorController::reportAPIException):

  • inspector/JSInjectedScriptHost.cpp:

(Inspector::JSInjectedScriptHost::finishCreation):
(Inspector::JSInjectedScriptHost::isHTMLAllCollection):
(Inspector::JSInjectedScriptHost::subtype):
(Inspector::JSInjectedScriptHost::functionDetails):
(Inspector::JSInjectedScriptHost::getInternalProperties):
(Inspector::JSInjectedScriptHost::proxyTargetValue):
(Inspector::JSInjectedScriptHost::weakMapSize):
(Inspector::JSInjectedScriptHost::weakMapEntries):
(Inspector::JSInjectedScriptHost::weakSetSize):
(Inspector::JSInjectedScriptHost::weakSetEntries):
(Inspector::JSInjectedScriptHost::iteratorEntries):

  • inspector/JSInjectedScriptHostPrototype.cpp:

(Inspector::JSInjectedScriptHostPrototype::finishCreation):
(Inspector::jsInjectedScriptHostPrototypeAttributeEvaluate):
(Inspector::jsInjectedScriptHostPrototypeFunctionInternalConstructorName):
(Inspector::jsInjectedScriptHostPrototypeFunctionIsHTMLAllCollection):
(Inspector::jsInjectedScriptHostPrototypeFunctionProxyTargetValue):
(Inspector::jsInjectedScriptHostPrototypeFunctionWeakMapSize):
(Inspector::jsInjectedScriptHostPrototypeFunctionWeakMapEntries):
(Inspector::jsInjectedScriptHostPrototypeFunctionWeakSetSize):
(Inspector::jsInjectedScriptHostPrototypeFunctionWeakSetEntries):
(Inspector::jsInjectedScriptHostPrototypeFunctionIteratorEntries):
(Inspector::jsInjectedScriptHostPrototypeFunctionEvaluateWithScopeExtension):
(Inspector::jsInjectedScriptHostPrototypeFunctionSubtype):
(Inspector::jsInjectedScriptHostPrototypeFunctionFunctionDetails):
(Inspector::jsInjectedScriptHostPrototypeFunctionGetInternalProperties):

  • inspector/JSJavaScriptCallFrame.cpp:

(Inspector::JSJavaScriptCallFrame::finishCreation):
(Inspector::toJSJavaScriptCallFrame): Deleted.

  • inspector/JSJavaScriptCallFrame.h:
  • inspector/JSJavaScriptCallFramePrototype.cpp:

(Inspector::JSJavaScriptCallFramePrototype::finishCreation):
(Inspector::jsJavaScriptCallFramePrototypeFunctionEvaluateWithScopeExtension):
(Inspector::jsJavaScriptCallFramePrototypeFunctionScopeDescriptions):
(Inspector::jsJavaScriptCallFrameAttributeCaller):
(Inspector::jsJavaScriptCallFrameAttributeSourceID):
(Inspector::jsJavaScriptCallFrameAttributeLine):
(Inspector::jsJavaScriptCallFrameAttributeColumn):
(Inspector::jsJavaScriptCallFrameAttributeFunctionName):
(Inspector::jsJavaScriptCallFrameAttributeScopeChain):
(Inspector::jsJavaScriptCallFrameAttributeThisObject):
(Inspector::jsJavaScriptCallFrameAttributeType):
(Inspector::jsJavaScriptCallFrameIsTailDeleted):

  • inspector/ScriptArguments.cpp:

(Inspector::ScriptArguments::getFirstArgumentAsString):

  • inspector/agents/InspectorHeapAgent.cpp:

(Inspector::InspectorHeapAgent::getPreview):

  • interpreter/Interpreter.cpp:

(JSC::notifyDebuggerOfUnwinding):
(JSC::Interpreter::unwind):
(JSC::Interpreter::notifyDebuggerOfExceptionToBeThrown):
(JSC::Interpreter::execute):

  • interpreter/ShadowChicken.cpp:

(JSC::ShadowChicken::update):

  • interpreter/StackVisitor.cpp:

(JSC::StackVisitor::readFrame):
(JSC::StackVisitor::readNonInlinedFrame):
(JSC::StackVisitor::Frame::calleeSaveRegisters):

  • jit/JITCode.cpp:

(JSC::JITCode::execute):

  • jit/JITOperations.cpp:

(JSC::operationNewFunctionCommon):

  • jit/Repatch.cpp:

(JSC::tryCacheGetByID):

  • jsc.cpp:

(WTF::CustomGetter::customGetter):
(WTF::RuntimeArray::finishCreation):
(WTF::RuntimeArray::lengthGetter):
(WTF::DOMJITGetter::customGetter):
(WTF::DOMJITGetterComplex::DOMJITNodeDOMJIT::slowCall):
(WTF::DOMJITGetterComplex::functionEnableException):
(WTF::DOMJITGetterComplex::customGetter):
(WTF::DOMJITFunctionObject::safeFunction):
(functionDescribeArray):
(functionCreateElement):
(functionGetElement):
(functionSetElementRoot):
(functionGetHiddenValue):
(functionSetHiddenValue):
(functionSetImpureGetterDelegate):
(functionNoFTL):
(functionDollarEvalScript):
(functionDollarAgentBroadcast):
(functionTransferArrayBuffer):
(functionFindTypeForExpression):
(functionReturnTypeFor):
(functionHasBasicBlockExecuted):
(functionBasicBlockExecutionCount):
(functionEnsureArrayStorage):

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::LLINT_SLOW_PATH_DECL):

  • runtime/AbstractModuleRecord.cpp:

(JSC::AbstractModuleRecord::finishCreation):

  • runtime/ArrayBuffer.cpp:

(JSC::ArrayBuffer::transferTo):

  • runtime/ArrayBuffer.h:
  • runtime/ArrayConstructor.cpp:

(JSC::ArrayConstructor::finishCreation):
(JSC::arrayConstructorPrivateFuncIsArraySlow):
(JSC::arrayConstructorPrivateFuncIsArrayConstructor):

  • runtime/ArrayConstructor.h:

(JSC::isArrayConstructor): Deleted.

  • runtime/ArrayIteratorPrototype.cpp:

(JSC::ArrayIteratorPrototype::finishCreation):

  • runtime/ArrayPrototype.cpp:

(JSC::ArrayPrototype::finishCreation):

  • runtime/AsyncFunctionPrototype.cpp:

(JSC::AsyncFunctionPrototype::finishCreation):

  • runtime/AtomicsObject.cpp:

(JSC::AtomicsObject::finishCreation):
(JSC::atomicsFuncWait):
(JSC::atomicsFuncWake):

  • runtime/BooleanObject.cpp:

(JSC::BooleanObject::finishCreation):

  • runtime/BooleanObject.h:

(JSC::asBooleanObject):

  • runtime/BooleanPrototype.cpp:

(JSC::BooleanPrototype::finishCreation):
(JSC::booleanProtoFuncToString):
(JSC::booleanProtoFuncValueOf):

  • runtime/ConsoleObject.cpp:

(JSC::ConsoleObject::finishCreation):

  • runtime/DateConstructor.cpp:

(JSC::constructDate):

  • runtime/DateInstance.cpp:

(JSC::DateInstance::finishCreation):

  • runtime/DateInstance.h:

(JSC::asDateInstance):

  • runtime/DatePrototype.cpp:

(JSC::formateDateInstance):
(JSC::DatePrototype::finishCreation):
(JSC::dateProtoFuncToISOString):
(JSC::dateProtoFuncToLocaleString):
(JSC::dateProtoFuncToLocaleDateString):
(JSC::dateProtoFuncToLocaleTimeString):
(JSC::dateProtoFuncGetTime):
(JSC::dateProtoFuncGetFullYear):
(JSC::dateProtoFuncGetUTCFullYear):
(JSC::dateProtoFuncGetMonth):
(JSC::dateProtoFuncGetUTCMonth):
(JSC::dateProtoFuncGetDate):
(JSC::dateProtoFuncGetUTCDate):
(JSC::dateProtoFuncGetDay):
(JSC::dateProtoFuncGetUTCDay):
(JSC::dateProtoFuncGetHours):
(JSC::dateProtoFuncGetUTCHours):
(JSC::dateProtoFuncGetMinutes):
(JSC::dateProtoFuncGetUTCMinutes):
(JSC::dateProtoFuncGetSeconds):
(JSC::dateProtoFuncGetUTCSeconds):
(JSC::dateProtoFuncGetMilliSeconds):
(JSC::dateProtoFuncGetUTCMilliseconds):
(JSC::dateProtoFuncGetTimezoneOffset):
(JSC::dateProtoFuncSetTime):
(JSC::setNewValueFromTimeArgs):
(JSC::setNewValueFromDateArgs):
(JSC::dateProtoFuncSetYear):
(JSC::dateProtoFuncGetYear):

  • runtime/ErrorInstance.cpp:

(JSC::ErrorInstance::finishCreation):

  • runtime/ErrorPrototype.cpp:

(JSC::ErrorPrototype::finishCreation):

  • runtime/ExceptionHelpers.cpp:

(JSC::isTerminatedExecutionException):

  • runtime/ExceptionHelpers.h:
  • runtime/ExecutableBase.cpp:

(JSC::ExecutableBase::clearCode):
(JSC::ExecutableBase::dump):
(JSC::ExecutableBase::hashFor):

  • runtime/FunctionPrototype.cpp:

(JSC::functionProtoFuncToString):

  • runtime/GeneratorFunctionPrototype.cpp:

(JSC::GeneratorFunctionPrototype::finishCreation):

  • runtime/GeneratorPrototype.cpp:

(JSC::GeneratorPrototype::finishCreation):

  • runtime/GetterSetter.h:
  • runtime/InspectorInstrumentationObject.cpp:

(JSC::InspectorInstrumentationObject::finishCreation):

  • runtime/InternalFunction.cpp:

(JSC::InternalFunction::finishCreation):
(JSC::InternalFunction::createSubclassStructure):

  • runtime/InternalFunction.h:

(JSC::asInternalFunction):

  • runtime/IntlCollator.cpp:

(JSC::IntlCollator::finishCreation):

  • runtime/IntlCollatorPrototype.cpp:

(JSC::IntlCollatorPrototypeGetterCompare):
(JSC::IntlCollatorPrototypeFuncResolvedOptions):

  • runtime/IntlDateTimeFormat.cpp:

(JSC::IntlDateTimeFormat::finishCreation):

  • runtime/IntlDateTimeFormatPrototype.cpp:

(JSC::IntlDateTimeFormatPrototypeGetterFormat):
(JSC::IntlDateTimeFormatPrototypeFuncResolvedOptions):

  • runtime/IntlNumberFormat.cpp:

(JSC::IntlNumberFormat::finishCreation):

  • runtime/IntlNumberFormatPrototype.cpp:

(JSC::IntlNumberFormatPrototypeGetterFormat):
(JSC::IntlNumberFormatPrototypeFuncResolvedOptions):

  • runtime/IntlObject.cpp:

(JSC::IntlObject::finishCreation):

  • runtime/IntlObjectInlines.h:

(JSC::constructIntlInstanceWithWorkaroundForLegacyIntlConstructor):

  • runtime/IteratorPrototype.cpp:

(JSC::IteratorPrototype::finishCreation):

  • runtime/JSArray.h:

(JSC::asArray):
(JSC::isJSArray):

  • runtime/JSArrayBuffer.h:

(JSC::toPossiblySharedArrayBuffer):
(JSC::toUnsharedArrayBuffer):
(JSC::JSArrayBuffer::toWrapped):

  • runtime/JSArrayBufferConstructor.cpp:

(JSC::arrayBufferFuncIsView):

  • runtime/JSArrayBufferPrototype.cpp:

(JSC::arrayBufferProtoFuncSlice):

  • runtime/JSArrayBufferView.h:
  • runtime/JSArrayBufferViewInlines.h:

(JSC::JSArrayBufferView::toWrapped):

  • runtime/JSBoundFunction.cpp:

(JSC::isBoundFunction):
(JSC::getBoundFunctionStructure):
(JSC::JSBoundFunction::finishCreation):

  • runtime/JSCJSValue.cpp:

(JSC::JSValue::dumpForBacktrace):

  • runtime/JSCJSValue.h:
  • runtime/JSCJSValueInlines.h:

(JSC::JSValue::inherits):
(JSC::JSValue::classInfoOrNull):

  • runtime/JSCallee.cpp:

(JSC::JSCallee::finishCreation):

  • runtime/JSCell.cpp:

(JSC::JSCell::dumpToStream):
(JSC::JSCell::className):
(JSC::JSCell::isAnyWasmCallee):

  • runtime/JSCell.h:

(JSC::jsCast):
(JSC::jsDynamicCast):

  • runtime/JSCellInlines.h:

(JSC::JSCell::methodTable):
(JSC::JSCell::inherits):
(JSC::JSCell::classInfo):

  • runtime/JSCustomGetterSetterFunction.cpp:

(JSC::JSCustomGetterSetterFunction::finishCreation):

  • runtime/JSDataViewPrototype.cpp:

(JSC::getData):
(JSC::setData):
(JSC::dataViewProtoGetterBuffer):
(JSC::dataViewProtoGetterByteLength):
(JSC::dataViewProtoGetterByteOffset):

  • runtime/JSFunction.cpp:

(JSC::JSFunction::finishCreation):
(JSC::JSFunction::allocateAndInitializeRareData):
(JSC::JSFunction::initializeRareData):
(JSC::RetrieveArgumentsFunctor::RetrieveArgumentsFunctor):
(JSC::RetrieveCallerFunctionFunctor::RetrieveCallerFunctionFunctor):
(JSC::RetrieveCallerFunctionFunctor::operator()):
(JSC::JSFunction::callerGetter):
(JSC::JSFunction::getOwnNonIndexPropertyNames):
(JSC::getCalculatedDisplayName):
(JSC::JSFunction::reifyBoundNameIfNeeded):

  • runtime/JSGenericTypedArrayView.h:

(JSC::toPossiblySharedNativeTypedView):
(JSC::toUnsharedNativeTypedView):
(JSC::JSGenericTypedArrayView<Adaptor>::toWrapped):

  • runtime/JSGenericTypedArrayViewConstructorInlines.h:

(JSC::constructGenericTypedArrayViewWithArguments):
(JSC::constructGenericTypedArrayView):

  • runtime/JSGenericTypedArrayViewInlines.h:

(JSC::JSGenericTypedArrayView<Adaptor>::set):

  • runtime/JSGenericTypedArrayViewPrototypeFunctions.h:

(JSC::speciesConstruct):
(JSC::genericTypedArrayViewProtoFuncSet):
(JSC::genericTypedArrayViewProtoFuncSlice):
(JSC::genericTypedArrayViewPrivateFuncSubarrayCreate):

  • runtime/JSGenericTypedArrayViewPrototypeInlines.h:

(JSC::JSGenericTypedArrayViewPrototype<ViewClass>::finishCreation):

  • runtime/JSGlobalObject.cpp:

(JSC::getTemplateObject):
(JSC::enqueueJob):
(JSC::JSGlobalObject::init):

  • runtime/JSGlobalObjectFunctions.cpp:

(JSC::globalFuncProtoGetter):
(JSC::globalFuncProtoSetter):

  • runtime/JSInternalPromiseDeferred.cpp:

(JSC::JSInternalPromiseDeferred::create):

  • runtime/JSLexicalEnvironment.h:

(JSC::asActivation):

  • runtime/JSModuleLoader.cpp:

(JSC::JSModuleLoader::finishCreation):
(JSC::JSModuleLoader::evaluate):
(JSC::JSModuleLoader::getModuleNamespaceObject):

  • runtime/JSModuleNamespaceObject.cpp:

(JSC::JSModuleNamespaceObject::finishCreation):
(JSC::moduleNamespaceObjectSymbolIterator):

  • runtime/JSModuleRecord.cpp:

(JSC::JSModuleRecord::finishCreation):

  • runtime/JSNativeStdFunction.cpp:

(JSC::JSNativeStdFunction::finishCreation):

  • runtime/JSONObject.cpp:

(JSC::JSONObject::finishCreation):
(JSC::unwrapBoxedPrimitive):
(JSC::Stringifier::Stringifier):
(JSC::Walker::walk):

  • runtime/JSObject.cpp:

(JSC::JSObject::className):
(JSC::JSObject::toStringName):
(JSC::JSObject::calculatedClassName):
(JSC::JSObject::putInlineSlow):
(JSC::JSObject::ensureInt32Slow):
(JSC::JSObject::ensureDoubleSlow):
(JSC::JSObject::ensureContiguousSlow):
(JSC::JSObject::ensureArrayStorageSlow):
(JSC::JSObject::deleteProperty):
(JSC::JSObject::getOwnStaticPropertySlot):
(JSC::JSObject::findPropertyHashEntry):
(JSC::JSObject::getOwnNonIndexPropertyNames):
(JSC::JSObject::reifyAllStaticProperties):
(JSC::JSObject::getOwnPropertyDescriptor):

  • runtime/JSObject.h:

(JSC::JSObject::finishCreation):
(JSC::JSNonFinalObject::finishCreation):
(JSC::JSFinalObject::finishCreation):

  • runtime/JSPromiseDeferred.cpp:

(JSC::JSPromiseDeferred::create):

  • runtime/JSPropertyNameIterator.cpp:

(JSC::JSPropertyNameIterator::finishCreation):
(JSC::propertyNameIteratorFuncNext):

  • runtime/JSScope.cpp:

(JSC::JSScope::symbolTable):

  • runtime/JSScope.h:
  • runtime/JSString.cpp:

(JSC::JSString::dumpToStream):

  • runtime/JSStringIterator.cpp:

(JSC::JSStringIterator::finishCreation):

  • runtime/JSTypedArrayViewPrototype.cpp:

(JSC::typedArrayViewPrivateFuncIsTypedArrayView):
(JSC::typedArrayViewPrivateFuncLength):
(JSC::typedArrayViewPrivateFuncGetOriginalConstructor):
(JSC::typedArrayViewProtoGetterFuncToStringTag):
(JSC::JSTypedArrayViewPrototype::finishCreation):

  • runtime/LazyClassStructure.cpp:

(JSC::LazyClassStructure::Initializer::setConstructor):

  • runtime/Lookup.h:

(JSC::putEntry):

  • runtime/MapConstructor.cpp:

(JSC::MapConstructor::finishCreation):

  • runtime/MapIteratorPrototype.cpp:

(JSC::MapIteratorPrototype::finishCreation):
(JSC::MapIteratorPrototypeFuncNext):

  • runtime/MapPrototype.cpp:

(JSC::MapPrototype::finishCreation):
(JSC::mapProtoFuncValues):
(JSC::mapProtoFuncEntries):
(JSC::mapProtoFuncKeys):
(JSC::privateFuncMapIterator):
(JSC::privateFuncMapIteratorNext):

  • runtime/MathObject.cpp:

(JSC::MathObject::finishCreation):

  • runtime/ModuleLoaderPrototype.cpp:

(JSC::moduleLoaderPrototypeParseModule):
(JSC::moduleLoaderPrototypeRequestedModules):
(JSC::moduleLoaderPrototypeModuleDeclarationInstantiation):
(JSC::moduleLoaderPrototypeResolve):
(JSC::moduleLoaderPrototypeFetch):
(JSC::moduleLoaderPrototypeInstantiate):
(JSC::moduleLoaderPrototypeGetModuleNamespaceObject):
(JSC::moduleLoaderPrototypeEvaluate):

  • runtime/NativeErrorConstructor.cpp:

(JSC::NativeErrorConstructor::finishCreation):

  • runtime/NumberConstructor.cpp:

(JSC::NumberConstructor::finishCreation):

  • runtime/NumberObject.cpp:

(JSC::NumberObject::finishCreation):

  • runtime/NumberPrototype.cpp:

(JSC::NumberPrototype::finishCreation):

  • runtime/ObjectConstructor.cpp:

(JSC::ObjectConstructor::finishCreation):

  • runtime/ObjectPrototype.cpp:

(JSC::ObjectPrototype::finishCreation):

  • runtime/ProxyObject.cpp:

(JSC::ProxyObject::toStringName):
(JSC::ProxyObject::finishCreation):

  • runtime/ReflectObject.cpp:

(JSC::ReflectObject::finishCreation):
(JSC::reflectObjectConstruct):

  • runtime/RegExpConstructor.cpp:

(JSC::RegExpConstructor::finishCreation):
(JSC::setRegExpConstructorInput):
(JSC::setRegExpConstructorMultiline):
(JSC::constructRegExp):

  • runtime/RegExpConstructor.h:

(JSC::asRegExpConstructor):
(JSC::isRegExp):

  • runtime/RegExpObject.cpp:

(JSC::RegExpObject::finishCreation):

  • runtime/RegExpObject.h:

(JSC::asRegExpObject):

  • runtime/RegExpPrototype.cpp:

(JSC::RegExpPrototype::finishCreation):
(JSC::regExpProtoFuncTestFast):
(JSC::regExpProtoFuncExec):
(JSC::regExpProtoFuncMatchFast):
(JSC::regExpProtoFuncCompile):
(JSC::regExpProtoGetterGlobal):
(JSC::regExpProtoGetterIgnoreCase):
(JSC::regExpProtoGetterMultiline):
(JSC::regExpProtoGetterSticky):
(JSC::regExpProtoGetterUnicode):
(JSC::regExpProtoGetterSource):

  • runtime/SamplingProfiler.cpp:

(JSC::SamplingProfiler::processUnverifiedStackTraces):

  • runtime/ScriptExecutable.cpp:

(JSC::ScriptExecutable::newCodeBlockFor):
(JSC::ScriptExecutable::newReplacementCodeBlockFor):

  • runtime/SetConstructor.cpp:

(JSC::SetConstructor::finishCreation):

  • runtime/SetIteratorPrototype.cpp:

(JSC::SetIteratorPrototype::finishCreation):
(JSC::SetIteratorPrototypeFuncNext):

  • runtime/SetPrototype.cpp:

(JSC::SetPrototype::finishCreation):
(JSC::setProtoFuncValues):
(JSC::setProtoFuncEntries):
(JSC::privateFuncSetIterator):
(JSC::privateFuncSetIteratorNext):

  • runtime/StackFrame.cpp:

(JSC::StackFrame::sourceURL):
(JSC::StackFrame::functionName):

  • runtime/StringIteratorPrototype.cpp:

(JSC::StringIteratorPrototype::finishCreation):

  • runtime/StringObject.cpp:

(JSC::StringObject::finishCreation):

  • runtime/StringObject.h:

(JSC::asStringObject):

  • runtime/StringPrototype.cpp:

(JSC::StringPrototype::finishCreation):
(JSC::replace):
(JSC::stringProtoFuncReplaceUsingRegExp):
(JSC::stringProtoFuncToString):

  • runtime/StructureRareData.cpp:

(JSC::StructureRareData::setObjectToStringValue):

  • runtime/Symbol.cpp:

(JSC::Symbol::finishCreation):

  • runtime/SymbolConstructor.cpp:

(JSC::SymbolConstructor::finishCreation):

  • runtime/SymbolObject.cpp:

(JSC::SymbolObject::finishCreation):

  • runtime/SymbolPrototype.cpp:

(JSC::SymbolPrototype::finishCreation):
(JSC::symbolProtoFuncToString):
(JSC::symbolProtoFuncValueOf):

  • runtime/TestRunnerUtils.cpp:

(JSC::getExecutableForFunction):

  • runtime/ThrowScope.cpp:

(JSC::ThrowScope::throwException):

  • runtime/VM.cpp:

(JSC::VM::throwException):

  • runtime/WeakMapConstructor.cpp:

(JSC::WeakMapConstructor::finishCreation):

  • runtime/WeakMapPrototype.cpp:

(JSC::WeakMapPrototype::finishCreation):
(JSC::getWeakMapData):

  • runtime/WeakSetConstructor.cpp:

(JSC::WeakSetConstructor::finishCreation):

  • runtime/WeakSetPrototype.cpp:

(JSC::WeakSetPrototype::finishCreation):
(JSC::getWeakMapData):

  • tools/JSDollarVMPrototype.cpp:

(JSC::codeBlockFromArg):

  • wasm/JSWebAssembly.cpp:

(JSC::JSWebAssembly::finishCreation):

  • wasm/js/JSWebAssemblyHelpers.h:

(JSC::getWasmBufferFromValue):

  • wasm/js/JSWebAssemblyInstance.cpp:

(JSC::JSWebAssemblyInstance::finishCreation):

  • wasm/js/JSWebAssemblyMemory.cpp:

(JSC::JSWebAssemblyMemory::grow):
(JSC::JSWebAssemblyMemory::finishCreation):
(JSC::JSWebAssemblyMemory::destroy):
(JSC::JSWebAssemblyMemory::~JSWebAssemblyMemory): Deleted.

  • wasm/js/JSWebAssemblyMemory.h:
  • wasm/js/JSWebAssemblyModule.cpp:

(JSC::JSWebAssemblyModule::finishCreation):

  • wasm/js/JSWebAssemblyTable.cpp:

(JSC::JSWebAssemblyTable::finishCreation):

  • wasm/js/WebAssemblyFunction.cpp:

(JSC::callWebAssemblyFunction):
(JSC::WebAssemblyFunction::finishCreation):

  • wasm/js/WebAssemblyInstanceConstructor.cpp:

(JSC::constructJSWebAssemblyInstance):

  • wasm/js/WebAssemblyMemoryPrototype.cpp:

(JSC::getMemory):

  • wasm/js/WebAssemblyModulePrototype.cpp:

(JSC::webAssemblyModuleProtoCustomSections):

  • wasm/js/WebAssemblyModuleRecord.cpp:

(JSC::WebAssemblyModuleRecord::finishCreation):

  • wasm/js/WebAssemblyTablePrototype.cpp:

(JSC::getTable):
(JSC::webAssemblyTableProtoFuncSet):

Source/WebCore:

  • Modules/fetch/FetchBody.cpp:

(WebCore::FetchBody::extract):

  • Modules/plugins/QuickTimePluginReplacement.mm:

(WebCore::QuickTimePluginReplacement::installReplacement):

  • bindings/js/IDBBindingUtilities.cpp:

(WebCore::createIDBKeyFromValue):

  • bindings/js/JSCommandLineAPIHostCustom.cpp:

(WebCore::JSCommandLineAPIHost::getEventListeners):
(WebCore::JSCommandLineAPIHost::databaseId):
(WebCore::JSCommandLineAPIHost::storageId):

  • bindings/js/JSCryptoAlgorithmDictionary.cpp:

(WebCore::JSCryptoAlgorithmDictionary::parseAlgorithmIdentifier):
(WebCore::createRsaKeyGenParams):

  • bindings/js/JSCryptoCustom.cpp:

(WebCore::JSCrypto::getRandomValues):

  • bindings/js/JSCryptoOperationData.cpp:

(WebCore::cryptoOperationDataFromJSValue):

  • bindings/js/JSCustomElementInterface.cpp:

(WebCore::constructCustomElementSynchronously):
(WebCore::JSCustomElementInterface::upgradeElement):

  • bindings/js/JSDOMBinding.cpp:

(WebCore::valueToDate):
(WebCore::reportException):
(WebCore::retrieveErrorMessage):

  • bindings/js/JSDOMBinding.h:

(WebCore::castThisValue):
(WebCore::toPossiblySharedArrayBufferView):
(WebCore::toUnsharedArrayBufferView):
(WebCore::toPossiblySharedInt8Array):
(WebCore::toPossiblySharedInt16Array):
(WebCore::toPossiblySharedInt32Array):
(WebCore::toPossiblySharedUint8Array):
(WebCore::toPossiblySharedUint8ClampedArray):
(WebCore::toPossiblySharedUint16Array):
(WebCore::toPossiblySharedUint32Array):
(WebCore::toPossiblySharedFloat32Array):
(WebCore::toPossiblySharedFloat64Array):
(WebCore::toUnsharedInt8Array):
(WebCore::toUnsharedInt16Array):
(WebCore::toUnsharedInt32Array):
(WebCore::toUnsharedUint8Array):
(WebCore::toUnsharedUint8ClampedArray):
(WebCore::toUnsharedUint16Array):
(WebCore::toUnsharedUint32Array):
(WebCore::toUnsharedFloat32Array):
(WebCore::toUnsharedFloat64Array):
(WebCore::toRefNativeArray):

  • bindings/js/JSDOMConstructor.h:

(WebCore::JSDOMConstructorNotConstructable<JSClass>::finishCreation):
(WebCore::JSDOMConstructor<JSClass>::finishCreation):
(WebCore::JSDOMNamedConstructor<JSClass>::finishCreation):
(WebCore::JSBuiltinConstructor<JSClass>::finishCreation):

  • bindings/js/JSDOMConvert.h:

(WebCore::Converter<IDLInterface<T>>::convert):
(WebCore::Converter<IDLXPathNSResolver<T>>::convert):

  • bindings/js/JSDOMGlobalObject.cpp:

(WebCore::JSDOMGlobalObject::finishCreation):
(WebCore::JSDOMGlobalObject::scriptExecutionContext):

  • bindings/js/JSDOMIterator.h:

(WebCore::IteratorTraits>::next):
(WebCore::IteratorTraits>::finishCreation):

  • bindings/js/JSDOMWindowBase.cpp:

(WebCore::JSDOMWindowBase::finishCreation):
(WebCore::toJSDOMWindow):

  • bindings/js/JSDOMWindowBase.h:
  • bindings/js/JSDOMWindowCustom.cpp:

(WebCore::jsDOMWindowWebKit):
(WebCore::JSDOMWindow::toWrapped):

  • bindings/js/JSDOMWindowShell.cpp:

(WebCore::JSDOMWindowShell::finishCreation):
(WebCore::JSDOMWindowShell::toWrapped):

  • bindings/js/JSDOMWindowShell.h:
  • bindings/js/JSDocumentCustom.cpp:

(WebCore::cachedDocumentWrapper):
(WebCore::JSDocument::createTouchList):

  • bindings/js/JSDynamicDowncast.h:

(WebCore::JSDynamicCastTrait::cast):
(WebCore::JSDynamicCastTrait<JSNode>::cast):
(WebCore::JSDynamicCastTrait<JSElement>::cast):
(WebCore::JSDynamicCastTrait<JSDocument>::cast):
(WebCore::JSDynamicCastTrait<JSEvent>::cast):
(WebCore::jsDynamicDowncast):

  • bindings/js/JSEventListener.cpp:

(WebCore::JSEventListener::handleEvent):

  • bindings/js/JSEventTargetCustom.cpp:

(WebCore::JSEventTarget::toWrapped):
(WebCore::jsEventTargetCast):

  • bindings/js/JSEventTargetCustom.h:

(WebCore::BindingCaller<JSEventTarget>::callOperation):

  • bindings/js/JSExceptionBase.cpp:

(WebCore::toExceptionBase):

  • bindings/js/JSExceptionBase.h:
  • bindings/js/JSInspectorFrontendHostCustom.cpp:

(WebCore::populateContextMenuItems):
(WebCore::JSInspectorFrontendHost::showContextMenu):

  • bindings/js/JSNodeCustom.cpp:

(WebCore::JSNode::insertBefore):
(WebCore::JSNode::replaceChild):
(WebCore::JSNode::removeChild):
(WebCore::JSNode::appendChild):
(WebCore::JSNode::pushEventHandlerScope):

  • bindings/js/JSPluginElementFunctions.cpp:

(WebCore::pluginElementPropertyGetter):

  • bindings/js/JSReadableStreamPrivateConstructors.cpp:

(WebCore::constructJSReadableStreamDefaultReader):

  • bindings/js/JSReadableStreamSourceCustom.cpp:

(WebCore::startReadableStream):
(WebCore::JSReadableStreamSource::start):
(WebCore::pullReadableStream):

  • bindings/js/JSSubtleCryptoCustom.cpp:

(WebCore::toCryptoKey):
(WebCore::jsSubtleCryptoFunctionEncryptPromise):
(WebCore::jsSubtleCryptoFunctionDecryptPromise):
(WebCore::jsSubtleCryptoFunctionSignPromise):
(WebCore::jsSubtleCryptoFunctionVerifyPromise):
(WebCore::jsSubtleCryptoFunctionDigestPromise):
(WebCore::jsSubtleCryptoFunctionWrapKeyPromise):
(WebCore::jsSubtleCryptoFunctionUnwrapKeyPromise):

  • bindings/js/JSTrackCustom.cpp:

(WebCore::toTrack): Deleted.

  • bindings/js/JSTrackCustom.h:
  • bindings/js/JSWebKitSubtleCryptoCustom.cpp:

(WebCore::JSWebKitSubtleCrypto::encrypt):
(WebCore::JSWebKitSubtleCrypto::decrypt):
(WebCore::JSWebKitSubtleCrypto::sign):
(WebCore::JSWebKitSubtleCrypto::verify):
(WebCore::JSWebKitSubtleCrypto::exportKey):
(WebCore::JSWebKitSubtleCrypto::wrapKey):
(WebCore::JSWebKitSubtleCrypto::unwrapKey):

  • bindings/js/JSWorkerGlobalScopeBase.cpp:

(WebCore::JSWorkerGlobalScopeBase::finishCreation):
(WebCore::toJSDedicatedWorkerGlobalScope):
(WebCore::toJSWorkerGlobalScope):

  • bindings/js/JSWorkerGlobalScopeBase.h:
  • bindings/js/JSXMLHttpRequestCustom.cpp:

(WebCore::JSXMLHttpRequest::send):

  • bindings/js/JSXPathNSResolverCustom.cpp:

(WebCore::JSXPathNSResolver::toWrapped):

  • bindings/js/ScriptController.cpp:

(WebCore::ScriptController::setupModuleScriptHandlers):

  • bindings/js/ScriptModuleLoader.cpp:

(WebCore::ScriptModuleLoader::fetch):
(WebCore::ScriptModuleLoader::evaluate):

  • bindings/js/ScriptState.cpp:

(WebCore::domWindowFromExecState):
(WebCore::scriptExecutionContextFromExecState):

  • bindings/js/SerializedScriptValue.cpp:

(WebCore::CloneSerializer::isArray):
(WebCore::CloneSerializer::isMap):
(WebCore::CloneSerializer::isSet):
(WebCore::CloneSerializer::dumpArrayBufferView):
(WebCore::CloneSerializer::dumpIfTerminal):
(WebCore::CloneSerializer::serialize):
(WebCore::CloneDeserializer::CloneDeserializer):
(WebCore::CloneDeserializer::readArrayBufferView):
(WebCore::CloneDeserializer::readTerminal):
(WebCore::transferArrayBuffers):
(WebCore::SerializedScriptValue::create):

  • bindings/js/StructuredClone.cpp:

(WebCore::structuredCloneArrayBuffer):
(WebCore::structuredCloneArrayBufferView):

  • bindings/js/WorkerScriptController.cpp:

(WebCore::WorkerScriptController::evaluate):

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateHeader):
(GenerateOverloadedFunctionOrConstructor):
(GenerateImplementation):

  • bindings/scripts/test/JS/JSInterfaceName.cpp:

(WebCore::JSInterfaceName::finishCreation):
(WebCore::jsInterfaceNameConstructor):
(WebCore::setJSInterfaceNameConstructor):
(WebCore::JSInterfaceName::toWrapped):

  • bindings/scripts/test/JS/JSInterfaceName.h:
  • bindings/scripts/test/JS/JSTestActiveDOMObject.cpp:

(WebCore::JSTestActiveDOMObject::finishCreation):
(WebCore::BindingCaller<JSTestActiveDOMObject>::castForAttribute):
(WebCore::BindingCaller<JSTestActiveDOMObject>::castForOperation):
(WebCore::jsTestActiveDOMObjectConstructor):
(WebCore::setJSTestActiveDOMObjectConstructor):
(WebCore::JSTestActiveDOMObject::toWrapped):

  • bindings/scripts/test/JS/JSTestActiveDOMObject.h:
  • bindings/scripts/test/JS/JSTestCEReactions.cpp:

(WebCore::JSTestCEReactions::finishCreation):
(WebCore::BindingCaller<JSTestCEReactions>::castForAttribute):
(WebCore::BindingCaller<JSTestCEReactions>::castForOperation):
(WebCore::jsTestCEReactionsConstructor):
(WebCore::setJSTestCEReactionsConstructor):
(WebCore::JSTestCEReactions::toWrapped):

  • bindings/scripts/test/JS/JSTestCEReactions.h:
  • bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp:

(WebCore::JSTestCEReactionsStringifier::finishCreation):
(WebCore::BindingCaller<JSTestCEReactionsStringifier>::castForAttribute):
(WebCore::BindingCaller<JSTestCEReactionsStringifier>::castForOperation):
(WebCore::jsTestCEReactionsStringifierConstructor):
(WebCore::setJSTestCEReactionsStringifierConstructor):
(WebCore::JSTestCEReactionsStringifier::toWrapped):

  • bindings/scripts/test/JS/JSTestCEReactionsStringifier.h:
  • bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp:

(WebCore::JSTestClassWithJSBuiltinConstructor::finishCreation):
(WebCore::jsTestClassWithJSBuiltinConstructorConstructor):
(WebCore::setJSTestClassWithJSBuiltinConstructorConstructor):
(WebCore::JSTestClassWithJSBuiltinConstructor::toWrapped):

  • bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.h:
  • bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp:

(WebCore::JSTestCustomConstructorWithNoInterfaceObject::finishCreation):
(WebCore::jsTestCustomConstructorWithNoInterfaceObjectConstructor):
(WebCore::setJSTestCustomConstructorWithNoInterfaceObjectConstructor):
(WebCore::JSTestCustomConstructorWithNoInterfaceObject::toWrapped):

  • bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.h:
  • bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp:

(WebCore::JSTestCustomNamedGetter::finishCreation):
(WebCore::BindingCaller<JSTestCustomNamedGetter>::castForOperation):
(WebCore::jsTestCustomNamedGetterConstructor):
(WebCore::setJSTestCustomNamedGetterConstructor):
(WebCore::JSTestCustomNamedGetter::toWrapped):

  • bindings/scripts/test/JS/JSTestCustomNamedGetter.h:
  • bindings/scripts/test/JS/JSTestDOMJIT.cpp:

(WebCore::JSTestDOMJIT::finishCreation):
(WebCore::BindingCaller<JSTestDOMJIT>::castForAttribute):
(WebCore::BindingCaller<JSTestDOMJIT>::castForOperation):
(WebCore::jsTestDOMJITConstructor):
(WebCore::setJSTestDOMJITConstructor):

  • bindings/scripts/test/JS/JSTestEventConstructor.cpp:

(WebCore::JSTestEventConstructor::finishCreation):
(WebCore::BindingCaller<JSTestEventConstructor>::castForAttribute):
(WebCore::jsTestEventConstructorConstructor):
(WebCore::setJSTestEventConstructorConstructor):

  • bindings/scripts/test/JS/JSTestEventTarget.cpp:

(WebCore::JSTestEventTarget::finishCreation):
(WebCore::BindingCaller<JSTestEventTarget>::castForOperation):
(WebCore::jsTestEventTargetConstructor):
(WebCore::setJSTestEventTargetConstructor):
(WebCore::JSTestEventTarget::toWrapped):

  • bindings/scripts/test/JS/JSTestEventTarget.h:
  • bindings/scripts/test/JS/JSTestException.cpp:

(WebCore::JSTestException::finishCreation):
(WebCore::BindingCaller<JSTestException>::castForAttribute):
(WebCore::jsTestExceptionConstructor):
(WebCore::setJSTestExceptionConstructor):
(WebCore::JSTestException::toWrapped):

  • bindings/scripts/test/JS/JSTestException.h:
  • bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp:

(WebCore::JSTestGenerateIsReachable::finishCreation):
(WebCore::jsTestGenerateIsReachableConstructor):
(WebCore::setJSTestGenerateIsReachableConstructor):
(WebCore::JSTestGenerateIsReachable::toWrapped):

  • bindings/scripts/test/JS/JSTestGenerateIsReachable.h:
  • bindings/scripts/test/JS/JSTestGlobalObject.cpp:

(WebCore::JSTestGlobalObject::finishCreation):
(WebCore::BindingCaller<JSTestGlobalObject>::castForAttribute):
(WebCore::BindingCaller<JSTestGlobalObject>::castForOperation):
(WebCore::jsTestGlobalObjectConstructor):
(WebCore::setJSTestGlobalObjectConstructor):
(WebCore::JSTestGlobalObject::toWrapped):

  • bindings/scripts/test/JS/JSTestGlobalObject.h:
  • bindings/scripts/test/JS/JSTestInterface.cpp:

(WebCore::JSTestInterface::finishCreation):
(WebCore::BindingCaller<JSTestInterface>::castForAttribute):
(WebCore::BindingCaller<JSTestInterface>::castForOperation):
(WebCore::jsTestInterfaceConstructor):
(WebCore::setJSTestInterfaceConstructor):
(WebCore::JSTestInterface::toWrapped):

  • bindings/scripts/test/JS/JSTestInterface.h:
  • bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp:

(WebCore::JSTestInterfaceLeadingUnderscore::finishCreation):
(WebCore::BindingCaller<JSTestInterfaceLeadingUnderscore>::castForAttribute):
(WebCore::jsTestInterfaceLeadingUnderscoreConstructor):
(WebCore::setJSTestInterfaceLeadingUnderscoreConstructor):
(WebCore::JSTestInterfaceLeadingUnderscore::toWrapped):

  • bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.h:
  • bindings/scripts/test/JS/JSTestIterable.cpp:

(WebCore::JSTestIterable::finishCreation):
(WebCore::BindingCaller<JSTestIterable>::castForOperation):
(WebCore::jsTestIterableConstructor):
(WebCore::setJSTestIterableConstructor):
(WebCore::JSTestIterable::toWrapped):

  • bindings/scripts/test/JS/JSTestIterable.h:
  • bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp:

(WebCore::JSTestJSBuiltinConstructor::finishCreation):
(WebCore::BindingCaller<JSTestJSBuiltinConstructor>::castForAttribute):
(WebCore::BindingCaller<JSTestJSBuiltinConstructor>::castForOperation):
(WebCore::jsTestJSBuiltinConstructorConstructor):
(WebCore::setJSTestJSBuiltinConstructorConstructor):

  • bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp:

(WebCore::JSTestMediaQueryListListener::finishCreation):
(WebCore::BindingCaller<JSTestMediaQueryListListener>::castForOperation):
(WebCore::jsTestMediaQueryListListenerConstructor):
(WebCore::setJSTestMediaQueryListListenerConstructor):
(WebCore::JSTestMediaQueryListListener::toWrapped):

  • bindings/scripts/test/JS/JSTestMediaQueryListListener.h:
  • bindings/scripts/test/JS/JSTestNamedConstructor.cpp:

(WebCore::JSTestNamedConstructor::finishCreation):
(WebCore::jsTestNamedConstructorConstructor):
(WebCore::setJSTestNamedConstructorConstructor):
(WebCore::JSTestNamedConstructor::toWrapped):

  • bindings/scripts/test/JS/JSTestNamedConstructor.h:
  • bindings/scripts/test/JS/JSTestNode.cpp:

(WebCore::JSTestNode::finishCreation):
(WebCore::BindingCaller<JSTestNode>::castForAttribute):
(WebCore::BindingCaller<JSTestNode>::castForOperation):
(WebCore::jsTestNodeConstructor):
(WebCore::setJSTestNodeConstructor):

  • bindings/scripts/test/JS/JSTestObj.cpp:

(WebCore::JSTestObj::finishCreation):
(WebCore::BindingCaller<JSTestObj>::castForAttribute):
(WebCore::BindingCaller<JSTestObj>::castForOperation):
(WebCore::jsTestObjConstructor):
(WebCore::setJSTestObjConstructor):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethodWithOptionalParameter):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethodWithDistinguishingUnion):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethodWith2DistinguishingUnions):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethodWithNonDistinguishingUnion):
(WebCore::jsTestObjPrototypeFunctionOverloadWithNullableUnion):
(WebCore::jsTestObjPrototypeFunctionOverloadWithNullableNonDistinguishingParameter):
(WebCore::jsTestObjPrototypeFunctionTestPromiseOverloadedFunction):
(WebCore::JSTestObj::toWrapped):

  • bindings/scripts/test/JS/JSTestObj.h:
  • bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp:

(WebCore::JSTestOverloadedConstructorsConstructor::construct):
(WebCore::JSTestOverloadedConstructors::finishCreation):
(WebCore::jsTestOverloadedConstructorsConstructor):
(WebCore::setJSTestOverloadedConstructorsConstructor):
(WebCore::JSTestOverloadedConstructors::toWrapped):

  • bindings/scripts/test/JS/JSTestOverloadedConstructors.h:
  • bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp:

(WebCore::JSTestOverloadedConstructorsWithSequence::finishCreation):
(WebCore::jsTestOverloadedConstructorsWithSequenceConstructor):
(WebCore::setJSTestOverloadedConstructorsWithSequenceConstructor):
(WebCore::JSTestOverloadedConstructorsWithSequence::toWrapped):

  • bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.h:
  • bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp:

(WebCore::JSTestOverrideBuiltins::finishCreation):
(WebCore::BindingCaller<JSTestOverrideBuiltins>::castForOperation):
(WebCore::jsTestOverrideBuiltinsConstructor):
(WebCore::setJSTestOverrideBuiltinsConstructor):
(WebCore::JSTestOverrideBuiltins::toWrapped):

  • bindings/scripts/test/JS/JSTestOverrideBuiltins.h:
  • bindings/scripts/test/JS/JSTestSerialization.cpp:

(WebCore::JSTestSerialization::finishCreation):
(WebCore::BindingCaller<JSTestSerialization>::castForAttribute):
(WebCore::BindingCaller<JSTestSerialization>::castForOperation):
(WebCore::jsTestSerializationConstructor):
(WebCore::setJSTestSerializationConstructor):
(WebCore::JSTestSerialization::toWrapped):

  • bindings/scripts/test/JS/JSTestSerialization.h:
  • bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:

(WebCore::JSTestSerializedScriptValueInterface::finishCreation):
(WebCore::BindingCaller<JSTestSerializedScriptValueInterface>::castForAttribute):
(WebCore::BindingCaller<JSTestSerializedScriptValueInterface>::castForOperation):
(WebCore::jsTestSerializedScriptValueInterfaceConstructor):
(WebCore::setJSTestSerializedScriptValueInterfaceConstructor):
(WebCore::JSTestSerializedScriptValueInterface::toWrapped):

  • bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.h:
  • bindings/scripts/test/JS/JSTestTypedefs.cpp:

(WebCore::JSTestTypedefs::finishCreation):
(WebCore::BindingCaller<JSTestTypedefs>::castForAttribute):
(WebCore::BindingCaller<JSTestTypedefs>::castForOperation):
(WebCore::jsTestTypedefsConstructor):
(WebCore::setJSTestTypedefsConstructor):
(WebCore::JSTestTypedefs::toWrapped):

  • bindings/scripts/test/JS/JSTestTypedefs.h:
  • bridge/c/CRuntimeObject.cpp:

(JSC::Bindings::CRuntimeObject::finishCreation):

  • bridge/c/c_instance.cpp:

(JSC::Bindings::CRuntimeMethod::finishCreation):
(JSC::Bindings::CInstance::invokeMethod):

  • bridge/c/c_utility.cpp:

(JSC::Bindings::convertValueToNPVariant):

  • bridge/objc/ObjCRuntimeObject.mm:

(JSC::Bindings::ObjCRuntimeObject::finishCreation):

  • bridge/objc/WebScriptObject.mm:

(-[WebScriptObject setValue:forKey:]):
(+[WebScriptObject _convertValueToObjcValue:originRootObject:rootObject:]):

  • bridge/objc/objc_instance.mm:

(ObjCRuntimeMethod::finishCreation):
(ObjcInstance::invokeMethod):

  • bridge/objc/objc_runtime.mm:

(JSC::Bindings::ObjcFallbackObjectImp::finishCreation):
(JSC::Bindings::callObjCFallbackObject):

  • bridge/runtime_array.cpp:

(JSC::RuntimeArray::finishCreation):
(JSC::RuntimeArray::lengthGetter):

  • bridge/runtime_method.cpp:

(JSC::RuntimeMethod::finishCreation):
(JSC::RuntimeMethod::lengthGetter):
(JSC::callRuntimeMethod):

  • bridge/runtime_object.cpp:

(JSC::Bindings::RuntimeObject::finishCreation):
(JSC::Bindings::callRuntimeObject):
(JSC::Bindings::callRuntimeConstructor):

  • css/FontFace.cpp:

(WebCore::FontFace::create):

  • html/HTMLMediaElement.cpp:

(WebCore::controllerJSValue):
(WebCore::HTMLMediaElement::updateCaptionContainer):
(WebCore::HTMLMediaElement::didAddUserAgentShadowRoot):

  • inspector/InspectorController.cpp:

(WebCore::InspectorController::canAccessInspectedScriptState):

  • inspector/InspectorDOMAgent.cpp:

(WebCore::InspectorDOMAgent::buildObjectForEventListener):
(WebCore::InspectorDOMAgent::scriptValueAsNode):

  • inspector/WebInjectedScriptHost.cpp:

(WebCore::WebInjectedScriptHost::subtype):
(WebCore::WebInjectedScriptHost::isHTMLAllCollection):

  • inspector/WebInjectedScriptHost.h:

Source/WebKit/mac:

  • DOM/DOM.mm:

(+[DOMNode _nodeFromJSWrapper:]):

  • DOM/DOMUtility.mm:

(createDOMWrapper):

  • DOM/WebDOMOperations.mm:
  • Plugins/Hosted/NetscapePluginInstanceProxy.mm:

(WebKit::getObjectID):
(WebKit::NetscapePluginInstanceProxy::retainLocalObject):
(WebKit::NetscapePluginInstanceProxy::releaseLocalObject):

  • Plugins/Hosted/ProxyInstance.mm:

(WebKit::ProxyRuntimeMethod::finishCreation):
(WebKit::ProxyInstance::invokeMethod):

  • Plugins/Hosted/ProxyRuntimeObject.mm:

(WebKit::ProxyRuntimeObject::finishCreation):

  • WebView/WebFrame.mm:

(-[WebFrame _stringByEvaluatingJavaScriptFromString:withGlobalObject:inScriptWorld:]):

  • WebView/WebView.mm:

(+[WebView _reportException:inContext:]):
(aeDescFromJSValue):
(-[WebView _notificationIDForTesting:]):

Source/WebKit/win:

  • WebFrame.cpp:

(WebFrame::stringByEvaluatingJavaScriptInScriptWorld):

  • WebView.cpp:

(WebView::elementFromJS):

Source/WebKit2:

  • WebProcess/Automation/WebAutomationSessionProxy.cpp:

(WebKit::WebAutomationSessionProxy::elementForNodeHandle):

  • WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp:

(WebKit::InjectedBundleNodeHandle::getOrCreate):

  • WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp:

(WebKit::InjectedBundleRangeHandle::getOrCreate):

  • WebProcess/InjectedBundle/InjectedBundle.cpp:

(WebKit::InjectedBundle::reportException):
(WebKit::InjectedBundle::webNotificationID):
(WebKit::InjectedBundle::createWebDataFromUint8Array):

  • WebProcess/Plugins/Netscape/JSNPMethod.cpp:

(WebKit::JSNPMethod::finishCreation):
(WebKit::callMethod):

  • WebProcess/Plugins/Netscape/JSNPObject.cpp:

(WebKit::JSNPObject::finishCreation):
(WebKit::callNPJSObject):
(WebKit::constructWithConstructor):

  • WebProcess/Plugins/Netscape/NPJSObject.cpp:

(WebKit::NPJSObject::create):

  • WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp:

(WebKit::NPRuntimeObjectMap::getOrCreateNPObject):

  • WebProcess/WebPage/WebFrame.cpp:

(WebKit::WebFrame::frameForContext):
(WebKit::WebFrame::counterValue):

Tools:

  • DumpRenderTree/TestRunner.cpp:

(setAudioResultCallback):

5:38 PM Changeset in webkit [211246] by mark.lam@apple.com
  • 3 edits
    1 add in trunk

Fix missing exception check in genericTypedArrayViewProtoFuncSet().
https://bugs.webkit.org/show_bug.cgi?id=166812
<rdar://problem/29916672>

Reviewed by Saam Barati.

JSTests:

  • stress/regress-166812.js: Added.

Source/JavaScriptCore:

  • runtime/JSGenericTypedArrayViewPrototypeFunctions.h:

(JSC::genericTypedArrayViewProtoFuncSet):

5:33 PM Changeset in webkit [211245] by commit-queue@webkit.org
  • 15 edits
    3 deletes in trunk

Unreviewed, rolling out r211224.
https://bugs.webkit.org/show_bug.cgi?id=167479

"It was a Kraken performance regression" (Requested by
saamyjoon on #webkit).

Reverted changeset:

"OSR entry: delay outer-loop compilation when at inner-loop"
https://bugs.webkit.org/show_bug.cgi?id=167149
http://trac.webkit.org/changeset/211224

5:14 PM Changeset in webkit [211244] by dino@apple.com
  • 3 edits in trunk/Source/WebCore

WebGL content in Safari sticks to GPU that it was started on, sometimes causing extra battery drain and difficulty interacting with UI
https://bugs.webkit.org/show_bug.cgi?id=167477
<rdar://problem/29956321>

Reviewed by Tim Horton.

We were not implementing the recommended approach to properly handle
GPU switching, causing some contexts to remain on a GPU and slow
down the machine's UI. It also could stop the discrete GPU from
turning off.

Register for CGL's display reconfiguration notification, so that we
can alert any active CGLContexts and cause them to update.

The code change here doesn't lend itself to automated testing because
it is specific to hardware with multiple GPUs, relies on some separate
tools to detect which GPU is active, and an external method of triggering
a GPU switch. It's best tested by the manual workflow in Radar.

  • platform/graphics/GraphicsContext3D.h: Add a macOS-specific update

call.

  • platform/graphics/mac/GraphicsContext3DMac.mm:

(WebCore::displayWasReconfigured): The callback for display reconfigurations.
(WebCore::addActiveContext): Helper to keep track of active contexts, so we
can register/unregister the callback when necessary.
(WebCore::removeActiveContext):
(WebCore::GraphicsContext3D::create): Use the new helpers.
(WebCore::GraphicsContext3D::~GraphicsContext3D):
(WebCore::GraphicsContext3D::updateCGLContext): Tell the CGLContextRef to update.

5:01 PM Changeset in webkit [211243] by Wenson Hsieh
  • 2 edits in trunk/Source/WebKit/mac

REGRESSION (r207483): Touch Bar: Lists and BIU Buttons Missing from Touch Bar in HTML Notes
https://bugs.webkit.org/show_bug.cgi?id=167472
<rdar://problem/30149809>

Reviewed by Beth Dakin.

Revision 207483 caused the touch bar to stop showing up in HTML Notes due to -updateTextTouchBar not
initializing the text touch bar and causing -makeTouchBar to return nil while processing a mouse click. The
purpose of bailing out of the update was to prevent the text touch bar from thrashing during a selection drag.
If the text touch bar doesn't exist yet, we don't have to worry about its appearance flickering from a different
previous state, so we should just allow the touch bar to update instead.

  • WebView/WebView.mm:

(-[WebView updateTextTouchBar]):

4:57 PM Changeset in webkit [211242] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Unreviewed, rolling out r210328.
https://bugs.webkit.org/show_bug.cgi?id=167476

Blocking bug is fixed <rdar://problem/29957753> (Requested by
keith_miller on #webkit).

Reverted changeset:

"Disable smooth playhead animation for main content media in
the Touch Bar"
https://bugs.webkit.org/show_bug.cgi?id=166715
http://trac.webkit.org/changeset/210328

4:56 PM Changeset in webkit [211241] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Web Inspector: iOS: Memory timeline shows impossible values for Page size (underflowed)
https://bugs.webkit.org/show_bug.cgi?id=167468
<rdar://problem/30099051>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-01-26
Reviewed by Andreas Kling.

  • page/cocoa/ResourceUsageThreadCocoa.mm:

(WebCore::vmPageSize):
This value matches the sysctl value we were attempting to access, and is
the most appropriate when dealing with mach APIs, as we are using here.

4:38 PM Changeset in webkit [211240] by jer.noble@apple.com
  • 11 edits
    1 add in trunk

Autoplay muted videos stop playback of any streaming app in the background
https://bugs.webkit.org/show_bug.cgi?id=163993
<rdar://problem/29020431>

Reviewed by Eric Carlson.

Source/WebCore:

Added test in TestWebKitAPI, WebKit1.AudioSessionCategoryIOS.

Previously, we would set the audio session category to "playback" if there was a media-
element-type media session, and if there was a session capable of playing audio. But because
this was an "or" operation, we would incorrectly set the category to "playback" if there was
a video element incapable of rendering audio (due to being muted, without an audio track,
etc.), and also a session capable of producing audio, such as WebAudio.

With this change, this turns into an "and" operation; there must be a media element capable
of rendering audio in order to switch the audio session category to "playback".

Additionally, we no longer cache the value of "canProduceAudio()"; it's queried directly
whenever updateSessionState() is called.

  • Modules/webaudio/AudioContext.cpp:

(WebCore::AudioContext::constructCommon):

  • Modules/webaudio/AudioContext.h:
  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::insertedInto):
(WebCore::HTMLMediaElement::loadResource):
(WebCore::HTMLMediaElement::setMuted):
(WebCore::HTMLMediaElement::mediaPlayerCurrentPlaybackTargetIsWirelessChanged):
(WebCore::HTMLMediaElement::mediaPlayerCharacteristicChanged):
(WebCore::HTMLMediaElement::clearMediaPlayer):
(WebCore::HTMLMediaElement::mediaPlayerCurrentPlaybackTargetIsWirelessChanged):
(WebCore::HTMLMediaElement::presentationType):
(WebCore::HTMLMediaElement::characteristics):
(WebCore::HTMLMediaElement::canProduceAudio):

  • html/HTMLMediaElement.h:
  • platform/audio/PlatformMediaSession.cpp:

(WebCore::PlatformMediaSession::activeAudioSessionRequired):
(WebCore::PlatformMediaSession::canProduceAudio):
(WebCore::PlatformMediaSession::canProduceAudioChanged):
(WebCore::PlatformMediaSession::setCanProduceAudio): Deleted.

  • platform/audio/PlatformMediaSession.h:

(WebCore::PlatformMediaSessionClient::canProduceAudio):
(WebCore::PlatformMediaSession::canProduceAudio): Deleted.

  • platform/audio/cocoa/MediaSessionManagerCocoa.cpp:

(PlatformMediaSessionManager::updateSessionState):

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit/ios/AudioSessionCategoryIOS.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKit/ios/video-with-muted-audio-and-webaudio.html: Added.
4:14 PM Changeset in webkit [211239] by Chris Dumez
  • 2 edits in trunk/Source/WebKit2

Fix CPU usage diagnostic logging in PerActivityStateCPUUsageSampler
https://bugs.webkit.org/show_bug.cgi?id=167471
<rdar://problem/30221723>

Reviewed by Alex Christensen.

Fix CPU usage diagnostic logging in PerActivityStateCPUUsageSampler
to use numeric values for logDiagnosticMessageWithValue().

  • UIProcess/PerActivityStateCPUUsageSampler.cpp:

(WebKit::PerActivityStateCPUUsageSampler::loggingTimerFired):
(WebKit::loggingKeyForCPUUsage): Deleted.

4:11 PM Changeset in webkit [211238] by fpizlo@apple.com
  • 6 edits in trunk/Source/WebCore

EventTarget should visit the JSEventListeners using visitAdditionalChildren
https://bugs.webkit.org/show_bug.cgi?id=167462

Reviewed by Michael Saboff.

No new tests because this is already caught by existing testing. This would show up as ASSERTs
in debug, and we suspect it might be at fault for null deref crashes.

Previously, EventTarget would have its event listeners visited by its subclasses' visitChildren
methods. Every subclass of EventTarget would call EventTarget's visitJSEventListeners. For
example, this means that if JSFoo has seven classes between it and JSEventTarget in the JSCell
class hierarchy, then JSFoo::visitChildren would end up calling visitJSEventListeners seven extra
times.

Also, the weird way that visitJSEventListeners was called meant that it was not part of the GC's
output constraint processing. This meant that it would not be called when the GC tried to
terminate. So, if something about the event listener changes during a GC cycle, the GC would
potentially fail to mark one of the references.

Both problems can be solved by simply moving the call to visitJSEventListeners into
visitAdditionalChildren.

  • bindings/js/JSDOMWindowCustom.cpp:

(WebCore::JSDOMWindow::visitAdditionalChildren):

  • bindings/js/JSEventTargetCustom.cpp:

(WebCore::JSEventTarget::visitAdditionalChildren):

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateImplementation):

  • dom/EventTarget.idl:
3:50 PM Changeset in webkit [211237] by sbarati@apple.com
  • 46 edits
    2 copies
    1 move
    1 delete in trunk/Source

Harden how the compiler references GC objects
https://bugs.webkit.org/show_bug.cgi?id=167277
<rdar://problem/30179506>

Reviewed by Filip Pizlo.

Source/JavaScriptCore:

Since r210971, the DFG/FTL will flash safepoints before
each phase. This means that there are more opportunities for
a GC to happen while the compiler is running. Because of this,
the compiler must keep track of all the heap pointers that are part
of the Graph data structure. To accomplish this, I've designed
a new type called RegisteredStructure that can only be constructed
after the Graph becomes aware of its underlying Structure*. I
designed this new type to have the type system in C++ help us catch
errors where we're not informing the graph/plan of a heap pointer.
I've made it a compile error to create an OpInfo with a pointer
T* where T inherits from HeapCell. This encourages an OpInfo
to be created with either a FrozenValue* or a RegisteredStructure.
I've added similar compile time assertions for TrustedImmPtr in DFG::SpeculativeJIT
and FTL::Output::constIntPtr. These static asserts don't save us from all bad
programs because there are ways to write code that's incorrect that compiles,
but the new types do help us ensure that the most obvious way of writing the
code is correct.

The reason this patch is so big is that I've strung RegisteredStructure and
RegisteredStructureSet through the entire DFG/FTL.

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::determineLiveness):

  • bytecode/StructureSet.cpp:

(JSC::StructureSet::filter): Deleted.
(JSC::StructureSet::filterArrayModes): Deleted.
(JSC::StructureSet::speculationFromStructures): Deleted.
(JSC::StructureSet::arrayModesFromStructures): Deleted.
(JSC::StructureSet::validateReferences): Deleted.

  • bytecode/StructureSet.h:
  • dfg/DFGAbstractInterpreter.h:

(JSC::DFG::AbstractInterpreter::filter):

  • dfg/DFGAbstractInterpreterInlines.h:

(JSC::DFG::AbstractInterpreter<AbstractStateType>::booleanResult):
(JSC::DFG::isToThisAnIdentity):
(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
(JSC::DFG::AbstractInterpreter<AbstractStateType>::observeTransition):
(JSC::DFG::AbstractInterpreter<AbstractStateType>::filter):

  • dfg/DFGAbstractValue.cpp:

(JSC::DFG::AbstractValue::set):
(JSC::DFG::AbstractValue::setType):
(JSC::DFG::AbstractValue::mergeOSREntryValue):
(JSC::DFG::AbstractValue::filter):
(JSC::DFG::AbstractValue::changeStructure):
(JSC::DFG::AbstractValue::contains):

  • dfg/DFGAbstractValue.h:

(JSC::DFG::AbstractValue::observeTransition):
(JSC::DFG::AbstractValue::TransitionObserver::TransitionObserver):

  • dfg/DFGArgumentsEliminationPhase.cpp:
  • dfg/DFGArrayMode.cpp:

(JSC::DFG::ArrayMode::alreadyChecked):

  • dfg/DFGArrayifySlowPathGenerator.h:

(JSC::DFG::ArrayifySlowPathGenerator::ArrayifySlowPathGenerator):

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::handleConstantInternalFunction):
(JSC::DFG::ByteCodeParser::load):
(JSC::DFG::ByteCodeParser::handleGetById):
(JSC::DFG::ByteCodeParser::handlePutById):
(JSC::DFG::ByteCodeParser::parseBlock):
(JSC::DFG::ByteCodeParser::InlineStackEntry::InlineStackEntry):

  • dfg/DFGCallArrayAllocatorSlowPathGenerator.h:

(JSC::DFG::CallArrayAllocatorSlowPathGenerator::CallArrayAllocatorSlowPathGenerator):
(JSC::DFG::CallArrayAllocatorWithVariableSizeSlowPathGenerator::CallArrayAllocatorWithVariableSizeSlowPathGenerator):

  • dfg/DFGCallCreateDirectArgumentsSlowPathGenerator.h:

(JSC::DFG::CallCreateDirectArgumentsSlowPathGenerator::CallCreateDirectArgumentsSlowPathGenerator):

  • dfg/DFGCommonData.cpp:

(JSC::DFG::CommonData::notifyCompilingStructureTransition):

  • dfg/DFGConstantFoldingPhase.cpp:

(JSC::DFG::ConstantFoldingPhase::foldConstants):
(JSC::DFG::ConstantFoldingPhase::emitGetByOffset):
(JSC::DFG::ConstantFoldingPhase::emitPutByOffset):
(JSC::DFG::ConstantFoldingPhase::addBaseCheck):
(JSC::DFG::ConstantFoldingPhase::addStructureTransitionCheck):

  • dfg/DFGDesiredWeakReferences.cpp:

(JSC::DFG::DesiredWeakReferences::reallyAdd):

  • dfg/DFGFixupPhase.cpp:

(JSC::DFG::FixupPhase::checkArray):

  • dfg/DFGGraph.cpp:

(JSC::DFG::Graph::Graph):
(JSC::DFG::Graph::dump):
(JSC::DFG::Graph::tryGetConstantProperty):
(JSC::DFG::Graph::inferredValueForProperty):
(JSC::DFG::Graph::visitChildren):
(JSC::DFG::Graph::freeze):
(JSC::DFG::Graph::registerStructure):
(JSC::DFG::Graph::assertIsRegistered):

  • dfg/DFGGraph.h:

(JSC::DFG::Graph::registerStructure):
(JSC::DFG::Graph::addStructureSet):

  • dfg/DFGJITCompiler.h:

(JSC::DFG::JITCompiler::branchWeakStructure):

  • dfg/DFGMultiGetByOffsetData.cpp:

(JSC::DFG::MultiGetByOffsetCase::dumpInContext):

  • dfg/DFGMultiGetByOffsetData.h:

(JSC::DFG::MultiGetByOffsetCase::MultiGetByOffsetCase):
(JSC::DFG::MultiGetByOffsetCase::set):

  • dfg/DFGNode.cpp:

(JSC::DFG::Node::convertToPutStructureHint):

  • dfg/DFGNode.h:

(JSC::DFG::Node::convertToCheckStructure):
(JSC::DFG::Node::structureSet):
(JSC::DFG::Node::structure):
(JSC::DFG::Node::OpInfoWrapper::OpInfoWrapper):
(JSC::DFG::Node::OpInfoWrapper::operator=):
(JSC::DFG::Node::OpInfoWrapper::asRegisteredStructure):

  • dfg/DFGObjectAllocationSinkingPhase.cpp:
  • dfg/DFGOpInfo.h:

(JSC::DFG::OpInfo::OpInfo):

  • dfg/DFGPlan.cpp:

(JSC::DFG::Plan::compileInThreadImpl):
(JSC::DFG::Plan::finalizeWithoutNotifyingCallback):

  • dfg/DFGRegisteredStructure.h: Added.

(JSC::DFG::RegisteredStructure::get):
(JSC::DFG::RegisteredStructure::operator->):
(JSC::DFG::RegisteredStructure::operator==):
(JSC::DFG::RegisteredStructure::operator!=):
(JSC::DFG::RegisteredStructure::operator bool):
(JSC::DFG::RegisteredStructure::RegisteredStructure):
(JSC::DFG::RegisteredStructure::createPrivate):

  • dfg/DFGRegisteredStructureSet.cpp: Added.

(JSC::DFG::RegisteredStructureSet::filter):
(JSC::DFG::RegisteredStructureSet::filterArrayModes):
(JSC::DFG::RegisteredStructureSet::speculationFromStructures):
(JSC::DFG::RegisteredStructureSet::arrayModesFromStructures):
(JSC::DFG::RegisteredStructureSet::validateReferences):

  • dfg/DFGRegisteredStructureSet.h: Added.

(JSC::DFG::RegisteredStructureSet::RegisteredStructureSet):
(JSC::DFG::RegisteredStructureSet::onlyStructure):
(JSC::DFG::RegisteredStructureSet::toStructureSet):

  • dfg/DFGSafeToExecute.h:

(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::emitAllocateRawObject):
(JSC::DFG::SpeculativeJIT::emitGetCallee):
(JSC::DFG::SpeculativeJIT::silentFill):
(JSC::DFG::SpeculativeJIT::checkArray):
(JSC::DFG::SpeculativeJIT::compileGetByValOnString):
(JSC::DFG::SpeculativeJIT::compileFromCharCode):
(JSC::DFG::SpeculativeJIT::compileDoubleRep):
(JSC::DFG::compileClampDoubleToByte):
(JSC::DFG::SpeculativeJIT::compileMakeRope):
(JSC::DFG::SpeculativeJIT::compileArithRounding):
(JSC::DFG::SpeculativeJIT::compileNewFunctionCommon):
(JSC::DFG::SpeculativeJIT::compileNewFunction):
(JSC::DFG::SpeculativeJIT::compileCreateActivation):
(JSC::DFG::SpeculativeJIT::compileCreateDirectArguments):
(JSC::DFG::SpeculativeJIT::compileCreateScopedArguments):
(JSC::DFG::SpeculativeJIT::compileCreateClonedArguments):
(JSC::DFG::SpeculativeJIT::compileSpread):
(JSC::DFG::SpeculativeJIT::compileArraySlice):
(JSC::DFG::SpeculativeJIT::compileTypeOf):
(JSC::DFG::SpeculativeJIT::compileAllocatePropertyStorage):
(JSC::DFG::SpeculativeJIT::compileReallocatePropertyStorage):
(JSC::DFG::SpeculativeJIT::compileToStringOrCallStringConstructorOnCell):
(JSC::DFG::SpeculativeJIT::compileNewTypedArray):
(JSC::DFG::SpeculativeJIT::speculateStringOrStringObject):
(JSC::DFG::SpeculativeJIT::compileMaterializeNewObject):

  • dfg/DFGSpeculativeJIT.h:

(JSC::DFG::SpeculativeJIT::TrustedImmPtr::TrustedImmPtr):
(JSC::DFG::SpeculativeJIT::TrustedImmPtr::weakPointer):
(JSC::DFG::SpeculativeJIT::TrustedImmPtr::operator MacroAssembler::TrustedImmPtr):
(JSC::DFG::SpeculativeJIT::TrustedImmPtr::asIntptr):
(JSC::DFG::SpeculativeJIT::callOperation):
(JSC::DFG::SpeculativeJIT::emitAllocateDestructibleObject):
(JSC::DFG::SpeculativeJIT::speculateStringObjectForStructure):

  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::nonSpeculativeNonPeepholeCompareNullOrUndefined):
(JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeBranchNullOrUndefined):
(JSC::DFG::SpeculativeJIT::emitCall):
(JSC::DFG::SpeculativeJIT::fillSpeculateCell):
(JSC::DFG::SpeculativeJIT::compileObjectOrOtherLogicalNot):
(JSC::DFG::SpeculativeJIT::emitObjectOrOtherBranch):
(JSC::DFG::SpeculativeJIT::compile):
(JSC::DFG::SpeculativeJIT::compileAllocateNewArrayWithSize):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::nonSpeculativeNonPeepholeCompareNullOrUndefined):
(JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeBranchNullOrUndefined):
(JSC::DFG::SpeculativeJIT::emitCall):
(JSC::DFG::SpeculativeJIT::compileObjectOrOtherLogicalNot):
(JSC::DFG::SpeculativeJIT::emitObjectOrOtherBranch):
(JSC::DFG::SpeculativeJIT::compile):
(JSC::DFG::SpeculativeJIT::compileAllocateNewArrayWithSize):

  • dfg/DFGStrengthReductionPhase.cpp:

(JSC::DFG::StrengthReductionPhase::handleNode):

  • dfg/DFGStructureAbstractValue.cpp:

(JSC::DFG::StructureAbstractValue::assertIsRegistered):
(JSC::DFG::StructureAbstractValue::clobber):
(JSC::DFG::StructureAbstractValue::observeTransition):
(JSC::DFG::StructureAbstractValue::observeTransitions):
(JSC::DFG::StructureAbstractValue::add):
(JSC::DFG::StructureAbstractValue::merge):
(JSC::DFG::StructureAbstractValue::mergeNotTop):
(JSC::DFG::StructureAbstractValue::filter):
(JSC::DFG::StructureAbstractValue::filterSlow):
(JSC::DFG::StructureAbstractValue::filterClassInfoSlow):
(JSC::DFG::StructureAbstractValue::contains):
(JSC::DFG::StructureAbstractValue::isSubsetOf):
(JSC::DFG::StructureAbstractValue::isSupersetOf):
(JSC::DFG::StructureAbstractValue::overlaps):
(JSC::DFG::StructureAbstractValue::isSubClassOf):
(JSC::DFG::StructureAbstractValue::dumpInContext):

  • dfg/DFGStructureAbstractValue.h:

(JSC::DFG::StructureAbstractValue::StructureAbstractValue):
(JSC::DFG::StructureAbstractValue::operator=):
(JSC::DFG::StructureAbstractValue::set):
(JSC::DFG::StructureAbstractValue::toStructureSet):
(JSC::DFG::StructureAbstractValue::at):
(JSC::DFG::StructureAbstractValue::operator[]):
(JSC::DFG::StructureAbstractValue::onlyStructure):

  • dfg/DFGStructureRegistrationPhase.cpp:

(JSC::DFG::StructureRegistrationPhase::StructureRegistrationPhase): Deleted.
(JSC::DFG::StructureRegistrationPhase::run): Deleted.
(JSC::DFG::StructureRegistrationPhase::registerStructures): Deleted.
(JSC::DFG::StructureRegistrationPhase::registerStructure): Deleted.
(JSC::DFG::StructureRegistrationPhase::assertAreRegistered): Deleted.
(JSC::DFG::StructureRegistrationPhase::assertIsRegistered): Deleted.
(JSC::DFG::performStructureRegistration): Deleted.

  • dfg/DFGStructureRegistrationPhase.h:
  • dfg/DFGTransition.cpp:

(JSC::DFG::Transition::dumpInContext):

  • dfg/DFGTransition.h:

(JSC::DFG::Transition::Transition):

  • dfg/DFGTypeCheckHoistingPhase.cpp:

(JSC::DFG::TypeCheckHoistingPhase::noticeStructureCheck):
(JSC::DFG::TypeCheckHoistingPhase::noticeStructureCheckAccountingForArrayMode):

  • dfg/DFGValidate.cpp:
  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::lower):
(JSC::FTL::DFG::LowerDFGToB3::compileCallObjectConstructor):
(JSC::FTL::DFG::LowerDFGToB3::compileCheckStructure):
(JSC::FTL::DFG::LowerDFGToB3::compilePutStructure):
(JSC::FTL::DFG::LowerDFGToB3::compileArraySlice):
(JSC::FTL::DFG::LowerDFGToB3::compileCreateActivation):
(JSC::FTL::DFG::LowerDFGToB3::compileNewFunction):
(JSC::FTL::DFG::LowerDFGToB3::compileCreateDirectArguments):
(JSC::FTL::DFG::LowerDFGToB3::compileCreateRest):
(JSC::FTL::DFG::LowerDFGToB3::compileNewArray):
(JSC::FTL::DFG::LowerDFGToB3::compileNewArrayWithSpread):
(JSC::FTL::DFG::LowerDFGToB3::compileNewArrayBuffer):
(JSC::FTL::DFG::LowerDFGToB3::compileNewArrayWithSize):
(JSC::FTL::DFG::LowerDFGToB3::compileNewTypedArray):
(JSC::FTL::DFG::LowerDFGToB3::compileAllocatePropertyStorage):
(JSC::FTL::DFG::LowerDFGToB3::compileReallocatePropertyStorage):
(JSC::FTL::DFG::LowerDFGToB3::compileMultiGetByOffset):
(JSC::FTL::DFG::LowerDFGToB3::compileMultiPutByOffset):
(JSC::FTL::DFG::LowerDFGToB3::compileGetMapBucket):
(JSC::FTL::DFG::LowerDFGToB3::compileOverridesHasInstance):
(JSC::FTL::DFG::LowerDFGToB3::compileCheckStructureImmediate):
(JSC::FTL::DFG::LowerDFGToB3::compileMaterializeNewObject):
(JSC::FTL::DFG::LowerDFGToB3::compileMaterializeCreateActivation):
(JSC::FTL::DFG::LowerDFGToB3::compileNewRegexp):
(JSC::FTL::DFG::LowerDFGToB3::compileLogShadowChickenTail):
(JSC::FTL::DFG::LowerDFGToB3::checkStructure):
(JSC::FTL::DFG::LowerDFGToB3::checkInferredType):
(JSC::FTL::DFG::LowerDFGToB3::allocateObject):
(JSC::FTL::DFG::LowerDFGToB3::allocateVariableSizedObject):
(JSC::FTL::DFG::LowerDFGToB3::allocateJSArray):
(JSC::FTL::DFG::LowerDFGToB3::allocateUninitializedContiguousJSArray):
(JSC::FTL::DFG::LowerDFGToB3::boolify):
(JSC::FTL::DFG::LowerDFGToB3::equalNullOrUndefined):
(JSC::FTL::DFG::LowerDFGToB3::lowCell):
(JSC::FTL::DFG::LowerDFGToB3::speculateStringObjectForStructureID):
(JSC::FTL::DFG::LowerDFGToB3::weakPointer):
(JSC::FTL::DFG::LowerDFGToB3::frozenPointer):
(JSC::FTL::DFG::LowerDFGToB3::weakStructureID):
(JSC::FTL::DFG::LowerDFGToB3::weakStructure):
(JSC::FTL::DFG::LowerDFGToB3::crash):

  • ftl/FTLOutput.h:

(JSC::FTL::Output::weakPointer):
(JSC::FTL::Output::constIntPtr):

Source/WTF:

I made TinyPtrSet use bitwise_cast instead of static_cast
for its singleEntry() function so that it can work on pointer-like
types just as it can on actual pointer types.

An example of where this matters is when you have TinyPtrSet<T>
where T is defined to be a struct which wraps a pointer, e.g:

struct T {

void* m_pointer;

}

  • wtf/TinyPtrSet.h:

(WTF::TinyPtrSet::singleEntry):

3:50 PM Changeset in webkit [211236] by aestes@apple.com
  • 4 edits in trunk/Source/WebCore

[QuickLook] Create temporary files with NSFileProtectionCompleteUnlessOpen
https://bugs.webkit.org/show_bug.cgi?id=167455
<rdar://problem/12499118>

Reviewed by David Kilzer.

Add the NSFileProtectionKey attribute with value NSFileProtectionCompleteUnlessOpen to
temporary directories created for QuickLook files. Also:

  1. Stop calling -[NSFileManager _web_pathWithUniqueFilenameForPath:], since the temporary

directory is already unique and only one file will be placed inside it.

  1. Create the temporary file with -[NSFileManager _web_createFileAtPath:contents:attributes:]

instead of with -[NSFileManager _web_createFileAtPathWithIntermediateDirectories:contents:attributes:directoryAttributes:],
since the intermediate directories were already created by createTemporaryDirectory().

  1. Explicitly set the temporary directory's attributes with

-[NSFileManager setAttributes:ofItemAtPath:error:].

  1. Append the lastPathComponent of fileName to downloadDirectory to ensure fileName isn't

really a relative path.

  • loader/ios/QuickLook.h: Stopped declaring QLFileAttributes() and QLDirectoryAttributes().
  • loader/ios/QuickLook.mm:

(WebCore::temporaryFileAttributes): Renamed from QLFileAttributes().
(WebCore::temporaryDirectoryAttributes): Renamed from QLDirectoryAttributes().
(WebCore::createTemporaryFileForQuickLook):
(WebCore::QLFileAttributes): Deleted.
(WebCore::QLDirectoryAttributes): Deleted.

  • platform/spi/cocoa/NSFileManagerSPI.h: Declared -_web_createFileAtPath:contents:attributes:

and removed declarations for -_web_createFileAtPathWithIntermediateDirectories:contents:attributes:directoryAttributes:
and -_web_pathWithUniqueFilenameForPath:

3:47 PM Changeset in webkit [211235] by commit-queue@webkit.org
  • 8 edits in trunk

Pointer lock events should be delivered directly to the target element
https://bugs.webkit.org/show_bug.cgi?id=167134

Patch by Jeremy Jones <jeremyj@apple.com> on 2017-01-26
Reviewed by Jon Lee.

Source/WebCore:

pointer-lock/mouse-event-delivery.html: Enabled for mac, added wheel event tests.

When pointer is locked on an element, route mouse events directly to the target element, instead of
doing the normal event disptach.

  • page/EventHandler.cpp:

(WebCore::EventHandler::handleMousePressEvent):
(WebCore::EventHandler::handleMouseDoubleClickEvent):
(WebCore::EventHandler::handleMouseMoveEvent):
(WebCore::EventHandler::handleMouseReleaseEvent):
(WebCore::EventHandler::handleMouseForceEvent):
(WebCore::EventHandler::handleWheelEvent):

  • page/PointerLockController.cpp:

(WebCore::PointerLockController::isLocked): Added.
(WebCore::PointerLockController::dispatchLockedWheelEvent): Added.

  • page/PointerLockController.h:

LayoutTests:

The pointer-lock/mouse-event-delivery.html test is modified to explicitly move the mouse pointer to a valid
location before sending mouse actions. Without this, the test infrastructure doesn't know that the pointer
is over the web view and doesn't deliver events.

Added code to test for wheel events.

  • platform/mac/TestExpectations: enabled test.
  • pointer-lock/mouse-event-delivery.html:
  • pointer-lock/mouse-event-delivery-expected.txt:
3:47 PM Changeset in webkit [211234] by commit-queue@webkit.org
  • 4 edits in trunk

Request pointer unlock on navigation and re-enable pointer-lock tests for WK2.
https://bugs.webkit.org/show_bug.cgi?id=166765

Patch by Jeremy Jones <jeremyj@apple.com> on 2017-01-26
Reviewed by Tim Horton.

Source/WebKit2:

When the main frame is load is committed, pointer lock should end.
This resets pointer lock state between tests and allows tests to succeed.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::didCommitLoadForFrame):

LayoutTests:

Enabled pointer lock tests for wk2 now that pointer lock state is being reset after each test.

  • platform/mac-wk2/TestExpectations:
3:33 PM Changeset in webkit [211233] by Chris Dumez
  • 5 edits in trunk/Source/WebCore

Fix CPU / Memory diagnostic logging in PerformanceMonitor
https://bugs.webkit.org/show_bug.cgi?id=167469
<rdar://problem/30220959>

Reviewed by Alex Christensen.

Fix CPU / Memory diagnostic logging in PerformanceMonitor to use logDiagnosticMessage()
instead of logDiagnosticMessageWithValue(). logDiagnosticMessageWithValue() should only
be used with numeric values but we already take care of the bucketing on our side.

  • page/DiagnosticLoggingClient.h:
  • page/DiagnosticLoggingKeys.cpp:

(WebCore::DiagnosticLoggingKeys::postPageBackgroundingCPUUsageKey):
(WebCore::DiagnosticLoggingKeys::postPageBackgroundingMemoryUsageKey):
(WebCore::DiagnosticLoggingKeys::postPageLoadCPUUsageKey):
(WebCore::DiagnosticLoggingKeys::postPageLoadMemoryUsageKey):
(WebCore::DiagnosticLoggingKeys::foregroundCPUUsageToDiagnosticLoggingKey):
(WebCore::DiagnosticLoggingKeys::backgroundCPUUsageToDiagnosticLoggingKey):
(WebCore::DiagnosticLoggingKeys::postPageBackgroundingKey): Deleted.
(WebCore::DiagnosticLoggingKeys::postPageLoadKey): Deleted.
(WebCore::DiagnosticLoggingKeys::memoryUsageKey): Deleted.

  • page/DiagnosticLoggingKeys.h:
  • page/PerformanceMonitor.cpp:

(WebCore::PerformanceMonitor::measurePostLoadCPUUsage):
(WebCore::PerformanceMonitor::measurePostLoadMemoryUsage):
(WebCore::PerformanceMonitor::measurePostBackgroundingMemoryUsage):
(WebCore::PerformanceMonitor::measurePostBackgroundingCPUUsage):

2:34 PM Changeset in webkit [211232] by Ryan Haddad
  • 2 edits in trunk/Tools

Disable API test WebKit2.WebsitePoliciesPlayAfterPreventedAutoplay.
https://bugs.webkit.org/show_bug.cgi?id=167466

Unreviewed test gardening.

  • TestWebKitAPI/Tests/WebKit2Cocoa/WebsitePolicies.mm:

(TEST):

2:10 PM Changeset in webkit [211231] by beidson@apple.com
  • 2 edits in trunk/Source/WebCore

Gamepads: Some DPads are still not exposed in the HID backend.
rdar://problem/30217518 and https://bugs.webkit.org/show_bug.cgi?id=167465

Reviewed by Alex Christensen.

No new tests (Currently unable to test HID backend directly)

  • platform/gamepad/mac/HIDGamepad.cpp:

(WebCore::HIDGamepad::maybeAddButton): Allow GenericDesktop paged elements that are DPads to be buttons.

1:44 PM Changeset in webkit [211230] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Unreviewed, rolling out r210095.
https://bugs.webkit.org/show_bug.cgi?id=167464

broke tiling on mac (Requested by thorton on #webkit).

Reverted changeset:

"TileGrid revalidates tiles twice during flush, first with
wrong visible rect"
https://bugs.webkit.org/show_bug.cgi?id=166406
http://trac.webkit.org/changeset/210095

1:34 PM Changeset in webkit [211229] by Chris Dumez
  • 6 edits in trunk/Source

Fix WebGL diagnostic logging
https://bugs.webkit.org/show_bug.cgi?id=167463
<rdar://problem/30216981>

Reviewed by Alex Christensen.

Fix WebGL diagnostic logging so that it no longer uses logDiagnosticMessageWithValue().
This is because the value apparently needs to be numeric on Mac.

Source/WebCore:

  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::checkForContextLossHandling):

  • page/DiagnosticLoggingKeys.cpp:

(WebCore::DiagnosticLoggingKeys::pageHandlesWebGLContextLossKey):
(WebCore::WebCore::DiagnosticLoggingKeys::webGLStateKey):
(WebCore::DiagnosticLoggingKeys::stateKey): Deleted.
(WebCore::DiagnosticLoggingKeys::handlesContextLossKey): Deleted.
(WebCore::WebCore::DiagnosticLoggingKeys::webGLKey): Deleted.

  • page/DiagnosticLoggingKeys.h:

Source/WebKit2:

  • UIProcess/HighPerformanceGraphicsUsageSampler.cpp:

(WebKit::HighPerformanceGraphicsUsageSampler::timerFired):

1:19 PM Changeset in webkit [211228] by Alan Bujtas
  • 6 edits
    4 adds in trunk

Simple line layout: Add support for -webkit-hyphenate-limit-lines
https://bugs.webkit.org/show_bug.cgi?id=167446
<rdar://problem/30194030>

Reviewed by Antti Koivisto.

Source/WebCore:

Now we can set the limit on the number of lines that a word can split across through hyphenation.

Tests: fast/text/simple-line-layout-hyphen-limit-lines.html

fast/text/simple-line-layout-hyphen-limit-lines2.html

  • rendering/SimpleLineLayout.cpp:

(WebCore::SimpleLineLayout::canUseForStyle):
(WebCore::SimpleLineLayout::splitFragmentToFitLine):
(WebCore::SimpleLineLayout::printReason):

  • rendering/SimpleLineLayoutTextFragmentIterator.cpp:

(WebCore::SimpleLineLayout::TextFragmentIterator::Style::Style):

  • rendering/SimpleLineLayoutTextFragmentIterator.h:

(WebCore::SimpleLineLayout::TextFragmentIterator::TextFragment::TextFragment):
(WebCore::SimpleLineLayout::TextFragmentIterator::TextFragment::wrappingWithHyphenCounter):
(WebCore::SimpleLineLayout::TextFragmentIterator::TextFragment::splitWithHyphen): The right side of the split has +1 on the wrapping counter.

LayoutTests:

  • fast/text/simple-line-layout-hyphen-limit-lines-expected.html: Added.
  • fast/text/simple-line-layout-hyphen-limit-lines.html: Added.
  • fast/text/simple-line-layout-hyphen-limit-lines2-expected.html: Added.
  • fast/text/simple-line-layout-hyphen-limit-lines2.html: Added.
  • platform/mac/fast/text/hyphenate-limit-lines-expected.txt: progression
12:58 PM Changeset in webkit [211227] by Wenson Hsieh
  • 10 edits in trunk/Source

Add support for recognizing data interaction gestures in WebKit2
https://bugs.webkit.org/show_bug.cgi?id=167444

Reviewed by Beth Dakin.

Source/WebCore:

Minor tweaks to pasteboard code to support data interaction.

  • WebCore.xcodeproj/project.pbxproj:
  • platform/PlatformPasteboard.h:
  • platform/ios/PasteboardIOS.mm:

(WebCore::Pasteboard::read):

  • platform/ios/PlatformPasteboardIOS.mm:

(WebCore::PlatformPasteboard::PlatformPasteboard):

If the pasteboard is the special data interaction type, use the shared item provider pasteboard; otherwise,
fall back to the general pasteboard.

(WebCore::PlatformPasteboard::getTypes):

Actually populate the list of available types using available pasteboardTypes.

(WebCore::PlatformPasteboard::write):

Add UTF8 plaintext type (kUTTypeUTF8PlainText) when vending data representations of rich text.

  • platform/ios/WebItemProviderPasteboard.mm:

(-[WebItemProviderPasteboard setItems:]):
(-[WebItemProviderPasteboard dataForPasteboardType:inItemSet:]):
(-[WebItemProviderPasteboard valuesForPasteboardType:inItemSet:]):

Move off of deprecated methods when retrieving and supplying data to the item provider pasteboard.

  • platform/spi/ios/UIKitSPI.h:

Source/WebKit2:

Adds a new data interaction gesture recognizer, responsible for determining when to begin data interaction. This
is a new long press gesture recognizer that fires simultaneously with the existing long press gesture
recognizers (for performing long-press actions, and for showing the tap highlight).

Also tweaks logic for determining whether selection gesture recognizers should fire to account for data
interaction -- in particular, we don't want selection gesture recognizers to cause the current selection to
change while data interaction is possible. See -hasSelectablePositionAtPoint and -pointIsInAssistedNode for
more details.

  • UIProcess/ios/PageClientImplIOS.mm:

(WebKit::PageClientImpl::didPerformDataInteractionControllerOperation):
(WebKit::PageClientImpl::startDataInteractionWithImage):

  • UIProcess/ios/WKContentViewInteraction.h:
  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _createAndConfigureLongPressGestureRecognizer]):
(-[WKContentView setupInteraction]):
(-[WKContentView cleanupInteraction]):
(-[WKContentView _removeDefaultGestureRecognizers]):
(-[WKContentView _addDefaultGestureRecognizers]):
(-[WKContentView resignFirstResponder]):
(-[WKContentView gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:]):
(-[WKContentView gestureRecognizerShouldBegin:]):
(-[WKContentView hasSelectablePositionAtPoint:]):
(-[WKContentView pointIsInDataInteractionContent:]):
(-[WKContentView pointIsInAssistedNode:]):

12:41 PM Changeset in webkit [211226] by commit-queue@webkit.org
  • 17 edits
    3 adds in trunk

Notify clients when the user plays media otherwise prevented from autoplaying
https://bugs.webkit.org/show_bug.cgi?id=167390

Patch by Matt Rajca <mrajca@apple.com> on 2017-01-26
Reviewed by Alex Christensen.

Source/WebCore:

The API is tested.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::playInternal):

  • page/ChromeClient.h:

Source/WebKit2:

  • UIProcess/API/APIUIClient.h:

(API::UIClient::didPlayMediaPreventedFromPlayingWithoutUserGesture):

  • UIProcess/API/C/WKPage.cpp:

(WKPageSetPageUIClient):

  • UIProcess/API/C/WKPageUIClient.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::didPlayMediaPreventedFromPlayingWithoutUserGesture):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::didPlayMediaPreventedFromPlayingWithoutUserGesture):

  • WebProcess/WebCoreSupport/WebChromeClient.h:

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit2/autoplay-with-controls.html: Added.
  • TestWebKitAPI/Tests/WebKit2/js-play-with-controls.html: Added.
  • TestWebKitAPI/Tests/WebKit2Cocoa/WebsitePolicies.mm:

(didPlayMediaPreventedFromPlayingWithoutUserGesture):
(TEST):

  • TestWebKitAPI/cocoa/TestWKWebView.h:
  • TestWebKitAPI/cocoa/TestWKWebView.mm:

(-[TestWKWebViewHostWindow _mouseUpAtPoint:]):
(-[TestWKWebView waitForLoad]):
(-[TestWKWebView mouseUpAtPoint:]):

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::createOtherPage):
(WTR::TestController::createWebViewWithOptions):

12:39 PM Changeset in webkit [211225] by eocanha@igalia.com
  • 2 edits in trunk/Source/WebCore

[GStreamer] ASSERTION FAILED: !g_object_is_floating(ptr) in adoptGRef(GstContext* ptr)
https://bugs.webkit.org/show_bug.cgi?id=167458

Reviewed by Xabier Rodriguez-Calvar.

GstContext is a mini_object, not a GObject. Therefore it shouldn't (and can't) be checked for floatingness.

  • platform/graphics/gstreamer/GRefPtrGStreamer.cpp:

(WTF::adoptGRef): Removed incorrect assertion.

11:52 AM Changeset in webkit [211224] by jfbastien@apple.com
  • 15 edits
    1 copy
    2 adds in trunk

OSR entry: delay outer-loop compilation when at inner-loop
https://bugs.webkit.org/show_bug.cgi?id=167149

Reviewed by Filip Pizlo.

JSTests:

Try to be mean to OSR entry by using nested loops, and having
non-int32 types or truly varying types.

Mandelbrot currently never tiers up to FTL because it exits too
many times before this. That shouldn't happen because it's just
numbers and int32s. I'll file a bug to fix this.

  • microbenchmarks/mandelbrot.js: Added.

(mandelbrot):
(printable):

  • microbenchmarks/nonude.js: Added.

(Array.prototype.remove):
(const.u):
(const.load):
(const.scan):
(const.main):

Source/JavaScriptCore:

As of https://bugs.webkit.org/show_bug.cgi?id=155217 OSR
compilation can be kicked off for an entry into an outer-loop,
while executing an inner-loop. This is desirable because often the
codegen from an inner-entry isn't as good as the codegen from an
outer-entry, but execution from an inner-loop is often pretty hot
and likely to kick off compilation. This approach provided nice
speedups on Kraken because we'd select to enter to the outer-loop
very reliably, which reduces variability (the inner-loop was
selected roughly 1/5 times from my unscientific measurements).

When compilation starts we take a snapshot of the JSValues at the
current execution state using OSR's recovery mechanism. These
values are passed to the compiler and are used as way to perform
type profiling, and could be used to observe cell types as well as
to perform predictions such as through constant propagation.

It's therefore desired to enter from the outer-loop when we can,
but we need to be executing from that location to capture the
right JSValues, otherwise we're confusing the compiler and giving
it inaccurate JSValues which can lead it to predict the wrong
things, leading to suboptimal code or recompilation due to
misprediction, or in super-corner-cases a crash.

These effects are pretty hard to measure: Fil points out that
marsalis-osr-entry really needs mustHandleValues (the JSValues
from the point of execution) because right now it just happens to
correctly guess int32. I tried removing mustHandleValues entirely
and saw no slowdowns, but our benchmarks probably aren't
sufficient to reliably find issues, sometimes because we happen to
have sufficient mitigations.

DFG tier-up was added here:
https://bugs.webkit.org/show_bug.cgi?id=112838

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • dfg/DFGJITCode.h:
  • dfg/DFGJITCompiler.cpp:

(JSC::DFG::JITCompiler::JITCompiler):

  • dfg/DFGOSREntry.cpp:

(JSC::DFG::prepareOSREntry):

  • dfg/DFGOSREntry.h:

(JSC::DFG::prepareOSREntry):

  • dfg/DFGOperations.cpp:
  • dfg/DFGOperations.h:
  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • dfg/DFGTierUpEntryTrigger.h: Copied from Source/JavaScriptCore/ftl/FTLOSREntry.h.
  • dfg/DFGToFTLForOSREntryDeferredCompilationCallback.cpp:

(JSC::DFG::ToFTLForOSREntryDeferredCompilationCallback::ToFTLForOSREntryDeferredCompilationCallback):
(JSC::DFG::Ref<ToFTLForOSREntryDeferredCompilationCallback>ToFTLForOSREntryDeferredCompilationCallback::create):
(JSC::DFG::ToFTLForOSREntryDeferredCompilationCallback::compilationDidBecomeReadyAsynchronously):
(JSC::DFG::ToFTLForOSREntryDeferredCompilationCallback::compilationDidComplete):

  • dfg/DFGToFTLForOSREntryDeferredCompilationCallback.h:
  • ftl/FTLOSREntry.cpp:

(JSC::FTL::prepareOSREntry):

  • ftl/FTLOSREntry.h:
  • jit/JITOperations.cpp:
11:50 AM Changeset in webkit [211223] by andersca@apple.com
  • 2 edits in trunk/Source/WebKit2

Don't use _CFBundleCreateUnique on Yosemite, it's not available there
https://bugs.webkit.org/show_bug.cgi?id=167459
rdar://problem/30181179

Reviewed by Beth Dakin.

  • Shared/Plugins/Netscape/mac/NetscapePluginModuleMac.mm:

(WebKit::NetscapePluginModule::getPluginInfo):

11:36 AM Changeset in webkit [211222] by Alan Bujtas
  • 6 edits
    4 adds in trunk

Simple line layout: Add support for -webkit-hyphenate-limit-after and -webkit-hyphenate-limit-before
https://bugs.webkit.org/show_bug.cgi?id=167439
<rdar://problem/30180184>

Reviewed by Antti Koivisto.

Source/WebCore:

Implement pre and post hyphen length constrains for simple line layout.

Tests: fast/text/simple-line-layout-hyphen-limit-after.html

fast/text/simple-line-layout-hyphen-limit-before.html

  • rendering/SimpleLineLayout.cpp:

(WebCore::SimpleLineLayout::canUseForStyle):
(WebCore::SimpleLineLayout::printReason):

  • rendering/SimpleLineLayoutTextFragmentIterator.cpp:

(WebCore::SimpleLineLayout::TextFragmentIterator::Style::Style): Same as normal line layout default values.
(WebCore::SimpleLineLayout::TextFragmentIterator::lastHyphenPosition):

  • rendering/SimpleLineLayoutTextFragmentIterator.h:

LayoutTests:

  • fast/text/simple-line-layout-hyphen-limit-after.html: Added.
  • fast/text/simple-line-layout-hyphen-limit-before-expected.html: Added.
  • fast/text/simple-line-layout-hyphen-limit-before.html: Added.
  • platform/mac/fast/text/hyphenate-limit-before-after-expected.txt: progression.
11:25 AM Changeset in webkit [211221] by commit-queue@webkit.org
  • 10 edits in trunk/Source/WebKit2

Add SPI for updating WebsitePolicies
https://bugs.webkit.org/show_bug.cgi?id=167040

Patch by Alex Christensen <achristensen@webkit.org> on 2017-01-26
Reviewed by Brady Eidson.

In r209558 we added a way to send a WebsitePolicies structure to the WebProcess during navigation.
If the UIProcess wants to update these policies on a WKWebView while a page is open, we will
need to have SPI for doing so. This adds such SPI, but it's not hooked up to change functionality yet.

  • UIProcess/API/C/WKPage.cpp:

(WKPageUpdateWebsitePolicies):

  • UIProcess/API/C/WKPage.h:
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _updateWebsitePolicies:]):

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::updateWebsitePolicies):

  • UIProcess/WebPageProxy.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updateWebsitePolicies):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
11:21 AM Changeset in webkit [211220] by beidson@apple.com
  • 3 edits in trunk/Source/WebCore

Gamepad support shows wrong values for PS4 controllers (D-pad is missing).
<rdar://problem/29578619> and https://bugs.webkit.org/show_bug.cgi?id=165588

Reviewed by Alex Christensen.

No new tests (Currently unable to test HID backend directly)

DPads report their HID type as "a button", but their HID usage is "Hatswitch".
This patch adds a new element type that maps a "hatswitch" value to 4 additional buttons.

  • platform/gamepad/mac/HIDGamepad.cpp:

(WebCore::HIDGamepad::initElements):
(WebCore::HIDGamepad::initElementsFromArray):
(WebCore::HIDGamepad::maybeAddButton):
(WebCore::HIDGamepad::maybeAddDPad):
(WebCore::HIDGamepad::maybeAddAxis):
(WebCore::fillInButtonValues):
(WebCore::HIDGamepad::valueChanged):

  • platform/gamepad/mac/HIDGamepad.h:

(WebCore::HIDGamepadElement::isDPad):
(WebCore::HIDGamepadDPad::HIDGamepadDPad):
(WebCore::HIDGamepadDPad::normalizedValue):

10:55 AM Changeset in webkit [211219] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking swipe/main-frame-pinning-requirement.html as flaky on El Capitan.
https://bugs.webkit.org/show_bug.cgi?id=161887

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
10:49 AM Changeset in webkit [211218] by Ryan Haddad
  • 3 edits in trunk/LayoutTests

Marking media/modern-media-controls/tracks-support/tracks-support-click-track-in-panel.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=165319

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
  • platform/mac/TestExpectations:
10:49 AM Changeset in webkit [211217] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking inspector/heap/gc.html as slow on macOS debug.
https://bugs.webkit.org/show_bug.cgi?id=167408

Unreviewed test gardening.

  • platform/mac/TestExpectations:
8:38 AM Changeset in webkit [211216] by matthew_hanson@apple.com
  • 2 edits in branches/safari-603-branch/Source/JavaScriptCore

Merge r234555 via r211180. rdar://problem/30156092

8:32 AM Changeset in webkit [211215] by matthew_hanson@apple.com
  • 1 copy in tags/Safari-603.1.22

New tag.

8:32 AM Changeset in webkit [211214] by matthew_hanson@apple.com
  • 1 delete in tags/Safari-603.1.22

Remove tag.

7:52 AM Changeset in webkit [211213] by matthew_hanson@apple.com
  • 5 edits in branches/safari-603-branch/Source

Versioning.

7:52 AM Changeset in webkit [211212] by matthew_hanson@apple.com
  • 2 edits in branches/safari-603-branch/Source/JavaScriptCore

Roll out r234555 via r211180.

7:52 AM Changeset in webkit [211211] by matthew_hanson@apple.com
  • 5 edits in branches/safari-603-branch/Source/WebCore

Merge r211151. rdar://problem/30171195

7:51 AM Changeset in webkit [211210] by matthew_hanson@apple.com
  • 1 copy in tags/Safari-603.1.22

New tag.

6:58 AM Changeset in webkit [211209] by commit-queue@webkit.org
  • 5 edits
    2 adds in trunk

[Modern Media Controls] Hiding controls, changing their width and showing them again shows an incorrect layout
https://bugs.webkit.org/show_bug.cgi?id=167160
<rdar://problem/29612318>

Patch by Antoine Quint <Antoine Quint> on 2017-01-26
Reviewed by Dean Jackson.

Source/WebCore:

When we toggle visibility of the controls bar, we notify the hosting media controls and in the case of the
macOS inline media controls, we update the controls layout which would have failed to run last time it tried
due to the controls bar being hidden.

Test: media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-resize-with-hidden-controls-bar.html

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

(ControlsBar.prototype.set visible):

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

(MacOSInlineMediaControls.prototype.controlsBarVisibilityDidChange):

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

(MediaControls.prototype.controlsBarVisibilityDidChange):

LayoutTests:

Add a new test that creates media controls at a given width, hides the controls bar, increases the width, makes
the controls bar visible again, and checks that the layout was correctly updated as a result.

  • media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-resize-with-hidden-controls-bar-expected.txt: Added.
  • media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-resize-with-hidden-controls-bar.html: Added.
2:52 AM Changeset in webkit [211208] by Csaba Osztrogonác
  • 2 edits in trunk/Source/WebCore

[Mac][cmake] Unreviewed speculative buildfix after r211161.
https://bugs.webkit.org/show_bug.cgi?id=167294

  • PlatformMac.cmake:
2:09 AM Changeset in webkit [211207] by pvollan@apple.com
  • 6 edits
    1 add in trunk

Crash when setting custom scale factor.
https://bugs.webkit.org/show_bug.cgi?id=167369

Reviewed by Sam Weinig.

Source/WebKit/mac:

Add null pointer check.

  • WebView/WebView.mm:

(-[WebView _setCustomBackingScaleFactor:]):

Source/WebKit/win:

Add null pointer check.

  • WebView.cpp:

(WebView::setCustomBackingScaleFactor):

Tools:

Added API test.

  • TestWebKitAPI/PlatformWin.cmake:
  • TestWebKitAPI/Tests/WebKit/win/ScaleWebView.cpp: Added.

(TestWebKitAPI::WebKitCreateInstance):
(TestWebKitAPI::ScaleWebView::SetUp):
(TestWebKitAPI::ScaleWebView::TearDown):
(TestWebKitAPI::TEST_F):

1:21 AM Changeset in webkit [211206] by zandobersek@gmail.com
  • 2 edits in trunk/Source/WebCore

ImageBufferCairo: cairo_image_surface should use bmalloc-allocated memory
https://bugs.webkit.org/show_bug.cgi?id=165751

Reviewed by Carlos Garcia Campos.

Allocate the underlying memory for cairo_image_surface objects through FastMalloc.
This way we can steer such large allocations away from the default libc allocator.

Objects of this class can create Cairo surfaces that need as much as 4MB of memory
for the underlying pixel buffer. Allocating such objects through the default
libc allocator can lead to increased memory usage because of non-optimal allocation
strategy in libc. In contrast, bmalloc performs large allocations by directly using
mmap() to reserve the necessary memory.

The improvements can be significant. On nytimes.com, with the threaded version of
the CoordinatedGraphics system, the memory consumption can drop by roughly 20%.

  • platform/graphics/cairo/ImageBufferCairo.cpp:

(WebCore::ImageBuffer::ImageBuffer): Zero-allocate the necessary memory via FastMalloc.
Tie that memory lifetime to the lifetime of the surface by using
cairo_surface_set_user_data() with the specific user data key.

1:19 AM Changeset in webkit [211205] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit2

[Threaded Compositor] Update also the contents size when creating the threaded compositor
https://bugs.webkit.org/show_bug.cgi?id=167452

Reviewed by Žan Doberšek.

In r210954 we ensured that the threaded compositor and the viewport controller were created with the initial web
page size. If we don't update the contents size, the visible rectangle will be empty and tiles won't be created
until contentsSizeDidChange is called. It's even possible, when entering AC mode on demand, that we create the
layer tree host after the contents size changed, in which case nothing is rendered unless we resize the window.

  • WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp:

(WebKit::ThreadedCoordinatedLayerTreeHost::ThreadedCoordinatedLayerTreeHost):

1:05 AM Changeset in webkit [211204] by magomez@igalia.com
  • 2 edits in trunk/Source/WebCore

[GTK] WebProcess from WebKitGtk+ 2.15.3 SIGSEVs in WebCore::GraphicsContext3D::drawArrays(unsigned int, int, int) at Source/WebCore/platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:740
https://bugs.webkit.org/show_bug.cgi?id=167296

Reviewed by Sergio Villar Senin.

Use a VBO to pass the vertex data when using the stencil for clipping. Passing a custom array without
using an VBO is deprecated when using OpenGL >= 3.0 and a Core profile.

No behaviour change, no new tests.

  • platform/graphics/texmap/TextureMapperGL.cpp:

(WebCore::TextureMapperGL::beginClip):

12:55 AM Changeset in webkit [211203] by Csaba Osztrogonác
  • 2 edits in trunk/Source/WebKit2

[Mac][cmake] Fix the build after r211160
https://bugs.webkit.org/show_bug.cgi?id=167451

Unreviewed buildfix.

  • UIProcess/API/Cocoa/WKWebView.mm:

Jan 25, 2017:

8:55 PM Changeset in webkit [211202] by rniwa@webkit.org
  • 2 edits in trunk/Tools

run-benchmark nests MotionMark results by the suite name twice
https://bugs.webkit.org/show_bug.cgi?id=164948

Reviewed by Said Abou-Hallawa.

Use a single level MotionMark now that this is the name of the benchmark,
and we no longer have tests that aren't part of the MotionMark suite.

  • Scripts/webkitpy/benchmark_runner/data/patches/MotionMark.patch:
8:50 PM Changeset in webkit [211201] by rniwa@webkit.org
  • 4 edits
    2 adds in trunk

Crash under DOMSelection::deleteFromDocument()
https://bugs.webkit.org/show_bug.cgi?id=167232

Reviewed by Chris Dumez.

Source/WebCore:

The crash was caused by DOMSelection's deleteFromDocument() mutating contents inside the user-agent
shadow tree of an input element when the text field is readonly. Fixed the bug by exiting early
whenever the selection is inside a shadow tree since getSelection().getRangeAt(0) always returns
a range outside the input element or any shadow tree for that matter.

New behavior matches that of Gecko. The working draft spec of which I'm the editor states that
deleteFromDocument() must invoke Range's deleteContents() on the associated range, which is
the collapsed range returned by getSelection().getRangeAt(0) in the spec:
https://www.w3.org/TR/2016/WD-selection-api-20160921/#widl-Selection-deleteFromDocument-void
And Range's deleteContents() immediately terminates in step 1 when start and end are identical:
https://dom.spec.whatwg.org/commit-snapshots/6b7621282c2e3b222ac585650e484abf4c0a416b/

Note that Range's DOM mutating methods are not available inside an user-agent shadow tree because
WebKit never returns a Range whose end boundary points are inside the tree to author scripts.
Editing commands (ones executable from document.execCommand) that mutate DOM like this check whether
the content is editable or not. Since VisibleSelection's validate() function makes sure the selection
is either entirely within or outside of an root editable element (editing host in the W3C spec lingo),
editing commands should never mutate a random node inside an user-agent shadow tree.

Test: editing/selection/deleteFromDocument-shadow-tree-crash.html

  • page/DOMSelection.cpp:

(WebCore::DOMSelection::deleteFromDocument):

LayoutTests:

Based on a patch by Chris Dumez. Add a regression test and rebaseline a Blink test as WebKit's
new behavior matches that of Gecko instead of Blink.

  • editing/selection/deleteFromDocument-shadow-tree-crash-expected.txt: Added.
  • editing/selection/deleteFromDocument-shadow-tree-crash.html: Added.
  • imported/blink/editing/selection/deleteFromDocument-crash-expected.html:
8:24 PM Changeset in webkit [211200] by Ryan Haddad
  • 18 edits
    3 deletes in trunk

Unreviewed, rolling out r211193.

This change broke internal builds.

Reverted changeset:

"Notify clients when the user plays media otherwise prevented
from autoplaying"
https://bugs.webkit.org/show_bug.cgi?id=167390
http://trac.webkit.org/changeset/211193

8:22 PM Changeset in webkit [211199] by Wenson Hsieh
  • 19 edits in trunk/Source

Add infrastructure to support data interaction in WebKit2
https://bugs.webkit.org/show_bug.cgi?id=167443

Reviewed by Simon Fraser.

Source/WebCore:

Adds support in WebCore to determine whether there is interactive data at a given position. No new tests, since
there should be no behavior change yet.

  • page/EventHandler.h:
  • page/Page.cpp:

(WebCore::Page::hasDataInteractionAtPosition):

  • page/Page.h:

Source/WebKit2:

Adds plumbing for two new XPC messages: WebPageProxy::DidPerformDataInteractionControllerOperation and
WebPage::RequestStartDataInteraction. Additionally, adds a new field to InteractionInformationAtPosition that
indicates whether or not there is data to interact with at a given location.

This patch only adds infrastructure, and does not change any behavior.

  • Shared/ios/InteractionInformationAtPosition.h:
  • Shared/ios/InteractionInformationAtPosition.mm:

(WebKit::InteractionInformationAtPosition::encode):
(WebKit::InteractionInformationAtPosition::decode):

  • UIProcess/PageClient.h:
  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/ios/PageClientImplIOS.h:
  • UIProcess/ios/PageClientImplIOS.mm:

(WebKit::PageClientImpl::didPerformDataInteractionControllerOperation):
(WebKit::PageClientImpl::startDataInteractionWithImage):

  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::didPerformDataInteractionControllerOperation):
(WebKit::requestStartDataInteraction):

  • UIProcess/mac/PageClientImpl.h:
  • UIProcess/mac/PageClientImpl.mm:

(WebKit::PageClientImpl::didPerformDataInteractionControllerOperation):
(WebKit::PageClientImpl::startDataInteractionWithImage):

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

(WebKit::WebPage::requestStartDataInteraction):
(WebKit::WebPage::getPositionInformation):

8:19 PM Changeset in webkit [211198] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking media/modern-media-controls/airplay-support/airplay-support.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=167442

Unreviewed test gardening.

  • platform/mac/TestExpectations:
8:05 PM Changeset in webkit [211197] by timothy_horton@apple.com
  • 4 edits in trunk/Source/WebKit2

Stop inheriting from UIWebScrollView, just use UIScrollView
https://bugs.webkit.org/show_bug.cgi?id=167440
<rdar://problem/7729691>

Reviewed by Simon Fraser.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView scrollViewWillBeginDragging:]):

  • UIProcess/ios/WKScrollView.h:
  • UIProcess/ios/WKScrollView.mm:

(-[WKScrollView initWithFrame:]): Deleted.
(-[WKScrollView setDecelerationRate:]): Deleted.
Inherit directly from UIScrollView, no need for UIWebScrollView.
Set the few settings we care about directly.
This has the side effect of reducing the default rate of scroll deceleration.

8:00 PM Changeset in webkit [211196] by rniwa@webkit.org
  • 6 edits
    1 add in trunk/Websites/perf.webkit.org

Modernize editable-text component and add tests
https://bugs.webkit.org/show_bug.cgi?id=167398

Reviewed by Yusuke Suzuki.

Modernized EditableText component to use the action feature added in r210938.

  • browser-tests/editable-text-tests.js: Added. Added tests for EditableText component.

(.waitToRender):

  • browser-tests/index.html:
  • public/v3/components/base.js:

(ComponentBase.prototype.dispatchAction): Return the result from the callback.

  • public/v3/components/editable-text.js:

(EditableText): Removed a bunch of instance variables that are no longer needed.
(EditableText.prototype.didConstructShadowTree): Added. Add event listeners on the Edit/Save button and the host.
(EditableText.prototype.editedText): Return the text field's value directly.
(EditableText.prototype.text): Added.
(EditableText.prototype.setText): Call enqueueToRender automatically instead of relying on the parent component
to do so in _startedEditingCallback, which has been removed.
(EditableText.prototype.render): Modernized the code.
(EditableText.prototype._didClick): No longer prevents the default action manually since that's automatically done
in createEventHandler. Handle the case where the update action is not handled.
(EditableText.prototype._endEditingMode): Renamed from _didUpdate.
(EditableText.htmlTemplate): Added ids on various elements in the shadow tree.
(EditableText.cssTemplate): Updated the CSS selectors per above change.

  • public/v3/main.js:

(main): Fixed a typo.

  • public/v3/pages/analysis-task-page.js:

(AnalysisTaskPage): Use the action listener instead of manually setting callbacks.
(AnalysisTaskPage.prototype._createTestGroupListItem): Ditto.
(AnalysisTaskPage.prototype._didStartEditingTaskName): Deleted.

6:38 PM Changeset in webkit [211195] by sbarati@apple.com
  • 6 edits
    1 add in trunk

WebAssembly JS API: coerce return values from imports
https://bugs.webkit.org/show_bug.cgi?id=165480
<rdar://problem/29760318>

Reviewed by Yusuke Suzuki.

JSTests:

  • wasm/function-tests/function-import-return-value.js: Added.

(import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.const.tests.x.assert.eq):
(import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.const.tests.Math.fround):
(import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.let.type.of.Reflect.ownKeys):
(test.1):
(assert.truthy):
(assert.throws):

Source/JavaScriptCore:

This patch does proper coercion for all possible
JSValue return types from an imported function.

It also adds the spec-compliant code to throw an exception
when calling an import that has an i64 parameter or return
value.

  • jit/AssemblyHelpers.cpp:

(JSC::AssemblyHelpers::emitJumpIfException):

  • jit/AssemblyHelpers.h:
  • wasm/WasmB3IRGenerator.cpp:
  • wasm/WasmBinding.cpp:

(JSC::Wasm::wasmToJs):

6:34 PM Changeset in webkit [211194] by fpizlo@apple.com
  • 4 edits
    1 add in trunk

jsc.cpp should have the $.agent stuff for testing SAB
https://bugs.webkit.org/show_bug.cgi?id=167431

Reviewed by Saam Barati.

JSTests:

Add a very basic test of Atomics using $.agent. This is based on
LayoutTests/workers/sab/simple.html.

  • stress/lars-sab-workers.js: Added.

(startWorker):
(resources):
(wake):
(else):

Source/JavaScriptCore:

This adds some stuff that the SAB branch of test262 needs. None of this is exposed except for our
own tests and the SAB branch of test262. We now pass all of the Atomics tests in the SAB branch
of test262.

  • jsc.cpp:

(Message::releaseContents):
(Message::index):
(GlobalObject::finishCreation):
(GlobalObject::addFunction):
(Message::Message):
(Message::~Message):
(Worker::Worker):
(Worker::~Worker):
(Worker::send):
(Worker::receive):
(Worker::current):
(Worker::currentWorker):
(Workers::Workers):
(Workers::~Workers):
(Workers::broadcast):
(Workers::report):
(Workers::tryGetReport):
(Workers::getReport):
(Workers::singleton):
(functionDollarCreateRealm):
(functionDollarDetachArrayBuffer):
(functionDollarEvalScript):
(functionDollarAgentStart):
(functionDollarAgentReceiveBroadcast):
(functionDollarAgentReport):
(functionDollarAgentSleep):
(functionDollarAgentBroadcast):
(functionDollarAgentGetReport):
(functionWaitForReport):
(checkException):
(runWithScripts):
(runJSC):
(jscmain):

  • runtime/JSArrayBuffer.h:
6:18 PM Changeset in webkit [211193] by commit-queue@webkit.org
  • 18 edits
    3 adds in trunk

Notify clients when the user plays media otherwise prevented from autoplaying
https://bugs.webkit.org/show_bug.cgi?id=167390

Patch by Matt Rajca <mrajca@apple.com> on 2017-01-25
Reviewed by Alex Christensen.

Source/WebCore:

The API is tested.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::playInternal):

  • page/ChromeClient.h:

Source/WebKit2:

  • UIProcess/API/APIUIClient.h:

(API::UIClient::didPlayMediaPreventedFromPlayingWithoutUserGesture):

  • UIProcess/API/C/WKPage.cpp:

(WKPageSetPageUIClient):

  • UIProcess/API/C/WKPageUIClient.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::didPlayMediaPreventedFromPlayingWithoutUserGesture):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::didPlayMediaPreventedFromPlayingWithoutUserGesture):

  • WebProcess/WebCoreSupport/WebChromeClient.h:

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit2/autoplay-with-controls.html: Added.
  • TestWebKitAPI/Tests/WebKit2/js-play-with-controls.html: Added.
  • TestWebKitAPI/Tests/WebKit2Cocoa/WebsitePolicies.mm:

(didPlayMediaPreventedFromPlayingWithoutUserGesture):
(TEST):

  • TestWebKitAPI/cocoa/TestWKWebView.h:
  • TestWebKitAPI/cocoa/TestWKWebView.mm:

(-[TestWKWebViewHostWindow _mouseUpAtPoint:]):
(-[TestWKWebView waitForLoad]):
(-[TestWKWebView mouseUpAtPoint:]):

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::createOtherPage):
(WTR::TestController::createWebViewWithOptions):

6:01 PM Changeset in webkit [211192] by Wenson Hsieh
  • 22 edits in trunk/Source

Refactor drag and drop implementation on Mac
https://bugs.webkit.org/show_bug.cgi?id=167427

Reviewed by Enrica Casucci.

Source/WebCore:

Refactors some code around drag and drop on Mac, and cleans up some other related code as needed. This patch
should result in no behavior change.

  • dom/DataTransfer.cpp:
  • page/EventHandler.cpp:
  • page/ios/EventHandlerIOS.mm:

(WebCore::EventHandler::eventLoopHandleMouseDragged):

  • page/mac/EventHandlerMac.mm:
  • platform/DragImage.cpp:
  • platform/Pasteboard.h:
  • platform/ios/DragImageIOS.mm:
  • platform/ios/PasteboardIOS.mm:
  • platform/mac/DragDataMac.mm:

(rtfPasteboardType):
(rtfdPasteboardType):
(stringPasteboardType):
(urlPasteboardType):
(htmlPasteboardType):
(colorPasteboardType):
(pdfPasteboardType):
(tiffPasteboardType):
(WebCore::DragData::DragData):
(WebCore::DragData::containsColor):
(WebCore::DragData::containsFiles):
(WebCore::DragData::numberOfFiles):
(WebCore::DragData::asFilenames):
(WebCore::DragData::containsPlainText):
(WebCore::DragData::containsCompatibleContent):
(WebCore::DragData::containsPromise):
(WebCore::DragData::asURL):

  • platform/mac/DragImageMac.mm:

Source/WebKit/mac:

Refactor some WebKit1 code on the Mac pertaining to drag and drop. See WebCore ChangeLog for more details.

  • Misc/WebNSPasteboardExtras.h:
  • WebCoreSupport/WebDragClient.mm:
  • WebView/WebFrame.mm:
  • WebView/WebFrameInternal.h:
  • WebView/WebHTMLView.mm:
  • WebView/WebView.mm:

(-[WebView initSimpleHTMLDocumentWithStyle:frame:preferences:groupName:]):

Source/WebKit2:

See WebCore ChangeLog for more details.

  • Shared/WebCoreArgumentCoders.cpp:

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

  • UIProcess/Cocoa/WebPageProxyCocoa.mm:
  • WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:
5:43 PM Changeset in webkit [211191] by commit-queue@webkit.org
  • 2 edits
    4 adds in trunk/Source/WebCore

[WebRTC] Add support for incoming and outgoing libwebrtc audio tracks
https://bugs.webkit.org/show_bug.cgi?id=167438

Patch by Youenn Fablet <youenn@apple.com> on 2017-01-25
Reviewed by Eric Carlson.

RealtimeIncomingAudioSource consumes audio buffers given by libwebrtc.
RealtimeOutgoingAudioSource consumes audio buffers from WebCore tracks (capture typically) and feeds libwebrtc with them.
To be covered by Layout/mock tests once LibWebRTC peer connection will be added.
These are only skeletons right now, the conversion between WebCore and LibWebRTC data is not yet implemented.

  • WebCore.xcodeproj/project.pbxproj:
  • platform/mediastream/mac/RealtimeIncomingAudioSource.cpp: Added.

(WebCore::RealtimeIncomingAudioSource::create):
(WebCore::RealtimeIncomingAudioSource::RealtimeIncomingAudioSource):
(WebCore::RealtimeIncomingAudioSource::OnData):
(WebCore::RealtimeIncomingAudioSource::startProducingData):
(WebCore::RealtimeIncomingAudioSource::stopProducingData):
(WebCore::RealtimeIncomingAudioSource::capabilities):
(WebCore::RealtimeIncomingAudioSource::settings):
(WebCore::RealtimeIncomingAudioSource::supportedConstraints):
(WebCore::RealtimeIncomingAudioSource::addObserver):
(WebCore::RealtimeIncomingAudioSource::removeObserver):
(WebCore::RealtimeIncomingAudioSource::start):
(WebCore::RealtimeIncomingAudioSource::audioSourceProvider):

  • platform/mediastream/mac/RealtimeIncomingAudioSource.h: Added.
  • platform/mediastream/mac/RealtimeOutgoingAudioSource.cpp: Added.

(WebCore::RealtimeOutgoingAudioSource::sourceHasMoreMediaData):

  • platform/mediastream/mac/RealtimeOutgoingAudioSource.h: Added.
5:41 PM Changeset in webkit [211190] by matthew_hanson@apple.com
  • 7 edits in branches/safari-603-branch/Source/WebCore

Merge 210777. rdar://problem/30186526

5:41 PM Changeset in webkit [211189] by matthew_hanson@apple.com
  • 4 edits in branches/safari-603-branch/Source

Merge r211126. rdar://problem/30174873

5:41 PM Changeset in webkit [211188] by matthew_hanson@apple.com
  • 9 edits in branches/safari-603-branch/Source/WebCore

Merge r211120. rdar://problem/30151767

5:41 PM Changeset in webkit [211187] by matthew_hanson@apple.com
  • 3 edits
    6 adds in branches/safari-603-branch

Merge r211125. rdar://problem/30074665

5:40 PM Changeset in webkit [211186] by matthew_hanson@apple.com
  • 4 edits in branches/safari-603-branch

Merge r211137. rdar://problem/29896656

5:40 PM Changeset in webkit [211185] by matthew_hanson@apple.com
  • 7 edits in branches/safari-603-branch/Source/WebKit2

Merge r211121. rdar://problem/22938927

5:40 PM Changeset in webkit [211184] by matthew_hanson@apple.com
  • 4 edits
    1 add in branches/safari-603-branch

Merge r211129. rdar://problem/30178458

5:40 PM Changeset in webkit [211183] by matthew_hanson@apple.com
  • 3 edits
    1 add in branches/safari-603-branch

Merge r211122. rdar://problem/30177808

5:40 PM Changeset in webkit [211182] by matthew_hanson@apple.com
  • 3 edits
    1 add in branches/safari-603-branch

Merge r211113. rdar://problem/30174692

5:40 PM Changeset in webkit [211181] by matthew_hanson@apple.com
  • 2 edits in branches/safari-603-branch/Source/JavaScriptCore

Merge r211111. rdar://problem/30173375

5:40 PM Changeset in webkit [211180] by matthew_hanson@apple.com
  • 2 edits in branches/safari-603-branch/Source/JavaScriptCore

Merge r211124. rdar://problem/30156092

5:01 PM Changeset in webkit [211179] by Ryan Haddad
  • 3 edits in trunk/LayoutTests

modern-media-test gardening.

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
  • platform/mac/TestExpectations:
5:01 PM Changeset in webkit [211178] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Rebaseline fast/forms/ios/ipad/focus-input-via-button.html.

Unreviewed test gardening.

  • fast/forms/ios/ipad/focus-input-via-button-expected.txt:
4:31 PM Changeset in webkit [211177] by commit-queue@webkit.org
  • 1 edit
    4 adds in trunk/Source/WebCore

[WebRTC] Add support for libwebrtc video incoming and outgoing video tracks
https://bugs.webkit.org/show_bug.cgi?id=167432

Patch by Youenn Fablet <youenn@apple.com> on 2017-01-25
Reviewed by Eric Carlson.

Not covered by tests right now, this will be covered by layout/mock tests.
RealtimeIncomingVideoSource consumes video frames given by libwebrtc.
RealtimeOutgoingVideoSource consumes video frames from WebCore tracks (capture typically) and feeds libwebrtc with them.

  • platform/mediastream/mac/RealtimeIncomingVideoSource.cpp: Added.

(WebCore::RealtimeIncomingVideoSource::create):
(WebCore::RealtimeIncomingVideoSource::RealtimeIncomingVideoSource):
(WebCore::RealtimeIncomingVideoSource::startProducingData):
(WebCore::RealtimeIncomingVideoSource::stopProducingData):
(WebCore::RealtimeIncomingVideoSource::OnFrame):
(WebCore::RealtimeIncomingVideoSource::processNewSample):
(WebCore::drawImage):
(WebCore::RealtimeIncomingVideoSource::currentFrameImage):
(WebCore::RealtimeIncomingVideoSource::paintCurrentFrameInContext):
(WebCore::RealtimeIncomingVideoSource::capabilities):
(WebCore::RealtimeIncomingVideoSource::settings):
(WebCore::RealtimeIncomingVideoSource::supportedConstraints):

  • platform/mediastream/mac/RealtimeIncomingVideoSource.h: Added.
  • platform/mediastream/mac/RealtimeOutgoingVideoSource.cpp: Added.

(WebCore::RealtimeOutgoingVideoSource::RealtimeOutgoingVideoSource):
(WebCore::RealtimeOutgoingVideoSource::GetStats):
(WebCore::RealtimeOutgoingVideoSource::AddOrUpdateSink):
(WebCore::RealtimeOutgoingVideoSource::RemoveSink):
(WebCore::RealtimeOutgoingVideoSource::sourceHasMoreMediaData):

  • platform/mediastream/mac/RealtimeOutgoingVideoSource.h: Added.
4:24 PM Changeset in webkit [211176] by aestes@apple.com
  • 1 edit in trunk/Source/WebKit2/PlatformMac.cmake

Try to fix the Mac CMake build after r211160.

  • PlatformMac.cmake:
3:50 PM Changeset in webkit [211175] by Wenson Hsieh
  • 5 edits
    2 copies
    1 add in trunk/Source

Introduce an item-provider-based pasteboard wrapper
https://bugs.webkit.org/show_bug.cgi?id=167410

Reviewed by Enrica Casucci.

Source/WebCore:

Introduces WebItemProviderPasteboard, a pasteboard-like object backed by a number of item providers. No new
tests, since there is no behavior change.

  • WebCore.xcodeproj/project.pbxproj:
  • platform/ios/AbstractPasteboard.h: Copied from Source/WebCore/platform/spi/ios/UIKitSPI.h.
  • platform/ios/WebItemProviderPasteboard.h: Copied from Source/WebCore/platform/spi/ios/UIKitSPI.h.
  • platform/ios/WebItemProviderPasteboard.mm: Added.

(isRichTextType):
(isStringType):
(isURLType):
(isColorType):
(isImageType):
(+[WebItemProviderPasteboard sharedInstance]):
(-[WebItemProviderPasteboard init]):
(-[WebItemProviderPasteboard dealloc]):
(-[WebItemProviderPasteboard pasteboardTypes]):
(-[WebItemProviderPasteboard setItemProviders:]):
(-[WebItemProviderPasteboard numberOfItems]):
(-[WebItemProviderPasteboard setItems:]):
(-[WebItemProviderPasteboard dataForPasteboardType:inItemSet:]):
(-[WebItemProviderPasteboard valuesForPasteboardType:inItemSet:]):
(-[WebItemProviderPasteboard changeCount]):
(-[WebItemProviderPasteboard itemProviderAtIndex:]):

  • platform/spi/ios/UIKitSPI.h:

Source/WTF:

Adds an additional feature flag.

  • wtf/FeatureDefines.h:
3:43 PM Changeset in webkit [211174] by commit-queue@webkit.org
  • 4 edits in trunk/Tools

[ios-simulator] API test WebKit2.WebsitePoliciesAutoplayEnabled timing out
https://bugs.webkit.org/show_bug.cgi?id=167385

Patch by Matt Rajca <mrajca@apple.com> on 2017-01-25
Reviewed by Alex Christensen.

  • TestWebKitAPI/Tests/WebKit2/autoplay-check.html: Avoid arbitrary timeouts in favor of promises.
  • TestWebKitAPI/Tests/WebKit2/autoplay-no-audio-check.html:
  • TestWebKitAPI/Tests/WebKit2Cocoa/WebsitePolicies.mm:

(TEST): Allow inline (rather than full screen) media playback on iOS.

3:37 PM Changeset in webkit [211173] by Konstantin Tokarev
  • 6 edits in trunk/Source

Removed leftovers of pre-2015 VisualStudio support
https://bugs.webkit.org/show_bug.cgi?id=167434

Reviewed by Alex Christensen.

Source/WebCore:

No new tests needed.

  • platform/graphics/filters/FEConvolveMatrix.cpp: Replaced MSC_VER

usage with COMPILER(MSVC)

Source/WTF:

  • wtf/Compiler.h:
  • wtf/Platform.h:
  • wtf/StringExtras.h:
3:20 PM Changeset in webkit [211172] by aestes@apple.com
  • 4 edits in trunk/Source/WebKit2

Use #pragma once in a few places
https://bugs.webkit.org/show_bug.cgi?id=167435

Reviewed by Alex Christensen.

  • UIProcess/PageClient.h:
  • UIProcess/ios/PageClientImplIOS.h:
  • WebProcess/WebCoreSupport/ios/WebQuickLookHandleClient.h:
3:14 PM Changeset in webkit [211171] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Fixing typos in r211161
https://bugs.webkit.org/show_bug.cgi?id=167433

Patch by Youenn Fablet <youenn@apple.com> on 2017-01-25
Reviewed by Alex Christensen.

  • platform/mediastream/libwebrtc/LibWebRTCProvider.h:
2:58 PM Changeset in webkit [211170] by Ryan Haddad
  • 4 edits in branches/safari-603-branch/LayoutTests

Unreviewed test gardening.

  • TestExpectations:
  • platform/ios-simulator/TestExpectations:
  • platform/mac/TestExpectations:
2:51 PM Changeset in webkit [211169] by yoav@yoav.ws
  • 3 edits
    1 move
    3 adds
    2 deletes in trunk/LayoutTests

REGRESSION(r203110): LayoutTest http/tests/preload/single_download_preload_runner.html timing out
https://bugs.webkit.org/show_bug.cgi?id=159678

Move the single_download_preload test to be in a single document rather than a frame, as the frame based version was timing out.
I suspect that recent changes to handling of feature flags resulted in feature flags turned off for frames, which caused this test
to fail. As the frame doesn't seem required in this case, we can fold the entire test to a single document.
On top of that, I added per resource verification for the number of requests, which makes the test clearer, and avoided verifying
result for resource types that are currently failing/flaky.

Reviewed by Alex Christensen

  • TestExpectations: Removed the timeout expectation for the test.
  • http/tests/preload/single_download_preload-expected.txt: Renamed from LayoutTests/http/tests/preload/single_download_preload_runner-expected.txt.
  • http/tests/preload/single_download_preload.html: Renamed from LayoutTests/http/tests/preload/resources/single_download_preload.html as well as fixed.
  • http/tests/preload/single_download_preload_runner.html: Removed.
  • http/tests/resources/dummy.xml: Added.
  • http/tests/resources/test.oga: Added.
  • platform/mac/TestExpectations: Removed the timeout expectation for the test.
2:44 PM Changeset in webkit [211168] by Chris Dumez
  • 3 edits
    1 add in trunk

Disable Download attribute support on iOS
https://bugs.webkit.org/show_bug.cgi?id=167337
<rdar://problem/30154148>

Reviewed by Alexey Proskuryakov.

Disable Download attribute support on iOS as it currently does not work.

  • wtf/FeatureDefines.h:
2:42 PM Changeset in webkit [211167] by fpizlo@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

ARM/ARM64 stress/atomics-store-return.js fails
<rdar://problem/30192652>

Reviewed by Michael Saboff.

The problem was relying on double->int casts for anything. We need to use toInt32().

  • runtime/AtomicsObject.cpp:

(JSC::atomicsFuncCompareExchange):
(JSC::atomicsFuncExchange):
(JSC::atomicsFuncStore):

2:36 PM Changeset in webkit [211166] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Fix a typo in TestExpectations.

Unreviewed test gardening.

2:31 PM Changeset in webkit [211165] by aestes@apple.com
  • 14 edits in trunk/Source/WebKit2

[QuickLook] Display a WKPasswordView when a document is password-protected
https://bugs.webkit.org/show_bug.cgi?id=167407
<rdar://problem/28544527>

Reviewed by Alex Christensen.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _hidePasswordView]): Added an early return if there is no _passwordView.

  • UIProcess/PageClient.h: Declared requestPasswordForQuickLookDocument().

(WebKit::PageClient::didStartProvisionalLoadForMainFrame): Added an no-op base class
implementation.
(WebKit::PageClient::didFailProvisionalLoadForMainFrame): Ditto.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::didStartProvisionalLoadForFrame): Called
PageClient::didStartProvisionalLoadForMainFrame() if frame is the main frame.
(WebKit::WebPageProxy::didFailProvisionalLoadForFrame): Ditto for
PageClient::didFailProvisionalLoadForMainFrame().

  • UIProcess/WebPageProxy.h: Declared didRequestPasswordForQuickLookDocumentInMainFrame().
  • UIProcess/WebPageProxy.messages.in: Added message

DidRequestPasswordForQuickLookDocumentInMainFrame.

  • UIProcess/ios/PageClientImplIOS.h: Overrode requestPasswordForQuickLookDocument(),

didStartProvisionalLoadForMainFrame(), and didFailProvisionalLoadForMainFrame().

  • UIProcess/ios/PageClientImplIOS.mm:

(WebKit::PageClientImpl::didStartProvisionalLoadForMainFrame): Called
-[WKWebView _hidePasswordView].
(WebKit::PageClientImpl::didFailProvisionalLoadForMainFrame): Ditto.
(WebKit::PageClientImpl::didCommitLoadForMainFrame): Ditto.
(WebKit::PageClientImpl::requestPasswordForQuickLookDocument): If there is already a
password view, assert that it is for the same fileName. Call
-[WKPasswordView showPasswordFailureAlert] and update the userDidEnterPassword block.
Otherwise, call -[WKWebView _showPasswordViewWithDocumentName:passwordHandler:].

  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::didRequestPasswordForQuickLookDocumentInMainFrame): Called
PageClient::requestPasswordForQuickLookDocument() with a completion handler that send
message WebPage::DidReceivePasswordForQuickLookDocument.

  • WebProcess/WebCoreSupport/ios/WebQuickLookHandleClient.cpp:

(WebKit::passwordCallbacks): Stores a map of page IDs to completion handler functions.
(WebKit::WebQuickLookHandleClient::~WebQuickLookHandleClient): Removes the current page ID
from passwordCallbacks().
(WebKit::WebQuickLookHandleClient::didRequestPassword): Asserts there is no current function
for this page ID in passwordCallbacks(), adds completionHandler to passwordCallbacks(), and
sends message WebPageProxy::DidRequestPasswordForQuickLookDocumentInMainFrame.
(WebKit::WebQuickLookHandleClient::didReceivePassword): Asserts there is a function for this
page ID in passwordCallbacks(), takes the completionHandler from passwordCallbacks(), and
calls it with the received password.

  • WebProcess/WebCoreSupport/ios/WebQuickLookHandleClient.h: Declared didReceivePassword()

and overrode supportsPasswordEntry() and didRequestPassword().

  • WebProcess/WebPage/WebPage.h: Declared didReceivePasswordForQuickLookDocument().
  • WebProcess/WebPage/WebPage.messages.in: Added message

DidReceivePasswordForQuickLookDocument.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::didReceivePasswordForQuickLookDocument): Called
WebQuickLookHandleClient::didReceivePassword() with the received password and current page ID.

2:05 PM Changeset in webkit [211164] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

Revert r210882, removing support for background-repeat-x/y
https://bugs.webkit.org/show_bug.cgi?id=167223

Reviewed by Myles C. Maxfield.

Followup from r211149; I missed part of the patch when committing.

  • css/parser/CSSParserFastPaths.cpp:

(WebCore::CSSParserFastPaths::isKeywordPropertyID):

2:01 PM Changeset in webkit [211163] by mitz@apple.com
  • 8 copies
    1 add in releases/Apple/Safari Technology Preview 22

Added a tag for Safari Technology Preview release 22.

1:09 PM Changeset in webkit [211162] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking fast/backgrounds/background-repeat-x-y-parse.html as failing.
https://bugs.webkit.org/show_bug.cgi?id=167428

Unreviewed test gardening.

1:00 PM Changeset in webkit [211161] by achristensen@apple.com
  • 16 edits
    5 adds in trunk/Source

[WebRTC] Introduce libwebrtc abstraction for WK1/WK2 implementations
https://bugs.webkit.org/show_bug.cgi?id=167294

Source/WebCore:

Patch by Youenn Fablet <youennf@gmail.com> on 2017-01-25
Reviewed by Alex Christensen.

Introducing LibWebRTCMacros.h which should be included before any libwebrtc header.

Introducing LibWebRTCProvider as the abstraction allowing to suport WK1 and WK2 libwebrtc-based WebRTC endpoints.
It will create a libwebrtc peerconnection object differently in WK1 and WK2 as networking will be done differently.

LibWebRTCUtils contains routines used by WK1 and WK2 RTC providers to create the libwebrtc peerconnection object
and implement the necessary functionalities for it.

Updating PageConfiguration accordingly.

  • WebCore.xcodeproj/project.pbxproj:
  • page/Page.cpp:

(WebCore::Page::Page):

  • page/Page.h:

(WebCore::Page::libWebRTCProvider):

  • page/PageConfiguration.cpp:

(WebCore::PageConfiguration::PageConfiguration):

  • page/PageConfiguration.h:
  • platform/mediastream/libwebrtc/LibWebRTCMacros.h: Added.
  • platform/mediastream/libwebrtc/LibWebRTCProvider.h: Added.
  • platform/mediastream/libwebrtc/LibWebRTCUtils.cpp: Added.

(WebCore::staticFactoryAndThreads):
(WebCore::ThreadMessageData::ThreadMessageData):
(WebCore::PeerConnectionFactoryAndThreads::OnMessage):
(WebCore::callOnWebRTCNetworkThread):
(WebCore::initializePeerConnectionFactoryAndThreads):
(WebCore::initializeLibWebRTCInternalsWithSocketServer):
(WebCore::peerConnectionFactory):
(WebCore::createPeerConnection):

  • platform/mediastream/libwebrtc/LibWebRTCUtils.h: Added.
  • svg/graphics/SVGImage.cpp:

(WebCore::SVGImage::dataChanged):

Source/WebKit/mac:

Patch by Youenn Fablet <youennf@gmail.com> on 2017-01-24
Reviewed by Alex Christensen.

  • WebView/WebView.mm:

(-[WebView _commonInitializationWithFrameName:groupName:]):

Source/WebKit/win:

Patch by Youenn Fablet <youennf@gmail.com> on 2017-01-24
Reviewed by Alex Christensen.

  • WebView.cpp:

(WebView::initWithFrame):

Source/WebKit2:

Patch by Youenn Fablet <youennf@gmail.com> on 2017-01-25
Reviewed by Alex Christensen.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::m_userInterfaceLayoutDirection):

12:48 PM Changeset in webkit [211160] by aestes@apple.com
  • 6 edits in trunk/Source/WebKit2

[iOS] Move WKPDFView's password view to WKWebView
https://bugs.webkit.org/show_bug.cgi?id=167401

Reviewed by Tim Horton.

r210943 moved the PDF password view into the new class WKPasswordView but left it as a
subview of the WKPDFView. To show the password view for Web content, my original plan was to
teach WKContentView to host its own password view, but this turned out not to work. Since
QuickLook needs to unlock a document before determining its preview's MIME type, we have to
ask for a password during provisional navigation, but if the still-committed document is a
PDF then the WKContentView will not be in the view hierarchy.

To ensure password view visibility, this patch moves the ownership of WKPasswordView to
WKWebView and creates an internal API for showing and hiding it. When
-_showPasswordViewWithDocumentName:passwordHandler: is called, WKWebView inserts a new
WKPasswordView as a subview of the scroll view and hides the current content view. The
password view is removed and the current content view is unhidden by -_hidePasswordView.

This also fixes a bug in WKPDFView where a PDF document is laid out incorrectly if the view
size changes while the password view is displayed.

  • UIProcess/API/Cocoa/WKWebView.mm: Declared _passwordView.

(-[WKWebView _processDidExit]): Hid the password view.
(-[WKWebView _didCommitLayerTree:]): Ignored if not showing the standard content view.
(-[WKWebView _restorePageScrollPosition:scrollOrigin:previousObscuredInset:scale:]): Ditto.
(-[WKWebView _restorePageStateToUnobscuredCenter:scale:]): Ditto.
(-[WKWebView usesStandardContentView]): Changed to return false if _passwordView is non-nil.
(-[WKWebView _updateContentRectsWithState:]): Updated _passwordView's frame with the current
bounds size.
(-[WKWebView _showPasswordViewWithDocumentName:passwordHandler:]): Created a WKPasswordView,
called -showInScrollView:, and hid _currentContentView.
(-[WKWebView _hidePasswordView]): Removed _passwordView from its superview, set
_passwordView to nil, and unhid _currentContentView.
(-[WKWebView _passwordView]): Returned _passwordView.
(-[WKWebView _beginAnimatedResizeWithUpdates:]): Called -usesStandardContentView instead of
checking for a non-nil _customContentView when deciding whether to do a non-animated resize.

  • UIProcess/API/Cocoa/WKWebViewInternal.h:
  • UIProcess/ios/WKPDFView.mm: Removed _passwordView.

(-[WKPDFView web_setMinimumSize:]): Set m_minimumSize and updated the frame size even when a
password view is displayed.
(-[WKPDFView _computePageAndDocumentFrames]): Removed password view code.
(-[WKPDFView _showPasswordEntryField]): Ditto.
(-[WKPDFView _passwordViewFrame]): Deleted.

  • UIProcess/ios/WKPasswordView.h:
  • UIProcess/ios/WKPasswordView.mm:

(-[WKPasswordView initWithFrame:documentName:]): Stored a copy of documentName in
_documentName.
(-[WKPasswordView documentName]): Added. Returns _documentName.
(-[WKPasswordView showInScrollView:]): Renamed from displayInContentView:. Started saving
zoomScale and contentSize.
(-[WKPasswordView hide]): Started restoring zoomeScale and contentSize.
(-[WKPasswordView showPasswordFailureAlert]): Renamed from -displayPasswordFailureAlert.
(-[WKPasswordView displayInContentView:]): Renamed to -showInScrollView:
(-[WKPasswordView displayPasswordFailureAlert]): Renamed to -showPasswordFailureAlert.

12:42 PM Changeset in webkit [211159] by dino@apple.com
  • 10 edits in branches/safari-603-branch

Disable Variation fonts on this branch.
<rdar://problem/30085249>

Source/JavaScriptCore:

  • Configurations/FeatureDefines.xcconfig:

Source/WebCore:

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit/mac:

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit2:

  • Configurations/FeatureDefines.xcconfig:

Tools:

  • TestWebKitAPI/Configurations/FeatureDefines.xcconfig:
12:16 PM Changeset in webkit [211158] by Wenson Hsieh
  • 15 edits in trunk/Source

Add support for named pasteboards, pasteboard strategies and platform pasteboards
https://bugs.webkit.org/show_bug.cgi?id=167404

Reviewed by Enrica Casucci.

Source/WebCore:

Refactors some pasteboard-related code to plumb the name of the pasteboard across from WebCore to the client
layer. No new tests, because there should be no change in behavior.

  • platform/DragData.h:
  • platform/Pasteboard.h:
  • platform/PasteboardStrategy.h:
  • platform/PlatformPasteboard.h:
  • platform/ios/PasteboardIOS.mm:

(WebCore::Pasteboard::Pasteboard):
(WebCore::Pasteboard::write):
(WebCore::Pasteboard::writePlainText):
(WebCore::Pasteboard::read):
(WebCore::Pasteboard::hasData):
(WebCore::Pasteboard::clear):
(WebCore::Pasteboard::readString):
(WebCore::Pasteboard::writeString):
(WebCore::Pasteboard::types):

Source/WebKit/mac:

Adds pasteboard name as an argument to pasteboard-related WebPlatformStrategy methods.

  • WebCoreSupport/WebPlatformStrategies.h:
  • WebCoreSupport/WebPlatformStrategies.mm:

(WebPlatformStrategies::writeToPasteboard):
(WebPlatformStrategies::getPasteboardItemsCount):
(WebPlatformStrategies::readBufferFromPasteboard):
(WebPlatformStrategies::readURLFromPasteboard):
(WebPlatformStrategies::readStringFromPasteboard):

Source/WebKit2:

Adds support for delivering the pasteboard name to the UI process when writing to or reading from the pasteboard.

  • UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:

(WebKit::WebPasteboardProxy::writeWebContentToPasteboard):
(WebKit::WebPasteboardProxy::writeImageToPasteboard):
(WebKit::WebPasteboardProxy::writeStringToPasteboard):
(WebKit::WebPasteboardProxy::readStringFromPasteboard):
(WebKit::WebPasteboardProxy::readURLFromPasteboard):
(WebKit::WebPasteboardProxy::readBufferFromPasteboard):
(WebKit::WebPasteboardProxy::getPasteboardItemsCount):

  • UIProcess/WebPasteboardProxy.h:
  • UIProcess/WebPasteboardProxy.messages.in:
  • WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:

(WebKit::WebPlatformStrategies::writeToPasteboard):
(WebKit::WebPlatformStrategies::getPasteboardItemsCount):
(WebKit::WebPlatformStrategies::readBufferFromPasteboard):
(WebKit::WebPlatformStrategies::readURLFromPasteboard):
(WebKit::WebPlatformStrategies::readStringFromPasteboard):

  • WebProcess/WebCoreSupport/WebPlatformStrategies.h:
12:04 PM Changeset in webkit [211157] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

modern-media-tests LayoutTest gardening.
https://bugs.webkit.org/show_bug.cgi?id=167396

Unreviewed test gardening.

  • platform/mac/TestExpectations:
12:02 PM Changeset in webkit [211156] by aakash_jain@apple.com
  • 5 edits in trunk/Source/WebKit

LoadWebLocalizedStrings method should be moved in correct file
https://bugs.webkit.org/show_bug.cgi?id=167393

Reviewed by Alexey Proskuryakov.

Source/WebKit/ios:

  • Misc/WebUIKitSupport.mm:

(LoadWebLocalizedStringsTimerCallback): Moved from WebLocalizableStrings.mm
(LoadWebLocalizedStrings): Moved from WebLocalizableStrings.mm

Source/WebKit/mac:

  • Misc/WebLocalizableStrings.h: Deleted LoadWebLocalizedStrings method.
  • Misc/WebLocalizableStrings.mm:

(LoadWebLocalizedStringsTimerCallback): Deleted, moved to WebUIKitSupport.mm
(LoadWebLocalizedStrings): Deleted, moved to WebUIKitSupport.mm

11:14 AM Changeset in webkit [211155] by Ryan Haddad
  • 5 edits in trunk/LayoutTests

Test result gardening for ios-simulator.

Unreviewed test gardening.

  • fast/events/touch/ios/block-without-overflow-scroll-and-passive-observer-on-block-scrolling-state-expected.txt:
  • fast/events/touch/ios/block-without-overflow-scroll-and-passive-observer-on-document-scrolling-state-expected.txt:
  • fast/events/touch/ios/block-without-overflow-scroll-scrolling-state-expected.txt:
  • fast/events/touch/ios/tap-with-active-touch-end-listener-expected.txt:
10:32 AM Changeset in webkit [211154] by commit-queue@webkit.org
  • 4 edits in trunk

LayoutTest media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-buttons-containers-styles.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=167253

Patch by Antoine Quint <Antoine Quint> on 2017-01-25
Reviewed by Jon Lee.

Source/WebCore:

An IconButton loads its image asynchronously and waits for its load to obtain metrics. Once that happens,
its layout delegate needs to be notified that it needs a new layout. The test was a flaky failure because
the images would sometime load prior to layout, and sometime after, which would cause a failure. The test
is now robust with a controls layout happening after all buttons had loaded.

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

(IconButton.prototype._updateImage):
(IconButton):

LayoutTests:

This test should no longer be flaky, so let's not mark it as such anymore.

  • platform/mac-wk1/TestExpectations:
10:26 AM Changeset in webkit [211153] by timothy@hatcher.name
  • 2 edits in trunk/Source/WebCore

Fix the !HAVE(ACCESSIBILITY) build by properly instantiating AXObjectCache member timers.

  • accessibility/AXObjectCache.h:

(WebCore::AXObjectCache::AXObjectCache):

10:00 AM Changeset in webkit [211152] by Simon Fraser
  • 3 edits
    1 delete in trunk/LayoutTests

Revert r210882, removing support for background-repeat-x/y
https://bugs.webkit.org/show_bug.cgi?id=167223

Reviewed by Myles Maxfield.

Fix the layout tests.

fast/backgrounds/background-repeat-x-y.html was mistakenly removed in r211060 so
remove its expected. Fix the parsing test.

  • fast/backgrounds/background-repeat-x-y-expected.html: Removed.
  • fast/backgrounds/background-repeat-x-y-parse-expected.txt:
  • fast/backgrounds/background-repeat-x-y-parse.html:
9:51 AM Changeset in webkit [211151] by Chris Dumez
  • 5 edits in trunk/Source/WebCore

Measure how common it is for content to deal with WebGL context loss
https://bugs.webkit.org/show_bug.cgi?id=166866
<rdar://problem/30171195>

Reviewed by Alex Christensen.

Add diagnostic logging to measure how common it is for sites to handle
WebGL context loss via the webglcontextlost & webglcontextrestored
events.

  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::WebGLRenderingContextBase):
(WebCore::WebGLRenderingContextBase::checkForContextLossHandling):

  • html/canvas/WebGLRenderingContextBase.h:
  • page/DiagnosticLoggingKeys.cpp:

(WebCore::DiagnosticLoggingKeys::noKey):
(WebCore::DiagnosticLoggingKeys::yesKey):
(WebCore::DiagnosticLoggingKeys::handlesContextLossKey):

  • page/DiagnosticLoggingKeys.h:
9:48 AM Changeset in webkit [211150] by Wenson Hsieh
  • 2 edits in trunk/Source/WTF

Add a hook to include additional feature defines
https://bugs.webkit.org/show_bug.cgi?id=167403

Reviewed by Enrica Casucci.

  • wtf/Platform.h: Include AdditionalFeatureDefines.h, if it exists.
9:42 AM Changeset in webkit [211149] by Simon Fraser
  • 5 edits in trunk

Revert r210882, removing support for background-repeat-x/y
https://bugs.webkit.org/show_bug.cgi?id=167223

Reviewed by Myles Maxfield.
Source/WebCore:

CSSPropertyBackgroundRepeatX and CSSPropertyBackgroundRepeatY only exist to make it easier
to parse CSSPropertyBackgroundRepeat as if it were a shorthand; they were never intended to
be web-exposed. r210882 mistakenly expose them to the web, so undo that patch, and annotate
the properties in CSSProperties.json with a flag which indicates their special status.

In addition, remove background-repeat-x/y from the list of properties allowed in video cues,
since these are not valid properties.

  • css/CSSProperties.json:
  • css/StyleResolver.cpp:

(WebCore::StyleResolver::isValidCueStyleProperty):

  • css/makeprop.pl:

(addProperty):

  • css/parser/CSSParserFastPaths.cpp:

(WebCore::CSSParserFastPaths::isKeywordPropertyID):

LayoutTests:

Modify the test to check that background-repeat-x and background-repeat-y are not parsed.

  • fast/backgrounds/background-repeat-x-y-parse-expected.txt:
  • fast/backgrounds/background-repeat-x-y-parse.html:
9:38 AM Changeset in webkit [211148] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

Flaky Test: imported/w3c/web-platform-tests/html/browsers/history/the-location-interface/location-protocol-setter-non-broken.html
https://bugs.webkit.org/show_bug.cgi?id=167380

Unreviewed.

Patch by Youenn Fablet <youenn@apple.com> on 2017-01-25

9:02 AM Changeset in webkit [211147] by Carlos Garcia Campos
  • 5 edits in trunk

[GTK] Icon Database should be in private browsing mode for ephemeral web views
https://bugs.webkit.org/show_bug.cgi?id=167414

Reviewed by Michael Catanzaro.

Source/WebKit2:

This is already done by WebProcessPool for the legacy private session setting, but only checking the setting and not
whether there are ephemeral web pages or not.

  • UIProcess/API/gtk/WebKitWebContext.cpp:

(webkitWebContextEnableIconDatabasePrivateBrowsingIfNeeded): Enable icon database private browsing if there's
any ephemeral web view.
(webkitWebContextDisableIconDatabasePrivateBrowsingIfNeeded): Disable icon database private browsing if there
aren't ephemeral web views anymore.
(webkit_web_context_set_favicon_database_directory): Enable icon database private browsing if the web context is ephemeral.
(webkitWebContextCreatePageForWebView): Call webkitWebContextEnableIconDatabasePrivateBrowsingIfNeeded().
(webkitWebContextWebViewDestroyed): Call webkitWebContextDisableIconDatabasePrivateBrowsingIfNeeded().

  • UIProcess/API/gtk/WebKitWebView.cpp:

(webkitWebViewDispose): Ensure webkitWebContextWebViewDestroyed is called only once.

Tools:

Add a test case to check ephemeral web views don't write favicons to the database.

  • TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitFaviconDatabase.cpp:

(ephemeralViewLoadChanged):
(testPrivateBrowsing):
(testFaviconDatabase):

8:56 AM Changeset in webkit [211146] by Carlos Garcia Campos
  • 4 edits in trunk/Tools

[GTK] Add a private browsing mode to MiniBrowser
https://bugs.webkit.org/show_bug.cgi?id=167413

Reviewed by Michael Catanzaro.

Add -p/--private command line option to create a private instance. Also add CTRL+SHIFT+P shortcut to create
private windows, even on non-private instances.

  • MiniBrowser/gtk/BrowserWindow.c:

(webViewTitleChanged): Add [Private] to title window for private windows.
(webViewCreate): Pass web context to browser_window_new.
(openPrivateWindow): Create a new ephemeral web view and add it to a new window.
(browserWindowFinalize): Disconnect web context signal handlers.
(browser_window_init): Add shortcut for opening private window.
(browser_window_new): It now receives the context and connect to download-started here.
(browser_window_get_web_context): Return the context.

  • MiniBrowser/gtk/BrowserWindow.h:
  • MiniBrowser/gtk/main.c:

(createBrowserTab): Create the web view for the window web context.
(aboutDataScriptMessageReceivedCallback): Do not use the default web context, but the window one.
(aboutDataHandleRequest): Ditto.
(aboutURISchemeRequestCallback): Ditto.
(main): Create ephemeral web context if private command line option is used.

8:54 AM Changeset in webkit [211145] by Carlos Garcia Campos
  • 6 edits in trunk/Source

[GTK] UIProcess from WebKitGtk+ 2.15.x SIGSEGVs because of X Error BadDamage in WebKit::AcceleratedBackingStoreX11::update(WebKit::LayerTreeContext const&) () at Source/WebKit2/UIProcess/gtk/AcceleratedBackingStoreX11.cpp:145
https://bugs.webkit.org/show_bug.cgi?id=165656

Reviewed by Michael Catanzaro.

Source/WebCore:

Also return the base error code from PlatformDisplayX11::supportsXDamage().

  • platform/graphics/x11/PlatformDisplayX11.cpp:

(WebCore::PlatformDisplayX11::supportsXDamage):

  • platform/graphics/x11/PlatformDisplayX11.h:

Source/WebKit2:

We are incorrectly handling BadDamage errors because the BadDamage value we pass to the XErrorTrapper is not
the actual error code used by X11. Since XDamage is an extension, it has its own errors and a base error
code. We need to use the base error code we get when calling XDamageQueryExtension to pass the right error code
to the XErrorTrapper.

  • UIProcess/gtk/AcceleratedBackingStoreX11.cpp:

(WebKit::AcceleratedBackingStoreX11::create): Get also the damage base error.
(WebKit::xDamageErrorCode): Helper to get the actual error code.
(WebKit::AcceleratedBackingStoreX11::~AcceleratedBackingStoreX11): Use xDamageErrorCode().
(WebKit::AcceleratedBackingStoreX11::update): Ditto.

8:46 AM Changeset in webkit [211144] by matthew_hanson@apple.com
  • 3 edits in branches/safari-603-branch/Source/WebCore

Merge r211114. rdar://problem/29857388

8:45 AM Changeset in webkit [211143] by matthew_hanson@apple.com
  • 8 edits in branches/safari-603-branch/Source

Merge r211052. rdar://problem/29857388

6:34 AM Changeset in webkit [211142] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebCore

Unreviewed. Fix 32 bit build after r211140.

Include glib-object.h instead of forward declaring GType.

  • platform/network/soup/SoupNetworkSession.h:
5:26 AM Changeset in webkit [211141] by magomez@igalia.com
  • 6 edits in trunk/Source

[GTK] The inspector is broken when AC support is disabled
https://bugs.webkit.org/show_bug.cgi?id=165237

Reviewed by Carlos Garcia Campos.

Source/WebCore:

Ensure that PageOverlayController destroys its root GraphicsLayers when leaving AC. They
will be recreated if we enter AC again, avoiding a crash because the layers don't belong to
the appropriate compositor. Also, don't append the document overlay layers if we are not
in compositing mode.

No new tests added.

  • page/PageOverlayController.cpp:

(WebCore::PageOverlayController::willDetachRootLayer):

  • page/PageOverlayController.h:
  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::appendDocumentOverlayLayers):
(WebCore::RenderLayerCompositor::detachRootLayer):

Source/WebKit2:

WebInspector must not use PageOverlays or GraphicsLayers when AC is not avaialable.

No new tests added.

  • WebProcess/WebCoreSupport/WebInspectorClient.cpp:

(WebKit::WebInspectorClient::highlight):
(WebKit::WebInspectorClient::showPaintRect):

4:22 AM Changeset in webkit [211140] by Carlos Garcia Campos
  • 5 edits in trunk/Source

[SOUP] Custom protocols don't work in private browsing mode
https://bugs.webkit.org/show_bug.cgi?id=167236

Reviewed by Sergio Villar Senin.

Source/WebCore:

Add static method to set the global custom protocols request type and setup method to add the feature to the session.

  • platform/network/soup/SoupNetworkSession.cpp:

(WebCore::SoupNetworkSession::SoupNetworkSession):
(WebCore::SoupNetworkSession::setCustomProtocolRequestType):
(WebCore::SoupNetworkSession::setupCustomProtocols):

  • platform/network/soup/SoupNetworkSession.h:

Source/WebKit2:

We only register them in the default session, they should be registered in all existing sessions, and also on
newly created ones.

  • NetworkProcess/CustomProtocols/soup/CustomProtocolManagerSoup.cpp:

(WebKit::CustomProtocolManager::registerProtocolClass): Set the WEBKIT_TYPE_SOUP_REQUEST_GENERIC as type for
custom protocols.
(WebKit::CustomProtocolManager::registerScheme): Use g_type_class_peek instead of g_type_class_ref since we know
the class was already created in registerProtocolClass(). Setup custom protocols in all existing sessions.

1:11 AM Changeset in webkit [211139] by rniwa@webkit.org
  • 10 edits in trunk

collectMatchingElementsInFlatTree should not find elements inside an user agent shadow tree
https://bugs.webkit.org/show_bug.cgi?id=167409

Reviewed by Antti Koivisto.

Source/JavaScriptCore:

Added matchingElementInFlatTree as a common identifier since it's required in the bindings code.

  • runtime/CommonIdentifiers.h:

Source/WebCore:

The bug was caused by collectMatchingElementsInFlatTree including elements inside an user agent shadow tree
even though it shouldn't. Fixed the bug by checking that condition.

Also added matchingElementInFlatTree to find the first element matching a selector as opposed to all,
again, only exposed in a world which forces all shadow trees to be accessible.

  • page/DOMWindow.cpp:

(WebCore::selectorQueryInFrame):
(WebCore::DOMWindow::collectMatchingElementsInFlatTree):
(WebCore::DOMWindow::matchingElementInFlatTree):

  • page/DOMWindow.h:
  • page/DOMWindow.idl:

Tools:

Added a test case for collectMatchingElementsInFlatTree not finding elements inside an user agent shadow tree
as well as tests for the newly added matchingElementInFlatTree.

  • TestWebKitAPI/Tests/WebKit2/InjectedBundleMakeAllShadowRootsOpen.cpp:

(TestWebKitAPI::runJavaScriptAlert):

  • TestWebKitAPI/Tests/WebKit2/InjectedBundleMakeAllShadowRootsOpen_Bundle.cpp:

(TestWebKitAPI::InjectedBundleMakeAllShadowRootOpenTest::initialize):

  • TestWebKitAPI/Tests/WebKit2/closed-shadow-tree-test.html:
12:01 AM Changeset in webkit [211138] by Carlos Garcia Campos
  • 18 edits in trunk

[GTK] Add API to create ephemeral web views and deprecate the private browsing setting
https://bugs.webkit.org/show_bug.cgi?id=167370

Reviewed by Michael Catanzaro.

Source/WebKit2:

Add API to create ephemeral WebKitWebView, WebKitWebsiteDataManager and WebKitWebContext.

  • UIProcess/API/gtk/WebKitSettings.cpp:

(webKitSettingsSetProperty): Ignore deprecation warnings.
(webKitSettingsGetProperty): Ditto.
(webkit_settings_class_init): Mark WebKitSettings:enable-private-browsing as deprecated.

  • UIProcess/API/gtk/WebKitSettings.h:
  • UIProcess/API/gtk/WebKitWebContext.cpp:

(webkit_web_context_new_ephemeral): Create an ephemeral WebKitWebContext. This is just a convenient method to
create a WebKitWebContext with an ephemeral WebKitWebsiteDataManager without having to deal with the manager.
(webkit_web_context_is_ephemeral): Return whether the context is ephemeral.
(webkitWebContextCreatePageForWebView): Configure page with the web view WebKitWebsiteDataManager if it has one.

  • UIProcess/API/gtk/WebKitWebContext.h:
  • UIProcess/API/gtk/WebKitWebView.cpp:

(webkitWebViewConstructed): Check if the WebView is or should be ephemeral and create a non persistent website
data manager if it's an ephemeral web view in a non ephemeral web context.
(webkitWebViewSetProperty): Add setter for is-ephemeral property.
(webkitWebViewGetProperty): Add getter for is-ephemeral property.
(webkit_web_view_class_init): Add is-ephemeral property.
(webkitWebViewHandleAuthenticationChallenge): Check also whether web view is ephemeral.
(webkitWebViewGetWebsiteDataManager): Helper private to return the web view data manager.
(webkit_web_view_new_with_context): Also set is-ephemeral property depending on the context.
(webkit_web_view_is_ephemeral): Return whether the view is ephemeral.

  • UIProcess/API/gtk/WebKitWebView.h:
  • UIProcess/API/gtk/WebKitWebViewPrivate.h:
  • UIProcess/API/gtk/WebKitWebsiteDataManager.cpp:

(webkitWebsiteDataManagerGetProperty): Add setter for is-ephemeral property.
(webkitWebsiteDataManagerSetProperty): Add getter for is-ephemeral property.
(webkit_website_data_manager_class_init): Add is-ephemeral property.
(webkit_website_data_manager_new_ephemeral): Create a new ephemeral WebKitWebsiteDataManager.
(webkit_website_data_manager_is_ephemeral): Return whether the website data manager is ephemeral.
(webkit_website_data_manager_get_base_data_directory): Return nullptr if manager is ephemeral.
(webkit_website_data_manager_get_base_cache_directory): Ditto.
(webkit_website_data_manager_get_local_storage_directory): Ditto.
(webkit_website_data_manager_get_disk_cache_directory): Ditto.
(webkit_website_data_manager_get_offline_application_cache_directory): Ditto.
(webkit_website_data_manager_get_indexeddb_directory): Ditto.
(webkit_website_data_manager_get_websql_directory): Ditto.

  • UIProcess/API/gtk/WebKitWebsiteDataManager.h:
  • UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt: Add new symbols.

Tools:

Add several test cases of ephemeral web views.

  • TestWebKitAPI/Tests/WebKit2Gtk/TestAuthentication.cpp:

(testWebViewAuthenticationStorage):

  • TestWebKitAPI/Tests/WebKit2Gtk/TestCookieManager.cpp:

(ephemeralViewloadChanged):
(testCookieManagerEphemeral):
(beforeAll):

  • TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitSettings.cpp:

(testWebKitSettings):

  • TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitWebContext.cpp:

(testWebContextEphemeral):
(ephemeralViewloadChanged):
(testWebContextProxySettings):
(beforeAll):

  • TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitWebView.cpp:

(ephemeralViewloadChanged):
(testWebViewEphemeral):
(beforeAll):

  • TestWebKitAPI/Tests/WebKit2Gtk/TestWebsiteData.cpp:

(ephemeralViewloadChanged):
(testWebsiteDataEphemeral):
(beforeAll):

Jan 24, 2017:

11:49 PM Changeset in webkit [211137] by achristensen@apple.com
  • 4 edits in trunk

REGRESSION (r208902): URLWithUserTypedString returns nil with file URLs
https://bugs.webkit.org/show_bug.cgi?id=167402
Source/WebCore:

<rdar://problem/29896656>

Reviewed by Ryosuke Niwa.

Covered by a new API test.

  • platform/mac/WebCoreNSURLExtras.mm:

(WebCore::mapHostNameWithRange):
uidna_IDNToASCII succeeds when length is 0.
uidna_nameToASCII fails when length is 0.
This causes bad things to happen with file URLs, which have no host, so their host length is 0.
This makes us match behavior before r208902.

Tools:

Reviewed by Ryosuke Niwa.

  • TestWebKitAPI/Tests/WebCore/cocoa/URLExtras.mm:

(TestWebKitAPI::TEST):

10:30 PM Changeset in webkit [211136] by graouts@webkit.org
  • 3 edits in trunk/LayoutTests

LayoutTest media/modern-media-controls/airplay-support/airplay-support.html is failing
https://bugs.webkit.org/show_bug.cgi?id=164323

Reviewed by Jon Lee.

Make media/modern-media-controls/airplay-support/airplay-support.html more robust by following
the same pattern used in media/airplay-target-availability.html which proved to be robust.

  • media/modern-media-controls/airplay-support/airplay-support.html:
  • platform/mac/TestExpectations:
9:02 PM Changeset in webkit [211135] by Alan Bujtas
  • 13 edits in trunk

Add simple line layout toggle to MiniBrowser
https://bugs.webkit.org/show_bug.cgi?id=167405

Reviewed by Andreas Kling.

Source/WebKit/mac:

  • WebView/WebPreferenceKeysPrivate.h:
  • WebView/WebPreferences.mm:

(+[WebPreferences initialize]):
(-[WebPreferences simpleLineLayoutEnabled]):
(-[WebPreferences setSimpleLineLayoutEnabled:]):

  • WebView/WebPreferencesPrivate.h:
  • WebView/WebView.mm:

(-[WebView _preferencesChanged:]):

Source/WebKit2:

  • UIProcess/API/Cocoa/WKPreferences.mm:

(-[WKPreferences _simpleLineLayoutEnabled]):
(-[WKPreferences _setSimpleLineLayoutEnabled:]):

  • UIProcess/API/Cocoa/WKPreferencesPrivate.h:

Tools:

  • MiniBrowser/mac/SettingsController.h:
  • MiniBrowser/mac/SettingsController.m:

(-[SettingsController _populateMenu]):
(-[SettingsController validateMenuItem:]):
(-[SettingsController toggleSimpleLineLayoutEnabled:]):
(-[SettingsController simpleLineLayoutEnabled]):

  • MiniBrowser/mac/WK1BrowserWindowController.m:

(-[WK1BrowserWindowController didChangeSettings]):

  • MiniBrowser/mac/WK2BrowserWindowController.m:

(-[WK2BrowserWindowController didChangeSettings]):

8:25 PM Changeset in webkit [211134] by commit-queue@webkit.org
  • 3 edits in trunk/Tools

WKR does not include my nick when commit-queue lands my patch
https://bugs.webkit.org/show_bug.cgi?id=167388

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-01-24
Reviewed by Ryosuke Niwa.

  • Scripts/webkitpy/tool/commands/newcommitbot.py:

(NewCommitBot._summarize_commit_log):

  • Scripts/webkitpy/tool/commands/newcommitbot_unittest.py:

Perform nickname insertion before grabbing "Patch by" details.
This way we can include the nickname with the full name.

8:23 PM Changeset in webkit [211133] by commit-queue@webkit.org
  • 36 edits in trunk

Fold USER_TIMING into WEB_TIMING and make it a RuntimeEnabledFeature
https://bugs.webkit.org/show_bug.cgi?id=167394

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-01-24
Reviewed by Ryosuke Niwa.

.:

  • Source/cmake/OptionsEfl.cmake:
  • Source/cmake/OptionsWin.cmake:
  • Source/cmake/WebKitFeatures.cmake:
  • Source/cmake/tools/vsprops/FeatureDefines.props:
  • Source/cmake/tools/vsprops/FeatureDefinesCairo.props:

Source/JavaScriptCore:

  • Configurations/FeatureDefines.xcconfig:
  • runtime/CommonIdentifiers.h:

Source/WebCore:

All of the Performance Timing specifications are highly coupled.
So let make WEB_TIMING encompass them all:

  • High Resolution Time (window.performance)
  • Performance Timeline (PerformanceEntry, PerformanceObserver)
  • Navigation Timing ("navigation" entries)
  • Resource Timing ("resource" entries)
  • User Timing ("mark" / "measure" entries)

We can then turn on and off individual pieces as runtime features,
such as Resource Timing, User Timing, and Performance Observer.

  • DerivedSources.make:
  • WebCore.xcodeproj/project.pbxproj:

Add User Timing files that are now included in WEB_TIMING builds.

  • page/RuntimeEnabledFeatures.h:

(WebCore::RuntimeEnabledFeatures::setUserTimingEnabled):
(WebCore::RuntimeEnabledFeatures::userTimingEnabled):
Add a runtime feature for user timing. Disabled by default.

  • Configurations/FeatureDefines.xcconfig:
  • PAL/Configurations/FeatureDefines.xcconfig:
  • bindings/js/JSPerformanceEntryCustom.cpp:

(WebCore::toJSNewlyCreated):

  • page/Performance.cpp:

(WebCore::Performance::getEntries):
(WebCore::Performance::getEntriesByType):
(WebCore::Performance::getEntriesByName):
(WebCore::Performance::mark):
(WebCore::Performance::clearMarks):
(WebCore::Performance::measure):
(WebCore::Performance::clearMeasures):
(WebCore::Performance::webkitMark): Deleted.
(WebCore::Performance::webkitClearMarks): Deleted.
(WebCore::Performance::webkitMeasure): Deleted.
(WebCore::Performance::webkitClearMeasures): Deleted.

  • page/Performance.h:
  • page/Performance.idl:
  • page/PerformanceMark.h:
  • page/PerformanceMark.idl:
  • page/PerformanceMeasure.h:
  • page/PerformanceMeasure.idl:
  • page/PerformanceUserTiming.cpp:
  • page/PerformanceUserTiming.h:

Convert USER_TIMING to WEB_TIMING.
Drop webkit prefixed legacy names.

Source/WebKit/mac:

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit2:

  • Configurations/FeatureDefines.xcconfig:

Source/WTF:

  • wtf/FeatureDefines.h:

Tools:

  • Scripts/webkitperl/FeatureList.pm:
  • TestWebKitAPI/Configurations/FeatureDefines.xcconfig:

LayoutTests:

  • platform/gtk/fast/dom/Window/window-properties-performance-expected.txt:

Although this test is skipped on gtk, update the results.

6:59 PM Changeset in webkit [211132] by commit-queue@webkit.org
  • 4 edits in trunk/LayoutTests

LayoutTest media/modern-media-controls/placard-support/placard-support-airplay.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=164298

Patch by Antoine Quint <Antoine Quint> on 2017-01-24
Reviewed by Jon Lee.

Make media/modern-media-controls/placard-support/placard-support-airplay.html more robust by
following the same pattern used in media/airplay-target-availability.html which proved to be robust.

  • media/modern-media-controls/placard-support/placard-support-airplay-expected.txt:
  • media/modern-media-controls/placard-support/placard-support-airplay.html:
  • platform/mac/TestExpectations:
6:59 PM Changeset in webkit [211131] by commit-queue@webkit.org
  • 4 edits in trunk

LayoutTest media/modern-media-controls/tracks-panel/tracks-panel-hide.html is a flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=167311

Patch by Antoine Quint <Antoine Quint> on 2017-01-24
Reviewed by Dean Jackson.

Source/WebCore:

Ensure we have a chance to start the transition (on the next frame) before registering for an event
tracking its completion.

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

(TracksPanel.prototype.hide):

LayoutTests:

This test should no longer be flaky, so let's no mark it as such anymore.

  • platform/mac/TestExpectations:
6:56 PM Changeset in webkit [211130] by commit-queue@webkit.org
  • 3 edits in trunk/LayoutTests

Work around a crash when running media/modern-media-controls/pip-support/pip-support-enabled.html
https://bugs.webkit.org/show_bug.cgi?id=167381

Patch by Antoine Quint <Antoine Quint> on 2017-01-24
Reviewed by Dean Jackson.

The test at media/modern-media-controls/pip-support/pip-support-enabled.html would crash because the test that
preceded it, media/modern-media-controls/pip-support/pip-support-click.html, would not exit the PiP presentation mode
before exiting the test. We now exit PiP before proceeding to the next test which avoid hitting the assertion
and the crash in Debug builds.

  • media/modern-media-controls/pip-support/pip-support-click.html:
  • platform/mac-wk1/TestExpectations:
6:52 PM Changeset in webkit [211129] by fpizlo@apple.com
  • 4 edits
    1 add in trunk

Atomics.store should return the int-converted value according to toInteger
https://bugs.webkit.org/show_bug.cgi?id=167399

Reviewed by Saam Barati.
JSTests:

  • stress/atomics-add-uint32.js: Added.
  • stress/atomics-store-return.js: Fix the test to match what the spec wants.

Source/JavaScriptCore:


I keep getting this wrong, but I think I've finally done it right. What we want is for
Atomics.store to return the value it was passed after toInteger, which doesn't clip the value to
any kind of range. It does get truncated to double.

This changes the code to pass those "integers" as doubles. It doesn't matter that this is slow,
since all of these code paths are slow due to their need to check everything. We'll take care of
that by making them intrinsic later.

  • runtime/AtomicsObject.cpp:

(JSC::atomicsFuncAdd):
(JSC::atomicsFuncAnd):
(JSC::atomicsFuncCompareExchange):
(JSC::atomicsFuncExchange):
(JSC::atomicsFuncLoad):
(JSC::atomicsFuncOr):
(JSC::atomicsFuncStore):
(JSC::atomicsFuncSub):
(JSC::atomicsFuncXor):

6:40 PM Changeset in webkit [211128] by Yusuke Suzuki
  • 4 edits
    1 add in trunk

[JSC] Optimize Number#toString with Int52
https://bugs.webkit.org/show_bug.cgi?id=167303

Reviewed by Sam Weinig.

JSTests:

  • stress/to-string-with-int52.js: Added.

(shouldBe):

Source/JavaScriptCore:

In kraken crypto-sha256-iterative, we frequently call Number.prototype.toString with
Int52. In that case, toString handles it in the generic double path. But we should
have a fast path for this since it can be represented in int64_t.

The stanford-crypto-sha256-iterative shows 1.6% performance improvement (on Linux machine hanayamata).

Collected 100 samples per benchmark/VM, with 100 VM invocations per benchmark. Emitted a call to gc() between
sample measurements. Used 1 benchmark iteration per VM invocation for warm-up. Used the jsc-specific preciseTime()
function to get microsecond-level timing. Reporting benchmark execution times with 95% confidence intervals in
milliseconds.

baseline patched

stanford-crypto-sha256-iterative 32.853+-0.075 32.325+-0.055 definitely 1.0163x faster

  • runtime/JSCJSValue.h:
  • runtime/NumberPrototype.cpp:

(JSC::int52ToStringWithRadix):
(JSC::toStringWithRadix):

6:18 PM Changeset in webkit [211127] by commit-queue@webkit.org
  • 4 edits in trunk

[WebRTC] Use HAVE_PTHREAD_COND_TIMEDWAIT_RELATIVE for libwebrtc
https://bugs.webkit.org/show_bug.cgi?id=167353

Patch by Youenn Fablet <youenn@apple.com> on 2017-01-24
Reviewed by Alex Christensen.

Source/ThirdParty/libwebrtc:

  • CMakeLists.txt:

Tools:

  • Scripts/webkitpy/libwebrtc/generate_cmake.py:

(CMakeGenerator.initialize_targets):

5:44 PM Changeset in webkit [211126] by Simon Fraser
  • 4 edits in trunk/Source

[iOS WK2] Avoid IOSurface readback for snapshot creation
https://bugs.webkit.org/show_bug.cgi?id=167397
rdar://problem/30174873

Reviewed by Tim Horton.

Source/WebCore:

Export sinkIntoImage().

  • platform/graphics/cocoa/IOSurface.h:

Source/WebKit2:

Use IOSurface::sinkIntoImage() for snapshots, to avoid GPU readback.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _snapshotRect:intoImageOfWidth:completionHandler:]):

5:43 PM Changeset in webkit [211125] by Brent Fulgham
  • 3 edits
    6 adds in trunk

Bug 167392: REGRESSION(r210531): Relax same-volume display requirement for iOS
https://bugs.webkit.org/show_bug.cgi?id=167392
<rdar://problem/30074665>

Reviewed by Brady Eidson.

Source/WebCore:

  • page/SecurityOrigin.cpp:

(WebCore::SecurityOrigin::canDisplay): Exclude the new check when building on iOS.

LayoutTests:

Rebaseline two tests for ios-simulator, now that they exclude the cross-volume file check..

  • platform/ios-simulator/fast/xmlhttprequest: Added.
  • platform/ios-simulator/fast/xmlhttprequest/xmlhttprequest-nonexistent-file-expected.txt: Added.
  • platform/ios-simulator/storage: Added.
  • platform/ios-simulator/storage/domstorage: Added.
  • platform/ios-simulator/storage/domstorage/sessionstorage: Added.
  • platform/ios-simulator/storage/domstorage/sessionstorage/blocked-file-access-expected.txt: Added.
5:04 PM Changeset in webkit [211124] by msaboff@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

InferredTypeTable entry manipulation is not TOCTOU race safe
https://bugs.webkit.org/show_bug.cgi?id=167344

Reviewed by Filip Pizlo.

Made the accesses to table values safe from Time of Check,
Time of Use races with local temporary values.

Fixed point that we set an entry in the table to access the
current table entry instead of using the local entry. In that case,
we reload the now changed entry.

  • runtime/InferredTypeTable.cpp:

(JSC::InferredTypeTable::visitChildren):
(JSC::InferredTypeTable::get):
(JSC::InferredTypeTable::willStoreValue):
(JSC::InferredTypeTable::makeTop):

4:55 PM Changeset in webkit [211123] by Michael Catanzaro
  • 3 edits in trunk/Tools

WKR should not confuse Miguel Gomez with Andres Gomez
https://bugs.webkit.org/show_bug.cgi?id=167389

Reviewed by Lucas Forschler.

Andres's email is a substring of Miguel's, causing WKR to credit Miguel's commits to
"mAndres Gomez". Fix this.

  • Scripts/webkitpy/tool/commands/newcommitbot.py:

(NewCommitBot._summarize_commit_log): Be stricter about matching emails. SVN logs include a
space on each side of the email address, so expect both spaces to be there before
considering the email for replacement.

  • Scripts/webkitpy/tool/commands/newcommitbot_unittest.py: Add a test.
4:53 PM Changeset in webkit [211122] by fpizlo@apple.com
  • 3 edits
    1 add in trunk

Atomics.store should return the int-converted value, not the value that it stored
https://bugs.webkit.org/show_bug.cgi?id=167395

Reviewed by Saam Barati.
JSTests:

  • stress/atomics-store-return.js: Added.

Source/JavaScriptCore:


Previously the code was based around passing a lambda that operated over the native type of the
operation (so for example int8_t if we were doing things to Int8Arrays). But to support this
behavior of store, we need it to be able to control how it converts its result to JSValue and it
needs to see its argument as an int32_t. It turns out that it's easy for all of the functions in
AtomicsObject.cpp to also adopt this protocol since the conversion to JSValue is just jsNumber()
from the native type in those cases, and the conversion from int32_t is done for free in
std::atomic.

  • runtime/AtomicsObject.cpp:

(JSC::atomicsFuncAdd):
(JSC::atomicsFuncAnd):
(JSC::atomicsFuncCompareExchange):
(JSC::atomicsFuncExchange):
(JSC::atomicsFuncLoad):
(JSC::atomicsFuncOr):
(JSC::atomicsFuncStore):
(JSC::atomicsFuncSub):
(JSC::atomicsFuncXor):

4:49 PM Changeset in webkit [211121] by timothy_horton@apple.com
  • 7 edits in trunk/Source/WebKit2

Script gets touch events even after navigation swipe begins
https://bugs.webkit.org/show_bug.cgi?id=167383
<rdar://problem/22938927>

Reviewed by Simon Fraser.

  • Platform/spi/ios/UIKitSPI.h:
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _isNavigationSwipeGestureRecognizer:]):

  • UIProcess/API/Cocoa/WKWebViewInternal.h:
  • UIProcess/Cocoa/ViewGestureController.h:
  • UIProcess/ios/ViewGestureControllerIOS.mm:

(-[WKSwipeTransitionController isNavigationSwipeGestureRecognizer:]):
(WebKit::ViewGestureController::isNavigationSwipeGestureRecognizer):

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView gestureRecognizer:shouldRequireFailureOfGestureRecognizer:]):
Require the navigation swipe gesture recognizer to fail before the
UIWebTouchEventsGestureRecognizer can recognize. This way, the page
doesn't get touch events during the swipe, which previously led to
e.g. carousels scrolling while swiping.

4:15 PM Changeset in webkit [211120] by akling@apple.com
  • 9 edits in trunk/Source/WebCore

Add memory footprint reporting using diagnostic logging.
<https://webkit.org/b/167285>
<rdar://problem/30151767>

Reviewed by Chris Dumez.

Add some basic logging of physical memory footprint post-load and post-backgrounding.
The logging works similarly to the CPU usage logging, though with slightly longer
delays to allow the measurement to stabilize.

  • page/DiagnosticLoggingKeys.cpp:

(WebCore::DiagnosticLoggingKeys::memoryUsageKey):
(WebCore::DiagnosticLoggingKeys::memoryUsageToDiagnosticLoggingKey):

  • page/DiagnosticLoggingKeys.h:
  • page/PerformanceLogging.cpp:

(WebCore::PerformanceLogging::physicalFootprint):

  • page/PerformanceLogging.h:
  • page/PerformanceMonitor.cpp:

(WebCore::PerformanceMonitor::PerformanceMonitor):
(WebCore::PerformanceMonitor::didFinishLoad):
(WebCore::PerformanceMonitor::activityStateChanged):
(WebCore::PerformanceMonitor::measurePostLoadMemoryUsage):
(WebCore::PerformanceMonitor::measurePostBackgroundingMemoryUsage):

  • page/PerformanceMonitor.h:
  • page/Settings.h:

(WebCore::Settings::isPostLoadMemoryUsageMeasurementEnabled):
(WebCore::Settings::isPostBackgroundingMemoryUsageMeasurementEnabled):

  • page/cocoa/PerformanceLoggingCocoa.mm:

(WebCore::PerformanceLogging::physicalFootprint):

4:09 PM Changeset in webkit [211119] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking macos-inline-media-controls/macos-inline-media-controls-buttons-styles.html as flaky on macOS WK1.
https://bugs.webkit.org/show_bug.cgi?id=163598

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
3:49 PM Changeset in webkit [211118] by commit-queue@webkit.org
  • 6 edits
    4 deletes in trunk

Remove always true unsafePluginPastingEnabled setting
https://bugs.webkit.org/show_bug.cgi?id=167360

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-01-24
Reviewed by Andreas Kling.

Source/WebCore:

Setting added by Chromium and never used by other ports.

  • dom/ScriptableDocumentParser.cpp:

(WebCore::ScriptableDocumentParser::ScriptableDocumentParser):

  • page/Settings.in:

LayoutTests:

  • editing/pasteboard/paste-noplugin-expected.txt: Removed.
  • editing/pasteboard/paste-noplugin-xhtml-expected.txt: Removed.
  • editing/pasteboard/paste-noplugin-xhtml.xhtml: Removed.
  • editing/pasteboard/paste-noplugin.html: Removed.
  • platform/efl/TestExpectations:
  • platform/wk2/TestExpectations:
3:29 PM Changeset in webkit [211117] by matthew_hanson@apple.com
  • 4 edits in branches/safari-603-branch

Merge r211086. rdar://problem/29948645

3:29 PM Changeset in webkit [211116] by matthew_hanson@apple.com
  • 7 edits
    2 adds in branches/safari-603-branch

Merge r211070. rdar://problem/30121809

3:29 PM Changeset in webkit [211115] by matthew_hanson@apple.com
  • 11 edits
    2 adds in branches/safari-603-branch/Source/JavaScriptCore

Merge r211069. rdar://problem/30173274

3:25 PM Changeset in webkit [211114] by andersca@apple.com
  • 3 edits in trunk/Source/WebCore

When Safari reloads pages with Flash objects after Flash is installed, placeholders don't paint (but do work!)
https://bugs.webkit.org/show_bug.cgi?id=167391
rdar://problem/29857388

Reviewed by Sam Weinig.

  • page/Page.cpp:

(WebCore::Page::refreshPlugins):
Remove an unused variable.

  • plugins/PluginInfoProvider.cpp:

(WebCore::PluginInfoProvider::refresh):
Make sure to call refreshPlugins(). Instead of reloading subframes, just reload all the main frames with
subframes that contain plug-ins.

3:24 PM Changeset in webkit [211113] by fpizlo@apple.com
  • 3 edits
    1 add in trunk

-0 is a valid array index and AtomicsObject should know this
https://bugs.webkit.org/show_bug.cgi?id=167386

Reviewed by Mark Lam.

JSTests:

  • stress/atomics-neg-zero.js: Added.

Source/JavaScriptCore:

  • runtime/AtomicsObject.cpp: The bug title really says it all.
2:40 PM Changeset in webkit [211112] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, rolling out r211091.
https://bugs.webkit.org/show_bug.cgi?id=167384

introduces a subtle bug in InferredTypeTable, huge
Octane/deltablue regression (Requested by pizlo on #webkit).

Reverted changeset:

"InferredTypeTable entry manipulation is not TOCTOU race safe"
https://bugs.webkit.org/show_bug.cgi?id=167344
http://trac.webkit.org/changeset/211091

2:07 PM Changeset in webkit [211111] by fpizlo@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Enable the stochastic space-time scheduler on the larger multicores
https://bugs.webkit.org/show_bug.cgi?id=167382
<rdar://problem/30173375>

Rubber stamped by Saam Barati

This looks like a 1.3% JetStream speed-up thanks to a 28% splay-latency improvement. This new
scheduler seems to prevent all of the same pathologies as the old one prevented. But instead of
periodically suspending the mutator, this new one will only suspend after an iteration of the
constraint fixpoint. The length of that suspension length is random with the distribution being
governed by mutatorUtilization. Once resumed, the mutator gets to run unimpeded until draining
stalls.

I'm enabling it on platforms as I benchmark those platforms. It's possible that we will want to
use a different scheduler on different platforms.

  • runtime/Options.cpp:

(JSC::overrideDefaults):

1:54 PM Changeset in webkit [211110] by msaboff@apple.com
  • 9 edits in trunk/Source/JavaScriptCore

JSArray::tryCreateUninitialized should be called JSArray::tryCreateForInitializationPrivate
https://bugs.webkit.org/show_bug.cgi?id=167334

Rubber-stamped by Filip Pizlo.

  • dfg/DFGOperations.cpp:
  • ftl/FTLOperations.cpp:

(JSC::FTL::operationMaterializeObjectInOSR):

  • runtime/ArrayPrototype.cpp:

(JSC::arrayProtoFuncSplice):
(JSC::arrayProtoPrivateFuncConcatMemcpy):

  • runtime/CommonSlowPaths.cpp:

(JSC::SLOW_PATH_DECL):

  • runtime/JSArray.cpp:

(JSC::JSArray::tryCreateForInitializationPrivate):
(JSC::JSArray::fastSlice):
(JSC::JSArray::tryCreateUninitialized): Deleted.

  • runtime/JSArray.h:

(JSC::JSArray::tryCreateForInitializationPrivate):
(JSC::constructArray):
(JSC::constructArrayNegativeIndexed):
(JSC::JSArray::tryCreateUninitialized): Deleted.

  • runtime/RegExpMatchesArray.cpp:

(JSC::createEmptyRegExpMatchesArray):

  • runtime/RegExpMatchesArray.h:

(JSC::createRegExpMatchesArray):

1:45 PM Changeset in webkit [211109] by commit-queue@webkit.org
  • 8 edits in trunk/Source/WebCore

Clean up Performance IDL interfaces so they are easier to read
https://bugs.webkit.org/show_bug.cgi?id=167378

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-01-24
Reviewed by Sam Weinig.

  • page/Performance.idl:
  • page/PerformanceEntry.idl:
  • page/PerformanceMark.idl:
  • page/PerformanceMeasure.idl:

Update spec links and use a typedef to match specs.

  • page/PerformanceResourceTiming.cpp:

(WebCore::PerformanceResourceTiming::workerStart):

  • page/PerformanceResourceTiming.h:
  • page/PerformanceResourceTiming.idl:

Add the workerStart property which always returns 0 for non-workers.

1:38 PM Changeset in webkit [211108] by Alan Bujtas
  • 12 edits
    4 adds in trunk

Simple line layout: Add support for hyphen: auto.
https://bugs.webkit.org/show_bug.cgi?id=167297
<rdar://problem/30119463>

Reviewed by Antti Koivisto.

Source/WebCore:

Implement hyphen: auto for simple line layout.

Tests: fast/text/simple-line-hyphens-with-text-align.html

fast/text/simple-line-hyphens-with-word-letter-spacing.html

  • platform/text/Hyphenation.h:

(WebCore::enoughWidthForHyphenation):

  • rendering/RenderTreeAsText.cpp:

(WebCore::writeSimpleLine):
(WebCore::write):

  • rendering/SimpleLineLayout.cpp:

(WebCore::SimpleLineLayout::canUseForStyle):
(WebCore::SimpleLineLayout::LineState::appendFragmentAndCreateRunIfNeeded): Inherit the hyphen attribute from the
run-to-be-appended. Ensure that we don't append additional runs when the last run has hyphen.
(WebCore::SimpleLineLayout::splitFragmentToFitLine): Before calling into the lastHyphenPosition() we need to
ensure that the hyphen would surely fit (even on the splitting position).
(WebCore::SimpleLineLayout::createLineRuns): Probe hypenation for overhanging non-whitespace runs.
(WebCore::SimpleLineLayout::printReason):

  • rendering/SimpleLineLayout.h:

(WebCore::SimpleLineLayout::Run::Run):

  • rendering/SimpleLineLayoutFlowContents.h:

(WebCore::SimpleLineLayout::FlowContents::Segment::toSegmentPosition):
(WebCore::SimpleLineLayout::FlowContents::Segment::toRenderPosition):

  • rendering/SimpleLineLayoutResolver.cpp:

(WebCore::SimpleLineLayout::RunResolver::Run::Run):
(WebCore::SimpleLineLayout::RunResolver::Run::constructStringForHyphenIfNeeded):
(WebCore::SimpleLineLayout::RunResolver::Run::text):

  • rendering/SimpleLineLayoutResolver.h:

(WebCore::SimpleLineLayout::RunResolver::Run::hasHyphen):

  • rendering/SimpleLineLayoutTextFragmentIterator.cpp:

(WebCore::SimpleLineLayout::TextFragmentIterator::Style::Style):
(WebCore::SimpleLineLayout::TextFragmentIterator::nextBreakablePosition):
(WebCore::SimpleLineLayout::TextFragmentIterator::nextNonWhitespacePosition):
(WebCore::SimpleLineLayout::TextFragmentIterator::textWidth):
(WebCore::SimpleLineLayout::TextFragmentIterator::lastHyphenPosition): We only check the actual run for hyphenation ignoring
the neighboring runs. This might need to be changed in the future.
(WebCore::SimpleLineLayout::TextFragmentIterator::runWidth):

  • rendering/SimpleLineLayoutTextFragmentIterator.h:

(WebCore::SimpleLineLayout::TextFragmentIterator::TextFragment::TextFragment):
(WebCore::SimpleLineLayout::TextFragmentIterator::TextFragment::hasHyphen):
(WebCore::SimpleLineLayout::TextFragmentIterator::TextFragment::operator==):
(WebCore::SimpleLineLayout::TextFragmentIterator::TextFragment::split):
(WebCore::SimpleLineLayout::TextFragmentIterator::TextFragment::splitWithHyphen):

  • rendering/line/BreakingContext.h:

(WebCore::tryHyphenating):

LayoutTests:

  • fast/text/simple-line-hyphens-with-text-align-expected.html: Added.
  • fast/text/simple-line-hyphens-with-text-align.html: Added.
  • fast/text/simple-line-hyphens-with-word-letter-spacing-expected.html: Added.
  • fast/text/simple-line-hyphens-with-word-letter-spacing.html: Added.
1:23 PM Changeset in webkit [211107] by matthew_hanson@apple.com
  • 4 edits in branches/safari-603-branch

Merge r211067. rdar://problem/29319962

1:22 PM Changeset in webkit [211106] by matthew_hanson@apple.com
  • 3 edits
    2 adds in branches/safari-603-branch

Merge r211065. rdar://problem/29784295

1:22 PM Changeset in webkit [211105] by matthew_hanson@apple.com
  • 4 edits in branches/safari-603-branch

Merge r211058. rdar://problem/29526875

1:22 PM Changeset in webkit [211104] by matthew_hanson@apple.com
  • 3 edits in branches/safari-603-branch/Source/WebKit2

Merge r211054. rdar://problem/28891161

1:22 PM Changeset in webkit [211103] by matthew_hanson@apple.com
  • 22 edits
    2 moves in branches/safari-603-branch

Merge r211045. rdar://problem/29486368

1:22 PM Changeset in webkit [211102] by matthew_hanson@apple.com
  • 5 edits in branches/safari-603-branch/Source/JavaScriptCore

Merge r211043. rdar://problem/30134434

1:22 PM Changeset in webkit [211101] by matthew_hanson@apple.com
  • 2 edits in branches/safari-603-branch/Source/WebCore

Merge r211028. rdar://problem/30060378

1:22 PM Changeset in webkit [211100] by matthew_hanson@apple.com
  • 27 edits
    2 adds in branches/safari-603-branch

Merge r211007. rdar://problem/28620919

1:22 PM Changeset in webkit [211099] by matthew_hanson@apple.com
  • 4 edits in branches/safari-603-branch/Source/JavaScriptCore

Merge r210971. rdar://problem/30115838

1:22 PM Changeset in webkit [211098] by matthew_hanson@apple.com
  • 4 edits in branches/safari-603-branch/Source

Merge r210603. rdar://problem/29839194

1:03 PM Changeset in webkit [211097] by commit-queue@webkit.org
  • 16 edits
    3 adds in trunk

Pass down website autoplay policies to media elements
https://bugs.webkit.org/show_bug.cgi?id=167355

Patch by Matt Rajca <mrajca@apple.com> on 2017-01-24
Reviewed by Alex Christensen.

Source/WebCore:

Autoplay policies can be specified at the global web view preferences level or on a per-page
basis during navigation. This patch ensures that policies specified on a per-page basis hold
precedence over global policies. If no policies are specified during navigation, global
policies are used. A WebsiteAutoplayPolicy::Default option has been added to let clients
explicitly specify web view defaults should be used.

  • dom/Document.cpp:

(WebCore::Document::audioPlaybackRequiresUserGesture):
(WebCore::Document::videoPlaybackRequiresUserGesture):

  • dom/Document.h:
  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::HTMLMediaElement):
(WebCore::HTMLMediaElement::playInternal):

  • loader/DocumentLoader.h:

(WebCore::DocumentLoader::audioPlaybackRequiresUserGesture):
(WebCore::DocumentLoader::setAudioPlaybackRequiresUserGesture):
(WebCore::DocumentLoader::videoPlaybackRequiresUserGesture):
(WebCore::DocumentLoader::setVideoPlaybackRequiresUserGesture):

Source/WebKit2:

Autoplay policies can be specified at the global web view preferences level or on a per-page
basis during navigation. This patch ensures that policies specified on a per-page basis hold
precedence over global policies. If no policies are specified during navigation, global
policies are used. A WebsiteAutoplayPolicy::Default option has been added to let clients
explicitly specify web view defaults should be used.

  • Shared/WebsitePolicies.h:
  • UIProcess/API/C/WKWebsitePolicies.cpp:

(WKWebsitePoliciesGetAutoplayPolicy):
(WKWebsitePoliciesSetAutoplayPolicy):

  • UIProcess/API/C/WKWebsitePolicies.h:
  • UIProcess/API/Cocoa/_WKWebsitePolicies.h:
  • UIProcess/API/Cocoa/_WKWebsitePolicies.mm:

(-[_WKWebsitePolicies setAutoplayPolicy:]):
(-[_WKWebsitePolicies autoplayPolicy]):

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit2/autoplay-check.html: Renamed from Tools/TestWebKitAPI/Tests/WebKit2/autoplayCheck.html to match our naming conventions.
  • TestWebKitAPI/Tests/WebKit2/autoplay-no-audio-check.html: Added.
  • TestWebKitAPI/Tests/WebKit2/test-without-audio-track.mp4: Added.
  • TestWebKitAPI/Tests/WebKit2Cocoa/WebsitePolicies.mm:

(-[AutoplayPoliciesDelegate _webView:decidePolicyForNavigationAction:decisionHandler:]):
(TEST):

12:49 PM Changeset in webkit [211096] by Ryan Haddad
  • 3 edits in trunk/LayoutTests

More modern-media-controls LayoutTest gardening.

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
  • platform/mac/TestExpectations:
12:44 PM Changeset in webkit [211095] by n_wang@apple.com
  • 16 edits
    2 adds in trunk

AX: Speak Selection does not work in an iframe
https://bugs.webkit.org/show_bug.cgi?id=166794
<rdar://problem/29913013>

Reviewed by Chris Fleizach.

Source/WebKit2:

Making sure WebPage::getSelectionOrContentsAsString() is getting the
selection content in the right frame.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _accessibilityRetrieveSpeakSelectionContent]):
(-[WKWebView _accessibilityDidGetSpeakSelectionContent:]):

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/ios/WKContentViewInteraction.h:
  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView accessibilityRetrieveSpeakSelectionContent]):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::getSelectionOrContentsAsString):

Tools:

  • DumpRenderTree/ios/UIScriptControllerIOS.mm:

(WTR::UIScriptController::retrieveSpeakSelectionContent):
(WTR::UIScriptController::accessibilitySpeakSelectionContent):

  • TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl:
  • TestRunnerShared/UIScriptContext/UIScriptController.cpp:

(WTR::UIScriptController::retrieveSpeakSelectionContent):
(WTR::UIScriptController::accessibilitySpeakSelectionContent):

  • TestRunnerShared/UIScriptContext/UIScriptController.h:
  • WebKitTestRunner/cocoa/TestRunnerWKWebView.h:
  • WebKitTestRunner/cocoa/TestRunnerWKWebView.mm:

(-[TestRunnerWKWebView dealloc]):
(-[TestRunnerWKWebView _accessibilityDidGetSpeakSelectionContent:]):
(-[TestRunnerWKWebView accessibilityRetrieveSpeakSelectionContentWithCompletionHandler:]):

  • WebKitTestRunner/ios/UIScriptControllerIOS.mm:

(WTR::UIScriptController::retrieveSpeakSelectionContent):
(WTR::UIScriptController::accessibilitySpeakSelectionContent):

LayoutTests:

  • accessibility/ios-simulator/speak-selection-content-expected.txt: Added.
  • accessibility/ios-simulator/speak-selection-content.html: Added.
  • platform/ios-simulator-wk1/TestExpectations:
11:55 AM Changeset in webkit [211094] by jer.noble@apple.com
  • 3 edits in trunk/Source/WebKit2

Make _WKFullscreenDelegate available to users of the WebKit2 C-API.
https://bugs.webkit.org/show_bug.cgi?id=165255

Reviewed by Anders Carlsson.

Add a getter and setter to WKPagePrivate allowing clients to set/get the
_WKFullscreenDelegate associated with the page.

  • UIProcess/API/C/mac/WKPagePrivateMac.h:
  • UIProcess/API/C/mac/WKPagePrivateMac.mm:

(WKPageSetFullscreenDelegate):
(WKPageGetFullscreenDelegate):

11:09 AM Changeset in webkit [211093] by Ryan Haddad
  • 3 edits in trunk/LayoutTests

modern-media-controls LayoutTest gardening.
https://bugs.webkit.org/show_bug.cgi?id=167266

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
  • platform/mac/TestExpectations:
11:08 AM Changeset in webkit [211092] by Joseph Pecoraro
  • 7 edits in trunk

Remove always true selectionIncludesAltImageText setting
https://bugs.webkit.org/show_bug.cgi?id=167358

Reviewed by Alex Christensen.

Source/WebCore:

  • editing/Editor.cpp:

(WebCore::Editor::selectedTextForDataTransfer):

  • page/Settings.in:

LayoutTests:

  • editing/pasteboard/copy-image-with-alt-text-expected.txt:
  • editing/pasteboard/copy-image-with-alt-text.html:
  • platform/efl/TestExpectations:
10:57 AM Changeset in webkit [211091] by msaboff@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

InferredTypeTable entry manipulation is not TOCTOU race safe
https://bugs.webkit.org/show_bug.cgi?id=167344

Reviewed by Filip Pizlo.

Made the accesses to table values safe from Time of Check,
Time of Use races with local temporary values.

  • runtime/InferredTypeTable.cpp:

(JSC::InferredTypeTable::visitChildren):
(JSC::InferredTypeTable::get):
(JSC::InferredTypeTable::willStoreValue):
(JSC::InferredTypeTable::makeTop):

10:27 AM Changeset in webkit [211090] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking media/modern-media-controls/media-controller/media-controller-resize.html as flaky on macOS WK1.
https://bugs.webkit.org/show_bug.cgi?id=164571

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
10:17 AM Changeset in webkit [211089] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

WPT LayoutTest gardening for ios-simulator.

Unreviewed test gardening.

  • platform/ios-simulator/TestExpectations:
10:15 AM Changeset in webkit [211088] by Konstantin Tokarev
  • 2 edits in trunk/Source/WTF

VS2015 supports ref qualifiers
https://bugs.webkit.org/show_bug.cgi?id=167368

Reviewed by Sam Weinig.

  • wtf/Compiler.h: Enable

WTF_COMPILER_SUPPORTS_CXX_REFERENCE_QUALIFIED_FUNCTIONS for VS2015

9:44 AM Changeset in webkit [211087] by dbates@webkit.org
  • 7 edits in trunk

StringView.split() should use an iterator design pattern instead of allocating a Vector
https://bugs.webkit.org/show_bug.cgi?id=163225

Reviewed by Darin Adler.

Source/WebCore:

Update code to use the new iterator-style StringView.split().

  • platform/URLParser.cpp:

Source/WTF:

Implement StringView.split() using an iterator design.

Using an iterator design avoids the need to allocate a Vector of StringView objects,
which is space-inefficient and error prone as the returned Vector may outlive the
lifetime of the underlying string associated with the split (as StringView is a non-
owning reference to a string).

StringView.split() now returns a StringView::SplitResult object that implements begin()/end()
to support iterating over StringView substrings delimited by the specified separator
character. For example, to iterate over the 'c'-separated substrings of a StringView v,
you can write:

for (StringView substring : v.split('c'))

Do something with substring.

  • wtf/text/StringView.cpp:

(WTF::StringView::SplitResult::Iterator::findNextSubstring): Advances the iterator to point to the
next substring.
(WTF::StringView::split): Modified to return a SplitResult::Iterator object instead of a Vector<StringView>.

  • wtf/text/StringView.h:

(WTF::StringView::SplitResult::SplitResult):
(WTF::StringView::SplitResult::Iterator::Iterator):
(WTF::StringView::SplitResult::Iterator::operator*):
(WTF::StringView::SplitResult::Iterator::operator==):
(WTF::StringView::SplitResult::Iterator::operator!=):
Implements the iterator interface.

Tools:

Add unit tests for StringView.split().

  • TestWebKitAPI/Tests/WTF/StringView.cpp:

(TestWebKitAPI::stringViewFromLiteral): Moved to the top of the file so that it can be
used in the StringView.split() unit tests.
(TestWebKitAPI::stringViewFromUTF8): Ditto.
(TestWebKitAPI::vectorFromSplitResult): Convenience function to convert a StringView::SplitResult
object to a Vector of String objects.
(TestWebKitAPI::TEST): Added the following tests:

  • WTF.StringViewSplitEmptyAndNullStrings
  • WTF.StringViewSplitBasic
  • WTF.StringViewSplitWithConsecutiveSeparators
9:29 AM Changeset in webkit [211086] by andersca@apple.com
  • 4 edits in trunk

The Score Esports crashes on launch
https://bugs.webkit.org/show_bug.cgi?id=167338
rdar://problem/29948645

Reviewed by Dan Bernstein.

Source/WebKit2:

  • Shared/Cocoa/WKObject.mm:

(+[WKObject conformsToProtocol:]):
Add a class method implementation in case an app ends up calling +[WKObject conformsToProtocol:] for some reason.

Tools:

  • TestWebKitAPI/Tests/WebKit2Cocoa/WKObject.mm:

(TestWebKitAPI::TEST):
Add a test.

9:01 AM Changeset in webkit [211085] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

Remove always true openGLMultisamplingEnabled setting
https://bugs.webkit.org/show_bug.cgi?id=167364

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-01-24
Reviewed by Sam Weinig.

  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::create):

  • page/Settings.in:
8:25 AM Changeset in webkit [211084] by magomez@igalia.com
  • 2 edits in trunk/Source/WebCore

[GTK] Do not paint non composited content into the window when using the threaded compositor
https://bugs.webkit.org/show_bug.cgi?id=167367

Reviewed by Carlos Garcia Campos.

When using the threaded compositor we need to send the non composited content for compositing as well,
not painting it directly into the window.

No new tests.

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::paintsIntoWindow):

6:10 AM Changeset in webkit [211083] by magomez@igalia.com
  • 2 edits in trunk/Source/WebKit2

[Coordinated Graphics] Ensure that we're in AC mode before trying to create GraphicsLayers
https://bugs.webkit.org/show_bug.cgi?id=167365

Reviewed by Carlos Garcia Campos.

When entering AC on demand, the RenderLayerCompositor wants to create the root GraphicsLayer before the
AcceleratedDrawingArea is in AC mode. This means there's no LayerTreeHost to request the GraphicsLayerFactory,
so no layers are created. Ensure that we are in AC mode before requesting the GraphicsLayerFactory.

No behaviour change, no new tests.

  • WebProcess/WebPage/AcceleratedDrawingArea.cpp:

(WebKit::AcceleratedDrawingArea::graphicsLayerFactory):

3:48 AM Changeset in webkit [211082] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

Remove always true allowCustomScrollbarInMainFrame setting
https://bugs.webkit.org/show_bug.cgi?id=167362

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-01-24
Reviewed by Andreas Kling.

Setting added by Chromium and never used by other ports.

  • page/FrameView.cpp:

(WebCore::FrameView::createScrollbar):

  • page/Settings.in:
2:29 AM Changeset in webkit [211081] by commit-queue@webkit.org
  • 4 edits
    2 deletes in trunk

Remove always true syncXHRInDocumentsEnabled setting
https://bugs.webkit.org/show_bug.cgi?id=167359

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-01-24
Reviewed by Alex Christensen.

Source/WebCore:

Setting added by Chromium and never used by other ports.

  • page/Settings.in:
  • xml/XMLHttpRequest.cpp:

(WebCore::XMLHttpRequest::open):

LayoutTests:

  • fast/xmlhttprequest/xmlhttprequest-sync-disabled-expected.txt: Removed.
  • fast/xmlhttprequest/xmlhttprequest-sync-disabled.html: Removed.
2:04 AM Changeset in webkit [211080] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

Remove always true antialiased2dCanvasEnabled setting
https://bugs.webkit.org/show_bug.cgi?id=167361

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-01-24
Reviewed by Andreas Kling.

  • html/HTMLCanvasElement.cpp:

(WebCore::HTMLCanvasElement::createImageBuffer):

  • page/Settings.in:

Jan 23, 2017:

11:48 PM Changeset in webkit [211079] by Carlos Garcia Campos
  • 13 edits
    4 adds in trunk

[GTK] Add API to WebKitWebsiteDataManager to handle website data
https://bugs.webkit.org/show_bug.cgi?id=146589

Reviewed by Michael Catanzaro.

Source/WebKit2:

Add WebKitWebsiteData boxed type to wrap a WebsiteDataRecord and new methods to WebKitWebsiteDataManager to
fetch, remove and clear website data.

  • PlatformGTK.cmake: Add new files to compilation.
  • UIProcess/API/gtk/WebKitWebsiteData.cpp: Added.

(_WebKitWebsiteData::_WebKitWebsiteData):
(recordContainsSupportedDataTypes): Helper function to check if the WebsiteDataRecord contains any type exposed
by our API.
(toWebKitWebsiteDataTypes): Convert from WebKit::WebsiteDataType to the GTK+ public API types.
(webkitWebsiteDataCreate): Create a new WebKitWebsiteData for the given WebsiteDataRecord if it contains any
supported type.
(webkitWebsiteDataGetRecord): Returns the wrapped WebsiteDataRecord.
(webkit_website_data_ref):
(webkit_website_data_unref):
(webkit_website_data_get_name): Return the display name.
(webkit_website_data_get_types): Returns the mask of types.
(webkit_website_data_get_size): Returns the size for the given types.

  • UIProcess/API/gtk/WebKitWebsiteData.h: Added.
  • UIProcess/API/gtk/WebKitWebsiteDataManager.cpp:

(toWebsiteDataTypes): Convert from GTK+ public API types to WebKit::WebsiteDataType.
(webkit_website_data_manager_fetch): Fetch website data of the given types.
(webkit_website_data_manager_fetch_finish):
(webkit_website_data_manager_remove): Remove the website data of the given types for the given WebKitWebsiteData list.
(webkit_website_data_manager_remove_finish):
(webkit_website_data_manager_clear): Clear all website data of the given types modified since the given time span.
(webkit_website_data_manager_clear_finish):

  • UIProcess/API/gtk/WebKitWebsiteDataManager.h:
  • UIProcess/API/gtk/WebKitWebsiteDataPrivate.h: Added.
  • UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt: Add new symbols.
  • UIProcess/API/gtk/docs/webkit2gtk-docs.sgml: Add new section.
  • UIProcess/API/gtk/webkit2.h: Inlcude WebKitWebsiteData.h

Tools:

Add about:data handler to MiniBrowser to manually test the website data API. Also add unit tests to test all the
new API, moving the WebKitWebsiteDataManager configuration API to the new file too.

  • MiniBrowser/gtk/BrowserWindow.c:

(webViewDecidePolicy):
(newTabCallback):

  • MiniBrowser/gtk/main.c:

(createBrowserTab):
(aboutDataRequestFree):
(aboutDataRequestNew):
(aboutDataRequestForView):
(websiteDataRemovedCallback):
(websiteDataClearedCallback):
(aboutDataScriptMessageReceivedCallback):
(domainListFree):
(aboutDataFillTable):
(gotWebsiteDataCallback):
(aboutDataHandleRequest):
(aboutURISchemeRequestCallback):
(main):

  • TestWebKitAPI/Tests/WebKit2Gtk/CMakeLists.txt:
  • TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitWebContext.cpp:

(serverCallback):
(beforeAll):

  • TestWebKitAPI/Tests/WebKit2Gtk/TestWebsiteData.cpp: Added.

(serverCallback):
(WebsiteDataTest::WebsiteDataTest):
(WebsiteDataTest::~WebsiteDataTest):
(WebsiteDataTest::fetch):
(WebsiteDataTest::remove):
(WebsiteDataTest::clear):
(testWebsiteDataConfiguration):
(testWebsiteDataCache):
(testWebsiteDataStorage):
(testWebsiteDataDatabases):
(testWebsiteDataAppcache):
(beforeAll):
(afterAll):

10:52 PM Changeset in webkit [211078] by Yusuke Suzuki
  • 10 edits
    15 adds in trunk

Add the support for nomodule attribute on script element
https://bugs.webkit.org/show_bug.cgi?id=166987

Reviewed by Sam Weinig.

Source/WebCore:

As discussed on https://github.com/whatwg/html/pull/2261, we should have
the way to suppress classic script execution when our user agent have
modules support. With such a feature, developers can write the code like,

<script type="module" src="./app.js"></script>
<script nomodule src="./bundled-app.js"></script>

In the above code, if the user agent does not support modules, the bundled-app.js
will be executed. On the other hand, if the user agent supports modules, we should
ignore the script tag which has the nomodule attribute.
This way allows us to support the legacy browsers while using modules.

In WebKit, we already support modules. Thus, we should ignore the classic script
attributed nomodule.

We also rename asyncAttributeValue and deferAttributeValue to hasAsyncAttribute and
hasDeferAttribute.

Tests: js/dom/modules/nomodule-has-no-effect-on-module-inline.html

js/dom/modules/nomodule-has-no-effect-on-module-src.html
js/dom/modules/nomodule-prevents-execution-classic-script-inline.html
js/dom/modules/nomodule-prevents-execution-classic-script-src.html

  • dom/ScriptElement.cpp:

(WebCore::ScriptElement::prepareScript):

  • dom/ScriptElement.h:
  • html/HTMLAttributeNames.in:
  • html/HTMLScriptElement.cpp:

(WebCore::HTMLScriptElement::hasAsyncAttribute):
(WebCore::HTMLScriptElement::hasDeferAttribute):
(WebCore::HTMLScriptElement::hasNoModuleAttribute):
(WebCore::HTMLScriptElement::asyncAttributeValue): Deleted.
(WebCore::HTMLScriptElement::deferAttributeValue): Deleted.

  • html/HTMLScriptElement.h:
  • html/HTMLScriptElement.idl:
  • svg/SVGScriptElement.cpp:

(WebCore::SVGScriptElement::hasAsyncAttribute):
(WebCore::SVGScriptElement::hasDeferAttribute):
(WebCore::SVGScriptElement::hasNoModuleAttribute):
(WebCore::SVGScriptElement::asyncAttributeValue): Deleted.
(WebCore::SVGScriptElement::deferAttributeValue): Deleted.

  • svg/SVGScriptElement.h:

LayoutTests:

  • js/dom/modules/nomodule-dynamic-classic-inline-expected.txt: Added.
  • js/dom/modules/nomodule-dynamic-classic-inline.html: Added.
  • js/dom/modules/nomodule-dynamic-classic-src-expected.txt: Added.
  • js/dom/modules/nomodule-dynamic-classic-src.html: Added.
  • js/dom/modules/nomodule-has-no-effect-on-module-inline-expected.txt: Added.
  • js/dom/modules/nomodule-has-no-effect-on-module-inline.html: Added.
  • js/dom/modules/nomodule-has-no-effect-on-module-src-expected.txt: Added.
  • js/dom/modules/nomodule-has-no-effect-on-module-src.html: Added.
  • js/dom/modules/nomodule-prevents-execution-classic-script-inline-expected.txt: Added.
  • js/dom/modules/nomodule-prevents-execution-classic-script-inline.html: Added.
  • js/dom/modules/nomodule-prevents-execution-classic-script-src-expected.txt: Added.
  • js/dom/modules/nomodule-prevents-execution-classic-script-src.html: Added.
  • js/dom/modules/nomodule-reflect-expected.txt: Added.
  • js/dom/modules/nomodule-reflect.html: Added.
  • js/dom/modules/script-tests/error-classic-script.js: Added.
10:07 PM Changeset in webkit [211077] by Gyuyoung Kim
  • 2 edits in trunk/LayoutTests

[EFL] Update timeout tests in media/modern-media-controls

Unreviewed EFL gardening.

  • platform/efl/TestExpectations: Dozens of modern-media-controls tests are timeout.
10:01 PM Changeset in webkit [211076] by Antti Koivisto
  • 2 edits in trunk/Source/WebKit2

Maintain ordering when doing speculative loads
https://bugs.webkit.org/show_bug.cgi?id=167324

Forgot to implement a review comment.

  • NetworkProcess/cache/NetworkCacheSubresourcesEntry.cpp:

(WebKit::NetworkCache::makeSubresourceInfoVector):

Allocated initial capacity and use uncheckedAppend.

7:19 PM Changeset in webkit [211075] by commit-queue@webkit.org
  • 22 edits
    7 adds in trunk/Source

Web Inspector: Provide a way to trigger a Garbage Collection
https://bugs.webkit.org/show_bug.cgi?id=167345
<rdar://problem/30102853>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-01-23
Reviewed by Timothy Hatcher.

Source/JavaScriptCore:

  • inspector/protocol/Console.json:
  • inspector/protocol/Debugger.json:
  • inspector/protocol/Heap.json:
  • inspector/protocol/Runtime.json:

These domains are supported by Worker backends. Label them.

  • inspector/scripts/codegen/generate_js_backend_commands.py:

(JSBackendCommandsGenerator.generate_domain):

  • inspector/scripts/codegen/models.py:

(Protocol.parse_domain):
(Domain.init):
(Domains):
Parse "workerSupported" and include a line in BackendCommands.js
that calls to InspectorBackend.workerSupportedDomain().

  • inspector/scripts/tests/generic/domain-availability.json: Added.
  • inspector/scripts/tests/generic/expected/domain-availability.json-result: Added.
  • inspector/scripts/tests/generic/expected/worker-supported-domains.json-result: Added.
  • inspector/scripts/tests/generic/worker-supported-domains.json: Added.

Tests for domain "workerSupported" and "availability" properties.

Source/WebCore:

  • inspector/WorkerInspectorController.cpp:

(WebCore::WorkerInspectorController::WorkerInspectorController):
Include a HeapAgent so we can do Heap.gc on Workers.

Source/WebInspectorUI:

  • Localizations/en.lproj/localizedStrings.js:

New "Garbage collect" tooltip.

  • Versions/Inspector-iOS-10.3.json:
  • UserInterface/Protocol/Legacy/10.3/InspectorBackendCommands.js:

Update 10.3 so it generates its list of supported domains for workers.
Note that the Heap domain is not be available in this backend but it is now.

  • UserInterface/Protocol/Connection.js:

(InspectorBackend.WorkerConnection):

  • UserInterface/Protocol/HeapObserver.js:

(WebInspector.HeapObserver.prototype.garbageCollected):

  • UserInterface/Protocol/InspectorBackend.js:

(InspectorBackendClass):
(InspectorBackendClass.prototype.get workerSupportedDomains):
(InspectorBackendClass.prototype.workerSupportedDomain):

  • UserInterface/Images/NavigationItemClear.svg: Added.
  • UserInterface/Images/NavigationItemGarbageCollect.svg: Added.

New image for Garbage Collection. Better image for clearing.

  • UserInterface/Images/gtk/NavigationItemClear.svg: Added.

Copy the Trash icon for Clear for gtk.

  • UserInterface/Protocol/Target.js:

(WebInspector.Target.prototype.get HeapAgent):

  • UserInterface/Protocol/WorkerTarget.js:

(WebInspector.WorkerTarget):
Include Heap agent for Workers.

  • UserInterface/Views/LogContentView.js:

(WebInspector.LogContentView):
(WebInspector.LogContentView.prototype.get navigationItems):
(WebInspector.LogContentView.prototype._garbageCollect):
Add garbage collect button which triggers gc on all capable targets.

  • UserInterface/Views/NetworkGridContentView.js:

(WebInspector.NetworkGridContentView):

  • UserInterface/Views/TimelineRecordingContentView.js:

(WebInspector.TimelineRecordingContentView):
Update the Clear icon to an improved icon.

  • UserInterface/Controllers/HeapManager.js:

(WebInspector.HeapManager.prototype.garbageCollected):
Timelines only shows Main Target events, do not show GC events for Workers.

7:12 PM Changeset in webkit [211074] by commit-queue@webkit.org
  • 15 edits in trunk/Source/WebCore

Cleanup WEB_TIMING code
https://bugs.webkit.org/show_bug.cgi?id=167339

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-01-23
Reviewed by Alex Christensen.

Stylistic cleanup to WEB_TIMING related code.

  • bindings/js/JSPerformanceEntryCustom.cpp:
  • loader/ResourceTimingInformation.cpp:
  • loader/ResourceTimingInformation.h:
  • loader/SubresourceLoader.cpp:

(WebCore::SubresourceLoader::didFinishLoading):

  • page/Performance.cpp:

(WebCore::Performance::getEntries):
(WebCore::Performance::getEntriesByType):
(WebCore::Performance::setResourceTimingBufferSize):
(WebCore::Performance::isResourceTimingBufferFull):

  • page/Performance.h:
  • page/PerformanceMark.h:
  • page/PerformanceMeasure.h:
  • page/PerformanceNavigation.h:
  • page/PerformanceResourceTiming.cpp:

(WebCore::PerformanceResourceTiming::PerformanceResourceTiming):
(WebCore::PerformanceResourceTiming::resourceTimeToDocumentMilliseconds):

  • page/PerformanceResourceTiming.h:
  • page/PerformanceTiming.cpp:

(WebCore::PerformanceTiming::documentLoader):
(WebCore::PerformanceTiming::documentTiming):
(WebCore::PerformanceTiming::loadTiming):

  • page/PerformanceTiming.h:
  • platform/network/cf/ResourceHandleCFNet.cpp:

(WebCore::ResourceHandle::createCFURLConnection):

6:30 PM Changeset in webkit [211073] by Ryan Haddad
  • 3 edits in trunk/LayoutTests

LayoutTest gardening for modern-media-tests.

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
  • platform/mac/TestExpectations:
6:19 PM Changeset in webkit [211072] by commit-queue@webkit.org
  • 5 edits
    1 delete in trunk

Unreviewed, rolling out r211062.
https://bugs.webkit.org/show_bug.cgi?id=167354

broke API tests (Requested by alexchristensen on #webkit).

Reverted changeset:

"Pass down website autoplay policies to media elements"
https://bugs.webkit.org/show_bug.cgi?id=167132
http://trac.webkit.org/changeset/211062

4:17 PM Changeset in webkit [211071] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Remove conflicting TestExpectations for font variations tests.

Unreviewed test gardening.

  • platform/mac/TestExpectations:
4:15 PM Changeset in webkit [211070] by sbarati@apple.com
  • 7 edits
    2 adds in trunk

https://bugs.webkit.org/show_bug.cgi?id=167247
JSC: operationSpreadGeneric uses the wrong global object for the builtin function and slow_path_spread consults the wrong global object to prove if the iterator protocol is unobservable
<rdar://problem/30121809>

Reviewed by Filip Pizlo.

JSTests:

  • stress/spread-consults-correct-global-object.js: Added.

(assert):
(spread):

  • stress/spread-correct-global-object-on-exception.js: Added.

(assert):
(spread):
(const.objectText.let.o.Symbol.iterator):
(catch):

Source/JavaScriptCore:

There were two bugs in the different tiers with respect to how
spread handled global objects.

The first was in the LLInt/baseline inside slow_path_spread:

We consulted the lexical global object instead of the thing we're
spreading's global object to determine if the array iterator protocol
is unobservable. This is wrong if the incoming array is from a different
global object. We must consult the incoming array's global object
to determine if it can be spread using the fast path.

The second was in operationSpreadGeneric in the DFG/FTL:

We were always using the incoming array's global object, even
when going down the slow path. This is wrong because we were
fetching the builtin iteration function helper from the incoming
array's global object, which meant that if the iterator function
were to throw an exception, it could leak objects from a different
global object. We should be executing the iterator function with
the lexical global object.

  • dfg/DFGOperations.cpp:
  • jsc.cpp:

(GlobalObject::finishCreation):
(functionGlobalObjectForObject):

  • runtime/CommonSlowPaths.cpp:

(JSC::SLOW_PATH_DECL):

  • runtime/JSArray.h:
  • runtime/JSArrayInlines.h:

(JSC::JSArray::isIteratorProtocolFastAndNonObservable):

4:01 PM Changeset in webkit [211069] by fpizlo@apple.com
  • 11 edits
    2 adds in trunk/Source/JavaScriptCore

Land the stochastic space-time scheduler disabled
https://bugs.webkit.org/show_bug.cgi?id=167249

Reviewed by Saam Barati.

The space-time scheduler is pretty weird. It uses a periodic scheduler where the next period is
simply determined by an integer multiple of time since when the scheduler last snapped phase. It
snaps phase after constraint solving. Both the snapping of the phase after constraint solving and
the periodicity appear to be necessary for good performance. For example, if the space-time
scheduler decided that it was in the resume part of the phase just by virtue of having just
resumed, then it would be empirically worse than our scheduler which asks "what time is it?" to
decide whether it should be suspended or resumed even if it just suspended or resumed. I've spent
a lot of time wondering why these two features are essential, and I think I found a reason.

What's happening is that sometimes the GC has an overrun and its increment takes longer than it
should have. The current scheduler forgives overruns when constraint solving, which seems to
make sense because it cannot control whether constraint solving runs with the mutator resumed or
suspended. It has to be suspended currently. Snapping phase after constraint solving accomplishes
this. What's more surprising is how important it is to manage deadline misses during draining.
The relevant kind of deadline miss is when doing mutator-suspended draining to catch up to the
retreating wavefront. Deadline misses while doing this can happen systematically in some
workloads, like JetStream/hash-map and some test in Speedometer. It's because they have some
ginormous object and it takes like ~3ms+-1.5ms just to scan it. The space-time scheduler's use
of time to decide what to do saves the day here: after the deadline miss, the scheduler will
initially realize that it missed its deadline to resume the mutator. But as soon as it does this
it asks: "based on current time since phase snap, what should I do?". In the case of a deadline
miss, this question is essentially a weighted coin flip because of the high noise in the amount
of time that it takes to do things in the GC. If you overrun, you will probably overrun by
multiple milliseconds, which is enough that where you land in the space-time scheduler's timeline
is random. The likelihood that you land in the "resume mutator" part of the timeline has a
probability that is roughly the same as what the space-time scheduler calls mutator utilization.
This is a super weird property. I did not intend for it to have this property, but it appears to
be the most important property of this scheduler.

Based on this, it seems that the fact that the space-time scheduler could suspend the mutator
before draining runs out of work doesn't accomplish anything. As soon as you resume the
mutator, you have a retreating wavefront to worry about. But if the collector is happily scanning
things then it's almost certain that the collector will outpace the mutator. Also, anything that
the mutator asks us to revisit is deferred anyway.

In the past I've tried to replace the scheduler in one patch and this turned out to be annoying
because even a poorly conceived scheduler should be iterated on. This patch lands a new scheduler
called the StochasticSpaceTime scheduler. It replaces two of the known-good features of the old
scheduler: (1) it forgives constraint pauses and (2) after deadline overrun its choice is random,
weighted by the mutator utilization target. Unlike the old scheduler, this one will only suspend
the mutator when the draining terminates, but it may pause for any amount of time after an
iteration of constraint solving. It computes the targetPause by measuring constraint solving time
and multiplying by the pauseScale (0.3 by default). If smaller then minimumPause (0.3ms by
default), then it uses minimumPause instead. The stochastic scheduler will then definitely do at
least targetPause worth of suspended draining after the constraint solving iteration, and then
it will decide whether or not to do another one at random. The probability that it will choose to
resume is exactly mutatorUtilization, which is computed exactly as before. Therefore, the
probability of resumption starts at 0.7 and goes down as memory usage rises. Conversely, the
probability that we will stay suspended starts at 0.3 and goes up from there.

This new scheduler looks like it might be a 25% improvement on splay-latency. It also looks like
a small progression on hash-map. Hash-map is a great test of one of the worst cases of retreating
wavefront, since it is repeatedly storing to a ginormous array. This array is sure to take a
while to scan, and to complete, the GC must be smart enough to visit any new objects it finds
while scanning the array immediately after scanning that array. This new scheduler means that
after scanning the array, the probability that you will scan whatever you found in it starts at
0.3 and rises as the program allocates. It's sure to be 0.3, and not 0.3k, because after the
wavefront stops advancing, the only object on the mark stack after a constraint iteration will be
that array. Since there is sure to be a 0.3ms or longer pause, the GC will be sure to start
visiting this object. The GC can then complete if it just allows enough time after this to scan
whatever new objects it finds. If scanning the array overruns the deadline (and it almost
certainly will) then the probability that the GC keeps the mutator suspended is simply
1 - mutatorUtilization.

This scheduler is disabled by default. You can enable it with
--useStochasticMutatorScheduler=true.

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • heap/Heap.cpp:

(JSC::Heap::Heap):
(JSC::Heap::markToFixpoint):

  • heap/Heap.h:
  • heap/MarkingConstraintSet.cpp:

(JSC::MarkingConstraintSet::didStartMarking):
(JSC::MarkingConstraintSet::executeConvergenceImpl):
(JSC::MarkingConstraintSet::resetStats): Deleted.
(JSC::MarkingConstraintSet::executeBootstrap): Deleted.

  • heap/MarkingConstraintSet.h:
  • heap/MutatorScheduler.cpp:

(JSC::MutatorScheduler::didReachTermination):
(JSC::MutatorScheduler::synchronousDrainingDidStall):

  • heap/MutatorScheduler.h:
  • heap/SlotVisitor.cpp:

(JSC::SlotVisitor::didReachTermination):
(JSC::SlotVisitor::drainFromShared):

  • heap/StochasticSpaceTimeMutatorScheduler.cpp: Added.

(JSC::StochasticSpaceTimeMutatorScheduler::Snapshot::Snapshot):
(JSC::StochasticSpaceTimeMutatorScheduler::Snapshot::now):
(JSC::StochasticSpaceTimeMutatorScheduler::Snapshot::bytesAllocatedThisCycle):
(JSC::StochasticSpaceTimeMutatorScheduler::StochasticSpaceTimeMutatorScheduler):
(JSC::StochasticSpaceTimeMutatorScheduler::~StochasticSpaceTimeMutatorScheduler):
(JSC::StochasticSpaceTimeMutatorScheduler::state):
(JSC::StochasticSpaceTimeMutatorScheduler::beginCollection):
(JSC::StochasticSpaceTimeMutatorScheduler::didStop):
(JSC::StochasticSpaceTimeMutatorScheduler::willResume):
(JSC::StochasticSpaceTimeMutatorScheduler::didReachTermination):
(JSC::StochasticSpaceTimeMutatorScheduler::didExecuteConstraints):
(JSC::StochasticSpaceTimeMutatorScheduler::synchronousDrainingDidStall):
(JSC::StochasticSpaceTimeMutatorScheduler::timeToStop):
(JSC::StochasticSpaceTimeMutatorScheduler::timeToResume):
(JSC::StochasticSpaceTimeMutatorScheduler::log):
(JSC::StochasticSpaceTimeMutatorScheduler::endCollection):
(JSC::StochasticSpaceTimeMutatorScheduler::setResumeTime):
(JSC::StochasticSpaceTimeMutatorScheduler::bytesAllocatedThisCycleImpl):
(JSC::StochasticSpaceTimeMutatorScheduler::bytesSinceBeginningOfCycle):
(JSC::StochasticSpaceTimeMutatorScheduler::maxHeadroom):
(JSC::StochasticSpaceTimeMutatorScheduler::headroomFullness):
(JSC::StochasticSpaceTimeMutatorScheduler::mutatorUtilization):

  • heap/StochasticSpaceTimeMutatorScheduler.h: Added.
  • runtime/Options.cpp:

(JSC::overrideDefaults):

  • runtime/Options.h:
3:37 PM Changeset in webkit [211068] by Antti Koivisto
  • 4 edits in trunk/Source/WebKit2

Maintain ordering when doing speculative loads
https://bugs.webkit.org/show_bug.cgi?id=167324

Reviewed by Chris Dumez.

We currently randomize the ordering of speculative loads because they are serialized as a hash map.
It would be better to load in the same order as the requests were originally issued as that is
likely to match the order the document needs them.

  • NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp:

(WebKit::NetworkCache::SpeculativeLoadManager::startSpeculativeRevalidation):

  • NetworkProcess/cache/NetworkCacheSubresourcesEntry.cpp:

(WebKit::NetworkCache::SubresourceInfo::encode):
(WebKit::NetworkCache::SubresourceInfo::decode):

Include key into SubresourceInfo.

(WebKit::NetworkCache::makeSubresourcesVector):

Deduplicate the entries.

(WebKit::NetworkCache::SubresourcesEntry::SubresourcesEntry):
(WebKit::NetworkCache::SubresourcesEntry::updateSubresourceLoads):

  • NetworkProcess/cache/NetworkCacheSubresourcesEntry.h:

(WebKit::NetworkCache::SubresourceInfo::SubresourceInfo):
(WebKit::NetworkCache::SubresourceInfo::key):
(WebKit::NetworkCache::SubresourceInfo::setTransient):
(WebKit::NetworkCache::SubresourcesEntry::subresources):

Keep the resources in a Vector instead of a HashMap to maintain order.

3:26 PM Changeset in webkit [211067] by achristensen@apple.com
  • 4 edits in trunk

URLParser should fail to parse percent-encoded invalid UTF-8 sequences
https://bugs.webkit.org/show_bug.cgi?id=167330
Source/WebCore:

<rdar://problem/29319962>

Reviewed by Tim Horton.

Covered by new API tests.

  • platform/URLParser.cpp:

(WebCore::containsOnlyASCII):
(WebCore::URLParser::parseHostAndPort):
If UTF-8 decoding fails after percent-decoding the host, fail to parse.
This matches Chrome and Firefox, and it was proposed to the spec in https://github.com/whatwg/url/issues/215

Tools:

Reviewed by Tim Horton.

  • TestWebKitAPI/Tests/WebCore/URLParser.cpp:

(TestWebKitAPI::TEST_F):

3:22 PM Changeset in webkit [211066] by mark.lam@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Added a comment to clarify an assertion.

Rubber-stamped by Filip Pizlo.

  • runtime/JSCellInlines.h:

(JSC::JSCell::classInfo):

3:13 PM Changeset in webkit [211065] by fpizlo@apple.com
  • 3 edits
    2 adds in trunk

SharedArrayBuffer plus WebGL should not equal CRASH
https://bugs.webkit.org/show_bug.cgi?id=167329

Reviewed by Saam Barati.

Source/JavaScriptCore:

DOM unwrapping methods should return null rather than crashing. The code expects an
unshared buffer, so we should return null when it's shared. The caller can then decide
if they like null or not.

  • runtime/JSArrayBufferViewInlines.h:

(JSC::JSArrayBufferView::toWrapped):

LayoutTests:

This test used to crash and now it doesn't. It throws some exception.

  • js/shared-array-buffer-webgl-expected.txt: Added.
  • js/shared-array-buffer-webgl.html: Added.
3:06 PM Changeset in webkit [211064] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebInspectorUI

Web Inspector: long press on New Tab Tab Item should show context menu with recently closed tabs that are still closed
https://bugs.webkit.org/show_bug.cgi?id=166901

Patch by Devin Rousso <Devin Rousso> on 2017-01-23
Reviewed by Joseph Pecoraro.

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

(WebInspector.TabBar.Event):
(WebInspector.TabBar.prototype._handleNewTabContextMenu):
Add listener dispatch for contextmenu event on New Tab tab item.

(WebInspector.TabBar.prototype.get newTabTabBarItem): Deleted.
Unused.

  • UserInterface/Views/TabBrowser.js:

(WebInspector.TabBrowser):
(WebInspector.TabBrowser.prototype._tabBarItemAdded):
(WebInspector.TabBrowser.prototype._tabBarItemRemoved):
(WebInspector.TabBrowser.prototype._handleNewTabContextMenu): Added.
Create an array that keeps track of tabs as they are closed, and populate the contextmenu
of the New Tab tab item with entries for each of these tabs.

2:49 PM Changeset in webkit [211063] by mark.lam@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

ObjCCallbackFunction::destroy() should not use jsCast().
https://bugs.webkit.org/show_bug.cgi?id=167322

Reviewed by Filip Pizlo.

Since r210829, it is no longer correct for object destructors to use jsCast().
Fixed ObjCCallbackFunction::destroy() to use a static_cast instead.

  • API/ObjCCallbackFunction.mm:

(JSC::ObjCCallbackFunction::destroy):

2:25 PM Changeset in webkit [211062] by commit-queue@webkit.org
  • 4 edits
    1 add in trunk

Pass down website autoplay policies to media elements
https://bugs.webkit.org/show_bug.cgi?id=167132

Patch by Matt Rajca <mrajca@apple.com> on 2017-01-23
Reviewed by Alex Christensen.

The playbackRequiresUserGesture APIs are already covered by tests. This patch adds API tests
for autoplay website policies.

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):

2:24 PM Changeset in webkit [211061] by commit-queue@webkit.org
  • 16 edits in trunk/Source/WebInspectorUI

Web Inspector: tree elements with depth > 1 should have context menu "expand all"/"collapse all" commands
https://bugs.webkit.org/show_bug.cgi?id=135590

Patch by Devin Rousso <Devin Rousso> on 2017-01-23
Reviewed by Timothy Hatcher.

Rework the context menu event handlers for all TreeOutline and TreeElement instances such
that the TreeOutline handles the event listener and creates the context menu object and the
TreeElement populates the list with items. This is necessary due to the way in which
children are laid out, as there is padding on either side of the element that would not
trigger a context menu event.

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

(WebInspector.BreakpointTreeElement.prototype.ondetach):
(WebInspector.BreakpointTreeElement.prototype.populateContextMenu):
(WebInspector.BreakpointTreeElement.prototype.oncontextmenu): Deleted.

  • UserInterface/Views/ContextMenuUtilities.js:

(WebInspector.appendContextMenuItemsForSourceCode):

  • UserInterface/Views/DOMTreeElement.js:

(WebInspector.DOMTreeElement.prototype._populateNodeContextMenu):

  • UserInterface/Views/DOMTreeOutline.js:

(WebInspector.DOMTreeOutline):
(WebInspector.DOMTreeOutline.prototype.populateContextMenu):
(WebInspector.DOMTreeOutline.prototype._onmousedown):
(WebInspector.DOMTreeOutline.prototype._onmousemove):
(WebInspector.DOMTreeOutline.prototype._ondragstart):
(WebInspector.DOMTreeOutline.prototype._ondragover):
(WebInspector.DOMTreeOutline.prototype._ondrop):
(WebInspector.DOMTreeOutline.prototype._treeElementFromEvent): Deleted.
(WebInspector.DOMTreeOutline.prototype._contextMenuEventFired): Deleted.

  • UserInterface/Views/DebuggerSidebarPanel.js:

(WebInspector.DebuggerSidebarPanel):
(WebInspector.DebuggerSidebarPanel.prototype._breakpointTreeOutlineContextMenuTreeElement):

  • UserInterface/Views/FrameTreeElement.js:

(WebInspector.FrameTreeElement.prototype.onattach):

  • UserInterface/Views/GeneralTreeElement.js:

(WebInspector.GeneralTreeElement.prototype.onattach):
(WebInspector.GeneralTreeElement.prototype.ondetach): Deleted.

  • UserInterface/Views/ObjectTreeBaseTreeElement.js:

(WebInspector.ObjectTreeBaseTreeElement.prototype.populateContextMenu):
(WebInspector.ObjectTreeBaseTreeElement.prototype._logSymbolProperty):
(WebInspector.ObjectTreeBaseTreeElement.prototype._logValue):
(WebInspector.ObjectTreeBaseTreeElement.prototype.oncontextmenu): Deleted.
(WebInspector.ObjectTreeBaseTreeElement.prototype._contextMenuHandler): Deleted.

  • UserInterface/Views/ResourceTreeElement.js:

(WebInspector.ResourceTreeElement.prototype.populateContextMenu):
(WebInspector.ResourceTreeElement.prototype.onattach): Deleted.
(WebInspector.ResourceTreeElement.prototype._handleContextMenuEvent): Deleted.

  • UserInterface/Views/ThreadTreeElement.js:

(WebInspector.ThreadTreeElement.prototype.populateContextMenu):
(WebInspector.ThreadTreeElement.prototype.oncontextmenu): Deleted.

  • UserInterface/Views/TreeElement.js:

(WebInspector.TreeElement.prototype.populateContextMenu):
(WebInspector.TreeElement):

  • UserInterface/Views/TreeOutline.js:

(WebInspector.TreeOutline):
(WebInspector.TreeOutline.prototype.treeElementFromEvent):
(WebInspector.TreeOutline.prototype.populateContextMenu):
(WebInspector.TreeOutline._generateStyleRulesIfNeeded):

  • UserInterface/Views/VisualStyleSelectorTreeItem.js:

(WebInspector.VisualStyleSelectorTreeItem.prototype.onattach):
(WebInspector.VisualStyleSelectorTreeItem.prototype.populateContextMenu):
(WebInspector.VisualStyleSelectorTreeItem.prototype._highlightNodesWithSelector):
(WebInspector.VisualStyleSelectorTreeItem.prototype._hideDOMNodeHighlight):
(WebInspector.VisualStyleSelectorTreeItem.prototype._handleContextMenuEvent): Deleted.

  • UserInterface/Views/WorkerTreeElement.js:

(WebInspector.WorkerTreeElement.prototype.populateContextMenu):
(WebInspector.WorkerTreeElement.prototype.onattach):
(WebInspector.WorkerTreeElement.prototype._handleContextMenuEvent): Deleted.

  • UserInterface/Views/DataGrid.js:

(WebInspector.DataGrid.prototype._contextMenuInDataTable):
Add "Expand All"/"Collapse All" context menu items.

1:41 PM Changeset in webkit [211060] by mmaxfield@apple.com
  • 22 edits
    7 adds
    6 deletes in trunk/LayoutTests

Migrate font variations tests to using David Jonathan Ross's Boxis font
https://bugs.webkit.org/show_bug.cgi?id=167222

Reviewed by Dean Jackson.

He extremely generously made this font for doing testing of variation fonts,
and worked with us to licence it appropriately so it can be used in WebKit
directly.

Thanks so much to DJR!!!!

I also took this opportunity to make the tests in animations/font-variations
more robust.

  • animations/font-variations/font-variation-settings-expected.html: Removed.
  • animations/font-variations/font-variation-settings-expected.txt: Added.
  • animations/font-variations/font-variation-settings-order-expected.html: Removed.
  • animations/font-variations/font-variation-settings-order-expected.txt: Added.
  • animations/font-variations/font-variation-settings-order.html:
  • animations/font-variations/font-variation-settings-unlike-expected.html: Removed.
  • animations/font-variations/font-variation-settings-unlike-expected.txt: Added.
  • animations/font-variations/font-variation-settings-unlike.html:
  • animations/font-variations/font-variation-settings.html:
  • animations/font-variations/resources/Boxis-VF.ttf: Added.
  • fast/backgrounds/background-repeat-x-y.html: Removed.
  • fast/text/variations/advances.html:
  • fast/text/variations/case-axis-names-expected.html:
  • fast/text/variations/case-axis-names.html:
  • fast/text/variations/default-value-expected.html:
  • fast/text/variations/default-value.html:
  • fast/text/variations/duplicate-axis-expected.html: Removed.
  • fast/text/variations/duplicate-axis.html: Removed.
  • fast/text/variations/duplicate-expected.html:
  • fast/text/variations/duplicate.html:
  • fast/text/variations/exist-expected-mismatch.html:
  • fast/text/variations/exist.html:
  • fast/text/variations/getComputedStyle-expected.txt:
  • fast/text/variations/getComputedStyle.html:
  • fast/text/variations/inheritance-expected.html:
  • fast/text/variations/inheritance.html:
  • fast/text/variations/order-expected.html:
  • fast/text/variations/order.html:
  • fast/text/variations/outofbounds-expected-mismatch.html:
  • fast/text/variations/outofbounds.html:
  • fast/text/variations/resources/Boxis-VF.ttf: Added.
  • platform/mac/TestExpectations:
1:31 PM Changeset in webkit [211059] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking media/modern-media-controls/tracks-panel/tracks-panel-hide.html as flaky on macOS debug.
https://bugs.webkit.org/show_bug.cgi?id=167311

Unreviewed test gardening.

  • platform/mac/TestExpectations:
1:30 PM Changeset in webkit [211058] by achristensen@apple.com
  • 4 edits in trunk

Make URLs with non-special schemes and a query or fragment but no slash after the host more compatible
https://bugs.webkit.org/show_bug.cgi?id=167317
Source/WebCore:

<rdar://problem/29526875>

Reviewed by Sam Weinig.

This is currently being added to the URL spec in https://github.com/whatwg/url/issues/212
Covered by new API tests.

  • platform/URLParser.cpp:

(WebCore::URLParser::parse):
Only add a slash if there wasn't one if the URL has a special scheme.
This new behavior matches the old behavior of URL::parse.

Tools:

Reviewed by Sam Weinig.

  • TestWebKitAPI/Tests/WebCore/URLParser.cpp:

(TestWebKitAPI::TEST_F):

1:27 PM Changeset in webkit [211057] by commit-queue@webkit.org
  • 6 edits in trunk/Source/WebInspectorUI

Web Inspector: color picker should feature an editable CSS value
https://bugs.webkit.org/show_bug.cgi?id=124356

Patch by Devin Rousso <Devin Rousso> on 2017-01-23
Reviewed by Timothy Hatcher.

  • UserInterface/Views/ColorPicker.css:

(.color-picker):
(.color-picker.hide-inputs):
(.color-picker > .color-inputs):
(.color-picker > .color-inputs > div):
(.color-picker > .color-inputs > div[hidden]):
(.color-picker > .color-inputs input):

  • UserInterface/Views/ColorPicker.js:

(WebInspector.ColorPicker.createColorInput):
(WebInspector.ColorPicker):
(WebInspector.ColorPicker.prototype.set color):
(WebInspector.ColorPicker.prototype.set enableColorComponentInputs):
(WebInspector.ColorPicker.prototype._updateColor):
(WebInspector.ColorPicker.prototype._handleFormatChange):
(WebInspector.ColorPicker.prototype._showColorComponentInputs.updateColorInput):
(WebInspector.ColorPicker.prototype._showColorComponentInputs):
(WebInspector.ColorPicker.prototype._handleColorInputInput):
Add an input element (with a label for the component name and its units) for each component
as part of the current color format (e.g. R, G, B, A). If any of these inputs are changed
then the color is also changed and the "ColorChanged" event is fired.

  • UserInterface/Controllers/CodeMirrorColorEditingController.js:

(WebInspector.CodeMirrorColorEditingController.prototype.popoverWillPresent):

  • UserInterface/Views/InlineSwatch.js:

(WebInspector.InlineSwatch.prototype._swatchElementClicked):
Add FormatChanged event that fires whenever a new color is set with a different format or
the color value is set for the first time (there is no old format to compare to). This is
needed because if the format becomes RGB, RGBA, HSL, or HSLA from something not in that list
then the size of the containing popover needs to change since the newly added color inputs
will be displayed.

  • UserInterface/Views/GradientEditor.js:

(WebInspector.GradientEditor):
Prevent the color inputs from displaying at all, since there aren't individual swatches for
each color in a gradient.

1:22 PM Changeset in webkit [211056] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking media/modern-media-controls/placard-support/placard-support-pip.html as a flaky crash on Sierra WK1.
https://bugs.webkit.org/show_bug.cgi?id=167320

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
1:16 PM Changeset in webkit [211055] by commit-queue@webkit.org
  • 8 edits in trunk/Source/WebCore

Convert langAttributeAwareFormControlUIEnabled to a Setting
https://bugs.webkit.org/show_bug.cgi?id=167279

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-01-23
Reviewed by Sam Weinig.

  • dom/Document.cpp:

(WebCore::Document::getCachedLocale):

  • html/HTMLInputElement.cpp:

(WebCore::HTMLInputElement::setupDateTimeChooserParameters):
Convert to use Settings instead of RuntimeEnabledFeatures.

  • page/RuntimeEnabledFeatures.h:

(WebCore::RuntimeEnabledFeatures::langAttributeAwareFormControlUIEnabled): Deleted.
(WebCore::RuntimeEnabledFeatures::setLangAttributeAwareFormControlUIEnabled): Deleted.

  • page/Settings.in:

Move to Settings.

  • testing/InternalSettings.cpp:

(WebCore::InternalSettings::Backup::Backup):
(WebCore::InternalSettings::Backup::restoreTo):
(WebCore::InternalSettings::setLangAttributeAwareFormControlUIEnabled): Deleted.

  • testing/InternalSettings.h:
  • testing/InternalSettings.idl:

Remove the manual interface for the RuntimeEnabledFeature.
An identical interface is generated from Settings.in!

1:08 PM Changeset in webkit [211054] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebKit2

Web Inspector: Asserts seen opening and closing Remote Web Inspector windows
https://bugs.webkit.org/show_bug.cgi?id=167316
<rdar://problem/28891161>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-01-23
Reviewed by Alexey Proskuryakov.

  • UIProcess/RemoteWebInspectorProxy.cpp:

(WebKit::RemoteWebInspectorProxy::createFrontendPageAndWindow):
Assume read access, like the local web inspector, to Web Inspector resources.

  • WebProcess/WebPage/RemoteWebInspectorUI.cpp:

(WebKit::RemoteWebInspectorUI::closeWindow):
Clear ourselves as the inspector frontend client when closing.

1:00 PM Changeset in webkit [211053] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Add Sierra flag to TestExpectation for media/modern-media-controls/placard-support/placard-support-pip.html.

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
12:58 PM Changeset in webkit [211052] by andersca@apple.com
  • 8 edits in trunk/Source

When Safari reloads pages with Flash objects after Flash is installed, placeholders don't paint (but do work!)
https://bugs.webkit.org/show_bug.cgi?id=167268
rdar://problem/29857388

Reviewed by Sam Weinig.

Source/WebCore:

  • page/Page.cpp:

(WebCore::Page::refreshPlugins):
Call PluginInfoProvider::refresh instead.

(WebCore::Page::clearPluginData):
Add new setter.

  • page/Page.h:

Declare new members.

  • plugins/PluginInfoProvider.cpp:

(WebCore::PluginInfoProvider::refresh):
Put the logic to clear plug-in data and reload frames here.

  • plugins/PluginInfoProvider.h:

Add new members.

Source/WebKit2:

  • WebProcess/Plugins/WebPluginInfoProvider.h:

Make refreshPlugins() private.

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::refreshPlugins):
Call the newly added PluginInfoProvider::refresh().

12:55 PM Changeset in webkit [211051] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking media/modern-media-controls/tracks-support/tracks-support-show-panel-after-dragging-controls.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=167275

Unreviewed test gardening.

  • platform/mac/TestExpectations:
12:29 PM Changeset in webkit [211050] by timothy@hatcher.name
  • 2 edits in trunk/Source/ThirdParty

gtest fails to link on Linux due to missing -lpthread
https://bugs.webkit.org/show_bug.cgi?id=167313

  • gtest/CMakeLists.txt: Remove find_package(Threads) that was added in my last commit.

This is assumed to already happen in the platform cmake options file.

12:21 PM Changeset in webkit [211049] by Antti Koivisto
  • 5 edits in trunk/Source/WebKit2

Use priorities in speculative revalidation
https://bugs.webkit.org/show_bug.cgi?id=167314

Reviewed by Chris Dumez.

We currently do all speculative cache operations with 'Medium' priority
and network operations with 'Low'. We should use the actual request priorities instead.

  • NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp:

(WebKit::NetworkCache::constructRevalidationRequest):

Use priority when constructing validation request.

(WebKit::NetworkCache::SpeculativeLoadManager::retrieveEntryFromStorage):

Use priority when retrieving from cache.

(WebKit::NetworkCache::SpeculativeLoadManager::preloadEntry):

  • NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.h:
  • NetworkProcess/cache/NetworkCacheSubresourcesEntry.cpp:

(WebKit::NetworkCache::SubresourceInfo::encode):
(WebKit::NetworkCache::SubresourceInfo::decode):

Save and restore the priority.

  • NetworkProcess/cache/NetworkCacheSubresourcesEntry.h:

(WebKit::NetworkCache::SubresourceInfo::SubresourceInfo):
(WebKit::NetworkCache::SubresourceInfo::priority):

12:15 PM Changeset in webkit [211048] by Jonathan Bedard
  • 2 edits in trunk/Tools

svn-create-patch should emit properties when files are moved or copied
https://bugs.webkit.org/show_bug.cgi?id=167264

Reviewed by Daniel Bates.

  • Scripts/svn-create-patch:

(manufacturePatchForAdditionWithHistory): Diff the source file against nothing to get properties.

11:32 AM Changeset in webkit [211047] by commit-queue@webkit.org
  • 4 edits in trunk

[WebRTC] Filter libwebrtc link flags
https://bugs.webkit.org/show_bug.cgi?id=167287

Patch by Youenn Fablet <youenn@apple.com> on 2017-01-23
Reviewed by Alex Christensen.

Source/ThirdParty/libwebrtc:

  • CMakeLists.txt:

Tools:

  • Scripts/webkitpy/libwebrtc/generate_cmake.py:

(CMakeGenerator._compute_link_flags):
(CMakeGenerator._compute_link_flags.keep_flag):
(CMakeGenerator._generate_compile_target_options):

11:32 AM Changeset in webkit [211046] by commit-queue@webkit.org
  • 8 edits
    1 add in trunk

[WebRTC] Make VP8 optional in libwebrtc
https://bugs.webkit.org/show_bug.cgi?id=167257

Patch by Youenn Fablet <youennf@gmail.com> on 2017-01-23
Reviewed by Darin Adler.

Source/ThirdParty/libwebrtc:

Reusing strategy used to have VP9 optional for VP8 codec.

  • CMakeLists.txt: Updated tocompile and link vp8_noop.cc
  • Source/webrtc/media/engine/webrtcvideoengine2.cc:
  • Source/webrtc/modules/video_coding/codecs/vp8/include/vp8.h:
  • Source/webrtc/modules/video_coding/codecs/vp8/vp8_impl.cc:
  • Source/webrtc/modules/video_coding/codecs/vp8/vp8_noop.cc: Added.
  • Source/webrtc/video/video_encoder.cc:

Tools:

  • Scripts/webkitpy/libwebrtc/generate_cmake.py:

(CMakeGenerator.remove_libvpx): Adding vp8_noop.cc to the build system.

11:23 AM Changeset in webkit [211045] by jer.noble@apple.com
  • 22 edits
    2 moves in trunk

Source/WebCore:
REGRESSION (r208149): Video details does not apear and missing scrubber in Control Center
https://bugs.webkit.org/show_bug.cgi?id=167233

Reviewed by Alex Christensen.

Test: In TestWebKitAPI, NowPlayingControlsTests.NowPlayingControlsIOS

In r208149, we introduced a new media type, Video, and renamed the old type to
VideoAudio (to be able to distinguish between video-with-audio and silent-video).
But we missed one place where that type needs to be renamed.

For testing purposes, overload methods from PlatformMediaSessionManager which WebKit2 uses
to report the current now playing session and it's information.

  • platform/audio/ios/MediaSessionManagerIOS.h:
  • platform/audio/ios/MediaSessionManagerIOS.mm:

(WebCore::MediaSessionManageriOS::nowPlayingEligibleSession):
(WebCore::MediaSessionManageriOS::updateNowPlayingInfo):

Source/WebKit2:
Video details does not apear and missing scrubber in Control Center
https://bugs.webkit.org/show_bug.cgi?id=167233

Reviewed by Alex Christensen.

Make requestActiveNowPlayingSessionInfo() and handleActiveNowPlayingSessionInfoResponse()
work in PLATFORM(IOS).

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _requestActiveNowPlayingSessionInfo]):
(-[WKWebView _handleActiveNowPlayingSessionInfoResponse:title:duration:elapsedTime:]):

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/PageClient.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::requestActiveNowPlayingSessionInfo):
(WebKit::WebPageProxy::handleActiveNowPlayingSessionInfoResponse):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/ios/PageClientImplIOS.h:
  • UIProcess/ios/PageClientImplIOS.mm:

(WebKit::PageClientImpl::handleActiveNowPlayingSessionInfoResponse):

  • WebProcess/WebPage/Cocoa/WebPageCocoa.mm:

(WebKit::WebPage::requestActiveNowPlayingSessionInfo):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
  • WebProcess/WebPage/mac/WebPageMac.mm:

(WebKit::WebPage::requestActiveNowPlayingSessionInfo): Deleted.

Tools:
Video details does not apear and missing scrubber in Control Center
https://bugs.webkit.org/show_bug.cgi?id=167233

Reviewed by Alex Christensen.

Refactor TestWKWebViewMac to work on PLATFORM(IOS). Add a new test to
NowPlayingControlTests for iOS.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit2Cocoa/NowPlayingControlsTests.mm:

(-[NowPlayingTestWebView setWindowVisible:]):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKit2Cocoa/SnapshotStore.mm:
  • TestWebKitAPI/Tests/WebKit2Cocoa/VideoControlsManager.mm:
  • TestWebKitAPI/Tests/WebKit2Cocoa/WKWebViewCandidateTests.mm:
  • TestWebKitAPI/cocoa/TestWKWebView.h: Renamed from Tools/TestWebKitAPI/mac/TestWKWebViewMac.h.
  • TestWebKitAPI/cocoa/TestWKWebView.mm: Renamed from Tools/TestWebKitAPI/mac/TestWKWebViewMac.mm.

(SOFT_LINK_CLASS):
(-[TestMessageHandler addMessage:withHandler:]):
(-[TestMessageHandler userContentController:didReceiveScriptMessage:]):
(simulated_forceClickAssociatedEventsMask):
(-[TestWKWebViewHostWindow _mouseDownAtPoint:simulatePressure:]):
(-[TestWKWebViewHostWindow isKeyWindow]):
(-[TestWKWebViewHostWindow makeKeyWindow]):
(-[TestWKWebViewHostWindow resignKeyWindow]):
(-[TestWKWebView initWithFrame:]):
(-[TestWKWebView initWithFrame:configuration:]):
(-[TestWKWebView _setUpTestWindow:]):
(-[TestWKWebView performAfterReceivingMessage:action:]):
(-[TestWKWebView loadTestPageNamed:]):
(-[TestWKWebView synchronouslyLoadTestPageNamed:]):
(-[TestWKWebView stringByEvaluatingJavaScript:]):
(-[TestWKWebView waitForMessage:]):
(-[TestWKWebView performAfterLoading:]):
(-[TestWKWebView mouseDownAtPoint:simulatePressure:]):
(-[TestWKWebView typeCharacter:]):

10:45 AM Changeset in webkit [211044] by timothy@hatcher.name
  • 2 edits in trunk/Source/ThirdParty

gtest fails to link on Linux due to missing -lpthread
https://bugs.webkit.org/show_bug.cgi?id=167313

Reviewed by Alex Christensen.

  • gtest/CMakeLists.txt: Add call to find_package(Threads) before testing CMAKE_USE_PTHREADS_INIT.

Without the find_package call, CMAKE_USE_PTHREADS_INIT was always false for me. Also explicitly
define GTEST_HAS_PTHREAD to 0 when CMAKE_USE_PTHREADS_INIT is false to prevent gtest-port.h from
setting GTEST_HAS_PTHREAD based on the platform.

10:45 AM Changeset in webkit [211043] by msaboff@apple.com
  • 5 edits in trunk/Source/JavaScriptCore

IntlObject uses JSArray::tryCreateUninitialized in an unsafe way
https://bugs.webkit.org/show_bug.cgi?id=167288

Reviewed by Filip Pizlo.

Refactored the following "create" methods into a "tryCreate" method and a
"create" wrapper: JSArray::create(), Butterfly::create() and
createArrayButterfly().

Changed IntlObject.cpp to use JSArray::tryCreate() as it is simpler to use
by not requiring the caller to be GC savey. The performance benefits of
tryCreateUninitialized() are not needed by the IntlObject c++ code.

Did not add a new test as the bug caused LayoutTests/js/intl.html to fail
reliably with the JSC option values scribbleFreeCells=true,
collectContinuously=true and JSC_useGenerationalGC=false.

  • runtime/Butterfly.h:
  • runtime/ButterflyInlines.h:

(JSC::Butterfly::tryCreate): Added.
(JSC::Butterfly::create):

  • runtime/IntlObject.cpp:

(JSC::canonicalizeLocaleList):
(JSC::lookupSupportedLocales):
(JSC::intlObjectFuncGetCanonicalLocales):

  • runtime/JSArray.h:

(JSC::createContiguousArrayButterfly): Deleted.
(JSC::tryCreateArrayButterfly): Added.
(JSC::createArrayButterfly):
(JSC::JSArray::tryCreate): Added.
(JSC::JSArray::create):

10:39 AM Changeset in webkit [211042] by Chris Dumez
  • 12 edits in trunk/Source

REGRESSION (r211033): ASSERTION FAILED: m_ptr in com.apple.WebCore: WTF::RefPtr<WebCore::Element>::operator* const + 70
https://bugs.webkit.org/show_bug.cgi?id=167308
<rdar://problem/30144964>

Unreviewed, do a partial revert of r211033 to fix assertion.

Source/WebCore:

No new tests, already covered by:
fullscreen/exit-full-screen-iframe.html

  • dom/Document.cpp:

(WebCore::Document::webkitExitFullscreen):

  • page/ChromeClient.h:

Source/WebKit/mac:

  • WebCoreSupport/WebChromeClient.h:
  • WebCoreSupport/WebChromeClient.mm:

(WebChromeClient::exitFullScreenForElement):

Source/WebKit/win:

  • WebCoreSupport/WebChromeClient.cpp:

(WebChromeClient::exitFullScreenForElement):

Source/WebKit2:

  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::exitFullScreenForElement):

  • WebProcess/WebCoreSupport/WebChromeClient.h:
10:30 AM Changeset in webkit [211041] by Megan Gardner
  • 2 edits in trunk/LayoutTests

REGRESSION (r210941): LayoutTest scrollingcoordinator/ios/sync-layer-positions-after-scroll.html failing
https://bugs.webkit.org/show_bug.cgi?id=167262

Unreviewed test gardening.

Fix to interpolation code caused a different result.

  • scrollingcoordinator/ios/sync-layer-positions-after-scroll-expected.txt:
10:20 AM Changeset in webkit [211040] by Gustavo Noronha Silva
  • 2 edits in trunk/Source/WebCore

[GTK] asserting on unknown locale for hyphenation is wrong
https://bugs.webkit.org/show_bug.cgi?id=167312

Reviewed by Carlos Garcia Campos.

The fact that we hit the assert on a test called 'hyphenation-unknown-locale' is already
a strong indication we should not have it. In addition to that, Carlos Lopez pointed out
a similar assert was removed from the Mac codepaths when the test was introduced.

  • platform/text/hyphen/HyphenationLibHyphen.cpp:

(WebCore::lastHyphenLocation): early return when a locale that is not available is provided
for hyphenation, instead of asserting.

9:40 AM Changeset in webkit [211039] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Unreviewed attempt to fix the iOS build after r211033.

  • dom/Node.cpp:

(WebCore::Node::defaultEventHandler):

3:28 AM Changeset in webkit [211038] by Gustavo Noronha Silva
  • 2 edits in trunk/Source/WebKit2

urlParserEnabled parameter is only encoded for COCOA ports
https://bugs.webkit.org/show_bug.cgi?id=167238

Reviewed by Alex Christensen.

This leads to URLParser being enabled on the UI process, since it is
the default, but disabled on the WebProcess, which is the default for
WebProcessCreationParameters, casuing asserts like on tests such as these
due to differences in parsing:

  • fast/loader/redirect-to-invalid-url-using-javascript-calls-policy-delegate.html
  • fast/loader/window-open-to-invalid-url-calls-policy-delegate.html
  • http/tests/inspector/network/copy-as-curl.html
  • Shared/WebProcessCreationParameters.cpp:

(WebKit::WebProcessCreationParameters::encode): encode urlParserEnabled
(WebKit::WebProcessCreationParameters::decode): decode urlParserEnabled

2:41 AM Changeset in webkit [211037] by commit-queue@webkit.org
  • 3 edits in trunk/Source/JavaScriptCore

JavaScriptCore has a weak external symbol in it
https://bugs.webkit.org/show_bug.cgi?id=167282

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-01-23
Reviewed by Yusuke Suzuki.

  • debugger/Debugger.cpp:

(JSC::Debugger::ProfilingClient::~ProfilingClient):

  • debugger/Debugger.h:

Avoid possible weak external symbol.

1:54 AM Changeset in webkit [211036] by commit-queue@webkit.org
  • 5 edits in trunk/Source

Remove allowWindowOpenWithoutUserGesture setting
https://bugs.webkit.org/show_bug.cgi?id=167301

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-01-23
Reviewed by Darin Adler.

Source/WebCore:

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::allowPopUp):

  • page/Settings.in:

Source/WebKit/mac:

  • WebView/WebView.mm:

(-[WebView _preferencesChanged:]):
Use the equivalent existing setting.

Jan 22, 2017:

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

Database file not removed for origins after deleting all databases
https://bugs.webkit.org/show_bug.cgi?id=167281

Reviewed by Darin Adler.

When DatabaseTracker::deleteDatabasesModifiedSince() is called with a min time, all databases for every origin
are deleted. For each origin if all databases are removed DatabaseTracker::deleteOrigin() is called to remove
also the origin database file. However, DatabaseTracker::deleteOrigin() returns early if the origin doesn't have
databases and in this particular case it never has databases, because we have just removed them.

This will be covered by GTK+ unit tests.

  • Modules/webdatabase/DatabaseTracker.cpp:

(WebCore::DatabaseTracker::deleteDatabasesModifiedSince): Instead of removing the databases while iterating
them, add the ones to be removed to a vector. If after the iteration all databases should be removed call
DatabaseTracker::deleteOrigin() to ensure both the databases and the database file are removed for the origin,
otherwhise call DatabaseTracker::deleteDatabase() for every database to delete.

11:25 PM Changeset in webkit [211034] by Michael Catanzaro
  • 2 edits in trunk/Source/WebCore

[GTK] Update Safari version in user agent
https://bugs.webkit.org/show_bug.cgi?id=167290

Reviewed by Carlos Garcia Campos.

Update Safari version from 10 to 11.

  • platform/gtk/UserAgentGtk.cpp:

(WebCore::buildUserAgentString):

10:24 PM Changeset in webkit [211033] by Darin Adler
  • 135 edits in trunk/Source

Remove PassRefPtr from "page" directory of WebCore, also deploy references
https://bugs.webkit.org/show_bug.cgi?id=167224

Reviewed by Chris Dumez.

Source/WebCore:

  • Modules/fetch/DOMWindowFetch.cpp:

(WebCore::DOMWindowFetch::fetch): Use DOMWindow::document instead of
scriptExecutionContext.

  • Modules/webdatabase/DatabaseContext.cpp:

(WebCore::DatabaseContext::databaseExceededQuota): Pass a reference.

  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(-[WebAccessibilityObjectWrapper accessibilityShowContextMenu]):
Pass a reference.

  • bindings/js/JSDOMWindowCustom.cpp:

(WebCore::JSDOMWindow::getOwnPropertySlot): Pass a reference.

  • dom/Document.cpp:

(WebCore::Document::childrenChanged): Pass a reference. Also made the
didReceiveDocType code unconditional instead of iOS-only.
(WebCore::Document::platformSuspendOrStopActiveDOMObjects): Ditto.
(WebCore::Document::updateViewportArguments): Ditto.
(WebCore::Document::setFocusedElement): Ditto.
(WebCore::Document::createDOMWindow): Ditto.
(WebCore::Document::takeDOMWindowFrom): Ditto.
(WebCore::Document::requestFullScreenForElement): Ditto.
(WebCore::Document::webkitExitFullscreen): Ditto.

  • dom/Element.cpp:

(WebCore::Element::focus): Ditto.
(WebCore::Element::blur): Ditto.
(WebCore::Element::dispatchFocusEvent): Ditto.
(WebCore::Element::dispatchBlurEvent): Ditto.

  • dom/Node.cpp:

(WebCore::Node::defaultEventHandler): Ditto.

  • editing/EditorCommand.cpp:

(WebCore::executePrint): Ditto.

  • editing/FrameSelection.cpp:

(WebCore::FrameSelection::setFocusedElementIfNeeded): Ditto.

  • history/CachedFrame.cpp:

(WebCore::CachedFrameBase::restore): Ditto.
(WebCore::CachedFrame::CachedFrame): Ditto.

  • html/ColorInputType.cpp:

(WebCore::ColorInputType::handleDOMActivateEvent): Ditto.

  • html/HTMLAnchorElement.cpp:

(WebCore::HTMLAnchorElement::isKeyboardFocusable): Ditto.

  • html/HTMLFormControlElement.cpp:

(WebCore::HTMLFormControlElement::isKeyboardFocusable): Pass a reference,
and also rewrote to use && for clarity.

  • html/HTMLVideoElement.cpp:

(WebCore::HTMLVideoElement::supportsFullscreen): Pass a reference.

  • html/shadow/SpinButtonElement.cpp:

(WebCore::SpinButtonElement::defaultEventHandler): Ditto.
(WebCore::SpinButtonElement::releaseCapture): Ditto.

  • html/shadow/mac/ImageControlsButtonElementMac.cpp:

(WebCore::ImageControlsButtonElementMac::defaultEventHandler): Ditto.

  • inspector/InspectorFrontendHost.cpp:

(WebCore::InspectorFrontendHost::showContextMenu): Ditto.
(WebCore::InspectorFrontendHost::dispatchEventAsContextMenuEvent): Ditto.

  • loader/EmptyClients.cpp:

(WebCore::EmptyChromeClient::createPopupMenu): Updated to take reference.
(WebCore::EmptyChromeClient::createSearchPopupMenu): Ditto.
(WebCore::EmptyChromeClient::createColorChooser): Ditto.

  • loader/EmptyClients.h: Ditto.
  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::submitForm): Pass a reference.
(WebCore::FrameLoader::commitProvisionalLoad): Ditto.
(WebCore::FrameLoader::closeAndRemoveChild): Take a reference.
(WebCore::FrameLoader::detachFromParent): Pass a reference.
(WebCore::FrameLoader::dispatchBeforeUnloadEvent): Ditto.
(WebCore::createWindow): Ditto.

  • loader/FrameLoader.h: Updated for the above.
  • loader/PolicyChecker.cpp:

(WebCore::PolicyChecker::checkNewWindowPolicy): Pass a reference.

  • loader/appcache/ApplicationCacheGroup.cpp:

(WebCore::ApplicationCacheGroup::recalculateAvailableSpaceInQuota): Ditto.

  • loader/appcache/ApplicationCacheGroup.h: Return a reference from origin.
  • loader/appcache/ApplicationCacheStorage.cpp:

(WebCore::ApplicationCacheStorage::calculateQuotaForOrigin): Take a reference.
(WebCore::ApplicationCacheStorage::calculateRemainingSizeForOriginExcludingCache):
Ditto.
(WebCore::ApplicationCacheStorage::store): Pass a reference.
(WebCore::ApplicationCacheStorage::checkOriginQuota): Updated since origin
now returns areference.

  • loader/appcache/ApplicationCacheStorage.h: Updated for the above.
  • loader/archive/mhtml/MHTMLArchive.cpp:

(WebCore::MHTMLArchive::generateMHTMLData): Pass a reference.

  • mathml/MathMLElement.cpp:

(WebCore::MathMLElement::isKeyboardFocusable): Ditto.

  • page/Chrome.cpp:

(WebCore::Chrome::Chrome): Moved initialization of data members to the
class definition.
(WebCore::Chrome::contentsSizeChanged): Take a reference.
(WebCore::Chrome::createWindow): Ditto.
(WebCore::Chrome::runBeforeUnloadConfirmPanel): Ditto.
(WebCore::Chrome::runJavaScriptAlert): Ditto.
(WebCore::Chrome::runJavaScriptConfirm): Ditto.
(WebCore::Chrome::runJavaScriptPrompt): Ditto.
(WebCore::Chrome::setStatusbarText): Ditto.
(WebCore::Chrome::print): Ditto.
(WebCore::Chrome::createColorChooser): Ditto.
(WebCore::Chrome::createPopupMenu): Ditto.
(WebCore::Chrome::createSearchPopupMenu): Ditto.
(WebCore::Chrome::didReceiveDocType): Ditto. Also made unconditional, but
empty for non-iOS platforms.
(WebCore::Chrome::registerPopupOpeningObserver): Take a reference.
(WebCore::Chrome::unregisterPopupOpeningObserver): Ditto.

  • page/Chrome.h: Updated for the above.
  • page/ChromeClient.h: Take references. Also updated some arguments from

Node to Element.

  • page/ContextMenuController.cpp:

(WebCore::ContextMenuController::handleContextMenuEvent): Take a reference.
(WebCore::ContextMenuController::showContextMenu): Ditto.
(WebCore::ContextMenuController::maybeCreateContextMenu): Ditto. Also use
make_unique instead of unique_ptr plus new.
(WebCore::openNewWindow): Ditto.
(WebCore::insertUnicodeCharacter): Ditto.
(WebCore::ContextMenuController::contextMenuItemSelected): Ditto.
(WebCore::ContextMenuController::showContextMenuAt): Ditto.
(WebCore::ContextMenuController::showImageControlsMenu): Ditto.

  • page/ContextMenuController.h: Updated for the above.
  • page/DOMTimer.cpp:

(WebCore::DOMTimer::fired): Pass a reference.

  • page/DOMWindow.cpp:

(WebCore::PostMessageTimer::PostMessageTimer): Take Ref&& instead of
PassRefPtr.
(WebCore::DOMWindow::adjustWindowRect): Use a reference.

(WebCore::DOMWindow::allowPopUp): Ditto. Also rewrite to use
instead

of successive if statements.
(WebCore::DOMWindow::canShowModalDialog): Ditto.
(WebCore::DOMWindow::DOMWindow): Ditto.
(WebCore::DOMWindow::didSecureTransitionTo): Ditto.
(WebCore::DOMWindow::registerProperty): Ditto.
(WebCore::DOMWindow::unregisterProperty): Ditto.
(WebCore::DOMWindow::postMessageTimerFired): Merge with the function
immediately followed, called only from here.
(WebCore::DOMWindow::dispatchMessageEventWithOriginCheck): Deleted.
(WebCore::DOMWindow::print): Pass a reference.
(WebCore::DOMWindow::alert): Ditto.
(WebCore::DOMWindow::confirm): Ditto.
(WebCore::DOMWindow::prompt): Ditto.
(WebCore::DOMWindow::setStatus): Ditto.
(WebCore::DOMWindow::setDefaultStatus): Ditto.
(WebCore::DOMWindow::moveBy): Ditto.
(WebCore::DOMWindow::moveTo): Ditto.
(WebCore::DOMWindow::resizeBy): Ditto.
(WebCore::DOMWindow::resizeTo): Ditto.
(WebCore::DOMWindow::clearTimeout): Ditto.
(WebCore::DOMWindow::incrementScrollEventListenersCount): Ditto.
(WebCore::DOMWindow::decrementScrollEventListenersCount): Ditto.
(WebCore::DOMWindow::showModalDialog): Ditto.

  • page/DOMWindow.h: Updated for the above. ALso made functions private

and final.

  • page/DOMWindowProperty.cpp:

(WebCore::DOMWindowProperty::DOMWindowProperty): Pass a reference.
(WebCore::DOMWindowProperty::~DOMWindowProperty): Ditto.
(WebCore::DOMWindowProperty::willDestroyGlobalObjectInCachedFrame): Ditto.
(WebCore::DOMWindowProperty::willDestroyGlobalObjectInFrame): Ditto.

  • page/DebugPageOverlays.cpp:

(WebCore::RegionOverlay::create): Return RefPtr instead of PassRefPtr.
(WebCore::RegionOverlay::~RegionOverlay): Pass a reference.
(WebCore::DebugPageOverlays::showRegionOverlay): Ditto.
(WebCore::DebugPageOverlays::hideRegionOverlay): Ditto.

  • page/DragController.cpp:

(WebCore::DragController::dragExited): Pass a reference.
(WebCore::DragController::performDragOperation): Ditto.
(WebCore::DragController::concludeEditDrag): Ditto.
(WebCore::DragController::tryDHTMLDrag): Ditto.

  • page/EventHandler.cpp: Replaced OptionalCursor with std::optional<Cursor>.

(WebCore::EventHandler::updateCursor): Refactor into two functions so we
can share more code with selectCursor.
(WebCore::EventHandler::selectCursor): Updated to use std::optional.
(WebCore::EventHandler::handleMouseMoveEvent): Use the new updateCursor.
(WebCore::EventHandler::startPanScrolling): Use a reference.
(WebCore::EventHandler::updateDragAndDrop): Ditto.
(WebCore::EventHandler::cancelDragAndDrop): Ditto.
(WebCore::EventHandler::performDragAndDrop): Ditto.
(WebCore::EventHandler::setCapturingMouseEventsElement): Take a raw pointer
instead of a PassRefPtr.
(WebCore::EventHandler::dispatchMouseEvent): Use a reference.
(WebCore::EventHandler::updateDragStateAfterEditDragIfNeeded): Ditto.
(WebCore::EventHandler::isKeyboardOptionTab): Ditto.
(WebCore::EventHandler::eventInvertsTabsToLinksClientCallResult): Ditto.
(WebCore::EventHandler::tabsToLinks): Ditto.

  • page/EventHandler.h: Updated for the above.
  • page/FocusController.cpp:

(WebCore::FocusController::setFocusedFrame): Take pointer instead
of PassRefPtr.
(WebCore::FocusController::setFocusedElement): Take reference instead of
PassRefPtr.

  • page/FocusController.h: Updated for the above changes.
  • page/FrameTree.cpp:

(WebCore::FrameTree::transferChild): Deleted. Unused function.
(WebCore::FrameTree::appendChild): Merged with the following function
since it's now only used here. Take reference instead of PassRefPtr.
(WebCore::FrameTree::actuallyAppendChild): Deleted.
(WebCore::FrameTree::removeChild): Take reference instead of pointer.
Use move instead of trickier swap.

  • page/FrameTree.h: Updated for the above.
  • page/FrameView.cpp:

(WebCore::FrameView::setContentsSize): Use a reference.

  • page/MainFrame.cpp:

(WebCore::MainFrame::dropChildren): Ditto.

  • page/Page.cpp:

(WebCore::Page::scrollingCoordinator): Ditto.

  • page/PageOverlay.cpp:

(WebCore::PageOverlay::fadeAnimationTimerFired): Ditto.

  • page/PageOverlayController.cpp:

(WebCore::PageOverlayController::installPageOverlay): Take reference
instead of PassRefPtr.
(WebCore::PageOverlayController::uninstallPageOverlay): Take reference
intead of pointer.

  • page/PageOverlayController.h: Updated for the above.
  • page/PageSerializer.cpp:

(WebCore::PageSerializer::PageSerializer): Moved most initialization to the
class definition.
(WebCore::PageSerializer::serialize): Use reference.
(WebCore::PageSerializer::serializeFrame): Use initializer list instead of
constructor for resource.
(WebCore::PageSerializer::serializeCSSStyleSheet): Ditto.
(WebCore::PageSerializer::addImageToResources): Ditto.

  • page/PageSerializer.h: Removed constructors from PageSerializer::Resource

struct since structures don't really need them. Updated for the above.
Changed SerializerMarkupAccumulator into a nested class.

  • page/PerformanceEntry.h:

(WebCore::PerformanceEntry::startTimeCompareLessThan): Use const RefPtr&
instead of PassRefPtr to compare RefPtr in place.

  • page/PerformanceUserTiming.cpp:

(WebCore::insertPerformanceEntry): Take Ref&& instead of PassRefPtr.

  • page/ResourceUsageOverlay.cpp:

(WebCore::ResourceUsageOverlay::~ResourceUsageOverlay): Use refrence.
(WebCore::ResourceUsageOverlay::initialize): Ditto.

  • page/animation/AnimationBase.h: Removed unneeded include.
  • page/animation/AnimationController.cpp:

(WebCore::AnimationControllerPrivate::clear): Use reference.
(WebCore::AnimationControllerPrivate::fireEventsAndUpdateStyle): Ditto.
(WebCore::AnimationControllerPrivate::addEventToDispatch): Use the
append function instead of a hand-written alternative.
(WebCore::AnimationControllerPrivate::addElementChangeToDispatch):
Take a reference rather than a Ref&& since no caller is passing ownership.

  • page/animation/AnimationControllerPrivate.h: Updated for the above.
  • page/animation/CSSPropertyAnimation.cpp:

(WebCore::blendFunc): Return RefPtr instead of PassRefPtr.
(WebCore::blendFilter): Ditto.
(WebCore::crossfadeBlend): Ditto.

  • page/animation/CompositeAnimation.cpp:

(WebCore::CompositeAnimation::updateTransitions): Updated to use
animationForProperty, which returns a raw pointer.
(WebCore::CompositeAnimation::animationForProperty): Renamed from
getAnimationForProperty and changed to return raw pointer instead
of PassRefPtr.

  • page/animation/CompositeAnimation.h: Updated for the above.
  • page/animation/ImplicitAnimation.cpp:

(WebCore::ImplicitAnimation::onAnimationEnd): Use animationForProperty.
(WebCore::ImplicitAnimation::sendTransitionEvent): Pass reference.

  • page/animation/KeyframeAnimation.cpp:

(WebCore::KeyframeAnimation::sendAnimationEvent): Ditto.

  • page/efl/EventHandlerEfl.cpp:

(WebCore::EventHandler::tabsToAllFormControls): Take reference.
(WebCore::EventHandler::createDraggingDataTransfer): Return Ref.

  • page/gtk/EventHandlerGtk.cpp:

(WebCore::EventHandler::tabsToAllFormControls): Ditto.
(WebCore::EventHandler::createDraggingDataTransfer): Ditto.

  • page/ios/EventHandlerIOS.mm:

(WebCore::EventHandler::tabsToAllFormControls): Ditto.

  • page/mac/EventHandlerMac.mm:

(WebCore::EventHandler::createDraggingDataTransfer): Ditto.
(WebCore::EventHandler::tabsToAllFormControls): Ditto.
(WebCore::EventHandler::platformPrepareForWheelEvents): Ditto.

  • page/mac/ServicesOverlayController.h: Take Ref&& for ranges instead

of PassRefPtr. Use references.

  • page/mac/ServicesOverlayController.mm:

(WebCore::ServicesOverlayController::Highlight::createForSelection): Ditto.
(WebCore::ServicesOverlayController::Highlight::createForTelephoneNumber): Ditto.
(WebCore::ServicesOverlayController::Highlight::Highlight): Ditto.
(WebCore::ServicesOverlayController::buildPotentialHighlightsIfNeeded): Ditto.
(WebCore::ServicesOverlayController::buildPhoneNumberHighlights): Ditto.
(WebCore::ServicesOverlayController::buildSelectionHighlight): Ditto.
(WebCore::ServicesOverlayController::highlightsAreEquivalent): Ditto.
(WebCore::ServicesOverlayController::findTelephoneNumberHighlightContainingSelectionHighlight): Ditto.
(WebCore::ServicesOverlayController::handleClick): Ditto.

  • page/mac/TextIndicatorWindow.mm:

(-[WebTextIndicatorView initWithFrame:textIndicator:margin:offset:]):
Take a reference instead of PassRefPtr.
(WebCore::TextIndicatorWindow::setTextIndicator): Updated for the above.

  • page/scrolling/AsyncScrollingCoordinator.h: Use Ref&& and RefPtr intead

of PsasRefPtr.

  • page/scrolling/ScrollLatchingState.cpp:

(WebCore::ScrollLatchingState::ScrollLatchingState): Initialize data members
in class definition.
(WebCore::ScrollLatchingState::setWheelEventElement): Use raw pointer instead
of PassRefPtr.
(WebCore::ScrollLatchingState::setPreviousWheelScrolledElement): Use raw
pointer instead of RefPtr&&.
(WebCore::ScrollLatchingState::setScrollableContainer): Use raw pointer instead
of PassRefPtr.

  • page/scrolling/ScrollLatchingState.h: Updated for the above.
  • page/scrolling/ScrollingStateNode.cpp:

(WebCore::ScrollingStateNode::cloneAndReset): Use Ref instead of PassRefPtr.
(WebCore::ScrollingStateNode::appendChild): Use Ref&& instead of PassRefPtr.

  • page/scrolling/ScrollingStateNode.h: Updated for the above.
  • page/scrolling/ScrollingStateTree.cpp:

(WebCore::ScrollingStateTree::createNode): Use Ref instead of PassRefPtr.
(WebCore::ScrollingStateTree::attachNode): Updated for the abve.
(WebCore::ScrollingStateTree::commit): Ditto.

  • page/scrolling/ScrollingStateTree.h: Ditto.
  • page/scrolling/ScrollingTree.cpp:

(WebCore::ScrollingTree::updateTreeFromStateNode): Use reference.

  • page/scrolling/ScrollingTree.h: Return Ref instead of PassRefPtr.
  • page/scrolling/ScrollingTreeNode.cpp:

(WebCore::ScrollingTreeNode::appendChild): Take Ref&& instead of PassRefPtr.
(WebCore::ScrollingTreeNode::removeChild): Take reference instead of pointer.

  • page/scrolling/ScrollingTreeNode.h: Updated for the above.
  • page/scrolling/ThreadedScrollingTree.cpp:

(WebCore::ThreadedScrollingTree::ThreadedScrollingTree): Take reference
instead of pointer.

  • page/scrolling/ThreadedScrollingTree.h: Updated for the above.
  • page/scrolling/ios/ScrollingCoordinatorIOS.mm:

(WebCore::ScrollingCoordinatorIOS::ScrollingCoordinatorIOS): Pass reference.

  • page/scrolling/ios/ScrollingTreeIOS.cpp:

(WebCore::ScrollingTreeIOS::create): Take a reference.
(WebCore::ScrollingTreeIOS::ScrollingTreeIOS): Ditto.
(WebCore::ScrollingTreeIOS::createScrollingTreeNode): Return Ref instead of
PassRefPtr.

  • page/scrolling/ios/ScrollingTreeIOS.h: Updated for the above.
  • page/scrolling/mac/ScrollingCoordinatorMac.mm:

(WebCore::ScrollingCoordinatorMac::ScrollingCoordinatorMac): Use reference.

  • page/scrolling/mac/ScrollingTreeMac.cpp:

(ScrollingTreeMac::create): Take a reference.
(ScrollingTreeMac::ScrollingTreeMac): Ditto.
(ScrollingTreeMac::createScrollingTreeNode): Return a Ref instead of a
PassRefPtr.

  • page/scrolling/mac/ScrollingTreeMac.h: Updated for the above.
  • page/win/EventHandlerWin.cpp:

(WebCore::EventHandler::tabsToAllFormControls): Take reference.
(WebCore::EventHandler::createDraggingDataTransfer): Return Ref.

  • platform/Cursor.h: Rearranged the header a bit. Got rid of the explicit

copy constructor, assignment operator, and destructor. Using the ones
that the compiler automatically generates will work for all platforms and
we then also get move constructor and move assignment operator.

  • platform/efl/CursorEfl.cpp:

(WebCore::Cursor::Cursor): Deleted.
(WebCore::Cursor::~Cursor): Deleted.
(WebCore::Cursor::operator=): Deleted.

  • platform/gtk/CursorGtk.cpp:

(WebCore::Cursor::Cursor): Deleted.
(WebCore::Cursor::operator=): Deleted.
(WebCore::Cursor::~Cursor): Deleted.

  • platform/mac/CursorMac.mm:

(WebCore::Cursor::Cursor): Deleted.
(WebCore::Cursor::operator=): Deleted.
(WebCore::Cursor::~Cursor): Deleted.

  • platform/win/CursorWin.cpp:

(WebCore::SharedCursor::SharedCursor): Moved this here from the header
since it is only used within this file.
(WebCore::SharedCursor::create): Ditto.
(WebCore::Cursor::Cursor): Deleted.
(WebCore::Cursor::operator=): Deleted.
(WebCore::Cursor::~Cursor): Deleted.

  • rendering/RenderEmbeddedObject.cpp:

(WebCore::RenderEmbeddedObject::handleUnavailablePluginIndicatorEvent):
Pass reference.

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::RenderLayerBacking): Get to FrameView
through the render tree itself, rather than through the frame.

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::updateLayerForHeader): Use reference.
(WebCore::RenderLayerCompositor::updateLayerForFooter): Ditto.
(WebCore::RenderLayerCompositor::attachRootLayer): Ditto.
(WebCore::RenderLayerCompositor::detachRootLayer): Ditto.

  • rendering/RenderMenuList.cpp:

(RenderMenuList::showPopup): Ditto.

  • rendering/RenderSearchField.cpp:

(WebCore::RenderSearchField::addSearchResult): Ditto.
(WebCore::RenderSearchField::showPopup): Ditto.
(WebCore::RenderSearchField::valueChanged): Ditto.

  • svg/SVGAElement.cpp:

(WebCore::SVGAElement::isKeyboardFocusable): Ditto.

  • testing/MockPageOverlayClient.cpp:

(WebCore::MockPageOverlayClient::installOverlay): Ditto.
(WebCore::MockPageOverlayClient::uninstallAllOverlays): Ditto.

Source/WebKit/ios:

  • WebCoreSupport/WebChromeClientIOS.h: Update for changes to ChromeClient.
  • WebCoreSupport/WebChromeClientIOS.mm:

(WebChromeClientIOS::runJavaScriptAlert): Ditto.
(WebChromeClientIOS::runJavaScriptConfirm): Ditto.
(WebChromeClientIOS::runJavaScriptPrompt): Ditto.
(WebChromeClientIOS::setNeedsScrollNotifications): Ditto.
(WebChromeClientIOS::observedContentChange): Ditto.
(WebChromeClientIOS::clearContentChangeObservers): Ditto.
(WebChromeClientIOS::notifyRevealedSelectionByScrollingFrame): Ditto.
(WebChromeClientIOS::elementDidFocus): Ditto.
(WebChromeClientIOS::elementDidBlur): Ditto.
(WebChromeClientIOS::createPopupMenu): Ditto.
(WebChromeClientIOS::createSearchPopupMenu): Ditto.
(WebChromeClientIOS::attachRootGraphicsLayer): Ditto.

Source/WebKit/mac:

  • WebCoreSupport/WebApplicationCacheQuotaManager.mm:

(-[WebApplicationCacheQuotaManager quota]): Pass reference.

  • WebCoreSupport/WebChromeClient.h: Updated for changes to ChromeClient.
  • WebCoreSupport/WebChromeClient.mm:

(WebChromeClient::focusedElementChanged): Ditto.
(WebChromeClient::createWindow): Ditto.
(WebChromeClient::runBeforeUnloadConfirmPanel): Ditto.
(WebChromeClient::runJavaScriptAlert): Ditto.
(WebChromeClient::runJavaScriptConfirm): Ditto.
(WebChromeClient::runJavaScriptPrompt): Ditto.
(WebChromeClient::contentsSizeChanged): Ditto.
(WebChromeClient::unavailablePluginButtonClicked): Ditto.
(WebChromeClient::print): Ditto.
(WebChromeClient::exceededDatabaseQuota): Ditto.
(WebChromeClient::reachedApplicationCacheOriginQuota): Ditto.
(WebChromeClient::createColorChooser): Ditto.
(WebChromeClient::elementDidFocus): Ditto.
(WebChromeClient::elementDidBlur): Ditto.
(WebChromeClient::createPopupMenu): Ditto.
(WebChromeClient::createSearchPopupMenu): Ditto.
(WebChromeClient::attachRootGraphicsLayer): Ditto.
(WebChromeClient::attachViewOverlayGraphicsLayer): Ditto.
(WebChromeClient::supportsFullScreenForElement): Ditto.
(WebChromeClient::enterFullScreenForElement): Ditto.
(WebChromeClient::exitFullScreenForElement): Ditto.

  • WebView/WebFrame.mm:

(+[WebFrame _createFrameWithPage:frameName:frameView:ownerElement:]):
Updated for change to the appendChild function.

Source/WebKit/win:

  • Plugins/PluginView.cpp:

(WebCore::PluginView::status): Pass reference.
(WebCore::PluginView::focusPluginElement): Ditto.

  • WebCoreSupport/WebChromeClient.cpp:

(WebChromeClient::createWindow): Updated for change to ChromeClient.
(WebChromeClient::runBeforeUnloadConfirmPanel): Ditto.
(WebChromeClient::runJavaScriptAlert): Ditto.
(WebChromeClient::runJavaScriptConfirm): Ditto.
(WebChromeClient::runJavaScriptPrompt): Ditto.
(WebChromeClient::contentsSizeChanged): Ditto.
(WebChromeClient::unavailablePluginButtonClicked): Ditto.
(WebChromeClient::print): Ditto.
(WebChromeClient::exceededDatabaseQuota): Ditto.
(WebChromeClient::reachedApplicationCacheOriginQuota): Ditto.
(WebChromeClient::attachRootGraphicsLayer): Ditto.
(WebChromeClient::attachViewOverlayGraphicsLayer): Ditto.
(WebChromeClient::enterVideoFullscreenForVideoElement): Ditto.
(WebChromeClient::createPopupMenu): Ditto.
(WebChromeClient::createSearchPopupMenu): Ditto.
(WebChromeClient::supportsFullScreenForElement): Ditto.
(WebChromeClient::enterFullScreenForElement): Ditto.
(WebChromeClient::exitFullScreenForElement): Ditto.
(WebChromeClient::shouldUseTiledBackingForFrameView): Ditto.

  • WebCoreSupport/WebChromeClient.h: Ditto.

Source/WebKit2:

  • UIProcess/Scrolling/RemoteScrollingTree.cpp:

(WebKit::RemoteScrollingTree::createScrollingTreeNode): Return a Ref
instead of PassRefPtr.

  • UIProcess/Scrolling/RemoteScrollingTree.h: Updated for the above.
  • WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:

(WKBundlePageInstallPageOverlay): Pass a reference.
(WKBundlePageUninstallPageOverlay): Ditto.
(WKBundlePageInstallPageOverlayWithAnimation): Ditto.
(WKBundlePageUninstallPageOverlayWithAnimation): Ditto.

  • WebProcess/Plugins/PDF/DeprecatedPDFPlugin.mm:

(WebKit::PDFPlugin::jsPDFDocPrint): Ditto.

  • WebProcess/Plugins/PluginView.cpp:

(WebKit::PluginView::focusPluginElement): Ditto.
(WebKit::PluginView::setStatusbarText): Ditto.

  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::elementDidFocus): Updated for changes to ChromeClient.
(WebKit::WebChromeClient::elementDidBlur): Ditto.
(WebKit::WebChromeClient::makeFirstResponder): Ditto.
(WebKit::WebChromeClient::createWindow): Ditto.
(WebKit::WebChromeClient::runBeforeUnloadConfirmPanel): Ditto.
(WebKit::WebChromeClient::runJavaScriptAlert): Ditto.
(WebKit::WebChromeClient::runJavaScriptConfirm): Ditto.
(WebKit::WebChromeClient::runJavaScriptPrompt): Ditto.
(WebKit::WebChromeClient::contentsSizeChanged): Ditto.
(WebKit::WebChromeClient::unavailablePluginButtonClicked): Ditto.
(WebKit::WebChromeClient::print): Ditto.
(WebKit::WebChromeClient::exceededDatabaseQuota): Ditto.
(WebKit::WebChromeClient::reachedApplicationCacheOriginQuota): Ditto.
(WebKit::WebChromeClient::createColorChooser): Ditto.
(WebKit::WebChromeClient::createPopupMenu): Ditto.
(WebKit::WebChromeClient::createSearchPopupMenu): Ditto.
(WebKit::WebChromeClient::attachRootGraphicsLayer): Ditto.
(WebKit::WebChromeClient::attachViewOverlayGraphicsLayer): Ditto.
(WebKit::WebChromeClient::createScrollingCoordinator): Ditto.
(WebKit::WebChromeClient::supportsFullScreenForElement): Ditto.
(WebKit::WebChromeClient::enterFullScreenForElement): Ditto.
(WebKit::WebChromeClient::exitFullScreenForElement): Ditto.
(WebKit::WebChromeClient::didAddHeaderLayer): Ditto.
(WebKit::WebChromeClient::didAddFooterLayer): Ditto.
(WebKit::WebChromeClient::shouldUseTiledBackingForFrameView): Ditto.

  • WebProcess/WebCoreSupport/WebChromeClient.h: Ditto.
  • WebProcess/WebCoreSupport/ios/WebChromeClientIOS.mm:

(WebKit::WebChromeClient::elementDidRefocus): Ditto.
(WebKit::WebChromeClient::didReceiveMobileDocType): Ditto.
(WebKit::WebChromeClient::observedContentChange): Ditto.
(WebKit::WebChromeClient::clearContentChangeObservers): Ditto.
(WebKit::WebChromeClient::notifyRevealedSelectionByScrollingFrame): Ditto.

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::dispatchCreatePage): Pass reference.

  • WebProcess/WebCoreSupport/WebInspectorClient.cpp:

(WebKit::WebInspectorClient::~WebInspectorClient): Ditto.
(WebKit::WebInspectorClient::hideHighlight): Ditto.
(WebKit::WebInspectorClient::showPaintRect): Ditto.

  • WebProcess/WebPage/FindController.cpp:

(WebKit::FindController::updateFindUIAfterPageScroll): Ditto.
(WebKit::FindController::hideFindUI): Ditto.

  • WebProcess/WebPage/WebFrame.cpp:

(WebKit::WebFrame::createWithCoreMainFrame): Return Ref instead of
PassRefPtr.
(WebKit::WebFrame::createSubframe): Ditto.
(WebKit::WebFrame::create): Ditto.

  • WebProcess/WebPage/WebFrame.h: Updated for the above.
  • WebProcess/WebPage/WebInspector.cpp:

(WebKit::WebInspector::openInNewTab): Pass reference.

  • WebProcess/WebPage/ios/FindControllerIOS.mm:

(WebKit::FindController::updateFindIndicator): Use reference.
(WebKit::FindController::hideFindIndicator): Ditto.

10:21 PM Changeset in webkit [211032] by Joseph Pecoraro
  • 2 edits in trunk/LayoutTests

Rebaseline WebKit1 results after r211006.

Unreviewed test gardening.

  • platform/mac-wk1/js/dom/global-constructors-attributes-expected.txt:
9:13 PM Changeset in webkit [211031] by bshafiei@apple.com
  • 5 edits in tags/Safari-604.1.4.2/Source

Versioning.

9:09 PM Changeset in webkit [211030] by bshafiei@apple.com
  • 1 copy in tags/Safari-604.1.4.2

New tag.

7:52 PM Changeset in webkit [211029] by mmaxfield@apple.com
  • 7 edits in trunk/Source/WebCore

[Cocoa] Unify FontPlatformData's hashing and equality operators
https://bugs.webkit.org/show_bug.cgi?id=167061

Reviewed by Darin Adler.

On iOS, we were using CFEqual() and CFHash(), while on macOS
we were using pointer hashing and pointer equality. Instead,
we should be consistent about these operators.

Right now, FontPlatformData holds two internal CTFontRefs, and
switching to these higher-level CFEqual() and CFHash()
functions is required for eliminating one of these two
internal font objects.

No new tests because there is no behavior change.

  • platform/graphics/FontPlatformData.h:

(WebCore::FontPlatformData::hash): Deleted.

  • platform/graphics/cocoa/FontPlatformDataCocoa.mm:

(WebCore::FontPlatformData::hash):
(WebCore::FontPlatformData::platformIsEqual):
(WebCore::cascadeToLastResortAttributesDictionary):

  • platform/graphics/freetype/FontPlatformDataFreeType.cpp:

(WebCore::FontPlatformData::hash):

  • platform/graphics/win/FontPlatformDataCGWin.cpp:

(WebCore::FontPlatformData::hash):

  • platform/graphics/win/FontPlatformDataCairoWin.cpp:

(WebCore::FontPlatformData::hash):

  • platform/graphics/win/FontPlatformDataDirect2D.cpp:

(WebCore::FontPlatformData::hash):

10:51 AM Changeset in webkit [211028] by dino@apple.com
  • 2 edits in trunk/Source/WebCore

[WebGL] Do not allow GPU muxing on some old Mac hardware
https://bugs.webkit.org/show_bug.cgi?id=167259
<rdar://problem/30060378>

Reviewed by Simon Fraser and Darin Adler.

Some old Macbook Pro models should never use the
integrated GPU for WebGL, because they are unstable
when swapping between that and the discrete GPU.

Unfortunately this hardware configuration isn't in our
testing infrastructure, so it was confirmed manually.
Meanwhile, our existing tests make sure this patch
doesn't break anything elsewhere.

  • platform/graphics/mac/GraphicsContext3DMac.mm:

(WebCore::attachToAppleGraphicsControl): Helper function
to get a mach port that talks to Apple's Graphics Control
system.
(WebCore::hasMuxCapability): Decides whether a system
can do live GPU switching, based on whether or not it
has a muxable GPU, and if that GPU is not the old hardware
we know is problematic.
(WebCore::hasMuxableGPU): Helper to return the static hasMuxCapability value.
(WebCore::setPixelFormat): Only request the integrated card when the
GPU is muxable.

9:24 AM Changeset in webkit [211027] by mmaxfield@apple.com
  • 29 edits
    6 copies
    20 adds
    1 delete in trunk

Introducing the Platform Abstraction Layer (PAL)
https://bugs.webkit.org/show_bug.cgi?id=143358

Reviewed by Alex Christensen.

.:

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

Source/WebCore:

In order to enforce layering and promote testability, WebCore/platform files
should be compiled in their own project. This new project can enforce layering
and can be tested with unit tests in addition to layout tests.

The name of this new project is the Platform Abstraction Layer, or "PAL."
This comprises of a new directory in WebCore which will be the destination
for files migrated from WebCore/platform. This new folder, and its associated
project, will maintain layering invariants. These invariants are enforced at
build-time by setting the #include path for PAL to not include the rest of
WebCore (which is the same layering enforcement mechanism for WTF). Files will
be migrated into this new target/directory piece-by-piece, and the migration
of a file will be performed as soon as it can be migrated without violating
layering.

Within WebCore, files should include PAL files using the convention
#include <pal/foo.h>. Symbols within PAL are placed within a new top-level
namespace, "PAL," and therefore when used should be referred to as PAL::Foo.

The first set of files to move into the new platform is the crypto/ subdirectory
because it is both simple but also includes platform-dependent files.

No new tests because there is no behavior change.

  • CMakeLists.txt:
  • Configurations/WebCore.xcconfig: Add PAL to the include path
  • PAL/Configurations/Base.xcconfig: Added.
  • PAL/Configurations/DebugRelease.xcconfig: Added.
  • PAL/Configurations/PAL.xcconfig: Added. Sets up some PAL-specific

variables.

  • PAL/Configurations/FeatureDefines.xcconfig: Added.
  • PAL/Configurations/Version.xcconfig: Added.
  • PAL/PAL.xcodeproj/project.pbxproj: Added. New project file.
  • PAL/config.h: Added. Simplified from WebCore/config.h.
  • PAL/pal/CMakeLists.txt: Added.
  • PAL/pal/PlatformEfl.cmake: Added.
  • PAL/pal/PlatformGTK.cmake: Added.
  • PAL/pal/PlatformMac.cmake: Added.
  • PAL/pal/PlatformWin.cmake: Added.
  • PAL/pal/crypto/CryptoDigest.h: Renamed from Source/WebCore/platform/crypto/CryptoDigest.h.
  • PAL/pal/crypto/commoncrypto/CryptoDigestCommonCrypto.cpp: Renamed from Source/WebCore/platform/crypto/commoncrypto/CryptoDigestCommonCrypto.cpp.
  • PAL/pal/crypto/gcrypt/CryptoDigestGCrypt.cpp: Renamed from Source/WebCore/platform/crypto/gcrypt/CryptoDigestGCrypt.cpp.
  • PAL/pal/crypto/gnutls/CryptoDigestGnuTLS.cpp: Renamed from Source/WebCore/platform/crypto/gnutls/CryptoDigestGnuTLS.cpp.
  • PAL/pal/crypto/win/CryptoDigestWin.cpp: Renamed from Source/WebCore/platform/crypto/win/CryptoDigestWin.cpp.
  • PlatformEfl.cmake:
  • PlatformGTK.cmake:
  • PlatformMac.cmake:
  • PlatformWin.cmake:
  • WebCore.xcodeproj/project.pbxproj: Create a project link so WebCore

knows that it needs to build PAL as a dependency.

  • crypto/algorithms/CryptoAlgorithmSHA1.cpp:

(WebCore::CryptoAlgorithmSHA1::digest): Update #include and namespace.

  • crypto/algorithms/CryptoAlgorithmSHA224.cpp:

(WebCore::CryptoAlgorithmSHA224::digest): Ditto.

  • crypto/algorithms/CryptoAlgorithmSHA256.cpp:

(WebCore::CryptoAlgorithmSHA256::digest): Ditto.

  • crypto/algorithms/CryptoAlgorithmSHA384.cpp:

(WebCore::CryptoAlgorithmSHA384::digest): Ditto.

  • crypto/algorithms/CryptoAlgorithmSHA512.cpp:

(WebCore::CryptoAlgorithmSHA512::digest): Ditto.

  • crypto/mac/CryptoAlgorithmRSASSA_PKCS1_v1_5Mac.cpp:

(WebCore::cryptoDigestAlgorithm): Ditto.
(WebCore::signRSASSA_PKCS1_v1_5): Ditto.
(WebCore::verifyRSASSA_PKCS1_v1_5): Ditto.

  • inspector/InspectorDOMAgent.cpp:

(WebCore::computeContentSecurityPolicySHA256Hash): Ditto.

  • page/csp/ContentSecurityPolicy.cpp:

(WebCore::toCryptoDigestAlgorithm): Ditto.
(WebCore::ContentSecurityPolicy::findHashOfContentInPolicies): Ditto.

  • platform/network/soup/SoupNetworkSession.cpp:

(WebCore::HostTLSCertificateSet::computeCertificateHash): Ditto.

12:29 AM Changeset in webkit [211026] by zandobersek@gmail.com
  • 2 edits in trunk/Source/WebCore

[GStreamer] Clear out m_appsinkCaps in AppendPipeline::appsinkCapsChanged() before using outPtr()
https://bugs.webkit.org/show_bug.cgi?id=167165

Reviewed by Carlos Garcia Campos.

  • platform/graphics/gstreamer/mse/AppendPipeline.cpp:

(WebCore::AppendPipeline::appsinkCapsChanged): Replace the gst_caps_replace() call
with a simple comparison and, in case the current appsink caps differ from the caps
on the sink's pad, move the reference to the latter into the m_appsinkCaps member
variable. This removes the use of GRefPtr<>::outPtr() which asserted in debug
configurations in the case of m_appsinkCaps not being null.

Note: See TracTimeline for information about the timeline view.