Timeline



Nov 11, 2019:

6:56 PM Changeset in webkit [252354] by achristensen@apple.com
  • 9 edits in trunk

Add SPI to access a WebsiteDataStore without instantiating it, and its configuration
https://bugs.webkit.org/show_bug.cgi?id=204089

Reviewed by Tim Horton.

Source/WebKit:

Calling WKWebViewConfiguration.websiteDataStore instantiates the default data store.
We need a way to query if it has been set but not instantiate anything if it hasn't.
We also need a way to access the configuration used to create a WKWebsiteDataStore like we do with WKWebView.
These have been requested to fix <rdar://problem/57091216> and I think they're a good idea in general.

Covered by API tests.

  • UIProcess/API/Cocoa/WKWebViewConfiguration.mm:

(-[WKWebViewConfiguration _websiteDataStoreIfExists]):

  • UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
  • UIProcess/API/Cocoa/WKWebsiteDataStore.mm:

(-[WKWebsiteDataStore _setDelegate:]):
(-[WKWebsiteDataStore set_delegate:]):
(-[WKWebsiteDataStore _configuration]):

  • UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
  • UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp:

(WebKit::WebsiteDataStoreConfiguration::copy const):
(WebKit::WebsiteDataStoreConfiguration::copy): Deleted.

  • UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm:

(TEST):

5:59 PM Changeset in webkit [252353] by Simon Fraser
  • 8 edits
    6 adds in trunk

Captcha images render as blank white space
https://bugs.webkit.org/show_bug.cgi?id=204013
rdar://problem/50095458

Reviewed by Zalan Bujtas.
Source/WebCore:

If updating z-order lists adds layers to the paint-order lists that have
dirty bits, we need to propagate those dirty bits up the tree so that
later dirty bit propagation doesn't stop prematurely. This could happen
when content triggered visibility, and the missing dirty bits caused
subframe layers to not get parented, resulting in missing layers with reCaptcha.
We do this by accumulating dirty bits inside of collectLayers().

Test: compositing/visibility/visibility-change-in-subframe.html

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::rebuildZOrderLists):
(WebCore::RenderLayer::collectLayers):
(WebCore::RenderLayer::calculateClipRects const):

  • rendering/RenderLayer.h:
  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::computeCompositingRequirements):
(WebCore::RenderLayerCompositor::traverseUnchangedSubtree):
(WebCore::RenderLayerCompositor::layerTreeAsText): Log so that debugging test failures is easier.

LayoutTests:

New test. Fails in WK1 because of compositing timing differences in iframes in DRT which
has a non auto-displaying window.

  • compositing/scrolling/async-overflow-scrolling/layer-for-negative-z-in-scroller-expected.txt: Progression.
  • compositing/visibility/resources/become-composited.html: Added.
  • compositing/visibility/resources/frame-with-visibility-change.html: Added.
  • compositing/visibility/visibility-change-in-subframe-expected.txt: Added.
  • compositing/visibility/visibility-change-in-subframe.html: Added.
  • platform/ios-wk2/compositing/scrolling/async-overflow-scrolling/layer-for-negative-z-in-scroller-expected.txt:
  • platform/ios-wk2/compositing/visibility/visibility-change-in-subframe-expected.txt: Added.
  • platform/mac-wk1/TestExpectations:
5:58 PM Changeset in webkit [252352] by pvollan@apple.com
  • 3 edits in trunk/Source/WebCore

Many legacy animation tests are timing out with VS2019
https://bugs.webkit.org/show_bug.cgi?id=204000

Reviewed by Brent Fulgham.

When compiling with VS2019, there is a compiler issue, where an Optional without a value is returned
when it should definitely have a value. Work around this issue by moving the local Optional value
when returning.

No new tests, covered by existing tests.

  • page/animation/ImplicitAnimation.cpp:

(WebCore::ImplicitAnimation::timeToNextService):

  • page/animation/KeyframeAnimation.cpp:

(WebCore::KeyframeAnimation::timeToNextService):

5:49 PM Changeset in webkit [252351] by sihui_liu@apple.com
  • 5 edits in trunk/Source/WebKit

Add size file for CacheStorage
https://bugs.webkit.org/show_bug.cgi?id=204027

Reviewed by Youenn Fablet.

Keep the CacheStorage size in a separate file so that we can get that value without waiting for Engine to
initialize and read caches from disk.

No behavior change as the file is not in use now.

  • NetworkProcess/cache/CacheStorageEngine.cpp:

(WebKit::CacheStorage::Engine::writeSizeFile):
(WebKit::CacheStorage::Engine::readSizeFile):

  • NetworkProcess/cache/CacheStorageEngine.h:
  • NetworkProcess/cache/CacheStorageEngineCaches.cpp:

(WebKit::CacheStorage::cachesSizeFilename):
(WebKit::CacheStorage::Caches::updateSizeFile):
(WebKit::CacheStorage::Caches::initializeSize):
(WebKit::CacheStorage::Caches::writeRecord):
(WebKit::CacheStorage::Caches::removeRecord):
(WebKit::CacheStorage::Caches::resetSpaceUsed):

  • NetworkProcess/cache/CacheStorageEngineCaches.h:
5:47 PM Changeset in webkit [252350] by rniwa@webkit.org
  • 2 edits in trunk/LayoutTests

iOS: fast/scrolling/ios/scrollTo-at-page-load.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=204062

Reviewed by Wenson Hsieh.

Wait until the next rendering update for a scroll event.`

  • fast/scrolling/ios/scrollTo-at-page-load.html:
5:35 PM Changeset in webkit [252349] by youenn@apple.com
  • 23 edits in trunk

DOMFormData should be available in workers
https://bugs.webkit.org/show_bug.cgi?id=176674

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

  • web-platform-tests/FileAPI/file/Worker-read-file-constructor.worker-expected.txt:
  • web-platform-tests/FileAPI/idlharness.worker-expected.txt:
  • web-platform-tests/FileAPI/url/sandboxed-iframe-expected.txt:
  • web-platform-tests/FileAPI/url/url-format.any.worker-expected.txt:
  • web-platform-tests/fetch/api/abort/serviceworker-intercepted.https-expected.txt:
  • web-platform-tests/fetch/api/request/request-cache-only-if-cached-expected.txt:
  • web-platform-tests/mimesniff/mime-types/parsing.any.worker-expected.txt:
  • web-platform-tests/xhr/access-control-and-redirects-async-same-origin-expected.txt:
  • web-platform-tests/xhr/access-control-preflight-async-header-denied-expected.txt:
  • web-platform-tests/xhr/access-control-preflight-async-method-denied-expected.txt:
  • web-platform-tests/xhr/access-control-preflight-async-not-supported-expected.txt:
  • web-platform-tests/xhr/access-control-preflight-sync-header-denied-expected.txt:
  • web-platform-tests/xhr/access-control-preflight-sync-method-denied-expected.txt:
  • web-platform-tests/xhr/access-control-preflight-sync-not-supported-expected.txt:
  • web-platform-tests/xhr/event-error.sub-expected.txt:
  • web-platform-tests/xhr/idlharness.any.worker-expected.txt:
  • web-platform-tests/xhr/send-conditional-cors-expected.txt:
  • web-platform-tests/workers/semantics/interface-objects/001.worker-expected.txt:

Source/WebCore:

Expose DOMFormData and File to workers.
Covered by existing tests.

  • Modules/beacon/NavigatorBeacon.cpp:

(WebCore::NavigatorBeacon::sendBeacon):

  • Modules/fetch/FetchBody.cpp:

(WebCore::FetchBody::bodyAsFormData const):

  • Modules/fetch/FetchBody.h:
  • Modules/fetch/FetchRequest.cpp:

(WebCore::FetchRequest::resourceRequest const):

  • fileapi/File.cpp:

(WebCore::File::computeNameAndContentType):
Isolate string as this might now get called from background threads.

  • fileapi/File.idl:
  • html/DOMFormData.cpp:

(WebCore::DOMFormData::DOMFormData):

  • html/DOMFormData.idl:
  • platform/network/FormData.cpp:

LayoutTests:

  • platform/mac/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.any.worker-expected.txt:
5:27 PM Changeset in webkit [252348] by youenn@apple.com
  • 23 edits in trunk

Fail cross-origin redirection loads in case of CORS with redirection URLs having credentials
https://bugs.webkit.org/show_bug.cgi?id=204036

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

  • web-platform-tests/cors/redirect-userinfo-expected.txt:
  • web-platform-tests/fetch/api/cors/cors-redirect-credentials.any-expected.txt:
  • web-platform-tests/fetch/api/cors/cors-redirect-credentials.any.worker-expected.txt:
  • web-platform-tests/fetch/api/redirect/redirect-location.any-expected.txt:
  • web-platform-tests/fetch/api/redirect/redirect-location.any.worker-expected.txt:
  • web-platform-tests/fetch/api/redirect/redirect-schemes-expected.txt:
  • web-platform-tests/fetch/api/redirect/redirect-to-dataurl.any-expected.txt:
  • web-platform-tests/fetch/api/redirect/redirect-to-dataurl.any.worker-expected.txt:
  • web-platform-tests/fetch/security/redirect-to-url-with-credentials.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/fetch-event-redirect.https-expected.txt:
  • web-platform-tests/xhr/access-control-and-redirects-async-expected.txt:

Source/WebCore:

Update checks in SubresourceLoader according networking process.
Make error messages consistent,
Test: http/tests/navigation/page-cache-mediastream.html

  • loader/CrossOriginAccessControl.cpp:

(WebCore::validateCrossOriginRedirectionURL):
(WebCore::isValidCrossOriginRedirectionURL): Deleted.

  • loader/CrossOriginAccessControl.h:
  • loader/SubresourceLoader.cpp:

(WebCore::SubresourceLoader::didReceiveResponse):
(WebCore::SubresourceLoader::checkRedirectionCrossOriginAccessControl):

Source/WebKit:

Implement https://fetch.spec.whatwg.org/#http-redirect-fetch steps 7 and 8.
Covered by updated tests.

  • NetworkProcess/NetworkLoadChecker.cpp:

(WebKit::NetworkLoadChecker::checkRedirection):

LayoutTests:

  • http/tests/security/shape-image-cors-redirect-error-message-logging-4-expected.txt:
  • http/tests/xmlhttprequest/access-control-and-redirects-async-expected.txt:
  • http/tests/xmlhttprequest/access-control-and-redirects-async.html:
5:18 PM Changeset in webkit [252347] by ysuzuki@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, fix incorrect assertion
https://bugs.webkit.org/show_bug.cgi?id=201908

  • heap/PreciseAllocation.cpp:

(JSC::PreciseAllocation::reuseForLowerTier):

5:04 PM Changeset in webkit [252346] by jer.noble@apple.com
  • 7 edits
    2 adds in trunk/Source/WebCore

ASSERT at PlatformCALayerCocoa::avPlayerLayer(): [platformLayer() sublayers].count == 1
https://bugs.webkit.org/show_bug.cgi?id=204077
<rdar://problem/56640423>

Reviewed by Simon Fraser.

Make PlatformCALayerCocoa::avPlayer() more robust against underlying layer changes.

Promote WebVideoContainerLayer to its own header file and give the class a "playerLayer" property. In
PlatformCALayerCocoa::avPlayer(), use that new property to retrieve the AVPlayerLayer.

Drive-by fix: Make PlatformCALayerCocoa::create() return a Ref<PlatformCALayerCocoa> rather than its parent class type.

  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/graphics/avfoundation/objc/VideoFullscreenLayerManagerObjC.h:
  • platform/graphics/avfoundation/objc/VideoFullscreenLayerManagerObjC.mm:

(WebCore::VideoFullscreenLayerManagerObjC::setVideoLayer):
(-[WebVideoContainerLayer setBounds:]): Deleted.
(-[WebVideoContainerLayer setPosition:]): Deleted.

  • platform/graphics/ca/cocoa/PlatformCALayerCocoa.h:
  • platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:

(WebCore::PlatformCALayerCocoa::create):
(WebCore::PlatformCALayerCocoa::layerTypeForPlatformLayer):
(WebCore::PlatformCALayerCocoa::clone const):
(WebCore::PlatformCALayerCocoa::avPlayerLayer const):

  • platform/graphics/ca/cocoa/WebVideoContainerLayer.h: Added.
  • platform/graphics/ca/cocoa/WebVideoContainerLayer.mm: Added.

(-[WebVideoContainerLayer initWithPlayerLayer:]):
(-[WebVideoContainerLayer playerLayer]):
(-[WebVideoContainerLayer setBounds:]):
(-[WebVideoContainerLayer setPosition:]):

4:58 PM Changeset in webkit [252345] by Ross Kirsling
  • 6 edits
    1 add in trunk

UTC offset for Samoa is miscalculated when !HAVE(TIMEGM)
https://bugs.webkit.org/show_bug.cgi?id=204032

Reviewed by Yusuke Suzuki.

JSTests:

  • complex.yaml:
  • complex/timezone-offset-apia.js: Added.

Add test to verify Date.prototype.getTimezoneOffset for TZ=Pacific/Apia.

Source/WTF:

We have code assuming that the world's time zones haven't changed in the past decade,
but Samoa changed from UTC-11 to UTC+13 at the beginning of 2012.

(Note: "Samoa" here means the Independent State of Samoa (Pacific/Apia) and not American Samoa (Pacific/Samoa).

See https://en.wikipedia.org/wiki/Time_in_Samoa for more information.)

  • wtf/DateMath.cpp:

(WTF::calculateUTCOffset):
Update "canned date" from 2009 to 2019.

Tools:

  • Scripts/run-jsc-stress-tests:

Allow environment variables to be passed to "complex" tests.

4:34 PM Changeset in webkit [252344] by Antti Koivisto
  • 8 edits in trunk/Source/WebCore

Always use matched declarations cache fully when parent inherited style matches
https://bugs.webkit.org/show_bug.cgi?id=204083

Reviewed by Zalan Bujtas.

  • css/StyleResolver.cpp:

(WebCore::StyleResolver::applyMatchedProperties):

We used inheritedDataShared check here since it is always just pointer compare.
However instrumentation shows we miss out from singificant amount of cache benefit
due to this and the full check is not expensive.

  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::inheritedEqual const):
(WebCore::RenderStyle::inheritedNotEqual const): Deleted.

Reverse the logic.

(WebCore::RenderStyle::inheritedDataShared const): Deleted.

Not used anymore.

  • rendering/style/RenderStyle.h:
  • rendering/style/SVGRenderStyle.cpp:

(WebCore::SVGRenderStyle::inheritedEqual const):
(WebCore::SVGRenderStyle::inheritedNotEqual const): Deleted.

  • rendering/style/SVGRenderStyle.h:
  • style/StyleChange.cpp:

(WebCore::Style::determineChange):

  • style/StyleTreeResolver.cpp:

(WebCore::Style::createInheritedDisplayContentsStyleIfNeeded):

4:17 PM Changeset in webkit [252343] by Kocsen Chung
  • 1 copy in tags/Safari-608.4.9.1.3

Tag Safari-608.4.9.1.3.

4:17 PM Changeset in webkit [252342] by Kocsen Chung
  • 1 copy in tags/Safari-608.4.9.0.3

Tag Safari-608.4.9.0.3.

3:57 PM Changeset in webkit [252341] by ysuzuki@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, fix alignment adjustment when reusing PreciseAllocation
https://bugs.webkit.org/show_bug.cgi?id=201908

  • heap/PreciseAllocation.cpp:

(JSC::PreciseAllocation::reuseForLowerTier):

3:26 PM Changeset in webkit [252340] by Kate Cheney
  • 6 edits in trunk/LayoutTests

CrashTracer: com.apple.WebKit.Networking.Development at com.apple.WebKit: WebKit::NetworkProcess::setIsRunningResourceLoadStatisticsTest
https://bugs.webkit.org/show_bug.cgi?id=204081
<rdar://problem/56889809>

Reviewed by John Wilander.

This crash was happening in two places. First, in
has-storage-access-true-if-third-party-has-cookies-database.html,
the test was incorrectly marked as ephemeral then tried to use ITP by
calling setEnableFeature. ITP should not be used in ephemeral
sessions. There was also a small bug, ITP should be set to true (not
false) at the beginning of this test.

Second, both
has-storage-access-true-if-third-party-has-cookies-ephemeral.html and
has-storage-access-true-if-third-party-has-cookies-ephemeral-database.html
had document.hrefs which redirected back to the non-ephemeral test cases after
setting a cookie. This caused a crash when trying to set ITP to false
using an ephemeral sessionID.

  • 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-expected.txt:
  • http/tests/storageAccess/has-storage-access-true-if-third-party-has-cookies-ephemeral-database.html:
  • http/tests/storageAccess/has-storage-access-true-if-third-party-has-cookies-ephemeral-expected.txt:
  • http/tests/storageAccess/has-storage-access-true-if-third-party-has-cookies-ephemeral.html:
2:43 PM Changeset in webkit [252339] by Antti Koivisto
  • 2 edits in trunk/Source/WebCore

Empty property sets should not mark MatchedProperties uncacheable
https://bugs.webkit.org/show_bug.cgi?id=204079

Reviewed by Zalan Bujtas.

  • css/ElementRuleCollector.cpp:

(WebCore::ElementRuleCollector::addElementStyleProperties):

Bail out if there are no incoming properties.

2:13 PM Changeset in webkit [252338] by aestes@apple.com
  • 8 edits
    12 adds in trunk

PaymentRequest / PaymentResponse should not prevent entering the back/forward cache
https://bugs.webkit.org/show_bug.cgi?id=203101
<rdar://problem/56744409>

Reviewed by Chris Dumez.

Source/WebCore:

Removed PaymentRequest's and PaymentResponse's override of
ActiveDOMObject::shouldPreventEnteringBackForwardCache_DEPRECATED and implemented
ActiveDOMObject::suspend instead.

Tests: http/tests/paymentrequest/page-cache-closed-payment-request.https.html

http/tests/paymentrequest/page-cache-completed-payment-response.https.html
http/tests/paymentrequest/page-cache-created-payment-request.https.html
http/tests/paymentrequest/page-cache-created-payment-response.https.html
http/tests/paymentrequest/page-cache-interactive-payment-request.https.html
http/tests/paymentrequest/page-cache-retried-payment-response.https.html

  • Modules/paymentrequest/PaymentRequest.cpp:

(WebCore::PaymentRequest::suspend):
(WebCore::PaymentRequest::shouldPreventEnteringBackForwardCache_DEPRECATED const): Deleted.

  • Modules/paymentrequest/PaymentRequest.h:
  • Modules/paymentrequest/PaymentResponse.cpp:

(WebCore::PaymentResponse::suspend):
(WebCore::PaymentResponse::shouldPreventEnteringBackForwardCache_DEPRECATED const): Deleted.

  • Modules/paymentrequest/PaymentResponse.h:
  • bindings/js/JSDOMPromiseDeferred.cpp:

(WebCore::DeferredPromise::callFunction):

LayoutTests:

  • http/tests/paymentrequest/page-cache-closed-payment-request.https-expected.txt: Added.
  • http/tests/paymentrequest/page-cache-closed-payment-request.https.html: Added.
  • http/tests/paymentrequest/page-cache-completed-payment-response.https-expected.txt: Added.
  • http/tests/paymentrequest/page-cache-completed-payment-response.https.html: Added.
  • http/tests/paymentrequest/page-cache-created-payment-request.https-expected.txt: Added.
  • http/tests/paymentrequest/page-cache-created-payment-request.https.html: Added.
  • http/tests/paymentrequest/page-cache-created-payment-response.https-expected.txt: Added.
  • http/tests/paymentrequest/page-cache-created-payment-response.https.html: Added.
  • http/tests/paymentrequest/page-cache-interactive-payment-request.https-expected.txt: Added.
  • http/tests/paymentrequest/page-cache-interactive-payment-request.https.html: Added.
  • http/tests/paymentrequest/page-cache-retried-payment-response.https-expected.txt: Added.
  • http/tests/paymentrequest/page-cache-retried-payment-response.https.html: Added.
  • resources/js-test.js:

(shouldReject):
(shouldRejectWithErrorName):

1:41 PM Changeset in webkit [252337] by youenn@apple.com
  • 7 edits
    2 adds in trunk

Make MediaStream/MediaStreamTrack page cache friendly
https://bugs.webkit.org/show_bug.cgi?id=204030

Reviewed by Chris Dumez.

Source/WebCore:

Test: http/tests/navigation/page-cache-mediastream.html

  • Modules/mediastream/MediaStream.cpp:

Remove the unnneeded opt-out of page cache in case of MediaStream.

  • Modules/mediastream/MediaStream.h:
  • Modules/mediastream/MediaStreamTrack.cpp:

(WebCore::MediaStreamTrack::suspend):
In case of a capture track, end it at suspend time but fire ended event at resume time.

  • Modules/mediastream/MediaStreamTrack.h:

LayoutTests:

  • platform/mac-wk1/TestExpectations: Disabled test for WK1.
  • http/tests/navigation/page-cache-mediastream-expected.txt: Added.
  • http/tests/navigation/page-cache-mediastream.html: Added.
11:42 AM Changeset in webkit [252336] by Matt Lewis
  • 22 edits in trunk

Revert "[css-lists] Implement list-style-type: <string>"

This reverts commit 0727a951800d22b0d8413293ef7ff42cedeb5499.

11:24 AM Changeset in webkit [252335] by eric.carlson@apple.com
  • 32 edits
    3 moves
    31 adds
    5 deletes in trunk/LayoutTests

Update WPT mediacapture-streams tests
https://bugs.webkit.org/show_bug.cgi?id=204073

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

  • resources/import-expectations.json:
  • web-platform-tests/mediacapture-streams/GUM-deny.https.html:
  • web-platform-tests/mediacapture-streams/GUM-impossible-constraint.https.html:
  • web-platform-tests/mediacapture-streams/GUM-optional-constraint.https.html:
  • web-platform-tests/mediacapture-streams/GUM-trivial-constraint.https.html:
  • web-platform-tests/mediacapture-streams/MediaDevices-IDL-all-expected.txt: Removed.
  • web-platform-tests/mediacapture-streams/MediaDevices-IDL-all.html: Removed.
  • web-platform-tests/mediacapture-streams/MediaDevices-IDL-enumerateDevices-expected.txt: Removed.
  • web-platform-tests/mediacapture-streams/MediaDevices-IDL-enumerateDevices.html: Removed.
  • web-platform-tests/mediacapture-streams/MediaDevices-enumerateDevices.https-expected.txt:
  • web-platform-tests/mediacapture-streams/MediaDevices-enumerateDevices.https.html:
  • web-platform-tests/mediacapture-streams/MediaDevices-getUserMedia.https-expected.txt:
  • web-platform-tests/mediacapture-streams/MediaDevices-getUserMedia.https.html:
  • web-platform-tests/mediacapture-streams/MediaStream-MediaElement-preload-none.https-expected.txt: Removed.
  • web-platform-tests/mediacapture-streams/MediaStream-MediaElement-preload-none.https.html: Removed.
  • web-platform-tests/mediacapture-streams/MediaStream-MediaElement-srcObject.https-expected.txt:
  • web-platform-tests/mediacapture-streams/MediaStream-MediaElement-srcObject.https.html:
  • web-platform-tests/mediacapture-streams/MediaStream-add-audio-track.https.html:
  • web-platform-tests/mediacapture-streams/MediaStream-audio-only.https.html:
  • web-platform-tests/mediacapture-streams/MediaStream-default-feature-policy.https-expected.txt:
  • web-platform-tests/mediacapture-streams/MediaStream-default-feature-policy.https.html:
  • web-platform-tests/mediacapture-streams/MediaStream-finished-add.https.html:
  • web-platform-tests/mediacapture-streams/MediaStream-gettrackid.https.html:
  • web-platform-tests/mediacapture-streams/MediaStream-idl.https.html:
  • web-platform-tests/mediacapture-streams/MediaStream-removetrack.https-expected.txt:
  • web-platform-tests/mediacapture-streams/MediaStream-removetrack.https.html:
  • web-platform-tests/mediacapture-streams/MediaStreamTrack-MediaElement-disabled-audio-is-silence.https.html:
  • web-platform-tests/mediacapture-streams/MediaStreamTrack-MediaElement-disabled-video-is-black.https-expected.txt:
  • web-platform-tests/mediacapture-streams/MediaStreamTrack-MediaElement-disabled-video-is-black.https.html:
  • web-platform-tests/mediacapture-streams/MediaStreamTrack-end-manual.https-expected.txt:
  • web-platform-tests/mediacapture-streams/MediaStreamTrack-end-manual.https.html:
  • web-platform-tests/mediacapture-streams/MediaStreamTrack-getSettings.https-expected.txt:
  • web-platform-tests/mediacapture-streams/MediaStreamTrack-getSettings.https.html:
  • web-platform-tests/mediacapture-streams/MediaStreamTrack-id.https.html:
  • web-platform-tests/mediacapture-streams/OWNERS: Removed.
  • web-platform-tests/mediacapture-streams/historical.html: Removed.
  • web-platform-tests/mediacapture-streams/w3c-import.log:

LayoutTests:

  • tests-options.json:
11:01 AM Changeset in webkit [252334] by Matt Lewis
  • 2 edits in trunk/Source/WebCore

Unreviewed, rolling out r252151.

This broke internal builds and tests along with
https://bugs.webkit.org/show_bug.cgi?id=167729#c18. For more
information discuss with your reviewers.

Reverted changeset:

"Keep None value at the end of the ListStyleType enum"
https://bugs.webkit.org/show_bug.cgi?id=203883
https://trac.webkit.org/changeset/252151

10:38 AM Changeset in webkit [252333] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[iOS] Unable to view .pages files
https://bugs.webkit.org/show_bug.cgi?id=204076
<rdar://problem/57079557>

Reviewed by Brent Fulgham.

This is caused by a syscall being blocked by the sandbox. The syscall was previously unused in the
WebContent process.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
10:28 AM Changeset in webkit [252332] by dino@apple.com
  • 2 edits in trunk/Tools

Regression r252309: API Test TestWebKitAPI._WKActivatedElementInfo.InfoForLinkAroundImage is failing consistently
https://bugs.webkit.org/show_bug.cgi?id=204058
<rdar://problem/57056000>

Unreviewed.

Remove test that looks at screen dimensions, because it fails on iPad.

  • TestWebKitAPI/Tests/WebKitCocoa/WKRequestActivatedElementInfo.mm:

(TestWebKitAPI::TEST):

10:06 AM Changeset in webkit [252331] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore

Ensure MediaRemote callback always called.
https://bugs.webkit.org/show_bug.cgi?id=204072
<rdar://problem/56301651>

Reviewed by Eric Carlson.

MediaRemote.framework will complain if the callback passed in via MRMediaRemoteAddAsyncCommandHandlerBlock()
is not called for each invocation of the handler. Make sure we always call the completion handler, even in
the case of unsupported commands, or if the listener object has already been destroyed.

  • platform/mac/RemoteCommandListenerMac.mm:

(WebCore::RemoteCommandListenerMac::RemoteCommandListenerMac):

10:01 AM Changeset in webkit [252330] by commit-queue@webkit.org
  • 9 edits
    2 adds in trunk

[Picture-in-Picture Web API] Support picture-in-picture CSS pseudo-class
https://bugs.webkit.org/show_bug.cgi?id=203493

Patch by Peng Liu <Peng Liu> on 2019-11-11
Reviewed by Dean Jackson.

Source/WebCore:

Add CSS pseudo class ":picture-in-picture" for a video element in the picture-in-picture mode.

Test: media/picture-in-picture/picture-in-picture-api-css-selector.html

  • Modules/pictureinpicture/HTMLVideoElementPictureInPicture.cpp:

(WebCore::HTMLVideoElementPictureInPicture::didEnterPictureInPicture):
(WebCore::HTMLVideoElementPictureInPicture::didExitPictureInPicture):

  • css/CSSSelector.cpp:

(WebCore::CSSSelector::selectorText const):

  • css/CSSSelector.h:
  • css/SelectorChecker.cpp:

(WebCore::SelectorChecker::checkOne const):

  • css/SelectorCheckerTestFunctions.h:

(WebCore::matchesPictureInPicturePseudoClass):

  • css/SelectorPseudoClassAndCompatibilityElementMap.in:
  • cssjit/SelectorCompiler.cpp:

(WebCore::SelectorCompiler::addPseudoClassType):

LayoutTests:

  • media/picture-in-picture/picture-in-picture-api-css-selector-expected.txt: Added.
  • media/picture-in-picture/picture-in-picture-api-css-selector.html: Added.
9:49 AM Changeset in webkit [252329] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[EWS] Use named arguments in factories.py
https://bugs.webkit.org/show_bug.cgi?id=204071

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/factories.py:

(Factory.init):
(StyleFactory.init):
(WatchListFactory.init):
(BindingsFactory.init):
(WebKitPerlFactory.init):
(WebKitPyFactory.init):
(BuildFactory.init):
(TestFactory.init):
(JSCTestsFactory.init):
(WindowsFactory.init):
(WinCairoFactory.init):
(GTKFactory.init):
(WPEFactory.init):
(ServicesFactory.init):

9:29 AM Changeset in webkit [252328] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

Typo in assertion in validateCPS in DFGValidate.cpp ("Unexecpted")
https://bugs.webkit.org/show_bug.cgi?id=204066

Patch by Tuomas Karkkainen <tuomas.webkit@apple.com> on 2019-11-11
Reviewed by Antti Koivisto.

  • dfg/DFGValidate.cpp:
9:07 AM Changeset in webkit [252327] by Kocsen Chung
  • 5 edits in branches/safari-608.4.9.1-branch

Cherry-pick r252248. rdar://problem/57058391

[WebAuthn] Return NotAllowedError immediately for UI cancellations
https://bugs.webkit.org/show_bug.cgi?id=203937
<rdar://problem/56962420>

Reviewed by Brent Fulgham.

Source/WebKit:

NotAllowedError representing UI cancellations should be returned to sites
immediately such that sites could show appropriate error page immediately.

Covered by existing tests.

  • UIProcess/WebAuthentication/AuthenticatorManager.cpp: (WebKit::AuthenticatorManager::cancelRequest): (WebKit::AuthenticatorManager::clearState): (WebKit::AuthenticatorManager::resetState): Deleted.
  • UIProcess/WebAuthentication/AuthenticatorManager.h:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/_WKWebAuthenticationPanel.mm: (TestWebKitAPI::TEST):

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

8:58 AM Changeset in webkit [252326] by Kocsen Chung
  • 5 edits in branches/safari-608.4.9.0-branch

Cherry-pick r252248. rdar://problem/57040121

[WebAuthn] Return NotAllowedError immediately for UI cancellations
https://bugs.webkit.org/show_bug.cgi?id=203937
<rdar://problem/56962420>

Reviewed by Brent Fulgham.

Source/WebKit:

NotAllowedError representing UI cancellations should be returned to sites
immediately such that sites could show appropriate error page immediately.

Covered by existing tests.

  • UIProcess/WebAuthentication/AuthenticatorManager.cpp: (WebKit::AuthenticatorManager::cancelRequest): (WebKit::AuthenticatorManager::clearState): (WebKit::AuthenticatorManager::resetState): Deleted.
  • UIProcess/WebAuthentication/AuthenticatorManager.h:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/_WKWebAuthenticationPanel.mm: (TestWebKitAPI::TEST):

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

8:24 AM Changeset in webkit [252325] by commit-queue@webkit.org
  • 7 edits in trunk

Unreviewed, rolling out r251460.
https://bugs.webkit.org/show_bug.cgi?id=204070

This patch caused a crash due to synchronous event firing
(Requested by jernoble on #webkit).

Reverted changeset:

"media/W3C/video/networkState/networkState_during_progress.html
is flaky"
https://bugs.webkit.org/show_bug.cgi?id=76280
https://trac.webkit.org/changeset/251460

8:23 AM Changeset in webkit [252324] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

EWS should retry build in case of kill-old-processes failure
https://bugs.webkit.org/show_bug.cgi?id=203858

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/steps.py:

(KillOldProcesses.evaluateCommand): Retry the build in case of failure.
(KillOldProcesses.getResultSummary): Update the build-step summary string.

  • BuildSlaveSupport/ews-build/steps_unittest.py: Updated unit-tests.
7:16 AM Changeset in webkit [252323] by Carlos Garcia Campos
  • 14 edits in trunk

WebDriver: implement proxy support
https://bugs.webkit.org/show_bug.cgi?id=180408

Reviewed by Carlos Alberto Lopez Perez.

Source/JavaScriptCore:

Add optional Proxy struct to session capabilities.

  • inspector/remote/RemoteInspector.h:
  • inspector/remote/glib/RemoteInspectorServer.cpp:

(Inspector::processSessionCapabilities):

Source/WebDriver:

Handle proxy object in capabilities.

  • Capabilities.h: Add Proxy struct.
  • WebDriverService.cpp:

(WebDriver::deserializeProxy): Deserialize the proxy from capabilities.
(WebDriver::WebDriverService::parseCapabilities const): Get the deserialized proxy.
(WebDriver::WebDriverService::validatedCapabilities const): Ensure proxy object is valid.
(WebDriver::WebDriverService::matchCapabilities const): Check proxy type is supported by the platform.
(WebDriver::WebDriverService::createSession): Only set an empty proxy object in capabilities if we don't have a
deserialized proxy.

  • WebDriverService.h:
  • glib/SessionHostGlib.cpp:

(WebDriver::SessionHost::buildSessionCapabilities const): Send the proxy settings to the browser.

  • glib/WebDriverServiceGLib.cpp:

(WebDriver::WebDriverService::platformSupportProxyType const): Return false if proxy type is "pac".

Source/WebKit:

  • UIProcess/API/glib/WebKitAutomationSession.cpp:

(parseProxyCapabilities): Parse the proxy settings from capabilities.
(webkitAutomationSessionCreate): Set the proxy settings received from capabilities.

WebDriverTests:

Unskip the tests that are now passing.

7:13 AM Changeset in webkit [252322] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][IFC] Line::m_trimmableRuns does not need to be a ListHashSet
https://bugs.webkit.org/show_bug.cgi?id=204061
<rdar://problem/57064178>

Reviewed by Antti Koivisto.

Switch from ListHashSet to Vector.

  • layout/inlineformatting/InlineLine.cpp:

(WebCore::Layout::Line::removeTrailingTrimmableContent):
(WebCore::Layout::Line::appendTextContent):

  • layout/inlineformatting/InlineLine.h:

Nov 10, 2019:

10:25 PM Changeset in webkit [252321] by Kocsen Chung
  • 4 edits in branches/safari-608.4.9.0-branch/Source

Cherry-pick r252297. rdar://problem/57040122

[WebAuthn] Add quirk needed to support legacy Google NFC Titan security keys
https://bugs.webkit.org/show_bug.cgi?id=204024
<rdar://problem/56962320>

Reviewed by Brent Fulgham.

Source/WebCore:

Covered by manual tests.

  • Modules/webauthn/fido/FidoConstants.h:

Source/WebKit:

Some legacy U2F keys such as Google T1 Titan don't understand the FIDO applet command. Instead,
they are configured to only have the FIDO applet. Therefore, when the above command fails, we
use U2F_VERSION command to double check if the connected tag can actually speak U2F, indicating
we are interacting with one of these legacy keys.

  • UIProcess/WebAuthentication/Cocoa/NfcConnection.mm: (WebKit::fido::compareVersion): (WebKit::fido::trySelectFidoApplet): (WebKit::NfcConnection::transact const): (WebKit::NfcConnection::didDetectTags):

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

10:08 PM Changeset in webkit [252320] by Kocsen Chung
  • 7 edits in branches/safari-608.4.9.0-branch/Source

Versioning.

10:04 PM Changeset in webkit [252319] by Kocsen Chung
  • 4 edits in branches/safari-608.4.9.1-branch/Source

Cherry-pick r252297. rdar://problem/57058404

[WebAuthn] Add quirk needed to support legacy Google NFC Titan security keys
https://bugs.webkit.org/show_bug.cgi?id=204024
<rdar://problem/56962320>

Reviewed by Brent Fulgham.

Source/WebCore:

Covered by manual tests.

  • Modules/webauthn/fido/FidoConstants.h:

Source/WebKit:

Some legacy U2F keys such as Google T1 Titan don't understand the FIDO applet command. Instead,
they are configured to only have the FIDO applet. Therefore, when the above command fails, we
use U2F_VERSION command to double check if the connected tag can actually speak U2F, indicating
we are interacting with one of these legacy keys.

  • UIProcess/WebAuthentication/Cocoa/NfcConnection.mm: (WebKit::fido::compareVersion): (WebKit::fido::trySelectFidoApplet): (WebKit::NfcConnection::transact const): (WebKit::NfcConnection::didDetectTags):

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

9:59 PM Changeset in webkit [252318] by Kocsen Chung
  • 7 edits in branches/safari-608.4.9.1-branch/Source

Versioning.

9:39 PM Changeset in webkit [252317] by rniwa@webkit.org
  • 3 edits in trunk/LayoutTests

iOS: fast/events/scroll-subframe-in-rendering-update.html always fails
https://bugs.webkit.org/show_bug.cgi?id=204045

Reviewed by Wenson Hsieh.

Enable async & frame scrolling to make the test work in iOS.

  • fast/events/scroll-subframe-in-rendering-update.html:
8:09 PM Changeset in webkit [252316] by Alan Bujtas
  • 6 edits in trunk/Source/WebCore

[LFC][IFC] Move Line::Run's line layout specific logic to InlineItemRun
https://bugs.webkit.org/show_bug.cgi?id=204055
<rdar://problem/57053232>

Reviewed by Antti Koivisto.

Line::Run started getting a bit overloaded through supporting the line layout logic and providing the 'run' interface
to the caller (e.g. merging multiple runs happens at the very end of the line layout, when the line is being closed. When a run
is expanded some of the properties do not make sense anymore. It makes part of the Run's logic unnecessarily complicated).
This patch introduces the InlineItemRun structure to support the line layout logic. We construct InlineItemRuns
as InlineItems are getting appended to the line and when the line is getting closed, we turn them into Line::Runs (InlineItems are never merged, only Line::Runs are).

  • layout/displaytree/DisplayRun.h:

(WebCore::Display::Run::TextContext::setExpansion):
(WebCore::Display::Run::Run):
(WebCore::Display::Run::TextContext::resetExpansion): Deleted.

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::setDisplayBoxesForLine):

  • layout/inlineformatting/InlineFormattingContextQuirks.cpp:

(WebCore::Layout::InlineFormattingContext::Quirks::lineDescentNeedsCollapsing const):

  • layout/inlineformatting/InlineLine.cpp:

(WebCore::Layout::InlineItemRun::layoutBox const):
(WebCore::Layout::InlineItemRun::logicalRect const):
(WebCore::Layout::InlineItemRun::textContext const):
(WebCore::Layout::InlineItemRun::isText const):
(WebCore::Layout::InlineItemRun::isBox const):
(WebCore::Layout::InlineItemRun::isContainerStart const):
(WebCore::Layout::InlineItemRun::isContainerEnd const):
(WebCore::Layout::InlineItemRun::type const):
(WebCore::Layout::InlineItemRun::setIsCollapsed):
(WebCore::Layout::InlineItemRun::isCollapsed const):
(WebCore::Layout::InlineItemRun::isCollapsedToZeroAdvanceWidth const):
(WebCore::Layout::InlineItemRun::isCollapsible const):
(WebCore::Layout::InlineItemRun::isWhitespace const):
(WebCore::Layout::InlineItemRun::hasExpansionOpportunity const):
(WebCore::Layout::InlineItemRun::InlineItemRun):
(WebCore::Layout::InlineItemRun::setCollapsesToZeroAdvanceWidth):
(WebCore::Layout::Line::Run::Run):
(WebCore::Layout::Line::Run::adjustExpansionBehavior):
(WebCore::Layout::Line::Run::expansionBehavior const):
(WebCore::Layout::Line::Run::setHasExpansionOpportunity):
(WebCore::Layout::Line::Run::setComputedHorizontalExpansion):
(WebCore::Layout::Line::Run::expand):
(WebCore::Layout::Line::~Line):
(WebCore::Layout::Line::isVisuallyEmpty const):
(WebCore::Layout::Line::close):
(WebCore::Layout::Line::alignContentVertically const):
(WebCore::Layout::Line::justifyRuns const):
(WebCore::Layout::Line::alignContentHorizontally const):
(WebCore::Layout::Line::removeTrailingTrimmableContent):
(WebCore::Layout::Line::trailingTrimmableWidth const):
(WebCore::Layout::Line::appendNonBreakableSpace):
(WebCore::Layout::Line::appendTextContent):
(WebCore::Layout::Line::appendNonReplacedInlineBox):
(WebCore::Layout::Line::appendReplacedInlineBox): Need to find a better place for setImage.
(WebCore::Layout::Line::appendLineBreak):
(WebCore::Layout::Line::alignContentVertically): Deleted.
(WebCore::Layout::Line::justifyRuns): Deleted.
(WebCore::Layout::Line::alignContentHorizontally): Deleted.

  • layout/inlineformatting/InlineLine.h:

(WebCore::Layout::Line::Run::layoutBox const):
(WebCore::Layout::Line::Run::logicalRect const):
(WebCore::Layout::Line::Run::textContext const):
(WebCore::Layout::Line::Run::isCollapsedToVisuallyEmpty const):
(WebCore::Layout::Line::Run::adjustLogicalTop):
(WebCore::Layout::Line::Run::moveHorizontally):
(WebCore::Layout::Line::Run::moveVertically):
(WebCore::Layout::Line::Run::setTextContext):
(WebCore::Layout::Line::Run::setIsCollapsedToVisuallyEmpty):
(WebCore::Layout::Line::Run::hasExpansionOpportunity const):
(WebCore::Layout::Line::Run::expansionOpportunityCount const):
(WebCore::Layout::Line::Run::displayRun const): Deleted.
(WebCore::Layout::Line::Run::isCollapsed const): Deleted.
(WebCore::Layout::Line::Run::isCollapsible const): Deleted.
(WebCore::Layout::Line::Run::hasTrailingCollapsedContent const): Deleted.
(WebCore::Layout::Line::Run::isWhitespace const): Deleted.
(WebCore::Layout::Line::Run::setIsCollapsed): Deleted.
(WebCore::Layout::Line::Run::isCollapsedToZeroAdvanceWidth const): Deleted.
(WebCore::Layout::Line::Run::setCollapsesToZeroAdvanceWidth): Deleted.
(WebCore::Layout::Line::Run::expansionBehavior const): Deleted.
(WebCore::Layout::Line::Run::setHasExpansionOpportunity): Deleted.
(WebCore::Layout::Line::Run::adjustExpansionBehavior): Deleted.
(WebCore::Layout::Line::Run::setComputedHorizontalExpansion): Deleted.

4:16 PM Changeset in webkit [252315] by wenson_hsieh@apple.com
  • 8 edits in trunk/Source/WebCore

[Clipboard API] Add some infrastructure to resolve ClipboardItems into pasteboard data for writing
https://bugs.webkit.org/show_bug.cgi?id=203707

Reviewed by Ryosuke Niwa.

Implements a new method that will be used in a future patch to aggregate data vended by ClipboardItems when
writing items to the platform pasteboard. See below for more details; no new tests, since there is no change in
behavior yet.

  • Modules/async-clipboard/ClipboardItem.cpp:

(WebCore::ClipboardItem::collectDataForWriting):

Add a new virtual collectDataForWriting method, which is used when writing ClipboardItem data to the
pasteboard. This allows ClipboardItems to asynchronously convert data to a PasteboardCustomData after resolving
promises to strings or blobs; or alternately, cancel all data loading if a promise is rejected.

In order to convert items into a list of PasteboardCustomData, we do the following:

set up a PasteboardCustomData corresponding to each clipboard item
for each clipboard item:

for each type in the clipboard item:

try to resolve the promise
if the promise resolved to a string:

write the string to custom data under the type

if the promise resolved to a blob:

load the blob data as either text or an ArrayBuffer (depending on the type)
write either the loaded string or buffer to custom data under the type

if the promise rejected or resolved to an unsupported value, bail from these steps

  • Modules/async-clipboard/ClipboardItem.h:
  • Modules/async-clipboard/ClipboardItemBindingsDataSource.cpp:

(WebCore::documentFromClipboard):
(WebCore::readTypeForMIMEType):
(WebCore::ClipboardItemBindingsDataSource::collectDataForWriting):
(WebCore::ClipboardItemBindingsDataSource::invokeCompletionHandler):
(WebCore::ClipboardItemBindingsDataSource::ClipboardItemTypeLoader::ClipboardItemTypeLoader):
(WebCore::ClipboardItemBindingsDataSource::ClipboardItemTypeLoader::~ClipboardItemTypeLoader):

Add a helper class to hold state associated with loading each clipboard type. This includes the final data
itself (a variant that holds either a String or Blob), as well as a FileReaderLoader which may be present in the
case where the clipboard item type resolves to a blob.

(WebCore::ClipboardItemBindingsDataSource::ClipboardItemTypeLoader::didFinishLoading):
(WebCore::ClipboardItemBindingsDataSource::ClipboardItemTypeLoader::didFail):

Each ClipboardItemType is also the client for its FileReaderLoader, if present; when the FileReaderLoader
finishes loading or fails, we then extract data from the loader and invoke the completion handler.

(WebCore::ClipboardItemBindingsDataSource::ClipboardItemTypeLoader::invokeCompletionHandler):
(WebCore::ClipboardItemBindingsDataSource::ClipboardItemTypeLoader::didResolveToBlob):
(WebCore::ClipboardItemBindingsDataSource::ClipboardItemTypeLoader::didFailToResolve):
(WebCore::ClipboardItemBindingsDataSource::ClipboardItemTypeLoader::didResolveToString):

One of these three methods is called when the promise corresponding to a clipboard type is either resolved or
rejected. If rejected or resolved to an incompatible type, we call the completion handler immediately with no
data; if we resolve to a string, we simply store the string in m_data and invoke the completion handler;
otherwise, if we resolve to a blob, we create a new loader to fetch either the string or data buffer for the
blob, and wait until either didFinishLoading or didFail is called.

  • Modules/async-clipboard/ClipboardItemBindingsDataSource.h:

(WebCore::ClipboardItemBindingsDataSource::ClipboardItemTypeLoader::create):
(WebCore::ClipboardItemBindingsDataSource::ClipboardItemTypeLoader::type):
(WebCore::ClipboardItemBindingsDataSource::ClipboardItemTypeLoader::data):

  • Modules/async-clipboard/ClipboardItemDataSource.h:
  • Modules/async-clipboard/ClipboardItemPasteboardDataSource.cpp:

(WebCore::ClipboardItemPasteboardDataSource::collectDataForWriting):

For the time being, leave this unimplemented; a future patch will add support for writing ClipboardItems that
came from the platform pasteboard, as opposed to those created by the page.

  • Modules/async-clipboard/ClipboardItemPasteboardDataSource.h:
3:45 PM Changeset in webkit [252314] by ddkilzer@apple.com
  • 4 edits in trunk/Source/WebKit

StorageManagerSet.m_storageAreas should use weak pointers to StorageArea
<https://webkit.org/b/204048>
<rdar://problem/55342744>

Reviewed by Geoffrey Garen.

  • NetworkProcess/WebStorage/StorageArea.h:

(class WebKit::StorageArea):

  • Inherit from CanMakeWeakPtr<StorageArea>.
  • NetworkProcess/WebStorage/StorageManagerSet.cpp:

(WebKit::StorageManagerSet::removeConnection):
(WebKit::StorageManagerSet::waitUntilSyncingLocalStorageFinished):
(WebKit::StorageManagerSet::connectToLocalStorageArea):
(WebKit::StorageManagerSet::connectToTransientLocalStorageArea):
(WebKit::StorageManagerSet::connectToSessionStorageArea):
(WebKit::StorageManagerSet::disconnectFromStorageArea):
(WebKit::StorageManagerSet::getValues): Initialize quotaError
stack value since it is not guaranteed to be set.
(WebKit::StorageManagerSet::setItem):
(WebKit::StorageManagerSet::removeItem):
(WebKit::StorageManagerSet::clear):

  • Use makeWeakPtr() to add StorageArea pointers to m_storageAreas.
  • Use const auto& to store WeakPtr<StorageArea> values from m_storageAreas.
  • Add nullptr checks before using WeakPtr<StorageArea> values.
  • NetworkProcess/WebStorage/StorageManagerSet.h:

(WebKit::StorageManagerSet::m_storageAreas):

  • Use WeakPtr<StorageArea>.
12:01 AM Changeset in webkit [252313] by Antti Koivisto
  • 11 edits in trunk/Source/WebCore

Stack allocate StyleResolver state
https://bugs.webkit.org/show_bug.cgi?id=204053

Reviewed by Zalan Bujtas.

State is currently awkwardly a member that gets cleared. It should be stack allocated and
passed around where needed.

  • animation/KeyframeEffect.cpp:

(WebCore::KeyframeEffect::updateBlendingKeyframes):

  • css/DOMCSSRegisterCustomProperty.cpp:

(WebCore::DOMCSSRegisterCustomProperty::registerProperty):

  • css/StyleResolver.cpp:

(WebCore::StyleResolver::builderContext):

Helper for initializing Style::Builder from resolver state.

(WebCore::StyleResolver::styleForElement):
(WebCore::StyleResolver::styleForKeyframe):
(WebCore::StyleResolver::keyframeStylesForAnimation):
(WebCore::StyleResolver::pseudoStyleForElement):
(WebCore::StyleResolver::styleForPage):
(WebCore::StyleResolver::defaultStyleForElement):
(WebCore::StyleResolver::pseudoStyleRulesForElement):
(WebCore::StyleResolver::applyMatchedProperties):
(WebCore::StyleResolver::State::clear): Deleted.

Nothing to clear, state is transient.

(WebCore::StyleResolver::setNewStateWithElement): Deleted.
(WebCore::StyleResolver::applyPropertyToStyle): Deleted.
(WebCore::StyleResolver::applyPropertyToCurrentStyle): Deleted.

Style::Builder can be used directly to apply properties instead of via these functions that require state setup.

(WebCore::StyleResolver::initializeFontStyle): Deleted.

  • css/StyleResolver.h:

(WebCore::StyleResolver::inspectorCSSOMWrappers):
(WebCore::StyleResolver::style const): Deleted.
(WebCore::StyleResolver::parentStyle const): Deleted.
(WebCore::StyleResolver::rootElementStyle const): Deleted.
(WebCore::StyleResolver::element const): Deleted.
(WebCore::StyleResolver::state): Deleted.
(WebCore::StyleResolver::state const): Deleted.

  • html/canvas/CanvasRenderingContext2D.cpp:

(WebCore::CanvasRenderingContext2D::setFont):

Use Style::Builder directly to apply properties.

  • style/StyleBuilder.cpp:

(WebCore::Style::Builder::Builder):

Encapsulte immutable arguments into BuilderContext type.

(WebCore::Style::Builder::applyPropertyValue):

  • style/StyleBuilder.h:
  • style/StyleBuilderState.cpp:

(WebCore::Style::BuilderState::BuilderState):
(WebCore::Style::BuilderState::updateFontForZoomChange):
(WebCore::Style::BuilderState::updateFontForGenericFamilyChange):

  • style/StyleBuilderState.h:

(WebCore::Style::BuilderState::parentStyle const):
(WebCore::Style::BuilderState::rootElementStyle const):
(WebCore::Style::BuilderState::document const):
(WebCore::Style::BuilderState::element const):
(WebCore::Style::BuilderState::parentFontDescription):

Nov 9, 2019:

11:12 PM Changeset in webkit [252312] by rniwa@webkit.org
  • 2 edits in trunk/LayoutTests

iOS: fast/events/scroll-subframe-in-rendering-update.html always fails
https://bugs.webkit.org/show_bug.cgi?id=204045

Reviewed by Alexey Proskuryakov.

Add a failing test expectation for now while we investigate how to fix the test.

  • platform/ios/TestExpectations:
7:30 PM Changeset in webkit [252311] by rniwa@webkit.org
  • 2 edits in trunk/LayoutTests

iOS: fast/events/scroll-subframe-in-rendering-update.html always fails
https://bugs.webkit.org/show_bug.cgi?id=204045

Reviewed by Alexey Proskuryakov.

Disable the frame flattening to make the test work on iOS.

  • fast/events/scroll-subframe-in-rendering-update.html:
3:35 PM Changeset in webkit [252310] by Tadeu Zagallo
  • 9 edits
    1 add in trunk/Source/JavaScriptCore

[WebAssembly] Improve bytecode dumping
https://bugs.webkit.org/show_bug.cgi?id=204051

Reviewed by Keith Miller.

This patch improves the bytecode dumping for Wasm by:

  • Adding a new option that dumps only the Wasm bytecode. It can be quite hard to find the Wasm bytecode in the middle of a ton of JS bytecode dumps.
  • Adding a header with name of the function and stats, similar to the JS dump.
  • Using Wasm types to properly print constants, and including the type in constants table at the end of the dump.

Here's an example of the updated bytecode dump:

<?>.wasm-function[26] : (I32) -> [I32]
wasm size: 4 bytes
bytecode: 6 instructions (0 16-bit instructions, 0 32-bit instructions); 14 bytes; 1 parameter(s); 18 local(s); 22 callee register(s)
[ 0] enter
[ 1] mov loc18, null(const0)
[ 4] mov loc20, loc4
[ 7] mov loc19, loc20
[ 10] mov loc4, loc19
[ 13] ret

Constants:

const0 : Anyref = null

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • bytecode/BytecodeDumper.cpp:

(JSC::Wasm::BytecodeDumper::dumpBlock):
(JSC::Wasm::BytecodeDumper::dumpConstants):
(JSC::Wasm::BytecodeDumper::constantName const):
(JSC::Wasm::BytecodeDumper::formatConstant const):

  • bytecode/BytecodeDumper.h:

(JSC::BytecodeDumper::~BytecodeDumper):

  • runtime/OptionsList.h:
  • wasm/WasmFunctionCodeBlock.cpp:
  • wasm/WasmFunctionCodeBlock.h:

(JSC::Wasm::FunctionCodeBlock::functionIndex const):
(JSC::Wasm::FunctionCodeBlock::numVars const):
(JSC::Wasm::FunctionCodeBlock::numCalleeLocals const):
(JSC::Wasm::FunctionCodeBlock::numArguments const):
(JSC::Wasm::FunctionCodeBlock::constantTypes const):
(JSC::Wasm::FunctionCodeBlock::constants const):
(JSC::Wasm::FunctionCodeBlock::instructions const):
(JSC::Wasm::FunctionCodeBlock::getConstantType const):

  • wasm/WasmGeneratorTraits.h: Added.
  • wasm/WasmLLIntGenerator.cpp:

(JSC::Wasm::LLIntGenerator::addConstant):

  • wasm/WasmLLIntPlan.cpp:

(JSC::Wasm::LLIntPlan::didCompleteCompilation):

12:32 PM WebKitGoalsfor2020 edited by mjs@apple.com
(diff)
12:14 PM Changeset in webkit [252309] by dino@apple.com
  • 7 edits
    2 adds in trunk

Clicky Orbing support.apple.com categories shows a PNG instead of the web page preview, tapping loads image asset only instead of web page
https://bugs.webkit.org/show_bug.cgi?id=204037
<rdar://55614939>

Reviewed by Simon Fraser.

Source/WebKit:

When Safari adopted the ContextMenu API they began providing a PreviewViewController that
showed the image rather than the link, for the case of <a><img></a>.

This could be fixed in Safari, but I noticed that we actually tell the delegate that the
type of the activated element is an image, which is why they treat it as such. It's not
clear that because the image also has a link attached, a client should defer to the link.

Instead, I think it makes more sense to identify this as a link, because that is the more
important information in this API.

While here I also changed the logic to make sure we call the API if both the API and SPI
are available.

New ContextMenus and WKRequestActivatedElementInfo API tests.

  • UIProcess/API/Cocoa/_WKActivatedElementInfo.mm: Identify as a link if you have a link.

(-[_WKActivatedElementInfo _initWithInteractionInformationAtPosition:userInfo:]):

  • UIProcess/ios/WKContentViewInteraction.mm: Look for the API before the SPI.

(-[WKContentView continueContextMenuInteraction:]):

Tools:

New tests for a link wrapping an image, and the ordering of API and SPI.

Rename these tests so that they are much easier to filter on the command line.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitCocoa/ContextMenus.mm:

(TEST):
(-[TestContextMenuAPIBeforeSPIUIDelegate webView:contextMenuConfigurationForElement:completionHandler:]):
(-[TestContextMenuAPIBeforeSPIUIDelegate _webView:contextMenuConfigurationForElement:completionHandler:]):
(-[TestContextMenuAPIBeforeSPIUIDelegate webView:contextMenuWillPresentForElement:]):

  • TestWebKitAPI/Tests/WebKitCocoa/WKRequestActivatedElementInfo.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/image.html: Added.
  • TestWebKitAPI/Tests/WebKitCocoa/link-with-image.html: Added.
9:09 AM Changeset in webkit [252308] by Antti Koivisto
  • 19 edits
    1 copy
    1 add in trunk/Source/WebCore

Move style adjustment code out of StyleResolver and into a class of its own
https://bugs.webkit.org/show_bug.cgi?id=204041

Reviewed by Zalan Bujtas.

Introduce Style::Adjuster.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • css/StyleResolver.cpp:

(WebCore::StyleResolver::styleForElement):
(WebCore::StyleResolver::styleForKeyframe):
(WebCore::StyleResolver::pseudoStyleForElement):
(WebCore::addIntrinsicMargins): Deleted.
(WebCore::equivalentBlockDisplay): Deleted.
(WebCore::doesNotInheritTextDecoration): Deleted.
(WebCore::isScrollableOverflow): Deleted.
(WebCore::hasEffectiveDisplayNoneForDisplayContents): Deleted.
(WebCore::adjustDisplayContentsStyle): Deleted.
(WebCore::StyleResolver::adjustSVGElementStyle): Deleted.
(WebCore::computeEffectiveTouchActions): Deleted.
(WebCore::hasTextChild): Deleted.
(WebCore::StyleResolver::adjustRenderStyleForTextAutosizing): Deleted.
(WebCore::StyleResolver::adjustRenderStyle): Deleted.
(WebCore::StyleResolver::adjustRenderStyleForSiteSpecificQuirks): Deleted.

  • css/StyleResolver.h:
  • page/Page.cpp:

(WebCore::Page::recomputeTextAutoSizingInAllFrames):

  • rendering/RenderTheme.cpp:

(WebCore::RenderTheme::adjustStyle):

None of this code uses the StyleResolver argument so remove it.

(WebCore::RenderTheme::adjustCheckboxStyle const):
(WebCore::RenderTheme::adjustRadioStyle const):
(WebCore::RenderTheme::adjustButtonStyle const):
(WebCore::RenderTheme::adjustInnerSpinButtonStyle const):
(WebCore::RenderTheme::adjustTextFieldStyle const):
(WebCore::RenderTheme::adjustTextAreaStyle const):
(WebCore::RenderTheme::adjustMenuListStyle const):
(WebCore::RenderTheme::adjustMeterStyle const):
(WebCore::RenderTheme::adjustCapsLockIndicatorStyle const):
(WebCore::RenderTheme::adjustAttachmentStyle const):
(WebCore::RenderTheme::adjustListButtonStyle const):
(WebCore::RenderTheme::adjustProgressBarStyle const):
(WebCore::RenderTheme::adjustMenuListButtonStyle const):
(WebCore::RenderTheme::adjustMediaControlStyle const):
(WebCore::RenderTheme::adjustSliderTrackStyle const):
(WebCore::RenderTheme::adjustSliderThumbStyle const):
(WebCore::RenderTheme::adjustSearchFieldStyle const):
(WebCore::RenderTheme::adjustSearchFieldCancelButtonStyle const):
(WebCore::RenderTheme::adjustSearchFieldDecorationPartStyle const):
(WebCore::RenderTheme::adjustSearchFieldResultsDecorationPartStyle const):
(WebCore::RenderTheme::adjustSearchFieldResultsButtonStyle const):

  • rendering/RenderTheme.h:

(WebCore::RenderTheme::adjustApplePayButtonStyle const):

  • rendering/RenderThemeCocoa.h:
  • rendering/RenderThemeCocoa.mm:

(WebCore::RenderThemeCocoa::adjustApplePayButtonStyle const):

  • rendering/RenderThemeGtk.cpp:

(WebCore::RenderThemeGtk::adjustButtonStyle const):
(WebCore::RenderThemeGtk::adjustMenuListStyle const):
(WebCore::RenderThemeGtk::adjustMenuListButtonStyle const):
(WebCore::RenderThemeGtk::adjustTextFieldStyle const):
(WebCore::RenderThemeGtk::adjustSearchFieldResultsButtonStyle const):
(WebCore::RenderThemeGtk::adjustSearchFieldResultsDecorationPartStyle const):
(WebCore::RenderThemeGtk::adjustSearchFieldCancelButtonStyle const):
(WebCore::RenderThemeGtk::adjustListButtonStyle const):
(WebCore::RenderThemeGtk::adjustSearchFieldStyle const):
(WebCore::RenderThemeGtk::adjustSliderTrackStyle const):
(WebCore::RenderThemeGtk::adjustSliderThumbStyle const):
(WebCore::RenderThemeGtk::adjustInnerSpinButtonStyle const):
(WebCore::RenderThemeGtk::adjustProgressBarStyle const):

  • rendering/RenderThemeGtk.h:
  • rendering/RenderThemeIOS.h:
  • rendering/RenderThemeIOS.mm:

(WebCore::RenderThemeIOS::adjustCheckboxStyle const):
(WebCore::RenderThemeIOS::adjustRadioStyle const):
(WebCore::RenderThemeIOS::adjustMenuListButtonStyle const):
(WebCore::RenderThemeIOS::adjustSliderTrackStyle const):
(WebCore::RenderThemeIOS::adjustSearchFieldStyle const):
(WebCore::RenderThemeIOS::adjustButtonStyle const):

  • rendering/RenderThemeMac.h:
  • rendering/RenderThemeMac.mm:

(WebCore::RenderThemeMac::setFontFromControlSize const):
(WebCore::RenderThemeMac::adjustListButtonStyle const):
(WebCore::RenderThemeMac::adjustTextFieldStyle const):
(WebCore::RenderThemeMac::adjustTextAreaStyle const):
(WebCore::RenderThemeMac::adjustProgressBarStyle const):
(WebCore::RenderThemeMac::adjustMenuListStyle const):
(WebCore::RenderThemeMac::adjustMenuListButtonStyle const):
(WebCore::RenderThemeMac::adjustSliderTrackStyle const):
(WebCore::RenderThemeMac::adjustSliderThumbStyle const):
(WebCore::RenderThemeMac::adjustSearchFieldStyle const):
(WebCore::RenderThemeMac::adjustSearchFieldCancelButtonStyle const):
(WebCore::RenderThemeMac::adjustSearchFieldDecorationPartStyle const):
(WebCore::RenderThemeMac::adjustSearchFieldResultsDecorationPartStyle const):
(WebCore::RenderThemeMac::adjustSearchFieldResultsButtonStyle const):

  • style/StyleAdjuster.cpp: Added.

(WebCore::Style::Adjuster::Adjuster):
(WebCore::Style::addIntrinsicMargins):
(WebCore::Style::equivalentBlockDisplay):
(WebCore::Style::isAtShadowBoundary):
(WebCore::Style::doesNotInheritTextDecoration):
(WebCore::Style::isScrollableOverflow):
(WebCore::Style::computeEffectiveTouchActions):
(WebCore::Style::Adjuster::adjust const):
(WebCore::Style::hasEffectiveDisplayNoneForDisplayContents):
(WebCore::Style::Adjuster::adjustDisplayContentsStyle const):
(WebCore::Style::Adjuster::adjustSVGElementStyle):
(WebCore::Style::Adjuster::adjustForSiteSpecificQuirks const):
(WebCore::Style::hasTextChild):
(WebCore::Style::Adjuster::adjustForTextAutosizing):

  • style/StyleAdjuster.h: Added.
  • svg/SVGElement.cpp:

(WebCore::SVGElement::resolveCustomStyle):

3:05 AM Changeset in webkit [252307] by graouts@webkit.org
  • 2 edits in trunk/Source/WebCore

[Web Animations] Optimize animation resolution to not re-compute whether effects only contain accelerated animation properties
https://bugs.webkit.org/show_bug.cgi?id=204009

Reviewed by Dean Jackson.

A KeyframeEffect already exposes whether it only affects CSS properties that can be accelerated, so use this information instead
of iterating over an effect's animated properties during resolution to get at the same information.

No tests or changes to existed test expectations as this should not yield any change in behavior.

  • dom/Element.cpp:

(WebCore::Element::applyKeyframeEffects):

Nov 8, 2019:

11:05 PM Changeset in webkit [252306] by Tadeu Zagallo
  • 6 edits in trunk/Source/JavaScriptCore

[WebAssembly] LLIntGenerator should not retain VirtualRegisters used for constants
https://bugs.webkit.org/show_bug.cgi?id=204028

Reviewed by Yusuke Suzuki.

The LLIntGenerator was keeping track of which RegisterIDs contained constants in order to materialize
the OSR entry data, since constants were not included in the OSR entry buffer. This was originally done
by adding the registers that contained constants to a vector and never reusing them. This is bad because
the bytecode generator reclaims registers by popping unused registers from the end of the vector and
stops as soon as it finds a used register. As it turns out, constants *should* be included in the buffer,
so we don't need to worry about whether registers contain constants and we can just stop retaining the
registers. An assertion was added to doOSREntry to ensure that the size of the scratch buffer matches the
size of the values to be written, which was not true before.
Additionally, add m_constantMap to LLIntGenerator to avoid adding duplicate constants to code blocks.

  • bytecompiler/BytecodeGenerator.h:
  • bytecompiler/BytecodeGeneratorBase.h:
  • wasm/WasmB3IRGenerator.cpp:

(JSC::Wasm::B3IRGenerator::addLoop):

  • wasm/WasmLLIntGenerator.cpp:

(JSC::Wasm::LLIntGenerator::addConstant):
(JSC::Wasm::LLIntGenerator::addLoop):

  • wasm/WasmOperations.cpp:

(JSC::Wasm::doOSREntry):

10:36 PM WebKitGoalsfor2020 edited by mjs@apple.com
(diff)
10:34 PM WebKitGoalsfor2020 edited by mjs@apple.com
(diff)
10:27 PM Changeset in webkit [252305] by yurys@chromium.org
  • 3 edits
    2 adds in trunk/LayoutTests

New test inspector-protocol/page/archive.html added in r154828 fails on EFL, Qt, GTK
https://bugs.webkit.org/show_bug.cgi?id=120682

Reviewed by Devin Rousso.

Generate custom expectations for inspector-protocol/page/archive.html on the platforms
where Page.archive is not supported yet.

  • inspector/page/archive.html: 'Not supported' is a valid response on some platforms.
  • platform/gtk/TestExpectations:
  • platform/gtk/inspector/page/archive-expected.txt: Added.
8:09 PM Changeset in webkit [252304] by ysuzuki@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, fix debug JSC tests failures due to missing exception check
https://bugs.webkit.org/show_bug.cgi?id=203936

  • tools/JSDollarVM.cpp:

(JSC::functionCallWithStackSize):

8:06 PM Changeset in webkit [252303] by beidson@apple.com
  • 21 edits
    2 copies
    4 adds in trunk

WKWebView Find-in-page API.
<rdar://problem/46971112> and https://bugs.webkit.org/show_bug.cgi?id=203872

Reviewed by Tim Horton.

Source/WebKit:

Covered by API tests.

  • Promote _findString:
  • Add a completion handler for it.
  • SourcesCocoa.txt:
  • UIProcess/API/Cocoa/WKFindConfiguration.h: Added.
  • UIProcess/API/Cocoa/WKFindConfiguration.mm: Added.

(-[WKFindConfiguration init]):
(-[WKFindConfiguration copyWithZone:]):

  • UIProcess/API/Cocoa/WKFindResult.h: Added.
  • UIProcess/API/Cocoa/WKFindResult.mm: Added.

(-[WKFindResult init]):
(-[WKFindResult _initWithMatchFound:]):
(-[WKFindResult copyWithZone:]):

  • UIProcess/API/Cocoa/WKFindResultInternal.h: Added.
  • UIProcess/API/Cocoa/WKWebView.h:
  • UIProcess/API/Cocoa/WKWebView.mm:

(toFindOptions):
(-[WKWebView findString:withConfiguration:completionHandler:]):

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
  • UIProcess/Cocoa/SOAuthorization/PopUpSOAuthorizationSession.h:
  • UIProcess/Cocoa/SOAuthorization/PopUpSOAuthorizationSession.mm:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::findString):
(WebKit::WebPageProxy::findStringCallback):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/WebPage/FindController.cpp:

(WebKit::FindController::findString):

  • WebProcess/WebPage/FindController.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::findString):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitCocoa/FindInPageAPI.mm: Added.

(TEST):

  • TestWebKitAPI/cocoa/TestWKWebView.h:
  • TestWebKitAPI/cocoa/TestWKWebView.mm:

(-[TestWKWebView selectionRangeHasStartOffset:endOffset:]):

7:45 PM Changeset in webkit [252302] by ysuzuki@apple.com
  • 34 edits
    2 moves in trunk/Source/JavaScriptCore

[JSC] Rename LargeAllocation to PreciseAllocation
https://bugs.webkit.org/show_bug.cgi?id=204040

Reviewed by Keith Miller.

After r252298, LargeAllocation is also used for small allocations.
This patch renames from LargeAllocation to PreciseAllocation since it reflects the behavior.

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Sources.txt:
  • heap/CellContainer.cpp:

(JSC::CellContainer::isNewlyAllocated const):

  • heap/CellContainer.h:

(JSC::CellContainer::CellContainer):
(JSC::CellContainer::isMarkedBlock const):
(JSC::CellContainer::isPreciseAllocation const):
(JSC::CellContainer::preciseAllocation const):
(JSC::CellContainer::isLargeAllocation const): Deleted.
(JSC::CellContainer::largeAllocation const): Deleted.

  • heap/CellContainerInlines.h:

(JSC::CellContainer::vm const):
(JSC::CellContainer::isMarked const):
(JSC::CellContainer::noteMarked):
(JSC::CellContainer::assertValidCell const):
(JSC::CellContainer::cellSize const):
(JSC::CellContainer::weakSet const):
(JSC::CellContainer::aboutToMark):
(JSC::CellContainer::areMarksStale const):

  • heap/CompleteSubspace.cpp:

(JSC::CompleteSubspace::tryAllocateSlow):
(JSC::CompleteSubspace::reallocatePreciseAllocationNonVirtual):
(JSC::CompleteSubspace::reallocateLargeAllocationNonVirtual): Deleted.

  • heap/CompleteSubspace.h:
  • heap/Heap.cpp:

(JSC::Heap::sweepInFinalize):

  • heap/HeapCell.cpp:

(JSC::HeapCell::isLive):

  • heap/HeapCell.h:
  • heap/HeapCellInlines.h:

(JSC::HeapCell::isPreciseAllocation const):
(JSC::HeapCell::cellContainer const):
(JSC::HeapCell::preciseAllocation const):
(JSC::HeapCell::vm const):
(JSC::HeapCell::cellSize const):
(JSC::HeapCell::cellAttributes const):
(JSC::HeapCell::subspace const):
(JSC::HeapCell::isLargeAllocation const): Deleted.
(JSC::HeapCell::largeAllocation const): Deleted.

  • heap/HeapInlines.h:

(JSC::Heap::isMarked):
(JSC::Heap::testAndSetMarked):

  • heap/HeapUtil.h:

(JSC::HeapUtil::findGCObjectPointersForMarking):
(JSC::HeapUtil::isPointerGCObjectJSCell):
(JSC::HeapUtil::isValueGCObject):

  • heap/IsoAlignedMemoryAllocator.cpp:

(JSC::IsoAlignedMemoryAllocator::tryReallocateMemory):

  • heap/IsoCellSetInlines.h:

(JSC::IsoCellSet::add):
(JSC::IsoCellSet::remove):
(JSC::IsoCellSet::contains const):
(JSC::IsoCellSet::forEachMarkedCell):
(JSC::IsoCellSet::forEachMarkedCellInParallel):
(JSC::IsoCellSet::forEachLiveCell):

  • heap/IsoSubspace.cpp:

(JSC::IsoSubspace::tryAllocateFromLowerTier):
(JSC::IsoSubspace::sweepLowerTierCell):
(JSC::IsoSubspace::destroyLowerTierFreeList):

  • heap/IsoSubspace.h:
  • heap/MarkedSpace.cpp:

(JSC::MarkedSpace::freeMemory):
(JSC::MarkedSpace::lastChanceToFinalize):
(JSC::MarkedSpace::sweepPreciseAllocations):
(JSC::MarkedSpace::prepareForAllocation):
(JSC::MarkedSpace::enablePreciseAllocationTracking):
(JSC::MarkedSpace::prepareForConservativeScan):
(JSC::MarkedSpace::prepareForMarking):
(JSC::MarkedSpace::resumeAllocating):
(JSC::MarkedSpace::isPagedOut):
(JSC::MarkedSpace::beginMarking):
(JSC::MarkedSpace::endMarking):
(JSC::MarkedSpace::objectCount):
(JSC::MarkedSpace::size):
(JSC::MarkedSpace::sweepLargeAllocations): Deleted.
(JSC::MarkedSpace::enableLargeAllocationTracking): Deleted.

  • heap/MarkedSpace.h:

(JSC::MarkedSpace:: const):
(JSC::MarkedSpace::preciseAllocationsNurseryOffset const):
(JSC::MarkedSpace::preciseAllocationsOffsetForThisCollection const):
(JSC::MarkedSpace::preciseAllocationsForThisCollectionBegin const):
(JSC::MarkedSpace::preciseAllocationsForThisCollectionEnd const):
(JSC::MarkedSpace::preciseAllocationsForThisCollectionSize const):
(JSC::MarkedSpace::largeAllocationsNurseryOffset const): Deleted.
(JSC::MarkedSpace::largeAllocationsOffsetForThisCollection const): Deleted.
(JSC::MarkedSpace::largeAllocationsForThisCollectionBegin const): Deleted.
(JSC::MarkedSpace::largeAllocationsForThisCollectionEnd const): Deleted.
(JSC::MarkedSpace::largeAllocationsForThisCollectionSize const): Deleted.

  • heap/MarkedSpaceInlines.h:

(JSC::MarkedSpace::forEachLiveCell):
(JSC::MarkedSpace::forEachDeadCell):

  • heap/PreciseAllocation.cpp: Renamed from Source/JavaScriptCore/heap/LargeAllocation.cpp.

(JSC::isAlignedForPreciseAllocation):
(JSC::PreciseAllocation::tryCreate):
(JSC::PreciseAllocation::tryReallocate):
(JSC::PreciseAllocation::createForLowerTier):
(JSC::PreciseAllocation::reuseForLowerTier):
(JSC::PreciseAllocation::PreciseAllocation):
(JSC::PreciseAllocation::~PreciseAllocation):
(JSC::PreciseAllocation::lastChanceToFinalize):
(JSC::PreciseAllocation::shrink):
(JSC::PreciseAllocation::visitWeakSet):
(JSC::PreciseAllocation::reapWeakSet):
(JSC::PreciseAllocation::flip):
(JSC::PreciseAllocation::isEmpty):
(JSC::PreciseAllocation::sweep):
(JSC::PreciseAllocation::destroy):
(JSC::PreciseAllocation::dump const):
(JSC::PreciseAllocation::assertValidCell const):

  • heap/PreciseAllocation.h: Renamed from Source/JavaScriptCore/heap/LargeAllocation.h.

(JSC::PreciseAllocation::fromCell):
(JSC::PreciseAllocation::isPreciseAllocation):
(JSC::PreciseAllocation::headerSize):
(JSC::PreciseAllocation::basePointer const):

  • heap/SlotVisitor.cpp:

(JSC::SlotVisitor::appendHiddenSlowImpl):
(JSC::SlotVisitor::appendToMarkStack):

  • heap/SlotVisitorInlines.h:

(JSC::SlotVisitor::appendUnbarriered):
(JSC::SlotVisitor::appendHiddenUnbarriered):

  • heap/Subspace.h:
  • heap/SubspaceInlines.h:

(JSC::Subspace::forEachPreciseAllocation):
(JSC::Subspace::forEachMarkedCell):
(JSC::Subspace::forEachMarkedCellInParallel):
(JSC::Subspace::forEachLiveCell):
(JSC::Subspace::forEachLargeAllocation): Deleted.

  • heap/WeakBlock.cpp:

(JSC::WeakBlock::visit):

  • heap/WeakSet.cpp:

(JSC::WeakSet::sweep):

  • llint/LowLevelInterpreter.asm:
  • runtime/ButterflyInlines.h:

(JSC::Butterfly::reallocArrayRightIfPossible):

  • runtime/OptionsList.h:
  • runtime/SamplingProfiler.cpp:

(JSC::SamplingProfiler::SamplingProfiler):

  • tools/VMInspector.cpp:

(JSC::VMInspector::isInHeap):

  • tools/VMInspectorInlines.h:

(JSC::VMInspector::verifyCell):

7:29 PM Changeset in webkit [252301] by Chris Dumez
  • 6 edits in trunk/Source/WebCore

Add back/forward cache quirk for Vimeo.com
https://bugs.webkit.org/show_bug.cgi?id=204025
<rdar://problem/56996057>

Reviewed by Antti Koivisto.

Vimeo.com used to bypass the back/forward cache by serving "Cache-Control: no-store" over HTTPS.
We started caching such content in r250437 but the vimeo.com content unfortunately is not currently compatible
because it changes the opacity of its body to 0 when navigating away and fails to restore the original opacity
when coming back from the back/forward cache (e.g. in 'pageshow' event handler).

To address the issue, this patch introduces a quirk to restore pre-r250437 on Vimeo.com, until they get
a chance to fix their content.

  • history/BackForwardCache.cpp:

(WebCore::canCacheFrame):

  • page/DiagnosticLoggingKeys.cpp:

(WebCore::DiagnosticLoggingKeys::siteSpecificQuirkKey):

  • page/DiagnosticLoggingKeys.h:
  • page/Quirks.cpp:

(WebCore::Quirks::shouldBypassBackForwardCache const):

  • page/Quirks.h:
7:02 PM Changeset in webkit [252300] by youenn@apple.com
  • 5 edits in trunk/Source/WebCore

SWServerWorker in redundant state do not need to process messages from the context process
https://bugs.webkit.org/show_bug.cgi?id=204019

Reviewed by Chris Dumez.

When a service worker is marked as redundant in network process, it might still receive some messages like didFinishActivation or didFinishInstall.
In that state, we do not need to process these messages.
Did some refactoring to directly pass the service worker to the job queue.
This makes it clear the registration and service worker are the correct ones.

  • workers/service/server/SWServer.cpp:

(WebCore::SWServer::didFinishInstall):
Pass the worker instead of its identifier.

  • workers/service/server/SWServerJobQueue.cpp:

(WebCore::SWServerJobQueue::didFinishInstall):
Now that we are given the service worker, get its registration directly.

  • workers/service/server/SWServerJobQueue.h:
  • workers/service/server/SWServerWorker.cpp:

(WebCore::SWServerWorker::didFinishInstall):
Exit early in redundant state.
(WebCore::SWServerWorker::didFinishActivation):
Exit early in redundant state.

6:44 PM Changeset in webkit [252299] by youenn@apple.com
  • 5 edits in trunk

XMLHttpRequestUpload should be exposed in dedicated workers
https://bugs.webkit.org/show_bug.cgi?id=203901

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

  • web-platform-tests/workers/semantics/interface-objects/001.worker-expected.txt:
  • web-platform-tests/xhr/idlharness.any.worker-expected.txt:

Source/WebCore:

Covered by rebased test.

  • xml/XMLHttpRequestUpload.idl:
5:37 PM Changeset in webkit [252298] by ysuzuki@apple.com
  • 28 edits in trunk/Source/JavaScriptCore

[JSC] Make IsoSubspace scalable
https://bugs.webkit.org/show_bug.cgi?id=201908

Reviewed by Keith Miller.

This patch introduces lower-tier into IsoSubspace so that we can avoid allocating MarkedBlock
if a certain type of object is not allocated so many. This optimization allows us apply IsoSubspace
more aggressively to various types of objects without introducing memory regression even if such a
type of object is allocated so frequently.

We use LargeAllocation for these lower-tier objects. Each IsoSubspace holds up to 8 lower-tier objects
allocated via LargeAllocation. We use this special LargeAllocation when we tend to allocate small # of cells
for this type. Specifically, what we are doing right now is, (1) first, try to allocate in an existing
MarkedBlock (there won't be one to start), and (2) then, try to allocate in LargeAllocation, and if we cannot
allocate lower-tier objects, (3) finally we allocate a new MarkedBlock. Once this LargeAllocation is allocated
to a certain type, we do not deallocate it until VM is destroyed, so that we can keep IsoSubspace's
characteristics: once an address is assigned to a certain type, we continue using this address only for this type.

To introduce this optimization, we need to remove an restriction that no callee cells can be a LargeAllocation.
This also turns out that SamplingProfiler's isValueGCObject is heavily relies on that all the callee is small-sized.
isValueGCObject relies on the thing that MarkedSpace::m_largeAllocations is sorted. But this is not true since
this vector is sorted only when conservative scan happens. And further, this vector is only partially sorted: we
sort only an eden part part of this vector. So we cannot use this vector to implement isValueGCObject in the sampling
profiler. Instead we register HeapCell address into a hash-set in MarkedSpace. Since we do not need to find a pointer
that is pointing at the middle of the JSCell in sampling profiler, just registering cell address is enough. And we
maintain this hash-set only when sampling profiler is enabled to save memory in major cases.

We also fix the code that is relying on that JSString is always allocated in MarkedBlock. And we also fix PackedCellPtr's
assumption that CodeBlock is always allocated in MarkedBlock.

We also make sizeof(LargeAllocation) small since it is now used for non-large allocations.

JetStream2 and Speedometer2 are neutral. RAMification shows 0.6% progression on iOS devices.

  • heap/BlockDirectory.cpp:

(JSC::BlockDirectory::BlockDirectory):

  • heap/BlockDirectory.h:
  • heap/BlockDirectoryInlines.h:

(JSC::BlockDirectory::tryAllocateFromLowerTier):

  • heap/CompleteSubspace.cpp:

(JSC::CompleteSubspace::allocatorForSlow):
(JSC::CompleteSubspace::tryAllocateSlow):
(JSC::CompleteSubspace::reallocateLargeAllocationNonVirtual):

  • heap/Heap.cpp:

(JSC::Heap::dumpHeapStatisticsAtVMDestruction):
(JSC::Heap::addCoreConstraints):

  • heap/HeapUtil.h:

(JSC::HeapUtil::isPointerGCObjectJSCell):
(JSC::HeapUtil::isValueGCObject):

  • heap/IsoAlignedMemoryAllocator.cpp:

(JSC::IsoAlignedMemoryAllocator::tryAllocateMemory):
(JSC::IsoAlignedMemoryAllocator::freeMemory):
(JSC::IsoAlignedMemoryAllocator::tryReallocateMemory):

  • heap/IsoCellSet.cpp:

(JSC::IsoCellSet::~IsoCellSet):

  • heap/IsoCellSet.h:
  • heap/IsoCellSetInlines.h:

(JSC::IsoCellSet::add):
(JSC::IsoCellSet::remove):
(JSC::IsoCellSet::contains const):
(JSC::IsoCellSet::forEachMarkedCell):
(JSC::IsoCellSet::forEachMarkedCellInParallel):
(JSC::IsoCellSet::forEachLiveCell):
(JSC::IsoCellSet::sweepLowerTierCell):

  • heap/IsoSubspace.cpp:

(JSC::IsoSubspace::IsoSubspace):
(JSC::IsoSubspace::tryAllocateFromLowerTier):
(JSC::IsoSubspace::sweepLowerTierCell):

  • heap/IsoSubspace.h:
  • heap/LargeAllocation.cpp:

(JSC::LargeAllocation::tryReallocate):
(JSC::LargeAllocation::createForLowerTier):
(JSC::LargeAllocation::reuseForLowerTier):
(JSC::LargeAllocation::LargeAllocation):

  • heap/LargeAllocation.h:

(JSC::LargeAllocation::lowerTierIndex const):
(JSC::LargeAllocation::isLowerTier const):

  • heap/LocalAllocator.cpp:

(JSC::LocalAllocator::allocateSlowCase):

  • heap/MarkedBlock.cpp:

(JSC::MarkedBlock::Handle::Handle):
(JSC::MarkedBlock::Handle::stopAllocating):

  • heap/MarkedBlock.h:

(JSC::MarkedBlock::Handle::forEachCell):

  • heap/MarkedSpace.cpp:

(JSC::MarkedSpace::freeMemory):
(JSC::MarkedSpace::lastChanceToFinalize):
(JSC::MarkedSpace::sweepLargeAllocations):
(JSC::MarkedSpace::enableLargeAllocationTracking):

  • heap/MarkedSpace.h:

(JSC::MarkedSpace:: const):

  • heap/PackedCellPtr.h:

(JSC::PackedCellPtr::PackedCellPtr):

  • heap/Subspace.h:
  • heap/WeakSet.cpp:

(JSC::WeakSet::~WeakSet):
(JSC::WeakSet::findAllocator):
(JSC::WeakSet::addAllocator):

  • heap/WeakSet.h:

(JSC::WeakSet::WeakSet):
(JSC::WeakSet::resetAllocator):
(JSC::WeakSet::container const): Deleted.
(JSC::WeakSet::setContainer): Deleted.

  • heap/WeakSetInlines.h:

(JSC::WeakSet::allocate):

  • runtime/InternalFunction.cpp:

(JSC::InternalFunction::InternalFunction):

  • runtime/JSCallee.cpp:

(JSC::JSCallee::JSCallee):

  • runtime/JSString.h:
  • runtime/SamplingProfiler.cpp:

(JSC::SamplingProfiler::SamplingProfiler):
(JSC::SamplingProfiler::processUnverifiedStackTraces):
(JSC::SamplingProfiler::releaseStackTraces):
(JSC::SamplingProfiler::stackTracesAsJSON):
(JSC::SamplingProfiler::reportTopFunctions):
(JSC::SamplingProfiler::reportTopBytecodes):

  • runtime/SamplingProfiler.h:
5:09 PM Changeset in webkit [252297] by jiewen_tan@apple.com
  • 4 edits in trunk/Source

[WebAuthn] Add quirk needed to support legacy Google NFC Titan security keys
https://bugs.webkit.org/show_bug.cgi?id=204024
<rdar://problem/56962320>

Reviewed by Brent Fulgham.

Source/WebCore:

Covered by manual tests.

  • Modules/webauthn/fido/FidoConstants.h:

Source/WebKit:

Some legacy U2F keys such as Google T1 Titan don't understand the FIDO applet command. Instead,
they are configured to only have the FIDO applet. Therefore, when the above command fails, we
use U2F_VERSION command to double check if the connected tag can actually speak U2F, indicating
we are interacting with one of these legacy keys.

  • UIProcess/WebAuthentication/Cocoa/NfcConnection.mm:

(WebKit::fido::compareVersion):
(WebKit::fido::trySelectFidoApplet):
(WebKit::NfcConnection::transact const):
(WebKit::NfcConnection::didDetectTags):

4:52 PM Changeset in webkit [252296] by Alan Coon
  • 2 edits in tags/Safari-609.1.10.1/Tools

Cherry-pick r252061. rdar://problem/55854631

TestWebKitAPI.WebKit.DocumentEditingContext is failing on iPad
https://bugs.webkit.org/show_bug.cgi?id=203828
<rdar://problem/55854631>

Reviewed by Myles Maxfield.

Specify both a font size and line height when using Ahem as per [1]. Otherwise, text may be
rendered inconsistently. Plus, disable text-autosizing and fix viewport to make test result
consistent on both iPhone and iPad.

[1] <https://web-platform-tests.org/writing-tests/ahem.html>

  • TestWebKitAPI/Tests/WebKitCocoa/DocumentEditingContext.mm: (applyStyle): Remove unused style for <iframe>s and fix up parameter name to conform to style guide. (applyAhemStyle): Set -webkit-text-size-adjust to 100% to disable auto-sizing. Fix viewport width and initial scale to ensure the result is the same on both iPhone and iPad. Also remove unused style for <iframe>s and renamed parameter name to conform to style guide. (TEST):

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

4:52 PM Changeset in webkit [252295] by Alan Coon
  • 5 edits
    2 adds in tags/Safari-609.1.10.1/Tools

Cherry-pick r252023. rdar://problem/55854631

Add Googletest assertion support for CGRect and NSRect
https://bugs.webkit.org/show_bug.cgi?id=203817

Reviewed by Myles C. Maxfield.

Add operator== and operator<< overloads for CGRect and NSRect so that these types can be
passed to EXPECT_EQ() and other Googletest assertions.

To make use of these overloads Cocoa tests should include #import "TestCocoa.h" instead of
"Test.h". TestCocoa.h imports Test.h. With these overloads an assertion like this:

EXPECT_EQ(CGRectMake(0, 0, 23, 24), rects[0].CGRectValue);

will produce output like this when it fails:

Expected equality of these values:

CGRectMake(138, 0, 23, 24)

Which is: (origin = (x = 138, y = 0), size = (width = 23, height = 24))

rects.firstObject.CGRectValue

Which is: (origin = (x = 96, y = 0), size = (width = 16, height = 17))

  • TestWebKitAPI/SourcesCocoa.txt:
  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: Add source files.
  • TestWebKitAPI/Tests/WebKitCocoa/DocumentEditingContext.mm:
  • TestWebKitAPI/Tests/WebKitCocoa/RequestTextInputContext.mm: Write in terms of EXPECT_EQ() now that it just works when passed CGRects.
  • TestWebKitAPI/cocoa/TestCocoa.h: Added.
  • TestWebKitAPI/cocoa/TestCocoa.mm: Added. (ostreamRectCommon): (operator<<): (operator==):

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

4:52 PM Changeset in webkit [252294] by Alan Coon
  • 10 edits
    2 copies
    5 moves
    48 adds
    3 deletes in tags/Safari-609.1.10.1

Cherry-pick r252202. rdar://problem/56270900

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.

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

4:52 PM Changeset in webkit [252293] by Alan Coon
  • 2 edits in tags/Safari-609.1.10.1/Source/WebKit

Cherry-pick r252183. rdar://problem/54769320

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 Liu> 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

4:52 PM Changeset in webkit [252292] by Alan Coon
  • 7 edits in tags/Safari-609.1.10.1

Cherry-pick r252172. rdar://problem/56580680

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

4:52 PM Changeset in webkit [252291] by Alan Coon
  • 2 edits in tags/Safari-609.1.10.1/Source/bmalloc

Cherry-pick r252157. rdar://problem/56761470

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

4:52 PM Changeset in webkit [252290] by Alan Coon
  • 3 edits
    2 adds in tags/Safari-609.1.10.1

Cherry-pick r252156. rdar://problem/55821375

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

4:52 PM Changeset in webkit [252289] by Alan Coon
  • 2 edits in tags/Safari-609.1.10.1/LayoutTests

Cherry-pick r252146. rdar://problem/56425901

[ 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

4:52 PM Changeset in webkit [252288] by Alan Coon
  • 10 edits in tags/Safari-609.1.10.1/Source

Cherry-pick r252124. rdar://problem/56524251

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

4:52 PM Changeset in webkit [252287] by Alan Coon
  • 5 edits in tags/Safari-609.1.10.1

Cherry-pick r252116. rdar://problem/55490308

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

4:51 PM Changeset in webkit [252286] by Alan Coon
  • 3 edits in tags/Safari-609.1.10.1/Source/WebCore

Cherry-pick r252077. rdar://problem/56891110

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

4:51 PM Changeset in webkit [252285] by Alan Coon
  • 4 edits
    2 adds in tags/Safari-609.1.10.1

Cherry-pick r252070. rdar://problem/56559648

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

4:51 PM Changeset in webkit [252284] by Alan Coon
  • 2 edits in tags/Safari-609.1.10.1/Source/WebCore

Cherry-pick r252059. rdar://problem/56889717

http/tests/media/track-in-band-hls-metadata.html sometimes crashes after r251626
https://bugs.webkit.org/show_bug.cgi?id=203849
<rdar://problem/56889717>

Reviewed by Youenn Fablet.

No new tests, fixes existing test.

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: (-[WebCoreAVFMovieObserver metadataOutput:didOutputTimedMetadataGroups:fromPlayerItemTrack:]): Return early if m_player has been cleared. (-[WebCoreAVFMovieObserver metadataCollector:didCollectDateRangeMetadataGroups:indexesOfNewGroups:indexesOfModifiedGroups:]): Ditto.

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

4:51 PM Changeset in webkit [252283] by Alan Coon
  • 3 edits in tags/Safari-609.1.10.1/LayoutTests

Cherry-pick r252051. rdar://problem/56080440

[iOS] Update fast/forms/ios/file-upload-panel.html test and results
https://bugs.webkit.org/show_bug.cgi?id=203823
<rdar://problem/56080440>

Reviewed by Youenn Fablet.

  • fast/forms/ios/file-upload-panel-expected.txt:
  • fast/forms/ios/file-upload-panel.html:

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

4:51 PM Changeset in webkit [252282] by Alan Coon
  • 2 edits in tags/Safari-609.1.10.1/LayoutTests

Cherry-pick r252042. rdar://problem/56123067

[iOS] LayoutTest fast/events/touch/ios/double-tap-for-double-click3.html is failing
https://bugs.webkit.org/show_bug.cgi?id=203835
<rdar://problem/56123067>

Unable to reproduce. Inserting a double-tap-delay between the events usually fixes these problems.

Reviewed by Wenson Hsieh.

  • fast/events/touch/ios/double-tap-for-double-click3.html:

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

4:51 PM Changeset in webkit [252281] by Alan Coon
  • 2 edits in tags/Safari-609.1.10.1/LayoutTests

Cherry-pick r252041. rdar://problem/55664976

[iOS] fast/events/touch/ios/content-observation/click-event-suppression-on-content-change.html is failing
https://bugs.webkit.org/show_bug.cgi?id=203838
<rdar://problem/55664976>

Reviewed by Wenson Hsieh.

Unable to reproduce. Replace the magic 50ms timeouts with the more robust UIHelper.waitForDoubleTapDelay().

  • fast/events/touch/ios/content-observation/click-event-suppression-on-content-change.html:

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

4:51 PM Changeset in webkit [252280] by Alan Coon
  • 4 edits in tags/Safari-609.1.10.1/Source/WebCore

Cherry-pick r252022. rdar://problem/56550488

REGRESSION (r248750): Drop-down menu for Walgreens 2FA unresponsive to touch
https://bugs.webkit.org/show_bug.cgi?id=203821
<rdar://problem/56550488>

Reviewed by Zalan Bujtas.

The dropdown in question in the Walgreens app uses UIWebView. In this report, tapping the dropdown menu (which
installs DOMTimers upon touchstart) no longer dispatches a click event. This reproduces in WebKit1, but not in
WebKit2.

After r248750, we no longer transition from IndeterminateChange to NoChange before calling out to the client
layer to report a deferred content observation change (in legacy WebKit, this is a call to the delegate method
-webView:didObserveDeferredContentChange:forFrame:).

In WebKit2, logic in WebPage::handleSyntheticClick handles indeterminate content changes after dispatching
mousemove by starting a fixed 32ms content observation timer, after the end of which we transition from
indeterminate to either NoChange or VisibilityChange, and call out to the client. This logic is absent in
WebKitLegacy, where we directly report the current content observation state to the client.

As such, the content change is still indeterminate when we finally call out to the client layer in the runloop
after dispatching the mousemove event in EventHandler::mouseMoved(). Client code in UIKit does not expect this,
and assumes that the given WKContentChange must either be NoChange or VisibilityChange; thus, it handles
indeterminate change as VisibilityChange and does not dispatch a click.

This legacy-WebKit-specific call to didFinishContentChangeObserving is intended to act as a failsafe to stop
content observation after mousemove, if any active timers scheduled during touchstart have already finished
executing. To fix this bug, instead of calling out to WebChromeClient::didFinishContentChangeObserving directly,
add a new method to ContentChangeObserver to inform it that a mousemove event has been handled; here, we call
notifyClientIfNeeded, which will transition the content change state from indeterminate to NoChange if needed
before calling out to the client.

No new test, because we don't have any mechanism for simulating user interaction in UIWebView (and inventing one
at this stage would have diminishing returns at best).

  • page/ios/ContentChangeObserver.cpp: (WebCore::ContentChangeObserver::willNotProceedWithFixedObservationTimeWindow): (WebCore::ContentChangeObserver::adjustObservedState):
  • page/ios/ContentChangeObserver.h:
  • page/ios/EventHandlerIOS.mm: (WebCore::EventHandler::mouseMoved):

Replace the call to WebChromeClient::didFinishContentChangeObserving with a ContentChangeObserver method that
turns around and calls into notifyClientIfNeeded, via ContentChangeObserver::adjustObservedState.

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

4:51 PM Changeset in webkit [252279] by Alan Coon
  • 2 edits in tags/Safari-609.1.10.1/Source/JavaScriptCore

Cherry-pick r252006. rdar://problem/56840002

Surpress ASAN in SamplingProfiler's FrameWalker::resetAtMachineFrame().
https://bugs.webkit.org/show_bug.cgi?id=203819
<rdar://problem/56840002>

Reviewed by Saam Barati.

  • runtime/SamplingProfiler.cpp: (JSC::FrameWalker::resetAtMachineFrame):

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

4:51 PM Changeset in webkit [252278] by Alan Coon
  • 2 edits in tags/Safari-609.1.10.1/Source/WebCore

Cherry-pick r251992. rdar://problem/56648063

enumerateDevices() doesn't return correct list of devices after device was changed by user in a system preferences
https://bugs.webkit.org/show_bug.cgi?id=203407
<rdar://problem/56648063>

Reviewed by Youenn Fablet.

Tested manually as this doesn't reproduce with mock capture devices.

  • platform/mediastream/mac/CoreAudioCaptureDeviceManager.cpp: (WebCore::CoreAudioCaptureDeviceManager::coreAudioCaptureDevices): Refresh the list of capture devices when the default input device changes. (WebCore::CoreAudioCaptureDeviceManager::refreshAudioCaptureDevices): Assert if not called on the main thread.

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

4:51 PM Changeset in webkit [252277] by Alan Coon
  • 7 edits
    1 add in tags/Safari-609.1.10.1

Cherry-pick r251978. rdar://problem/56840003

LLIntGenerator should not allocate temporaries in between variables
https://bugs.webkit.org/show_bug.cgi?id=203787

Reviewed by Yusuke Suzuki.

JSTests:

  • wasm/stress/local-ref.js: Added.

Source/JavaScriptCore:

The BytecodeGenerator requires that all variables must be allocated contiguously, before any
temporaries are allocated. Currently, we might end up allocating a temporary to materialize
the null constant to initialize locals of type Anyref/Funcref. Fix it by keeping track of the
locals that need to be initialized and adding a new callback to notify when we have finished
parsing locals. Only then we perform the delayed initialization of local refs.

  • wasm/WasmAirIRGenerator.cpp: (JSC::Wasm::AirIRGenerator::didFinishParsingLocals):
  • wasm/WasmB3IRGenerator.cpp: (JSC::Wasm::B3IRGenerator::didFinishParsingLocals):
  • wasm/WasmFunctionParser.h: (JSC::Wasm::FunctionParser<Context>::parse):
  • wasm/WasmLLIntGenerator.cpp: (JSC::Wasm::LLIntGenerator::addLocal): (JSC::Wasm::LLIntGenerator::didFinishParsingLocals):
  • wasm/WasmValidate.cpp: (JSC::Wasm::Validate::didFinishParsingLocals):

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

4:39 PM Changeset in webkit [252276] by commit-queue@webkit.org
  • 11 edits
    20 moves
    3 adds in trunk

Entering/Exiting Picture-in-Picture mode through webkitSetPresentationMode() does not fire events (enterpictureinpicture and leavepictureinpicture) defined in the spec
https://bugs.webkit.org/show_bug.cgi?id=203989

Patch by Peng Liu <Peng Liu> on 2019-11-08
Reviewed by Eric Carlson.

Source/WebCore:

Instantiate a HTMLVideoElementPictureInPicture object when we create a new video element
so that the events defined in the spec will be fired no matter which interface is used
to enter/exit the Picture-in-Picture mode.

Test: media/picture-in-picture/picture-in-picture-events.html

  • Modules/pictureinpicture/HTMLVideoElementPictureInPicture.cpp:

(WebCore::HTMLVideoElementPictureInPicture::providePictureInPictureTo):

  • Modules/pictureinpicture/HTMLVideoElementPictureInPicture.h:
  • WebCore.xcodeproj/project.pbxproj:
  • html/HTMLVideoElement.cpp:

(WebCore::HTMLVideoElement::create):

LayoutTests:

Move all layout tests for Picture-in-Picture to folder media/picture-in-picture.
Add a layout test to verify the events defined in the spec are fired when we call the webkit prefixed API.
Update TestExpectations files since webkit.org/b/203614 has been fixed.

  • TestExpectations:
  • media/picture-in-picture/picture-in-picture-api-element-attributes-expected.txt: Renamed from LayoutTests/media/picture-in-picture-api-element-attributes-expected.txt.
  • media/picture-in-picture/picture-in-picture-api-element-attributes.html: Renamed from LayoutTests/media/picture-in-picture-api-element-attributes.html.
  • media/picture-in-picture/picture-in-picture-api-enter-pip-1-expected.txt: Renamed from LayoutTests/media/picture-in-picture-api-enter-pip-1-expected.txt.
  • media/picture-in-picture/picture-in-picture-api-enter-pip-1.html: Renamed from LayoutTests/media/picture-in-picture-api-enter-pip-1.html.
  • media/picture-in-picture/picture-in-picture-api-enter-pip-2-expected.txt: Renamed from LayoutTests/media/picture-in-picture-api-enter-pip-2-expected.txt.
  • media/picture-in-picture/picture-in-picture-api-enter-pip-2.html: Renamed from LayoutTests/media/picture-in-picture-api-enter-pip-2.html.
  • media/picture-in-picture/picture-in-picture-api-enter-pip-3-expected.txt: Renamed from LayoutTests/media/picture-in-picture-api-enter-pip-3-expected.txt.
  • media/picture-in-picture/picture-in-picture-api-enter-pip-3.html: Renamed from LayoutTests/media/picture-in-picture-api-enter-pip-3.html.
  • media/picture-in-picture/picture-in-picture-api-enter-pip-4-expected.txt: Renamed from LayoutTests/media/picture-in-picture-api-enter-pip-4-expected.txt.
  • media/picture-in-picture/picture-in-picture-api-enter-pip-4.html: Renamed from LayoutTests/media/picture-in-picture-api-enter-pip-4.html.
  • media/picture-in-picture/picture-in-picture-api-events-expected.txt: Renamed from LayoutTests/media/picture-in-picture-api-pip-events-expected.txt.
  • media/picture-in-picture/picture-in-picture-api-events.html: Renamed from LayoutTests/media/picture-in-picture-api-pip-events.html.
  • media/picture-in-picture/picture-in-picture-api-exit-pip-1-expected.txt: Renamed from LayoutTests/media/picture-in-picture-api-exit-pip-1-expected.txt.
  • media/picture-in-picture/picture-in-picture-api-exit-pip-1.html: Renamed from LayoutTests/media/picture-in-picture-api-exit-pip-1.html.
  • media/picture-in-picture/picture-in-picture-api-exit-pip-2-expected.txt: Renamed from LayoutTests/media/picture-in-picture-api-exit-pip-2-expected.txt.
  • media/picture-in-picture/picture-in-picture-api-exit-pip-2.html: Renamed from LayoutTests/media/picture-in-picture-api-exit-pip-2.html.
  • media/picture-in-picture/picture-in-picture-api-pip-window-expected.txt: Renamed from LayoutTests/media/picture-in-picture-api-pip-window-expected.txt.
  • media/picture-in-picture/picture-in-picture-api-pip-window.html: Renamed from LayoutTests/media/picture-in-picture-api-pip-window.html.
  • media/picture-in-picture/picture-in-picture-events-expected.txt: Added.
  • media/picture-in-picture/picture-in-picture-events.html: Added.
  • media/picture-in-picture/picture-in-picture-interruption-expected.txt: Renamed from LayoutTests/media/picture-in-picture-interruption-expected.txt.
  • media/picture-in-picture/picture-in-picture-interruption.html: Renamed from LayoutTests/media/picture-in-picture-interruption.html.
  • platform/gtk/TestExpectations:
  • platform/ios/TestExpectations:
  • platform/ipad/TestExpectations:
  • platform/mac-wk2/TestExpectations:
4:32 PM Changeset in webkit [252275] by Jonathan Bedard
  • 2 edits in trunk/Tools

Simulators having trouble launching apps after booting
<rdar://problem/57032042>

Unreviewed infrastructure fix.

  • Scripts/webkitpy/port/simulator_process.py:

(SimulatorProcess._start): Temporarily increase timeout to help out bots.

4:20 PM Changeset in webkit [252274] by Jonathan Bedard
  • 22 edits in trunk/Source/WebKit

Unreviewed, rolling out r252260.

Breaks half of API tests

Reverted changeset:

"Make DownloadID an ObjectIdentifier"
https://bugs.webkit.org/show_bug.cgi?id=203962
https://trac.webkit.org/changeset/252260

4:11 PM Changeset in webkit [252273] by Matt Lewis
  • 46 edits in trunk/Source/JavaScriptCore

Unreviewed, rolling out r252229.

This caused internal failures.

Reverted changeset:

"Split ArithProfile into a Unary and a Binary version"
https://bugs.webkit.org/show_bug.cgi?id=202832
https://trac.webkit.org/changeset/252229

4:10 PM WPE/Releasing edited by Adrian Perez de Castro
(diff)
4:03 PM Changeset in webkit [252272] by Jonathan Bedard
  • 4 edits
    4 adds in trunk/Tools

results.webkit.org: List failing tests for criteria
https://bugs.webkit.org/show_bug.cgi?id=203905

Rubber-stamped by Aakash Jain.

  • resultsdbpy/resultsdbpy/controller/api_routes.py:

(APIRoutes.init): Add FailureController and /failures endpoint.

  • resultsdbpy/resultsdbpy/controller/failure_controller.py: Added.

(FailureController): Added FailureController object to drive /failure endpoint.
(FailureController.init):
(FailureController.failures): Return a json list of failures for a range.

  • resultsdbpy/resultsdbpy/controller/failure_controller_unittest.py: Added.

(FailureControllerTest): Test the /failure API.
(FailureControllerTest.setup_webserver):
(FailureControllerTest.test_failures_collapsed):
(FailureControllerTest.test_unexpected_failures_collapsed):
(FailureControllerTest.test_failures):
(FailureControllerTest.test_unexpected_failures):
(FailureControllerTest.test_failure_by_time):

  • resultsdbpy/resultsdbpy/model/failure_context.py: Added.

(FailureContext): Database access to tables recording test failures.
(FailureContext.TestFailuresBase):
(FailureContext.TestFailuresBase.unpack):
(FailureContext.TestFailuresByCommit): Save test failures sorted by commit.
(FailureContext.TestFailuresByStartTime): Save test failures sorted by start time.
(FailureContext.UnexpectedTestFailuresByCommit): Save unexpected test failures
sorted by commit.
(FailureContext.UnexpectedTestFailuresByStartTime): Save unexpected test failures
sorted by commit.
(FailureContext.init):
(FailureContext.register): Register test failures to each of the 4 tables for an upload.
(FailureContext._failures): Return a list of test failures from a table.
(FailureContext.failures_by_commit): Return a list of test failures from a table sorted
by commit.
(FailureContext.failures_by_start_time): Return a list of test failures from a table
sorted by commit.

  • resultsdbpy/resultsdbpy/model/failure_context_unittest.py: Added.

(FailureContextTest):
(FailureContextTest.init_database):
(FailureContextTest.test_failures_collapsed):
(FailureContextTest.test_unexpected_failures_collapsed):
(FailureContextTest.test_failures):
(FailureContextTest.test_unexpected_failures):

  • resultsdbpy/resultsdbpy/model/model.py:

(Model.init):

  • resultsdbpy/resultsdbpy/view/templates/documentation.html: Add documentation

for the /failure endpoint.

3:40 PM Changeset in webkit [252271] by Kocsen Chung
  • 7 edits in tags/Safari-609.1.10/Source

Revert Versioning.

3:34 PM Changeset in webkit [252270] by Alan Coon
  • 1 delete in tags/Safari-609.1.10.0

Delete tag.

3:28 PM Changeset in webkit [252269] by Alan Coon
  • 7 edits in tags/Safari-609.1.10.0.1/Source

Versioning.

3:26 PM Changeset in webkit [252268] by Alan Coon
  • 1 copy in tags/Safari-609.1.10.0.1

New tag.

3:18 PM Changeset in webkit [252267] by Alan Coon
  • 7 edits in tags/Safari-609.1.10.0/Source

Versioning.

3:15 PM Changeset in webkit [252266] by Alan Coon
  • 1 copy in tags/Safari-609.1.10.0

New tag.

3:03 PM Changeset in webkit [252265] by Kocsen Chung
  • 7 edits in tags/Safari-609.1.10/Source

Versioning.

3:01 PM Changeset in webkit [252264] by Antti Koivisto
  • 3 edits in trunk/Source/WebKit

Use separate cache directory for development WebKit on Mac
https://bugs.webkit.org/show_bug.cgi?id=204015

Reviewed by Youenn Fablet.

Replace the NetworkCache::lastStableVersion scheme with a completely separate directory.
This way potential bugs in development WebKit can't end up affecting system WebKit cache.
This also removes the need to keep lastStableVersion updated.

  • NetworkProcess/cache/NetworkCacheStorage.cpp:

(WebKit::NetworkCache::makeCachePath):

Add '/Development' to cache path if this is not system WebKit.

(WebKit::NetworkCache::Storage::open):
(WebKit::NetworkCache::Storage::deleteOldVersions):

No need to avoid deleting lastStableVersion anymore.

  • NetworkProcess/cache/NetworkCacheStorage.h:
2:10 PM Changeset in webkit [252263] by Chris Dumez
  • 24 edits in trunk

Make DeferredPromise behave nicely with regards to the back/forward cache
https://bugs.webkit.org/show_bug.cgi?id=203976

Reviewed by Ryosuke Niwa.

Source/JavaScriptCore:

Add template parameter to JSC::Strong to indicate that the destructor should grab the JS lock.
Normally, the callers are in charge of grabbing the lock but this is not always feasible.
In particular, in this patch, I capture a JSC::Strong in a lambda. If the document gets destroyed
before the lambda has run, the lambda will get destroyed and it will destroy the captured JSC::Strong
as a result.

  • heap/Handle.h:
  • heap/Strong.h:

(JSC::Strong::clear):

  • heap/StrongInlines.h:

(JSC::shouldStrongDestructorGrabLock>::Strong):
(JSC::shouldStrongDestructorGrabLock>::set):

Source/WebCore:

Previously, DeferredPromise would ignore requests to fulfill the promise if
reject/resolve/settle got called while the promise's script execution context
is suspended in the back/forward cache. This is really never the right thing to
do though because this means the promise will never be fulfilled if the user
ever goes back to this page.

To address the issue, DeferredPromise now schedules a task on the event loop if
it gets fulfilled while its script execution context is suspended. As a result,
the promise will properly get fulfilled if the document ever comes out of the
back/forward cache and developers using DeferredPromise do not have to worry
about suspension.

Now that DeferredPromise properly deals with suspended documents, this patch also
reverts changes I made recently in code using DeferredPromise. I had made them
queue a task on the event loop before fulfilling the promise, which did not match
their specification and is no longer needed.

Note that capturing the Strong<> in the lambda is correct here because we want
the resolution value to survive until either:

  1. The task is processed by the event loop and the promise is resolved.
  2. The back/forward cache entry containing this document is destroyed

Note that we do not leak here because when the back/forward cache's CachedFrame
gets destroyed, it will call Document::prepareForDestruction(), which will call
WindowEventLoop::stop() and destroys all pending tasks associated with this
document. This will therefore destroy the Strong captured in the task.

No new tests, covered by existing back/forward cache tests.

  • Modules/cache/DOMCacheStorage.cpp:

(WebCore::DOMCacheStorage::doSequentialMatch):
(WebCore::DOMCacheStorage::match):
(WebCore::DOMCacheStorage::has):
(WebCore::DOMCacheStorage::open):
(WebCore::DOMCacheStorage::doOpen):
(WebCore::DOMCacheStorage::remove):
(WebCore::DOMCacheStorage::doRemove):
(WebCore::DOMCacheStorage::keys):

  • Modules/cache/DOMCacheStorage.h:
  • Modules/fetch/FetchBodyOwner.cpp:

(WebCore::FetchBodyOwner::blobLoadingSucceeded):
(WebCore::FetchBodyOwner::blobLoadingFailed):
(WebCore::FetchBodyOwner::blobChunk):

  • Modules/fetch/FetchBodyOwner.h:
  • Modules/mediastream/UserMediaRequest.cpp:

(WebCore::UserMediaRequest::allow):
(WebCore::UserMediaRequest::deny):

  • WebCore.xcodeproj/project.pbxproj:
  • bindings/IDLTypes.h:
  • bindings/js/JSDOMGuardedObject.h:
  • bindings/js/JSDOMPromiseDeferred.cpp:

(WebCore::DeferredPromise::callFunction):
(WebCore::DeferredPromise::whenSettled):
(WebCore::DeferredPromise::reject):

  • bindings/js/JSDOMPromiseDeferred.h:

(WebCore::DeferredPromise::resolve):
(WebCore::DeferredPromise::resolveWithNewlyCreated):
(WebCore::DeferredPromise::resolveCallbackValueWithNewlyCreated):
(WebCore::DeferredPromise::reject):
(WebCore::DeferredPromise::resolveWithCallback):
(WebCore::DeferredPromise::rejectWithCallback):
(WebCore::DeferredPromise::shouldIgnoreRequestToFulfill const):

  • css/FontFaceSet.cpp:

(WebCore::FontFaceSet::didFirstLayout):
(WebCore::FontFaceSet::completedLoading):
(WebCore::FontFaceSet::faceFinished):

  • dom/ActiveDOMCallback.cpp:

(WebCore::ActiveDOMCallback::activeDOMObjectsAreSuspended const):
(WebCore::ActiveDOMCallback::activeDOMObjectAreStopped const):

  • dom/ActiveDOMCallback.h:
  • dom/Element.h:
  • dom/ScriptExecutionContext.h:
  • page/DOMWindow.h:
  • page/RemoteDOMWindow.h:

LayoutTests:

Rebaseline test where ordering has changed slightly due to not queueing a task anymore before
resolving the promise. This restores pre-r251746 behavior.

  • fast/mediastream/MediaDevices-getUserMedia-expected.txt:
1:43 PM Changeset in webkit [252262] by Truitt Savell
  • 4 edits in trunk/LayoutTests

Update expectations for 3 fast/events/ios/key-events-comprehensive tests
https://bugs.webkit.org/show_bug.cgi?id=204020

Unreviewed test gardening

  • fast/events/ios/key-events-comprehensive/key-events-meta-control-expected.txt:
  • fast/events/ios/key-events-comprehensive/key-events-meta-option-expected.txt:
  • fast/events/ios/key-events-comprehensive/key-events-meta-shift-expected.txt:
1:35 PM Changeset in webkit [252261] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[macOS] [iOS] Add logging and telemetry to mach lookup rules
https://bugs.webkit.org/show_bug.cgi?id=203999

Reviewed by Brent Fulgham.

Add logging and telemetry to help determine if mach lookups to a set of services can be denied in the WebContent process.

No new tests, since this only adds logging and telemetry.

  • WebProcess/com.apple.WebProcess.sb.in:
1:34 PM Changeset in webkit [252260] by achristensen@apple.com
  • 22 edits in trunk/Source/WebKit

Make DownloadID an ObjectIdentifier
https://bugs.webkit.org/show_bug.cgi?id=203962

Reviewed by Youenn Fablet.

Also deprecate the unused WKDownloadGetID because this identifier is internal.

  • NetworkProcess/Downloads/Download.cpp:

(WebKit::Download::Download):
(WebKit::Download::didReceiveData):
(WebKit::Download::didFinish):
(WebKit::Download::didFail):
(WebKit::Download::didCancel):
(WebKit::Download::messageSenderDestinationID const):

  • NetworkProcess/Downloads/DownloadID.h:

(WebKit::DownloadID::DownloadID): Deleted.
(WebKit::DownloadID::operator== const): Deleted.
(WebKit::DownloadID::operator!= const): Deleted.
(WebKit::DownloadID::downloadID const): Deleted.
(IPC::ArgumentCoder<WebKit::DownloadID>::encode): Deleted.
(IPC::ArgumentCoder<WebKit::DownloadID>::decode): Deleted.
(WTF::DownloadIDHash::hash): Deleted.
(WTF::DownloadIDHash::equal): Deleted.
(WTF::HashTraits<WebKit::DownloadID>::emptyValue): Deleted.
(WTF::HashTraits<WebKit::DownloadID>::constructDeletedValue): Deleted.
(WTF::HashTraits<WebKit::DownloadID>::isDeletedValue): Deleted.

  • NetworkProcess/Downloads/DownloadMonitor.cpp:

(WebKit::DownloadMonitor::applicationWillEnterForeground):
(WebKit::DownloadMonitor::applicationDidEnterBackground):
(WebKit::DownloadMonitor::timerFired):

  • NetworkProcess/Downloads/PendingDownload.cpp:

(WebKit::PendingDownload::messageSenderDestinationID const):

  • NetworkProcess/Downloads/PendingDownload.h:
  • NetworkProcess/NetworkDataTask.h:

(WebKit::NetworkDataTask::setPendingDownloadID):
(WebKit::NetworkDataTask::isDownload const):

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::pendingDownloadCanceled):
(WebKit::NetworkProcess::findPendingDownloadLocation):

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::NetworkResourceLoader::convertToDownload):

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(-[WKNetworkSessionDelegate URLSession:task:didCompleteWithError:]):
(-[WKNetworkSessionDelegate URLSession:downloadTask:didFinishDownloadingToURL:]):
(-[WKNetworkSessionDelegate URLSession:downloadTask:didWriteData:totalBytesWritten:totalBytesExpectedToWrite:]):
(WebKit::NetworkSessionCocoa::continueDidReceiveChallenge):

  • Scripts/webkit/messages.py:
  • Shared/Authentication/AuthenticationManager.h:
  • UIProcess/API/C/WKDownload.cpp:

(WKDownloadGetID):

  • UIProcess/API/C/WKDownload.h:
  • UIProcess/Downloads/DownloadProxy.cpp:

(WebKit::DownloadProxy::DownloadProxy):
(WebKit::generateDownloadID): Deleted.

  • UIProcess/Downloads/DownloadProxy.h:
  • UIProcess/Downloads/DownloadProxyMap.cpp:

(WebKit::DownloadProxyMap::createDownloadProxy):
(WebKit::DownloadProxyMap::downloadFinished):
(WebKit::DownloadProxyMap::invalidate):

  • WebProcess/WebPage/WebFrame.cpp:

(WebKit::WebFrame::startDownload):
(WebKit::WebFrame::convertMainResourceLoadToDownload):

  • WebProcess/WebPage/WebFrame.h:
  • WebProcess/WebPage/WebPage.h:
1:26 PM Changeset in webkit [252259] by achristensen@apple.com
  • 13 edits in trunk

Fix flaky tests in http/tests/cache/disk-cache
https://bugs.webkit.org/show_bug.cgi?id=203822

Reviewed by Youenn Fablet.

Source/WebKit:

Right now tests that set the cache model do so using a race condition. I think this will fix the flakyness we've observed.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::setCacheModelSynchronouslyForTesting):

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkProcess.messages.in:
  • UIProcess/API/C/WKWebsiteDataStoreRef.cpp:

(WKWebsiteDataStoreSetCacheModelSynchronouslyForTesting):

  • UIProcess/API/C/WKWebsiteDataStoreRef.h:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::setCacheModelSynchronouslyForTesting):

  • UIProcess/WebProcessPool.h:
  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::setCacheModelSynchronouslyForTesting):

  • UIProcess/WebsiteData/WebsiteDataStore.h:

Tools:

  • WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:

(WTR::InjectedBundle::setCacheModel):

  • WebKitTestRunner/TestInvocation.cpp:

(WTR::TestInvocation::didReceiveMessageFromInjectedBundle):
(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):

1:16 PM Changeset in webkit [252258] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit

Revert some changes accidentally committed with r252257
https://bugs.webkit.org/show_bug.cgi?id=202178

  • UIProcess/API/C/WKContextPrivate.h:
1:14 PM Changeset in webkit [252257] by achristensen@apple.com
  • 5 edits in trunk/Source/WebKit

Move schemes for SchemeRegistry from WebProcessPool to LegacyGlobalSettings
https://bugs.webkit.org/show_bug.cgi?id=202178

Reviewed by Youenn Fablet.

The current users of the SPI to set these only have one WebProcessPool, so they intend these settings to be global.
Moving them to LegacyGlobalSettings allows me to make a NetworkProcessProxy without a WebProcessPool and not regress existing functionality.
I move only the four sets of schemes needed to launch a NetworkProcess to remove the dependency the NetworkProcess has on the WebProcessPool.

  • UIProcess/LegacyGlobalSettings.h:

(WebKit::LegacyGlobalSettings::schemesToRegisterAsSecure):
(WebKit::LegacyGlobalSettings::registerURLSchemeAsSecure):
(WebKit::LegacyGlobalSettings::schemesToRegisterAsBypassingContentSecurityPolicy):
(WebKit::LegacyGlobalSettings::registerURLSchemeAsBypassingContentSecurityPolicy):
(WebKit::LegacyGlobalSettings::schemesToRegisterAsLocal):
(WebKit::LegacyGlobalSettings::registerURLSchemeAsLocal):
(WebKit::LegacyGlobalSettings::schemesToRegisterAsNoAccess):
(WebKit::LegacyGlobalSettings::registerURLSchemeAsNoAccess):

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::ensureNetworkProcess):
(WebKit::WebProcessPool::initializeNewWebProcess):
(WebKit::WebProcessPool::registerURLSchemeAsSecure):
(WebKit::WebProcessPool::registerURLSchemeAsBypassingContentSecurityPolicy):
(WebKit::WebProcessPool::registerURLSchemeAsLocal):
(WebKit::WebProcessPool::registerURLSchemeAsNoAccess):

  • UIProcess/WebProcessPool.h:
1:11 PM Changeset in webkit [252256] by ysuzuki@apple.com
  • 8 edits in trunk/Source/JavaScriptCore

[JSC] Use LinkTimeConstants and make some properties lazy
https://bugs.webkit.org/show_bug.cgi?id=203795

Reviewed by Keith Miller.

This patch makes Map and Set lazily initialized in JSGlobalObject by leveraging link-time-constant. @Set was accessed from
builtin-JS. So we cannot make it lazily-allocated. But now we have link-time-constant mechanism that makes such accesses
lazily-initialized. We use this to make Set lazily-allocated.

And, instead of JSGlobalObject's last sequence of initialization, we initialize watchpoint in MapPrototype::finishCreation
and SetPrototype::finishCreation. This allows us to make Map and Set lazily-allocated. We also refactor NumberPrototype to
align to this model.

  • runtime/ArrayPrototype.cpp:

(JSC::speciesWatchpointIsValid):

  • runtime/JSGlobalObject.cpp:

(JSC::setupAdaptiveWatchpoint):
(JSC::JSGlobalObject::init):
(JSC::JSGlobalObject::visitChildren):
(JSC::JSGlobalObject::tryInstallArraySpeciesWatchpoint):
(JSC::JSGlobalObject::installNumberPrototypeWatchpoint):
(JSC::JSGlobalObject::installMapPrototypeWatchpoint):
(JSC::JSGlobalObject::installSetPrototypeWatchpoint):

  • runtime/JSGlobalObject.h:

(JSC::JSGlobalObject::numberProtoToStringFunction const):
(JSC::JSGlobalObject::mapPrototype const):
(JSC::JSGlobalObject::jsSetPrototype const):
(JSC::JSGlobalObject::numberObjectStructure const):
(JSC::JSGlobalObject::mapStructure const): Deleted.

  • runtime/MapPrototype.cpp:

(JSC::MapPrototype::finishCreation):

  • runtime/NumberPrototype.cpp:

(JSC::NumberPrototype::finishCreation):

  • runtime/NumberPrototype.h:
  • runtime/SetPrototype.cpp:

(JSC::SetPrototype::finishCreation):

1:10 PM Changeset in webkit [252255] by Antti Koivisto
  • 11 edits in trunk/Source/WebCore

StyleResolver state should store user agent appearance style as RenderStyle
https://bugs.webkit.org/show_bug.cgi?id=204008

Reviewed by Zalan Bujtas.

Generate and pass around user agent style as RenderStyle for apperance computation instead
of awkwardly passing around separate property values.

  • css/StyleResolver.cpp:

(WebCore::StyleResolver::styleForElement):
(WebCore::StyleResolver::styleForKeyframe):
(WebCore::StyleResolver::pseudoStyleForElement):
(WebCore::StyleResolver::adjustRenderStyle):
(WebCore::StyleResolver::applyMatchedProperties):
(WebCore::StyleResolver::State::cacheBorderAndBackground): Deleted.

  • css/StyleResolver.h:

(WebCore::StyleResolver::element const):
(WebCore::StyleResolver::State::userAgentAppearanceStyle const):
(WebCore::StyleResolver::State::setUserAgentAppearanceStyle):
(WebCore::StyleResolver::element): Deleted.
(WebCore::StyleResolver::State::hasUAAppearance const): Deleted.
(WebCore::StyleResolver::State::borderData const): Deleted.
(WebCore::StyleResolver::State::backgroundData const): Deleted.
(WebCore::StyleResolver::State::backgroundColor const): Deleted.

  • rendering/RenderTheme.cpp:

(WebCore::RenderTheme::adjustStyle):
(WebCore::RenderTheme::isControlStyled const):

  • rendering/RenderTheme.h:
  • rendering/RenderThemeIOS.h:
  • rendering/RenderThemeIOS.mm:

(WebCore::RenderThemeIOS::isControlStyled const):

  • rendering/RenderThemeMac.h:
  • rendering/RenderThemeMac.mm:

(WebCore::RenderThemeMac::isControlStyled const):

  • style/StyleBuilder.cpp:

(WebCore::Style::Builder::Builder):

Allow providing style separately from StyleResolver state.

  • style/StyleBuilder.h:
12:50 PM Changeset in webkit [252254] by dbates@webkit.org
  • 8 edits in trunk/Source

Add WebKit Legacy SPI to retrieve editable elements in rect
https://bugs.webkit.org/show_bug.cgi?id=204006
<rdar://problem/57024093>

Reviewed by Wenson Hsieh.

Source/WebCore:

Extract code to retrieve the editable elements inside a specified rect from WebKit
to WebCore so that it can be shared by both Modern WebKit and Legacy WebKit.

  • page/Page.cpp:

(WebCore::isEditableTextInputElement):
(WebCore::Page::editableElementsInRect const):

  • page/Page.h:

Source/WebKit:

Write WebPage::textInputContextsInRect() in terms of Page::editableElementsInRect().
Also make use of Element::clientRect() instead of elementRectInRootViewCoordinates(),
which duplicates what the former does.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::textInputContextsInRect): Write in terms of Page::editableElementsInRect().
(WebKit::WebPage::contextForElement const): Use Element::clientRect() which does what
elementRectInRootViewCoordinates() does.
(WebKit::elementRectInRootViewCoordinates): Deleted.
(WebKit::isEditableTextInputElement): Deleted.

Source/WebKitLegacy/mac:

Add SPI to retrieve all the editable elements in a rect.

  • WebView/WebView.mm:

(-[WebView _editableElementsInRect:]): Added.

  • WebView/WebViewPrivate.h:
12:40 PM Changeset in webkit [252253] by graouts@webkit.org
  • 15 edits
    2 adds in trunk/Source/WebCore

[Web Animations] Use a keyframe effect stack to resolve animations on an element
https://bugs.webkit.org/show_bug.cgi?id=204010

Reviewed by Dean Jackson.

Until now, when resolving animations for an element, we would call animationsForElement() during each resolution which
means doing several hash table lookups to locate the various classes of animations for that given element, sorting each
of those animations and inserting them into a new Vector.

We now use a KeyframeEffectStack which keeps a list of KeyframeEffect objects that apply to a given target, provided the
effect also has a valid animation and that animation has a valid timeline, all pre-conditions for that effect to produce
an animated value. Any time one of those pre-conditions change, we update the membership of that effect in the stack.
The KeyframeEffectStack is a new member of ElementRareData.

Now, each time we resolve an animation for an element, we iterate over the KeyframeEffect objects returned by calling
sortEffects() on the KeyframeEffectStack which will sort the stack's effects only if a new effect had been added since
the last iteration, which means that simple animations that are not mutated will require sorting of the stack just once,
and the addition of several animations in a single animation frame will require sorting just once as well.

It was also found while doing this work that Style::TreeResolver::createAnimatedElementUpdate would call RenderStyle::clonePtr()
for any element that was part of a document containing a timeline, regardless of whether that element had any animations. Now
we check whether that element's KeyframeEffectStack contains any effects prior to cloning the style.

No tests or changes to existed test expectations as this should not yield any change in behavior.

  • Sources.txt: Add the new KeyframeEffectStack.
  • WebCore.xcodeproj/project.pbxproj:
  • animation/AnimationEffect.h:

(WebCore::AnimationEffect::setAnimation):

  • animation/AnimationTimeline.cpp:

(WebCore::AnimationTimeline::removeAnimation):
(WebCore::AnimationTimeline::updateCSSAnimationsForElement): Since we need to know the order of CSS @keyframes rules listed in animation-name
when sorting effects, we must compile the ordered list of those @keyframe rules as we update CSS animations for an element and store it on its
KeyframeEffectStack.

  • animation/DocumentTimeline.cpp:

(WebCore::DocumentTimeline::resolveAnimationsForElement): Deleted. Replaced by Element::applyKeyframeEffects().

  • animation/DocumentTimeline.h:
  • animation/KeyframeEffect.cpp:

(WebCore::KeyframeEffect::animationTimelineDidChange):
(WebCore::KeyframeEffect::setAnimation):
(WebCore::KeyframeEffect::setTarget):

  • animation/KeyframeEffect.h:
  • animation/KeyframeEffectStack.cpp: Added.

(WebCore::KeyframeEffectStack::KeyframeEffectStack):
(WebCore::KeyframeEffectStack::~KeyframeEffectStack):
(WebCore::KeyframeEffectStack::addEffect):
(WebCore::KeyframeEffectStack::removeEffect):
(WebCore::KeyframeEffectStack::sortedEffects):
(WebCore::KeyframeEffectStack::ensureEffectsAreSorted):
(WebCore::KeyframeEffectStack::setCSSAnimationNames):

  • animation/KeyframeEffectStack.h: Added.

(WebCore::KeyframeEffectStack::hasEffects const):

  • animation/WebAnimation.cpp:

(WebCore::WebAnimation::setTimelineInternal):
(WebCore::WebAnimation::persist):

  • dom/Element.cpp:

(WebCore::Element::ensureKeyframeEffectStack):
(WebCore::Element::hasKeyframeEffects const):
(WebCore::Element::applyKeyframeEffects):

  • dom/Element.h:
  • dom/ElementRareData.cpp:
  • dom/ElementRareData.h:

(WebCore::ElementRareData::keyframeEffectStack):
(WebCore::ElementRareData::setKeyframeEffectStack):

  • style/StyleTreeResolver.cpp:

(WebCore::Style::TreeResolver::createAnimatedElementUpdate):

12:00 PM Changeset in webkit [252252] by Alan Coon
  • 7 edits in tags/Safari-609.1.9.4/Source

Versioning.

11:59 AM Changeset in webkit [252251] by Alan Coon
  • 1 copy in tags/Safari-609.1.9.4

New tag.

11:55 AM Changeset in webkit [252250] by dino@apple.com
  • 19 edits in trunk/Source/ThirdParty/ANGLE/src

Add ANGLE backend for iOS device
https://bugs.webkit.org/show_bug.cgi?id=202159
<rdar://57000166>

Build fixes for Mac Catalyst, tvOS and watchOS.

  • src/common/PackedEnums.cpp:

(egl_gl::EGLTextureTargetToTextureType):

  • src/common/platform.h:
  • src/gpu_info_util/SystemInfo_ios.cpp:
  • src/gpu_info_util/SystemInfo_macos.cpp:
  • src/libANGLE/Display.cpp:
  • src/libANGLE/formatutils.cpp:

(gl::BuildInternalFormatInfoMap):

  • src/libANGLE/renderer/gl/cgl/DeviceCGL.cpp:
  • src/libANGLE/renderer/gl/cgl/DisplayCGL.mm:
  • src/libANGLE/renderer/gl/cgl/IOSurfaceSurfaceCGL.cpp:
  • src/libANGLE/renderer/gl/cgl/PbufferSurfaceCGL.cpp:
  • src/libANGLE/renderer/gl/cgl/RendererCGL.cpp:
  • src/libANGLE/renderer/gl/cgl/WindowSurfaceCGL.mm:
  • src/libANGLE/renderer/gl/eagl/DisplayEAGL.mm:
  • src/libANGLE/renderer/gl/eagl/IOSurfaceSurfaceEAGL.mm:
  • src/libANGLE/renderer/gl/eagl/PbufferSurfaceEAGL.cpp:
  • src/libANGLE/renderer/gl/eagl/RendererEAGL.cpp:
  • src/libANGLE/renderer/gl/eagl/WindowSurfaceEAGL.mm:
  • src/libANGLE/renderer/gl/renderergl_utils.cpp:

(rx::nativegl_gl::GenerateCaps):

  • src/libANGLE/validationES2.cpp:

(gl::ValidateFramebufferTexture2D):

11:54 AM Changeset in webkit [252249] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

Clicking on EWS status-bubble should open the results in new tab
https://bugs.webkit.org/show_bug.cgi?id=204012

Reviewed by Alexey Proskuryakov.

  • BuildSlaveSupport/ews-app/ews/templates/statusbubble.html:
11:44 AM Changeset in webkit [252248] by jiewen_tan@apple.com
  • 5 edits in trunk

[WebAuthn] Return NotAllowedError immediately for UI cancellations
https://bugs.webkit.org/show_bug.cgi?id=203937
<rdar://problem/56962420>

Reviewed by Brent Fulgham.

Source/WebKit:

NotAllowedError representing UI cancellations should be returned to sites
immediately such that sites could show appropriate error page immediately.

Covered by existing tests.

  • UIProcess/WebAuthentication/AuthenticatorManager.cpp:

(WebKit::AuthenticatorManager::cancelRequest):
(WebKit::AuthenticatorManager::clearState):
(WebKit::AuthenticatorManager::resetState): Deleted.

  • UIProcess/WebAuthentication/AuthenticatorManager.h:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/_WKWebAuthenticationPanel.mm:

(TestWebKitAPI::TEST):

11:37 AM Changeset in webkit [252247] by mark.lam@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Remove invalid assertion in DFG's compileNewArray().
https://bugs.webkit.org/show_bug.cgi?id=204002
<rdar://problem/56973531>

Reviewed by Robin Morisset.

The assertion is in an if clause conditional on !globalObject->isHavingABadTime().
The assertion tests the IndexingType of a structure returned by
arrayStructureForIndexingTypeDuringAllocation().

However, the structures returned by arrayStructureForIndexingTypeDuringAllocation()
may have started transitioning to their SlowPut variant because the mutator will
be imminently firing the HavingABadTime watchpoint, but haven't done so yet.
In a race, the DFG may see the SlowPut variants of the structures before
isHavingABadTime() returns true. Hence, the assertion is invalid.

Note that the FTL does not have this assertion.

This issue is already tested by stress/racy-slow-put-cloned-arguments-when-having-a-bad-time.js.

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileNewArray):

11:11 AM Changeset in webkit [252246] by dino@apple.com
  • 2 edits in trunk/Source/ThirdParty/ANGLE

Add ANGLE backend for iOS device
https://bugs.webkit.org/show_bug.cgi?id=202159
<rdar://57000166>

Build fix. Don't include IOSurface.h on iOS (public SDK doesn't have it).

  • src/libANGLE/renderer/gl/eagl/IOSurfaceSurfaceEAGL.mm:
10:58 AM Changeset in webkit [252245] by dino@apple.com
  • 24 edits
    1 move
    16 adds in trunk/Source

Add ANGLE backend for iOS device
https://bugs.webkit.org/show_bug.cgi?id=202159
<rdar://57000166>

Reviewed by Myles Maxfield.

Source/ThirdParty/ANGLE:

Add an OpenGLES backend over EAGL for iOS to ANGLE.

This is basically a copy of all the files in
libANGLE/renderer/gl/cgl into libANGLE/renderer/gl/eagl, then with
modifications to make it work on iOS's OpenGL ES. Most notably,
some format enums and the manner in which you bind an IOSurface to
a GL texture are different.

This introduces a few places where we have to do a compile time
switch for iOS, some of which might actually be applicable to
other OpenGL ES backends.

The biggest missing piece is support for the iOS simulator. At the moment
this backend relies on an IOSurface binding as a rendering target.
But the iOS Simulator does not have the required ability to have a
GL ES texture backed by an IOSurface.

The WindowSurfaceEAGL code is incomplete, but was not necessary
in order to get WebGL operational. And even if you are using ANGLE
directly, you can have the client code render into a CALayer without
going through the WindowSurface.

  • ANGLE.xcodeproj/project.pbxproj:
  • include/EGL/eglext_angle.h:
  • src/common/PackedEnums.cpp:

(egl_gl::EGLTextureTargetToTextureType):

  • src/common/platform.h:
  • src/gpu_info_util/SystemInfo_ios.cpp: Added.

(angle::GetSystemInfo):

  • src/gpu_info_util/SystemInfo_macos.cpp: Renamed from Source/ThirdParty/ANGLE/src/gpu_info_util/SystemInfo_mac.cpp.

(angle::GetSystemInfo):

  • src/libANGLE/Caps.h:
  • src/libANGLE/Display.cpp:
  • src/libANGLE/formatutils.cpp:

(gl::BuildInternalFormatInfoMap):

  • src/libANGLE/renderer/gl/cgl/DeviceCGL.cpp:
  • src/libANGLE/renderer/gl/cgl/DisplayCGL.mm:
  • src/libANGLE/renderer/gl/cgl/IOSurfaceSurfaceCGL.cpp:

(rx::IOSurfaceSurfaceCGL::bindTexImage):

  • src/libANGLE/renderer/gl/cgl/PbufferSurfaceCGL.cpp:
  • src/libANGLE/renderer/gl/cgl/RendererCGL.cpp:
  • src/libANGLE/renderer/gl/cgl/WindowSurfaceCGL.mm:
  • src/libANGLE/renderer/gl/eagl/ContextEAGL.cpp: Added.

(rx::ContextEAGL::ContextEAGL):

  • src/libANGLE/renderer/gl/eagl/ContextEAGL.h: Added.
  • src/libANGLE/renderer/gl/eagl/DeviceEAGL.cpp: Added.

(rx::DeviceEAGL::DeviceEAGL):
(rx::DeviceEAGL::~DeviceEAGL):
(rx::DeviceEAGL::initialize):
(rx::DeviceEAGL::getAttribute):
(rx::DeviceEAGL::getType):
(rx::DeviceEAGL::generateExtensions const):

  • src/libANGLE/renderer/gl/eagl/DeviceEAGL.h: Added.
  • src/libANGLE/renderer/gl/eagl/DisplayEAGL.h: Added.
  • src/libANGLE/renderer/gl/eagl/DisplayEAGL.mm: Added.

(rx::FunctionsGLEAGL::FunctionsGLEAGL):
(rx::DisplayEAGL::DisplayEAGL):
(rx::DisplayEAGL::~DisplayEAGL):
(rx::DisplayEAGL::initialize):
(rx::DisplayEAGL::terminate):
(rx::DisplayEAGL::createWindowSurface):
(rx::DisplayEAGL::createPbufferSurface):
(rx::DisplayEAGL::createPbufferFromClientBuffer):
(rx::DisplayEAGL::createPixmapSurface):
(rx::DisplayEAGL::createContext):
(rx::DisplayEAGL::createDevice):
(rx::DisplayEAGL::generateConfigs):
(rx::DisplayEAGL::testDeviceLost):
(rx::DisplayEAGL::restoreLostDevice):
(rx::DisplayEAGL::isValidNativeWindow const):
(rx::DisplayEAGL::validateClientBuffer const):
(rx::DisplayEAGL::getVendorString const):
(rx::DisplayEAGL::getEAGLContext const):
(rx::DisplayEAGL::getEAGLPixelFormat const):
(rx::DisplayEAGL::generateExtensions const):
(rx::DisplayEAGL::generateCaps const):
(rx::DisplayEAGL::waitClient):
(rx::DisplayEAGL::waitNative):
(rx::DisplayEAGL::getMaxSupportedESVersion const):
(rx::DisplayEAGL::makeCurrentSurfaceless):
(rx::WorkerContextEAGL::WorkerContextEAGL):
(rx::WorkerContextEAGL::~WorkerContextEAGL):
(rx::WorkerContextEAGL::makeCurrent):
(rx::WorkerContextEAGL::unmakeCurrent):
(rx::DisplayEAGL::createWorkerContext):
(rx::DisplayEAGL::initializeFrontendFeatures const):
(rx::DisplayEAGL::populateFeatureList):

  • src/libANGLE/renderer/gl/eagl/IOSurfaceSurfaceEAGL.h: Added.
  • src/libANGLE/renderer/gl/eagl/IOSurfaceSurfaceEAGL.mm: Copied from Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/cgl/IOSurfaceSurfaceCGL.cpp.

(rx::IOSurfaceSurfaceEAGL::IOSurfaceSurfaceEAGL):
(rx::IOSurfaceSurfaceEAGL::~IOSurfaceSurfaceEAGL):
(rx::IOSurfaceSurfaceEAGL::initialize):
(rx::IOSurfaceSurfaceEAGL::makeCurrent):
(rx::IOSurfaceSurfaceEAGL::unMakeCurrent):
(rx::IOSurfaceSurfaceEAGL::swap):
(rx::IOSurfaceSurfaceEAGL::postSubBuffer):
(rx::IOSurfaceSurfaceEAGL::querySurfacePointerANGLE):
(rx::IOSurfaceSurfaceEAGL::bindTexImage):
(rx::IOSurfaceSurfaceEAGL::releaseTexImage):
(rx::IOSurfaceSurfaceEAGL::setSwapInterval):
(rx::IOSurfaceSurfaceEAGL::getWidth const):
(rx::IOSurfaceSurfaceEAGL::getHeight const):
(rx::IOSurfaceSurfaceEAGL::isPostSubBufferSupported const):
(rx::IOSurfaceSurfaceEAGL::getSwapBehavior const):
(rx::IOSurfaceSurfaceEAGL::validateAttributes):
(rx::IOSurfaceFramebuffer::IOSurfaceFramebuffer):
(rx::IOSurfaceSurfaceEAGL::createDefaultFramebuffer):
(rx::IOSurfaceSurfaceEAGL::initializeAlphaChannel):
(rx::IOSurfaceSurfaceEAGL::hasEmulatedAlphaChannel const):

  • src/libANGLE/renderer/gl/eagl/PbufferSurfaceEAGL.cpp: Copied from Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/cgl/PbufferSurfaceCGL.cpp.

(rx::PbufferSurfaceEAGL::PbufferSurfaceEAGL):
(rx::PbufferSurfaceEAGL::~PbufferSurfaceEAGL):
(rx::PbufferSurfaceEAGL::initialize):
(rx::PbufferSurfaceEAGL::makeCurrent):
(rx::PbufferSurfaceEAGL::swap):
(rx::PbufferSurfaceEAGL::postSubBuffer):
(rx::PbufferSurfaceEAGL::querySurfacePointerANGLE):
(rx::PbufferSurfaceEAGL::bindTexImage):
(rx::PbufferSurfaceEAGL::releaseTexImage):
(rx::PbufferSurfaceEAGL::setSwapInterval):
(rx::PbufferSurfaceEAGL::getWidth const):
(rx::PbufferSurfaceEAGL::getHeight const):
(rx::PbufferSurfaceEAGL::isPostSubBufferSupported const):
(rx::PbufferSurfaceEAGL::getSwapBehavior const):
(rx::PbufferSurfaceEAGL::createDefaultFramebuffer):

  • src/libANGLE/renderer/gl/eagl/PbufferSurfaceEAGL.h: Added.
  • src/libANGLE/renderer/gl/eagl/RendererEAGL.cpp: Added.

(rx::RendererEAGL::RendererEAGL):
(rx::RendererEAGL::~RendererEAGL):
(rx::RendererEAGL::createWorkerContext):

  • src/libANGLE/renderer/gl/eagl/RendererEAGL.h: Added.
  • src/libANGLE/renderer/gl/eagl/WindowSurfaceEAGL.h: Added.
  • src/libANGLE/renderer/gl/eagl/WindowSurfaceEAGL.mm: Copied from Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/cgl/WindowSurfaceCGL.mm.

(-[WebSwapLayer initWithSharedState:withContext:withFunctions:]):
(-[WebSwapLayer display]):
(rx::WindowSurfaceEAGL::WindowSurfaceEAGL):
(rx::WindowSurfaceEAGL::~WindowSurfaceEAGL):
(rx::WindowSurfaceEAGL::initialize):
(rx::WindowSurfaceEAGL::makeCurrent):
(rx::WindowSurfaceEAGL::swap):
(rx::WindowSurfaceEAGL::postSubBuffer):
(rx::WindowSurfaceEAGL::querySurfacePointerANGLE):
(rx::WindowSurfaceEAGL::bindTexImage):
(rx::WindowSurfaceEAGL::releaseTexImage):
(rx::WindowSurfaceEAGL::setSwapInterval):
(rx::WindowSurfaceEAGL::getWidth const):
(rx::WindowSurfaceEAGL::getHeight const):
(rx::WindowSurfaceEAGL::isPostSubBufferSupported const):
(rx::WindowSurfaceEAGL::getSwapBehavior const):
(rx::WindowSurfaceEAGL::createDefaultFramebuffer):

  • src/libANGLE/renderer/gl/renderergl_utils.cpp:

(rx::nativegl_gl::GenerateCaps):

  • src/libANGLE/validationES2.cpp:

(gl::ValidateFramebufferTexture2D):

  • src/libGLESv2/entry_points_egl_ext.cpp:

Source/WebCore:

Use the ANGLE for iOS backend.

Mostly this was just moving some code around so that it would compile
on iOS when USE(ANGLE) is true. The actual code to render WebGL is
similar between macOS and iOS - both now using a CALayer with
a set of IOSurfaces that are used as swap textures.

The main difference is that macOS (OpenGL) binds to TEXTURE_RECTANGLE,
and iOS (OpenGL ES) binds to the regular TEXTURE_2D.

The remaining missing piece is getting video textures into ANGLE
efficiently (without leaving the GPU). We can ask CoreVideo
to give us raw GL textures, but with ANGLE we no longer have direct access
to the underlying OpenGL context.

This is not enabled in the builds yet, so no tests. However, when
enabled it will be tested against the official WebGL conformance suite.

  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::validateVertexAttributes):

  • platform/cocoa/CoreVideoSoftLink.cpp:
  • platform/cocoa/CoreVideoSoftLink.h:
  • platform/graphics/GraphicsContext3D.h:
  • platform/graphics/angle/GraphicsContext3DANGLE.cpp:

(WebCore::GraphicsContext3D::reshapeFBOs):

  • platform/graphics/cocoa/GraphicsContext3DCocoa.mm:

(WebCore::GraphicsContext3D::GraphicsContext3D):
(WebCore::GraphicsContext3D::allocateIOSurfaceBackingStore):
(WebCore::GraphicsContext3D::updateFramebufferTextureBackingStoreFromLayer):

  • platform/graphics/cocoa/WebGLLayer.h:
  • platform/graphics/cocoa/WebGLLayer.mm:

(-[WebGLLayer initWithGraphicsContext3D:]):
(-[WebGLLayer display]):
(-[WebGLLayer setEGLDisplay:config:]):
(-[WebGLLayer allocateIOSurfaceBackingStoreWithSize:usingAlpha:]):
(-[WebGLLayer bindFramebufferToNextAvailableSurface]):
(-[WebGLLayer setEGLDisplay:andConfig:]): Deleted.

  • platform/graphics/cv/TextureCacheCV.mm:

(WebCore::TextureCacheCV::textureFromImage):

  • platform/graphics/cv/VideoTextureCopierCV.cpp:

(WebCore::VideoTextureCopierCV::copyVideoTextureToPlatformTexture):

  • platform/graphics/opengl/TemporaryOpenGLSetting.cpp:
  • platform/graphics/opengl/TemporaryOpenGLSetting.h:
10:53 AM Changeset in webkit [252244] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[ews] Prioritize builders over testers when a bot is shared over multiple queues
https://bugs.webkit.org/show_bug.cgi?id=204007

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/loadConfig.py:

(loadBuilderConfig):
(prioritizeBuilders): Method to prioritize builder queues over tester queues.

10:37 AM Changeset in webkit [252243] by Ross Kirsling
  • 2 edits in trunk/Source/JavaScriptCore

[PlayStation][JSC] Unreviewed build fix.

  • shell/playstation/TestShell.cpp:
10:24 AM Changeset in webkit [252242] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Regression r252209: Layout Test fast/workers/worker-close-more.html is failing
https://bugs.webkit.org/show_bug.cgi?id=203995
<rdar://problem/57020558>

Reviewed by Ryosuke Niwa.

We should not dispatch events on a MessagePort objects in a WorkerGlobalScope which is
closing (i.e. WorkerGlobalScope.close() has been called).

No new tests, covered by fast/workers/worker-close-more.html.

  • dom/MessagePort.cpp:

(WebCore::MessagePort::dispatchEvent):

10:08 AM Changeset in webkit [252241] by guijemont@igalia.com
  • 2 edits in trunk/JSTests

Temporarily skip another broken test on MIPS due to OSR exit to LLInt
https://bugs.webkit.org/show_bug.cgi?id=204003

Unreviewed gardening.

  • stress/global-import-function-should-return-a-promise-when-clearing-exceptions.js:
10:06 AM Changeset in webkit [252240] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

Picture-in-Picture events are not fired when enter/exit the Picture-in-Picture mode through modern media controls
https://bugs.webkit.org/show_bug.cgi?id=203933

Patch by Peng Liu <Peng Liu> on 2019-11-08
Reviewed by Eric Carlson.

Covered by existing layout test cases. No new test is required.

  • Modules/modern-media-controls/media/pip-support.js:

(PiPSupport.prototype.buttonWasPressed):

  • Modules/pictureinpicture/HTMLVideoElementPictureInPicture.cpp:

(WebCore::HTMLVideoElementPictureInPicture::didEnterPictureInPicture):
(WebCore::HTMLVideoElementPictureInPicture::didExitPictureInPicture):

8:58 AM Changeset in webkit [252239] by mark.lam@apple.com
  • 11 edits
    2 adds in trunk

Add a stack overflow check in Yarr::ByteCompiler::emitDisjunction().
https://bugs.webkit.org/show_bug.cgi?id=203936
<rdar://problem/56624724>

Reviewed by Saam Barati.

JSTests:

This issue originally manifested as incorrect-exception-assertion-in-operationRegExpExecNonGlobalOrSticky.js
failing on iOS devices due to its smaller stack. We adapted the original test
here using $vm.callWithStackSize() to reproduce the issue on x86_64 though it
has a much larger physical stack to work with. This new test will crash while
stepping on the guard page beyond the end of the stack if the fix is not applied.

  • stress/stack-overflow-in-yarr-byteCompile.js: Added.

Source/JavaScriptCore:

Basically, any functions below Yarr::ByteCompiler::compile() that recurses need
to check if it's safe to recurse before doing so. This patch adds the stack
checks in Yarr::ByteCompiler::compile() because it is the entry point to this
sub-system, and Yarr::ByteCompiler::emitDisjunction() because it is the only
function that recurses. All other functions called below compile() are either
leaf functions or have shallow stack usage. Hence, their stack needs are covered
by the DefaultReservedZone, and they do not need stack checks.

This patch also does the following:

  1. Added $vm.callWithStackSize() which can be used to call a test function near the end of the physical stack. This enables is to simulate the smaller stack size of more resource constrained devices.

$vm.callWithStackSize() uses inline asm to adjust the stack pointer and
does the callback via the JIT probe trampoline.

  1. Added the --disableOptionsFreezingForTesting to the jsc shell to make it possible to disable freezing of JSC options. $vm.callWithStackSize() relies on this to modify the VM's stack limits.
  1. Removed the inline modifier on VM::updateStackLimits() so that we can call it from $vm.callWithStackSize() as well. It is not a performance critical function and is rarely called.
  1. Added a JSDollarVMHelper class that other parts of the system can declare as a friend. This gives $vm a backdoor into the private functions and fields of classes for its debugging work. In this patch, we're only using it to access VM::updateVMStackLimits().
  • jsc.cpp:

(CommandLine::parseArguments):

  • runtime/VM.cpp:

(JSC::VM::updateStackLimits):

  • runtime/VM.h:
  • tools/JSDollarVM.cpp:

(JSC::JSDollarVMHelper::JSDollarVMHelper):
(JSC::JSDollarVMHelper::vmStackStart):
(JSC::JSDollarVMHelper::vmStackLimit):
(JSC::JSDollarVMHelper::vmSoftStackLimit):
(JSC::JSDollarVMHelper::updateVMStackLimits):
(JSC::callWithStackSizeProbeFunction):
(JSC::functionCallWithStackSize):
(JSC::JSDollarVM::finishCreation):
(IGNORE_WARNINGS_BEGIN): Deleted.

  • yarr/YarrInterpreter.cpp:

(JSC::Yarr::ByteCompiler::compile):
(JSC::Yarr::ByteCompiler::emitDisjunction):
(JSC::Yarr::ByteCompiler::isSafeToRecurse):

Source/WTF:

  1. Add a StackCheck utility class so that we don't have to keep reinventing this every time we need to add stack checking somewhere.
  2. Rename some arguments and constants in StackBounds to be more descriptive of what they actually are.
  • WTF.xcodeproj/project.pbxproj:
  • wtf/CMakeLists.txt:
  • wtf/StackBounds.h:

(WTF::StackBounds::recursionLimit const):

  • wtf/StackCheck.h: Added.

(WTF::StackCheck::StackCheck):
(WTF::StackCheck::isSafeToRecurse):

7:09 AM Changeset in webkit [252238] by Carlos Garcia Campos
  • 7 edits in trunk

WebDriver: implement get page source command
https://bugs.webkit.org/show_bug.cgi?id=180399

Reviewed by Carlos Alberto Lopez Perez.

Source/WebDriver:

  • Session.cpp:

(WebDriver::Session::getPageSource):

  • Session.h:
  • WebDriverService.cpp:

(WebDriver::WebDriverService::getPageSource):

  • WebDriverService.h:

WebDriverTests:

Unskip tests that are now passing.

7:04 AM Changeset in webkit [252237] by Alan Coon
  • 1 copy in tags/Safari-609.1.9.3

New tag.

7:02 AM Changeset in webkit [252236] by Alan Coon
  • 7 edits in tags/Safari-609.1.9.2/Source

Versioning.

2:53 AM Changeset in webkit [252235] by achristensen@apple.com
  • 2 edits in trunk/Tools

Build fix for platforms without WebRTC's SSL after r252185
https://bugs.webkit.org/show_bug.cgi?id=203934

  • TestWebKitAPI/Tests/WebKitCocoa/ResourceLoadStatistics.mm:

The new test uses TLS with the HTTPS proxy. Don't compile it if we can't compile it.

2:23 AM WPE/Releasing created by alex
2:08 AM WPE edited by alex
(diff)
1:19 AM Changeset in webkit [252234] by Carlos Garcia Campos
  • 14 edits
    3 adds in trunk

[GTK] Add pointer lock permission request API
https://bugs.webkit.org/show_bug.cgi?id=203896

Reviewed by Adrian Perez de Castro.

Source/WebKit:

Add a WebKitPointerLockPermissionRequest class to handle pointer lock permissions.

  • PlatformGTK.cmake:
  • SourcesGTK.txt:
  • UIProcess/API/glib/WebKitPointerLockPermissionRequest.cpp: Added.

(webkitPointerLockPermissionRequestAllow):
(webkitPointerLockPermissionRequestDeny):
(webkit_permission_request_interface_init):
(webkitPointerLockPermissionRequestDispose):
(webkit_pointer_lock_permission_request_class_init):
(webkitPointerLockPermissionRequestCreate):
(webkitPointerLockPermissionRequestDidLosePointerLock):

  • UIProcess/API/glib/WebKitPointerLockPermissionRequestPrivate.h: Added.
  • UIProcess/API/glib/WebKitUIClient.cpp:

(UIClient::~UIClient):

  • UIProcess/API/glib/WebKitWebView.cpp:

(webkitWebViewPermissionRequest):
(webkitWebViewDenyPointerLockRequest):

  • UIProcess/API/glib/WebKitWebViewPrivate.h:
  • UIProcess/API/gtk/WebKitPointerLockPermissionRequest.h: Added.
  • UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
  • UIProcess/API/gtk/docs/webkit2gtk-4.0.types:
  • UIProcess/API/gtk/docs/webkit2gtk-docs.sgml:
  • UIProcess/API/gtk/webkit2.h:

Tools:

Handle pointer lock permission requests in MiniBrowser and add a new tests case to check the new API.

  • MiniBrowser/gtk/BrowserTab.c:

(pointerLockMessageTimeoutCallback):
(decidePermissionRequest):
(browserTabFinalize):
(browserTabConstructed):

  • TestWebKitAPI/Tests/WebKitGLib/TestUIClient.cpp:

(testWebViewPointerLockPermissionRequest):
(beforeAll):

1:09 AM Changeset in webkit [252233] by Carlos Garcia Campos
  • 6 edits
    2 adds in trunk

'Strikethrough' editing command reported as 'formatUnderline'
https://bugs.webkit.org/show_bug.cgi?id=203944

Reviewed by Adrian Perez de Castro.

Source/WebCore:

Add an EditAction for strikeThrough command.

Test: fast/events/input-events-strikethrough-type.html

  • editing/EditAction.cpp:

(WebCore::undoRedoLabel): Handle StrikeThrough action.

  • editing/EditAction.h:
  • editing/EditCommand.cpp:

(WebCore::inputTypeNameForEditingAction): Ditto.

  • editing/EditorCommand.cpp:

(WebCore::executeStrikethrough): Use StrikeThrough action instead of Underline.

LayoutTests:

  • fast/events/input-events-strikethrough-type-expected.txt: Added.
  • fast/events/input-events-strikethrough-type.html: Added.

Nov 7, 2019:

8:02 PM Changeset in webkit [252232] by mitz@apple.com
  • 8 copies
    1 add in releases/Apple/iOS 13.2.2

Added a tag for iOS 13.2.2.

7:55 PM Changeset in webkit [252231] by Tadeu Zagallo
  • 5 edits in trunk/Source/JavaScriptCore

Use fewer virtual registers in Wasm LLInt
https://bugs.webkit.org/show_bug.cgi?id=203861

Reviewed by Saam Barati.

Reduce the number of virtual registers in two ways:

  • Re-use arguments for result values (e.g. the result of add lhs, rhs should go in lhs, not a new virtual register)
  • Re-use the argument register space for return values that should be placed in registers
  • bytecode/BytecodeList.rb:
  • generator/Wasm.rb:
  • llint/WebAssembly.asm:
  • wasm/WasmLLIntGenerator.cpp:

(JSC::Wasm::LLIntGenerator::callInformationFor):
(JSC::Wasm::LLIntGenerator::addReturn):
(JSC::Wasm::LLIntGenerator::addRefIsNull):
(JSC::Wasm::LLIntGenerator::addTableGet):
(JSC::Wasm::LLIntGenerator::addTableGrow):
(JSC::Wasm::LLIntGenerator::addGrowMemory):
(JSC::Wasm::LLIntGenerator::addSelect):
(JSC::Wasm::LLIntGenerator::load):

6:52 PM Changeset in webkit [252230] by commit-queue@webkit.org
  • 6 edits
    2 adds in trunk

Default NamepaceURI must be gotten from the topmost parent before the SVG <foreignObject>
https://bugs.webkit.org/show_bug.cgi?id=203868

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2019-11-07
Reviewed by Ryosuke Niwa.

Source/WebCore:

Ensure that we don't cross boundaries from HTML to SVG when traversing
the tree of nodes upward. We need to stop at the foreignObject if it is
one of the ancestors of the contextElement.

Tests: svg/foreignObject/foreign-object-dynamic-parsing.svg

  • html/HTMLTableCellElement.cpp:

(WebCore::HTMLTableCellElement::HTMLTableCellElement):
This assertion should not fire if the tag has a prefix like <h:th> or
<h:td> where 'h' is a defined namespace.

  • xml/parser/XMLDocumentParser.cpp:

(WebCore::XMLDocumentParser::parseDocumentFragment):
Stop at the first SVG <foreignObject> ancestor when calculating the
defaultNamespaceURI.

  • xml/parser/XMLDocumentParser.h:
  • xml/parser/XMLDocumentParserLibxml2.cpp:

(WebCore::XMLDocumentParser::XMLDocumentParser):

(WebCore::XMLDocumentParser::startElementNs):
We need to special case setting the namespaceURI of the SVGElmenets. The
defaultNamespaceURI can be wrong for them if the context element is an
HTML element, <div> for example, and the innerHTML is set to something
like: '<svg><rect/></svg>'.

LayoutTests:

  • svg/foreignObject/foreign-object-dynamic-parsing-expected.svg: Added.
  • svg/foreignObject/foreign-object-dynamic-parsing.svg: Added.
6:46 PM Changeset in webkit [252229] by rmorisset@apple.com
  • 46 edits in trunk/Source/JavaScriptCore

Split ArithProfile into a Unary and a Binary version
https://bugs.webkit.org/show_bug.cgi?id=202832
<rdar://problem/56266847>

Reviewed by Keith Miller.

ArithProfile was for a long time only used for add/sub/mul/div, but recently it started being used for negate. And it will soon also have to be used for inc and dec due to BigInt.
So in this patch I make a separate version that only has the data for a single argument, and thus takes half as much memory.

After discussing this change with Phil I realized that the ResultType(s) that were taking space in ArithProfile are not needed: they never change and a copy is already in the bytecode instruction itself.
Removing them allowed shrinking both kinds of ArithProfile to fit in 16 bits (9 and 13 respectively).
I kept the two kinds separate because they may shrink or grow independently in the future.

This also required adding the "orh" instruction to the offline assembler, to set bits in the ArithProfile.
This in turn motivated the addition of "storeh", as on RISC platforms "orh" on a memory location is actually loadh -> orh -> storeh.

  • bytecode/ArithProfile.cpp:

(JSC::ArithProfile<BitfieldType>::emitObserveResult):
(JSC::ArithProfile<BitfieldType>::shouldEmitSetDouble const):
(JSC::ArithProfile<BitfieldType>::emitSetDouble const):
(JSC::ArithProfile<BitfieldType>::shouldEmitSetNonNumeric const):
(JSC::ArithProfile<BitfieldType>::shouldEmitSetBigInt const):
(JSC::ArithProfile<BitfieldType>::emitSetNonNumeric const):
(JSC::ArithProfile<BitfieldType>::emitSetBigInt const):
(WTF::printInternal):

  • bytecode/ArithProfile.h:

(JSC::ArithProfile::didObserveNonInt32 const):
(JSC::ArithProfile::didObserveDouble const):
(JSC::ArithProfile::didObserveNonNegZeroDouble const):
(JSC::ArithProfile::didObserveNegZeroDouble const):
(JSC::ArithProfile::didObserveNonNumeric const):
(JSC::ArithProfile::didObserveBigInt const):
(JSC::ArithProfile::didObserveInt32Overflow const):
(JSC::ArithProfile::didObserveInt52Overflow const):
(JSC::ArithProfile::setObservedNonNegZeroDouble):
(JSC::ArithProfile::setObservedNegZeroDouble):
(JSC::ArithProfile::setObservedNonNumeric):
(JSC::ArithProfile::setObservedBigInt):
(JSC::ArithProfile::setObservedInt32Overflow):
(JSC::ArithProfile::setObservedInt52Overflow):
(JSC::ArithProfile::observeResult):
(JSC::ArithProfile::addressOfBits const):
(JSC::ArithProfile::bits const):
(JSC::ArithProfile::ArithProfile):
(JSC::ArithProfile::hasBits const):
(JSC::ArithProfile::setBit):
(JSC::UnaryArithProfile::UnaryArithProfile):
(JSC::UnaryArithProfile::observedIntBits):
(JSC::UnaryArithProfile::observedNumberBits):
(JSC::UnaryArithProfile::argObservedType const):
(JSC::UnaryArithProfile::setArgObservedType):
(JSC::UnaryArithProfile::argSawInt32):
(JSC::UnaryArithProfile::argSawNumber):
(JSC::UnaryArithProfile::argSawNonNumber):
(JSC::UnaryArithProfile::observeArg):
(JSC::UnaryArithProfile::isObservedTypeEmpty):
(JSC::BinaryArithProfile::BinaryArithProfile):
(JSC::BinaryArithProfile::observedIntIntBits):
(JSC::BinaryArithProfile::observedNumberIntBits):
(JSC::BinaryArithProfile::observedIntNumberBits):
(JSC::BinaryArithProfile::observedNumberNumberBits):
(JSC::BinaryArithProfile::setLhsObservedType):
(JSC::BinaryArithProfile::setRhsObservedType):
(JSC::BinaryArithProfile::observeLHS):
(JSC::BinaryArithProfile::observeLHSAndRHS):
(JSC::BinaryArithProfile::isObservedTypeEmpty):

  • bytecode/BytecodeList.rb:
  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::addJITAddIC):
(JSC::CodeBlock::addJITMulIC):
(JSC::CodeBlock::addJITSubIC):
(JSC::CodeBlock::addJITNegIC):
(JSC::CodeBlock::binaryArithProfileForBytecodeOffset):
(JSC::CodeBlock::unaryArithProfileForBytecodeOffset):
(JSC::CodeBlock::binaryArithProfileForPC):
(JSC::CodeBlock::unaryArithProfileForPC):
(JSC::CodeBlock::couldTakeSpecialFastCase):

  • bytecode/CodeBlock.h:

(JSC::CodeBlock::addMathIC):

  • bytecode/Fits.h:
  • bytecode/MethodOfGettingAValueProfile.cpp:

(JSC::MethodOfGettingAValueProfile::emitReportValue const):
(JSC::MethodOfGettingAValueProfile::reportValue):

  • bytecode/MethodOfGettingAValueProfile.h:

(JSC::MethodOfGettingAValueProfile::MethodOfGettingAValueProfile):

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::emitUnaryOp):

  • bytecompiler/BytecodeGenerator.h:
  • bytecompiler/NodesCodegen.cpp:

(JSC::UnaryOpNode::emitBytecode):

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::makeSafe):
(JSC::DFG::ByteCodeParser::makeDivSafe):

  • dfg/DFGGraph.cpp:

(JSC::DFG::Graph::methodOfGettingAValueProfileFor):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileValueAdd):
(JSC::DFG::SpeculativeJIT::compileValueSub):
(JSC::DFG::SpeculativeJIT::compileValueNegate):
(JSC::DFG::SpeculativeJIT::compileValueMul):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileValueAdd):
(JSC::FTL::DFG::LowerDFGToB3::compileValueSub):
(JSC::FTL::DFG::LowerDFGToB3::compileValueMul):
(JSC::FTL::DFG::LowerDFGToB3::compileUnaryMathIC):
(JSC::FTL::DFG::LowerDFGToB3::compileBinaryMathIC):
(JSC::FTL::DFG::LowerDFGToB3::compileArithAddOrSub):
(JSC::FTL::DFG::LowerDFGToB3::compileValueNegate):

  • jit/JIT.h:
  • jit/JITAddGenerator.cpp:

(JSC::JITAddGenerator::generateInline):
(JSC::JITAddGenerator::generateFastPath):

  • jit/JITAddGenerator.h:
  • jit/JITArithmetic.cpp:

(JSC::JIT::emit_op_negate):
(JSC::JIT::emit_op_add):
(JSC::JIT::emitMathICFast):
(JSC::JIT::emitMathICSlow):
(JSC::JIT::emit_op_div):
(JSC::JIT::emit_op_mul):
(JSC::JIT::emit_op_sub):

  • jit/JITDivGenerator.cpp:

(JSC::JITDivGenerator::generateFastPath):

  • jit/JITDivGenerator.h:

(JSC::JITDivGenerator::JITDivGenerator):

  • jit/JITInlines.h:

(JSC::JIT::copiedArithProfile):

  • jit/JITMathIC.h:

(JSC::JITMathIC::JITMathIC):
(JSC::JITMathIC::generateInline):
(JSC::JITMathIC::arithProfile const):
(JSC::isBinaryProfileEmpty):
(JSC::JITBinaryMathIC::JITBinaryMathIC):
(JSC::isUnaryProfileEmpty):
(JSC::JITUnaryMathIC::JITUnaryMathIC):

  • jit/JITMulGenerator.cpp:

(JSC::JITMulGenerator::generateInline):
(JSC::JITMulGenerator::generateFastPath):

  • jit/JITMulGenerator.h:
  • jit/JITNegGenerator.cpp:

(JSC::JITNegGenerator::generateInline):
(JSC::JITNegGenerator::generateFastPath):

  • jit/JITNegGenerator.h:
  • jit/JITOperations.cpp:
  • jit/JITOperations.h:
  • jit/JITSubGenerator.cpp:

(JSC::JITSubGenerator::generateInline):
(JSC::JITSubGenerator::generateFastPath):

  • jit/JITSubGenerator.h:
  • llint/LLIntData.cpp:

(JSC::LLInt::Data::performAssertions):

  • llint/LLIntOffsetsExtractor.cpp:

(JSC::LLIntOffsetsExtractor::dummy):

  • llint/LowLevelInterpreter.asm:
  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
  • parser/ResultType.h:

(JSC::ResultType::ResultType):

  • runtime/CommonSlowPaths.cpp:

(JSC::updateArithProfileForUnaryArithOp):
(JSC::updateArithProfileForBinaryArithOp):
(JSC::SLOW_PATH_DECL):

6:45 PM Changeset in webkit [252228] by Chris Dumez
  • 6 edits in trunk

TestController may reuse a view that used window.open(), which prevents process-swapping and causes flakiness
https://bugs.webkit.org/show_bug.cgi?id=203981

Reviewed by Ryosuke Niwa.

Tools:

Stop reusing WebViews that have created other WebViews (via window.open()) since this prevents process-swapping
and may therefore cause flakiness (see Bug 203965).

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::createOtherPage):
(WTR::TestController::ensureViewSupportsOptionsForTest):

  • WebKitTestRunner/TestController.h:

LayoutTests:

Drop temporary flakiness workaround that was landed in r252214.

  • http/tests/inspector/target/target-events-for-provisional-page.html:
6:35 PM Changeset in webkit [252227] by Chris Dumez
  • 3 edits in trunk/Source/WebCore

Use ActiveDOMObject::queueTaskKeepingObjectAlive() in DOMCache
https://bugs.webkit.org/show_bug.cgi?id=203985

Reviewed by Ryosuke Niwa.

Use ActiveDOMObject::queueTaskKeepingObjectAlive() in DOMCache and drop DOMCache::enqueueTask().

  • Modules/cache/DOMCache.cpp:

(WebCore::DOMCache::match):
(WebCore::DOMCache::matchAll):
(WebCore::DOMCache::addAll):
(WebCore::DOMCache::putWithResponseData):
(WebCore::DOMCache::put):
(WebCore::DOMCache::remove):
(WebCore::DOMCache::keys):
(WebCore::DOMCache::enqueueTask): Deleted.

  • Modules/cache/DOMCache.h:
5:38 PM Changeset in webkit [252226] by commit-queue@webkit.org
  • 16 edits
    6 adds in trunk/Source/WebCore

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):

5:35 PM Changeset in webkit [252225] by Justin Fan
  • 3 edits
    20 adds in trunk/LayoutTests

[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.
5:29 PM Changeset in webkit [252224] by ysuzuki@apple.com
  • 2 edits in trunk/Source/bmalloc

[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):

5:18 PM Changeset in webkit [252223] by timothy_horton@apple.com
  • 2 edits
    1 delete in trunk/Source/WebKit

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.

5:15 PM Changeset in webkit [252222] by Justin Fan
  • 1 edit
    1 add in trunk/LayoutTests

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.
5:13 PM Changeset in webkit [252221] by rniwa@webkit.org
  • 8 edits
    7 adds in trunk

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.
5:08 PM Changeset in webkit [252220] by Alan Coon
  • 7 edits in tags/Safari-609.1.10.1/Source

Versioning.

5:04 PM Changeset in webkit [252219] by Alan Coon
  • 1 copy in tags/Safari-609.1.10.1

New tag.

4:57 PM Changeset in webkit [252218] by Chris Dumez
  • 3 edits in trunk/Source/WebCore

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.

4:52 PM Changeset in webkit [252217] by youenn@apple.com
  • 4 edits in trunk/LayoutTests

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:
4:37 PM Changeset in webkit [252216] by Tadeu Zagallo
  • 2 edits in trunk/Source/JavaScriptCore

[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):

3:56 PM Changeset in webkit [252215] by Alan Coon
  • 1 copy in tags/Safari-608.4.9.1.2

Tag Safari-608.4.9.1.2.

3:44 PM Changeset in webkit [252214] by yurys@chromium.org
  • 2 edits in trunk/LayoutTests

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:
3:39 PM Changeset in webkit [252213] by Devin Rousso
  • 2 edits in trunk/Source/WebInspectorUI

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.

3:24 PM Changeset in webkit [252212] by Chris Dumez
  • 5 edits in trunk/Source/WebCore

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):

3:20 PM Changeset in webkit [252211] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[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:
3:16 PM Changeset in webkit [252210] by Kate Cheney
  • 18 edits in trunk/LayoutTests

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:
3:16 PM Changeset in webkit [252209] by Chris Dumez
  • 4 edits in trunk/Source/WebCore

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:
3:01 PM Changeset in webkit [252208] by Antti Koivisto
  • 11 edits
    2 adds in trunk/Source/WebCore

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):

2:53 PM Changeset in webkit [252207] by eric.carlson@apple.com
  • 2 edits in trunk/Source/WebCore

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.

2:36 PM Changeset in webkit [252206] by Chris Dumez
  • 3 edits in trunk/Source/WebCore

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:
2:18 PM Changeset in webkit [252205] by rniwa@webkit.org
  • 16 edits
    4 adds in trunk

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:
1:34 PM Changeset in webkit [252204] by Justin Fan
  • 5 edits in trunk/LayoutTests

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:
1:07 PM Changeset in webkit [252203] by Simon Fraser
  • 4 edits in trunk/LayoutTests

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):

12:36 PM Changeset in webkit [252202] by Devin Rousso
  • 10 edits
    2 copies
    5 moves
    48 adds
    3 deletes in trunk

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.

12:31 PM Changeset in webkit [252201] by Devin Rousso
  • 4 edits in trunk/Source/WebInspectorUI

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.

12:17 PM Changeset in webkit [252200] by Devin Rousso
  • 5 edits in trunk/Source/WebInspectorUI

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:
12:02 PM Changeset in webkit [252199] by Devin Rousso
  • 6 edits in trunk/Source/WebInspectorUI

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:
11:59 AM Changeset in webkit [252198] by Devin Rousso
  • 2 edits in trunk/Source/WebInspectorUI

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):

11:46 AM Changeset in webkit [252197] by Devin Rousso
  • 2 edits in trunk/Source/WebInspectorUI

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):

11:42 AM Changeset in webkit [252196] by commit-queue@webkit.org
  • 4 edits in trunk

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:
11:24 AM Changeset in webkit [252195] by Ross Kirsling
  • 3 edits in trunk/JSTests

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:
11:16 AM Changeset in webkit [252194] by Alan Coon
  • 13 edits
    1 move
    2 adds in branches/safari-608-branch/Source

Cherry-pick r252175. rdar://problem/56971561

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

11:12 AM Changeset in webkit [252193] by Alan Coon
  • 13 edits
    1 move
    2 adds in branches/safari-608.4.9.1-branch/Source

Cherry-pick r252175. rdar://problem/56971561

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

11:10 AM Changeset in webkit [252192] by Alan Coon
  • 7 edits in branches/safari-608.4.9.1-branch/Source

Versioning.

10:31 AM Changeset in webkit [252191] by commit-queue@webkit.org
  • 6 edits in trunk

HasProperty? result of Proxy in prototype chain is ignored
https://bugs.webkit.org/show_bug.cgi?id=203560

Patch by Alexey Shvayka <Alexey Shvayka> 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.

10:30 AM Changeset in webkit [252190] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

[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.
10:03 AM Changeset in webkit [252189] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[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):

9:31 AM Changeset in webkit [252188] by Adrian Perez de Castro
  • 1 copy in releases/WPE WebKit/webkit-2.26.2

WPE WebKit 2.26.2

9:30 AM Changeset in webkit [252187] by Adrian Perez de Castro
  • 4 edits in releases/WebKitGTK/webkit-2.26

Unreviewed. Update OptionsWPE.cmake and NEWS for the 2.26.2 release

.:

  • Source/cmake/OptionsWPE.cmake: Bump version numbers.

Source/WebKit:

  • wpe/NEWS: Add release notes for 2.26.2.
9:30 AM Changeset in webkit [252186] by Adrian Perez de Castro
  • 7 edits in releases/WebKitGTK/webkit-2.26/Source

Unreviewed build fixed for non-unified builds.

Source/WebCore:

No new tests needed.

  • Modules/indexeddb/shared/IDBGetAllRecordsData.cpp: Add missing inclusion of the

wtf/text/StringConcatenateNumbers.h header.

  • Modules/indexeddb/shared/IDBIterateCursorData.cpp: Ditto.
  • page/DOMWindowExtension.cpp: Add missing inclusion of the Document.h header.
  • platform/glib/UserAgentGLib.cpp: Add missing inclusion of the HTTPParsers.h header.

Source/WebKit:

  • NetworkProcess/NetworkConnectionToWebProcess.cpp: Add missin inclusion of the Logging.h header
9:05 AM Changeset in webkit [252185] by achristensen@apple.com
  • 18 edits in trunk

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.

8:32 AM Changeset in webkit [252184] by commit-queue@webkit.org
  • 5 edits in trunk/Tools

Add support for remotes file for EWS builders
https://bugs.webkit.org/show_bug.cgi?id=203899

Patch by Paulo Matos <Paulo Matos> 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):

6:55 AM Changeset in webkit [252183] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

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 Liu> 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):

6:15 AM Changeset in webkit [252182] by Andres Gonzalez
  • 8 edits in trunk/Source/WebCore

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:
5:21 AM Changeset in webkit [252181] by Andres Gonzalez
  • 12 edits in trunk/Source/WebCore

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.

4:09 AM Changeset in webkit [252180] by Carlos Garcia Campos
  • 6 edits in trunk

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.

1:52 AM Changeset in webkit [252179] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Indentation in ThreadGlobalData.h is incorrect
https://bugs.webkit.org/show_bug.cgi?id=203895

Patch by Chris Lord <Chris Lord> 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):

12:06 AM Changeset in webkit [252178] by svillar@igalia.com
  • 3 edits in trunk/Source/WebCore

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:
Note: See TracTimeline for information about the timeline view.