WebKit-https.git
5 weeks agoPlease support WEBGL_compressed_texture_etc1 extension (and possibly WEBGL_compressed...
commit-queue@webkit.org [Fri, 8 Nov 2019 01:38:26 +0000 (01:38 +0000)]
Please support WEBGL_compressed_texture_etc1 extension (and possibly WEBGL_compressed_texture_etc too)
https://bugs.webkit.org/show_bug.cgi?id=197900

Patch by Kenneth Russell <kbr@chromium.org> on 2019-11-07
Reviewed by Dean Jackson.

Support the ETC1 and ETC2 compressed texture formats in WebKit's WebGL
implementation.

Tested by changing the code to allocate an OpenGL ES 3.0 context for WebGL,
and running in the iOS Simulator. The WebGL conformance tests
webgl-compressed-texture-etc.html and webgl-compressed-texture-etc1.html all
pass with these changes.

When an ANGLE backend is supported on iOS, these extensions will
automatically be supported, and some of the new validation code can be
removed.

* CMakeLists.txt:
* DerivedSources-input.xcfilelist:
* DerivedSources-output.xcfilelist:
* DerivedSources.make:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/JSDOMConvertWebGL.cpp:
(WebCore::convertToJSValue):
* html/canvas/WebGL2RenderingContext.cpp:
(WebCore::WebGL2RenderingContext::getExtension):
(WebCore::WebGL2RenderingContext::getSupportedExtensions):
* html/canvas/WebGLCompressedTextureETC.cpp: Added.
(WebCore::WebGLCompressedTextureETC::WebGLCompressedTextureETC):
(WebCore::WebGLCompressedTextureETC::getName const):
(WebCore::WebGLCompressedTextureETC::supported):
* html/canvas/WebGLCompressedTextureETC.h: Added.
* html/canvas/WebGLCompressedTextureETC.idl: Added.
* html/canvas/WebGLCompressedTextureETC1.cpp: Added.
(WebCore::WebGLCompressedTextureETC1::WebGLCompressedTextureETC1):
(WebCore::WebGLCompressedTextureETC1::getName const):
(WebCore::WebGLCompressedTextureETC1::supported):
* html/canvas/WebGLCompressedTextureETC1.h: Added.
* html/canvas/WebGLCompressedTextureETC1.idl: Added.
* html/canvas/WebGLExtension.h:
* html/canvas/WebGLRenderingContext.cpp:
(WebCore::WebGLRenderingContext::getExtension):
(WebCore::WebGLRenderingContext::getSupportedExtensions):
* html/canvas/WebGLRenderingContextBase.cpp:
(WebCore::WebGLRenderingContextBase::extensionIsEnabled):
(WebCore::WebGLRenderingContextBase::validateCompressedTexFuncData):
(WebCore::WebGLRenderingContextBase::validateCompressedTexDimensions):
(WebCore::WebGLRenderingContextBase::validateCompressedTexSubDimensions):
* html/canvas/WebGLRenderingContextBase.h:
* platform/graphics/Extensions3D.h:
* platform/graphics/cocoa/GraphicsContext3DCocoa.mm:
(WebCore::GraphicsContext3D::GraphicsContext3D):
* platform/graphics/opengl/Extensions3DOpenGL.cpp:
(WebCore::Extensions3DOpenGL::supportsExtension):

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

5 weeks ago[WebGL] Fixing WebGL tests: Add new baselines for iOS bots
justin_fan@apple.com [Fri, 8 Nov 2019 01:35:31 +0000 (01:35 +0000)]
[WebGL] Fixing WebGL tests: Add new baselines for iOS bots
https://bugs.webkit.org/show_bug.cgi?id=203938

Unreviewed test expectation gardening.

Follow-up to https://bugs.webkit.org/show_bug.cgi?id=203908.
New baselines for iOS tests generated from simulator.

* TestExpectations:
* platform/ios/TestExpectations:
* platform/ios/webgl/1.0.3/conformance/extensions/get-extension-expected.txt: Added.
* platform/ios/webgl/1.0.3/conformance/extensions/oes-texture-float-expected.txt: Added.
* platform/ios/webgl/1.0.3/conformance/extensions/webgl-compressed-texture-size-limit-expected.txt: Added.
* platform/ios/webgl/1.0.3/conformance/extensions/webgl-draw-buffers-expected.txt: Added.
* platform/ios/webgl/1.0.3/conformance/more/functions/readPixelsBadArgs-expected.txt: Added.
* platform/ios/webgl/1.0.3/conformance/more/functions/texImage2DHTML-expected.txt: Added.
* platform/ios/webgl/1.0.3/conformance/more/functions/texSubImage2DHTML-expected.txt: Added.
* platform/ios/webgl/1.0.3/conformance/renderbuffers/framebuffer-object-attachment-expected.txt: Added.
* platform/ios/webgl/1.0.3/conformance/textures/copy-tex-image-2d-formats-expected.txt: Added.
* platform/ios/webgl/1.0.3/conformance/textures/texture-npot-video-expected.txt: Added.
* platform/ios/webgl/2.0.0/conformance/extensions/angle-instanced-arrays-expected.txt: Added.
* platform/ios/webgl/2.0.0/conformance/extensions/oes-vertex-array-object-expected.txt: Added.

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

5 weeks ago[bmalloc] Bug fix for wait time when it's in mini mode.
ysuzuki@apple.com [Fri, 8 Nov 2019 01:29:07 +0000 (01:29 +0000)]
[bmalloc] Bug fix for wait time when it's in mini mode.
https://bugs.webkit.org/show_bug.cgi?id=203121

Reviewed by Saam Barati.

Basuke pointed out that we never changed m_waitTime in scavenger when we are in iOS and mini-mode.
So previously, we are always executing scavenger for each 10ms in mini-mode. After fixing it, we
found that this unintentional behavior was better policy for RAMification.
In this patch, we explicitly use the old behavior, "scavenge for each 10ms" in iOS mini-mode.
We should revisit scavenger's behavior in the future to explore further better behavior.

* bmalloc/Scavenger.cpp:
(bmalloc::Scavenger::threadRunLoop):

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

5 weeks agoRemove an unused icon resource
timothy_horton@apple.com [Fri, 8 Nov 2019 01:18:14 +0000 (01:18 +0000)]
Remove an unused icon resource
https://bugs.webkit.org/show_bug.cgi?id=203983

Reviewed by Wenson Hsieh.

* Resources/mac/mediaIcon.pdf: Removed.
* WebKit.xcodeproj/project.pbxproj:
This file has not been used in years.

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

5 weeks agowebgl/1.0.3/conformance/context/context-release-upon-reload.html is flaky
justin_fan@apple.com [Fri, 8 Nov 2019 01:15:24 +0000 (01:15 +0000)]
webgl/1.0.3/conformance/context/context-release-upon-reload.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=203984

Unreviewed test expectation addition.

Skip context-release-upon-reload.html on High Sierra WK1 debug bots.

* platform/mac-highsierra-wk1/TestExpectations: Added.

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

5 weeks agoWindowEventLoop should be shared among similar origin documents
rniwa@webkit.org [Fri, 8 Nov 2019 01:13:19 +0000 (01:13 +0000)]
WindowEventLoop should be shared among similar origin documents
https://bugs.webkit.org/show_bug.cgi?id=203882

Reviewed by Wenson Hsieh.

Source/WebCore:

Made WindowEventLoop shared across similar origin documents.

Also added internals.queueTask to directly test the event loop behavior
since implicitly testing it via other features has been very cumbersome.

This will help test other features that use the HTML5 event loop as well.

Tests: http/tests/eventloop/queue-task-across-cross-site-frames.html
       http/tests/eventloop/queue-task-across-frames.html

* dom/Document.cpp:
(WebCore::Document::eventLoop): Use WindowEventLoop::ensureForRegistrableDomain.
* dom/WindowEventLoop.cpp:
(WebCore::WindowEventLoop::ensureForRegistrableDomain): Added. Replaces create,
and returns an existing WindowEventLoop if the RegistrableDomain matches.
(WebCore::WindowEventLoop::WindowEventLoop): Added.
(WebCore::WindowEventLoop::~WindowEventLoop): Added. Removes itself from the map.
* dom/WindowEventLoop.h:
* testing/Internals.cpp:
(WebCore::Internals::queueTask): Added.
* testing/Internals.h:
* testing/Internals.idl:

LayoutTests:

Added some tests to make sure the event loop is shared among similar origin documents.

* http/tests/eventloop: Added.
* http/tests/eventloop/queue-task-across-cross-site-frames-expected.txt: Added.
* http/tests/eventloop/queue-task-across-cross-site-frames.html: Added.
* http/tests/eventloop/queue-task-across-frames-expected.txt: Added.
* http/tests/eventloop/queue-task-across-frames.html: Added.
* http/tests/eventloop/resources: Added.
* http/tests/eventloop/resources/eventloop-helper.html: Added.

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

5 weeks agoDrop GenericEventQueue class now that it is unused
cdumez@apple.com [Fri, 8 Nov 2019 00:57:59 +0000 (00:57 +0000)]
Drop GenericEventQueue class now that it is unused
https://bugs.webkit.org/show_bug.cgi?id=203980

Reviewed by Ryosuke Niwa.

Drop GenericEventQueue class now that it is unused. All users have been ported to the HTML
event loop. MainThreadGenericEventQueue remains for now but will get dropped in a follow-up
patch, once it is no longer used.

* dom/GenericEventQueue.cpp:
(WebCore::MainThreadGenericEventQueue::MainThreadGenericEventQueue):
(WebCore::MainThreadGenericEventQueue::enqueueEvent):
(WebCore::MainThreadGenericEventQueue::dispatchOneEvent):
(WebCore::MainThreadGenericEventQueue::close):
(WebCore::MainThreadGenericEventQueue::cancelAllEvents):
(WebCore::MainThreadGenericEventQueue::hasPendingEvents const):
(WebCore::MainThreadGenericEventQueue::hasPendingEventsOfType const):
(WebCore::MainThreadGenericEventQueue::setPaused):
(WebCore::MainThreadGenericEventQueue::suspend):
(WebCore::MainThreadGenericEventQueue::resume):
(WebCore::MainThreadGenericEventQueue::rescheduleAllEventsIfNeeded):
(WebCore::MainThreadGenericEventQueue::stop):
(WebCore::MainThreadGenericEventQueue::activeDOMObjectName const):
(WebCore::TaskQueueConstructor::construct): Deleted.
(WebCore::TaskQueueConstructor<Timer>::construct): Deleted.
(WebCore::GenericEventQueueBase<T>::GenericEventQueueBase): Deleted.
(WebCore::GenericEventQueueBase<T>::enqueueEvent): Deleted.
(WebCore::GenericEventQueueBase<T>::dispatchOneEvent): Deleted.
(WebCore::GenericEventQueueBase<T>::close): Deleted.
(WebCore::GenericEventQueueBase<T>::cancelAllEvents): Deleted.
(WebCore::GenericEventQueueBase<T>::hasPendingEvents const): Deleted.
(WebCore::GenericEventQueueBase<T>::hasPendingEventsOfType const): Deleted.
(WebCore::GenericEventQueueBase<T>::setPaused): Deleted.
(WebCore::GenericEventQueueBase<T>::suspend): Deleted.
(WebCore::GenericEventQueueBase<T>::resume): Deleted.
(WebCore::GenericEventQueueBase<T>::rescheduleAllEventsIfNeeded): Deleted.
(WebCore::GenericEventQueueBase<T>::stop): Deleted.
(WebCore::GenericEventQueueBase<T>::activeDOMObjectName const): Deleted.
(WebCore::GenericEventQueue::create): Deleted.
* dom/GenericEventQueue.h:
(WebCore::GenericEventQueueBase::isSuspended const): Deleted.
(WebCore::GenericEventQueueBase::isSuspendedOrPausedByClient const): Deleted.
(WebCore::MainThreadGenericEventQueue::MainThreadGenericEventQueue): Deleted.
(WebCore::GenericEventQueue::GenericEventQueue): Deleted.

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

5 weeks agoLayout Test http/tests/appcache/remove-cache.html is a flaky failure
youenn@apple.com [Fri, 8 Nov 2019 00:52:28 +0000 (00:52 +0000)]
Layout Test http/tests/appcache/remove-cache.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=199124
<rdar://problem/52008712>

Reviewed by Chris Dumez.

The flakiness probably comes from the use of a setTimeout that might kick in while in most runs, it never kicks in.
When the timer kicks in, the test is reloaded, which triggers a new console log line.
The current console lines do not bring more values than what the test checks with appcache events.
Removing console log lines from the expected file will fix the flakiness.

* TestExpectations:
* http/tests/appcache/remove-cache-expected.txt:
* platform/mac/TestExpectations:

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

5 weeks ago[WebAssembly] Inspector's DebuggerCallFrame should be aware of Wasm frames
tzagallo@apple.com [Fri, 8 Nov 2019 00:37:52 +0000 (00:37 +0000)]
[WebAssembly] Inspector's DebuggerCallFrame should be aware of Wasm frames
https://bugs.webkit.org/show_bug.cgi?id=203925

Reviewed by Mark Lam.

The DebuggerCallFrame checks for CallFrame::codeBlock to determine if it the current frame is a
valid JS frame, but since the Wasm interpreter stores the Wasm::FunctionCodeBlock to this slot,
that check is not sufficient. Add an extra check for CalleeBits::isWasm.

* debugger/DebuggerCallFrame.cpp:
(JSC::DebuggerCallFrame::sourceIDForCallFrame):

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

5 weeks agoWeb Inspector: http/tests/inspector/target/target-events-for-provisional-page.html...
yurys@chromium.org [Thu, 7 Nov 2019 23:44:55 +0000 (23:44 +0000)]
Web Inspector: http/tests/inspector/target/target-events-for-provisional-page.html is flaky when running with other tests
https://bugs.webkit.org/show_bug.cgi?id=203965
<rdar://problem/56988642>

Reviewed by Devin Rousso.

Enforce enableProcessSwapOnWindowOpen=true for the test so that it PSON is enabled regardless of other tests
that may run before (the test may reuse Page instance from the previous test on which
Page::openedByDOMWithOpener==true).

* http/tests/inspector/target/target-events-for-provisional-page.html:

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

5 weeks agoWeb Inspector: REGRESSION(r251958): console prompt is automatically focused when...
drousso@apple.com [Thu, 7 Nov 2019 23:39:56 +0000 (23:39 +0000)]
Web Inspector: REGRESSION(r251958): console prompt is automatically focused when page is reloaded
https://bugs.webkit.org/show_bug.cgi?id=203932

Reviewed by Timothy Hatcher.

* UserInterface/Base/Main.js:
(WI._restoreCookieForOpenTabs):
Only attempt to autofocus when Web Inspector is first opened.

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

5 weeks agoPort Worker to the HTML5 event loop
cdumez@apple.com [Thu, 7 Nov 2019 23:24:35 +0000 (23:24 +0000)]
Port Worker to the HTML5 event loop
https://bugs.webkit.org/show_bug.cgi?id=203919

Reviewed by Ryosuke Niwa.

* dom/ActiveDOMObject.h:
* workers/Worker.cpp:
(WebCore::Worker::Worker):
(WebCore::Worker::terminate):
(WebCore::Worker::hasPendingActivity const):
(WebCore::Worker::notifyFinished):
(WebCore::Worker::dispatchEvent):
(WebCore::Worker::enqueueEvent): Deleted.
* workers/Worker.h:
* workers/WorkerMessagingProxy.cpp:
(WebCore::WorkerMessagingProxy::postMessageToWorkerObject):
(WebCore::WorkerMessagingProxy::postExceptionToWorkerObject):

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

5 weeks ago[iOS] Add logging and telemetry to more mach lookup rules
pvollan@apple.com [Thu, 7 Nov 2019 23:20:01 +0000 (23:20 +0000)]
[iOS] Add logging and telemetry to more mach lookup rules
https://bugs.webkit.org/show_bug.cgi?id=203978

Reviewed by Brent Fulgham.

Add logging and telemetry to help determine if mach lookup of these services can be denied in the WebContent process.

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

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

5 weeks ago Many resourceLoadStatistics tests and storageAccess tests using the ITP
katherine_cheney@apple.com [Thu, 7 Nov 2019 23:16:39 +0000 (23:16 +0000)]
   Many resourceLoadStatistics tests and storageAccess tests using the ITP
       Database redirect to the corresponding memory store test after setting
       a cookie
       https://bugs.webkit.org/show_bug.cgi?id=203958
       <rdar://problem/56984114>

Reviewed by John Wilander.

This patch fixes incorrect redirects in some ITP database store tests.
They should redirect back to themselves as opposed to corresponding
memory store tests to be sure they are testing the correct
functionality.

* http/tests/resourceLoadStatistics/add-blocking-to-redirect-database.html:
* http/tests/resourceLoadStatistics/blocking-in-web-worker-script-import-database.html:
* http/tests/resourceLoadStatistics/cookie-deletion-database.html:
* http/tests/resourceLoadStatistics/cookies-with-and-without-user-interaction-database.html:
* http/tests/resourceLoadStatistics/do-not-capture-statistics-for-simple-top-navigations-database.html:
* http/tests/resourceLoadStatistics/downgraded-referrer-for-navigation-with-link-query-from-prevalent-resource-database.html:
* http/tests/resourceLoadStatistics/grandfathering-database.html:
* http/tests/resourceLoadStatistics/non-prevalent-resources-can-access-cookies-in-a-third-party-context-database.html:
* http/tests/resourceLoadStatistics/ping-to-prevalent-resource-database.html:
* http/tests/storageAccess/deny-due-to-no-interaction-under-general-third-party-cookie-blocking-database.html:
* http/tests/storageAccess/grant-with-prompt-under-general-third-party-cookie-blocking-database.html:
* http/tests/storageAccess/has-storage-access-true-if-third-party-has-cookies-database.html:
* http/tests/storageAccess/has-storage-access-true-if-third-party-has-cookies-ephemeral-database.html:
* http/tests/storageAccess/has-storage-access-under-general-third-party-cookie-blocking-with-cookie-database.html:
* http/tests/storageAccess/request-and-grant-access-then-detach-should-not-have-access-database.html:
* http/tests/storageAccess/request-and-grant-access-then-navigate-cross-site-should-not-have-access-database.html:
* http/tests/storageAccess/request-and-grant-access-then-navigate-same-site-should-have-access-database.html:

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

5 weeks agoPort MessagePort to the HTML5 event loop
cdumez@apple.com [Thu, 7 Nov 2019 23:16:07 +0000 (23:16 +0000)]
Port MessagePort to the HTML5 event loop
https://bugs.webkit.org/show_bug.cgi?id=203960

Reviewed by Ryosuke Niwa.

* dom/MessagePort.cpp:
(WebCore::MessagePort::MessagePort):
(WebCore::MessagePort::close):
(WebCore::MessagePort::dispatchMessages):
(WebCore::MessagePort::dispatchEvent):
* dom/MessagePort.h:
* dom/TaskSource.h:

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

5 weeks agoFactor matched declarations cache into a class
antti@apple.com [Thu, 7 Nov 2019 23:01:20 +0000 (23:01 +0000)]
Factor matched declarations cache into a class
https://bugs.webkit.org/show_bug.cgi?id=203972

Reviewed by Zalan Bujtas.

Move the code out from StyleResolver and rename "matched properties cache" -> "matched declarations cache"
to better describe it.

* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* css/ElementRuleCollector.cpp:
(WebCore::ElementRuleCollector::declarationsForOrigin):

Add a helper.

(WebCore::ElementRuleCollector::transferMatchedRules):

Reserve vector capacity before adding rules.

(WebCore::ElementRuleCollector::addMatchedProperties):
* css/ElementRuleCollector.h:
(WebCore::MatchResult::operator== const):
(WebCore::MatchResult::operator!= const):

Remove the unneeded inline capacity so we can just use MatchResult itself in the cache.

* css/RuleSet.cpp:
(WebCore::RuleSet::addChildRules):
* css/StyleResolver.cpp:
(WebCore::StyleResolver::StyleResolver):
(WebCore::StyleResolver::invalidateMatchedDeclarationsCache):
(WebCore::StyleResolver::clearCachedDeclarationsAffectedByViewportUnits):
(WebCore::StyleResolver::applyMatchedProperties):
(WebCore::StyleResolver::sweepMatchedPropertiesCache): Deleted.
(WebCore::StyleResolver::computeMatchedPropertiesHash): Deleted.
(WebCore::StyleResolver::findFromMatchedPropertiesCache): Deleted.
(WebCore::StyleResolver::addToMatchedPropertiesCache): Deleted.
(WebCore::StyleResolver::invalidateMatchedPropertiesCache): Deleted.
(WebCore::StyleResolver::clearCachedPropertiesAffectedByViewportUnits): Deleted.
(WebCore::isCacheableInMatchedPropertiesCache): Deleted.
* css/StyleResolver.h:
(WebCore::StyleResolver::MatchedPropertiesCacheItem::MatchedPropertiesCacheItem): Deleted.
* dom/Document.cpp:
(WebCore::Document::invalidateMatchedPropertiesCacheAndForceStyleRecalc):
(WebCore::Document::updateViewportUnitsOnResize):
* page/Page.cpp:
(WebCore::Page::updateStyleAfterChangeInEnvironment):
* style/MatchedDeclarationsCache.cpp: Added.
(WebCore::Style::MatchedDeclarationsCache::MatchedDeclarationsCache):
(WebCore::Style::MatchedDeclarationsCache::isCacheable):
(WebCore::Style::MatchedDeclarationsCache::computeHash):
(WebCore::Style::MatchedDeclarationsCache::find):
(WebCore::Style::MatchedDeclarationsCache::add):
(WebCore::Style::MatchedDeclarationsCache::invalidate):
(WebCore::Style::MatchedDeclarationsCache::clearEntriesAffectedByViewportUnits):
(WebCore::Style::MatchedDeclarationsCache::sweep):
* style/MatchedDeclarationsCache.h: Added.
* style/StyleTreeResolver.cpp:
(WebCore::Style::TreeResolver::resolveElement):

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

5 weeks agoUserMediaController::from(document) can return nullptr
eric.carlson@apple.com [Thu, 7 Nov 2019 22:53:47 +0000 (22:53 +0000)]
UserMediaController::from(document) can return nullptr
https://bugs.webkit.org/show_bug.cgi?id=203977
<rdar://problem/56908013>

Reviewed by Jer Noble.

* Modules/mediastream/MediaDevices.cpp:
(WebCore::MediaDevices::stop): NULL-check the UserMediaController.

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

5 weeks agoPort ServiceWorkerContainer to the HTML5 event loop
cdumez@apple.com [Thu, 7 Nov 2019 22:36:45 +0000 (22:36 +0000)]
Port ServiceWorkerContainer to the HTML5 event loop
https://bugs.webkit.org/show_bug.cgi?id=203963

Reviewed by Ryosuke Niwa.

* workers/service/ServiceWorkerContainer.cpp:
(WebCore::ServiceWorkerContainer::ServiceWorkerContainer):
(WebCore::ServiceWorkerContainer::startMessages):
(WebCore::ServiceWorkerContainer::postMessage):
* workers/service/ServiceWorkerContainer.h:

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

5 weeks agoIntegrate scroll event into HTML5 event loop
rniwa@webkit.org [Thu, 7 Nov 2019 22:18:37 +0000 (22:18 +0000)]
Integrate scroll event into HTML5 event loop
https://bugs.webkit.org/show_bug.cgi?id=203839
<rdar://problem/56890922>

Reviewed by Simon Fraser.

Source/WebCore:

Dispatch scroll events on each pending scroll event targets inside the update-the-rendering step
of the event loop as specified in the HTML5 and CSSOM View Module specifications:
https://html.spec.whatwg.org/multipage/webappapis.html#update-the-rendering
https://drafts.csswg.org/cssom-view/#run-the-scroll-steps

The new behavior also matches that of Chrome and Firefox.

Like resize event, the current visual viewport specification does not specify when scroll event
is dispatched on visualViewport interface: https://github.com/WICG/visual-viewport/issues/66
For now, we always dispatch upon it after dispatching on all pending scroll event targets.

Tests: fast/events/scroll-multiple-elements-in-rendering-update.html
       fast/events/scroll-subframe-in-rendering-update.html
       fast/visual-viewport/visual-viewport-scroll-after-resize-in-subframe.html

* dom/Document.cpp:
(WebCore::Document::addPendingScrollEventTarget): Added.
(WebCore::Document::setNeedsVisualViewportScrollEvent): Added.
(WebCore::Document::runScrollSteps): Added. This implements run the scroll steps in CSS OM View.
* dom/Document.h:
* dom/DocumentEventQueue.cpp:
(WebCore::DocumentEventQueue::enqueueOrDispatchScrollEvent): Deleted.
(WebCore::DocumentEventQueue::enqueueScrollEvent): Deleted.
* dom/DocumentEventQueue.h:
* page/EventHandler.cpp:
(WebCore::EventHandler::sendScrollEvent):
* page/Page.cpp:
(WebCore::Page::updateRendering): Invoke runScrollSteps on each document in the frame tree order.
* page/VisualViewport.cpp:
(WebCore::VisualViewport::update):
(WebCore::VisualViewport::enqueueScrollEvent): Deleted.
* page/VisualViewport.h:
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::scrollTo):
* rendering/RenderListBox.cpp:
(WebCore::RenderListBox::scrollTo):

LayoutTests:

Added tests to test the timing at which scroll events are fired across multiple elements and documents,
and with visualViewport, and updated the existing tests to work with the new timing.

* editing/selection/overflow-scroll-while-selecting-text.html:
* fast/events/scroll-multiple-elements-in-rendering-update-expected.txt: Added.
* fast/events/scroll-multiple-elements-in-rendering-update.html: Added.
* fast/events/scroll-subframe-in-rendering-update-expected.txt: Added.
* fast/events/scroll-subframe-in-rendering-update.html: Added.
* fast/scrolling/programmatic-scroll-to-negative-offset.html:
* fast/shadow-dom/trusted-event-scoped-flags.html:
* fast/visual-viewport/visual-viewport-scroll-after-resize-in-subframe-expected.txt: Added.
* fast/visual-viewport/visual-viewport-scroll-after-resize-in-subframe.html: Added.
* tiled-drawing/scrolling/fast-scroll-div-latched-mainframe.html:

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

5 weeks agoREGRESSION: r252121 introduced timeout in webgl/1.0.3/conformance/glsl/misc/shader...
justin_fan@apple.com [Thu, 7 Nov 2019 21:34:15 +0000 (21:34 +0000)]
REGRESSION: r252121 introduced timeout in webgl/1.0.3/conformance/glsl/misc/shader-with-non-reserved-words.html
https://bugs.webkit.org/show_bug.cgi?id=203949

Unreviewed test expectation gardening.

shader-with-non-reserved-words takes dozens of minutes to pass. Skip everywhere.

* platform/gtk/TestExpectations:
* platform/ios-simulator-wk2/TestExpectations:
* platform/mac/TestExpectations:
* platform/wpe/TestExpectations:

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

5 weeks agoREGRESSION (r252161): 3 transitions/ tests time-out
simon.fraser@apple.com [Thu, 7 Nov 2019 21:07:42 +0000 (21:07 +0000)]
REGRESSION (r252161): 3 transitions/ tests time-out
https://bugs.webkit.org/show_bug.cgi?id=203966

Reviewed by Dean Jackson.

Fix the shadow parsing code to deal with non-integral values.

* legacy-animation-engine/transitions/resources/transition-test-helpers.js:
(isShadow):
* transitions/resources/transition-test-helpers.js:
(isShadow):

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

5 weeks agoWeb Inspector: REGRESSION(r250087): inspector/model/remote-object.html is timing out
drousso@apple.com [Thu, 7 Nov 2019 20:36:51 +0000 (20:36 +0000)]
Web Inspector: REGRESSION(r250087): inspector/model/remote-object.html is timing out
https://bugs.webkit.org/show_bug.cgi?id=202934
<rdar://problem/56270900>

Reviewed by Timothy Hatcher.

Source/JavaScriptCore:

In r250087, the inspector injected script was changed so that remote objects actually
iterate the keys of an array and generate a property descriptor for each. While this worked
fine (and was performant) for fetching remote objects, this was not efficient when creating
object previews, as that path wouldn't be limited by any sort of `fetchCount`, meaning that
a descriptor for every index would be created even though only the first 10 would be used.

Refactor the inspector injected script code so that both the fetch and preview paths only
examine exactly the number of properties desired instead of considering all of them and then
slicing to fit.

* inspector/InjectedScriptSource.js:
(InjectedScript.prototype._getProperties):
(InjectedScript.prototype._forEachPropertyDescriptor): Added.
(InjectedScript.prototype._forEachPropertyDescriptor.createFakeValueDescriptor): Added.
(InjectedScript.prototype._forEachPropertyDescriptor.processDescriptor): Added.
(InjectedScript.prototype._forEachPropertyDescriptor.processProperty): Added.
(RemoteObject.prototype._generatePreview):
(RemoteObject.prototype._appendPropertyPreview): Added.
(RemoteObject.prototype._appendPropertyPreview.appendPreview): Added.
(InjectedScript.prototype._propertyDescriptors): Deleted.
(InjectedScript.prototype._propertyDescriptors.processProperties): Deleted.
(InjectedScript.prototype._propertyDescriptors.arrayIndexPropertyNames): Deleted.
(RemoteObject.prototype._appendPropertyPreviews): Deleted.

Source/WebInspectorUI:

* UserInterface/Views/ObjectTreeView.js:
(WI.ObjectTreeView.addShowMoreIfNeeded):
Drive-by: ensure that the indeterminate progress spinner is added after the last button.
LayoutTests:

Split inspector/model/remote-object.html into separate tests for each type of object being
tested, as well as specialized tests for extremely large values. This allows us to better
know which specific expression can cause a timeout.

* inspector/model/remote-object.html: Removed.
* inspector/model/remote-object-expected.txt: Removed.
* platform/mac-wk1/inspector/model/remote-object-expected.txt: Removed.

* inspector/model/remote-object/array.html: Added.
* inspector/model/remote-object/array-expected.txt: Added.
* inspector/model/remote-object/array-large.html: Added.
* inspector/model/remote-object/array-large-expected.txt: Added.
* inspector/model/remote-object/boolean.html: Added.
* inspector/model/remote-object/boolean-expected.txt: Added.
* inspector/model/remote-object/class.html: Added.
* inspector/model/remote-object/class-expected.txt: Added.
* inspector/model/remote-object/date.html: Added.
* inspector/model/remote-object/date-expected.txt: Added.
* inspector/model/remote-object/error.html: Added.
* inspector/model/remote-object/error-expected.txt: Added.
* inspector/model/remote-object/function.html: Added.
* inspector/model/remote-object/function-expected.txt: Added.
* inspector/model/remote-object/immutable.html: Added.
* inspector/model/remote-object/immutable-expected.txt: Added.
* inspector/model/remote-object/iterator.html: Added.
* inspector/model/remote-object/iterator-expected.txt:  Added.
* inspector/model/remote-object/iterator-large.html: Added.
* inspector/model/remote-object/iterator-large-expected.txt: Added.
* inspector/model/remote-object/map.html: Added.
* inspector/model/remote-object/map-expected.txt: Added.
* inspector/model/remote-object/map-large.html: Added.
* inspector/model/remote-object/map-large-expected.txt: Added.
* inspector/model/remote-object/null.html: Added.
* inspector/model/remote-object/null-expected.txt: Added.
* inspector/model/remote-object/number.html: Added.
* inspector/model/remote-object/number-expected.txt: Added.
* platform/mac-wk1/inspector/number-expected.txt: Added.
* inspector/model/remote-object/object.html: Added.
* inspector/model/remote-object/object-expected.txt: Added.
* inspector/model/remote-object/object-large.html: Added.
* inspector/model/remote-object/object-large-expected.txt: Added.
* inspector/model/remote-object/promise.html: Added.
* inspector/model/remote-object/promise-expected.txt: Added.
* inspector/model/remote-object/regexp.html: Added.
* inspector/model/remote-object/regexp-expected.txt: Added.
* inspector/model/remote-object/set.html: Added.
* inspector/model/remote-object/set-expected.txt: Added.
* inspector/model/remote-object/set-large.html: Added.
* inspector/model/remote-object/set-large-expected.txt: Added.
* inspector/model/remote-object/string.html: Added.
* inspector/model/remote-object/string-expected.txt: Added.
* inspector/model/remote-object/string-large.html: Added.
* inspector/model/remote-object/string-large-expected.txt: Added.
* inspector/model/remote-object/undefined.html: Added.
* inspector/model/remote-object/undefined-expected.txt: Added.

* inspector/model/remote-object/dom.html: Renamed from LayoutTests/inspector/model/remote-object-dom.html.
* inspector/model/remote-object/dom-expected.txt: Renamed from LayoutTests/inspector/model/remote-object-dom-expected.txt.
* inspector/model/remote-object/iterators-mutated.html: Renamed from LayoutTests/inspector/model/remote-object-mutated-iterators.html.
* inspector/model/remote-object/iterators-mutated-expected.txt: Renamed from LayoutTests/inspector/model/remote-object-mutated-iterators-expected.txt.

* inspector/model/remote-object/resources/remote-object-utilities.js: Renamed from LayoutTests/inspector/model/resources/remote-object-utilities.js.

* inspector/runtime/getDisplayableProperties.html:
* inspector/runtime/getDisplayableProperties-expected.txt:
* inspector/runtime/getProperties.html:
* inspector/runtime/getProperties-expected.txt:
Drive-by: fix assertion for when the `__proto__` is included if `fetchStart` is 0.
* TestExpectations:

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

5 weeks agoWeb Inspector: REGRESSION(r249451): missing "Reveal in DOM Tree" on nodes logged...
drousso@apple.com [Thu, 7 Nov 2019 20:31:44 +0000 (20:31 +0000)]
Web Inspector: REGRESSION(r249451): missing "Reveal in DOM Tree" on nodes logged to the console
https://bugs.webkit.org/show_bug.cgi?id=203836

Reviewed by Timothy Hatcher.

* UserInterface/Views/ContextMenuUtilities.js:
(WI.appendContextMenuItemsForDOMNode):
* UserInterface/Views/DOMTreeOutline.js:
(WI.DOMTreeOutline.prototype.populateContextMenu):
DOM trees in the console are marked as being non-editable, which is intended to prevent
modifications (e.g. changing an attribute) from being made in the console as the DOM tree
there is not hooked up to the associated DOM agent. In r249451 however, this guard was over
expanded to include non-editing actions, like "Reveal in DOM Tree" and DOM breakpoints.

* UserInterface/Views/LogContentView.js:
(WI.LogContentView.prototype._handleContextMenuEvent):
Drive-by: add a separator before "Copy Selected" so it doesn't end up in the same group as
          any "Collapse All" from a `WI.TreeOutline`.

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

5 weeks agoWeb Inspector: Local Resource Overrides: automatically show a file picker when attemp...
drousso@apple.com [Thu, 7 Nov 2019 20:17:59 +0000 (20:17 +0000)]
Web Inspector: Local Resource Overrides: automatically show a file picker when attempting to create an override for non-text resources
https://bugs.webkit.org/show_bug.cgi?id=203917

Reviewed by Timothy Hatcher.

Since there's no way to edit non-text resources (e.g. images, fonts, etc.) in Web Inspector,
when creating a local override for non-text resources, default to showing a file picker and
creating a local override from the content and MIME type of whatever file is chosen.

Still provide a way (shift-click) to create a local override for non-text resources from the
resource's contents, as that can be useful if the user just wants to change some headers.

* UserInterface/Models/Resource.js:
(WI.Resource.prototype.async createLocalResourceOverride):

* UserInterface/Views/ResourceContentView.js:
(WI.ResourceContentView):
(WI.ResourceContentView.prototype.get createLocalResourceOverrideTooltip): Added.
(WI.ResourceContentView.prototype.requestLocalResourceOverrideInitialContent): Added.
(WI.ResourceContentView.prototype.async _getContentForLocalResourceOverrideFromFile): Added.
(WI.ResourceContentView.prototype._handleCreateLocalResourceOverride):
(WI.ResourceContentView.prototype._handleImportLocalResourceOverride):
(WI.ResourceContentView.prototype.localResourceOverrideInitialContent): Deleted.
(WI.ResourceContentView.prototype.async _handleCreateLocalResourceOverride): Deleted.

* UserInterface/Views/TextResourceContentView.js:
(WI.TextResourceContentView.prototype.get createLocalResourceOverrideTooltip): Added.
(WI.TextResourceContentView.prototype.requestLocalResourceOverrideInitialContent): Added.
(WI.TextResourceContentView.prototype.localResourceOverrideInitialContent): Deleted.

* Localizations/en.lproj/localizedStrings.js:

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

5 weeks agoWeb Inspector: Timelines: add a marker for when a stop was requested
drousso@apple.com [Thu, 7 Nov 2019 20:02:22 +0000 (20:02 +0000)]
Web Inspector: Timelines: add a marker for when a stop was requested
https://bugs.webkit.org/show_bug.cgi?id=203935

Reviewed by Timothy Hatcher.

After r244195, the Web Inspector frontend doesn't stop updating the current time marker
until after it receives all of the corresponding `*.trackingComplete` events. This means
that sometimes, the current time marker can move far past the time at which the stop was
requested, such as if there's a blocking script.

We should indicate where the stop was requested, as that is often right after a particular
issue is reproduced during a timeline recording, rather than have the user try to figure out
where they stopped.

Only keep a marker for the last stop request, and hide the marker once capturing resumes.

It's still useful to have the current time marker continue updating, as we should show all
the information we have about captured things, such as blocking scripts.

* UserInterface/Views/TimelineOverview.js:
(WI.TimelineOverview):
(WI.TimelineOverview.prototype._handleTimelineCapturingStateChanged):

* UserInterface/Models/TimelineMarker.js:
* UserInterface/Views/TimelineRuler.js:
(WI.TimelineRuler.prototype.addMarker):
* UserInterface/Views/TimelineRuler.css:
(.timeline-ruler > .markers > .marker.stopping-time): Added.
(.timeline-ruler > .markers > .marker.current-time):
(.timeline-ruler > .markers > .marker:matches(.stopping-time, .current-time)::after): Added.
(@media (prefers-color-scheme: dark) .timeline-ruler > .markers > .marker.stopping-time): Added.
(.timeline-ruler > .markers > .marker.current-time::after): Deleted.
Make the current time marker always on top (`z-index`).

* Localizations/en.lproj/localizedStrings.js:

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

5 weeks agoWeb Inspector: REGRESSION(r251958): automatic console prompt focusing prevents any...
drousso@apple.com [Thu, 7 Nov 2019 19:59:31 +0000 (19:59 +0000)]
Web Inspector: REGRESSION(r251958): automatic console prompt focusing prevents any "space" shortcuts from working
https://bugs.webkit.org/show_bug.cgi?id=203939

Reviewed by Timothy Hatcher.

* UserInterface/Base/Main.js:
(WI.isShowingTimelineTab): Added.
(WI.isShowingAuditTab): Added.
(WI._restoreCookieForOpenTabs):

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

5 weeks agoWeb Inspector: Uncaught Exception: Unable to get object details - GlobalObject
drousso@apple.com [Thu, 7 Nov 2019 19:46:41 +0000 (19:46 +0000)]
Web Inspector: Uncaught Exception: Unable to get object details - GlobalObject
https://bugs.webkit.org/show_bug.cgi?id=203930
<rdar://problem/56960937>

In r248286, calls to `Heap.snapshot`, `Heap.getPreview`, and `Heap.getRemoteObject` were
moved to the `WI.HeapManager` instead of being inside view code. During this move, extra
`WI.reportInternalError` calls were added, which wasn't entirely correct as it is fully
possible (and expected) that any of these commands are invoked with old heap snapshot nodes
that may no longer exist. As such, calling any error an "internal error" isn't strictly
correct, and instead should just be a log. Also, the frontend code that calls these commands
is able to handle errors, again because it is expected.

Reviewed by Brian Burg.

* UserInterface/Controllers/HeapManager.js:
(WI.HeapManager.prototype.snapshot):
(WI.HeapManager.prototype.getPreview):
(WI.HeapManager.prototype.getRemoteObject):

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

5 weeks agoJSTests:
commit-queue@webkit.org [Thu, 7 Nov 2019 19:42:10 +0000 (19:42 +0000)]
JSTests:
didPassSomeTestsSilenty is misspelled in standalone-pre.js
https://bugs.webkit.org/show_bug.cgi?id=203948

Patch by Tuomas Karkkainen <tuomas.webkit@apple.com> on 2019-11-07
Reviewed by Yusuke Suzuki.

* stress/resources/standalone-pre.js:

LayoutTests:
didPassSomeTestsSilenty and didFaileSomeTests are misspelled in standalone-pre.js
https://bugs.webkit.org/show_bug.cgi?id=203948

Patch by Tuomas Karkkainen <tuomas.webkit@apple.com> on 2019-11-07
Reviewed by Yusuke Suzuki.

* resources/standalone-pre.js:

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

5 weeks agoUnskip test262 tests for async-iteration
ross.kirsling@sony.com [Thu, 7 Nov 2019 19:24:54 +0000 (19:24 +0000)]
Unskip test262 tests for async-iteration
https://bugs.webkit.org/show_bug.cgi?id=203921

Reviewed by Keith Miller.

This should have been done two years ago, it seems.

* test262/config.yaml:
* test262/expectations.yaml:

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

5 weeks ago[[HasProperty]] result of Proxy in prototype chain is ignored
commit-queue@webkit.org [Thu, 7 Nov 2019 18:31:31 +0000 (18:31 +0000)]
[[HasProperty]] result of Proxy in prototype chain is ignored
https://bugs.webkit.org/show_bug.cgi?id=203560

Patch by Alexey Shvayka <shvaikalesh@gmail.com> on 2019-11-07
Reviewed by Ross Kirsling.

JSTests:

* stress/proxy-get-prototype-of.js: Correct Proxy "has" trap test.
* test262/expectations.yaml: Mark 6 test cases as passing.

Source/JavaScriptCore:

Before this change, when [[HasProperty]] was called on ordinary object with Proxy in prototype chain,
falsy result of Proxy's "has" trap was ignored and prototype chain was inspected further.

According to spec, OrdinaryHasProperty unconditionally returns result of parent's [[HasProperty]] call.
(step 5.a of https://tc39.es/ecma262/#sec-ordinaryhasproperty)

* runtime/JSObjectInlines.h:
(JSC::JSObject::getPropertySlot):
(JSC::JSObject::getNonIndexPropertySlot):
* runtime/ProxyObject.cpp:
(JSC::ProxyObject::performHasProperty): Walk the prototype chain in performDefaultHasProperty.

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

5 weeks ago[ews] rename RunJavaScriptCoreTestsToT to RunJSCTestsWithoutPatch
aakash_jain@apple.com [Thu, 7 Nov 2019 18:30:55 +0000 (18:30 +0000)]
[ews] rename RunJavaScriptCoreTestsToT to RunJSCTestsWithoutPatch
https://bugs.webkit.org/show_bug.cgi?id=203959

Reviewed by Alexey Proskuryakov.

* BuildSlaveSupport/ews-build/steps.py:
(RunJSCTestsWithoutPatch): Renamed.
* BuildSlaveSupport/ews-build/steps_unittest.py: Updated unit-tests.

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

5 weeks ago[LFC][MarginCollapsing] Drag anonymous block level boxes into margin collapsing
zalan@apple.com [Thu, 7 Nov 2019 18:03:15 +0000 (18:03 +0000)]
[LFC][MarginCollapsing] Drag anonymous block level boxes into margin collapsing
https://bugs.webkit.org/show_bug.cgi?id=203927
<rdar://problem/56963636>

Reviewed by Antti Koivisto.

We've been ignoring anonymous block level boxes in the context of margin collapsing. Now with IFC, we can't really do that anymore.
This patch removes the early bailout on anon boxes and addresses the fallout.

* layout/MarginTypes.h:
* layout/blockformatting/BlockMarginCollapse.cpp:
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginBeforeCollapsesWithParentMarginBefore const):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginBeforeCollapsesWithPreviousSiblingMarginAfter const):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginBeforeCollapsesWithFirstInFlowChildMarginBefore const):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginAfterCollapsesWithParentMarginAfter const):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginAfterCollapsesWithLastInFlowChildMarginAfter const):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::updateMarginAfterForPreviousSibling):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::positiveNegativeMarginAfter const):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::estimatedMarginBefore):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginBeforeIgnoringCollapsingThrough):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::collapsedVerticalValues):

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

5 weeks agoRe-enable NSURLSession isolation after r252116
achristensen@apple.com [Thu, 7 Nov 2019 17:05:18 +0000 (17:05 +0000)]
Re-enable NSURLSession isolation after r252116
https://bugs.webkit.org/show_bug.cgi?id=203934
<rdar://problem/56921584>

Reviewed by Chris Dumez.

Source/WebCore:

* platform/network/StoredCredentialsPolicy.h:

Source/WebKit:

r252116 was a rollout of r248640, which introduced cases where data tasks from different NSURLSessions
which can have the same task identifiers were put into the same maps.  This key collision caused data from the wrong
tasks to be sent to NetworkResourceLoader, causing rare and strange loading bugs.  In order to prevent insertion into
wrong maps again, I made a new abstraction, SessionWrapper, which wraps a NSURLSession, its delegate, and all maps
that are scoped to that NSURLSession.  Along the way I found a few other places where we had made similar mistakes.

Covered by an API test which would've failed before r252116 because it exercises the key collision condition,
and by tests which were skipped in r252116 and I now unskipped.

* NetworkProcess/Downloads/cocoa/DownloadCocoa.mm:
(WebKit::Download::resume):
* NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
* NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
(WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):
(WebKit::NetworkDataTaskCocoa::~NetworkDataTaskCocoa):
* NetworkProcess/cocoa/NetworkSessionCocoa.h:
* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(-[WKNetworkSessionDelegate initWithSessionWrapper:withCredentials:]):
(-[WKNetworkSessionDelegate sessionInvalidated]):
(-[WKNetworkSessionDelegate existingTask:]):
(-[WKNetworkSessionDelegate sessionCocoa]):
(-[WKNetworkSessionDelegate URLSession:didBecomeInvalidWithError:]):
(-[WKNetworkSessionDelegate URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:]):
(-[WKNetworkSessionDelegate URLSession:task:_schemeUpgraded:completionHandler:]):
(-[WKNetworkSessionDelegate URLSession:dataTask:willCacheResponse:completionHandler:]):
(processServerTrustEvaluation):
(-[WKNetworkSessionDelegate URLSession:task:didReceiveChallenge:completionHandler:]):
(-[WKNetworkSessionDelegate URLSession:task:didCompleteWithError:]):
(-[WKNetworkSessionDelegate URLSession:downloadTask:didFinishDownloadingToURL:]):
(-[WKNetworkSessionDelegate URLSession:downloadTask:didWriteData:totalBytesWritten:totalBytesExpectedToWrite:]):
(-[WKNetworkSessionDelegate URLSession:downloadTask:didResumeAtOffset:expectedTotalBytes:]):
(-[WKNetworkSessionDelegate URLSession:dataTask:didBecomeDownloadTask:]):
(-[WKNetworkSessionDelegate existingWebSocketTask:]):
(WebKit::SessionWrapper::initialize):
(WebKit::NetworkSessionCocoa::NetworkSessionCocoa):
(WebKit::NetworkSessionCocoa::initializeEphemeralStatelessSession):
(WebKit::NetworkSessionCocoa::sessionWrapperForTask):
(WebKit::NetworkSessionCocoa::isolatedSession):
(WebKit::NetworkSessionCocoa::invalidateAndCancel):
(WebKit::NetworkSessionCocoa::continueDidReceiveChallenge):
(WebKit::NetworkSessionCocoa::createWebSocketTask):
(WebKit::NetworkSessionCocoa::addWebSocketTask):
(WebKit::NetworkSessionCocoa::removeWebSocketTask):
(-[WKNetworkSessionDelegate initWithNetworkSession:withCredentials:]): Deleted.
(WebKit::NetworkSessionCocoa::initializeEphemeralStatelessCookielessSession): Deleted.
(WebKit::NetworkSessionCocoa::session): Deleted.
(WebKit::NetworkSessionCocoa::dataTaskForIdentifier): Deleted.
(WebKit::NetworkSessionCocoa::downloadTaskWithResumeData): Deleted.
(WebKit::NetworkSessionCocoa::addDownloadID): Deleted.
(WebKit::NetworkSessionCocoa::downloadID): Deleted.
(WebKit::NetworkSessionCocoa::takeDownloadID): Deleted.
(WebKit::NetworkSessionCocoa::webSocketDataTaskForIdentifier): Deleted.
* UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
(-[WKWebsiteDataStore _logUserInteraction:completionHandler:]):
* UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:

Tools:

* TestWebKitAPI/Tests/WebKitCocoa/ResourceLoadStatistics.mm:
(-[DataTaskIdentifierCollisionDelegate webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:]):
(-[DataTaskIdentifierCollisionDelegate waitForMessages:]):
(-[DataTaskIdentifierCollisionDelegate webView:didReceiveAuthenticationChallenge:completionHandler:]):
(TEST):

LayoutTests:

* platform/wk2/TestExpectations:
Re-enable skipped tests.

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

5 weeks agoAdd support for remotes file for EWS builders
commit-queue@webkit.org [Thu, 7 Nov 2019 16:32:03 +0000 (16:32 +0000)]
Add support for remotes file for EWS builders
https://bugs.webkit.org/show_bug.cgi?id=203899

Patch by Paulo Matos <pmatos@igalia.com> on 2019-11-07
Reviewed by Aakash Jain.

Require to support builders that cross-compile and run tests on native machines
through the use of --remote-config-file.

* BuildSlaveSupport/ews-build/factories.py:
(Factory.__init__):
(StyleFactory.__init__):
(WatchListFactory.__init__):
* BuildSlaveSupport/ews-build/loadConfig.py:
(loadBuilderConfig):
* BuildSlaveSupport/ews-build/steps.py:
(ConfigureBuild.__init__):
(ConfigureBuild.start):
(RunJavaScriptCoreTests.start):
* BuildSlaveSupport/ews-build/steps_unittest.py:
(TestRunJavaScriptCoreTests.test_remote_success):

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

5 weeks agoASSERTION FAILED: m_clientCounts.contains(contextId) in WebKit::VideoFullscreenManage...
commit-queue@webkit.org [Thu, 7 Nov 2019 14:55:13 +0000 (14:55 +0000)]
ASSERTION FAILED: m_clientCounts.contains(contextId) in WebKit::VideoFullscreenManagerProxy::removeClientForContext(uint64_t)
https://bugs.webkit.org/show_bug.cgi?id=203918

Patch by Peng Liu <peng.liu6@apple.com> on 2019-11-07
Reviewed by Jer Noble.

Postpone the transition to exit fullscreen of a video element
before the previous transition of fullscreen mode change is completed.

Fix a flakey layout test (media/video-autoplay.html). No new test is needed.

* WebProcess/cocoa/VideoFullscreenManager.mm:
(WebKit::VideoFullscreenManager::exitVideoFullscreenForVideoElement):

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

5 weeks agoRename AXIsolatedTreeNode to AXIsolatedObject for consistency with AXCoreObject and...
andresg_22@apple.com [Thu, 7 Nov 2019 14:15:45 +0000 (14:15 +0000)]
Rename AXIsolatedTreeNode to AXIsolatedObject for consistency with AXCoreObject and AccessibilityObject.
https://bugs.webkit.org/show_bug.cgi?id=203913

Reviewed by Chris Fleizach.

No new tests needed, no new functionality.

- Renamed AXIsolatedTreeNode as AXIsolatedObject.
- This makes the naming consistent with AXCoreObject and AccessibilityObject.
- Some code cleanup in WebAccessibilityObjectWrapperBase.h.

* accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::createIsolatedAccessibilityTreeHierarchy):
(WebCore::AXObjectCache::generateIsolatedAccessibilityTree):
* accessibility/AXObjectCache.h:
* accessibility/isolatedtree/AXIsolatedTree.cpp:
(WebCore::AXIsolatedTree::nodeInTreeForID):
(WebCore::AXIsolatedTree::nodeForID const):
(WebCore::AXIsolatedTree::focusedUIElement):
(WebCore::AXIsolatedTree::rootNode):
(WebCore::AXIsolatedTree::setRoot):
(WebCore::AXIsolatedTree::appendNodeChanges):
(WebCore::AXIsolatedTree::applyPendingChanges):
* accessibility/isolatedtree/AXIsolatedTree.h:
* accessibility/isolatedtree/AXIsolatedTreeNode.cpp:
(WebCore::AXIsolatedObject::AXIsolatedObject):
(WebCore::AXIsolatedObject::create):
(WebCore::AXIsolatedObject::initializeAttributeData):
(WebCore::AXIsolatedObject::setProperty):
(WebCore::AXIsolatedObject::appendChild):
(WebCore::AXIsolatedObject::setParent):
(WebCore::AXIsolatedObject::setTreeIdentifier):
(WebCore::AXIsolatedObject::children):
(WebCore::AXIsolatedObject::focusedUIElement const):
(WebCore::AXIsolatedObject::parentObjectUnignored const):
(WebCore::AXIsolatedObject::accessibilityHitTest const):
(WebCore::AXIsolatedObject::tree const):
(WebCore::AXIsolatedObject::rectAttributeValue const):
(WebCore::AXIsolatedObject::doubleAttributeValue const):
(WebCore::AXIsolatedObject::unsignedAttributeValue const):
(WebCore::AXIsolatedObject::boolAttributeValue const):
(WebCore::AXIsolatedObject::stringAttributeValue const):
(WebCore::AXIsolatedObject::intAttributeValue const):
(WebCore::AXIsolatedObject::updateBackingStore):
(WebCore::AXIsolatedTreeNode::AXIsolatedTreeNode): Deleted.
(WebCore::AXIsolatedTreeNode::create): Deleted.
(WebCore::AXIsolatedTreeNode::initializeAttributeData): Deleted.
(WebCore::AXIsolatedTreeNode::setProperty): Deleted.
(WebCore::AXIsolatedTreeNode::appendChild): Deleted.
(WebCore::AXIsolatedTreeNode::setParent): Deleted.
(WebCore::AXIsolatedTreeNode::setTreeIdentifier): Deleted.
(WebCore::AXIsolatedTreeNode::children): Deleted.
(WebCore::AXIsolatedTreeNode::focusedUIElement const): Deleted.
(WebCore::AXIsolatedTreeNode::parentObjectUnignored const): Deleted.
(WebCore::AXIsolatedTreeNode::accessibilityHitTest const): Deleted.
(WebCore::AXIsolatedTreeNode::tree const): Deleted.
(WebCore::AXIsolatedTreeNode::rectAttributeValue const): Deleted.
(WebCore::AXIsolatedTreeNode::doubleAttributeValue const): Deleted.
(WebCore::AXIsolatedTreeNode::unsignedAttributeValue const): Deleted.
(WebCore::AXIsolatedTreeNode::boolAttributeValue const): Deleted.
(WebCore::AXIsolatedTreeNode::stringAttributeValue const): Deleted.
(WebCore::AXIsolatedTreeNode::intAttributeValue const): Deleted.
(WebCore::AXIsolatedTreeNode::updateBackingStore): Deleted.
* accessibility/isolatedtree/AXIsolatedTreeNode.h:
* accessibility/mac/WebAccessibilityObjectWrapperBase.h:

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

5 weeks agoImplement AXIsolatedTreeNode::roleDescription.
andresg_22@apple.com [Thu, 7 Nov 2019 13:21:57 +0000 (13:21 +0000)]
Implement AXIsolatedTreeNode::roleDescription.
https://bugs.webkit.org/show_bug.cgi?id=203863
<rdar://problem/56934443>

Reviewed by Chris Fleizach.

No new tests needed, no new functionality.

AccessibilityObjectWrapper cannot call any of the AX.*Text functions to
retrieve localized role descriptions, because when running on the
secondary thread, those AtomStrings are not accessible. Moreover, some
of the special cases require access to DOM objects that are not
available in the secondary thread. Therefore, added
AXCoreObject::rolePlatformDescription that runs in the main thread to
initialize the corresponding attribute in AXIsolatedTreeNode.
rolePlatformString, createPlatformRoleMap, roleToPlatformString,
ariaLandmarkRoleDescription, are helper functions. The platform
functions allow to customize the behavior of roleDescription in each
platform. The platform overrides are implemented for mac. Other
platforms are pending.

* accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::rolePlatformString const):
(WebCore::AccessibilityObject::rolePlatformDescription const):
(WebCore::AccessibilityObject::ariaLandmarkRoleDescription const):
(WebCore::AccessibilityObject::roleDescription const):
(WebCore::Accessibility::createPlatformRoleMap):
(WebCore::Accessibility::roleToPlatformString):
* accessibility/AccessibilityObject.h:
* accessibility/AccessibilityObjectInterface.h:
* accessibility/isolatedtree/AXIsolatedTreeNode.cpp:
(WebCore::AXIsolatedTreeNode::initializeAttributeData):
* accessibility/isolatedtree/AXIsolatedTreeNode.h:
* accessibility/mac/AccessibilityObjectMac.mm:
(WebCore::AccessibilityObject::rolePlatformString const):
(WebCore::AccessibilityObject::rolePlatformDescription const):
(WebCore::Accessibility::createPlatformRoleMap):
* accessibility/mac/WebAccessibilityObjectWrapperBase.mm:
(-[WebAccessibilityObjectWrapperBase accessibilityObject]):
(-[WebAccessibilityObjectWrapperBase ariaLandmarkRoleDescription]): Implementation moved to AccessibilityObject.
* accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(-[WebAccessibilityObjectWrapper role]): Special cases moved to rolePlatformString.
(-[WebAccessibilityObjectWrapper roleDescription]):
(createAccessibilityRoleMap): Deleted, became Accessibility::createPlatformRoleMap.
(roleValueToNSString): Deleted, became Accessibility::roleToPlatformString.
* platform/LocalizedStrings.cpp:
(WebCore::AXARIAContentGroupText):
(WebCore::AXHorizontalRuleDescriptionText):
(WebCore::AXMarkText):
* platform/LocalizedStrings.h:
* platform/cocoa/LocalizedStringsCocoa.mm:
(WebCore::AXARIAContentGroupText): Deleted, moved to LocalizedStrings.cpp.
(WebCore::AXHorizontalRuleDescriptionText): Deleted, moved to LocalizedStrings.cpp.
(WebCore::AXMarkText): Deleted, moved to LocalizedStrings.cpp.

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

5 weeks agoWebDriver: correctly handle errors when focusing element before sending key events
carlosgc@webkit.org [Thu, 7 Nov 2019 12:09:12 +0000 (12:09 +0000)]
WebDriver: correctly handle errors when focusing element before sending key events
https://bugs.webkit.org/show_bug.cgi?id=203945

Reviewed by Carlos Alberto Lopez Perez.

Source/WebDriver:

We are throwing an exception that is not correctly handled.

Fixes: imported/w3c/webdriver/tests/element_send_keys/interactability.py::test_not_a_focusable_element
       imported/w3c/webdriver/tests/element_send_keys/interactability.py::test_display_none
       imported/w3c/webdriver/tests/element_send_keys/interactability.py::test_visibility_hidden
       imported/w3c/webdriver/tests/element_send_keys/interactability.py::test_hidden
       imported/w3c/webdriver/tests/element_send_keys/interactability.py::test_disabled

* Session.cpp:
(WebDriver::Session::elementSendKeys): Raise ElementNotInteractable error when element is not focusable.

Source/WebKit:

Handle ElementNotInteractable JavaScript exception to generate the appropriate Automation error.

* WebProcess/Automation/WebAutomationSessionProxy.cpp:
(WebKit::WebAutomationSessionProxy::evaluateJavaScriptFunction):

WebDriverTests:

Remove expectations for tests that are now passing.

* TestExpectations.json:

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

5 weeks agoIndentation in ThreadGlobalData.h is incorrect
commit-queue@webkit.org [Thu, 7 Nov 2019 09:52:27 +0000 (09:52 +0000)]
Indentation in ThreadGlobalData.h is incorrect
https://bugs.webkit.org/show_bug.cgi?id=203895

Patch by Chris Lord <clord@igalia.com> on 2019-11-07
Reviewed by Žan Doberšek.

No new tests -- no change in behavior.

* platform/ThreadGlobalData.h:
(WebCore::ThreadGlobalData::ThreadGlobalData::cachedResourceRequestInitiators):
(WebCore::ThreadGlobalData::ThreadGlobalData::eventNames):
(WebCore::ThreadGlobalData::ThreadGlobalData::threadTimers):
(WebCore::ThreadGlobalData::ThreadGlobalData::qualifiedNameCache):
(WebCore::ThreadGlobalData::ThreadGlobalData::cachedConverterICU):
(WebCore::ThreadGlobalData::ThreadGlobalData::currentState const):
(WebCore::ThreadGlobalData::ThreadGlobalData::setCurrentState):
(WebCore::ThreadGlobalData::ThreadGlobalData::isInRemoveAllEventListeners const):
(WebCore::ThreadGlobalData::ThreadGlobalData::setIsInRemoveAllEventListeners):

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

5 weeks agoVRDisplay should not prevent entering the back/forward cache
svillar@igalia.com [Thu, 7 Nov 2019 08:06:07 +0000 (08:06 +0000)]
VRDisplay should not prevent entering the back/forward cache
https://bugs.webkit.org/show_bug.cgi?id=203105

Reviewed by Chris Dumez.

VRDisplay schedules asynchronous execution of events using the WindowEventLoop instead of
synchronously firing them. WindowEventLoop does correctly suspend while in cache.

Apart from that suspend()/resume() were implemented by forcing m_scriptedAnimationController
to suspend the VR request animation frame machinery while in cache.

Last but not least, stopPresenting() is now also called on suspension.

No new tests were added as there is no testing machinery for WebVR so far. It's unclear how
this unreleased feature will evolve as it's being replaced by WebXR.

* Modules/webvr/VRDisplay.cpp:
(WebCore::VRDisplay::dispatchVRDisplayEventInWindowEventLoop):
(WebCore::VRDisplay::platformDisplayConnected): Use dispatchVRDisplayEventInWindowEventLoop.
(WebCore::VRDisplay::platformDisplayDisconnected): Ditto.
(WebCore::VRDisplay::platformDisplayMounted): Ditto.
(WebCore::VRDisplay::platformDisplayUnmounted): Ditto.
(WebCore::VRDisplay::suspend): Added.
(WebCore::VRDisplay::resume): Added.
(WebCore::VRDisplay::stop): Call stopPresenting().
(WebCore::VRDisplay::shouldPreventEnteringBackForwardCache_DEPRECATED const): Deleted.
* Modules/webvr/VRDisplay.h:

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

5 weeks agoRemove remnants of support code for an upwards growing stack.
mark.lam@apple.com [Thu, 7 Nov 2019 07:27:52 +0000 (07:27 +0000)]
Remove remnants of support code for an upwards growing stack.
https://bugs.webkit.org/show_bug.cgi?id=203942

Reviewed by Yusuke Suzuki.

Source/JavaScriptCore:

* runtime/VM.cpp:
(JSC::VM::updateStackLimits):
(JSC::VM::committedStackByteCount):
* runtime/VM.h:
(JSC::VM::isSafeToRecurse const):
* runtime/VMEntryScope.cpp:
(JSC::VMEntryScope::VMEntryScope):
* runtime/VMInlines.h:
(JSC::VM::ensureStackCapacityFor):
* yarr/YarrPattern.cpp:
(JSC::Yarr::YarrPatternConstructor::isSafeToRecurse const):

Source/WTF:

We haven't supported an upwards growing stack in years, and a lot of code has
since been written specifically with only a downwards growing stack in mind (e.g.
the LLInt, the JITs).  Also, all our currently supported platforms use a downward
growing stack.

We should remove the remnants of support code for an upwards growing stack.  The
presence of that code is deceptive in that it conveys support for an upwards
growing stack where this hasn't been the case in years.

* wtf/StackBounds.cpp:
(WTF::StackBounds::newThreadStackBounds):
(WTF::StackBounds::currentThreadStackBoundsInternal):
(WTF::StackBounds::stackDirection): Deleted.
(WTF::testStackDirection2): Deleted.
(WTF::testStackDirection): Deleted.
* wtf/StackBounds.h:
(WTF::StackBounds::size const):
(WTF::StackBounds::contains const):
(WTF::StackBounds::recursionLimit const):
(WTF::StackBounds::StackBounds):
(WTF::StackBounds::isGrowingDownwards const):
(WTF::StackBounds::checkConsistency const):
(WTF::StackBounds::isGrowingDownward const): Deleted.
* wtf/StackStats.cpp:
(WTF::StackStats::CheckPoint::CheckPoint):
(WTF::StackStats::CheckPoint::~CheckPoint):
(WTF::StackStats::probe):
(WTF::StackStats::LayoutCheckPoint::LayoutCheckPoint):

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

5 weeks agoRemove unimplemented property error log in when getting a property value from a compu...
drousso@apple.com [Thu, 7 Nov 2019 07:21:38 +0000 (07:21 +0000)]
Remove unimplemented property error log in when getting a property value from a computed style
https://bugs.webkit.org/show_bug.cgi?id=203943

Reviewed by Simon Fraser.

In r251581, the list of computed CSS properties was changed to be autogenerated from 'CSSProperties.json'.
One issue that arose from this was that `-webkit-text-decorations-in-effect` was no longer part of the
`CSSComputedStyleDeclaration`, which caused a number of editing tests to fail, as that property is used
for holding internal state related to various editing commands (e.g. `document.execCommand(...)`). In
order to get around this, `ComputedStyleExtractor::copyProperties()` was modified to instead copy all CSS
properties, regardless of whether they're part of the set of computed CSS properties. Unfortunately, this
had a side effect of triggering a longstanding `LOG_ERROR` (added in r6178) when attempting to retrieve
the value of certain CSS properties (e.g. `-internal-text-autosizing-status`).

Since this code path can be triggered by JavaScript (e.g. `getComputedStyle(node).getPropertyCSSValue("...")`),
it doesn't add much benefit to have this log, especially since the code itself is already annotated with
comments/FIXMEs for CSS properties that don't have a computed value.

* css/CSSComputedStyleDeclaration.cpp:
(WebCore::ComputedStyleExtractor::valueForPropertyInStyle):
(WebCore::logUnimplementedPropertyID): Deleted.
* css/SVGCSSComputedStyleDeclaration.cpp:
(WebCore::ComputedStyleExtractor::svgPropertyValue):

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

5 weeks agoAX: WKWebView does not shift Accessibility Focus for Catalyst (203798)
commit-queue@webkit.org [Thu, 7 Nov 2019 07:03:17 +0000 (07:03 +0000)]
AX: WKWebView does not shift Accessibility Focus for Catalyst (203798)
https://bugs.webkit.org/show_bug.cgi?id=203798

Patch by Eric Liang <ericliang@apple.com> on 2019-11-06
Reviewed by Chris Fleizach.

Source/WebCore:

Changed to use the new cocoa directory instead of macOS only

* accessibility/mac/AXObjectCacheMac.mm:
* accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

Source/WebCore/PAL:

Changed the path of NSAccessibilitySPI from Mac to Cocoa

* PAL.xcodeproj/project.pbxproj:
* pal/spi/cocoa/NSAccessibilitySPI.h: Renamed from Source/WebCore/PAL/pal/spi/mac/NSAccessibilitySPI.h.

Source/WebKit:

Added the code to register/unregister remote UI Process identifier on the host app.
This is used so that the host app can appear as the sender for notifications sent from its web processes. Unfortunately this has to be done in WebKit: in accessibility bundles the swizzled code is not called because of bundle loading time.
Added AppKit softlink for Mac catalyst.

* SourcesCocoa.txt:
* UIProcess/Cocoa/WebViewImpl.mm:
* UIProcess/ios/AppKitSoftLink.h: Added.
* UIProcess/ios/AppKitSoftLink.mm: Added.
* UIProcess/ios/ViewGestureControllerIOS.mm:
(-[WKSwipeTransitionController gestureRecognizerForInteractiveTransition:WithTarget:action:]):
* UIProcess/ios/WKContentView.mm:
(-[WKContentView _updateRemoteAccessibilityRegistration:]):
(-[WKContentView _accessibilityRegisterUIProcessTokens]):
(-[WKContentView _processDidExit]):
* WebKit.xcodeproj/project.pbxproj:
* WebProcess/WebPage/mac/WKAccessibilityWebPageObjectMac.mm:
* WebProcess/WebPage/mac/WebPageMac.mm:
* WebProcess/cocoa/WebProcessCocoa.mm:

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

5 weeks agoUpdate availability annotations to match the macOS 10.15 and iOS 13.0 GM SDKs
krollin@apple.com [Thu, 7 Nov 2019 06:37:33 +0000 (06:37 +0000)]
Update availability annotations to match the macOS 10.15 and iOS 13.0 GM SDKs
https://bugs.webkit.org/show_bug.cgi?id=202243
<rdar://problem/55720747>

Reviewed by Brent Fulgham.

Changed WK_MAC_TBA and WK_IOS_TBA to 10.15 and 13.0, respectively, in
all declarations that appear in the GM SDKs.

* Configurations/WebKit.xcconfig:
* Shared/API/Cocoa/WKMain.h:
* UIProcess/API/Cocoa/NSAttributedString.h:
* UIProcess/API/Cocoa/WKContextMenuElementInfo.h:
* UIProcess/API/Cocoa/WKError.h:
* UIProcess/API/Cocoa/WKErrorPrivate.h:
* UIProcess/API/Cocoa/WKNavigation.h:
* UIProcess/API/Cocoa/WKNavigationActionPrivate.h:
* UIProcess/API/Cocoa/WKNavigationDelegate.h:
* UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h:
* UIProcess/API/Cocoa/WKNavigationResponsePrivate.h:
* UIProcess/API/Cocoa/WKPreferences.h:
* UIProcess/API/Cocoa/WKPreferencesPrivate.h:
* UIProcess/API/Cocoa/WKPreviewActionItem.h:
* UIProcess/API/Cocoa/WKPreviewActionItemIdentifiers.h:
* UIProcess/API/Cocoa/WKPreviewElementInfo.h:
* UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
* UIProcess/API/Cocoa/WKSnapshotConfiguration.h:
* UIProcess/API/Cocoa/WKUIDelegate.h:
* UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
* UIProcess/API/Cocoa/WKURLSchemeTaskPrivate.h:
* UIProcess/API/Cocoa/WKWebViewConfiguration.h:
* UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
* UIProcess/API/Cocoa/WKWebViewPrivate.h:
* UIProcess/API/Cocoa/WKWebpagePreferences.h:
* UIProcess/API/Cocoa/WKWebsiteDataRecordPrivate.h:
* UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
* UIProcess/API/Cocoa/_WKActivatedElementInfo.h:
* UIProcess/API/Cocoa/_WKAutomationSessionDelegate.h:
* UIProcess/API/Cocoa/_WKContentRuleListAction.h:
* UIProcess/API/Cocoa/_WKCustomHeaderFields.h:
* UIProcess/API/Cocoa/_WKDiagnosticLoggingDelegate.h:
* UIProcess/API/Cocoa/_WKElementAction.h:
* UIProcess/API/Cocoa/_WKInspectorWindow.h:
* UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
* UIProcess/API/Cocoa/_WKTextInputContext.h:
* UIProcess/API/Cocoa/_WKUserContentExtensionStorePrivate.h:
* UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h:
* UIProcess/API/Cocoa/_WKWebsiteDataStoreDelegate.h:
* UIProcess/API/Cocoa/_WKWebsitePolicies.h:
* UIProcess/_WKTouchEventGenerator.h:
* WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextControllerPrivate.h:

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

5 weeks agoREGRESSION: [ iOS ] ( r251015 ) Layout Test fast/text/whitespace/pre-wrap-overflow...
antti@apple.com [Thu, 7 Nov 2019 04:05:01 +0000 (04:05 +0000)]
REGRESSION: [ iOS ] ( r251015 ) Layout Test fast/text/whitespace/pre-wrap-overflow-selection.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=203366
<rdar://problem/56580680>

Reviewed by Simon Fraser.

Source/WebKit:

WKBundlePageForceRepaint may fail to do synchronous layer flush if there is a pending layer flush in-flight and waiting
for completion message from UI process. Layer flush also flushes pending editor state so that doesn't get done either.
This may cause randomness in test results.

In this case the randomness is the switch between simple and complex line layout, triggered by editor state flush. The results
between line layout paths are observably identical but produce slightly different render tree dumps.

* WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
(WKBundlePageFlushPendingEditorStateUpdate):
* WebProcess/InjectedBundle/API/c/WKBundlePagePrivate.h:

Add a function for forcing editor state flush, called from the test runner dump() function.

Tools:

* WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
(WTR::InjectedBundlePage::dump):

LayoutTests:

* platform/ios/TestExpectations:

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

5 weeks agoUnreviewed, fix watchOS build after r252011.
cdumez@apple.com [Thu, 7 Nov 2019 04:03:58 +0000 (04:03 +0000)]
Unreviewed, fix watchOS build after r252011.

* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::startBackgroundActivityForFullscreenInput):

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

5 weeks agoChange the UIWebView layer border colors to more strongly differentiate them from...
simon.fraser@apple.com [Thu, 7 Nov 2019 03:36:36 +0000 (03:36 +0000)]
Change the UIWebView layer border colors to more strongly differentiate them from WKWebView's colors
https://bugs.webkit.org/show_bug.cgi?id=203940
rdar://problem/56708548

Reviewed by Tim Horton, Wenson Hsieh.

Change layer border colors (which also affect the repaint counter) in UIWebView to use
a chartreuse color, so it's easy to tell at a glance whether an app is using the deprecated
UIWebView.

* platform/ios/LegacyTileCache.mm:
(WebCore::LegacyTileCache::colorForGridTileBorder const):

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

5 weeks agoWeb Inspector: Display color picker for p3 colors
nvasilyev@apple.com [Thu, 7 Nov 2019 02:53:40 +0000 (02:53 +0000)]
Web Inspector: Display color picker for p3 colors
https://bugs.webkit.org/show_bug.cgi?id=203436
<rdar://problem/56635062>

Reviewed by Brian Burg.

Source/WebInspectorUI:

For p3 colors, display ColorSquare with display-p3 gamut.
Continue showing ColorSquare with sRGB gamut by default.

* UserInterface/Base/Setting.js:
* UserInterface/Models/Color.js:
(WI.Color):
(WI.Color.rgb2hsv):
(WI.Color.hsv2rgb.fraction):
(WI.Color.hsv2rgb):
(WI.Color.prototype.get hsla):
(WI.Color.prototype.isKeyword):

* UserInterface/Views/ColorPicker.css:
(.color-picker > .hue):
(@media (color-gamut: p3)):
(.color-picker.gamut-p3 > .hue):

* UserInterface/Views/ColorPicker.js:
(WI.ColorPicker.prototype._updateColor):
(WI.ColorPicker.prototype._updateOpacitySlider):
(WI.ColorPicker.prototype._handleFormatChange):
Introduce `gamut` parameter. Previously, the only available `gamut` was sRGB.

* UserInterface/Views/ColorSquare.css:
(.color-square > .crosshair):
Update the crosshair style to look better for both light and dark backgrounds.

* UserInterface/Views/ColorSquare.js:
(WI.ColorSquare):
(WI.ColorSquare.prototype.get tintedColor):
(WI.ColorSquare.prototype.set tintedColor):
(WI.ColorSquare.prototype._setCrosshairPosition):
(WI.ColorSquare.prototype._updateBaseColor):
(WI.ColorSquare.prototype._updateCrosshairBackground):

* UserInterface/Views/InlineSwatch.js:
Make p3 color picker a preview (e.g. STP-only) feature.

LayoutTests:

Add tests for WI.Color.rgb2hsv and WI.Color.hsv2rgb.

* inspector/model/color-expected.txt:
* inspector/model/color.html:

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

5 weeks agoSupport CSS Dark Mode for PrettyDiff.rb.
commit-queue@webkit.org [Thu, 7 Nov 2019 02:42:48 +0000 (02:42 +0000)]
Support CSS Dark Mode for PrettyDiff.rb.
https://bugs.webkit.org/show_bug.cgi?id=203874.

Patch by James Savage <james.savage@apple.com> on 2019-11-06
Reviewed by Tim Horton.

* PrettyPatch/PrettyPatch.rb: Modify CSS to support dark mode. I used
CSS variables in places where colors were shared, but otherwise provided
alternate style rules individually. Some colors looked fine in both
appearances, and those I left with only their light definition.

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

5 weeks agoWEBCORE_TESTSUPPORT_EXPORT should be used only for WebCoreTestSupport, not for WebCore
Hironori.Fujii@sony.com [Thu, 7 Nov 2019 02:28:07 +0000 (02:28 +0000)]
WEBCORE_TESTSUPPORT_EXPORT should be used only for WebCoreTestSupport, not for WebCore
https://bugs.webkit.org/show_bug.cgi?id=203876

Reviewed by Ross Kirsling.

Source/WebCore:

WEBCORE_TESTSUPPORT_EXPORT shouldn't be used for WebCore. It is
only for WebCoreTestSupport module.

WebCoreTestSupport symbols don't need to export on Windows because
it is a static library on it. WEBCORE_TESTSUPPORT_EXPORT should be
empty.

No behavioral changes.

* Modules/encryptedmedia/MediaKeyEncryptionScheme.idl:
* Modules/encryptedmedia/MediaKeySessionType.idl:
* Modules/encryptedmedia/MediaKeysRequirement.idl:
* Modules/mediastream/NavigatorMediaDevices.h:
* bindings/scripts/test/JS/JSTestNode.h:
* bindings/scripts/test/TestNode.idl:
* workers/service/context/ServiceWorkerThreadProxy.h:
Replaced wrongly marked WEBCORE_TESTSUPPORT_EXPORT with WEBCORE_EXPORT.

* testing/js/WebCoreTestSupportPrefix.h: Define WEBCORE_TESTSUPPORT_EXPORT empty.
* WebCorePrefix.h: Removed WEBCORE_TESTSUPPORT_EXPORT definition.

Source/WebKit:

* config.h: Removed WEBCORE_TESTSUPPORT_EXPORT definition because it shouldn't be used in WebKit.

Tools:

* TestWebKitAPI/win/TestWebKitAPIPrefix.h:
* WebKitTestRunner/InjectedBundle/win/TestRunnerInjectedBundlePrefix.h:
* WebKitTestRunner/WebKitTestRunnerPrefix.h:
Define WEBCORE_TESTSUPPORT_EXPORT emtpy.

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

5 weeks ago[Win] DumpRenderTree.exe and WebKitTestRunner.exe shouldn't link with WebCoreTestSupport
Hironori.Fujii@sony.com [Thu, 7 Nov 2019 02:04:31 +0000 (02:04 +0000)]
[Win] DumpRenderTree.exe and WebKitTestRunner.exe shouldn't link with WebCoreTestSupport
https://bugs.webkit.org/show_bug.cgi?id=203879

Reviewed by Ross Kirsling.

After r252086, WinCairo DumpRenderTree.exe and
WebKitTestRunner.exe can't start because they are linked with
WinCairoRequirements DLLs unexpectedly.

DumpRenderTree.exe and WebKitTestRunner.exe are just wrapper
programs. They shouldn't link with WinCairoRequirements libs.

* DumpRenderTree/PlatformWin.cmake: Set DumpRenderTree_LIBRARIES only shlwapi.
* WebKitTestRunner/PlatformWin.cmake: Set WebKitTestRunner_LIBRARIES only shlwapi.

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

5 weeks agoREGRESSION: r252121 introduced new webgl/ failures
aakash_jain@apple.com [Thu, 7 Nov 2019 01:55:07 +0000 (01:55 +0000)]
REGRESSION: r252121 introduced new webgl/ failures
https://bugs.webkit.org/show_bug.cgi?id=203908

Unreviewed test gardening to quell the bots.

Patch by Justin Fan <justin_fan@apple.com> on 2019-11-06

* TestExpectations:
* platform/ios/TestExpectations:

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

5 weeks agoUpdate entry in contributors.json to fix commit privileges.
katherine_cheney@apple.com [Thu, 7 Nov 2019 01:48:40 +0000 (01:48 +0000)]
Update entry in contributors.json to fix commit privileges.

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

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

5 weeks ago[WebAssembly] BBQPlan should retain Wasm::CodeBlock when compiling a single function
tzagallo@apple.com [Thu, 7 Nov 2019 01:22:44 +0000 (01:22 +0000)]
[WebAssembly] BBQPlan should retain Wasm::CodeBlock when compiling a single function
https://bugs.webkit.org/show_bug.cgi?id=203924

Reviewed by Filip Pizlo.

* wasm/WasmBBQPlan.h:

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

5 weeks agoBox-shadow spread radius does not transition or animate correctly with CSS Transition...
simon.fraser@apple.com [Thu, 7 Nov 2019 00:39:24 +0000 (00:39 +0000)]
Box-shadow spread radius does not transition or animate correctly with CSS Transitions & Animations
https://bugs.webkit.org/show_bug.cgi?id=202489

Reviewed by Zalan Bujtas.
Source/WebCore:

Fix box-shadow offset and spread to support subpixel values, and make the rendering subpixel-aware.
This also makes animation of shadow spread and offset be smoother on Retina displays.

Also make ShadowStyle an enum class.

Test: fast/box-shadow/hidpi-box-shadow.html

* css/CSSComputedStyleDeclaration.cpp:
(WebCore::ComputedStyleExtractor::valueForShadow):
(WebCore::ComputedStyleExtractor::valueForFilter):
* css/CSSPrimitiveValue.cpp:
(WebCore::CSSPrimitiveValue::computeLength const):
* page/animation/CSSPropertyAnimation.cpp:
(WebCore::blendFunc):
(WebCore::shadowForBlending):
* platform/animation/AnimationUtilities.h:
(WebCore::blend):
* platform/graphics/RoundedRect.h:
* rendering/InlineFlowBox.cpp:
(WebCore::InlineFlowBox::paintBoxDecorations):
* rendering/RenderBox.cpp:
(WebCore::RenderBox::paintBoxDecorations):
* rendering/RenderBoxModelObject.cpp:
(WebCore::applyBoxShadowForBackground):
(WebCore::RenderBoxModelObject::boxShadowShouldBeAppliedToBackground const):
(WebCore::areaCastingShadowInHole):
(WebCore::RenderBoxModelObject::paintBoxShadow):
Move the snapping until after we've adjusted rects for offset and spread. The "extraOffset"
computation makes the snapping a little more complex; we have to snap before and after applying
shadowOffset, and give to GraphicsContext the delta between the snapped values.
* rendering/RenderTable.cpp:
(WebCore::RenderTable::paintBoxDecorations):
* rendering/RenderTableCell.cpp:
(WebCore::RenderTableCell::paintBoxDecorations):
* rendering/style/RenderStyle.cpp:
(WebCore::RenderStyle::setTextShadow):
(WebCore::RenderStyle::getShadowExtent const):
(WebCore::RenderStyle::getShadowInsetExtent const):
(WebCore::RenderStyle::getShadowHorizontalExtent const):
(WebCore::RenderStyle::getShadowVerticalExtent const):
* rendering/style/ShadowData.cpp:
(WebCore::ShadowData::ShadowData):
(WebCore::calculateShadowExtent):
(WebCore::ShadowData::adjustRectForShadow const):
* rendering/style/ShadowData.h:
(WebCore::ShadowData::ShadowData):
(WebCore::ShadowData::x const):
(WebCore::ShadowData::y const):
(WebCore::ShadowData::location const):
(WebCore::ShadowData::paintingExtent const):
(WebCore::ShadowData::spread const):
* style/StyleBuilderCustom.h:
(WebCore::Style::BuilderCustom::applyTextOrBoxShadowValue):

LayoutTests:

* fast/box-shadow/hidpi-box-shadow-expected.html: Added.
* fast/box-shadow/hidpi-box-shadow.html: Added.

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

5 weeks agoJSGlobalObject::fireWatchpointAndMakeAllArrayStructuresSlowPut() should fire its...
mark.lam@apple.com [Thu, 7 Nov 2019 00:29:19 +0000 (00:29 +0000)]
JSGlobalObject::fireWatchpointAndMakeAllArrayStructuresSlowPut() should fire its watchpoint as the last step.
https://bugs.webkit.org/show_bug.cgi?id=203867
<rdar://problem/56813514>

Reviewed by Saam Barati.

JSTests:

* stress/racy-slow-put-cloned-arguments-when-having-a-bad-time.js: Added.

Source/JavaScriptCore:

JSGlobalObject::fireWatchpointAndMakeAllArrayStructuresSlowPut() should make all
the array structures SlowPut before firing the watchpoint.  Otherwise, the
concurrent JIT may think it's grabbing the slow put version of the structure, but
is actually grabbing the non-SlowPut version because it happened to beat the
mutator in a race to read the structure before the mutator makes it SlowPut.

Also removed some assertions in DFGSpeculativeJIT.cpp that are vulnerable to races
between when the mutator makes all array structures SlowPut and when it fires the
HavingABadTime watchpoint.  The FTL equivalent did not have these assertions.

* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileCreateRest):
(JSC::DFG::SpeculativeJIT::compileNewArray):
(JSC::DFG::SpeculativeJIT::compileNewArrayWithSpread):
* runtime/JSGlobalObject.cpp:
(JSC::JSGlobalObject::fireWatchpointAndMakeAllArrayStructuresSlowPut):

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

5 weeks agoUnreviewed, rolling out r251940.
commit-queue@webkit.org [Thu, 7 Nov 2019 00:00:04 +0000 (00:00 +0000)]
Unreviewed, rolling out r251940.
https://bugs.webkit.org/show_bug.cgi?id=203920

"it introduced test262 failures" (Requested by rkirsling on
#webkit).

Reverted changeset:

"[[HasProperty]] result of Proxy in prototype chain is
ignored"
https://bugs.webkit.org/show_bug.cgi?id=203560
https://trac.webkit.org/changeset/251940

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

5 weeks agoUnreviewed, roll-out r251268 due to RAMification regression
ysuzuki@apple.com [Wed, 6 Nov 2019 23:57:52 +0000 (23:57 +0000)]
Unreviewed, roll-out r251268 due to RAMification regression
https://bugs.webkit.org/show_bug.cgi?id=203121

The code was the bug, but it would be possible that this bug accidentally makes our policy better.
We should clean up to make this bug's behavior default. And we should look for a bit larger interval here.

* bmalloc/Scavenger.cpp:
(bmalloc::Scavenger::threadRunLoop):

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

5 weeks agoScreen locks while watching previously-muted-then-unmuted video
jer.noble@apple.com [Wed, 6 Nov 2019 23:56:41 +0000 (23:56 +0000)]
Screen locks while watching previously-muted-then-unmuted video
https://bugs.webkit.org/show_bug.cgi?id=203906
<rdar://problem/55821375>

Reviewed by Eric Carlson.

Source/WebCore:

Test: media/video-unmuted-after-play-holds-sleep-assertion.html

* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::setMuted):

LayoutTests:

* media/video-unmuted-after-play-holds-sleep-assertion-expected.txt: Added.
* media/video-unmuted-after-play-holds-sleep-assertion.html: Added.

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

5 weeks agoUnreviewed, rolling out r251907.
cdumez@apple.com [Wed, 6 Nov 2019 23:53:42 +0000 (23:53 +0000)]
Unreviewed, rolling out r251907.

Causes white flashing in some cases <rdar://problem/56957850>

Reverted changeset:

"Take down the gesture snapshot early when the back/forward
cache is not leveraged"
https://bugs.webkit.org/show_bug.cgi?id=203713
https://trac.webkit.org/changeset/251907

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

5 weeks agoUpdate SameSite tests for new semantics for empty and invalid SameSite attribute
dbates@webkit.org [Wed, 6 Nov 2019 23:03:10 +0000 (23:03 +0000)]
Update SameSite tests for new semantics for empty and invalid SameSite attribute
https://bugs.webkit.org/show_bug.cgi?id=203755
<rdar://problem/50816282>

Reviewed by Brent Fulgham.

Update the tests and test expectations following CFNetwork change <rdar://problem/42290578> as we
now only recognize SameSite=Strict and SameSite=Lax. That is, we no longer treat SameSite= or
SameSite=<some garbage value> as SameSite=Strict.

MacOS Mojave does not have the fix for <rdar://problem/42290578> and so we land expected failure results.

* http/tests/cookies/same-site/fetch-after-navigating-iframe-in-cross-origin-page-expected.txt:
* http/tests/cookies/same-site/fetch-after-top-level-cross-origin-redirect-expected.txt:
* http/tests/cookies/same-site/fetch-after-top-level-navigation-from-cross-origin-page-expected.txt:
* http/tests/cookies/same-site/fetch-after-top-level-navigation-initiated-from-iframe-in-cross-origin-page-expected.txt:
* http/tests/cookies/same-site/fetch-in-cross-origin-service-worker-expected.txt:
* http/tests/cookies/same-site/popup-cross-site-post.html:
* http/tests/cookies/same-site/popup-cross-site.html:
* http/tests/cookies/same-site/popup-same-site-via-cross-site-redirect.html:
* http/tests/cookies/same-site/resources/fetch-after-navigating-iframe-in-cross-origin-page.php:
* http/tests/cookies/same-site/resources/fetch-after-top-level-cross-origin-redirect.php:
* http/tests/cookies/same-site/resources/fetch-after-top-level-navigation-from-cross-origin-page.php:
* http/tests/cookies/same-site/resources/fetch-after-top-level-navigation-initiated-from-iframe-in-cross-origin-page.php:
* http/tests/cookies/same-site/resources/fetch-in-cross-origin-service-worker.html:
* platform/ios-12/http/tests/cookies/same-site/fetch-after-navigating-iframe-in-cross-origin-page-expected.txt: Removed.
* platform/ios-12/http/tests/cookies/same-site/fetch-after-top-level-cross-origin-redirect-expected.txt: Removed.
* platform/ios-12/http/tests/cookies/same-site/fetch-after-top-level-navigation-from-cross-origin-page-expected.txt: Removed.
* platform/ios-12/http/tests/cookies/same-site/fetch-after-top-level-navigation-initiated-from-iframe-in-cross-origin-page-expected.txt: Removed.
* platform/ios-12/http/tests/cookies/same-site/fetch-in-cross-origin-service-worker-expected.txt: Removed.
* platform/ios-12/http/tests/cookies/same-site/popup-cross-site-expected.txt: Removed.
* platform/ios-12/http/tests/cookies/same-site/popup-cross-site-post-expected.txt: Removed.
* platform/ios-12/http/tests/cookies/same-site/popup-same-site-via-cross-site-redirect-expected.txt: Removed.
* platform/ios/http/tests/cookies/same-site/fetch-after-navigating-iframe-in-cross-origin-page-expected.txt: Removed.
* platform/ios/http/tests/cookies/same-site/fetch-after-top-level-cross-origin-redirect-expected.txt: Removed.
* platform/ios/http/tests/cookies/same-site/fetch-after-top-level-navigation-from-cross-origin-page-expected.txt: Removed.
* platform/ios/http/tests/cookies/same-site/fetch-after-top-level-navigation-initiated-from-iframe-in-cross-origin-page-expected.txt: Removed.
* platform/ios/http/tests/cookies/same-site/fetch-in-cross-origin-service-worker-expected.txt: Removed.
* platform/ios/http/tests/cookies/same-site/popup-cross-site-expected.txt: Removed.
* platform/ios/http/tests/cookies/same-site/popup-cross-site-post-expected.txt: Removed.
* platform/ios/http/tests/cookies/same-site/popup-same-site-via-cross-site-redirect-expected.txt: Removed.
* platform/mac-mojave/http/tests/cookies/same-site/fetch-after-navigating-iframe-in-cross-origin-page-expected.txt:
* platform/mac-mojave/http/tests/cookies/same-site/fetch-after-top-level-cross-origin-redirect-expected.txt:
* platform/mac-mojave/http/tests/cookies/same-site/fetch-after-top-level-navigation-from-cross-origin-page-expected.txt:
* platform/mac-mojave/http/tests/cookies/same-site/fetch-after-top-level-navigation-initiated-from-iframe-in-cross-origin-page-expected.txt:
* platform/mac-mojave/http/tests/cookies/same-site/fetch-in-cross-origin-service-worker-expected.txt:
* platform/mac-mojave/http/tests/cookies/same-site/popup-cross-site-expected.txt:
* platform/mac-mojave/http/tests/cookies/same-site/popup-cross-site-post-expected.txt:
* platform/mac-mojave/http/tests/cookies/same-site/popup-same-site-via-cross-site-redirect-expected.txt:
* platform/mac/http/tests/cookies/same-site/fetch-after-navigating-iframe-in-cross-origin-page-expected.txt: Removed.
* platform/mac/http/tests/cookies/same-site/fetch-after-top-level-cross-origin-redirect-expected.txt: Removed.
* platform/mac/http/tests/cookies/same-site/fetch-after-top-level-navigation-from-cross-origin-page-expected.txt: Removed.
* platform/mac/http/tests/cookies/same-site/fetch-after-top-level-navigation-initiated-from-iframe-in-cross-origin-page-expected.txt: Removed.
* platform/mac/http/tests/cookies/same-site/fetch-in-cross-origin-service-worker-expected.txt: Removed.
* platform/mac/http/tests/cookies/same-site/popup-cross-site-expected.txt: Removed.
* platform/mac/http/tests/cookies/same-site/popup-cross-site-post-expected.txt: Removed.
* platform/mac/http/tests/cookies/same-site/popup-same-site-via-cross-site-redirect-expected.txt: Removed.

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

5 weeks agoUnreviewed build fix: fix TestWebKitAPI in macCatalyst, tvOS, and
krollin@apple.com [Wed, 6 Nov 2019 22:42:10 +0000 (22:42 +0000)]
Unreviewed build fix: fix TestWebKitAPI in macCatalyst, tvOS, and
watchOS builds by conditionalizing some code on HAVE_UIWEBVIEW and
HAVE_PDFKIT. Follow-up to r251976.

* TestWebKitAPI/Tests/WebKitCocoa/WKPDFView.mm:
* TestWebKitAPI/Tests/WebKitLegacy/ios/AudioSessionCategoryIOS.mm:
* TestWebKitAPI/Tests/WebKitLegacy/ios/JSLockTakesWebThreadLock.mm:
* TestWebKitAPI/Tests/WebKitLegacy/ios/ScrollToRevealSelection.mm:
* TestWebKitAPI/Tests/WebKitLegacy/ios/ScrollingDoesNotPauseMedia.mm:
* TestWebKitAPI/Tests/WebKitLegacy/ios/SnapshotViaRenderInContext.mm:
* TestWebKitAPI/Tests/ios/SetTimeoutFunction.mm:
* TestWebKitAPI/config.h:

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

5 weeks agoKeep None value at the end of the ListStyleType enum
obrufau@igalia.com [Wed, 6 Nov 2019 22:38:56 +0000 (22:38 +0000)]
Keep None value at the end of the ListStyleType enum
https://bugs.webkit.org/show_bug.cgi?id=203883

Reviewed by Manuel Rego Casasnovas.

Bug 203837 added a String value at the end of the ListStyleType enum.
This patch moves it before None, in order to keep None at the end.

* rendering/style/RenderStyleConstants.h:

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

5 weeks agoAll EWS status-bubbles shows #1 on security patches when patch is uploaded with webki...
aakash_jain@apple.com [Wed, 6 Nov 2019 22:21:33 +0000 (22:21 +0000)]
All EWS status-bubbles shows #1 on security patches when patch is uploaded with webkit-patch --no-review
https://bugs.webkit.org/show_bug.cgi?id=203903

Reviewed by David Kilzer.

* BuildSlaveSupport/ews-app/ews/fetcher.py:
(BugzillaPatchFetcher.fetch):

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

5 weeks agoUnreviewed, rolling out r252138.
tsavell@apple.com [Wed, 6 Nov 2019 22:21:20 +0000 (22:21 +0000)]
Unreviewed, rolling out r252138.

Caused 8 http/tests/cookies/same-site/ to fail

Reverted changeset:

"Update SameSite tests for new semantics for empty and invalid
SameSite attribute"
https://bugs.webkit.org/show_bug.cgi?id=203755
https://trac.webkit.org/changeset/252138

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

5 weeks ago[ews] Increase timeout for svn-apply
aakash_jain@apple.com [Wed, 6 Nov 2019 22:17:41 +0000 (22:17 +0000)]
[ews] Increase timeout for svn-apply
https://bugs.webkit.org/show_bug.cgi?id=203909

Reviewed by Jonathan Bedard.

* BuildSlaveSupport/ews-build/steps.py:

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

5 weeks agoLayout tests in media/modern-media-controls/pip-placard are designed for MacOS only
commit-queue@webkit.org [Wed, 6 Nov 2019 21:49:36 +0000 (21:49 +0000)]
Layout tests in media/modern-media-controls/pip-placard are designed for MacOS only
https://bugs.webkit.org/show_bug.cgi?id=203859

Patch by Peng Liu <peng.liu6@apple.com> on 2019-11-06
Reviewed by Eric Carlson.

* platform/ios/TestExpectations:

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

5 weeks ago[ Mac Debug WK1 ] REGRESSION (r251262?): fast/scrolling/latching/scroll-select-bottom...
timothy@apple.com [Wed, 6 Nov 2019 21:45:23 +0000 (21:45 +0000)]
[ Mac Debug WK1 ] REGRESSION (r251262?): fast/scrolling/latching/scroll-select-bottom-test.html is a Flaky Failure
https://bugs.webkit.org/show_bug.cgi?id=203176
rdar://problem/56425901

Unreviewed test gardening.

This hasn't been flaky since r251565 when a related r251261 regression/bug was fixed.
I was also able to run it locally against r252065 a total of 1,100 times with no failures.

* platform/mac-wk1/TestExpectations: Removed scroll-select-bottom-test.html.

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

5 weeks agoAdding status field to my contributors.json entry.
andresg_22@apple.com [Wed, 6 Nov 2019 21:18:41 +0000 (21:18 +0000)]
Adding status field to my contributors.json entry.

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

5 weeks ago[LFC][MarginCollapsing] Add Line::isConsideredEmpty
zalan@apple.com [Wed, 6 Nov 2019 21:02:01 +0000 (21:02 +0000)]
[LFC][MarginCollapsing] Add Line::isConsideredEmpty
https://bugs.webkit.org/show_bug.cgi?id=203800
<rdar://problem/56854192>

Reviewed by Antti Koivisto.

https://www.w3.org/TR/CSS22/visuren.html#inline-formatting
Line boxes that contain no text, no preserved white space, no inline elements with non-zero margins, padding, or borders,
and no other in-flow content (such as images, inline blocks or inline tables), and do not end with a preserved newline
must be treated as zero-height line boxes for the purposes of determining the positions of any elements inside of them,
and must be treated as not existing for any other purpose.

Note that it does not necessarily mean visually non-empty line
<span style="font-size: 0px">this is still considered non-empty</span>

* layout/blockformatting/BlockMarginCollapse.cpp:
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginsCollapseThrough const):
* layout/inlineformatting/InlineLine.cpp:
(WebCore::Layout::Line::appendNonBreakableSpace):
(WebCore::Layout::Line::appendTextContent):
(WebCore::Layout::Line::appendNonReplacedInlineBox):
(WebCore::Layout::Line::appendReplacedInlineBox):
(WebCore::Layout::Line::appendLineBreak):
* layout/inlineformatting/InlineLineBox.h:
(WebCore::Layout::LineBox::isConsideredEmpty const):
(WebCore::Layout::LineBox::setIsConsideredNonEmpty):

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

5 weeks ago[ANGLE] IOSurfaceSurfaceCGL has format and internalFormat flipped
dino@apple.com [Wed, 6 Nov 2019 20:42:39 +0000 (20:42 +0000)]
[ANGLE] IOSurfaceSurfaceCGL has format and internalFormat flipped
https://bugs.webkit.org/show_bug.cgi?id=203911
<rdar://problem/56954291>

Reviewed by Simon Fraser.

Fix a typo where internalFormat and format are used in the
wrong order. The table of formats also had them backwards.

* src/libANGLE/renderer/gl/cgl/IOSurfaceSurfaceCGL.cpp:
(rx::IOSurfaceSurfaceCGL::bindTexImage):

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

5 weeks agoMake sure we never end up with NetworkDataTaskCocoa TaskIdentifier conflicts
cdumez@apple.com [Wed, 6 Nov 2019 20:14:11 +0000 (20:14 +0000)]
Make sure we never end up with NetworkDataTaskCocoa TaskIdentifier conflicts
https://bugs.webkit.org/show_bug.cgi?id=203902

Reviewed by Antti Koivisto.

Consolidate the all the code related to data task registration / lookup / unregistration
in NetworkSessionCocoa and add a utility method (dataTaskMap()) to decide which data
task map to use. This makes it less error-prone and unlikely that someone would update
part of the code and fail to update the rest accordingly.

I also converted the debug assertions into release ones so that we crash in case of
id confusion instead of having a very bad and hard to diagnose bug like Bug 201822.

* NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
* NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
(WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):
(WebKit::NetworkDataTaskCocoa::~NetworkDataTaskCocoa):
* NetworkProcess/cocoa/NetworkSessionCocoa.h:
* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(WebKit::NetworkSessionCocoa::dataTaskForIdentifier):
(WebKit::NetworkSessionCocoa::registerDataTask):
(WebKit::NetworkSessionCocoa::unregisterDataTask):

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

5 weeks agoREGRESSION [ PHP ][ iOS ]: Two http/tests/cookies/same-site/set-first-party-* Tests...
dbates@webkit.org [Wed, 6 Nov 2019 17:37:48 +0000 (17:37 +0000)]
REGRESSION [ PHP ][ iOS ]: Two http/tests/cookies/same-site/set-first-party-* Tests are Failing
https://bugs.webkit.org/show_bug.cgi?id=203567
<rdar://problem/56708500>

Reviewed by Youenn Fablet.

A callable must be passed by string in PHP. Any other way seems to be non-standard and your
mileage may vary.

* http/tests/cookies/resources/cookie-utilities.php:
* http/tests/cookies/resources/cookie-utility.php:
* platform/ios-wk2/TestExpectations:

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

5 weeks agohttp/tests/security/isolatedWorld/bypass-main-world-csp-worker.html is a Flakey Failure
dbates@webkit.org [Wed, 6 Nov 2019 17:36:33 +0000 (17:36 +0000)]
http/tests/security/isolatedWorld/bypass-main-world-csp-worker.html is a Flakey Failure
https://bugs.webkit.org/show_bug.cgi?id=198924
<rdar://problem/51811010>

Reviewed by Brent Fulgham.

JavaScript alert() cannot be called from a Web Worker. Use postMessage() instead to post "PASS"
to the worker's owner document. The tests don't actually make use of this posted message, but
fixing the code to use postMessage() may come in handy for future tests.

* http/tests/security/contentSecurityPolicy/resources/worker.php:
* http/tests/security/contentSecurityPolicy/worker-script-src.html:
* http/tests/security/isolatedWorld/bypass-main-world-csp-worker.html:

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

5 weeks agoUpdate SameSite tests for new semantics for empty and invalid SameSite attribute
dbates@webkit.org [Wed, 6 Nov 2019 17:34:50 +0000 (17:34 +0000)]
Update SameSite tests for new semantics for empty and invalid SameSite attribute
https://bugs.webkit.org/show_bug.cgi?id=203755
<rdar://problem/50816282>

Reviewed by Brent Fulgham.

Update the tests and test expectations following CFNetwork change <rdar://problem/42290578> as we
now only recognize SameSite=Strict and SameSite=Lax. That is, we no longer treat SameSite= or
SameSite=<some garbage value> as SameSite=Strict.

* http/tests/cookies/same-site/fetch-after-navigating-iframe-in-cross-origin-page-expected.txt:
* http/tests/cookies/same-site/fetch-after-top-level-cross-origin-redirect-expected.txt:
* http/tests/cookies/same-site/fetch-after-top-level-navigation-from-cross-origin-page-expected.txt:
* http/tests/cookies/same-site/fetch-after-top-level-navigation-initiated-from-iframe-in-cross-origin-page-expected.txt:
* http/tests/cookies/same-site/fetch-in-cross-origin-service-worker-expected.txt:
* http/tests/cookies/same-site/popup-cross-site-post.html:
* http/tests/cookies/same-site/popup-cross-site.html:
* http/tests/cookies/same-site/popup-same-site-via-cross-site-redirect.html:
* http/tests/cookies/same-site/resources/fetch-after-navigating-iframe-in-cross-origin-page.php:
* http/tests/cookies/same-site/resources/fetch-after-top-level-cross-origin-redirect.php:
* http/tests/cookies/same-site/resources/fetch-after-top-level-navigation-from-cross-origin-page.php:
* http/tests/cookies/same-site/resources/fetch-after-top-level-navigation-initiated-from-iframe-in-cross-origin-page.php:
* http/tests/cookies/same-site/resources/fetch-in-cross-origin-service-worker.html:
* platform/ios-12/http/tests/cookies/same-site/fetch-after-navigating-iframe-in-cross-origin-page-expected.txt: Removed.
* platform/ios-12/http/tests/cookies/same-site/fetch-after-top-level-cross-origin-redirect-expected.txt: Removed.
* platform/ios-12/http/tests/cookies/same-site/fetch-after-top-level-navigation-from-cross-origin-page-expected.txt: Removed.
* platform/ios-12/http/tests/cookies/same-site/fetch-after-top-level-navigation-initiated-from-iframe-in-cross-origin-page-expected.txt: Removed.
* platform/ios-12/http/tests/cookies/same-site/fetch-in-cross-origin-service-worker-expected.txt: Removed.
* platform/ios-12/http/tests/cookies/same-site/popup-cross-site-expected.txt: Removed.
* platform/ios-12/http/tests/cookies/same-site/popup-cross-site-post-expected.txt: Removed.
* platform/ios-12/http/tests/cookies/same-site/popup-same-site-via-cross-site-redirect-expected.txt: Removed.
* platform/ios/http/tests/cookies/same-site/fetch-after-navigating-iframe-in-cross-origin-page-expected.txt: Removed.
* platform/ios/http/tests/cookies/same-site/fetch-after-top-level-cross-origin-redirect-expected.txt: Removed.
* platform/ios/http/tests/cookies/same-site/fetch-after-top-level-navigation-from-cross-origin-page-expected.txt: Removed.
* platform/ios/http/tests/cookies/same-site/fetch-after-top-level-navigation-initiated-from-iframe-in-cross-origin-page-expected.txt: Removed.
* platform/ios/http/tests/cookies/same-site/fetch-in-cross-origin-service-worker-expected.txt: Removed.
* platform/ios/http/tests/cookies/same-site/popup-cross-site-expected.txt: Removed.
* platform/ios/http/tests/cookies/same-site/popup-cross-site-post-expected.txt: Removed.
* platform/ios/http/tests/cookies/same-site/popup-same-site-via-cross-site-redirect-expected.txt: Removed.
* platform/mac-mojave/http/tests/cookies/same-site/fetch-after-navigating-iframe-in-cross-origin-page-expected.txt: Removed.
* platform/mac-mojave/http/tests/cookies/same-site/fetch-after-top-level-cross-origin-redirect-expected.txt: Removed.
* platform/mac-mojave/http/tests/cookies/same-site/fetch-after-top-level-navigation-from-cross-origin-page-expected.txt: Removed.
* platform/mac-mojave/http/tests/cookies/same-site/fetch-after-top-level-navigation-initiated-from-iframe-in-cross-origin-page-expected.txt: Removed.
* platform/mac-mojave/http/tests/cookies/same-site/fetch-in-cross-origin-service-worker-expected.txt: Removed.
* platform/mac-mojave/http/tests/cookies/same-site/popup-cross-site-expected.txt: Removed.
* platform/mac-mojave/http/tests/cookies/same-site/popup-cross-site-post-expected.txt: Removed.
* platform/mac-mojave/http/tests/cookies/same-site/popup-same-site-via-cross-site-redirect-expected.txt: Removed.
* platform/mac/http/tests/cookies/same-site/fetch-after-navigating-iframe-in-cross-origin-page-expected.txt: Removed.
* platform/mac/http/tests/cookies/same-site/fetch-after-top-level-cross-origin-redirect-expected.txt: Removed.
* platform/mac/http/tests/cookies/same-site/fetch-after-top-level-navigation-from-cross-origin-page-expected.txt: Removed.
* platform/mac/http/tests/cookies/same-site/fetch-after-top-level-navigation-initiated-from-iframe-in-cross-origin-page-expected.txt: Removed.
* platform/mac/http/tests/cookies/same-site/fetch-in-cross-origin-service-worker-expected.txt: Removed.
* platform/mac/http/tests/cookies/same-site/popup-cross-site-expected.txt: Removed.
* platform/mac/http/tests/cookies/same-site/popup-cross-site-post-expected.txt: Removed.
* platform/mac/http/tests/cookies/same-site/popup-same-site-via-cross-site-redirect-expected.txt: Removed.

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

5 weeks agoAdd watchlist category for BuildSlaveSupport
aakash_jain@apple.com [Wed, 6 Nov 2019 17:05:45 +0000 (17:05 +0000)]
Add watchlist category for BuildSlaveSupport
https://bugs.webkit.org/show_bug.cgi?id=203900

Reviewed by Jonathan Bedard.

* Scripts/webkitpy/common/config/watchlist:

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

5 weeks ago[Cairo] Cairo graphics backend uses ImageBuffer::copyImage just to access native...
commit-queue@webkit.org [Wed, 6 Nov 2019 13:13:10 +0000 (13:13 +0000)]
[Cairo] Cairo graphics backend uses ImageBuffer::copyImage just to access native image buffer handles
https://bugs.webkit.org/show_bug.cgi?id=203884

Patch by Chris Lord <clord@igalia.com> on 2019-11-06
Reviewed by Carlos Garcia Campos.

The Cairo graphics backend uses ImageBuffer::copyImage(DontCopyBackingStore) frequently just to access
the native image pointer. This makes several functions unusable off-main-thread, so add an accessor
function to avoid doing this.

No new tests -- no change in behavior.

* platform/graphics/ImageBuffer.h:
* platform/graphics/cairo/CairoOperations.cpp:
(WebCore::Cairo::drawShadowLayerBuffer):
(WebCore::Cairo::drawShadowImage):
(WebCore::Cairo::fillShadowBuffer):
* platform/graphics/cairo/GraphicsContextCairo.cpp:
(WebCore::GraphicsContext::clipToImageBuffer):
* platform/graphics/cairo/GraphicsContextImplCairo.cpp:
(WebCore::GraphicsContextImplCairo::clipToImageBuffer):
* platform/graphics/cairo/ImageBufferCairo.cpp:
(WebCore::ImageBuffer::nativeImage const):

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

5 weeks ago[GTK][WPE] Add libfdk-aac-dev to the install-dependencies script
commit-queue@webkit.org [Wed, 6 Nov 2019 10:34:18 +0000 (10:34 +0000)]
[GTK][WPE] Add libfdk-aac-dev to the install-dependencies script
https://bugs.webkit.org/show_bug.cgi?id=203812

Patch by Philippe Normand <philn@igalia.com> on 2019-11-06
Reviewed by Carlos Garcia Campos.

* gtk/install-dependencies:
* wpe/install-dependencies:

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

5 weeks agoREGRESSION(r249428): [GStreamer] VP9 video rendered green
carlosgc@webkit.org [Wed, 6 Nov 2019 09:39:01 +0000 (09:39 +0000)]
REGRESSION(r249428): [GStreamer] VP9 video rendered green
https://bugs.webkit.org/show_bug.cgi?id=201422
<rdar://problem/55945741>

Patch by Philippe Normand <philn@igalia.com> on 2019-11-06
Reviewed by Carlos Garcia Campos.

Enable the texture upload GStreamer meta code path. Until
GStreamer 1.16.2 this workaround is needed to fix VP9 (vp9dec)
rendering. For downstream users cherry-picking the corresponding
GStreamer patch[0], an environment variable can be set to bypass
the reintroduced slow color conversion: $WEBKIT_GST_NO_RGBA_CONVERSION.

[0] https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/commit/8d32de090554cf29fe359f83aa46000ba658a693

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

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

5 weeks agoThere is no need to clean the content type header of a request if it is null
youenn@apple.com [Wed, 6 Nov 2019 08:28:28 +0000 (08:28 +0000)]
There is no need to clean the content type header of a request if it is null
https://bugs.webkit.org/show_bug.cgi?id=203853

Reviewed by Geoffrey Garen.

No change of behavior.

* loader/CrossOriginAccessControl.cpp:
(WebCore::cleanHTTPRequestHeadersForAccessControl):
Stop early if content type is null so that we do not log an error that is not a real error.

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

5 weeks ago[GTK] Implement support for Pointer Lock API
carlosgc@webkit.org [Wed, 6 Nov 2019 08:06:32 +0000 (08:06 +0000)]
[GTK] Implement support for Pointer Lock API
https://bugs.webkit.org/show_bug.cgi?id=202956

Reviewed by Carlos Alberto Lopez Perez.

.:

Enable Pointer Lock for GTK port.

* Source/cmake/OptionsGTK.cmake:

Source/WebKit:

Add platform specific implementation of Pointer Lock for the GTK port.

* PlatformGTK.cmake: Generate code for pointer-constraints and relative-pointer Wayland protocols.
* Shared/NativeWebMouseEvent.h: Add optional mouse movement delta.
* Shared/gtk/NativeWebMouseEventGtk.cpp:
(WebKit::NativeWebMouseEvent::NativeWebMouseEvent): Pass movement delta to WebEventFactory::createWebMouseEvent().
* Shared/gtk/WebEventFactory.cpp:
(WebKit::WebEventFactory::createWebMouseEvent): Initialize deltaX and deltaY for motion events using the received delta.
* Shared/gtk/WebEventFactory.h: Add optional mouse movement delta.
* SourcesGTK.txt: Add new files to compilation.
* UIProcess/API/glib/WebKitUIClient.cpp: Add implementation for requestPointerLock and didLosePointerLock.
* UIProcess/API/glib/WebKitWebView.cpp:
(webkitWebViewRequestPointerLock): Call webkitWebViewBaseRequestPointerLock().
(webkitWebViewDidLosePointerLock): Call webkitWebViewBaseDidLosePointerLock().
* UIProcess/API/glib/WebKitWebViewPrivate.h:
* UIProcess/API/gtk/WebKitWebViewBase.cpp:
(webkitWebViewBaseDispose): Unlock the pointer and release the PointerLockManager.
(webkitWebViewBaseHandleMouseEvent): Initialize the mouse movement delta for motion events and save the current event.
(webkitWebViewBaseMotionNotifyEvent): Let PointerLockManager handle motion events while pointer is locked.
(webkitWebViewBaseRequestPointerLock): Create a PointerLockManager and request it to lock the pointer.
(webkitWebViewBaseDidLosePointerLock): Request PointerLockManager to unlock the pointer.
* UIProcess/API/gtk/WebKitWebViewBasePrivate.h:
* UIProcess/gtk/PointerLockManager.cpp: Added.
(WebKit::PointerLockManager::create):
(WebKit::PointerLockManager::PointerLockManager):
(WebKit::PointerLockManager::~PointerLockManager):
(WebKit::PointerLockManager::lock):
(WebKit::PointerLockManager::unlock):
(WebKit::PointerLockManager::handleMotion):
* UIProcess/gtk/PointerLockManager.h: Added.
(WebKit::PointerLockManager::didReceiveMotionEvent):
* UIProcess/gtk/PointerLockManagerWayland.cpp: Added.
(WebKit::PointerLockManagerWayland::PointerLockManagerWayland):
(WebKit::PointerLockManagerWayland::~PointerLockManagerWayland):
(WebKit::PointerLockManagerWayland::lock):
(WebKit::PointerLockManagerWayland::unlock):
* UIProcess/gtk/PointerLockManagerWayland.h: Added.
* UIProcess/gtk/PointerLockManagerX11.cpp: Added.
(WebKit::PointerLockManagerX11::PointerLockManagerX11):
(WebKit::PointerLockManagerX11::didReceiveMotionEvent):
* UIProcess/gtk/PointerLockManagerX11.h: Added.

Tools:

* WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:
(WTR::getGDKKeySymForKeyRef): Handle escape key.

LayoutTests:

Unskip Pointer Lock tests and update expectations for tests still failing.

* platform/gtk/TestExpectations:
* platform/gtk/pointer-lock/mouse-event-delivery-expected.txt: Added.

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

5 weeks ago[iOS] Scroll position does not get restored when doing a history navigation while...
cdumez@apple.com [Wed, 6 Nov 2019 06:41:51 +0000 (06:41 +0000)]
[iOS] Scroll position does not get restored when doing a history navigation while the reader view is shown
https://bugs.webkit.org/show_bug.cgi?id=203871
<rdar://problem/56564603>

Reviewed by Tim Horton.

Source/WebKit:

Previously, attempts to restore the scroll position on the web view while it is being dynamically resized
would get ignored. Instead, we now delay restoring the scroll position until after the view is resized.

* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _restorePageScrollPosition:scrollOrigin:previousObscuredInset:scale:]):
(-[WKWebView _restorePageStateToUnobscuredCenter:scale:]):

Tools:

Add API test coverage.

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKit/simple-tall.html:
* TestWebKitAPI/Tests/WebKitCocoa/RestoreScrollPosition.mm: Added.
(TestWebKitAPI::TEST):

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

5 weeks agoWTF::RunLoop should not depend on isMainThread() idiom.
mark.lam@apple.com [Wed, 6 Nov 2019 06:36:28 +0000 (06:36 +0000)]
WTF::RunLoop should not depend on isMainThread() idiom.
https://bugs.webkit.org/show_bug.cgi?id=203873
<rdar://problem/56524251>

Reviewed by Saam Barati, Ryosuke Niwa, and Devin Rousso.

Source/JavaScriptCore:

* inspector/JSGlobalObjectScriptDebugServer.cpp:
(Inspector::JSGlobalObjectScriptDebugServer::runLoopMode):
* inspector/JSGlobalObjectScriptDebugServer.h:
* inspector/remote/cocoa/RemoteConnectionToTargetCocoa.mm:
(Inspector::RemoteTargetInitializeGlobalQueue):
(Inspector::RemoteConnectionToTarget::setupRunLoop):
(Inspector::RemoteConnectionToTarget::teardownRunLoop):

Source/WTF:

The isMainThread() idiom is only meaningful for WebCore.  It is less meaningful
for JSC since a VM instance can be entered from multiple threads, as long as only
one thread enters it at any time.  Hence, the concept of a main thread doesn't
make sense at the JSC level.

Since r251036, we started using a WTF::String to represent the RunLoop mode.
This caused problems for JSC clients when USE(CF) since it necessitated the use of
StringWrapperCFAllocator to track the life cycle of the CFStringRef generated from
the WTF::String.

To fix this problem, we should restore the original behavior of using CFStringRefs
as the RunLoop mode token.

* wtf/RunLoop.h:
(WTF::RunLoop::cycle): Deleted.
* wtf/cf/RunLoopCF.cpp:
(WTF::RunLoop::cycle):
* wtf/generic/RunLoopGeneric.cpp:
(WTF::RunLoop::cycle):
* wtf/glib/RunLoopGLib.cpp:
(WTF::RunLoop::cycle):
* wtf/win/RunLoopWin.cpp:
(WTF::RunLoop::cycle):

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

5 weeks agoLayout test website-data-removal-for-site-navigated-to-with-link-decoration.html...
katherine_cheney@apple.com [Wed, 6 Nov 2019 05:17:37 +0000 (05:17 +0000)]
Layout test website-data-removal-for-site-navigated-to-with-link-decoration.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=203706
Source/WebKit:

<rdar://problem/56801615>

Reviewed by Chris Dumez.

No new tests, this change is tested by the existing resourceLoadStatistics
tests.

This test started flaking when a new memory store was being created
between tests to maintain consistency. The call to grandfatherExistingWebsiteData
from populateMemoryStoreFromDisk in the persistent storage was
async, causing a race condition that led to occasional failures.
Adding a completion handler and changing the callsite of
populateMemoryStoreFromDisk should fix this problem.

* NetworkProcess/Classifier/ResourceLoadStatisticsPersistentStorage.cpp:
(WebKit::ResourceLoadStatisticsPersistentStorage::populateMemoryStoreFromDisk):
* NetworkProcess/Classifier/ResourceLoadStatisticsPersistentStorage.h:
* NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::populateMemoryStoreFromDisk):

LayoutTests:

<rdar://problem/56801615>

Reviewed by Chris Dumez.

Since the state is reset between tests, the call to
setUseITPDatabase(false) is redundant.

* http/tests/resourceLoadStatistics/log-cross-site-load-with-link-decoration.html:
* http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-link-decoration.html:

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

5 weeks agoIntegrate visualViewport's resize event with HTML5 event loop
rniwa@webkit.org [Wed, 6 Nov 2019 03:56:05 +0000 (03:56 +0000)]
Integrate visualViewport's resize event with HTML5 event loop
https://bugs.webkit.org/show_bug.cgi?id=203842

Reviewed by Simon Fraser.

Source/WebCore:

Integrate the visual viewport API's resize event with HTML5 event loop
as intended in r251867.

Test: fast/events/resize-subframe-in-rendering-update.html

* dom/DocumentEventQueue.cpp:
(WebCore::DocumentEventQueue::enqueueResizeEvent): Deleted.
* dom/DocumentEventQueue.h:
* page/VisualViewport.cpp:
(WebCore::VisualViewport::update):
(WebCore::VisualViewport::enqueueResizeEvent): Deleted.

LayoutTests:

Added a test to make sure resize event fires on visualViewport in the frame tree order.

* fast/visual-viewport/visual-viewport-resize-subframe-in-rendering-update-expected.txt: Added.
* fast/visual-viewport/visual-viewport-resize-subframe-in-rendering-update.html: Added.

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

5 weeks ago[WebGL] Update WebGL 1 tests to prep for WebGL Conformance bot
justin_fan@apple.com [Wed, 6 Nov 2019 03:01:19 +0000 (03:01 +0000)]
[WebGL] Update WebGL 1 tests to prep for WebGL Conformance bot
https://bugs.webkit.org/show_bug.cgi?id=203763

Reviewed by Dean Jackson.

Remove the 1.0.2 suite and update 1.0.3 suite, which supercedes the former.

* webgl/1.0.2: Removed.
* webgl/1.0.3: Updated to latest Khronos version and expectations to match. Unskip all non-timeout/non-crashing tests.

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

5 weeks agoUnreviewed, rolling out r251908.
Hironori.Fujii@sony.com [Wed, 6 Nov 2019 02:02:48 +0000 (02:02 +0000)]
Unreviewed, rolling out r251908.

This workaround is not needed after r252086.

Reverted changeset:

"[WinCairo][Clang] Unreviewed build fix"
https://bugs.webkit.org/show_bug.cgi?id=203663
https://trac.webkit.org/changeset/251908

* workers/service/context/ServiceWorkerThreadProxy.cpp:
(WebCore::ServiceWorkerThreadProxy::identifier const): Deleted.
* workers/service/context/ServiceWorkerThreadProxy.h:

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

5 weeks agoTemporarily turn off NSURLSession isolation
wilander@apple.com [Wed, 6 Nov 2019 01:38:59 +0000 (01:38 +0000)]
Temporarily turn off NSURLSession isolation
https://bugs.webkit.org/show_bug.cgi?id=201822

Reviewed by Chris Dumez.

Source/WebKit:

Existing tests skipped.

Re-enabling it is tracked in rdar://problem/56921584.

* NetworkProcess/cache/NetworkCacheStorage.h:
    Bumps the version to force a clean cache.
* NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
(WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):
    Skips setting needsIsolatedSession.

LayoutTests:

Re-enabling it is tracked in rdar://problem/56921584.

* platform/wk2/TestExpectations:
    Skipped the associated tests.

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

5 weeks ago[WebAssembly] Allow tiering up from LLInt to BBQ
tzagallo@apple.com [Wed, 6 Nov 2019 01:30:41 +0000 (01:30 +0000)]
[WebAssembly] Allow tiering up from LLInt to BBQ
https://bugs.webkit.org/show_bug.cgi?id=203793

Reviewed by Yusuke Suzuki.

Even though the interpreter was overall neutral on throughput, it's still a regression in pathological
cases where massive functions spend too long in the LLInt while compiling the function with OMG. This
patch makes it so that the LLInt can tier up to BBQ from the prologue, while still tiering up to OMG from
from loops. This is a huge speed up on the tsf-wasm subtest of JS2:

# BBQ -> OMG
Startup: 100.680
Runtime: 1.852
Score: 13.654

# LLInt -> OMG
Startup: 378.205
Runtime: 1.291
Score: 22.082

# LLInt -> BBQ -> OMG
Startup: 405.983
Runtime: 2.311
Score: 30.623

* runtime/Options.cpp:
(JSC::overrideDefaults):
* runtime/OptionsList.h:
* wasm/WasmBBQPlan.cpp:
(JSC::Wasm::BBQPlan::BBQPlan):
(JSC::Wasm::BBQPlan::work):
(JSC::Wasm::BBQPlan::compileFunction):
* wasm/WasmEntryPlan.cpp:
(JSC::Wasm::EntryPlan::EntryPlan):
* wasm/WasmEntryPlan.h:
* wasm/WasmLLIntTierUpCounter.h:
(JSC::Wasm::LLIntTierUpCounter::optimizeAfterWarmUp):
(JSC::Wasm::LLIntTierUpCounter::optimizeSoon):
* wasm/WasmOMGPlan.cpp:
(JSC::Wasm::OMGPlan::work):
* wasm/WasmSlowPaths.cpp:
(JSC::LLInt::jitCompileAndSetHeuristics):

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

5 weeks agoREGRESSION(r252031): layout tests fail to run in non apple ports after r252031 (Follo...
jbedard@apple.com [Tue, 5 Nov 2019 22:59:56 +0000 (22:59 +0000)]
REGRESSION(r252031): layout tests fail to run in non apple ports after r252031 (Follow-up fix)
https://bugs.webkit.org/show_bug.cgi?id=203844

Rubber-stamped by Aakash Jain.

Remove infinite loop for Windows.

* Scripts/webkitpy/port/win.py:
(WinPort._path_to_default_image_diff):
(WinPort._path_to_image_diff): Deleted.

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

5 weeks ago.:
Hironori.Fujii@sony.com [Tue, 5 Nov 2019 22:57:46 +0000 (22:57 +0000)]
.:
[Win][CMake] Build WebCore as an OBJECT library for WinCairo port
https://bugs.webkit.org/show_bug.cgi?id=203663

Reviewed by Ross Kirsling.

WebCore is using __declspec(dllexport) to export symbols, but it
is built as a static library rather than a DLL. If any symbols in
an object file aren't referenced from WebKit.dll, they won't be
included in WebKit.dll.

This issue can be solved either by using OBJECT library for
WebCore or using /WHOLEARCHIVE:WebCore.lib for WebKit.

This change takes OBJECT library approach becuase it doesn't
generate unnecessary static libs (WebCore.lib) and it's already
used for non-unified source builds for the library size issue (Bug
196866 Comment 4).

However, AppleWin can't use it because the Apple internal builds
need to generate the static libs and OBJECT library doesn't work
well with makesafeseh.obj.

* Source/cmake/OptionsWin.cmake: Removed code overriding library types.
* Source/cmake/OptionsWinCairo.cmake: Use OBJECT library types for WebCore and WebCoreTestSupport.

Source/WebCore:
[Win][CMake] Build WebCore as an OBJECT library unless Apple internal builds
https://bugs.webkit.org/show_bug.cgi?id=203663

Reviewed by Ross Kirsling.

No behavioral changes.

* CMakeLists.txt: Changed WebCoreTestSupport not to link with
WebCore for Windows. Because WebKit.dll exports WebCore symbols,
they will be duplicated with WebCore.

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

5 weeks agoEliminate mach lookup to cfprefsd on process startup
pvollan@apple.com [Tue, 5 Nov 2019 22:22:17 +0000 (22:22 +0000)]
Eliminate mach lookup to cfprefsd on process startup
https://bugs.webkit.org/show_bug.cgi?id=202866

Reviewed by Geoffrey Garen.

Currently, the WebContent and Networking process is calling CFBundleGetValueForInfoDictionaryKey on startup
to get the entry point function name into the WebKit bundle. This causes a mach lookup to cfprefsd which
should be avoided. Instead, we can send the service name as part of the bootstrap message when the UI process
is starting the process, and have the new process read this value from the message on startup to determine
the name of the entry point. This is possibly also an improvement in launch time, since we avoid reading a
value from Info.plist.

* NetworkProcess/EntryPoint/Cocoa/XPCService/NetworkService/Info-OSX.plist:
* NetworkProcess/EntryPoint/Cocoa/XPCService/NetworkService/Info-iOS.plist:
* PluginProcess/EntryPoint/Cocoa/XPCService/PluginService.64.Info.plist:
* Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceMain.mm:
(WebKit::XPCServiceEventHandler):
* UIProcess/Launcher/mac/ProcessLauncherMac.mm:
(WebKit::ProcessLauncher::launchProcess):
* WebProcess/EntryPoint/Cocoa/XPCService/WebContentService/Info-OSX.plist:
* WebProcess/EntryPoint/Cocoa/XPCService/WebContentService/Info-iOS.plist:

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

5 weeks ago[iOS] Add logging and telemetry to mach services believed to be unused
pvollan@apple.com [Tue, 5 Nov 2019 22:05:48 +0000 (22:05 +0000)]
[iOS] Add logging and telemetry to mach services believed to be unused
https://bugs.webkit.org/show_bug.cgi?id=203831

Reviewed by Geoffrey Garen.

The sandbox rules for mach services believed to be unused should have logging and telemetry added to confirm
whether the assumption is correct.

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

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

5 weeks agoREGRESSION (r251930): Flaky WK1 crash in printing/pseudo-class-outside-page.html
rniwa@webkit.org [Tue, 5 Nov 2019 21:54:57 +0000 (21:54 +0000)]
REGRESSION (r251930): Flaky WK1 crash in printing/pseudo-class-outside-page.html
https://bugs.webkit.org/show_bug.cgi?id=203855

Reviewed by Simon Fraser.

Exit early when executing media queries removes FrameView.

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

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

5 weeks agoAdding logging to diagnose crashes resulting from provisional document loader unexpec...
rniwa@webkit.org [Tue, 5 Nov 2019 21:47:20 +0000 (21:47 +0000)]
Adding logging to diagnose crashes resulting from provisional document loader unexpectedly being nullptr
https://bugs.webkit.org/show_bug.cgi?id=203837

Reviewed by Geoffrey Garen.

Added various logging for DocumentLoader and FrameLoader to figure out why
FrameLoader::m_provisionalDocumentLoader can be nullptr in some cases.

* loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::setRequest):
(WebCore::DocumentLoader::willSendRequest):
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::setupForReplace):
(WebCore::FrameLoader::clearProvisionalLoadForPolicyCheck):
(WebCore::FrameLoader::stopAllLoaders):
(WebCore::FrameLoader::stopForBackForwardCache):
(WebCore::FrameLoader::clearProvisionalLoad):
(WebCore::FrameLoader::transitionToCommitted):
(WebCore::FrameLoader::continueFragmentScrollAfterNavigationPolicy):
(WebCore::FrameLoader::continueLoadAfterNavigationPolicy):

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

5 weeks ago[css-lists] Implement list-style-type: <string>
obrufau@igalia.com [Tue, 5 Nov 2019 21:41:48 +0000 (21:41 +0000)]
[css-lists] Implement list-style-type: <string>
https://bugs.webkit.org/show_bug.cgi?id=167729

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

Some tests pass now.

* web-platform-tests/css/css-lists/parsing/list-style-type-computed-expected.txt:
* web-platform-tests/css/css-lists/parsing/list-style-type-valid-expected.txt:

Source/WebCore:

This patch extends the syntax of the list-style-type property to accept
arbitrary string values in order to customize the marker contents.

When a string is specified for list-style-type, the patch sets it to a
special ListStyleType::String, and the string value is stored in an
extra field.

Tests: imported/w3c/web-platform-tests/css/css-lists/list-style-type-string-001a.html
       imported/w3c/web-platform-tests/css/css-lists/list-style-type-string-001b.html
       imported/w3c/web-platform-tests/css/css-lists/list-style-type-string-002.html
       imported/w3c/web-platform-tests/css/css-lists/list-style-type-string-003.html
       imported/w3c/web-platform-tests/css/css-lists/list-style-type-string-004.html
       imported/w3c/web-platform-tests/css/css-lists/list-style-type-string-005a.html
       imported/w3c/web-platform-tests/css/css-lists/list-style-type-string-005b.html
       imported/w3c/web-platform-tests/css/css-lists/list-style-type-string-006.html
       imported/w3c/web-platform-tests/css/css-lists/list-style-type-string-007.html
       imported/w3c/web-platform-tests/css/css-lists/parsing/list-style-type-computed.html
       imported/w3c/web-platform-tests/css/css-lists/parsing/list-style-type-valid.html

Some tests fail because mixed-bidi is not supported in markers
(https://bugs.webkit.org/show_bug.cgi?id=202849).

* css/CSSComputedStyleDeclaration.cpp:
(WebCore::ComputedStyleExtractor::valueForPropertyInStyle):
* css/CSSPrimitiveValueMappings.h:
(WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
* css/CSSProperties.json:
* css/parser/CSSParserFastPaths.cpp:
(WebCore::CSSParserFastPaths::isPartialKeywordPropertyID):
* css/parser/CSSParserFastPaths.h:
* css/parser/CSSPropertyParser.cpp:
(WebCore::CSSPropertyParser::parseSingleValue):
* rendering/RenderListMarker.cpp:
(WebCore::effectiveListMarkerType):
(WebCore::listMarkerSuffix):
(WebCore::listMarkerText):
(WebCore::RenderListMarker::styleDidChange):
(WebCore::RenderListMarker::paint):
(WebCore::RenderListMarker::updateContent):
(WebCore::RenderListMarker::computePreferredLogicalWidths):
(WebCore::RenderListMarker::updateMargins):
(WebCore::RenderListMarker::suffix const):
(WebCore::RenderListMarker::getRelativeMarkerRect):
* rendering/style/CounterContent.h:
(WebCore::CounterContent::CounterContent):
* rendering/style/RenderStyle.h:
(WebCore::RenderStyle::listStyleStringValue const):
(WebCore::RenderStyle::setListStyleStringValue):
(WebCore::RenderStyle::initialListStyleStringValue):
* rendering/style/RenderStyleConstants.cpp:
(WebCore::operator<<):
* rendering/style/RenderStyleConstants.h:
* rendering/style/StyleRareInheritedData.cpp:
(WebCore::StyleRareInheritedData::StyleRareInheritedData):
(WebCore::StyleRareInheritedData::operator== const):
* rendering/style/StyleRareInheritedData.h:
* style/StyleBuilderCustom.h:
(WebCore::Style::BuilderCustom::applyInheritListStyleType):
(WebCore::Style::BuilderCustom::applyInitialListStyleType):
(WebCore::Style::BuilderCustom::applyValueListStyleType):

LayoutTests:

Most tests pass now, but some still fail because mixed-bidi is not
supported in markers (https://bugs.webkit.org/show_bug.cgi?id=202849).

iOS and Mac have some extra failures due to subpixel differences for the
marker position.

* TestExpectations:
* platform/ios/TestExpectations:
* platform/mac/TestExpectations:

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

5 weeks agoEWS should report test failures from clean-tree to results.webkit.org
aakash_jain@apple.com [Tue, 5 Nov 2019 21:36:43 +0000 (21:36 +0000)]
EWS should report test failures from clean-tree to results.webkit.org
https://bugs.webkit.org/show_bug.cgi?id=203829

Reviewed by Jonathan Bedard.

* BuildSlaveSupport/ews-build/loadConfig.py:
(loadBuilderConfig):
* BuildSlaveSupport/ews-build/steps.py:
(RunWebKitTests.__init__):
(RunWebKitTestsWithoutPatch.start):
(RunAPITestsWithoutPatch.start):
* BuildSlaveSupport/ews-build/steps_unittest.py: Added and updated unit-tests.

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

5 weeks agoContent can disappear with a combination of <video> with controls and clipping
simon.fraser@apple.com [Tue, 5 Nov 2019 20:11:32 +0000 (20:11 +0000)]
Content can disappear with a combination of <video> with controls and clipping
https://bugs.webkit.org/show_bug.cgi?id=203834
Source/WebCore:

rdar://problem/56559648

Reviewed by Zalan Bujtas.

<video> with controls triggered a bug where a backing-sharing layer also claimed
that it didn't need any backing store. RenderLayerCompositor::requiresOwnBackingStore()
could early-return with 'false' if a layer had an indirect compositing reason of "Clipping",
while also backing-sharing. We need to check for backing-sharing first.

Test: compositing/shared-backing/clipping-and-shared-backing.html

* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::setBackingSharingLayers):
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::requiresOwnBackingStore const):

LayoutTests:

Reviewed by Zalan Bujtas.

* compositing/shared-backing/clipping-and-shared-backing-expected.html: Added.
* compositing/shared-backing/clipping-and-shared-backing.html: Added.

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

5 weeks agoDisabled SVG shapes should not be hit
commit-queue@webkit.org [Tue, 5 Nov 2019 20:10:01 +0000 (20:10 +0000)]
Disabled SVG shapes should not be hit
https://bugs.webkit.org/show_bug.cgi?id=200140

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

LayoutTests/imported/w3c:

* web-platform-tests/svg/import/types-dom-08-f-manual.svg:
This is the expectation of FireFox as well.

* web-platform-tests/svg/shapes/scripted/disabled-shapes-not-hit-expected.txt:

Source/WebCore:

The fill and the stroke rectangles should not be computed for disabled
SVG shapes.

The existing code may calculate the root's boundary: at(0, 0) size 0x0
while one of its children boundary is calculated at: (47,47) size 6x6.
See circle-01-expected.txt.

* rendering/svg/RenderSVGEllipse.cpp:
(WebCore::RenderSVGEllipse::updateShapeFromElement):
* rendering/svg/RenderSVGRect.cpp:
(WebCore::RenderSVGRect::updateShapeFromElement):
* rendering/svg/RenderSVGShape.cpp:
(WebCore::RenderSVGShape::fillContains):
(WebCore::RenderSVGShape::strokeContains):

LayoutTests:

* platform/gtk/imported/w3c/web-platform-tests/svg/import/animate-elem-32-t-manual-expected.txt:
* platform/gtk/imported/w3c/web-platform-tests/svg/import/shapes-circle-02-t-manual-expected.txt:
* platform/gtk/imported/w3c/web-platform-tests/svg/import/shapes-ellipse-02-t-manual-expected.txt:
* platform/gtk/imported/w3c/web-platform-tests/svg/import/shapes-intro-01-t-manual-expected.txt:
* platform/gtk/imported/w3c/web-platform-tests/svg/import/shapes-rect-02-t-manual-expected.txt:
* platform/gtk/imported/w3c/web-platform-tests/svg/shapes/circle-01-expected.txt:
* platform/gtk/imported/w3c/web-platform-tests/svg/shapes/ellipse-04-expected.txt:
* platform/gtk/imported/w3c/web-platform-tests/svg/shapes/ellipse-09-expected.txt:
* platform/gtk/imported/w3c/web-platform-tests/svg/shapes/rect-05-expected.txt:
* platform/gtk/svg/W3C-SVG-1.1/animate-elem-32-t-expected.txt:
* platform/gtk/svg/W3C-SVG-1.1/shapes-intro-01-t-expected.txt:
* platform/gtk/svg/W3C-SVG-1.1/shapes-rect-02-t-expected.txt:
* platform/ios-simulator/imported/w3c/web-platform-tests/svg/import/animate-elem-32-t-manual-expected.txt:
* platform/ios-simulator/imported/w3c/web-platform-tests/svg/import/shapes-circle-02-t-manual-expected.txt:
* platform/ios-simulator/imported/w3c/web-platform-tests/svg/import/shapes-ellipse-02-t-manual-expected.txt:
* platform/ios-simulator/imported/w3c/web-platform-tests/svg/import/shapes-intro-01-t-manual-expected.txt:
* platform/ios-simulator/imported/w3c/web-platform-tests/svg/import/shapes-rect-02-t-manual-expected.txt:
* platform/ios-simulator/imported/w3c/web-platform-tests/svg/import/types-dom-08-f-manual-expected.txt:
* platform/ios-simulator/imported/w3c/web-platform-tests/svg/shapes/circle-01-expected.txt:
* platform/ios-simulator/imported/w3c/web-platform-tests/svg/shapes/ellipse-04-expected.txt:
* platform/ios-simulator/imported/w3c/web-platform-tests/svg/shapes/ellipse-09-expected.txt:
* platform/ios-simulator/imported/w3c/web-platform-tests/svg/shapes/rect-05-expected.txt:
* platform/ios-simulator/imported/w3c/web-platform-tests/svg/shapes/reftests/disabled-shapes-01-expected.txt:
* platform/ios/svg/W3C-SVG-1.1/animate-elem-32-t-expected.txt:
* platform/ios/svg/W3C-SVG-1.1/shapes-circle-02-t-expected.txt:
* platform/ios/svg/W3C-SVG-1.1/shapes-ellipse-02-t-expected.txt:
* platform/ios/svg/W3C-SVG-1.1/shapes-intro-01-t-expected.txt:
* platform/ios/svg/W3C-SVG-1.1/shapes-rect-02-t-expected.txt:
* platform/mac/imported/w3c/web-platform-tests/svg/import/animate-elem-32-t-manual-expected.txt:
* platform/mac/imported/w3c/web-platform-tests/svg/import/shapes-circle-02-t-manual-expected.txt:
* platform/mac/imported/w3c/web-platform-tests/svg/import/shapes-ellipse-02-t-manual-expected.txt:
* platform/mac/imported/w3c/web-platform-tests/svg/import/shapes-intro-01-t-manual-expected.txt:
* platform/mac/imported/w3c/web-platform-tests/svg/import/shapes-rect-02-t-manual-expected.txt:
* platform/mac/imported/w3c/web-platform-tests/svg/import/types-dom-08-f-manual-expected.txt:
* platform/mac/imported/w3c/web-platform-tests/svg/shapes/circle-01-expected.txt:
* platform/mac/imported/w3c/web-platform-tests/svg/shapes/ellipse-04-expected.txt:
* platform/mac/imported/w3c/web-platform-tests/svg/shapes/ellipse-09-expected.txt:
* platform/mac/imported/w3c/web-platform-tests/svg/shapes/rect-05-expected.txt:
* platform/mac/imported/w3c/web-platform-tests/svg/shapes/reftests/disabled-shapes-01-expected.txt:
* platform/mac/svg/W3C-SVG-1.1/animate-elem-32-t-expected.txt:
* platform/mac/svg/W3C-SVG-1.1/shapes-circle-02-t-expected.txt:
* platform/mac/svg/W3C-SVG-1.1/shapes-ellipse-02-t-expected.txt:
* platform/mac/svg/W3C-SVG-1.1/shapes-intro-01-t-expected.txt:
* platform/mac/svg/W3C-SVG-1.1/shapes-rect-02-t-expected.txt:
* platform/win/svg/W3C-SVG-1.1/animate-elem-32-t-expected.txt:
* platform/win/svg/W3C-SVG-1.1/shapes-circle-02-t-expected.txt:
* platform/win/svg/W3C-SVG-1.1/shapes-ellipse-02-t-expected.txt:
* platform/win/svg/W3C-SVG-1.1/shapes-intro-01-t-expected.txt:
* platform/win/svg/W3C-SVG-1.1/shapes-rect-02-t-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/svg/import/animate-elem-32-t-manual-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/svg/import/shapes-circle-02-t-manual-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/svg/import/shapes-ellipse-02-t-manual-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/svg/import/shapes-intro-01-t-manual-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/svg/import/shapes-rect-02-t-manual-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/svg/shapes/circle-01-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/svg/shapes/ellipse-04-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/svg/shapes/ellipse-09-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/svg/shapes/rect-05-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/svg/shapes/reftests/disabled-shapes-01-expected.txt:
* platform/wpe/svg/W3C-SVG-1.1/animate-elem-32-t-expected.txt:
* platform/wpe/svg/W3C-SVG-1.1/shapes-circle-02-t-expected.txt:
* platform/wpe/svg/W3C-SVG-1.1/shapes-ellipse-02-t-expected.txt:
* platform/wpe/svg/W3C-SVG-1.1/shapes-intro-01-t-expected.txt:

* svg/custom/getBBox-js-circle-zerodimension-expected.txt: Removed.
* svg/custom/getBBox-js-circle-zerodimension.html: Removed.
* svg/custom/getBBox-js-ellipse-zerodimension-expected.txt: Removed.
* svg/custom/getBBox-js-ellipse-zerodimension.html: Removed.
* svg/custom/getBBox-js-rect-zerodimension-expected.txt: Removed.
* svg/custom/getBBox-js-rect-zerodimension.html: Removed.
These tests were added in r169522. They succeed in Safari and Chrome but
they fail in FireFox. The issue of calculating getBBox was discussed in:
https://lists.w3.org/Archives/Public/www-svg/2012Aug/0014.html. But no
resolution was reached.

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

5 weeks agoAdd definitions of ANSI colors for colorful log output
commit-queue@webkit.org [Tue, 5 Nov 2019 19:53:49 +0000 (19:53 +0000)]
Add definitions of ANSI colors for colorful log output
https://bugs.webkit.org/show_bug.cgi?id=203805

Patch by Tuomas Karkkainen <tuomas.webkit@apple.com> on 2019-11-05
Reviewed by Saam Barati.

* WTF.xcodeproj/project.pbxproj:
* wtf/AnsiColors.h: Added.
* wtf/CMakeLists.txt:

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