WebKit-https.git
13 months agoFix things after r234640
achristensen@apple.com [Tue, 7 Aug 2018 17:36:47 +0000 (17:36 +0000)]
Fix things after r234640
https://bugs.webkit.org/show_bug.cgi?id=188133

Source/WebKit:

* UIProcess/WebFramePolicyListenerProxy.cpp:
(WebKit::WebFramePolicyListenerProxy::use):
(WebKit::WebFramePolicyListenerProxy::download):
(WebKit::WebFramePolicyListenerProxy::ignore):
Fix assertions as I had in r234552.  Also fix a possible race condition with fragment navigations by only keeping the first "use" response.
* config.h:
Fix IOSMAC build.

LayoutTests:

* platform/mac-sierra-wk2/http/tests/navigation/keyboard-events-during-provisional-navigation-expected.txt: Added.
Added test expectation for Sierra, which has no safe browsing framework.

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

13 months agoPost-review feedback after r234614.
wenson_hsieh@apple.com [Tue, 7 Aug 2018 17:21:04 +0000 (17:21 +0000)]
Post-review feedback after r234614.
https://bugs.webkit.org/show_bug.cgi?id=188322
<rdar://problem/42455270>

Reviewed by Sam Weinig.

Use std::round instead of roundl — there's no reason to go from double to long double precision when rounding.

* TestWebKitAPI/Tests/ios/KeyboardInputTestsIOS.mm:
(rounded):

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

13 months agoRemoved unused *AllInOne.cpp
achristensen@apple.com [Tue, 7 Aug 2018 17:15:26 +0000 (17:15 +0000)]
Removed unused *AllInOne.cpp
https://bugs.webkit.org/show_bug.cgi?id=188369

Reviewed by Yusuke Suzuki.

* accessibility/AccessibilityAllInOne.cpp: Removed.
* bindings/js/JSBindingsAllInOne.cpp: Removed.
* css/CSSAllInOne.cpp: Removed.
* dom/DOMAllInOne.cpp: Removed.
* editing/EditingAllInOne.cpp: Removed.
* html/HTMLElementsAllInOne.cpp: Removed.
* inspector/InspectorAllInOne.cpp: Removed.
* loader/appcache/ApplicationCacheAllInOne.cpp: Removed.
* mathml/MathMLAllInOne.cpp: Removed.
* platform/text/TextAllInOne.cpp: Removed.
* rendering/RenderingAllInOne.cpp: Removed.
* rendering/style/StyleAllInOne.cpp: Removed.
* rendering/svg/RenderSVGAllInOne.cpp: Removed.
* svg/SVGAllInOne.cpp: Removed.

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

13 months agoUnreviewed, Layout Test imported/w3c/web-platform-tests/service-workers/service-worke...
yusukesuzuki@slowstart.org [Tue, 7 Aug 2018 16:29:29 +0000 (16:29 +0000)]
Unreviewed, Layout Test imported/w3c/web-platform-tests/service-workers/service-worker/skip-waiting-installed.https.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=188246

Unreviewed test gardening, marked test as flaky because the test is wrong.

* TestExpectations:

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

13 months agoWeb Inspector: Add another Protocol Version (iOS 12)
commit-queue@webkit.org [Tue, 7 Aug 2018 16:19:44 +0000 (16:19 +0000)]
Web Inspector: Add another Protocol Version (iOS 12)
https://bugs.webkit.org/show_bug.cgi?id=188359
<rdar://problem/42981364>

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

* UserInterface/Protocol/Legacy/12.0/InspectorBackendCommands.js: Added.
* Versions/Inspector-iOS-12.0.json: Added.

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

13 months ago[macOS] Scrollbars are not visible when using 3rd party mouse
pvollan@apple.com [Tue, 7 Aug 2018 16:15:26 +0000 (16:15 +0000)]
[macOS] Scrollbars are not visible when using 3rd party mouse
https://bugs.webkit.org/show_bug.cgi?id=188372

Reviewed by Simon Fraser.

Source/WebCore/PAL:

Added declaration of NSScrollerImpPair class method. This method updates all NSScrollerImpPairs
with a new recommended scroller style.

* pal/spi/mac/NSScrollerImpSPI.h:

Source/WebKit:

The scrollbars are not visible because they are not updated with the recommended scroller style
when a 3rd party mouse is used. They still have the overlay style, but the system is
recommending the legacy style in this case. The UI process is currently notifying the WebProcess
about changes in the scroller style, but the current style is not set in the WebProcess on
startup. This patch sets the initial scroller style in the WebProcess by passing it as part of
the WebProcess creation parameters. Also, to make sure hot-plugging of a 3rd party mouse is
is visually changing the scroller style of the current page, a class method in NSScrollerImpPair
is called to update all NSScrollerImpPairs with the new recommended style. This method was
previously called by AppKit, but after blocking WindowServer access, AppKit is no longer calling
this method. This has been manually tested by using a 3rd party mouse.

* Shared/WebProcessCreationParameters.cpp:
(WebKit::WebProcessCreationParameters::encode const):
(WebKit::WebProcessCreationParameters::decode):
* Shared/WebProcessCreationParameters.h:
* UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::WebProcessPool::platformInitializeWebProcess):
* WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::platformInitializeWebProcess):
(WebKit::WebProcess::scrollerStylePreferenceChanged):

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

13 months ago[Wi-Fi Assertions] suspendWiFiAssertions() should be able to delay sending ProcessRea...
aestes@apple.com [Tue, 7 Aug 2018 16:08:48 +0000 (16:08 +0000)]
[Wi-Fi Assertions] suspendWiFiAssertions() should be able to delay sending ProcessReadyToSuspend
https://bugs.webkit.org/show_bug.cgi?id=188373
<rdar://problem/42857398>

Reviewed by Tim Horton.

* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::actualPrepareToSuspend):
* NetworkProcess/NetworkProcess.h:
* NetworkProcess/cocoa/NetworkProcessCocoa.mm:
(WebKit::NetworkProcess::platformPrepareToSuspend):
(WebKit::NetworkProcess::platformProcessDidTransitionToBackground):
* NetworkProcess/curl/NetworkProcessCurl.cpp:
(WebKit::NetworkProcess::platformPrepareToSuspend):
* NetworkProcess/soup/NetworkProcessSoup.cpp:
(WebKit::NetworkProcess::platformPrepareToSuspend):

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

13 months ago[MiniBrowser][Win] Allow selection of recent user agents
don.olmstead@sony.com [Tue, 7 Aug 2018 14:36:34 +0000 (14:36 +0000)]
[MiniBrowser][Win] Allow selection of recent user agents
https://bugs.webkit.org/show_bug.cgi?id=188371

Reviewed by Fujii Hironori.

Updates the user agent spoofing strings to the latest released
versions and adds Microsoft Edge's user agent.

Moves the menu item selection to the common base class, BrowserWindow
to support user agent spoofing in a WebKitLegacyBrowserWindow and
WebKitBrowserWindow.

* MiniBrowser/win/BrowserWindow.cpp: Added.
(BrowserWindow::setUserAgent):
* MiniBrowser/win/BrowserWindow.h:
* MiniBrowser/win/CMakeLists.txt:
* MiniBrowser/win/MainWindow.cpp:
(MainWindow::toggleMenuItem):
* MiniBrowser/win/MiniBrowserLib.rc:
* MiniBrowser/win/MiniBrowserLibResource.h:
* MiniBrowser/win/WebKitBrowserWindow.cpp:
* MiniBrowser/win/WebKitBrowserWindow.h:
* MiniBrowser/win/WebKitLegacyBrowserWindow.cpp:
(WebKitLegacyBrowserWindow::setUserAgent):
* MiniBrowser/win/WebKitLegacyBrowserWindow.h:

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

13 months agoUse a more specific PtrTag for PlatformRegisters PC and LR.
mark.lam@apple.com [Tue, 7 Aug 2018 13:11:49 +0000 (13:11 +0000)]
Use a more specific PtrTag for PlatformRegisters PC and LR.
https://bugs.webkit.org/show_bug.cgi?id=188366
<rdar://problem/42984123>

Reviewed by Keith Miller.

Also fixed a bug in linkRegister(), which was previously returning the PC instead
of LR.  It now returns LR.

* runtime/JSCPtrTag.h:
* runtime/MachineContext.h:
(JSC::MachineContext::instructionPointer):
(JSC::MachineContext::linkRegister):
* runtime/VMTraps.cpp:
(JSC::SignalContext::SignalContext):
* tools/SigillCrashAnalyzer.cpp:
(JSC::SignalContext::SignalContext):

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

13 months agoHardcoded LFENCE instruction
commit-queue@webkit.org [Tue, 7 Aug 2018 12:50:23 +0000 (12:50 +0000)]
Hardcoded LFENCE instruction
https://bugs.webkit.org/show_bug.cgi?id=188145

Patch by Karo Gyoker <karogyoker2+webkit@gmail.com> on 2018-08-07
Reviewed by Filip Pizlo.

Remove lfence instruction because it is crashing systems without SSE2 and
this is not the way how WebKit mitigates Spectre.

Source/JavaScriptCore:

* runtime/JSLock.cpp:
(JSC::JSLock::didAcquireLock):
(JSC::JSLock::willReleaseLock):

Source/WTF:

* wtf/Atomics.h:
(WTF::crossModifyingCodeFence):
(WTF::speculationFence): Deleted.
(WTF::x86_lfence): Deleted.

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

13 months agoUnreviewed, add a new address to my configuration
utatane.tea@gmail.com [Tue, 7 Aug 2018 10:59:40 +0000 (10:59 +0000)]
Unreviewed, add a new address to my configuration

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

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

13 months agoWeb process never leaves memory pressured state if caused by process size limit
antti@apple.com [Tue, 7 Aug 2018 10:01:18 +0000 (10:01 +0000)]
Web process never leaves memory pressured state if caused by process size limit
https://bugs.webkit.org/show_bug.cgi?id=188299
<rdar://problem/42157442>

Reviewed by Darin Adler.

For vm memory pressure warnings we get notified when exiting the state and we can clear
the isUnderMemoryPressure bit. However as a compatibility behavior we were also notified using
the same event when approaching the process size limit. In this case there is no "all clear"
event so we'd stay in pressured state forever, leading to unnecessarily degraded user experience.

* WTF.xcodeproj/project.pbxproj:
* wtf/cocoa/MemoryPressureHandlerCocoa.mm:
(WTF::MemoryPressureHandler::install):

Install a handler for process size limit events. This disables the compatibility behavior,
vm pressure events will be received for vm pressure only.

Process size limit events are treated as one-shot. We do cleanups based on criticality but
don't enter the pressured state.

(WTF::MemoryPressureHandler::uninstall):
(WTF::MemoryPressureHandler::holdOff):
* wtf/spi/darwin/DispatchSPI.h: Added.

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

13 months ago[WPE][GTK] Handle some virtual keys commonly used on TVs
carlosgc@webkit.org [Tue, 7 Aug 2018 09:40:52 +0000 (09:40 +0000)]
[WPE][GTK] Handle some virtual keys commonly used on TVs
https://bugs.webkit.org/show_bug.cgi?id=188375

Reviewed by Žan Doberšek.

* platform/gtk/PlatformKeyboardEventGtk.cpp:
(WebCore::PlatformKeyboardEvent::keyValueForGdkKeyCode):
(WebCore::PlatformKeyboardEvent::windowsKeyCodeForGdkKeyCode):
* platform/wpe/PlatformKeyboardEventWPE.cpp:
(WebCore::PlatformKeyboardEvent::keyValueForWPEKeyCode):
(WebCore::PlatformKeyboardEvent::windowsKeyCodeForWPEKeyCode):

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

13 months ago[Nicosia] Add Nicosia::CompositionLayerTextureMapperImpl
zandobersek@gmail.com [Tue, 7 Aug 2018 09:08:49 +0000 (09:08 +0000)]
[Nicosia] Add Nicosia::CompositionLayerTextureMapperImpl
https://bugs.webkit.org/show_bug.cgi?id=188348

Reviewed by Carlos Garcia Campos.

Add the Nicosia::CompositionLayerTextureMapperImpl class, the
TextureMapper-specific implementation that will extend the
CompositionLayer class.

The important deatil of this implementation is the TextureMapperLayer
object that's expected to be managed by the composition controller. As
such, it is placed inside the CompositionState struct to clearly
indicate its utility and expected place of management. In the current
setup, this place would be the CoordinatedGraphicsScene class.

The Nicosia::CompositionLayer object that's spawned for each
CoordinatedGraphicsLayer instance is now switched to using the
CompositionLayerTextureMapperImpl object, with the local temporary no-op
CompositionLayer::Impl class removed.

* platform/TextureMapper.cmake:
* platform/graphics/nicosia/texmap/NicosiaCompositionLayerTextureMapperImpl.cpp: Added.
(Nicosia::CompositionLayerTextureMapperImpl::createFactory):
* platform/graphics/nicosia/texmap/NicosiaCompositionLayerTextureMapperImpl.h: Added.
* platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:
(WebCore::CoordinatedGraphicsLayer::CoordinatedGraphicsLayer):
(): Deleted.

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

13 months ago[Nicosia] Add the TextureMapper-specific ContentLayer::Impl derivative
zandobersek@gmail.com [Tue, 7 Aug 2018 09:03:57 +0000 (09:03 +0000)]
[Nicosia] Add the TextureMapper-specific ContentLayer::Impl derivative
https://bugs.webkit.org/show_bug.cgi?id=188344

Reviewed by Carlos Garcia Campos.

Add Nicosia::ContentLayerTextureMapperImpl class, providing the
TextureMapper-specific implementation that derives from the
ContentLayer::Impl class and which can be used by the
Nicosia::ContentLayer instances.

Internally a TextureMapperPlatformLayerProxy is created, and is
accessible to others through a getter. This way the content producers
can push new buffers into this proxy object, and the scene compositor
can take these buffers for display purposes.

Nicosia::ContentLayerTextureMapperImpl::swapBuffersIfNeeded() will be
called during layer flushes, and the call will cause the content layer
clients to take their texture, wrap it into a buffer, and push it into
the TextureMapperPlatformLayerProxy object. At the moment this operation
is required by the ImageBuffer and GraphicsContext3D producers.

The Client object is managed under its own lock. While the producers
will only live on the main thread, the thread-safe check in the
destructor is necessary in case the ContentLayerTextureMapperImpl object
ends up being destroyed on some other thread.

The patch only adds the class implementation. It will be integrated into
the layer tree later, once all the other pieces of the puzzle land.

* platform/TextureMapper.cmake:
* platform/graphics/nicosia/texmap/NicosiaContentLayerTextureMapperImpl.cpp: Added.
(Nicosia::ContentLayerTextureMapperImpl::createFactory):
(Nicosia::ContentLayerTextureMapperImpl::ContentLayerTextureMapperImpl):
(Nicosia::ContentLayerTextureMapperImpl::~ContentLayerTextureMapperImpl):
(Nicosia::ContentLayerTextureMapperImpl::invalidateClient):
(Nicosia::ContentLayerTextureMapperImpl::swapBuffersIfNeeded):
* platform/graphics/nicosia/texmap/NicosiaContentLayerTextureMapperImpl.h: Added.

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

13 months agoMake DOMWindow::scrollBy rely on DOMWindow::scrollTo
commit-queue@webkit.org [Tue, 7 Aug 2018 08:30:39 +0000 (08:30 +0000)]
Make DOMWindow::scrollBy rely on DOMWindow::scrollTo
https://bugs.webkit.org/show_bug.cgi?id=188343

Patch by Frederic Wang <fwang@igalia.com> on 2018-08-07
Reviewed by Darin Adler.

This patch makes DOMWindow::scrollBy rely on DOMWindow::scrollTo in order to perform actual
scrolling of the view. In particular, this reduces the number of code path to modify in order
to implement the ScrollBehavior option (bug 188043). The only change is an optimization when
scrolling to position (0, 0) but it is not observable.

No new tests, behavior unchanged and already tested.

* page/DOMWindow.cpp:
(WebCore::DOMWindow::scrollBy const): Add the current view position to the scrollBy offset in
order to obtain the scrollTo offset.

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

13 months agoDe-flake some animation tests
simon.fraser@apple.com [Tue, 7 Aug 2018 03:28:56 +0000 (03:28 +0000)]
De-flake some animation tests
https://bugs.webkit.org/show_bug.cgi?id=188356

Reviewed by Dean Jackson.

The tests in legacy-animation-engine were flakey because the animation can start before
we get a chance to register the event listener. Fix by starting the animation after the
load event fires. Make the non-legacy tests match.

* compositing/visible-rect/animated-from-none.html:
* compositing/visible-rect/animated.html:
* legacy-animation-engine/compositing/visible-rect/animated-from-none.html:
* legacy-animation-engine/compositing/visible-rect/animated.html:

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

13 months agoCheck with SafeBrowsing during navigation in WKWebView
commit-queue@webkit.org [Tue, 7 Aug 2018 01:13:37 +0000 (01:13 +0000)]
Check with SafeBrowsing during navigation in WKWebView
https://bugs.webkit.org/show_bug.cgi?id=188133

Patch by Alex Christensen <achristensen@webkit.org> on 2018-08-06
Source/WebKit:

Reviewed by Chris Dumez.

This turns WebFramePolicyListenerProxy into an object that now listens for the results
of two processes happening in parallel: the API::NavigationClient's decidePolicyForNavigation{Action, Response}
(which it was already waiting for) and, on platforms that support it, the SafariSafeBrowsing framework's check.
The first result is stored as it waits for the second result unless the first result is the API::NavigationClient
saying to cancel or convert the navigation to a download, in which cases we don't care what the safe browsing
framework results are because we won't show the URL in the browser.

Nothing is done with the safe browsing results yet.

* UIProcess/Cocoa/SafeBrowsingResultCocoa.mm: Added.
(WebKit::SafeBrowsingResult::SafeBrowsingResult):
* UIProcess/Cocoa/WebPageProxyCocoa.mm:
(WebKit::WebPageProxy::beginSafeBrowsingCheck):
* UIProcess/SafeBrowsingResult.h: Added.
(WebKit::SafeBrowsingResult::provider const):
(WebKit::SafeBrowsingResult::isPhishing const):
(WebKit::SafeBrowsingResult::isMalware const):
(WebKit::SafeBrowsingResult::isUnwantedSoftware const):
(WebKit::SafeBrowsingResult::isKnownToBeUnsafe const):
* UIProcess/WebFramePolicyListenerProxy.cpp:
(WebKit::WebFramePolicyListenerProxy::WebFramePolicyListenerProxy):
(WebKit::WebFramePolicyListenerProxy::didReceiveSafeBrowsingResults):
(WebKit::WebFramePolicyListenerProxy::use):
(WebKit::WebFramePolicyListenerProxy::download):
(WebKit::WebFramePolicyListenerProxy::ignore):
* UIProcess/WebFramePolicyListenerProxy.h:
(WebKit::WebFramePolicyListenerProxy::create):
* UIProcess/WebFrameProxy.cpp:
(WebKit::WebFrameProxy::setUpPolicyListenerProxy):
* UIProcess/WebFrameProxy.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::decidePolicyForNavigationAction):
(WebKit::WebPageProxy::decidePolicyForNewWindowAction):
(WebKit::WebPageProxy::decidePolicyForResponse):
* UIProcess/WebPageProxy.h:
* WebKit.xcodeproj/project.pbxproj:

LayoutTests:

Reviewed by Andy Estes.

* platform/wk2/http/tests/navigation/keyboard-events-during-provisional-navigation-expected.txt: Copied from http/tests/navigation/keyboard-events-during-provisional-navigation-expected.txt.
This test verifies that keys cannot be entered during navigation, and the keys seen in WebKitTestRunner
are before the navigation.  This is seen now because there is a brief moment in time between when
WebKitTestRunner calls decidePolicyForNavigationAction and when the WebContent receives it.
* svg/custom/anchor-on-use.svg:
This test verifies what the page looks like after navigation.  It used to just call testRunner.notifyDone
when the link was clicked and because of the timing of messages sent with the UIProcess, WebKitTestRunner
would see the results after the page navigated.  Because we are adding a delay during navigation, the
message order can no longer be relied on in this way.  To fix this, we are just calling notifyDone in an
unload handler.

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

13 months agofast/custom-elements/custom-element-registry-wrapper-should-stay-alive.html always...
rniwa@webkit.org [Tue, 7 Aug 2018 00:39:25 +0000 (00:39 +0000)]
fast/custom-elements/custom-element-registry-wrapper-should-stay-alive.html always timeouts on debug bots
https://bugs.webkit.org/show_bug.cgi?id=188353

Remove the timeout expectation now that the test is passing on debug bots.

* TestExpectations:

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

13 months agoWeb Inspector: Global search sometimes returns duplicate results for a resource
joepeck@webkit.org [Tue, 7 Aug 2018 00:25:52 +0000 (00:25 +0000)]
Web Inspector: Global search sometimes returns duplicate results for a resource
https://bugs.webkit.org/show_bug.cgi?id=188270
<rdar://problem/42867498>

Reviewed by Brian Burg.

* UserInterface/Views/SearchSidebarPanel.js:
(WI.SearchSidebarPanel.prototype.performSearch.resourcesCallback):
Avoid duplicate search results in the frontend. We should also fix the backend
but a frontend fix will also be desired for backends that have the issue.

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

13 months agoAdd CEReactions=NotNeeded for reactions only needed for customized builtins
rniwa@webkit.org [Tue, 7 Aug 2018 00:13:16 +0000 (00:13 +0000)]
Add CEReactions=NotNeeded for reactions only needed for customized builtins
https://bugs.webkit.org/show_bug.cgi?id=187851

Reviewed by Chris Dumez.

Source/WebCore:

Because WebKit doesn't and will not support customized builtin elements, there are many DOM APIs marked with
[CEReactions] which don't actually need CustomElementReactionStack.

To clarify and document this difference, this patch introduces WebKit extention: [CEReactions=NotNeeded].
When this IDL attribute is specified, we generate CustomElementReactionDisallowedScope in the bindings code
to assert that there are no custom elements reactions being enqueued within the DOM API.

We suppress this assertion in CustomElementReactionStack since a DOM API with [CEReactions=NotNeeded] can
synchronously fire an event and otherwise execute arbirary scripts, which in turn could invoke a DOM API
with [CEReactions].

This patch deployes this change to HTMLIFrameElement since "src" IDL attribute triggers this second scenario.

Test: fast/custom-elements/custom-element-reaction-within-disallowed-scope.html

* bindings/scripts/CodeGeneratorJS.pm:
(GeneratePut):
(GeneratePutByIndex):
(GenerateDefineOwnProperty):
(GenerateDeletePropertyCommon):
(GenerateAttributeSetterBodyDefinition):
(GenerateCustomElementReactionsStackIfNeeded): Added. Generate CustomElementReactionStack for [CEReactions]
and CustomElementReactionDisallowedScope for [CEReactions=NotNeeded].
* bindings/scripts/test/JS/JSTestCEReactions.cpp:
* bindings/scripts/test/TestCEReactions.idl: Added test cases for [CEReactions=NotNeeded].
* bindings/scripts/test/TestCEReactionsStringifier.idl: Ditto.
* dom/CustomElementReactionQueue.cpp:
(WebCore::CustomElementReactionQueue::enqueueElementUpgrade): Added an assertion to catch cases where
a DOM API with [CEReactions=NotNeeded] enqueues a custom element reaction; i.e. cases where [CEReactions]
should have been used.
(WebCore::CustomElementReactionQueue::enqueueElementUpgradeIfDefined): Ditto.
(WebCore::CustomElementReactionQueue::enqueueConnectedCallbackIfNeeded): Ditto.
(WebCore::CustomElementReactionQueue::enqueueDisconnectedCallbackIfNeeded): Ditto.
(WebCore::CustomElementReactionQueue::enqueueAdoptedCallbackIfNeeded): Ditto.
(WebCore::CustomElementReactionQueue::enqueueAttributeChangedCallbackIfNeeded): Ditto.
(WebCore::CustomElementReactionQueue::enqueuePostUpgradeReactions): Ditto.
* dom/CustomElementReactionQueue.h:
(WebCore::CustomElementReactionDisallowedScope): Added. Enables the assertion in enqueue* functions above.
(WebCore::CustomElementReactionDisallowedScope::CustomElementReactionDisallowedScope): Added.
(WebCore::CustomElementReactionDisallowedScope::~CustomElementReactionDisallowedScope): Added.
(WebCore::CustomElementReactionDisallowedScope::isReactionAllowed): Added.
(WebCore::CustomElementReactionDisallowedScope::AllowedScope): Added.
(WebCore::CustomElementReactionDisallowedScope::AllowedScope::AllowedScope): Added.
(WebCore::CustomElementReactionDisallowedScope::AllowedScope::~AllowedScope): Added.
(WebCore::CustomElementReactionStack): Suppress the assertion. See above for why this is needed.
* html/HTMLIFrameElement.idl:

LayoutTests:

Added a regression test for enqueuing a custom element reaction in a DOM API marked as [CEReaction]
inside another DOM API with [CEReaction=NotNeeded]. WebKit should not hit a debug assertion added
by this patch.

* fast/custom-elements/custom-element-reaction-within-disallowed-scope-expected.txt: Added.
* fast/custom-elements/custom-element-reaction-within-disallowed-scope.html: Added.

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

13 months agoWeb Inspector: split-up async stack trace test suite to improve clarity and maintaina...
mattbaker@apple.com [Mon, 6 Aug 2018 23:53:33 +0000 (23:53 +0000)]
Web Inspector: split-up async stack trace test suite to improve clarity and maintainability
https://bugs.webkit.org/show_bug.cgi?id=185398
<rdar://problem/40040289>

Reviewed by Joseph Pecoraro.

* inspector/debugger/async-stack-trace-basic-expected.txt: Added.
* inspector/debugger/async-stack-trace-basic.html: Added.
Basic tests that check for the existence of an asynchronous stack trace
when pausing inside an asynchronous callback function.

* inspector/debugger/async-stack-trace-event-listener-expected.txt: Added.
* inspector/debugger/async-stack-trace-event-listener.html: Added.
* inspector/debugger/async-stack-trace-expected.txt: Removed.

* inspector/debugger/async-stack-trace-truncate-expected.txt: Added.
* inspector/debugger/async-stack-trace-truncate.html: Added.
Test scenarios where the number of call frames in the async stack trace
exceeds the maximum depth and is truncated.

* inspector/debugger/async-stack-trace.html: Removed.

* inspector/debugger/resources/async-stack-trace-test.js: Added.
(TestPage.registerInitializer.window.getAsyncStackTrace):
(TestPage.registerInitializer.logCallFrame):
(TestPage.registerInitializer.window.logAsyncStackTrace):
(TestPage.registerInitializer.window.addAsyncStackTraceTestCase):
(TestPage.registerInitializer):
Utility functions used across tests.

* inspector/debugger/resources/postMessage-echo.html: Removed.
This was unnecessary. To check that an async stack trace exists when
pausing in a postMessage handler, all we need is an iframe that posts a
message to its parent as soon as it is created. The iframe is now created
inline in async-stack-trace-basic.html.

* platform/mac/TestExpectations:

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

13 months agowebkitdirs.pm should default to iPhone SE for 64-bit testing
david_quesada@apple.com [Mon, 6 Aug 2018 23:49:09 +0000 (23:49 +0000)]
webkitdirs.pm should default to iPhone SE for 64-bit testing
https://bugs.webkit.org/show_bug.cgi?id=188361

Reviewed by Daniel Bates.

Use iPhone SE as the default iOS Simulator device type. This corresponds to the change to webkitpy in r234467.

* Scripts/webkitdirs.pm:
(findOrCreateSimulatorForIOSDevice):
* Scripts/webkitpy/layout_tests/run_webkit_tests.py:
(parse_args):
    Update the help text for --device-type to reflect the new default device.

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

13 months agoClean up initialization of some RenderLayer members
simon.fraser@apple.com [Mon, 6 Aug 2018 22:35:50 +0000 (22:35 +0000)]
Clean up initialization of some RenderLayer members
https://bugs.webkit.org/show_bug.cgi?id=188330

Reviewed by Dean Jackson.

Use initializers for the pointers. No need to initialize LayoutUnits, which initialize to zero.

* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::RenderLayer):
* rendering/RenderLayer.h:

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

13 months agoSetting table layout to fixed causes incorrect cell width calculations
dbates@webkit.org [Mon, 6 Aug 2018 22:23:24 +0000 (22:23 +0000)]
Setting table layout to fixed causes incorrect cell width calculations
https://bugs.webkit.org/show_bug.cgi?id=90068

Reviewed by Simon Fraser.

Derived from the test case written by Pravin D.

Add a test case to ensure we do not regress cell width computation in fixed table layout
when colspan is greater than the number of columns in the table.

* fast/table/fixed-table-layout/width-distribution-when-colspan-greater-than-table-columns-expected.html: Added.
* fast/table/fixed-table-layout/width-distribution-when-colspan-greater-than-table-columns.html: Added.

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

13 months agoAdd tests to ensure that Same-Site cookies are stored when set as the first party
dbates@webkit.org [Mon, 6 Aug 2018 22:21:25 +0000 (22:21 +0000)]
Add tests to ensure that Same-Site cookies are stored when set as the first party
https://bugs.webkit.org/show_bug.cgi?id=188080

Reviewed by Alexey Proskuryakov.

* http/tests/cookies/resources/cookie-utilities.js:
(getDOMCookies): Return an empty dictionary when there are no DOM cookies. Currently we
return {"": undefined}.
* http/tests/cookies/resources/cookie-utilities.php: Added.
* http/tests/cookies/resources/echo-http-and-dom-cookies-and-notify-done.php: Added.
* http/tests/cookies/same-site/set-first-party-cross-site-cookies-expected.txt: Added.
* http/tests/cookies/same-site/set-first-party-cross-site-cookies.php: Added.
* http/tests/cookies/same-site/set-first-party-same-site-cookies-expected.txt: Added.
* http/tests/cookies/same-site/set-first-party-same-site-cookies.php: Added.
* platform/ios-12/TestExpectations: Skip the tests until the fix for <rdar://problem/42255251>
is shipped.
* platform/mac/TestExpectations: Ditto.

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

13 months agoRegression(NetworkLoadChecker): CORS preflights are no longer able to deal with clien...
cdumez@apple.com [Mon, 6 Aug 2018 22:14:05 +0000 (22:14 +0000)]
Regression(NetworkLoadChecker): CORS preflights are no longer able to deal with client certificate authentication
https://bugs.webkit.org/show_bug.cgi?id=188355
<rdar://problem/42546319>

Reviewed by Alex Christensen.

Before we started using the NetworkLoadChecker to do CORS-preflighting in the Network process, challenges would
use the NetworkLoad::completeAuthenticationChallenge() code path with isAllowedToAskUserForCredentials to set
to false. This would call:
1. completionHandler(AuthenticationChallengeDisposition::UseCredential, { }); for TLS handshakes (server trust
   evaluation & client certification authentication)
2. NetworkProcess::singleton().authenticationManager().didReceiveAuthenticationChallenge() otherwise

However, NetworkCORSPreflightChecker::didReceiveChallenge() was behaving differently and calling:
1. completionHandler(AuthenticationChallengeDisposition::RejectProtectionSpace, { }); for server trust evaluations
2. completionHandler(AuthenticationChallengeDisposition::Cancel, { }); otherwise

Restore previous behavior by aligning NetworkCORSPreflightChecker::didReceiveChallenge() with
NetworkLoad::completeAuthenticationChallenge() when isAllowedToAskUserForCredentials is set to false. This means
we end up asking the AuthenticationManager for client certificate authentication instead or cancelling the
preflight.

This fixes CORS-preflighting on some internal sites.

* NetworkProcess/NetworkCORSPreflightChecker.cpp:
(WebKit::NetworkCORSPreflightChecker::didReceiveChallenge):
* NetworkProcess/NetworkCORSPreflightChecker.h:
* NetworkProcess/NetworkLoadChecker.cpp:
(WebKit::NetworkLoadChecker::NetworkLoadChecker):
(WebKit::NetworkLoadChecker::checkCORSRequestWithPreflight):
* NetworkProcess/NetworkLoadChecker.h:
* NetworkProcess/NetworkResourceLoader.cpp:
* NetworkProcess/PingLoad.cpp:
(WebKit::PingLoad::PingLoad):

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

13 months agofast/custom-elements/custom-element-registry-wrapper-should-stay-alive.html always...
rniwa@webkit.org [Mon, 6 Aug 2018 21:56:32 +0000 (21:56 +0000)]
fast/custom-elements/custom-element-registry-wrapper-should-stay-alive.html always timeouts on debug bots
https://bugs.webkit.org/show_bug.cgi?id=188353

Reviewed by Saam Barati.

Rely on GCController.collect() instead of allocating 1,000,000 objects in WebKitTestRunner / DumpRenderTree
so that debug builders won't timeout.

* fast/custom-elements/custom-element-registry-wrapper-should-stay-alive.html:

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

13 months agoRemove the SVG elements' attributes macros
commit-queue@webkit.org [Mon, 6 Aug 2018 21:08:53 +0000 (21:08 +0000)]
Remove the SVG elements' attributes macros
https://bugs.webkit.org/show_bug.cgi?id=186751

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2018-08-06
Reviewed by Simon Fraser.

This is how the SVG attributes are implemented after removing the SVG macros:

1) The SVG attribute is defined as a super class of SVGAttribute. The super
   classes of SVGAttribute are template classes. The type of these template
   are the property type or the TearOff type.

2) To unify accessing attributes of the SVGElements and its super classes
   an SVGAttributeAccessor template class is added. It is inherited by other
   template classes. The types of these templates are the owner and the
   attributes types. The main functions of these classes is to synchronize
   the new property value with the document attributes pool and to create
   and cache the TearOff objects.

3) To make code shorter and more readable, attribute types and attribute
   accessors are defined for every SVG TearOff type, e.g.
   -- SVGLength:
        SVGAnimatedLengthAttribute and SVGAnimatedLengthAttributeAccessor
   -- SVGAnimatedNumber:
        SVGAnimatedNumberAttribute and SVGAnimatedNumberAttributeAccessor

4) A special accessor is defined for animated pair and optional attributes:
   SVGAnimatedPairAttributeAccessor, e.g.
   -- SVGMarkerElement:
        orient attribute: "angle" or "type"
   -- SVGFEGaussianBlurElement:
        stdDeviation attribute: "x" and "y"

5) The SVG attributes have to be registered into an singleton SVGAttributeRegistry.
   The SVGAttributeRegistry is a template class. The types of this template
   class are the the type of the owner and the base classes of this owner.
   This registry holds a map from "attribute name" to  "attribute accessor".

6) To make the code easier to read, the SVGAttributeRegistry implements
   registerAttribute() for different attribute types. The owner needs only
   to provide the attribute name and a pointer to the class member of this
   attribute to the same function "registerAttribute()". The compiler will
   pick the right function to call based on the type of the attribute.

7) Given a reference to the owner element, SVGAttributeRegistry can loop
   through the attributes of this owner and through the attributes of its
   base classes as well to do operations like synchronizing all the attributes
   or creating the TearOff object of a certain attribute.

8) To make the base class SVGElement have the ability to access the attributes
   of any of its super classes, SVGAttributeOwnerProxy will be used.
   SVGAttributeOwnerProxy is a base class which have all the functions that
   SVGElement needs as pure virtual functions.

9) SVGAttributeOwnerProxyImpl is a template class which implements
   SVGAttributeOwnerProxy and whose types are the owner and its base classes.
   SVGAttributeOwnerProxyImpl keeps a reference to the owner and the context
   SVGElement.

10) All the SVG attribute owners have to implement the virtual function
    attributeOwnerProxy() which returns a reference to SVGAttributeOwnerProxy.
    The local attributeOwnerProxy() returns a reference to a local
    SVGAttributeOwnerProxyImpl. Its type and base types are the class
    hierarchy of this element.

All the attributes of the non-SVGElement-based classes are moved as members
of these classes instead of adding them to all the super classes. These
classes are:
   -- SVGExternalResourcesRequired
   -- SVGURIReference
   -- SVGFitToViewBox
   -- SVGZoomAndPan
   -- SVGLangSpace

The svgAttributeChanged() of all the SVGElement-based classes are now
simplified by distributing the responsibilities of changing an attribute
to the base classes. One exception is the SVGURIReference since the action
to be taken when changing the "href" is different for every super class.

Other work will be done in separate patches.
   -- Shrinking the memory of the SVGElements.
   -- Making all the attributes RefCounted objects.

* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* rendering/svg/RenderSVGResourceMarker.cpp:
(WebCore::RenderSVGResourceMarker::draw):
* svg/SVGAElement.cpp:
(WebCore::SVGAElement::SVGAElement):
(WebCore::SVGAElement::registerAttributes):
(WebCore::SVGAElement::parseAttribute):
(WebCore::SVGAElement::svgAttributeChanged):
* svg/SVGAElement.h:
* svg/SVGAElement.idl:
* svg/SVGAltGlyphElement.cpp:
(WebCore::SVGAltGlyphElement::SVGAltGlyphElement):
* svg/SVGAltGlyphElement.h:
* svg/SVGAnimatedAngle.h:
* svg/SVGAnimatedBoolean.h:
* svg/SVGAnimatedEnumeration.h:
* svg/SVGAnimatedInteger.h:
* svg/SVGAnimatedLength.h:
* svg/SVGAnimatedLengthList.h:
* svg/SVGAnimatedNumber.h:
* svg/SVGAnimatedNumberList.h:
* svg/SVGAnimatedPath.h:
* svg/SVGAnimatedPointList.h:
* svg/SVGAnimatedPreserveAspectRatio.h:
* svg/SVGAnimatedRect.h:
* svg/SVGAnimatedString.h:
* svg/SVGAnimatedTransformList.h:
* svg/SVGAnimatedTypeAnimator.cpp:
(WebCore::SVGAnimatedTypeAnimator::findAnimatedPropertiesForAttributeName):
* svg/SVGAnimationElement.cpp:
(WebCore::SVGAnimationElement::SVGAnimationElement):
(WebCore::SVGAnimationElement::requiredFeatures): Deleted.
(WebCore::SVGAnimationElement::requiredExtensions): Deleted.
(WebCore::SVGAnimationElement::systemLanguage): Deleted.
* svg/SVGAnimationElement.h:
(WebCore::SVGAnimationElement::attributeRegistry):
* svg/SVGCircleElement.cpp:
(WebCore::SVGCircleElement::SVGCircleElement):
(WebCore::SVGCircleElement::registerAttributes):
(WebCore::SVGCircleElement::parseAttribute):
(WebCore::SVGCircleElement::svgAttributeChanged):
* svg/SVGCircleElement.h:
* svg/SVGClipPathElement.cpp:
(WebCore::SVGClipPathElement::SVGClipPathElement):
(WebCore::SVGClipPathElement::registerAttributes):
(WebCore::SVGClipPathElement::parseAttribute):
(WebCore::SVGClipPathElement::svgAttributeChanged):
(WebCore::SVGClipPathElement::isSupportedAttribute): Deleted.
* svg/SVGClipPathElement.h:
* svg/SVGComponentTransferFunctionElement.cpp:
(WebCore::SVGComponentTransferFunctionElement::SVGComponentTransferFunctionElement):
(WebCore::SVGComponentTransferFunctionElement::registerAttributes):
(WebCore::SVGComponentTransferFunctionElement::parseAttribute):
(WebCore::SVGComponentTransferFunctionElement::svgAttributeChanged):
(WebCore::SVGComponentTransferFunctionElement::transferFunction const):
(WebCore::SVGComponentTransferFunctionElement::isSupportedAttribute): Deleted.
* svg/SVGComponentTransferFunctionElement.h:
(WebCore::SVGComponentTransferFunctionElement::type const):
(WebCore::SVGComponentTransferFunctionElement::tableValues const):
(WebCore::SVGComponentTransferFunctionElement::slope const):
(WebCore::SVGComponentTransferFunctionElement::intercept const):
(WebCore::SVGComponentTransferFunctionElement::amplitude const):
(WebCore::SVGComponentTransferFunctionElement::exponent const):
(WebCore::SVGComponentTransferFunctionElement::offset const):
(WebCore::SVGComponentTransferFunctionElement::typeAnimated):
(WebCore::SVGComponentTransferFunctionElement::tableValuesAnimated):
(WebCore::SVGComponentTransferFunctionElement::slopeAnimated):
(WebCore::SVGComponentTransferFunctionElement::interceptAnimated):
(WebCore::SVGComponentTransferFunctionElement::amplitudeAnimated):
(WebCore::SVGComponentTransferFunctionElement::exponentAnimated):
(WebCore::SVGComponentTransferFunctionElement::offsetAnimated):
(WebCore::SVGComponentTransferFunctionElement::attributeRegistry):
(WebCore::SVGComponentTransferFunctionElement::isKnownAttribute):
* svg/SVGCursorElement.cpp:
(WebCore::SVGCursorElement::SVGCursorElement):
(WebCore::SVGCursorElement::registerAttributes):
(WebCore::SVGCursorElement::parseAttribute):
(WebCore::SVGCursorElement::svgAttributeChanged):
(WebCore::SVGCursorElement::isSupportedAttribute): Deleted.
(WebCore::SVGCursorElement::requiredFeatures): Deleted.
(WebCore::SVGCursorElement::requiredExtensions): Deleted.
(WebCore::SVGCursorElement::systemLanguage): Deleted.
* svg/SVGCursorElement.h:
* svg/SVGDefsElement.cpp:
(WebCore::SVGDefsElement::SVGDefsElement):
* svg/SVGDefsElement.h:
* svg/SVGElement.cpp:
(WebCore::SVGElement::SVGElement):
(WebCore::SVGElement::registerAttributes):
(WebCore::SVGElement::parseAttribute):
(WebCore::SVGElement::animatedPropertyTypesForAttribute):
(WebCore::SVGElement::synchronizeAllAnimatedSVGAttribute):
(WebCore::SVGElement::synchronizeAnimatedSVGAttribute const):
(WebCore::SVGElement::isPresentationAttributeWithSVGDOM):
(WebCore::SVGElement::svgAttributeChanged):
(WebCore::SVGElement::synchronizeRequiredFeatures): Deleted.
(WebCore::SVGElement::synchronizeRequiredExtensions): Deleted.
(WebCore::SVGElement::synchronizeSystemLanguage): Deleted.
(WebCore::SVGElement::isKnownAttribute): Deleted.
* svg/SVGElement.h:
(WebCore::SVGElement::attributeRegistry):
(WebCore::SVGElement::isKnownAttribute):
(WebCore::SVGElement::attributeOwnerProxy const):
(WebCore::SVGElement::synchronizeAttribute):
(WebCore::SVGElement::synchronizeAttributes):
(WebCore::SVGElement::animatedTypes const):
(WebCore::SVGElement::lookupAnimatedProperty const):
(WebCore::SVGElement::lookupOrCreateAnimatedProperty):
(WebCore::SVGElement::lookupOrCreateAnimatedProperties):
(WebCore::SVGElement::className const):
(WebCore::SVGElement::classNameAnimated):
(WebCore::SVGElement::synchronizeRequiredFeatures): Deleted.
(WebCore::SVGElement::synchronizeRequiredExtensions): Deleted.
(WebCore::SVGElement::synchronizeSystemLanguage): Deleted.
* svg/SVGEllipseElement.cpp:
(WebCore::SVGEllipseElement::SVGEllipseElement):
(WebCore::SVGEllipseElement::registerAttributes):
(WebCore::SVGEllipseElement::parseAttribute):
(WebCore::SVGEllipseElement::svgAttributeChanged):
* svg/SVGEllipseElement.h:
* svg/SVGExternalResourcesRequired.cpp:
(WebCore::SVGExternalResourcesRequired::SVGExternalResourcesRequired):
(WebCore::SVGExternalResourcesRequired::registerAttributes):
(WebCore::SVGExternalResourcesRequired::parseAttribute):
(WebCore::SVGExternalResourcesRequired::svgAttributeChanged):
(WebCore::SVGExternalResourcesRequired::addSupportedAttributes):
(WebCore::SVGExternalResourcesRequired::dispatchLoadEvent):
(WebCore::SVGExternalResourcesRequired::insertedIntoDocument):
(WebCore::SVGExternalResourcesRequired::finishParsingChildren):
(WebCore::SVGExternalResourcesRequired::haveLoadedRequiredResources const):
(WebCore::SVGExternalResourcesRequired::isKnownAttribute): Deleted.
(WebCore::SVGExternalResourcesRequired::handleAttributeChange): Deleted.
* svg/SVGExternalResourcesRequired.h:
(WebCore::SVGExternalResourcesRequired::attributeRegistry):
(WebCore::SVGExternalResourcesRequired::externalResourcesRequiredAnimated):
(WebCore::SVGExternalResourcesRequired::externalResourcesRequired const):
(WebCore::SVGExternalResourcesRequired::setExternalResourcesRequired):
(WebCore::SVGExternalResourcesRequired::isKnownAttribute):
(WebCore::SVGExternalResourcesRequired::attributeOwnerProxy):
* 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::registerAttributes):
(WebCore::SVGFEComponentTransferElement::parseAttribute):
* 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):
(WebCore::SVGFEConvolveMatrixElement::setFilterEffectAttribute):
(WebCore::SVGFEConvolveMatrixElement::setOrder):
(WebCore::SVGFEConvolveMatrixElement::setKernelUnitLength):
* svg/SVGFEConvolveMatrixElement.h:
(WebCore::SVGPropertyTraits<EdgeModeType>::initialValue):
* svg/SVGFEDiffuseLightingElement.cpp:
(WebCore::SVGFEDiffuseLightingElement::SVGFEDiffuseLightingElement):
(WebCore::SVGFEDiffuseLightingElement::registerAttributes):
(WebCore::SVGFEDiffuseLightingElement::parseAttribute):
* 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::setStdDeviation):
(WebCore::SVGFEDropShadowElement::registerAttributes):
(WebCore::SVGFEDropShadowElement::parseAttribute):
(WebCore::SVGFEDropShadowElement::svgAttributeChanged):
* svg/SVGFEDropShadowElement.h:
* svg/SVGFEGaussianBlurElement.cpp:
(WebCore::SVGFEGaussianBlurElement::SVGFEGaussianBlurElement):
(WebCore::SVGFEGaussianBlurElement::setStdDeviation):
(WebCore::SVGFEGaussianBlurElement::registerAttributes):
(WebCore::SVGFEGaussianBlurElement::parseAttribute):
(WebCore::SVGFEGaussianBlurElement::svgAttributeChanged):
* svg/SVGFEGaussianBlurElement.h:
* svg/SVGFEImageElement.cpp:
(WebCore::SVGFEImageElement::SVGFEImageElement):
(WebCore::SVGFEImageElement::registerAttributes):
(WebCore::SVGFEImageElement::parseAttribute):
* svg/SVGFEImageElement.h:
* svg/SVGFELightElement.cpp:
(WebCore::SVGFELightElement::SVGFELightElement):
(WebCore::SVGFELightElement::registerAttributes):
(WebCore::SVGFELightElement::parseAttribute):
(WebCore::SVGFELightElement::svgAttributeChanged):
* svg/SVGFELightElement.h:
(WebCore::SVGFELightElement::azimuth const):
(WebCore::SVGFELightElement::elevation const):
(WebCore::SVGFELightElement::x const):
(WebCore::SVGFELightElement::y const):
(WebCore::SVGFELightElement::z const):
(WebCore::SVGFELightElement::pointsAtX const):
(WebCore::SVGFELightElement::pointsAtY const):
(WebCore::SVGFELightElement::pointsAtZ const):
(WebCore::SVGFELightElement::specularExponent const):
(WebCore::SVGFELightElement::limitingConeAngle const):
(WebCore::SVGFELightElement::azimuthAnimated):
(WebCore::SVGFELightElement::elevationAnimated):
(WebCore::SVGFELightElement::xAnimated):
(WebCore::SVGFELightElement::yAnimated):
(WebCore::SVGFELightElement::zAnimated):
(WebCore::SVGFELightElement::pointsAtXAnimated):
(WebCore::SVGFELightElement::pointsAtYAnimated):
(WebCore::SVGFELightElement::pointsAtZAnimated):
(WebCore::SVGFELightElement::specularExponentAnimated):
(WebCore::SVGFELightElement::limitingConeAngleAnimated):
(WebCore::SVGFELightElement::attributeRegistry):
(WebCore::SVGFELightElement::isKnownAttribute):
* svg/SVGFEMergeNodeElement.cpp:
(WebCore::SVGFEMergeNodeElement::SVGFEMergeNodeElement):
(WebCore::SVGFEMergeNodeElement::registerAttributes):
(WebCore::SVGFEMergeNodeElement::parseAttribute):
* svg/SVGFEMergeNodeElement.h:
* svg/SVGFEMorphologyElement.cpp:
(WebCore::SVGFEMorphologyElement::SVGFEMorphologyElement):
(WebCore::SVGFEMorphologyElement::setRadius):
(WebCore::SVGFEMorphologyElement::registerAttributes):
(WebCore::SVGFEMorphologyElement::parseAttribute):
* svg/SVGFEMorphologyElement.h:
* svg/SVGFEOffsetElement.cpp:
(WebCore::SVGFEOffsetElement::SVGFEOffsetElement):
(WebCore::SVGFEOffsetElement::registerAttributes):
(WebCore::SVGFEOffsetElement::parseAttribute):
(WebCore::SVGFEOffsetElement::svgAttributeChanged):
* svg/SVGFEOffsetElement.h:
* svg/SVGFESpecularLightingElement.cpp:
(WebCore::SVGFESpecularLightingElement::SVGFESpecularLightingElement):
(WebCore::SVGFESpecularLightingElement::registerAttributes):
(WebCore::SVGFESpecularLightingElement::parseAttribute):
* svg/SVGFESpecularLightingElement.h:
* svg/SVGFETileElement.cpp:
(WebCore::SVGFETileElement::SVGFETileElement):
(WebCore::SVGFETileElement::registerAttributes):
(WebCore::SVGFETileElement::parseAttribute):
* svg/SVGFETileElement.h:
* svg/SVGFETurbulenceElement.cpp:
(WebCore::SVGFETurbulenceElement::SVGFETurbulenceElement):
(WebCore::SVGFETurbulenceElement::registerAttributes):
(WebCore::SVGFETurbulenceElement::parseAttribute):
(WebCore::SVGFETurbulenceElement::setFilterEffectAttribute):
(WebCore::SVGFETurbulenceElement::svgAttributeChanged):
* svg/SVGFETurbulenceElement.h:
* svg/SVGFilterElement.cpp:
(WebCore::SVGFilterElement::SVGFilterElement):
(WebCore::SVGFilterElement::setFilterRes):
(WebCore::SVGFilterElement::registerAttributes):
(WebCore::SVGFilterElement::parseAttribute):
(WebCore::SVGFilterElement::svgAttributeChanged):
(WebCore::SVGFilterElement::isSupportedAttribute): Deleted.
* svg/SVGFilterElement.h:
* svg/SVGFilterPrimitiveStandardAttributes.cpp:
(WebCore::SVGFilterPrimitiveStandardAttributes::SVGFilterPrimitiveStandardAttributes):
(WebCore::SVGFilterPrimitiveStandardAttributes::registerAttributes):
(WebCore::SVGFilterPrimitiveStandardAttributes::parseAttribute):
(WebCore::SVGFilterPrimitiveStandardAttributes::svgAttributeChanged):
(WebCore::SVGFilterPrimitiveStandardAttributes::isSupportedAttribute): Deleted.
* svg/SVGFilterPrimitiveStandardAttributes.h:
(WebCore::SVGFilterPrimitiveStandardAttributes::attributeRegistry):
(WebCore::SVGFilterPrimitiveStandardAttributes::x const):
(WebCore::SVGFilterPrimitiveStandardAttributes::y const):
(WebCore::SVGFilterPrimitiveStandardAttributes::width const):
(WebCore::SVGFilterPrimitiveStandardAttributes::height const):
(WebCore::SVGFilterPrimitiveStandardAttributes::result const):
(WebCore::SVGFilterPrimitiveStandardAttributes::xAnimated):
(WebCore::SVGFilterPrimitiveStandardAttributes::yAnimated):
(WebCore::SVGFilterPrimitiveStandardAttributes::widthAnimated):
(WebCore::SVGFilterPrimitiveStandardAttributes::heightAnimated):
(WebCore::SVGFilterPrimitiveStandardAttributes::resultAnimated):
(WebCore::SVGFilterPrimitiveStandardAttributes::isKnownAttribute):
* svg/SVGFitToViewBox.cpp:
(WebCore::SVGFitToViewBox::SVGFitToViewBox):
(WebCore::SVGFitToViewBox::registerAttributes):
(WebCore::SVGFitToViewBox::setViewBox):
(WebCore::SVGFitToViewBox::resetViewBox):
(WebCore::SVGFitToViewBox::reset):
(WebCore::SVGFitToViewBox::parseAttribute):
(WebCore::SVGFitToViewBox::parseViewBox):
(WebCore::SVGFitToViewBox::isKnownAttribute): Deleted.
(WebCore::SVGFitToViewBox::addSupportedAttributes): Deleted.
* svg/SVGFitToViewBox.h:
(WebCore::SVGFitToViewBox::attributeRegistry):
(WebCore::SVGFitToViewBox::viewBox const):
(WebCore::SVGFitToViewBox::preserveAspectRatio const):
(WebCore::SVGFitToViewBox::viewBoxAnimated):
(WebCore::SVGFitToViewBox::preserveAspectRatioAnimated):
(WebCore::SVGFitToViewBox::setPreserveAspectRatio):
(WebCore::SVGFitToViewBox::resetPreserveAspectRatio):
(WebCore::SVGFitToViewBox::viewBoxString const):
(WebCore::SVGFitToViewBox::preserveAspectRatioString const):
(WebCore::SVGFitToViewBox::hasValidViewBox const):
(WebCore::SVGFitToViewBox::hasEmptyViewBox const):
(WebCore::SVGFitToViewBox::isKnownAttribute):
(WebCore::SVGFitToViewBox::parseAttribute): Deleted.
* svg/SVGFontElement.cpp:
(WebCore::SVGFontElement::SVGFontElement):
* svg/SVGFontElement.h:
* svg/SVGForeignObjectElement.cpp:
(WebCore::SVGForeignObjectElement::SVGForeignObjectElement):
(WebCore::SVGForeignObjectElement::registerAttributes):
(WebCore::SVGForeignObjectElement::parseAttribute):
(WebCore::SVGForeignObjectElement::svgAttributeChanged):
(WebCore::SVGForeignObjectElement::isSupportedAttribute): Deleted.
* svg/SVGForeignObjectElement.h:
* svg/SVGGElement.cpp:
(WebCore::SVGGElement::SVGGElement):
(WebCore::SVGGElement::svgAttributeChanged):
(WebCore::SVGGElement::isSupportedAttribute): Deleted.
* svg/SVGGElement.h:
* svg/SVGGeometryElement.cpp:
(WebCore::SVGGeometryElement::SVGGeometryElement):
(WebCore::SVGGeometryElement::registerAttributes):
(WebCore::SVGGeometryElement::parseAttribute):
(WebCore::SVGGeometryElement::svgAttributeChanged):
(WebCore::SVGGeometryElement::isSupportedAttribute): Deleted.
* svg/SVGGeometryElement.h:
(WebCore::SVGGeometryElement::attributeRegistry):
(WebCore::SVGGeometryElement::pathLengthAnimated):
(WebCore::SVGGeometryElement::isKnownAttribute):
* svg/SVGGlyphRefElement.cpp:
(WebCore::SVGGlyphRefElement::SVGGlyphRefElement):
* svg/SVGGlyphRefElement.h:
* svg/SVGGradientElement.cpp:
(WebCore::SVGGradientElement::SVGGradientElement):
(WebCore::SVGGradientElement::registerAttributes):
(WebCore::SVGGradientElement::parseAttribute):
(WebCore::SVGGradientElement::svgAttributeChanged):
(WebCore::SVGGradientElement::isSupportedAttribute): Deleted.
* svg/SVGGradientElement.h:
(WebCore::SVGGradientElement::attributeRegistry):
(WebCore::SVGGradientElement::spreadMethod const):
(WebCore::SVGGradientElement::gradientUnits const):
(WebCore::SVGGradientElement::gradientTransform const):
(WebCore::SVGGradientElement::spreadMethodAnimated):
(WebCore::SVGGradientElement::gradientUnitsAnimated):
(WebCore::SVGGradientElement::gradientTransformAnimated):
(WebCore::SVGGradientElement::isKnownAttribute):
* svg/SVGGraphicsElement.cpp:
(WebCore::SVGGraphicsElement::SVGGraphicsElement):
(WebCore::SVGGraphicsElement::registerAttributes):
(WebCore::SVGGraphicsElement::parseAttribute):
(WebCore::SVGGraphicsElement::svgAttributeChanged):
(WebCore::SVGGraphicsElement::isSupportedAttribute): Deleted.
(WebCore::SVGGraphicsElement::requiredFeatures): Deleted.
(WebCore::SVGGraphicsElement::requiredExtensions): Deleted.
(WebCore::SVGGraphicsElement::systemLanguage): Deleted.
* svg/SVGGraphicsElement.h:
(WebCore::SVGGraphicsElement::attributeRegistry):
(WebCore::SVGGraphicsElement::transform const):
(WebCore::SVGGraphicsElement::transformAnimated):
(WebCore::SVGGraphicsElement::isKnownAttribute):
* svg/SVGImageElement.cpp:
(WebCore::SVGImageElement::SVGImageElement):
(WebCore::SVGImageElement::registerAttributes):
(WebCore::SVGImageElement::parseAttribute):
(WebCore::SVGImageElement::svgAttributeChanged):
(WebCore::SVGImageElement::haveLoadedRequiredResources):
(WebCore::SVGImageElement::isSupportedAttribute): Deleted.
* svg/SVGImageElement.h:
* svg/SVGImageLoader.cpp:
(WebCore::SVGImageLoader::dispatchLoadEvent):
* svg/SVGLangSpace.cpp:
(WebCore::SVGLangSpace::SVGLangSpace):
(WebCore::SVGLangSpace::registerAttributes):
(WebCore::SVGLangSpace::xmlspace const):
(WebCore::SVGLangSpace::svgAttributeChanged):
(WebCore::SVGLangSpace::setXmllang): Deleted.
(WebCore::SVGLangSpace::setXmlspace): Deleted.
(WebCore::SVGLangSpace::isKnownAttribute): Deleted.
(WebCore::addWithAndWithoutXMLPrefix): Deleted.
(WebCore::SVGLangSpace::addSupportedAttributes): Deleted.
* svg/SVGLangSpace.h:
(WebCore::SVGLangSpace::xmllang const):
(WebCore::SVGLangSpace::setXmllang):
(WebCore::SVGLangSpace::setXmlspace):
(WebCore::SVGLangSpace::attributeRegistry):
(WebCore::SVGLangSpace::isKnownAttribute):
* svg/SVGLineElement.cpp:
(WebCore::SVGLineElement::SVGLineElement):
(WebCore::SVGLineElement::registerAttributes):
(WebCore::SVGLineElement::parseAttribute):
(WebCore::SVGLineElement::svgAttributeChanged):
(WebCore::SVGLineElement::isSupportedAttribute): Deleted.
* svg/SVGLineElement.h:
* svg/SVGLinearGradientElement.cpp:
(WebCore::SVGLinearGradientElement::SVGLinearGradientElement):
(WebCore::SVGLinearGradientElement::registerAttributes):
(WebCore::SVGLinearGradientElement::parseAttribute):
(WebCore::SVGLinearGradientElement::svgAttributeChanged):
(WebCore::SVGLinearGradientElement::isSupportedAttribute): Deleted.
* svg/SVGLinearGradientElement.h:
* svg/SVGMPathElement.cpp:
(WebCore::SVGMPathElement::SVGMPathElement):
(WebCore::SVGMPathElement::svgAttributeChanged):
* svg/SVGMPathElement.h:
* svg/SVGMarkerElement.cpp:
(WebCore::SVGMarkerElement::SVGMarkerElement):
(WebCore::SVGMarkerElement::registerAttributes):
(WebCore::SVGMarkerElement::parseAttribute):
(WebCore::SVGMarkerElement::svgAttributeChanged):
(WebCore::SVGMarkerElement::setOrient):
(WebCore::SVGMarkerElement::orientTypePropertyInfo): Deleted.
(WebCore::SVGMarkerElement::isSupportedAttribute): Deleted.
(WebCore::SVGMarkerElement::synchronizeOrientType): Deleted.
(WebCore::SVGMarkerElement::lookupOrCreateOrientTypeWrapper): Deleted.
(WebCore::SVGMarkerElement::orientType const): Deleted.
(WebCore::SVGMarkerElement::orientTypeAnimated): Deleted.
* svg/SVGMarkerElement.h:
* svg/SVGMaskElement.cpp:
(WebCore::SVGMaskElement::SVGMaskElement):
(WebCore::SVGMaskElement::registerAttributes):
(WebCore::SVGMaskElement::parseAttribute):
(WebCore::SVGMaskElement::svgAttributeChanged):
(WebCore::SVGMaskElement::isSupportedAttribute): Deleted.
(WebCore::SVGMaskElement::requiredFeatures): Deleted.
(WebCore::SVGMaskElement::requiredExtensions): Deleted.
(WebCore::SVGMaskElement::systemLanguage): Deleted.
* svg/SVGMaskElement.h:
* svg/SVGPathElement.cpp:
(WebCore::SVGPathElement::SVGPathElement):
(WebCore::SVGPathElement::registerAttributes):
(WebCore::SVGPathElement::parseAttribute):
(WebCore::SVGPathElement::svgAttributeChanged):
(WebCore::SVGPathElement::pathByteStream const):
(WebCore::SVGPathElement::lookupOrCreateDWrapper):
(WebCore::SVGPathElement::animatedPropertyWillBeDeleted):
(WebCore::SVGPathElement::pathSegList):
(WebCore::SVGPathElement::animatedPathSegList):
(WebCore::SVGPathElement::pathSegListChanged):
(WebCore::SVGPathElement::dPropertyInfo): Deleted.
(WebCore::SVGPathElement::isSupportedAttribute): Deleted.
(WebCore::SVGPathElement::synchronizeD): Deleted.
* svg/SVGPathElement.h:
* svg/SVGPathSegListValues.h:
(WebCore::SVGPropertyTraits<SVGPathSegListValues>::toString):
* svg/SVGPathSegWithContext.h:
(WebCore::SVGPathSegWithContext::animatedProperty const):
* svg/SVGPatternElement.cpp:
(WebCore::SVGPatternElement::SVGPatternElement):
(WebCore::SVGPatternElement::registerAttributes):
(WebCore::SVGPatternElement::parseAttribute):
(WebCore::SVGPatternElement::svgAttributeChanged):
(WebCore::SVGPatternElement::collectPatternAttributes const):
(WebCore::SVGPatternElement::isSupportedAttribute): Deleted.
(WebCore::SVGPatternElement::requiredFeatures): Deleted.
(WebCore::SVGPatternElement::requiredExtensions): Deleted.
(WebCore::SVGPatternElement::systemLanguage): Deleted.
* svg/SVGPatternElement.h:
* svg/SVGPointListValues.h:
(WebCore::SVGPropertyTraits<SVGPointListValues>::toString):
* svg/SVGPolyElement.cpp:
(WebCore::SVGPolyElement::SVGPolyElement):
(WebCore::SVGPolyElement::registerAttributes):
(WebCore::SVGPolyElement::parseAttribute):
(WebCore::SVGPolyElement::svgAttributeChanged):
(WebCore::SVGPolyElement::points):
(WebCore::SVGPolyElement::animatedPoints):
(WebCore::SVGPolyElement::pointsPropertyInfo): Deleted.
(WebCore::SVGPolyElement::synchronizePoints): Deleted.
(WebCore::SVGPolyElement::lookupOrCreatePointsWrapper): Deleted.
* svg/SVGPolyElement.h:
(WebCore::SVGPolyElement::pointList const):
(WebCore::SVGPolyElement::attributeRegistry):
(WebCore::SVGPolyElement::isKnownAttribute):
* svg/SVGPreserveAspectRatioValue.cpp:
(WebCore::SVGPreserveAspectRatioValue::transformRect const):
(WebCore::SVGPreserveAspectRatioValue::transformRect): Deleted.
* svg/SVGPreserveAspectRatioValue.h:
* svg/SVGRadialGradientElement.cpp:
(WebCore::SVGRadialGradientElement::SVGRadialGradientElement):
(WebCore::SVGRadialGradientElement::registerAttributes):
(WebCore::SVGRadialGradientElement::parseAttribute):
(WebCore::SVGRadialGradientElement::svgAttributeChanged):
(WebCore::SVGRadialGradientElement::isSupportedAttribute): Deleted.
* svg/SVGRadialGradientElement.h:
* svg/SVGRectElement.cpp:
(WebCore::SVGRectElement::SVGRectElement):
(WebCore::SVGRectElement::registerAttributes):
(WebCore::SVGRectElement::parseAttribute):
(WebCore::SVGRectElement::svgAttributeChanged):
* svg/SVGRectElement.h:
* svg/SVGSVGElement.cpp:
(WebCore::SVGSVGElement::SVGSVGElement):
(WebCore::SVGSVGElement::registerAttributes):
(WebCore::SVGSVGElement::parseAttribute):
(WebCore::SVGSVGElement::svgAttributeChanged):
(WebCore::SVGSVGElement::viewBoxToViewTransform const):
(WebCore::SVGSVGElement::resetScrollAnchor):
(WebCore::SVGSVGElement::inheritViewAttributes):
* svg/SVGSVGElement.h:
(WebCore::SVGSVGElement::useCurrentView const): Deleted.
(WebCore::SVGSVGElement::currentTranslateValue): Deleted.
(WebCore::SVGSVGElement::zoomAndPan const): Deleted.
(WebCore::SVGSVGElement::setZoomAndPan): Deleted.
(WebCore::SVGSVGElement::timeContainer): Deleted.
(WebCore::SVGSVGElement::hasEmptyViewBox const): Deleted.
* svg/SVGScriptElement.cpp:
(WebCore::SVGScriptElement::SVGScriptElement):
(WebCore::SVGScriptElement::svgAttributeChanged):
(WebCore::SVGScriptElement::insertedIntoAncestor):
(WebCore::SVGScriptElement::addSubresourceAttributeURLs const):
(WebCore::SVGScriptElement::isURLAttribute const): Deleted.
(WebCore::SVGScriptElement::sourceAttributeValue const): Deleted.
(WebCore::SVGScriptElement::charsetAttributeValue const): Deleted.
(WebCore::SVGScriptElement::typeAttributeValue const): Deleted.
(WebCore::SVGScriptElement::languageAttributeValue const): Deleted.
(WebCore::SVGScriptElement::forAttributeValue const): Deleted.
(WebCore::SVGScriptElement::eventAttributeValue const): Deleted.
(WebCore::SVGScriptElement::hasAsyncAttribute const): Deleted.
(WebCore::SVGScriptElement::hasDeferAttribute const): Deleted.
(WebCore::SVGScriptElement::hasNoModuleAttribute const): Deleted.
(WebCore::SVGScriptElement::hasSourceAttribute const): Deleted.
(WebCore::SVGScriptElement::filterOutAnimatableAttribute const): Deleted.
* svg/SVGScriptElement.h:
* svg/SVGStopElement.cpp:
(WebCore::SVGStopElement::SVGStopElement):
(WebCore::SVGStopElement::registerAttributes):
(WebCore::SVGStopElement::parseAttribute):
* svg/SVGStopElement.h:
* svg/SVGStringListValues.h:
(WebCore::SVGPropertyTraits<SVGStringListValues>::toString):
* svg/SVGSwitchElement.cpp:
(WebCore::SVGSwitchElement::SVGSwitchElement):
* svg/SVGSwitchElement.h:
* svg/SVGSymbolElement.cpp:
(WebCore::SVGSymbolElement::SVGSymbolElement):
(WebCore::SVGSymbolElement::parseAttribute):
(WebCore::SVGSymbolElement::svgAttributeChanged):
* svg/SVGSymbolElement.h:
* svg/SVGTRefElement.cpp:
(WebCore::SVGTRefElement::SVGTRefElement):
* svg/SVGTRefElement.h:
* svg/SVGTests.cpp:
(WebCore::SVGTests::SVGTests):
(WebCore::SVGTests::registerAttributes):
(WebCore::SVGTests::attributeRegistry):
(WebCore::SVGTests::isKnownAttribute):
(WebCore::SVGTests::isValid const):
(WebCore::SVGTests::parseAttribute):
(WebCore::SVGTests::svgAttributeChanged):
(WebCore::SVGTests::requiredFeatures):
(WebCore::SVGTests::requiredExtensions):
(WebCore::SVGTests::systemLanguage):
(WebCore::createSVGTestPropertyInfo): Deleted.
(WebCore::createSVGTextAttributeToPropertyMap): Deleted.
(WebCore::SVGTests::attributeToPropertyMap): Deleted.
(WebCore::SVGTests::handleAttributeChange): Deleted.
(WebCore::SVGTests::synchronizeAttribute): Deleted.
(WebCore::SVGTests::synchronizeRequiredFeatures): Deleted.
(WebCore::SVGTests::synchronizeRequiredExtensions): Deleted.
(WebCore::SVGTests::synchronizeSystemLanguage): Deleted.
* svg/SVGTests.h:
* svg/SVGTextContentElement.cpp:
(WebCore::SVGTextContentElement::SVGTextContentElement):
(WebCore::SVGTextContentElement::registerAttributes):
(WebCore::SVGTextContentElement::parseAttribute):
(WebCore::SVGTextContentElement::svgAttributeChanged):
(WebCore::SVGTextContentElement::textLengthPropertyInfo): Deleted.
(WebCore::SVGTextContentElement::synchronizeTextLength): Deleted.
(WebCore::SVGTextContentElement::lookupOrCreateTextLengthWrapper): Deleted.
(WebCore::SVGTextContentElement::textLengthAnimated): Deleted.
(WebCore::SVGTextContentElement::isSupportedAttribute): Deleted.
* svg/SVGTextContentElement.h:
(WebCore::SVGTextContentElement::specifiedTextLength):
(WebCore::SVGTextContentElement::attributeRegistry):
(WebCore::SVGTextContentElement::textLength const):
(WebCore::SVGTextContentElement::lengthAdjust const):
(WebCore::SVGTextContentElement::textLengthAnimated):
(WebCore::SVGTextContentElement::lengthAdjustAnimated):
(WebCore::SVGTextContentElement::isKnownAttribute):
(WebCore::SVGTextContentElement::SVGAnimatedCustomLengthAttribute::SVGAnimatedCustomLengthAttribute):
(WebCore::SVGTextContentElement::SVGAnimatedCustomLengthAttribute::synchronize):
(WebCore::SVGTextContentElement::SVGAnimatedCustomLengthAttribute::animatedProperty):
* svg/SVGTextPathElement.cpp:
(WebCore::SVGTextPathElement::SVGTextPathElement):
(WebCore::SVGTextPathElement::registerAttributes):
(WebCore::SVGTextPathElement::parseAttribute):
(WebCore::SVGTextPathElement::svgAttributeChanged):
(WebCore::SVGTextPathElement::isSupportedAttribute): Deleted.
* svg/SVGTextPathElement.h:
* svg/SVGTextPositioningElement.cpp:
(WebCore::SVGTextPositioningElement::SVGTextPositioningElement):
(WebCore::SVGTextPositioningElement::registerAttributes):
(WebCore::SVGTextPositioningElement::parseAttribute):
(WebCore::SVGTextPositioningElement::svgAttributeChanged):
* svg/SVGTextPositioningElement.h:
(WebCore::SVGTextPositioningElement::attributeRegistry):
(WebCore::SVGTextPositioningElement::x const):
(WebCore::SVGTextPositioningElement::y const):
(WebCore::SVGTextPositioningElement::dx const):
(WebCore::SVGTextPositioningElement::dy const):
(WebCore::SVGTextPositioningElement::rotate const):
(WebCore::SVGTextPositioningElement::xAnimated):
(WebCore::SVGTextPositioningElement::yAnimated):
(WebCore::SVGTextPositioningElement::dxAnimated):
(WebCore::SVGTextPositioningElement::dyAnimated):
(WebCore::SVGTextPositioningElement::rotateAnimated):
(WebCore::SVGTextPositioningElement::isKnownAttribute):
* svg/SVGURIReference.cpp:
(WebCore::SVGURIReference::SVGURIReference):
(WebCore::SVGURIReference::registerAttributes):
(WebCore::SVGURIReference::attributeRegistry):
(WebCore::SVGURIReference::isKnownAttribute):
(WebCore::SVGURIReference::parseAttribute):
(WebCore::SVGURIReference::href const):
(WebCore::SVGURIReference::hrefAnimated):
(WebCore::SVGURIReference::addSupportedAttributes): Deleted.
* svg/SVGURIReference.h:
* svg/SVGUseElement.cpp:
(WebCore::SVGUseElement::SVGUseElement):
(WebCore::SVGUseElement::registerAttributes):
(WebCore::SVGUseElement::parseAttribute):
(WebCore::SVGUseElement::insertedIntoAncestor):
(WebCore::SVGUseElement::transferSizeAttributesToTargetClone const):
(WebCore::SVGUseElement::svgAttributeChanged):
(WebCore::SVGUseElement::notifyFinished):
* svg/SVGUseElement.h:
* svg/SVGValue.h:
* svg/SVGViewElement.cpp:
(WebCore::SVGViewElement::SVGViewElement):
(WebCore::SVGViewElement::parseAttribute):
* svg/SVGViewElement.h:
* svg/SVGViewSpec.cpp:
(WebCore::SVGViewSpec::SVGViewSpec):
(WebCore::SVGViewSpec::registerAttributes):
(WebCore::SVGViewSpec::transform):
(WebCore::SVGViewSpec::reset):
(WebCore::SVGViewSpec::parseViewSpec):
(WebCore::SVGViewSpec::viewBoxPropertyInfo): Deleted.
(WebCore::SVGViewSpec::preserveAspectRatioPropertyInfo): Deleted.
(WebCore::SVGViewSpec::transformPropertyInfo): Deleted.
(WebCore::SVGViewSpec::viewBoxIdentifier): Deleted.
(WebCore::SVGViewSpec::preserveAspectRatioIdentifier): Deleted.
(WebCore::SVGViewSpec::transformIdentifier): Deleted.
(WebCore::SVGViewSpec::setZoomAndPan): Deleted.
(WebCore::SVGViewSpec::transformString const): Deleted.
(WebCore::SVGViewSpec::viewBoxString const): Deleted.
(WebCore::SVGViewSpec::preserveAspectRatioString const): Deleted.
(WebCore::SVGViewSpec::viewBoxAnimated): Deleted.
(WebCore::SVGViewSpec::preserveAspectRatioAnimated): Deleted.
(WebCore::SVGViewSpec::lookupOrCreateViewBoxWrapper): Deleted.
(WebCore::SVGViewSpec::lookupOrCreatePreserveAspectRatioWrapper): Deleted.
(WebCore::SVGViewSpec::lookupOrCreateTransformWrapper): Deleted.
* svg/SVGViewSpec.h:
* svg/SVGViewSpec.idl:
* svg/SVGZoomAndPan.cpp:
(WebCore::SVGZoomAndPan::SVGZoomAndPan):
(WebCore::SVGZoomAndPan::registerAttributes):
(WebCore::SVGZoomAndPan::parseZoomAndPan):
(WebCore::SVGZoomAndPan::parseAttribute):
(WebCore::SVGZoomAndPan::parse): Deleted.
(WebCore::SVGZoomAndPan::parseAttributeValue): Deleted.
* svg/SVGZoomAndPan.h:
(WebCore::SVGZoomAndPan::zoomAndPan const):
(WebCore::SVGZoomAndPan::setZoomAndPan):
(WebCore::SVGZoomAndPan::reset):
(WebCore::SVGZoomAndPan::attributeRegistry):
(WebCore::SVGZoomAndPan::isKnownAttribute):
(WebCore::SVGZoomAndPan::parseFromNumber): Deleted.
(WebCore::SVGZoomAndPan::parseAttribute): Deleted.
* svg/SVGZoomAndPanType.h: Copied from Source/WebCore/svg/SVGValue.h.
(WebCore::SVGPropertyTraits<SVGZoomAndPanType>::initialValue):
(WebCore::SVGPropertyTraits<SVGZoomAndPanType>::toString):
(WebCore::SVGPropertyTraits<SVGZoomAndPanType>::fromString):
* svg/properties/SVGAnimatedEnumerationPropertyTearOff.h:
* svg/properties/SVGAnimatedPathSegListPropertyTearOff.cpp: Copied from Source/WebCore/svg/SVGValue.h.
(WebCore::SVGAnimatedPathSegListPropertyTearOff::SVGAnimatedPathSegListPropertyTearOff):
(WebCore::SVGAnimatedPathSegListPropertyTearOff::~SVGAnimatedPathSegListPropertyTearOff):
(WebCore::SVGAnimatedPathSegListPropertyTearOff::animValDidChange):
* svg/properties/SVGAnimatedPathSegListPropertyTearOff.h:
* svg/properties/SVGAnimatedProperty.cpp:
(WebCore::SVGAnimatedProperty::SVGAnimatedProperty):
(WebCore::SVGAnimatedProperty::~SVGAnimatedProperty):
(WebCore::SVGAnimatedProperty::animatedPropertyCache): Deleted.
* svg/properties/SVGAnimatedProperty.h:
(WebCore::SVGAnimatedProperty::isAnimating const):
(WebCore::SVGAnimatedProperty::isAnimatedListTearOff const):
(WebCore::SVGAnimatedProperty::lookupOrCreateAnimatedProperty):
(WebCore::SVGAnimatedProperty::lookupAnimatedProperty):
(WebCore::SVGAnimatedProperty::animatedPropertyCache):
(WebCore::SVGAnimatedProperty::lookupOrCreateWrapper): Deleted.
(WebCore::SVGAnimatedProperty::lookupWrapper): Deleted.
* svg/properties/SVGAnimatedPropertyMacros.h: Removed.
* svg/properties/SVGAnimatedPropertyType.h: Copied from Source/WebCore/svg/SVGAElement.idl.
* svg/properties/SVGAttribute.h: Added.
(WebCore::SVGPropertyAttribute::SVGPropertyAttribute):
(WebCore::SVGPropertyAttribute::value):
(WebCore::SVGPropertyAttribute::value const):
(WebCore::SVGPropertyAttribute::setValue):
(WebCore::SVGPropertyAttribute::resetValue):
(WebCore::SVGPropertyAttribute::toString const):
(WebCore::SVGPropertyAttribute::setShouldSynchronize):
(WebCore::SVGPropertyAttribute::shouldSynchronize const):
(WebCore::SVGPropertyAttribute::synchronize):
(WebCore::SVGAnimatedAttribute::SVGAnimatedAttribute):
(WebCore::SVGAnimatedAttribute::currentValue const):
(WebCore::SVGAnimatedAttribute::animatedProperty):
(WebCore::SVGAnimatedAttributeList::SVGAnimatedAttributeList):
(WebCore::SVGAnimatedAttributeList::detachAnimatedListWrappers):
* svg/properties/SVGAttributeAccessor.h: Added.
(WebCore::SVGAttributeAccessor::SVGAttributeAccessor):
(WebCore::SVGAttributeAccessor::attributeName const):
(WebCore::SVGAttributeAccessor::isAnimatedLengthAttribute const):
(WebCore::SVGAttributeAccessor::animatedType const):
(WebCore::SVGAttributeAccessor::animatedTypes const):
(WebCore::SVGAttributeAccessor::lookupOrCreateAnimatedProperty const):
(WebCore::SVGAttributeAccessor::lookupAnimatedProperty const):
(WebCore::SVGAttributeAccessor::lookupOrCreateAnimatedProperties const):
(WebCore::SVGPropertyAttributeAccessor::singleton):
(WebCore::SVGPropertyAttributeAccessor::SVGPropertyAttributeAccessor):
(WebCore::SVGPropertyAttributeAccessor::attribute const):
(WebCore::SVGAnimatedAttributeAccessor::singleton):
(WebCore::SVGAnimatedAttributeAccessor::SVGAnimatedAttributeAccessor):
(WebCore::SVGAnimatedAttributeAccessor::lookupOrCreateAnimatedProperty):
(WebCore::SVGAnimatedAttributeAccessor::lookupAnimatedProperty):
(WebCore::SVGAnimatedPairAttributeAccessor::SVGAnimatedPairAttributeAccessor):
(WebCore::SVGAnimatedPairAttributeAccessor::secondAttribute const):
* svg/properties/SVGAttributeOwnerProxy.h: Copied from Source/WebCore/svg/SVGValue.h.
(WebCore::SVGAttributeOwnerProxy::SVGAttributeOwnerProxy):
(WebCore::SVGAttributeOwnerProxy::element const):
* svg/properties/SVGAttributeOwnerProxyImpl.h: Added.
(WebCore::SVGAttributeOwnerProxyImpl::SVGAttributeOwnerProxyImpl):
(WebCore::SVGAttributeOwnerProxyImpl::attributeRegistry):
(WebCore::SVGAttributeOwnerProxyImpl::isKnownAttribute):
(WebCore::SVGAttributeOwnerProxyImpl::isAnimatedLengthAttribute):
* svg/properties/SVGAttributeRegistry.h: Added.
(WebCore::SVGAttributeRegistry::registerAttribute):
(WebCore::SVGAttributeRegistry::isEmpty const):
(WebCore::SVGAttributeRegistry::isKnownAttribute const):
(WebCore::SVGAttributeRegistry::isAnimatedLengthAttribute const):
(WebCore::SVGAttributeRegistry::animatedTypes const):
(WebCore::SVGAttributeRegistry::synchronizeAttributes const):
(WebCore::SVGAttributeRegistry::synchronizeAttribute const):
(WebCore::SVGAttributeRegistry::lookupOrCreateAnimatedProperty const):
(WebCore::SVGAttributeRegistry::lookupAnimatedProperty const):
(WebCore::SVGAttributeRegistry::lookupOrCreateAnimatedProperties const):
(WebCore::SVGAttributeRegistry::animatedTypesBaseTypes):
(WebCore::SVGAttributeRegistry::synchronizeAttributesBaseTypes):
(WebCore::SVGAttributeRegistry::synchronizeAttributeBaseTypes):
(WebCore::SVGAttributeRegistry::lookupOrCreateAnimatedPropertyBaseTypes):
(WebCore::SVGAttributeRegistry::lookupAnimatedPropertyBaseTypes):
(WebCore::SVGAttributeRegistry::lookupOrCreateAnimatedPropertiesBaseTypes):
(WebCore::SVGAttributeRegistry::findAttributeAccessor const):
* svg/properties/SVGAttributeToPropertyMap.cpp: Removed.
* svg/properties/SVGAttributeToPropertyMap.h: Removed.
* svg/properties/SVGPropertyInfo.cpp: Removed.
* svg/properties/SVGPropertyInfo.h: Removed.

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

13 months agoUse enum classes and OptionSets for PaintPhase and PaintBehavior
achristensen@apple.com [Mon, 6 Aug 2018 20:41:05 +0000 (20:41 +0000)]
Use enum classes and OptionSets for PaintPhase and PaintBehavior
https://bugs.webkit.org/show_bug.cgi?id=188323

Reviewed by Simon Fraser.

Source/WebCore:

No change in behaviour.

* html/shadow/MediaControlElements.cpp:
(WebCore::MediaControlTextTrackContainerElement::createTextTrackRepresentationImage):
* page/FrameSnapshotting.cpp:
(WebCore::snapshotFrameRectWithClip):
* page/FrameView.cpp:
(WebCore::FrameView::reset):
(WebCore::FrameView::willPaintContents):
(WebCore::FrameView::paintContents):
(WebCore::FrameView::setPaintBehavior):
(WebCore::FrameView::paintBehavior const):
(WebCore::FrameView::paintContentsForSnapshot):
* page/FrameView.h:
* rendering/InlineElementBox.cpp:
(WebCore::InlineElementBox::paint):
* rendering/InlineFlowBox.cpp:
(WebCore::InlineFlowBox::paint):
(WebCore::InlineFlowBox::paintBoxDecorations):
(WebCore::InlineFlowBox::paintMask):
* rendering/InlineTextBox.cpp:
(WebCore::InlineTextBox::paint):
* rendering/PaintInfo.h:
(WebCore::PaintInfo::PaintInfo):
(WebCore::PaintInfo::forceBlackText const):
(WebCore::PaintInfo::forceWhiteText const):
(WebCore::PaintInfo::skipRootBackground const):
(WebCore::PaintInfo::paintRootBackgroundOnly const):
* rendering/PaintPhase.h:
(): Deleted.
* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::paint):
(WebCore::RenderBlock::paintContents):
(WebCore::RenderBlock::paintObject):
(WebCore::RenderBlock::paintSelection):
* rendering/RenderBlockFlow.cpp:
(WebCore::RenderBlockFlow::paintFloats):
* rendering/RenderBox.cpp:
(WebCore::RenderBox::paintMask):
(WebCore::RenderBox::paintClippingMask):
(WebCore::RenderBox::paintMaskImages):
(WebCore::RenderBox::pushContentsClip):
(WebCore::RenderBox::popContentsClip):
* rendering/RenderBox.h:
* rendering/RenderBoxModelObject.cpp:
(WebCore::RenderBoxModelObject::decodingModeForImageDraw const):
(WebCore::RenderBoxModelObject::paintMaskForTextFillBox):
(WebCore::RenderBoxModelObject::fixedBackgroundPaintsInLocalCoordinates const):
* rendering/RenderDetailsMarker.cpp:
(WebCore::RenderDetailsMarker::paint):
* rendering/RenderElement.cpp:
(WebCore::RenderElement::paintAsInlineBlock):
(WebCore::RenderElement::selectionColor const):
* rendering/RenderEmbeddedObject.cpp:
(WebCore::RenderEmbeddedObject::paint):
(WebCore::RenderEmbeddedObject::paintReplaced):
* rendering/RenderFileUploadControl.cpp:
(WebCore::RenderFileUploadControl::paintObject):
* rendering/RenderFrameSet.cpp:
(WebCore::RenderFrameSet::paint):
* rendering/RenderHTMLCanvas.cpp:
(WebCore::RenderHTMLCanvas::paintReplaced):
* rendering/RenderImage.cpp:
(WebCore::RenderImage::paintReplaced):
(WebCore::RenderImage::paint):
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::renderableTransform const):
(WebCore::transparencyClipBox):
(WebCore::expandClipRectForDescendantsAndReflection):
(WebCore::paintingExtent):
(WebCore::RenderLayer::paint):
(WebCore::RenderLayer::paintOverlayScrollbars):
(WebCore::RenderLayer::paintLayer):
(WebCore::RenderLayer::paintLayerContents):
(WebCore::RenderLayer::paintBackgroundForFragments):
(WebCore::RenderLayer::paintForegroundForFragments):
(WebCore::RenderLayer::paintForegroundForFragmentsWithPhase):
(WebCore::RenderLayer::paintOutlineForFragments):
(WebCore::RenderLayer::paintMaskForFragments):
(WebCore::RenderLayer::paintChildClippingMaskForFragments):
(WebCore::RenderLayer::calculateClipRects const):
* rendering/RenderLayer.h:
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::paintIntoLayer):
(WebCore::RenderLayerBacking::paintContents):
* rendering/RenderLayerBacking.h:
* rendering/RenderLineBoxList.cpp:
(WebCore::RenderLineBoxList::paint const):
* rendering/RenderListBox.cpp:
(WebCore::RenderListBox::paintObject):
* rendering/RenderListMarker.cpp:
(WebCore::RenderListMarker::paint):
* rendering/RenderReplaced.cpp:
(WebCore::RenderReplaced::paint):
(WebCore::RenderReplaced::shouldPaint):
* rendering/RenderReplica.cpp:
(WebCore::RenderReplica::paint):
* rendering/RenderScrollbarPart.cpp:
(WebCore::RenderScrollbarPart::paintIntoRect):
* rendering/RenderSnapshottedPlugIn.cpp:
(WebCore::RenderSnapshottedPlugIn::paint):
* rendering/RenderTable.cpp:
(WebCore::RenderTable::paintObject):
(WebCore::RenderTable::paintMask):
(WebCore::RenderTable::overflowClipRect):
* rendering/RenderTable.h:
* rendering/RenderTableCell.cpp:
(WebCore::RenderTableCell::paint):
(WebCore::RenderTableCell::paintCollapsedBorders):
(WebCore::RenderTableCell::paintMask):
* rendering/RenderTableRow.cpp:
(WebCore::RenderTableRow::paintOutlineForRowIfNeeded):
(WebCore::RenderTableRow::paint):
* rendering/RenderTableSection.cpp:
(WebCore::RenderTableSection::paint):
(WebCore::RenderTableSection::paintCell):
(WebCore::RenderTableSection::paintObject):
* rendering/RenderThemeMac.mm:
(WebCore::RenderThemeMac::paintSnapshottedPluginOverlay):
(WebCore::RenderThemeMac::paintImageControlsButton):
* rendering/RenderVideo.cpp:
(WebCore::RenderVideo::paintReplaced):
* rendering/RenderWidget.cpp:
(WebCore::RenderWidget::paintContents):
(WebCore::RenderWidget::paint):
* rendering/RootInlineBox.cpp:
(WebCore::RootInlineBox::paintEllipsisBox const):
* rendering/SimpleLineLayoutFunctions.cpp:
(WebCore::SimpleLineLayout::paintFlow):
* rendering/mathml/MathOperator.cpp:
(WebCore::MathOperator::paint):
* rendering/mathml/RenderMathMLBlock.cpp:
(WebCore::RenderMathMLBlock::paint):
* rendering/mathml/RenderMathMLFraction.cpp:
(WebCore::RenderMathMLFraction::paint):
* rendering/mathml/RenderMathMLMenclose.cpp:
(WebCore::RenderMathMLMenclose::paint):
* rendering/mathml/RenderMathMLToken.cpp:
(WebCore::RenderMathMLToken::paint):
* rendering/svg/RenderSVGContainer.cpp:
(WebCore::RenderSVGContainer::paint):
* rendering/svg/RenderSVGForeignObject.cpp:
(WebCore::RenderSVGForeignObject::paint):
* rendering/svg/RenderSVGImage.cpp:
(WebCore::RenderSVGImage::paint):
* rendering/svg/RenderSVGResource.cpp:
(WebCore::requestPaintingResource):
* rendering/svg/RenderSVGResourceClipper.cpp:
(WebCore::RenderSVGResourceClipper::drawContentIntoMaskImage):
* rendering/svg/RenderSVGResourceSolidColor.cpp:
(WebCore::RenderSVGResourceSolidColor::applyResource):
* rendering/svg/RenderSVGRoot.cpp:
(WebCore::RenderSVGRoot::paintReplaced):
* rendering/svg/RenderSVGShape.cpp:
(WebCore::RenderSVGShape::paint):
* rendering/svg/RenderSVGText.cpp:
(WebCore::RenderSVGText::paint):
* rendering/svg/SVGInlineFlowBox.cpp:
(WebCore::SVGInlineFlowBox::paintSelectionBackground):
(WebCore::SVGInlineFlowBox::paint):
* rendering/svg/SVGInlineTextBox.cpp:
(WebCore::SVGInlineTextBox::paintSelectionBackground):
(WebCore::SVGInlineTextBox::paint):
* rendering/svg/SVGRenderingContext.cpp:
(WebCore::isRenderingMaskImage):
(WebCore::SVGRenderingContext::renderSubtreeToImageBuffer):
* rendering/svg/SVGRootInlineBox.cpp:
(WebCore::SVGRootInlineBox::paint):

Source/WebKit:

* WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp:
(WebKit::imageForRect):
* WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp:
(WebKit::InjectedBundleRangeHandle::renderedImage):
* WebProcess/Plugins/PluginView.cpp:
(WebKit::PluginView::shouldCreateTransientPaintingSnapshot const):

Source/WebKitLegacy/mac:

* WebCoreSupport/WebContextMenuClient.mm:
(WebContextMenuClient::imageForCurrentSharingServicePickerItem):
* WebView/WebFrame.mm:
(-[WebFrame _paintBehaviorForDestinationContext:]):
(-[WebFrame _drawRect:contentsOnly:]):
* WebView/WebHTMLView.mm:
(imageFromRect):
(selectionImage):

Source/WTF:

* wtf/OptionSet.h:
(WTF::OptionSet::OptionSet):
Allow a zero-valued enum value in the OptionSet constructor.

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

13 months agofast/custom-elements/custom-element-registry-wrapper-should-stay-alive.html always...
rniwa@webkit.org [Mon, 6 Aug 2018 20:35:53 +0000 (20:35 +0000)]
fast/custom-elements/custom-element-registry-wrapper-should-stay-alive.html always timeouts on debug bots
https://bugs.webkit.org/show_bug.cgi?id=188353

Add a timeout expectation to the test while I verify the fix for the test.

* TestExpectations:

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

13 months agoUnreviewed, rolling out r234552.
ryanhaddad@apple.com [Mon, 6 Aug 2018 20:17:04 +0000 (20:17 +0000)]
Unreviewed, rolling out r234552.

Introduced 2 layout test failures on High Sierra.

Reverted changeset:

"Check with SafeBrowsing during navigation in WKWebView"
https://bugs.webkit.org/show_bug.cgi?id=188133
https://trac.webkit.org/changeset/234552

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

13 months ago[iOS] Caret disappears after resigning and becoming first responder if active focus...
wenson_hsieh@apple.com [Mon, 6 Aug 2018 19:31:06 +0000 (19:31 +0000)]
[iOS] Caret disappears after resigning and becoming first responder if active focus state is retained
https://bugs.webkit.org/show_bug.cgi?id=188322
<rdar://problem/42455270>

Reviewed by Tim Horton.

Fixes an API test added in r234600, which had incorrect test expectations — namely, the width of the caret rect
was not in content view coordinates, unlike the x, y, and height.

* TestWebKitAPI/Tests/ios/KeyboardInputTestsIOS.mm:
(rounded):
(-[TestWKWebView waitForCaretViewFrameToBecome:]):
(-[TestWKWebView waitForSelectionViewRectsToBecome:]):
(TestWebKitAPI::TEST):

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

13 months agoUnreviewed, rolling out r234569.
ryanhaddad@apple.com [Mon, 6 Aug 2018 18:46:59 +0000 (18:46 +0000)]
Unreviewed, rolling out r234569.

Breaks internal builds.

Reverted changeset:

"We should cache the compiled sandbox profile in a data vault"
https://bugs.webkit.org/show_bug.cgi?id=184991
https://trac.webkit.org/changeset/234569

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

13 months agoUnreviewed test gardening for mac-wk1.
ryanhaddad@apple.com [Mon, 6 Aug 2018 18:37:24 +0000 (18:37 +0000)]
Unreviewed test gardening for mac-wk1.

* platform/mac-wk1/TestExpectations:

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

13 months agoFix IPC::Connection leak in StorageManager
cdumez@apple.com [Mon, 6 Aug 2018 18:31:36 +0000 (18:31 +0000)]
Fix IPC::Connection leak in StorageManager
https://bugs.webkit.org/show_bug.cgi?id=188321
<rdar://problem/42748485>

Reviewed by Alex Christensen.

When a StorageMap is destroyed on WebContent process side, StorageManager::destroyStorageMap()
gets called via IPC with a (IPC::Connection, StorageMapID) pair. Normally, it removes this
pair from m_storageAreasByConnection. However, if this is a *transient* StorageMap (sessionStorage),
then we keep the pair in the map and we merely remove the StorageMapID as a listener from the
StorageArea. We do this so that:
1. The StorageArea stays alive so that it can be reused later on for the same security origin, on
   the same IPC::Connection (logic for this is in StorageManager::createTransientLocalStorageMap()
2. Removing the StorageMapID as a listener from the StorageArea is important because
   StorageArea::m_eventListeners holds a strong reference to the IPC::Connection in a std::pair
   with the StorageMapID (HashSet<std::pair<RefPtr<IPC::Connection>, uint64_t>> m_eventListeners).

As mentioned in 1 above, in StorageManager::createTransientLocalStorageMap(), there is logic to
check if there is already an existing StorageArea for the given IPC::Connection that is transient
and is for the same security origin. In this case, we could avoid constructing a new StorageArea
and we would:
1. Add a new entry to m_storageAreasByConnection with the key (connection, newStorageMapID), using
   same same StorageArea as value.
2. Remove the previous (connection, oldStorageMapID) key from m_storageAreasByConnection.

Step 2 here is wrong and is updated in this patch. It is only safe to remove the previous
(connection, oldStorageMapID) if this oldStorageMapID no longer exists (i.e. destroyStorageMap()
was already called for it). This patch thus adds a check before removing (connection, oldStorageMapID)
from the HashMap to make sure that the oldStorageMapID is no longer a listener of the StorageArea).

This would cause leaks in the following case:
1. We construct a StorageArea for (connection1, storageMapId1)
2. We ask for a StorageArea for (connection1, storageMapId2) and decide to reuse the existing StorageArea
   since it has the same SecurityOrigin.
3. As a result of step2, we would remove (connection1, storageMapId1) from m_storageAreasByConnection
   and add (connection1, storageMapId2), even though there is still a StorageMap with storageMapId1
   on WebContent process side.
4. Later on, we would try to call destroyStorageMap(connection1, storageMap1), it would fail to find
   it in m_storageAreasByConnection and return early. It would therefore fail to remove storageMapId1
   as a listener of the StorageArea which still exists.
-> This would leak the IPC::Connection that there would be a std::pair<RefPtr<IPC::Connection>, StorageMapID>
   with value (connection1, storageMap1) which would get leaked and it would ref the IPC::Connection.

This code should really be refactored to be less leak prone but I have kept the patch minimal for now
to facilitate cherry-picking.

Note that this would reproduce very easily on sina.com.cn, when clicking bold links at the top, which
opens new tabs to different pages in the same WebContent process. When closing all Safari windows, the
IPC::Connection for this WebContent process would stay alive.

* UIProcess/WebStorage/StorageManager.cpp:
(WebKit::StorageManager::StorageArea::hasListener const):
(WebKit::StorageManager::createTransientLocalStorageMap):

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

13 months agoMake BlendMode an enum class
commit-queue@webkit.org [Mon, 6 Aug 2018 18:19:43 +0000 (18:19 +0000)]
Make BlendMode an enum class
https://bugs.webkit.org/show_bug.cgi?id=188325

Patch by Alex Christensen <achristensen@webkit.org> on 2018-08-06
Reviewed by Darin Adler.

Source/WebCore:

No change in behavior.

* css/CSSPrimitiveValueMappings.h:
(WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
(WebCore::CSSPrimitiveValue::operator BlendMode const):
* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::parseAttribute):
* html/canvas/CanvasRenderingContext2DBase.cpp:
(WebCore::CanvasRenderingContext2DBase::State::State):
(WebCore::CanvasRenderingContext2DBase::setGlobalCompositeOperation):
(WebCore::CanvasRenderingContext2DBase::drawImageFromRect):
* platform/graphics/BitmapImage.h:
* platform/graphics/GraphicsContext.h:
(WebCore::ImagePaintingOptions::ImagePaintingOptions):
* platform/graphics/GraphicsContextImpl.h:
* platform/graphics/GraphicsLayer.cpp:
(WebCore::GraphicsLayer::dumpProperties const):
* platform/graphics/GraphicsLayer.h:
* platform/graphics/GraphicsTypes.cpp:
(WebCore::parseBlendMode):
(WebCore::parseCompositeAndBlendOperator):
(WebCore::compositeOperatorName):
(WebCore::blendModeName):
(WebCore::operator<<):
* platform/graphics/GraphicsTypes.h:
* platform/graphics/Image.cpp:
(WebCore::Image::drawTiled):
* platform/graphics/Image.h:
* platform/graphics/ImageBuffer.h:
* platform/graphics/ca/cocoa/PlatformCAFiltersCocoa.mm:
(PlatformCAFilters::setBlendingFiltersOnLayer):
* platform/graphics/cg/GraphicsContextCG.cpp:
(WebCore::selectCGBlendMode):
* platform/graphics/cpu/arm/filters/FEBlendNEON.h:
(WebCore::FEBlend::platformApplyNEON):
* platform/graphics/displaylists/DisplayListItems.h:
* platform/graphics/displaylists/DisplayListRecorder.h:
* platform/graphics/filters/FEBlend.cpp:
(WebCore::FEBlend::externalRepresentation const):
* rendering/RenderBox.cpp:
(WebCore::RenderBox::paintFillLayers):
* rendering/RenderImage.cpp:
(WebCore::RenderImage::paintIntoRect):
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::RenderLayer):
(WebCore::RenderLayer::updateBlendMode):
(WebCore::RenderLayer::beginTransparencyLayers):
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateBlendMode):
* rendering/style/FillLayer.cpp:
(WebCore::FillLayer::FillLayer):
(WebCore::FillLayer::hasOpaqueImage const):
* rendering/style/FillLayer.h:
(WebCore::FillLayer::initialFillBlendMode):
* rendering/style/RenderStyle.h:
(WebCore::RenderStyle::setBlendMode):
(WebCore::RenderStyle::hasBlendMode const):
(WebCore::RenderStyle::blendMode const):
(WebCore::RenderStyle::initialBlendMode):
* rendering/style/StyleRareNonInheritedData.cpp:
(WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData):
* rendering/svg/SVGRenderingContext.cpp:
(WebCore::SVGRenderingContext::prepareToRenderSVGContent):
* svg/SVGAnimatedEnumeration.cpp:
(WebCore::enumerationValueForTargetAttribute):
* svg/SVGFEBlendElement.cpp:
(WebCore::SVGFEBlendElement::SVGFEBlendElement):
(WebCore::SVGFEBlendElement::parseAttribute):
* svg/SVGFEBlendElement.h:
(WebCore::SVGPropertyTraits<BlendMode>::highestEnumValue):
(WebCore::SVGPropertyTraits<BlendMode>::toString):
* svg/graphics/SVGImage.cpp:
(WebCore::SVGImage::nativeImageForCurrentFrame):
(WebCore::SVGImage::nativeImage):
(WebCore::SVGImage::drawPatternForContainer):
(WebCore::SVGImage::draw):

Source/WebKit:

* Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm:
(WebKit::RemoteLayerTreeTransaction::LayerProperties::LayerProperties):

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

13 months ago[iOS] Indeterminate checkboxes appear unchecked
commit-queue@webkit.org [Mon, 6 Aug 2018 18:06:25 +0000 (18:06 +0000)]
[iOS] Indeterminate checkboxes appear unchecked
https://bugs.webkit.org/show_bug.cgi?id=160484
<rdar://problem/31143185>

Patch by Aditya Keerthi <akeerthi@apple.com> on 2018-08-06
Reviewed by Wenson Hsieh.

Source/WebCore:

Add support for rendering indeterminate checkboxes on iOS.

We now paint the unchecked appearance only if the checkbox is not checked and is
not indeterminate. Otherwise, we draw a checkmark if the checkbox is in the
checked state and a dash if the checkbox is in the indeterminate state. Both of
these states share the same dark background.

Test: fast/forms/ios/render-indeterminate-checkbox.html

* css/html.css:
(input[type="checkbox"]:indeterminate):
(input[type="checkbox"]:indeterminate:disabled):
* rendering/RenderThemeIOS.mm:
(WebCore::drawJoinedLines):
(WebCore::RenderThemeIOS::paintCheckboxDecorations):

LayoutTests:

Added reftest to ensure that the indeterminate checkbox does not appear the same
as an unchecked checkbox.

* fast/forms/ios/render-indeterminate-checkbox-expected-mismatch.html: Added.
* fast/forms/ios/render-indeterminate-checkbox.html: Added.
* platform/ios/fast/forms/indeterminate-expected.txt: Rebaseline.

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

13 months agoHTML parser should execute custom element reactions for setting attributes immediatel...
rniwa@webkit.org [Mon, 6 Aug 2018 17:45:41 +0000 (17:45 +0000)]
HTML parser should execute custom element reactions for setting attributes immediately after creating a custom element
https://bugs.webkit.org/show_bug.cgi?id=188336

Reviewed by Frédéric Wang.

LayoutTests/imported/w3c:

Rebaseline the test now that the relevant test case is passing.

* web-platform-tests/custom-elements/parser/parser-sets-attributes-and-children-expected.txt:

Source/WebCore:

Push and pop an element queue from the custom element reactions stack when constructing a custom element:
https://html.spec.whatwg.org/multipage/parsing.html#create-an-element-for-the-token

To do this, we instantiate CustomElementReactionStack in HTMLDocumentParser::runScriptsForPausedTreeBuilder
where we synchronously construct a custom element. We don't have to worry about whether *will execute script*
is set or not since the presence of an element queue should not be observable in the case where we're constructing
a fallback element (since it would not enqueue any new custom element reaction).

Tests: imported/w3c/web-platform-tests/custom-elements/parser/parser-sets-attributes-and-children.html

* html/parser/HTMLDocumentParser.cpp:
(WebCore::HTMLDocumentParser::runScriptsForPausedTreeBuilder): Instantiate CustomElementReactionStack. Note that we
don't insert the custom element into the parser until we finish processing the custom element reactions.

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

13 months ago[Win][DLLLauncher] Remove --highDPI switch
Hironori.Fujii@sony.com [Mon, 6 Aug 2018 17:43:42 +0000 (17:43 +0000)]
[Win][DLLLauncher] Remove --highDPI switch
https://bugs.webkit.org/show_bug.cgi?id=188255

Reviewed by Yusuke Suzuki.

Bug 149417 has added `--highDPI` switch to make MiniBrowser DPI
aware. But, Bug 158733 has made MiniBrowser always DPI aware. It
became useless since the change. Remove the switch.

This change fixes the issue all dump render tree tests are failing
in WinCairo port if high DPI display is connected.

* MiniBrowser/win/Common.cpp:
(parseCommandLine): Removed `--highDPI` switch.
* win/DLLLauncher/DLLLauncherMain.cpp:
(wWinMain): Do not call SetProcessDPIAware.
(shouldUseHighDPI): Deleted.

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

13 months agoUnreviewed, fix the build by ignoring some deprecation warnings.
ryanhaddad@apple.com [Mon, 6 Aug 2018 17:25:13 +0000 (17:25 +0000)]
Unreviewed, fix the build by ignoring some deprecation warnings.

* wtf/MD5.cpp:
(WTF::MD5::MD5):
(WTF::MD5::addBytes):
(WTF::MD5::checksum):

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

13 months agoReturn extracted key ids as an optional
cturner@igalia.com [Mon, 6 Aug 2018 16:47:21 +0000 (16:47 +0000)]
Return extracted key ids as an optional
https://bugs.webkit.org/show_bug.cgi?id=188303

Reviewed by Darin Adler.

An empty list of extracted key ids was being considered a failure
case before this patch. In the PSSH boxes from the CENC standard,
it's not uncommon for the box to be version 0, meaning it has no
embedded key ids, so the case when there's an empty list should
not be treated as an error. Given this, the interface should be
more general and allow for a sentinel value indicating a parsing
error rather than an absence of key ids.

Covered by existing tests.

* Modules/encryptedmedia/InitDataRegistry.cpp:
(WebCore::extractKeyIDsKeyids): Change return type to be wrapped
in an optional, and make parsing errors return a nullopt rather
than an empty vector.
(WebCore::sanitizeKeyids): Use the new optional interface, return
a null RefPtr in the case of a parsing error, this method may now
return an empty vector.
(WebCore::extractKeyIDsCenc): Not implemented, so return an error
value rather than an empty vector.
(WebCore::extractKeyIDsWebM): Ditto.
(WebCore::InitDataRegistry::extractKeyIDs): Ditto.
* Modules/encryptedmedia/InitDataRegistry.h: Update the interface
to use an optional return type.
* platform/graphics/avfoundation/CDMFairPlayStreaming.cpp:
(WebCore::CDMPrivateFairPlayStreaming::extractKeyIDsSinf): Update
to use the new interface.
(WebCore::CDMPrivateFairPlayStreaming::extractKeyIDsSkd): Ditto.
* platform/graphics/avfoundation/CDMFairPlayStreaming.h: Ditto.
* platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm:
(WebCore::CDMInstanceFairPlayStreamingAVFObjC::keyIDs): Convert
the optional value into a vector, since it is assumed you can not
have an empty vector of key ids in the init datas FPS supports.
* testing/MockCDMFactory.cpp:
(WebCore::MockCDMInstance::requestLicense): Only return an error
if there really was a parsing error, rather than the case of there
being zero key ids in the init data payload.

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

13 months agostorage/indexeddb/modern/opendatabase-after-storage-crash.html is causing tests in...
tsavell@apple.com [Mon, 6 Aug 2018 16:13:19 +0000 (16:13 +0000)]
storage/indexeddb/modern/opendatabase-after-storage-crash.html is causing tests in directory svg/ to timeout at random
https://bugs.webkit.org/show_bug.cgi?id=187931

Unreviewed test gardening.

* platform/wk2/TestExpectations:

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

13 months ago[iOS] Tests that try to interact with the QuickType bar time out on iOS 11+
wenson_hsieh@apple.com [Mon, 6 Aug 2018 15:01:47 +0000 (15:01 +0000)]
[iOS] Tests that try to interact with the QuickType bar time out on iOS 11+
https://bugs.webkit.org/show_bug.cgi?id=188335
<rdar://problem/32542437> and <rdar://problem/32542433>

Reviewed by Tim Horton.

Tools:

Remove a UIScriptController helper method that attempted to wait for QuickType buttons to appear, and then send
touch events to the buttons. These were only used for the two tests which this patch refactors. See the
LayoutTests ChangeLog for more detail.

* DumpRenderTree/ios/UIScriptControllerIOS.mm:
(WTR::UIScriptController::selectTextCandidateAtIndex): Deleted.
* TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl:
* TestRunnerShared/UIScriptContext/UIScriptController.cpp:
(WTR::UIScriptController::selectTextCandidateAtIndex): Deleted.
(WTR::UIScriptController::waitForTextPredictionsViewAndSelectCandidateAtIndex): Deleted.
* TestRunnerShared/UIScriptContext/UIScriptController.h:
* TestRunnerShared/spi/UIKitTestSPI.h:

Remove an internal class declaration that is now unnecessary.

* WebKitTestRunner/ios/UIScriptControllerIOS.mm:
(WTR::UIScriptController::selectTextCandidateAtIndex): Deleted.
(WTR::UIScriptController::waitForTextPredictionsViewAndSelectCandidateAtIndex): Deleted.

LayoutTests:

Refactors a couple of tests that currently rely on the QuickType bar being shown when the hardware keyboard is
presented in the iOS simulator, so that it can insert text suggestions by tapping QuickType bar buttons; in the
first place, it was never guaranteed that this bar would show up, or even have more than 1 text suggestion.
Instead, we use the existing UIScriptController::applyAutocorrection method to trigger text replacement in the
same way tapping a button on the QuickType bar would replace the current word with the suggested word.

* fast/events/ios/before-input-events-prevent-candidate-insertion-expected.txt:
* fast/events/ios/before-input-events-prevent-candidate-insertion.html:
* fast/events/ios/input-events-insert-replacement-text-expected.txt:
* fast/events/ios/input-events-insert-replacement-text.html:
* platform/ios/TestExpectations:

Removes a [Timeout] expectation.

* resources/ui-helper.js:
(window.UIHelper.typeCharacter):

Add a new UIHelper method to type a character using the keyboard. Sends hardware keyboard events on the WebKit2
port of iOS, and uses EventSender elsewhere.

(window.UIHelper.applyAutocorrection):

Add a new UIHelper method that wraps UIScriptController::applyAutocorrection. Only supported in WebKit2
currently.

(window.UIHelper):

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

13 months ago[iOS] Caret disappears after resigning and becoming first responder if active focus...
wenson_hsieh@apple.com [Mon, 6 Aug 2018 14:14:42 +0000 (14:14 +0000)]
[iOS] Caret disappears after resigning and becoming first responder if active focus state is retained
https://bugs.webkit.org/show_bug.cgi?id=188322
<rdar://problem/42455270>

Reviewed by Tim Horton.

Source/WebKit:

Prior to r230745, when a user selects a word in non-editable web content without a prior selection, we would
always try to activate the text interaction assistant, creating a selection view (a UITextSelectionView). After
the long press is recognized, this text selection view is configured for "highlight mode", which is a special
mode for presenting selection UI where the grabber handles at the start and end of the selection are suppressed.
UIKit then prepares to show the selection by asking WKContentView for the number of selection rects; if this
number is zero, the UITextSelectionView is removed from the superview, and state that keeps track of whether the
selection view is in "highlight mode" is reset.

In the case where there's no prior selection, our cached EditorState in the UI process will not be up to date
yet when the gesture is recognized. This means that when UIKit asks us for the number of selection rects, we'll
return 0, which causes any state tracking "highlight mode" for the selection to be reset, subsequently resulting
in selection handles showing up before the user has ended the initial loupe gesture.

r230745 addressed this bug by removing logic to activate the text selection when becoming first responder,
instead deferring until the next `-_selectionChanged` call with post-layout editor state data to activate the
selection. While this does ensure that selection handles don't erroneously appear, it also means that clients
that call -becomeFirstResponder to show selection UI and the keyboard in a web view while an element is already
focused will not have an active selection assistant (i.e. the selection view will still be hidden). One way this
happens is when Safari uses `-_retainActiveFocusedState` in combination with `-resignFirstResponder` and
`-becomeFirstResponder` to temporarily switch focus away from the web view when the URL bar is tapped.

To fix both the inactive selection after `-becomeFirstResponder` as well as the selection handles showing up
when performing a loupe gesture, we simply make the check in `-becomeFirstResponderForWebView` more nuanced.
Instead of always activating the selection or never activating the selection, only activate the selection if the
current editor state has information about a selection to avoid causing the selection view to be immediately
removed and "highlight mode" to be reset when selecting a word via loupe gesture for the first time.

Tests:  KeyboardInputTests.CaretSelectionRectAfterRestoringFirstResponder
        KeyboardInputTests.RangedSelectionRectAfterRestoringFirstResponder
        editing/selection/ios/selection-handles-after-touch-end.html

* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView becomeFirstResponderForWebView]):
(-[WKContentView canShowNonEmptySelectionView]):

Tools:

Adds plumbing in UIScriptController to grab the start and end selection handle rects for use in the new layout
test. Also adds new API tests to verify that when a web view resigns first responder, both caret and range
selection views are hidden, and when first responder status is restored, both caret and range selection views
are made visible again.

* DumpRenderTree/ios/UIScriptControllerIOS.mm:
(WTR::UIScriptController::selectionStartGrabberViewRect const):
(WTR::UIScriptController::selectionEndGrabberViewRect const):
* TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl:
* TestRunnerShared/UIScriptContext/UIScriptController.cpp:
(WTR::UIScriptController::selectionStartGrabberViewRect const):
(WTR::UIScriptController::selectionEndGrabberViewRect const):
* TestRunnerShared/UIScriptContext/UIScriptController.h:
* TestWebKitAPI/Tests/ios/KeyboardInputTestsIOS.mm:
(-[TestWKWebView waitForCaretViewFrameToBecome:]):
(-[TestWKWebView waitForSelectionViewRectsToBecome:]):
(webViewWithAutofocusedInput):

Pull out some common logic for creating a web view that allows programmatic focus to present the keyboard, and
immediately loading a web page with an autofocusing text field.

(TestWebKitAPI::TEST):
* TestWebKitAPI/cocoa/TestWKWebView.h:
* TestWebKitAPI/cocoa/TestWKWebView.mm:
(-[TestWKWebView caretViewRectInContentCoordinates]):
(-[TestWKWebView selectionViewRectsInContentCoordinates]):
* WebKitTestRunner/ios/UIScriptControllerIOS.mm:
(WTR::UIScriptController::selectionStartGrabberViewRect const):
(WTR::UIScriptController::selectionEndGrabberViewRect const):

LayoutTests:

Adds a new layout test to verify that (1) selection handles are not shown when selecting a word by long
pressing prior to ending the touch, and (2) selection handles are shown after ending the touch.

* editing/selection/ios/selection-handles-after-touch-end-expected.txt: Added.
* editing/selection/ios/selection-handles-after-touch-end.html: Added.
* platform/win/TestExpectations:

Skip iOS selection tests on Windows.

* resources/ui-helper.js:

Introduces new hooks in UIHelper to grab the frames of the start and end selection handle views.

(window.UIHelper.getSelectionStartGrabberViewRect.return.new.Promise.):
(window.UIHelper.getSelectionStartGrabberViewRect.return.new.Promise):
(window.UIHelper.getSelectionStartGrabberViewRect):
(window.UIHelper.getSelectionEndGrabberViewRect.return.new.Promise.):
(window.UIHelper.getSelectionEndGrabberViewRect.return.new.Promise):
(window.UIHelper.getSelectionEndGrabberViewRect):

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

13 months ago[iOS] Layout tests that send HID events cause WebKitTestRunner to crash on recent...
wenson_hsieh@apple.com [Mon, 6 Aug 2018 13:59:04 +0000 (13:59 +0000)]
[iOS] Layout tests that send HID events cause WebKitTestRunner to crash on recent SDKs
https://bugs.webkit.org/show_bug.cgi?id=188334
<rdar://problem/40630074>

Reviewed by Tim Horton.

To mark the end of previously dispatched IOHID events, HIDEventGenerator currently sends a vendor-defined event
and stores the completion callback ID for the previously dispatched events as vendor-defined data. When this
vendor-defined marker event is handled by the application, we then read the callback ID back from the event, map
it to a completion block, and invoke the completion block to signal that the previous HID event has been
processed.

This callback ID is an unsigned, so we tell IOKit that we need `sizeof(unsigned)` (4 bytes) to store it. On
shipping software, IOKit clamps this to a minimum of 8 bytes, i.e. `sizeof(CFIndex)`. When we later call
IOHIDEventGetIntegerValue to read the value of our vendor-defined data as a CFIndex, we get our expected
callback ID because the buffer was clamped to 8 bytes.

However, on recent iOS SDKs that contain the fix for <rdar://problem/20082284>, IOKit no longer clamps the size
of the vendor-defined data buffer to 8 bytes. This means that when we try to use IOHIDEventGetIntegerValue to
read our callback ID back, we end up getting a CFIndex where the lower 4 bytes are the callback ID we wrote, and
the upper 4 bytes are garbage. In the case where any of these upper 4 bytes are non-zero, we fail to map the
callback ID to a completion handler, and so we never finish dispatching the HID event, causing an exception to
be thrown.

To fix this, we adjust callback ID to be a CFIndex, which matches IOHIDEventGetIntegerValue's return type.

* WebKitTestRunner/ios/HIDEventGenerator.mm:
(+[HIDEventGenerator nextEventCallbackID]):
(-[HIDEventGenerator _sendMarkerHIDEventWithCompletionBlock:]):

Also refactor a bit of `-_sendMarkerHIDEventWithCompletionBlock:` by using auto and move semantics.

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

13 months ago[WPE] New webgl 2.0 failures.
csaavedra@igalia.com [Mon, 6 Aug 2018 12:59:41 +0000 (12:59 +0000)]
[WPE] New webgl 2.0 failures.

Unreviewed gardening.
* platform/wpe/TestExpectations: Two webgl 2.0 tests are failing,
mark them.

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

13 months ago[GTK] Skip new webgl 2.0 tests. Unreviewed gardening.
csaavedra@igalia.com [Mon, 6 Aug 2018 12:45:38 +0000 (12:45 +0000)]
[GTK] Skip new webgl 2.0 tests. Unreviewed gardening.

* platform/gtk/TestExpectations: Expanded webgl 2.0 skipped
test to include all, since there were new failures.

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

13 months agoMake two-arguments versions of scrollBy/scrollTo depend on the one-argument versions
commit-queue@webkit.org [Mon, 6 Aug 2018 09:56:08 +0000 (09:56 +0000)]
Make two-arguments versions of scrollBy/scrollTo depend on the one-argument versions
https://bugs.webkit.org/show_bug.cgi?id=188300

Patch by Frederic Wang <fwang@igalia.com> on 2018-08-06
Reviewed by Darin Adler.

This patch refactors a bit the scrollBy/scrollTo code, so that the two-arguments versions
share the same code path as the more generic one-argument versions. In particular, this
helps to implement the ScrollBehavior option (bug 188043) since the one-argument versions
will require to distinguish between smooth and instant scrolling. The logic to normalize
non finite left/right values or to use a fallback when they are absent is also factored out
into ScrollToOptions.

References:
https://drafts.csswg.org/cssom-view/#dom-element-scroll
https://drafts.csswg.org/cssom-view/#dom-element-scrollby
https://drafts.csswg.org/cssom-view/#dom-window-scroll
https://drafts.csswg.org/cssom-view/#dom-window-scrollby

No new tests, behavior is unchanged.

* dom/Element.cpp:
(WebCore::Element::scrollBy): Make two-parameter version depends on one-parameter version
and rewrite the normalize / fallback logic.
(WebCore::Element::scrollTo): Rewrite the normalize / fallback logic.
(WebCore::normalizeNonFiniteValue): Deleted. The logic is moved to ScrollToOptions.
* page/DOMWindow.cpp:
(WebCore::DOMWindow::scrollBy const): Make two-parameter version depends on one-parameter
version and rewrite the normalize / fallback logic.
(WebCore::DOMWindow::scrollTo const): Make two-parameter version depends on one-parameter
version and rewrite the normalize / fallback logic.
* page/ScrollToOptions.h: Add <cmath> to use std::isfinite
(WebCore::ScrollToOptions::normalizeNonFiniteCoordinatesOrFallBackTo): New function to
normalize left/right values or fallback to the specified value if it is missing.

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

13 months agoUnreviewed follow-up to r234594.
zandobersek@gmail.com [Mon, 6 Aug 2018 09:24:36 +0000 (09:24 +0000)]
Unreviewed follow-up to r234594.

Add missing constructor and destructor definitions for the bunch of new
classes that were added in that revision.

* platform/graphics/nicosia/NicosiaPlatformLayer.cpp:
(Nicosia::ContentLayer::ContentLayer):
(Nicosia::BackingStore::BackingStore):
(Nicosia::ImageBacking::ImageBacking):

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

13 months ago[Nicosia] Add additional layer state classes, use impl-based approach to make them...
zandobersek@gmail.com [Mon, 6 Aug 2018 08:48:01 +0000 (08:48 +0000)]
[Nicosia] Add additional layer state classes, use impl-based approach to make them extendable
https://bugs.webkit.org/show_bug.cgi?id=188341

Reviewed by Carlos Garcia Campos.

Add the ContentLayer, BackingStore and ImageBacking classes in the
Nicosia namespace. State objects of CompositionLayer instances keep
references to objects of these classes depending on the content that's
presented in the associated GraphicsLayer.

ContentLayer derives from the PlatformLayer class. It's used for layers
that display things like WebGL and HTML5 canvas and media content in a
platform-specific way. In case of TextureMapper the hardware-accelerated
content is piped into that rendering pipeline.

BackingStore is meant to represent the painted contents of a layer. The
equivalent current functionality is using a tiled backing store that
has its contents copied into the CoordinatedBackingStore instance.

ImageBacking is used for a layer whose content is a simple Image object.
Image's pixel data is rasterized and again managed through
CoordinatedBackingStore for rendering.

All these classes, along with the CompositionLayer class, should now be
constructed with a factory function that returns an object that derives
the class-specific Impl interface. This will allow for simpler
implementation of different approaches in parallel. The TextureMapper
variants will be the first ones, replicating the current behavior as it
is implemented across classes in the CoordinatedGraphics and
TextureMapper layers.

* platform/graphics/nicosia/NicosiaPlatformLayer.cpp:
(Nicosia::CompositionLayer::CompositionLayer):
* platform/graphics/nicosia/NicosiaPlatformLayer.h:
(Nicosia::PlatformLayer::isContentLayer const):
(Nicosia::CompositionLayer::Impl::isTextureMapperImpl const):
(Nicosia::CompositionLayer::create):
(Nicosia::CompositionLayer::impl const):
(Nicosia::ContentLayer::Impl::isTextureMapperImpl const):
(Nicosia::ContentLayer::create):
(Nicosia::ContentLayer::impl const):
(Nicosia::BackingStore::Impl::isTextureMapperImpl const):
(Nicosia::BackingStore::create):
(Nicosia::BackingStore::impl const):
(Nicosia::ImageBacking::Impl::isTextureMapperImpl const):
(Nicosia::ImageBacking::create):
(Nicosia::ImageBacking::impl const):
* platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:
(WebCore::CoordinatedGraphicsLayer::CoordinatedGraphicsLayer):

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

13 months ago[Nicosia] Add Nicosia::Scene
zandobersek@gmail.com [Mon, 6 Aug 2018 08:46:30 +0000 (08:46 +0000)]
[Nicosia] Add Nicosia::Scene
https://bugs.webkit.org/show_bug.cgi?id=188340

Reviewed by Carlos Garcia Campos.

Source/WebCore:

Add the Nicosia::Scene class that controls the scene's state and enables
thread-safe updates to that state.

The State struct itself holds a set of all the layers in the scene, and
separates out the root layer specifically. An ID counter is also present
there, allowing consumers of this state to easily check for any updates.

A reference to the Nicosia::Scene object now replaces the
HashSet-and-root-layer pair in the CoordinatedGraphicsState struct.

* platform/TextureMapper.cmake:
* platform/graphics/nicosia/NicosiaScene.cpp: Added.
* platform/graphics/nicosia/NicosiaScene.h: Added.
(Nicosia::Scene::create):
(Nicosia::Scene::accessState):
* platform/graphics/texmap/coordinated/CoordinatedGraphicsState.h:

Source/WebKit:

CompositingCoordinator spawns a Nicosia::Scene object that it shares
with the CoordinatedGraphicsSceneState instance. All the
Nicosia::CompositionLayer objects indirectly managed by
CompositingCoordinator are now stored in a local Nicosia::Scene::State
member object. Upon each flush that requires frame synchronization the
Nicosia::Scene object is updated in a thread-safe manner, increasing
the scene ID value as well as copying the local HashSet and root layer
values into the shared Scene object, allowing for the consumer (which
currently is the related CoordinatedGraphicsScene instance) to update
its output accordingly.

* WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:
(WebKit::CompositingCoordinator::CompositingCoordinator):
(WebKit::CompositingCoordinator::flushPendingLayerChanges):
(WebKit::CompositingCoordinator::initializeRootCompositingLayerIfNeeded):
(WebKit::CompositingCoordinator::createGraphicsLayer):
(WebKit::CompositingCoordinator::detachLayer):
(WebKit::CompositingCoordinator::attachLayer):
* WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h:

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

13 months ago[GTK] Buttons are drawn too large, text not centered
commit-queue@webkit.org [Mon, 6 Aug 2018 08:25:34 +0000 (08:25 +0000)]
[GTK] Buttons are drawn too large, text not centered
https://bugs.webkit.org/show_bug.cgi?id=185854

Patch by Carlos Eduardo Ramalho <cadubentzen@gmail.com> on 2018-08-06
Reviewed by Carlos Garcia Campos.

Some pages require small buttons and the GTK theme was
drawing only down to a minimum size.

No new tests required. Current layout tests and ManualTests/gtk/theme.html
already cover it.

* platform/gtk/RenderThemeGadget.cpp:
(WebCore::RenderThemeGadget::create):
(WebCore::RenderThemeButtonGadget::RenderThemeButtonGadget): Added
(WebCore::RenderThemeButtonGadget::minimumSize const):
Allow sizes smaller than the minimum size.
* platform/gtk/RenderThemeGadget.h:
* platform/gtk/RenderThemeWidget.cpp:
(WebCore::RenderThemeButton::RenderThemeButton):

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

13 months agoASSERTION !data.customElementReactionQueue() when creating custom element inside...
commit-queue@webkit.org [Mon, 6 Aug 2018 08:25:29 +0000 (08:25 +0000)]
ASSERTION !data.customElementReactionQueue() when creating custom element inside an SVG document
https://bugs.webkit.org/show_bug.cgi?id=187802

The assertion has been removed in bug 188327. This patch updates the test expectations and
add some non-regression test to verify different cases of XML custom element construction.

Patch by Frederic Wang <fwang@igalia.com> on 2018-08-06
Reviewed by Ryosuke Niwa.

* TestExpectations: This test no longer crashes but times out because of bug 187800.
* fast/custom-elements/xml-parsing-create-and-element-for-a-token-expected.txt: Added.
* fast/custom-elements/xml-parsing-create-and-element-for-a-token.svg: Added.

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

13 months agoImplement self.queueMicrotask in Workers
utatane.tea@gmail.com [Mon, 6 Aug 2018 07:59:13 +0000 (07:59 +0000)]
Implement self.queueMicrotask in Workers
https://bugs.webkit.org/show_bug.cgi?id=188247

Reviewed by Ryosuke Niwa.

Source/WebCore:

This patch adds support for self.queueMicrotask to workers.

Tests: http/wpt/workers/queue-microtask.any.html
       http/wpt/workers/queue-microtask.any.worker.html

* bindings/js/JSWorkerGlobalScopeCustom.cpp:
(WebCore::JSWorkerGlobalScope::queueMicrotask):
* page/DOMWindow.idl:
Move queueMicrotask declaration to WindowOrWorkerGlobalScope.idl.
* page/WindowOrWorkerGlobalScope.idl:

LayoutTests:

* http/wpt/workers/queue-microtask.any-expected.txt: Added.
* http/wpt/workers/queue-microtask.any.html: Added.
* http/wpt/workers/queue-microtask.any.js: Added.
(promise_test):
(promise_test.):
(queueMicrotask.promise_test):
(test):
* http/wpt/workers/queue-microtask.any.worker-expected.txt: Added.
* http/wpt/workers/queue-microtask.any.worker.html: Added.

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

13 months ago[GTK][WPE] Fetch tests assert in SubresourceLoader::didReceiveResponse()
commit-queue@webkit.org [Mon, 6 Aug 2018 06:43:51 +0000 (06:43 +0000)]
[GTK][WPE] Fetch tests assert in SubresourceLoader::didReceiveResponse()
https://bugs.webkit.org/show_bug.cgi?id=188163

Patch by Rob Buis <rbuis@igalia.com> on 2018-08-05
Reviewed by Frédéric Wang.

Source/WebCore:

Fetch in manual redirect mode uses didReceiveResponse instead of
willSendRequestInternal, so update the ASSERT.

* loader/SubresourceLoader.cpp:
(WebCore::SubresourceLoader::didReceiveResponse):

LayoutTests:

Unskip since this will not crash in Debug anymore.

* platform/wpe/TestExpectations:

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

13 months agoAdd support for microtasks in workers
utatane.tea@gmail.com [Mon, 6 Aug 2018 04:37:10 +0000 (04:37 +0000)]
Add support for microtasks in workers
https://bugs.webkit.org/show_bug.cgi?id=188246

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

This test is wrong[1,2]. It starts failing since our worker starts using correct microtask queues.

[1]: https://github.com/web-platform-tests/wpt/pull/8936
[2]: https://github.com/w3c/ServiceWorker/issues/1213#issuecomment-342640579

* web-platform-tests/service-workers/service-worker/extendable-event-async-waituntil.https-expected.txt:

Source/WebCore:

This patch adds the microtask mechanism to workers. To adopt the existing microtask mechanism from the main thread,
we extend JSMainThreadExecState for non-main-threads. We rename it to JSExecState, and store stacked
ExecState* data in thread local storage in ThreadGlobalData instead of a static variable s_mainThreadState.

We add MicrotaskQueue to WorkerGlobalScope since each worker has its own thread and it should have its
own microtask queue.

* Modules/encryptedmedia/legacy/LegacyCDMSessionClearKey.cpp:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/JSBindingsAllInOne.cpp:
* bindings/js/JSCallbackData.cpp:
(WebCore::JSCallbackData::invokeCallback):
* bindings/js/JSCustomElementInterface.cpp:
(WebCore::constructCustomElementSynchronously):
(WebCore::JSCustomElementInterface::upgradeElement):
(WebCore::JSCustomElementInterface::invokeCallback):
* bindings/js/JSCustomXPathNSResolver.cpp:
(WebCore::JSCustomXPathNSResolver::lookupNamespaceURI):
* bindings/js/JSDOMGlobalObjectTask.cpp:
* bindings/js/JSDOMWindowBase.cpp:
(WebCore::JSDOMWindowBase::queueTaskToEventLoop):
Queue a microtask to MicrotaskQueue instead of posting a macrotask.

(WebCore::JSDOMWindowMicrotaskCallback::create): Deleted.
(WebCore::JSDOMWindowMicrotaskCallback::call): Deleted.
(WebCore::JSDOMWindowMicrotaskCallback::JSDOMWindowMicrotaskCallback): Deleted.
(): Deleted.
Extract JSDOMWindowMicrotaskCallback as JSMicrotaskCallback and create a new file for it.

* bindings/js/JSErrorHandler.cpp:
(WebCore::JSErrorHandler::handleEvent):
* bindings/js/JSEventListener.cpp:
(WebCore::JSEventListener::handleEvent):
* bindings/js/JSExecState.cpp: Renamed from Source/WebCore/bindings/js/JSMainThreadExecState.cpp.
(WebCore::JSExecState::didLeaveScriptContext):
If we are in a main thread, we consume main thread microtask queue. If we are in worker thread,
we consume a microtask queue per worker.

(WebCore::functionCallHandlerFromAnyThread):
(WebCore::evaluateHandlerFromAnyThread):
* bindings/js/JSExecState.h: Renamed from Source/WebCore/bindings/js/JSMainThreadExecState.h.
(WebCore::JSExecState::currentState):
(WebCore::JSExecState::call):
(WebCore::JSExecState::evaluate):
(WebCore::JSExecState::profiledCall):
(WebCore::JSExecState::profiledEvaluate):
(WebCore::JSExecState::runTask):
(WebCore::JSExecState::loadModule):
(WebCore::JSExecState::linkAndEvaluateModule):
(WebCore::JSExecState::JSExecState):
(WebCore::JSExecState::~JSExecState):
(WebCore::JSExecState::setCurrentState):
Store and load ExecState in thread local storage, ThreadGlobalData. This allows us to use it for workers.

(WebCore::JSMainThreadNullState::JSMainThreadNullState):
(WebCore::JSMainThreadNullState::~JSMainThreadNullState):
We keep this name "JSMainThreadNullState" since CustomElementReactionStack should be stick to the main thread.
And this class is only used in the main thread.

* bindings/js/JSExecStateInstrumentation.h: Renamed from Source/WebCore/bindings/js/JSMainThreadExecStateInstrumentation.h.
(WebCore::JSExecState::instrumentFunctionInternal):
(WebCore::JSExecState::instrumentFunctionCall):
(WebCore::JSExecState::instrumentFunctionConstruct):
* bindings/js/JSMicrotaskCallback.h: Copied from Source/WebKitLegacy/mac/DOM/DOMHTMLBaseElement.mm.
(WebCore::JSMicrotaskCallback::create):
(WebCore::JSMicrotaskCallback::call):
(WebCore::JSMicrotaskCallback::JSMicrotaskCallback):
* bindings/js/JSWorkerGlobalScopeBase.cpp:
(WebCore::JSWorkerGlobalScopeBase::queueTaskToEventLoop):
* bindings/js/ScheduledAction.cpp:
(WebCore::ScheduledAction::executeFunctionInContext):
* bindings/js/ScriptController.cpp:
(WebCore::ScriptController::evaluateInWorld):
(WebCore::ScriptController::loadModuleScriptInWorld):
(WebCore::ScriptController::linkAndEvaluateModuleScriptInWorld):
(WebCore::ScriptController::canAccessFromCurrentOrigin):
* bindings/js/WorkerScriptController.cpp:
(WebCore::WorkerScriptController::evaluate):
* bridge/objc/WebScriptObject.mm:
(-[WebScriptObject callWebScriptMethod:withArguments:]):
(-[WebScriptObject evaluateWebScript:]):
* html/canvas/WebGLRenderingContextBase.cpp:
(WebCore::WebGLRenderingContextBase::compileShader):
(WebCore::WebGLRenderingContextBase::printToConsole):
* inspector/InspectorCanvas.cpp:
(WebCore::InspectorCanvas::buildObjectForCanvas):
(WebCore::InspectorCanvas::buildAction):
* inspector/InspectorController.cpp:
* inspector/InspectorFrontendHost.cpp:
* inspector/TimelineRecordFactory.cpp:
(WebCore::TimelineRecordFactory::createGenericRecord):
* inspector/WorkerInspectorController.cpp:
* inspector/agents/InspectorCanvasAgent.cpp:
* inspector/agents/InspectorNetworkAgent.cpp:
(WebCore::InspectorNetworkAgent::buildInitiatorObject):
* page/DOMWindow.cpp:
(WebCore::DOMWindow::postMessage):
* page/PageConsoleClient.cpp:
(WebCore::PageConsoleClient::addMessage):
* page/csp/ContentSecurityPolicy.cpp:
(WebCore::ContentSecurityPolicy::reportViolation const):
* platform/ThreadGlobalData.h:
(WebCore::ThreadGlobalData::ThreadGlobalData::currentState const):
(WebCore::ThreadGlobalData::ThreadGlobalData::setCurrentState):
* workers/WorkerGlobalScope.cpp:
(WebCore::WorkerGlobalScope::WorkerGlobalScope):
(WebCore::WorkerGlobalScope::removeMicrotaskQueue):
* workers/WorkerGlobalScope.h:
(WebCore::WorkerGlobalScope::microtaskQueue const):
* workers/WorkerThread.cpp:
(WebCore::WorkerThread::stop):
* workers/service/ExtendableEvent.cpp:
(WebCore::ExtendableEvent::addExtendLifetimePromise):
When dispatching an "install" event from service worker, we first create an event,
dispatch it, and set a handler which is called when a pending promise count becomes zero.
However, the old code checked pending promise count in a queued microtask. It worked
previously because microtask is actually a macrotask in the service worker. So this check
is done after a handler is set. But this patch introduces real microtask, and this check
happens before a handler is set because dispatching an event can exhaust microtask queue.
According to the spec, this check should not be done in microtask[1]. We make this checking
part as a macrotask. We note that algorithm noted as FIXMEs should be done in this
microtask while the checking part should not be done.

[1]: https://w3c.github.io/ServiceWorker/#installation-algorithm

Source/WebKit:

Rename JSMainThreadExecState.h to JSExecState.h.

* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMAttr.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMBlob.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMCDATASection.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMCSSRule.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMCSSRuleList.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMCSSStyleDeclaration.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMCSSStyleSheet.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMCSSValue.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMCharacterData.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMClientRect.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMClientRectList.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMComment.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDOMImplementation.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDOMSelection.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDOMTokenList.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDOMWindow.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDeprecated.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocumentFragment.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocumentGtk.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocumentType.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMElementGtk.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMEvent.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMFile.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMFileList.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLAnchorElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLAppletElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLAreaElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLBRElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLBaseElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLBodyElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLButtonElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLCanvasElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLCollection.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLDListElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLDirectoryElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLDivElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLDocument.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLEmbedElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLFieldSetElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLFontElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLFormElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLFrameElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLFrameSetElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLHRElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLHeadElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLHeadingElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLHtmlElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLIFrameElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLImageElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLInputElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLLIElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLLabelElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLLegendElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLLinkElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLMapElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLMarqueeElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLMenuElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLMetaElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLModElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLOListElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLObjectElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLOptGroupElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLOptionElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLOptionsCollection.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLParagraphElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLParamElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLPreElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLQuoteElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLScriptElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLSelectElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLStyleElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableCaptionElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableCellElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableColElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableRowElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableSectionElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTextAreaElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTitleElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLUListElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMKeyboardEvent.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMMediaList.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMMouseEvent.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMNamedNodeMap.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMNodeGtk.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMNodeIterator.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMNodeList.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMProcessingInstruction.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMRange.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMStyleSheet.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMStyleSheetList.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMText.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMTreeWalker.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMUIEvent.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMWheelEvent.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMXPathExpression.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMXPathNSResolver.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMXPathResult.cpp:

Source/WebKitLegacy/mac:

Rename JSMainThreadExecState.h to JSExecState.h.

* DOM/DOMAttr.mm:
* DOM/DOMBlob.mm:
* DOM/DOMCDATASection.mm:
* DOM/DOMCSSCharsetRule.mm:
* DOM/DOMCSSFontFaceRule.mm:
* DOM/DOMCSSImportRule.mm:
* DOM/DOMCSSMediaRule.mm:
* DOM/DOMCSSPageRule.mm:
* DOM/DOMCSSPrimitiveValue.mm:
* DOM/DOMCSSRule.mm:
* DOM/DOMCSSRuleList.mm:
* DOM/DOMCSSStyleDeclaration.mm:
* DOM/DOMCSSStyleRule.mm:
* DOM/DOMCSSStyleSheet.mm:
* DOM/DOMCSSUnknownRule.mm:
* DOM/DOMCSSValue.mm:
* DOM/DOMCSSValueList.mm:
* DOM/DOMCharacterData.mm:
* DOM/DOMComment.mm:
* DOM/DOMCounter.mm:
* DOM/DOMDocument.mm:
* DOM/DOMDocumentFragment.mm:
* DOM/DOMDocumentType.mm:
* DOM/DOMElement.mm:
* DOM/DOMEvent.mm:
* DOM/DOMFile.mm:
* DOM/DOMFileList.mm:
* DOM/DOMHTML.mm:
* DOM/DOMHTMLAnchorElement.mm:
* DOM/DOMHTMLAppletElement.mm:
* DOM/DOMHTMLAreaElement.mm:
* DOM/DOMHTMLBRElement.mm:
* DOM/DOMHTMLBaseElement.mm:
* DOM/DOMHTMLBaseFontElement.mm:
* DOM/DOMHTMLBodyElement.mm:
* DOM/DOMHTMLButtonElement.mm:
* DOM/DOMHTMLCanvasElement.mm:
* DOM/DOMHTMLCollection.mm:
* DOM/DOMHTMLDListElement.mm:
* DOM/DOMHTMLDirectoryElement.mm:
* DOM/DOMHTMLDivElement.mm:
* DOM/DOMHTMLDocument.mm:
* DOM/DOMHTMLElement.mm:
* DOM/DOMHTMLEmbedElement.mm:
* DOM/DOMHTMLFieldSetElement.mm:
* DOM/DOMHTMLFontElement.mm:
* DOM/DOMHTMLFormElement.mm:
* DOM/DOMHTMLFrameElement.mm:
* DOM/DOMHTMLFrameSetElement.mm:
* DOM/DOMHTMLHRElement.mm:
* DOM/DOMHTMLHeadElement.mm:
* DOM/DOMHTMLHeadingElement.mm:
* DOM/DOMHTMLHtmlElement.mm:
* DOM/DOMHTMLIFrameElement.mm:
* DOM/DOMHTMLImageElement.mm:
* DOM/DOMHTMLInputElement.mm:
* DOM/DOMHTMLLIElement.mm:
* DOM/DOMHTMLLabelElement.mm:
* DOM/DOMHTMLLegendElement.mm:
* DOM/DOMHTMLLinkElement.mm:
* DOM/DOMHTMLMapElement.mm:
* DOM/DOMHTMLMarqueeElement.mm:
* DOM/DOMHTMLMediaElement.mm:
* DOM/DOMHTMLMenuElement.mm:
* DOM/DOMHTMLMetaElement.mm:
* DOM/DOMHTMLModElement.mm:
* DOM/DOMHTMLOListElement.mm:
* DOM/DOMHTMLObjectElement.mm:
* DOM/DOMHTMLOptGroupElement.mm:
* DOM/DOMHTMLOptionElement.mm:
* DOM/DOMHTMLOptionsCollection.mm:
* DOM/DOMHTMLParagraphElement.mm:
* DOM/DOMHTMLParamElement.mm:
* DOM/DOMHTMLPreElement.mm:
* DOM/DOMHTMLQuoteElement.mm:
* DOM/DOMHTMLScriptElement.mm:
* DOM/DOMHTMLSelectElement.mm:
* DOM/DOMHTMLStyleElement.mm:
* DOM/DOMHTMLTableCaptionElement.mm:
* DOM/DOMHTMLTableCellElement.mm:
* DOM/DOMHTMLTableColElement.mm:
* DOM/DOMHTMLTableElement.mm:
* DOM/DOMHTMLTableRowElement.mm:
* DOM/DOMHTMLTableSectionElement.mm:
* DOM/DOMHTMLTextAreaElement.mm:
* DOM/DOMHTMLTitleElement.mm:
* DOM/DOMHTMLUListElement.mm:
* DOM/DOMHTMLVideoElement.mm:
* DOM/DOMImplementation.mm:
* DOM/DOMKeyboardEvent.mm:
* DOM/DOMMediaError.mm:
* DOM/DOMMediaList.mm:
* DOM/DOMMouseEvent.mm:
* DOM/DOMMutationEvent.mm:
* DOM/DOMNamedNodeMap.mm:
* DOM/DOMNode.mm:
* DOM/DOMNodeIterator.mm:
* DOM/DOMNodeList.mm:
* DOM/DOMOverflowEvent.mm:
* DOM/DOMProcessingInstruction.mm:
* DOM/DOMProgressEvent.mm:
* DOM/DOMRGBColor.mm:
* DOM/DOMRange.mm:
* DOM/DOMRect.mm:
* DOM/DOMStyleSheet.mm:
* DOM/DOMStyleSheetList.mm:
* DOM/DOMText.mm:
* DOM/DOMTextEvent.mm:
* DOM/DOMTimeRanges.mm:
* DOM/DOMTokenList.mm:
* DOM/DOMTreeWalker.mm:
* DOM/DOMUIEvent.mm:
* DOM/DOMWheelEvent.mm:
* DOM/DOMXPathExpression.mm:
* DOM/DOMXPathResult.mm:
* DOM/ObjCEventListener.mm:

LayoutTests:

* http/wpt/workers/microtasks.any-expected.txt: Added.
* http/wpt/workers/microtasks.any.html: Added.
* http/wpt/workers/microtasks.any.js: Added.
(promise_test):
* http/wpt/workers/microtasks.any.worker-expected.txt: Added.
* http/wpt/workers/microtasks.any.worker.html: Added.

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

13 months agoProperties set on window.customElements can disappear due to GC
rniwa@webkit.org [Mon, 6 Aug 2018 00:44:55 +0000 (00:44 +0000)]
Properties set on window.customElements can disappear due to GC
https://bugs.webkit.org/show_bug.cgi?id=172575

Lexicologically sort the IDL attributes per Darin's comment.

* dom/CustomElementRegistry.idl:

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

13 months ago[LFC][BFC] contentHeightForFormattingContextRoot uses the wrong coordinate system...
zalan@apple.com [Sun, 5 Aug 2018 23:19:57 +0000 (23:19 +0000)]
[LFC][BFC] contentHeightForFormattingContextRoot uses the wrong coordinate system to compute the height.
https://bugs.webkit.org/show_bug.cgi?id=188319

Reviewed by Antti Koivisto.

Display::Box::marginBox() is in the coordinate system of the box itself (8px top margin translates to y = -8px).
What we need instead to compute the content height is the top/bottom position in the containing block's coordinate system (rect and rectWithMargin).

* layout/FormattingContextGeometry.cpp:
(WebCore::Layout::contentHeightForFormattingContextRoot):

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

13 months ago[GStreamer] Remove unsound assertions in MediaPlayerPrivateGStreamerBase.
Ms2ger@igalia.com [Sun, 5 Aug 2018 10:10:10 +0000 (10:10 +0000)]
[GStreamer] Remove unsound assertions in MediaPlayerPrivateGStreamerBase.
https://bugs.webkit.org/show_bug.cgi?id=188162

Reviewed by Philippe Normand.

These assertions sometimes fail, and there's a runtime check right
after them anyway.

Tests: fast/canvas/webgl/texImage2D-video-flipY-false.html
       fast/canvas/webgl/texImage2D-video-flipY-true.html

* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::MediaPlayerPrivateGStreamerBase::copyVideoTextureToPlatformTexture):
(WebCore::MediaPlayerPrivateGStreamerBase::nativeImageForCurrentTime):

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

13 months ago[MediaCapabilities] Platform integration
philn@webkit.org [Sun, 5 Aug 2018 09:26:00 +0000 (09:26 +0000)]
[MediaCapabilities] Platform integration
https://bugs.webkit.org/show_bug.cgi?id=187850

Reviewed by Eric Carlson.

Source/WebCore:

Mock platform support for the MediaCapabilities specification.

Test: media/mediacapabilities/mock-decodingInfo.html
      media/mediacapabilities/mock-encodingInfo.html

* Modules/mediacapabilities/MediaCapabilities.cpp:
(WebCore::MediaCapabilities::decodingInfo):
(WebCore::MediaCapabilities::encodingInfo):
* Modules/mediacapabilities/MediaCapabilitiesInfo.h:
(WebCore::MediaCapabilitiesInfo::create):
* PlatformGTK.cmake:
* PlatformMac.cmake:
* PlatformWPE.cmake:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* platform/mediacapabilities/MediaEngineConfiguration.cpp: Added.
(WebCore::MediaEngineVideoConfiguration::MediaEngineVideoConfiguration):
(WebCore::MediaEngineAudioConfiguration::MediaEngineAudioConfiguration):
(WebCore::MediaEngineConfiguration::MediaEngineConfiguration):
* platform/mediacapabilities/MediaEngineConfiguration.h: Added.
(WebCore::MediaEngineVideoConfiguration::create):
(WebCore::MediaEngineVideoConfiguration::contentType const):
(WebCore::MediaEngineVideoConfiguration::size const):
(WebCore::MediaEngineVideoConfiguration::bitrate const):
(WebCore::MediaEngineVideoConfiguration::framerate const):
(WebCore::MediaEngineAudioConfiguration::create):
(WebCore::MediaEngineAudioConfiguration::contentType const):
(WebCore::MediaEngineAudioConfiguration::channels const):
(WebCore::MediaEngineAudioConfiguration::bitrate const):
(WebCore::MediaEngineAudioConfiguration::samplerate const):
(WebCore::MediaEngineConfiguration::audioConfiguration const):
(WebCore::MediaEngineConfiguration::videoConfiguration const):
* platform/mediacapabilities/MediaEngineConfigurationFactory.cpp: Added.
(WebCore::mockEnabled):
(WebCore::MediaEngineConfigurationFactory::createDecodingConfiguration):
(WebCore::MediaEngineConfigurationFactory::createEncodingConfiguration):
(WebCore::MediaEngineConfigurationFactory::enableMock):
(WebCore::MediaEngineConfigurationFactory::disableMock):
* platform/mediacapabilities/MediaEngineConfigurationFactory.h: Added.
* platform/mediacapabilities/MediaEngineDecodingConfiguration.h: Added.
(WebCore::MediaEngineDecodingConfiguration::MediaEngineDecodingConfiguration):
(WebCore::MediaEngineDecodingConfiguration::canDecodeMedia):
(WebCore::MediaEngineDecodingConfiguration::canSmoothlyDecodeMedia):
(WebCore::MediaEngineDecodingConfiguration::canPowerEfficientlyDecodeMedia):
(WebCore::MediaEngineDecodingConfiguration::decodingType const):
* platform/mediacapabilities/MediaEngineEncodingConfiguration.h: Added.
(WebCore::MediaEngineEncodingConfiguration::MediaEngineEncodingConfiguration):
(WebCore::MediaEngineEncodingConfiguration::canEncodeMedia):
(WebCore::MediaEngineEncodingConfiguration::canSmoothlyEncodeMedia):
(WebCore::MediaEngineEncodingConfiguration::canPowerEfficientlyEncodeMedia):
(WebCore::MediaEngineEncodingConfiguration::encodingType const):
* platform/mock/MediaEngineDecodingConfigurationMock.cpp: Added.
(WebCore::MediaEngineDecodingConfigurationMock::canDecodeMedia):
(WebCore::MediaEngineDecodingConfigurationMock::canSmoothlyDecodeMedia):
(WebCore::MediaEngineDecodingConfigurationMock::canPowerEfficientlyDecodeMedia):
* platform/mock/MediaEngineDecodingConfigurationMock.h: Added.
* platform/mock/MediaEngineEncodingConfigurationMock.cpp: Added.
(WebCore::MediaEngineEncodingConfigurationMock::canEncodeMedia):
(WebCore::MediaEngineEncodingConfigurationMock::canSmoothlyEncodeMedia):
(WebCore::MediaEngineEncodingConfigurationMock::canPowerEfficientlyEncodeMedia):
* platform/mock/MediaEngineEncodingConfigurationMock.h: Added.
* testing/Internals.cpp:
(WebCore::Internals::resetToConsistentState):
(WebCore::Internals::enableMockMediaCapabilities):
* testing/Internals.h:
* testing/Internals.idl:

LayoutTests:

Mock tests for the MediaCapabilities specification.

* media/mediacapabilities/mock-decodingInfo-expected.txt: Added.
* media/mediacapabilities/mock-decodingInfo.html: Added.
* media/mediacapabilities/mock-encodingInfo-expected.txt: Added.
* media/mediacapabilities/mock-encodingInfo.html: Added.
* media/video-test.js:
(checkMediaCapabilitiesInfo):

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

13 months agoMake WebCore::Timer more space-efficient
simon.fraser@apple.com [Sat, 4 Aug 2018 22:57:13 +0000 (22:57 +0000)]
Make WebCore::Timer more space-efficient
https://bugs.webkit.org/show_bug.cgi?id=187455

Reviewed by Brent Fulgham.

Steal a bit from m_heapIndex for m_wasDeleted to eliminate padding in Timer.
This reduces the size of Document, which has 8 Timers, from 3360 to 3296 bytes (saving 64 bytes).

* platform/Timer.cpp:
(WebCore::TimerBase::TimerBase):
* platform/Timer.h:

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

13 months agoREGRESSION (r208953): TemplateObjectDescriptor constructor calculates m_hash on use...
ddkilzer@apple.com [Sat, 4 Aug 2018 20:07:13 +0000 (20:07 +0000)]
REGRESSION (r208953): TemplateObjectDescriptor constructor calculates m_hash on use-after-move variable
<https://webkit.org/b/188331>

Reviewed by Yusuke Suzuki.

* runtime/TemplateObjectDescriptor.h:
(JSC::TemplateObjectDescriptor::TemplateObjectDescriptor):
Use `m_rawstrings` instead of `rawStrings` to calculate hash.

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

13 months agoSort the WebCore project file
simon.fraser@apple.com [Sat, 4 Aug 2018 17:38:13 +0000 (17:38 +0000)]
Sort the WebCore project file

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

13 months agoProperties set on window.customElements can disappear due to GC
rniwa@webkit.org [Sat, 4 Aug 2018 09:02:44 +0000 (09:02 +0000)]
Properties set on window.customElements can disappear due to GC
https://bugs.webkit.org/show_bug.cgi?id=172575
<rdar://problem/32440668>

Reviewed by Saam Barati.

Source/WebCore:

Fixed the bug that JS wrapper of CustomElementsRegistry can erroneously get collected during GC
by keeping it alive as long as the global object is alive.

Test: fast/custom-elements/custom-element-registry-wrapper-should-stay-alive.html

* dom/CustomElementRegistry.cpp:
(WebCore::CustomElementRegistry::create):
(WebCore::CustomElementRegistry::CustomElementRegistry):
* dom/CustomElementRegistry.h:
(WebCore::CustomElementRegistry): Make this inherited from ContextDestructionObserver.
* dom/CustomElementRegistry.idl: Set GenerateIsReachable=ImplScriptExecutionContext in IDL. This will
make CustomElementRegistry reachable from the global object.
* page/DOMWindow.cpp:
(WebCore::DOMWindow::ensureCustomElementRegistry):

LayoutTests:

Added a regression test.

* fast/custom-elements/custom-element-registry-wrapper-should-stay-alive-expected.txt: Added.
* fast/custom-elements/custom-element-registry-wrapper-should-stay-alive.html: Added.

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

13 months agoinnerHTML should not synchronously create a custom element
rniwa@webkit.org [Sat, 4 Aug 2018 06:35:37 +0000 (06:35 +0000)]
innerHTML should not synchronously create a custom element
https://bugs.webkit.org/show_bug.cgi?id=188327
<rdar://problem/42923114>

Reviewed by Daniel Bates.

LayoutTests/imported/w3c:

Rebaselined the test now that all test cases are passing.

* web-platform-tests/custom-elements/connected-callbacks-html-fragment-parsing-expected.txt:

Source/WebCore:

Fixed the bug that the fragment parsing algorithm was synchronously constructing a custom element instead of
enqueuing an element to upgrade.

The fragment parsing algorithm creates an element for a token with *will execute script* flag set to false:
https://html.spec.whatwg.org/multipage/parsing.html#create-an-element-for-the-token
which results in creating an element with synchronous custom elements flag *not* set:
https://dom.spec.whatwg.org/#concept-create-element

When synchronous custom elements flag is false, we're supposed to create an element and enqueue a custom element
upgrade reaction. createHTMLElementOrFindCustomElementInterface was missing this last logic.

Also fixed a bug that Element::enqueueToUpgrade would hit a debug assertion when a custom element which has been
enqueued to upgrade is enqueued to upgrade for the second time. In this case, we need to put the element into the
current element queue (https://html.spec.whatwg.org/multipage/custom-elements.html#current-element-queue) again.

While the specification simply enqueues another upgrade reaction and bails out immediately in the first step of
the upgrade, WebKit's implementation simply avoids this redundancy in the first place:
https://html.spec.whatwg.org/multipage/custom-elements.html#concept-upgrade-an-element

Existing tests such as imported/w3c/web-platform-tests/custom-elements/reactions/Document.html exercises this
code path after the fragment parsing algorithm fix.

Tests: imported/w3c/web-platform-tests/custom-elements/connected-callbacks-html-fragment-parsing.html

* dom/CustomElementReactionQueue.cpp:
(WebCore::CustomElementReactionQueueItem::type const): Added for an assertion.
(WebCore::CustomElementReactionQueue::enqueueElementUpgrade): Enqueue this element to the current element queue
by calling ensureCurrentQueue and avoid inserting a redundant upgrade reaction.
* dom/CustomElementReactionQueue.h:
* dom/Element.cpp:
(WebCore::Element::enqueueToUpgrade): Handle the case when a custom element is enqueued to upgrade for the second
time while it had been waiting in some element queue. In this case, the reaction queue for this element has
already been created and we simply need to put this element back into the current element queue (i.e. this element
now belongs to both element queues).
* html/parser/HTMLConstructionSite.cpp:
(WebCore::findCustomElementInterface): Extracted out of createHTMLElementOrFindCustomElementInterface.
(WebCore::HTMLConstructionSite::createHTMLElementOrFindCustomElementInterface): Fixed the bug that the HTML parser
was synchronously constructing a custom element even for the fragment parsing algorithm.

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

13 months agoGive the `jsc` shell the JIT entitlement
sbarati@apple.com [Sat, 4 Aug 2018 06:27:23 +0000 (06:27 +0000)]
Give the `jsc` shell the JIT entitlement
https://bugs.webkit.org/show_bug.cgi?id=188324
<rdar://problem/42885806>

Reviewed by Dan Bernstein.

This should help us in ensuring the system jsc is able to JIT.

* Configurations/JSC.xcconfig:
* JavaScriptCore.xcodeproj/project.pbxproj:
* allow-jit-macOS.entitlements: Added.

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

13 months agoWe should cache the compiled sandbox profile in a data vault
commit-queue@webkit.org [Sat, 4 Aug 2018 01:09:37 +0000 (01:09 +0000)]
We should cache the compiled sandbox profile in a data vault
https://bugs.webkit.org/show_bug.cgi?id=184991

Patch by Ben Richards <benton_richards@apple.com> on 2018-08-03
Reviewed by Ryosuke Niwa.

Source/WebCore:

Added functionality to FileHandle so that it can lock a file while open.
Added a function to FileSystem to delete non empty directories.

* platform/FileHandle.cpp:
(WebCore::FileHandle::FileHandle):
(WebCore::FileHandle::open):
(WebCore::FileHandle::close):
* platform/FileHandle.h:
* platform/FileSystem.h:
* platform/cocoa/FileSystemCocoa.mm:
(WebCore::FileSystem::deleteNonEmptyDirectory):

Source/WebKit:

This patch changes a few things (note: data vaults and sandbox entitlements are only used in internal builds):
(1) Instead of compiling a sandbox every time a process is launched, processes now look for a cached sandbox
    in a process specific data vault on macOS platforms. (ChildProcessMac.mm)
(2) If a valid cached sandbox is not found, a process will create the data vault (or ensure that it exists),
    compile a sandbox, and cache it.
(3) In order to create process specific data vaults, each process now has their own <process name>-OSX-sandbox.entitlements
    file which contains an entitlement with a process specific "storage class" which ensures that each process
    can only ever access its own data vault. (See the article on confluence "Data Vaults and Restricted Files" for more info)
(4) The sandbox entitlements file for the Network, WebContent and Plugin services are loaded dynamically
    through Scripts/<process name>-process-entitlements.sh which is triggered in a new build phase for each service.
    The Storage process sandbox entitlements are loaded directly in Configurations/StorageService.xcconfig.
    The reason that the sandbox entitlements are applied dynamically is so that these sandbox entitlements
    are only applied when WK_USE_RESTRICTED_ENTITLEMENTS is YES. This means that open source builds will still work.

* Configurations/Network-OSX-sandbox.entitlements: Added.
* Configurations/Plugin-OSX-sandbox.entitlements: Added.
* Configurations/Storage-OSX-sandbox.entitlements: Added.
* Configurations/StorageService.xcconfig:
* Configurations/WebContent-OSX-sandbox.entitlements: Added.
* Configurations/WebKit.xcconfig:
* NetworkProcess/NetworkProcess.h:
* PluginProcess/PluginProcess.h:
* Scripts/process-network-entitlements.sh: Added.
* Scripts/process-plugin-entitlements.sh: Added.
* Scripts/process-webcontent-entitlements.sh:
* Shared/ChildProcess.h:
* Shared/EntryPointUtilities/mac/XPCService/XPCServiceEntryPoint.h:
(WebKit::XPCServiceInitializer):
* Shared/SandboxInitializationParameters.h:
(WebKit::SandboxInitializationParameters::setOverrideSandboxProfilePath):
(WebKit::SandboxInitializationParameters::overrideSandboxProfilePath const):
(WebKit::SandboxInitializationParameters::setSandboxProfile):
(WebKit::SandboxInitializationParameters::sandboxProfile const):
(): Deleted.
* Shared/mac/ChildProcessMac.mm:
(WebKit::SandboxProfileDeleter::operator()):
(WebKit::SandboxParametersDeleter::operator()):
(WebKit::SandboxInfo::SandboxInfo):
(WebKit::fileContents):
(WebKit::processStorageClass):
(WebKit::setAndSerializeSandboxParameters):
(WebKit::getUserCacheDirectory):
(WebKit::sandboxDataVaultParentDirectory):
(WebKit::sandboxDirectory):
(WebKit::sandboxFilePath):
(WebKit::ensureSandboxCacheDirectory):
(WebKit::writeSandboxDataToCacheFile):
(WebKit::compileAndCacheSandboxProfile):
(WebKit::tryApplyCachedSandbox):
(WebKit::webKit2Bundle):
(WebKit::sandboxProfilePath):
(WebKit::compileAndApplySandboxSlowCase):
(WebKit::applySandbox):
(WebKit::initializeSandboxParameters):
(WebKit::ChildProcess::initializeSandbox):
* Shared/mac/SandboxInitialiationParametersMac.mm:
(WebKit::SandboxInitializationParameters::SandboxInitializationParameters):
* StorageProcess/StorageProcess.h:
* WebKit.xcodeproj/project.pbxproj:
* WebProcess/WebProcess.h:

Source/WTF:

Added trace points for sandbox initialization and exposed functions needed for sandbox caching

* wtf/SystemTracing.h:
* wtf/spi/darwin/SandboxSPI.h:

Tools:

Added trace points for sandbox initialization

* Tracing/SystemTracePoints.plist:

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

13 months agoWebGL 2 conformance: vertex_arrays/vertex_array_object.html
commit-queue@webkit.org [Sat, 4 Aug 2018 00:11:49 +0000 (00:11 +0000)]
WebGL 2 conformance: vertex_arrays/vertex_array_object.html
https://bugs.webkit.org/show_bug.cgi?id=188291
<rdar://problem/42792709>

Source/WebCore:

Patch by Justin Fan <justin_fan@apple.com> on 2018-08-03
Reviewed by Dean Jackson.

Get https://www.khronos.org/registry/webgl/conformance-suites/2.0.0/conformance2/vertex_arrays/vertex-array-object.html
working on Mac OS and iOS, and check in the new test expectations.

Existing test: webgl/2.0.0/conformance2/vertex_arrays/vertex-array-object.html

* html/canvas/WebGL2RenderingContext.cpp:
(WebCore::WebGL2RenderingContext::initializeVertexArrayObjects):
(WebCore::WebGL2RenderingContext::deleteVertexArray):
* html/canvas/WebGLRenderingContextBase.cpp:
(WebCore::WebGLRenderingContextBase::deleteObject):
* html/canvas/WebGLVertexArrayObject.cpp:
(WebCore::WebGLVertexArrayObject::WebGLVertexArrayObject):
* platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:
(WebCore::GraphicsContext3D::checkVaryingsPacking const):
(WebCore::GraphicsContext3D::createVertexArray):
(WebCore::GraphicsContext3D::deleteVertexArray):
(WebCore::GraphicsContext3D::isVertexArray):
(WebCore::GraphicsContext3D::bindVertexArray):

LayoutTests:

Get https://www.khronos.org/registry/webgl/conformance-suites/2.0.0/conformance2/vertex_arrays/vertex-array-object.html
working on Mac OS and iOS, and check in the new test expectations.

Patch by Justin Fan <justin_fan@apple.com> on 2018-08-03
Reviewed by Dean Jackson.

* TestExpectations: No longer skipping vertex_arrays tests.
The following FAILed before this patch but are now expecting PASSes.
* webgl/2.0.0/conformance2/glsl3/array-as-return-value-expected.txt:
* webgl/2.0.0/conformance2/glsl3/array-assign-constructor-expected.txt:
* webgl/2.0.0/conformance2/glsl3/array-assign-expected.txt:
* webgl/2.0.0/conformance2/glsl3/array-complex-indexing-expected.txt:
* webgl/2.0.0/conformance2/glsl3/array-element-increment-expected.txt:
* webgl/2.0.0/conformance2/glsl3/array-equality-expected.txt:
* webgl/2.0.0/conformance2/glsl3/array-in-complex-expression-expected.txt:
* webgl/2.0.0/conformance2/glsl3/bool-type-cast-bug-uint-ivec-uvec-expected.txt:
* webgl/2.0.0/conformance2/glsl3/compare-structs-containing-arrays-expected.txt:
* webgl/2.0.0/conformance2/glsl3/const-array-init-expected.txt:
* webgl/2.0.0/conformance2/glsl3/frag-depth-expected.txt:
* webgl/2.0.0/conformance2/glsl3/loops-with-side-effects-expected.txt:
* webgl/2.0.0/conformance2/glsl3/no-attribute-vertex-shader-expected.txt:
* webgl/2.0.0/conformance2/glsl3/short-circuiting-in-loop-condition-expected.txt:
* webgl/2.0.0/conformance2/glsl3/tricky-loop-conditions-expected.txt:
* webgl/2.0.0/conformance2/glsl3/vector-dynamic-indexing-expected.txt:
* webgl/2.0.0/conformance2/glsl3/vector-dynamic-indexing-nv-driver-bug-expected.txt:

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

13 months agoSkip imported/w3c/web-platform-tests/FileAPI/reading-data-section/filereader_abort...
ryanhaddad@apple.com [Fri, 3 Aug 2018 23:59:33 +0000 (23:59 +0000)]
Skip imported/w3c/web-platform-tests/FileAPI/reading-data-section/filereader_abort.html.
https://bugs.webkit.org/show_bug.cgi?id=187269

Unreviewed test gardening.

* TestExpectations:

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

13 months agoRemove WebGPUObject
commit-queue@webkit.org [Fri, 3 Aug 2018 23:25:56 +0000 (23:25 +0000)]
Remove WebGPUObject
https://bugs.webkit.org/show_bug.cgi?id=188114

Patch by Sam Weinig <sam@webkit.org> on 2018-08-03
Reviewed by Darin Adler.

This removes the unecessary WebGPUObject base class and updates the classes
that were inheriting from it to instead inherit directly from RefCounted. This
shrinks the size of all the classes that were inheriting from it, as they no
longer store a RefPtr<WebGPURenderingContext> member, which is unused. Most
of the classes also shrink because they can be devirtualized.

This also updates most of the create functions and constructors for the classes
that were inheriting from WebGPUObject to no longer require the WebGPURenderingContext
to be passed in.
- For WebGPUBuffer, WebGPUCommandQueue, WebGPUComputeCommandEncoder, WebGPUComputePipelineState,
WebGPUDepthStencilState, WebGPUDrawable, WebGPUFunction, WebGPULibrary, WebGPURenderCommandEncoder,
WebGPURenderPassDepthAttachmentDescriptor, WebGPURenderPipelineColorAttachmentDescriptor,
WebGPURenderPipelineState, and WebGPUTexture the WebGPURenderingContext and any other additional
parameters needed for initialization were replaced with the underlying type (e.g. WebGPUBuffer
now gets passed a GPUBuffer).
- WebGPUCommandBuffer is passed a GPUCommandQueue, since it needs to construct the underlying
GPUCommandBuffer itself so it can pass in the completion handler.
- For WebGPUDepthStencilDescriptor, WebGPURenderPassAttachmentDescriptor,
WebGPURenderPassColorAttachmentDescriptor, WebGPURenderPassDescriptor and WebGPURenderPipelineDescriptor
the create and constructor functions are empty.

* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
Remove WebGPUObject.h/cpp

* html/canvas/WebGPUBuffer.cpp:
(WebCore::WebGPUBuffer::WebGPUBuffer):
* html/canvas/WebGPUBuffer.h:
* html/canvas/WebGPUBuffer.idl:
Switch from inheriting from WebGPUObject to directly inheriting from
RefCounted<WebGPUBuffer>. Since this de-virtualizes it, also add
ImplementationLacksVTable to the IDL file. Also update create
and constructor to take a GPUBuffer directly, rather than the context.

* html/canvas/WebGPUCommandBuffer.cpp:
(WebCore::WebGPUCommandBuffer::create):
(WebCore::WebGPUCommandBuffer::WebGPUCommandBuffer):
Update create and constructor to no longer require a context, as it would
now be unused, as it no longer inherits from WebGPUObject nor needs to hold
onto the context for any reason.

(WebCore::WebGPUCommandBuffer::createRenderCommandEncoderWithDescriptor):
Update to call the new WebGPURenderCommandEncoder::create, which no longer
requires a context.

(WebCore::WebGPUCommandBuffer::createComputeCommandEncoder):
Update to call the new WebGPUComputeCommandEncoder::create, which no longer
requires a context.

* html/canvas/WebGPUCommandBuffer.h:
* html/canvas/WebGPUCommandBuffer.idl:
Switch from inheriting from GPUObject to directly inheriting from
RefCounted<WebGPUCommandBuffer>. Since this de-virtualizes it, also add
ImplementationLacksVTable to the IDL file. Also update create and constructor
to no longer take a context, and just take a GPUCommandQueue. We can't directly
pass a GPUCommandBuffer as WebGPUCommandBuffer needs to pass in a completion handler
on construction of the underlying GPUCommandBuffer.

* html/canvas/WebGPUCommandQueue.cpp:
(WebCore::WebGPUCommandQueue::WebGPUCommandQueue):
(WebCore::WebGPUCommandQueue::createCommandBuffer):
Update to call the new WebGPUCommandBuffer::create, which no longer
requires a context.

* html/canvas/WebGPUCommandQueue.h:
* html/canvas/WebGPUCommandQueue.idl:
Switch from inheriting from GPUObject to directly inheriting from
RefCounted<WebGPUCommandQueue>. Since this de-virtualizes it, also add
ImplementationLacksVTable to the IDL file. Also update create and
constructor to take a GPUCommandQueue directly.

* html/canvas/WebGPUComputeCommandEncoder.cpp:
(WebCore::WebGPUComputeCommandEncoder::create):
(WebCore::WebGPUComputeCommandEncoder::WebGPUComputeCommandEncoder):
* html/canvas/WebGPUComputeCommandEncoder.h:
* html/canvas/WebGPUComputeCommandEncoder.idl:
Switch from inheriting from GPUObject to directly inheriting from
RefCounted<WebGPUComputeCommandEncoder>. Since this de-virtualizes it,
also add ImplementationLacksVTable to the IDL file. Also update create and
constructor to take a GPUComputeCommandEncoder directly

* html/canvas/WebGPUComputePipelineState.cpp:
(WebCore::WebGPUComputePipelineState::WebGPUComputePipelineState):
* html/canvas/WebGPUComputePipelineState.h:
* html/canvas/WebGPUComputePipelineState.idl:
Switch from inheriting from WebGPUObject to directly inheriting from
RefCounted<WebGPUComputePipelineState>. Since this de-virtualizes it, also add
ImplementationLacksVTable to the IDL file. Also update create and
constructor to take a GPUComputePipelineState directly.

* html/canvas/WebGPUDepthStencilDescriptor.cpp:
Remove unneeded include of include "WebGPURenderingContext.h".

* html/canvas/WebGPUDepthStencilDescriptor.h:
* html/canvas/WebGPUDepthStencilDescriptor.idl:
Switch from inheriting from WebGPUObject to directly inheriting from
RefCounted<WebGPUDepthStencilDescriptor>. Since this de-virtualizes it, also add
ImplementationLacksVTable to the IDL file.

* html/canvas/WebGPUDepthStencilState.cpp:
(WebCore::WebGPUDepthStencilState::WebGPUDepthStencilState):
* html/canvas/WebGPUDepthStencilState.h:
* html/canvas/WebGPUDepthStencilState.idl:
Switch from inheriting from WebGPUObject to directly inheriting from
RefCounted<WebGPUDepthStencilState>. Since this de-virtualizes it, also add
ImplementationLacksVTable to the IDL file. Also update create and
constructor to take a GPUDepthStencilState directly.

* html/canvas/WebGPUDrawable.cpp:
(WebCore::WebGPUDrawable::WebGPUDrawable):
* html/canvas/WebGPUDrawable.h:
* html/canvas/WebGPUDrawable.idl:
Switch from inheriting from WebGPUObject to directly inheriting from
RefCounted<WebGPUDrawable>. Since this de-virtualizes it, also add
ImplementationLacksVTable to the IDL file. Also update create and
constructor to take a GPUDrawable directly.

* html/canvas/WebGPUFunction.cpp:
(WebCore::WebGPUFunction::create):
(WebCore::WebGPUFunction::WebGPUFunction):
* html/canvas/WebGPUFunction.h:
* html/canvas/WebGPUFunction.idl:
Switch from inheriting from GPUObject to directly inheriting from
RefCounted<WebGPUFunction>. Since this de-virtualizes it, also add
ImplementationLacksVTable to the IDL file. Also update create and
constructor to take a GPUFunction directly.

* html/canvas/WebGPULibrary.cpp:
(WebCore::WebGPULibrary::WebGPULibrary):
(WebCore::WebGPULibrary::functionWithName const):
Update for new WebGPUFunction::create, which no longer requires a
context.

* html/canvas/WebGPULibrary.h:
* html/canvas/WebGPULibrary.idl:
Switch from inheriting from WebGPUObject to directly inheriting from
RefCounted<WebGPULibrary>. Since this de-virtualizes it, also add
ImplementationLacksVTable to the IDL file. Also update create and
constructor to take a GPULibrary directly, rather than the context.
Unlike the other create functions that take their underlying type, this
one also continues to need the sourceCode String to be passed, as that
is not available from the underlying GPULibrary and must be stored
seperately.

* html/canvas/WebGPUObject.cpp: Removed.
* html/canvas/WebGPUObject.h: Removed.
Deleted.

* html/canvas/WebGPURenderCommandEncoder.cpp:
(WebCore::WebGPURenderCommandEncoder::create):
(WebCore::WebGPURenderCommandEncoder::WebGPURenderCommandEncoder):
* html/canvas/WebGPURenderCommandEncoder.h:
* html/canvas/WebGPURenderCommandEncoder.idl:
Switch from inheriting from GPUObject to directly inheriting from
RefCounted<WebGPURenderCommandEncoder>. Since this de-virtualizes it, also add
ImplementationLacksVTable to the IDL file. Also update create and
constructor to take a GPURenderCommandEncoder directly.

* html/canvas/WebGPURenderPassAttachmentDescriptor.cpp:
(WebCore::WebGPURenderPassAttachmentDescriptor::WebGPURenderPassAttachmentDescriptor):
* html/canvas/WebGPURenderPassAttachmentDescriptor.h:
Switch from inheriting from GPUObject to directly inheriting from
RefCounted<WebGPURenderPassAttachmentDescriptor>. Also update create and
constructor to no longer take a context, as it is now not used. This remains virtual
as it is inherited from by WebGPURenderPassColorAttachmentDescriptor and WebGPURenderPassDepthAttachmentDescriptor.

* html/canvas/WebGPURenderPassColorAttachmentDescriptor.cpp:
(WebCore::WebGPURenderPassColorAttachmentDescriptor::create):
(WebCore::WebGPURenderPassColorAttachmentDescriptor::WebGPURenderPassColorAttachmentDescriptor):
* html/canvas/WebGPURenderPassColorAttachmentDescriptor.h:
Update create and constructor to no longer take a context, as it is now not used. Declare final
as this is not inherited by anything.

* html/canvas/WebGPURenderPassDepthAttachmentDescriptor.cpp:
(WebCore::WebGPURenderPassDepthAttachmentDescriptor::create):
(WebCore::WebGPURenderPassDepthAttachmentDescriptor::WebGPURenderPassDepthAttachmentDescriptor):
* html/canvas/WebGPURenderPassDepthAttachmentDescriptor.h:
Update create and constructor to no longer take a context, as it is now not used. Declare final
as this is not inherited by anything.

* html/canvas/WebGPURenderPassDescriptor.cpp:
(WebCore::WebGPURenderPassDescriptor::depthAttachment):
Update for new WebGPURenderPassDepthAttachmentDescriptor::create function which no longer requires
a context.

Semi-interesting note: This function was previously calling "*context()" to pass a WebGPURenderingContext&
to WebGPURenderPassDepthAttachmentDescriptor::create. However, "context()" was always returning null, as
the constructor of WebGPURenderPassDescriptor was not initializing the WebGPUObject with a WebGPURenderingContext.
Now, one might think that this would cause a null-deref, but, because it was being assigned into a
WebGPURenderingContext&, no dereference happens right away (it essentially just passes a pointer) and since
the function it is being passed to does not use it, it never actually gets dereferenced.

(WebCore::WebGPURenderPassDescriptor::colorAttachments):
Update for new WebGPURenderPassColorAttachmentDescriptor::create function which no longer requires
a context.

* html/canvas/WebGPURenderPassDescriptor.h:
* html/canvas/WebGPURenderPassDescriptor.idl:
Switch from inheriting from GPUObject to directly inheriting from
RefCounted<WebGPURenderPassDescriptor>. Since this de-virtualizes it, also add
ImplementationLacksVTable to the IDL file.

* html/canvas/WebGPURenderPipelineColorAttachmentDescriptor.cpp:
(WebCore::WebGPURenderPipelineColorAttachmentDescriptor::create):
(WebCore::WebGPURenderPipelineColorAttachmentDescriptor::WebGPURenderPipelineColorAttachmentDescriptor):
* html/canvas/WebGPURenderPipelineColorAttachmentDescriptor.h:
* html/canvas/WebGPURenderPipelineColorAttachmentDescriptor.idl:
Switch from inheriting from GPUObject to directly inheriting from
RefCounted<WebGPURenderPipelineColorAttachmentDescriptor>. Since this de-virtualizes it, also add
ImplementationLacksVTable to the IDL file. Also update create and constructor to
no longer take a context, as it is now not used.

* html/canvas/WebGPURenderPipelineDescriptor.cpp:
(WebCore::WebGPURenderPipelineDescriptor::colorAttachments):
Update for new WebGPURenderPipelineColorAttachmentDescriptor::create which no longer requires
a context.

* html/canvas/WebGPURenderPipelineDescriptor.h:
* html/canvas/WebGPURenderPipelineDescriptor.idl:
Switch from inheriting from GPUObject to directly inheriting from
RefCounted<WebGPURenderPipelineDescriptor>. Since this de-virtualizes it, also add
ImplementationLacksVTable to the IDL file.

* html/canvas/WebGPURenderPipelineState.cpp:
(WebCore::WebGPURenderPipelineState::WebGPURenderPipelineState):
* html/canvas/WebGPURenderPipelineState.h:
* html/canvas/WebGPURenderPipelineState.idl:
Switch from inheriting from GPUObject to directly inheriting from
RefCounted<WebGPURenderPipelineState>. Since this de-virtualizes it, also add
ImplementationLacksVTable to the IDL file. Also update create and
constructor to take a GPURenderPipelineState directly.

* html/canvas/WebGPURenderingContext.cpp:
(WebCore::WebGPURenderingContext::createLibrary):
(WebCore::WebGPURenderingContext::createRenderPipelineState):
(WebCore::WebGPURenderingContext::createDepthStencilState):
(WebCore::WebGPURenderingContext::createComputePipelineState):
(WebCore::WebGPURenderingContext::createCommandQueue):
(WebCore::WebGPURenderingContext::nextDrawable):
(WebCore::WebGPURenderingContext::createBuffer):
(WebCore::WebGPURenderingContext::createTexture):
Update for new create functions which require the caller to pass
the underlying type.

* html/canvas/WebGPUTexture.cpp:
(WebCore::WebGPUTexture::createFromDrawableTexture):
Renamed to create.

(WebCore::WebGPUTexture::create): Deleted
All callers now pass a GPUTexture directly.

* html/canvas/WebGPUTexture.h:
* html/canvas/WebGPUTexture.idl:
Switch from inheriting from GPUObject to directly inheriting from
RefCounted<WebGPUTexture>. Since this de-virtualizes it, also add
ImplementationLacksVTable to the IDL file.

* html/canvas/WebGPUTextureDescriptor.h:
* html/canvas/WebGPUTextureDescriptor.idl:
Switch from inheriting from GPUObject to directly inheriting from
RefCounted<WebGPUTextureDescriptor>. Since this de-virtualizes it, also add
ImplementationLacksVTable to the IDL file.

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

13 months agoFix spelling of "overridden"
commit-queue@webkit.org [Fri, 3 Aug 2018 23:13:57 +0000 (23:13 +0000)]
Fix spelling of "overridden"
https://bugs.webkit.org/show_bug.cgi?id=188315

Patch by Alex Christensen <achristensen@webkit.org> on 2018-08-03
Reviewed by Darin Adler.

Source/JavaScriptCore:

* API/JSExport.h:
* inspector/InjectedScriptSource.js:

Source/ThirdParty/ANGLE:

* src/libANGLE/renderer/ProgramImpl.h:

Source/ThirdParty/libwebrtc:

* Source/webrtc/p2p/client/basicportallocator.h:

Source/WebCore:

* accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
(-[WebAccessibilityObjectWrapper accessibilityLabel]):
(-[WebAccessibilityObjectWrapper accessibilityValue]):
* contentextensions/ContentExtensionsBackend.h:
* editing/EditingStyle.cpp:
(WebCore::EditingStyle::removeStyleFromRulesAndContext):
* inspector/CommandLineAPIModuleSource.js:
* platform/ScrollView.h:
* platform/ScrollableArea.h:
* platform/mediasession/MediaSessionInterruptionProvider.h:
* rendering/RenderFragmentedFlow.cpp:
(WebCore::RenderFragmentedFlow::adjustedPositionRelativeToOffsetParent const):
* rendering/RenderLayer.h:
* rendering/RenderListBox.h:
* rendering/svg/RenderSVGResourceClipper.cpp:
(WebCore::RenderSVGResourceClipper::drawContentIntoMaskImage):
* svg/SVGElement.cpp:
(WebCore::SVGElement::localCoordinateSpaceTransform const):
* svg/SVGLengthContext.cpp:
(WebCore::SVGLengthContext::SVGLengthContext):
(WebCore::SVGLengthContext::convertValueToUserUnits const):
(WebCore::SVGLengthContext::determineViewport const):
* svg/SVGLengthContext.h:

Source/WebInspectorUI:

* UserInterface/Views/ContentBrowserTabContentView.js:
(WI.ContentBrowserTabContentView.prototype.treeElementForRepresentedObject):
* UserInterface/Views/GeneralTreeElement.js:
(WI.GeneralTreeElement.prototype.ondetach):
* UserInterface/Views/NavigationBar.js:
(WI.NavigationBar.prototype.get sizesToFit):
* UserInterface/Views/NavigationSidebarPanel.js:
(WI.NavigationSidebarPanel.prototype.shouldFilterPopulate):
* UserInterface/Views/TextEditor.js:
(WI.TextEditor.prototype.canBeFormatted):
* UserInterface/Views/TreeElement.js:
(WI.TreeElement.prototype.onpopulate):

Source/WebKit:

* Platform/IPC/mac/ConnectionMac.mm:
(IPC::Connection::receiveSourceEventHandler):
* Shared/WebPreferencesStore.cpp:
(WebKit::WebPreferencesStore::encode const):
(WebKit::WebPreferencesStore::decode):
(WebKit::valueForKey):
(WebKit::setValueForKey):
(WebKit::WebPreferencesStore::setStringValueForKey):
(WebKit::WebPreferencesStore::getStringValueForKey const):
(WebKit::WebPreferencesStore::setBoolValueForKey):
(WebKit::WebPreferencesStore::getBoolValueForKey const):
(WebKit::WebPreferencesStore::setUInt32ValueForKey):
(WebKit::WebPreferencesStore::getUInt32ValueForKey const):
(WebKit::WebPreferencesStore::setDoubleValueForKey):
(WebKit::WebPreferencesStore::getDoubleValueForKey const):
(WebKit::WebPreferencesStore::setOverrideDefaultsStringValueForKey):
(WebKit::WebPreferencesStore::setOverrideDefaultsBoolValueForKey):
(WebKit::WebPreferencesStore::setOverrideDefaultsUInt32ValueForKey):
(WebKit::WebPreferencesStore::setOverrideDefaultsDoubleValueForKey):
* Shared/WebPreferencesStore.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView dragInteraction:previewForLiftingItem:session:]):
(-[WKContentView dragInteraction:previewForCancellingItem:withDefault:]):
* UIProcess/ios/WKScrollView.mm:
(-[WKScrollView _systemContentInset]):

Source/WebKitLegacy/mac:

* Misc/WebKitVersionChecks.mm:
(setWebKitLinkTimeVersion):
(WebKitLinkTimeVersion):
* Plugins/WebBaseNetscapePluginView.mm:
(-[WebBaseNetscapePluginView handleMouseMoved:]):
* WebCoreSupport/PopupMenuMac.mm:
(PopupMenuMac::populate):

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

13 months agoUnreviewed, rolling out r234517.
david_fenton@apple.com [Fri, 3 Aug 2018 23:01:35 +0000 (23:01 +0000)]
Unreviewed, rolling out r234517.

Caused API test failures on iOS

Reverted changeset:

"[Cocoa] setCookie API fails to set session cookies for
defaultDataStore if processPool created but not used"
https://bugs.webkit.org/show_bug.cgi?id=188209
https://trac.webkit.org/changeset/234517

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

13 months agoAdd configuration for automatic process pre-warming
commit-queue@webkit.org [Fri, 3 Aug 2018 22:50:15 +0000 (22:50 +0000)]
Add configuration for automatic process pre-warming
https://bugs.webkit.org/show_bug.cgi?id=187108

Patch by Ben Richards <benton_richards@apple.com> on 2018-08-03
Reviewed by Ryosuke Niwa.

Source/WebKit:

Added configurations to allow setting the maximum number of processes that should be automatically prewarmed.

* UIProcess/API/APIProcessPoolConfiguration.cpp:
(API::ProcessPoolConfiguration::copy):
* UIProcess/API/APIProcessPoolConfiguration.h:
* UIProcess/API/C/WKContext.cpp:
(WKContextSetMaximumNumberOfPrewarmedProcesses):
* UIProcess/API/C/WKContextPrivate.h:
* UIProcess/API/Cocoa/WKProcessPool.mm:
(-[WKProcessPool _setMaximumNumberOfPrewarmedProcesses:]):
* UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
* UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
* UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:
(-[_WKProcessPoolConfiguration setMaximumPrewarmedProcessCount:]):
(-[_WKProcessPoolConfiguration maximumPrewarmedProcessCount]):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::didFinishLoadForFrame): Moved call to notifyProcessPoolToPrewarm from didFirstVisuallyNonEmptyLayoutForFrame to here.
This is to try to ensure that frame loading and prewarming don't happen at the same time as this would be heavy for some devices.
(WebKit::WebPageProxy::didFirstVisuallyNonEmptyLayoutForFrame):
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::setMaximumNumberOfProcesses): Condition changed so that calling setMaximumNumberOfProcesses after warmInitialProcess
doesn't result in a crash.
(WebKit::WebProcessPool::setMaximumNumberOfPrewarmedProcesses):
(WebKit::WebProcessPool::warmInitialProcess):
(WebKit::WebProcessPool::didReachGoodTimeToPrewarm):
* UIProcess/WebProcessPool.h:

Tools:

Added new test case for setting maximum prewarmed process count and updated test case for process swap on navigation to set the maximum prewarmed process count to be 1 where relevant.

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKitCocoa/InitialWarmedProcessUsed.mm:
(TEST):
* TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
* TestWebKitAPI/Tests/WebKitCocoa/SetMaximumPrewarmedProcessCount.mm:
(TEST):

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

13 months ago[ews-build] Add build step to Check Patch Relevance
aakash_jain@apple.com [Fri, 3 Aug 2018 21:35:49 +0000 (21:35 +0000)]
[ews-build] Add build step to Check Patch Relevance
https://bugs.webkit.org/show_bug.cgi?id=188295

Reviewed by Lucas Forschler.

* BuildSlaveSupport/ews-build/steps.py:
(CheckPatchRelevance): Added step to check patch relevance.
(CheckPatchRelevance._patch_is_relevant): Checks if the patch is relevant.
(CheckPatchRelevance._get_patch): Retrieves the patch from buildbot.
(CheckPatchRelevance._addToLog): Add the log message.
(CheckPatchRelevance.start):
* BuildSlaveSupport/ews-build/factories.py: Added CheckPatchRelevance step appropriately.

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

13 months ago[LayoutTests][websocket] Return correct value even when cookie is not set.
Basuke.Suzuki@sony.com [Fri, 3 Aug 2018 21:10:44 +0000 (21:10 +0000)]
[LayoutTests][websocket] Return correct value even when cookie is not set.
https://bugs.webkit.org/show_bug.cgi?id=188317

Reviewed by Darin Adler.

> ws://127.0.0.1:8880/websocket/tests/hybi/echo-cookie_wsh.py
This web socket script throw exception when cookie is not set. That is ended up with
immediate disconnection and causes timeout for failure tests which makes debugging hard.

* http/tests/websocket/tests/hybi/echo-cookie_wsh.py:
(web_socket_transfer_data):
* platform/wincairo/TestExpectations:

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

13 months ago[Curl] Test gardening
Basuke.Suzuki@sony.com [Fri, 3 Aug 2018 19:19:07 +0000 (19:19 +0000)]
[Curl] Test gardening
https://bugs.webkit.org/show_bug.cgi?id=188316

Unreviewed test gardening.

Skip some flaky tests.
Add comments why we skip for some platform dependent reason.

* platform/wincairo/TestExpectations:

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

13 months agoFix invalid optional access in WebDriver Session::createTopLevelBrowsingContext.
Ms2ger@igalia.com [Fri, 3 Aug 2018 18:36:31 +0000 (18:36 +0000)]
Fix invalid optional access in WebDriver Session::createTopLevelBrowsingContext.
https://bugs.webkit.org/show_bug.cgi?id=188304

Reviewed by Brian Burg.

* Session.cpp:
(WebDriver::Session::createTopLevelBrowsingContext): remove incorrect value() call.

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

13 months ago[LFC][BFC] Special case the document renderer when computing the height and margin
zalan@apple.com [Fri, 3 Aug 2018 18:00:23 +0000 (18:00 +0000)]
[LFC][BFC] Special case the document renderer when computing the height and margin
https://bugs.webkit.org/show_bug.cgi?id=188313

Reviewed by Antti Koivisto.

The document renderer is certainly special and its geometry is likely to be computed as part of "10.6.6 Complicated cases" (spec is unclear) but probably not by
making the it a formatting root. Let's just special case it at contentHeightForFormattingContextRoot(), since having the document renderer as a context root has unwanted side effect.

* layout/FormattingContextGeometry.cpp:
(WebCore::Layout::contentHeightForFormattingContextRoot):
* layout/layouttree/LayoutBox.cpp:
(WebCore::Layout::Box::establishesBlockFormattingContext const):

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

13 months ago[LFC][BFC] Layout out-of-flow descendants only on the formatting context root.
zalan@apple.com [Fri, 3 Aug 2018 17:57:35 +0000 (17:57 +0000)]
[LFC][BFC] Layout out-of-flow descendants only on the formatting context root.
https://bugs.webkit.org/show_bug.cgi?id=188312

Reviewed by Antti Koivisto.

Collect out-of-flow descendants on the formatting root container instead of the containing block and run layout on them on the root level. It's more efficient this way.

* layout/blockformatting/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::layout const):
* layout/layouttree/LayoutTreeBuilder.cpp:
(WebCore::Layout::TreeBuilder::createSubTree):

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

13 months agoCheck with SafeBrowsing during navigation in WKWebView
achristensen@apple.com [Fri, 3 Aug 2018 17:56:29 +0000 (17:56 +0000)]
Check with SafeBrowsing during navigation in WKWebView
https://bugs.webkit.org/show_bug.cgi?id=188133

Reviewed by Chris Dumez.

This turns WebFramePolicyListenerProxy into an object that now listens for the results
of two processes happening in parallel: the API::NavigationClient's decidePolicyForNavigation{Action, Response}
(which it was already waiting for) and, on platforms that support it, the SafariSafeBrowsing framework's check.
The first result is stored as it waits for the second result unless the first result is the API::NavigationClient
saying to cancel or convert the navigation to a download, in which cases we don't care what the safe browsing
framework results are because we won't show the URL in the browser.

Nothing is done with the safe browsing results yet.

* UIProcess/Cocoa/SafeBrowsingResultCocoa.mm: Added.
(WebKit::SafeBrowsingResult::SafeBrowsingResult):
* UIProcess/Cocoa/WebPageProxyCocoa.mm:
(WebKit::WebPageProxy::beginSafeBrowsingCheck):
* UIProcess/SafeBrowsingResult.h: Added.
(WebKit::SafeBrowsingResult::provider const):
(WebKit::SafeBrowsingResult::isPhishing const):
(WebKit::SafeBrowsingResult::isMalware const):
(WebKit::SafeBrowsingResult::isUnwantedSoftware const):
(WebKit::SafeBrowsingResult::isKnownToBeUnsafe const):
* UIProcess/WebFramePolicyListenerProxy.cpp:
(WebKit::WebFramePolicyListenerProxy::WebFramePolicyListenerProxy):
(WebKit::WebFramePolicyListenerProxy::didReceiveSafeBrowsingResults):
(WebKit::WebFramePolicyListenerProxy::use):
(WebKit::WebFramePolicyListenerProxy::download):
(WebKit::WebFramePolicyListenerProxy::ignore):
* UIProcess/WebFramePolicyListenerProxy.h:
(WebKit::WebFramePolicyListenerProxy::create):
* UIProcess/WebFrameProxy.cpp:
(WebKit::WebFrameProxy::setUpPolicyListenerProxy):
* UIProcess/WebFrameProxy.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::decidePolicyForNavigationAction):
(WebKit::WebPageProxy::decidePolicyForNewWindowAction):
(WebKit::WebPageProxy::decidePolicyForResponse):
* UIProcess/WebPageProxy.h:
* WebKit.xcodeproj/project.pbxproj:

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

13 months ago[LayoutTests][PHP] Fix old-style script which uses function name as a keyword.
Basuke.Suzuki@sony.com [Fri, 3 Aug 2018 17:51:21 +0000 (17:51 +0000)]
[LayoutTests][PHP] Fix old-style script which uses function name as a keyword.
https://bugs.webkit.org/show_bug.cgi?id=188289

Reviewed by Alex Christensen.

Function name should be passed as a string literal. In PHP, named function is
not the first class citizen.

* http/tests/cookies/resources/echo-cookies.php:

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

13 months agoContentFilterUnblockHandler's constructors access moved-from variables
aestes@apple.com [Fri, 3 Aug 2018 17:51:04 +0000 (17:51 +0000)]
ContentFilterUnblockHandler's constructors access moved-from variables
https://bugs.webkit.org/show_bug.cgi?id=188308
<rdar://problem/42882758>

Reviewed by Alex Christensen.

* platform/cocoa/ContentFilterUnblockHandlerCocoa.mm:

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

13 months ago[LayoutTests] Suppress PHP Error message by removing an execution time limit.
Basuke.Suzuki@sony.com [Fri, 3 Aug 2018 17:48:47 +0000 (17:48 +0000)]
[LayoutTests] Suppress PHP Error message by removing an execution time limit.
https://bugs.webkit.org/show_bug.cgi?id=188288

Reviewed by Alex Christensen.

Remove execution timeout.

* http/tests/multipart/resources/multipart.php:

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

13 months agoUnreviewed gardening; r234534 changed the policy for what audio session is set when a
jer.noble@apple.com [Fri, 3 Aug 2018 17:06:28 +0000 (17:06 +0000)]
Unreviewed gardening; r234534 changed the policy for what audio session is set when a
media element is paused. Updating the test to reflect the new policy.

* TestWebKitAPI/Tests/WebKitLegacy/ios/AudioSessionCategoryIOS.mm:
(TestWebKitAPI::TEST):

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

13 months ago[LFC][Floating] Now that the document renderer belongs to "complicated cases", adjust...
zalan@apple.com [Fri, 3 Aug 2018 15:38:10 +0000 (15:38 +0000)]
[LFC][Floating] Now that the document renderer belongs to "complicated cases", adjust viewport stretching.
https://bugs.webkit.org/show_bug.cgi?id=188306

Reviewed by Antti Koivisto.

Source/WebCore:

And add passing cases for floats.

* layout/blockformatting/BlockFormattingContextGeometry.cpp:
(WebCore::Layout::initialContainingBlock):
(WebCore::Layout::isStretchedToInitialContainingBlock):
(WebCore::Layout::stretchHeightToInitialContainingBlock):
(WebCore::Layout::stretchWidthToInitialContainingBlock):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedWidthAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowHeightAndMargin):
(WebCore::Layout::isStretchedToViewport): Deleted.

Tools:

* LayoutReloaded/misc/LFC-passing-tests.txt:

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

13 months agoUnreviewed, rolling out r234513.
ryanhaddad@apple.com [Fri, 3 Aug 2018 15:26:13 +0000 (15:26 +0000)]
Unreviewed, rolling out r234513.

14 API tests fail the assertions added in this change.

Reverted changeset:

"Check with SafeBrowsing during navigation in WKWebView"
https://bugs.webkit.org/show_bug.cgi?id=188133
https://trac.webkit.org/changeset/234513

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

13 months ago[LFC] Do not check margin box while validating geometry.
zalan@apple.com [Fri, 3 Aug 2018 14:21:21 +0000 (14:21 +0000)]
[LFC] Do not check margin box while validating geometry.
https://bugs.webkit.org/show_bug.cgi?id=188297

Reviewed by Antti Koivisto.

The current RenderBox::marginBox implementation is not spec compliant. Ignore it for now.

* layout/Verification.cpp:
(WebCore::Layout::outputMismatchingBlockBoxInformationIfNeeded):

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

13 months ago[WPE] WebDriver: add support for action commands
carlosgc@webkit.org [Fri, 3 Aug 2018 10:43:14 +0000 (10:43 +0000)]
[WPE] WebDriver: add support for action commands
https://bugs.webkit.org/show_bug.cgi?id=188301

Reviewed by Žan Doberšek.

WPE doesn't support action commands because the platform specific code for handling events is not implemented.

* SourcesWPE.txt: Add new file to compilation.
* UIProcess/API/glib/WebKitUIClient.cpp: Use the drawing area size as window size in WPE.
* UIProcess/API/wpe/PageClientImpl.cpp:
(WebKit::PageClientImpl::viewBackend): Return the WPE backend of the view.
* UIProcess/API/wpe/PageClientImpl.h:
* UIProcess/Automation/WebAutomationSession.cpp:
(WebKit::WebAutomationSession::performMouseInteraction):
(WebKit::WebAutomationSession::performKeyboardInteractions):
(WebKit::WebAutomationSession::performInteractionSequence):
(WebKit::WebAutomationSession::cancelInteractionSequence):
* UIProcess/Automation/wpe/WebAutomationSessionWPE.cpp: Added.
(WebKit::modifiersToEventState):
(WebKit::mouseButtonToWPEButton):
(WebKit::stateModifierForWPEButton):
(WebKit::doMouseEvent):
(WebKit::doMotionEvent):
(WebKit::WebAutomationSession::platformSimulateMouseInteraction):
(WebKit::doKeyStrokeEvent):
(WebKit::keyCodeForVirtualKey):
(WebKit::modifiersForKeyCode):
(WebKit::WebAutomationSession::platformSimulateKeyboardInteraction):
(WebKit::WebAutomationSession::platformSimulateKeySequence):
* UIProcess/WebPageProxy.h:
* UIProcess/wpe/WebPageProxyWPE.cpp:
(WebKit::WebPageProxy::viewBackend): Return the WPE backend.

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

13 months ago[WPE] Use the new key mapper API from WPEBackend
carlosgc@webkit.org [Fri, 3 Aug 2018 10:07:55 +0000 (10:07 +0000)]
[WPE] Use the new key mapper API from WPEBackend
https://bugs.webkit.org/show_bug.cgi?id=188216

Reviewed by Žan Doberšek.

* WebKitTestRunner/wpe/EventSenderProxyWPE.cpp:
(WTR::EventSenderProxy::keyDown): Use wpe_input_xkb_context_get_entries_for_key_code() to get the hardware key
code.
* wpe/backends/WindowViewBackend.cpp:
(WPEToolingBackends::WindowViewBackend::WindowViewBackend):
(WPEToolingBackends::WindowViewBackend::handleKeyEvent):
(WPEToolingBackends::WindowViewBackend::modifiers const):
* wpe/backends/WindowViewBackend.h:

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

13 months ago[WPE] Implement MouseEvent.buttons
carlosgc@webkit.org [Fri, 3 Aug 2018 09:38:18 +0000 (09:38 +0000)]
[WPE] Implement MouseEvent.buttons
https://bugs.webkit.org/show_bug.cgi?id=187998

Reviewed by Žan Doberšek.

Source/WebKit:

Pass buttons currently pressed to WebMouseEvent.

* Shared/wpe/WebEventFactory.cpp:
(WebKit::pressedMouseButtons): Helper to get the pressed buttons mask for the WPE modifiers.
(WebKit::WebEventFactory::createWebMouseEvent): Use pressedMouseButtons().
* UIProcess/API/wpe/PageClientImpl.cpp:
(WebKit::PageClientImpl::doneWithTouchEvent): Update the event modifiers.

Tools:

Pass modifiers to mouse events.

* WebKitTestRunner/EventSenderProxy.h:
* WebKitTestRunner/wpe/EventSenderProxyWPE.cpp:
(WTR::senderButtonToWPEButton):
(WTR::modifierForButton):
(WTR::EventSenderProxy::mouseDown):
(WTR::EventSenderProxy::mouseUp):
(WTR::EventSenderProxy::mouseMoveTo):
(WTR::EventSenderProxy::mouseScrollBy):
(WTR::wkEventModifiersToWPE):
(WTR::wpeKeySymForKeyRef):
(WTR::EventSenderProxy::keyDown):
(WTR::EventSenderProxy::prepareAndDispatchTouchEvent):
* wpe/backends/WindowViewBackend.cpp:
(WPEToolingBackends::WindowViewBackend::handleKeyEvent):
(WPEToolingBackends::WindowViewBackend::modifiers const):
* wpe/backends/WindowViewBackend.h:

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

13 months ago[WPE] Use WPE key symbols and new API instead of xkbcommon and the key mapper
carlosgc@webkit.org [Fri, 3 Aug 2018 09:16:18 +0000 (09:16 +0000)]
[WPE] Use WPE key symbols and new API instead of xkbcommon and the key mapper
https://bugs.webkit.org/show_bug.cgi?id=188093

Reviewed by Žan Doberšek.

Source/WebCore:

Add helper functions to get key code, hardware key code, key identifier and windows key code from a WPE key symbol.

* platform/PlatformKeyboardEvent.h:
* platform/wpe/PlatformKeyboardEventWPE.cpp:
(WebCore::PlatformKeyboardEvent::keyValueForWPEKeyCode):
(WebCore::PlatformKeyboardEvent::keyCodeForHardwareKeyCode):
(WebCore::PlatformKeyboardEvent::keyIdentifierForWPEKeyCode):
(WebCore::PlatformKeyboardEvent::windowsKeyCodeForWPEKeyCode):
(WebCore::PlatformKeyboardEvent::singleCharacterString):

Source/WebKit:

* Shared/WebEvent.h: Add WebKeyboardEvent constructor for WPE.
* Shared/WebKeyboardEvent.cpp:
(WebKit::WebKeyboardEvent::WebKeyboardEvent): WebKeyboardEvent constructor for WPE.
* Shared/wpe/WebEventFactory.cpp:
(WebKit::isWPEKeyCodeFromKeyPad): Helper tpo check if a key symbols is from key pad.
(WebKit::WebEventFactory::createWebKeyboardEvent): Use PlatformKeyboardEvent API to provide key code, hardware
key code, key identifier and windows key code to WebKeyboardEvent.
* UIProcess/API/wpe/WPEView.cpp:
(WKWPE::m_backend): Use WPE key symbols.

Tools:

* MiniBrowser/wpe/main.cpp: Use WPE key symbols.
* WebKitTestRunner/wpe/EventSenderProxyWPE.cpp:
(WTR::wpeKeySymForKeyRef): Use WPE key symbols and wpe_unicode_to_key_code().
(WTR::EventSenderProxy::keyDown): Do not set unicode char to the event since it was removed.
* flatpak/org.webkit.WPE.yaml: Bump WPEBackend and WPEBackend-fdo versions.
* wpe/backends/WindowViewBackend.cpp:
(WPEToolingBackends::WindowViewBackend::handleKeyEvent): Do not set unicode char to the event since it was removed.
* wpe/jhbuild.modules: Bump WPEBackend and WPEBackend-fdo versions.

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

13 months agoRelease assert when throwing exceptions in custom element reactions
rniwa@webkit.org [Fri, 3 Aug 2018 08:16:48 +0000 (08:16 +0000)]
Release assert when throwing exceptions in custom element reactions
https://bugs.webkit.org/show_bug.cgi?id=187805
<rdar://problem/42432714>

Reviewed by Saam Barati.

LayoutTests/imported/w3c:

Generated the expected result.

* web-platform-tests/custom-elements/reactions/with-exceptions-expected.txt: Added.

Source/WebCore:

The release assertion was hit because we were not catching & re-throwing the exception thrown by DOM API
before trying to execute custom elements reactions in ~CustomElementReactionStack as specified here:
https://html.spec.whatwg.org/multipage/custom-elements.html#cereactions
Fixed the bug by capturing the exception and re-throwing the exception as specified.

Tests: imported/w3c/web-platform-tests/custom-elements/reactions/with-exceptions.html

* bindings/js/JSMainThreadExecState.h:
(WebCore::JSMainThreadNullState::JSMainThreadNullState): Use the previous JS state.
* bindings/scripts/CodeGeneratorJS.pm:
(GeneratePut): Pass in the exec state to CustomElementReactionStack.
(GeneratePutByIndex): Ditto.
(GenerateDefineOwnProperty): Ditto.
(GenerateDeletePropertyCommon): Ditto.
(GenerateAttributeSetterBodyDefinition): Ditto.
(GenerateOperationBodyDefinition): Ditto.
* bindings/scripts/test/JS/JSTestCEReactions.cpp:
(WebCore::setJSTestCEReactionsAttributeWithCEReactionsSetter):
(WebCore::setJSTestCEReactionsReflectAttributeWithCEReactionsSetter):
(WebCore::jsTestCEReactionsPrototypeFunctionMethodWithCEReactionsBody):
* bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp:
(WebCore::setJSTestCEReactionsStringifierValueSetter):
* dom/CustomElementReactionQueue.cpp:
(WebCore::CustomElementReactionQueue::ElementQueue::processQueue): Added. If there is a script running
in the stack (i.e. ExecState is not null), catch any exception before executing custom element reactions,
then re-throw the exception afterwards. ExecState is null when DOM API is invoked via Objective-C bindings
or when custom element reactions are executed in the backup queue (e.g. for editing operations).
(WebCore::CustomElementReactionStack::processQueue):
(WebCore::CustomElementReactionQueue::processBackupQueue):
* dom/CustomElementReactionQueue.h:
(WebCore::CustomElementReactionStack::CustomElementReactionStack):
(WebCore::CustomElementReactionStack::~CustomElementReactionStack):

LayoutTests:

Unskipped the previously crashing test.

* TestExpectations:

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

13 months ago[Curl] Test gardening
Basuke.Suzuki@sony.com [Fri, 3 Aug 2018 05:24:07 +0000 (05:24 +0000)]
[Curl] Test gardening
https://bugs.webkit.org/show_bug.cgi?id=188293

Unreviewed test gardening.

Unskip some http tests.

* platform/wincairo/TestExpectations:
  - contentextensions
  - events
  - favicon.ico
  - fullscreen
  - globalhistory
  - gzip-content-encoding
  - history
  - local
  - messaging
  - mime
  - multipart
  - performance
  - permissionclient
  - referrer-policy
  - resourceLoadStatistics
* platform/wincairo/http/tests/local/file-url-sent-as-referer-expected.txt: Added.
* platform/wincairo/http/tests/multipart/invalid-image-data-expected.txt: Added.
* platform/wincairo/http/tests/multipart/invalid-image-data-standalone-expected.txt: Added.
* platform/wincairo/http/tests/uri/css-href-expected.txt: Added.

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

13 months ago[LFC][BFC] Apply the "10.6.6 Complicated cases" when computing height and margin...
zalan@apple.com [Fri, 3 Aug 2018 04:32:05 +0000 (04:32 +0000)]
[LFC][BFC] Apply the "10.6.6 Complicated cases" when computing height and margin for the document renderer
https://bugs.webkit.org/show_bug.cgi?id=188296

Reviewed by Simon Fraser.

The spec is not clear about what to do with the document renderer. It behaves as if it was a formatting context root when
it comes to computing the content height. Let's apply "10.6.6 Complicated cases" for now.

* layout/FormattingContext.h:
* layout/FormattingContextGeometry.cpp:
(WebCore::Layout::FormattingContext::Geometry::complicatedCases):
(WebCore::Layout::FormattingContext::Geometry::floatingHeightAndMargin):
(WebCore::Layout::FormattingContext::Geometry::floatingNonReplacedHeightAndMargin): Deleted.
* layout/blockformatting/BlockFormattingContextGeometry.cpp:
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowHeightAndMargin):
* layout/layouttree/LayoutBox.cpp:
(WebCore::Layout::Box::establishesBlockFormattingContext const):
* layout/layouttree/LayoutBox.h:

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

13 months ago[LFC][Floating] Add FloatingState::bottom() to enable content height computation...
zalan@apple.com [Fri, 3 Aug 2018 02:32:24 +0000 (02:32 +0000)]
[LFC][Floating] Add FloatingState::bottom() to enable content height computation for formatting roots.
https://bugs.webkit.org/show_bug.cgi?id=188294

Reviewed by Simon Fraser.

"10.6.7 'Auto' heights for block formatting context roots
...
In addition, if the element has any floating descendants whose bottom margin edge is below the element's bottom content edge,
then the height is increased to include those edges. Only floats that participate in this block formatting context are taken into
account, e.g., floats inside absolutely positioned descendants or other floats are not..."

* layout/FloatingState.cpp:
(WebCore::Layout::FloatingState::bottom const):
* layout/FloatingState.h:
* layout/FormattingContextGeometry.cpp:
(WebCore::Layout::contentHeightForFormattingContextRoot):

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

13 months agoControl center controls disappear when pausing, locking device.
jer.noble@apple.com [Fri, 3 Aug 2018 01:54:15 +0000 (01:54 +0000)]
Control center controls disappear when pausing, locking device.
https://bugs.webkit.org/show_bug.cgi?id=188282
<rdar://problem/42497809>

Reviewed by Eric Carlson.

Source/WebCore:

Test: platform/mac/media/audio-session-category-video-paused.html

MediaRemote will set any app whose audio session category changes from MediaPlayback to
Ambient as not eligable for being the "now playing" app. Previously, due to the ordering of
events, we never moved from MediaPlayback to Ambient when pausing <video>, even though that
was the intention. Now that that bug is fixed, it exposed this new issue with MediaRemote.

To solve the new issue, make our audio session category policy more explicit: once we are in
MediaPlayback category, we will remain so as long as the media element in queston stays
loaded, has played, and is never interrupted by the system.

Make MediaSessionManagerCocoa a proper subclass of PlatformMediaSessionManager, and make
MediaSessionManageriOS and -Mac subclasses of the -Cocoa class. Add a new
m_hasPlayedSinceLastInterruption ivar to PlatformMediaSession, set when the state() changes
to Playing, and cleared during an interruption. Check this flag when deciding what audio
sessino category to set in MediaSessionManagerCocoa.

* WebCore.xcodeproj/project.pbxproj:
* platform/audio/PlatformMediaSession.cpp:
(WebCore::PlatformMediaSession::setState):
* platform/audio/PlatformMediaSession.h:
(WebCore::PlatformMediaSession::hasPlayedSinceLastInterruption const):
(WebCore::PlatformMediaSession::clearHasPlayedSinceLastInterruption):
* platform/audio/PlatformMediaSessionManager.cpp:
(WebCore::PlatformMediaSessionManager::updateSessionState): Deleted.
* platform/audio/PlatformMediaSessionManager.h:
(WebCore::PlatformMediaSessionManager::audioHardwareListener):
(WebCore::PlatformMediaSessionManager::updateSessionState):
* platform/audio/cocoa/MediaSessionManagerCocoa.cpp:
(MediaSessionManagerCocoa::updateSessionState):
(MediaSessionManagerCocoa::beginInterruption):
(PlatformMediaSessionManager::updateSessionState): Deleted.
* platform/audio/cocoa/MediaSessionManagerCocoa.h: Added.
* platform/audio/ios/MediaSessionManagerIOS.h:
* platform/audio/ios/MediaSessionManagerIOS.mm:
(WebCore::MediaSessionManageriOS::MediaSessionManageriOS):
* platform/audio/mac/MediaSessionManagerMac.h:
* platform/audio/mac/MediaSessionManagerMac.mm:
(WebCore::MediaSessionManagerMac::MediaSessionManagerMac):

LayoutTests:

* platform/mac/media/audio-session-category-video-paused-expected.txt: Added.
* platform/mac/media/audio-session-category-video-paused.html: Added.
* platform/ios/TestExpectations:

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

13 months agoPDFPlugin: Context menus in RTL are left-aligned
timothy_horton@apple.com [Fri, 3 Aug 2018 01:11:46 +0000 (01:11 +0000)]
PDFPlugin: Context menus in RTL are left-aligned
https://bugs.webkit.org/show_bug.cgi?id=188292
<rdar://problem/32293787>

Reviewed by Simon Fraser.

* WebProcess/Plugins/PDF/PDFLayerControllerSPI.h:
Add some SPI.

* WebProcess/Plugins/PDF/PDFPlugin.mm:
(WebKit::PDFPlugin::handleContextMenuEvent):
Translate UI layout direction back into the platform enum, and pass it to PDFKit.

* WebProcess/WebPage/WebPage.h:
(WebKit::WebPage::userInterfaceLayoutDirection const):
Add a getter for UI layout direction.

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

13 months agoRegression(r234486): assertion hit in ~CallbackAggregator()
cdumez@apple.com [Fri, 3 Aug 2018 00:24:13 +0000 (00:24 +0000)]
Regression(r234486): assertion hit in ~CallbackAggregator()
https://bugs.webkit.org/show_bug.cgi?id=188283
<rdar://problem/42851342>

Reviewed by Alex Christensen.

[NSHTTPCookieStorage _saveCookies:] SPI may call its completion block on the background queue
so we need to make sure we dispatch back to the main thread before calling our completion
handler.

* NetworkProcess/cocoa/NetworkProcessCocoa.mm:
(WebKit::saveCookies):
(WebKit::NetworkProcess::platformSyncAllCookies):

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

13 months agoSource/JavaScriptCore:
sbarati@apple.com [Fri, 3 Aug 2018 00:14:11 +0000 (00:14 +0000)]
Source/JavaScriptCore:
Reading instructionPointer from PlatformRegisters may fail when using pointer profiling
https://bugs.webkit.org/show_bug.cgi?id=188271
<rdar://problem/42850884>

Reviewed by Michael Saboff.

This patch defends against the instructionPointer containing garbage bits.
See radar for details.

* runtime/MachineContext.h:
(JSC::MachineContext::instructionPointer):
* runtime/SamplingProfiler.cpp:
(JSC::SamplingProfiler::takeSample):
* runtime/VMTraps.cpp:
(JSC::SignalContext::SignalContext):
(JSC::SignalContext::tryCreate):
* tools/CodeProfiling.cpp:
(JSC::profilingTimer):
* tools/SigillCrashAnalyzer.cpp:
(JSC::SignalContext::SignalContext):
(JSC::SignalContext::tryCreate):
(JSC::SignalContext::dump):
(JSC::installCrashHandler):
* wasm/WasmFaultSignalHandler.cpp:
(JSC::Wasm::trapHandler):

Source/WTF:
Reading instructionPointer from PlatformRegisters may fail when using pointer tagging
https://bugs.webkit.org/show_bug.cgi?id=188271
<rdar://problem/42850884>

Reviewed by Michael Saboff.

* wtf/PtrTag.h:
(WTF::isTaggedWith):
(WTF::usesPointerTagging):

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