WebKit-https.git
12 months agoUnreviewed, rolling out r236558.
ryanhaddad@apple.com [Thu, 27 Sep 2018 17:50:34 +0000 (17:50 +0000)]
Unreviewed, rolling out r236558.
https://bugs.webkit.org/show_bug.cgi?id=190044

 236557  Broke internal builds (Requested by ryanhaddad on
#webkit).

Reverted changeset:

"Unreviewed build fix, remove *.o files that were committed in
r236557."
https://trac.webkit.org/changeset/236558

Patch by Commit Queue <commit-queue@webkit.org> on 2018-09-27

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236559 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoUnreviewed build fix, remove *.o files that were committed in r236557.
ryanhaddad@apple.com [Thu, 27 Sep 2018 17:42:54 +0000 (17:42 +0000)]
Unreviewed build fix, remove *.o files that were committed in r236557.

* Source/third_party/libvpx/source/libvpx/vp8/common/x86/copy_sse2.asm.o: Removed.
* Source/third_party/libvpx/source/libvpx/vp8/common/x86/copy_sse3.asm.o: Removed.
* Source/third_party/libvpx/source/libvpx/vp8/common/x86/dequantize_mmx.asm.o: Removed.
* Source/third_party/libvpx/source/libvpx/vp8/common/x86/idctllm_mmx.asm.o: Removed.
* Source/third_party/libvpx/source/libvpx/vp8/common/x86/idctllm_sse2.asm.o: Removed.
* Source/third_party/libvpx/source/libvpx/vp8/common/x86/iwalsh_sse2.asm.o: Removed.
* Source/third_party/libvpx/source/libvpx/vp8/common/x86/loopfilter_block_sse2_x86_64.asm.o: Removed.
* Source/third_party/libvpx/source/libvpx/vp8/common/x86/loopfilter_sse2.asm.o: Removed.
* Source/third_party/libvpx/source/libvpx/vp8/common/x86/mfqe_sse2.asm.o: Removed.
* Source/third_party/libvpx/source/libvpx/vp8/common/x86/recon_mmx.asm.o: Removed.
* Source/third_party/libvpx/source/libvpx/vp8/common/x86/recon_sse2.asm.o: Removed.
* Source/third_party/libvpx/source/libvpx/vp8/common/x86/subpixel_mmx.asm.o: Removed.
* Source/third_party/libvpx/source/libvpx/vp8/common/x86/subpixel_sse2.asm.o: Removed.
* Source/third_party/libvpx/source/libvpx/vp8/common/x86/subpixel_ssse3.asm.o: Removed.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236558 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoAdd VP8 support to WebRTC
youenn@apple.com [Thu, 27 Sep 2018 17:16:47 +0000 (17:16 +0000)]
Add VP8 support to WebRTC
https://bugs.webkit.org/show_bug.cgi?id=189976

Reviewed by Eric Carlson.

LayoutTests/imported/w3c:

* web-platform-tests/webrtc/RTCPeerConnection-addIceCandidate-expected.txt:

Source/ThirdParty/libwebrtc:

Add support for conditional VP8 support for both encoding and decoding.
This boolean is used by WebCore based on the new VP8 runtime flag.

Compilation is done without using SSE4/AVX2 optimizations.

* Configurations/libvpx.xcconfig: Added.
* Configurations/libwebrtc.iOS.exp:
* Configurations/libwebrtc.iOSsim.exp:
* Configurations/libwebrtc.mac.exp:
* Configurations/libwebrtc.xcconfig:
* Configurations/libwebrtcpcrtc.xcconfig:
* Source/third_party/libvpx/run_yasm_webkit.py: Added.
* Source/third_party/libvpx/source/config/mac/x64/vpx_config.asm:
* Source/third_party/libvpx/source/config/mac/x64/vpx_config.h:
* Source/third_party/libvpx/source/config/mac/x64/vpx_dsp_rtcd.h:
* Source/webrtc/sdk/WebKit/WebKitUtilities.h:
* Source/webrtc/sdk/WebKit/WebKitUtilities.mm:
(webrtc::createWebKitEncoderFactory):
(webrtc::createWebKitDecoderFactory):
* Source/webrtc/sdk/objc/Framework/Headers/WebRTC/RTCVideoCodecFactory.h:
* libwebrtc.xcodeproj/project.pbxproj:

Source/WebCore:

Add a runtime flag to control activation of VP8 codec.
Bind this runtime flag to the video codec factories.
Test: webrtc/video-mute-vp8.html

* Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:
(WebCore::createLibWebRTCPeerConnectionBackend):
* page/RuntimeEnabledFeatures.h:
(WebCore::RuntimeEnabledFeatures::webRTCVP8CodecEnabled const):
(WebCore::RuntimeEnabledFeatures::setWebRTCVP8CodecEnabled):
* platform/mediastream/libwebrtc/LibWebRTCProvider.h:
* platform/mediastream/libwebrtc/LibWebRTCProviderCocoa.cpp:
(WebCore::LibWebRTCProviderCocoa::createDecoderFactory):
(WebCore::LibWebRTCProviderCocoa::createEncoderFactory):
* testing/Internals.cpp:
(WebCore::Internals::resetToConsistentState):
Enable VP8 codec for tests.

Source/WebKit:

* Shared/WebPreferences.yaml:

LayoutTests:

* webrtc/audio-peer-connection-g722.html:
* webrtc/routines.js:
* webrtc/video-mute-vp8-expected.txt: Added.
* webrtc/video-mute-vp8.html: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236557 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoCrash under WebCore::deleteCookiesForHostnames()
cdumez@apple.com [Thu, 27 Sep 2018 17:06:26 +0000 (17:06 +0000)]
Crash under WebCore::deleteCookiesForHostnames()
https://bugs.webkit.org/show_bug.cgi?id=190040
<rdar://problem/38020368>

Reviewed by Alex Christensen.

Update NetworkStorageSession::deleteCookiesForHostnames() to properly deal with the fact
that NSHTTPCookie.domain can return nil.

* platform/network/cocoa/NetworkStorageSessionCocoa.mm:
(WebCore::NetworkStorageSession::deleteCookiesForHostnames):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236556 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoLayoutTest webrtc/video-unmute.html is a flaky timeout
youenn@apple.com [Thu, 27 Sep 2018 17:03:45 +0000 (17:03 +0000)]
LayoutTest webrtc/video-unmute.html is a flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=172879
<rdar://problem/32548738>

Reviewed by Eric Carlson.

* platform/ios-wk2/TestExpectations:
* platform/mac-wk2/TestExpectations:
* webrtc/video-unmute.html:
Resort on routines.js black frame routine.
Reenable test in mac and ios.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236555 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoJITMathIC should not use integer offsets into machine code.
mark.lam@apple.com [Thu, 27 Sep 2018 16:58:25 +0000 (16:58 +0000)]
JITMathIC should not use integer offsets into machine code.
https://bugs.webkit.org/show_bug.cgi?id=190030
<rdar://problem/44803307>

Reviewed by Saam Barati.

We'll replace them with CodeLocation smart pointers instead.

* jit/JITMathIC.h:
(JSC::isProfileEmpty):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236554 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoUse kCVPixelFormatType_420YpCbCr8Planar for capturing frames
youenn@apple.com [Thu, 27 Sep 2018 16:45:24 +0000 (16:45 +0000)]
Use kCVPixelFormatType_420YpCbCr8Planar for capturing frames
https://bugs.webkit.org/show_bug.cgi?id=190014

Reviewed by Eric Carlson.

On Mac, rely on the monoplanar format which can be displayed without any issue.
Once rendering is fixed, we should change it back to biplanar as it is closer to what libwebrtc consumes.
Covered by manual testing.

* platform/mediastream/mac/AVVideoCaptureSource.mm:
(WebCore::avVideoCapturePixelBufferFormat):
(WebCore::AVVideoCaptureSource::setSizeAndFrameRateWithPreset):
(WebCore::AVVideoCaptureSource::setupCaptureSession):
(WebCore::AVVideoCaptureSource::captureOutputDidOutputSampleBufferFromConnection):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236553 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months ago[Apple Pay] Support granular errors in PaymentDetailsUpdate
aestes@apple.com [Thu, 27 Sep 2018 16:44:49 +0000 (16:44 +0000)]
[Apple Pay] Support granular errors in PaymentDetailsUpdate
https://bugs.webkit.org/show_bug.cgi?id=189938

Reviewed by Youenn Fablet.

Source/WebCore:

Implemented the shippingAddressErrors, payerErrors, and paymentMethodErrors properties on
PaymentDetailsUpdate, as specified in the Payment Request API W3C Editor's Draft of
26 September 2018.

When these errors are specified in a PaymentDetailsUpdate, map them to PaymentErrors. For
shippingAddressErrors and payerErrors, we use the "shippingContactInvalid" code and a
contact field that matches the shippingAddressError or payerError property specified.

For paymentMethodErrors, we interpret this as a sequence of ApplePayErrors, which are
converted to PaymentErrors as in Apple Pay JS.

Tests: http/tests/ssl/applepay/ApplePayShippingAddressChangeEventErrors.https.html
       http/tests/ssl/applepay/ApplePayShippingAddressChangeEventErrorsV3.https.html

* DerivedSources.make: Removed some tabs and added new .idl files.
* Modules/applepay/ApplePayError.idl: Moved ApplePayErrorCode and ApplePayErrorContactField
into their own .idl files so they can be used in MockPaymentError.
* Modules/applepay/ApplePayErrorCode.h: Added.
* Modules/applepay/ApplePayErrorCode.idl: Added.
* Modules/applepay/ApplePayErrorContactField.h: Added.
* Modules/applepay/ApplePayErrorContactField.idl: Added.

* Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp:
(WebCore::appendShippingContactInvalidError): Appended a "shippingContactInvalid"
PaymentError to errors if the message is non-null.
(WebCore::ApplePayPaymentHandler::computeErrors const):
(WebCore::ApplePayPaymentHandler::detailsUpdated):
(WebCore::ApplePayPaymentHandler::shippingAddressUpdated): Computed a vector of PaymentErrors
based on shippingAddressErrors, payerErrors, and paymentMethodErrors.

* Modules/applepay/paymentrequest/ApplePayPaymentHandler.h:

* Modules/paymentrequest/PaymentDetailsUpdate.h:
* Modules/paymentrequest/PaymentDetailsUpdate.idl: Defined shippingAddressErrors,
payerErrors, and paymentMethodErrors.

* Modules/paymentrequest/PaymentHandler.h:
* Modules/paymentrequest/PaymentRequest.cpp:
(WebCore::PaymentRequest::paymentMethodChanged):
(WebCore::PaymentRequest::settleDetailsPromise): Passed shippingAddressErrors, payerErrors,
and paymentMethodErrors to the payment handler.

* SourcesCocoa.txt:
* WebCore.xcodeproj/project.pbxproj:

* testing/MockPaymentCoordinator.cpp:
(WebCore::MockPaymentCoordinator::completeShippingContactSelection): Stored errors in m_errors.
* testing/MockPaymentCoordinator.h:
* testing/MockPaymentCoordinator.idl: Added an errors attribute.

* testing/MockPaymentError.h: Added.
* testing/MockPaymentError.idl: Added.

LayoutTests:

* http/tests/resources/payment-request.js:
(validPaymentDetails):
(updateDetailsOnShippingAddressChange):
* http/tests/ssl/applepay/ApplePayShippingAddressChangeEventErrors.https-expected.txt: Added.
* http/tests/ssl/applepay/ApplePayShippingAddressChangeEventErrors.https.html: Added.
* http/tests/ssl/applepay/ApplePayShippingAddressChangeEventErrorsV3.https-expected.txt: Added.
* http/tests/ssl/applepay/ApplePayShippingAddressChangeEventErrorsV3.https.html: Added.
* platform/mac-wk2/TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236552 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoURLWithUserTypedString should return nil for URLs deemed to be invalid by WebCore...
achristensen@apple.com [Thu, 27 Sep 2018 16:34:34 +0000 (16:34 +0000)]
URLWithUserTypedString should return nil for URLs deemed to be invalid by WebCore::URL
https://bugs.webkit.org/show_bug.cgi?id=189979

Reviewed by Youenn Fablet.

Source/WebCore:

* platform/mac/WebCoreNSURLExtras.mm:
(WebCore::URLWithUserTypedString):
(WebCore::dataForURLComponentType):
(WebCore::URLByRemovingComponentAndSubsequentCharacter):
(WebCore::URLByCanonicalizingURL):
(WebCore::originalURLData):
(WebCore::userVisibleString):

Tools:

* TestWebKitAPI/Tests/WebCore/cocoa/URLExtras.mm:
(TestWebKitAPI::originalDataAsString):
(TestWebKitAPI::TEST):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236551 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agodocument.open() should not propagate URLs to non-fully active documents
cdumez@apple.com [Thu, 27 Sep 2018 16:31:53 +0000 (16:31 +0000)]
document.open() should not propagate URLs to non-fully active documents
https://bugs.webkit.org/show_bug.cgi?id=189375
<rdar://problem/44282755>

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

Rebaseline WPT test now that more checks are passing.

* web-platform-tests/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/url.window-expected.txt:

Source/WebCore:

Update our document.open() to not propagate URLs to non-fully active documents, as per:
- https://html.spec.whatwg.org/#document-open-steps (Step 11)

A "fully active" document is defined by at:
- https://html.spec.whatwg.org/#fully-active

No new tests, rebaselined existing test.

* dom/Document.cpp:
(WebCore::Document::open):
(WebCore::Document::isFullyActive const):
* dom/Document.h:
* dom/Document.idl:

LayoutTests:

Update existing test to reflect behavior change. I have verified that this test was
failing in Firefox and is now passing in Firefox.

* fast/dom/resource-locations-in-created-html-document.html:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236550 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months ago[Win][WebKit] Implement authentication dialog on MiniBrowser.
Basuke.Suzuki@sony.com [Thu, 27 Sep 2018 16:27:38 +0000 (16:27 +0000)]
[Win][WebKit] Implement authentication dialog on MiniBrowser.
https://bugs.webkit.org/show_bug.cgi?id=189846

Reviewed by Fujii Hironori.

It was implemented for WebKitLegacy, but not for WebKit.
Also added text field to display Realm information.

* MiniBrowser/win/Common.cpp:
(authDialogProc):
(askCredential):
(displayAuthDialog): Deleted.
* MiniBrowser/win/Common.h:
* MiniBrowser/win/MiniBrowserLib.rc:
* MiniBrowser/win/MiniBrowserLibResource.h:
* MiniBrowser/win/ResourceLoadDelegate.cpp:
(ResourceLoadDelegate::didReceiveAuthenticationChallenge):
* MiniBrowser/win/WebKitBrowserWindow.cpp:
(createString):
(createUTF8String):
(createWKString):
(createWKURL):
(WebKitBrowserWindow::WebKitBrowserWindow):
(WebKitBrowserWindow::didReceiveAuthenticationChallenge):
(toNullTerminatedUTF8): Deleted.
* MiniBrowser/win/WebKitBrowserWindow.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236549 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoEnable getUserMedia in mini browser
youenn@apple.com [Thu, 27 Sep 2018 16:08:49 +0000 (16:08 +0000)]
Enable getUserMedia in mini browser
https://bugs.webkit.org/show_bug.cgi?id=190012

Reviewed by Eric Carlson.

Enable MediaDevices and mock capture devices.
Grant mock devices access to any getUserMedia call.
Covered by manual testing.

* MiniBrowser/mac/AppDelegate.m:
(defaultConfiguration):
* MiniBrowser/mac/WK2BrowserWindowController.m:
(-[WK2BrowserWindowController _webView:requestUserMediaAuthorizationForDevices:url:mainFrameURL:decisionHandler:]):
(-[WK2BrowserWindowController _webView:checkUserMediaPermissionForURL:mainFrameURL:frameIdentifier:decisionHandler:]):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236548 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months ago[MSE][GStreamer] Use sentinel buffer to detect end of append
aboya@igalia.com [Thu, 27 Sep 2018 16:03:48 +0000 (16:03 +0000)]
[MSE][GStreamer] Use sentinel buffer to detect end of append
https://bugs.webkit.org/show_bug.cgi?id=189924

Reviewed by Philippe Normand.

This patch introduces a new mechanism to detect when an append has
been consumed completely by the demuxer. It takes advantage of the
fact that buffer pushing is synchronous: both the appsrc and the
demuxer live in the same streaming thread. When appsrc pushes a
buffer, it's actually making a qtdemux function call (it calls its
"chain" function). The demuxer will return from that call when it has
finished processing that buffer; only then the control returns to
appsrc, that can push the next buffer.

By pushing an additional buffer and capturing it in a probe we can
detect reliably when the previous buffer has been processed.
Because the pipeline only has one thread, at this point no more frames
can arrive to the appsink.

This replaces the old method of detecting end of append which relied
on the `need-data` event, which is more difficult to handle correctly
because it fires whenever the appsrc is empty (or below a given
level), which also happens when a buffer has not been pushed yet or
in response to a flush.

* platform/graphics/gstreamer/mse/AppendPipeline.cpp:
(WebCore::EndOfAppendMeta::init):
(WebCore::EndOfAppendMeta::transform):
(WebCore::EndOfAppendMeta::free):
(WebCore::AppendPipeline::staticInitialization):
(WebCore::AppendPipeline::AppendPipeline):
(WebCore::AppendPipeline::~AppendPipeline):
(WebCore::AppendPipeline::appsrcEndOfAppendCheckerProbe):
(WebCore::AppendPipeline::handleApplicationMessage):
(WebCore::AppendPipeline::handleEndOfAppend):
(WebCore::AppendPipeline::consumeAppsinkAvailableSamples):
(WebCore::AppendPipeline::resetPipeline):
(WebCore::AppendPipeline::pushNewBuffer):
(WebCore::AppendPipeline::handleAppsrcNeedDataReceived): Deleted.:
(WebCore::AppendPipeline::handleAppsrcAtLeastABufferLeft): Deleted.
(WebCore::AppendPipeline::checkEndOfAppend): Deleted.
(WebCore::AppendPipeline::setAppsrcDataLeavingProbe): Deleted.
(WebCore::AppendPipeline::removeAppsrcDataLeavingProbe): Deleted.
(WebCore::AppendPipeline::reportAppsrcAtLeastABufferLeft): Deleted.
(WebCore::AppendPipeline::reportAppsrcNeedDataReceived): Deleted.
(WebCore::appendPipelineAppsrcDataLeaving): Deleted.
(WebCore::appendPipelineAppsrcNeedData): Deleted.
* platform/graphics/gstreamer/mse/AppendPipeline.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236547 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoThe WebContent process should not process incoming IPC while waiting for a sync IPC...
cdumez@apple.com [Thu, 27 Sep 2018 15:57:08 +0000 (15:57 +0000)]
The WebContent process should not process incoming IPC while waiting for a sync IPC reply
https://bugs.webkit.org/show_bug.cgi?id=184183
<rdar://problem/36800576>

Reviewed by Ryosuke Niwa.

Source/WebCore:

Drop test infrastructure for the DoNotProcessIncomingMessagesWhenWaitingForSyncReply IPC::SendOption
given that this SendOption was removed from this patch.

* page/ChromeClient.h:
* testing/Internals.cpp:
* testing/Internals.h:
* testing/Internals.idl:

Source/WebKit:

In recent years, we have experienced re-entrancy bugs/crashes in WebCore due to the WebContent process
processing unrelated incoming synchronous IPC when waiting for a reply to one of its synchronous IPC
to another process. In order to deal with this, we introduced a DoNotProcessIncomingMessagesWhenWaitingForSyncReply
IPC::SendOption which we used on sendSync() calls where we knew re-entering would be unsafe. However,
it turns out to be needed for a lot of the WebProcess's sync IPC and it is error-prone. In order to
address the issue, we've decided to update the WebContent process behavior so that it processes all its
IPC in order (not matter if synchronous or not) and thus so that we never dispatch unrelated synchronous
IPC while waiting for a synchronous IPC reply, expect in cases where it would cause a deadlock.

As a result, this patch also drops support for the DoNotProcessIncomingMessagesWhenWaitingForSyncReply
IPC::SendOption which is no longer needed and has some code complexity.

* NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::NetworkConnectionToWebProcess):
* Platform/IPC/Connection.cpp:
(IPC::Connection::sendSyncMessage):
(IPC::Connection::waitForSyncReply):
* Platform/IPC/Connection.h:
(IPC::Connection::sendSync):
* PluginProcess/WebProcessConnection.cpp:
(WebKit::WebProcessConnection::WebProcessConnection):
* StorageProcess/StorageToWebProcessConnection.cpp:
(WebKit::StorageToWebProcessConnection::StorageToWebProcessConnection):
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::connectionWillOpen):
* UIProcess/WebProcessProxy.h:
* UIProcess/WebProcessProxy.messages.in:
* WebProcess/InjectedBundle/InjectedBundle.cpp:
(WebKit::InjectedBundle::postSynchronousMessage):
* WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::WebLoaderStrategy::loadResourceSynchronously):
(WebKit::WebLoaderStrategy::responseFromResourceLoadIdentifier):
(WebKit::WebLoaderStrategy::intermediateLoadInformationFromResourceLoadIdentifier):
(WebKit::WebLoaderStrategy::networkMetricsFromResourceLoadIdentifier):
* WebProcess/Plugins/PluginProxy.cpp:
(WebKit::PluginProxy::destroy):
(WebKit::PluginProxy::supportsSnapshotting const):
* WebProcess/Plugins/WebPluginInfoProvider.cpp:
(WebKit::WebPluginInfoProvider::populatePluginCache):
* WebProcess/Storage/WebSWClientConnection.cpp:
(WebKit::WebSWClientConnection::WebSWClientConnection):
* WebProcess/WebCoreSupport/WebChromeClient.cpp:
* WebProcess/WebCoreSupport/WebChromeClient.h:
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::savePlatformDataToCachedFrame):
* WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
(WebKit::WebPlatformStrategies::cookieRequestHeaderFieldValue):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::rootViewToScreen):
* WebProcess/WebProcess.cpp:
(WebKit::getNetworkProcessConnection):
* WebProcess/WebProcess.h:
* WebProcess/WebProcess.messages.in:

LayoutTests:

Drop test for the DoNotProcessIncomingMessagesWhenWaitingForSyncReply IPC::SendOption as it was
removed in this patch. This SendOption is no longer useful because it is now the default behavior
for the WebContent process.

* fast/misc/testIncomingSyncIPCMessageWhileWaitingForSyncReply-expected.txt: Removed.
* fast/misc/testIncomingSyncIPCMessageWhileWaitingForSyncReply.html: Removed.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236546 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoUnreviewed, GTK Ubuntu LTS build fix attempt after r236396.
philn@webkit.org [Thu, 27 Sep 2018 12:51:09 +0000 (12:51 +0000)]
Unreviewed, GTK Ubuntu LTS build fix attempt after r236396.

* platform/graphics/gstreamer/GStreamerCommon.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236545 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoUnreviewed GTK WebAudio rebaseline.
philn@webkit.org [Thu, 27 Sep 2018 12:46:48 +0000 (12:46 +0000)]
Unreviewed GTK WebAudio rebaseline.

This time from the 64-bit Release bot...

* platform/gtk/webaudio/oscillator-custom-expected.wav:
* platform/gtk/webaudio/oscillator-sawtooth-expected.wav:
* platform/gtk/webaudio/oscillator-sine-expected.wav:
* platform/gtk/webaudio/oscillator-square-expected.wav:
* platform/gtk/webaudio/oscillator-triangle-expected.wav:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236544 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoUnreviewed GTK WebAudio rebaselines
philn@webkit.org [Thu, 27 Sep 2018 12:14:18 +0000 (12:14 +0000)]
Unreviewed GTK WebAudio rebaselines

* platform/gtk/TestExpectations: webaudio/audioprocessingevent.html doesn't fail.
* platform/gtk/webaudio/codec-tests/wav/24bit-22khz-resample-expected.wav: Rebaselined.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236543 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months ago[GTK] Several tests are failing since r217598
philn@webkit.org [Thu, 27 Sep 2018 11:51:48 +0000 (11:51 +0000)]
[GTK] Several tests are failing since r217598
https://bugs.webkit.org/show_bug.cgi?id=172809

Unreviewed, GTK platform test expectations rebaseline.

* platform/gtk/TestExpectations:
* platform/gtk/http/tests/xmlhttprequest/cache-override-expected.txt: Removed.
* platform/gtk/webaudio/oscillator-custom-expected.wav:
* platform/gtk/webaudio/oscillator-sawtooth-expected.wav:
* platform/gtk/webaudio/oscillator-sine-expected.wav:
* platform/gtk/webaudio/oscillator-square-expected.wav:
* platform/gtk/webaudio/oscillator-triangle-expected.wav:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236542 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months ago[Web Animations] Turn Web Animations with CSS integration on
graouts@webkit.org [Thu, 27 Sep 2018 09:49:52 +0000 (09:49 +0000)]
[Web Animations] Turn Web Animations with CSS integration on
https://bugs.webkit.org/show_bug.cgi?id=184819
<rdar://problem/39597337>

Reviewed by Dean Jackson.

LayoutTests/imported/mozilla:

* css-animations/test_animation-cancel.html:
* css-animations/test_animation-computed-timing.html:
* css-animations/test_animation-currenttime.html:
* css-animations/test_animation-finish.html:
* css-animations/test_animation-finished.html:
* css-animations/test_animation-id.html:
* css-animations/test_animation-pausing.html:
* css-animations/test_animation-playstate.html:
* css-animations/test_animation-ready.html:
* css-animations/test_animation-reverse.html:
* css-animations/test_animation-starttime.html:
* css-animations/test_animations-dynamic-changes.html:
* css-animations/test_cssanimation-animationname.html:
* css-animations/test_document-get-animations.html:
* css-animations/test_effect-target.html:
* css-animations/test_element-get-animations.html:
* css-animations/test_event-dispatch.html:
* css-animations/test_event-order.html:
* css-animations/test_keyframeeffect-getkeyframes.html:
* css-animations/test_pseudoElement-get-animations.html:
* css-animations/test_setting-effect.html:
* css-transitions/test_animation-cancel.html:
* css-transitions/test_animation-computed-timing.html:
* css-transitions/test_animation-currenttime.html:
* css-transitions/test_animation-finished.html:
* css-transitions/test_animation-pausing.html:
* css-transitions/test_animation-ready.html:
* css-transitions/test_animation-starttime.html:
* css-transitions/test_csstransition-transitionproperty.html:
* css-transitions/test_document-get-animations.html:
* css-transitions/test_effect-target.html:
* css-transitions/test_element-get-animations.html:
* css-transitions/test_event-dispatch.html:
* css-transitions/test_keyframeeffect-getkeyframes.html:
* css-transitions/test_pseudoElement-get-animations.html:
* css-transitions/test_setting-effect.html:

LayoutTests/imported/w3c:

* web-platform-tests/css-timing-1/frames-timing-functions-output.html:
* web-platform-tests/css/css-logical/animation-003.tentative.html:
* web-platform-tests/css/css-scoping/keyframes-001.html:
* web-platform-tests/web-animations/animation-model/keyframe-effects/effect-value-context.html:
* web-platform-tests/web-animations/interfaces/Animatable/animate.html:
* web-platform-tests/web-animations/timing-model/animations/current-time.html:

Source/WebCore:

* page/RuntimeEnabledFeatures.h:

Source/WebKit:

* Shared/WebPreferences.yaml:

Source/WebKitLegacy/mac:

* WebView/WebPreferences.mm:
(+[WebPreferences initialize]):

Source/WebKitLegacy/win:

* WebPreferences.cpp:
(WebPreferences::initializeDefaultSettings):

Tools:

* DumpRenderTree/TestOptions.h:

LayoutTests:

* TestExpectations:
* animations/3d/matrix-transform-type-animation.html:
* animations/3d/replace-filling-transform.html:
* animations/3d/transform-origin-vs-functions.html:
* animations/3d/transform-perspective.html:
* animations/additive-transform-animations.html:
* animations/animation-border-overflow.html:
* animations/animation-callback-timestamp.html:
* animations/animation-controller-drt-api.html:
* animations/animation-direction-alternate-reverse-expected.txt:
* animations/animation-direction-alternate-reverse.html:
* animations/animation-direction-reverse-fill-mode-hardware.html:
* animations/animation-direction-reverse-hardware-opacity.html:
* animations/animation-direction-reverse-hardware.html:
* animations/animation-direction-reverse-non-hardware.html:
* animations/animation-direction-reverse-timing-functions-hardware.html:
* animations/animation-direction-reverse-timing-functions.html:
* animations/animation-direction.html:
* animations/animation-followed-by-transition.html:
* animations/animation-hit-test-transform.html:
* animations/animation-hit-test.html:
* animations/animation-internals-api-expected.txt: Removed.
* animations/animation-internals-api-multiple-keyframes-expected.txt: Removed.
* animations/animation-internals-api-multiple-keyframes.html: Removed.
* animations/animation-internals-api.html: Removed.
* animations/animation-offscreen-to-onscreen.html:
* animations/animation-playstate-paused-style-resolution.html:
* animations/big-rotation-expected.txt:
* animations/big-rotation.html:
* animations/change-completed-animation-transform.html:
* animations/change-keyframes.html:
* animations/combo-transform-rotate+scale.html:
* animations/cross-fade-background-image.html:
* animations/cross-fade-border-image-source.html:
* animations/cross-fade-list-style-image.html:
* animations/cross-fade-webkit-mask-box-image.html:
* animations/duplicate-keys-expected.html:
* animations/duplicate-keys.html:
* animations/duplicated-keyframes-name.html:
* animations/fill-forwards-end-state.html:
* animations/fill-mode-forwards-zero-duration-expected.txt:
* animations/fill-mode-forwards-zero-duration.html:
* animations/fill-mode-removed.html:
* animations/font-variations/font-stretch.html:
* animations/font-variations/font-style.html:
* animations/font-variations/font-variation-settings-order.html:
* animations/font-variations/font-variation-settings-unlike.html:
* animations/font-variations/font-variation-settings.html:
* animations/font-variations/font-weight.html:
* animations/generic-from-to.html:
* animations/import.html:
* animations/keyframe-multiple-timing-functions-transform.html:
* animations/keyframe-timing-functions-transform.html:
* animations/keyframe-timing-functions.html:
* animations/keyframe-timing-functions2.html:
* animations/keyframes-comma-separated.html:
* animations/keyframes-dynamic.html:
* animations/keyframes-infinite-iterations.html:
* animations/keyframes-invalid-keys.html:
* animations/keyframes-out-of-order.html:
* animations/keyframes.html:
* animations/leak-document-with-css-animation.html:
* animations/lineheight-animation.html:
* animations/longhand-timing-function.html:
* animations/matrix-anim.html:
* animations/missing-from-to-transforms.html:
* animations/missing-from-to.html:
* animations/missing-keyframe-properties-repeating.html:
* animations/missing-keyframe-properties-timing-function.html:
* animations/missing-keyframe-properties.html:
* animations/missing-values-first-keyframe.html:
* animations/missing-values-last-keyframe.html:
* animations/multiple-animations-timing-function.html:
* animations/multiple-animations.html:
* animations/multiple-keyframes.html:
* animations/negative-delay.html:
* animations/pause-crash.html:
* animations/play-state-start-paused.html:
* animations/resources/animation-leak-iframe.html:
* animations/simultaneous-start-left.html:
* animations/simultaneous-start-transform.html:
* animations/spring-function.html:
* animations/stacking-context-unchanged-while-running.html:
* animations/stop-animation-on-suspend.html:
* animations/suspend-resume-animation-events.html:
* animations/timing-functions.html:
* animations/transition-and-animation-1.html:
* animations/transition-and-animation-2.html:
* animations/transition-and-animation-3.html:
* animations/trigger-container-scroll-boundaries.html:
* animations/trigger-container-scroll-empty.html:
* animations/trigger-container-scroll-simple.html:
* animations/unanimated-style.html:
* animations/unprefixed-keyframes.html:
* animations/width-using-ems.html:
* compositing/animation/animated-composited-inside-hidden.html:
* compositing/animation/computed-style-during-delay.html:
* compositing/animation/layer-for-filling-animation.html:
* compositing/backing/backface-visibility-flip.html:
* compositing/backing/transform-transition-from-outside-view.html:
* compositing/contents-scale/animating.html:
* compositing/layer-creation/animation-overlap-with-children.html:
* compositing/layer-creation/mismatched-rotated-transform-animation-overlap.html:
* compositing/layer-creation/mismatched-rotated-transform-transition-overlap.html:
* compositing/layer-creation/mismatched-transform-transition-overlap.html:
* compositing/layer-creation/multiple-keyframes-animation-overlap.html:
* compositing/layer-creation/overlap-animation-clipping.html:
* compositing/layer-creation/overlap-animation-container.html:
* compositing/layer-creation/overlap-animation.html:
* compositing/layer-creation/scale-rotation-animation-overlap.html:
* compositing/layer-creation/scale-rotation-transition-overlap.html:
* compositing/layer-creation/translate-animation-overlap.html:
* compositing/layer-creation/translate-scale-animation-overlap.html:
* compositing/layer-creation/translate-scale-transition-overlap.html:
* compositing/layer-creation/translate-transition-overlap.html:
* compositing/overflow/overflow-positioning.html:
* compositing/reflections/animation-inside-reflection.html:
* compositing/reflections/nested-reflection-animated.html:
* compositing/reflections/nested-reflection-transition.html:
* compositing/scrolling/touch-scroll-to-clip.html:
* compositing/transitions/scale-transition-no-start.html:
* compositing/transitions/singular-scale-transition.html:
* compositing/visible-rect/animated-from-none.html:
* compositing/visible-rect/animated.html:
* css3/calc/transitions-dependent.html:
* css3/calc/transitions.html:
* css3/filters/backdrop/animation.html:
* css3/filters/composited-during-animation.html:
* css3/filters/filter-animation-from-none-hw.html:
* css3/filters/filter-animation-from-none-multi-hw.html:
* css3/filters/filter-animation-from-none-multi.html:
* css3/filters/filter-animation-from-none.html:
* css3/filters/filter-animation-hw.html:
* css3/filters/filter-animation-multi-hw.html:
* css3/filters/filter-animation-multi.html:
* css3/filters/filter-animation.html:
* css3/masking/clip-path-animation.html:
* fast/animation/css-animation-resuming-when-visible-with-style-change.html:
* fast/animation/css-animation-resuming-when-visible-with-style-change2.html:
* fast/animation/css-animation-resuming-when-visible.html:
* fast/animation/css-animation-throttling-lowPowerMode.html:
* fast/animation/height-auto-transition-computed-value.html:
* fast/css-generated-content/pseudo-animation.html:
* fast/css-generated-content/pseudo-transition.html:
* fast/filter-image/filter-image-animation.html:
* fast/shapes/shape-outside-floats/shape-outside-animation.html:
* fast/shapes/shape-outside-floats/shape-outside-shape-image-threshold-animation.html:
* fast/shapes/shape-outside-floats/shape-outside-shape-margin-animation.html:
* http/wpt/css/css-animations/start-animation-001.html:
* imported/blink/transitions/transition-not-interpolable.html:
* imported/blink/transitions/unprefixed-transform.html:
* platform/ios/TestExpectations:
* platform/win/TestExpectations:
* transitions/remove-transition-style.html:
* transitions/transition-drt-api-delay-expected.txt: Removed.
* transitions/transition-drt-api-delay.html: Removed.
* transitions/transition-drt-api-expected.txt: Removed.
* transitions/transition-drt-api.html: Removed.
* transitions/zero-duration-with-non-zero-delay-end.html:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236541 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoWeb Inspector: Hide DOM and XHR breakpoint sections when they are empty
drousso@apple.com [Thu, 27 Sep 2018 06:24:39 +0000 (06:24 +0000)]
Web Inspector: Hide DOM and XHR breakpoint sections when they are empty
https://bugs.webkit.org/show_bug.cgi?id=182406
<rdar://problem/37131512>

Reviewed by Joseph Pecoraro.

Source/WebInspectorUI:

Combine all breakpoint sections (e.g. DOM, XHR, and Event) into the main "Breakpoints"
section, including all the various "+" buttons for creating different types of breakpoints.

Global breakpoints (except "All Exceptions" and "Uncaught Exceptions") are now deletable,
and can be re-added via the "+" button of the "Breakpoints" section. Deletable global
breakpoints (e.g. "Assertion Failures" and "All Requests") are able to remain visible while
disabled, and will only be hidden when the user specifically deletes them.

* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Setting.js:
* UserInterface/Main.html:

* UserInterface/Controllers/DOMBreakpointTreeController.js: Removed.
* UserInterface/Controllers/EventBreakpointTreeController.js: Removed.
* UserInterface/Controllers/XHRBreakpointTreeController.js: Removed.

* UserInterface/Controllers/DebuggerManager.js:
(WI.DebuggerManager.prototype.get uncaughtExceptionsBreakpoint): Added.
(WI.DebuggerManager.prototype.get assertionFailuresBreakpoint): Added.
(WI.DebuggerManager.prototype.isBreakpointRemovable):
(WI.DebuggerManager.prototype.isBreakpointSpecial): Added.
(WI.DebuggerManager.prototype.isBreakpointEditable):
(WI.DebuggerManager.prototype.addBreakpoint):
(WI.DebuggerManager.prototype.removeBreakpoint):
(WI.DebuggerManager.prototype.initializeTarget):
(WI.DebuggerManager.prototype._breakpointDisabledStateDidChange):
(WI.DebuggerManager.prototype._updateBreakOnExceptionsState):
(WI.DebuggerManager.prototype.get allUncaughtExceptionsBreakpoint): Deleted.
(WI.DebuggerManager.prototype.get assertionsBreakpoint): Deleted.
* UserInterface/Controllers/DOMDebuggerManager.js:
(WI.DOMDebuggerManager.prototype.isBreakpointSpecial): Added.
(WI.DOMDebuggerManager.prototype.addDOMBreakpoint):
(WI.DOMDebuggerManager.prototype.removeDOMBreakpoint):
(WI.DOMDebuggerManager.prototype.addEventBreakpoint):
(WI.DOMDebuggerManager.prototype.removeEventBreakpoint):
(WI.DOMDebuggerManager.prototype.addXHRBreakpoint):
(WI.DOMDebuggerManager.prototype.removeXHRBreakpoint):
(WI.DOMDebuggerManager.prototype.isBreakpointRemovable): Deleted.
Always fire add/remove events, including for special breakpoints, so that any listeners will
be able to adjust accordingly. Even though special breakpoints don't get stored in the lists
held by each manager, we are still able to enable/disable them, and that should be reported.

* UserInterface/Views/DebuggerSidebarPanel.js:
(WI.DebuggerSidebarPanel):
(WI.DebuggerSidebarPanel.prototype.closed):
(WI.DebuggerSidebarPanel.prototype.saveStateToCookie):
(WI.DebuggerSidebarPanel.prototype.restoreStateFromCookie.revealAndSelect):
(WI.DebuggerSidebarPanel.prototype.restoreStateFromCookie):
(WI.DebuggerSidebarPanel.prototype.willDismissPopover):
(WI.DebuggerSidebarPanel.prototype._addBreakpoint):
(WI.DebuggerSidebarPanel.prototype._removeBreakpoint): Added.
(WI.DebuggerSidebarPanel.prototype._addTreeElementForSourceCodeToTreeOutline):
(WI.DebuggerSidebarPanel.prototype._mainResourceDidChange):
(WI.DebuggerSidebarPanel.prototype._breakpointRemoved):
(WI.DebuggerSidebarPanel.prototype._removeDebuggerTreeElement):
(WI.DebuggerSidebarPanel.prototype._treeSelectionDidChange):
(WI.DebuggerSidebarPanel.prototype._addTreeElement.comparator): Added.
(WI.DebuggerSidebarPanel.prototype._addTreeElement): Added.
(WI.DebuggerSidebarPanel.prototype._updatePauseReasonSection):
(WI.DebuggerSidebarPanel.prototype._domBreakpointResolvedStateDidChange): Added.
(WI.DebuggerSidebarPanel.prototype._handleBreakpointElementAddedOrRemoved): Added.
(WI.DebuggerSidebarPanel.prototype._handleCreateBreakpointClicked): Added.
(WI.DebuggerSidebarPanel.prototype._compareTopLevelTreeElements.isSpecialBreakpoint): Deleted.
(WI.DebuggerSidebarPanel.prototype._compareTopLevelTreeElements): Deleted.
(WI.DebuggerSidebarPanel.prototype._domBreakpointAddedOrRemoved): Deleted.
(WI.DebuggerSidebarPanel.prototype._eventBreakpointAddedOrRemoved): Deleted.
(WI.DebuggerSidebarPanel.prototype._addEventBreakpointButtonClicked): Deleted.
(WI.DebuggerSidebarPanel.prototype._addXHRBreakpointButtonClicked): Deleted.
* UserInterface/Views/DebuggerSidebarPanel.css:
(.sidebar > .panel.navigation.debugger .details-section.dom-breakpoints .item.dom-node .titles): Deleted.
(.sidebar > .panel.navigation.debugger .details-section.dom-breakpoints .item.dom-node .icon): Deleted.
(.sidebar > .panel.navigation.debugger .details-section.dom-breakpoints .item.dom-node:not(:hover, .selected) .status .go-to-arrow): Deleted.
(.sidebar > .panel.navigation.debugger .details-section.xhr-breakpoints .item.breakpoint .subtitle): Deleted.
Unify the logic for adding/removing breakpoints of all types.

* UserInterface/Views/BreakpointTreeElement.js:
(WI.BreakpointTreeElement):
(WI.BreakpointTreeElement.prototype.ondelete):
* UserInterface/Views/DOMBreakpointTreeElement.js:
(WI.DOMBreakpointTreeElement):
(WI.DOMBreakpointTreeElement.prototype.ondelete):
* UserInterface/Views/DOMNodeTreeElement.js:
(WI.DOMNodeTreeElement):
(WI.DOMNodeTreeElement.prototype.ondelete):
(WI.DOMNodeTreeElement.prototype.populateContextMenu):
* UserInterface/Views/EventBreakpointTreeElement.js:
(WI.EventBreakpointTreeElement):
(WI.EventBreakpointTreeElement.prototype.ondelete):
(WI.EventBreakpointTreeElement.prototype.populateContextMenu):
* UserInterface/Views/XHRBreakpointTreeElement.js:
(WI.XHRBreakpointTreeElement):
(WI.XHRBreakpointTreeElement.prototype.ondelete):
(WI.XHRBreakpointTreeElement.prototype.populateContextMenu):
* UserInterface/Views/XHRBreakpointTreeElement.css: Added.
(.breakpoint.xhr .subtitle):
Add/remove checks for whether the associated breakpoint can be deleted.

* UserInterface/Views/DOMNodeTreeElement.css: Added.
(.tree-outline .item.dom-node .titles):
(.tree-outline .item.dom-node .icon):
(.tree-outline .item.dom-node:not(:hover, .selected) .status .go-to-arrow):

* UserInterface/Views/ContextMenuUtilities.js:
(WI.appendContextMenuItemsForDOMNode):
(WI.appendContextMenuItemsForDOMNodeBreakpoints): Added.
* UserInterface/Views/DOMTreeElement.js:
(WI.DOMTreeElement.prototype._statusImageContextmenu):

* UserInterface/Views/XHRBreakpointPopover.js:
(WI.XHRBreakpointPopover):
(WI.XHRBreakpointPopover.prototype.get breakpoint): Added.
(WI.XHRBreakpointPopover.prototype.show):
(WI.XHRBreakpointPopover.prototype.dismiss): Added.
(WI.XHRBreakpointPopover.prototype._createEditor):
(WI.XHRBreakpointPopover.prototype._updateEditor):
(WI.XHRBreakpointPopover.prototype.get result): Deleted.
(WI.XHRBreakpointPopover.prototype.get type): Deleted.
(WI.XHRBreakpointPopover.prototype.get value): Deleted.
Drive-by: remove the erroneous usage of `WI.InputPopover.Result`.
LayoutTests:

* inspector/debugger/break-on-uncaught-exception-throw-in-promise.html:
* inspector/debugger/break-on-uncaught-exception.html:
* inspector/debugger/breakpoints-disabled-expected.txt:
* inspector/debugger/breakpoints-disabled.html:
* inspector/debugger/pause-reason.html:
* inspector/debugger/setPauseOnAssertions.html:
* inspector/worker/debugger-pause.html:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236540 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoWeb Inspector: determine hasVisibleEffect for each RecordingAction as it's processed
drousso@apple.com [Thu, 27 Sep 2018 06:09:48 +0000 (06:09 +0000)]
Web Inspector: determine hasVisibleEffect for each RecordingAction as it's processed
https://bugs.webkit.org/show_bug.cgi?id=189860

Reviewed by Joseph Pecoraro.

Source/WebInspectorUI:

* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Setting.js:
* UserInterface/Base/Utilities.js:

* UserInterface/Models/RecordingAction.js:
(WI.RecordingAction.prototype.process.getContent):
(WI.RecordingAction.prototype.process):

* UserInterface/Views/RecordingActionTreeElement.js:
(WI.RecordingActionTreeElement.prototype.onattach):

* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype._createExperimentalSettingsView):

* UserInterface/Views/RecordingContentView.js:
(WI.RecordingContentView.prototype._updateImageGrid):
Drive-by: don't attempt to show the image grid if we haven't called initialized yet.
* UserInterface/Views/CanvasSidebarPanel.js:
(WI.CanvasSidebarPanel.prototype._treeOutlineSelectionDidChange):
Drive-by: ensure that the `WI.RecordingContentView` is showing before applying the action.
LayoutTests:

* inspector/unit-tests/array-utilities-expected.txt:
* inspector/unit-tests/array-utilities.html:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236539 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoOptions::useSeparatedWXHeap() should always be false when ENABLE(FAST_JIT_PERMISSIONS...
mark.lam@apple.com [Thu, 27 Sep 2018 04:36:42 +0000 (04:36 +0000)]
Options::useSeparatedWXHeap() should always be false when ENABLE(FAST_JIT_PERMISSIONS) && CPU(ARM64E).
https://bugs.webkit.org/show_bug.cgi?id=190022
<rdar://problem/44800928>

Reviewed by Saam Barati.

* jit/ExecutableAllocator.cpp:
(JSC::FixedVMPoolExecutableAllocator::FixedVMPoolExecutableAllocator):
(JSC::FixedVMPoolExecutableAllocator::initializeSeparatedWXHeaps):
* jit/ExecutableAllocator.h:
(JSC::performJITMemcpy):
* runtime/Options.cpp:
(JSC::recomputeDependentOptions):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236538 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoWebGL 2: updated passing test expectations for deqp/primitiverestart
justin_fan@apple.com [Thu, 27 Sep 2018 02:00:32 +0000 (02:00 +0000)]
WebGL 2: updated passing test expectations for deqp/primitiverestart
https://bugs.webkit.org/show_bug.cgi?id=189981

Reviewed by Jon Lee.

Test-expectation updates for trac.webkit.org/changeset/236490; these are still to be skipped on ews.

* webgl/2.0.0/deqp/functional/gles3/primitiverestart/00-expected.txt:
* webgl/2.0.0/deqp/functional/gles3/primitiverestart/01-expected.txt:
* webgl/2.0.0/deqp/functional/gles3/primitiverestart/02-expected.txt:
* webgl/2.0.0/deqp/functional/gles3/primitiverestart/03-expected.txt:
* webgl/2.0.0/deqp/functional/gles3/primitiverestart/04-expected.txt:
* webgl/2.0.0/deqp/functional/gles3/primitiverestart/05-expected.txt:
* webgl/2.0.0/deqp/functional/gles3/primitiverestart/06-expected.txt:
* webgl/2.0.0/deqp/functional/gles3/primitiverestart/07-expected.txt:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236537 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoVideo track clone cannot preserve original property
commit-queue@webkit.org [Thu, 27 Sep 2018 01:42:24 +0000 (01:42 +0000)]
Video track clone cannot preserve original property
https://bugs.webkit.org/show_bug.cgi?id=189872
<rdar://problem/44706579>

Patch by YUHAN WU <yuhan_wu@apple.com> on 2018-09-26
Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

* web-platform-tests/mst-content-hint/MediaStreamTrack-contentHint-expected.txt:

Source/WebCore:

Fix the issue that the cloned track created by canvas.captureStream().getVideoTracks() cannot keep some attributes, such as enabled.
Updated a testcase expected result:
LayoutTests/imported/w3c/web-platform-tests/mst-content-hint/MediaStreamTrack-contentHint.html

* Modules/mediastream/CanvasCaptureMediaStreamTrack.cpp:
(WebCore::CanvasCaptureMediaStreamTrack::CanvasCaptureMediaStreamTrack):
(WebCore::CanvasCaptureMediaStreamTrack::create):
(WebCore::CanvasCaptureMediaStreamTrack::clone):
* Modules/mediastream/CanvasCaptureMediaStreamTrack.h:
* Modules/mediastream/MediaStreamTrack.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236536 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoAssert that performJITMemcpy() is always called with instruction size aligned address...
mark.lam@apple.com [Thu, 27 Sep 2018 00:14:16 +0000 (00:14 +0000)]
Assert that performJITMemcpy() is always called with instruction size aligned addresses on ARM64.
https://bugs.webkit.org/show_bug.cgi?id=190016
<rdar://problem/44802875>

Reviewed by Saam Barati.

Also assert in performJITMemcpy() that the entire buffer to be copied will fit in
JIT memory.

* assembler/ARM64Assembler.h:
(JSC::ARM64Assembler::fillNops):
(JSC::ARM64Assembler::replaceWithVMHalt):
(JSC::ARM64Assembler::replaceWithJump):
(JSC::ARM64Assembler::replaceWithLoad):
(JSC::ARM64Assembler::replaceWithAddressComputation):
(JSC::ARM64Assembler::setPointer):
(JSC::ARM64Assembler::repatchInt32):
(JSC::ARM64Assembler::repatchCompact):
(JSC::ARM64Assembler::linkJumpOrCall):
(JSC::ARM64Assembler::linkCompareAndBranch):
(JSC::ARM64Assembler::linkConditionalBranch):
(JSC::ARM64Assembler::linkTestAndBranch):
* assembler/LinkBuffer.cpp:
(JSC::LinkBuffer::copyCompactAndLinkCode):
(JSC::LinkBuffer::linkCode):
* jit/ExecutableAllocator.h:
(JSC::performJITMemcpy):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236534 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoUnreviewed, rolling out r236524.
achristensen@apple.com [Wed, 26 Sep 2018 23:35:14 +0000 (23:35 +0000)]
Unreviewed, rolling out r236524.

Broke API tests

Reverted changeset:

"URLWithUserTypedString should return nil for URLs deemed to
be invalid by WebCore::URL"
https://bugs.webkit.org/show_bug.cgi?id=189979
https://trac.webkit.org/changeset/236524

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236533 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoWeb Inspector: Dark Mode: new watch expression popover has light background
nvasilyev@apple.com [Wed, 26 Sep 2018 23:23:53 +0000 (23:23 +0000)]
Web Inspector: Dark Mode: new watch expression popover has light background
https://bugs.webkit.org/show_bug.cgi?id=190013
<rdar://problem/44810000>

Reviewed by Matt Baker.

Make the background dark to match the CodeMirror editor background.

* UserInterface/Views/ScopeChainDetailsSidebarPanel.css:
(@media (prefers-dark-interface)):
(.watch-expression-editor):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236532 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoWebVTT cue alignment broken
pvollan@apple.com [Wed, 26 Sep 2018 23:10:41 +0000 (23:10 +0000)]
WebVTT cue alignment broken
https://bugs.webkit.org/show_bug.cgi?id=190004

Reviewed by Eric Carlson.

Source/WebCore:

If the position of the queue is unspecified, the default value of 50 was used, which is incorrect.
This patch also updates the API according to https://w3c.github.io/webvtt/#the-vttcue-interface.
The position attribute should not be a double, but either a double or the "auto" keyword. Parts
of this patch is inspired by the associated code in the Chromium project.

Test: media/track/track-cue-left-align.html

* html/track/TextTrackCueGeneric.cpp:
(WebCore::TextTrackCueGenericBoxElement::applyCSSProperties):
(WebCore::TextTrackCueGeneric::setPosition):
* html/track/TextTrackCueGeneric.h:
* html/track/VTTCue.cpp:
(WebCore::VTTCueBox::applyCSSProperties):
(WebCore::VTTCue::initialize):
(WebCore::VTTCue::position const):
(WebCore::VTTCue::setPosition):
(WebCore::VTTCue::textPositionIsAuto const):
(WebCore::VTTCue::calculateComputedTextPosition const):
(WebCore::VTTCue::calculateDisplayParameters):
(WebCore::VTTCue::toJSON const):
* html/track/VTTCue.h:
(WebCore::VTTCue::position const): Deleted.
* html/track/VTTCue.idl:

LayoutTests:

* media/track/captions-webvtt/left-align.vtt: Added.
* media/track/track-add-remove-cue-expected.txt:
* media/track/track-add-remove-cue.html:
* media/track/track-cue-left-align-expected-mismatch.html: Added.
* media/track/track-cue-left-align.html: Added.
* media/track/track-cue-mutable-expected.txt:
* media/track/track-cue-mutable.html:
* media/track/track-vttcue-expected.txt:
* media/track/track-vttcue.html:
* media/track/track-webvtt-tc013-settings-expected.txt:
* media/track/track-webvtt-tc013-settings.html:
* media/track/track-webvtt-tc015-positioning-expected.txt:
* media/track/track-webvtt-tc015-positioning.html:
* media/track/track-webvtt-tc016-align-positioning-expected.txt:
* media/track/track-webvtt-tc016-align-positioning.html:
* media/track/track-webvtt-tc018-align-text-line-position-expected.txt:
* media/track/track-webvtt-tc018-align-text-line-position.html:
* media/track/track-webvtt-tc021-valign-expected.txt:
* media/track/track-webvtt-tc021-valign.html:
* media/video-test.js:
(testCues):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236531 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoAllow override of viewport configuration.
commit-queue@webkit.org [Wed, 26 Sep 2018 22:31:18 +0000 (22:31 +0000)]
Allow override of viewport configuration.
https://bugs.webkit.org/show_bug.cgi?id=188772.
<rdar://problem/43538892>.

Patch by James Savage <james.savage@apple.com> on 2018-09-26
Reviewed by Simon Fraser.

Source/WebCore:

* page/Settings.yaml:
* page/ViewportConfiguration.cpp:
(WebCore::ViewportConfiguration::nativeWebpageParameters): Provide a viewport configuration
similar to width=device-width, with initial scale set to 1.
* page/ViewportConfiguration.h:

Source/WebKit:

* Shared/WebPreferences.yaml:
* UIProcess/API/Cocoa/WKPreferences.mm:
(-[WKPreferences _setShouldIgnoreMetaViewport:]):
(-[WKPreferences _shouldIgnoreMetaViewport]):
* UIProcess/API/Cocoa/WKPreferencesPrivate.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::viewportPropertiesDidChange): If we are ignoring the
<meta> viewport, short circuit calling setViewportArguments() and do not
do any updates.
(WebKit::WebPage::didCommitLoad): Ditto.
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::resetViewportDefaultConfiguration): Select the default
configuration based on UIProcess setting.

Tools:

* WebKitTestRunner/TestController.cpp:
(WTR::updateTestOptionsFromTestHeader): Parse new test option key from comments.
* WebKitTestRunner/TestOptions.h:
* WebKitTestRunner/ios/TestControllerIOS.mm:
(WTR::TestController::platformConfigureViewForTest): Handle new test option by
modifying the web view's preferences accordingly.

LayoutTests:

Add test proving that a document without a meta viewport specifying
width=device-width still gets a layout when this setting is enabled. I also
added a baseline case to prove that without this setting we do not layout
at device width.

* fast/viewport/ios/ipad/empty-viewport-expected.txt: Added.
* fast/viewport/ios/ipad/empty-viewport.html: Added.
* fast/viewport/ios/ipad/meta-viewport-disabled-expected.txt: Added.
* fast/viewport/ios/ipad/meta-viewport-disabled.html: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236530 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoRegression(r236512): WKWebViewCandidateTests.SoftSpaceReplacementAfterCandidateInsert...
cdumez@apple.com [Wed, 26 Sep 2018 22:18:25 +0000 (22:18 +0000)]
Regression(r236512): WKWebViewCandidateTests.SoftSpaceReplacementAfterCandidateInsertionWithoutReplacement API test is failing
https://bugs.webkit.org/show_bug.cgi?id=190007

Reviewed by Alex Christensen.

Drop DispatchMessageEvenWhenWaitingForSyncReply SendOption from EditorStateChanged IPC calls to restore
pre-r236512 behavior. Before r236512, this option had no effect on IPC from the WebContent to the UIProcess
because the m_onlySendMessagesAsDispatchWhenWaitingForSyncReplyWhenProcessingSuchAMessage flag was set
on that IPC::Connection. However, after r236512, m_onlySendMessagesAsDispatchWhenWaitingForSyncReplyWhenProcessingSuchAMessage
is no longer set on the connection, and the DispatchMessageEvenWhenWaitingForSyncReply SendOption was
causing this message to get processed out of order with regards to other async IPC, thus causing the
API test failure.

* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::sendEditorStateUpdate):
(WebKit::WebPage::sendPartialEditorStateAndSchedulePostLayoutUpdate):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236529 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoURLs with mismatched surrogate pairs in the host should fail to parse
achristensen@apple.com [Wed, 26 Sep 2018 21:58:29 +0000 (21:58 +0000)]
URLs with mismatched surrogate pairs in the host should fail to parse
https://bugs.webkit.org/show_bug.cgi?id=190005

Reviewed by Chris Dumez.

Source/WebCore:

Elsewhere in the URLParser, when we encounter mismatched surrogate pairs we use the replacement character,
but that just fails later on in domainToASCII, so we may as well just fail.
This behavior matches Chrome, but is unclear in the spec.  There are no valid uses of hosts containing mismatched surrogate pairs.
Covered by new API tests.

* platform/URLParser.cpp:
(WebCore::URLParser::parseHostAndPort):

Tools:

* TestWebKitAPI/Tests/WebCore/URLParser.cpp:
(TestWebKitAPI::TEST_F):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236528 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agouidna_nameToASCII only needs a buffer capacity of 64
achristensen@apple.com [Wed, 26 Sep 2018 21:56:31 +0000 (21:56 +0000)]
uidna_nameToASCII only needs a buffer capacity of 64
https://bugs.webkit.org/show_bug.cgi?id=190006

Reviewed by Chris Dumez.

Source/WebCore:

This is specified in https://www.unicode.org/reports/tr46/#ToASCII
This is how Chrome and Firefox also behave with long unicode hosts.

* platform/URLParser.cpp:
(WebCore::URLParser::domainToASCII):

LayoutTests:

* fast/dom/DOMURL/parsing.html:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236527 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoURLWithUserTypedString should return nil for URLs deemed to be invalid by WebCore...
achristensen@apple.com [Wed, 26 Sep 2018 21:52:21 +0000 (21:52 +0000)]
URLWithUserTypedString should return nil for URLs deemed to be invalid by WebCore::URL
https://bugs.webkit.org/show_bug.cgi?id=189979
<rdar://problem/44119696>

Reviewed by Chris Dumez.

Source/WebCore:

Covered by an API test.

* platform/mac/WebCoreNSURLExtras.mm:
(WebCore::URLWithData):

Tools:

* TestWebKitAPI/Tests/WebCore/cocoa/URLExtras.mm:
(TestWebKitAPI::TEST):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236524 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoFix UAF after r236463
achristensen@apple.com [Wed, 26 Sep 2018 21:48:04 +0000 (21:48 +0000)]
Fix UAF after r236463
https://bugs.webkit.org/show_bug.cgi?id=190011

Reviewed by Chris Dumez.

I had removed an early return in NetworkResourceLoader::continueDidReceiveResponse.
Reading the (probably) null m_responseCompletionHandler was reading after the object had been destroyed.

* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::continueDidReceiveResponse):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236523 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoSelection should work across shadow boundary when initiated by a mouse drag
rniwa@webkit.org [Wed, 26 Sep 2018 20:33:00 +0000 (20:33 +0000)]
Selection should work across shadow boundary when initiated by a mouse drag
https://bugs.webkit.org/show_bug.cgi?id=151380
<rdar://problem/24363872>

Revert the change that I said I would from r236519.

* editing/VisibleSelection.cpp:
(WebCore::VisibleSelection::adjustSelectionToAvoidCrossingShadowBoundaries):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236522 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoUnreviewed, rolling out r236511.
commit-queue@webkit.org [Wed, 26 Sep 2018 20:31:29 +0000 (20:31 +0000)]
Unreviewed, rolling out r236511.
https://bugs.webkit.org/show_bug.cgi?id=190008

It is breaking some WebRTC tests (Requested by youenn on
#webkit).

Reverted changeset:

"[MediaStream] Clean up RealtimeMediaSource settings change
handling"
https://bugs.webkit.org/show_bug.cgi?id=189998
https://trac.webkit.org/changeset/236511

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236521 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoMove Symbol API to SPI
keith_miller@apple.com [Wed, 26 Sep 2018 20:04:27 +0000 (20:04 +0000)]
Move Symbol API to SPI
https://bugs.webkit.org/show_bug.cgi?id=189946

Reviewed by Michael Saboff.

Some of the property access methods on JSValue needed to be moved
to a category so that SPI overloads don't result in a compiler
error for internal users.

Additionally, this patch does not move the new enum entry for
Symbols in the JSType enumeration.

* API/JSObjectRef.h:
* API/JSObjectRefPrivate.h:
* API/JSValue.h:
* API/JSValuePrivate.h:
* API/JSValueRef.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236520 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoSelection should work across shadow boundary when initiated by a mouse drag
rniwa@webkit.org [Wed, 26 Sep 2018 20:02:57 +0000 (20:02 +0000)]
Selection should work across shadow boundary when initiated by a mouse drag
https://bugs.webkit.org/show_bug.cgi?id=151380
<rdar://problem/24363872>

Source/WebCore:

Reviewed by Antti Koivisto and Wenson Hsieh.

This patch adds the basic support for selecting content across shadow DOM boundaries to VisibleSelection,
which is enough to allow users to select content across shadow DOM boundaries via a mouse drag.

This is the first step in allowing users to select, copy and paste content across shadow DOM boundaries,
which is a serious user experience regression right now. The new behavior is disabled by default under
an interal debug feature flag: selectionAcrossShadowBoundariesEnabled.

Like Chrome, we are not going to support selecting editable content across shadow DOM boundaries since
we'd have to generalize every editing commands to make that work, and there aren't any HTML editors that
use shadow DOM boundaries within an editable region yet. For simplicity, we also don't support extending
a selection out of a shadow root which resides inside an editing region.

The keyboard based navigation & manipulation of selection as well as allowing copy & paste of content
across shadow DOM boundaries will be implemented by separate patches. DOMSelection will not expose this new
behavior either. This is tracked in the spec as https://github.com/w3c/webcomponents/issues/79

Tests: editing/selection/selection-across-shadow-boundaries-mixed-editability-1.html
       editing/selection/selection-across-shadow-boundaries-mixed-editability-2.html
       editing/selection/selection-across-shadow-boundaries-mixed-editability-3.html
       editing/selection/selection-across-shadow-boundaries-mixed-editability-4.html
       editing/selection/selection-across-shadow-boundaries-mixed-editability-5.html
       editing/selection/selection-across-shadow-boundaries-readonly-1.html
       editing/selection/selection-across-shadow-boundaries-readonly-2.html
       editing/selection/selection-across-shadow-boundaries-readonly-3.html
       editing/selection/selection-across-shadow-boundaries-user-select-all-1.html

* editing/VisibleSelection.cpp:
(WebCore::isInUserAgentShadowRootOrHasEditableShadowAncestor): Added.
(WebCore::VisibleSelection::adjustSelectionToAvoidCrossingShadowBoundaries): When the feature is enabled,
allow crossing shadow DOM boundaries except when either end is inside an user agent shadow root, or one of
its shadow includign ancestor is inside an editable region. The latter check is needed to disallow
an extension of a selection starting in a shadow tree inside a non-editable region inside an editable region
to outside the editable region. The rest of the editing code is not ready to deal with selection like that.
* page/Settings.yaml: Added an internal debug feature to enable this new behavior.

Source/WebKit:

Reviewed by Antti Koivisto.

Added SelectionAcrossShadowBoundariesEnabled as an internal debug feature,
and moved CSSCustomPropertiesAndValuesEnabled to where other experimental features are located.

* Shared/WebPreferences.yaml:

Source/WebKitLegacy/mac:

Reviewed by Wenson Hsieh.

Added selectionAcrossShadowBoundariesEnabled as a preference to be used in DumpRenderTree.

* WebView/WebPreferenceKeysPrivate.h:
* WebView/WebPreferences.mm:
(+[WebPreferences initialize]):
(-[WebPreferences selectionAcrossShadowBoundariesEnabled]):
(-[WebPreferences setSelectionAcrossShadowBoundariesEnabled:]):
* WebView/WebPreferencesPrivate.h:
* WebView/WebView.mm:
(-[WebView _preferencesChanged:]):

Tools:

Reviewed by Wenson Hsieh.

Added the support for internal:selectionAcrossShadowBoundariesEnabled test option.

* DumpRenderTree/TestOptions.cpp:
(TestOptions::TestOptions):
* DumpRenderTree/TestOptions.h:
* DumpRenderTree/mac/DumpRenderTree.mm:
(resetWebPreferencesToConsistentValues):
(setWebPreferencesForTestOptions):

LayoutTests:

Reviewed by Antti Koivisto and Wenson Hsieh.

Added regression tests using ref tests since getSelection() doesn't expose any node inside a shadow tree.

* editing/selection/selection-across-shadow-boundaries-mixed-editability-1-expected.html: Added.
* editing/selection/selection-across-shadow-boundaries-mixed-editability-1.html: Added.
* editing/selection/selection-across-shadow-boundaries-mixed-editability-2-expected.html: Added.
* editing/selection/selection-across-shadow-boundaries-mixed-editability-2.html: Added.
* editing/selection/selection-across-shadow-boundaries-mixed-editability-3-expected.html: Added.
* editing/selection/selection-across-shadow-boundaries-mixed-editability-3.html: Added.
* editing/selection/selection-across-shadow-boundaries-mixed-editability-4-expected.html: Added.
* editing/selection/selection-across-shadow-boundaries-mixed-editability-4.html: Added.
* editing/selection/selection-across-shadow-boundaries-mixed-editability-5-expected.html: Added.
* editing/selection/selection-across-shadow-boundaries-mixed-editability-5.html: Added.
* editing/selection/selection-across-shadow-boundaries-readonly-1-expected.html: Added.
* editing/selection/selection-across-shadow-boundaries-readonly-1.html: Added.
* editing/selection/selection-across-shadow-boundaries-readonly-2-expected.html: Added.
* editing/selection/selection-across-shadow-boundaries-readonly-2.html: Added.
* editing/selection/selection-across-shadow-boundaries-readonly-3-expected.html: Added.
* editing/selection/selection-across-shadow-boundaries-readonly-3.html: Added.
* editing/selection/selection-across-shadow-boundaries-user-select-all-1-expected.html: Added.
* editing/selection/selection-across-shadow-boundaries-user-select-all-1.html: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236519 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoMiniBrowser doesn't respect default enabled-ness of experimental and internal debug...
rniwa@webkit.org [Wed, 26 Sep 2018 19:47:46 +0000 (19:47 +0000)]
MiniBrowser doesn't respect default enabled-ness of experimental and internal debug features
https://bugs.webkit.org/show_bug.cgi?id=189989

Reviewed by Simon Fraser.

When the preference isn't found in user defaults, use the default value of each feature's enabledness.

* MiniBrowser/mac/AppDelegate.m:
(defaultConfiguration):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236518 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoIgnore-opens-during-unload counter of a parent should apply to its children during...
cdumez@apple.com [Wed, 26 Sep 2018 19:29:54 +0000 (19:29 +0000)]
Ignore-opens-during-unload counter of a parent should apply to its children during beforeunload event
https://bugs.webkit.org/show_bug.cgi?id=189376
<rdar://problem/44282754>

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Rebaseline existing test now that one more check is passing.

* web-platform-tests/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/ignore-opens-during-unload.window-expected.txt:

Source/WebCore:

Make sure the Ignore-opens-during-unload counter of a parent stays incremented while we are firing the
beforeunload event for its descendants, as per:
- https://html.spec.whatwg.org/multipage/browsing-the-web.html#prompt-to-unload-a-document

No new tests, rebaselined existing tests.

* loader/FrameLoader.cpp:
(WebCore::FrameLoader::shouldClose):
(WebCore::FrameLoader::dispatchBeforeUnloadEvent):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236517 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoWebGL 2: Adding logging to in-progress features
justin_fan@apple.com [Wed, 26 Sep 2018 19:16:52 +0000 (19:16 +0000)]
WebGL 2: Adding logging to in-progress features
https://bugs.webkit.org/show_bug.cgi?id=189978

Reviewed by Jon Lee.

Logging will allow us to better identify the most in-demand WebGL 2 features and prioritize our efforts.

No tests as no change in WebGL functionality.

* html/canvas/WebGL2RenderingContext.cpp: Added logging statement to every function not yet implemented.
(WebCore::WebGL2RenderingContext::blitFramebuffer):
(WebCore::WebGL2RenderingContext::framebufferTextureLayer):
(WebCore::WebGL2RenderingContext::invalidateFramebuffer):
(WebCore::WebGL2RenderingContext::invalidateSubFramebuffer):
(WebCore::WebGL2RenderingContext::readBuffer):
(WebCore::WebGL2RenderingContext::texStorage3D):
(WebCore::WebGL2RenderingContext::texImage2D):
(WebCore::WebGL2RenderingContext::texImage3D):
(WebCore::WebGL2RenderingContext::texSubImage2D):
(WebCore::WebGL2RenderingContext::texSubImage3D):
(WebCore::WebGL2RenderingContext::copyTexSubImage3D):
(WebCore::WebGL2RenderingContext::compressedTexImage2D):
(WebCore::WebGL2RenderingContext::compressedTexImage3D):
(WebCore::WebGL2RenderingContext::compressedTexSubImage3D):
(WebCore::WebGL2RenderingContext::getFragDataLocation):
(WebCore::WebGL2RenderingContext::uniform1ui):
(WebCore::WebGL2RenderingContext::uniform2ui):
(WebCore::WebGL2RenderingContext::uniform3ui):
(WebCore::WebGL2RenderingContext::uniform4ui):
(WebCore::WebGL2RenderingContext::uniform1uiv):
(WebCore::WebGL2RenderingContext::uniform2uiv):
(WebCore::WebGL2RenderingContext::uniform3uiv):
(WebCore::WebGL2RenderingContext::uniform4uiv):
(WebCore::WebGL2RenderingContext::uniformMatrix2x3fv):
(WebCore::WebGL2RenderingContext::uniformMatrix3x2fv):
(WebCore::WebGL2RenderingContext::uniformMatrix2x4fv):
(WebCore::WebGL2RenderingContext::uniformMatrix4x2fv):
(WebCore::WebGL2RenderingContext::uniformMatrix3x4fv):
(WebCore::WebGL2RenderingContext::uniformMatrix4x3fv):
(WebCore::WebGL2RenderingContext::vertexAttribI4i):
(WebCore::WebGL2RenderingContext::vertexAttribI4iv):
(WebCore::WebGL2RenderingContext::vertexAttribI4ui):
(WebCore::WebGL2RenderingContext::vertexAttribI4uiv):
(WebCore::WebGL2RenderingContext::vertexAttribIPointer):
(WebCore::WebGL2RenderingContext::drawRangeElements):
(WebCore::WebGL2RenderingContext::createQuery):
(WebCore::WebGL2RenderingContext::deleteQuery):
(WebCore::WebGL2RenderingContext::isQuery):
(WebCore::WebGL2RenderingContext::beginQuery):
(WebCore::WebGL2RenderingContext::endQuery):
(WebCore::WebGL2RenderingContext::getQuery):
(WebCore::WebGL2RenderingContext::getQueryParameter):
(WebCore::WebGL2RenderingContext::createSampler):
(WebCore::WebGL2RenderingContext::deleteSampler):
(WebCore::WebGL2RenderingContext::isSampler):
(WebCore::WebGL2RenderingContext::bindSampler):
(WebCore::WebGL2RenderingContext::samplerParameteri):
(WebCore::WebGL2RenderingContext::samplerParameterf):
(WebCore::WebGL2RenderingContext::getSamplerParameter):
(WebCore::WebGL2RenderingContext::fenceSync):
(WebCore::WebGL2RenderingContext::isSync):
(WebCore::WebGL2RenderingContext::deleteSync):
(WebCore::WebGL2RenderingContext::clientWaitSync):
(WebCore::WebGL2RenderingContext::waitSync):
(WebCore::WebGL2RenderingContext::getSyncParameter):
(WebCore::WebGL2RenderingContext::createTransformFeedback):
(WebCore::WebGL2RenderingContext::deleteTransformFeedback):
(WebCore::WebGL2RenderingContext::isTransformFeedback):
(WebCore::WebGL2RenderingContext::bindTransformFeedback):
(WebCore::WebGL2RenderingContext::beginTransformFeedback):
(WebCore::WebGL2RenderingContext::endTransformFeedback):
(WebCore::WebGL2RenderingContext::transformFeedbackVaryings):
(WebCore::WebGL2RenderingContext::getTransformFeedbackVarying):
(WebCore::WebGL2RenderingContext::pauseTransformFeedback):
(WebCore::WebGL2RenderingContext::resumeTransformFeedback):
(WebCore::WebGL2RenderingContext::bindBufferBase):
(WebCore::WebGL2RenderingContext::bindBufferRange):
(WebCore::WebGL2RenderingContext::getUniformIndices):
(WebCore::WebGL2RenderingContext::getUniformBlockIndex):
(WebCore::WebGL2RenderingContext::getActiveUniformBlockParameter):
(WebCore::WebGL2RenderingContext::getActiveUniformBlockName):
(WebCore::WebGL2RenderingContext::uniformBlockBinding):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236516 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months ago[GTK] Unreviewed test gardening
aboya@igalia.com [Wed, 26 Sep 2018 19:13:53 +0000 (19:13 +0000)]
[GTK] Unreviewed test gardening
https://bugs.webkit.org/show_bug.cgi?id=190002

* TestExpectations:
* platform/gtk/TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236515 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoWe should zero unused property storage when rebalancing array storage.
keith_miller@apple.com [Wed, 26 Sep 2018 18:57:32 +0000 (18:57 +0000)]
We should zero unused property storage when rebalancing array storage.
https://bugs.webkit.org/show_bug.cgi?id=188151

Reviewed by Michael Saboff.

JSTests:

* stress/splice-should-zero-property-storage-when-rebalancing.js: Added.

Source/JavaScriptCore:

In unshiftCountSlowCase we sometimes will move property storage to the right even when net adding elements.
This can happen because we "balance" the pre/post-capacity in that code so we need to zero the unused
property storage.

* runtime/JSArray.cpp:
(JSC::JSArray::unshiftCountSlowCase):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236514 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoUnreviewed, apply post-landing review comments after r236512.
cdumez@apple.com [Wed, 26 Sep 2018 18:45:23 +0000 (18:45 +0000)]
Unreviewed, apply post-landing review comments after r236512.

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::didCreateMainFrame):
(WebKit::WebPageProxy::didCreateSubframe):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236513 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoUIProcess should process incoming sync IPC from WebProcess when waiting for a sync...
cdumez@apple.com [Wed, 26 Sep 2018 18:38:26 +0000 (18:38 +0000)]
UIProcess should process incoming sync IPC from WebProcess when waiting for a sync IPC reply from it
https://bugs.webkit.org/show_bug.cgi?id=189927

Reviewed by Geoffrey Garen.

UIProcess should process incoming sync IPC from WebProcess when waiting for a sync IPC reply from it
in order to avoid deadlocks. This is not an issue currently because the WebProcess does process
incoming sync IPC when waiting for a sync IPC reply. However, we plan to change this in the future
in order to avoid bugs caused by re-entering WebCore at unsafe times.

The reason the UIProcess previously did not do out of order sync IPC process was to avoid processing
a synchronous policy decision IPC for a frameID it did not know about yet, due to the DidCreateMainFrame /
DidCreateSubframe IPC messages being asynchronous. To address this issue, the decidePolicyForNavigationActionSync
IPC handler now calls didCreateMainFrame() / didCreateSubframe() as needed if it does not know about
the frame yet. Note that synchronous policy decisions are rare and are currently only needed by initial
about:blank and fragment navigations.

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::didCreateMainFrame):
(WebKit::WebPageProxy::didCreateSubframe):
(WebKit::WebPageProxy::decidePolicyForNavigationActionAsync):
(WebKit::WebPageProxy::decidePolicyForNavigationAction):
(WebKit::WebPageProxy::decidePolicyForNavigationActionSync):
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):

* WebProcess/WebPage/WebFrame.cpp:
(WebKit::WebFrame::createWithCoreMainFrame):
(WebKit::WebFrame::createSubframe):
Drop DispatchMessageEvenWhenWaitingForSyncReply SendOption when sending the
DidCreateMainFrame / DidCreateSubframe IPC. Previously, this SendOption has
no effect because the IPC::Connection would have the
m_onlySendMessagesAsDispatchWhenWaitingForSyncReplyWhenProcessingSuchAMessage
flag set to true. However, now that we stop setting this flag on the IPC
connection from the WebProcess to the UIProcess, it would lead to those
IPC messages getting processed out of order with regards to the
DecidePolicyForNavigationAsync asynchronous IPC. DidCreateMainFrame would
sometimes get processed *after* the DecidePolicyForNavigationAsync IPC
and we would not know about the frameID yet.

* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::initializeConnection):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236512 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months ago[MediaStream] Clean up RealtimeMediaSource settings change handling
eric.carlson@apple.com [Wed, 26 Sep 2018 18:21:52 +0000 (18:21 +0000)]
[MediaStream] Clean up RealtimeMediaSource settings change handling
https://bugs.webkit.org/show_bug.cgi?id=189998
<rdar://problem/44797884>

Reviewed by Youenn Fablet.

No new tests, no change in functionality.

* platform/mediastream/RealtimeMediaSource.cpp:
(WebCore::RealtimeMediaSource::notifySettingsDidChangeObservers):
(WebCore::RealtimeMediaSource::setSize):
(WebCore::RealtimeMediaSource::setFrameRate):
(WebCore::RealtimeMediaSource::setAspectRatio):
(WebCore::RealtimeMediaSource::setFacingMode):
(WebCore::RealtimeMediaSource::setVolume):
(WebCore::RealtimeMediaSource::setSampleRate):
(WebCore::RealtimeMediaSource::setSampleSize):
(WebCore::RealtimeMediaSource::setEchoCancellation):
(WebCore::RealtimeMediaSource::settingsDidChange): Deleted.
* platform/mediastream/RealtimeMediaSource.h:
* platform/mediastream/mac/AVVideoCaptureSource.mm:
(WebCore::AVVideoCaptureSource::settingsDidChange):
* platform/mediastream/mac/CoreAudioCaptureSource.cpp:
(WebCore::CoreAudioCaptureSource::settingsDidChange):
* platform/mediastream/mac/DisplayCaptureSourceCocoa.cpp:
(WebCore::DisplayCaptureSourceCocoa::settingsDidChange):
* platform/mock/MockRealtimeAudioSource.cpp:
(WebCore::MockRealtimeAudioSource::settingsDidChange):
* platform/mock/MockRealtimeVideoSource.cpp:
(WebCore::MockRealtimeVideoSource::settingsDidChange):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236511 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoUnreviewed, add scope verification handling
yusukesuzuki@slowstart.org [Wed, 26 Sep 2018 16:12:42 +0000 (16:12 +0000)]
Unreviewed, add scope verification handling
https://bugs.webkit.org/show_bug.cgi?id=189780

* runtime/ArrayPrototype.cpp:
(JSC::arrayProtoFuncIndexOf):
(JSC::arrayProtoFuncLastIndexOf):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236505 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoMarking two more media-fragments/ tests as flakey after the iOS12 update
tsavell@apple.com [Wed, 26 Sep 2018 16:12:34 +0000 (16:12 +0000)]
Marking two more media-fragments/ tests as flakey after the iOS12 update
https://bugs.webkit.org/show_bug.cgi?id=187557

Unreviewed Test Gardening

* platform/ios/TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236504 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months ago[Flatpak] Bump to apr 1.6.5
philn@webkit.org [Wed, 26 Sep 2018 15:59:11 +0000 (15:59 +0000)]
[Flatpak] Bump to apr 1.6.5

Version 1.6.3 is no longer available on Apache's website.

Rubber-stamped by Michael Catanzaro.

* flatpak/org.webkit.WebKit.yaml:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236503 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoUnreviewed, rolling out r236498.
ryanhaddad@apple.com [Wed, 26 Sep 2018 15:48:54 +0000 (15:48 +0000)]
Unreviewed, rolling out r236498.

This wasn't intentionally committed

Reverted changeset:

"Import libvpx source code"
https://bugs.webkit.org/show_bug.cgi?id=189954
https://trac.webkit.org/changeset/236498

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236502 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months ago[Web Animations] Ensure renderers with accelerated animations have layers
graouts@webkit.org [Wed, 26 Sep 2018 14:34:10 +0000 (14:34 +0000)]
[Web Animations] Ensure renderers with accelerated animations have layers
https://bugs.webkit.org/show_bug.cgi?id=189990
<rdar://problem/44791222>

Reviewed by Zalan Bujtas.

We have done some work already in webkit.org/b/189784 to prevent never-ending calls to DocumentTimeline::updateAnimations(). This was due to
the change made for webkit.org/b/186930 where we queued calls to updateAnimations() in KeyframeEffectReadOnly::applyPendingAcceleratedActions()
while we were waiting for a renderer with a layer backing for a given animation target. Instead of doing this, we now ensure renderers always
have a layer when they have an accelerated animation applied.

No new tests, this is already covered by webanimations/accelerated-animation-with-delay.html and webanimations/opacity-animation-yields-compositing-span.html
which respectively check that we can apply an accelerated animation to a non-positioned block and an inline element.

* animation/DocumentTimeline.cpp:
(WebCore::DocumentTimeline::runningAnimationsForElementAreAllAccelerated const): This method should have been marked const all along and it is
now required so it can be called through RenderBox::requiresLayer() and RenderInline::requiresLayer().
(WebCore::DocumentTimeline::runningAnimationsForElementAreAllAccelerated): Deleted.
* animation/DocumentTimeline.h:
* animation/KeyframeEffectReadOnly.cpp:
(WebCore::KeyframeEffectReadOnly::applyPendingAcceleratedActions): Stop enqueuing the accelerated actions in case we're lacking a composited renderer
since this situation should no longer arise.
* rendering/RenderBox.h: Make requiresLayer() return true if this renderer's element is the target of accelerated animations.
* rendering/RenderBoxModelObject.cpp:
(WebCore::RenderBoxModelObject::hasRunningAcceleratedAnimations const): Query the document timeline, if it exists, to check that this renderer's element
has accelerated animations applied.
* rendering/RenderBoxModelObject.h:
* rendering/RenderInline.h: Make requiresLayer() return true if this renderer's element is the target of accelerated animations.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236501 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoREGRESSION (PSON): White or Black flash occurs when process swapping on navigation...
antti@apple.com [Wed, 26 Sep 2018 12:06:11 +0000 (12:06 +0000)]
REGRESSION (PSON): White or Black flash occurs when process swapping on navigation on iOS
https://bugs.webkit.org/show_bug.cgi?id=189695
<rdar://problem/44551146>

Reviewed by Simon Fraser.

Freeze the layers on UI process side during process swap.

* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _processWillChange]):

Shared work of _processWillSwap and _processDidExit.

(-[WKWebView _processWillSwap]):
(-[WKWebView _processDidExit]):

Split into two functions. Don't reset scroll position and similar when doing navigation swap.

* UIProcess/API/Cocoa/WKWebViewInternal.h:
* UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h:
* UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:
(WebKit::RemoteLayerTreeDrawingAreaProxy::RemoteLayerTreeDrawingAreaProxy):
(WebKit::RemoteLayerTreeDrawingAreaProxy::detachRemoteLayerTreeHost):

Add to way to detach RemoteLayerTreeHost from the drawing area. Inert RemoteLayerTreeHost will host
the frozen layers.

(WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree):
(WebKit::RemoteLayerTreeDrawingAreaProxy::updateDebugIndicator):
(WebKit::RemoteLayerTreeDrawingAreaProxy::hideContentUntilPendingUpdate):
(WebKit::RemoteLayerTreeDrawingAreaProxy::hideContentUntilAnyUpdate):
(WebKit::RemoteLayerTreeDrawingAreaProxy::prepareForAppSuspension):
(WebKit::RemoteLayerTreeDrawingAreaProxy::hasVisibleContent const):
(WebKit::RemoteLayerTreeDrawingAreaProxy::layerWithIDForTesting const):
* UIProcess/RemoteLayerTree/RemoteLayerTreeHost.h:
* UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm:
(WebKit::RemoteLayerTreeHost::RemoteLayerTreeHost):
(WebKit::RemoteLayerTreeHost::updateLayerTree):
(WebKit::RemoteLayerTreeHost::animationDidStart):
(WebKit::RemoteLayerTreeHost::animationDidEnd):
(WebKit::RemoteLayerTreeHost::detachFromDrawingArea):

Clear the DrawingArea backpointer.

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::continueNavigationInNewProcess):
(WebKit::WebPageProxy::resetState):

Detach and save the current RemoteLayerTreeHost on navigation swap.

* UIProcess/WebPageProxy.h:
* UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::processWillSwap):

Avoid reseting the scroll position.

* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::setAcceleratedCompositingRootLayer):

Drop the frozen layers after setting the new root layer.

* UIProcess/mac/WebPageProxyMac.mm:
(WebKit::WebPageProxy::setAcceleratedCompositingRootLayer):

For completeness do this also on Mac (where remote layers are currently not used).

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236500 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months ago[JSC] offlineasm parser should handle CRLF in asm files
commit-queue@webkit.org [Wed, 26 Sep 2018 10:45:37 +0000 (10:45 +0000)]
[JSC] offlineasm parser should handle CRLF in asm files
https://bugs.webkit.org/show_bug.cgi?id=189949

Patch by Koby Boyango <koby.b@mce.systems> on 2018-09-26
Reviewed by Mark Lam.

* offlineasm/parser.rb:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236499 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoImport libvpx source code
youenn@apple.com [Wed, 26 Sep 2018 06:10:10 +0000 (06:10 +0000)]
Import libvpx source code
https://bugs.webkit.org/show_bug.cgi?id=189954

Reviewed by Eric Carlson.

* Source/third_party/libvpx: Added.
* .gitignore: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236498 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoMake frame flattening an internal debug feature
rniwa@webkit.org [Wed, 26 Sep 2018 05:26:30 +0000 (05:26 +0000)]
Make frame flattening an internal debug feature
https://bugs.webkit.org/show_bug.cgi?id=189984

Reviewed by Simon Fraser.

Made frame flattening a runtime switchable from internal debug menu.

To avoid having to enumerate three distinct values in the settings, made it a boolean flag in WKPreference.
That's what's exposd as an API anyway.

* Shared/WebPreferences.yaml:
* Shared/WebPreferencesDefaultValues.h:
* UIProcess/API/C/WKPreferences.cpp:
(WKPreferencesSetFrameFlatteningEnabled):
(WKPreferencesGetFrameFlatteningEnabled):
* UIProcess/API/glib/WebKitSettings.cpp:
(webkit_settings_get_enable_frame_flattening):
(webkit_settings_set_enable_frame_flattening):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updatePreferences):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236497 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months ago[JSC] Optimize Array#lastIndexOf
yusukesuzuki@slowstart.org [Wed, 26 Sep 2018 05:16:22 +0000 (05:16 +0000)]
[JSC] Optimize Array#lastIndexOf
https://bugs.webkit.org/show_bug.cgi?id=189780

Reviewed by Saam Barati.

JSTests:

* stress/array-lastindexof-array-prototype-trap.js: Added.
(shouldBe):
(AncestorArray.prototype.get 2):
(AncestorArray):
* stress/array-lastindexof-have-a-bad-time-c-runtime.js: Added.
(shouldBe):
* stress/array-lastindexof-hole-nan.js: Added.
(shouldBe):
(throw.new.Error):
* stress/array-lastindexof-infinity.js: Added.
(shouldBe):
(throw.new.Error):
* stress/array-lastindexof-negative-zero.js: Added.
(shouldBe):
(throw.new.Error):
* stress/array-lastindexof-own-getter.js: Added.
(shouldBe):
(throw.new.Error.get array):
(get array):
* stress/array-lastindexof-prototype-trap.js: Added.
(shouldBe):
(DerivedArray.prototype.get 2):
(DerivedArray):

Source/JavaScriptCore:

Optimize Array#lastIndexOf as the same to Array#indexOf. We add a fast path
for JSArray with contiguous storage.

* runtime/ArrayPrototype.cpp:
(JSC::arrayProtoFuncLastIndexOf):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236496 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoCalls to baselineCodeBlockForOriginAndBaselineCodeBlock in operationMaterializeObject...
sbarati@apple.com [Wed, 26 Sep 2018 03:14:09 +0000 (03:14 +0000)]
Calls to baselineCodeBlockForOriginAndBaselineCodeBlock in operationMaterializeObjectInOSR should actually pass in the baseline CodeBlock
https://bugs.webkit.org/show_bug.cgi?id=189940
<rdar://problem/43640987>

Reviewed by Mark Lam.

JSTests:

* stress/use-baseline-codeblock-materialize-osr-exit.js: Added.

Source/JavaScriptCore:

We were calling baselineCodeBlockForOriginAndBaselineCodeBlock with the FTL
CodeBlock. There is nothing semantically wrong with doing that (except for
poor naming), however, the poor naming here led us to make a real semantic
mistake. We wanted the baseline CodeBlock's constant pool, but we were
accessing the FTL CodeBlock's constant pool accidentally. We need to
access the baseline CodeBlock's constant pool when we update the NewArrayBuffer
constant value.

* bytecode/InlineCallFrame.h:
(JSC::baselineCodeBlockForOriginAndBaselineCodeBlock):
* ftl/FTLOperations.cpp:
(JSC::FTL::operationMaterializeObjectInOSR):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236495 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months ago[MediaStream] Add Mac window capture source
eric.carlson@apple.com [Wed, 26 Sep 2018 02:33:02 +0000 (02:33 +0000)]
[MediaStream] Add Mac window capture source
https://bugs.webkit.org/show_bug.cgi?id=189958
<rdar://problem/44767616>

Reviewed by Youenn Fablet.

Source/WebCore:

* SourcesCocoa.txt: Add WindowDisplayCaptureSourceMac.
* WebCore.xcodeproj/project.pbxproj: Ditto.

* platform/mediastream/mac/DisplayCaptureManagerCocoa.cpp:
(WebCore::DisplayCaptureManagerCocoa::captureDevices): Include window "devices".
(WebCore::DisplayCaptureManagerCocoa::updateWindowCaptureDevices): New.
(WebCore::DisplayCaptureManagerCocoa::windowCaptureDeviceWithPersistentID): New.
(WebCore::DisplayCaptureManagerCocoa::captureDeviceWithPersistentID): Include window devices.
* platform/mediastream/mac/DisplayCaptureManagerCocoa.h:

* platform/mediastream/mac/DisplayCaptureSourceCocoa.cpp:
(WebCore::DisplayCaptureSourceCocoa::DisplayCaptureSourceCocoa):
(WebCore::DisplayCaptureSourceCocoa::settings): Use frameSize, report surface type and
logical surface.
(WebCore::DisplayCaptureSourceCocoa::settingsDidChange): Clear m_lastSampleBuffer when size changes.
(WebCore::DisplayCaptureSourceCocoa::frameSize const): New, return size() or intrinsic size.
(WebCore::DisplayCaptureSourceCocoa::setIntrinsicSize): New.
(WebCore::DisplayCaptureSourceCocoa::emitFrame): generateFrame now returns a CVPixelBuffer
so derived classes don't have to deal with resizing/transforming.
* platform/mediastream/mac/DisplayCaptureSourceCocoa.h:

* platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp:

* platform/mediastream/mac/ScreenDisplayCaptureSourceMac.h:
* platform/mediastream/mac/ScreenDisplayCaptureSourceMac.mm:
(WebCore::ScreenDisplayCaptureSourceMac::ScreenDisplayCaptureSourceMac): Add fixme.
(WebCore::ScreenDisplayCaptureSourceMac::createDisplayStream): Update intrinsic size when
width/height changes.
(WebCore::ScreenDisplayCaptureSourceMac::generateFrame): Return a CVPixelBuffer.

* platform/mediastream/mac/WindowDisplayCaptureSourceMac.h: Added.
* platform/mediastream/mac/WindowDisplayCaptureSourceMac.mm: Added.
(WebCore::anyOfCGWindow):
(WebCore::windowDescription):
(WebCore::WindowDisplayCaptureSourceMac::create):
(WebCore::WindowDisplayCaptureSourceMac::WindowDisplayCaptureSourceMac):
(WebCore::WindowDisplayCaptureSourceMac::windowImage):
(WebCore::WindowDisplayCaptureSourceMac::generateFrame):
(WebCore::WindowDisplayCaptureSourceMac::pixelBufferFromCGImage):
(WebCore::WindowDisplayCaptureSourceMac::windowCaptureDeviceWithPersistentID):
(WebCore::WindowDisplayCaptureSourceMac::windowCaptureDevices):

Source/WebKit:

* UIProcess/UserMediaPermissionRequestManagerProxy.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::beginMonitoringCaptureDevices): Sync with webcore prefs before listening
to device changes so we listen on the correct devices.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236494 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoImport libvpx source code
ryanhaddad@apple.com [Wed, 26 Sep 2018 02:03:00 +0000 (02:03 +0000)]
Import libvpx source code
https://bugs.webkit.org/show_bug.cgi?id=189954

Another unreviewed build fix attempt.

* Source/third_party/libvpx/source/libvpx/VPX.framework: Remove unneeded folder.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236493 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoUnreviewed, rolling out r236471 and r236480.
cdumez@apple.com [Wed, 26 Sep 2018 01:27:54 +0000 (01:27 +0000)]
Unreviewed, rolling out r236471 and r236480.

Seems to be causing some flaky crashes

Reverted changesets:

"UIProcess should process incoming sync IPC from WebProcess
when waiting for a sync IPC reply from it"
https://bugs.webkit.org/show_bug.cgi?id=189927
https://trac.webkit.org/changeset/236471

"Revert some of the changes in r236471"
https://bugs.webkit.org/show_bug.cgi?id=189973
https://trac.webkit.org/changeset/236480

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236492 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoEnable customization of the file upload panel
conrad_shultz@apple.com [Wed, 26 Sep 2018 01:18:53 +0000 (01:18 +0000)]
Enable customization of the file upload panel
https://bugs.webkit.org/show_bug.cgi?id=189970

Reviewed by Wenson Hsieh.

With this change, platform implementations can override, or implement in a category,
+[WKContentView _fileUploadPanelClass] as needed.

* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _showRunOpenPanel:resultListener:]):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236491 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoWebGL 2 Conformance: primitive restart and draw_primitive_restart WebGL2 sample
justin_fan@apple.com [Wed, 26 Sep 2018 00:24:52 +0000 (00:24 +0000)]
WebGL 2 Conformance: primitive restart and draw_primitive_restart WebGL2 sample
https://bugs.webkit.org/show_bug.cgi?id=189625
<rdar://problem/42882620>

Reviewed by Dean Jackson.

Source/WebCore:

Ref test: webgl/webgl2-primitive-restart.html.

Implement support for Primitive Restart Fixed Index as expected
by the WebGL 2 specifications.

* html/canvas/WebGL2RenderingContext.cpp:
(WebCore::WebGL2RenderingContext::validateIndexArrayConservative):
* html/canvas/WebGLRenderingContextBase.h:
(WebCore::WebGLRenderingContextBase::getLastIndex): Template that must be defined in header.
* html/canvas/WebGLRenderingContextBase.cpp:
(WebCore::WebGLRenderingContextBase::validateIndexArrayPrecise):
* platform/graphics/GraphicsContext3D.h:
* platform/graphics/cocoa/GraphicsContext3DCocoa.mm:
(WebCore::GraphicsContext3D::GraphicsContext3D):
* platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:
(WebCore::GraphicsContext3D::primitiveRestartIndex):

LayoutTests:

Implement support for Primitive Restart Fixed Index as expected
by the WebGL 2 specifications.

* TestExpectations: Skip some flaky tests between different Mac machines under 2.0.0.
* webgl/webgl2-primitive-restart.html: Canary ref test to be run as part of LayoutTests suite.
* webgl/webgl2-primitive-restart-expected.html:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236490 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoUnreviewed, internal build fix after r236479.
youenn@apple.com [Tue, 25 Sep 2018 23:33:08 +0000 (23:33 +0000)]
Unreviewed, internal build fix after r236479.

* Source/third_party/libvpx/source/libvpx/_iosbuild: Removed.
Folder is unneeded.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236488 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoUnreviewed, rolling out r236420 and r236458.
cdumez@apple.com [Tue, 25 Sep 2018 23:29:34 +0000 (23:29 +0000)]
Unreviewed, rolling out r236420 and r236458.

This change is not fully correct

Reverted changesets:

"Do not do early processing of incoming sync IPC unless we're
waiting for a sync IPC reply"
https://bugs.webkit.org/show_bug.cgi?id=186941
https://trac.webkit.org/changeset/236420

"Unreviewed, update bug number of http/tests/misc/blob-
size.html crash on Windows"
https://trac.webkit.org/changeset/236458

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236487 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoUnreviewed, a quick fix after r236481.
jiewen_tan@apple.com [Tue, 25 Sep 2018 23:21:25 +0000 (23:21 +0000)]
Unreviewed, a quick fix after r236481.

* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::setMockWebAuthenticationConfiguration):
Add an early return, so we don't end up with setting MockWebAuthenticationConfiguration twice.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236486 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoChange from HAVE(CFNETWORK_STORAGE_PARTITIONING) to ENABLE(RESOURCE_LOAD_STATISTICS)
wilander@apple.com [Tue, 25 Sep 2018 22:49:47 +0000 (22:49 +0000)]
Change from HAVE(CFNETWORK_STORAGE_PARTITIONING) to ENABLE(RESOURCE_LOAD_STATISTICS)
https://bugs.webkit.org/show_bug.cgi?id=189959
<rdar://problem/44767642>

Reviewed by Chris Dumez.

Source/WebCore:

No new tests because of no code change.

We no longer make use of CFNetwork's cookie partitioning so we should
change the compile-time flag to something that makes sense. This should
also make it easier/cleaner for other ports.

* dom/Document.cpp:
(WebCore::Document::hasStorageAccess):
(WebCore::Document::requestStorageAccess):
(WebCore::Document::setHasRequestedPageSpecificStorageAccessWithUserInteraction):
* dom/Document.h:
* loader/EmptyFrameLoaderClient.h:
* loader/FrameLoaderClient.h:
* loader/ResourceLoadObserver.cpp:
(WebCore::ResourceLoadObserver::logUserInteractionWithReducedTimeResolution):
(WebCore::ResourceLoadObserver::logWindowCreation):
* loader/ResourceLoadObserver.h:
* page/DOMWindow.cpp:
(WebCore::DOMWindow::createWindow):
* platform/network/NetworkStorageSession.h:
* platform/network/cf/NetworkStorageSessionCFNet.cpp:
* platform/network/cocoa/NetworkStorageSessionCocoa.mm:
(WebCore::cookiesForURL):
(WebCore::NetworkStorageSession::setCookiesFromDOM const):

Source/WebKit:

We no longer make use of CFNetwork's cookie partitioning so we should
change the compile-time flag to something that makes sense. This should
also make it easier/cleaner for other ports.

* NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::cookiesForDOM):
(WebKit::NetworkConnectionToWebProcess::setCookiesFromDOM):
(WebKit::NetworkConnectionToWebProcess::removeStorageAccessForFrame):
(WebKit::NetworkConnectionToWebProcess::removeStorageAccessForAllFramesOnPage):
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::initializeNetworkProcess):
* NetworkProcess/NetworkProcess.h:
* NetworkProcess/NetworkProcess.messages.in:
* NetworkProcess/NetworkProcessCreationParameters.cpp:
(WebKit::NetworkProcessCreationParameters::encode const):
(WebKit::NetworkProcessCreationParameters::decode):
* NetworkProcess/NetworkProcessCreationParameters.h:
* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::didFinishLoading):
(WebKit::NetworkResourceLoader::sendResultForCacheEntry):
* NetworkProcess/NetworkResourceLoader.h:
* NetworkProcess/cache/NetworkCache.cpp:
(WebKit::NetworkCache::Cache::retrieve):
* NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
* NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
(WebKit::NetworkDataTaskCocoa::applyCookieBlockingPolicy):
(WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):
(WebKit::NetworkDataTaskCocoa::willPerformHTTPRedirection):
* Shared/WebProcessCreationParameters.cpp:
(WebKit::WebProcessCreationParameters::encode const):
(WebKit::WebProcessCreationParameters::decode):
* Shared/WebProcessCreationParameters.h:
* UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::WebProcessPool::platformInitializeWebProcess):
(WebKit::WebProcessPool::platformInitializeNetworkProcess):
* UIProcess/Network/NetworkProcessProxy.cpp:
* UIProcess/Network/NetworkProcessProxy.h:
* UIProcess/Network/NetworkProcessProxy.messages.in:
* UIProcess/WebPageProxy.cpp:
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* UIProcess/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::callHasStorageAccessForFrameHandler):
(WebKit::WebResourceLoadStatisticsStore::callGrantStorageAccessHandler):
(WebKit::WebResourceLoadStatisticsStore::removeAllStorageAccess):
(WebKit::WebResourceLoadStatisticsStore::setCacheMaxAgeCap):
(WebKit::WebResourceLoadStatisticsStore::callUpdatePrevalentDomainsToBlockCookiesForHandler):
(WebKit::WebResourceLoadStatisticsStore::callRemoveDomainsHandler):
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::setCacheMaxAgeCapForPrevalentResources):
(WebKit::WebsiteDataStore::resetCacheMaxAgeCapForPrevalentResources):
(WebKit::WebsiteDataStore::networkProcessDidCrash):
* UIProcess/WebsiteData/WebsiteDataStore.h:
* WebProcess/WebCoreSupport/WebChromeClient.cpp:
* WebProcess/WebCoreSupport/WebChromeClient.h:
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::detachedFromParent2):
(WebKit::WebFrameLoaderClient::dispatchWillChangeDocument):
* WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
* WebProcess/WebPage/WebPage.cpp:
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::initializeWebProcess):

Source/WTF:

* wtf/Platform.h:
    Enables RESOURCE_LOAD_STATISTICS for Cocoa platforms.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236485 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoWebGL 2 conformance: expected test results for the deqp suite (mac-mojave-wk2)
justin_fan@apple.com [Tue, 25 Sep 2018 22:49:34 +0000 (22:49 +0000)]
WebGL 2 conformance: expected test results for the deqp suite (mac-mojave-wk2)
https://bugs.webkit.org/show_bug.cgi?id=189942

Reviewed by Jon Lee.

Add expected results for the deqp suite with the new detailed format, for this spade for macOS Mojave.

* webgl/2.0.0/deqp/.../*-expected.txt: Added expected results.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236484 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months ago[WPE] Export jsc_ symbols
commit-queue@webkit.org [Tue, 25 Sep 2018 22:28:40 +0000 (22:28 +0000)]
[WPE] Export jsc_ symbols
https://bugs.webkit.org/show_bug.cgi?id=189964

Patch by Philippe Normand <pnormand@igalia.com> on 2018-09-25
Reviewed by Michael Catanzaro.

* webkitglib-symbols.map: Keep jsc_* symbols as visible so they
can be used by applications depending on WPE.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236482 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months ago[WebAuthN] Make AuthenticatorManager
jiewen_tan@apple.com [Tue, 25 Sep 2018 22:22:36 +0000 (22:22 +0000)]
[WebAuthN] Make AuthenticatorManager
https://bugs.webkit.org/show_bug.cgi?id=189279
<rdar://problem/44116792>

Reviewed by Chris Dumez.

Source/WebCore:

This patch does the following things in WebCore in order to support AuthenticatorManager:
1) It separates AuthenticatorTransport from PublicKeyCredentialDescriptor such that the enum
can be queried from WebKit directly.
2) It adds AuthenticatorAttachment to PublicKeyCredentialCreationOptions such that relying parties
could express their interests in cross platform authenticators.
3) It enhances IPC encoder/decoder of a few such that Vectors and empty objects can be correctly coded.
4) It moves the LocalAuthenticator implementation to WebKit to better integrate with AuthenticatorManager.
5) It moves linking to LocalAuthentication.framework to WebKit as well.
6) It temporarily bans old mock test mechanism in Internals so we could enable the new mock test mechanism in
WebKitTestRunner which we will have a better coverage of codes in UI Process. Those tests will be either
removed or ported to the new mechanism in Bug 189283.
7) It also removes "using namespace WebCore" from the top namespace in some .mm files as they are reordered
to where they could introduce name confusions.

Tests: http/wpt/webauthn/public-key-credential-create-failure-local.https.html
       http/wpt/webauthn/public-key-credential-create-success-local.https.html
       http/wpt/webauthn/public-key-credential-get-failure-local.https.html
       http/wpt/webauthn/public-key-credential-get-success-local.https.html
       http/wpt/webauthn/public-key-credential-is-user-verifying-platform-authenticator-available.html

* CMakeLists.txt:
* Configurations/WebCore.xcconfig:
* DerivedSources.make:
* Modules/webauthn/AuthenticatorTransport.h: Copied from Source/WebCore/platform/cocoa/LocalAuthenticationSoftLink.h.
* Modules/webauthn/AuthenticatorTransport.idl: Copied from Source/WebCore/Modules/webauthn/PublicKeyCredentialDescriptor.idl.
* Modules/webauthn/PublicKeyCredentialCreationOptions.h:
(WebCore::PublicKeyCredentialCreationOptions::encode const):
(WebCore::PublicKeyCredentialCreationOptions::decode):
* Modules/webauthn/PublicKeyCredentialCreationOptions.idl:
* Modules/webauthn/PublicKeyCredentialData.h:
(WebCore::PublicKeyCredentialData::encode const):
(WebCore::PublicKeyCredentialData::decode):
* Modules/webauthn/PublicKeyCredentialDescriptor.h:
(WebCore::PublicKeyCredentialDescriptor::encode const):
* Modules/webauthn/PublicKeyCredentialDescriptor.idl:
* Modules/webauthn/cocoa/LocalAuthenticator.mm: Removed.
* Sources.txt:
* SourcesCocoa.txt:
* WebCore.xcodeproj/project.pbxproj:
* dom/ExceptionData.h:
* platform/cocoa/LocalAuthenticationSoftLink.mm: Removed.
* platform/cocoa/SharedBufferCocoa.mm:
(-[WebCoreSharedBufferData initWithSharedBufferDataSegment:]):
* platform/cocoa/VideoFullscreenModelVideoElement.mm:
(VideoFullscreenModelVideoElement::VideoFullscreenModelVideoElement): Deleted.
(VideoFullscreenModelVideoElement::~VideoFullscreenModelVideoElement): Deleted.
(VideoFullscreenModelVideoElement::setVideoElement): Deleted.
(VideoFullscreenModelVideoElement::handleEvent): Deleted.
(VideoFullscreenModelVideoElement::updateForEventName): Deleted.
(VideoFullscreenModelVideoElement::willExitFullscreen): Deleted.
(VideoFullscreenModelVideoElement::setVideoFullscreenLayer): Deleted.
(VideoFullscreenModelVideoElement::waitForPreparedForInlineThen): Deleted.
(VideoFullscreenModelVideoElement::requestFullscreenMode): Deleted.
(VideoFullscreenModelVideoElement::setVideoLayerFrame): Deleted.
(VideoFullscreenModelVideoElement::setVideoLayerGravity): Deleted.
(VideoFullscreenModelVideoElement::observedEventNames): Deleted.
(VideoFullscreenModelVideoElement::eventNameAll): Deleted.
(VideoFullscreenModelVideoElement::fullscreenModeChanged): Deleted.
(VideoFullscreenModelVideoElement::addClient): Deleted.
(VideoFullscreenModelVideoElement::removeClient): Deleted.
(VideoFullscreenModelVideoElement::isVisible const): Deleted.
(VideoFullscreenModelVideoElement::setHasVideo): Deleted.
(VideoFullscreenModelVideoElement::setVideoDimensions): Deleted.
(VideoFullscreenModelVideoElement::willEnterPictureInPicture): Deleted.
(VideoFullscreenModelVideoElement::didEnterPictureInPicture): Deleted.
(VideoFullscreenModelVideoElement::failedToEnterPictureInPicture): Deleted.
(VideoFullscreenModelVideoElement::willExitPictureInPicture): Deleted.
(VideoFullscreenModelVideoElement::didExitPictureInPicture): Deleted.
* platform/graphics/ca/cocoa/PlatformCAAnimationCocoa.mm:
(WebCore::hasExplicitBeginTime):
(WebCore::setHasExplicitBeginTime):
(WebCore::toCAFillModeType):
(WebCore::toCAValueFunctionType):
(WebCore::toCAMediaTimingFunction):
(WebCore::PlatformCAAnimationCocoa::setFromValue):
(WebCore::PlatformCAAnimationCocoa::setToValue):
(WebCore::PlatformCAAnimationCocoa::setValues):
(fromCAFillModeType): Deleted.
(fromCAValueFunctionType): Deleted.
(PlatformCAAnimationCocoa::create): Deleted.
(PlatformCAAnimationCocoa::PlatformCAAnimationCocoa): Deleted.
(PlatformCAAnimationCocoa::~PlatformCAAnimationCocoa): Deleted.
(PlatformCAAnimationCocoa::copy const): Deleted.
(PlatformCAAnimationCocoa::platformAnimation const): Deleted.
(PlatformCAAnimationCocoa::keyPath const): Deleted.
(PlatformCAAnimationCocoa::beginTime const): Deleted.
(PlatformCAAnimationCocoa::setBeginTime): Deleted.
(PlatformCAAnimationCocoa::duration const): Deleted.
(PlatformCAAnimationCocoa::setDuration): Deleted.
(PlatformCAAnimationCocoa::speed const): Deleted.
(PlatformCAAnimationCocoa::setSpeed): Deleted.
(PlatformCAAnimationCocoa::timeOffset const): Deleted.
(PlatformCAAnimationCocoa::setTimeOffset): Deleted.
(PlatformCAAnimationCocoa::repeatCount const): Deleted.
(PlatformCAAnimationCocoa::setRepeatCount): Deleted.
(PlatformCAAnimationCocoa::autoreverses const): Deleted.
(PlatformCAAnimationCocoa::setAutoreverses): Deleted.
(PlatformCAAnimationCocoa::fillMode const): Deleted.
(PlatformCAAnimationCocoa::setFillMode): Deleted.
(PlatformCAAnimationCocoa::setTimingFunction): Deleted.
(PlatformCAAnimationCocoa::copyTimingFunctionFrom): Deleted.
(PlatformCAAnimationCocoa::isRemovedOnCompletion const): Deleted.
(PlatformCAAnimationCocoa::setRemovedOnCompletion): Deleted.
(PlatformCAAnimationCocoa::isAdditive const): Deleted.
(PlatformCAAnimationCocoa::setAdditive): Deleted.
(PlatformCAAnimationCocoa::valueFunction const): Deleted.
(PlatformCAAnimationCocoa::setValueFunction): Deleted.
(PlatformCAAnimationCocoa::setFromValue): Deleted.
(PlatformCAAnimationCocoa::copyFromValueFrom): Deleted.
(PlatformCAAnimationCocoa::setToValue): Deleted.
(PlatformCAAnimationCocoa::copyToValueFrom): Deleted.
(PlatformCAAnimationCocoa::setValues): Deleted.
(PlatformCAAnimationCocoa::copyValuesFrom): Deleted.
(PlatformCAAnimationCocoa::setKeyTimes): Deleted.
(PlatformCAAnimationCocoa::copyKeyTimesFrom): Deleted.
(PlatformCAAnimationCocoa::setTimingFunctions): Deleted.
(PlatformCAAnimationCocoa::copyTimingFunctionsFrom): Deleted.
* platform/graphics/ca/cocoa/PlatformCAFiltersCocoa.mm:
(PlatformCAFilters::filterValueForOperation): Deleted.
(PlatformCAFilters::colorMatrixValueForFilter): Deleted.
(PlatformCAFilters::setBlendingFiltersOnLayer): Deleted.
(PlatformCAFilters::numAnimatedFilterProperties): Deleted.
(PlatformCAFilters::animatedFilterPropertyName): Deleted.
* platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:
(-[WebAnimationDelegate animationDidStart:]):
(-[WebAnimationDelegate animationDidStop:finished:]):
(-[WebAnimationDelegate setOwner:]):
(PlatformCALayerCocoa::create): Deleted.
(PlatformCALayer::platformCALayer): Deleted.
(mediaTimeToCurrentTime): Deleted.
(PlatformCALayerCocoa::setOwner): Deleted.
(toCAFilterType): Deleted.
(PlatformCALayerCocoa::layerTypeForPlatformLayer): Deleted.
(PlatformCALayerCocoa::PlatformCALayerCocoa): Deleted.
(PlatformCALayerCocoa::commonInit): Deleted.
(PlatformCALayerCocoa::clone const): Deleted.
(PlatformCALayerCocoa::~PlatformCALayerCocoa): Deleted.
(PlatformCALayerCocoa::animationStarted): Deleted.
(PlatformCALayerCocoa::animationEnded): Deleted.
(PlatformCALayerCocoa::setNeedsDisplay): Deleted.
(PlatformCALayerCocoa::setNeedsDisplayInRect): Deleted.
(PlatformCALayerCocoa::copyContentsFromLayer): Deleted.
(PlatformCALayerCocoa::superlayer const): Deleted.
(PlatformCALayerCocoa::removeFromSuperlayer): Deleted.
(PlatformCALayerCocoa::setSublayers): Deleted.
(PlatformCALayerCocoa::removeAllSublayers): Deleted.
(PlatformCALayerCocoa::appendSublayer): Deleted.
(PlatformCALayerCocoa::insertSublayer): Deleted.
(PlatformCALayerCocoa::replaceSublayer): Deleted.
(PlatformCALayerCocoa::adoptSublayers): Deleted.
(PlatformCALayerCocoa::addAnimationForKey): Deleted.
(PlatformCALayerCocoa::removeAnimationForKey): Deleted.
(PlatformCALayerCocoa::animationForKey): Deleted.
(PlatformCALayerCocoa::setMask): Deleted.
(PlatformCALayerCocoa::isOpaque const): Deleted.
(PlatformCALayerCocoa::setOpaque): Deleted.
(PlatformCALayerCocoa::bounds const): Deleted.
(PlatformCALayerCocoa::setBounds): Deleted.
(PlatformCALayerCocoa::position const): Deleted.
(PlatformCALayerCocoa::setPosition): Deleted.
(PlatformCALayerCocoa::anchorPoint const): Deleted.
(PlatformCALayerCocoa::setAnchorPoint): Deleted.
(PlatformCALayerCocoa::transform const): Deleted.
(PlatformCALayerCocoa::setTransform): Deleted.
(PlatformCALayerCocoa::sublayerTransform const): Deleted.
(PlatformCALayerCocoa::setSublayerTransform): Deleted.
(PlatformCALayerCocoa::isHidden const): Deleted.
(PlatformCALayerCocoa::setHidden): Deleted.
(PlatformCALayerCocoa::contentsHidden const): Deleted.
(PlatformCALayerCocoa::setContentsHidden): Deleted.
(PlatformCALayerCocoa::userInteractionEnabled const): Deleted.
(PlatformCALayerCocoa::setUserInteractionEnabled): Deleted.
(PlatformCALayerCocoa::setBackingStoreAttached): Deleted.
(PlatformCALayerCocoa::backingStoreAttached const): Deleted.
(PlatformCALayerCocoa::geometryFlipped const): Deleted.
(PlatformCALayerCocoa::setGeometryFlipped): Deleted.
(PlatformCALayerCocoa::isDoubleSided const): Deleted.
(PlatformCALayerCocoa::setDoubleSided): Deleted.
(PlatformCALayerCocoa::masksToBounds const): Deleted.
(PlatformCALayerCocoa::setMasksToBounds): Deleted.
(PlatformCALayerCocoa::acceleratesDrawing const): Deleted.
(PlatformCALayerCocoa::setAcceleratesDrawing): Deleted.
(PlatformCALayerCocoa::wantsDeepColorBackingStore const): Deleted.
(PlatformCALayerCocoa::setWantsDeepColorBackingStore): Deleted.
(PlatformCALayerCocoa::supportsSubpixelAntialiasedText const): Deleted.
(PlatformCALayerCocoa::setSupportsSubpixelAntialiasedText): Deleted.
(PlatformCALayerCocoa::hasContents const): Deleted.
(PlatformCALayerCocoa::contents const): Deleted.
(PlatformCALayerCocoa::setContents): Deleted.
(PlatformCALayerCocoa::setContentsRect): Deleted.
(PlatformCALayerCocoa::setMinificationFilter): Deleted.
(PlatformCALayerCocoa::setMagnificationFilter): Deleted.
(PlatformCALayerCocoa::backgroundColor const): Deleted.
(PlatformCALayerCocoa::setBackgroundColor): Deleted.
(PlatformCALayerCocoa::setBorderWidth): Deleted.
(PlatformCALayerCocoa::setBorderColor): Deleted.
(PlatformCALayerCocoa::opacity const): Deleted.
(PlatformCALayerCocoa::setOpacity): Deleted.
(PlatformCALayerCocoa::setFilters): Deleted.
(PlatformCALayerCocoa::copyFiltersFrom): Deleted.
(PlatformCALayerCocoa::filtersCanBeComposited): Deleted.
(PlatformCALayerCocoa::setBlendMode): Deleted.
(PlatformCALayerCocoa::setName): Deleted.
(PlatformCALayerCocoa::setSpeed): Deleted.
(PlatformCALayerCocoa::setTimeOffset): Deleted.
(PlatformCALayerCocoa::contentsScale const): Deleted.
(PlatformCALayerCocoa::setContentsScale): Deleted.
(PlatformCALayerCocoa::cornerRadius const): Deleted.
(PlatformCALayerCocoa::setCornerRadius): Deleted.
(PlatformCALayerCocoa::setEdgeAntialiasingMask): Deleted.
(PlatformCALayerCocoa::shapeRoundedRect const): Deleted.
(PlatformCALayerCocoa::setShapeRoundedRect): Deleted.
(PlatformCALayerCocoa::shapeWindRule const): Deleted.
(PlatformCALayerCocoa::setShapeWindRule): Deleted.
(PlatformCALayerCocoa::shapePath const): Deleted.
(PlatformCALayerCocoa::setShapePath): Deleted.
(PlatformCALayerCocoa::requiresCustomAppearanceUpdateOnBoundsChange const): Deleted.
(PlatformCALayerCocoa::updateCustomAppearance): Deleted.
(layerContentsFormat): Deleted.
(PlatformCALayerCocoa::updateContentsFormat): Deleted.
(PlatformCALayerCocoa::tiledBacking): Deleted.
(PlatformCALayer::isWebLayer): Deleted.
(PlatformCALayer::setBoundsOnMainThread): Deleted.
(PlatformCALayer::setPositionOnMainThread): Deleted.
(PlatformCALayer::setAnchorPointOnMainThread): Deleted.
(PlatformCALayer::collectRectsToPaint): Deleted.
(PlatformCALayer::drawLayerContents): Deleted.
(PlatformCALayer::frameForLayer): Deleted.
(PlatformCALayerCocoa::createCompatibleLayer const): Deleted.
(PlatformCALayerCocoa::enumerateRectsBeingDrawn): Deleted.
(PlatformCALayerCocoa::backingStoreBytesPerPixel const): Deleted.
(PlatformCALayerCocoa::avPlayerLayer const): Deleted.
* platform/graphics/ca/cocoa/WebSystemBackdropLayer.mm:
(-[WebLightSystemBackdropLayer init]):
(-[WebDarkSystemBackdropLayer init]):
* platform/graphics/ca/cocoa/WebTiledBackingLayer.mm:
(-[WebTiledBackingLayer createTileController:]):
(-[WebTiledBackingLayer setNeedsDisplayInRect:]):
(-[WebTiledBackingLayer setBorderColor:]):
* testing/Internals.cpp:
(WebCore::Internals::Internals):

Source/WebCore/PAL:

It moves linking to DeviceIdentity.framework to WebKit.

* PAL.xcodeproj/project.pbxproj:

Source/WebKit:

This patch introduces AuthenticatorManager which is the central of WebAuthentication that 1) handles
web requests, 2) discovers authenticators, 3) manages authetnicators and 4) in the future interacts with UI.
The lifetime of the AuthenticatorManager is managed by WebsiteDataStore such that it is almost a singleton
per UI Process.

1) Requests come from WebAuthenticatorCoordinatorProxy and then cached in AuthenticatorManager which will
then distribute requests whenever a new authenticator is discovered.

2) An ABC AuthenticatorTransportService is provided as an interface for AuthenticatorManager to invoke
startDiscovery. Actual work will be done in corresponding derived classes, say, LocalService. LocalService
is the one that discover attached platform authenticators, for example, TouchID or FaceID.

Eache service is unique per AuthetnicatorManager, which means we will have at most 4 services, Local, USB,
NFC, and BLE. The latter three will be implemented soon. Also, AuthenticatorManager serves as an observer to
*Service, so the latter can inform the former whenever an authenticator is added or removed.

When a new authenticator is discovered, the corresponding service will create an Authetnicator object that
binds to the physical authenticator device through a *Connection object. There is no ABC for connection for
now as I forsee every *Connection will be quite different. The *Connection object is the one that send/receive
messages from the physicla device. So far, a LocalConnection is provided even though normally local authenticators
are attached. This class is provided solely for separating UI and network traffic from LocalAuthenticator's
request handling process. So we can override them in a mock test environment. I will talk about this in the
next section.

3) An ABC Authenticator is provided as an interface for AuthenticatorManager to distribute requests on. Requests
will then be handled by the derived classes, say, LocalAuthenticator. Each authenticator object is a FSM that
works asynchronously.

For LocalAuthenticator, it has 4 states for MakeCredential: Init => RequestReceived => UserConsented => Attested => End,
and 3 states for GetAssertion: Init => RequestReceived => UserConsented => End. In the transit from RequestReceived to
UserConsented, it will invoke LocalConnection to talk to LocalAuthentication.framework that prompt users for TouchID
or FaceID. And then the transit from UserConsented => Attested, it will invoke LocalConnection to talk to
DeviceIdentity.framework that does Apple attestation. Most of the work are from the original LocalAuthenticator
implementation, and this patch converts it to a FSM and simplify the callback and threading model.

When a respond is ready, each authenticator will notify their observer which is the AuthenticatorManager.
AuthenticatorManager will only reply to Web Process whenever there is a valid respond or a terminating error. Otherwise,
the request will time out. I will explore the time out mechanism in a more detailed manner in Bug 189642.

The above is a briefing of the AuthetnicatorManager architecture in functional. The asynchronous model is explained here:
1) Since most discovery and request handling processes are asynchronous, I enforced them to be executed asyncrhonous in
the interface of the ABC.
2) There is no dedicated secondary threads here. However, underlying framework might decide to perform works on a dedicated
thread and then execute the provided callback. Whenever such situation happens, the policy here is to wrap the actual callback
into a callback that will post the actual callback back to the main thread and pass the wrapping callback to the APIs. Hence,
weak pointers in the actual callback are guaranteed to work.
3) Callbacks are used only if it is one way, and they are CompletionHandlers.
4) Potential multi ways asynchronous operations are encapsulated in regarding Observer interfaces.

Finally, let me explain how the mock test works:
1) Mock testing is done in WebKitTestRunner instead of Internals because a considerable large portion of work is in UIProcess
instead of WebProcess, says, the AuthenticatorManager.
2) The basic idea is to override functionality of *Connection classes and then make them thin such that we can get the best
possible coverage in auto tests.
3) In order to enable layout tests to configure the Mock*Connection classes, a MockWebAuthenticationConfiguration struct is
provided. A corresponding JS dictionary will be created by each test and passed from the TestRunner to the connection object.
4) To bridge the above tunnel, a MockAuthenticatorManager is constructed. It is instrumented to return every error.
5) Also, Mock*Service classes are made to mock the discovery process as well.
6) Noted, every mock overrided methods are made thin.

* CMakeLists.txt:
* Configurations/WebKit.xcconfig:
* Platform/spi/Cocoa/DeviceIdentitySPI.h: Copied from Source/WebCore/PAL/pal/spi/cocoa/DeviceIdentitySPI.h.
* SourcesCocoa.txt:
* UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
(WKWebsiteDataStoreSetWebAuthenticationMockConfiguration):
* UIProcess/API/C/WKWebsiteDataStoreRef.h:
* UIProcess/WebAuthentication/Authenticator.cpp: Copied from Source/WebCore/platform/cocoa/LocalAuthenticationSoftLink.h.
(WebKit::Authenticator::handleRequest):
(WebKit::Authenticator::receiveRespond const):
* UIProcess/WebAuthentication/Authenticator.h: Renamed from Source/WebCore/Modules/webauthn/cocoa/LocalAuthenticator.h.
(WebKit::Authenticator::setObserver):
(WebKit::Authenticator::observer const):
(WebKit::Authenticator::requestData const):
* UIProcess/WebAuthentication/AuthenticatorManager.cpp: Added.
(WebKit::AuthenticatorManagerInternal::collectTransports):
(WebKit::AuthenticatorManager::makeCredential):
(WebKit::AuthenticatorManager::getAssertion):
(WebKit::AuthenticatorManager::clearState):
(WebKit::AuthenticatorManager::authenticatorAdded):
(WebKit::AuthenticatorManager::respondReceived):
(WebKit::AuthenticatorManager::createService const):
(WebKit::AuthenticatorManager::respondReceivedInternal):
(WebKit::AuthenticatorManager::startDiscovery):
* UIProcess/WebAuthentication/AuthenticatorManager.h: Added.
(WebKit::AuthenticatorManager::pendingCompletionHandler):
* UIProcess/WebAuthentication/AuthenticatorTransportService.cpp: Copied from Source/WebCore/PAL/pal/spi/cocoa/DeviceIdentitySPI.h.
(WebKit::AuthenticatorTransportService::create):
(WebKit::AuthenticatorTransportService::createMock):
(WebKit::AuthenticatorTransportService::AuthenticatorTransportService):
(WebKit::AuthenticatorTransportService::startDiscovery const):
* UIProcess/WebAuthentication/AuthenticatorTransportService.h: Copied from Source/WebCore/PAL/pal/spi/cocoa/DeviceIdentitySPI.h.
(WebKit::AuthenticatorTransportService::observer const):
* UIProcess/WebAuthentication/Cocoa/LocalAuthenticationSoftLink.h: Copied from Source/WebCore/platform/cocoa/LocalAuthenticationSoftLink.h.
* UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.h: Copied from Source/WebCore/PAL/pal/spi/cocoa/DeviceIdentitySPI.h.
* UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm: Added.
(WebKit::LocalAuthenticatorInternal::buildAuthData):
(WebKit::LocalAuthenticatorInternal::transportsContain):
(WebKit::LocalAuthenticatorInternal::produceHashSet):
(WebKit::LocalAuthenticatorInternal::toVector):
(WebKit::LocalAuthenticator::LocalAuthenticator):
(WebKit::LocalAuthenticator::makeCredential):
(WebKit::LocalAuthenticator::continueMakeCredentialAfterUserConsented):
(WebKit::LocalAuthenticator::continueMakeCredentialAfterAttested):
(WebKit::LocalAuthenticator::getAssertion):
(WebKit::LocalAuthenticator::continueGetAssertionAfterUserConsented):
* UIProcess/WebAuthentication/Cocoa/LocalConnection.h: Copied from Source/WebCore/PAL/pal/spi/cocoa/DeviceIdentitySPI.h.
* UIProcess/WebAuthentication/Cocoa/LocalConnection.mm: Added.
(WebKit::LocalConnection::getUserConsent const):
(WebKit::LocalConnection::getAttestation const):
* UIProcess/WebAuthentication/Cocoa/LocalService.h: Copied from Source/WebCore/platform/cocoa/LocalAuthenticationSoftLink.h.
* UIProcess/WebAuthentication/Cocoa/LocalService.mm: Renamed from Source/WebCore/PAL/pal/spi/cocoa/DeviceIdentitySPI.h.
(WebKit::LocalService::LocalService):
(WebKit::LocalService::isAvailable):
(WebKit::LocalService::startDiscoveryInternal const):
(WebKit::LocalService::platformStartDiscovery const):
(WebKit::LocalService::createLocalConnection const):
* UIProcess/WebAuthentication/Mock/MockAuthenticatorManager.cpp: Copied from Source/WebCore/platform/cocoa/LocalAuthenticationSoftLink.h.
(WebKit::MockAuthenticatorManager::MockAuthenticatorManager):
(WebKit::MockAuthenticatorManager::createService const):
(WebKit::MockAuthenticatorManager::respondReceivedInternal):
* UIProcess/WebAuthentication/Mock/MockAuthenticatorManager.h: Copied from Source/WebCore/platform/cocoa/LocalAuthenticationSoftLink.h.
* UIProcess/WebAuthentication/Mock/MockLocalConnection.h: Copied from Source/WebCore/platform/cocoa/LocalAuthenticationSoftLink.h.
* UIProcess/WebAuthentication/Mock/MockLocalConnection.mm: Added.
(WebKit::MockLocalConnection::MockLocalConnection):
(WebKit::MockLocalConnection::getUserConsent const):
(WebKit::MockLocalConnection::getAttestation const):
* UIProcess/WebAuthentication/Mock/MockLocalService.cpp: Copied from Source/WebCore/platform/cocoa/LocalAuthenticationSoftLink.h.
(WebKit::MockLocalService::MockLocalService):
(WebKit::MockLocalService::platformStartDiscovery const):
(WebKit::MockLocalService::createLocalConnection const):
* UIProcess/WebAuthentication/Mock/MockLocalService.h: Copied from Source/WebCore/platform/cocoa/LocalAuthenticationSoftLink.h.
* UIProcess/WebAuthentication/Mock/MockWebAuthenticationConfiguration.h: Copied from Source/WebCore/platform/cocoa/LocalAuthenticationSoftLink.h.
* UIProcess/WebAuthentication/WebAuthenticationRequestData.h: Renamed from Source/WebCore/platform/cocoa/LocalAuthenticationSoftLink.h.
* UIProcess/WebAuthentication/WebAuthenticatorCoordinatorProxy.cpp:
(WebKit::WebAuthenticatorCoordinatorProxy::WebAuthenticatorCoordinatorProxy):
(WebKit::WebAuthenticatorCoordinatorProxy::makeCredential):
(WebKit::WebAuthenticatorCoordinatorProxy::getAssertion):
(WebKit::WebAuthenticatorCoordinatorProxy::isUserVerifyingPlatformAuthenticatorAvailable):
(WebKit::WebAuthenticatorCoordinatorProxy::isUserVerifyingPlatformAuthenticatorAvailableReply): Deleted.
* UIProcess/WebAuthentication/WebAuthenticatorCoordinatorProxy.h:
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::WebsiteDataStore):
(WebKit::WebsiteDataStore::setMockWebAuthenticationConfiguration):
* UIProcess/WebsiteData/WebsiteDataStore.h:
(WebKit::WebsiteDataStore::authenticatorManager):
* WebKit.xcodeproj/project.pbxproj:

Tools:

Besides the functionality to set the WebAuthenticationMockConfiguration. Three operations are
added to manipulate Keychain: addTestKeyToKeychain, cleanUpKeychain and keyExistedInKeychain.

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/ios/LocalAuthenticator.mm: Removed.
* WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
* WebKitTestRunner/InjectedBundle/TestRunner.cpp:
(WTR::TestRunner::setWebAuthenticationMockConfiguration):
(WTR::TestRunner::addTestKeyToKeychain):
(WTR::TestRunner::cleanUpKeychain):
(WTR::TestRunner::isKeyExisted):
* WebKitTestRunner/InjectedBundle/TestRunner.h:
* WebKitTestRunner/TestController.cpp:
(WTR::TestController::addTestKeyToKeychain):
(WTR::TestController::cleanUpKeychain):
(WTR::TestController::isKeyExisted):
(WTR::TestController::setWebAuthenticationMockConfiguration):
* WebKitTestRunner/TestController.h:
* WebKitTestRunner/TestInvocation.cpp:
(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):
* WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
* WebKitTestRunner/cocoa/TestControllerCocoa.mm:
(WTR::TestController::addTestKeyToKeychain):
(WTR::TestController::cleanUpKeychain):
(WTR::TestController::keyExistedInKeychain):

LayoutTests:

Most of the new tests are rewritten from the LocalAuthenticator API tests. Old mock tests are temporarily skipped
for the new mock tests.

* TestExpectations:
* http/wpt/webauthn/public-key-credential-create-failure-local.https-expected.txt: Added.
* http/wpt/webauthn/public-key-credential-create-failure-local.https.html: Added.
* http/wpt/webauthn/public-key-credential-create-success-local.https-expected.txt: Added.
* http/wpt/webauthn/public-key-credential-create-success-local.https.html: Added.
* http/wpt/webauthn/public-key-credential-create-success.https.html:
* http/wpt/webauthn/public-key-credential-get-failure-local.https-expected.txt: Added.
* http/wpt/webauthn/public-key-credential-get-failure-local.https.html: Added.
* http/wpt/webauthn/public-key-credential-get-success-local.https-expected.txt: Added.
* http/wpt/webauthn/public-key-credential-get-success-local.https.html: Added.
* http/wpt/webauthn/public-key-credential-get-success.https.html:
* http/wpt/webauthn/public-key-credential-is-user-verifying-platform-authenticator-available-expected.txt: Added.
* http/wpt/webauthn/public-key-credential-is-user-verifying-platform-authenticator-available.html: Added.
* http/wpt/webauthn/public-key-is-user-verifying-platform-authenticator-available-expected.txt: Removed.
* http/wpt/webauthn/public-key-is-user-verifying-platform-authenticator-available.html: Removed.
* http/wpt/webauthn/resources/util.js:
* platform/mac-wk2/TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236481 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoRevert some of the changes in r236471
cdumez@apple.com [Tue, 25 Sep 2018 22:17:51 +0000 (22:17 +0000)]
Revert some of the changes in r236471
https://bugs.webkit.org/show_bug.cgi?id=189973

Reviewed by Alex Christensen.

Revert some of the changes in r236471 as they should not be needed. In particular,
it should not be possible for the DecidePolicyForNavigationActionSync IPC to get
processed *before* the DidCreateMainFrame / DidCreateSubframe ones because those
use IPC::SendOption::DispatchMessageEvenWhenWaitingForSyncReply. They are thus
processed early when necessary, the same way as synchronous IPC messages.

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::didCreateMainFrame):
(WebKit::WebPageProxy::didCreateSubframe):
(WebKit::WebPageProxy::decidePolicyForNavigationActionAsync):
(WebKit::WebPageProxy::decidePolicyForNavigationAction):
(WebKit::WebPageProxy::decidePolicyForNavigationActionSync):
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
* WebProcess/WebPage/WebFrame.cpp:
(WebKit::WebFrame::createWithCoreMainFrame):
(WebKit::WebFrame::createSubframe):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236480 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoImport libvpx source code
youenn@apple.com [Tue, 25 Sep 2018 22:09:45 +0000 (22:09 +0000)]
Import libvpx source code
https://bugs.webkit.org/show_bug.cgi?id=189954

Reviewed by Eric Carlson.

* Source/third_party/libvpx: Added.
* .gitignore: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236479 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoImplement MediaStreamTrack Content Hints
commit-queue@webkit.org [Tue, 25 Sep 2018 21:59:35 +0000 (21:59 +0000)]
Implement MediaStreamTrack Content Hints
https://bugs.webkit.org/show_bug.cgi?id=189262
<rdar://problem/44101773>

Patch by YUHAN WU <yuhan_wu@apple.com> on 2018-09-25
Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

* web-platform-tests/mst-content-hint/MediaStreamTrack-contentHint-expected.txt:

Source/WebCore:

contentHint is a new attribute which is stored in MediaStreamTrackPrivate.
https://w3c.github.io/mst-content-hint/

Covered by tests:
LayoutTests/imported/w3c/web-platform-tests/mst-content-hint/MediaStreamTrack-contentHint.html
LayoutTests/imported/w3c/web-platform-tests/mst-content-hint/idlharness.window.html

* Modules/mediastream/MediaStreamTrack.cpp:
(WebCore::MediaStreamTrack::contentHint const):
(WebCore::MediaStreamTrack::setContentHint):
* Modules/mediastream/MediaStreamTrack.h:
* Modules/mediastream/MediaStreamTrack.idl:
* platform/mediastream/MediaStreamTrackPrivate.cpp:
(WebCore::MediaStreamTrackPrivate::setContentHint):
(WebCore::MediaStreamTrackPrivate::clone):
* platform/mediastream/MediaStreamTrackPrivate.h:
(WebCore::MediaStreamTrackPrivate::contentHint):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236478 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoMove Service Worker Management from Storage Process to Network Process
sihui_liu@apple.com [Tue, 25 Sep 2018 21:57:42 +0000 (21:57 +0000)]
Move Service Worker Management from Storage Process to Network Process
https://bugs.webkit.org/show_bug.cgi?id=189422

Reviewed by Youenn Fablet.

Source/WebKit:

After r236035, this is another piece to move functionality of storage process to network process. When
we enable Service Workers, network process instead of storage process will be launched.
This patch will not change the behavior of Service Worker.

* CMakeLists.txt:
* DerivedSources.make:
* NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::~NetworkConnectionToWebProcess):
(WebKit::NetworkConnectionToWebProcess::didReceiveMessage):
(WebKit::NetworkConnectionToWebProcess::didReceiveSyncMessage):
(WebKit::NetworkConnectionToWebProcess::didClose):
(WebKit::NetworkConnectionToWebProcess::unregisterSWConnections):
(WebKit::NetworkConnectionToWebProcess::establishSWServerConnection):
* NetworkProcess/NetworkConnectionToWebProcess.h:
* NetworkProcess/NetworkConnectionToWebProcess.messages.in:
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::didReceiveMessage):
(WebKit::NetworkProcess::initializeNetworkProcess):
(WebKit::NetworkProcess::createNetworkConnectionToWebProcess):
(WebKit::NetworkProcess::addWebsiteDataStore):
(WebKit::NetworkProcess::destroySession):
(WebKit::NetworkProcess::fetchWebsiteData):
(WebKit::NetworkProcess::deleteWebsiteData):
(WebKit::NetworkProcess::deleteWebsiteDataForOrigins):
(WebKit::NetworkProcess::connectionToContextProcessFromIPCConnection):
(WebKit::NetworkProcess::connectionToContextProcessWasClosed):
(WebKit::NetworkProcess::needsServerToContextConnectionForOrigin const):
(WebKit::NetworkProcess::swServerForSession):
(WebKit::NetworkProcess::swOriginStoreForSession):
(WebKit::NetworkProcess::existingSWOriginStoreForSession const):
(WebKit::NetworkProcess::serverToContextConnectionForOrigin):
(WebKit::NetworkProcess::createServerToContextConnection):
(WebKit::NetworkProcess::didFailFetch):
(WebKit::NetworkProcess::didNotHandleFetch):
(WebKit::NetworkProcess::didReceiveFetchResponse):
(WebKit::NetworkProcess::didReceiveFetchData):
(WebKit::NetworkProcess::didReceiveFetchFormData):
(WebKit::NetworkProcess::didFinishFetch):
(WebKit::NetworkProcess::postMessageToServiceWorkerClient):
(WebKit::NetworkProcess::postMessageToServiceWorker):
(WebKit::NetworkProcess::registerSWServerConnection):
(WebKit::NetworkProcess::unregisterSWServerConnection):
(WebKit::NetworkProcess::swContextConnectionMayNoLongerBeNeeded):
(WebKit::NetworkProcess::disableServiceWorkerProcessTerminationDelay):
(WebKit::NetworkProcess::addServiceWorkerSession):
* NetworkProcess/NetworkProcess.h:
(WebKit::NetworkProcess::parentProcessHasServiceWorkerEntitlement const):
* NetworkProcess/NetworkProcess.messages.in:
* NetworkProcess/NetworkProcessCreationParameters.cpp:
(WebKit::NetworkProcessCreationParameters::encode const):
(WebKit::NetworkProcessCreationParameters::decode):
* NetworkProcess/NetworkProcessCreationParameters.h:
* NetworkProcess/ServiceWorker/WebSWOriginStore.cpp: Renamed from Source/WebKit/StorageProcess/ServiceWorker/WebSWOriginStore.cpp.
(WebKit::WebSWOriginStore::WebSWOriginStore):
(WebKit::WebSWOriginStore::addToStore):
(WebKit::WebSWOriginStore::removeFromStore):
(WebKit::WebSWOriginStore::clearStore):
(WebKit::WebSWOriginStore::importComplete):
(WebKit::WebSWOriginStore::registerSWServerConnection):
(WebKit::WebSWOriginStore::unregisterSWServerConnection):
(WebKit::WebSWOriginStore::sendStoreHandle):
(WebKit::WebSWOriginStore::didInvalidateSharedMemory):
* NetworkProcess/ServiceWorker/WebSWOriginStore.h: Renamed from Source/WebKit/StorageProcess/ServiceWorker/WebSWOriginStore.h.
* NetworkProcess/ServiceWorker/WebSWServerConnection.cpp: Renamed from Source/WebKit/StorageProcess/ServiceWorker/WebSWServerConnection.cpp.
(WebKit::WebSWServerConnection::WebSWServerConnection):
(WebKit::WebSWServerConnection::~WebSWServerConnection):
(WebKit::WebSWServerConnection::rejectJobInClient):
(WebKit::WebSWServerConnection::resolveRegistrationJobInClient):
(WebKit::WebSWServerConnection::resolveUnregistrationJobInClient):
(WebKit::WebSWServerConnection::startScriptFetchInClient):
(WebKit::WebSWServerConnection::updateRegistrationStateInClient):
(WebKit::WebSWServerConnection::fireUpdateFoundEvent):
(WebKit::WebSWServerConnection::setRegistrationLastUpdateTime):
(WebKit::WebSWServerConnection::setRegistrationUpdateViaCache):
(WebKit::WebSWServerConnection::notifyClientsOfControllerChange):
(WebKit::WebSWServerConnection::updateWorkerStateInClient):
(WebKit::WebSWServerConnection::cancelFetch):
(WebKit::WebSWServerConnection::startFetch):
(WebKit::WebSWServerConnection::postMessageToServiceWorker):
(WebKit::WebSWServerConnection::scheduleJobInServer):
(WebKit::WebSWServerConnection::didReceiveFetchResponse):
(WebKit::WebSWServerConnection::didReceiveFetchData):
(WebKit::WebSWServerConnection::didReceiveFetchFormData):
(WebKit::WebSWServerConnection::didFinishFetch):
(WebKit::WebSWServerConnection::didFailFetch):
(WebKit::WebSWServerConnection::didNotHandleFetch):
(WebKit::WebSWServerConnection::postMessageToServiceWorkerClient):
(WebKit::WebSWServerConnection::matchRegistration):
(WebKit::WebSWServerConnection::registrationReady):
(WebKit::WebSWServerConnection::getRegistrations):
(WebKit::WebSWServerConnection::registerServiceWorkerClient):
(WebKit::WebSWServerConnection::unregisterServiceWorkerClient):
(WebKit::WebSWServerConnection::sendToContextProcess):
* NetworkProcess/ServiceWorker/WebSWServerConnection.h: Renamed from Source/WebKit/StorageProcess/ServiceWorker/WebSWServerConnection.h.
(WebKit::WebSWServerConnection::ipcConnection const):
(WebKit::WebSWServerConnection::sessionID const):
* NetworkProcess/ServiceWorker/WebSWServerConnection.messages.in: Renamed from Source/WebKit/StorageProcess/ServiceWorker/WebSWServerConnection.messages.in.
* NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp: Renamed from Source/WebKit/StorageProcess/ServiceWorker/WebSWServerToContextConnection.cpp.
(WebKit::WebSWServerToContextConnection::WebSWServerToContextConnection):
(WebKit::WebSWServerToContextConnection::messageSenderConnection):
(WebKit::WebSWServerToContextConnection::messageSenderDestinationID):
(WebKit::WebSWServerToContextConnection::connectionClosed):
(WebKit::WebSWServerToContextConnection::installServiceWorkerContext):
(WebKit::WebSWServerToContextConnection::fireInstallEvent):
(WebKit::WebSWServerToContextConnection::fireActivateEvent):
(WebKit::WebSWServerToContextConnection::terminateWorker):
(WebKit::WebSWServerToContextConnection::syncTerminateWorker):
(WebKit::WebSWServerToContextConnection::findClientByIdentifierCompleted):
(WebKit::WebSWServerToContextConnection::matchAllCompleted):
(WebKit::WebSWServerToContextConnection::claimCompleted):
(WebKit::WebSWServerToContextConnection::didFinishSkipWaiting):
(WebKit::WebSWServerToContextConnection::connectionMayNoLongerBeNeeded):
(WebKit::WebSWServerToContextConnection::terminate):
* NetworkProcess/ServiceWorker/WebSWServerToContextConnection.h: Renamed from Source/WebKit/StorageProcess/ServiceWorker/WebSWServerToContextConnection.h.
(WebKit::WebSWServerToContextConnection::create):
(WebKit::WebSWServerToContextConnection::ipcConnection const):
* NetworkProcess/ServiceWorker/WebSWServerToContextConnection.messages.in: Renamed from Source/WebKit/StorageProcess/ServiceWorker/WebSWServerToContextConnection.messages.in.
* NetworkProcess/ios/NetworkProcessIOS.mm:
(WebKit::NetworkProcess::parentProcessHasServiceWorkerEntitlement const):
* Shared/Storage/StorageProcessCreationParameters.cpp:
(WebKit::StorageProcessCreationParameters::encode const):
(WebKit::StorageProcessCreationParameters::decode):
* Shared/Storage/StorageProcessCreationParameters.h:
(): Deleted.
* Shared/WebsiteDataStoreParameters.cpp:
(WebKit::WebsiteDataStoreParameters::encode const):
(WebKit::WebsiteDataStoreParameters::decode):
(WebKit::WebsiteDataStoreParameters::privateSessionParameters):
* Shared/WebsiteDataStoreParameters.h:
* Sources.txt:
* StorageProcess/StorageProcess.cpp:
(WebKit::StorageProcess::didReceiveMessage):
(WebKit::StorageProcess::initializeWebsiteDataStore):
(WebKit::StorageProcess::createStorageToWebProcessConnection):
(WebKit::StorageProcess::destroySession):
(WebKit::StorageProcess::fetchWebsiteData):
(WebKit::StorageProcess::deleteWebsiteData):
(WebKit::StorageProcess::deleteWebsiteDataForOrigins):
(WebKit::StorageProcess::connectionToContextProcessFromIPCConnection): Deleted.
(WebKit::StorageProcess::connectionToContextProcessWasClosed): Deleted.
(WebKit::StorageProcess::needsServerToContextConnectionForOrigin const): Deleted.
(WebKit::StorageProcess::swServerForSession): Deleted.
(WebKit::StorageProcess::swOriginStoreForSession): Deleted.
(WebKit::StorageProcess::existingSWOriginStoreForSession const): Deleted.
(WebKit::StorageProcess::serverToContextConnectionForOrigin): Deleted.
(WebKit::StorageProcess::createServerToContextConnection): Deleted.
(WebKit::StorageProcess::didFailFetch): Deleted.
(WebKit::StorageProcess::didNotHandleFetch): Deleted.
(WebKit::StorageProcess::didReceiveFetchResponse): Deleted.
(WebKit::StorageProcess::didReceiveFetchData): Deleted.
(WebKit::StorageProcess::didReceiveFetchFormData): Deleted.
(WebKit::StorageProcess::didFinishFetch): Deleted.
(WebKit::StorageProcess::postMessageToServiceWorkerClient): Deleted.
(WebKit::StorageProcess::postMessageToServiceWorker): Deleted.
(WebKit::StorageProcess::registerSWServerConnection): Deleted.
(WebKit::StorageProcess::unregisterSWServerConnection): Deleted.
(WebKit::StorageProcess::swContextConnectionMayNoLongerBeNeeded): Deleted.
(WebKit::StorageProcess::disableServiceWorkerProcessTerminationDelay): Deleted.
* StorageProcess/StorageProcess.h:
(WebKit::StorageProcess::parentProcessHasServiceWorkerEntitlement const): Deleted.
(): Deleted.
* StorageProcess/StorageProcess.messages.in:
* StorageProcess/StorageToWebProcessConnection.cpp:
(WebKit::StorageToWebProcessConnection::~StorageToWebProcessConnection):
(WebKit::StorageToWebProcessConnection::didReceiveMessage):
(WebKit::StorageToWebProcessConnection::didReceiveSyncMessage):
(WebKit::StorageToWebProcessConnection::didClose):
(WebKit::StorageToWebProcessConnection::unregisterSWConnections): Deleted.
(WebKit::StorageToWebProcessConnection::establishSWServerConnection): Deleted.
* StorageProcess/StorageToWebProcessConnection.h:
* StorageProcess/StorageToWebProcessConnection.messages.in:
* StorageProcess/ios/StorageProcessIOS.mm:
(WebKit::StorageProcess::parentProcessHasServiceWorkerEntitlement const): Deleted.
* UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::getNetworkProcessConnection):
(WebKit::NetworkProcessProxy::networkProcessCrashed):
(WebKit::NetworkProcessProxy::didCreateNetworkConnectionToWebProcess):
(WebKit::NetworkProcessProxy::didFinishLaunching):
(WebKit::NetworkProcessProxy::establishWorkerContextConnectionToNetworkProcess):
(WebKit::NetworkProcessProxy::establishWorkerContextConnectionToNetworkProcessForExplicitSession):
* UIProcess/Network/NetworkProcessProxy.h:
* UIProcess/Network/NetworkProcessProxy.messages.in:
* UIProcess/ServiceWorkerProcessProxy.cpp:
(WebKit::ServiceWorkerProcessProxy::start):
* UIProcess/Storage/StorageProcessProxy.cpp:
(WebKit::StorageProcessProxy::getStorageProcessConnection):
(WebKit::StorageProcessProxy::establishWorkerContextConnectionToStorageProcess): Deleted.
(WebKit::StorageProcessProxy::establishWorkerContextConnectionToStorageProcessForExplicitSession): Deleted.
* UIProcess/Storage/StorageProcessProxy.h:
* UIProcess/Storage/StorageProcessProxy.messages.in:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::ensureNetworkProcess):
(WebKit::WebProcessPool::networkProcessCrashed):
(WebKit::WebProcessPool::getNetworkProcessConnection):
(WebKit::WebProcessPool::ensureStorageProcessAndWebsiteDataStore):
(WebKit::WebProcessPool::establishWorkerContextConnectionToNetworkProcess):
(WebKit::WebProcessPool::disableServiceWorkerProcessTerminationDelay):
(WebKit::WebProcessPool::pageBeginUsingWebsiteDataStore):
(WebKit::WebProcessPool::registerURLSchemeServiceWorkersCanHandle):
(WebKit::WebProcessPool::postMessageToServiceWorkerClient):
(WebKit::WebProcessPool::postMessageToServiceWorker):
(WebKit::WebProcessPool::establishWorkerContextConnectionToStorageProcess): Deleted.
* UIProcess/WebProcessPool.h:
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::getNetworkProcessConnection):
* UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
(WebKit::WebsiteDataStore::parameters):
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::computeNetworkProcessAccessTypeForDataFetch):
(WebKit::WebsiteDataStore::fetchDataAndApply):
(WebKit::computeNetworkProcessAccessTypeForDataRemoval):
(WebKit::WebsiteDataStore::removeData):
(WebKit::WebsiteDataStore::storageProcessParameters):
(WebKit::WebsiteDataStore::parameters):
* WebKit.xcodeproj/project.pbxproj:
* WebProcess/Network/NetworkProcessConnection.cpp:
(WebKit::NetworkProcessConnection::didReceiveMessage):
(WebKit::NetworkProcessConnection::didReceiveSyncMessage):
(WebKit::NetworkProcessConnection::didClose):
(WebKit::NetworkProcessConnection::serviceWorkerConnectionForSession):
* WebProcess/Network/NetworkProcessConnection.h:
(WebKit::NetworkProcessConnection::existingServiceWorkerConnectionForSession):
* WebProcess/Storage/WebSWClientConnection.cpp:
(WebKit::WebSWClientConnection::WebSWClientConnection):
* WebProcess/Storage/WebSWContextManagerConnection.cpp:
(WebKit::WebSWContextManagerConnection::WebSWContextManagerConnection):
(WebKit::WebSWContextManagerConnection::serviceWorkerStartedWithMessage):
(WebKit::WebSWContextManagerConnection::startFetch):
(WebKit::WebSWContextManagerConnection::didFinishInstall):
(WebKit::WebSWContextManagerConnection::didFinishActivation):
(WebKit::WebSWContextManagerConnection::setServiceWorkerHasPendingEvents):
(WebKit::WebSWContextManagerConnection::skipWaiting):
(WebKit::WebSWContextManagerConnection::setScriptResource):
(WebKit::WebSWContextManagerConnection::workerTerminated):
(WebKit::WebSWContextManagerConnection::findClientByIdentifier):
(WebKit::WebSWContextManagerConnection::matchAll):
(WebKit::WebSWContextManagerConnection::claim):
* WebProcess/Storage/WebSWContextManagerConnection.h:
* WebProcess/Storage/WebServiceWorkerFetchTaskClient.cpp:
(WebKit::WebServiceWorkerFetchTaskClient::didReceiveResponse):
(WebKit::WebServiceWorkerFetchTaskClient::didReceiveData):
(WebKit::WebServiceWorkerFetchTaskClient::didReceiveFormDataAndFinish):
(WebKit::WebServiceWorkerFetchTaskClient::didReceiveBlobChunk):
(WebKit::WebServiceWorkerFetchTaskClient::didFail):
(WebKit::WebServiceWorkerFetchTaskClient::didFinish):
(WebKit::WebServiceWorkerFetchTaskClient::didNotHandle):
* WebProcess/Storage/WebServiceWorkerProvider.cpp:
(WebKit::WebServiceWorkerProvider::serviceWorkerConnectionForSession):
(WebKit::WebServiceWorkerProvider::existingServiceWorkerConnectionForSession):
(WebKit::WebServiceWorkerProvider::handleFetch):
* WebProcess/Storage/WebToStorageProcessConnection.cpp:
(WebKit::WebToStorageProcessConnection::didReceiveMessage):
(WebKit::WebToStorageProcessConnection::didReceiveSyncMessage):
(WebKit::WebToStorageProcessConnection::didClose):
(WebKit::WebToStorageProcessConnection::serviceWorkerConnectionForSession): Deleted.
* WebProcess/Storage/WebToStorageProcessConnection.h:
(WebKit::WebToStorageProcessConnection::existingServiceWorkerConnectionForSession): Deleted.
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::networkProcessConnectionClosed):
(WebKit::WebProcess::webToStorageProcessConnectionClosed):
(WebKit::WebProcess::establishWorkerContextConnectionToNetworkProcess):
(WebKit::WebProcess::establishWorkerContextConnectionToStorageProcess): Deleted.
* WebProcess/WebProcess.h:
(WebKit::WebProcess::existingNetworkProcessConnection):
(WebKit::WebProcess::existingWebToStorageProcessConnection): Deleted.
* WebProcess/WebProcess.messages.in:

Tools:

Change a check in ServiceWorkers.HasServiceWorkerRegistrationBit as storage process is not
launched during service worker operations now.

* TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236477 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months ago[MediaStream] Update constraints supported by getDisplayMedia
eric.carlson@apple.com [Tue, 25 Sep 2018 21:31:29 +0000 (21:31 +0000)]
[MediaStream] Update constraints supported by getDisplayMedia
https://bugs.webkit.org/show_bug.cgi?id=189930
<rdar://problem/44740305>

Unreviewed, fix test broken by r236465.

* TestWebKitAPI/Tests/WebKitCocoa/GetDisplayMedia.mm:
(TestWebKitAPI::TEST_F):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236476 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months ago[WHSL] Implement semantics
mmaxfield@apple.com [Tue, 25 Sep 2018 21:21:10 +0000 (21:21 +0000)]
[WHSL] Implement semantics
https://bugs.webkit.org/show_bug.cgi?id=189134

Reviewed by Filip Pizlo.

This patch adds parsing support and adds the checks required to support HLSL-style semantics.

There are 3 places where semantics are allowed:

1. In a field in a struct. E.g.

struct R {
    float4 position : SV_Position;
}
vertex R foo() {
    ...
}

2. In a parameter of a function. If the function is not an entry point, the semantic is ignored.

compute void foo(device float[] data : buffer(u0)) {
    ...
}

3. On a function. This is so you don't have to create structs for the return types of simple vertex shaders.

vertex float4 foo() : SV_Position {
    ...
}

The semantics are partitioned into 4 types:

1. Built-in variables. For example, : SV_Position.
2. Resources. For example, : register(u0).
3. Stage-in / stage-out variables. For example, : attribute(0).
4. Specialization constants. For example, : specialized.

The semantics are validated according to a collection of rules:

- The same entry point can't list the same semantic twice
- Each built-in type has an appropriate type that is listed in the spec.
- Each built-in is appropriate as either an input or an output of a particular shader stage
- Resource semantics have to have the appropriate type (e.g. can't use register(s0) on a buffer)
- Resources can't be output from entry points
- The resource semantic mode must match the address space of the resource
- Stage-in and stage-out variables have to be POD
- Specialization constants can't be output from entry points, and have to be numbers

* WebGPUShadingLanguageRI/All.js:
* WebGPUShadingLanguageRI/BuiltInSemantic.js: Added.
(BuiltInSemantic):
(BuiltInSemantic.prototype.get name):
(BuiltInSemantic.prototype.get extraArguments):
(BuiltInSemantic.prototype.isAcceptableType):
(BuiltInSemantic.prototype.isAcceptableForShaderType):
(BuiltInSemantic.prototype.toString):
* WebGPUShadingLanguageRI/CallExpression.js:
(CallExpression.prototype._resolveWithOperatorAnderIndexer):
(CallExpression.prototype._resolveWithOperatorLength):
* WebGPUShadingLanguageRI/Checker.js:
(Checker):
(Checker.prototype.visitProgram):
(Checker.prototype._checkSemantics.Item):
(Checker.prototype._checkSemantics.Item.prototype.get type):
(Checker.prototype._checkSemantics.Item.prototype.get semantic):
(Checker.prototype._checkSemantics.Gatherer):
(Checker.prototype._checkSemantics.Gatherer.prototype.reset):
(Checker.prototype._checkSemantics.Gatherer.prototype.set currentSemantic):
(Checker.prototype._checkSemantics.Gatherer.prototype.get currentSemantic):
(Checker.prototype._checkSemantics.Gatherer.prototype.get result):
(Checker.prototype._checkSemantics.Gatherer.prototype.visitEnumType):
(Checker.prototype._checkSemantics.Gatherer.prototype.visitVectorType):
(Checker.prototype._checkSemantics.Gatherer.prototype.visitMatrixType):
(Checker.prototype._checkSemantics.Gatherer.prototype.visitNativeType):
(Checker.prototype._checkSemantics.Gatherer.prototype.visitStructType):
(Checker.prototype._checkSemantics.Gatherer.prototype.visitTypeRef):
(Checker.prototype._checkSemantics.Gatherer.prototype.visitPtrType):
(Checker.prototype._checkSemantics.Gatherer.prototype.visitArrayRefType):
(Checker.prototype._checkSemantics.Gatherer.prototype.visitArrayType):
(Checker.prototype._checkSemantics.Gatherer.prototype.visitFuncParameter):
(Checker.prototype._checkSemantics.checkDuplicateSemantics):
(Checker.prototype._checkSemantics.checkSemanticTypes):
(Checker.prototype._checkSemantics.checkSemanticForShaderType):
(Checker.prototype._checkSemantics.PODChecker.prototype.visitEnumType):
(Checker.prototype._checkSemantics.PODChecker.prototype.visitArrayType):
(Checker.prototype._checkSemantics.PODChecker.prototype.visitVectorType):
(Checker.prototype._checkSemantics.PODChecker.prototype.visitMatrixType):
(Checker.prototype._checkSemantics.PODChecker.prototype.visitNativeType):
(Checker.prototype._checkSemantics.PODChecker.prototype.visitPtrType):
(Checker.prototype._checkSemantics.PODChecker.prototype.visitArrayRefType):
(Checker.prototype._checkSemantics.PODChecker.prototype.visitStructType):
(Checker.prototype._checkSemantics.PODChecker.prototype.visitTypeRef):
(Checker.prototype._checkSemantics.PODChecker):
(Checker.prototype._checkSemantics.checkPODData):
(Checker.prototype._checkSemantics):
(Checker.prototype._checkShaderType):
(Checker.prototype._checkOperatorOverload):
(Checker.prototype.visitFuncDef):
(Checker.prototype.visitEnumType):
(Checker.prototype.visitArrayType):
(Checker.prototype.visitMakePtrExpression):
(Checker.prototype.visitMakeArrayRefExpression):
(Checker.prototype._finishVisitingPropertyAccess):
(Checker.prototype.visitIndexExpression):
(Checker.prototype.visitReturn):
(Checker.prototype.visitSwitchStatement):
(Checker.prototype.visitTernaryExpression):
(Checker.prototype.visitCallExpression):
* WebGPUShadingLanguageRI/Field.js:
(Field):
(Field.prototype.get semantic):
(Field.prototype.toString):
* WebGPUShadingLanguageRI/Func.js:
(Func):
(Func.prototype.get semantic):
(Func.prototype.toDeclString):
* WebGPUShadingLanguageRI/FuncDef.js:
(FuncDef):
* WebGPUShadingLanguageRI/FuncParameter.js:
(FuncParameter):
(FuncParameter.prototype.get semantic):
(FuncParameter.prototype.toString):
* WebGPUShadingLanguageRI/Intrinsics.js:
* WebGPUShadingLanguageRI/LateChecker.js:
(LateChecker.prototype.visitReferenceType):
(LateChecker):
(LateChecker.prototype._checkShaderType): Deleted.
(LateChecker.prototype.visitFuncDef): Deleted.
* WebGPUShadingLanguageRI/NativeFunc.js:
(NativeFunc):
* WebGPUShadingLanguageRI/Parse.js:
(parseParameter):
(parseFuncDecl):
(parseFuncDef):
(parseStageInOutSemantic):
(parseResourceSemantic):
(parseSpecializationConstantSemantic):
(parseBuiltInSemantic):
(parseField):
(parseNativeFunc):
* WebGPUShadingLanguageRI/ProgramWithUnnecessaryThingsRemoved.js:
(programWithUnnecessaryThingsRemoved):
* WebGPUShadingLanguageRI/ResourceSemantic.js: Added.
(ResourceSemantic):
(ResourceSemantic.prototype.get resourceMode):
(ResourceSemantic.prototype.get index):
(ResourceSemantic.prototype.get space):
(ResourceSemantic.prototype.isAcceptableType):
(ResourceSemantic.prototype.isAcceptableForShaderType):
(ResourceSemantic.prototype.toString):
* WebGPUShadingLanguageRI/Rewriter.js:
(Rewriter.prototype.visitFuncParameter):
(Rewriter.prototype.visitField):
(Rewriter.prototype.visitBuiltInSemantic):
(Rewriter.prototype.visitResourceSemantic):
(Rewriter.prototype.visitStageInOutSemantic):
(Rewriter.prototype.visitSpecializationConstantSemantic):
(Rewriter):
* WebGPUShadingLanguageRI/SPIRV.html:
* WebGPUShadingLanguageRI/Semantic.js: Added.
(Semantic):
(Semantic.prototype.get origin):
(Semantic.prototype.equalToOtherSemantic.Comparer.prototype.visitBuiltInSemantic):
(Semantic.prototype.equalToOtherSemantic.Comparer.prototype.visitResourceSemantic):
(Semantic.prototype.equalToOtherSemantic.Comparer.prototype.visitStageInOutSemantic):
(Semantic.prototype.equalToOtherSemantic.Comparer.prototype.visitSpecializationConstantSemantic):
(Semantic.prototype.equalToOtherSemantic.Comparer):
(Semantic.prototype.equalToOtherSemantic):
* WebGPUShadingLanguageRI/SpecializationConstantSemantic.js: Copied from Tools/WebGPUShadingLanguageRI/Field.js.
(SpecializationConstantSemantic):
(SpecializationConstantSemantic.prototype.isAcceptableType):
(SpecializationConstantSemantic.prototype.isAcceptableForShaderType):
(SpecializationConstantSemantic.prototype.toString):
* WebGPUShadingLanguageRI/StageInOutSemantic.js: Copied from Tools/WebGPUShadingLanguageRI/FuncDef.js.
(StageInOutSemantic):
(StageInOutSemantic.prototype.get index):
(StageInOutSemantic.prototype.isAcceptableType):
(StageInOutSemantic.prototype.isAcceptableForShaderType):
(StageInOutSemantic.prototype.toString):
* WebGPUShadingLanguageRI/StatementCloner.js:
(StatementCloner.prototype.visitNativeFunc):
* WebGPUShadingLanguageRI/SynthesizeArrayOperatorLength.js:
(synthesizeArrayOperatorLength):
* WebGPUShadingLanguageRI/SynthesizeCopyConstructorOperator.js:
(synthesizeCopyConstructorOperator):
* WebGPUShadingLanguageRI/SynthesizeDefaultConstructorOperator.js:
(synthesizeDefaultConstructorOperator):
* WebGPUShadingLanguageRI/SynthesizeEnumFunctions.js:
(synthesizeEnumFunctions):
* WebGPUShadingLanguageRI/SynthesizeStructAccessors.js:
(setupAnder):
(synthesizeStructAccessorsForStructType):
* WebGPUShadingLanguageRI/Test.html:
* WebGPUShadingLanguageRI/Test.js:
(tests.shaderTypes):
* WebGPUShadingLanguageRI/Visitor.js:
(Visitor.prototype.visitFunc):
(Visitor.prototype.visitFuncParameter):
(Visitor.prototype.visitField):
(Visitor.prototype.visitBuiltInSemantic):
(Visitor.prototype.visitResourceSemantic):
(Visitor.prototype.visitStageInOutSemantic):
(Visitor.prototype.visitSpecializationConstantSemantic):
(Visitor):
* WebGPUShadingLanguageRI/index.html:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236475 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoAllow for suffixes to com.apple.WebKit.WebContent
achristensen@apple.com [Tue, 25 Sep 2018 21:06:31 +0000 (21:06 +0000)]
Allow for suffixes to com.apple.WebKit.WebContent
https://bugs.webkit.org/show_bug.cgi?id=189972

Reviewed by Chris Dumez.

Source/bmalloc:

* bmalloc/ProcessCheck.mm:
(bmalloc::gigacageEnabledForProcess):

Source/WebCore:

* platform/cocoa/RuntimeApplicationChecksCocoa.mm:
(WebCore::isInWebProcess):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236474 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoREGRESSION: (r235948) Layout Test compositing/backing/backing-store-attachment-fill...
ryanhaddad@apple.com [Tue, 25 Sep 2018 21:04:03 +0000 (21:04 +0000)]
REGRESSION: (r235948) Layout Test compositing/backing/backing-store-attachment-fill-forwards-animation.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=189598#c0

Unreviewed test gardening.

* platform/ios/TestExpectations: Mark test as flaky.
* platform/mac-wk2/TestExpectations: Ditto.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236473 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months ago[WHLSL] Test suite for Metal code generation
commit-queue@webkit.org [Tue, 25 Sep 2018 20:50:19 +0000 (20:50 +0000)]
[WHLSL] Test suite for Metal code generation
https://bugs.webkit.org/show_bug.cgi?id=187738

Patch by Thomas Denney <tdenney@apple.com> on 2018-09-25
Reviewed by Myles C. Maxfield.

This patch adds an Xcode project that contains a Cocoa app that can be
used for running WHLSL shaders on the GPU. It also contains an Xcode
test suite that runs all of the tests in Test.js on the GPU.

* WebGPUShadingLanguageRI/Metal/WHLSL Tests/.gitignore: Added.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/AppDelegate.h: Added.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/AppDelegate.m: Added.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/Assets.xcassets/AppIcon.appiconset/Contents.json: Added.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/Assets.xcassets/Contents.json: Added.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/Base.lproj/Main.storyboard: Added.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/CompileResult.h: Added.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/CompileResult.m: Added.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/Compiler.h: Added.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/Compiler.m: Added.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/CustomMetalView.h: Added.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/CustomMetalView.m: Added.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/Demo shaders/Default.whlsl: Added.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/Demo shaders/Julia.whlsl: Added.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/Demo shaders/Mandelbrot.whlsl: Added.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/Info.plist: Added.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/Renderer/OffscreenRenderer.h: Added.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/Renderer/OffscreenRenderer.m: Added.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/Renderer/OnscreenRenderer.h: Added.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/Renderer/OnscreenRenderer.m: Added.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/Renderer/Renderer.h: Added.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/Renderer/Renderer.m: Added.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/TestCallArgument.h: Added.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/TestCallArgument.m: Added.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/TestDescription.h: Added.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/TestDescription.m: Added.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/TestFamily.h: Added.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/TestFamily.m: Added.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/TestFamilyRunner.h: Added.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/TestFamilyRunner.m: Added.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/ViewController.h: Added.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/ViewController.m: Added.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/WHLSL.entitlements: Added.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/_SharedMetal.txt: Added.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/Core/main.m: Added.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/WHLSL Tests.xcodeproj/project.pbxproj: Added.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/WHLSL ToyTests/Info.plist: Added.
* WebGPUShadingLanguageRI/Metal/WHLSL Tests/WHLSL ToyTests/WHLSL_ToyTests.m: Added.
* WebGPUShadingLanguageRI/Test.js:
(tests.lotsOfLocalVariables):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236472 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoUIProcess should process incoming sync IPC from WebProcess when waiting for a sync...
cdumez@apple.com [Tue, 25 Sep 2018 19:41:41 +0000 (19:41 +0000)]
UIProcess should process incoming sync IPC from WebProcess when waiting for a sync IPC reply from it
https://bugs.webkit.org/show_bug.cgi?id=189927

Reviewed by Alex Christensen.

UIProcess should process incoming sync IPC from WebProcess when waiting for a sync IPC reply from it
in order to avoid deadlocks. This is not an issue currently because the WebProcess does process
incoming sync IPC when waiting for a sync IPC reply. However, we plan to change this in the future
in order to avoid bugs caused by re-entering WebCore at unsafe times.

The reason the UIProcess previously did not do out of order sync IPC process was to avoid processing
a synchronous policy decision IPC for a frameID it did not know about yet, due to the DidCreateMainFrame /
DidCreateSubframe IPC messages being asynchronous. To address this issue, the decidePolicyForNavigationActionSync
IPC handler now calls didCreateMainFrame() / didCreateSubframe() as needed if it does not know about
the frame yet. Note that synchronous policy decisions are rare and are currently only needed by initial
about:blank and fragment navigations.

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::didCreateMainFrame):
(WebKit::WebPageProxy::didCreateSubframe):
(WebKit::WebPageProxy::decidePolicyForNavigationActionAsync):
(WebKit::WebPageProxy::decidePolicyForNavigationAction):
(WebKit::WebPageProxy::decidePolicyForNavigationActionSync):
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::initializeConnection):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236471 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoUnreviewed build fix after r236455
mmaxfield@apple.com [Tue, 25 Sep 2018 19:34:17 +0000 (19:34 +0000)]
Unreviewed build fix after r236455
https://bugs.webkit.org/show_bug.cgi?id=189121

* WebGPUShadingLanguageRI/Test.js:
(tests.shaderStages):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236470 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoWeb Inspector: Stricter block syntax in generated ObjC protocol interfaces
commit-queue@webkit.org [Tue, 25 Sep 2018 19:32:44 +0000 (19:32 +0000)]
Web Inspector: Stricter block syntax in generated ObjC protocol interfaces
https://bugs.webkit.org/show_bug.cgi?id=189962
<rdar://problem/44648287>

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2018-09-25
Reviewed by Brian Burg.

* inspector/scripts/codegen/generate_objc_header.py:
(ObjCHeaderGenerator._callback_block_for_command):
If there are no return parameters include "void" in the block signature.

* inspector/scripts/tests/all/expected/definitions-with-mac-platform.json-result:
* inspector/scripts/tests/generic/expected/domain-availability.json-result:
* inspector/scripts/tests/generic/expected/domains-with-varying-command-sizes.json-result:
* inspector/scripts/tests/generic/expected/generate-domains-with-feature-guards.json-result:
* inspector/scripts/tests/generic/expected/worker-supported-domains.json-result:
* inspector/scripts/tests/mac/expected/definitions-with-mac-platform.json-result:
Rebaseline test results.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236469 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months ago[iOS] Fix the open source iOS 12 build after r236445
wenson_hsieh@apple.com [Tue, 25 Sep 2018 18:59:38 +0000 (18:59 +0000)]
[iOS] Fix the open source iOS 12 build after r236445
https://bugs.webkit.org/show_bug.cgi?id=189953

Reviewed by Alex Christensen.

Source/WebCore:

Remove soft-linking macros from several sources in WebCore, and instead import UIKitSoftLink from PAL. This
allows different WebCore sources to soft-link UIKit (and its classes and symbols) without reimplementing
WebCore::UIKitLibrary.

* editing/cocoa/FontAttributesCocoa.mm:
* editing/cocoa/FontShadowCocoa.mm:
(WebCore::FontShadow::createShadow const):
* platform/graphics/cocoa/ColorCocoa.mm:
(WebCore::platformColor):
* platform/ios/PlatformScreenIOS.mm:
(WebCore::screenIsMonochrome):
(WebCore::screenHasInvertedColors):
(WebCore::screenSize):
(WebCore::availableScreenSize):
(WebCore::screenScaleFactor):

Source/WebCore/PAL:

Introduce a single UIKit soft-linking header in PAL.

* PAL.xcodeproj/project.pbxproj:
* pal/ios/UIKitSoftLink.h: Copied from Source/WebCore/platform/graphics/cocoa/ColorCocoa.mm.
* pal/ios/UIKitSoftLink.mm: Copied from Source/WebCore/platform/graphics/cocoa/ColorCocoa.mm.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236468 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoImport WPT content hint tests
commit-queue@webkit.org [Tue, 25 Sep 2018 18:55:24 +0000 (18:55 +0000)]
Import WPT content hint tests
https://bugs.webkit.org/show_bug.cgi?id=189854

Patch by YUHAN WU <yuhan_wu@apple.com> on 2018-09-25
Reviewed by Youenn Fablet.

* web-platform-tests/mst-content-hint/idlharness.window-expected.txt: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236467 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months ago[WPE][GTK][WebRTC] Fixup VP8 encoding support
commit-queue@webkit.org [Tue, 25 Sep 2018 18:41:07 +0000 (18:41 +0000)]
[WPE][GTK][WebRTC] Fixup VP8 encoding support
https://bugs.webkit.org/show_bug.cgi?id=189921

Previous leak fixing commit introduced a regression in
the way the encoded buffer were prepared in the default
GStreamerVideoEncoder::Fragmentize implementation (when
encoding with VP8 basically).

+ Fix a build warning in the decoder.
+ Fix some wrong object members namings.
+ Properly move the caps reference when setting restriction caps.
+ Do not raise a GStreamer error when GStreamerVideoEncoder::OnEncodedImage
  fails - this might be a network issue and other encoders do not consider that
  fatal.
+ Use GstMappedBuffer where appropriate.

Patch by Thibault Saunier <tsaunier@igalia.com> on 2018-09-25
Reviewed by Philippe Normand.

* platform/mediastream/libwebrtc/GStreamerVideoDecoderFactory.cpp:
* platform/mediastream/libwebrtc/GStreamerVideoEncoderFactory.cpp:
(WebCore::GStreamerVideoEncoder::InitEncode):
(WebCore::GStreamerVideoEncoder::newSampleCallback):
(WebCore::GStreamerVideoEncoder::Fragmentize):
(WebCore::GStreamerVideoEncoder::SetRestrictionCaps):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236466 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months ago[MediaStream] Update constraints supported by getDisplayMedia
eric.carlson@apple.com [Tue, 25 Sep 2018 18:37:29 +0000 (18:37 +0000)]
[MediaStream] Update constraints supported by getDisplayMedia
https://bugs.webkit.org/show_bug.cgi?id=189930

Reviewed by Youenn Fablet.

Source/WebCore:

No new tests, updated http/tests/media/media-stream/get-display-media-prompt.html.

* Modules/mediastream/MediaDevices.cpp:
(WebCore::MediaDevices::getDisplayMedia const): Ignore audio constraints.

* Modules/mediastream/UserMediaRequest.cpp:
(WebCore::hasInvalidGetDisplayMediaConstraint): Check for invalid constraints.
(WebCore::UserMediaRequest::start): Check for invalid constraints.
(WebCore::UserMediaRequest::deny): Support new error.
* Modules/mediastream/UserMediaRequest.h:

* platform/mediastream/RealtimeMediaSourceCenter.cpp:
(WebCore::RealtimeMediaSourceCenter::validateRequestConstraints):

LayoutTests:

* http/tests/media/media-stream/get-display-media-prompt-expected.txt:
* http/tests/media/media-stream/get-display-media-prompt.html:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236465 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoExtending the lifetime of a NetworkProcessProxy / StorageProcessProxy may cause it...
cdumez@apple.com [Tue, 25 Sep 2018 18:31:21 +0000 (18:31 +0000)]
Extending the lifetime of a NetworkProcessProxy / StorageProcessProxy may cause it to have a stale WebProcessPool pointer
https://bugs.webkit.org/show_bug.cgi?id=189851
<rdar://problem/44696263>

Reviewed by Alex Christensen.

Extending the lifetime of a NetworkProcessProxy / StorageProcessProxy may cause it to have a stale WebProcessPool pointer:
- NetworkProcessProxy::m_processPool
- StorageProcessProxy::m_processPool

Those data members are C++ references because it is expected that the WebProcessPool owns the NetworkProcessProxy and
StorageProcessProxy. However, since NetworkProcessProxy / StorageProcessProxy are refcounted, it has happened that code
extends the lifetime of those past their process pool, leading to stale prrocess pool usage. The fix for these crashes
so far as been to ref the WebProcessPool instead of the NetworkProcessProxy / StorageProcessProxy. However, it is very
tempting for people to simply ref the NetworkProcessProxy / StorageProcessProxy given that they are refcounted.
For this reason, this patch updates NetworkProcessProxy / StorageProcessProxy so that they are no longer RefCounted
and so that the WebProcessPool truly owns them via std::unique_ptr<>.

* UIProcess/ChildProcessProxy.h:
* UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::networkProcessCrashed):
(WebKit::NetworkProcessProxy::didClose):
(WebKit::NetworkProcessProxy::create): Deleted.
* UIProcess/Network/NetworkProcessProxy.h:
(WebKit::NetworkProcessProxy::throttler): Deleted.
(WebKit::NetworkProcessProxy::processPool): Deleted.
* UIProcess/Plugins/PluginProcessProxy.h:
(WebKit::PluginProcessProxy::pluginProcessAttributes const): Deleted.
(WebKit::PluginProcessProxy::pluginProcessToken const): Deleted.
(WebKit::PluginProcessProxy::isValid const): Deleted.
* UIProcess/Storage/StorageProcessProxy.cpp:
(WebKit::StorageProcessProxy::create): Deleted.
* UIProcess/Storage/StorageProcessProxy.h:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::ensureNetworkProcess):
(WebKit::WebProcessPool::ensureStorageProcessAndWebsiteDataStore):
(WebKit::WebProcessPool::establishWorkerContextConnectionToStorageProcess):
* UIProcess/WebProcessPool.h:
* UIProcess/WebProcessProxy.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236464 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoNetworkLoad::didReceiveResponse should pass its completion handler to its client
achristensen@apple.com [Tue, 25 Sep 2018 17:36:19 +0000 (17:36 +0000)]
NetworkLoad::didReceiveResponse should pass its completion handler to its client
https://bugs.webkit.org/show_bug.cgi?id=188701

Reviewed by Michael Catanzaro.

Right now we have a confusing enum ShouldContinueDidReceiveResponse and a complicated flow
that involves many objects and implicitly using NetworkLoad's destructor as part of the
loading flow.  This makes the responsibilities of the objects clear.

* NetworkProcess/Downloads/PendingDownload.cpp:
(WebKit::PendingDownload::didReceiveResponse):
* NetworkProcess/Downloads/PendingDownload.h:
* NetworkProcess/NetworkCORSPreflightChecker.cpp:
(WebKit::NetworkCORSPreflightChecker::didReceiveResponse):
(WebKit::NetworkCORSPreflightChecker::didReceiveResponseNetworkSession): Deleted.
* NetworkProcess/NetworkCORSPreflightChecker.h:
* NetworkProcess/NetworkDataTask.cpp:
(WebKit::NetworkDataTask::didReceiveResponse):
* NetworkProcess/NetworkDataTask.h:
* NetworkProcess/NetworkLoad.cpp:
(WebKit::NetworkLoad::~NetworkLoad):
(WebKit::NetworkLoad::convertTaskToDownload):
(WebKit::NetworkLoad::didReceiveResponse):
(WebKit::NetworkLoad::notifyDidReceiveResponse):
(WebKit::NetworkLoad::continueDidReceiveResponse): Deleted.
(WebKit::NetworkLoad::didReceiveResponseNetworkSession): Deleted.
* NetworkProcess/NetworkLoad.h:
* NetworkProcess/NetworkLoadClient.h:
* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::~NetworkResourceLoader):
(WebKit::NetworkResourceLoader::didReceiveResponse):
(WebKit::NetworkResourceLoader::didFinishWithRedirectResponse):
(WebKit::NetworkResourceLoader::continueDidReceiveResponse):
* NetworkProcess/NetworkResourceLoader.h:
* NetworkProcess/PingLoad.cpp:
(WebKit::PingLoad::didReceiveResponse):
(WebKit::PingLoad::didReceiveResponseNetworkSession): Deleted.
* NetworkProcess/PingLoad.h:
* NetworkProcess/PreconnectTask.cpp:
(WebKit::PreconnectTask::didReceiveResponse):
* NetworkProcess/PreconnectTask.h:
* NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp:
(WebKit::NetworkCache::SpeculativeLoad::didReceiveResponse):
* NetworkProcess/cache/NetworkCacheSpeculativeLoad.h:
* NetworkProcess/capture/NetworkDataTaskReplay.cpp:
(WebKit::NetworkCapture::NetworkDataTaskReplay::didReceiveResponse):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236463 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months ago[EME] Fix variable name that should have gone in r236317
calvaris@igalia.com [Tue, 25 Sep 2018 17:19:36 +0000 (17:19 +0000)]
[EME] Fix variable name that should have gone in r236317
https://bugs.webkit.org/show_bug.cgi?id=189944

Reviewed by Jer Noble.

m_cdmInstanceClientWeakPtrFactory becomes
m_cdmInstanceSessionClientWeakPtrFactory as its type changes to
CDMInstanceSessionClient.

* Modules/encryptedmedia/MediaKeySession.cpp:
(WebCore::MediaKeySession::MediaKeySession):
* Modules/encryptedmedia/MediaKeySession.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236462 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months ago[resource-timing] imported/w3c/web-platform-tests/resource-timing/resource_timing...
ryanhaddad@apple.com [Tue, 25 Sep 2018 16:57:32 +0000 (16:57 +0000)]
[resource-timing] imported/w3c/web-platform-tests/resource-timing/resource_timing.worker.html times out on WK1
https://bugs.webkit.org/show_bug.cgi?id=189908

Unreviewed test gardening.

* platform/mac-wk1/TestExpectations: Mark test as a failure since it is hitting a WPT harness timeout.
* platform/mac/TestExpectations: Remove expectation in favor of a mac-wk1 specific one.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236461 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoUnreviewed, correct a typo in a bug URL.
ryanhaddad@apple.com [Tue, 25 Sep 2018 15:56:16 +0000 (15:56 +0000)]
Unreviewed, correct a typo in a bug URL.

* platform/mac/TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236460 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoClean up code around RenderLayer's "has accelerated scrolling" functions
simon.fraser@apple.com [Tue, 25 Sep 2018 15:49:20 +0000 (15:49 +0000)]
Clean up code around RenderLayer's "has accelerated scrolling" functions
https://bugs.webkit.org/show_bug.cgi?id=189932

Reviewed by Zalan Bujtas.

RenderLayer had:

bool hasAcceleratedTouchScrolling()
bool hasTouchScrollableOverflow()
bool usesAcceleratedScrolling()
bool usesCompositedScrolling()
bool usesAsyncScrolling()

which are hard to keep in your head. Removed usesAcceleratedScrolling() since it just returns hasTouchScrollableOverflow().
Renamed hasAcceleratedTouchScrolling() to canUseAcceleratedTouchScrolling() to indicate that it just looks at style,
not whether layout has given the layer scrollable overflow yet. Tidy up some #ifdefs.

usesCompositedScrolling() and usesAsyncScrolling() are ScrollableArea overrides, and
look at backing layers, so require that compositing has run already. Note this in comments.

* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::canUseAcceleratedTouchScrolling const):
(WebCore::RenderLayer::hasTouchScrollableOverflow const):
(WebCore::RenderLayer::handleTouchEvent):
(WebCore::RenderLayer::usesAsyncScrolling const):
(WebCore::RenderLayer::showsOverflowControls const):
(WebCore::RenderLayer::calculateClipRects const):
(WebCore::RenderLayer::hasAcceleratedTouchScrolling const): Deleted.
(WebCore::RenderLayer::usesAcceleratedScrolling const): Deleted.
* rendering/RenderLayer.h:
* rendering/RenderLayerBacking.cpp:
(WebCore::layerOrAncestorIsTransformedOrUsingCompositedScrolling):
(WebCore::RenderLayerBacking::updateConfiguration):
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::useCoordinatedScrollingForLayer const):
(WebCore::RenderLayerCompositor::requiresCompositingForOverflowScrolling const):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236459 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoUnreviewed, update bug number of http/tests/misc/blob-size.html crash on Windows
cdumez@apple.com [Tue, 25 Sep 2018 15:45:42 +0000 (15:45 +0000)]
Unreviewed, update bug number of http/tests/misc/blob-size.html crash on Windows

* platform/win/TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236458 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months ago[WHLSL] Not all functions should be able to run in all shader stages
mmaxfield@apple.com [Tue, 25 Sep 2018 06:36:04 +0000 (06:36 +0000)]
[WHLSL] Not all functions should be able to run in all shader stages
https://bugs.webkit.org/show_bug.cgi?id=189121

Reviewed by Filip Pizlo.

ddx() and ddy() can only run in fragment shaders, and the barrier functions can only run in compute shaders.
ddx_coarse() & friends are currently implemented as just calling ddx(), so we only need to modify those functions
if/when we make them native.

The texture sampling functions that use implicit derivatives can run in any shader stage - they just use a LOD of
0. Therefore, those functions are unchanged.

* WebGPUShadingLanguageRI/All.js:
* WebGPUShadingLanguageRI/Intrinsics.js:
* WebGPUShadingLanguageRI/LateChecker.js:
(LateChecker.prototype._checkShaderType):
* WebGPUShadingLanguageRI/NativeFunc.js:
(NativeFunc):
(NativeFunc.prototype.get stage):
(NativeFunc.prototype.toDeclString):
* WebGPUShadingLanguageRI/Parse.js:
(parseFuncDecl):
(parseNativeFunc):
(parseNative):
* WebGPUShadingLanguageRI/Prepare.js:
(let.prepare):
* WebGPUShadingLanguageRI/SPIRV.html:
* WebGPUShadingLanguageRI/StandardLibrary.js:
(let.standardLibrary):
* WebGPUShadingLanguageRI/StatementCloner.js:
(StatementCloner.prototype.visitNativeFunc):
* WebGPUShadingLanguageRI/Test.html:
* WebGPUShadingLanguageRI/Test.js:
(tests.shaderStages):
* WebGPUShadingLanguageRI/WSyntaxError.js:
(WSyntaxError.prototype.toString):
(WSyntaxError):
* WebGPUShadingLanguageRI/index.html:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236455 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoApache can return a corrupt manifest file while ManifestGenerator::store is running
dewei_zhu@apple.com [Tue, 25 Sep 2018 05:12:13 +0000 (05:12 +0000)]
Apache can return a corrupt manifest file while ManifestGenerator::store is running
https://bugs.webkit.org/show_bug.cgi?id=189822

Reviewed by Ryosuke Niwa.

Updating a file on performance dashboard should be transactional between php and apache.
Otherwise, partial content may be served.

* public/api/measurement-set.php: Adapted invocation of 'generate_json_date_with_elapsed_time_if_needed'.
* public/api/runs.php: Adapted invocation of 'generate_json_date_with_elapsed_time_if_needed'.
* public/include/db.php: Make creating file transactionaly by taking advantage of
'move/rename' operation is atomic in OS.
Added logic to avoid overwriting file if all content except specified filed are identical.
* public/include/json-header.php: Added a helper function that added 'status' but does not
convert content to json.
* public/include/manifest-generator.php: Adapted invocation of 'generate_json_date_with_elapsed_time_if_needed'.
* public/shared/statistics.js: Removed unnecessary logging.
(Statistics.new.sampleMeanAndVarianceFromMultipleSamples):
* server-tests/api-manifest-tests.js: Updated one unit test.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236454 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoMark two tests as flakey.
simon.fraser@apple.com [Tue, 25 Sep 2018 04:21:32 +0000 (04:21 +0000)]
Mark two tests as flakey.

* platform/mac/TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236453 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months ago[WHLSL] Implement trap statements in Metal code generation
commit-queue@webkit.org [Tue, 25 Sep 2018 04:15:06 +0000 (04:15 +0000)]
[WHLSL] Implement trap statements in Metal code generation
https://bugs.webkit.org/show_bug.cgi?id=189615

Patch by Thomas Denney <tdenney@apple.com> on 2018-09-24
Reviewed by Myles C. Maxfield.

Each function called by an entry point now receives an additional
boolean pointer parameter, which is set to false if the function traps.
After each function call (to a non-native function) this trap parameter
is checked. The behavior of the interpreter has also been updated so
that a function entry point catches the trap and instead returns zero,
matching the behavior of compiled code.

* WebGPUShadingLanguageRI/Evaluator.js: Adds a new flag to allow the
test suite to check for traps and also returns zero from entry points
whose invocation trapped.
* WebGPUShadingLanguageRI/Metal/MSLBackend.js: Pass program to function
declarations.
* WebGPUShadingLanguageRI/Metal/MSLCodegenAll.js: Update dependencies.
* WebGPUShadingLanguageRI/Metal/MSLFunctionDeclaration.js: Add program
property.
* WebGPUShadingLanguageRI/Metal/MSLFunctionDefinition.js: Ditto.
* WebGPUShadingLanguageRI/Metal/MSLInsertTrapParameter.js: Added.
* WebGPUShadingLanguageRI/Metal/MSLStatementEmitter.js: Conforms to the
new trapping behavior.
* WebGPUShadingLanguageRI/Test.js: Update tests that trap.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236452 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoRemove AUTHORS and THANKS files which are stale
commit-queue@webkit.org [Tue, 25 Sep 2018 03:33:05 +0000 (03:33 +0000)]
Remove AUTHORS and THANKS files which are stale
https://bugs.webkit.org/show_bug.cgi?id=189941

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2018-09-24
Reviewed by Darin Adler.

Included mentions below so their names are still in ChangeLogs.

* AUTHORS: Removed.
Harri Porten (porten@kde.org) and Peter Kelly (pmk@post.com).
These authors remain mentioned in copyrights in source files.

* THANKS: Removed.
Richard Moore <rich@kde.org> - for filling the Math object with some life
Daegeun Lee <realking@mizi.com> - for pointing out some bugs and providing much code for the String and Date object.
Marco Pinelli <pinmc@libero.it> - for his patches
Christian Kirsch <ck@held.mind.de> - for his contribution to the Date object

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236451 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoRename WTF_COMPILER_GCC_OR_CLANG to WTF_COMPILER_GCC_COMPATIBLE
Hironori.Fujii@sony.com [Tue, 25 Sep 2018 03:05:13 +0000 (03:05 +0000)]
Rename WTF_COMPILER_GCC_OR_CLANG to WTF_COMPILER_GCC_COMPATIBLE
https://bugs.webkit.org/show_bug.cgi?id=189733

Reviewed by Michael Catanzaro.

Source/bmalloc:

* bmalloc/BCompiler.h:

Source/JavaScriptCore:

* assembler/ARM64Assembler.h:
* assembler/ARMAssembler.h:
(JSC::ARMAssembler::cacheFlush):
* assembler/MacroAssemblerARM.cpp:
(JSC::isVFPPresent):
* assembler/MacroAssemblerARM64.cpp:
* assembler/MacroAssemblerARMv7.cpp:
* assembler/MacroAssemblerMIPS.cpp:
* assembler/MacroAssemblerX86Common.cpp:
* heap/HeapCell.cpp:
* heap/HeapCell.h:
* jit/HostCallReturnValue.h:
* jit/JIT.h:
* jit/JITOperations.cpp:
* jit/ThunkGenerators.cpp:
* runtime/ArrayConventions.cpp:
(JSC::clearArrayMemset):
* runtime/JSBigInt.cpp:
(JSC::JSBigInt::digitDiv):

Source/WebCore:

No new tests (No behavior change).

* platform/graphics/cpu/arm/filters/FELightingNEON.cpp:
* platform/graphics/cpu/arm/filters/FELightingNEON.h:
* platform/graphics/filters/FELighting.cpp:
(WebCore::FELighting::platformApply):
* platform/graphics/filters/FELighting.h:

Source/WTF:

Clang for Windows build enables WTF_COMPILER_CLANG and
WTF_COMPILER_MSVC, but disables WTF_COMPILER_GCC_OR_CLANG. It is
strange WTF_COMPILER_GCC_OR_CLANG is not enabled even though
WTF_COMPILER_CLANG is enabled. However, Clang for Windows imitates
MSVC, and codes for COMPILER(GCC_OR_CLANG) are for non MSVC. At
least at the moment, it is not feasible to define
WTF_COMPILER_GCC_OR_CLANG for Clang for Windows.

To solve the issue, this change renames WTF_COMPILER_GCC_OR_CLANG
to WTF_COMPILER_GCC_COMPATIBLE.

As an exception, I'd like to use IGNORE_WARNINGS_* macros even in
Clang for Windows builds.

* wtf/Assertions.cpp: Replaced COMPILER(GCC_OR_CLANG) with COMPILER(GCC_COMPATIBLE).
* wtf/Assertions.h: Ditto.
* wtf/Atomics.h: Ditto.
* wtf/CheckedArithmetic.h: Ditto.
* wtf/FastMalloc.h: Ditto.
* wtf/MathExtras.h: Ditto.
* wtf/Platform.h: Ditto.
* wtf/StdLibExtras.h: Ditto.
* wtf/Vector.h: Ditto.
* wtf/text/ASCIIFastPath.h: Ditto.
* wtf/Compiler.h:  Ditto. Replaced "COMPILER(GCC_OR_CLANG)" with "COMPILER(GCC) || COMPILER(CLANG)" of IGNORE_WARNINGS_* macros.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236450 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months ago[WHLSL] It shouldn’t be possible to use ternary expressions as l-values
commit-queue@webkit.org [Tue, 25 Sep 2018 01:16:15 +0000 (01:16 +0000)]
[WHLSL] It shouldn’t be possible to use ternary expressions as l-values
https://bugs.webkit.org/show_bug.cgi?id=189290

Patch by Thomas Denney <tdenney@apple.com> on 2018-09-24
Reviewed by Myles C. Maxfield.

It is no longer possible for a ternary expression to be treated as an
l-value. This patch adds several test cases to verify that this is the
case.

* WebGPUShadingLanguageRI/Checker.js:
(Checker.prototype.visitTernaryExpression): No longer check isLValue.
* WebGPUShadingLanguageRI/NormalUsePropertyResolver:
(NormalUsePropertyResolver.visitTernaryExpression): Deleted.
* WebGPUShadingLanguageRI/Rewriter.js:
(Rewriter.prototype.visitTernaryExpression): No longer copy isLValue.
* WebGPUShadingLanguageRI/TernaryExpression.js:
(TernaryExpression):
(TernaryExpression.prototype.get elseExpression):
(TernaryExpression.prototype.get isLValue): Deleted.
(TernaryExpression.prototype.set isLValue): Deleted.
* WebGPUShadingLanguageRI/Test.js:
(tests.ternaryExpression): Add checks for failure if a failure is used
as an l-value.
(ternaryExpressionIsLValue.node.TernaryExpressionVisitor.prototype.visitTernaryExpression): Deleted.
(ternaryExpressionIsLValue.node.TernaryExpressionVisitor): Deleted.
(tests.ternaryExpressionIsLValue): Deleted.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236449 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 months agoCap lifetime of persistent cookies created client-side through document.cookie
wilander@apple.com [Tue, 25 Sep 2018 01:13:26 +0000 (01:13 +0000)]
Cap lifetime of persistent cookies created client-side through document.cookie
https://bugs.webkit.org/show_bug.cgi?id=189933
<rdar://problem/44741888>

Reviewed by Chris Dumez.

Source/WebCore:

Test: http/tests/cookies/capped-lifetime-for-cookie-set-in-js.html

As pointed out in https://github.com/mikewest/http-state-tokens:

1) Cookies are available to JavaScript by default via document.cookie, which
enables a smooth upgrade from one-time XSS to theft of persistent credentials
and also makes cookies available to Spectre-like attacks on memory.

2) Though the HttpOnly attribute was introduced well over a decade ago, only
~8.31% of Set-Cookie operations use it today (stats from Chrome). We need
developer incentives to put proper protections in place.

3) The median (uncompressed) Cookie request header is 409 bytes, while the 90th
percentile is 1,589 bytes, the 95th 2,549 bytes, the 99th 4,601 bytes, and
~0.1% of Cookie headers are over 10kB (stats from Chrome). This is bad for load
performance.

In addition to this, third-party scripts running in first-party contexts can
read user data through document.cookie and even store cross-site tracking data
in them.

Authentication cookies should be HttpOnly and thus not be affected by
restrictions to document.cookie. Cookies that persist for a long time should
be Secure, HttpOnly, and SameSite to provide good security and privacy.

By capping the lifetime of persistent cookies set through document.cookie we
embark on a journey towards better cookie management on the web.

* platform/network/cocoa/NetworkStorageSessionCocoa.mm:
(WebCore::filterCookies):
    Now caps the life time of persistent cookies to one week (seven days).
* testing/Internals.cpp:
(WebCore::Internals::getCookies const):
    New test function to get to cookie meta data such as expiry.
* testing/Internals.h:
* testing/Internals.idl:

LayoutTests:

* TestExpectations:
    Skipped the new test by default since the behavior change is for
    Cocoa platforms only.
* http/tests/cookies/capped-lifetime-for-cookie-set-in-js-expected.txt: Added.
* http/tests/cookies/capped-lifetime-for-cookie-set-in-js.html: Added.
* http/tests/cookies/resources/cookie-utilities.js:
* platform/ios/TestExpectations:
    Marked the new test as [ Pass ].
* platform/mac-wk2/TestExpectations:
    Marked the new test as [ Pass ].

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236448 268f45cc-cd09-0410-ab3c-d52691b4dbfc