WebKit-https.git
4 months agoPlacate exception check validation in constructJSWebAssemblyLinkError().
mark.lam@apple.com [Fri, 22 Mar 2019 17:21:37 +0000 (17:21 +0000)]
Placate exception check validation in constructJSWebAssemblyLinkError().
https://bugs.webkit.org/show_bug.cgi?id=196152
<rdar://problem/49145257>

Reviewed by Michael Saboff.

JSTests:

* stress/web-assembly-link-error-exception-check.js: Added.

Source/JavaScriptCore:

* wasm/js/WebAssemblyLinkErrorConstructor.cpp:
(JSC::constructJSWebAssemblyLinkError):

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

4 months ago[ iOS Simulator] REGRESSION (r241821) Layout Test platform/ipad/fast/viewport/viewpor...
cdumez@apple.com [Fri, 22 Mar 2019 17:02:13 +0000 (17:02 +0000)]
[ iOS Simulator] REGRESSION (r241821) Layout Test platform/ipad/fast/viewport/viewport-unchanged-by-minimum-effective-width-if-not-ignore-meta-viewport.html is a flaky failure on bots
https://bugs.webkit.org/show_bug.cgi?id=195348
<rdar://problem/48622090>

Reviewed by Alex Christensen.

Make sure webView.configuration.preferences._shouldIgnoreMetaViewport gets reset
to NO when test.options().shouldIgnoreMetaViewport is false.

* WebKitTestRunner/ios/TestControllerIOS.mm:
(WTR::TestController::platformConfigureViewForTest):

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

4 months agoPrewarmed processes should be usable with any website data store
cdumez@apple.com [Fri, 22 Mar 2019 17:01:14 +0000 (17:01 +0000)]
Prewarmed processes should be usable with any website data store
https://bugs.webkit.org/show_bug.cgi?id=196104

Reviewed by Alex Christensen.

Source/WebKit:

Split WebsiteDataStore-specific data out of WebProcessCreationParameters and into a new
WebProcessDataStoreParameters struct so that we do not need a WebsiteDataStore in order
to lauch and initialize a WebProcess. When the process finally gets used and we thus
know which WebsiteDataStore they will be used for, we send the WebProcessDataStoreParameters
to the process to that it can do its data store-specific initialization.

This allows prewarmed processes not not have a WebsiteDataStore assocated with them. They
can then be used for any WebsiteDataStore when we need them.

This is also used by our dummy WebProcessProxy since it does not have a backing process and
thus has no associated WebsiteDataStore.

* Shared/WebProcessCreationParameters.cpp:
(WebKit::WebProcessCreationParameters::encode const):
(WebKit::WebProcessCreationParameters::decode):
* Shared/WebProcessCreationParameters.h:
* Shared/WebProcessDataStoreParameters.h: Added.
(WebKit::WebProcessDataStoreParameters::encode const):
(WebKit::WebProcessDataStoreParameters::decode):
* UIProcess/API/C/WKContext.cpp:
(WKContextWarmInitialProcess):
* UIProcess/API/Cocoa/WKProcessPool.mm:
(-[WKProcessPool _warmInitialProcess]):
* UIProcess/ServiceWorkerProcessProxy.cpp:
(WebKit::ServiceWorkerProcessProxy::ServiceWorkerProcessProxy):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::notifyProcessPoolToPrewarm):
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::establishWorkerContextConnectionToNetworkProcess):
(WebKit::WebProcessPool::createNewWebProcess):
(WebKit::WebProcessPool::tryTakePrewarmedProcess):
(WebKit::WebProcessPool::sendWebProcessDataStoreParameters):
(WebKit::WebProcessPool::initializeNewWebProcess):
(WebKit::WebProcessPool::prewarmProcess):
(WebKit::WebProcessPool::processForRegistrableDomain):
(WebKit::WebProcessPool::createWebPage):
(WebKit::WebProcessPool::didReachGoodTimeToPrewarm):
* UIProcess/WebProcessPool.h:
(WebKit::WebProcessPool::sendToOneProcess):
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::create):
(WebKit::WebProcessProxy::WebProcessProxy):
(WebKit::WebProcessProxy::setWebsiteDataStore):
(WebKit::WebProcessProxy::addExistingWebPage):
* UIProcess/WebProcessProxy.h:
(WebKit::WebProcessProxy::websiteDataStore const):
* WebKit.xcodeproj/project.pbxproj:
* WebProcess/MediaCache/WebMediaKeyStorageManager.cpp:
(WebKit::WebMediaKeyStorageManager::setWebsiteDataStore):
* WebProcess/MediaCache/WebMediaKeyStorageManager.h:
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::initializeWebProcess):
(WebKit::WebProcess::setWebsiteDataStoreParameters):
* WebProcess/WebProcess.h:
* WebProcess/WebProcess.messages.in:
* WebProcess/WebProcessSupplement.h:
(WebKit::WebProcessSupplement::initialize):
(WebKit::WebProcessSupplement::setWebsiteDataStore):
* WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::platformInitializeWebProcess):
(WebKit::WebProcess::platformSetWebsiteDataStoreParameters):
* WebProcess/win/WebProcessWin.cpp:
(WebKit::WebProcess::platformInitializeWebProcess):
(WebKit::WebProcess::platformSetWebsiteDataStoreParameters):

Tools:

Add API test coverage.

* TestWebKitAPI/Tests/WebKitCocoa/ProcessPreWarming.mm:
(runInitialWarmedProcessUsedTest):
(TEST):

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

4 months agoUnreviewed, rolling out r243356.
ryanhaddad@apple.com [Fri, 22 Mar 2019 16:54:54 +0000 (16:54 +0000)]
Unreviewed, rolling out r243356.

Causes assertion failures with WebGL layout tests on macOS and
iOS.

Reverted changeset:

"Web Inspector: Safari Canvas Inspector seems to show the
canvas being rendered twice per frame."
https://bugs.webkit.org/show_bug.cgi?id=196082
https://trac.webkit.org/changeset/243356

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

4 months agoFix the build after r243354
timothy_horton@apple.com [Fri, 22 Mar 2019 16:42:07 +0000 (16:42 +0000)]
Fix the build after r243354

* wtf/Platform.h:

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

4 months agoREGRESSION (r242687): Flicker when pinch-zooming pages in macOS Safari
simon.fraser@apple.com [Fri, 22 Mar 2019 16:38:57 +0000 (16:38 +0000)]
REGRESSION (r242687): Flicker when pinch-zooming pages in macOS Safari
https://bugs.webkit.org/show_bug.cgi?id=196126
rdar://problem/49095791

Reviewed by Antti Koivisto.

The scrolling tree doesn't have an accurate picture of the main view's scroll position
during pinch-zooming, so don't have it apply layer positions if a transient zoom is
in progress.

* WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
* WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
(WebKit::TiledCoreAnimationDrawingArea::flushLayers):
(WebKit::TiledCoreAnimationDrawingArea::applyTransientZoomToPage):

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

4 months agoHandle UI side hit testing for ScrollPositioningBehavior::Stationary positioned nodes
antti@apple.com [Fri, 22 Mar 2019 16:28:55 +0000 (16:28 +0000)]
Handle UI side hit testing for ScrollPositioningBehavior::Stationary positioned nodes
https://bugs.webkit.org/show_bug.cgi?id=196100
<rdar://problem/49117933>

Reviewed by Simon Fraser.

Source/WebCore:

Test: fast/scrolling/ios/overflow-scroll-overlap-6.html

* page/scrolling/ScrollingTree.cpp:
(WebCore::ScrollingTree::commitTreeState):
* page/scrolling/ScrollingTree.h:
(WebCore::ScrollingTree::positionedNodesWithRelatedOverflow):

Add a separate map of positioned node ids for easy access.

* page/scrolling/cocoa/ScrollingTreePositionedNode.h:
(WebCore::ScrollingTreePositionedNode::scrollPositioningBehavior const):
(WebCore::ScrollingTreePositionedNode::relatedOverflowScrollingNodes const):
* page/scrolling/cocoa/ScrollingTreePositionedNode.mm:
(WebCore::ScrollingTreePositionedNode::commitStateBeforeChildren):

Source/WebKit:

Test: fast/scrolling/ios/overflow-scroll-overlap-6.html

* UIProcess/RemoteLayerTree/RemoteLayerTreeNode.h:
(WebKit::RemoteLayerTreeNode::relatedScrollContainerIDs const):
(WebKit::RemoteLayerTreeNode::relatedScrollContainerPositioningBehavior const):

Make more generic and save the associated positioning behavior.

(WebKit::RemoteLayerTreeNode::nonAncestorScrollContainerIDs const): Deleted.
(WebKit::RemoteLayerTreeNode::addNonAncestorScrollContainerID): Deleted.
(WebKit::RemoteLayerTreeNode::clearNonAncestorScrollContainerIDs): Deleted.
* UIProcess/RemoteLayerTree/RemoteLayerTreeNode.mm:
(WebKit::RemoteLayerTreeNode::setRelatedScrollContainerBehaviorAndIDs):
* UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.h:
* UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.mm:
(WebKit::isScrolledBy):

Stationary relationship means the layer won't scroll the scroller.

* UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm:
(WebKit::RemoteScrollingCoordinatorProxy::establishLayerTreeScrollingRelations):

LayoutTests:

* fast/scrolling/ios/overflow-scroll-overlap-6-expected.txt: Added.
* fast/scrolling/ios/overflow-scroll-overlap-6.html: Added.

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

4 months agoREGRESSION (r243094): ePub files do not render or open in Books
cdumez@apple.com [Fri, 22 Mar 2019 16:27:14 +0000 (16:27 +0000)]
REGRESSION (r243094): ePub files do not render or open in Books
https://bugs.webkit.org/show_bug.cgi?id=196119
<rdar://problem/49121686>

Reviewed by Brady Eidson.

Do not delay the WebProcess launch until a load when contructing a web view and the client
may observe when its injected bundle is loaded via WKProcessGroupDelegate's
didCreateConnectionToWebProcessPlugIn.

* UIProcess/API/Cocoa/WKProcessGroup.mm:
(-[WKProcessGroup setDelegate:]):
* UIProcess/WebInspectorUtilities.cpp:
(WebKit::inspectorProcessPool):
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::createWebPage):
* UIProcess/WebProcessPool.h:

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

4 months agoREGRESSION(r243094): Automation: browser crash in WebAutomationSession::exitFullscree...
commit-queue@webkit.org [Fri, 22 Mar 2019 16:03:31 +0000 (16:03 +0000)]
REGRESSION(r243094): Automation: browser crash in WebAutomationSession::exitFullscreenWindowForPage()
https://bugs.webkit.org/show_bug.cgi?id=196140

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2019-03-22
Reviewed by Chris Dumez.

Since r243094, the WebPageProxy fullscreen manager is not created in the constructor, but once the page has a
process launched.

* UIProcess/Automation/WebAutomationSession.cpp:
(WebKit::WebAutomationSession::exitFullscreenWindowForPage): Null check WebPageProxy::fullScreenManager() before
using it.

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

4 months agoUnreviewed test gardening of plugin tests
simon.fraser@apple.com [Fri, 22 Mar 2019 15:54:54 +0000 (15:54 +0000)]
Unreviewed test gardening of plugin tests
https://bugs.webkit.org/show_bug.cgi?id=196150

For reasons unknown, my machine and bots produce different results for these plug-in tests.
My machine behaves like the test plug-in does not exist.

* platform/mac-wk1/compositing/plugins/composited-plugin-expected.txt: Removed.
* platform/mac-wk1/compositing/plugins/no-backing-store-expected.txt: Removed.
* platform/mac-wk1/compositing/plugins/small-to-large-composited-plugin-expected.txt: Removed.

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

4 months agoChange macosx() to macos() in WK_API... and JSC_API... macros.
timothy@apple.com [Fri, 22 Mar 2019 15:45:13 +0000 (15:45 +0000)]
Change macosx() to macos() in WK_API... and JSC_API... macros.
https://bugs.webkit.org/show_bug.cgi?id=196106

Reviewed by Brian Burg.

Source/JavaScriptCore:

* API/JSBasePrivate.h:
* API/JSContext.h:
* API/JSContextPrivate.h:
* API/JSContextRef.h:
* API/JSContextRefInternal.h:
* API/JSContextRefPrivate.h:
* API/JSManagedValue.h:
* API/JSObjectRef.h:
* API/JSObjectRefPrivate.h:
* API/JSRemoteInspector.h:
* API/JSScript.h:
* API/JSTypedArray.h:
* API/JSValue.h:
* API/JSValuePrivate.h:
* API/JSValueRef.h:
* API/JSVirtualMachinePrivate.h:

Source/WebCore/PAL:

* pal/spi/cocoa/NSTouchBarSPI.h:

Source/WebKit:

* Shared/API/Cocoa/WKBrowsingContextHandle.h:
* Shared/API/Cocoa/WKDragDestinationAction.h:
* Shared/API/Cocoa/WKMain.h:
* Shared/API/Cocoa/_WKFrameHandle.h:
* Shared/API/Cocoa/_WKHitTestResult.h:
* Shared/API/Cocoa/_WKNSWindowExtras.h:
* Shared/API/Cocoa/_WKRemoteObjectInterface.h:
* Shared/API/Cocoa/_WKRemoteObjectRegistry.h:
* Shared/API/Cocoa/_WKRenderingProgressEvents.h:
* Shared/API/Cocoa/_WKSameDocumentNavigationType.h:
* UIProcess/API/C/WKPage.h:
* UIProcess/API/Cocoa/NSAttributedString.h:
* UIProcess/API/Cocoa/WKBackForwardList.h:
* UIProcess/API/Cocoa/WKBackForwardListItem.h:
* UIProcess/API/Cocoa/WKBackForwardListItemPrivate.h:
* UIProcess/API/Cocoa/WKBrowsingContextLoadDelegate.h:
* UIProcess/API/Cocoa/WKContentRuleList.h:
* UIProcess/API/Cocoa/WKContentRuleListStore.h:
* UIProcess/API/Cocoa/WKError.h:
* UIProcess/API/Cocoa/WKErrorPrivate.h:
* UIProcess/API/Cocoa/WKFrameInfo.h:
* UIProcess/API/Cocoa/WKFrameInfoPrivate.h:
* UIProcess/API/Cocoa/WKHTTPCookieStore.h:
* UIProcess/API/Cocoa/WKMenuItemIdentifiersPrivate.h:
* UIProcess/API/Cocoa/WKNavigation.h:
* UIProcess/API/Cocoa/WKNavigationAction.h:
* UIProcess/API/Cocoa/WKNavigationActionPrivate.h:
* UIProcess/API/Cocoa/WKNavigationDelegate.h:
* UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h:
* UIProcess/API/Cocoa/WKNavigationResponse.h:
* UIProcess/API/Cocoa/WKOpenPanelParameters.h:
* UIProcess/API/Cocoa/WKOpenPanelParametersPrivate.h:
* UIProcess/API/Cocoa/WKPreferences.h:
* UIProcess/API/Cocoa/WKPreferencesPrivate.h:
* UIProcess/API/Cocoa/WKProcessPool.h:
* UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
* UIProcess/API/Cocoa/WKScriptMessage.h:
* UIProcess/API/Cocoa/WKSecurityOrigin.h:
* UIProcess/API/Cocoa/WKSnapshotConfiguration.h:
* UIProcess/API/Cocoa/WKUIDelegate.h:
* UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
* UIProcess/API/Cocoa/WKURLSchemeHandler.h:
* UIProcess/API/Cocoa/WKURLSchemeTask.h:
* UIProcess/API/Cocoa/WKURLSchemeTaskPrivate.h:
* UIProcess/API/Cocoa/WKUserContentController.h:
* UIProcess/API/Cocoa/WKUserContentControllerPrivate.h:
* UIProcess/API/Cocoa/WKUserScript.h:
* UIProcess/API/Cocoa/WKUserScriptPrivate.h:
* UIProcess/API/Cocoa/WKViewPrivate.h:
* UIProcess/API/Cocoa/WKWebView.h:
* UIProcess/API/Cocoa/WKWebViewConfiguration.h:
* UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
* UIProcess/API/Cocoa/WKWebViewPrivate.h:
* UIProcess/API/Cocoa/WKWebsiteDataRecord.h:
* UIProcess/API/Cocoa/WKWebsiteDataRecordPrivate.h:
* UIProcess/API/Cocoa/WKWebsiteDataStore.h:
* UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
* UIProcess/API/Cocoa/WKWindowFeatures.h:
* UIProcess/API/Cocoa/WKWindowFeaturesPrivate.h:
* UIProcess/API/Cocoa/_WKActivatedElementInfo.h:
* UIProcess/API/Cocoa/_WKApplicationManifest.h:
* UIProcess/API/Cocoa/_WKAttachment.h:
* UIProcess/API/Cocoa/_WKAutomationDelegate.h:
* UIProcess/API/Cocoa/_WKAutomationSession.h:
* UIProcess/API/Cocoa/_WKAutomationSessionConfiguration.h:
* UIProcess/API/Cocoa/_WKAutomationSessionDelegate.h:
* UIProcess/API/Cocoa/_WKContextMenuElementInfo.h:
* UIProcess/API/Cocoa/_WKDiagnosticLoggingDelegate.h:
* UIProcess/API/Cocoa/_WKDownload.h:
* UIProcess/API/Cocoa/_WKDownloadDelegate.h:
* UIProcess/API/Cocoa/_WKElementAction.h:
* UIProcess/API/Cocoa/_WKExperimentalFeature.h:
* UIProcess/API/Cocoa/_WKFindOptions.h:
* UIProcess/API/Cocoa/_WKFocusedElementInfo.h:
* UIProcess/API/Cocoa/_WKFormInputSession.h:
* UIProcess/API/Cocoa/_WKFullscreenDelegate.h:
* UIProcess/API/Cocoa/_WKGeolocationCoreLocationProvider.h:
* UIProcess/API/Cocoa/_WKInspector.h:
* UIProcess/API/Cocoa/_WKInspectorWindow.h:
* UIProcess/API/Cocoa/_WKInternalDebugFeature.h:
* UIProcess/API/Cocoa/_WKLayoutMode.h:
* UIProcess/API/Cocoa/_WKLinkIconParameters.h:
* UIProcess/API/Cocoa/_WKOverlayScrollbarStyle.h:
* UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
* UIProcess/API/Cocoa/_WKRemoteWebInspectorViewController.h:
* UIProcess/API/Cocoa/_WKSessionState.h:
* UIProcess/API/Cocoa/_WKTextInputContext.h:
* UIProcess/API/Cocoa/_WKThumbnailView.h:
* UIProcess/API/Cocoa/_WKUserContentExtensionStore.h:
* UIProcess/API/Cocoa/_WKUserContentExtensionStorePrivate.h:
* UIProcess/API/Cocoa/_WKUserContentFilter.h:
* UIProcess/API/Cocoa/_WKUserContentFilterPrivate.h:
* UIProcess/API/Cocoa/_WKUserContentWorld.h:
* UIProcess/API/Cocoa/_WKUserInitiatedAction.h:
* UIProcess/API/Cocoa/_WKUserStyleSheet.h:
* UIProcess/API/Cocoa/_WKVisitedLinkStore.h:
* UIProcess/API/Cocoa/_WKWebsiteDataSize.h:
* UIProcess/API/Cocoa/_WKWebsiteDataStore.h:
* UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h:
* UIProcess/API/Cocoa/_WKWebsiteDataStoreDelegate.h:
* UIProcess/API/Cocoa/_WKWebsitePolicies.h:
* WebProcess/API/Cocoa/WKWebProcess.h:
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInEditingDelegate.h:
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.h:
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInHitTestResult.h:
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.h:
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandlePrivate.h:
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInPageGroup.h:
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInRangeHandle.h:
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorld.h:
* WebProcess/InjectedBundle/API/mac/WKDOMDocument.h:
* WebProcess/InjectedBundle/API/mac/WKDOMElement.h:
* WebProcess/InjectedBundle/API/mac/WKDOMNode.h:
* WebProcess/InjectedBundle/API/mac/WKDOMRange.h:
* WebProcess/InjectedBundle/API/mac/WKDOMText.h:
* WebProcess/InjectedBundle/API/mac/WKDOMTextIterator.h:
* WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.h:
* WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.h:
* WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextControllerPrivate.h:

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

4 months agoUnreviewed build fix.
yousuke.kimoto@sony.com [Fri, 22 Mar 2019 13:49:45 +0000 (13:49 +0000)]
Unreviewed build fix.

* UIProcess/WebsiteData/WebsiteDataStore.cpp:

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

4 months ago[Web Animations] com.apple.WebKit.WebContent.Development at com.apple.WebCore: WebCor...
commit-queue@webkit.org [Fri, 22 Mar 2019 13:46:56 +0000 (13:46 +0000)]
[Web Animations] com.apple.WebKit.WebContent.Development at com.apple.WebCore: WebCore::WebAnimation::timeToNextTick const + 757
https://bugs.webkit.org/show_bug.cgi?id=196125
<rdar://problem/46520059>

Patch by Antoine Quint <graouts@apple.com> on 2019-03-22
Reviewed by Dean Jackson.

Because of floating point math in playState() that wouldn't account for timeEpsilon, we would get into a state where the animation phase
was "after" but the play state was "running" when the current time was about a microsecond away from the active time boundary. This meant
that the early return statement in WebAnimation::timeToNextTick() would not be hit while we would not handle the possibility of being in
the "after" phase in the rest of the function, therefore eventually hitting the ASSERT_NOT_REACHED() at the end of the function.

We now account for timeEpsilon in playState() and correctly report we're in the "finished" play state when in the "after" phase also.

* animation/WebAnimation.cpp:
(WebCore::WebAnimation::playState const):

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

4 months agoBack out local changes to Alex's Subversion working directory
ddkilzer@apple.com [Fri, 22 Mar 2019 12:56:32 +0000 (12:56 +0000)]
Back out local changes to Alex's Subversion working directory

They were accidentally committed.

* Scripts/webkitpy/common/system/abstractexecutive.py:
(AbstractExecutive.wait_newest):
* Scripts/webkitpy/common/system/executive.py:
(Executive.running_pids):
* Scripts/webkitpy/common/system/executive_mock.py:
(MockExecutive.running_pids):
* Scripts/webkitpy/common/system/executive_unittest.py:
(ExecutiveTest.serial_test_running_pids):
* Scripts/webkitpy/port/darwin.py:
(DarwinPort.check_for_leaks):
* Scripts/webkitpy/port/leakdetector.py:
(LeakDetector.check_for_leaks):
- This was the hack attached to Bug 193772.

* WebKitTestRunner/mac/WebKitTestRunnerEvent.mm:
(+[WebKitTestRunnerEvent mouseLocation]):
- This works around a crash on an internal build.

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

4 months ago[MSE][GStreamer] Don't construct segments on PlaybackPipeline::flush
aboya@igalia.com [Fri, 22 Mar 2019 12:22:23 +0000 (12:22 +0000)]
[MSE][GStreamer] Don't construct segments on PlaybackPipeline::flush
https://bugs.webkit.org/show_bug.cgi?id=195867

Reviewed by Xabier Rodriguez-Calvar.

LayoutTests/imported/w3c:

These tests check that video and audio are roughly in sync with each
other and with the reported player position during MSE playback.

* web-platform-tests/media-source/mediasource-correct-frames-after-reappend-expected.txt: Added.
* web-platform-tests/media-source/mediasource-correct-frames-after-reappend.html: Added.
* web-platform-tests/media-source/mediasource-correct-frames-expected.txt: Added.
* web-platform-tests/media-source/mediasource-correct-frames.html: Added.
* web-platform-tests/media-source/mp4/test-boxes-audio.mp4: Added.
* web-platform-tests/media-source/mp4/test-boxes-video.mp4: Added.

Source/WebCore:

The previous approach did not really work for flushes on only one
branch, as setting reset-time in FLUSH_STOP affects the running time
of the entire pipeline, causing timing issues in the other branch.

Since it's preferable not to interfere with the other branch if
possible, setting reset-time to FALSE fixes that problem.

Also, it's not necessary to fabricate a segment. Since we are not
seeking, only the base needs to be adjusted, and gstbasesrc already
handles this correctly by default.

This fixes an audio/video synchronization bug in YT when some
automatic quality changes occur.

Tests: imported/w3c/web-platform-tests/media-source/mediasource-correct-frames-after-reappend.html
       imported/w3c/web-platform-tests/media-source/mediasource-correct-frames.html

* platform/graphics/gstreamer/mse/PlaybackPipeline.cpp:
(WebCore::PlaybackPipeline::flush):

LayoutTests:

Drawing an MSE video in a canvas seems to be failing in Mac. That
functionality is necessary for the tests introduced with this patch,
therefore they fail there. Marking them as Skip.

* platform/mac/TestExpectations:

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

4 months agoMove implementation of mathsize to a single place
fred.wang@free.fr [Fri, 22 Mar 2019 10:03:57 +0000 (10:03 +0000)]
Move implementation of mathsize to a single place
https://bugs.webkit.org/show_bug.cgi?id=196129

Patch by Frederic Wang <fwang@igalia.com> on 2019-03-22
Reviewed by Ryosuke Niwa.

Currently, mathsize is partially implemented in the MathML UA stylesheet and partially
implemented in the MathML DOM classes using addPropertyToPresentationAttributeStyle. This
patch moves the whole implementation to the latter place, so that it's easier to understand.
It will also allow to conditionally disable the mathsize values removed from MathML Core.

No new tests, already covered by existing tests.

* css/mathml.css: Remove mathsize rules.
* mathml/MathMLElement.cpp:
(WebCore::convertMathSizeIfNeeded): Convert "small", "normal" and "big" to the values that
used to be in the UA stylesheet. Also add a comment that we don't support all MathML lengths.
(WebCore::MathMLElement::collectStyleForPresentationAttribute): Don't skip "small", "normal"
or "big".
(WebCore::convertToPercentageIfNeeded): Renamed to convertMathSizeIfNeeded.

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

4 months agoFix the build after r243354
timothy_horton@apple.com [Fri, 22 Mar 2019 09:40:41 +0000 (09:40 +0000)]
Fix the build after r243354
https://bugs.webkit.org/show_bug.cgi?id=196138
<rdar://problem/49145951>

* wtf/Platform.h:

* TestWebKitAPI/Tests/WebKitCocoa/DocumentEditingContext.mm:
(TEST):
* TestWebKitAPI/ios/UIKitSPI.h:

* Platform/spi/ios/UIKitSPI.h:
* Shared/DocumentEditingContext.mm:
(WebKit::DocumentEditingContext::toPlatformContext):
* UIProcess/ios/WKContentViewInteraction.mm:

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

4 months agoVersioning.
bshafiei@apple.com [Fri, 22 Mar 2019 07:54:30 +0000 (07:54 +0000)]
Versioning.

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

4 months agoUnreviewed, build fix for Windows
ysuzuki@apple.com [Fri, 22 Mar 2019 07:39:47 +0000 (07:39 +0000)]
Unreviewed, build fix for Windows
https://bugs.webkit.org/show_bug.cgi?id=196122

* runtime/FunctionExecutable.cpp:

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

4 months agoSkip tests running out of memory on ARM/MIPS
dinfuehr@igalia.com [Fri, 22 Mar 2019 07:28:07 +0000 (07:28 +0000)]
Skip tests running out of memory on ARM/MIPS
https://bugs.webkit.org/show_bug.cgi?id=196131

Unreviewed. Skip test if memory is limited.

* microbenchmarks/put-by-val-direct-large-index.js:

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

4 months ago[JSC] Shrink sizeof(FunctionExecutable) by 16bytes
ysuzuki@apple.com [Fri, 22 Mar 2019 07:14:43 +0000 (07:14 +0000)]
[JSC] Shrink sizeof(FunctionExecutable) by 16bytes
https://bugs.webkit.org/show_bug.cgi?id=196122

Reviewed by Saam Barati.

This patch reduces sizeof(FunctionExecutable) by 16 bytes.

1. ScriptExecutable::m_numParametersForCall and ScriptExecutable::m_numParametersForConstruct are not used in a meaningful way. Removed them.
2. ScriptExecutable::m_lastLine and ScriptExecutable::m_endColumn can be calculated from UnlinkedFunctionExecutable. So FunctionExecutable does not need to hold it.
   This patch adds GlobalExecutable, which are non-function ScriptExecutables, and move m_lastLine and m_endColumn to this class.
3. FunctionExecutable still needs to have the feature overriding m_lastLine and m_endColumn. We move overridden data in FunctionExecutable::RareData.

* CMakeLists.txt:
* JavaScriptCore.xcodeproj/project.pbxproj:
* Sources.txt:
* bytecode/UnlinkedFunctionExecutable.cpp:
(JSC::UnlinkedFunctionExecutable::link):
* runtime/EvalExecutable.cpp:
(JSC::EvalExecutable::EvalExecutable):
* runtime/EvalExecutable.h:
* runtime/FunctionExecutable.cpp:
(JSC::FunctionExecutable::FunctionExecutable):
(JSC::FunctionExecutable::ensureRareDataSlow):
(JSC::FunctionExecutable::overrideInfo):
* runtime/FunctionExecutable.h:
* runtime/GlobalExecutable.cpp: Copied from Source/JavaScriptCore/tools/FunctionOverrides.h.
* runtime/GlobalExecutable.h: Copied from Source/JavaScriptCore/tools/FunctionOverrides.h.
(JSC::GlobalExecutable::lastLine const):
(JSC::GlobalExecutable::endColumn const):
(JSC::GlobalExecutable::recordParse):
(JSC::GlobalExecutable::GlobalExecutable):
* runtime/ModuleProgramExecutable.cpp:
(JSC::ModuleProgramExecutable::ModuleProgramExecutable):
* runtime/ModuleProgramExecutable.h:
* runtime/ProgramExecutable.cpp:
(JSC::ProgramExecutable::ProgramExecutable):
* runtime/ProgramExecutable.h:
* runtime/ScriptExecutable.cpp:
(JSC::ScriptExecutable::clearCode):
(JSC::ScriptExecutable::installCode):
(JSC::ScriptExecutable::hasClearableCode const):
(JSC::ScriptExecutable::newCodeBlockFor):
(JSC::ScriptExecutable::typeProfilingEndOffset const):
(JSC::ScriptExecutable::recordParse):
(JSC::ScriptExecutable::lastLine const):
(JSC::ScriptExecutable::endColumn const):
* runtime/ScriptExecutable.h:
(JSC::ScriptExecutable::hasJITCodeForCall const):
(JSC::ScriptExecutable::hasJITCodeForConstruct const):
(JSC::ScriptExecutable::recordParse):
(JSC::ScriptExecutable::lastLine const): Deleted.
(JSC::ScriptExecutable::endColumn const): Deleted.
* tools/FunctionOverrides.h:

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

4 months ago[JSC] Shrink sizeof(RegExpObject)
ysuzuki@apple.com [Fri, 22 Mar 2019 06:45:20 +0000 (06:45 +0000)]
[JSC] Shrink sizeof(RegExpObject)
https://bugs.webkit.org/show_bug.cgi?id=196130

Reviewed by Saam Barati.

sizeof(RegExpObject) is 48B due to one bool flag. We should compress this flag into lower bit of RegExp* field so that we can make RegExpObject 32B.
It saves memory footprint 1.3% in RAMification's regexp.

* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileNewRegexp):
(JSC::DFG::SpeculativeJIT::compileSetRegExpObjectLastIndex):
* ftl/FTLAbstractHeapRepository.h:
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileNewRegexp):
(JSC::FTL::DFG::LowerDFGToB3::compileSetRegExpObjectLastIndex):
* runtime/RegExpObject.cpp:
(JSC::RegExpObject::RegExpObject):
(JSC::RegExpObject::visitChildren):
(JSC::RegExpObject::getOwnPropertySlot):
(JSC::RegExpObject::defineOwnProperty):
* runtime/RegExpObject.h:

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

4 months ago[JSC] Fix build after r243232 on unsupported 64bit architectures
tpopela@redhat.com [Fri, 22 Mar 2019 05:56:02 +0000 (05:56 +0000)]
[JSC] Fix build after r243232 on unsupported 64bit architectures
https://bugs.webkit.org/show_bug.cgi?id=196072

Reviewed by Keith Miller.

As Keith suggested we already expect 16 free bits at the top of any
pointer for JSValue even for the unsupported 64 bit arches.

* bytecode/CodeOrigin.h:

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

4 months agoRemove the SVG tear off objects for SVGNumber, SVGNumberList and SVGAnimatedNumberList
commit-queue@webkit.org [Fri, 22 Mar 2019 04:45:26 +0000 (04:45 +0000)]
Remove the SVG tear off objects for SVGNumber, SVGNumberList and SVGAnimatedNumberList
https://bugs.webkit.org/show_bug.cgi?id=196084

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2019-03-21
Reviewed by Simon Fraser.

Source/WebCore:

To remove the tear off objects for these interfaces, we need to do the
following:

-- SVGNumber will be a superclass of SVGValueProperty<float>. It provides
   the DOM interface functions.

-- SVGNumberList will be a superclass of SVGValuePropertyList<SVGNumber>.
   It provides creation, parsing and converting to string functions.

-- SVGAnimatedNumberList will be defined as SVGAnimatedPropertyList<SVGNumberList>.

To make things work as expected:

-- Properties of type SVGAnimatedNumberList have to be registered with
   SVGPropertyOwnerRegistry.
-- An accessor, an animator and an animation function should be defined
   for SVGAnimatedNumberList.

* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* rendering/svg/SVGTextLayoutAttributesBuilder.cpp:
(WebCore::updateCharacterData):
(WebCore::SVGTextLayoutAttributesBuilder::fillCharacterDataMap):
* svg/SVGAnimatedNumberList.cpp: Removed.
* svg/SVGAnimatedNumberList.h: Removed.
* svg/SVGAnimatedPointList.cpp: Removed.
* svg/SVGAnimatedPointList.h: Removed.
* svg/SVGAnimatedType.h:
(WebCore::SVGAnimatedType::type const):
* svg/SVGAnimatorFactory.h:
(WebCore::SVGAnimatorFactory::create):
* svg/SVGComponentTransferFunctionElement.cpp:
(WebCore::SVGComponentTransferFunctionElement::SVGComponentTransferFunctionElement):
(WebCore::SVGComponentTransferFunctionElement::registerAttributes):
(WebCore::SVGComponentTransferFunctionElement::parseAttribute):
* svg/SVGComponentTransferFunctionElement.h:
(WebCore::SVGComponentTransferFunctionElement::tableValues const):
(WebCore::SVGComponentTransferFunctionElement::tableValuesAnimated):
* svg/SVGFEColorMatrixElement.cpp:
(WebCore::SVGFEColorMatrixElement::SVGFEColorMatrixElement):
(WebCore::SVGFEColorMatrixElement::registerAttributes):
(WebCore::SVGFEColorMatrixElement::parseAttribute):
(WebCore::SVGFEColorMatrixElement::build const):
* svg/SVGFEColorMatrixElement.h:
* svg/SVGFEConvolveMatrixElement.cpp:
(WebCore::SVGFEConvolveMatrixElement::SVGFEConvolveMatrixElement):
(WebCore::SVGFEConvolveMatrixElement::registerAttributes):
(WebCore::SVGFEConvolveMatrixElement::parseAttribute):
(WebCore::SVGFEConvolveMatrixElement::build const):
* svg/SVGFEConvolveMatrixElement.h:
* svg/SVGNumber.h:
(WebCore::SVGNumber::create):
(WebCore::SVGNumber::clone const):
(WebCore::SVGNumber::valueForBindings):
(WebCore::SVGNumber::setValueForBindings):
(WebCore::SVGNumber::SVGNumber): Deleted.
* svg/SVGNumberList.h:
(WebCore::SVGNumberList::create):
(WebCore::SVGNumberList::parse):
(WebCore::SVGNumberList::SVGNumberList): Deleted.
* svg/SVGNumberListValues.cpp: Removed.
* svg/SVGNumberListValues.h: Removed.
* svg/SVGTextPositioningElement.cpp:
(WebCore::SVGTextPositioningElement::SVGTextPositioningElement):
(WebCore::SVGTextPositioningElement::registerAttributes):
(WebCore::SVGTextPositioningElement::parseAttribute):
* svg/SVGTextPositioningElement.h:
(WebCore::SVGTextPositioningElement::rotate const):
(WebCore::SVGTextPositioningElement::rotateAnimated):
* svg/SVGValue.h:
* svg/properties/SVGAnimatedPropertyAccessorImpl.h:
* svg/properties/SVGAnimatedPropertyAnimatorImpl.h:
* svg/properties/SVGAnimatedPropertyImpl.h:
* svg/properties/SVGAnimationAdditiveListFunctionImpl.h:
(WebCore::SVGAnimationNumberListFunction::progress):
* svg/properties/SVGAttributeRegistry.h:
* svg/properties/SVGPropertyOwnerRegistry.h:
(WebCore::SVGPropertyOwnerRegistry::registerProperty):

LayoutTests:

* svg/dom/SVGNumberList-basics-expected.txt:
* svg/dom/SVGNumberList-basics.xhtml:
This change is required because SVGNumberList will be following the SVG2
specs regarding adding new items to the list.

See https://www.w3.org/TR/SVG/types.html#TermListInterface.

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

4 months agoWebKit1 test gardening.
simon.fraser@apple.com [Fri, 22 Mar 2019 04:44:27 +0000 (04:44 +0000)]
WebKit1 test gardening.

* platform/mac-wk1/TestExpectations:
* platform/mac-wk1/compositing/clipping/border-radius-async-overflow-clipping-layer-expected.txt: Added.
* platform/mac-wk1/compositing/layer-creation/absolute-in-async-overflow-scroll-expected.txt: Added.
* platform/mac-wk1/compositing/overflow/overflow-auto-with-touch-expected.txt: Added.
* platform/mac-wk1/compositing/overflow/overflow-auto-with-touch-toggle-expected.txt: Added.
* platform/mac-wk1/compositing/overflow/overflow-overlay-with-touch-expected.txt: Added.
* platform/mac-wk1/compositing/overflow/scrolling-content-clip-to-viewport-expected.txt: Added.
* platform/mac-wk1/compositing/overflow/textarea-scroll-touch-expected.txt: Added.
* platform/mac-wk1/compositing/plugins/composited-plugin-expected.txt: Added.
* platform/mac-wk1/compositing/plugins/no-backing-store-expected.txt: Added.
* platform/mac-wk1/compositing/plugins/small-to-large-composited-plugin-expected.txt: Added.
* platform/mac-wk1/compositing/rtl/rtl-scrolling-with-transformed-descendants-expected.txt: Added.
* platform/mac-wk1/compositing/scrolling/overflow-scrolling-layers-are-self-painting-expected.txt: Added.

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

4 months agoClean up some TiledCoreAnimationDrawingArea members
simon.fraser@apple.com [Fri, 22 Mar 2019 04:22:05 +0000 (04:22 +0000)]
Clean up some TiledCoreAnimationDrawingArea members
https://bugs.webkit.org/show_bug.cgi?id=196124

Reviewed by Tim Horton.

The giant m_transform was unused.

Group the bools etc.

* WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
* WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
(WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea):
(WebKit::TiledCoreAnimationDrawingArea::setRootCompositingLayer):

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

4 months agoREGRESSION: (r242132) tiled-drawing/scrolling/scroll-snap/scroll-snap-proximity-mainf...
simon.fraser@apple.com [Fri, 22 Mar 2019 04:15:58 +0000 (04:15 +0000)]
REGRESSION: (r242132) tiled-drawing/scrolling/scroll-snap/scroll-snap-proximity-mainframe.html is a timeout
https://bugs.webkit.org/show_bug.cgi?id=196115

Unreviewed test gardening.

Scroll snap doesn't work on macOS with async overflow scrolling, so revert the changes to these tests.

* tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-2d-overflow.html:
* tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-borders.html:

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

4 months ago'custom-configuration-test-group-form' should update test name when selected test...
dewei_zhu@apple.com [Fri, 22 Mar 2019 03:34:28 +0000 (03:34 +0000)]
'custom-configuration-test-group-form' should update test name when selected test or platform changes.
https://bugs.webkit.org/show_bug.cgi?id=196114

Reviewed by Ryosuke Niwa.

r240104 fixes commit sets unnecessarily get updated even there is no change.
However, this made changing test or platform no longer triggers 'commitSetChange' action.
Test name should change not only when 'commitSet' gets change, but also platform or test changes.
Renaming the action name from 'commitSetChange' to a more accurate description 'testConfigChange'.
Dispatch 'testConfigChange' when platform or test changes.

* browser-tests/custom-analysis-task-configurator-tests.js: Changed action name to 'commitSetChange'.
* public/v3/components/custom-analysis-task-configurator.js:
(CustomAnalysisTaskConfigurator.prototype._didUpdateSelectedPlatforms): Should dispatch 'commitSetChange' action.
(CustomAnalysisTaskConfigurator.prototype._updateCommitSetMap): Changed action name to 'commitSetChange'.
* public/v3/components/custom-configuration-test-group-form.js: Added a unit test for this change.
(CustomConfigurationTestGroupForm.prototype.didConstructShadowTree):

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

4 months agoCertain WebProcesses should opt-out of the freezer.
beidson@apple.com [Fri, 22 Mar 2019 03:00:44 +0000 (03:00 +0000)]
Certain WebProcesses should opt-out of the freezer.
<rdar://problem/42846139> and https://bugs.webkit.org/show_bug.cgi?id=196062

Reviewed by Andy Estes.

Source/bmalloc:

* bmalloc.xcodeproj/project.pbxproj:
* bmalloc/darwin/MemoryStatusSPI.h:

Source/WebKit:

WebProcesses should opt-in and opt-out of the freezer as is appropriate.
By default a WebProcess is freezer eligible.
If any of the following become true then it should become ineligible:
- The WebProcess is a pre-warmed process.
- The WebProcess is in the process cache.
- The WebProcess is not actively hosting any web pages (e.g. it only has suspending web pages)

The most complicated part of the above is guaranteeing that any operation that changes
the active pages hosted by the process causes a recalculation of the freezer opt-in state.

To do that this replaces the basic WebPageProxyMap with a custom class.

* UIProcess/WebProcessProxy.cpp:
(WebKit::globalPageMap):
(WebKit::WebProcessProxy::WebProcessProxy):
(WebKit::WebProcessProxy::validateFreezerStatus):
(WebKit::WebProcessProxy::setIsInProcessCache):
(WebKit::WebProcessProxy::markIsNoLongerInPrewarmedPool):
(WebKit::WebProcessProxy::didFinishLaunching):
* UIProcess/WebProcessProxy.h:
(WebKit::WebProcessProxy::WebPageProxyMap::WebPageProxyMap):
(WebKit::WebProcessProxy::WebPageProxyMap::size const):
(WebKit::WebProcessProxy::WebPageProxyMap::values):
(WebKit::WebProcessProxy::WebPageProxyMap::values const):
(WebKit::WebProcessProxy::WebPageProxyMap::begin):
(WebKit::WebProcessProxy::WebPageProxyMap::end):
(WebKit::WebProcessProxy::WebPageProxyMap::get):
(WebKit::WebProcessProxy::WebPageProxyMap::contains const):
(WebKit::WebProcessProxy::WebPageProxyMap::isEmpty const):
(WebKit::WebProcessProxy::WebPageProxyMap::set):
(WebKit::WebProcessProxy::WebPageProxyMap::take):

* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::setFreezable):
* WebProcess/WebProcess.h:
* WebProcess/WebProcess.messages.in:

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

4 months agoWeb Inspector: Safari Canvas Inspector seems to show the canvas being rendered twice...
drousso@apple.com [Fri, 22 Mar 2019 02:47:35 +0000 (02:47 +0000)]
Web Inspector: Safari Canvas Inspector seems to show the canvas being rendered twice per frame.
https://bugs.webkit.org/show_bug.cgi?id=196082
<rdar://problem/49113496>

Reviewed by Dean Jackson.

Source/WebCore:

Tests: inspector/canvas/recording-2d.html
       inspector/canvas/recording-bitmaprenderer.html
       inspector/canvas/recording-html-2d.html
       inspector/canvas/recording-webgl.html
       inspector/canvas/setRecordingAutoCaptureFrameCount.html

WebGL `<canvas>` follow a different "rendering" path such that `HTMLCanvasElement::paint`
isn't called. Previously, there was a 0s timer that was started after the first action of a
frame was recorded (for the case that the `<canvas>` isn't attached to the DOM) that would
automatically stop the recording. It was possible that actions in two different "frame"s
were recorded as part of the same frame, because the WebGL `<canvas>` would instead fall
back to the timer to know when the "frame" had ended.

Now, there is additional instrumentation for the WebGL specific rendering path.
Additionally, replace the 0s timer with a microtask for more "immediate" calling.

* html/HTMLCanvasElement.cpp:
(WebCore::HTMLCanvasElement::paint):
Ensure that the `InspectorInstrumentation` call is last. This matches what we expect, as
before we were instrumenting right before is it about to paint.

* platform/graphics/GraphicsContext3D.h:
(WebCore::GraphicsContext3D::Client::~Client): Added.
(WebCore::GraphicsContext3D::addClient): Added.
(WebCore::GraphicsContext3D::removeClient): Added.
(WebCore::GraphicsContext3D::setWebGLContext): Deleted.
* platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:
(WebCore::GraphicsContext3D::markLayerComposited):
(WebCore::GraphicsContext3D::forceContextLost):
(WebCore::GraphicsContext3D::recycleContext):
(WebCore::GraphicsContext3D::dispatchContextChangedNotification):
* html/canvas/WebGLRenderingContextBase.h:
* html/canvas/WebGLRenderingContextBase.cpp:
(WebCore::WebGLRenderingContextBase::WebGLRenderingContextBase):
(WebCore::WebGLRenderingContextBase::destroyGraphicsContext3D):
(WebCore::WebGLRenderingContextBase::didComposite): Added.
(WebCore::WebGLRenderingContextBase::forceContextLost):
(WebCore::WebGLRenderingContextBase::recycleContext):
(WebCore::WebGLRenderingContextBase::dispatchContextChangedNotification): Added.
(WebCore::WebGLRenderingContextBase::dispatchContextChangedEvent): Deleted.
Introduce a `GraphicsContext3DClient` abstract class, rather than passing the
`WebGLRenderingContextBase` directly to the `GraphicsContext3D` (layering violation).
Notify the client whenever the `GraphicsContext3D` composites, which will in turn notify the
`InspectorCanvasAgent` so that it knows that the "frame" is over.

* inspector/agents/InspectorCanvasAgent.h:
* inspector/agents/InspectorCanvasAgent.cpp:
(WebCore::InspectorCanvasAgent::InspectorCanvasAgent):
(WebCore::InspectorCanvasAgent::requestNode):
(WebCore::InspectorCanvasAgent::requestContent):
(WebCore::InspectorCanvasAgent::requestCSSCanvasClientNodes):
(WebCore::InspectorCanvasAgent::resolveCanvasContext):
(WebCore::InspectorCanvasAgent::startRecording):
(WebCore::InspectorCanvasAgent::stopRecording):
(WebCore::InspectorCanvasAgent::requestShaderSource):
(WebCore::InspectorCanvasAgent::updateShader):
(WebCore::InspectorCanvasAgent::setShaderProgramDisabled):
(WebCore::InspectorCanvasAgent::setShaderProgramHighlighted):
(WebCore::InspectorCanvasAgent::didChangeCSSCanvasClientNodes):
(WebCore::InspectorCanvasAgent::didChangeCanvasMemory):
(WebCore::InspectorCanvasAgent::recordCanvasAction):
(WebCore::InspectorCanvasAgent::canvasDestroyed):
(WebCore::InspectorCanvasAgent::didFinishRecordingCanvasFrame):
(WebCore::InspectorCanvasAgent::consoleStartRecordingCanvas):
(WebCore::InspectorCanvasAgent::didEnableExtension):
(WebCore::InspectorCanvasAgent::didCreateProgram):
(WebCore::InspectorCanvasAgent::willDeleteProgram):
(WebCore::InspectorCanvasAgent::isShaderProgramDisabled):
(WebCore::InspectorCanvasAgent::isShaderProgramHighlighted):
(WebCore::InspectorCanvasAgent::clearCanvasData):
(WebCore::InspectorCanvasAgent::assertInspectorCanvas):
(WebCore::InspectorCanvasAgent::findInspectorCanvas):
(WebCore::InspectorCanvasAgent::assertInspectorProgram):
(WebCore::InspectorCanvasAgent::findInspectorProgram):
(WebCore::InspectorCanvasAgent::canvasRecordingTimerFired): Deleted.
Replace raw pointers with `RefPtr`s. This is primarily used so that the microtask (instead
of a timer) that is enqueued after the first action of each frame  is recorded can access a
ref-counted instance of an `InspectorCanvas`, ensuring that it isn't destructed.

* inspector/InspectorCanvas.h:
* inspector/InspectorCanvas.cpp:
(WebCore::InspectorCanvas::canvasElement):
(WebCore::InspectorCanvas::recordAction):
(WebCore::InspectorCanvas::finalizeFrame):
(WebCore::InspectorCanvas::releaseObjectForRecording): Added.
(WebCore::InspectorCanvas::getCanvasContentAsDataURL):
(WebCore::InspectorCanvas::appendActionSnapshotIfNeeded):
(WebCore::InspectorCanvas::buildInitialState):
(WebCore::InspectorCanvas::releaseInitialState): Deleted.
(WebCore::InspectorCanvas::releaseFrames): Deleted.
(WebCore::InspectorCanvas::releaseData): Deleted.
Move the recording payload construction logic to `InspectorCanvas` so the actual data
doesn't need to leave that class.
Drive-by: unify the logic for getting the contents of a canvas from `InspectorCanvasAgent`.
LayoutTests:

* inspector/canvas/recording-2d.html:
* inspector/canvas/recording-bitmaprenderer.html:
* inspector/canvas/recording-html-2d.html:
* inspector/canvas/recording-webgl.html:
* inspector/canvas/setRecordingAutoCaptureFrameCount.html:

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

4 months agoWeb Inspector: Timelines - Cannot export on about:blank - suggested filename containi...
joepeck@webkit.org [Fri, 22 Mar 2019 02:33:38 +0000 (02:33 +0000)]
Web Inspector: Timelines - Cannot export on about:blank - suggested filename containing a colon silently fails
https://bugs.webkit.org/show_bug.cgi?id=196109

Reviewed by Timothy Hatcher.

Source/WebInspectorUI:

* UserInterface/Base/FileUtilities.js:
(WI.FileUtilities.sanitizeFilename):
(WI.FileUtilities.inspectorURLForFilename):
New utility functions.

* UserInterface/Test.html:
Include FileUtilities.

* UserInterface/Base/Main.js:
* UserInterface/Controllers/AuditManager.js:
(WI.AuditManager.prototype.export):
* UserInterface/Debug/ProtocolTrace.js:
(WI.ProtocolTrace.prototype.get saveData):
(WI.ProtocolTrace):
* UserInterface/Views/ConsoleMessageView.js:
(WI.ConsoleMessageView.prototype._handleContextMenu):
(WI.ConsoleMessageView):
* UserInterface/Views/ContextMenuUtilities.js:
* UserInterface/Views/HeapSnapshotContentView.js:
(WI.HeapSnapshotContentView.prototype._exportSnapshot):
* UserInterface/Views/LogContentView.js:
(WI.LogContentView.prototype.get saveData):
(WI.LogContentView.prototype._handleContextMenuEvent):
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype._exportHAR):
* UserInterface/Views/RecordingContentView.js:
(WI.RecordingContentView.prototype._exportRecording):
(WI.RecordingContentView.prototype._exportReduction):
* UserInterface/Views/ScriptContentView.js:
(WI.ScriptContentView.prototype.get saveData):
* UserInterface/Views/ShaderProgramContentView.js:
(WI.ShaderProgramContentView.prototype.get saveData):
* UserInterface/Views/TextContentView.js:
(WI.TextContentView.prototype.get saveData):
* UserInterface/Views/TextResourceContentView.js:
(WI.TextResourceContentView.prototype.get saveData):
* UserInterface/Views/TimelineRecordingContentView.js:
(WI.TimelineRecordingContentView.prototype._exportTimelineRecording):
Update "web-inspector:///" URL building code to use the utility.

LayoutTests:

* inspector/unit-tests/file-utilities-expected.txt: Added.
* inspector/unit-tests/file-utilities.html: Added.
Tests for FileUtilities.js

* inspector/unit-tests/object-utilities.html:
* inspector/unit-tests/promise-utilities.html:

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

4 months agoAdopt UIWKDocumentContext
timothy_horton@apple.com [Fri, 22 Mar 2019 02:26:09 +0000 (02:26 +0000)]
Adopt UIWKDocumentContext
https://bugs.webkit.org/show_bug.cgi?id=196040
<rdar://problem/48642440>

Reviewed by Ryosuke Niwa.

New API test: WebKit.DocumentEditingContext

* dom/Range.h:
* editing/TextGranularity.h:
Make TextGranularity encodable by providing EnumTraits.

* editing/TextIterator.cpp:
(WebCore::plainTextReplacingNoBreakSpace):
* editing/TextIterator.h:
Expose an nbsp-replacing variant of plainText that takes Positions instead of Ranges.

* Platform/spi/ios/UIKitSPI.h:
* Scripts/webkit/messages.py:
* Shared/DocumentEditingContext.h: Added.
* Shared/DocumentEditingContext.mm: Added.
(WebKit::toNSRange):
(WebKit::DocumentEditingContext::toPlatformContext):
(IPC::ArgumentCoder<WebKit::DocumentEditingContext::Range>::encode):
(IPC::ArgumentCoder<WebKit::DocumentEditingContext::Range>::decode):
(IPC::ArgumentCoder<WebKit::DocumentEditingContext::TextRect>::encode):
(IPC::ArgumentCoder<WebKit::DocumentEditingContext::TextRect>::decode):
(IPC::ArgumentCoder<WebKit::DocumentEditingContext>::encode):
(IPC::ArgumentCoder<WebKit::DocumentEditingContext>::decode):
(IPC::ArgumentCoder<WebKit::DocumentEditingContextRequest>::encode):
(IPC::ArgumentCoder<WebKit::DocumentEditingContextRequest>::decode):
Add DocumentEditingContext(Request), and coders.
Also expose DocumentEditingContext::toPlatformContext, which populates
a UIWKDocumentContext with the relevant values.

* SourcesCocoa.txt:
* UIProcess/WebPageProxy.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(toWebDocumentRequestOptions):
(toWebRequest):
(-[WKContentView adjustSelectionWithDelta:completionHandler:]):
(-[WKContentView requestDocumentContext:completionHandler:]):
(-[WKContentView selectPositionAtPoint:withContextRequest:completionHandler:]):
* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::adjustSelectionWithDelta):
(WebKit::WebPageProxy::requestDocumentEditingContext):
* WebKit.xcodeproj/project.pbxproj:
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:
Plumb DocumentEditingContext(Request) around.

* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::adjustSelectionWithDelta):
Adjust the current selection given deltas to apply to the location and length.

(WebKit::visiblePositionAdjacentToVisiblePosition):
(WebKit::visiblePositionForPointInRootViewCoordinates):
(WebKit::WebPage::requestDocumentEditingContext):
Retrieve the relevant part of the selection, as well as the context,
given either the selection, or a rect.
If we're collecting context for a rect, we split the context between
before and after (except for the part that intersects the selection).
The three strings will always be directly adjacent, and any of the three
can sometimes be null.

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKitCocoa/DocumentEditingContext.mm: Added.
(makeRequest):
(-[TestWKWebView synchronouslyRequestDocumentContext:]):
(-[TestWKWebView synchronouslyAdjustSelectionWithDelta:]):
(applyStyle):
(TEST):
Add tests for UIWKDocumentContext.

* TestWebKitAPI/Tests/WebKitCocoa/WKContentViewEditingActions.mm:
(TEST):
(recursiveFindWKContentView): Deleted.
* TestWebKitAPI/cocoa/TestWKWebView.h:
* TestWebKitAPI/cocoa/TestWKWebView.mm:
(recursiveFindWKContentView):
(-[TestWKWebView wkContentView]):
* TestWebKitAPI/ios/UIKitSPI.h:
Share the WKContentView finding code between tests.

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

4 months ago[ Mac WK2 ] Layout Test http/tests/security/contentSecurityPolicy/block-all-mixed...
cdumez@apple.com [Fri, 22 Mar 2019 01:58:13 +0000 (01:58 +0000)]
[ Mac WK2 ] Layout Test http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-image-in-iframe-with-enforced-and-report-policies.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=194350
<rdar://problem/47937466>

Reviewed by Alex Christensen.

Bypass the HTMLPreloadScanner in the test or compass.jpg resource may end up getting loaded twice and log extra
lines in the test output.

* http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-image-in-iframe-with-enforced-and-report-policies-expected.txt:
* http/tests/security/contentSecurityPolicy/block-all-mixed-content/resources/frame-with-insecure-image-with-enforced-and-report-policies.php:
* platform/mac-wk2/TestExpectations:
* platform/wk2/http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-image-in-iframe-with-enforced-and-report-policies-expected.txt:

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

4 months agoWeb Inspector: Use CSS variables for text color in Computed panel
nvasilyev@apple.com [Fri, 22 Mar 2019 01:22:47 +0000 (01:22 +0000)]
Web Inspector: Use CSS variables for text color in Computed panel
https://bugs.webkit.org/show_bug.cgi?id=196117

Reviewed by Timothy Hatcher.

* UserInterface/Views/ComputedStyleSection.css:
(.computed-style-section):
(.computed-style-section .computed-property-item .property-trace-item .selector):
(.computed-style-section .computed-property-item .go-to-link):

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

4 months agoLong press gesture recognizers in WKWebView are conflicting with internal scroll...
commit-queue@webkit.org [Fri, 22 Mar 2019 01:03:18 +0000 (01:03 +0000)]
Long press gesture recognizers in WKWebView are conflicting with internal scroll view long press gesture recognizers
https://bugs.webkit.org/show_bug.cgi?id=195726
rdar://problem/48582449

Patch by James Magahern <jmagahern@apple.com> on 2019-03-21
Reviewed by Megan Gardner.

We just need to add another clause to WKContentViewInteraction's
canPreventGestureRecognizer whitelist.

* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView gestureRecognizer:canPreventGestureRecognizer:]):

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

4 months agoUnreviewed test gardening.
simon.fraser@apple.com [Fri, 22 Mar 2019 00:49:18 +0000 (00:49 +0000)]
Unreviewed test gardening.

Fix this test by turning on async scrolling so that mock scrollbars don't show up.

* fast/scrolling/ios/overflow-scrolling-touch-disabled-stacking-expected.html:

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

4 months agoUnreviewed test gardening.
simon.fraser@apple.com [Fri, 22 Mar 2019 00:33:55 +0000 (00:33 +0000)]
Unreviewed test gardening.

Revert some iOS layout test results that were rebaselined with async scrolling enabled.

* platform/ios-wk2/compositing/geometry/limit-layer-bounds-transformed-overflow-expected.txt: Removed.
* platform/ios-wk2/compositing/layer-creation/overflow-scroll-overlap-expected.txt: Removed.
* platform/ios-wk2/compositing/layer-creation/scroll-partial-update-expected.txt: Removed.
* platform/ios-wk2/compositing/overflow/content-gains-scrollbars-expected.txt: Removed.
* platform/ios-wk2/compositing/overflow/overflow-scroll-expected.txt:
* platform/ios-wk2/compositing/overflow/overflow-scrollbar-layer-positions-expected.txt: Removed.
* platform/ios-wk2/compositing/overflow/overflow-scrollbar-layers-expected.txt: Removed.
* platform/ios-wk2/compositing/overflow/remove-overflow-crash2-expected.txt:
* platform/ios-wk2/compositing/overflow/scrollbar-painting-expected.txt:
* platform/ios/compositing/geometry/limit-layer-bounds-clipping-ancestor-expected.txt:
* platform/ios/compositing/layers-inside-overflow-scroll-expected.txt:
* platform/ios/compositing/overflow/scroll-ancestor-update-expected.txt:
* platform/ios/compositing/reflections/nested-reflection-on-overflow-expected.txt:
* platform/ios/compositing/self-painting-layers-expected.txt:

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

4 months agoFix key path extraction code in IndexedDB to check own property
sihui_liu@apple.com [Fri, 22 Mar 2019 00:03:31 +0000 (00:03 +0000)]
Fix key path extraction code in IndexedDB to check own property
https://bugs.webkit.org/show_bug.cgi?id=196099

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Updated test expectations to PASS.

* web-platform-tests/IndexedDB/key-conversion-exceptions-expected.txt:
* web-platform-tests/IndexedDB/keygenerator-inject-expected.txt:
* web-platform-tests/IndexedDB/keypath-exceptions-expected.txt: Added.
* web-platform-tests/IndexedDB/wasm-module-value-expected.txt:

Source/WebCore:

Covered by existing tests.

* Modules/indexeddb/IDBFactory.cpp:
(WebCore::IDBFactory::cmp):
We don't need to check the second parameters if the first is already invalid.

* Modules/indexeddb/IDBKeyRange.cpp:
(WebCore::IDBKeyRange::bound):
Ditto.

* Modules/indexeddb/IDBObjectStore.cpp:
(WebCore::IDBObjectStore::putOrAdd):
we should not clear the exception during serialization because the execeptions may be explicitly thrown by parameters.

* bindings/js/IDBBindingUtilities.cpp:
(WebCore::get):
Fix implementation according to https://www.w3.org/TR/IndexedDB-2/#extract-key-from-value.

(WebCore::canInjectNthValueOnKeyPath):
Check the last identifier.

LayoutTests:

Rebaseline the tests because we will have same exception but different exception messages after the patch.

* storage/indexeddb/clone-exception-expected.txt:
* storage/indexeddb/clone-exception-private-expected.txt:
* storage/indexeddb/exceptions-expected.txt:
* storage/indexeddb/exceptions-private-expected.txt:
* storage/indexeddb/objectstore-basics-expected.txt:
* storage/indexeddb/objectstore-basics-private-expected.txt:
* storage/indexeddb/objectstore-basics-workers-expected.txt:
* storage/indexeddb/structured-clone-expected.txt:
* storage/indexeddb/structured-clone-private-expected.txt:
* storage/indexeddb/wasm-exceptions-expected.txt:

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

4 months ago[iOS WK2] Turn on async overflow scrolling by default
simon.fraser@apple.com [Thu, 21 Mar 2019 23:55:39 +0000 (23:55 +0000)]
[iOS WK2] Turn on async overflow scrolling by default
https://bugs.webkit.org/show_bug.cgi?id=196011
rdar://problem/48453859

Reviewed by Antti Koivisto.
Source/WebKit:

* Shared/WebPreferences.yaml:
* Shared/WebPreferencesDefaultValues.h:

Tools:

Explicitly turn off the async overflow scrolling internal feature for tests by default,
since so many basic layout tests have different results when compositing is triggered for
overflow.

Individual tests will re-enable with <!-- webkit-test-runner [ internal:AsyncOverflowScrollingEnabled=true ] -->.

* WebKitTestRunner/TestController.cpp:
(WTR::TestController::resetPreferencesToConsistentValues):

LayoutTests:

Explicitly turn on async overflow scrolling in any test that:
1. Used -webkit-overflow-scrolling:touch
2. Called settings.setAsyncOverflowScrollingEnabled(true)

* accessibility/ios-simulator/scroll-in-overflow-div.html:
* compositing/clipping/border-radius-async-overflow-clipping-layer.html:
* compositing/clipping/border-radius-async-overflow-non-stacking.html:
* compositing/clipping/border-radius-async-overflow-stacking.html:
* compositing/geometry/fixed-inside-overflow-scroll.html:
* compositing/ios/overflow-scroll-touch-tiles.html:
* compositing/ios/overflow-scroll-update-overlap.html:
* compositing/layer-creation/absolute-in-async-overflow-scroll.html:
* compositing/overflow/absolute-in-overflow-expected.html:
* compositing/overflow/absolute-in-overflow.html:
* compositing/overflow/clipping-ancestor-with-accelerated-scrolling-ancestor.html:
* compositing/overflow/iframe-inside-overflow-clipping.html:
* compositing/overflow/nested-scrolling.html:
* compositing/overflow/overflow-auto-with-touch-expected.txt:
* compositing/overflow/overflow-auto-with-touch-no-overflow.html:
* compositing/overflow/overflow-auto-with-touch-toggle.html:
* compositing/overflow/overflow-auto-with-touch.html:
* compositing/overflow/overflow-clip-with-accelerated-scrolling-ancestor.html:
* compositing/overflow/overflow-hidden-with-touch.html:
* compositing/overflow/overflow-overlay-with-touch-expected.txt:
* compositing/overflow/overflow-overlay-with-touch-no-overflow.html:
* compositing/overflow/overflow-overlay-with-touch.html:
* compositing/overflow/overflow-scroll-with-touch-no-overflow.html:
* compositing/overflow/overflow-scroll.html:
* compositing/overflow/overflow-visible-with-touch.html:
* compositing/overflow/remove-overflow-crash.html:
* compositing/overflow/scrolling-content-clip-to-viewport-expected.txt:
* compositing/overflow/scrolling-content-clip-to-viewport.html:
* compositing/overflow/scrolling-without-painting.html:
* compositing/overflow/should-not-override-z-index-for-element-with-non-auto-z-index-and-overflow-scroll-and-touch.html:
* compositing/overflow/subpixel-overflow.html:
* compositing/overflow/textarea-scroll-touch-expected.txt:
* compositing/overflow/textarea-scroll-touch.html:
* compositing/overflow/updating-scrolling-content.html:
* compositing/rtl/rtl-scrolling-with-transformed-descendants-expected.txt:
* compositing/rtl/rtl-scrolling-with-transformed-descendants.html:
* compositing/scrolling/fixed-inside-scroll-expected.html:
* compositing/scrolling/fixed-inside-scroll.html:
* compositing/scrolling/overflow-scrolling-layers-are-self-painting.html:
* compositing/scrolling/touch-scroll-to-clip.html:
* compositing/scrolling/touch-scrolling-repaint-expected.html:
* compositing/scrolling/touch-scrolling-repaint-spans-expected.html:
* compositing/scrolling/touch-scrolling-repaint-spans.html:
* compositing/scrolling/touch-scrolling-repaint.html:
* css3/scroll-snap/nested-elements.html:
* css3/scroll-snap/scroll-snap-children-with-overflow.html:
* css3/scroll-snap/scroll-snap-offsets.html:
* css3/scroll-snap/scroll-snap-positions.html:
* css3/scroll-snap/scroll-snap-programmatic-overflow-scroll.html:
* css3/scroll-snap/scroll-snap-style-changed-align.html:
* fast/events/ios/no-touch-events-when-stopping-momentum-scroll-in-overflow.html:
* fast/events/ios/touch-events-during-scroll-deceleration-in-overflow.html:
* fast/events/touch/ios/drag-block-without-overflow-scroll-and-passive-observer-on-block.html:
* fast/events/touch/ios/drag-block-without-overflow-scroll-and-passive-observer-on-document.html:
* fast/events/touch/ios/drag-block-without-overflow-scroll.html:
* fast/scrolling/ios/change-scrollability-on-content-resize-nested.html:
* fast/scrolling/ios/change-scrollability-on-content-resize.html:
* fast/scrolling/ios/clipping-ancestor-with-accelerated-scrolling-ancestor.html:
* fast/scrolling/ios/fixed-inside-overflow-inside-iframe-expected.html:
* fast/scrolling/ios/fixed-inside-overflow-inside-iframe.html:
* fast/scrolling/ios/iframe-inside-overflow-clipping.html:
* fast/scrolling/ios/overflow-clip-with-accelerated-scrolling-ancestor.html:
* fast/scrolling/ios/overflow-scroll-inherited.html:
* fast/scrolling/ios/overflow-scroll-overlap-2.html:
* fast/scrolling/ios/overflow-scroll-overlap-3.html:
* fast/scrolling/ios/overflow-scroll-overlap-4.html:
* fast/scrolling/ios/overflow-scroll-overlap-5.html:
* fast/scrolling/ios/overflow-scroll-overlap.html:
* fast/scrolling/ios/overflow-scroll-touch.html:
* fast/scrolling/ios/overflow-scrolling-ancestor-clip-size.html:
* fast/scrolling/ios/overflow-scrolling-ancestor-clip.html:
* fast/scrolling/ios/overflow-scrolling-touch-disabled-stacking.html:
* fast/scrolling/ios/overflow-scrolling-touch-enabled-stacking-expected.html:
* fast/scrolling/ios/overflow-scrolling-touch-enabled-stacking.html:
* fast/scrolling/ios/reconcile-layer-position-recursive.html:
* fast/scrolling/ios/remove-overflow-crash.html:
* fast/scrolling/ios/scroll-into-view-with-top-content-inset.html:
* fast/scrolling/ios/scrollbar-hiding.html:
* fast/scrolling/ios/scrolling-content-clip-to-viewport.html:
* fast/scrolling/ios/subpixel-overflow-scrolling-with-ancestor.html:
* fast/scrolling/ios/table-cell-touch-scrolling.html:
* fast/scrolling/ios/textarea-scroll-touch.html:
* fast/scrolling/ios/touch-scroll-back-forward.html:
* fast/scrolling/ios/touch-scroll-pointer-events-none.html:
* fast/scrolling/ios/touch-stacking.html:
* platform/ios-wk2/TestExpectations:
* platform/ios-wk2/compositing/geometry/limit-layer-bounds-transformed-overflow-expected.txt: Added.
* platform/ios-wk2/compositing/layer-creation/overflow-scroll-overlap-expected.txt: Added.
* platform/ios-wk2/compositing/layer-creation/scroll-partial-update-expected.txt: Added.
* platform/ios-wk2/compositing/overflow/content-gains-scrollbars-expected.txt: Added.
* platform/ios-wk2/compositing/overflow/overflow-scroll-expected.txt:
* platform/ios-wk2/compositing/overflow/overflow-scrollbar-layer-positions-expected.txt: Added.
* platform/ios-wk2/compositing/overflow/overflow-scrollbar-layers-expected.txt: Added.
* platform/ios-wk2/compositing/overflow/remove-overflow-crash2-expected.txt:
* platform/ios-wk2/compositing/overflow/scrollbar-painting-expected.txt:
* platform/ios/compositing/geometry/limit-layer-bounds-clipping-ancestor-expected.txt:
* platform/ios/compositing/layers-inside-overflow-scroll-expected.txt:
* platform/ios/compositing/overflow/scroll-ancestor-update-expected.txt:
* platform/ios/compositing/reflections/nested-reflection-on-overflow-expected.txt:
* platform/ios/compositing/self-painting-layers-expected.txt:
* platform/ios/fast/scrolling/find-text-in-overflow-node-indicator-position-limit.html:
* platform/ios/fast/scrolling/find-text-in-overflow-node-indicator-position.html:
* platform/ios/fast/scrolling/find-text-in-overflow-node.html:
* platform/ios/media/video-play-glyph-composited-outside-overflow-scrolling-touch-container.html:
* platform/mac/compositing/overflow/overflow-auto-with-touch-toggle-expected.txt:
* pointerevents/ios/touch-action-none-in-overflow-scrolling-touch.html:
* scrollingcoordinator/ios/absolute-layer-should-not-move-with-scroll-expected.html:
* scrollingcoordinator/ios/absolute-layer-should-not-move-with-scroll.html:
* scrollingcoordinator/ios/relative-layer-should-move-with-scroll-expected.html:
* scrollingcoordinator/ios/relative-layer-should-move-with-scroll.html:
* scrollingcoordinator/ios/scroll-element-at-point.html:
* scrollingcoordinator/scrolling-tree/gain-scrolling-node-parent.html:
* scrollingcoordinator/scrolling-tree/lose-scrolling-node-parent.html:
* scrollingcoordinator/scrolling-tree/overflow-in-fixed.html:
* scrollingcoordinator/scrolling-tree/positioned-nodes-complex.html:
* scrollingcoordinator/scrolling-tree/positioned-nodes.html:
* scrollingcoordinator/scrolling-tree/remove-scrolling-role.html:
* scrollingcoordinator/scrolling-tree/reparent-across-compositing-layers.html:
* scrollingcoordinator/scrolling-tree/reparent-with-layer-removal.html:
* scrollingcoordinator/scrolling-tree/resources/doc-with-sticky.html:
* tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-2d-overflow.html:
* tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-borders.html:

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

4 months ago[Web Animations] JS wrapper may be deleted while animation is yet to dispatch its...
graouts@webkit.org [Thu, 21 Mar 2019 23:53:59 +0000 (23:53 +0000)]
[Web Animations] JS wrapper may be deleted while animation is yet to dispatch its finish event
https://bugs.webkit.org/show_bug.cgi?id=196118
<rdar://problem/46614137>

Reviewed by Ryosuke Niwa.

Source/WebCore:

Test: webanimations/js-wrapper-kept-alive.html

We need to teach WebAnimation to keep its JS wrapper alive if it's relevant or could become relevant again by virtue of having a timeline.

* animation/WebAnimation.cpp:
(WebCore::WebAnimation::stop): Drive-by fix for the missing superclass method call.
(WebCore::WebAnimation::hasPendingActivity const):
* animation/WebAnimation.h:

LayoutTests:

Add a test that starts a short animation, sets a custom property on it, registers a "finish" event listener on it and deletes
the sole reference to it in the JS world before triggering garbage collection. Prior to this fix, this test would time out
because the JS wrapper would be garbage-collected prior to the animation completing and thus the event listener would not
be called. To complete successfully, this test checks that it receives the event and its target is the same animation object
that was originally created by checking the custom property is still set.

* webanimations/js-wrapper-kept-alive-expected.txt: Added.
* webanimations/js-wrapper-kept-alive.html: Added.

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

4 months agoRemove last use of LegacySync IPC messages
achristensen@apple.com [Thu, 21 Mar 2019 23:35:39 +0000 (23:35 +0000)]
Remove last use of LegacySync IPC messages
https://bugs.webkit.org/show_bug.cgi?id=196113

Reviewed by Chris Dumez.

Also rename "Delayed" to "Synchronous" now that there's only one type of synchronous message.

* NetworkProcess/NetworkConnectionToWebProcess.messages.in:
* NetworkProcess/NetworkProcess.messages.in:
* NetworkProcess/ServiceWorker/WebSWServerConnection.cpp:
(WebKit::WebSWServerConnection::syncTerminateWorkerFromClient):
* NetworkProcess/ServiceWorker/WebSWServerConnection.h:
* NetworkProcess/ServiceWorker/WebSWServerConnection.messages.in:
* Platform/IPC/Connection.cpp:
(IPC::Connection::dispatchMessage):
* Platform/IPC/HandleMessage.h:
(IPC::handleMessageSynchronous):
(IPC::handleMessageSynchronousWantsConnection):
(IPC::handleMessageLegacySync): Deleted.
(IPC::handleMessageDelayed): Deleted.
(IPC::handleMessageDelayedWantsConnection): Deleted.
* PluginProcess/PluginControllerProxy.messages.in:
* PluginProcess/WebProcessConnection.messages.in:
* Scripts/webkit/LegacyMessageReceiver-expected.cpp:
(WebKit::WebPage::didReceiveSyncWebPageMessage):
* Scripts/webkit/MessageReceiver-expected.cpp:
(WebKit::WebPage::didReceiveSyncMessage):
* Scripts/webkit/MessageReceiverSuperclass-expected.cpp:
(Messages::WebPage::TestSyncMessage::send):
(Messages::WebPage::TestSynchronousMessage::send):
(WebKit::WebPage::didReceiveSyncMessage):
(Messages::WebPage::TestDelayedMessage::send): Deleted.
* Scripts/webkit/MessagesSuperclass-expected.h:
(Messages::WebPage::TestSynchronousMessage::name):
(Messages::WebPage::TestSynchronousMessage::TestSynchronousMessage):
(Messages::WebPage::TestDelayedMessage::receiverName): Deleted.
(Messages::WebPage::TestDelayedMessage::name): Deleted.
(Messages::WebPage::TestDelayedMessage::TestDelayedMessage): Deleted.
(Messages::WebPage::TestDelayedMessage::arguments const): Deleted.
* Scripts/webkit/messages.py:
* Scripts/webkit/messages_unittest.py:
* Scripts/webkit/test-legacy-messages.in:
* Scripts/webkit/test-messages.in:
* Scripts/webkit/test-superclass-messages.in:
* Shared/ApplePay/WebPaymentCoordinatorProxy.messages.in:
* Shared/Plugins/NPObjectMessageReceiver.messages.in:
* UIProcess/Cocoa/UserMediaCaptureManagerProxy.messages.in:
* UIProcess/Plugins/PluginProcessProxy.messages.in:
* UIProcess/WebFullScreenManagerProxy.messages.in:
* UIProcess/WebPageProxy.messages.in:
* UIProcess/WebPasteboardProxy.messages.in:
* UIProcess/WebProcessPool.messages.in:
* UIProcess/WebProcessProxy.messages.in:
* UIProcess/WebStorage/StorageManager.messages.in:
* UIProcess/mac/SecItemShimProxy.messages.in:
* WebProcess/Plugins/PluginProcessConnection.messages.in:
* WebProcess/Plugins/PluginProxy.messages.in:
* WebProcess/Storage/WebSWClientConnection.cpp:
(WebKit::WebSWClientConnection::syncTerminateWorker):
* WebProcess/Storage/WebSWContextManagerConnection.messages.in:
* WebProcess/WebPage/WebPage.messages.in:
* WebProcess/WebProcess.messages.in:

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

4 months agoRemove an invalid assertion in DFG::SpeculativeJIT::nonSpeculativeNonPeepholeCompareN...
mark.lam@apple.com [Thu, 21 Mar 2019 23:34:31 +0000 (23:34 +0000)]
Remove an invalid assertion in DFG::SpeculativeJIT::nonSpeculativeNonPeepholeCompareNullOrUndefined().
https://bugs.webkit.org/show_bug.cgi?id=196116
<rdar://problem/48976951>

Reviewed by Filip Pizlo.

JSTests:

* stress/dfg-compare-eq-via-nonSpeculativeNonPeepholeCompareNullOrUndefined.js: Added.

Source/JavaScriptCore:

The DFG backend should not make assumptions about what optimizations the front end
will or will not do.  The assertion asserts that the operand cannot be known to be
a cell.  However, it is not guaranteed that the front end will fold away this case.
Also, the DFG backend is perfectly capable of generating code to handle the case
where the operand is a cell.

The attached test case demonstrates a case where the operand can be a known cell.
The test needs to be run with the concurrent JIT and GC, and is racy.  It used to
trip up this assertion about once every 10 runs or so.

* dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::nonSpeculativeNonPeepholeCompareNullOrUndefined):

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

4 months ago[ews-build] Retry API test in case of failures
aakash_jain@apple.com [Thu, 21 Mar 2019 23:11:58 +0000 (23:11 +0000)]
[ews-build] Retry API test in case of failures
https://bugs.webkit.org/show_bug.cgi?id=196004

Reviewed by Lucas Forschler.

* BuildSlaveSupport/ews-build/steps.py:
(UnApplyPatchIfRequired.doStepIf): Updated doStepIf to include patchFailedAPITests.
(CompileWebKitToT.doStepIf): Ditto.
(RunAPITests.evaluateCommand): Check if tests failed and retry them if required.
(ReRunAPITests): Re-run API tests.
(ReRunAPITests.evaluateCommand): Check if tests failed and retry on clean build if required.
(RunAPITestsWithoutPatch): Run API tests without patch.
(RunAPITestsWithoutPatch.doStepIf):
(RunAPITestsWithoutPatch.hideStepIf):
(RunAPITestsWithoutPatch.evaluateCommand):
(AnalyzeAPITestsResults): Analyze API test results from previous runs.
(AnalyzeAPITestsResults.start):
(AnalyzeAPITestsResults.analyzeResults): Analyze API test results.
(AnalyzeAPITestsResults.getBuildStepByName): Search for a build step by name.
(AnalyzeAPITestsResults.getTestsResults): Get the test results from previous API tesst steps.
* BuildSlaveSupport/ews-build/steps_unittest.py: Monkey patched FakeBuild.

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

4 months agoInband Text Track cues interspersed with Data cues can display out of order.
jer.noble@apple.com [Thu, 21 Mar 2019 23:01:53 +0000 (23:01 +0000)]
Inband Text Track cues interspersed with Data cues can display out of order.
https://bugs.webkit.org/show_bug.cgi?id=196095

Reviewed by Eric Carlson.

The compareCueIntervalForDisplay() comparator depends on a virtual function, isPositionedAbove(TextTrackCue* other),
but this comparison returns inconsistent results for cueA->isPositionedAbove(cueB) and cueB->isPositionedAbove(cueA)
if the two cues are different subclasses of TextTrackCue.

The underlying algorithm should be fixed in a future patch, but for now, remove all non-displaying cues from the array
of activeCues before sorting, rather than after when iterating over the sorted list of activeCues.

* html/shadow/MediaControlElements.cpp:
(WebCore::MediaControlTextTrackContainerElement::updateDisplay):

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

4 months agoWeb Automation: support uploading non-local file paths
bburg@apple.com [Thu, 21 Mar 2019 22:54:25 +0000 (22:54 +0000)]
Web Automation: support uploading non-local file paths
https://bugs.webkit.org/show_bug.cgi?id=196081
<rdar://problem/45819897>

Reviewed by Devin Rousso and Joseph Pecoraro.

To support cases where supplied file paths do not exist on the session host, add support for
receiving file contents via Automation.setFilesToSelectForFileUpload.

* UIProcess/Automation/Automation.json: Add new parameter.

* UIProcess/Automation/WebAutomationSession.h:
* UIProcess/Automation/WebAutomationSession.cpp:
(WebKit::WebAutomationSession::setFilesToSelectForFileUpload):
Add support for receiving and saving file contents to a temporary directory. Rewrite the used paths so
that WebCore knows to look at the revised paths where the file contents have been saved.

(WebKit::WebAutomationSession::platformGenerateLocalFilePathForRemoteFile):
Since WebKit does not have usable FileSystem implementations for all ports, shell out the actual
saving of base64-encoded file data. Provide a Cocoa implementation, since that's what I can test.

* UIProcess/Automation/cocoa/WebAutomationSessionCocoa.mm:
(WebKit::WebAutomationSession::platformGenerateLocalFilePathForRemoteFile):
Use WTF::FileSystem to create a temporary directory, and use Cocoa methods to actually write the file.

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

4 months agoCache API and IDB space usages should be initialized on first quota check
youenn@apple.com [Thu, 21 Mar 2019 22:52:18 +0000 (22:52 +0000)]
Cache API and IDB space usages should be initialized on first quota check
https://bugs.webkit.org/show_bug.cgi?id=195707

Reviewed by Chris Dumez.

Source/WebCore:

Add a way to require IDBServer to create a quota user for a given origin.
Make sure that removing a user might kick-in processing of pending requests.
In the case of processing pending requests, we should not decide on the first task
except if it is triggered by a request space response.
Update processPendingRequests accordingly.

Tests: http/tests/IndexedDB/storage-limit-1.https.html
       http/tests/IndexedDB/storage-limit-2.https.html

* Modules/indexeddb/server/IDBServer.h:
(WebCore::IDBServer::IDBServer::initializeQuotaUser):
* storage/StorageQuotaManager.cpp:
(WebCore::StorageQuotaManager::removeUser):
(WebCore::StorageQuotaManager::askForMoreSpace):
(WebCore::StorageQuotaManager::processPendingRequests):
* storage/StorageQuotaManager.h:

Source/WebKit:

When the quota manager is created, make sure it delays quota check decisions until IDB and Cache API quota users are initialized.
For IDB, the creation is synchronous but it may not be synchronous for Cache API.
For that purpose, add a temporary quota user that will stay uninitialized until these two quota users are added.
Once added, the temporary quota user is removed.
The addition of the real users is made asynchronously as this is triggered by the creation of one of the two quota users.

In the case of a Cache API caches being cleared, make sure to reset the size to zero and to redo the quota user initialization dance.

* NetworkProcess/NetworkProcess.cpp:
(WebKit::QuotaUserInitializer::initialize):
(WebKit::QuotaUserInitializer::~QuotaUserInitializer):
(WebKit::QuotaUserInitializer::QuotaUserInitializer):
(WebKit::NetworkProcess::storageQuotaManager):
* NetworkProcess/cache/CacheStorageEngine.cpp:
(WebKit::CacheStorage::Engine::initializeQuotaUser):
* NetworkProcess/cache/CacheStorageEngine.h:
* NetworkProcess/cache/CacheStorageEngineCaches.cpp:
(WebKit::CacheStorage::Caches::clear):

LayoutTests:

* TestExpectations:
Marking http/tests/cache-storage/cache-clearing-origin.https.html as
flaky on iOS as it is already marked flaky in MacOS.
* platform/mac-wk2/TestExpectations:
* http/tests/IndexedDB/storage-limit-1.https-expected.txt: Added.
* http/tests/IndexedDB/storage-limit-1.https.html: Added.
* http/tests/IndexedDB/storage-limit-2.https-expected.txt: Added.
* http/tests/IndexedDB/storage-limit-2.https.html: Added.
* http/tests/IndexedDB/storage-limit.https.html:
* platform/mac-wk1/TestExpectations:
* platform/win/TestExpectations:

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

4 months agoFix iOS build after r243337
achristensen@apple.com [Thu, 21 Mar 2019 22:51:32 +0000 (22:51 +0000)]
Fix iOS build after r243337
https://bugs.webkit.org/show_bug.cgi?id=195935

* platform/ios/PlaybackSessionInterfaceAVKit.mm:
(WebCore::PlaybackSessionInterfaceAVKit::playbackSessionModel const):
(WebCore::playbackSessionModel const): Deleted.

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

4 months agoHardening: Use WeakPtrs in PlaybackSessionInterface{Mac,AVKit}
bfulgham@apple.com [Thu, 21 Mar 2019 22:36:08 +0000 (22:36 +0000)]
Hardening: Use WeakPtrs in PlaybackSessionInterface{Mac,AVKit}
https://bugs.webkit.org/show_bug.cgi?id=195935
<rdar://problem/49007015>

Reviewed by Eric Carlson.

The PlaybackSessionInterface{Mac,AVKit} implementations store their playback session model
and playback controls manager members as bare pointers, something we've been working
to eliminate.

This patch corrects this oversight.

No new tests since no changes in behavior.

* platform/cocoa/PlaybackSessionModel.h:
* platform/ios/PlaybackSessionInterfaceAVKit.h:
* platform/ios/PlaybackSessionInterfaceAVKit.mm:
(WebCore::PlaybackSessionInterfaceAVKit::PlaybackSessionInterfaceAVKit):
(WebCore::playbackSessionModel const): Moved to implementation since WEBCORE_EXPORT is not
supposed to be used with inline methods.
* platform/mac/PlaybackSessionInterfaceMac.h:
* platform/mac/PlaybackSessionInterfaceMac.mm:
(WebCore::PlaybackSessionInterfaceMac::PlaybackSessionInterfaceMac):
(WebCore::PlaybackSessionInterfaceMac::playbackSessionModel const):
(WebCore::PlaybackSessionInterfaceMac::beginScrubbing):
(WebCore::PlaybackSessionInterfaceMac::endScrubbing):
(WebCore::PlaybackSessionInterfaceMac::playBackControlsManager):
* platform/mac/VideoFullscreenInterfaceMac.mm:
(WebCore::VideoFullscreenInterfaceMac::~VideoFullscreenInterfaceMac):
* platform/mac/WebPlaybackControlsManager.mm:
(-[WebPlaybackControlsManager seekToTime:toleranceBefore:toleranceAfter:]):
(-[WebPlaybackControlsManager setCurrentAudioTouchBarMediaSelectionOption:]):
(-[WebPlaybackControlsManager setCurrentLegibleTouchBarMediaSelectionOption:]):

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

4 months agoRemove the SVG tear off objects for SVGPoint, SVGPointList and SVGAnimatedPointList
said@apple.com [Thu, 21 Mar 2019 22:21:58 +0000 (22:21 +0000)]
Remove the SVG tear off objects for SVGPoint, SVGPointList and SVGAnimatedPointList
https://bugs.webkit.org/show_bug.cgi?id=195905

Source/WebCore:

Patch by Said Abou-Hallawa <said@apple.com> on 2019-03-21
Reviewed by Simon Fraser.

To remove the SVG tear off objects for SVGPoint, SVGPointList and
SVGAnimatedPointList, these changes are needed:

-- Define SVGPoint to be a superclass of SVGValueProperty<FloatPoint>.

-- Define SVGAnimatedPointList to be a superclass of SVGAnimatedPropertyList<SVGPointList>

-- Add SVGPropertyList which is a superclass of SVGList. Its items are
   defined to RefCounted. It is the base class of SVGValuePropertyList
   and it will be  the base class of SVGPathSegList in a later patch.

-- Add SVGValuePropertyList which is the base class of all the lists whose
   items are backed by a value objects like SVGPoint. The difference between
   SVGPropertyList and SVGValuePropertyList is the former class can store
   a Ref pointer of the base class like SVGPathSeg while the later type
   has to store the same type for all the items.

-- Add SVGAnimatedPropertyList which is the base class for all the animated
   lists. Note that:
   1) SVGElement owns SVGAnimatedPropertyList
   2) SVGAnimatedPropertyList owns m_baseVal whose type is SVGList
   3) m_baseVal owns the items whose type is a superclass of SVGProperty.
   When changing an item, it calls its owner which is an SVGList.
   SVGList calls its owner which is SVGAnimatedPropertyList.
   SVGAnimatedPropertyList calls its owner which SVGElement to commit
   the change. Later SVGAnimatedPropertyList::synchronize() is called
   which returns the property valueAsString() to update the reflecting
   attribute.

-- New accessor, animator and animation function are added to access
   and animate a member of type SVGAnimatedPropertyList.

* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* rendering/svg/SVGPathData.cpp:
(WebCore::pathFromCircleElement):
(WebCore::pathFromEllipseElement):
(WebCore::pathFromLineElement):
(WebCore::pathFromPathElement):
(WebCore::pathFromPolygonElement):
(WebCore::pathFromPolylineElement):
(WebCore::pathFromRectElement):
(WebCore::pathFromGraphicsElement):
* rendering/svg/SVGPathData.h:
The IDL of SVGPolyElement interface requires the following attribute:
    readonly attribute SVGPointList points;
For which we return:
    SVGPointList& points() { return m_points->baseVal(); }
But for all the other properties we return the currentValue(). So to have
the two functions with the same name, the following function is added:
    const SVGPointList& points() const { return m_points->currentValue(); }
This definition requires changing all callers to be const.

* rendering/svg/SVGRenderTreeAsText.cpp:
(WebCore::operator<<):
* svg/SVGAnimatedPointList.cpp: Removed.
* svg/SVGAnimatedPointList.h: Removed.
* svg/SVGAnimatedType.h:
(WebCore::SVGAnimatedType::type const):
This function had a bad design. It was designed to use the index of the
variant as the AnimatedPropertyType. But when some of the types are removed
from SVGValueVariant, this broke things. This fix is temporary till the
class SVGValueVariant is removed.

* svg/SVGAnimatorFactory.h:
(WebCore::SVGAnimatorFactory::create):
* svg/SVGExternalResourcesRequired.cpp:
* svg/SVGParserUtilities.cpp:
(WebCore::pointsListFromSVGData): Deleted.
* svg/SVGParserUtilities.h:
* svg/SVGPoint.h:
(WebCore::SVGPoint::create):
(WebCore::SVGPoint::clone const):
(WebCore::SVGPoint::x):
(WebCore::SVGPoint::setX):
(WebCore::SVGPoint::y):
(WebCore::SVGPoint::setY):
(WebCore::SVGPoint::matrixTransform const):
(WebCore::SVGPoint::matrixTransform): Deleted.
(WebCore::SVGPoint::SVGPoint): Deleted.
* svg/SVGPoint.idl:
matrixTransform() should not throw an exception.

* svg/SVGPointList.h:
(WebCore::SVGPointList::create):
(WebCore::SVGPointList::parse):
(WebCore::SVGPointList::SVGPointList): Deleted.
Move the parse() and valueAsString() methods to SVGPointList. It is now
a superclass of SVGValuePropertyList. Its items are of type Ref<SVGPoint>.

* svg/SVGPointListValues.cpp: Removed.
* svg/SVGPointListValues.h: Removed.
* svg/SVGPolyElement.cpp:
(WebCore::SVGPolyElement::SVGPolyElement):
(WebCore::SVGPolyElement::parseAttribute):
(WebCore::SVGPolyElement::approximateMemoryCost const):
(WebCore::SVGPolyElement::registerAttributes): Deleted.
(WebCore::SVGPolyElement::points): Deleted.
(WebCore::SVGPolyElement::animatedPoints): Deleted.
* svg/SVGPolyElement.h:
(WebCore::SVGPolyElement::points const):
(WebCore::SVGPolyElement::points):
(WebCore::SVGPolyElement::animatedPoints):
(WebCore::SVGPolyElement::pointList const): Deleted.
(WebCore::SVGPolyElement::attributeRegistry): Deleted.
* svg/SVGSVGElement.cpp:
(WebCore::SVGSVGElement::setCurrentTranslate):
(WebCore::SVGSVGElement::currentTranslate): Deleted.
* svg/SVGSVGElement.h:
* svg/SVGSVGElement.idl:
Define currentTranslate property to be of type Ref<SVGPoint>. When requesting
it just return a reference to it.

* svg/SVGValue.h:
* svg/properties/SVGAnimatedPropertyAccessorImpl.h:
* svg/properties/SVGAnimatedPropertyAnimatorImpl.h:
* svg/properties/SVGAnimatedPropertyImpl.h:
* svg/properties/SVGAnimatedPropertyList.h: Added.
Define the accessor, the animator and the animated type of SVGPointList.

(WebCore::SVGAnimatedPropertyList::create):
(WebCore::SVGAnimatedPropertyList::~SVGAnimatedPropertyList):
(WebCore::SVGAnimatedPropertyList::baseVal const):
(WebCore::SVGAnimatedPropertyList::baseVal):
(WebCore::SVGAnimatedPropertyList::animVal const):
(WebCore::SVGAnimatedPropertyList::animVal):
(WebCore::SVGAnimatedPropertyList::currentValue const):
(WebCore::SVGAnimatedPropertyList::SVGAnimatedPropertyList):
(WebCore::SVGAnimatedPropertyList::ensureAnimVal):
* svg/properties/SVGAnimationAdditiveListFunction.h: Added.
(WebCore::SVGAnimationAdditiveListFunction::SVGAnimationAdditiveListFunction):
(WebCore::SVGAnimationAdditiveListFunction::toAtEndOfDuration const):
(WebCore::SVGAnimationAdditiveListFunction::adjustAnimatedList):
* svg/properties/SVGAnimationAdditiveListFunctionImpl.h: Added.
(WebCore::SVGAnimationPointListFunction::progress):
Define the animation function for animating SVGPointList.

* svg/properties/SVGAttributeRegistry.h:
* svg/properties/SVGPropertyList.h: Added.
(WebCore::SVGPropertyList::SVGPropertyList):
(WebCore::SVGPropertyList::~SVGPropertyList):
* svg/properties/SVGPropertyOwnerRegistry.h:
(WebCore::SVGPropertyOwnerRegistry::registerProperty):
* svg/properties/SVGValuePropertyList.h: Added.
(WebCore::SVGValuePropertyList::operator=):
(WebCore::SVGValuePropertyList::operator Vector<typename PropertyType::ValueType> const):
(WebCore::SVGValuePropertyList::resize):
(WebCore::SVGValuePropertyList::SVGValuePropertyList):

LayoutTests:

Reviewed by Simon Fraser.

* svg/dom/SVGPointList-basics-expected.txt:
* svg/dom/SVGPointList-basics.xhtml:
This change is required because SVGPointList will be following the SVG2
specs regarding adding new items to the list.

See https://www.w3.org/TR/SVG/types.html#TermListInterface.

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

4 months agoJSC::createError should clear exception thrown by errorDescriptionForValue
tzagallo@apple.com [Thu, 21 Mar 2019 22:04:56 +0000 (22:04 +0000)]
JSC::createError should clear exception thrown by errorDescriptionForValue
https://bugs.webkit.org/show_bug.cgi?id=196089

Reviewed by Mark Lam.

errorDescriptionForValue returns a nullString in case of failure, but it
might also throw an OOM exception when resolving a rope string. We need
to clear any potential exceptions thrown by errorDescriptionForValue
before returning the OOM from JSC::createError.

* runtime/ExceptionHelpers.cpp:
(JSC::createError):

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

4 months ago[ews-build] Update queues configurations
aakash_jain@apple.com [Thu, 21 Mar 2019 22:00:52 +0000 (22:00 +0000)]
[ews-build] Update queues configurations
https://bugs.webkit.org/show_bug.cgi?id=196074

Reviewed by Dewei Zhu.

* BuildSlaveSupport/ews-build/config.json: Updated queues from iOS11 to iOS12,
added new bots, reassigned bots for various builders, moved few builders to another scheduler.

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

4 months agoRemove the SVG property tear off objects for SVGAnimatedString
said@apple.com [Thu, 21 Mar 2019 21:46:39 +0000 (21:46 +0000)]
Remove the SVG property tear off objects for SVGAnimatedString
https://bugs.webkit.org/show_bug.cgi?id=196065

Patch by Said Abou-Hallawa <said@apple.com> on 2019-03-21
Reviewed by Simon Fraser.

-- Define SVGAnimatedString to be SVGAnimatedPrimitiveProperty<String>.

-- Add SVGAnimatedStringAccessor to associate an attribute name with a
   pointer to an SVGAnimatedString member of an SVGElement. Given a
   pointer to an SVGElement, this accessor will and create an animator
   for the animated property.

-- Add SVGAnimatedStringAnimator to animated an SVGAnimatedString.

-- Add SVGAnimationStringFunction which is a discrete function and is
   responsible for progressing an animated String over a period of time.

-- Define SVGStringAnimator to be SVGPrimitivePropertyAnimator<String,
   SVGAnimationStringFunction>. SVGStringAnimator is responsible for
   animating attributes with no reflecting animated properties, e.g.
   "font-family".

* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* svg/SVGAElement.cpp:
(WebCore::SVGAElement::SVGAElement):
(WebCore::SVGAElement::parseAttribute):
(WebCore::SVGAElement::registerAttributes): Deleted.
* svg/SVGAElement.h:
* svg/SVGAnimateElementBase.cpp:
(WebCore::SVGAnimateElementBase::hasValidAttributeType const):
(WebCore::SVGAnimateElementBase::isDiscreteAnimator const):
* svg/SVGAnimateElementBase.h:
* svg/SVGAnimatedString.cpp: Removed.
* svg/SVGAnimatedString.h: Removed.
* svg/SVGAnimationElement.cpp:
(WebCore::SVGAnimationElement::currentValuesForValuesAnimation):
The animation controller has to tell whether the animator is discrete or
not. The properties are now registered either in SVGAttributeRegistry which
relies on the tear off objects to know the AnimatedPropertyType of the
property. Or it is registered in SVGPropertyOwnerRegistry which creates
the animators through the accessors. Each animator knows whether it is
discrete or not.

* svg/SVGAnimatorFactory.h:
(WebCore::SVGAnimatorFactory::create):
* svg/SVGAttributeAnimationController.cpp:
(WebCore::SVGAttributeAnimationController::isDiscreteAnimator const):
* svg/SVGAttributeAnimationController.h:
* svg/SVGAttributeAnimationControllerBase.h:
* svg/SVGCursorElement.h:
* svg/SVGElement.cpp:
(WebCore::SVGElement::SVGElement):
(WebCore::SVGElement::parseAttribute):
(WebCore::SVGElement::registerAttributes): Deleted.
* svg/SVGElement.h:
(WebCore::SVGElement::isKnownAttribute):
(WebCore::SVGElement::className const):
(WebCore::SVGElement::classNameAnimated):
(WebCore::SVGElement::attributeRegistry): Deleted.
* svg/SVGExternalResourcesRequired.cpp:
* svg/SVGFEBlendElement.cpp:
(WebCore::SVGFEBlendElement::SVGFEBlendElement):
(WebCore::SVGFEBlendElement::registerAttributes):
(WebCore::SVGFEBlendElement::parseAttribute):
* svg/SVGFEBlendElement.h:
* svg/SVGFEColorMatrixElement.cpp:
(WebCore::SVGFEColorMatrixElement::SVGFEColorMatrixElement):
(WebCore::SVGFEColorMatrixElement::registerAttributes):
(WebCore::SVGFEColorMatrixElement::parseAttribute):
* svg/SVGFEColorMatrixElement.h:
* svg/SVGFEComponentTransferElement.cpp:
(WebCore::SVGFEComponentTransferElement::SVGFEComponentTransferElement):
(WebCore::SVGFEComponentTransferElement::parseAttribute):
(WebCore::SVGFEComponentTransferElement::registerAttributes): Deleted.
* svg/SVGFEComponentTransferElement.h:
* svg/SVGFECompositeElement.cpp:
(WebCore::SVGFECompositeElement::SVGFECompositeElement):
(WebCore::SVGFECompositeElement::registerAttributes):
(WebCore::SVGFECompositeElement::parseAttribute):
* svg/SVGFECompositeElement.h:
* svg/SVGFEConvolveMatrixElement.cpp:
(WebCore::SVGFEConvolveMatrixElement::SVGFEConvolveMatrixElement):
(WebCore::SVGFEConvolveMatrixElement::registerAttributes):
(WebCore::SVGFEConvolveMatrixElement::parseAttribute):
* svg/SVGFEConvolveMatrixElement.h:
* svg/SVGFEDiffuseLightingElement.cpp:
(WebCore::SVGFEDiffuseLightingElement::SVGFEDiffuseLightingElement):
(WebCore::SVGFEDiffuseLightingElement::parseAttribute):
(WebCore::SVGFEDiffuseLightingElement::registerAttributes): Deleted.
* svg/SVGFEDiffuseLightingElement.h:
* svg/SVGFEDisplacementMapElement.cpp:
(WebCore::SVGFEDisplacementMapElement::SVGFEDisplacementMapElement):
(WebCore::SVGFEDisplacementMapElement::registerAttributes):
(WebCore::SVGFEDisplacementMapElement::parseAttribute):
* svg/SVGFEDisplacementMapElement.h:
* svg/SVGFEDropShadowElement.cpp:
(WebCore::SVGFEDropShadowElement::SVGFEDropShadowElement):
(WebCore::SVGFEDropShadowElement::parseAttribute):
(WebCore::SVGFEDropShadowElement::svgAttributeChanged):
(WebCore::SVGFEDropShadowElement::registerAttributes): Deleted.
* svg/SVGFEDropShadowElement.h:
* svg/SVGFEGaussianBlurElement.cpp:
(WebCore::SVGFEGaussianBlurElement::SVGFEGaussianBlurElement):
(WebCore::SVGFEGaussianBlurElement::registerAttributes):
(WebCore::SVGFEGaussianBlurElement::parseAttribute):
* svg/SVGFEGaussianBlurElement.h:
* svg/SVGFEMergeNodeElement.cpp:
(WebCore::SVGFEMergeNodeElement::SVGFEMergeNodeElement):
(WebCore::SVGFEMergeNodeElement::parseAttribute):
(WebCore::SVGFEMergeNodeElement::registerAttributes): Deleted.
* svg/SVGFEMergeNodeElement.h:
* svg/SVGFEMorphologyElement.cpp:
(WebCore::SVGFEMorphologyElement::SVGFEMorphologyElement):
(WebCore::SVGFEMorphologyElement::registerAttributes):
(WebCore::SVGFEMorphologyElement::parseAttribute):
* svg/SVGFEMorphologyElement.h:
* svg/SVGFEOffsetElement.cpp:
(WebCore::SVGFEOffsetElement::SVGFEOffsetElement):
(WebCore::SVGFEOffsetElement::parseAttribute):
(WebCore::SVGFEOffsetElement::svgAttributeChanged):
(WebCore::SVGFEOffsetElement::registerAttributes): Deleted.
* svg/SVGFEOffsetElement.h:
* svg/SVGFESpecularLightingElement.cpp:
(WebCore::SVGFESpecularLightingElement::SVGFESpecularLightingElement):
(WebCore::SVGFESpecularLightingElement::parseAttribute):
(WebCore::SVGFESpecularLightingElement::registerAttributes): Deleted.
* svg/SVGFESpecularLightingElement.h:
* svg/SVGFETileElement.cpp:
(WebCore::SVGFETileElement::SVGFETileElement):
(WebCore::SVGFETileElement::parseAttribute):
(WebCore::SVGFETileElement::registerAttributes): Deleted.
* svg/SVGFETileElement.h:
* svg/SVGFilterPrimitiveStandardAttributes.cpp:
(WebCore::SVGFilterPrimitiveStandardAttributes::SVGFilterPrimitiveStandardAttributes):
(WebCore::SVGFilterPrimitiveStandardAttributes::registerAttributes):
(WebCore::SVGFilterPrimitiveStandardAttributes::parseAttribute):
* svg/SVGFilterPrimitiveStandardAttributes.h:
(WebCore::SVGFilterPrimitiveStandardAttributes::result const):
(WebCore::SVGFilterPrimitiveStandardAttributes::resultAnimated):
* svg/SVGLegacyAttributeAnimationController.cpp:
(WebCore::SVGLegacyAttributeAnimationController::isDiscreteAnimator const):
* svg/SVGLegacyAttributeAnimationController.h:
* svg/SVGMPathElement.h:
* svg/SVGScriptElement.h:
* svg/SVGURIReference.cpp:
(WebCore::SVGURIReference::SVGURIReference):
(WebCore::SVGURIReference::isKnownAttribute):
(WebCore::SVGURIReference::parseAttribute):
(WebCore::SVGURIReference::registerAttributes): Deleted.
(WebCore::SVGURIReference::href const): Deleted.
(WebCore::SVGURIReference::hrefAnimated): Deleted.
* svg/SVGURIReference.h:
(WebCore::SVGURIReference::href const):
(WebCore::SVGURIReference::hrefAnimated):
* svg/properties/SVGAnimatedPropertyAccessorImpl.h:
* svg/properties/SVGAnimatedPropertyAnimatorImpl.h:
* svg/properties/SVGAnimatedPropertyImpl.h:
* svg/properties/SVGAttributeRegistry.h:
* svg/properties/SVGPrimitivePropertyAnimatorImpl.h:
* svg/properties/SVGPropertyAnimatorFactory.h:
(WebCore::SVGPropertyAnimatorFactory::createStringAnimator):
(WebCore::SVGPropertyAnimatorFactory::attributeAnimatorCreator):
* svg/properties/SVGPropertyOwnerRegistry.h:
(WebCore::SVGPropertyOwnerRegistry::registerProperty):

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

4 months ago[ews-app] Generate status-bubble hover-over messages (Follow-up fix)
aakash_jain@apple.com [Thu, 21 Mar 2019 21:46:08 +0000 (21:46 +0000)]
[ews-app] Generate status-bubble hover-over messages (Follow-up fix)
https://bugs.webkit.org/show_bug.cgi?id=195680
<rdar://problem/48903534>

Unreviewed infrastructure fix.

* BuildSlaveSupport/ews-app/ews/views/statusbubble.py:
(StatusBubble._build_bubble): Do not append to details_message in the cases in which it wasn't defined earlier.

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

4 months agoDo not insert the first-letter anonymous container until after we've constructed...
zalan@apple.com [Thu, 21 Mar 2019 21:43:14 +0000 (21:43 +0000)]
Do not insert the first-letter anonymous container until after we've constructed the first-letter renderer.
https://bugs.webkit.org/show_bug.cgi?id=195919
<rdar://problem/48573434>

Reviewed by Brent Fulgham.

Source/WebCore:

When the container is injected too early, we might end up removing it as part of the collapsing logic
while the text renderer is being removed (replaced with the first letter + remaining text).

Test: fast/css/first-letter-and-float-crash.html

* rendering/updating/RenderTreeBuilderFirstLetter.cpp:
(WebCore::RenderTreeBuilder::FirstLetter::createRenderers):

LayoutTests:

* fast/css/first-letter-and-float-crash-expected.txt: Added.
* fast/css/first-letter-and-float-crash.html: Added.
* platform/mac/TestExpectations:

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

4 months agoB3::Opcode can fit in a single byte, shrinking B3Value by 8 bytes
rmorisset@apple.com [Thu, 21 Mar 2019 21:36:26 +0000 (21:36 +0000)]
B3::Opcode can fit in a single byte, shrinking B3Value by 8 bytes
https://bugs.webkit.org/show_bug.cgi?id=196014

Reviewed by Keith Miller.

B3::Opcode has less than one hundred cases, so it can easily fit in one byte (from two currently)
This shrinks B3::Kind from 4 bytes to 2 (by removing the byte of padding at the end).
This in turns eliminate padding from B3::Value, shrinking it by 8 bytes (out of 80).

* b3/B3Opcode.h:

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

4 months ago[iOS][macOS] Fix sandbox call violations
pvollan@apple.com [Thu, 21 Mar 2019 21:16:37 +0000 (21:16 +0000)]
[iOS][macOS] Fix sandbox call violations
https://bugs.webkit.org/show_bug.cgi?id=195809
<rdar://problem/48829655>

Reviewed by Brent Fulgham.

An additional syscall needs to be added to the sandbox allow list.

* Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
* WebProcess/com.apple.WebProcess.sb.in:

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

4 months agoAdd UI process WebRTC runtime logging.
eric.carlson@apple.com [Thu, 21 Mar 2019 21:15:29 +0000 (21:15 +0000)]
Add UI process WebRTC runtime logging.
https://bugs.webkit.org/show_bug.cgi?id=196020
<rdar://problem/49071443>

Reviewed by Youenn Fablet.

Source/WebCore:

* inspector/agents/WebConsoleAgent.cpp:
(WebCore::WebConsoleAgent::getLoggingChannels): Deleted.
(WebCore::channelConfigurationForString): Deleted.
(WebCore::WebConsoleAgent::setLoggingChannelLevel): Deleted.
* inspector/agents/WebConsoleAgent.h:
* inspector/agents/page/PageConsoleAgent.cpp:
(WebCore::PageConsoleAgent::PageConsoleAgent): Change 'context' parameter from
WebAgentContext to PageAgentContext. Store the inspected page for later use.
(WebCore::PageConsoleAgent::getLoggingChannels): Moved from WebConsoleAgent.
(WebCore::channelConfigurationForString): Ditto.
(WebCore::PageConsoleAgent::setLoggingChannelLevel): Moved from WebConsoleAgent.
Call the inspected page to actually change the log channel configuration.
* inspector/agents/page/PageConsoleAgent.h:
* page/ChromeClient.h:
* page/Page.cpp:
(WebCore::Page::configureLoggingChannel): New.
* page/Page.h:

Source/WebKit:

* Platform/Logging.cpp:
(WebKit::getLogChannel): New.
* Platform/Logging.h:
* Shared/WebCoreArgumentCoders.h: Add coders for WTFLogChannelState and WTFLogLevel.

Add runtime logging.
* UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
(WebKit::UserMediaPermissionRequestManagerProxy::UserMediaPermissionRequestManagerProxy):
(WebKit::UserMediaPermissionRequestManagerProxy::stopCapture):
(WebKit::UserMediaPermissionRequestManagerProxy::captureDevicesChanged):
(WebKit::UserMediaPermissionRequestManagerProxy::clearCachedState):
(WebKit::UserMediaPermissionRequestManagerProxy::userMediaAccessWasDenied):
(WebKit::UserMediaPermissionRequestManagerProxy::denyRequest):
(WebKit::UserMediaPermissionRequestManagerProxy::userMediaAccessWasGranted):
(WebKit::UserMediaPermissionRequestManagerProxy::resetAccess):
(WebKit::UserMediaPermissionRequestManagerProxy::grantAccess):
(WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
(WebKit::UserMediaPermissionRequestManagerProxy::processUserMediaPermissionRequest):
(WebKit::UserMediaPermissionRequestManagerProxy::processUserMediaPermissionInvalidRequest):
(WebKit::UserMediaPermissionRequestManagerProxy::processUserMediaPermissionValidRequest):
(WebKit::UserMediaPermissionRequestManagerProxy::computeFilteredDeviceList):
(WebKit::UserMediaPermissionRequestManagerProxy::enumerateMediaDevicesForFrame):
(WebKit::UserMediaPermissionRequestManagerProxy::captureStateChanged):
(WebKit::UserMediaPermissionRequestManagerProxy::watchdogTimerFired):
(WebKit::UserMediaPermissionRequestManagerProxy::logChannel const):
(WebKit::convertEnumerationToString):

* UIProcess/UserMediaPermissionRequestManagerProxy.h:
(WTF::LogArgument<WebKit::UserMediaPermissionRequestManagerProxy::RequestAction>::toString):
* UIProcess/UserMediaPermissionRequestProxy.cpp:
(WebKit::convertEnumerationToString): Add an enum specialization for logging.

* UIProcess/UserMediaPermissionRequestProxy.h:
(WTF::LogArgument<WebKit::UserMediaPermissionRequestProxy::UserMediaAccessDenialReason>::toString): Ditto.

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::logger):
(WebKit::WebPageProxy::configureLoggingChannel):
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:

* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::configureLoggingChannel):
* WebProcess/WebCoreSupport/WebChromeClient.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::configureLoggingChannel):
* WebProcess/WebPage/WebPage.h:

Source/WTF:

* wtf/Logger.h:
(WTF::LogArgument::toString): Add long long and unsigned long long variants.

LayoutTests:

* inspector/console/webcore-logging.html:
* inspector/console/webcore-logging-expected.txt:

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

4 months agoStop using LegacySync messages in WebPageProxy
achristensen@apple.com [Thu, 21 Mar 2019 21:06:35 +0000 (21:06 +0000)]
Stop using LegacySync messages in WebPageProxy
https://bugs.webkit.org/show_bug.cgi?id=196056

Reviewed by Chris Dumez.

* UIProcess/Cocoa/WebPageProxyCocoa.mm:
(WebKit::WebPageProxy::loadRecentSearches):
* UIProcess/ProvisionalPageProxy.cpp:
(WebKit::ProvisionalPageProxy::backForwardGoToItem):
(WebKit::ProvisionalPageProxy::didReceiveSyncMessage):
* UIProcess/ProvisionalPageProxy.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::handleSynchronousMessage):
(WebKit::WebPageProxy::hasInsecureContent):
(WebKit::WebPageProxy::accessibilityScreenToRootView):
(WebKit::WebPageProxy::rootViewToAccessibilityScreen):
(WebKit::WebPageProxy::printFrame):
(WebKit::WebPageProxy::backForwardGoToItem):
(WebKit::WebPageProxy::backForwardGoToItemShared):
(WebKit::WebPageProxy::backForwardItemAtIndex):
(WebKit::WebPageProxy::backForwardBackListCount):
(WebKit::WebPageProxy::backForwardForwardListCount):
(WebKit::WebPageProxy::canUndoRedo):
(WebKit::WebPageProxy::executeUndoRedo):
(WebKit::WebPageProxy::checkTextOfParagraph):
(WebKit::WebPageProxy::checkSpellingOfString):
(WebKit::WebPageProxy::checkGrammarOfString):
(WebKit::WebPageProxy::spellingUIIsShowing):
(WebKit::WebPageProxy::getGuessesForWord):
(WebKit::WebPageProxy::substitutionsPanelIsShowing):
(WebKit::WebPageProxy::showCorrectionPanel):
(WebKit::WebPageProxy::dismissCorrectionPanel):
(WebKit::WebPageProxy::dismissCorrectionPanelSoon):
(WebKit::WebPageProxy::recordAutocorrectionResponse):
(WebKit::WebPageProxy::dictationAlternatives):
(WebKit::WebPageProxy::wrapCryptoKey):
(WebKit::WebPageProxy::unwrapCryptoKey):
(WebKit::WebPageProxy::signedPublicKeyAndChallengeString):
(WebKit::WebPageProxy::serializedAttachmentDataForIdentifiers):
(WebKit::WebPageProxy::speechSynthesisVoiceList):
(WebKit::WebPageProxy::printMainFrame): Deleted.
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* UIProcess/gtk/WebPageProxyGtk.cpp:
(WebKit::WebPageProxy::createPluginContainer):
* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::interpretKeyEvent):
* UIProcess/mac/WebPageProxyMac.mm:
(WebKit::WebPageProxy::getIsSpeaking):
(WebKit::WebPageProxy::executeSavedCommandBySelector):
(WebKit::WebPageProxy::showPDFContextMenu):

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

4 months agoStop using LegacySync messages in WebPage
achristensen@apple.com [Thu, 21 Mar 2019 21:04:40 +0000 (21:04 +0000)]
Stop using LegacySync messages in WebPage
https://bugs.webkit.org/show_bug.cgi?id=196057

Reviewed by Chris Dumez.

* WebProcess/WebPage/WebPage.h:
(WebKit::WebPage::markLayersVolatile):
* WebProcess/WebPage/WebPage.messages.in:
* WebProcess/WebPage/gtk/WebPageGtk.cpp:
(WebKit::WebPage::getCenterForZoomGesture):
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::readSelectionFromPasteboard):
(WebKit::WebPage::getStringSelectionForPasteboard):
(WebKit::WebPage::getDataSelectionForPasteboard):
(WebKit::WebPage::shouldDelayWindowOrderingEvent):
(WebKit::WebPage::acceptsFirstMouse):
* WebProcess/WebPage/mac/WebPageMac.mm:
(WebKit::WebPage::replaceSelectionWithPasteboardData):
(WebKit::WebPage::readSelectionFromPasteboard):
(WebKit::WebPage::getStringSelectionForPasteboard):
(WebKit::WebPage::getDataSelectionForPasteboard):
(WebKit::WebPage::shouldDelayWindowOrderingEvent):
(WebKit::WebPage::acceptsFirstMouse):

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

4 months agoStop using LegacySync messages in WebPasteboardProxy
achristensen@apple.com [Thu, 21 Mar 2019 21:03:43 +0000 (21:03 +0000)]
Stop using LegacySync messages in WebPasteboardProxy
https://bugs.webkit.org/show_bug.cgi?id=196060

Reviewed by Chris Dumez.

* UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:
(WebKit::WebPasteboardProxy::getPasteboardTypes):
(WebKit::WebPasteboardProxy::getPasteboardPathnamesForType):
(WebKit::WebPasteboardProxy::getPasteboardStringForType):
(WebKit::WebPasteboardProxy::getPasteboardStringsForType):
(WebKit::WebPasteboardProxy::getPasteboardBufferForType):
(WebKit::WebPasteboardProxy::pasteboardCopy):
(WebKit::WebPasteboardProxy::getPasteboardChangeCount):
(WebKit::WebPasteboardProxy::getPasteboardUniqueName):
(WebKit::WebPasteboardProxy::getPasteboardColor):
(WebKit::WebPasteboardProxy::getPasteboardURL):
(WebKit::WebPasteboardProxy::addPasteboardTypes):
(WebKit::WebPasteboardProxy::setPasteboardTypes):
(WebKit::WebPasteboardProxy::setPasteboardURL):
(WebKit::WebPasteboardProxy::setPasteboardColor):
(WebKit::WebPasteboardProxy::setPasteboardStringForType):
(WebKit::WebPasteboardProxy::setPasteboardBufferForType):
(WebKit::WebPasteboardProxy::getNumberOfFiles):
(WebKit::WebPasteboardProxy::typesSafeForDOMToReadAndWrite):
(WebKit::WebPasteboardProxy::writeCustomData):
(WebKit::WebPasteboardProxy::readStringFromPasteboard):
(WebKit::WebPasteboardProxy::readURLFromPasteboard):
(WebKit::WebPasteboardProxy::readBufferFromPasteboard):
(WebKit::WebPasteboardProxy::getPasteboardItemsCount):
(WebKit::WebPasteboardProxy::allPasteboardItemInfo):
(WebKit::WebPasteboardProxy::informationForItemAtIndex):
* UIProcess/WebPasteboardProxy.cpp:
(WebKit::WebPasteboardProxy::typesSafeForDOMToReadAndWrite):
(WebKit::WebPasteboardProxy::writeCustomData):
* UIProcess/WebPasteboardProxy.h:
* UIProcess/WebPasteboardProxy.messages.in:
* UIProcess/gtk/WebPasteboardProxyGtk.cpp:
(WebKit::WebPasteboardProxy::writeToClipboard):
(WebKit::WebPasteboardProxy::readFromClipboard):
* UIProcess/wpe/WebPasteboardProxyWPE.cpp:
(WebKit::WebPasteboardProxy::getPasteboardTypes):
(WebKit::WebPasteboardProxy::readStringFromPasteboard):
(WebKit::WebPasteboardProxy::writeWebContentToPasteboard):
(WebKit::WebPasteboardProxy::writeStringToPasteboard):

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

4 months ago[iOS] Apple Pay should be available in documents with no user agent scripts
aestes@apple.com [Thu, 21 Mar 2019 20:51:56 +0000 (20:51 +0000)]
[iOS] Apple Pay should be available in documents with no user agent scripts
https://bugs.webkit.org/show_bug.cgi?id=196061
<rdar://problem/48649391>

Reviewed by Brady Eidson.

Source/WebCore:

On platforms that support APPLE_PAY_REMOTE_UI, we can enable Apple Pay JS and Payment Request
by default in all WebKit clients.

In order to protect the privacy of Apple Pay transactions, this patch implements the
following restrictions on API usage:

1. If user agent scripts have been evaluated in a document, Apple Pay APIs will no longer be
available for the duration of the document's lifetime.
2. If an Apple Pay transaction has started in a document, user agent scripts will no longer
be evaluated for the duration of the document's lifetime.

These restrictions are disabled for clients with the
com.apple.private.WebKit.UnrestrictedApplePay entitlement and platforms that do support
Apple Pay but don't support APPLE_PAY_REMOTE_UI.

Added new API tests.

* Modules/applepay/ApplePayRequestBase.cpp:
(WebCore::convertAndValidate):
* Modules/applepay/ApplePayRequestBase.h:
* Modules/applepay/ApplePaySession.cpp:
(WebCore::convertAndValidate):
(WebCore::ApplePaySession::create):
(WebCore::ApplePaySession::supportsVersion):
(WebCore::ApplePaySession::canMakePayments):
(WebCore::ApplePaySession::canMakePaymentsWithActiveCard):
(WebCore::ApplePaySession::openPaymentSetup):
(WebCore::ApplePaySession::begin):
* Modules/applepay/ApplePaySession.h:
* Modules/applepay/ApplePaySession.idl:
* Modules/applepay/PaymentCoordinator.cpp:
(WebCore::PaymentCoordinator::supportsVersion const):
(WebCore::PaymentCoordinator::canMakePayments):
(WebCore::PaymentCoordinator::canMakePaymentsWithActiveCard):
(WebCore::PaymentCoordinator::openPaymentSetup):
(WebCore::PaymentCoordinator::beginPaymentSession):
(WebCore::PaymentCoordinator::validatedPaymentNetwork const):
(WebCore::PaymentCoordinator::shouldAllowApplePay const):
(WebCore::PaymentCoordinator::shouldAllowUserAgentScripts const):
* Modules/applepay/PaymentCoordinator.h:
* Modules/applepay/PaymentCoordinatorClient.h:
(WebCore::PaymentCoordinatorClient::supportsUnrestrictedApplePay const):
* Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp:
(WebCore::ApplePayPaymentHandler::show):
(WebCore::ApplePayPaymentHandler::canMakePayment):
(WebCore::ApplePayPaymentHandler::version const):
* Modules/applepay/paymentrequest/ApplePayPaymentHandler.h:
* Modules/paymentrequest/PaymentHandler.h:
* Modules/paymentrequest/PaymentRequest.cpp:
(WebCore::PaymentRequest::show):
(WebCore::PaymentRequest::canMakePayment):

Plumbed a Document& through to the various places that call into PaymentCoordinator for use
by shouldAllowApplePay and shouldAllowUserAgentScripts.

* bindings/js/ScriptController.cpp:
(WebCore::ScriptController::executeUserAgentScriptInWorld):
(WebCore::ScriptController::shouldAllowUserAgentScripts const):
* bindings/js/ScriptController.h:

Added executeUserAgentScriptInWorld, which calls executeScriptInWorld if allowed.

* dom/Document.cpp:
(WebCore::Document::ensurePlugInsInjectedScript):

Changed to only evaluate the chrome client's plug-in extra script if allowed, and to mark
the document as having evaluated user agent scripts.

(WebCore::Document::hasEvaluatedUserAgentScripts const):
(WebCore::Document::isRunningUserScripts const):
(WebCore::Document::setAsRunningUserScripts):
(WebCore::Document::setHasEvaluatedUserAgentScripts):
(WebCore::Document::hasStartedApplePaySession const):
(WebCore::Document::setHasStartedApplePaySession):
* dom/Document.h:

Added helper functions to set state on the top document.

* loader/DocumentThreadableLoader.cpp:
(WebCore::DocumentThreadableLoader::DocumentThreadableLoader):

Removed call to topDocument() now that isRunningUserScripts() always checks the top document.

* page/Frame.cpp:
(WebCore::Frame::injectUserScriptImmediately):

Changed to only inject the user script if allowed.

* page/Settings.yaml:
* page/SettingsDefaultValues.h:

Enabled Apple Pay by default on platforms that enable APPLE_PAY_REMOTE_UI.

* testing/Internals.cpp:
(WebCore::Internals::setAsRunningUserScripts):
(WebCore::Internals::setHasStartedApplePaySession):
* testing/Internals.h:
* testing/Internals.idl:
* testing/MockPaymentCoordinator.h:
* testing/MockPaymentCoordinator.idl:

Added some internal interfaces for use by TestWebKitAPI.

Source/WebKit:

* Shared/AuxiliaryProcess.h:
* Shared/Cocoa/AuxiliaryProcessCocoa.mm:
(WebKit::AuxiliaryProcess::parentProcessHasEntitlement):

Added a convenience function for checking parent process entitlements.

* Shared/WebPreferences.yaml:
* Shared/WebPreferencesDefaultValues.h:
* UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
(-[WKWebViewConfiguration init]):

Enabled Apple Pay by default on platforms that enable APPLE_PAY_REMOTE_UI.

* WebProcess/ApplePay/WebPaymentCoordinator.cpp:
(WebKit::WebPaymentCoordinator::supportsUnrestrictedApplePay const):
* WebProcess/ApplePay/WebPaymentCoordinator.h:

Implemented supportsUnrestrictedApplePay by checking for the
com.apple.private.WebKit.UnrestrictedApplePay entitlement on platforms that enable
APPLE_PAY_REMOTE_UI.

* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInLoadDelegate.h:
* WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
(didClearWindowObjectForFrame):
(setUpPageLoaderClient):

Added injected bundle SPI that TestWebKitAPI uses to inject the WebCore Internals interface.

* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::runJavaScript):

Changed to call ScriptController::executeUserAgentScriptInWorld.

Source/WebKitLegacy/mac:

* WebView/WebFrame.mm:
(-[WebFrame _stringByEvaluatingJavaScriptFromString:withGlobalObject:inScriptWorld:]):

Tools:

Added API tests and related infrastructure.

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKitCocoa/ApplePay.mm: Added.
(-[TestApplePayScriptMessageHandler initWithExpectation:]):
(-[TestApplePayScriptMessageHandler userContentController:didReceiveScriptMessage:]):
(TestWebKitAPI::TEST):
* TestWebKitAPI/Tests/WebKitCocoa/apple-pay-active-session.html: Added.
* TestWebKitAPI/Tests/WebKitCocoa/apple-pay-availability-in-iframe.html: Added.
* TestWebKitAPI/Tests/WebKitCocoa/apple-pay-availability.html: Added.
* TestWebKitAPI/cocoa/TestProtocol.mm:
(-[TestProtocol startLoading]):
* TestWebKitAPI/cocoa/WebProcessPlugIn/WebProcessPlugInWithInternals.h: Added.
* TestWebKitAPI/cocoa/WebProcessPlugIn/WebProcessPlugInWithInternals.mm: Added.
(-[WebProcessPlugInWithInternals webProcessPlugIn:didCreateBrowserContextController:]):
(-[WebProcessPlugInWithInternals webProcessPlugInBrowserContextController:didClearWindowObjectForFrame:inScriptWorld:]):

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

4 months agoUnreviewed, more clang 3.8 build fixes
mcatanzaro@igalia.com [Thu, 21 Mar 2019 20:47:34 +0000 (20:47 +0000)]
Unreviewed, more clang 3.8 build fixes
https://bugs.webkit.org/show_bug.cgi?id=195947
<rdar://problem/49069219>

In the spirit of making our code worse to please old compilers....

* bindings/ScriptValue.cpp:
(Inspector::jsToInspectorValue):
* bytecode/GetterSetterAccessCase.cpp:
(JSC::GetterSetterAccessCase::create):
(JSC::GetterSetterAccessCase::clone const):
* bytecode/InstanceOfAccessCase.cpp:
(JSC::InstanceOfAccessCase::clone const):
* bytecode/IntrinsicGetterAccessCase.cpp:
(JSC::IntrinsicGetterAccessCase::clone const):
* bytecode/ModuleNamespaceAccessCase.cpp:
(JSC::ModuleNamespaceAccessCase::clone const):
* bytecode/ProxyableAccessCase.cpp:
(JSC::ProxyableAccessCase::clone const):

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

4 months agoFix one of RTCRtpTransceiver-stop.html test title
youenn@apple.com [Thu, 21 Mar 2019 20:42:40 +0000 (20:42 +0000)]
Fix one of RTCRtpTransceiver-stop.html test title
https://bugs.webkit.org/show_bug.cgi?id=196090

Reviewed by Brent Fulgham.

* web-platform-tests/webrtc/RTCRtpTransceiver-stop-expected.txt:
* web-platform-tests/webrtc/RTCRtpTransceiver-stop.html:

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

4 months agoREGRESSSION (r243297): webkitpy tests broken
jbedard@apple.com [Thu, 21 Mar 2019 20:39:59 +0000 (20:39 +0000)]
REGRESSSION (r243297): webkitpy tests broken
https://bugs.webkit.org/show_bug.cgi?id=196108

Reviewed by Aakash Jain.

r243297 updated contributors.json, which broke a few unit tests.

* Scripts/webkitpy/tool/bot/irc_command_unittest.py:
(IRCCommandTest.test_whois):
* Scripts/webkitpy/tool/commands/suggestnominations_unittest.py:

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

4 months agoWebKit should throw when trying to create a WKWebView with a related view that is...
cdumez@apple.com [Thu, 21 Mar 2019 20:31:19 +0000 (20:31 +0000)]
WebKit should throw when trying to create a WKWebView with a related view that is using a different data store
https://bugs.webkit.org/show_bug.cgi?id=196041
<rdar://problem/49083230>

Reviewed by Alex Christensen.

Source/WebKit:

WebKit should throw when trying to create a WKWebView with a related view that is using a different data store.
We do not support having several WebsiteDataStores sharing the same WebProcess.

* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _initializeWithConfiguration:]):
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::createWebPage):

Tools:

Add API test coverage.

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

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

4 months agoAdd SPI to inform applications of WKContentRuleList actions
achristensen@apple.com [Thu, 21 Mar 2019 20:23:46 +0000 (20:23 +0000)]
Add SPI to inform applications of WKContentRuleList actions
https://bugs.webkit.org/show_bug.cgi?id=195965
<rdar://problem/42664365>

Reviewed by Geoff Garen.

Source/WebCore:

We already had SPI to inform the application of notifications.
In order to inform it about other actions, I needed to put them in a different structure.
Basically, instead of a Vector<Action> I use a Vector<Vector<Action>> that contains the same actions.
That way we can give one callback per WKContentRuleList.

* Modules/websockets/WebSocketChannel.cpp:
(WebCore::WebSocketChannel::connect):
* WebCore.xcodeproj/project.pbxproj:
* contentextensions/ContentExtensionActions.h:
* contentextensions/ContentExtensionParser.cpp:
(WebCore::ContentExtensions::loadEncodedRules):
* contentextensions/ContentExtensionRule.cpp:
(WebCore::ContentExtensions::Action::isolatedCopy const):
* contentextensions/ContentExtensionRule.h:
(WebCore::ContentExtensions::Action::operator== const):
(WebCore::ContentExtensions::Action::setExtensionIdentifier): Deleted.
(WebCore::ContentExtensions::Action::extensionIdentifier const): Deleted.
* contentextensions/ContentExtensionsBackend.cpp:
(WebCore::ContentExtensions::ContentExtensionsBackend::actionsForResourceLoad const):
(WebCore::ContentExtensions::ContentExtensionsBackend::processContentRuleListsForLoad):
(WebCore::ContentExtensions::ContentExtensionsBackend::processContentRuleListsForPingLoad):
(WebCore::ContentExtensions::applyResultsToRequest):
(WebCore::ContentExtensions::ContentExtensionsBackend::processContentExtensionRulesForLoad): Deleted.
(WebCore::ContentExtensions::ContentExtensionsBackend::processContentExtensionRulesForPingLoad): Deleted.
(WebCore::ContentExtensions::applyBlockedStatusToRequest): Deleted.
* contentextensions/ContentExtensionsBackend.h:
* contentextensions/ContentRuleListResults.h: Added.
(WebCore::ContentRuleListResults::Result::shouldNotifyApplication const):
(WebCore::ContentRuleListResults::shouldNotifyApplication const):
(WebCore::ContentRuleListResults::encode const):
(WebCore::ContentRuleListResults::decode):
(WebCore::ContentRuleListResults::Result::encode const):
(WebCore::ContentRuleListResults::Result::decode):
(WebCore::ContentRuleListResults::Summary::encode const):
(WebCore::ContentRuleListResults::Summary::decode):
* css/StyleSheetContents.cpp:
(WebCore::StyleSheetContents::subresourcesAllowReuse const):
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::loadResource):
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::loadResourceSynchronously):
* loader/PingLoader.cpp:
(WebCore::processContentRuleListsForLoad):
(WebCore::PingLoader::loadImage):
(WebCore::PingLoader::sendPing):
(WebCore::PingLoader::sendViolationReport):
(WebCore::processContentExtensionRulesForLoad): Deleted.
* loader/ResourceLoader.cpp:
(WebCore::ResourceLoader::willSendRequestInternal):
* loader/cache/CachedResourceLoader.cpp:
(WebCore::CachedResourceLoader::requestResource):
* loader/cache/CachedResourceRequest.cpp:
(WebCore::CachedResourceRequest::applyResults):
(WebCore::CachedResourceRequest::applyBlockedStatus): Deleted.
* loader/cache/CachedResourceRequest.h:
* page/ChromeClient.h:
(WebCore::ChromeClient::contentRuleListNotification):
* page/DOMWindow.cpp:
(WebCore::DOMWindow::open):
* page/UserContentProvider.cpp:
(WebCore::UserContentProvider::processContentRuleListsForLoad):
(WebCore::UserContentProvider::actionsForResourceLoad):
(WebCore::UserContentProvider::processContentExtensionRulesForLoad): Deleted.
* page/UserContentProvider.h:

Source/WebKit:

* NetworkProcess/NetworkLoadChecker.cpp:
(WebKit::NetworkLoadChecker::checkRequest):
(WebKit::NetworkLoadChecker::processContentRuleListsForLoad):
(WebKit::NetworkLoadChecker::processContentExtensionRulesForLoad): Deleted.
* NetworkProcess/NetworkLoadChecker.h:
* UIProcess/API/APINavigationClient.h:
(API::NavigationClient::contentRuleListNotification):
* UIProcess/API/C/WKPage.cpp:
(WKPageSetPageNavigationClient):
* UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h:
* UIProcess/Cocoa/NavigationState.h:
* UIProcess/Cocoa/NavigationState.mm:
(WebKit::NavigationState::setNavigationDelegate):
(WebKit::NavigationState::NavigationClient::contentRuleListNotification):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::contentRuleListNotification):
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::contentRuleListNotification):
* WebProcess/WebCoreSupport/WebChromeClient.h:

Tools:

* TestWebKitAPI/Tests/WebCore/ContentExtensions.cpp:
(TestWebKitAPI::allActionsForResourceLoad):
(TestWebKitAPI::testRequest):
(TestWebKitAPI::TEST_F):
* TestWebKitAPI/Tests/WebKitCocoa/ContentRuleListNotification.mm:
(Notification::description):
(Notification::operator== const):
(toVector):
(-[ContentRuleListNotificationDelegate _webView:URL:contentRuleListIdentifiers:notifications:]):
(-[ContentRuleListNotificationDelegate _webView:contentRuleListWithIdentifier:performedActionOnURL:blockedLoad:blockedCookies:madeHTTPS:notifications:]):
(makeContentRuleList):
(TEST):
(makeWarnContentRuleList): Deleted.

LayoutTests:

* http/tests/contentextensions/popups-expected.txt:
Because popups now use UserContentProvider.processContentRuleListsForLoad like everything else,
it now prints messages to the debug console.  That is a desired improvement, so expectations are updated accordingly.

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

4 months agoAdd an internal feature flag to disable the -webkit-overflow-scrolling CSS property
simon.fraser@apple.com [Thu, 21 Mar 2019 20:20:14 +0000 (20:20 +0000)]
Add an internal feature flag to disable the -webkit-overflow-scrolling CSS property
https://bugs.webkit.org/show_bug.cgi?id=196058
rdar://problem/49078202

Reviewed by Antti Koivisto.
Source/WebCore:

Add an internal setting called "legacyOverflowScrollingTouchEnabled", initially
on by default.

When disabled, it makes the -webkit-overflow-scrolling property be unsupported.

Tests: fast/scrolling/ios/overflow-scrolling-touch-disabled-stacking.html
       fast/scrolling/ios/overflow-scrolling-touch-enabled-stacking.html

* css/parser/CSSParserContext.cpp:
(WebCore::CSSParserContext::CSSParserContext):
(WebCore::operator==):
* css/parser/CSSParserContext.h:
(WebCore::CSSParserContextHash::hash):
* css/parser/CSSParserFastPaths.cpp:
(WebCore::CSSParserFastPaths::isValidKeywordPropertyAndValue):
* css/parser/CSSParserFastPaths.h:
* css/parser/CSSPropertyParser.cpp:
(WebCore::CSSPropertyParser::parseSingleValue):
* page/Settings.yaml:

Source/WebKit:

Add an internal feature flag called "LegacyOverflowScrollingTouchEnabled", initially
on by default.

* Shared/WebPreferences.yaml:

LayoutTests:

Add tests testing that the stacking-context side-effects -webkit-overflow-scrolling:touch
go away when it's disabled.

* fast/scrolling/ios/overflow-scrolling-touch-disabled-stacking-expected.html: Added.
* fast/scrolling/ios/overflow-scrolling-touch-disabled-stacking.html: Added.
* fast/scrolling/ios/overflow-scrolling-touch-enabled-stacking-expected.html: Added.
* fast/scrolling/ios/overflow-scrolling-touch-enabled-stacking.html: Added.

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

4 months agoUnreviewed, fix test failures after r243269.
drousso@apple.com [Thu, 21 Mar 2019 19:55:44 +0000 (19:55 +0000)]
Unreviewed, fix test failures after r243269.

* inspector/timeline/line-column-expected.txt:

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

4 months agoUI-process hit-testing needs to know about containing block relationships
antti@apple.com [Thu, 21 Mar 2019 19:54:25 +0000 (19:54 +0000)]
UI-process hit-testing needs to know about containing block relationships
https://bugs.webkit.org/show_bug.cgi?id=195845
<rdar://problem/48949633>

Reviewed by Simon Fraser.

Source/WebCore:

Test: fast/scrolling/ios/overflow-scroll-overlap-5.html

* page/scrolling/ScrollingTree.h:
* page/scrolling/ScrollingTreeScrollingNode.h:
* page/scrolling/cocoa/ScrollingTreePositionedNode.h:
(WebCore::ScrollingTreePositionedNode::layer const):

Source/WebKit:

Test: fast/scrolling/ios/overflow-scroll-overlap-5.html

When an overflow scroller contains a positioned element the element may not be on a descendant layer of the scroller,
yet should move along with it. This needs to be taken into account in UI-side hit testing.

* UIProcess/RemoteLayerTree/RemoteLayerTreeNode.h:
(WebKit::RemoteLayerTreeNode::nonAncestorScrollContainerIDs const):
(WebKit::RemoteLayerTreeNode::addNonAncestorScrollContainerID):
(WebKit::RemoteLayerTreeNode::clearNonAncestorScrollContainerIDs):

Maintain non-ancestor scrolling relationships for layers.

* UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp:
(WebKit::RemoteScrollingCoordinatorProxy::commitScrollingTreeState):
(WebKit::RemoteScrollingCoordinatorProxy::establishLayerTreeScrollingRelations):
* UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.h:
* UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.mm:
(WebKit::isScrolledBy):

Helper to figure out who scrolls who.

(-[UIView _web_findDescendantViewAtPoint:withEvent:]):
* UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm:
(WebKit::RemoteScrollingCoordinatorProxy::establishLayerTreeScrollingRelations):

After commit, pull the non-ancestor scrolling relationships from the scrolling tree and update the layer tree.

LayoutTests:

* fast/scrolling/ios/overflow-scroll-overlap-5-expected.txt: Added.
* fast/scrolling/ios/overflow-scroll-overlap-5.html: Added.

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

4 months ago[ContentChangeObserver] Cleanup reset state.
zalan@apple.com [Thu, 21 Mar 2019 19:52:18 +0000 (19:52 +0000)]
[ContentChangeObserver] Cleanup reset state.
https://bugs.webkit.org/show_bug.cgi?id=196076
<rdar://problem/49107931>

Reviewed by Simon Fraser.

stopObservingPendingActivities() is a subset of reset() and call it when we've observed a visible change.

* page/ios/ContentChangeObserver.cpp:
(WebCore::ContentChangeObserver::willNotProceedWithClick):
(WebCore::ContentChangeObserver::stopObservingPendingActivities):
(WebCore::ContentChangeObserver::reset):
(WebCore::ContentChangeObserver::didSuspendActiveDOMObjects):
(WebCore::ContentChangeObserver::willDetachPage):
(WebCore::ContentChangeObserver::adjustObservedState):
(WebCore::ContentChangeObserver::cancelPendingActivities): Deleted.
* page/ios/ContentChangeObserver.h:

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

4 months agoUnreviewed, rebaseline test after failure in 243211.
sroberts@apple.com [Thu, 21 Mar 2019 19:21:11 +0000 (19:21 +0000)]
Unreviewed, rebaseline test after failure in 243211.
https://bugs.webkit.org/show_bug.cgi?id=195934.

* scrollingcoordinator/scrolling-tree/positioned-nodes-complex-expected.txt:

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

4 months agoUnreviewed build fix.
zalan@apple.com [Thu, 21 Mar 2019 19:21:10 +0000 (19:21 +0000)]
Unreviewed build fix.

* page/ios/ContentChangeObserver.h:

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

4 months ago[JSC] Do not create JIT related data under non-JIT mode
ysuzuki@apple.com [Thu, 21 Mar 2019 19:14:12 +0000 (19:14 +0000)]
[JSC] Do not create JIT related data under non-JIT mode
https://bugs.webkit.org/show_bug.cgi?id=195982

Reviewed by Mark Lam.

We avoid creations of JIT related data structures under non-JIT mode.
This patch removes the following allocations.

1. JITThunks
2. FTLThunks
3. FixedVMPoolExecutableAllocator
4. noJITValueProfileSingleton since it is no longer used
5. ARM disassembler should be initialized when it is used
6. Wasm related data structures are accidentally allocated if VM::canUseJIT() == false &&
   Options::useWebAssembly() == true. Add Wasm::isSupported() function to check the both conditions.

* CMakeLists.txt:
* JavaScriptCore.xcodeproj/project.pbxproj:
* heap/Heap.cpp:
(JSC::Heap::runEndPhase):
* jit/ExecutableAllocator.cpp:
(JSC::FixedVMPoolExecutableAllocator::~FixedVMPoolExecutableAllocator):
(JSC::ExecutableAllocator::initializeUnderlyingAllocator):
(JSC::ExecutableAllocator::isValid const):
(JSC::ExecutableAllocator::underMemoryPressure):
(JSC::ExecutableAllocator::memoryPressureMultiplier):
(JSC::ExecutableAllocator::allocate):
(JSC::ExecutableAllocator::isValidExecutableMemory):
(JSC::ExecutableAllocator::getLock const):
(JSC::ExecutableAllocator::committedByteCount):
(JSC::ExecutableAllocator::dumpProfile):
(JSC::startOfFixedExecutableMemoryPoolImpl):
(JSC::endOfFixedExecutableMemoryPoolImpl):
(JSC::ExecutableAllocator::initialize):
(JSC::ExecutableAllocator::initializeAllocator): Deleted.
(JSC::ExecutableAllocator::ExecutableAllocator): Deleted.
(JSC::ExecutableAllocator::~ExecutableAllocator): Deleted.
* jit/ExecutableAllocator.h:
(JSC::ExecutableAllocatorBase::isValid const):
(JSC::ExecutableAllocatorBase::underMemoryPressure):
(JSC::ExecutableAllocatorBase::memoryPressureMultiplier):
(JSC::ExecutableAllocatorBase::dumpProfile):
(JSC::ExecutableAllocatorBase::allocate):
(JSC::ExecutableAllocatorBase::setJITEnabled):
(JSC::ExecutableAllocatorBase::isValidExecutableMemory):
(JSC::ExecutableAllocatorBase::committedByteCount):
(JSC::ExecutableAllocatorBase::getLock const):
(JSC::ExecutableAllocator::isValid const): Deleted.
(JSC::ExecutableAllocator::underMemoryPressure): Deleted.
(JSC::ExecutableAllocator::memoryPressureMultiplier): Deleted.
(JSC::ExecutableAllocator::allocate): Deleted.
(JSC::ExecutableAllocator::setJITEnabled): Deleted.
(JSC::ExecutableAllocator::isValidExecutableMemory): Deleted.
(JSC::ExecutableAllocator::committedByteCount): Deleted.
(JSC::ExecutableAllocator::getLock const): Deleted.
* jsc.cpp:
(functionWebAssemblyMemoryMode):
* runtime/InitializeThreading.cpp:
(JSC::initializeThreading):
* runtime/JSGlobalObject.cpp:
(JSC::JSGlobalObject::init):
* runtime/JSLock.cpp:
(JSC::JSLock::didAcquireLock):
* runtime/Options.cpp:
(JSC::recomputeDependentOptions):
* runtime/VM.cpp:
(JSC::enableAssembler):
(JSC::VM::canUseAssembler):
(JSC::VM::VM):
* runtime/VM.h:
* wasm/WasmCapabilities.h: Added.
(JSC::Wasm::isSupported):
* wasm/WasmFaultSignalHandler.cpp:
(JSC::Wasm::enableFastMemory):

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

4 months ago[JSC] Fix JSC build with newer ICU
ysuzuki@apple.com [Thu, 21 Mar 2019 19:09:10 +0000 (19:09 +0000)]
[JSC] Fix JSC build with newer ICU
https://bugs.webkit.org/show_bug.cgi?id=196098

Reviewed by Keith Miller.

IntlDateTimeFormat and IntlNumberFormat have switch statement over ICU's enums. However it lacks "default" clause so that
the compile error occurs when a new enum value is added in ICU side. We should have "default" clause which just fallbacks
"unknown"_s case. The behavior is not changed since we already have `return "unknown"_s;` statement anyway after the
switch statement. This patch just suppresses a compile error.

* runtime/IntlDateTimeFormat.cpp:
(JSC::IntlDateTimeFormat::partTypeString):
* runtime/IntlNumberFormat.cpp:
(JSC::IntlNumberFormat::partTypeString):

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

4 months ago[ContentChangeObserver] Start tracking implicit transitions at mousemove
zalan@apple.com [Thu, 21 Mar 2019 19:01:47 +0000 (19:01 +0000)]
[ContentChangeObserver] Start tracking implicit transitions at mousemove
https://bugs.webkit.org/show_bug.cgi?id=196054
<rdar://problem/49093840>

Reviewed by Simon Fraser.

Source/WebCore:

This patch fixes the hover menu issue on seriouseats.com. After tapping on the menu items, the submenus show up now.

1. Start observing at mousemove
2. Check if the style change is synchronous or not and start observing it accordingly.

Tests: fast/events/touch/ios/content-observation/0ms-delay-0ms-transition-on-mousemove.html
       fast/events/touch/ios/content-observation/100ms-delay-10ms-transition-on-mousemove.html
       fast/events/touch/ios/content-observation/10ms-delay-0ms-transition-on-mousemove.html
       fast/events/touch/ios/content-observation/10ms-delay-0ms-transition-on-touch-start.html

* page/ios/ContentChangeObserver.cpp:
(WebCore::ContentChangeObserver::adjustObservedState):

LayoutTests:

* fast/events/touch/ios/content-observation/0ms-delay-0ms-transition-on-mousemove-expected.txt: Added.
* fast/events/touch/ios/content-observation/0ms-delay-0ms-transition-on-mousemove.html: Added.
* fast/events/touch/ios/content-observation/100ms-delay-10ms-transition-on-mousemove-expected.txt: Added.
* fast/events/touch/ios/content-observation/100ms-delay-10ms-transition-on-mousemove.html: Added.
* fast/events/touch/ios/content-observation/10ms-delay-0ms-transition-on-mousemove-expected.txt: Added.
* fast/events/touch/ios/content-observation/10ms-delay-0ms-transition-on-mousemove.html: Added.
* fast/events/touch/ios/content-observation/10ms-delay-0ms-transition-on-touch-start-expected.txt: Added.
* fast/events/touch/ios/content-observation/10ms-delay-0ms-transition-on-touch-start.html: Added.

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

4 months agoAbsolute in stacking-context scroller jiggles when scrolled
simon.fraser@apple.com [Thu, 21 Mar 2019 18:58:09 +0000 (18:58 +0000)]
Absolute in stacking-context scroller jiggles when scrolled
https://bugs.webkit.org/show_bug.cgi?id=196010

Reviewed by Zalan Bujtas.

Source/WebCore:

Updating compositing layers after a scroll (in a compositing update on the main thread)
failed to traverse to an absolute layer inside a stacking-context overflow:scroll,
because the overflow's layer didn't have the "hasCompositingAncestor" bit set on it.

This happened because childState.subtreeIsCompositing wasn't being set when indirect
reasons trigger compositing. So clean up RenderLayerCompositor::computeCompositingRequirements()
to set childState.subtreeIsCompositing for "late" compositing decisions, and move the
"Subsequent layers in the parent stacking context also need to composite" chunk
down to after the last compositing decision has been made.

Test: compositing/overflow/absolute-in-overflow.html

* page/scrolling/ScrollingTreeScrollingNode.cpp:
(WebCore::ScrollingTreeScrollingNode::scrollTo):
* page/scrolling/cocoa/ScrollingTreePositionedNode.mm:
(WebCore::ScrollingTreePositionedNode::applyLayerPositions):
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::computeCompositingRequirements):

LayoutTests:

* compositing/overflow/absolute-in-overflow-expected.html: Added.
* compositing/overflow/absolute-in-overflow.html: Added.

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

4 months agoStyle check error "WK_MAC_TBA is neither a version number nor WK_IOS_TBA" is confusing.
timothy@apple.com [Thu, 21 Mar 2019 18:57:09 +0000 (18:57 +0000)]
Style check error "WK_MAC_TBA is neither a version number nor WK_IOS_TBA" is confusing.
https://bugs.webkit.org/show_bug.cgi?id=196088

Reviewed by Brian Burg.

Fix the error messages used when looking for macos(WK_IOS_TBA) or ios(WK_MAC_TBA).
Support checks when only one platform is specified. Also deprecate macosx() and
force the use of macos() instead.

* Scripts/webkitpy/style/checkers/cpp.py:
(check_min_versions_of_wk_api_available):
* Scripts/webkitpy/style/checkers/cpp_unittest.py:
(WebKitStyleTest.test_min_versions_of_wk_api_available):

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

4 months ago[ContentChangeObserver] Start tracking implicit transitions at touchStart
zalan@apple.com [Thu, 21 Mar 2019 18:49:52 +0000 (18:49 +0000)]
[ContentChangeObserver] Start tracking implicit transitions at touchStart
https://bugs.webkit.org/show_bug.cgi?id=196051
<rdar://problem/49092952>

Reviewed by Simon Fraser.

Source/WebCore:

This patch enables transition tracking on touchStart.

1. Start observing for new transitions at touchStart
2. Stop observing at touchEnd
3. Check the next style recalc when the transition is finished (at onAnimationEnd we don't yet have the final computed style).
4. Remove the tracked transition when it is canceled.

Tests: fast/events/touch/ios/content-observation/0ms-transition-on-touch-start.html
       fast/events/touch/ios/content-observation/100ms-transition-on-touch-start.html
       fast/events/touch/ios/content-observation/10ms-delay-transition-on-touch-start.html
       fast/events/touch/ios/content-observation/transition-on-touch-start-and-remove.html

* page/ios/ContentChangeObserver.cpp:
(WebCore::ContentChangeObserver::didAddTransition):
(WebCore::ContentChangeObserver::didFinishTransition):
(WebCore::ContentChangeObserver::didRemoveTransition):
(WebCore::ContentChangeObserver::adjustObservedState):
* page/ios/ContentChangeObserver.h:
(WebCore::ContentChangeObserver::setShouldObserveTransitions):
(WebCore::ContentChangeObserver::clearObservedTransitions):
(WebCore::ContentChangeObserver::hasObservedTransition const):
(WebCore::ContentChangeObserver::hasPendingActivity const):

LayoutTests:

* fast/events/touch/ios/content-observation/0ms-transition-on-touch-start-expected.txt: Added.
* fast/events/touch/ios/content-observation/0ms-transition-on-touch-start.html: Added.
* fast/events/touch/ios/content-observation/100ms-transition-on-touch-start-expected.txt: Added.
* fast/events/touch/ios/content-observation/100ms-transition-on-touch-start.html: Added.
* fast/events/touch/ios/content-observation/10ms-delay-transition-on-touch-start-expected.txt: Added.
* fast/events/touch/ios/content-observation/10ms-delay-transition-on-touch-start.html: Added.
* fast/events/touch/ios/content-observation/transition-on-touch-start-and-remove-expected.txt: Added.
* fast/events/touch/ios/content-observation/transition-on-touch-start-and-remove.html: Added.

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

4 months agoVersioning.
alancoon@apple.com [Thu, 21 Mar 2019 18:46:54 +0000 (18:46 +0000)]
Versioning.

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

4 months ago[ContentChangeObserver] Track hidden elements only while transitioning.
zalan@apple.com [Thu, 21 Mar 2019 18:38:39 +0000 (18:38 +0000)]
[ContentChangeObserver] Track hidden elements only while transitioning.
https://bugs.webkit.org/show_bug.cgi?id=196050
<rdar://problem/49092037>

Reviewed by Simon Fraser.

Use the existing isConsideredHidden() logic to decide whether the current transition should be tracked.

* page/ios/ContentChangeObserver.cpp:
(WebCore::isConsideredHidden):
(WebCore::ContentChangeObserver::didAddTransition):
(WebCore::ContentChangeObserver::StyleChangeScope::StyleChangeScope):
(WebCore::ContentChangeObserver::StyleChangeScope::~StyleChangeScope):
(WebCore::ContentChangeObserver::StyleChangeScope::isConsideredHidden const): Deleted.
* page/ios/ContentChangeObserver.h:

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

4 months ago[ContentChangeObserver] Add support for observing implicit transitions
zalan@apple.com [Thu, 21 Mar 2019 18:33:11 +0000 (18:33 +0000)]
[ContentChangeObserver] Add support for observing implicit transitions
https://bugs.webkit.org/show_bug.cgi?id=195914
<rdar://problem/49091959>

Reviewed by Simon Fraser.

This patch is in preparation for observing elements with property "left" implicit transitions.

This is not a continuous tracking, we are only interested in the start and the end state.
The idea here is to register hidden elements only and check if they become visible by
the end of the transition (and ignore if the transition gets "canceled").

* page/animation/AnimationBase.h:
* page/animation/ImplicitAnimation.cpp:
(WebCore::ImplicitAnimation::ImplicitAnimation):
(WebCore::ImplicitAnimation::~ImplicitAnimation):
(WebCore::ImplicitAnimation::clear):
(WebCore::ImplicitAnimation::onAnimationEnd):
* page/animation/ImplicitAnimation.h:
* page/ios/ContentChangeObserver.cpp:
(WebCore::ContentChangeObserver::didAddTransition):
(WebCore::ContentChangeObserver::removeTransitionIfNeeded):
(WebCore::ContentChangeObserver::didFinishTransition):
(WebCore::ContentChangeObserver::didRemoveTransition):
(WebCore::ContentChangeObserver::didInstallDOMTimer):
* page/ios/ContentChangeObserver.h:
(WebCore::ContentChangeObserver::isObservingTransitions const):
(WebCore::ContentChangeObserver::isObservedPropertyForTransition const):

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

4 months agoWeb Inspector: Page: lazily create the agent
drousso@apple.com [Thu, 21 Mar 2019 18:22:08 +0000 (18:22 +0000)]
Web Inspector: Page: lazily create the agent
https://bugs.webkit.org/show_bug.cgi?id=195592
<rdar://problem/48791916>

Reviewed by Timothy Hatcher.

No change in functionality.

Have more agents save the inspected `Page` so they don't need to access it via the
`InspectorPageAgent`. Make some of `InspectorPageAgent`'s functions `static` so other
agents can use them without needing to have access to an enabled `InspectorPageAgent`.

* inspector/InspectorController.cpp:
(WebCore::InspectorController::InspectorController):
(WebCore::InspectorController::createLazyAgents):

* inspector/agents/InspectorPageAgent.h:
(WebCore::InspectorPageAgent::page): Deleted.
* inspector/agents/InspectorPageAgent.cpp:
(WebCore::InspectorPageAgent::InspectorPageAgent):
(WebCore::InspectorPageAgent::enable):
(WebCore::InspectorPageAgent::disable):
(WebCore::InspectorPageAgent::reload):
(WebCore::InspectorPageAgent::navigate):
(WebCore::InspectorPageAgent::overrideSetting):
(WebCore::InspectorPageAgent::getCookies):
(WebCore::InspectorPageAgent::deleteCookie):
(WebCore::InspectorPageAgent::getResourceTree):
(WebCore::InspectorPageAgent::searchInResources):
(WebCore::InspectorPageAgent::didPaint):
(WebCore::InspectorPageAgent::didLayout):
(WebCore::InspectorPageAgent::didScroll):
(WebCore::InspectorPageAgent::didRecalculateStyle):
(WebCore::InspectorPageAgent::setEmulatedMedia):
(WebCore::InspectorPageAgent::setForcedAppearance):
(WebCore::InspectorPageAgent::getCompositingBordersVisible):
(WebCore::InspectorPageAgent::setCompositingBordersVisible):
(WebCore::InspectorPageAgent::snapshotNode):
(WebCore::InspectorPageAgent::snapshotRect):
(WebCore::InspectorPageAgent::archive):
(WebCore::InspectorPageAgent::mainFrame): Deleted.
(WebCore::InspectorPageAgent::hasIdForFrame const): Deleted.

* inspector/agents/InspectorApplicationCacheAgent.h:
* inspector/agents/InspectorApplicationCacheAgent.cpp:
(WebCore::InspectorApplicationCacheAgent::InspectorApplicationCacheAgent):
(WebCore::InspectorApplicationCacheAgent::updateApplicationCacheStatus):
(WebCore::InspectorApplicationCacheAgent::getFramesWithManifests):
(WebCore::InspectorApplicationCacheAgent::assertFrameWithDocumentLoader):

* inspector/agents/InspectorCanvasAgent.h:
* inspector/agents/InspectorCanvasAgent.cpp:
(WebCore::InspectorCanvasAgent::InspectorCanvasAgent):
(WebCore::InspectorCanvasAgent::enable):

* inspector/agents/InspectorDOMStorageAgent.h:
* inspector/agents/InspectorDOMStorageAgent.cpp:
(WebCore::InspectorDOMStorageAgent::InspectorDOMStorageAgent):
(WebCore::InspectorDOMStorageAgent::findStorageArea):

* inspector/agents/InspectorIndexedDBAgent.h:
* inspector/agents/InspectorIndexedDBAgent.cpp:
(WebCore::InspectorIndexedDBAgent::InspectorIndexedDBAgent):
(WebCore::InspectorIndexedDBAgent::requestDatabaseNames):
(WebCore::InspectorIndexedDBAgent::requestDatabase):
(WebCore::InspectorIndexedDBAgent::requestData):
(WebCore::InspectorIndexedDBAgent::clearObjectStore):

* inspector/agents/page/PageDebuggerAgent.h:
* inspector/agents/page/PageDebuggerAgent.cpp:
(WebCore::PageDebuggerAgent::PageDebuggerAgent):
(WebCore::PageDebuggerAgent::sourceMapURLForScript):
(WebCore::PageDebuggerAgent::breakpointActionLog):
(WebCore::PageDebuggerAgent::injectedScriptForEval):

* inspector/agents/page/PageNetworkAgent.h:
* inspector/agents/page/PageNetworkAgent.cpp:
(WebCore::PageNetworkAgent::PageNetworkAgent):
(WebCore::PageNetworkAgent::loaderIdentifier):
(WebCore::PageNetworkAgent::frameIdentifier):
(WebCore::PageNetworkAgent::setResourceCachingDisabled):
(WebCore::PageNetworkAgent::scriptExecutionContext):

* inspector/InspectorInstrumentation.cpp:
(WebCore::InspectorInstrumentation::didClearWindowObjectInWorldImpl):

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

4 months ago[iOS] Inline -_ensureFormAccessoryView into -formAccessoryView and have -_updateAcces...
dbates@webkit.org [Thu, 21 Mar 2019 18:14:57 +0000 (18:14 +0000)]
[iOS] Inline -_ensureFormAccessoryView into -formAccessoryView and have -_updateAccessory ensure we have a form accessory
https://bugs.webkit.org/show_bug.cgi?id=196021

Reviewed by Wenson Hsieh.

Every caller of -_ensureFormAccessoryView, except -formAccessoryView, immediately follows the call
with a call to -_updateAccessory. Let's just have -_updateAccessory ensure we have a form accessory
view and inline the implementation of -_ensureFormAccessoryView into -formAccessoryView so we can
remove one method.

* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView inputView]): Remove call to -_ensureFormAccessoryView, -_updateAccessory will do
the equivalent work for us.
(-[WKContentView formAccessoryView]): Moved implementation of -_ensureFormAccessoryView into here.
(-[WKContentView _updateAccessory]): Call self.formAccessoryView to ensure we have a form accessory view.
(-[WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
Remove call to -_ensureFormAccessoryView, -_updateAccessory will do
the equivalent work for us.
(-[WKContentView _ensureFormAccessoryView]): Deleted.

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

4 months agoWeb Inspector: Timelines: flatten the overview to show all records, one per line
drousso@apple.com [Thu, 21 Mar 2019 18:03:02 +0000 (18:03 +0000)]
Web Inspector: Timelines: flatten the overview to show all records, one per line
https://bugs.webkit.org/show_bug.cgi?id=191901
<rdar://problem/46423618>

Reviewed by Timothy Hatcher.

* UserInterface/Views/OverviewTimelineView.js:
(WI.OverviewTimelineView):
(WI.OverviewTimelineView.prototype.closed):
(WI.OverviewTimelineView.prototype.get navigationItems): Added.
(WI.OverviewTimelineView.prototype.reset):
(WI.OverviewTimelineView.prototype.layout):
(WI.OverviewTimelineView.prototype.get _relevantTimelines): Added.
(WI.OverviewTimelineView.prototype.get _shouldGroupBySourceCode): Added.
(WI.OverviewTimelineView.prototype._loadExistingRecords): Added.
(WI.OverviewTimelineView.prototype._insertDataGridNode):
(WI.OverviewTimelineView.prototype._addResourceToDataGridIfNeeded):
(WI.OverviewTimelineView.prototype._addSourceCodeTimeline):
(WI.OverviewTimelineView.prototype._processPendingRepresentedObjects):
(WI.OverviewTimelineView.prototype._handleGroupBySourceCodeSettingChanged): Added.
(WI.OverviewTimelineView.prototype._handleGroupBySourceCodeNavigationItemCheckedDidChange): Added.
(WI.OverviewTimelineView.prototype._handleTimelineRecordAdded): Added.
(WI.OverviewTimelineView.prototype._sourceCodeTimelineAdded):
(WI.OverviewTimelineView.prototype._networkTimelineRecordAdded): Deleted.
Listen for new records on all timelines. Add each record as a new line. Since each timeline
has different data to display, only show the "name" and "graph" for all records.

* UserInterface/Views/TimelineRecordingContentView.js:
(WI.TimelineRecordingContentView):
(WI.TimelineRecordingContentView.prototype._currentContentViewDidChange):
(WI.TimelineRecordingContentView.prototype._updateImportedView): Deleted.
When viewing the overview of an imported recording, show the non-grouped overview.

* UserInterface/Models/TimelineRecording.js:
(WI.TimelineRecording.prototype.addRecord):
(WI.TimelineRecording.prototype._keyForRecord):
Drive-by: show Media timeline events under the owner frame's resource when grouped.
* UserInterface/Views/TimelineRecordBar.css:
(.timeline-record-bar.timeline-record-type-script.garbage-collected > .segment, .timeline-record-bar.timeline-record-type-heap-allocations > .segment): Added.
(.timeline-record-bar.timeline-record-type-script.garbage-collected > .segment): Deleted.

* UserInterface/Base/Setting.js:
Add setting for controlling the Timeline overview grouping.

* UserInterface/Main.html:
* UserInterface/Views/SourceCodeTimelineTreeElement.js: Removed.
* UserInterface/Views/TimelineRecordingImportedView.js: Removed.
* UserInterface/Views/TimelineRecordingImportedView.css: Removed.
Remove unused files.

* Localizations/en.lproj/localizedStrings.js:

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

4 months agoWeb Inspector: Sources: the name of the file should not be used as a folder
drousso@apple.com [Thu, 21 Mar 2019 18:00:43 +0000 (18:00 +0000)]
Web Inspector: Sources: the name of the file should not be used as a folder
https://bugs.webkit.org/show_bug.cgi?id=196064
<rdar://problem/49097710>

Reviewed by Timothy Hatcher.

* UserInterface/Views/GeneralTreeElement.js:
(WI.GeneralTreeElement.prototype.createFoldersAsNeededForSubpath):

* UserInterface/Views/SourcesNavigationSidebarPanel.js:
(WI.SourcesNavigationSidebarPanel.prototype._addResource):
Drive-by: sort resources in each folder by name when grouping by path.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@243300 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months agoJSObject::putDirectIndexSlowOrBeyondVectorLength should check if indexIsSufficientlyB...
tzagallo@apple.com [Thu, 21 Mar 2019 17:42:41 +0000 (17:42 +0000)]
JSObject::putDirectIndexSlowOrBeyondVectorLength should check if indexIsSufficientlyBeyondLengthForSparseMap
https://bugs.webkit.org/show_bug.cgi?id=196078
<rdar://problem/35925380>

Reviewed by Mark Lam.

JSTests:

Add a new benchmark that allocates several objects and invokes put_by_val_direct
with a large index. run-jsc-benchmarks says "definitely 1.6178x faster".

* microbenchmarks/put-by-val-direct-large-index.js: Added.

Source/JavaScriptCore:

Unlike the other variations of putByIndex, it only checked if the index
was larger than MIN_SPARSE_ARRAY_INDEX when the indexingType was
ALL_BLANK_INDEXING_TYPES. This resulted in a huge butterfly being
allocated for object literals (e.g. `{[9e4]: ...}`) and objects parsed
from JSON.

* runtime/JSObject.cpp:
(JSC::JSObject::putDirectIndexSlowOrBeyondVectorLength):

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

4 months agoHardening: Use WeakPtrs in VideoFullscreenInterface{Mac,AVKit}
bfulgham@apple.com [Thu, 21 Mar 2019 17:21:38 +0000 (17:21 +0000)]
Hardening: Use WeakPtrs in VideoFullscreenInterface{Mac,AVKit}
https://bugs.webkit.org/show_bug.cgi?id=196052
<rdar://problem/48778571>

Reviewed by Eric Carlson.

The VideoFullscreenInterface{Mac,AVKit} implementations store their fullscreen model
and fullscreen change observer members as bare pointers, something we've been working
to eliminate.

This patch corrects this oversight.

No new tests since no changes in behavior.

* platform/cocoa/VideoFullscreenChangeObserver.h:
* platform/cocoa/VideoFullscreenModel.h:
* platform/ios/VideoFullscreenInterfaceAVKit.h:
* platform/ios/VideoFullscreenInterfaceAVKit.mm:
(VideoFullscreenInterfaceAVKit::setVideoFullscreenModel):
(VideoFullscreenInterfaceAVKit::setVideoFullscreenChangeObserver):
(VideoFullscreenInterfaceAVKit::presentingViewController):
(VideoFullscreenInterfaceAVKit::invalidate):
(VideoFullscreenInterfaceAVKit::preparedToExitFullscreen):
(VideoFullscreenInterfaceAVKit::shouldExitFullscreenWithReason):
(VideoFullscreenInterfaceAVKit::doSetup):
* platform/mac/VideoFullscreenInterfaceMac.h:
(WebCore::VideoFullscreenInterfaceMac::videoFullscreenModel const):
(WebCore::VideoFullscreenInterfaceMac::videoFullscreenChangeObserver const):
* platform/mac/VideoFullscreenInterfaceMac.mm:
(WebCore::VideoFullscreenInterfaceMac::setVideoFullscreenModel):
(WebCore::VideoFullscreenInterfaceMac::setVideoFullscreenChangeObserver):
(WebCore::VideoFullscreenInterfaceMac::enterFullscreen):
(WebCore::VideoFullscreenInterfaceMac::invalidate):

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

4 months agoUpdate status inactive committers' status to 'contributor'.
ap@apple.com [Thu, 21 Mar 2019 17:11:25 +0000 (17:11 +0000)]
Update status inactive committers' status to 'contributor'.

* Scripts/webkitpy/common/config/contributors.json:

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

4 months agoSmart delete for paragraphs.
megan_gardner@apple.com [Thu, 21 Mar 2019 17:03:17 +0000 (17:03 +0000)]
Smart delete for paragraphs.
https://bugs.webkit.org/show_bug.cgi?id=195837

Reviewed by Ryosuke Niwa.

Remove additional newlines to maintain spacing around paragraphs.

Tests: editing/pasteboard/smart-delete-paragraph-001.html
       editing/pasteboard/smart-delete-paragraph-002.html
       editing/pasteboard/smart-delete-paragraph-003.html
       editing/pasteboard/smart-delete-paragraph-004.html

* editing/DeleteSelectionCommand.cpp:
(WebCore::isBlankLine):
(WebCore::DeleteSelectionCommand::initializePositionData):

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

4 months agoCachedUnlinkedSourceCodeShape::m_provider should be a CachedRefPtr
tzagallo@apple.com [Thu, 21 Mar 2019 16:45:25 +0000 (16:45 +0000)]
CachedUnlinkedSourceCodeShape::m_provider should be a CachedRefPtr
https://bugs.webkit.org/show_bug.cgi?id=196079

Reviewed by Saam Barati.

It was mistakenly cached as CachedPtr, which was leaking the decoded SourceProvider.

* runtime/CachedTypes.cpp:
(JSC::CachedUnlinkedSourceCodeShape::encode):

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

4 months agoPlacate exception check validation in operationArrayIndexOfString().
mark.lam@apple.com [Thu, 21 Mar 2019 16:36:20 +0000 (16:36 +0000)]
Placate exception check validation in operationArrayIndexOfString().
https://bugs.webkit.org/show_bug.cgi?id=196067
<rdar://problem/49056572>

Reviewed by Michael Saboff.

JSTests:

* stress/string-equal-exception-check.js: Added.

Source/JavaScriptCore:

* dfg/DFGOperations.cpp:

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

4 months ago[JSC][x86] Drop support for x87 floating point
commit-queue@webkit.org [Thu, 21 Mar 2019 16:29:32 +0000 (16:29 +0000)]
[JSC][x86] Drop support for x87 floating point
https://bugs.webkit.org/show_bug.cgi?id=194853

Patch by Xan Lopez <xan@igalia.com> on 2019-03-21
Reviewed by Don Olmstead.

Source/JavaScriptCore:

Require SSE2 throughout the codebase, and remove x87 support where
it was optionally available. SSE2 detection happens at compile
time through a static_assert.

* assembler/MacroAssemblerX86.h:
(JSC::MacroAssemblerX86::storeDouble):
(JSC::MacroAssemblerX86::moveDoubleToInts):
(JSC::MacroAssemblerX86::supportsFloatingPoint):
(JSC::MacroAssemblerX86::supportsFloatingPointTruncate):
(JSC::MacroAssemblerX86::supportsFloatingPointSqrt):
(JSC::MacroAssemblerX86::supportsFloatingPointAbs):
* assembler/MacroAssemblerX86Common.cpp:
* assembler/MacroAssemblerX86Common.h:
(JSC::MacroAssemblerX86Common::moveDouble):
(JSC::MacroAssemblerX86Common::loadDouble):
(JSC::MacroAssemblerX86Common::loadFloat):
(JSC::MacroAssemblerX86Common::storeDouble):
(JSC::MacroAssemblerX86Common::storeFloat):
(JSC::MacroAssemblerX86Common::convertDoubleToFloat):
(JSC::MacroAssemblerX86Common::convertFloatToDouble):
(JSC::MacroAssemblerX86Common::addDouble):
(JSC::MacroAssemblerX86Common::addFloat):
(JSC::MacroAssemblerX86Common::divDouble):
(JSC::MacroAssemblerX86Common::divFloat):
(JSC::MacroAssemblerX86Common::subDouble):
(JSC::MacroAssemblerX86Common::subFloat):
(JSC::MacroAssemblerX86Common::mulDouble):
(JSC::MacroAssemblerX86Common::mulFloat):
(JSC::MacroAssemblerX86Common::convertInt32ToDouble):
(JSC::MacroAssemblerX86Common::convertInt32ToFloat):
(JSC::MacroAssemblerX86Common::branchDouble):
(JSC::MacroAssemblerX86Common::branchFloat):
(JSC::MacroAssemblerX86Common::compareDouble):
(JSC::MacroAssemblerX86Common::compareFloat):
(JSC::MacroAssemblerX86Common::branchTruncateDoubleToInt32):
(JSC::MacroAssemblerX86Common::truncateDoubleToInt32):
(JSC::MacroAssemblerX86Common::truncateFloatToInt32):
(JSC::MacroAssemblerX86Common::branchConvertDoubleToInt32):
(JSC::MacroAssemblerX86Common::branchDoubleNonZero):
(JSC::MacroAssemblerX86Common::branchDoubleZeroOrNaN):
(JSC::MacroAssemblerX86Common::lshiftPacked):
(JSC::MacroAssemblerX86Common::rshiftPacked):
(JSC::MacroAssemblerX86Common::orPacked):
(JSC::MacroAssemblerX86Common::move32ToFloat):
(JSC::MacroAssemblerX86Common::moveFloatTo32):
(JSC::MacroAssemblerX86Common::moveConditionallyDouble):
(JSC::MacroAssemblerX86Common::moveConditionallyFloat):
* offlineasm/x86.rb:
* runtime/MathCommon.cpp:
(JSC::operationMathPow):

Tools:

Force SSE2 on x86/32bit builds.

* Scripts/webkitdirs.pm:
(generateBuildSystemFromCMakeProject):

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

4 months agoUnreviewed, rolling out r243250.
sroberts@apple.com [Thu, 21 Mar 2019 16:21:15 +0000 (16:21 +0000)]
Unreviewed, rolling out r243250.

Causing 109 Failures and 2 crashes on iOS Sim Debug
OpenSource/Internal queues

Reverted changeset:

"[iOS WK2] Turn on async overflow scrolling by default"
https://bugs.webkit.org/show_bug.cgi?id=196011
https://trac.webkit.org/changeset/243250

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

4 months agoFix possible memory leak when dismissing a color picker
bfulgham@apple.com [Thu, 21 Mar 2019 15:51:07 +0000 (15:51 +0000)]
Fix possible memory leak when dismissing a color picker
https://bugs.webkit.org/show_bug.cgi?id=196026
<rdar://problem/48778568>

Reviewed by Wenson Hsieh.

Fix a problem with WebPageProxy::endColorPicker where an early return could leave a color picker
with a +1 reference count after dismissing it.

* UIProcess/WebColorPicker.cpp:
(WebKit::WebColorPicker::endPicker):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::endColorPicker):
(WebKit::WebPageProxy::didEndColorPicker):

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

4 months agoFixed ContentChangeObserver build error.
commit-queue@webkit.org [Thu, 21 Mar 2019 15:43:35 +0000 (15:43 +0000)]
Fixed ContentChangeObserver build error.
https://bugs.webkit.org/show_bug.cgi?id=195993

Patch by Cathie Chen <cathiechen@igalia.com> on 2019-03-21
Reviewed by Rob Buis.

EWS IOS compiler complains after adding new files in Bug 157743.
ContentChangeObserver.h should have forward declaration for Element.

* page/ios/ContentChangeObserver.cpp:
* page/ios/ContentChangeObserver.h:

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

4 months ago[GLIB] User data not correctly passed to callback of functions and constructors with...
commit-queue@webkit.org [Thu, 21 Mar 2019 14:36:12 +0000 (14:36 +0000)]
[GLIB] User data not correctly passed to callback of functions and constructors with no parameters
https://bugs.webkit.org/show_bug.cgi?id=196073

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2019-03-21
Reviewed by Michael Catanzaro.

Source/JavaScriptCore:

This is because GClosure always expects a first parameter as instance. In case of functions or constructors with
no parameters we insert a fake instance which is just a null pointer that is ignored by the callback. But
if the function/constructor has user data the callback will expect one parameter for the user data. In that case
we can simply swap instance/user data so that the fake instance will be the second argument and user data the
first one.

* API/glib/JSCClass.cpp:
(jscClassCreateConstructor): Use g_cclosure_new_swap() if parameters is empty and user data was provided.
* API/glib/JSCValue.cpp:
(jscValueFunctionCreate): Ditto.

Tools:

Add test cases to check functions and constructors with no arguments but receiving user data.

* TestWebKitAPI/Tests/JavaScriptCore/glib/TestJSC.cpp:
(checkUserData):
(testJSCFunction):
(fooCreateWithUserData):
(testJSCClass):

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

4 months agoUnreviewed. Fix GTK build with GLib < 2.58 after r243285.
carlosgc@webkit.org [Thu, 21 Mar 2019 13:09:00 +0000 (13:09 +0000)]
Unreviewed. Fix GTK build with GLib < 2.58 after r243285.

Add g_assert_cmpfloat_with_epsilon macro if not defined.

* TestWebKitAPI/glib/WebKitGLib/TestMain.h:

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

4 months ago[GStreamer][EME][Clearkey] Take a lock in keys() method
cturner@igalia.com [Thu, 21 Mar 2019 12:14:04 +0000 (12:14 +0000)]
[GStreamer][EME][Clearkey] Take a lock in keys() method
https://bugs.webkit.org/show_bug.cgi?id=195900

Reviewed by Xabier Rodriguez-Calvar.

This isn't ideal, since we're taking a lock for every frame to
decode. But there's no good way around it when keys can be
made unavailable at any time via an update() call, so we can't
cache key IDs in the decryptor.

Covered by test imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-multikey.https.html

* platform/encryptedmedia/clearkey/CDMClearKey.cpp:
(WebCore::CDMInstanceClearKey::keys const): This method is called
from GStreamer's decode() method, which runs off the main thread,
therefore we need to take a lock.
* platform/encryptedmedia/clearkey/CDMClearKey.h:

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

4 months ago[JSC][32-bit] Build failure after r243232
commit-queue@webkit.org [Thu, 21 Mar 2019 10:35:58 +0000 (10:35 +0000)]
[JSC][32-bit] Build failure after r243232
https://bugs.webkit.org/show_bug.cgi?id=196068

Patch by Pablo Saavedra <psaavedra@igalia.com> on 2019-03-21
Reviewed by Mark Lam.

* dfg/DFGOSRExit.cpp:
(JSC::DFG::reifyInlinedCallFrames):
* dfg/DFGOSRExitCompilerCommon.cpp:
(JSC::DFG::reifyInlinedCallFrames):

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

4 months ago[GTK][WPE] Add API to provide geolocation information
carlosgc@webkit.org [Thu, 21 Mar 2019 10:10:35 +0000 (10:10 +0000)]
[GTK][WPE] Add API to provide geolocation information
https://bugs.webkit.org/show_bug.cgi?id=195940

Reviewed by Michael Catanzaro.

.:

Build with geolocation enabled by default in both GTK and WPE. In GTK add a specific USE_GEOCLUE build option
instead of using ENABLE_GEOLOCATION.

* Source/cmake/OptionsGTK.cmake:
* Source/cmake/OptionsWPE.cmake:

Source/WebCore:

Replace ENABLE(GEOLOCATION) with USE(GEOCLUE).

* PlatformGTK.cmake:
* platform/geoclue/GeolocationProviderGeoclue.cpp:
* platform/geoclue/GeolocationProviderGeoclue.h:
* platform/geoclue/GeolocationProviderGeoclueClient.h:

Source/WebCore/platform/gtk/po:

* POTFILES.in: Add WebKitGeolocationManager.cpp.

Source/WebKit:

Add WebKitGeolocationManager public class to handle geolocation position updates. WebKitGeolocationProvider has
been removed and the default implementation based on GeoClue is done by WebKitGeolocationManager.

* PlatformGTK.cmake:
* PlatformWPE.cmake:
* SourcesGTK.txt:
* SourcesWPE.txt:
* UIProcess/API/glib/WebKitGeolocationManager.cpp: Added.
(_WebKitGeolocationPosition::_WebKitGeolocationPosition):
(webkit_geolocation_position_new):
(webkit_geolocation_position_copy):
(webkit_geolocation_position_free):
(webkit_geolocation_position_set_timestamp):
(webkit_geolocation_position_set_altitude):
(webkit_geolocation_position_set_altitude_accuracy):
(webkit_geolocation_position_set_heading):
(webkit_geolocation_position_set_speed):
(webkitGeolocationManagerStop):
(webkitGeolocationManagerSetEnableHighAccuracy):
(webkitGeolocationManagerCreate):
(webkitGeolocationManagerGetProperty):
(webkit_geolocation_manager_class_init):
(webkit_gelocation_manager_update_position):
(webkit_gelocation_manager_failed):
(webkit_geolocation_manager_get_enable_high_accuracy):
* UIProcess/API/glib/WebKitGeolocationManagerPrivate.h: Copied from Source/WebCore/platform/geoclue/GeolocationProviderGeoclueClient.h.
* UIProcess/API/glib/WebKitGeolocationProvider.cpp: Removed.
* UIProcess/API/glib/WebKitGeolocationProvider.h: Removed.
* UIProcess/API/glib/WebKitWebContext.cpp:
(webkitWebContextConstructed): Create a WebKitGeolocationManager instead of a WebKitGeolocationProvider.
(webkit_web_context_get_geolocation_manager): Get the WebKitGeolocationManager.
* UIProcess/API/gtk/WebKitGeolocationManager.h: Added.
* UIProcess/API/gtk/WebKitWebContext.h:
* UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
* UIProcess/API/gtk/docs/webkit2gtk-4.0.types:
* UIProcess/API/gtk/docs/webkit2gtk-docs.sgml:
* UIProcess/API/gtk/webkit2.h:
* UIProcess/API/wpe/WebKitGeolocationManager.h: Added.
* UIProcess/API/wpe/WebKitWebContext.h:
* UIProcess/API/wpe/docs/wpe-0.1-sections.txt:
* UIProcess/API/wpe/docs/wpe-docs.sgml:
* UIProcess/API/wpe/webkit.h:

Tools:

Add a new test to check the new API.

* TestWebKitAPI/Tests/WebKitGLib/TestGeolocationManager.cpp: Added.
(testGeolocationManagerCurrentPosition):
(testGeolocationManagerWatchPosition):
(beforeAll):
(afterAll):
* TestWebKitAPI/Tests/WebKitGLib/TestUIClient.cpp:
(testWebViewGeolocationPermissionRequests): Stop using ENABLE(GEOLOCATION) conditionals for geolocation tests.
(beforeAll): Ditto.
* TestWebKitAPI/glib/CMakeLists.txt:

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