WebKit-https.git
21 months agoSkip stress/splay-flash-access tests on memory limited platforms
guijemont@igalia.com [Thu, 21 Dec 2017 18:40:14 +0000 (18:40 +0000)]
Skip stress/splay-flash-access tests on memory limited platforms
https://bugs.webkit.org/show_bug.cgi?id=181086

Reviewed by Carlos Alberto Lopez Perez.

These tests use about 185M of memory, and occasionally get OOM-killed
on memory limited platforms.

* stress/splay-flash-access-1ms.js:
* stress/splay-flash-access.js:

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

21 months agoLayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch...
commit-queue@webkit.org [Thu, 21 Dec 2017 18:38:24 +0000 (18:38 +0000)]
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-request-xhr.https.html is failing one test
https://bugs.webkit.org/show_bug.cgi?id=181072

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

Test loads twice the same resource but the memory cache intercepts the second load and provides the first response.
Fixing the test by mandating the response to not be cacheable.

* web-platform-tests/service-workers/service-worker/fetch-request-xhr.https-expected.txt:
* web-platform-tests/service-workers/service-worker/resources/fetch-request-xhr-worker.js:
(event.respondWith.new.Promise):

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

21 months agoAdd initial DOM support for Media Capabilities
jer.noble@apple.com [Thu, 21 Dec 2017 18:28:21 +0000 (18:28 +0000)]
Add initial DOM support for Media Capabilities
https://bugs.webkit.org/show_bug.cgi?id=181064

Reviewed by Eric Carlson.

Source/WebCore:

Test: media/mediacapabilities/mediacapabilities-types.html

Add basic, cross-platform, DOM facing type and API support for Media Capabilities API.

* bindings/scripts/CodeGenerator.pm:
(WK_ucfirst):
* CMakeLists.txt:
* DerivedSources.make:
* Modules/mediacapabilities/AudioConfiguration.h: Added.
* Modules/mediacapabilities/AudioConfiguration.idl: Added.
* Modules/mediacapabilities/MediaCapabilities.cpp: Added.
(WebCore::bucketMIMETypes):
(WebCore::isValidMIMEType):
(WebCore::isValidVideoConfiguration):
(WebCore::isValidAudioConfiguration):
(WebCore::isValidMediaConfiguration):
(WebCore::MediaCapabilities::decodingInfo):
(WebCore::MediaCapabilities::encodingInfo):
* Modules/mediacapabilities/MediaCapabilities.h: Added.
* Modules/mediacapabilities/MediaCapabilities.idl: Added.
* Modules/mediacapabilities/MediaCapabilitiesInfo.h: Added.
(WebCore::MediaCapabilitiesInfo::supported const):
(WebCore::MediaCapabilitiesInfo::setSupported):
(WebCore::MediaCapabilitiesInfo::smooth const):
(WebCore::MediaCapabilitiesInfo::setSmooth):
(WebCore::MediaCapabilitiesInfo::powerEfficient const):
(WebCore::MediaCapabilitiesInfo::setPowerEfficient):
* Modules/mediacapabilities/MediaCapabilitiesInfo.idl: Added.
* Modules/mediacapabilities/MediaConfiguration.h: Added.
* Modules/mediacapabilities/MediaConfiguration.idl: Added.
* Modules/mediacapabilities/MediaDecodingConfiguration.h: Added.
* Modules/mediacapabilities/MediaDecodingConfiguration.idl: Added.
* Modules/mediacapabilities/MediaDecodingType.h: Added.
* Modules/mediacapabilities/MediaDecodingType.idl: Added.
* Modules/mediacapabilities/MediaEncodingConfiguration.h: Added.
* Modules/mediacapabilities/MediaEncodingConfiguration.idl: Added.
* Modules/mediacapabilities/MediaEncodingType.h: Added.
* Modules/mediacapabilities/MediaEncodingType.idl: Added.
* Modules/mediacapabilities/NavigatorMediaCapabilities.cpp: Added.
(WebCore::NavigatorMediaCapabilities::NavigatorMediaCapabilities):
(WebCore::NavigatorMediaCapabilities::supplementName):
(WebCore::NavigatorMediaCapabilities::from):
(WebCore::NavigatorMediaCapabilities::mediaCapabilities):
(WebCore::NavigatorMediaCapabilities::mediaCapabilities const):
* Modules/mediacapabilities/NavigatorMediaCapabilities.h: Added.
* Modules/mediacapabilities/NavigatorMediaCapabilities.idl: Added.
* Modules/mediacapabilities/ScreenColorGamut.h: Added.
* Modules/mediacapabilities/ScreenColorGamut.idl: Added.
* Modules/mediacapabilities/ScreenLuminance.h: Added.
(WebCore::ScreenLuminance::min const):
(WebCore::ScreenLuminance::setMin):
(WebCore::ScreenLuminance::max const):
(WebCore::ScreenLuminance::setMax):
(WebCore::ScreenLuminance::maxAverage const):
(WebCore::ScreenLuminance::setMaxAverage):
* Modules/mediacapabilities/ScreenLuminance.idl: Added.
* Modules/mediacapabilities/VideoConfiguration.h: Added.
* Modules/mediacapabilities/VideoConfiguration.idl: Added.
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/WebCoreBuiltinNames.h:
* page/RuntimeEnabledFeatures.h:
(WebCore::RuntimeEnabledFeatures::setMediaCapabilitiesEnabled):
(WebCore::RuntimeEnabledFeatures::mediaCapabilitiesEnabled const):
* page/Settings.yaml:

Source/WebKit:

Add a new preference to enable the (disabled-by-default) Media Capabilities API.

* Shared/WebPreferences.yaml:
* UIProcess/API/C/WKPreferences.cpp:
(WKPreferencesSetMediaCapabilitiesEnabled):
(WKPreferencesGetMediaCapabilitiesEnabled):
* UIProcess/API/C/WKPreferencesRef.h:

Source/WebKitLegacy/mac:

Add a new preference to enable the (disabled-by-default) Media Capabilities API.

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

Tools:

* DumpRenderTree/mac/DumpRenderTree.mm:
(resetWebPreferencesToConsistentValues):
* WebKitTestRunner/TestController.cpp:
(WTR::TestController::resetPreferencesToConsistentValues):

LayoutTests:

* fast/dom/navigator-detached-no-crash-expected.txt:
* media/mediacapabilities/mediacapabilities-types-expected.txt: Added.
* media/mediacapabilities/mediacapabilities-types.html: Added.
* platform/gtk/fast/dom/navigator-detached-no-crash-expected.txt:
* platform/mac-elcapitan-wk2/fast/dom/navigator-detached-no-crash-expected.txt:
* platform/mac-wk1/fast/dom/navigator-detached-no-crash-expected.txt:
* platform/win/fast/dom/navigator-detached-no-crash-expected.txt:

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

21 months agoCorrect a TestExpectations entry after r226074.
ryanhaddad@apple.com [Thu, 21 Dec 2017 18:01:43 +0000 (18:01 +0000)]
Correct a TestExpectations entry after r226074.
https://bugs.webkit.org/show_bug.cgi?id=180703

Unreviewed test gardening.

* platform/wk2/TestExpectations:

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

21 months agoAdd optional logging of per-resource cookie information
krollin@apple.com [Thu, 21 Dec 2017 17:53:49 +0000 (17:53 +0000)]
Add optional logging of per-resource cookie information
https://bugs.webkit.org/show_bug.cgi?id=180883
<rdar://problem/35802295>

Reviewed by Brent Fulgham.

In order to support the tracking of the efficacy of Intelligent
Tracking Protection, add some logging of the cookie information
associated with each loaded resource. This logging is off by default
and is enabled with `defaults write -g WebKitLogCookieInformation
-bool true`.

Source/WebCore:

No new tests -- no new user functionality added. Only new logging has
been added.

* platform/Cookie.h:
(WebCore::Cookie::Cookie):
(WebCore::Cookie::isNull const):
(WebCore::Cookie::encode const):
(WebCore::Cookie::decode):
* platform/network/cf/CookieJarCFNet.cpp:
(WebCore::canonicalCookieTime):
(WebCore::cookieCreatedTime):
(WebCore::cookieExpirationTime):
(WebCore::getRawCookies):
* platform/network/cocoa/CookieCocoa.mm:
(WebCore::cookieCreated):
(WebCore::Cookie::Cookie):
* platform/network/soup/CookieJarSoup.cpp:
(WebCore::getRawCookies):

Source/WebKit:

* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::initializeNetworkProcess):
* NetworkProcess/NetworkProcess.h:
(WebKit::NetworkProcess::shouldLogCookieInformation const):
* NetworkProcess/NetworkProcessCreationParameters.cpp:
(WebKit::NetworkProcessCreationParameters::encode const):
(WebKit::NetworkProcessCreationParameters::decode):
* NetworkProcess/NetworkProcessCreationParameters.h:
* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::didFinishLoading):
(WebKit::NetworkResourceLoader::sendResultForCacheEntry):
(WebKit::NetworkResourceLoader::shouldLogCookieInformation const):
(WebKit::NetworkResourceLoader::logCookieInformation const):
* NetworkProcess/NetworkResourceLoader.h:
* UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::WebProcessPool::platformInitializeNetworkProcess):

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

21 months agobuild-jsc: allow to build out of tree
guijemont@igalia.com [Thu, 21 Dec 2017 17:50:30 +0000 (17:50 +0000)]
build-jsc: allow to build out of tree
https://bugs.webkit.org/show_bug.cgi?id=180810

Reviewed by Carlos Alberto Lopez Perez.

* Scripts/build-jsc:

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

21 months agoAdopt new secure coding APIs in WebCore
bfulgham@apple.com [Thu, 21 Dec 2017 17:18:31 +0000 (17:18 +0000)]
Adopt new secure coding APIs in WebCore
https://bugs.webkit.org/show_bug.cgi?id=178484
<rdar://problem/34837193>

Reviewed by Eric Carlson.

Source/WebCore:

Switch to new NSKeyed[Un]Archiver methods that use NSSecureCoding by default.

Most of the new API is wrapped in a set of convenience methods so we can
build without the new API on older systems.

No change in behavior.

* editing/cocoa/EditorCocoa.mm:
(WebCore::archivedDataForAttributedString): Use new convenience method
to archive the string object.
* platform/ios/PlatformPasteboardIOS.mm:
(WebCore::PlatformPasteboard::write): Use new secure API.
(WebCore::PlatformPasteboard::typesSafeForDOMToReadAndWrite const): Ditto.

Source/WebCore/PAL:

Due to <rdar://problem/31376830 we cannot used SecureCoding on NSAttributedString
in some cases. Add a macro for OS revisions that do not support secure coding,
and use the standard unarchive operation for NSAttributedString in those cases.

Rename 'insecurelyUnarchiveObjectOfClassFromData' to 'insecurelyUnarchiveObjectFromData',
and move it earlier in the file so that it can be reused in 'unarchivedObjectOfClassFromData'.

* pal/spi/cocoa/NSKeyedArchiverSPI.h:
(insecurelyUnarchiveObjectFromData): Renamed from insecurelyUnarchiveObjectOfClassFromData.
(unarchivedObjectOfClassFromData): Renamed from 'securelyUnarchiveObjectOfClassFromData' and
modified to use 'insecurelyUnarchiveObjectFromData'.
(securelyUnarchiveObjectOfClassFromData): Deleted.
(insecurelyUnarchiveObjectOfClassFromData): Deleted.

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

21 months agoUnreviewed Debug build fix after r226217
bfulgham@apple.com [Thu, 21 Dec 2017 17:16:59 +0000 (17:16 +0000)]
Unreviewed Debug build fix after r226217

* UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:

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

21 months agoSkip slow jsc tests on embedded platforms
guijemont@igalia.com [Thu, 21 Dec 2017 15:43:56 +0000 (15:43 +0000)]
Skip slow jsc tests on embedded platforms
https://bugs.webkit.org/show_bug.cgi?id=180937

Reviewed by Carlos Alberto Lopez Perez.

The tests typeProfiler/deltablue-for-of.js and
typeProfiler/getter-richards.js take a very long time in the
ftl-no-cjit-type-profiler-force-poly-proto on embedded platform, and
thus always timeout. They should be skipped on these platforms.

* typeProfiler/deltablue-for-of.js: Skip on arm*/mips.
* typeProfiler/getter-richards.js: Skip on arm*/mips.

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

21 months ago[RenderTreeBuilder] Move ruby mutation code to a dedicated class.
zalan@apple.com [Thu, 21 Dec 2017 15:13:26 +0000 (15:13 +0000)]
[RenderTreeBuilder] Move ruby mutation code to a dedicated class.
https://bugs.webkit.org/show_bug.cgi?id=181066
<rdar://problem/36167692>

Reviewed by Antti Koivisto.

This is in preparation for moving all ruby mutation code here.

No change in functionality.

* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* rendering/updating/RenderTreeBuilder.cpp:
(WebCore::RenderTreeBuilder::insertChild):
(WebCore::RenderTreeBuilder::rubyRunInsertChild): Deleted.
* rendering/updating/RenderTreeBuilder.h:
(WebCore::RenderTreeBuilder::rubyBuilder):
* rendering/updating/RenderTreeBuilderRuby.cpp: Added.
(WebCore::RenderTreeBuilder::Ruby::Ruby):
(WebCore::RenderTreeBuilder::Ruby::insertChild):
* rendering/updating/RenderTreeBuilderRuby.h: Copied from Source/WebCore/rendering/updating/RenderTreeBuilder.h.

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

21 months agoReplace a FIXME comment in CanvasGradient::addColorStop().
Ms2ger@igalia.com [Thu, 21 Dec 2017 14:51:49 +0000 (14:51 +0000)]
Replace a FIXME comment in CanvasGradient::addColorStop().
https://bugs.webkit.org/show_bug.cgi?id=181034

Reviewed by Daniel Bates.

Tests: LayoutTests/imported/w3c/canvas/2d.gradient.object.current.html

* html/canvas/CanvasGradient.cpp:
(WebCore::CanvasGradient::addColorStop):

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

21 months agoREGRESSION(r207238): [GTK] Layout test storage/domstorage/events/basic-body-attribute...
Ms2ger@igalia.com [Thu, 21 Dec 2017 14:44:47 +0000 (14:44 +0000)]
REGRESSION(r207238): [GTK] Layout test storage/domstorage/events/basic-body-attribute.html is failing
https://bugs.webkit.org/show_bug.cgi?id=163826

Reviewed by Daniel Bates.

Update basic-body-attribute.html to the current standard.

* platform/gtk/TestExpectations:
* platform/win/TestExpectations:
* platform/wpe/TestExpectations:
* storage/domstorage/events/basic-body-attribute-expected.txt:
* storage/domstorage/events/basic-body-attribute.html:

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

21 months agoElement fullscreen interface should display the location
commit-queue@webkit.org [Thu, 21 Dec 2017 10:56:58 +0000 (10:56 +0000)]
Element fullscreen interface should display the location
https://bugs.webkit.org/show_bug.cgi?id=181006
rdar://problem/36143176

Patch by Jeremy Jones <jeremyj@apple.com> on 2017-12-21
Reviewed by Simon Fraser.

Source/WebCore/PAL:

Add iOS availability check.

* pal/spi/cocoa/LinkPresentationSPI.h:

Source/WebKit:

Show a short user visible location string with a lock if secure and green when trusted.

Includes other interface cleanup and tweaks.

* UIProcess/ios/WKFullScreenWindowControllerIOS.mm:
(-[_WKFullScreenViewController viewWillTransitionToSize:withTransitionCoordinator:]):
(-[_WKFullScreenViewController visualEffectViewWithFrame:]):
(mirrorEdgeInsets):
(-[_WKFullScreenViewController _updateLayoutMargins]):
(-[_WKFullScreenViewController viewDidLayoutSubviews]):
(-[_WKFullScreenViewController setLocation:secure:trustedName:trustedSite:]):
(-[_WKFullScreenViewController createSubviews]):
(-[_WKFullScreenViewController loadView]):
(-[_WKFullScreenViewController viewDidAppear:]):
(-[_WKFullScreenViewController hideCancelButton]):
(-[_WKFullScreenViewController showCancelButton:]):
(-[_WKFullscreenRootViewController setShowsStatusBar:]):
(-[_WKFullscreenRootViewController prefersStatusBarHidden]):
(-[WKFullScreenWindowController _invalidateEVOrganizationName]):
(-[WKFullScreenWindowController isSecure]):
(-[WKFullScreenWindowController _serverTrust]):
(-[WKFullScreenWindowController _EVOrganizationName]):
(-[WKFullScreenWindowController updateLocationInfo]):
(-[WKFullScreenWindowController enterFullScreen]):
(-[WKFullScreenWindowController beganEnterFullScreenWithInitialFrame:finalFrame:]):
(-[WKFullScreenWindowController beganExitFullScreenWithInitialFrame:finalFrame:]):
(-[_WKFullScreenViewController prefersStatusBarHidden]): Deleted.
* WebKit.xcassets/Done.imageset/Contents.json: Removed.
* WebKit.xcassets/LockMini.imageset/Contents.json: Added.
* WebKit.xcassets/LockMini.imageset/NavigationBarLockMini@2x.pdf: Copied from Source/WebKit/WebKit.xcassets/Done.imageset/Done.pdf.
* WebKit.xcassets/LockMini.imageset/NavigationBarLockMini@3x.pdf: Renamed from Source/WebKit/WebKit.xcassets/Done.imageset/Done.pdf.

Source/WTF:

Add SecTrustCopyInfo SPI.

* wtf/spi/cocoa/SecuritySPI.h:

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

21 months agoEnable picture-in-picture from inline element on suspend.
commit-queue@webkit.org [Thu, 21 Dec 2017 10:08:14 +0000 (10:08 +0000)]
Enable picture-in-picture from inline element on suspend.
https://bugs.webkit.org/show_bug.cgi?id=180942
rdar://problem/34745234

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

Source/WebCore:

When a element goes into element fullscreen mode, a descendant video element gains the ability to automatically enter picture-in-picture on application suspend.

This adds support for video fullscreen standby mode, which creates a VideoFullscreenInterfaceAVKit so that it can
trigger auto-pip on application suspend while the element is not actually presenting in video fullscreen mode.

VideoFullscreenInterfaceAVKit has a new state transition system that will replace the existing one to enable the increased
number and complexity of state transitions. Until we are ready to completely commit to this new code path, this implementation is
conditionalized to keep the existing code path working.

* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::enterFullscreen):
(WebCore::HTMLMediaElement::exitFullscreen):
(WebCore::HTMLMediaElement::setVideoFullscreenStandby):
(WebCore::HTMLMediaElement::shouldOverrideBackgroundPlaybackRestriction const):
* html/HTMLMediaElement.h:
* page/ChromeClient.h:
* platform/cocoa/VideoFullscreenChangeObserver.h:
* platform/ios/VideoFullscreenInterfaceAVKit.h:
* platform/ios/VideoFullscreenInterfaceAVKit.mm:
(-[WebAVPlayerViewControllerDelegate playerViewControllerShouldStartPictureInPictureFromInlineWhenEnteringBackground:]):
(-[WebAVPlayerLayer layoutSublayers]):
(allocWebAVPictureInPicturePlayerLayerViewInstance):
(allocWebAVPlayerLayerViewInstance):
(VideoFullscreenInterfaceAVKit::applicationDidBecomeActive):
(VideoFullscreenInterfaceAVKit::setupFullscreen):
(VideoFullscreenInterfaceAVKit::enterFullscreen):
(VideoFullscreenInterfaceAVKit::exitFullscreen):
(VideoFullscreenInterfaceAVKit::cleanupFullscreen):
(VideoFullscreenInterfaceAVKit::requestHideAndExitFullscreen):
(VideoFullscreenInterfaceAVKit::preparedToReturnToInline):
(VideoFullscreenInterfaceAVKit::mayAutomaticallyShowVideoPictureInPicture const):
(VideoFullscreenInterfaceAVKit::willStartPictureInPicture):
(VideoFullscreenInterfaceAVKit::didStartPictureInPicture):
(VideoFullscreenInterfaceAVKit::failedToStartPictureInPicture):
(VideoFullscreenInterfaceAVKit::willStopPictureInPicture):
(VideoFullscreenInterfaceAVKit::didStopPictureInPicture):
(VideoFullscreenInterfaceAVKit::prepareForPictureInPictureStopWithCompletionHandler):
(VideoFullscreenInterfaceAVKit::shouldExitFullscreenWithReason):
(VideoFullscreenInterfaceAVKit::setMode):
(VideoFullscreenInterfaceAVKit::clearMode):
(VideoFullscreenInterfaceAVKit::setHasVideoContentLayer):
(VideoFullscreenInterfaceAVKit::setInlineRect):
(VideoFullscreenInterfaceAVKit::doSetup):
(VideoFullscreenInterfaceAVKit::finalizeSetup):
(VideoFullscreenInterfaceAVKit::doEnterFullscreen):
(VideoFullscreenInterfaceAVKit::doExitFullscreen):
(VideoFullscreenInterfaceAVKit::exitFullscreenHandler):
(VideoFullscreenInterfaceAVKit::enterFullscreenHandler):
(VideoFullscreenInterfaceAVKit::returnToStandby):
* platform/ios/WebVideoFullscreenControllerAVKit.mm:
(VideoFullscreenControllerContext::requestUpdateInlineRect):
(VideoFullscreenControllerContext::requestVideoContentLayer):
(VideoFullscreenControllerContext::returnVideoContentLayer):
(VideoFullscreenControllerContext::didSetupFullscreen):
(VideoFullscreenControllerContext::didExitFullscreen):
(VideoFullscreenControllerContext::setUpFullscreen):

Source/WebKit:

Add support for video fullscreen standby and imporved fullscreen state transition process.

Video fullscreen standby allows a video element to have its fullscreen interface state created and
continuously updated so that it can quickly change presentation state on application state.

In order to accomplish this, this change allows the fullscreen presentation to decide when it needs
an updated inline rect, or the presence of the video layer.

This is conditionalized until mac supports this model.

* UIProcess/Cocoa/VideoFullscreenManagerProxy.h:
* UIProcess/Cocoa/VideoFullscreenManagerProxy.messages.in:
* UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
(WebKit::VideoFullscreenModelContext::requestUpdateInlineRect):
(WebKit::VideoFullscreenModelContext::requestVideoContentLayer):
(WebKit::VideoFullscreenModelContext::returnVideoContentLayer):
(WebKit::VideoFullscreenManagerProxy::setupFullscreenWithID):
(WebKit::VideoFullscreenManagerProxy::setInlineRect):
(WebKit::VideoFullscreenManagerProxy::setHasVideoContentLayer):
(WebKit::VideoFullscreenManagerProxy::requestUpdateInlineRect):
(WebKit::VideoFullscreenManagerProxy::requestVideoContentLayer):
(WebKit::VideoFullscreenManagerProxy::returnVideoContentLayer):
* WebProcess/FullScreen/WebFullScreenManager.cpp:
(WebKit::WebFullScreenManager::didEnterFullScreen):
(WebKit::WebFullScreenManager::willExitFullScreen):
* WebProcess/FullScreen/WebFullScreenManager.h:
* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::supportsVideoFullscreenStandby):
(WebKit::WebChromeClient::enterVideoFullscreenForVideoElement):
* WebProcess/WebCoreSupport/WebChromeClient.h:
* WebProcess/cocoa/VideoFullscreenManager.h:
(WebKit::VideoFullscreenInterfaceContext::fullscreenStandby const):
(WebKit::VideoFullscreenInterfaceContext::setFullscreenStandby):
* WebProcess/cocoa/VideoFullscreenManager.messages.in:
* WebProcess/cocoa/VideoFullscreenManager.mm:
(WebKit::VideoFullscreenManager::supportsVideoFullscreenStandby const):
(WebKit::VideoFullscreenManager::enterVideoFullscreenForVideoElement):
(WebKit::VideoFullscreenManager::requestUpdateInlineRect):
(WebKit::VideoFullscreenManager::requestVideoContentLayer):
(WebKit::VideoFullscreenManager::returnVideoContentLayer):
(WebKit::VideoFullscreenManager::didSetupFullscreen):
(WebKit::VideoFullscreenManager::didExitFullscreen):
(WebKit::VideoFullscreenManager::didCleanupFullscreen):

Source/WebKitLegacy/mac:

Update signature of enterVideoFullscreenForVideoElement().

* WebCoreSupport/WebChromeClient.h:
* WebCoreSupport/WebChromeClient.mm:
(WebChromeClient::enterVideoFullscreenForVideoElement):

Source/WebKitLegacy/win:

Update signature of enterVideoFullscreenForVideoElement.

* WebCoreSupport/WebChromeClient.cpp:
(WebChromeClient::enterVideoFullscreenForVideoElement):
* WebCoreSupport/WebChromeClient.h:

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

21 months agoDeferredLoadingScope incorrectly disabled images or enables deferred loading
rniwa@webkit.org [Thu, 21 Dec 2017 06:48:48 +0000 (06:48 +0000)]
DeferredLoadingScope incorrectly disabled images or enables deferred loading
https://bugs.webkit.org/show_bug.cgi?id=181077

Reviewed by Wenson Hsieh.

Source/WebCore:

Fixed the bug that DeferredLoadingScope::~DeferredLoadingScope was checking the wrong flag
for restoring the disabledness of images and deferred loading.

Test: editing/pasteboard/pasting-with-images-disabled-should-not-enable-deferred-loading.html

* editing/cocoa/WebContentReaderCocoa.mm:
(WebCore::DeferredLoadingScope::~DeferredLoadingScope): Fixed the bug.
* testing/Internals.cpp:
(WebCore::Internals::pageDefersLoading): Added for testing.
* testing/Internals.h:
* testing/Internals.idl: Added pageDefersLoading.

LayoutTests:

Added a regression test.

* editing/pasteboard/pasting-with-images-disabled-should-not-enable-deferred-loading-expected.txt: Added.
* editing/pasteboard/pasting-with-images-disabled-should-not-enable-deferred-loading.html: Added.

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

21 months agoisSafari check should take Safari Technology Preview into account
rniwa@webkit.org [Thu, 21 Dec 2017 05:39:31 +0000 (05:39 +0000)]
isSafari check should take Safari Technology Preview into account
https://bugs.webkit.org/show_bug.cgi?id=181076

Reviewed by Alex Christensen.

Fixed isSafari() so that it returns true for Safari Technology Preview. This bug resulted in the custom pasteboard
types not being enabled in Safari Technology Preview. In long term, we should eliminate these isSafari() checks.

* platform/cocoa/RuntimeApplicationChecksCocoa.mm:
(WebCore::MacApplication::isSafari):

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

21 months agowebkitpy: simctl cannot handle partial runtime version matches
jbedard@apple.com [Thu, 21 Dec 2017 04:37:55 +0000 (04:37 +0000)]
webkitpy: simctl cannot handle partial runtime version matches
https://bugs.webkit.org/show_bug.cgi?id=181055
<rdar://problem/36163798>

Reviewed by Alexey Proskuryakov.

A request for a simulator runtime of iOS 11 should be fulfilled by
iOS 11.0.1.

* Scripts/webkitpy/xcode/simulator.py:
(Simulator.runtime): Allow for partial matching of iOS runtime versions.
* Scripts/webkitpy/xcode/simulator_unittest.py:
(test_failed_partial_version_match): Test that partial version mapping does
not give false positives.

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

21 months ago[Attachment Support] Attachment replacement logic should not depend on subresource...
wenson_hsieh@apple.com [Thu, 21 Dec 2017 03:50:16 +0000 (03:50 +0000)]
[Attachment Support] Attachment replacement logic should not depend on subresource URL attribute replacement
https://bugs.webkit.org/show_bug.cgi?id=181068
<rdar://problem/36168313>

Reviewed by Ryosuke Niwa.

Refactors attachment replacement logic, so that it doesn't require us to first replace element attributes that
contain subresource URLs with blob URLs before performing attachment element replacement. See below comments for
more detail.

Covered by existing API tests in WKAttachmentTests.

* editing/WebContentReader.h:
(WebCore::BlobReplacementInfo::isEmpty const): Deleted.

Remove BlobReplacementInfo. Instead, augment `replaceRichContentWithAttachments` so that it takes in the list of
subresources directly and generates blobs for each subresource.

* editing/cocoa/EditorCocoa.mm:
(WebCore::Editor::replaceSelectionWithAttributedString):
* editing/cocoa/WebContentReaderCocoa.mm:
(WebCore::shouldReplaceRichContentWithAttachments):
(WebCore::createFragmentForImageAttachment):
(WebCore::replaceRichContentWithAttachments):
(WebCore::createFragmentAndAddResources):
(WebCore::sanitizeMarkupWithArchive):

In these helper functions that currently convert subresource URLs to blob URLs, if attachment elements are not
defined out, and the runtime feature for attachment elements is enabled, then use an alternate codepath to
adjust the markup (via replaceRichContentWithAttachments).

Otherwise, fall back to default subresource URL conversion logic, which (at the moment) still converts
subresources to blobs, but will soon be changed to emit data URLs instead.

(WebCore::WebContentReader::readWebArchive):
(WebCore::WebContentMarkupReader::readWebArchive):
(WebCore::WebContentReader::readRTFD):
(WebCore::WebContentMarkupReader::readRTFD):
(WebCore::WebContentReader::readRTF):
(WebCore::WebContentMarkupReader::readRTF):
(WebCore::WebContentReader::readImage):

Remove the createFragmentFromAttributedString helper and revert to just calling createFragmentAndAddResources.

(WebCore::createFragmentFromAttributedString): Deleted.

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

21 months ago[CMake][Win] Add a way to set CMAKE_IGNORE_PATH
don.olmstead@sony.com [Thu, 21 Dec 2017 03:39:49 +0000 (03:39 +0000)]
[CMake][Win] Add a way to set CMAKE_IGNORE_PATH
https://bugs.webkit.org/show_bug.cgi?id=181056

Reviewed by Konstantin Tokarev.

* Source/cmake/OptionsWin.cmake:

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

21 months ago[MediaStream] Add screen capture IDL and stub functions
eric.carlson@apple.com [Thu, 21 Dec 2017 02:45:36 +0000 (02:45 +0000)]
[MediaStream] Add screen capture IDL and stub functions
https://bugs.webkit.org/show_bug.cgi?id=181070
<rdar://problem/35555184>

Reviewed by Youenn Fablet.

Source/WebCore:

Tests: fast/mediastream/screencapture-disabled.html
       fast/mediastream/screencapture-enabled.html

* Modules/mediastream/MediaDevices.cpp:
(WebCore::MediaDevices::getDisplayMedia const):
(WebCore::MediaDevices::getSupportedConstraints):
* Modules/mediastream/MediaDevices.h:
* Modules/mediastream/MediaDevices.idl:
* Modules/mediastream/MediaTrackConstraints.cpp:
(WebCore::convertToInternalForm):
* Modules/mediastream/MediaTrackConstraints.h:
* Modules/mediastream/MediaTrackConstraints.idl:
* Modules/mediastream/MediaTrackSupportedConstraints.h:
* Modules/mediastream/MediaTrackSupportedConstraints.idl:
* Modules/mediastream/UserMediaRequest.cpp:
(WebCore::UserMediaRequest::start):
(WebCore::UserMediaRequest::allow):
(WebCore::UserMediaRequest::deny):
* Modules/mediastream/UserMediaRequest.h:
* page/RuntimeEnabledFeatures.h:
(WebCore::RuntimeEnabledFeatures::screenCaptureEnabled const):
(WebCore::RuntimeEnabledFeatures::setScreenCaptureEnabled):
* platform/mediastream/CaptureDevice.h:
* platform/mediastream/MediaConstraints.cpp:
(WebCore::MediaTrackConstraintSetMap::set):
* platform/mediastream/MediaConstraints.h:
(WebCore::MediaTrackConstraintSetMap::displaySurface const):
(WebCore::MediaTrackConstraintSetMap::logicalSurface const):
(WebCore::MediaTrackConstraintSetMap::encode const):
(WebCore::MediaTrackConstraintSetMap::decode):
* platform/mediastream/MediaStreamRequest.h:
* platform/mediastream/RealtimeMediaSource.cpp:
(WebCore::RealtimeMediaSource::fitnessDistance):
(WebCore::RealtimeMediaSource::applyConstraint):
(WebCore::RealtimeMediaSource::supportsConstraint const):
* platform/mediastream/RealtimeMediaSourceCenter.cpp:
(WebCore::RealtimeMediaSourceCenter::validateRequestConstraints):
(WebCore::RealtimeMediaSourceCenter::captureDeviceWithPersistentID):
* platform/mediastream/RealtimeMediaSourceSettings.h:
(WebCore::RealtimeMediaSourceSettings::supportsDisplaySurface const):
(WebCore::RealtimeMediaSourceSettings::displaySurface const):
(WebCore::RealtimeMediaSourceSettings::setDisplaySurface):
(WebCore::RealtimeMediaSourceSettings::supportsLogicalSurface const):
(WebCore::RealtimeMediaSourceSettings::logicalSurface const):
(WebCore::RealtimeMediaSourceSettings::setLogicalSurface):
* platform/mediastream/RealtimeMediaSourceSupportedConstraints.cpp:
(WebCore::RealtimeMediaSourceSupportedConstraints::supportsConstraint const):
* platform/mediastream/RealtimeMediaSourceSupportedConstraints.h:
(WebCore::RealtimeMediaSourceSupportedConstraints::supportsDisplaySurface const):
(WebCore::RealtimeMediaSourceSupportedConstraints::setSupportsDisplaySurface):
(WebCore::RealtimeMediaSourceSupportedConstraints::supportsLogicalSurface const):
(WebCore::RealtimeMediaSourceSupportedConstraints::setSupportsLogicalSurface):
(WebCore::RealtimeMediaSourceSupportedConstraints::encode const):
(WebCore::RealtimeMediaSourceSupportedConstraints::decode):
* platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp:
* platform/mock/MockRealtimeVideoSource.cpp:
* testing/InternalSettings.cpp:
(WebCore::InternalSettings::Backup::Backup):
(WebCore::InternalSettings::Backup::restoreTo):
(WebCore::InternalSettings::setScreenCaptureEnabled):
* testing/InternalSettings.h:
* testing/InternalSettings.idl:

Source/WebKit:

* Shared/WebPreferences.yaml:
* UIProcess/API/Cocoa/WKPreferences.mm:
(-[WKPreferences _screenCaptureEnabled]):
(-[WKPreferences _setScreenCaptureEnabled:]):
* UIProcess/API/Cocoa/WKPreferencesPrivate.h:
* WebProcess/InjectedBundle/InjectedBundle.cpp:
(WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):

LayoutTests:

* fast/mediastream/screencapture-disabled-expected.txt: Added.
* fast/mediastream/screencapture-disabled.html: Added.
* fast/mediastream/screencapture-enabled-expected.txt: Added.
* fast/mediastream/screencapture-enabled.html: Added.

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

21 months agoUnreviewed, rolling out r225656.
jlewis3@apple.com [Thu, 21 Dec 2017 02:38:00 +0000 (02:38 +0000)]
Unreviewed, rolling out r225656.

The test has been a flaky timout since being added.

Reverted changeset:

"WebAssembly: sending module to iframe fails"
https://bugs.webkit.org/show_bug.cgi?id=179263
https://trac.webkit.org/changeset/225656

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

21 months ago[JSC] Do not check isValid() in op_new_regexp
utatane.tea@gmail.com [Thu, 21 Dec 2017 01:58:28 +0000 (01:58 +0000)]
[JSC] Do not check isValid() in op_new_regexp
https://bugs.webkit.org/show_bug.cgi?id=180970

Reviewed by Saam Barati.

JSTests:

* stress/regexp-syntax-error-invalid-flags.js: Added.
(shouldThrow):

Source/JavaScriptCore:

We should not check `isValid()` inside op_new_regexp.
This simplifies the semantics of NewRegexp node in DFG.

* bytecompiler/NodesCodegen.cpp:
(JSC::RegExpNode::emitBytecode):
* dfg/DFGMayExit.cpp:
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileNewRegexp):
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileNewRegexp):
* jit/JITOperations.cpp:
* llint/LLIntSlowPaths.cpp:
(JSC::LLInt::LLINT_SLOW_PATH_DECL):

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

21 months agoGetPropertyEnumerator in DFG/FTL should not unconditionally speculate cell
sbarati@apple.com [Thu, 21 Dec 2017 01:54:46 +0000 (01:54 +0000)]
GetPropertyEnumerator in DFG/FTL should not unconditionally speculate cell
https://bugs.webkit.org/show_bug.cgi?id=181054

Reviewed by Mark Lam.

Speedometer's react subtest has a function that is in an OSR exit loop because
we used to unconditionally speculate cell for the operand to GetPropertyEnumerator.
This fix doesn't seem to speed up Speedometer at all, but it's good hygiene
for our compiler to not have this pathology. This patch adds a generic
GetPropertyEnumerator to prevent the exit loop.

* dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
* dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileGetPropertyEnumerator):
* jit/JITOperations.cpp:
* jit/JITOperations.h:

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

21 months agoUnreviewed, rolling out r226155.
jlewis3@apple.com [Thu, 21 Dec 2017 01:49:00 +0000 (01:49 +0000)]
Unreviewed, rolling out r226155.

This caused test failures.

Reverted changeset:

"Web Inspector: add TestPage.debug() to inspect evaluations
being sent to Inspector page"
https://bugs.webkit.org/show_bug.cgi?id=181005
https://trac.webkit.org/changeset/226155

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

21 months agoCrash when clearing std::optional<WebKit::WebServiceWorkerFetchTaskClient::BlobLoader>
commit-queue@webkit.org [Thu, 21 Dec 2017 01:39:08 +0000 (01:39 +0000)]
Crash when clearing std::optional<WebKit::WebServiceWorkerFetchTaskClient::BlobLoader>
https://bugs.webkit.org/show_bug.cgi?id=181061

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

* WebProcess/Storage/WebServiceWorkerFetchTaskClient.cpp:
(WebKit::WebServiceWorkerFetchTaskClient::didFinishBlobLoading): moving the object to not destroy 'this' too soon.

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

21 months ago[Win] Use WCharStringExtras functions in WebCore
don.olmstead@sony.com [Thu, 21 Dec 2017 01:10:52 +0000 (01:10 +0000)]
[Win] Use WCharStringExtras functions in WebCore
https://bugs.webkit.org/show_bug.cgi?id=180963

Reviewed by Alex Christensen.

No new tests. No change in behavior.

* platform/graphics/win/FontCacheWin.cpp:
(WebCore::appendLinkedFonts):
(WebCore::getLinkedFonts):
(WebCore::FontCache::systemFallbackForCharacters):
(WebCore::FontCache::fontFromDescriptionAndLogFont):
* platform/graphics/win/FontCustomPlatformDataCairo.cpp:
(WebCore::FontCustomPlatformData::fontPlatformData):
* platform/graphics/win/IconWin.cpp:
(WebCore::Icon::createIconForFiles):
* platform/network/win/DownloadBundleWin.cpp:
(WebCore::DownloadBundle::appendResumeData):
(WebCore::DownloadBundle::extractResumeData):
* platform/text/win/LocaleWin.cpp:
(WebCore::LCIDFromLocaleInternal):
(WebCore::LCIDFromLocale):
* platform/win/ClipboardUtilitiesWin.cpp:
(WebCore::getWebLocData):
(WebCore::createGlobalData):
(WebCore::getFileDescriptorData):
(WebCore::getURL):
(WebCore::getCFData):
(WebCore::setCFData):
* platform/win/DragDataWin.cpp:
(WebCore::DragData::asFilenames const):
* platform/win/DragImageWin.cpp:
(WebCore::createDragImageIconForCachedImageFilename):
(WebCore::dragLabelFont):
* platform/win/FileSystemWin.cpp:
(WebCore::FileSystem::getFindData):
(WebCore::FileSystem::createSymbolicLink):
(WebCore::FileSystem::deleteFile):
(WebCore::FileSystem::deleteEmptyDirectory):
(WebCore::FileSystem::moveFile):
(WebCore::FileSystem::pathByAppendingComponent):
(WebCore::FileSystem::makeAllDirectories):
(WebCore::FileSystem::pathGetFileName):
(WebCore::FileSystem::openTemporaryFile):
(WebCore::FileSystem::openFile):
(WebCore::FileSystem::hardLinkOrCopyFile):
* platform/win/MIMETypeRegistryWin.cpp:
(WebCore::mimeTypeForExtension):
(WebCore::MIMETypeRegistry::getPreferredExtensionForMIMEType):
* platform/win/PasteboardWin.cpp:
(WebCore::Pasteboard::read):
(WebCore::createGlobalHDropContent):
* platform/win/PathWalker.cpp:
(WebCore::PathWalker::PathWalker):
* platform/win/SSLKeyGeneratorWin.cpp:
(WebCore::WebCore::signedPublicKeyAndChallengeString):
* platform/win/SharedBufferWin.cpp:
(WebCore::SharedBuffer::createFromReadingFile):
* rendering/RenderThemeWin.cpp:
(WebCore::fillFontDescription):

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

21 months agoInclude stdio.h before using stderr and _IONBF
commit-queue@webkit.org [Thu, 21 Dec 2017 01:07:49 +0000 (01:07 +0000)]
Include stdio.h before using stderr and _IONBF
https://bugs.webkit.org/show_bug.cgi?id=181046

Patch by Ting-Wei Lan <lantw44@gmail.com> on 2017-12-20
Reviewed by Alex Christensen.

* bmalloc/IsoTLS.cpp:

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

21 months agocom.apple.WebKit.WebContent.Development crashed in com.apple.WebCore: WebCore::UserMe...
commit-queue@webkit.org [Thu, 21 Dec 2017 00:13:09 +0000 (00:13 +0000)]
com.apple.WebKit.WebContent.Development crashed in com.apple.WebCore: WebCore::UserMediaRequest::stop + 126
https://bugs.webkit.org/show_bug.cgi?id=181057

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

Covered by fast/mediastream tests to not crash anymore.

* Modules/mediastream/UserMediaRequest.cpp:
(WebCore::UserMediaRequest::stop):

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

21 months agoAssertion failure in MessagePort::contextDestroyed in http/tests/security/MessagePort...
beidson@apple.com [Wed, 20 Dec 2017 22:47:20 +0000 (22:47 +0000)]
Assertion failure in MessagePort::contextDestroyed in http/tests/security/MessagePort/event-listener-context.html, usually attributed to later tests.
https://bugs.webkit.org/show_bug.cgi?id=94458

Reviewed by Chris Dumez.

Source/WebCore:

No new tests (Changed existing test to reliably crash before this change, and work after it)

There was already a glaring FIXME that said "MessagePorts should be ActiveDOMObjects"

It was right, and it fixes up this subtle lifetime issue.

* dom/MessagePort.cpp:
(WebCore::MessagePort::MessagePort):
(WebCore::MessagePort::hasPendingActivity const):
(WebCore::MessagePort::locallyEntangledPort const):
(WebCore::MessagePort::activeDOMObjectName const):
(WebCore::MessagePort::hasPendingActivity): Deleted.
(WebCore::MessagePort::locallyEntangledPort): Deleted.
* dom/MessagePort.h:

* dom/ScriptExecutionContext.cpp:
(WebCore::ScriptExecutionContext::~ScriptExecutionContext):
(WebCore::ScriptExecutionContext::stopActiveDOMObjects):
(WebCore::ScriptExecutionContext::hasPendingActivity const):

LayoutTests:

* fast/events/message-port-constructor-for-deleted-document-expected.txt:
* fast/events/message-port-constructor-for-deleted-document.html:
* fast/events/resources/copy-of-message-port-context-destroyed.html: Added.
* platform/mac/TestExpectations: Reenable the now-reliable and now-passing test.

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

21 months agoDo not search for service worker registration in case of non HTTP navigation loads
commit-queue@webkit.org [Wed, 20 Dec 2017 21:51:38 +0000 (21:51 +0000)]
Do not search for service worker registration in case of non HTTP navigation loads
https://bugs.webkit.org/show_bug.cgi?id=180976
<rdar://problem/36157322>

Unreviewed.

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-20

* loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::startLoadingMainResource): Removing unneeded spaces.

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

21 months agoLayoutTests/http/tests/workers/service/service-worker-cache-api.https.html is failing...
commit-queue@webkit.org [Wed, 20 Dec 2017 21:38:50 +0000 (21:38 +0000)]
LayoutTests/http/tests/workers/service/service-worker-cache-api.https.html is failing on most platforms
https://bugs.webkit.org/show_bug.cgi?id=181052

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-20
Reviewed by Chris Dumez.

Fixing buggy test: load was probably not intercepted.

* TestExpectations:
* http/tests/workers/service/resources/service-worker-cache-api.js: Removed.
* http/tests/workers/service/service-worker-cache-api.https-expected.txt:
* http/tests/workers/service/service-worker-cache-api.https.html:

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

21 months ago[GTK] imported/w3c/web-platform-tests/fetch/api/basic/request-headers.any.html is...
commit-queue@webkit.org [Wed, 20 Dec 2017 21:08:57 +0000 (21:08 +0000)]
[GTK] imported/w3c/web-platform-tests/fetch/api/basic/request-headers.any.html is failing
https://bugs.webkit.org/show_bug.cgi?id=181029

Patch by Alicia Boya García <aboya@igalia.com> on 2017-12-20
Reviewed by Carlos Alberto Lopez Perez.

* platform/gtk/TestExpectations:
* platform/gtk/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.any-expected.txt:
* platform/gtk/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.any.worker-expected.txt:

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

21 months agoRemove some SVN files accidentally committed with r226160
achristensen@apple.com [Wed, 20 Dec 2017 20:10:24 +0000 (20:10 +0000)]
Remove some SVN files accidentally committed with r226160
https://bugs.webkit.org/show_bug.cgi?id=180934

* WebCore.xcodeproj/project.pbxproj.orig: Removed.
* WebCore.xcodeproj/project.pbxproj.rej: Removed.

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

21 months ago[RenderTreeBuilder] Replace remaining addChild calls with RenderTreeBuilder::insert
zalan@apple.com [Wed, 20 Dec 2017 20:07:52 +0000 (20:07 +0000)]
[RenderTreeBuilder] Replace remaining addChild calls with RenderTreeBuilder::insert
https://bugs.webkit.org/show_bug.cgi?id=181044
<rdar://problem/36157613>

Reviewed by Antti Koivisto.

Covered by existing test cases.

* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::addChildIgnoringContinuation):
* rendering/RenderElement.cpp:
(WebCore::RenderElement::addChildIgnoringContinuation):
* rendering/RenderElement.h:
(WebCore::RenderElement::addChildIgnoringContinuation): Deleted.

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

21 months agoCleanup: Dereference value of optional directly instead of using checked value in...
dbates@webkit.org [Wed, 20 Dec 2017 20:04:54 +0000 (20:04 +0000)]
Cleanup: Dereference value of optional directly instead of using checked value in WebCore::subdivide()
https://bugs.webkit.org/show_bug.cgi?id=181050

Reviewed by Simon Fraser.

It is sufficient and more efficient to dereference a std::optional directly when we know that it has
a value as opposed to using the checked dereference member function std::optional<>::value().

No functionality changed. So, no new tests.

* rendering/MarkerSubrange.cpp:
(WebCore::subdivide):

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

21 months agoMarkerSubrange.SubdivideGrammarAndSelectionOverlap{Frontmost, FrontmostWithLongestEff...
dbates@webkit.org [Wed, 20 Dec 2017 19:59:35 +0000 (19:59 +0000)]
MarkerSubrange.SubdivideGrammarAndSelectionOverlap{Frontmost, FrontmostWithLongestEffectiveRange} are failing
https://bugs.webkit.org/show_bug.cgi?id=181014

Reviewed by Simon Fraser.

Source/WebCore:

Fixes an issue in the subdivision algorithm where the returned subranges may not be paint order
or reverse paint order when using the default overlap strategy (OverlapStrategy::None) and
either OverlapStrategy::Frontmost or OverlapStrategy::FrontmostWithLongestEffectiveRange, respectively.

Currently we compute the overlapping subranges up to some point p_i on the line by sweeping from the
start of the line through all the unclosed subranges. The unclosed subranges are sorted along the line.
That is, they are not sorted by paint order or reverse paint order. Therefore we must take care to
ensure that we return the computed overlapping subranges with respect to paint order/reverse paint order.

* rendering/MarkerSubrange.cpp:
(WebCore::subdivide):

Tools:

Adds a new test to ensure we compute overlapping subranges in paint order for the default
overlap strategy. Enable tests MarkerSubrange.SubdivideGrammarAndSelectionOverlap{Frontmost, FrontmostWithLongestEffectiveRange}
now that they pass.

* TestWebKitAPI/Tests/WebCore/MarkerSubrange.cpp:
(TestWebKitAPI::TEST):

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

21 months agoLayoutTest imported/w3c/web-platform-tests/service-workers/cache-storage/serviceworke...
commit-queue@webkit.org [Wed, 20 Dec 2017 19:29:08 +0000 (19:29 +0000)]
LayoutTest imported/w3c/web-platform-tests/service-workers/cache-storage/serviceworker/cache-match.https.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=179137
<rdar://problem/35337335>

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-20
Reviewed by Chris Dumez.

Source/WebCore:

Covered by unflaked test.

* workers/service/context/ServiceWorkerThreadProxy.cpp:
(WebCore::ServiceWorkerThreadProxy::postTaskToLoader): ThreadableBlobRegistry is using callOnMainThread.
Use it also for postTaskToLoader so that there is no race condition between registering a blob and reading it.

LayoutTests:

* TestExpectations:

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

21 months ago[GTK] Test gardening
commit-queue@webkit.org [Wed, 20 Dec 2017 19:19:13 +0000 (19:19 +0000)]
[GTK] Test gardening
https://bugs.webkit.org/show_bug.cgi?id=181045

Patch by Alicia Boya García <aboya@igalia.com> on 2017-12-20
Reviewed by Michael Catanzaro.

* platform/gtk/TestExpectations:

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

21 months agoSupport service worker interception of request with blob body
commit-queue@webkit.org [Wed, 20 Dec 2017 19:16:10 +0000 (19:16 +0000)]
Support service worker interception of request with blob body
https://bugs.webkit.org/show_bug.cgi?id=181035

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-20
Reviewed by Chris Dumez.

LayoutTests/imported/w3c:

* web-platform-tests/service-workers/service-worker/fetch-event.https-expected.txt:
* web-platform-tests/service-workers/service-worker/fetch-request-xhr.https-expected.txt:

Source/WebCore:

Covered by updated test.

Add support for getting blob request bodies within service worker.
Disable interception of requests with form datas.

* Modules/fetch/FetchBody.cpp:
(WebCore::FetchBody::fromFormData):
* Modules/fetch/FetchBody.h:
* workers/service/context/ServiceWorkerFetch.cpp:
(WebCore::ServiceWorkerFetch::dispatchFetchEvent):
* workers/service/context/ServiceWorkerFetch.h:
* workers/service/context/ServiceWorkerThread.cpp:
(WebCore::ServiceWorkerThread::postFetchTask):

Source/WebKit:

In case of service worker, remove the connection check to get access to the blob registry.
Apply this for cloning blobs registered by another process.

* NetworkProcess/FileAPI/NetworkBlobRegistry.cpp:
(WebKit::NetworkBlobRegistry::registerBlobURL):
* NetworkProcess/FileAPI/NetworkBlobRegistry.h:
* NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::registerBlobURLFromURL):
* NetworkProcess/NetworkConnectionToWebProcess.h:
* NetworkProcess/NetworkConnectionToWebProcess.messages.in:
* WebProcess/FileAPI/BlobRegistryProxy.cpp:
(WebKit::BlobRegistryProxy::registerBlobURL):

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

21 months agoSend fullscreenChange earlier, in webkitWillEnterFullscreen
commit-queue@webkit.org [Wed, 20 Dec 2017 18:55:53 +0000 (18:55 +0000)]
Send fullscreenChange earlier, in webkitWillEnterFullscreen
https://bugs.webkit.org/show_bug.cgi?id=181016

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

Sending the event earlier, allows pages to update their interface state before the fullscreen animation.

* dom/Document.cpp:
(WebCore::Document::webkitWillEnterFullScreenForElement):
(WebCore::Document::webkitDidEnterFullScreenForElement):

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

21 months agoRemove Alternative Presentation Button
dbates@webkit.org [Wed, 20 Dec 2017 18:43:22 +0000 (18:43 +0000)]
Remove Alternative Presentation Button
https://bugs.webkit.org/show_bug.cgi?id=180500
<rdar://problem/35891047>

Reviewed by Simon Fraser.

We no longer need the alternative presentation button.

.:

* Source/cmake/OptionsMac.cmake:
* Source/cmake/WebKitFeatures.cmake:
* Source/cmake/tools/vsprops/FeatureDefines.props:
* Source/cmake/tools/vsprops/FeatureDefinesCairo.props:

Source/JavaScriptCore:

* Configurations/FeatureDefines.xcconfig:

Source/WebCore:

* Configurations/FeatureDefines.xcconfig:
* DerivedSources.make:
* English.lproj/Localizable.strings:
* SourcesCocoa.txt:
* WebCore.xcodeproj/project.pbxproj:
* dom/Element.h:
* editing/Editor.cpp:
(WebCore::Editor::clear):
(WebCore::Editor::substituteWithAlternativePresentationButton): Deleted.
(WebCore::Editor::removeAlternativePresentationButton): Deleted.
(WebCore::Editor::elementsReplacedByAlternativePresentationButton): Deleted.
(WebCore::Editor::didInsertAlternativePresentationButtonElement): Deleted.
(WebCore::Editor::didRemoveAlternativePresentationButtonElement): Deleted.
* editing/Editor.h:
* editing/cocoa/AlternativePresentationButtonSubstitution.cpp: Removed.
* editing/cocoa/AlternativePresentationButtonSubstitution.h: Removed.
* html/HTMLInputElement.cpp:
(WebCore::HTMLInputElement::updateType):
(WebCore::HTMLInputElement::parseAttribute):
(WebCore::HTMLInputElement::willAttachRenderers):
(WebCore::HTMLInputElement::alternativePresentationButtonElement const): Deleted.
(WebCore::HTMLInputElement::setTypeWithoutUpdatingAttribute): Deleted.
(WebCore::HTMLInputElement::createInputType): Deleted.
* html/HTMLInputElement.h:
* html/InputType.h:
(WebCore::InputType::alternativePresentationButtonElement const): Deleted.
* html/InputTypeNames.cpp:
(WebCore::InputTypeNames::alternativePresentationButton): Deleted.
* html/InputTypeNames.h:
* html/shadow/cocoa/AlternativePresentationButtonElement.cpp: Removed.
* html/shadow/cocoa/AlternativePresentationButtonElement.h: Removed.
* html/shadow/cocoa/AlternativePresentationButtonInputType.cpp: Removed.
* html/shadow/cocoa/AlternativePresentationButtonInputType.h: Removed.
* page/ChromeClient.h:
* platform/LocalizedStrings.cpp:
(WebCore::AXAlternativePresentationButtonLabel): Deleted.
(WebCore::alternativePresentationButtonTitle): Deleted.
(WebCore::alternativePresentationButtonSubtitle): Deleted.
* platform/LocalizedStrings.h:
* testing/Internals.cpp:
(WebCore::Internals::substituteWithAlternativePresentationButton): Deleted.
(WebCore::Internals::removeAlternativePresentationButton): Deleted.
(WebCore::Internals::elementsReplacedByAlternativePresentationButton): Deleted.
* testing/Internals.h:
* testing/Internals.idl:

Source/WebCore/PAL:

* Configurations/FeatureDefines.xcconfig:

Source/WebKit:

* Configurations/FeatureDefines.xcconfig:
* UIProcess/API/APIUIClient.h:
(API::UIClient::didClickAlternativePresentationButton): Deleted.
* UIProcess/API/C/WKPageUIClient.h:
* UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
* UIProcess/Cocoa/UIDelegate.h:
* UIProcess/Cocoa/UIDelegate.mm:
(WebKit::UIDelegate::setDelegate):
(WebKit::UIDelegate::UIClient::didClickAlternativePresentationButton): Deleted.
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::handleAutoFillButtonClick):
(WebKit::WebPageProxy::handleAlternativePresentationButtonClick): Deleted.
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* WebProcess/InjectedBundle/API/APIInjectedBundlePageUIClient.h:
(API::InjectedBundle::PageUIClient::didClickAutoFillButton):
(API::InjectedBundle::PageUIClient::didClickAlternativePresentationButton): Deleted.
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.h:
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.mm:
(-[WKWebProcessPlugInFrame substituteElements:withAlternativePresentationButtonWithIdentifier:]): Deleted.
(-[WKWebProcessPlugInFrame removeAlternativePresentationButton:]): Deleted.
(-[WKWebProcessPlugInFrame elementsReplacedByAlternativePresentationButtonWithIdentifier:]): Deleted.
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFramePrivate.h:
* WebProcess/InjectedBundle/API/c/WKBundleFrame.cpp:
(WKBundleFrameFocus):
(WKBundleSubstituteWithAlternativePresentationButton): Deleted.
(WKBundleRemoveAlternativePresentationButton): Deleted.
(WKBundleElementsReplacedByAlternativePresentationButton): Deleted.
* WebProcess/InjectedBundle/API/c/WKBundleFramePrivate.h:
* WebProcess/InjectedBundle/API/c/WKBundlePageUIClient.h:
* WebProcess/InjectedBundle/InjectedBundlePageUIClient.cpp:
(WebKit::InjectedBundlePageUIClient::didClickAlternativePresentationButton): Deleted.
* WebProcess/InjectedBundle/InjectedBundlePageUIClient.h:
* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::handleAlternativePresentationButtonClick): Deleted.
* WebProcess/WebCoreSupport/WebChromeClient.h:

Source/WebKitLegacy/mac:

* Configurations/FeatureDefines.xcconfig:

Tools:

* TestWebKitAPI/Configurations/FeatureDefines.xcconfig:
* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKitCocoa/ClickAlternativePresentationButton.mm: Removed.
* TestWebKitAPI/Tests/WebKitCocoa/UIDelegate.mm:
(TEST):
(-[AlternativePresentationButtonDelegate _webView:didClickAlternativePresentationButtonWithUserInfo:]): Deleted.
(-[AlternativePresentationButtonDelegate webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:]): Deleted.

LayoutTests:

* TestExpectations:
* accessibility/alternative-presentation-button-expected.txt: Removed.
* accessibility/alternative-presentation-button-input-type-expected.txt: Removed.
* accessibility/alternative-presentation-button-input-type.html: Removed.
* accessibility/alternative-presentation-button.html: Removed.
* fast/forms/alternative-presentation-button/replace-and-remove-expected.html: Removed.
* fast/forms/alternative-presentation-button/replace-and-remove.html: Removed.
* fast/forms/alternative-presentation-button/replaced-elements-expected.txt: Removed.
* fast/forms/alternative-presentation-button/replaced-elements.html: Removed.
* fast/forms/alternative-presentation-button/replacement-expected.txt: Removed.
* fast/forms/alternative-presentation-button/replacement.html: Removed.
* platform/gtk/TestExpectations:
* platform/ios/TestExpectations:
* platform/ios/fast/forms/alternative-presentation-button/replacement-expected.txt: Removed.
* platform/mac/TestExpectations:

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

21 months agoDo not reuse resource for memory cache if selected service worker differs
cdumez@apple.com [Wed, 20 Dec 2017 18:30:06 +0000 (18:30 +0000)]
Do not reuse resource for memory cache if selected service worker differs
https://bugs.webkit.org/show_bug.cgi?id=181042

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

Rebaseline WPT test now that it is consistently passing.

* web-platform-tests/service-workers/service-worker/unregister-controller.https-expected.txt:

Source/WebCore:

No new tests, rebaselined existing test.

* loader/cache/CachedResource.h:
(WebCore::CachedResource::options const):
* loader/cache/CachedResourceLoader.cpp:
(WebCore::CachedResourceLoader::determineRevalidationPolicy const):

LayoutTests:

Drop test from flaky list now that it is consistently passing.

* TestExpectations:

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

21 months agoMarked svg/animations/smil-leak-element-instances-noBaseValRef.svg as flaky on macOS...
jlewis3@apple.com [Wed, 20 Dec 2017 18:08:51 +0000 (18:08 +0000)]
Marked svg/animations/smil-leak-element-instances-noBaseValRef.svg as flaky on macOS WK1.
https://bugs.webkit.org/show_bug.cgi?id=180997

Unreviewed test gardening.

* platform/mac-wk1/TestExpectations:

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

21 months agoRemove some obsolete test expectations for GTK.
Ms2ger@igalia.com [Wed, 20 Dec 2017 17:32:01 +0000 (17:32 +0000)]
Remove some obsolete test expectations for GTK.
https://bugs.webkit.org/show_bug.cgi?id=181038

Unreviewed test gardening.

* platform/gtk/TestExpectations:
  - Remove tests that now use a matching expectation.
  - Move a test out of the "Unexplained failures" section.
  - Remove a test that is now skipped in all wk2 ports.
* platform/gtk/fast/forms/mailto/formenctype-attribute-button-html-expected.txt:
  Removed: the generic file is correct for GTK as well.
* platform/gtk/fast/forms/mailto/formenctype-attribute-input-html-expected.txt:
  Removed: the generic file is correct for GTK as well.
* platform/mac-wk2/TestExpectations:
  Remove a test that is now skipped in all wk2 ports.
* platform/wk2/TestExpectations:
  Add another test to the list of skipped tests that use beginDragWithFiles,
  which is only implemented in DumpRenderTree.

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

21 months agoDo not search for service worker registration in case of non HTTP navigation loads
commit-queue@webkit.org [Wed, 20 Dec 2017 17:22:36 +0000 (17:22 +0000)]
Do not search for service worker registration in case of non HTTP navigation loads
https://bugs.webkit.org/show_bug.cgi?id=180976

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-20
Reviewed by Chris Dumez.

Covered by manual testing using perf test app uploaded in https://bugs.webkit.org/show_bug.cgi?id=180929.
In case we are sure there is no possiblity for getting a service worker, skip the search step.
Simialrly, do not report any Document as a Service Worker client if it can never be controlled.
A follow-up patch should handle the case of local URLs service worker selection.

* loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::startLoadingMainResource):
(WebCore::DocumentLoader::commitData):

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

21 months ago[GTK] Rebaseline fast/canvas/canvas-imageSmoothingQuality.html
Ms2ger@igalia.com [Wed, 20 Dec 2017 17:19:39 +0000 (17:19 +0000)]
[GTK] Rebaseline fast/canvas/canvas-imageSmoothingQuality.html
https://bugs.webkit.org/show_bug.cgi?id=163973

Unreviewed test gardening.

* platform/gtk/TestExpectations: Remove failure annotation.
* platform/gtk/fast/canvas/canvas-imageSmoothingQuality-expected.txt:
  Rebaseline: r202609 added additional output when one of the assertions
  fails, which happens in this test.

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

21 months agoMarked two imported/w3c/web-platform-tests/service-workers/service-worker/ test as...
jlewis3@apple.com [Wed, 20 Dec 2017 17:16:11 +0000 (17:16 +0000)]
Marked two imported/w3c/web-platform-tests/service-workers/service-worker/ test as slow.
https://bugs.webkit.org/show_bug.cgi?id=180982
https://bugs.webkit.org/show_bug.cgi?id=179194

Unreviewed test expectations.

* platform/mac-wk2/TestExpectations:

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

21 months ago[Apple Pay] Tell PassKit whether Apple Pay JS or Payment Request was used to start...
aestes@apple.com [Wed, 20 Dec 2017 17:11:29 +0000 (17:11 +0000)]
[Apple Pay] Tell PassKit whether Apple Pay JS or Payment Request was used to start an Apple Pay session
https://bugs.webkit.org/show_bug.cgi?id=181001
<rdar://problem/35479106>

Reviewed by Tim Horton.

Source/WebCore:

* Modules/applepay/ApplePaySession.cpp:
(WebCore::convertAndValidate):
* Modules/applepay/ApplePaySessionPaymentRequest.h:
(WebCore::ApplePaySessionPaymentRequest::requester const):
(WebCore::ApplePaySessionPaymentRequest::setRequester):
* Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp:
(WebCore::ApplePayPaymentHandler::show):

Source/WebCore/PAL:

* pal/spi/cocoa/PassKitSPI.h:

Source/WebKit:

* Shared/Cocoa/WebCoreArgumentCodersCocoa.mm:
(IPC::ArgumentCoder<ApplePaySessionPaymentRequest>::encode):
(IPC::ArgumentCoder<ApplePaySessionPaymentRequest>::decode):
* UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
(WebKit::toAPIType):
(WebKit::toPKPaymentRequest):

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

21 months ago[RenderTreeBuilder] Move finding-the-parent/creating-wrapper logic from RenderTable...
zalan@apple.com [Wed, 20 Dec 2017 16:52:59 +0000 (16:52 +0000)]
[RenderTreeBuilder] Move finding-the-parent/creating-wrapper logic from RenderTable::addChild to RenderTreeBuilder
https://bugs.webkit.org/show_bug.cgi?id=181018
<rdar://problem/36148601>

Reviewed by Antti Koivisto.

This is in preparation for removing all tree mutation from renderering code.

Covered by existing tests.

* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::addChildIgnoringContinuation):
* rendering/RenderTable.cpp:
(WebCore::RenderTable::addChild):
* rendering/updating/RenderTreeBuilder.cpp:
(WebCore::RenderTreeBuilder::insertChild):
* rendering/updating/RenderTreeBuilderTable.cpp:
(WebCore::RenderTreeBuilder::Table::findOrCreateParentForChild):
* rendering/updating/RenderTreeBuilderTable.h:

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

21 months agoSplit layout of RenderMathMLRow into smaller steps
commit-queue@webkit.org [Wed, 20 Dec 2017 16:34:43 +0000 (16:34 +0000)]
Split layout of RenderMathMLRow into smaller steps
https://bugs.webkit.org/show_bug.cgi?id=180348

Patch by Frederic Wang <fwang@igalia.com> on 2017-12-20
Reviewed by Manuel Rego Casasnovas.

Source/WebCore:

Currently, RenderMathMLRow mixes too many steps in the same layout functions: layout children,
calculate stretch size, stretch vertical operators, calculate final ascent/descent, handle
out-of-flow positioned children, set logical height, set logical width for non-display
<math> tag, center display <math> tag etc This situation is inherited from the old flexbox
implementation but it makes difficult to read the code and to re-use layout & metrics
calculation for follow-up work on <mrow>-like elements (<menclose>, <mapdded>, <msqrt> or
<math>). See for example bug 160547 for <math> or bug 161126 for <menclose>.
This patch rewrites RenderMathMLRow into smaller steps:
- stretchVerticalOperatorsAndLayoutChildren() which calls layoutIfNeeded() or
insertPositionedObject() on children and stretch vertical operators.
- getContentBoundingBox() to determine the metrics of the mrow-like element without calling
layout on children or positioning them, so that we can improve mrow-like element in the
future.
- layoutRowItems() which sets the position of children.

Setting the logical width/height or centering children is now moved into layoutBlock() since
derived class overriding layoutBlock() will do their own adjustment for width, height and
positions.

Test: mathml/mrow-preferred-width-with-out-of-flow-child.html
The rest of the behavior is unchanged and already covered by existing tests.

* rendering/mathml/RenderMathMLMenclose.cpp:
(WebCore::RenderMathMLMenclose::layoutBlock): Use the new function and get contentWidth
directly from getContentBoundingBox().
* rendering/mathml/RenderMathMLPadded.cpp:
(WebCore::RenderMathMLPadded::layoutBlock): Ditto.
* rendering/mathml/RenderMathMLRoot.cpp:
(WebCore::RenderMathMLRoot::layoutBlock): Ditto, also remove useless statement
baseAscent = baseDescent.
* rendering/mathml/RenderMathMLRow.cpp:
(WebCore::toVerticalStretchyOperator): New helper function to cast to a vertical stretchy
operator.
(WebCore::RenderMathMLRow::stretchVerticalOperatorsAndLayoutChildren): New helper function
to ensure layoutIfNeeded()/insertPositionedObject() is called on children and that the
vertical operators are stretched.
(WebCore::RenderMathMLRow::getContentBoundingBox const): New helper function to determine
the width/ascent/descent to use for the mrow content.
(WebCore::RenderMathMLRow::computePreferredLogicalWidths): Skip out-of-flow children in the
preferred width calculation. This is verified by the new test.
(WebCore::RenderMathMLRow::layoutRowItems): Only keep the positioning of children with the
specified width and ascent.
(WebCore::RenderMathMLRow::layoutBlock): Center children for <math display="block"> tag and
set the logical width in other cases. Also set the logical height here.
(WebCore::RenderMathMLRow::computeLineVerticalStretch): Deleted. This work is included in
stretchVerticalOperatorsAndLayoutChildren() now.
* rendering/mathml/RenderMathMLRow.h: Update declaration of functions.

LayoutTests:

New test to verify that out-of-flow positioned children are not taken into account in the
calculation of the preferred width of the mrow element.

* mathml/mrow-preferred-width-with-out-of-flow-child-expected.html: Added.
* mathml/mrow-preferred-width-with-out-of-flow-child.html: Added.

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

21 months agoMove list and multicolumn building code from RenderTreeUpdater to RenderTreeBuilder
antti@apple.com [Wed, 20 Dec 2017 16:33:36 +0000 (16:33 +0000)]
Move list and multicolumn building code from RenderTreeUpdater to RenderTreeBuilder
https://bugs.webkit.org/show_bug.cgi?id=181021

Reviewed by Zalan Bujtas.

RenderTreeUpdater::ListItem -> RenderTreeBuilder::List
RenderTreeUpdater::MultiColumn -> RenderTreeBuilder::MultiColumn

* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* rendering/TextAutoSizing.cpp:
(WebCore::TextAutoSizingValue::adjustTextNodeSizes):
* rendering/updating/RenderTreeBuilder.cpp:
(WebCore::RenderTreeBuilder::RenderTreeBuilder):
(WebCore::RenderTreeBuilder::updateAfterDescendants):
* rendering/updating/RenderTreeBuilder.h:
(WebCore::RenderTreeBuilder::listBuilder):
(WebCore::RenderTreeBuilder::multiColumnBuilder):
* rendering/updating/RenderTreeBuilderList.cpp: Copied from Source/WebCore/rendering/updating/RenderTreeUpdaterListItem.cpp.
(WebCore::RenderTreeBuilder::List::List):
(WebCore::RenderTreeBuilder::List::updateItemMarker):
(WebCore::RenderTreeUpdater::ListItem::updateMarker): Deleted.
* rendering/updating/RenderTreeBuilderList.h: Copied from Source/WebCore/rendering/updating/RenderTreeUpdaterListItem.h.
* rendering/updating/RenderTreeBuilderMultiColumn.cpp: Copied from Source/WebCore/rendering/updating/RenderTreeUpdaterMultiColumn.cpp.
(WebCore::RenderTreeBuilder::MultiColumn::MultiColumn):
(WebCore::RenderTreeBuilder::MultiColumn::updateAfterDescendants):
(WebCore::RenderTreeBuilder::MultiColumn::createFragmentedFlow):
(WebCore::RenderTreeBuilder::MultiColumn::destroyFragmentedFlow):
(WebCore::RenderTreeUpdater::MultiColumn::update): Deleted.
(WebCore::RenderTreeUpdater::MultiColumn::createFragmentedFlow): Deleted.
(WebCore::RenderTreeUpdater::MultiColumn::destroyFragmentedFlow): Deleted.
* rendering/updating/RenderTreeBuilderMultiColumn.h: Copied from Source/WebCore/rendering/updating/RenderTreeUpdaterMultiColumn.h.
* rendering/updating/RenderTreeUpdater.cpp:
(WebCore::RenderTreeUpdater::commit):
(WebCore::RenderTreeUpdater::updateAfterDescendants):
* rendering/updating/RenderTreeUpdater.h:
* rendering/updating/RenderTreeUpdaterGeneratedContent.cpp:
(WebCore::RenderTreeUpdater::GeneratedContent::updatePseudoElement):
* rendering/updating/RenderTreeUpdaterListItem.cpp: Removed.
* rendering/updating/RenderTreeUpdaterListItem.h: Removed.
* rendering/updating/RenderTreeUpdaterMultiColumn.cpp: Removed.
* rendering/updating/RenderTreeUpdaterMultiColumn.h: Removed.

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

21 months agoREGRESSION(r226160) Build broken when MEDIA_STREAM is disabled with MediaStreamReques...
Ms2ger@igalia.com [Wed, 20 Dec 2017 14:31:58 +0000 (14:31 +0000)]
REGRESSION(r226160) Build broken when MEDIA_STREAM is disabled with MediaStreamRequest namespace confusion
https://bugs.webkit.org/show_bug.cgi?id=181026

Unreviewed build fix.

Source/WebCore:

* platform/mediastream/MediaStreamRequest.h: Fix namespace, unconditionally include header.

Source/WebKit:

* UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
(WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
  Remove UNUSED_PARAM macros that check for (undefined) members rather than params.

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

21 months agoRefactor RenderMathMLFraction to remove members modified during layout
commit-queue@webkit.org [Wed, 20 Dec 2017 14:28:05 +0000 (14:28 +0000)]
Refactor RenderMathMLFraction to remove members modified during layout
https://bugs.webkit.org/show_bug.cgi?id=180151

Patch by Frederic Wang <fwang@igalia.com> on 2017-12-20
Reviewed by Manuel Rego Casasnovas.

Currently, RenderMathMLFraction has three LayoutUnit members m_defaultLineThickness,
m_lineThickness and m_ascent that are set during layout. In the past such members have caused
MathML rendering bugs due to update issues. This patch refactors the layout of MathML
fractions so that it does not require to store and keep these LayoutUnit members up-to-date.
New helper functions are introduced to perform the simple arithmetic calculations required.

No new tests, behavior unchanged and already covered by existing tests.

* rendering/mathml/RenderMathMLFraction.cpp: We add new helper functions to calculate line
thickness values. This allows to remove updateLineThickness(), m_defaultLineThickness and
m_lineThickness. We also introduce the ascentOverHorizontalAxis() helper function to
calculate the ascent over the middle of its fraction bar or stack gap. This allows to remove
the m_ascent member.
(WebCore::RenderMathMLFraction::defaultLineThickness const): Helper function to calculate
the default thickness of the fraction bar given in the MATH table or a fallback value.
This replaces the use of m_defaultLineThickness.
(WebCore::RenderMathMLFraction::lineThickness const): Helper function to resolve the
actual thickness based on the @linethickness attribute and the default value. This replaces
the use of m_lineThickness.
(WebCore::RenderMathMLFraction::relativeLineThickness const): Rewrite this function using
the new helper functions.
(WebCore::RenderMathMLFraction::fractionParameters const): Make this const and replaces
isStack() with !lineThickness().
(WebCore::RenderMathMLFraction::stackParameters const): Ditto. Also move from layoutBlock
the adjustment of parameters to ensure a minimum gap. Doing so assumes that the fraction is
valid so we add an ASSERT.
(WebCore::RenderMathMLFraction::horizontalOffset const): Make this a const since it does not
mutate anything.
(WebCore::RenderMathMLFraction::ascentOverHorizontalAxis const): Move this code from
layoutBlock() to determine the middle of the stack gap or of the fraction bar. This helper
function replaces m_ascent - mathAxisHeight(). Note that the adjustment of topShiftUp is now
done in stackParameters().
(WebCore::RenderMathMLFraction::layoutBlock): Remove the call to updateLineThickness().
Rely on stackParameters() and ascentOverHorizontalAxis() to perform the necessary calculation
of bottomShiftDown and ascent respectively.
(WebCore::RenderMathMLFraction::paint): Use lineThickness() and ascentOverHorizontalAxis()
instead of m_lineThickness, m_ascent and isStack().
(WebCore::RenderMathMLFraction::firstLineBaseline const): Use ascentOverHorizontalAxis() and
mathAxisHeight() instead of m_ascent.
(WebCore::RenderMathMLFraction::updateLineThickness): Deleted.
* rendering/mathml/RenderMathMLFraction.h: Declare new helper functions for line thickness
values and ascent and remove the old LayoutUnit members. Make horizontalOffset(),
fractionParameter() and stackParameters() const since they do not modify anything and the two
last are used in the const function ascentOverHorizontalAxis(), itself used in
firstLineBaseline().

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

21 months ago[CMake][WTF] Lowercase ForwardingHeaders directory name of WTF
commit-queue@webkit.org [Wed, 20 Dec 2017 14:25:50 +0000 (14:25 +0000)]
[CMake][WTF] Lowercase ForwardingHeaders directory name of WTF
https://bugs.webkit.org/show_bug.cgi?id=181022

Patch by Fujii Hironori <Hironori.Fujii@sony.com> on 2017-12-20
Reviewed by Konstantin Tokarev.

.:

ForwardingHeaders of WTF are included as <wtf/FooBar.h>. But, the
directory name was uppercase DerivedSources/ForwardingHeaders/WTF.
This confuses Ninja dependency tracking. It should be lowercase.

* Source/cmake/WebKitMacros.cmake: Renamed ForwardingHeaders directory name WTF to wtf.

Source/WTF:

* wtf/CMakeLists.txt: Renamed ForwardingHeaders directory name WTF to wtf.
* wtf/PlatformWin.cmake: Ditto.

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

21 months agoMake fast/css-generated-content/quotes-lang.html pass on GTK
Ms2ger@igalia.com [Wed, 20 Dec 2017 14:24:00 +0000 (14:24 +0000)]
Make fast/css-generated-content/quotes-lang.html pass on GTK
https://bugs.webkit.org/show_bug.cgi?id=93976

Unreviewed test gardening.

Adding a span to the reference file avoids a one-pixel difference in the
font rendering between test and reference on GTK.

* fast/css-generated-content/quotes-lang-expected.html:
* platform/gtk/TestExpectations:

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

21 months ago[GTK][Clang] Build fix after r226138
clopez@igalia.com [Wed, 20 Dec 2017 12:46:29 +0000 (12:46 +0000)]
[GTK][Clang] Build fix after r226138
https://bugs.webkit.org/show_bug.cgi?id=180984

Unreviewed build fix.

No new tests, its a build fix.

* rendering/InlineTextBox.cpp:
(WebCore::InlineTextBox::collectSubrangesForDocumentMarkers):

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

21 months agoREGRESSION(r222699): Drag & drop from a web page to Gmail fails
rniwa@webkit.org [Wed, 20 Dec 2017 12:44:10 +0000 (12:44 +0000)]
REGRESSION(r222699): Drag & drop from a web page to Gmail fails
https://bugs.webkit.org/show_bug.cgi?id=181019

Reviewed by Wenson Hsieh.

Source/WebCore:

The bug was caused by imageTypeToFakeFilename returning "image/png" instead of "image.png" for
the filename for a PING image converted from a TIFF image. Fixed the bug by correcting this typo.

Tests: PasteImage.PasteLegacyTIFFImage
       PasteImage.PasteTIFFImage

* platform/cocoa/PasteboardCocoa.mm:
(WebCore::imageTypeToFakeFilename):

Tools:

Added assertions for filenames.

* TestWebKitAPI/Tests/WebKitCocoa/PasteImage.mm:

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

21 months agoRefactor user-installed font setting for clarity
mmaxfield@apple.com [Wed, 20 Dec 2017 03:24:15 +0000 (03:24 +0000)]
Refactor user-installed font setting for clarity
https://bugs.webkit.org/show_bug.cgi?id=181013

Reviewed by Simon Fraser.

Source/WebCore:

Pave the way for https://bugs.webkit.org/show_bug.cgi?id=180951.

This patch renames the Setting to not have so many grammatical negatives, and moves
some CoreText-specific FontCache function signatures into a new FontCacheCoreText.h
header file. It also uses the AllowUserInstalledFonts enum class in more places instead
of the old boolean we were using, and puts this enum class in the common TextFlags.h
header.

No new tests because there is no behavior change.

* WebCore.xcodeproj/project.pbxproj:
* css/CSSFontFaceSet.cpp:
(WebCore::CSSFontFaceSet::ensureLocalFontFacesForFamilyRegistered):
* css/StyleResolver.cpp:
(WebCore::StyleResolver::initializeFontStyle):
* page/Settings.yaml:
* platform/graphics/FontCache.h:
(WebCore::SynthesisPair::SynthesisPair): Deleted.
(WebCore::SynthesisPair::boldObliquePair const): Deleted.
* platform/graphics/FontDescription.cpp:
(WebCore::m_shouldAllowUserInstalledFonts):
(WebCore::m_mayRepresentUserInstalledFont): Deleted.
* platform/graphics/FontDescription.h:
(WebCore::FontDescription::shouldAllowUserInstalledFonts const):
(WebCore::FontDescription::setShouldAllowUserInstalledFonts):
(WebCore::FontDescription::operator== const):
(WebCore::FontDescription::mayRepresentUserInstalledFont const): Deleted.
(WebCore::FontDescription::setMayRepresentUserInstalledFont): Deleted.
* platform/graphics/cocoa/FontCacheCoreText.cpp:
(WebCore::FontDatabase::singleton):
(WebCore::FontDatabase::singletonAllowingUserInstalledFonts):
(WebCore::FontDatabase::singletonDisallowingUserInstalledFonts):
(WebCore::FontDatabase::FontDatabase):
(WebCore::platformFontLookupWithFamily):
(WebCore::fontWithFamily):
* platform/graphics/cocoa/FontCacheCoreText.h: Added.
(WebCore::SynthesisPair::SynthesisPair):
(WebCore::SynthesisPair::boldObliquePair const):
* platform/text/TextFlags.h:
* style/StyleResolveForDocument.cpp:
(WebCore::Style::resolveForDocument):

Source/WebKit:

There are no clients of this SPI yet, so we can rename it to remove the
grammatical negative.

* Shared/WebPreferences.yaml:
* UIProcess/API/C/WKPreferences.cpp:
(WKPreferencesSetShouldAllowUserInstalledFonts):
(WKPreferencesGetShouldAllowUserInstalledFonts):
(WKPreferencesSetShouldDisallowUserInstalledFonts): Deleted.
(WKPreferencesGetShouldDisallowUserInstalledFonts): Deleted.
* UIProcess/API/C/WKPreferencesRefPrivate.h:
* UIProcess/API/Cocoa/WKPreferences.mm:
(-[WKPreferences _shouldAllowUserInstalledFonts]):
(-[WKPreferences _setShouldAllowUserInstalledFonts:]):
(-[WKPreferences _shouldDisallowUserInstalledFonts]): Deleted.
(-[WKPreferences _setShouldDisallowUserInstalledFonts:]): Deleted.
* UIProcess/API/Cocoa/WKPreferencesPrivate.h:

LayoutTests:

* fast/text/user-installed-fonts/disable.html:
* fast/text/user-installed-fonts/shadow-disable.html:
* fast/text/user-installed-fonts/shadow-family-disable.html:
* fast/text/user-installed-fonts/shadow-postscript-disable.html:
* fast/text/user-installed-fonts/shadow-postscript-family-disable.html:

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

21 months agoUserMediaRequest should stop a request when Document is being stopped
commit-queue@webkit.org [Wed, 20 Dec 2017 03:17:24 +0000 (03:17 +0000)]
UserMediaRequest should stop a request when Document is being stopped
https://bugs.webkit.org/show_bug.cgi?id=180962

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

Covered by fast/mediastream/destroy-document-while-enumerating-devices.html not crashing anymore under guardmalloc.
Stopping to wait for the media stream to be active whenDocument goes away.

* Modules/mediastream/UserMediaRequest.cpp:
(WebCore::UserMediaRequest::UserMediaRequest):
(WebCore::UserMediaRequest::stop):
(WebCore::UserMediaRequest::activeDOMObjectName const):
(WebCore::UserMediaRequest::canSuspendForDocumentSuspension const):
(WebCore::UserMediaRequest::contextDestroyed): Deleted.
* Modules/mediastream/UserMediaRequest.h:

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

21 months agoMove first-letter building code to RenderTreeBuilder
antti@apple.com [Wed, 20 Dec 2017 01:44:37 +0000 (01:44 +0000)]
Move first-letter building code to RenderTreeBuilder
https://bugs.webkit.org/show_bug.cgi?id=180992

Reviewed by Zalan Bujtas.

All special case tree building logic should go to RenderTreeBuilder.

- RenderTreeUpdater::FirstLetter -> RenderTreeBuilder::FirstLetter
- Make the builder non-static and stop using RenderTreeBuilder::current() there.

* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* rendering/TextAutoSizing.cpp:
(WebCore::TextAutoSizingValue::adjustTextNodeSizes):
* rendering/updating/RenderTreeBuilder.cpp:
(WebCore::RenderTreeBuilder::RenderTreeBuilder):
(WebCore::RenderTreeBuilder::insertChild):
(WebCore::RenderTreeBuilder::updateAfterDescendants):
* rendering/updating/RenderTreeBuilder.h:
(WebCore::RenderTreeBuilder::firstLetterBuilder):
(WebCore::RenderTreeBuilder::tableBuilder):
* rendering/updating/RenderTreeBuilderFirstLetter.cpp: Copied from rendering/updating/RenderTreeUpdaterFirstLetter.cpp.
(WebCore::supportsFirstLetter):
(WebCore::RenderTreeBuilder::FirstLetter::FirstLetter):
(WebCore::RenderTreeBuilder::FirstLetter::updateAfterDescendants):
(WebCore::RenderTreeBuilder::FirstLetter::updateStyle):
(WebCore::RenderTreeBuilder::FirstLetter::createRenderers):
(WebCore::updateFirstLetterStyle): Deleted.
(WebCore::createFirstLetterRenderer): Deleted.
(WebCore::RenderTreeUpdater::FirstLetter::update): Deleted.
* rendering/updating/RenderTreeBuilderFirstLetter.h: Copied from rendering/updating/RenderTreeUpdaterFirstLetter.h.
* rendering/updating/RenderTreeUpdater.cpp:
(WebCore::RenderTreeUpdater::updateAfterDescendants):
* rendering/updating/RenderTreeUpdater.h:
* rendering/updating/RenderTreeUpdaterFirstLetter.cpp: Removed.
* rendering/updating/RenderTreeUpdaterFirstLetter.h: Removed.

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

21 months agoMarkerSubrange.SubdivideGrammarAndSelectionOverlap{Frontmost, FrontmostWithLongestEff...
dbates@webkit.org [Wed, 20 Dec 2017 01:33:46 +0000 (01:33 +0000)]
MarkerSubrange.SubdivideGrammarAndSelectionOverlap{Frontmost, FrontmostWithLongestEffectiveRange} are failing
https://bugs.webkit.org/show_bug.cgi?id=181014

Temporarily disable tests while I investigate offline.

* TestWebKitAPI/Tests/WebCore/MarkerSubrange.cpp:
(TestWebKitAPI::TEST):

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

21 months agoUnreviewed, rebaseline an API test result for El Capitan and Sierra.
wenson_hsieh@apple.com [Wed, 20 Dec 2017 01:31:21 +0000 (01:31 +0000)]
Unreviewed, rebaseline an API test result for El Capitan and Sierra.

* TestWebKitAPI/Tests/WebKitCocoa/WKAttachmentTests.mm:
(TestWebKitAPI::TEST):

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

21 months agoWeb Inspector: InspectorTest.evaluateInPage should return a rejection if an error...
bburg@apple.com [Wed, 20 Dec 2017 01:29:57 +0000 (01:29 +0000)]
Web Inspector: InspectorTest.evaluateInPage should return a rejection if an error was thrown
https://bugs.webkit.org/show_bug.cgi?id=180956

Reviewed by Joseph Pecoraro.

Source/WebInspectorUI:

* UserInterface/Test/FrontendTestHarness.js:
(FrontendTestHarness.prototype.evaluateInPage.translateResult): Renamed.
(FrontendTestHarness.prototype.evaluateInPage):
If the result was thrown, then reject with the error.
Rename the helper method to match the same one in RemoteObject.prototype.fetchProperties.

LayoutTests:

* inspector/unit-tests/test-harness-evaluate-in-page-expected.txt:
* inspector/unit-tests/test-harness-evaluate-in-page.html:
Update test case to expect an exception when an error was thrown in our evaluation.

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

21 months ago[Fetch] Extracting a body of type Blob should not set Content-Type to the empty string
cdumez@apple.com [Wed, 20 Dec 2017 01:15:58 +0000 (01:15 +0000)]
[Fetch] Extracting a body of type Blob should not set Content-Type to the empty string
https://bugs.webkit.org/show_bug.cgi?id=180991

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

Rebaseline WPT test now that it is passing.

* web-platform-tests/service-workers/service-worker/invalid-blobtype.https-expected.txt:

Source/WebCore:

Extracting a body of type Blob should not set Content-Type to the empty string as per:
- https://fetch.spec.whatwg.org/#concept-bodyinit-extract

No new tests, rebaselined existing test.

* Modules/fetch/FetchBody.cpp:
(WebCore::FetchBody::extract):

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

21 months agoUnreviewed, rolling out r226094.
commit-queue@webkit.org [Wed, 20 Dec 2017 01:10:11 +0000 (01:10 +0000)]
Unreviewed, rolling out r226094.
https://bugs.webkit.org/show_bug.cgi?id=181012

No longer needed to build without error. (Requested by xenon
on #webkit).

Reverted changeset:

"[GTK][WPE] Conditionalize libTASN1 use behind
ENABLE_SUBTLE_CRYPTO in the CMake files"
https://bugs.webkit.org/show_bug.cgi?id=180949
https://trac.webkit.org/changeset/226094

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

21 months ago[MediaStream] Clean up RealtimeMediaSource interfaces
eric.carlson@apple.com [Wed, 20 Dec 2017 01:08:40 +0000 (01:08 +0000)]
[MediaStream] Clean up RealtimeMediaSource interfaces
https://bugs.webkit.org/show_bug.cgi?id=180934
<rdar://problem/36108648>

Reviewed by Youenn Fablet.

Source/WebCore:

No new tests, updated http/tests/media/media-stream/disconnected-frame.html.

Wrap video and audio constraints in a struct instead of passing both around as separate
parameters. Cleanup up the interface to RealTimeMediaSourceCenter.

* Modules/mediastream/MediaDevices.cpp:
(WebCore::MediaDevices::getUserMedia const):
* Modules/mediastream/MediaDevicesRequest.cpp:
(WebCore::MediaDevicesRequest::start):
* Modules/mediastream/UserMediaRequest.cpp:
(WebCore::UserMediaRequest::create):
(WebCore::UserMediaRequest::UserMediaRequest):
(WebCore::UserMediaRequest::start):
(WebCore::UserMediaRequest::allow):
(WebCore::UserMediaRequest::contextDestroyed):
* Modules/mediastream/UserMediaRequest.h:
(WebCore::UserMediaRequest::request const):
* WebCore.xcodeproj/project.pbxproj:
* platform/mediastream/CaptureDevice.h:
(WebCore::CaptureDevice::persistentId const):
(WebCore::CaptureDevice::label const):
(WebCore::CaptureDevice::groupId const):
(WebCore::CaptureDevice::type const):
(WebCore::CaptureDevice::setPersistentId): Deleted.
(WebCore::CaptureDevice::setLabel): Deleted.
(WebCore::CaptureDevice::setGroupId): Deleted.
(WebCore::CaptureDevice::setType): Deleted.
* platform/mediastream/CaptureDeviceManager.cpp:
(CaptureDeviceManager::getAudioSourcesInfo): Deleted.
(CaptureDeviceManager::getVideoSourcesInfo): Deleted.
(CaptureDeviceManager::deviceWithUID): Deleted.
* platform/mediastream/CaptureDeviceManager.h:
(WebCore::CaptureDeviceManager::captureDeviceWithPersistentID):
(WebCore::CaptureDeviceManager::refreshCaptureDevices):
* platform/mediastream/MediaStreamRequest.h: Copied from Source/WebCore/platform/mediastream/ios/AVAudioSessionCaptureDevice.mm.
(WebCore::MediaStreamRequest::encode const):
(WebCore::MediaStreamRequest::decode):
* platform/mediastream/RealtimeMediaSourceCenter.cpp:
(WebCore::RealtimeMediaSourceCenter::createMediaStream):
(WebCore::RealtimeMediaSourceCenter::getMediaStreamDevices):
(WebCore::RealtimeMediaSourceCenter::validateRequestConstraints):
(WebCore::RealtimeMediaSourceCenter::captureDeviceWithPersistentID):
* platform/mediastream/RealtimeMediaSourceCenter.h:
* platform/mediastream/RealtimeMediaSourceSettings.h:
* platform/mediastream/ios/AVAudioSessionCaptureDevice.mm:
(WebCore::AVAudioSessionCaptureDevice::AVAudioSessionCaptureDevice):
* platform/mediastream/ios/AVAudioSessionCaptureDeviceManager.h:
* platform/mediastream/ios/AVAudioSessionCaptureDeviceManager.mm:
(WebCore::AVAudioSessionCaptureDeviceManager::captureDevices):
(WebCore::AVAudioSessionCaptureDeviceManager::captureDeviceWithPersistentID):
* platform/mediastream/mac/AVCaptureDeviceManager.h:
* platform/mediastream/mac/AVCaptureDeviceManager.mm:
(WebCore::AVCaptureDeviceManager::captureDevicesInternal):
(WebCore::AVCaptureDeviceManager::captureDevices):
(WebCore::AVCaptureDeviceManager::refreshAVCaptureDevicesOfType):
(WebCore::AVCaptureDeviceManager::refreshCaptureDevices):
(WebCore::AVCaptureDeviceManager::deviceDisconnected):
(WebCore::AVCaptureDeviceManager::getAudioSourcesInfo): Deleted.
(WebCore::AVCaptureDeviceManager::getVideoSourcesInfo): Deleted.
* platform/mediastream/mac/CoreAudioCaptureDevice.cpp:
(WebCore::CoreAudioCaptureDevice::CoreAudioCaptureDevice):
* platform/mediastream/mac/CoreAudioCaptureDeviceManager.cpp:
(WebCore::CoreAudioCaptureDeviceManager::captureDevices):
(WebCore::CoreAudioCaptureDeviceManager::captureDeviceWithPersistentID):
(WebCore::CoreAudioCaptureDeviceManager::refreshAudioCaptureDevices):
* platform/mediastream/mac/CoreAudioCaptureDeviceManager.h:
* platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp:
* platform/mock/MockRealtimeAudioSource.cpp:
(WebCore::MockRealtimeAudioSource::startProducingData):
(WebCore::MockRealtimeAudioSource::createMuted): Deleted.
* platform/mock/MockRealtimeAudioSource.h:
* platform/mock/MockRealtimeMediaSource.cpp:
(WebCore::deviceMap):
(WebCore::MockRealtimeMediaSource::captureDeviceWithPersistentID):
(WebCore::MockRealtimeMediaSource::audioDevices):
(WebCore::MockRealtimeMediaSource::videoDevices):
(WebCore::MockRealtimeMediaSource::MockRealtimeMediaSource):
* platform/mock/MockRealtimeMediaSource.h:
(WebCore::MockRealtimeMediaSource::device const):
(WebCore::MockRealtimeMediaSource::deviceIndex): Deleted.
* platform/mock/MockRealtimeMediaSourceCenter.h:
* platform/mock/MockRealtimeVideoSource.cpp:
(WebCore::MockRealtimeVideoSource::MockRealtimeVideoSource):
(WebCore::MockRealtimeVideoSource::initializeCapabilities):
(WebCore::MockRealtimeVideoSource::generateFrame):
(WebCore::MockRealtimeVideoSource::createMuted): Deleted.
* platform/mock/MockRealtimeVideoSource.h:

Source/WebKit:

* Shared/WebCoreArgumentCoders.h: Update CaptureDevice encoder.

* UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
(WebKit::UserMediaPermissionRequestManagerProxy::createPermissionRequest): Renamed from createRequest.
(WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame): Update for
API change.
(WebKit::UserMediaPermissionRequestManagerProxy::enumerateMediaDevicesForFrame): Filter the
vector returned by getMediaStreamDevices.
(WebKit::UserMediaPermissionRequestManagerProxy::createRequest): Deleted.
* UIProcess/UserMediaPermissionRequestManagerProxy.h:

* UIProcess/UserMediaPermissionRequestProxy.cpp:
(WebKit::UserMediaPermissionRequestProxy::UserMediaPermissionRequestProxy): Update for API change.
(WebKit::UserMediaPermissionRequestProxy::allow): Ditto.
* UIProcess/UserMediaPermissionRequestProxy.h:
(WebKit::UserMediaPermissionRequestProxy::create):
(WebKit::UserMediaPermissionRequestProxy::requestType const):

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::requestUserMediaPermissionForFrame): Ditto.
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:

* WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:
(WebKit::UserMediaPermissionRequestManager::startUserMediaRequest): m_blockedRequests -> m_blockedUserMediaRequests.
(WebKit::UserMediaPermissionRequestManager::sendUserMediaRequest): Ditto.
(WebKit::UserMediaPermissionRequestManager::mediaCanStart): Ditto.
(WebKit::UserMediaPermissionRequestManager::removeMediaRequestFromMaps): Ditto.
* WebProcess/MediaStream/UserMediaPermissionRequestManager.h:

LayoutTests:

* http/tests/media/media-stream/disconnected-frame-expected.txt:
* http/tests/media/media-stream/disconnected-frame.html:

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

21 months agoMarked http/tests/images/image-supports-video.html as flaky on macOS WK1.
jlewis3@apple.com [Wed, 20 Dec 2017 00:59:16 +0000 (00:59 +0000)]
Marked http/tests/images/image-supports-video.html as flaky on macOS WK1.
https://bugs.webkit.org/show_bug.cgi?id=181008

Unreviewed test gardening.

* platform/mac-wk1/TestExpectations:

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

21 months agoWeb Inspector: Network Table - Redesign the waterfall popover showing timing data
joepeck@webkit.org [Wed, 20 Dec 2017 00:56:31 +0000 (00:56 +0000)]
Web Inspector: Network Table - Redesign the waterfall popover showing timing data
https://bugs.webkit.org/show_bug.cgi?id=180996
<rdar://problem/34072542>

Reviewed by Matt Baker.

* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Main.html:
New strings and files.

* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype._waterfallPopoverContentForResource):
(WI.NetworkTableContentView.prototype._handleMousedownWaterfall):
Use the ResourceTimingBreakdownView with a fixed width size.

* UserInterface/Views/ResourceTimingContentView.css: Removed.
* UserInterface/Views/ResourceTimingContentView.js:
(WI.ResourceTimingContentView.prototype.initialLayout):
(WI.ResourceTimingContentView.prototype._refreshTimingSection):
(WI.ResourceTimingContentView.prototype._refreshTimingSection.createBlock): Deleted.
(WI.ResourceTimingContentView.prototype._refreshTimingSection.createTimeLabel): Deleted.
(WI.ResourceTimingContentView.prototype._refreshTimingSection.createRow): Deleted.
Use the ResourceTimingBreakdownView with a flexible size.
Also changed the loading indicator and empty message to match
normal ContentView loading indicator and message only UI.

* UserInterface/Views/ResourceTimingBreakdownView.css:
(.waterfall-popover .resource-timing-breakdown):
(.resource-timing-breakdown > table > tr > td.label):
(.resource-timing-breakdown > table > tr > td.graph):
(.resource-timing-breakdown > table > tr > td.time):
(.resource-timing-breakdown > table > tr.empty):
(.resource-timing-breakdown > table > tr.header:not(.total-row) > td):
(.resource-timing-breakdown > table hr):
(.resource-timing-breakdown .waterfall .block):
(.resource-timing-breakdown): Deleted.
(.resource-timing-breakdown > .waterfall): Deleted.
(.resource-timing-breakdown > .waterfall .block): Deleted.
(.resource-timing-breakdown ul): Deleted.
(.resource-timing-breakdown ul > li): Deleted.
(.resource-timing-breakdown ul > li > .row-label): Deleted.
(body[dir=ltr] .resource-timing-breakdown ul > li > .row-label): Deleted.
(body[dir=rtl] .resource-timing-breakdown ul > li > .row-label): Deleted.
(.resource-timing-breakdown ul > li > .section-label): Deleted.
(.resource-timing-breakdown ul > li > .time-label): Deleted.
(.resource-timing-breakdown .time-section): Deleted.
(.resource-timing-breakdown ul > li > .time-section > .label): Deleted.
(.resource-timing-breakdown ul > li.total .block): Deleted.
(.resource-timing-breakdown ul > li.total .time-label): Deleted.
* UserInterface/Views/ResourceTimingBreakdownView.js:
(WI.ResourceTimingBreakdownView):
(WI.ResourceTimingBreakdownView.prototype._appendEmptyRow):
(WI.ResourceTimingBreakdownView.prototype._appendHeaderRow):
(WI.ResourceTimingBreakdownView.prototype._appendRow):
(WI.ResourceTimingBreakdownView.prototype.initialLayout):
(WI.ResourceTimingBreakdownView.prototype.initialLayout.createBlock): Deleted.
(WI.ResourceTimingBreakdownView.prototype.initialLayout.createSectionLabel): Deleted.
(WI.ResourceTimingBreakdownView.prototype.initialLayout.createTimeLabel): Deleted.
(WI.ResourceTimingBreakdownView.prototype.initialLayout.createTimeSection): Deleted.
(WI.ResourceTimingBreakdownView.prototype.initialLayout.createRow): Deleted.
(WI.ResourceTimingBreakdownView.prototype.initialLayout.emptyRow): Deleted.
(WI.ResourceTimingBreakdownView.prototype.initialLayout.appendGraphRow): Deleted.
(WI.ResourceTimingBreakdownView.prototype.initialLayout.appendEmptyRow): Deleted.
(WI.ResourceTimingBreakdownView.prototype.initialLayout.getCurrentSectionMetrics): Deleted.
Redesign the breakdown view.

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

21 months agoDon't convert pasted content to use blob URL in WebKit1
rniwa@webkit.org [Wed, 20 Dec 2017 00:07:31 +0000 (00:07 +0000)]
Don't convert pasted content to use blob URL in WebKit1
https://bugs.webkit.org/show_bug.cgi?id=180969

Reviewed by Wenson Hsieh.

Source/WebCore:

Turns out that some WebKit1 clients are relying on being able to see the original URLs of the pasted content;
e.g. not storing content referenced by HTTP/HTTPS protocol as opposed to local files.

This patch restores the behavior prior to r223440 and r222839 for WebKit1 clients by overriding resources in
DocumentLoader instead of converting URLs used in the pasted contents by blob URLs. In addition, this patch
disables the pasteboard sanitization and custom data transfer types for WebKit1 clients as the feature poses
a compatibility concern for WebKit1 clients.

Tests: WebKitLegacy.AccessingImageInPastedRTFD
       WebKitLegacy.AccessingImageInPastedWebArchive

* editing/cocoa/WebContentReaderCocoa.mm:
(WebCore::createFragmentAndAddResources):
(WebCore::WebContentReader::readWebArchive):
* page/DeprecatedGlobalSettings.cpp:
(WebCore::DeprecatedGlobalSettings::defaultCustomPasteboardDataEnabled):

Tools:

Added API tests to make sure we can access the images in the pasted content.

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKitCocoa/paste-rtfd.html:
* TestWebKitAPI/Tests/WebKitLegacy/mac: Added.
* TestWebKitAPI/Tests/WebKitLegacy/mac/AccessingPastedImage.mm: Added.
(writeRTFDToPasteboard):
(-[SubresourceForBlobURLFrameLoadDelegate webView:didFinishLoadForFrame:]):
(-[SubresourceForBlobURLFrameLoadDelegate webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:]):
(TestWebKitAPI::TEST):

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

21 months agoWeb Inspector: add TestPage.debug() to inspect evaluations being sent to Inspector...
bburg@apple.com [Wed, 20 Dec 2017 00:06:43 +0000 (00:06 +0000)]
Web Inspector: add TestPage.debug() to inspect evaluations being sent to Inspector page
https://bugs.webkit.org/show_bug.cgi?id=181005

Reviewed by Joseph Pecoraro.

When TestPage.debug() is called, dump out all code that is sent to be evaluated in
the inspector page. This is useful for debugging initialization and InspectorTest.awaitEvent.

* http/tests/inspector/resources/inspector-test.js:
(runTest):
(TestPage.debug):
(TestPage.evaluateInWebInspector):
(TestPage.dispatchEventToFrontend):

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

21 months agoLayout Test imported/w3c/web-platform-tests/service-workers/service-worker/getregistr...
commit-queue@webkit.org [Wed, 20 Dec 2017 00:03:55 +0000 (00:03 +0000)]
Layout Test imported/w3c/web-platform-tests/service-workers/service-worker/getregistrations.https.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=180497
<rdar://problem/35947470>

Unreviewed.

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-19

* TestExpectations: Marking test as slow on Debug.

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

21 months agoWeb Inspector: InspectorTest.expectException does not handle implicitly resolved...
bburg@apple.com [Tue, 19 Dec 2017 23:53:02 +0000 (23:53 +0000)]
Web Inspector: InspectorTest.expectException does not handle implicitly resolved async functions correctly
https://bugs.webkit.org/show_bug.cgi?id=180944

Reviewed by Joseph Pecoraro.

Source/WebInspectorUI:

* UserInterface/Test/TestHarness.js:
(TestHarness.prototype.expectException):
Don't chain .catch after we might have just returned a rejected promise.

LayoutTests:

Add a new test case for implicitly resolved async functions passed to expectException.
Rebaseline one existing test that had a failing assertion that progresses with
this change. I didn't notice it because the assertion just prior is expected to fail.

* inspector/unit-tests/test-harness-expect-functions-async-expected.txt:
* inspector/unit-tests/test-harness-expect-functions-async.html:

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

21 months agoSLEEP_THREAD_FOR_DEBUGGER() macro should try to print out the PID of the affected...
bburg@apple.com [Tue, 19 Dec 2017 23:50:04 +0000 (23:50 +0000)]
SLEEP_THREAD_FOR_DEBUGGER() macro should try to print out the PID of the affected process
https://bugs.webkit.org/show_bug.cgi?id=180947

Reviewed by Joseph Pecoraro.

* wtf/DebugUtilities.h:
- Use sleep() from CurrentTime.h as it is more cross-platform.
- Print a message with the process PID to simplify attaching to sleeping thread.
- Include source location in case multiple such macros are being used.

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

21 months agoWeb Inspector: Network Table - Update the Time column to include the total duration...
joepeck@webkit.org [Tue, 19 Dec 2017 23:40:16 +0000 (23:40 +0000)]
Web Inspector: Network Table - Update the Time column to include the total duration not just the download duration
https://bugs.webkit.org/show_bug.cgi?id=180998
<rdar://problem/36140424>

Reviewed by Matt Baker.

* UserInterface/Models/Resource.js:
(WI.Resource.prototype.get totalDuration):
(WI.Resource.prototype.get duration): Deleted.
Rename and group getters to be clearer.

* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype._entryForResource):
Use the totalDuration for the network table time column.

* UserInterface/Views/ResourceTimelineDataGridNode.js:
(WI.ResourceTimelineDataGridNode.prototype._mouseoverRecordBar graphDataSource.get secondsPerPixel):
Using the download duration was incorrect here.

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

21 months agoPlaying media elements which call "pause(); play()" will have the play promise rejected.
jer.noble@apple.com [Tue, 19 Dec 2017 23:16:09 +0000 (23:16 +0000)]
Playing media elements which call "pause(); play()" will have the play promise rejected.
https://bugs.webkit.org/show_bug.cgi?id=180781
<rdar://problem/33191377>

Reviewed by Eric Carlson.

Source/WebCore:

Follow-up to address failing iOS API tests. Rather than skipping the call to
prepareForLoad() in the case where media elements are not allowed to load data,
unconditionally call prepareForLoad(), but conditionally call selectMediaResource() inside
that function only if the media elemnet is allowed to load. This ensures that the
MediaPlayer is created when play(), pause(), or load() are called during a user gesture
later, and selectMediaResource() (which depends on having a non-null m_player) is called.

* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::parseAttribute):
(WebCore::HTMLMediaElement::insertedIntoAncestor):
(WebCore::HTMLMediaElement::load):
(WebCore::HTMLMediaElement::prepareForLoad):
(WebCore::HTMLMediaElement::playInternal):

Source/WebKit:

shouldRequireUserGestureToLoadVideo() should default to false on Mac.

* UIProcess/API/Cocoa/WKWebView.mm:
(shouldRequireUserGestureToLoadVideo):

Source/WebKitLegacy/mac:

shouldRequireUserGestureToLoadVideo() should default to false on Mac.

* WebView/WebView.mm:
(shouldRequireUserGestureToLoadVideo):

LayoutTests:

* media/video-load-require-user-gesture.html:

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

21 months agoWeb Inspector: Styles Redesign: Typing semicolon at the end of value should move...
webkit@devinrousso.com [Tue, 19 Dec 2017 23:13:05 +0000 (23:13 +0000)]
Web Inspector: Styles Redesign: Typing semicolon at the end of value should move to the next property
https://bugs.webkit.org/show_bug.cgi?id=178498
<rdar://problem/35065995>

Reviewed by Joseph Pecoraro.

* UserInterface/Views/SpreadsheetStypeProperty.js:
(WI.SpreadsheetStypeProperty.prototype._update):
(WI.SpreadsheetStypeProperty.prototype._handleValueBeforeInput):
Only move to the next property if there are no unbalanced quotes. For example, adding a
semicolon after `url("foo` or `url('bar` would not move to the next property.

* UserInterface/Views/SpreadsheetTextField.js:
(WI.SpreadsheetTextField.prototype.valueWithoutSuggestion):
(WI.SpreadsheetTextField.prototype.completionSuggestionsSelectedCompletion):
(WI.SpreadsheetTextField.prototype.completionSuggestionsClickedCompletion):
(WI.SpreadsheetTextField.prototype._handleKeyDownForSuggestionView):
(WI.SpreadsheetTextField.prototype._updateCompletions):
(WI.SpreadsheetTextField.prototype._getPrefix): Deleted.

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

21 months agoAPI test WKAttachmentTests.InsertPastedAttributedStringContainingMultipleAttachments...
wenson_hsieh@apple.com [Tue, 19 Dec 2017 23:12:00 +0000 (23:12 +0000)]
API test WKAttachmentTests.InsertPastedAttributedStringContainingMultipleAttachments is failing on El Capitan and Sierra
https://bugs.webkit.org/show_bug.cgi?id=180977

Reviewed by Tim Horton.

Fixes a failing API test by updating markup deserialization codepaths in WebKitLegacy to behave like the modern
WebCore counterpart. When determining element tags to exclude when generating markup from an attributed string,
don't add "object" as an element to exclude if the attachment element runtime feature is enabled.

* WebCoreSupport/WebEditorClient.mm:
(attributesForAttributedStringConversion):
* WebView/WebHTMLView.mm:
(+[WebHTMLView _excludedElementsForAttributedStringConversion]):

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

21 months agoBuild failure in WebGL2 when Video feature is disabled
timothy@hatcher.name [Tue, 19 Dec 2017 22:36:21 +0000 (22:36 +0000)]
Build failure in WebGL2 when Video feature is disabled
https://bugs.webkit.org/show_bug.cgi?id=180946

Reviewed by Brian Burg.

* html/canvas/WebGL2RenderingContext.h: Make TexImageSource conditional on ENABLE(VIDEO).
* html/canvas/WebGL2RenderingContext.idl: Ditto.

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

21 months agoscopeURL should start with the provided scriptURL
cdumez@apple.com [Tue, 19 Dec 2017 22:32:40 +0000 (22:32 +0000)]
scopeURL should start with the provided scriptURL
https://bugs.webkit.org/show_bug.cgi?id=180983

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

Rebaseline WPT tests now that more checks are passing.

* web-platform-tests/service-workers/service-worker/register-default-scope.https-expected.txt:
* web-platform-tests/service-workers/service-worker/registration-iframe.https-expected.txt:
* web-platform-tests/service-workers/service-worker/registration-security-error.https-expected.txt:

Source/WebCore:

scopeURL should start with the provided scriptURL, as per:
- https://w3c.github.io/ServiceWorker/#update (steps 7.8 to 7.18)

No new tests, rebaselined existing tests.

* platform/network/HTTPHeaderNames.in:
* workers/service/ServiceWorkerJob.cpp:
(WebCore::ServiceWorkerJob::didReceiveResponse):

LayoutTests:

Update WebKit tests due to new restrictions.

* http/tests/workers/service/basic-unregister.https-expected.txt:
* http/tests/workers/service/controller-change.html:
* http/tests/workers/service/resources/ServiceWorkerGlobalScope_getRegistration-worker.js:
(async.runTest):
* http/tests/workers/service/resources/ServiceWorkerGlobalScope_register-worker.js:
(async.runTest):
* http/tests/workers/service/resources/basic-fetch.js:
(async.test):
* http/tests/workers/service/resources/basic-register.js:
(async.test):
* http/tests/workers/service/resources/basic-unregister.js:
(async.test):
* http/tests/workers/service/resources/service-worker-fetch.js:
(async.test):
* http/tests/workers/service/resources/service-worker-getRegistration.js:
(async.test):
* http/tests/workers/service/resources/service-worker-importScript.js:
(async.test):
* http/tests/workers/service/resources/shift-reload-navigation.js:
(async.test):
* http/tests/workers/service/service-worker-clear.html:
* http/tests/workers/service/service-worker-crossorigin-fetch.html:
* http/tests/workers/service/service-worker-getRegistration-expected.txt:
* http/tests/workers/service/service-worker-request-with-body.https.html:
* http/tests/workers/service/serviceworker-idb.https.html:
* http/tests/workers/service/serviceworker-websocket.https.html:
* http/tests/workers/service/serviceworkerclients-get.https.html:

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

21 months ago[RenderTreeBuilder] Move finding-the-parent/creating-wrapper logic from RenderTableSe...
zalan@apple.com [Tue, 19 Dec 2017 22:15:18 +0000 (22:15 +0000)]
[RenderTreeBuilder] Move finding-the-parent/creating-wrapper logic from RenderTableSection::addChild to RenderTreeBuilder
https://bugs.webkit.org/show_bug.cgi?id=180994
<rdar://problem/36139222>

Reviewed by Antti Koivisto.

This is in preparation for removing all tree mutation from renderering code.

Covered by existing tests.

* rendering/RenderTableSection.cpp:
(WebCore::RenderTableSection::addChild):
* rendering/updating/RenderTreeBuilder.cpp:
(WebCore::RenderTreeBuilder::insertChild):
* rendering/updating/RenderTreeBuilderTable.cpp:
(WebCore::RenderTreeBuilder::Table::findOrCreateParentForChild):
* rendering/updating/RenderTreeBuilderTable.h:

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

21 months agoWe forgot to do index masking for in bounds int32 arrays in the FTL
sbarati@apple.com [Tue, 19 Dec 2017 21:51:27 +0000 (21:51 +0000)]
We forgot to do index masking for in bounds int32 arrays in the FTL
https://bugs.webkit.org/show_bug.cgi?id=180987

Reviewed by Keith Miller.

* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileGetByVal):

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

21 months agoImplement InlineTextBox painting using marker subranges
dbates@webkit.org [Tue, 19 Dec 2017 21:48:19 +0000 (21:48 +0000)]
Implement InlineTextBox painting using marker subranges
https://bugs.webkit.org/show_bug.cgi?id=180984
<rdar://problem/36139364>

Reviewed by David Hyatt.

Source/WebCore:

As a step towards implementing CSS Pseudo-Elements Module Level 4, explicitly decompose a
text line into subrange objects that may be styled (say, to give the appearance of selected
text) and painted.

No functionality changed. So, no new tests.

* rendering/InlineTextBox.cpp:
(WebCore::InlineTextBox::localSelectionRect const): Update comments.

(WebCore::InlineTextBox::MarkerSubrangeStyle::operator== const):
(WebCore::InlineTextBox::MarkerSubrangeStyle::operator!= const):
(WebCore::InlineTextBox::StyledMarkerSubrange::StyledMarkerSubrange):
Define a subclass to represent a marker subrange that has associated style information.
We will make use of the style information when painting the subrange.

(WebCore::createMarkerSubrangeFromSelectionInBox): Convenience function to instantiate a
MarkerSubrange instance from the current selection of a specified text box.

(WebCore::InlineTextBox::paint): Write in terms of MarkerSubrange. We keep composition backgrounds
and composition underlines as special cases for now. We represent all other subranges of the line
as MarkerSubrange instances, including unmarked text (i.e. non-selected text without an associated
document marker). The subranges for the gaps between document markers and selection are implicitly
created by subdividing the entire line. Support for PaintBehaviorExcludeSelection is implemented
by subdividing the entire line with the selection subrange and then removing the selection subrange
from the resulting list of subdivisions before painting with the resulting list.

(WebCore::InlineTextBox::paintPlatformDocumentMarkers): Renamed; formerly named paintDocumentMarkers.
(WebCore::InlineTextBox::paintPlatformDocumentMarker): Renamed; formerly named paintDocumentMarker.

(WebCore::InlineTextBox::computeStyleForUnmarkedMarkerSubrange const): Convenience function to
compute the style for unmarked text.

(WebCore::InlineTextBox::resolveStyleForSubrange): Added

(WebCore::InlineTextBox::subdivideAndResolveStyle): Subdivides the list of marker subranges and
coalesces subranges of the same type (e.g. selection) or with the same style. The latter strategy
preserves the optimization of drawing the text of the entire line in one draw command when we know
that the selected text looks identical to non-selected text. This optimization was performed in TextPainter::paint().

(WebCore::InlineTextBox::collectSubrangesForDraggedContent): Added.
(WebCore::InlineTextBox::collectSubrangesForDocumentMarkers): Added.
(WebCore::InlineTextBox::textOriginFromBoxRect const): Added.

(WebCore::InlineTextBox::paintMarkerSubranges):
(WebCore::InlineTextBox::paintTextSubrangeBackground):
(WebCore::InlineTextBox::paintTextSubrangeForeground):
(WebCore::InlineTextBox::paintTextSubrangeDecoration):
Paint the marker subrange.

(WebCore::InlineTextBox::paintCompositionBackground): Moved function to group it with the logic to
paint composition underlines. Modified to pass clamped offsets to paintTextSubrangeBackground() as
paintTextSubrangeBackground() now expects them.

(WebCore::mirrorRTLSegment): Moved function to be above paintCompositionUnderline() as it is the only
function that makes use of it.

(WebCore::InlineTextBox::paintSelection): Deleted.
(WebCore::InlineTextBox::paintTextMatchMarker): Deleted.
(WebCore::InlineTextBox::paintDecoration): Deleted.
(WebCore::InlineTextBox::paintDocumentMarker): Deleted; renamed to paintPlatformDocumentMarker.
(WebCore::InlineTextBox::paintDocumentMarkers): Deleted; renamed to paintPlatformDocumentMarkers.
* rendering/InlineTextBox.h:
(WebCore::InlineTextBox::paintMarkerSubranges): Added.
* rendering/MarkerSubrange.h:
(WebCore::MarkerSubrange::isEmpty const): Added.
(WebCore::MarkerSubrange::operator!= const): Added.
(WebCore::MarkerSubrange::operator== const): Added.
* rendering/SimpleLineLayoutFunctions.cpp:
(WebCore::SimpleLineLayout::paintFlow): Updated code as we no longer need to pass the text run length
to TextPainter::paint(). Also modernize the code while I am here.
* rendering/TextDecorationPainter.cpp:
(WebCore::TextDecorationPainter::Styles::operator== const): Added.
(WebCore::TextDecorationPainter::TextDecorationPainter): Modified to take an optional TextDecorationPainter::Styles
instance as an argument and removed the unused parameter for PseudoId.
* rendering/TextDecorationPainter.h:
(WebCore::TextDecorationPainter::Styles::operator!= const): Added.
* rendering/TextPaintStyle.cpp:
(WebCore::TextPaintStyle::operator== const): Added.
(WebCore::computeTextSelectionPaintStyle): Removed the now unused out-arguments paintSelectedTextOnly, paintSelectedTextSeparately,
and paintNonSelectedTextOnly. The values stored in these out-arguments were intended to be used by the caller to
minimize the number of drawing commands. The value of paintSelectedTextSeparately indicated whether selected text
would look identical to non-selected text so that a caller could use one paint command to draw the entire line
instead of issuing two or more drawing commands to paint non-selected and selected text separately. We now
accomplish the same optimization by coalescing subrange styles in InlineTextBox::subdivideAndResolveStyle().
The value of paintNonSelectedTextOnly, as its name states, indicated whether a caller should only paint non-selected
text and hence skip painting of selected text. This value was only used when painting dragged content (i.e. DocumentMarker::DraggedContent
markers) and its effect is now more directly achieved by the dragged content logic in InlineTextBox::paint().
* rendering/TextPaintStyle.h:
(WebCore::TextPaintStyle::operator!= const): Added.
* rendering/TextPainter.cpp:
(WebCore::TextPainter::paint): Implemented in terms TextPainter::paintRange() now that InlineTextBox::paint() optimizes
for the number of drawing calls. See remarks for WebCore::computeTextSelectionPaintStyle() for more details.
* rendering/TextPainter.h: Group together related member functions.
(WebCore::TextPainter::setSelectionStyle): Deleted.
(WebCore::TextPainter::setSelectionShadow): Deleted.

Tools:

Update unit tests now that we use subranges for the painting of dragged content.

* TestWebKitAPI/Tests/WebCore/MarkerSubrange.cpp:
(WebCore::operator<<):
(WebCore::operator==): Deleted; moved to class MarkerSubrange.

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

21 months agoAdd support for computing the frontmost longest effective marker subrange
dbates@webkit.org [Tue, 19 Dec 2017 21:28:33 +0000 (21:28 +0000)]
Add support for computing the frontmost longest effective marker subrange
https://bugs.webkit.org/show_bug.cgi?id=180985

Reviewed by Dave Hyatt.

Source/WebCore:

Add a new subdivision overlap strategy to return the minimum list of maximal length non-
overlapping subranges. We will make use of this strategy together with an algorithm to
coalesce adjacent subranges with visually indistinct styles to minimize the total number
of drawing commands needed to paint an entire line of text. We are not making use of
this functionality now. We will make use of it to simplify the patch for <https://bugs.webkit.org/show_bug.cgi?id=180984>.

* rendering/MarkerSubrange.cpp:
(WebCore::subdivide):
* rendering/MarkerSubrange.h:

Tools:

Adds a test case to ensure that we compute the minimum list of maximal length non-
overlapping subranges when using strategy OverlapStrategy::FrontmostWithLongestEffectiveRange.

* TestWebKitAPI/Tests/WebCore/MarkerSubrange.cpp:
(TestWebKitAPI::TEST):

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

21 months agoHandle Fetch should wait for the service worker's state to become activated
cdumez@apple.com [Tue, 19 Dec 2017 21:22:22 +0000 (21:22 +0000)]
Handle Fetch should wait for the service worker's state to become activated
https://bugs.webkit.org/show_bug.cgi?id=180959

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

Rebaseline WPT test that is now passing.

* web-platform-tests/service-workers/service-worker/fetch-waits-for-activate.https-expected.txt:

Source/WebCore:

Handle Fetch should wait for the service worker's state to become activated when
it is currently activating.

Specification:
- https://w3c.github.io/ServiceWorker/#on-fetch-request-algorithm (Step 16)

No new tests, rebaselined existing test.

* workers/service/server/SWServerWorker.cpp:
(WebCore::SWServerWorker::~SWServerWorker):
(WebCore::SWServerWorker::whenActivated):
(WebCore::SWServerWorker::setState):
(WebCore::SWServerWorker::callWhenActivatedHandler):
* workers/service/server/SWServerWorker.h:

Source/WebKit:

Handle Fetch should wait for the service worker's state to become activated when
it is currently activating.

Specification:
- https://w3c.github.io/ServiceWorker/#on-fetch-request-algorithm (Step 16)

* StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
(WebKit::WebSWServerConnection::startFetch):

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

21 months ago[DFG][FTL] NewRegexp shoud be fast
utatane.tea@gmail.com [Tue, 19 Dec 2017 19:38:31 +0000 (19:38 +0000)]
[DFG][FTL] NewRegexp shoud be fast
https://bugs.webkit.org/show_bug.cgi?id=180960

Reviewed by Michael Saboff.

When we encounter RegExp literal like /AAA/g, we need to create a RegExp object.
Typical idiom like `string.match(/regexp/)` requires RegExp object creation
every time.

As a first step, this patch accelerates RegExp object creation by handling it
in DFG and FTL. In a subsequent patch, we would like to introduce PhantomNewRegexp
to remove unnecessary RegExp object creations.

This patch improves SixSpeed/regex-u.{es5,es6}.

                             baseline                  patched

    regex-u.es5          69.6759+-3.1951     ^     53.1425+-2.0292        ^ definitely 1.3111x faster
    regex-u.es6         129.5413+-5.4437     ^    107.2105+-7.7775        ^ definitely 1.2083x faster

* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileNewRegexp):
* dfg/DFGSpeculativeJIT.h:
* dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* ftl/FTLAbstractHeapRepository.h:
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileNewRegexp):
* jit/JIT.h:
* jit/JITInlines.h:
(JSC::JIT::callOperation):
* jit/JITOpcodes.cpp:
(JSC::JIT::emit_op_new_regexp):
* jit/JITOperations.cpp:
* jit/JITOperations.h:
* llint/LLIntSlowPaths.cpp:
(JSC::LLInt::LLINT_SLOW_PATH_DECL):
* runtime/RegExpObject.h:
(JSC::RegExpObject::offsetOfRegExp):
(JSC::RegExpObject::allocationSize):

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

21 months agoUnreviewed, include YarrErrorCode.h in Yarr.h
utatane.tea@gmail.com [Tue, 19 Dec 2017 19:26:39 +0000 (19:26 +0000)]
Unreviewed, include YarrErrorCode.h in Yarr.h
https://bugs.webkit.org/show_bug.cgi?id=180966

* yarr/Yarr.h:

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

21 months ago[YARR] Yarr should return ErrorCode instead of error messages (const char*)
utatane.tea@gmail.com [Tue, 19 Dec 2017 19:16:21 +0000 (19:16 +0000)]
[YARR] Yarr should return ErrorCode instead of error messages (const char*)
https://bugs.webkit.org/show_bug.cgi?id=180966

Reviewed by Mark Lam.

Source/JavaScriptCore:

Currently, Yarr returns const char*` for an error message when needed.
But it is easier to handle error status if Yarr returns an error code
instead of `const char*`.

In this patch, we introduce Yarr::ErrorCode. Yarr returns it instead of
`const char*`. `std::expected<void, Yarr::ErrorCode>` would be appropriate
for the Yarr API interface. But it requires substantial changes removing
ErrorCode::NoError, so this patch just uses the current Yarr::ErrorCode as
a first step.

* JavaScriptCore.xcodeproj/project.pbxproj:
* Sources.txt:
* inspector/ContentSearchUtilities.cpp:
(Inspector::ContentSearchUtilities::findMagicComment):
* parser/ASTBuilder.h:
(JSC::ASTBuilder::createRegExp):
* parser/Parser.cpp:
(JSC::Parser<LexerType>::parsePrimaryExpression):
* parser/SyntaxChecker.h:
(JSC::SyntaxChecker::createRegExp):
* runtime/RegExp.cpp:
(JSC::RegExp::RegExp):
(JSC::RegExp::byteCodeCompileIfNecessary):
(JSC::RegExp::compile):
(JSC::RegExp::compileMatchOnly):
* runtime/RegExp.h:
* yarr/RegularExpression.cpp:
(JSC::Yarr::RegularExpression::Private::Private):
(JSC::Yarr::RegularExpression::Private::compile):
* yarr/YarrErrorCode.cpp: Added.
(JSC::Yarr::errorMessage):
* yarr/YarrErrorCode.h: Copied from Source/JavaScriptCore/yarr/YarrSyntaxChecker.h.
(JSC::Yarr::hasError):
* yarr/YarrParser.h:
(JSC::Yarr::Parser::CharacterClassParserDelegate::CharacterClassParserDelegate):
(JSC::Yarr::Parser::CharacterClassParserDelegate::atomPatternCharacter):
(JSC::Yarr::Parser::Parser):
(JSC::Yarr::Parser::isIdentityEscapeAnError):
(JSC::Yarr::Parser::parseEscape):
(JSC::Yarr::Parser::parseCharacterClass):
(JSC::Yarr::Parser::parseParenthesesBegin):
(JSC::Yarr::Parser::parseParenthesesEnd):
(JSC::Yarr::Parser::parseQuantifier):
(JSC::Yarr::Parser::parseTokens):
(JSC::Yarr::Parser::parse):
(JSC::Yarr::Parser::tryConsumeUnicodeEscape):
(JSC::Yarr::Parser::tryConsumeUnicodePropertyExpression):
(JSC::Yarr::parse):
* yarr/YarrPattern.cpp:
(JSC::Yarr::YarrPatternConstructor::YarrPatternConstructor):
(JSC::Yarr::YarrPatternConstructor::setupDisjunctionOffsets):
(JSC::Yarr::YarrPatternConstructor::setupOffsets):
(JSC::Yarr::YarrPattern::compile):
(JSC::Yarr::YarrPattern::YarrPattern):
(JSC::Yarr::YarrPattern::errorMessage): Deleted.
* yarr/YarrPattern.h:
(JSC::Yarr::YarrPattern::reset):
* yarr/YarrSyntaxChecker.cpp:
(JSC::Yarr::checkSyntax):
* yarr/YarrSyntaxChecker.h:

Source/WebCore:

Remove unnecessary String creation.

No behavior change.

* contentextensions/URLFilterParser.cpp:
(WebCore::ContentExtensions::URLFilterParser::addPattern):

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

21 months ago[RenderTreeBuilder] Move finding-the-parent/creating-wrapper logic from RenderTableRo...
zalan@apple.com [Tue, 19 Dec 2017 18:56:47 +0000 (18:56 +0000)]
[RenderTreeBuilder] Move finding-the-parent/creating-wrapper logic from RenderTableRow::addChild to RenderTreeBuilder
https://bugs.webkit.org/show_bug.cgi?id=180964
<rdar://problem/36123315>

Reviewed by Antti Koivisto.

This is in preparation for removing all tree mutation from renderering code.

Covered by existing tests.

* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* rendering/RenderTableRow.cpp:
(WebCore::RenderTableRow::addChild):
* rendering/updating/RenderTreeBuilder.cpp:
(WebCore::RenderTreeBuilder::insertChild):
* rendering/updating/RenderTreeBuilder.h:
* rendering/updating/RenderTreeBuilderTable.cpp: Added.
(WebCore::RenderTreeBuilder::Table::findOrCreateParentForChild):
* rendering/updating/RenderTreeBuilderTable.h: Copied from Source/WebCore/rendering/updating/RenderTreeBuilder.h.

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

21 months agoService Worker should not clean HTTP headers added by the application or by fetch...
commit-queue@webkit.org [Tue, 19 Dec 2017 18:37:44 +0000 (18:37 +0000)]
Service Worker should not clean HTTP headers added by the application or by fetch specification before service worker interception
https://bugs.webkit.org/show_bug.cgi?id=180939

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-19
Reviewed by Chris Dumez.

LayoutTests/imported/w3c:

* web-platform-tests/service-workers/service-worker/fetch-request-xhr.https-expected.txt:
* web-platform-tests/service-workers/service-worker/resources/fetch-request-xhr-iframe.https.html:
* web-platform-tests/service-workers/service-worker/fetch-header-visibility.https-expected.txt:

Source/WebCore:

Covered by modified WPT test.

Add support to clean only specific headers in cleanHTTPRequestHeadersForAccessControl,
renamed from cleanRedirectedRequestForAccessControl.
Compute the list of headers to keep in DocumentThreadableLoader.
Add a specific rule for Accept header which is set prior service worker interception and for
HTTP headers set by DocumentThreadableLoader clients.

* loader/CrossOriginAccessControl.cpp:
(WebCore::httpHeadersToKeepFromCleaning):
(WebCore::cleanRedirectedRequestForAccessControl):
* loader/CrossOriginAccessControl.h:
(WebCore::cleanRedirectedRequestForAccessControl):
* loader/DocumentThreadableLoader.cpp:
(WebCore::DocumentThreadableLoader::DocumentThreadableLoader):
* loader/ResourceLoaderOptions.h:
* workers/service/context/ServiceWorkerFetch.cpp:
(WebCore::ServiceWorkerFetch::dispatchFetchEvent):
* workers/service/context/ServiceWorkerFetch.h:
* workers/service/context/ServiceWorkerThread.cpp:
(WebCore::ServiceWorkerThread::postFetchTask):
* workers/service/context/ServiceWorkerThread.h:

Source/WebKit:

Passing referrer as an explicit parameter of StartFetch.

Cleaning request headers based on ResourceLoaderOptions.httpHeadersToKeep.

* StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
(WebKit::WebSWServerConnection::startFetch):
* StorageProcess/ServiceWorker/WebSWServerConnection.h:
* StorageProcess/ServiceWorker/WebSWServerConnection.messages.in:
* WebProcess/Storage/ServiceWorkerClientFetch.cpp:
(WebKit::ServiceWorkerClientFetch::start):
* WebProcess/Storage/WebSWClientConnection.cpp:
(WebKit::WebSWClientConnection::startFetch):
* WebProcess/Storage/WebSWClientConnection.h:
* WebProcess/Storage/WebSWContextManagerConnection.cpp:
(WebKit::WebSWContextManagerConnection::startFetch):
* WebProcess/Storage/WebSWContextManagerConnection.h:
* WebProcess/Storage/WebSWContextManagerConnection.messages.in:

LayoutTests:

* TestExpectations:

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

21 months agoUnreviewed, rebaseline service workers flaky tests.
cdumez@apple.com [Tue, 19 Dec 2017 18:25:54 +0000 (18:25 +0000)]
Unreviewed, rebaseline service workers flaky tests.

LayoutTests/imported/w3c:

* web-platform-tests/service-workers/service-worker/fetch-canvas-tainting-cache.https-expected.txt:
* web-platform-tests/service-workers/service-worker/fetch-canvas-tainting.https-expected.txt:
* web-platform-tests/service-workers/service-worker/fetch-cors-xhr.https-expected.txt:
* web-platform-tests/service-workers/service-worker/fetch-request-redirect.https-expected.txt:
* web-platform-tests/service-workers/service-worker/unregister-controller.https-expected.txt:
* web-platform-tests/service-workers/service-worker/update-bytecheck.https-expected.txt:

LayoutTests:

* TestExpectations:

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

21 months agoMarked accessibility/mac/search-field-cancel-button.html as flaky on macOS.
jlewis3@apple.com [Tue, 19 Dec 2017 18:01:14 +0000 (18:01 +0000)]
Marked accessibility/mac/search-field-cancel-button.html as flaky on macOS.
https://bugs.webkit.org/show_bug.cgi?id=180675

Unreviewed test gardening.

* platform/mac/TestExpectations:

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

21 months ago[Apple Pay] Stop maintaining a list of payment networks
aestes@apple.com [Tue, 19 Dec 2017 17:49:29 +0000 (17:49 +0000)]
[Apple Pay] Stop maintaining a list of payment networks
https://bugs.webkit.org/show_bug.cgi?id=180965
<rdar://problem/34696560>

Reviewed by Tim Horton.

Source/WebCore:

Instead of maintaining the list of valid payment networks in WebCore, allow the client to
provide the list when constructing a PaymentCoordinator. Then, use PaymentCoordinator's list
to validate ApplePaySessionPaymentRequests.

Validation will now be done case-insensitively since Cocoa clients will provide a list of
network names that differ in capitalization from the names formerly accepted by WebCore.

Added new test cases to http/tests/ssl/applepay/ApplePaySession.html.

* Modules/applepay/ApplePayRequestBase.cpp:
(WebCore::convertAndValidate): Changed to return a Vector of validated strings.
(WebCore::validate): Renamed to convertAndValidate.
* Modules/applepay/ApplePayRequestBase.h:
* Modules/applepay/ApplePaySession.cpp:
(WebCore::convertAndValidate):
(WebCore::ApplePaySession::create):
* Modules/applepay/ApplePaySessionPaymentRequest.cpp:
(WebCore::ApplePaySessionPaymentRequest::isValidSupportedNetwork): Deleted.
* Modules/applepay/ApplePaySessionPaymentRequest.h:
* Modules/applepay/PaymentCoordinator.cpp:
(WebCore::toHashSet):
(WebCore::PaymentCoordinator::PaymentCoordinator): Converted availablePaymentNetworks to a
case-insensitive HashSet and stored in m_availablePaymentNetworks.
(WebCore::PaymentCoordinator::validatedPaymentNetwork const): Added special cases for "jcb"
and "carteBancaire" for API compatibility. For other networks, checked m_availablePaymentNetworks.
* Modules/applepay/PaymentCoordinator.h:
* Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp:
(WebCore::ApplePayPaymentHandler::show):
* page/MainFrame.cpp:
(WebCore::MainFrame::MainFrame): Constructed m_paymentCoordinator with configuration.availablePaymentNetworks.
* page/PageConfiguration.h:
* testing/Internals.cpp:
(WebCore::Internals::Internals):
* testing/MockPaymentCoordinator.cpp:
* testing/MockPaymentCoordinator.h:

Source/WebCore/PAL:

* pal/spi/cocoa/PassKitSPI.h: Defined +[PKPaymentRequest availableNetworks].

Source/WebKit:

* Shared/WebPageCreationParameters.cpp:
(WebKit::WebPageCreationParameters::encode const):
(WebKit::WebPageCreationParameters::decode):
* Shared/WebPageCreationParameters.h: Defined availablePaymentNetworks.
* UIProcess/ApplePay/WebPaymentCoordinatorProxy.h:
* UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
(WebKit::toSupportedNetworks):
(WebKit::WebPaymentCoordinatorProxy::availablePaymentNetworks): Called
+[PKPaymentRequest availableNetworks].
(WebKit::toSupportedNetwork): Deleted.
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::creationParameters): Set parameters.availablePaymentNetworks by
calling WebPaymentCoordinatorProxy::availablePaymentNetworks.
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::WebPage): Set pageConfiguration.availablePaymentNetworks to
parameters.availablePaymentNetworks.

LayoutTests:

* http/tests/ssl/applepay/ApplePaySession-expected.txt:
* http/tests/ssl/applepay/ApplePaySession.html: Added a test case for network names with
varying capitalization.

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

21 months agoUnreviewed, try to fix the Windows build after r226097.
wenson_hsieh@apple.com [Tue, 19 Dec 2017 17:03:48 +0000 (17:03 +0000)]
Unreviewed, try to fix the Windows build after r226097.

* editing/markup.cpp:
(WebCore::StyledMarkupAccumulator::appendCustomAttributes):

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

21 months ago[WPE] Enable the rest of the wpt html tests.
Ms2ger@igalia.com [Tue, 19 Dec 2017 15:43:45 +0000 (15:43 +0000)]
[WPE] Enable the rest of the wpt html tests.
https://bugs.webkit.org/show_bug.cgi?id=180975

Unreviewed test gardening.

* platform/wpe/TestExpectations:
* platform/wpe/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/read-media/pageload-video-expected.txt:
  Added: dependent on the supported video codecs.
* platform/wpe/imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/mime-types/canPlayType-expected.txt:
  Added: dependent on the supported video codecs.
* platform/wpe/imported/w3c/web-platform-tests/html/semantics/forms/the-form-element/form-elements-filter-expected.txt:
  Added: whitespace difference.

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

21 months agoMark scroll-restoration-navigation-samedoc.html as passing.
Ms2ger@igalia.com [Tue, 19 Dec 2017 15:09:09 +0000 (15:09 +0000)]
Mark scroll-restoration-navigation-samedoc.html as passing.
https://bugs.webkit.org/show_bug.cgi?id=169264

Unreviewed test gardening.

It is passing on mac, gtk, and wpe, disabled on win, and still marked
as failing on ios.

* TestExpectations:
* platform/gtk/TestExpectations:

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

21 months agoUnreviewed test gardening.
fred.wang@free.fr [Tue, 19 Dec 2017 11:50:39 +0000 (11:50 +0000)]
Unreviewed test gardening.

Patch by Frederic Wang <fwang@igalia.com> on 2017-12-19

* platform/gtk/mathml/opentype/opentype-stretchy-horizontal-expected.png:
* platform/gtk/mathml/opentype/opentype-stretchy-horizontal-expected.txt: Added.

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

21 months ago[Apple Pay] Only include phonetic name properties in ApplePayPaymentContact when...
aestes@apple.com [Tue, 19 Dec 2017 05:39:26 +0000 (05:39 +0000)]
[Apple Pay] Only include phonetic name properties in ApplePayPaymentContact when version >= 3
https://bugs.webkit.org/show_bug.cgi?id=180925
<rdar://problem/35907596>

Reviewed by Tim Horton.

No tests possible. The fix involves converting PKContacts, which we can't create in our test harness.

* Modules/applepay/ApplePayPaymentAuthorizedEvent.cpp:
(WebCore::ApplePayPaymentAuthorizedEvent::ApplePayPaymentAuthorizedEvent):
* Modules/applepay/ApplePayPaymentAuthorizedEvent.h:
* Modules/applepay/ApplePaySession.cpp:
(WebCore::ApplePaySession::create):
(WebCore::ApplePaySession::ApplePaySession):
(WebCore::ApplePaySession::version const):
(WebCore::ApplePaySession::didAuthorizePayment):
(WebCore::ApplePaySession::didSelectShippingContact):
* Modules/applepay/ApplePaySession.h:
* Modules/applepay/ApplePayShippingContactSelectedEvent.cpp:
(WebCore::ApplePayShippingContactSelectedEvent::ApplePayShippingContactSelectedEvent):
* Modules/applepay/ApplePayShippingContactSelectedEvent.h:
* Modules/applepay/Payment.h:
* Modules/applepay/PaymentContact.h:
* Modules/applepay/PaymentCoordinator.cpp:
(WebCore::PaymentCoordinator::supportsVersion const):
(WebCore::PaymentCoordinator::supportsVersion): Deleted.
* Modules/applepay/PaymentCoordinator.h:
* Modules/applepay/PaymentSession.h:
* Modules/applepay/cocoa/PaymentCocoa.mm:
(WebCore::convert):
(WebCore::Payment::toApplePayPayment const):
* Modules/applepay/cocoa/PaymentContactCocoa.mm:
(WebCore::convert):
(WebCore::PaymentContact::toApplePayPaymentContact const):
* Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp:
(WebCore::ApplePayPaymentHandler::document const):
(WebCore::ApplePayPaymentHandler::paymentCoordinator const):
(WebCore::ApplePayPaymentHandler::version const):
(WebCore::ApplePayPaymentHandler::didAuthorizePayment):
(WebCore::ApplePayPaymentHandler::didSelectShippingContact):
(WebCore::ApplePayPaymentHandler::document): Deleted.
(WebCore::ApplePayPaymentHandler::paymentCoordinator): Deleted.
* Modules/applepay/paymentrequest/ApplePayPaymentHandler.h:

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

21 months ago[Attachment Support] The 'webkitattachmentbloburl' attribute should not persist after...
wenson_hsieh@apple.com [Tue, 19 Dec 2017 05:38:47 +0000 (05:38 +0000)]
[Attachment Support] The 'webkitattachmentbloburl' attribute should not persist after markup serialization
https://bugs.webkit.org/show_bug.cgi?id=180924
<rdar://problem/36099093>

Reviewed by Tim Horton.

Source/WebCore:

Work towards dragging Blob-backed attachment elements as files on iOS and Mac. It doesn't make sense for the
attachment blob URL to stick around on the element after markup serialization, so this patch removes logic that
eagerly sets the blob URL upon setting an attachment's File. Instead, we just append this attribute when
generating markup.

This patch also augments existing WKAttachmentTests to ensure that these attributes are not present.

* editing/markup.cpp:
(WebCore::StyledMarkupAccumulator::appendCustomAttributes):
(WebCore::createFragmentFromMarkup):
* html/HTMLAttachmentElement.cpp:
(WebCore::HTMLAttachmentElement::setFile):
* rendering/HitTestResult.cpp:

Fixes a related issue where an attachment is backed by Blob data (and not a file path) would specify "file:///"
as its attachment file path in DragController when starting a drag. Instead, if there is no file path, fall back
to the blob URL.

This will be tested in a future patch once a WK2 dragging simulator for Mac is implemented, and support for
dragging out Blob-backed attachments as (platform) files is implemented.

(WebCore::HitTestResult::absoluteAttachmentURL const):

Tools:

Tweaks some existing tests to check that temporary attachment serialization attributes don't stick around on the
attachment elements.

* TestWebKitAPI/Tests/WebKitCocoa/WKAttachmentTests.mm:
(-[TestWKWebView hasAttribute:forQuerySelector:]):
(TestWebKitAPI::TEST):

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

21 months agoDefault scope used when registering a service worker is wrong
cdumez@apple.com [Tue, 19 Dec 2017 05:08:52 +0000 (05:08 +0000)]
Default scope used when registering a service worker is wrong
https://bugs.webkit.org/show_bug.cgi?id=180961

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

Rebaseline WPT test now that more checks are passing.

* web-platform-tests/service-workers/service-worker/register-default-scope.https-expected.txt:

Source/WebCore:

The default scope we used when registering a service worker was wrong, it did not match:
- https://w3c.github.io/ServiceWorker/#start-register (Step 4)

This patch aligns our behavior with the specification.

No new tests, rebaselined existing test.

* workers/service/ServiceWorkerContainer.cpp:
(WebCore::ServiceWorkerContainer::addRegistration):

LayoutTests:

Update / Rebaseline WebKit tests due to behavior change.

* http/tests/workers/service/basic-register-exceptions-expected.txt:
* http/tests/workers/service/basic-unregister.https-expected.txt:
* http/tests/workers/service/resources/basic-unregister.js:
(async.test):
* http/tests/workers/service/resources/service-worker-getRegistration.js:
(async.test):
* http/tests/workers/service/self_registration-expected.txt:
* http/tests/workers/service/service-worker-clear.html:

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

21 months agoAssertion hit in DocumentOrderedMap::get while removing a form element
rniwa@webkit.org [Tue, 19 Dec 2017 04:32:43 +0000 (04:32 +0000)]
Assertion hit in DocumentOrderedMap::get while removing a form element
https://bugs.webkit.org/show_bug.cgi?id=137959
<rdar://problem/27702012>

Reviewed by Brent Fulgham.

Source/WebCore:

The assertion failure was caused by FormAssociatedElement::findAssociatedForm calling TreeScope::getElementById
for a form associated element inside FormAttributeTargetObserver::idTargetChanged during the removal of
the owner form element, or the first non-form element with the matching ID. If there are other elements with
the same ID in the removed tree at that moment, MapEntry's count for the ID can be higher than it needs to be
since Element::removedFromAncestor has not been called on those elements yet.

Fixed the bug by checking this condition explicitly. This patch introduces ContainerChildRemovalScope which
keeps track of the container node from which a subtree was removed as well as the root of the removed subtree.
DocumentOrderedMap::get then checks whether the matching element can be found in this removed subtree, and its
isConnected() still returns true (the evidence that Element::removedFromAncestor has not been called) when
count > 0 and there was no matching element in the tree scope.

In the long term, we should refactor the way FormAssociatedElement and HTMLFormElement refers to each other
and avoid calling DocumentOrderedMap::get before finish calling removedFromAncestor on the removed subtree.

Tests: fast/forms/update-form-owner-in-moved-subtree-assertion-failure-5.html
       fast/forms/update-form-owner-in-moved-subtree-assertion-failure-6.html

* dom/ContainerNodeAlgorithms.cpp:
(WebCore::notifyChildNodeRemoved):
* dom/ContainerNodeAlgorithms.h:
(WebCore::ContainerChildRemovalScope): Added.
(WebCore::ContainerChildRemovalScope::ContainerChildRemovalScope):
(WebCore::ContainerChildRemovalScope::~ContainerChildRemovalScope):
(WebCore::ContainerChildRemovalScope::parentOfRemovedTree):
(WebCore::ContainerChildRemovalScope::removedChild):
(WebCore::ContainerChildRemovalScope::currentScope):
* dom/DocumentOrderedMap.cpp:
(WebCore::DocumentOrderedMap::get const): Added a special early exit when this function is called during
a node removal.

LayoutTests:

Added regression tests for removing a subtree with a form associated element, its owner form element
and another element with the same ID.

* fast/forms/update-form-owner-in-moved-subtree-assertion-failure-5-expected.txt: Added.
* fast/forms/update-form-owner-in-moved-subtree-assertion-failure-5.html: Added.
* fast/forms/update-form-owner-in-moved-subtree-assertion-failure-6-expected.txt: Added.
* fast/forms/update-form-owner-in-moved-subtree-assertion-failure-6.html: Added.

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