Timeline



Feb 8, 2021:

10:54 PM Changeset in webkit [272569] by commit-queue@webkit.org
  • 6 edits in trunk

Make auto && <ratio> use content box-sizing
https://bugs.webkit.org/show_bug.cgi?id=221527

Patch by Rob Buis <rbuis@igalia.com> on 2021-02-08
Reviewed by Simon Fraser.

Source/WebCore:

Make auto && <ratio> aspect-ratio use content box-sizing as specified:
https://drafts.csswg.org/css-sizing-4/#valdef-aspect-ratio-auto--ratio

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::availableLogicalHeightForPercentageComputation const):

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::computeLogicalHeight const):
(WebCore::RenderBox::availableLogicalHeightUsing const):
(WebCore::RenderBox::computePositionedLogicalHeightUsing const):
(WebCore::RenderBox::computeLogicalWidthFromAspectRatio const):
(WebCore::RenderBox::computeMinMaxLogicalWidthFromAspectRatio const):

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::boxSizingForAspectRatio const):

LayoutTests:

Enable some tests that pass now.

10:51 PM Changeset in webkit [272568] by commit-queue@webkit.org
  • 3 edits in trunk/Tools

Move layout_test_runner.Worker._update_test_input to LayoutTestRunner
https://bugs.webkit.org/show_bug.cgi?id=221577

Patch by Sam Sneddon <Sam Sneddon> on 2021-02-08
Reviewed by Jonathan Bedard.

  • Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py:

(LayoutTestRunner.run_tests):
(LayoutTestRunner._update_test_input):
(Worker.handle):
(Worker._run_test):
(Worker._update_test_input): Deleted.

  • Scripts/webkitpy/layout_tests/controllers/manager.py:

(Manager._run_tests):

9:37 PM Changeset in webkit [272567] by Simon Fraser
  • 3 edits
    2 adds in trunk

REGRESSION (r269458): yahoo.com social / comments bar shows as transparent when scrolling page
https://bugs.webkit.org/show_bug.cgi?id=221582
Source/WebCore:

<rdar://problem/73795359>

Reviewed by Tim Horton.

Fix some copypasta in r269458 that resulted in scrolling state fixed nodes failing to get
the right dirty bits after attach, resulting bad viewport constraint data.

Test: scrollingcoordinator/fixed-node-reattach.html

  • page/scrolling/ScrollingStateFixedNode.cpp:

(WebCore::ScrollingStateFixedNode::applicableProperties const):

LayoutTests:

Reviewed by Tim Horton.

  • scrollingcoordinator/fixed-node-reattach-expected.html: Added.
  • scrollingcoordinator/fixed-node-reattach.html: Added.
7:30 PM Changeset in webkit [272566] by Patrick Angle
  • 10 edits
    2 adds in trunk

Web Inspector: Add CSS.setLayoutContextTypeChangedMode for getting information about all layout contexts
https://bugs.webkit.org/show_bug.cgi?id=221449

Source/JavaScriptCore:

Reviewed by Devin Rousso.

Added CSS.setLayoutContextTypeChangedMode command and CSS.LayoutContextTypeChangedMode enum for controlling
if the frontend should be informed of all layout context type changes, or if only currently instrumented nodes
should be observed.

  • inspector/protocol/CSS.json:

Source/WebCore:

Reviewed by Devin Rousso.

Test: inspector/css/setLayoutContextTypeChangedMode.html

Backend support for changing the LayoutContextTypeChangedMode.

  • inspector/agents/InspectorCSSAgent.cpp:

(WebCore::pushChildrenNodesToFrontendIfLayoutContextTypePresent):

  • Recursively pushes children node paths to the frontend if a LayoutContextType exists for the node, which

allows the frontend to have a complete picture of the layout contexts in the document.
(WebCore::InspectorCSSAgent::setLayoutContextTypeChangedMode):

  • If the mode is changed to All, then make sure any node with a LayoutContextType inside any document is

sent to the frontend.
(WebCore::InspectorCSSAgent::nodeLayoutContextTypeChanged):

  • If the LayoutContextTypeChangedMode is All, inform the frontend of the node when it changes layout

context, even if the node was not previously instrumented.

  • inspector/agents/InspectorCSSAgent.h:

Source/WebInspectorUI:

Reviewed by Devin Rousso.

  • UserInterface/Controllers/CSSManager.js:
  • Added CSS.LayoutContextTypeChangedMode enum values.

(WI.CSSManager.prototype.set layoutContextTypeChangedMode):

  • UserInterface/Controllers/DOMManager.js:

(WI.DOMManager.prototype.nodesWithLayoutContextType):

  • Added ability to get all instrumented nodes of a specific layout context type.
  • UserInterface/Views/LayoutDetailsSidebarPanel.js:

(WI.LayoutDetailsSidebarPanel.prototype.attached):
(WI.LayoutDetailsSidebarPanel.prototype.detached):

  • Change the LayoutContextTypeChangedMode when showing/hiding the Layout panel.

LayoutTests:

Reviewed by Devin Rousso

Added layout tests for CSS.setLayoutContextTypeChangedMode command.

  • inspector/css/setLayoutContextTypeChangedMode-expected.txt: Added.
  • inspector/css/setLayoutContextTypeChangedMode.html: Added.
6:47 PM Changeset in webkit [272565] by Stephanie Lewis
  • 2 edits in trunk/Tools

<rdar://problem/70402593> Motionmark failed to start webserver

Reviewed by Dewei Zhu.

  • Scripts/webkitpy/benchmark_runner/benchmark_builder.py:

(BenchmarkBuilder.enter):

6:17 PM Changeset in webkit [272564] by commit-queue@webkit.org
  • 16 edits
    4 deletes in trunk

Unreviewed, reverting r272485.
https://bugs.webkit.org/show_bug.cgi?id=221588

Required revisions were reversed

Reverted changeset:

"[GLib] Permission request API for MediaKeySystem access
support"
https://bugs.webkit.org/show_bug.cgi?id=221199
https://trac.webkit.org/changeset/272485

5:47 PM Changeset in webkit [272563] by eric.carlson@apple.com
  • 2 edits in trunk/Tools

[Mac] Connect MediaSession with MediaRemote and NowPlaying
https://bugs.webkit.org/show_bug.cgi?id=221431
<rdar://problem/74000363>

Unreviewed build fix for macOS Catalina.

  • TestWebKitAPI/Tests/WebKitCocoa/MediaSession.mm:

(TestWebKitAPI::TEST_F): Add compile guards for Catalina.

5:45 PM Changeset in webkit [272562] by don.olmstead@sony.com
  • 7 edits in trunk/Source/WebCore

[CMake] Cleanup ENABLE_ENCRYPTED_MEDIA build
https://bugs.webkit.org/show_bug.cgi?id=221578

Reviewed by Michael Catanzaro.

Move missing shared files in platform/encryptedmedia to the Sources.txt. Update the XCode
project to reflect them moving to the unified build.

Move common configuration into the root CMakeLists.txt. Cleanup the related platform CMake
code to reflect the updated build.

  • CMakeLists.txt:
  • PlatformMac.cmake:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/GStreamer.cmake:
  • platform/gamepad/mac/HIDGamepad.cpp: Unrelated unified build fix
4:43 PM Changeset in webkit [272561] by commit-queue@webkit.org
  • 40 edits
    17 deletes in trunk

Unreviewed, reverting r272480, r272481, and r272500.
https://bugs.webkit.org/show_bug.cgi?id=221586

Caused assertion failure seen with EME tests

Reverted changesets:

"Permission request API for MediaKeySystem access support"
https://bugs.webkit.org/show_bug.cgi?id=221187
https://trac.webkit.org/changeset/272480

"Unreviewed, build fix after r272480"
https://trac.webkit.org/changeset/272481

"Permission request API for MediaKeySystem access support"
https://bugs.webkit.org/show_bug.cgi?id=221187
https://trac.webkit.org/changeset/272500

4:32 PM Changeset in webkit [272560] by aakash_jain@apple.com
  • 1 edit
    2 adds in trunk/Tools

[build.webkit.org] Add HTML file that translates a builder name and number pair to a valid Buildbot URL
https://bugs.webkit.org/show_bug.cgi?id=221579

Reviewed by Ryosuke Niwa.

  • CISupport/build-webkit-org/public_html/builders: Added.
  • CISupport/build-webkit-org/public_html/builders/index.html: Added.
4:32 PM Changeset in webkit [272559] by Simon Fraser
  • 2 edits in trunk/Source/WebKit

Crash with remote layer tree logging
https://bugs.webkit.org/show_bug.cgi?id=221580

Reviewed by Tim Horton.

Null-check animation.timingFunction when dumping remote layer tree animations.

  • WebProcess/WebPage/RemoteLayerTree/PlatformCAAnimationRemote.mm:

(WebKit::operator<<):

4:22 PM Changeset in webkit [272558] by commit-queue@webkit.org
  • 11 edits in trunk/Source/WebKit

Use CompletionHandler instead of BoolCallback
https://bugs.webkit.org/show_bug.cgi?id=221575
<rdar://problem/74058604>

Patch by Alex Christensen <achristensen@webkit.org> on 2021-02-08
Reviewed by Chris Dumez.

This makes the code more modern, and it makes our fuzzers better at reasoning what the boolean value is going to be used for.
It should also fix a rare crash involving BoolCallback by completely removing it.

  • UIProcess/GenericCallback.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::handlePreventableTouchEvent):
(WebKit::WebPageProxy::handleUnpreventableTouchEvent):
(WebKit::WebPageProxy::boolCallback): Deleted.

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • WebProcess/WebPage/EventDispatcher.cpp:

(WebKit::EventDispatcher::touchEventWithoutCallback):
(WebKit::EventDispatcher::touchEvent):
(WebKit::EventDispatcher::dispatchTouchEvents):

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

(WebKit::WebPage::touchEventSync):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::dispatchAsynchronousTouchEvents):
(WebKit::WebPage::cancelAsynchronousTouchEvents):

3:53 PM Changeset in webkit [272557] by don.olmstead@sony.com
  • 3 edits in trunk/Source/WebCore

Fix MSVC build with ENCRYPTED_MEDIA enabled
https://bugs.webkit.org/show_bug.cgi?id=177803
<rdar://problem/34920322>

Reviewed by Alex Christensen.

MSVC has a bug of a outer lambda's captured this can't be used as
a lambda capture initializer of an inner lambda.

  • Modules/encryptedmedia/MediaKeySession.cpp:

(WebCore::MediaKeySession::generateRequest):
(WebCore::MediaKeySession::load):
(WebCore::MediaKeySession::update):
(WebCore::MediaKeySession::close):
(WebCore::MediaKeySession::remove):

  • platform/encryptedmedia/clearkey/CDMClearKey.cpp:

(WebCore::CDMInstanceSessionClearKey::requestLicense):
(WebCore::CDMInstanceSessionClearKey::updateLicense):
(WebCore::CDMInstanceSessionClearKey::removeSessionData):

3:37 PM Changeset in webkit [272556] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

Make getStartEndListChildren check renderers
https://bugs.webkit.org/show_bug.cgi?id=221388

Patch by Rob Buis <rbuis@igalia.com> on 2021-02-08
Reviewed by Alex Christensen.

Source/WebCore:

Require the list to have non-null renderers for start
and end.

Test: editing/execCommand/insert-nested-lists-crash.html

  • editing/ModifySelectionListLevel.cpp:

(WebCore::getStartEndListChildren):

LayoutTests:

Add test for this.

  • editing/execCommand/insert-nested-lists-crash-expected.txt: Added.
  • editing/execCommand/insert-nested-lists-crash.html: Added.
3:34 PM Changeset in webkit [272555] by Russell Epstein
  • 2 edits in branches/safari-612.1.3-branch/Source/WebKitLegacy/mac

Cherry-pick r272500. rdar://problem/74116538

Permission request API for MediaKeySystem access support
https://bugs.webkit.org/show_bug.cgi?id=221187

Unreviewed build fix for macCatalyst.

  • WebCoreSupport/WebMediaKeySystemClient.h: Add a check for ENABLE(ENCRYPTED_MEDIA).

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

3:21 PM Changeset in webkit [272554] by Alan Coon
  • 1 copy in tags/Safari-611.1.15

Tag Safari-611.1.15.

3:13 PM Changeset in webkit [272553] by Russell Epstein
  • 8 edits in branches/safari-612.1.3-branch/Source

Versioning.

WebKit-7612.1.3

3:10 PM Changeset in webkit [272552] by Russell Epstein
  • 1 copy in branches/safari-612.1.3-branch

New branch.

3:06 PM Changeset in webkit [272551] by Russell Epstein
  • 8 edits in trunk/Source

Versioning.

WebKit-7612.1.4

2:55 PM Changeset in webkit [272550] by beidson@apple.com
  • 19 edits in trunk/Source

Make the UserContentController for ServiceWorker pages be non-optional.
<rdar://problem/71434565> and https://bugs.webkit.org/show_bug.cgi?id=221503

Reviewed by Alex Christensen.
Source/WebCore:

  • loader/EmptyClients.cpp:

(WebCore::pageConfigurationWithEmptyClients):

  • page/Page.cpp:

(WebCore::Page::Page):

  • page/PageConfiguration.cpp:

(WebCore::PageConfiguration::PageConfiguration):

  • page/PageConfiguration.h:

Source/WebKit:

Normal Pages always have a UserContentProvider, even if they just create an empty default one.

Same should be true for ServiceWorkers.

  • Shared/ServiceWorkerInitializationData.cpp:

(WebKit::ServiceWorkerInitializationData::decode):

  • Shared/ServiceWorkerInitializationData.h:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::userContentControllerIdentifierForServiceWorkers):
(WebKit::WebProcessPool::createWebPage):

  • UIProcess/WebProcessPool.h:
  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::enableServiceWorkers):

  • UIProcess/WebProcessProxy.h:
  • WebProcess/Storage/WebSWContextManagerConnection.cpp:

(WebKit::m_userContentController):
(WebKit::m_userAgent): Deleted.

  • WebProcess/Storage/WebSWContextManagerConnection.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::m_limitsNavigationsToAppBoundDomains):

Source/WebKitLegacy/mac:

  • WebView/WebView.mm:

(-[WebView _commonInitializationWithFrameName:groupName:]):

Source/WebKitLegacy/win:

  • WebView.cpp:

(WebView::initWithFrame):

2:23 PM Changeset in webkit [272549] by Said Abou-Hallawa
  • 6 edits in trunk

A Pattern with an SVG image is not rendered correctly
https://bugs.webkit.org/show_bug.cgi?id=221550

Reviewed by Simon Fraser.

Source/WebCore:

Implement SVGImage::nativeImage() and nativeImageForCurrentFrame() for
all platforms. This will make Pattern::createPlatformPattern() creates
CGPatternRef with a valid CGImageRef.

  • svg/graphics/SVGImage.cpp:

(WebCore::SVGImage::nativeImageForCurrentFrame):
(WebCore::SVGImage::nativeImage):

  • svg/graphics/SVGImage.h:

LayoutTests:

  • imported/blink/svg/canvas/canvas-draw-pattern-size-expected.html:

Change the expected result to not use the pattern in its drawing.

  • imported/blink/svg/canvas/canvas-draw-pattern-size.html:

Use a rectangle instead of a circle to avoid differences with the expected
result due to the edge smoothing.

2:04 PM Changeset in webkit [272548] by Jonathan Bedard
  • 126 edits
    1 move
    61 adds
    58 deletes in trunk/LayoutTests

[LayoutTests] Convert xmlhttprequest php to Python
https://bugs.webkit.org/show_bug.cgi?id=220995
<rdar://problem/73630008>

Reviewed by Alex Christensen.

  • http/tests/local/formdata/resources/send-form-data-common.js:

(sendFormData):

  • http/tests/local/formdata/send-form-data-constructed-from-form-expected.txt:
  • http/tests/local/formdata/send-form-data-constructed-from-form-using-open-panel-expected.txt:
  • http/tests/local/formdata/send-form-data-constructed-from-form-using-open-panel.html:
  • http/tests/local/formdata/send-form-data-constructed-from-form.html:
  • http/tests/local/formdata/send-form-data-with-empty-blob-filename.html:
  • http/tests/local/formdata/send-form-data-with-empty-file-filename-using-open-panel.html:
  • http/tests/local/formdata/send-form-data-with-empty-file-filename.html:
  • http/tests/media/user-gesture-preserved-across-xmlhttprequest.html:
  • http/tests/resources/init.py: Added.
  • http/tests/resources/portabilityLayer.py: Added.

(setState):
(getState):

  • http/tests/resources/reset-temp-file.py: Added.
  • http/tests/xmlhttprequest/XMLHttpRequestException.html:
  • http/tests/xmlhttprequest/abort-should-cancel-load-expected.txt:
  • http/tests/xmlhttprequest/abort-should-cancel-load.html:
  • http/tests/xmlhttprequest/access-control-allow-lists-starting-with-comma.html:
  • http/tests/xmlhttprequest/access-control-and-redirects-async-expected.txt:
  • http/tests/xmlhttprequest/access-control-and-redirects-async.html:
  • http/tests/xmlhttprequest/access-control-basic-allow-preflight-cache-invalidation-by-header.html:
  • http/tests/xmlhttprequest/access-control-basic-allow-preflight-cache-invalidation-by-method.html:
  • http/tests/xmlhttprequest/access-control-basic-allow-preflight-cache-timeout.html:
  • http/tests/xmlhttprequest/access-control-basic-allow-preflight-cache.html:
  • http/tests/xmlhttprequest/access-control-preflight-async-header-denied-expected.txt:
  • http/tests/xmlhttprequest/access-control-preflight-async-header-denied.html:
  • http/tests/xmlhttprequest/access-control-preflight-async-method-denied-expected.txt:
  • http/tests/xmlhttprequest/access-control-preflight-async-method-denied.html:
  • http/tests/xmlhttprequest/access-control-preflight-async-not-supported-expected.txt:
  • http/tests/xmlhttprequest/access-control-preflight-async-not-supported.html:
  • http/tests/xmlhttprequest/access-control-preflight-credential-async.html:
  • http/tests/xmlhttprequest/access-control-preflight-credential-sync.html:
  • http/tests/xmlhttprequest/access-control-preflight-headers-async.html:
  • http/tests/xmlhttprequest/access-control-preflight-headers-sync.html:
  • http/tests/xmlhttprequest/access-control-preflight-not-successful-expected.txt:
  • http/tests/xmlhttprequest/access-control-preflight-not-successful.html:
  • http/tests/xmlhttprequest/access-control-preflight-request-header-lowercase.html:
  • http/tests/xmlhttprequest/access-control-preflight-sync-header-denied-expected.txt:
  • http/tests/xmlhttprequest/access-control-preflight-sync-header-denied.html:
  • http/tests/xmlhttprequest/access-control-preflight-sync-method-denied-expected.txt:
  • http/tests/xmlhttprequest/access-control-preflight-sync-method-denied.html:
  • http/tests/xmlhttprequest/access-control-preflight-sync-not-supported-expected.txt:
  • http/tests/xmlhttprequest/access-control-preflight-sync-not-supported.html:
  • http/tests/xmlhttprequest/access-control-response-with-body-sync.html:
  • http/tests/xmlhttprequest/access-control-response-with-body.html:
  • http/tests/xmlhttprequest/access-control-response-with-expose-headers.html:
  • http/tests/xmlhttprequest/auth-reject-protection-space.html:
  • http/tests/xmlhttprequest/authorization-header.html:
  • http/tests/xmlhttprequest/basic-auth-credentials-escaping.html:
  • http/tests/xmlhttprequest/basic-auth-default.html:
  • http/tests/xmlhttprequest/basic-auth-load-URL-with-consecutive-slashes.html:
  • http/tests/xmlhttprequest/basic-auth-nopassword.html:
  • http/tests/xmlhttprequest/basic-auth-nouser.html:
  • http/tests/xmlhttprequest/basic-auth-responseURL-expected.txt:
  • http/tests/xmlhttprequest/basic-auth-responseURL.html:
  • http/tests/xmlhttprequest/basic-auth.html:
  • http/tests/xmlhttprequest/chunked-progress-event-expectedLength.html:
  • http/tests/xmlhttprequest/connection-error-sync.html:
  • http/tests/xmlhttprequest/cors-non-standard-safelisted-headers-should-trigger-preflight-expected.txt:
  • http/tests/xmlhttprequest/cors-non-standard-safelisted-headers-should-trigger-preflight.html:
  • http/tests/xmlhttprequest/cross-origin-authorization-with-embedder.html:
  • http/tests/xmlhttprequest/cross-origin-authorization.html:
  • http/tests/xmlhttprequest/cross-origin-cookie-storage.html:
  • http/tests/xmlhttprequest/cross-origin-no-authorization-expected.txt:
  • http/tests/xmlhttprequest/cross-origin-no-authorization.html:
  • http/tests/xmlhttprequest/cross-origin-no-credential-prompt-expected.txt:
  • http/tests/xmlhttprequest/cross-origin-no-credential-prompt.html:
  • http/tests/xmlhttprequest/cross-origin-preflight-get.html:
  • http/tests/xmlhttprequest/cross-origin-redirect-responseURL.html:
  • http/tests/xmlhttprequest/detaching-frame-2.html:
  • http/tests/xmlhttprequest/digest-auth.html:
  • http/tests/xmlhttprequest/failed-auth-expected.txt:
  • http/tests/xmlhttprequest/failed-auth.html:
  • http/tests/xmlhttprequest/gzip-content-type.html:
  • http/tests/xmlhttprequest/head-redirection.html:
  • http/tests/xmlhttprequest/logout.html:
  • http/tests/xmlhttprequest/navigation-should-abort.html:
  • http/tests/xmlhttprequest/null-auth.php: Removed.
  • http/tests/xmlhttprequest/null-auth.py: Added.
  • http/tests/xmlhttprequest/onabort-event.html:
  • http/tests/xmlhttprequest/onabort-progressevent-attributes.html:
  • http/tests/xmlhttprequest/onloadend-event-after-error.html:
  • http/tests/xmlhttprequest/onloadend-event-after-sync-requests.html:
  • http/tests/xmlhttprequest/origin-exact-matching-expected.txt:
  • http/tests/xmlhttprequest/overridemimetype-headers-received-state-force-shiftjis.html:
  • http/tests/xmlhttprequest/post-blob-content-type-async-expected.txt:
  • http/tests/xmlhttprequest/post-blob-content-type-sync-expected.txt:
  • http/tests/xmlhttprequest/post-blob-content-type-tests.js:
  • http/tests/xmlhttprequest/re-login-async.html:
  • http/tests/xmlhttprequest/re-login.html:
  • http/tests/xmlhttprequest/redirect-cors-origin-null.html:
  • http/tests/xmlhttprequest/redirect-credentials-responseURL-expected.txt:
  • http/tests/xmlhttprequest/redirect-credentials-responseURL.html:
  • http/tests/xmlhttprequest/redirect-cross-origin-tripmine-expected.txt:
  • http/tests/xmlhttprequest/redirect-cross-origin-tripmine.html:
  • http/tests/xmlhttprequest/redirections-and-user-headers.html:
  • http/tests/xmlhttprequest/remember-bad-password-expected.txt:
  • http/tests/xmlhttprequest/remember-bad-password.html:
  • http/tests/xmlhttprequest/resources/access-control-allow-lists.php: Removed.
  • http/tests/xmlhttprequest/resources/access-control-allow-lists.py: Added.
  • http/tests/xmlhttprequest/resources/access-control-allow-with-body.php: Removed.
  • http/tests/xmlhttprequest/resources/access-control-allow-with-body.py: Added.
  • http/tests/xmlhttprequest/resources/access-control-basic-preflight-cache-invalidation.php: Removed.
  • http/tests/xmlhttprequest/resources/access-control-basic-preflight-cache-invalidation.py: Added.

(fail):

  • http/tests/xmlhttprequest/resources/access-control-basic-preflight-cache-timeout.php: Removed.
  • http/tests/xmlhttprequest/resources/access-control-basic-preflight-cache-timeout.py: Added.

(fail):

  • http/tests/xmlhttprequest/resources/access-control-basic-preflight-cache.php: Removed.
  • http/tests/xmlhttprequest/resources/access-control-basic-preflight-cache.py: Added.

(fail):

  • http/tests/xmlhttprequest/resources/access-control-preflight-denied-xsrf.php: Removed.
  • http/tests/xmlhttprequest/resources/access-control-preflight-denied-xsrf.py: Added.

(fail):

  • http/tests/xmlhttprequest/resources/access-control-preflight-redirect.php: Removed.
  • http/tests/xmlhttprequest/resources/access-control-preflight-redirect.py: Added.
  • http/tests/xmlhttprequest/resources/access-control-preflight-request-header-lowercase.php: Removed.
  • http/tests/xmlhttprequest/resources/access-control-preflight-request-header-lowercase.py: Added.
  • http/tests/xmlhttprequest/resources/access-control-response-with-expose-headers.php: Removed.
  • http/tests/xmlhttprequest/resources/access-control-response-with-expose-headers.py: Added.
  • http/tests/xmlhttprequest/resources/basic-auth-default/dir1/basic-auth.php: Removed.
  • http/tests/xmlhttprequest/resources/basic-auth-default/dir1/basic-auth.py: Added.
  • http/tests/xmlhttprequest/resources/basic-auth-default/dir2/basic-auth.php: Removed.
  • http/tests/xmlhttprequest/resources/basic-auth-default/dir2/basic-auth.py: Added.
  • http/tests/xmlhttprequest/resources/basic-auth-default/dir2/catch.php: Removed.
  • http/tests/xmlhttprequest/resources/basic-auth-default/dir2/catch.py: Added.
  • http/tests/xmlhttprequest/resources/basic-auth-nouserpass/basic-auth-nouserpass.php: Removed.
  • http/tests/xmlhttprequest/resources/basic-auth-nouserpass/basic-auth-nouserpass.py: Added.
  • http/tests/xmlhttprequest/resources/basic-auth/access-control-auth-basic.php: Removed.
  • http/tests/xmlhttprequest/resources/basic-auth/access-control-auth-basic.py: Added.
  • http/tests/xmlhttprequest/resources/basic-auth/basic-auth.php: Removed.
  • http/tests/xmlhttprequest/resources/basic-auth/basic-auth.py: Added.
  • http/tests/xmlhttprequest/resources/big-response.php: Removed.
  • http/tests/xmlhttprequest/resources/big-response.py: Added.
  • http/tests/xmlhttprequest/resources/chunked-transfer.php: Removed.
  • http/tests/xmlhttprequest/resources/chunked-transfer.py: Added.
  • http/tests/xmlhttprequest/resources/cors-preflight-safelisted-headers-responder.php: Removed.
  • http/tests/xmlhttprequest/resources/cors-preflight-safelisted-headers-responder.py: Added.
  • http/tests/xmlhttprequest/resources/cross-origin-authorization.php: Removed.
  • http/tests/xmlhttprequest/resources/cross-origin-authorization.py: Added.
  • http/tests/xmlhttprequest/resources/cross-origin-check-cookies.php: Removed.
  • http/tests/xmlhttprequest/resources/cross-origin-check-cookies.py: Added.
  • http/tests/xmlhttprequest/resources/cross-origin-no-authorization.php: Removed.
  • http/tests/xmlhttprequest/resources/cross-origin-no-authorization.py: Added.
  • http/tests/xmlhttprequest/resources/cross-origin-preflight-get.php: Removed.
  • http/tests/xmlhttprequest/resources/cross-origin-preflight-get.py: Added.
  • http/tests/xmlhttprequest/resources/cross-origin-preset-authorization-frame.html:
  • http/tests/xmlhttprequest/resources/cross-origin-set-cookies.php: Removed.
  • http/tests/xmlhttprequest/resources/cross-origin-set-cookies.py: Added.
  • http/tests/xmlhttprequest/resources/custom-headers.php: Removed.
  • http/tests/xmlhttprequest/resources/custom-headers.py: Added.
  • http/tests/xmlhttprequest/resources/download-header-with-delay.php: Removed.
  • http/tests/xmlhttprequest/resources/download-header-with-delay.py: Added.
  • http/tests/xmlhttprequest/resources/download-with-delay.php: Removed.
  • http/tests/xmlhttprequest/resources/download-with-delay.py: Added.
  • http/tests/xmlhttprequest/resources/echo-auth.php: Removed.
  • http/tests/xmlhttprequest/resources/echo-auth.py: Added.
  • http/tests/xmlhttprequest/resources/echo-host.php: Removed.
  • http/tests/xmlhttprequest/resources/echo-host.py: Added.
  • http/tests/xmlhttprequest/resources/echo-request-method.php: Removed.
  • http/tests/xmlhttprequest/resources/echo-request-method.py: Added.
  • http/tests/xmlhttprequest/resources/echo-user-agent.php: Removed.
  • http/tests/xmlhttprequest/resources/echo-user-agent.py: Added.
  • http/tests/xmlhttprequest/resources/empty-content-type.php: Removed.
  • http/tests/xmlhttprequest/resources/empty-content-type.py: Added.
  • http/tests/xmlhttprequest/resources/endlessxml.php: Removed.
  • http/tests/xmlhttprequest/resources/endlessxml.py: Added.
  • http/tests/xmlhttprequest/resources/frame-load-to-cancel.html:
  • http/tests/xmlhttprequest/resources/get-content.php: Removed.
  • http/tests/xmlhttprequest/resources/get-content.py: Added.
  • http/tests/xmlhttprequest/resources/get_method.php: Removed.
  • http/tests/xmlhttprequest/resources/get_method.py: Added.
  • http/tests/xmlhttprequest/resources/gzip-lorem.php: Removed.
  • http/tests/xmlhttprequest/resources/gzip-lorem.py: Added.
  • http/tests/xmlhttprequest/resources/headers.php: Removed.
  • http/tests/xmlhttprequest/resources/headers.py: Added.
  • http/tests/xmlhttprequest/resources/infinite-loop.php: Removed.
  • http/tests/xmlhttprequest/resources/infinite-loop.py: Added.
  • http/tests/xmlhttprequest/resources/logout/resource.php: Removed.
  • http/tests/xmlhttprequest/resources/logout/resource.py: Added.
  • http/tests/xmlhttprequest/resources/multipart-post-echo-filenames.php: Removed.
  • http/tests/xmlhttprequest/resources/multipart-post-echo-filenames.py: Added.
  • http/tests/xmlhttprequest/resources/multipart-post-echo.php: Removed.
  • http/tests/xmlhttprequest/resources/multipart-post-echo.py: Added.
  • http/tests/xmlhttprequest/resources/no-authenticate-header-401.php: Removed.
  • http/tests/xmlhttprequest/resources/no-authenticate-header-401.py: Added.
  • http/tests/xmlhttprequest/resources/no-custom-header.php: Removed.
  • http/tests/xmlhttprequest/resources/no-custom-header.py: Added.
  • http/tests/xmlhttprequest/resources/not-ascii-status.php: Removed.
  • http/tests/xmlhttprequest/resources/not-ascii-status.py: Added.
  • http/tests/xmlhttprequest/resources/origin-exact-matching-iframe.html:
  • http/tests/xmlhttprequest/resources/print-headers.php: Removed.
  • http/tests/xmlhttprequest/resources/print-headers.py: Added.
  • http/tests/xmlhttprequest/resources/print-referer.php: Removed.
  • http/tests/xmlhttprequest/resources/print-referer.py: Added.
  • http/tests/xmlhttprequest/resources/re-login/resource.php: Removed.
  • http/tests/xmlhttprequest/resources/re-login/resource.py: Added.
  • http/tests/xmlhttprequest/resources/redirect-cors-origin-null-pass.php: Removed.
  • http/tests/xmlhttprequest/resources/redirect-cors-origin-null-pass.py: Added.
  • http/tests/xmlhttprequest/resources/redirect-cors-origin-null.php: Removed.
  • http/tests/xmlhttprequest/resources/redirect-cors-origin-null.py: Added.
  • http/tests/xmlhttprequest/resources/redirect-cors.php: Removed.
  • http/tests/xmlhttprequest/resources/redirect-cors.py: Added.
  • http/tests/xmlhttprequest/resources/redirect-cross-origin-tripmine.php: Removed.
  • http/tests/xmlhttprequest/resources/redirect-cross-origin-tripmine.py: Added.
  • http/tests/xmlhttprequest/resources/redirect_methods.php: Removed.
  • http/tests/xmlhttprequest/resources/redirect_methods.py: Added.
  • http/tests/xmlhttprequest/resources/remember-bad-password/count-failures.php: Removed.
  • http/tests/xmlhttprequest/resources/remember-bad-password/count-failures.py: Added.
  • http/tests/xmlhttprequest/resources/status-404-without-body.php: Removed.
  • http/tests/xmlhttprequest/resources/status-404-without-body.py: Added.
  • http/tests/xmlhttprequest/resources/url-with-credentials/authenticate.php: Removed.
  • http/tests/xmlhttprequest/resources/url-with-credentials/authenticate.py: Added.
  • http/tests/xmlhttprequest/resources/url-with-credentials/authorize.php: Removed.
  • http/tests/xmlhttprequest/resources/url-with-credentials/authorize.py: Added.
  • http/tests/xmlhttprequest/resources/xmlhttprequest-in-unload.html:
  • http/tests/xmlhttprequest/resources/xmlhttprequest-mimetype-mixed-case.php: Removed.
  • http/tests/xmlhttprequest/resources/xmlhttprequest-mimetype-mixed-case.py: Added.
  • http/tests/xmlhttprequest/response-access-on-error.html:
  • http/tests/xmlhttprequest/response-special-characters.html:
  • http/tests/xmlhttprequest/simple-sync.html:
  • http/tests/xmlhttprequest/unauthorized-without-authenticate-header.html:
  • http/tests/xmlhttprequest/url-with-credentials.html:
  • http/tests/xmlhttprequest/workers/resources/endless-response.php: Removed.
  • http/tests/xmlhttprequest/workers/resources/endless-response.py: Added.
  • http/tests/xmlhttprequest/workers/resources/endless-sync-xhr.js:
  • http/tests/xmlhttprequest/xhr-user-agent.html:
  • http/tests/xmlhttprequest/xmlhttprequest-50ms-download-dispatch.html:
  • http/tests/xmlhttprequest/xmlhttprequest-abort-readyState-shouldDispatchEvent.html:
  • http/tests/xmlhttprequest/xmlhttprequest-check-get-readystate-for-404-without-body.html:
  • http/tests/xmlhttprequest/xmlhttprequest-contenttype-empty.html:
  • http/tests/xmlhttprequest/xmlhttprequest-mimetype-mixed-case.html:
  • http/tests/xmlhttprequest/xmlhttprequest-onProgress-open-should-zero-length.html:
  • http/tests/xmlhttprequest/xmlhttprequest-open-method-allowed.html:
  • http/tests/xmlhttprequest/xmlhttprequest-open-method-case-insensitive.html:
  • http/tests/xmlhttprequest/xmlhttprequest-responseURL.html:
  • http/tests/xmlhttprequest/xmlhttprequest-sync-no-timers.html:
  • http/tests/xmlhttprequest/xmlhttprequest-test-custom-headers.html:
  • http/tests/xmlhttprequest/xmlhttprequest-test-send-flag.html:
  • imported/blink/http/tests/security/mixedContent/resources/frame-with-insecure-sync-xhr-post.html:
  • platform/mac-wk1/http/tests/xmlhttprequest/access-control-preflight-not-successful-expected.txt:
  • platform/mac-wk1/http/tests/xmlhttprequest/cross-origin-no-authorization-expected.txt:
  • platform/mac-wk1/http/tests/xmlhttprequest/post-blob-content-type-async-expected.txt:
  • platform/mac-wk1/http/tests/xmlhttprequest/post-blob-content-type-sync-expected.txt:
  • platform/mac-wk1/http/tests/xmlhttprequest/redirect-cross-origin-tripmine-expected.txt:
  • platform/win/http/tests/xmlhttprequest/access-control-preflight-not-successful-expected.txt:
  • platform/win/http/tests/xmlhttprequest/cross-origin-no-authorization-expected.txt:
  • platform/win/http/tests/xmlhttprequest/redirect-cross-origin-tripmine-expected.txt:
1:46 PM Changeset in webkit [272547] by eric.carlson@apple.com
  • 2 edits in trunk/Source/WebCore

[Mac] Connect MediaSession with MediaRemote and NowPlaying
https://bugs.webkit.org/show_bug.cgi?id=221431
<rdar://problem/74000363>

Unreviewed, fix the NowPlayingInfo encoder after r272445.

  • platform/audio/NowPlayingInfo.h:

(WebCore::NowPlayingInfo::encode const): Update the encoder for new fields added.

1:40 PM Changeset in webkit [272546] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

Prevent WebProcess to re-enter on sync IPC to the GPUProcess
https://bugs.webkit.org/show_bug.cgi?id=221566
<rdar://problem/74108466>

Reviewed by Ryosuke Niwa.

Prevent WebProcess to re-enter on sync IPC to the GPUProcess, similarly to what we already
do for sync IPC to other processes (Network, UI).

  • GPUProcess/GPUConnectionToWebProcess.cpp:

(WebKit::GPUConnectionToWebProcess::GPUConnectionToWebProcess):

1:26 PM Changeset in webkit [272545] by Lauro Moura
  • 2 edits in trunk/Source/WebCore

Unreviewed. Tentative build fix for WPE/GTK after r272504.

Somehow r272504 went green in gtk/wpe EWS but failed in post commit
bots.

Remove the WebCore prefix to follow the include scheme used in other
mediastream module files.

  • Modules/mediastream/STUNMessageParsing.cpp:
1:25 PM Changeset in webkit [272544] by jer.noble@apple.com
  • 3 edits in trunk/Source/WebCore

[Cocoa] Encrypted media segments should generate a parser error if no encrypted media handler is present.
https://bugs.webkit.org/show_bug.cgi?id=221496

Reviewed by Eric Carlson.

The WebM format reader does not support encrypted media parsing, so the parser must generate an error rather
than continuing to parse encrypted media data.

  • platform/graphics/cocoa/SourceBufferParserWebM.cpp:

(WebCore::SourceBufferParserWebM::OnElementEnd):
(WebCore::SourceBufferParserWebM::OnTrackEntry):

  • platform/graphics/cocoa/SourceBufferParserWebM.h:
1:24 PM Changeset in webkit [272543] by Alan Coon
  • 3 edits
    1 add in branches/safari-611-branch

Cherry-pick r271570. rdar://problem/74105714

[JSC] GenericArguments<Type>::defineOwnProperty's assumption about error is not correct
https://bugs.webkit.org/show_bug.cgi?id=220693
<rdar://problem/72929171>

Reviewed by Mark Lam.

JSTests:

  • stress/freeze-invokes-out-of-memory.js: Added. (shouldThrow):

Source/JavaScriptCore:

Any function taking JSGlobalObject* can cause out-of-memory error potentially. And we have a way to invoke it.
But GenericArguments<Type>::defineOwnProperty didn't assume OutOfMemory error. This patch fixes it.

  • runtime/GenericArgumentsInlines.h: (JSC::GenericArguments<Type>::defineOwnProperty):

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

1:24 PM Changeset in webkit [272542] by Alan Coon
  • 4 edits in branches/safari-611-branch

Cherry-pick r270664. rdar://problem/74105714

Align DefineOwnProperty? method of mapped arguments object with the spec
https://bugs.webkit.org/show_bug.cgi?id=219750

Reviewed by Yusuke Suzuki.

JSTests:

  • test262/expectations.yaml: Mark 5 test cases as passing.

Source/JavaScriptCore:

This patch reimplements DefineOwnProperty? method to resemble the spec [1] as
closely as possible, aligning JSC with V8 and SpiderMonkey on remaining test262 cases.

Unlike the spec [2], JSC doesn't materialize mapped indices with initial values,
so putDirectIndex() is performed on the first call to handle incomplete descriptors.

Even though there is a possibility to avoid JSObject storage puts for a handful of
super rare descriptors, it's not worth the increased complexity.

[1]: https://tc39.es/ecma262/#sec-arguments-exotic-objects-defineownproperty-p-desc
[2]: https://tc39.es/ecma262/#sec-createmappedargumentsobject (step 15.b)

  • runtime/GenericArgumentsInlines.h: (JSC::GenericArguments<Type>::defineOwnProperty):

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

1:24 PM Changeset in webkit [272541] by Alan Coon
  • 46 edits in branches/safari-611-branch

Cherry-pick r272345. rdar://problem/74032500

[WebAuthn] Allow one user gesture free prompt for each navigation
https://bugs.webkit.org/show_bug.cgi?id=220897
<rdar://problem/73541303>

Reviewed by Brent Fulgham.

Source/WebCore:

  • Modules/webauthn/AuthenticatorCoordinator.cpp: (WebCore::AuthenticatorCoordinator::resetUserGestureRequirement):
  • Modules/webauthn/AuthenticatorCoordinator.h:
  • Modules/webauthn/AuthenticatorCoordinatorClient.h:
  • page/Quirks.cpp:
  • page/Quirks.cpp.h:
  • replay/UserInputBridge.cpp: (WebCore::UserInputBridge::loadRequest): (WebCore::UserInputBridge::reloadFrame): Adds the ability to reset the user gesture requirement flag for user initiated reloads and quirks.

Source/WebKit:

This is a quirk that only allows certain websites.

Covered by existing tests.

  • UIProcess/WebAuthentication/AuthenticatorManager.cpp: (WebKit::AuthenticatorManager::filterTransports const): (WebKit::AuthenticatorManager::runPanel): (WebKit::AuthenticatorManager::runPresenter): Cancel the whole WebAuthn operation if no user gesture is indicated.
  • WebProcess/WebAuthentication/WebAuthenticatorCoordinator.cpp: (WebKit::WebAuthenticatorCoordinator::makeCredential): (WebKit::WebAuthenticatorCoordinator::getAssertion):
  • WebProcess/WebAuthentication/WebAuthenticatorCoordinator.h: Set a boolean to indicate a free coupon for each navigation.

Tools:

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

LayoutTests:

  • http/wpt/webauthn/ctap-hid-failure.https-expected.txt:
  • http/wpt/webauthn/ctap-hid-success.https-expected.txt:
  • http/wpt/webauthn/ctap-nfc-failure.https-expected.txt:
  • http/wpt/webauthn/idl.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-create-failure-hid-silent.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-create-failure-hid.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-create-failure-local-silent.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-create-failure-local.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-create-failure-nfc.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-create-failure-u2f-silent.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-create-failure-u2f.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-create-failure.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-create-success-hid.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-create-success-local.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-create-success-nfc.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-create-success-u2f.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-get-failure-hid-silent.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-get-failure-hid.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-get-failure-local-silent.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-get-failure-local.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-get-failure-nfc.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-get-failure-u2f-silent.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-get-failure-u2f.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-get-failure.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-get-success-hid.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-get-success-local.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-get-success-nfc.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-get-success-u2f.https-expected.txt:

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

1:24 PM Changeset in webkit [272540] by Alan Coon
  • 21 edits in branches/safari-611-branch

Cherry-pick r272184. rdar://problem/74032500

[WebAuthn] Optimize _WKWebAuthenticationPanelDelegate for native API
https://bugs.webkit.org/show_bug.cgi?id=221125
<rdar://problem/71509141>

Reviewed by Brent Fulgham.

Source/WebKit:

This patch mainly does the following few things:

  1. It connects the new SPI with the existing mock testing infrastructure such that we can mock test it.
  2. It adds a new mode in AuthenticatorManager to connect it to the new _WKWebAuthenticationPanelDelegate object.
  3. It adss a new SPI to _WKWebAuthenticationPanelDelegate: -[panel:requestLAContextForUserVerificationWithCompletionHandler:], and adds a new method within _WKWebAuthenticationAssertionResponse to accept an LAContext from the caller to unlock the keychain.
  4. It enables -[_WKWebAuthenticationPanel cancel] to use the new cancel method.

Covered by API tests.

  • UIProcess/API/APIWebAuthenticationAssertionResponse.h: Accepts a LAContext object.
  • UIProcess/API/APIWebAuthenticationPanel.cpp: (API::WebAuthenticationPanel::WebAuthenticationPanel): (API::WebAuthenticationPanel::handleRequest): (API::WebAuthenticationPanel::cancel const): (API::WebAuthenticationPanel::setMockConfiguration):
  • UIProcess/API/APIWebAuthenticationPanel.h:
  • UIProcess/API/APIWebAuthenticationPanelClient.h: (API::WebAuthenticationPanelClient::requestLAContextForUserVerification const): Adds new SPI and mocking.
  • UIProcess/API/Cocoa/_WKWebAuthenticationAssertionResponse.h:
  • UIProcess/API/Cocoa/_WKWebAuthenticationAssertionResponse.mm: (-[_WKWebAuthenticationAssertionResponse setLAContext:]): Accepts a LAContext object.
  • UIProcess/API/Cocoa/_WKWebAuthenticationPanel.h:
  • UIProcess/API/Cocoa/_WKWebAuthenticationPanel.mm: (-[_WKWebAuthenticationPanel setMockConfiguration:]):
  • UIProcess/API/Cocoa/_WKWebAuthenticationPanelForTesting.h: Adds new SPI and mocking.
  • UIProcess/WebAuthentication/AuthenticatorManager.cpp: (WebKit::AuthenticatorManager::handleRequest): (WebKit::AuthenticatorManager::enableModernWebAuthentication): (WebKit::AuthenticatorManager::enableNativeSupport): (WebKit::AuthenticatorManager::authenticatorAdded): (WebKit::AuthenticatorManager::requestLAContextForUserVerification): (WebKit::AuthenticatorManager::runPresenter): (WebKit::AuthenticatorManager::dispatchPanelClientCall const):
  • UIProcess/WebAuthentication/AuthenticatorManager.h: Adds a new mode to power the native API.
  • UIProcess/WebAuthentication/Cocoa/WebAuthenticationPanelClient.h:
  • UIProcess/WebAuthentication/Cocoa/WebAuthenticationPanelClient.mm: (WebKit::WebAuthenticationPanelClient::WebAuthenticationPanelClient): (WebKit::WebAuthenticationPanelClient::requestLAContextForUserVerification const): Accepts a LAContext object.
  • UIProcess/WebAuthentication/Mock/MockLocalConnection.h:
  • UIProcess/WebAuthentication/Mock/MockLocalConnection.mm: (WebKit::MockLocalConnection::verifyUser): Adds new mocking functions.
  • UIProcess/WebAuthentication/WebAuthenticationRequestData.h: Adds the new weak panel.

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/_WKWebAuthenticationPanel.mm: (-[TestWebAuthenticationPanelDelegate panel:selectAssertionResponse:source:completionHandler:]): (-[TestWebAuthenticationPanelDelegate panel:requestLAContextForUserVerificationWithCompletionHandler:]): (TestWebKitAPI::WebCore::reset): (TestWebKitAPI::TEST):

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

1:24 PM Changeset in webkit [272539] by Alan Coon
  • 2 edits in branches/safari-611-branch/Source/JavaScriptCore

Cherry-pick r271767. rdar://problem/74105427

Obj-C API should do correct type checks when using a 32-bit address space
https://bugs.webkit.org/show_bug.cgi?id=220880
<rdar://72370334>

Reviewed by Tadeu Zagallo.

  • API/JSValue.mm: (-[JSValue isNull]): (-[JSValue isBoolean]): (-[JSValue isNumber]): (-[JSValue isString]):

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

1:24 PM Changeset in webkit [272538] by Alan Coon
  • 6 edits in branches/safari-611-branch

Cherry-pick r270665. rdar://problem/74105427

Removing unnecessary locking from JSValue API functions
https://bugs.webkit.org/show_bug.cgi?id=219723

Reviewed by Filip Pizlo.

PerformanceTests:

Print an error message when benchmarks fail to run and add option to change
the configuration used to build the benchmarks.

  • APIBench/api-bench:

Source/JavaScriptCore:

Remove the unnecessary locking from the JSValueIs* and JSValueMake* API functions
that only work on primitives. Also remove the unnecessary method dispatching and
call from the -[JSValue is*] methods.

This improves the APIBench score by another ~8% since these are such common operations.
Here are the results: (Baseline includes https://bugs.webkit.org/show_bug.cgi?id=219663)

CURRENT_API: Baseline Change
----------------------------------------
RichardsMostlyC: 74ms 60ms
RichardsMostlyObjC: 304ms 300ms
RichardsMostlySwift: 305ms 293ms
RichardsSomeC: 97ms 77ms
RichardsSomeObjC: 158ms 159ms
RichardsSomeSwift: 202ms 198ms

UPCOMING_API: Baseline Change
----------------------------------------
RichardsMostlyC: 23ms 19ms
RichardsMostlyObjC: 282ms 282ms
RichardsMostlySwift: 280ms 282ms
RichardsSomeC: 95ms 76ms
RichardsSomeObjC: 157ms 156ms
RichardsSomeSwift: 202ms 197ms
----------------------------------------
Score: 33.6404 36.4006

  • API/APICast.h: (toRef):
  • API/JSValue.mm: (-[JSValue isUndefined]): (-[JSValue isNull]): (-[JSValue isBoolean]): (-[JSValue isNumber]): (-[JSValue isString]): (-[JSValue isObject]): (-[JSValue isSymbol]):
  • API/JSValueRef.cpp: (JSValueGetType): (JSValueIsUndefined): (JSValueIsNull): (JSValueIsBoolean): (JSValueIsNumber): (JSValueIsString): (JSValueIsObject): (JSValueIsSymbol): (JSValueMakeUndefined): (JSValueMakeNull): (JSValueMakeBoolean): (JSValueMakeNumber):

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

1:04 PM Changeset in webkit [272537] by Alan Coon
  • 6 edits
    2 adds in branches/safari-611-branch

Cherry-pick r272422. rdar://problem/74033021

Make sure click attribution is processed in case of redirected kept alive loads
https://bugs.webkit.org/show_bug.cgi?id=221453
<rdar://problem/70896640>

Reviewed by John Wilander.

Source/WebCore:

Test: http/tests/privateClickMeasurement/attribution-conversion-through-fetch-keepalive.html

  • loader/DocumentLoader.cpp: (WebCore::DocumentLoader::addSubresourceLoader): Update assertion to cope with keep alive fetches which are similar to beacon/ping loads.

Source/WebKit:

  • NetworkProcess/NetworkResourceLoader.cpp: (WebKit::NetworkResourceLoader::continueWillSendRedirectedRequest): Move the click attribution processing before kept alive check.

LayoutTests:

  • http/tests/privateClickMeasurement/attribution-conversion-through-fetch-keepalive-expected.txt: Added.
  • http/tests/privateClickMeasurement/attribution-conversion-through-fetch-keepalive.html: Added.
  • http/tests/privateClickMeasurement/resources/redirectToConversion.php:

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

1:04 PM Changeset in webkit [272536] by Alan Coon
  • 9 edits in branches/safari-611-branch

Cherry-pick r272376. rdar://problem/74032694

REGRESSION(r267763) Network process launches earlier than before
https://bugs.webkit.org/show_bug.cgi?id=221384
<rdar://problem/73507706>

Patch by Alex Christensen <achristensen@apple.com> on 2021-02-04
Reviewed by Chris Dumez.

Source/WebKit:

Before r267763 we could have an app launch, allocate a WKWebView, and set _resourceLoadStatisticsEnabled
all without having a network process launch.

When setting _resourceLoadStatisticsEnabled, we don't need to launch a network process if we haven't already
because when we do, WebsiteDataStore::parameters will send the correct value. I added a test that verifies this doesn't
launch the network process if it hasn't already been launched.

We also don't need to update the process assertion or the process suspension state if there is no network process.

sendNetworkProcessXPCEndpointToWebProcess is also called when opening Safari on iOS and would be the next thing to
unnecessarily launch the network process during app initialization. I manually verified that if we add an early return
if there is no network process yet, we do send the XPC endpoint to the web process when the network process does launch
through the call site in sendNetworkProcessXPCEndpointToAllWebProcesses.

I verified on my phone that this is the minimal change needed for Safari on iOS to not launch the network process before
application:didFinishLaunchingWithOptions: is called as it did before r267763.

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm: (WebKit::WebProcessPool::updateProcessSuppressionState):
  • UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::updateProcessAssertions):
  • UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm: (WebKit::WebsiteDataStore::sendNetworkProcessXPCEndpointToWebProcess):
  • UIProcess/WebsiteData/WebsiteDataStore.cpp: (WebKit::WebsiteDataStore::setResourceLoadStatisticsEnabled):
  • UIProcess/WebsiteData/WebsiteDataStore.h: (WebKit::WebsiteDataStore::networkProcessIfExists):

Tools:

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

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

1:03 PM Changeset in webkit [272535] by Alan Coon
  • 15 edits
    2 adds in branches/safari-611-branch

Cherry-pick r272368. rdar://problem/74032667

[macOS] Selecting a date on datetime-local inputs unexpectedly adds second and millisecond fields
https://bugs.webkit.org/show_bug.cgi?id=221350
<rdar://problem/73943517>

Reviewed by Devin Rousso.

Source/WebCore:

Currently, when setting the value of a datetime-local input using the
picker, the length of the current value of the input is used to determine
whether or not to return a value with second/millisecond precision.

This is approach is incorrect, since the value could be empty, while the
step attribute can specify second/millisecond precision. To fix, ensure
the DateTimeChooserParameters knows whether the input has second and
millisecond fields. That information can then be used by the UIProcess
to return a correctly formatted value to the WebProcess.

Test: fast/forms/datetimelocal/datetimelocal-editable-components/datetimelocal-choose-value-from-picker.html

  • html/BaseDateAndTimeInputType.cpp: (WebCore::BaseDateAndTimeInputType::handleDOMActivateEvent): (WebCore::BaseDateAndTimeInputType::didChangeValueFromControl): (WebCore::BaseDateAndTimeInputType::setupDateTimeChooserParameters):

Moved this method from HTMLInputElement to the input type, since it is
specific to date/time input types, and to leverage the existing
shouldHaveSecondField and shouldHaveMillisecondField methods when
building the DateTimeChooserParameters.

  • html/BaseDateAndTimeInputType.h:
  • html/HTMLInputElement.cpp:
  • html/HTMLInputElement.h:
  • platform/DateTimeChooserParameters.h:

Added hasSecondField and hasMillisecondField members, so that the UIProcess
knows whether or not to return a string that contains seconds/milliseconds.

(WebCore::DateTimeChooserParameters::encode const):
(WebCore::DateTimeChooserParameters::decode):

Source/WebKit:

  • UIProcess/mac/WebDateTimePickerMac.mm: (-[WKDateTimePicker updatePicker:]): (-[WKDateTimePicker dateFormatStringForType:]):

Do not use the length of the value to determine whether or seconds and
milliseconds should be present, since the value can be empty.

Instead, use the new information in DateTimeChooserParameters, matching
the visual appearance of the input.

Tools:

Added a method to UIScriptController to simulate selecting a date using
the presented date picker.

  • TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl:
  • TestRunnerShared/UIScriptContext/UIScriptController.h: (WTR::UIScriptController::chooseDateTimePickerValue):
  • WebKitTestRunner/mac/UIScriptControllerMac.h:
  • WebKitTestRunner/mac/UIScriptControllerMac.mm: (WTR::UIScriptControllerMac::chooseDateTimePickerValue):

LayoutTests:

Added a test to to verify that the presence of seconds and milliseconds
in the value of a datetime-local input after selecting a date using the
picker matches the configuration.

  • fast/forms/datetimelocal/datetimelocal-editable-components/datetimelocal-choose-value-from-picker-expected.txt: Added.
  • fast/forms/datetimelocal/datetimelocal-editable-components/datetimelocal-choose-value-from-picker.html: Added.
  • resources/ui-helper.js: (window.UIHelper.chooseDateTimePickerValue):

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

1:03 PM Changeset in webkit [272534] by Alan Coon
  • 7 edits in branches/safari-611-branch/Source

Cherry-pick r272353. rdar://problem/74105476

[Cocoa] WebM audio goes out-of-sync or stops playing after a seek
https://bugs.webkit.org/show_bug.cgi?id=221354
<rdar://73471690>

Reviewed by Eric Carlson.

Source/WebCore:

Add a new flag to MediaSample indicating whether the sample has any information about whether
it is an sync-sample or not, and expose that through a new method hasSyncInfo().

Drive-by Fix: Force all video samples to contain a sample attachments dictionary, whether or
not the sample is sync.

Drive-by Fix #2: SampleMap does an equality comparison for flags() == MediaSample::IsSync.
This breaks as soon as any sample has both IsSync and any other flag. Replace with a specific
call to isSync() instead.

  • platform/MediaSample.h:
  • platform/graphics/avfoundation/objc/MediaSampleAVFObjC.mm: (WebCore::doesCMSampleBufferHaveSyncInfo): (WebCore::MediaSampleAVFObjC::flags const):
  • platform/graphics/cocoa/SourceBufferParserWebM.cpp: (WebCore::SourceBufferParserWebM::VideoTrackData::createSampleBuffer):

Source/WebKit:

The MTPluginFormatReader will attempt to determine whether an audio sample needs priming frames
by querying for, among other things, its "syncInfo". Previously, we had just presumed all samples
without a sample attachment dictionary were sync samples, and reported them as such from
MediaSampleCursor, but this causes the format reader plugin to walk backwards all the way to the
beginning of the audio track looking for priming samples. Instead, since the sample in question
has no sync info (it was synthesized by MediaSample), return kCMBaseObjectError_ValueNotAvailable
in this case, which causes the plugin format reader to assume all samples are both sync and do
not require explicit priming frames.

  • Shared/mac/MediaFormatReader/MediaSampleCursor.cpp: (WebKit::MediaSampleCursor::getSampleTiming const): (WebKit::MediaSampleCursor::getSyncInfo const):

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

1:03 PM Changeset in webkit [272533] by Alan Coon
  • 3 edits in branches/safari-611-branch/Source/JavaScriptCore

Cherry-pick r272349. rdar://problem/74104450

[JSC] Insert PhantomLocal just before SetLocal for |this| to ensure liveness
https://bugs.webkit.org/show_bug.cgi?id=221353
<rdar://problem/70373862>

Reviewed by Saam Barati.

Let's consider the following case before SSA conversion.

BB#0:

SetArgumentDefinitely(this)
...

@a: SomethingFun()

MoveHint(@a, this)
SetLocal(@a, this)
Jump #1

BB#1:

...
ExitOK (this point)
...

@b: SomethingFun()

MoveHint(@b, this)
SetLocal(@b, this)
...

BB#2: (Catch entry point)

...

@c: SetArgumentDefinitely(this)

...
Jump #1

We have two entry points. And BB#0 sets @a to |this| while BB#2 does not update |this|, so it is using @c.
We have several patterns we can store |this|: arrow functions' |this| loading, derived constructors' |this| update. So we can see
SetLocal(@x, this) at arbitrary code points in CodeBlocks having them.

The problem is that DFG strongly assumed that |this| is initialized in the root basic block only once. So usually, we do not insert Flush/PhantomLocal for |this|.
But this is problematic when we can store |this| at arbitrary basic blocks since we do not properly insert Flush/PhantomLocal(this) in BB#1's just before Store.

Not inserting that in the above case makes |this| dead in BB#1's head liveness. Then we do not properly insert Phi(BB#0, BB#2) for |this|.
This is OK for non |this| locals since literally that local is not used at all in BB#1. But |this| is special since it is always live in bytecode.
So, OSR availability will be broken in the above graph: at ExitOK place, |this| must be live in bytecode. But |this| is pointing ConflictingFlush since
BB#0 says @a and BB#2 says @c while we do not have Phi.

The problem is that we do not keep liveness of |this| properly in BB#1. When setting a new |this|, we insert PhantomLocal to keep liveness so that appropriate Phi
will be inserted when two predecessors have different DFG nodes for |this|, and this graph can appear in arrow functions, derived constructors, and code with catch.

  • dfg/DFGByteCodeParser.cpp: (JSC::DFG::ByteCodeParser::setArgument):
  • dfg/DFGVariableAccessDataDump.cpp: (JSC::DFG::VariableAccessDataDump::dump const):

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

1:03 PM Changeset in webkit [272532] by Alan Coon
  • 9 edits in branches/safari-611-branch/Source/WebKit

Cherry-pick r272346. rdar://problem/74105218

PCM: earliestTimeToSend should be treated as an independent time value, not relative to timeOfAdClick
https://bugs.webkit.org/show_bug.cgi?id=221303
<rdar://problem/73902668>

Reviewed by John Wilander.

r270136 assumed that PCM's earliestTimeToSend attribute was the
difference between timeOfAdClick and when the attribution should be
sent. As a result, it began each new browser session by adjusting
this value based on the amount of time the session was closed.
In reality, earliestTimeToSend is a raw secondsSinceEpoch() value, so we don't
need any adjustment after a new session.

No new tests, this is covered by
http/tests/privateClickMeasurement/expired-attribution-report-gets-sent-on-session-start.html
now that the corresponding test SPI has been updated.

  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: (WebKit::createTableQueries): (WebKit::ResourceLoadStatisticsDatabaseStore::ResourceLoadStatisticsDatabaseStore): (WebKit::ResourceLoadStatisticsDatabaseStore::createSchema): (WebKit::ResourceLoadStatisticsDatabaseStore::destroyStatements): (WebKit::ResourceLoadStatisticsDatabaseStore::markAttributedPrivateClickMeasurementsAsExpiredForTesting): Update the testing SPI to insert an expired time of now minus one hour as the earliestTimeToSend.

(WebKit::ResourceLoadStatisticsDatabaseStore::updateTimerLastFired): Deleted.
(WebKit::ResourceLoadStatisticsDatabaseStore::timerLastFired): Deleted.
(WebKit::ResourceLoadStatisticsDatabaseStore::updatePrivateClickMeasurementAttributionTimes): Deleted.

  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h:
  • NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h:
  • NetworkProcess/Classifier/ResourceLoadStatisticsStore.h:
  • NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::updateTimerLastFired): Deleted.
  • NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:
  • NetworkProcess/PrivateClickMeasurementManager.cpp: (WebKit::PrivateClickMeasurementManager::firePendingAttributionRequests): (WebKit::PrivateClickMeasurementManager::updateTimerLastFired): Deleted.
  • NetworkProcess/PrivateClickMeasurementManager.h:

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

1:03 PM Changeset in webkit [272531] by Alan Coon
  • 2 edits in branches/safari-611-branch/Source/WebKit

Cherry-pick r272335. rdar://problem/74032694

REGRESSION (r270392): Launch time regression under IOSurface::maximumSize()
https://bugs.webkit.org/show_bug.cgi?id=221346
<rdar://problem/73507706>

Reviewed by Sam Weinig.

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm: (WebKit::WebProcessPool::platformInitializeWebProcess): Scope r270392 to only the case where it is needed, when DOM rendering in the GPU process is enabled and the Web Content process does not have access to IOSurface, because it causes a small launch time regression.

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

1:03 PM Changeset in webkit [272530] by Alan Coon
  • 2 edits in branches/safari-611-branch/Source/JavaScriptCore

Cherry-pick r272330. rdar://problem/74032526

[AppleWin 32bit][LLInt] LLIntData.h(104) : warning C4172: returning address of local variable or temporary: id
https://bugs.webkit.org/show_bug.cgi?id=220714

Reviewed by Mark Lam.

This patch fixes LLInt build when ENABLE(COMPUTED_GOTO_OPCODES) is false.

  • llint/LLIntData.h: (JSC::LLInt::getOpcode): (JSC::LLInt::getOpcodeWide16): (JSC::LLInt::getOpcodeWide32): (JSC::LLInt::getOpcodeAddress): (JSC::LLInt::getOpcodeWide16Address): (JSC::LLInt::getOpcodeWide32Address): (JSC::LLInt::getCodePtr): (JSC::LLInt::getWide16CodePtr): (JSC::LLInt::getWide32CodePtr):

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

1:03 PM Changeset in webkit [272529] by Alan Coon
  • 5 edits in branches/safari-611-branch

Cherry-pick r272326. rdar://problem/74105521

[iOS] delay +[BKSMousePointerService sharedInstance] so that it doesn't impact launch perf
https://bugs.webkit.org/show_bug.cgi?id=221298

Reviewed by Geoffrey Garen.

Source/WebKit:

  • UIProcess/ios/WKMouseDeviceObserver.h:
  • UIProcess/ios/WKMouseDeviceObserver.mm: (-[WKMouseDeviceObserver init]): Added. (-[WKMouseDeviceObserver startWithCompletionHandler:]): Added. (-[WKMouseDeviceObserver start]): (-[WKMouseDeviceObserver stop]): (-[WKMouseDeviceObserver stopWithCompletionHandler:]): Added.

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/iOSMouseSupport.mm: (iOSMouseSupport.MouseInitiallyDisconnected): (iOSMouseSupport.MouseInitiallyConnected): (iOSMouseSupport.MouseLaterDisconnected): (iOSMouseSupport.MouseLaterConnected):

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

1:03 PM Changeset in webkit [272528] by Alan Coon
  • 2 edits in branches/safari-611-branch/Source/WebCore

Cherry-pick r272303. rdar://problem/74105623

Animation of "rotate" or "scale" property does not correctly account for static "translate" property
https://bugs.webkit.org/show_bug.cgi?id=219894
<rdar://problem/72342798>

Unreviewed build fix for Mojave.

  • platform/graphics/ca/GraphicsLayerCA.cpp: (WebCore::GraphicsLayerCA::updateAnimations):

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

1:03 PM Changeset in webkit [272527] by Alan Coon
  • 4 edits in branches/safari-611-branch/Source

Cherry-pick r272234. rdar://problem/74105068

[macOS] Force loading the HEIF reader symbols before transcoding any HEIF image
https://bugs.webkit.org/show_bug.cgi?id=221191
<rdar://problem/70942158>

Reviewed by Tim Horton.

Source/WebCore:

Transcoding the HEIF images requires loading the HEIF reader symbols which
is not happening in macOS Catalina. A workaround for this bug in WebKit is
to call CGImageSourceGetCount() for the CGImageSource of the HEIF image.

  • platform/graphics/cg/ImageUtilitiesCG.cpp: (WebCore::transcodeImage):

Source/WTF:

Add a HAVE macro for the fix of <rdar://problem/59589723>.

  • wtf/PlatformHave.h:

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

1:03 PM Changeset in webkit [272526] by Alan Coon
  • 1 edit
    3 adds in branches/safari-611-branch/Source/WebInspectorUI

Cherry-pick r272232. rdar://problem/74032620

Web Inspector: Add another Protocol Version (iOS 14.5)
https://bugs.webkit.org/show_bug.cgi?id=221288
<rdar://66351870>

Reviewed by Devin Rousso.

  • UserInterface/Protocol/Legacy/14.5/InspectorBackendCommands.js: Added.
  • Versions/Inspector-iOS-14.5.json: Added.

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

1:03 PM Changeset in webkit [272525] by Alan Coon
  • 2 edits in branches/safari-611-branch/Source/WebCore

Cherry-pick r272214. rdar://problem/74032646

Unreviewed, address post-landing review comment by Darin Adler for r272211.

  • platform/network/cocoa/NetworkStorageSessionCocoa.mm: (WebCore::cookiesForURL):

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

1:03 PM Changeset in webkit [272524] by Alan Coon
  • 2 edits in branches/safari-611-branch/Source/WebKit

Cherry-pick r272212. rdar://problem/74032657

Make sure NetworkRTCProvider stays valid for all NetworkRTCSocketCocoa callbacks
https://bugs.webkit.org/show_bug.cgi?id=221249
<rdar://problem/72671547>

Reviewed by Eric Carlson.

Make the connection callback take a ref of the NetworkRTCProvider.
The ref cycle will break at NetworkConnectionToWebProcess destruction since it will call NetworkRTCProvider::close
which deletes all sockets owning the connection.

  • NetworkProcess/webrtc/NetworkRTCSocketCocoa.mm: (WebKit::NetworkRTCSocketCocoa::NetworkRTCSocketCocoa):

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

1:03 PM Changeset in webkit [272523] by Alan Coon
  • 3 edits in branches/safari-611-branch/Source/WebCore

Cherry-pick r272211. rdar://problem/74032646

Crash under NetworkStorageSession::cookiesForSession()
https://bugs.webkit.org/show_bug.cgi?id=221227
<rdar://71975008>

Reviewed by Geoffrey Garen.

Retain NSArray of cookies in NetworkStorageSession::cookiesForSession() for clearer lifetime
management. This is a speculative fix for <rdar://71975008>.

  • platform/network/NetworkStorageSession.h:
  • platform/network/cocoa/NetworkStorageSessionCocoa.mm: (WebCore::NetworkStorageSession::httpCookies const): (WebCore::cookiesForURL): (WebCore::NetworkStorageSession::httpCookiesForURL const): (WebCore::NetworkStorageSession::cookiesForURL const): (WebCore::NetworkStorageSession::cookiesForSession const): (WebCore::NetworkStorageSession::getRawCookies const): (WebCore::NetworkStorageSession::deleteCookie const): (WebCore::NetworkStorageSession::getHostnamesWithCookies): (WebCore::NetworkStorageSession::deleteCookiesForHostnames):

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

1:03 PM Changeset in webkit [272522] by Alan Coon
  • 4 edits
    4 adds in branches/safari-611-branch

Cherry-pick r272201. rdar://problem/74105623

Animation of "rotate" or "scale" property does not correctly account for static "translate" property
https://bugs.webkit.org/show_bug.cgi?id=219894
<rdar://problem/72342798>

Reviewed by Dean Jackson.

Source/WebCore:

The CSS transform-related properties are designed to be applied in a specific order, guaranteeing that
"translate" is applied prior to both "scale" and "rotate". Since Core Animation has no concept of these
individual transform-related CSS properties, we use additive Core Animation animations to apply the value
of each CSS property, using non-interpolating animations set to start at the earliest time in the Core
Animation timeline and lasting forever to set the value of any underlying, non-animated value.

As such, in an example where an element would have a static "translate" property set as well as a "rotate"
or "scale" animation, we would yield the following animations, added in this order:

  1. non-interpolating animation beginning at 1s setting the identity transform (the "clean slate" animation)
  2. interpolating animation beginning at a time > 1s for the "scale" or "rotate" animation
  3. non-interpolating animation beginning at 1s setting the "translate" value

Note that animations 2 and 3 are additive and thus added in the inverse order that we expect animations to be
applied. Due to a peculiarity of Core Animation (introduced in macOS 10.15), additive animations are applied
in an inverse order, hence the build-time flag CA_WHERE_ADDITIVE_TRANSFORMS_ARE_REVERSED.

However, Core Animation will first sort all animations based on their begin time, only respecting the order
in which animations are added when their begin time is equal. This means that in practice, our animations were
applied in the order 1, 3, 2, and thus the "translate" property was applied after the "rotate" or "scale" animation.

In order to address this, we now create a CAAnimationGroup for each set of animations created for a given CSS
property. Each of these groups shares the same begin time, 1s, to allow for "forever" non-interpolating animations
to be applied, but also to set a common base time for animations to be applied in the expected order.

Tests: webanimations/relative-ordering-of-translate-and-rotate-properties-accelerated.html

webanimations/relative-ordering-of-translate-and-scale-properties-accelerated.html

  • platform/graphics/ca/GraphicsLayerCA.cpp: (WebCore::GraphicsLayerCA::updateAnimations):
  • platform/graphics/ca/GraphicsLayerCA.h: (WebCore::GraphicsLayerCA::LayerPropertyAnimation::computedBeginTime const):

LayoutTests:

Add two new tests that ensure that translate is indeed applied before rotate and scale.

  • webanimations/relative-ordering-of-translate-and-rotate-properties-accelerated-expected.html: Added.
  • webanimations/relative-ordering-of-translate-and-rotate-properties-accelerated.html: Added.
  • webanimations/relative-ordering-of-translate-and-scale-properties-accelerated-expected.html: Added.
  • webanimations/relative-ordering-of-translate-and-scale-properties-accelerated.html: Added.

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

1:03 PM Changeset in webkit [272521] by Alan Coon
  • 8 edits in branches/safari-611-branch/Source/JavaScriptCore

Cherry-pick r272191. rdar://problem/74032517

Sign m_offset in AssemblerLabel
https://bugs.webkit.org/show_bug.cgi?id=221237

Reviewed by Mark Lam.

  • assembler/ARM64Assembler.h: (JSC::ARM64Assembler::labelForWatchpoint): (JSC::ARM64Assembler::label): (JSC::ARM64Assembler::getRelocatedAddress): (JSC::ARM64Assembler::getDifferenceBetweenLabels): (JSC::ARM64Assembler::getCallReturnOffset): (JSC::ARM64Assembler::linkJump): (JSC::ARM64Assembler::addressOf):
  • assembler/ARMv7Assembler.h: (JSC::ARMv7Assembler::labelForWatchpoint): (JSC::ARMv7Assembler::label): (JSC::ARMv7Assembler::getRelocatedAddress): (JSC::ARMv7Assembler::getDifferenceBetweenLabels): (JSC::ARMv7Assembler::getCallReturnOffset): (JSC::ARMv7Assembler::linkJump): (JSC::ARMv7Assembler::linkCall): (JSC::ARMv7Assembler::linkPointer):
  • assembler/AbstractMacroAssembler.h: (JSC::AbstractMacroAssembler::Jump::link const): (JSC::AbstractMacroAssembler::Jump::linkTo const):
  • assembler/AssemblerBuffer.h: (JSC::AssemblerLabel::AssemblerLabel): (JSC::AssemblerLabel::operator=): (JSC::AssemblerLabel::isSet const): (JSC::AssemblerLabel::labelAtOffset const): (JSC::AssemblerLabel::operator== const): (JSC::AssemblerLabel::offset const): (JSC::AssemblerLabel::setOffset):
  • assembler/LinkBuffer.h: (JSC::LinkBuffer::offsetOf): (JSC::LinkBuffer::applyOffset):
  • assembler/MIPSAssembler.h: (JSC::MIPSAssembler::labelForWatchpoint): (JSC::MIPSAssembler::label): (JSC::MIPSAssembler::getRelocatedAddress): (JSC::MIPSAssembler::getDifferenceBetweenLabels): (JSC::MIPSAssembler::getCallReturnOffset): (JSC::MIPSAssembler::linkJump): (JSC::MIPSAssembler::linkCall): (JSC::MIPSAssembler::linkPointer):
  • assembler/X86Assembler.h: (JSC::X86Assembler::labelForWatchpoint): (JSC::X86Assembler::label): (JSC::X86Assembler::linkJump): (JSC::X86Assembler::linkCall): (JSC::X86Assembler::linkPointer): (JSC::X86Assembler::getCallReturnOffset): (JSC::X86Assembler::getRelocatedAddress): (JSC::X86Assembler::getDifferenceBetweenLabels):

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

1:03 PM Changeset in webkit [272520] by Alan Coon
  • 6 edits in branches/safari-611-branch/Source

Cherry-pick r272188. rdar://problem/74032553

[Cocoa] Disable interstitial events on AVPlayerItem.
https://bugs.webkit.org/show_bug.cgi?id=221215

Reviewed by Eric Carlson.

Source/WebCore:

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: (WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayerItem):

Source/WebCore/PAL:

  • pal/spi/cocoa/AVFoundationSPI.h:

Source/WTF:

  • wtf/PlatformHave.h:

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

1:02 PM Changeset in webkit [272519] by Alan Coon
  • 2 edits in branches/safari-611-branch/Source/WebCore

Cherry-pick r272185. rdar://problem/74032429

REGRESSION (iOS 14.2): Can't play html audio with muted attribute
https://bugs.webkit.org/show_bug.cgi?id=219295
<rdar://problem/71863148>

Reviewed by Eric Carlson.

In r266844, we added a power-saving feature that would disable the audio decoder for initially
muted media elements. However, this caused an issue for .mp3 files, where the duration of the
track is computed by the decoder, and not the parser. Since the goal of the power-saving feature
was to reduce the CPU cost for decoding a muted audio track on a <video> element, partially
revert this change by making it apply only to <video> elements and not <audio> ones.

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: (WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayer):

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

1:02 PM Changeset in webkit [272518] by Alan Coon
  • 2 edits in branches/safari-611-branch/Source/WebInspectorUI

Cherry-pick r272183. rdar://problem/74105888

REGRESSION(r270637): Web Inspector: Filtering field no longer shows in Computed panel
https://bugs.webkit.org/show_bug.cgi?id=221001

Reviewed by Devin Rousso.

The filter bar keeps separate filters for the Rules and Computed panes. It is therefor incorrect to hide the
entire filter bar when showing multiple sidebars, instead hide the controls that have a common state between the
two panels (the Classes list).

  • UserInterface/Views/GeneralStyleDetailsSidebarPanel.css: (.multi-sidebar.showing-multiple > .sidebar > .panel.details:not(.style-rules) > .content > .pseudo-classes,):

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

1:02 PM Changeset in webkit [272517] by Alan Coon
  • 11 edits in branches/safari-611-branch/Source

Cherry-pick r272178. rdar://problem/74105398

Allow support for CAAnimationGroup
https://bugs.webkit.org/show_bug.cgi?id=221209

Reviewed by Dean Jackson, Sam Weinig and Simon Fraser.

In order to fix bug 219894, we need to use Core Animation's CAAnimationGroup and its
Source/WebCore:

setAnimations() method. This patch adds a new "Group" type to PlatformCAAnimation and
platform-specific integration for Windows and Cocoa ports.

  • platform/graphics/ca/PlatformCAAnimation.cpp: (WebCore::operator<<):
  • platform/graphics/ca/PlatformCAAnimation.h:
  • platform/graphics/ca/cocoa/PlatformCAAnimationCocoa.h:
  • platform/graphics/ca/cocoa/PlatformCAAnimationCocoa.mm: (WebCore::PlatformCAAnimationCocoa::PlatformCAAnimationCocoa): (WebCore::PlatformCAAnimationCocoa::keyPath const): (WebCore::PlatformCAAnimationCocoa::setTimingFunction): (WebCore::PlatformCAAnimationCocoa::isAdditive const): (WebCore::PlatformCAAnimationCocoa::setAdditive): (WebCore::PlatformCAAnimationCocoa::valueFunction const): (WebCore::PlatformCAAnimationCocoa::setValueFunction): (WebCore::PlatformCAAnimationCocoa::setFromValue): (WebCore::PlatformCAAnimationCocoa::copyFromValueFrom): (WebCore::PlatformCAAnimationCocoa::setToValue): (WebCore::PlatformCAAnimationCocoa::copyToValueFrom): (WebCore::PlatformCAAnimationCocoa::setValues): (WebCore::PlatformCAAnimationCocoa::copyValuesFrom): (WebCore::PlatformCAAnimationCocoa::setKeyTimes): (WebCore::PlatformCAAnimationCocoa::copyKeyTimesFrom): (WebCore::PlatformCAAnimationCocoa::setTimingFunctions): (WebCore::PlatformCAAnimationCocoa::copyTimingFunctionsFrom): (WebCore::PlatformCAAnimationCocoa::setAnimations): (WebCore::PlatformCAAnimationCocoa::copyAnimationsFrom):
  • platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm: (WebCore::PlatformCALayerCocoa::addAnimationForKey): (WebCore::PlatformCALayerCocoa::animationForKey):
  • platform/graphics/ca/win/PlatformCAAnimationWin.cpp: (PlatformCAAnimationWin::PlatformCAAnimationWin): (PlatformCAAnimationWin::setAnimations): (PlatformCAAnimationWin::copyAnimationsFrom):
  • platform/graphics/ca/win/PlatformCAAnimationWin.h:

Source/WebKit:

setAnimations() method. Add support for the new "Group" PlatformCAAnimation type for
the remote animations.

  • WebProcess/WebPage/RemoteLayerTree/PlatformCAAnimationRemote.h:
  • WebProcess/WebPage/RemoteLayerTree/PlatformCAAnimationRemote.mm: (WebKit::PlatformCAAnimationRemote::Properties::encode const): (WebKit::PlatformCAAnimationRemote::Properties::decode): (WebKit::PlatformCAAnimationRemote::copy const): (WebKit::PlatformCAAnimationRemote::setAnimations): (WebKit::PlatformCAAnimationRemote::copyAnimationsFrom): (WebKit::createAnimation): (WebKit::addAnimationToLayer): (WebKit::operator<<):

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

1:02 PM Changeset in webkit [272516] by Alan Coon
  • 5 edits
    3 adds in branches/safari-611-branch

Cherry-pick r272166. rdar://problem/74032437

ReadableStream C++ methods should check for exception
https://bugs.webkit.org/show_bug.cgi?id=215376
<rdar://problem/66816192>

Reviewed by Alex Christensen.

Source/WebCore:

Refactor code to catch and handle exceptions in case of ReadableStream methods.
Exceptions can happen in case of worker being abruptly terminated, which can only be tested flakily.

In case of tee, if an exception happens, we return a WTF::nullopt.

Test: streams/readable-stream-tee-worker.html

  • Modules/fetch/FetchBody.cpp: (WebCore::FetchBody::clone):
  • bindings/js/ReadableStream.cpp: (WebCore::invokeReadableStreamFunction): (WebCore::ReadableStream::pipeTo): (WebCore::ReadableStream::tee): (WebCore::ReadableStream::lock): (WebCore::checkReadableStream):
  • bindings/js/ReadableStream.h:

LayoutTests:

  • streams/readable-stream-tee-worker-expected.txt: Added.
  • streams/readable-stream-tee-worker.html: Added.
  • streams/readable-stream-tee.js: Added. (teeRepetitively): (test):

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

1:02 PM Changeset in webkit [272515] by Alan Coon
  • 2 edits in branches/safari-611-branch/Source/WebKit

Cherry-pick r271908. rdar://problem/74032594

Harden NetworkProcess against integer overflow in CacheStorageEngine size calculation
https://bugs.webkit.org/show_bug.cgi?id=220997
<rdar://problem/66116827>

Reviewed by Youenn Fablet.

Since the CacheStorage allocation is based on data provided by the WebContent process, we should
check for integer overflow before making an allocation.

  • NetworkProcess/cache/CacheStorageEngineCache.cpp: (WebKit::CacheStorage::Cache::put): Use checked arithmetic and return a failure if we overflow.

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

1:02 PM Changeset in webkit [272514] by Alan Coon
  • 9 edits
    1 add in branches/safari-611-branch

Cherry-pick r271731. rdar://problem/74105559

[JSC] JSPromise should not propagate TerminatedExecutionError
https://bugs.webkit.org/show_bug.cgi?id=220820
<rdar://problem/72929399>

Reviewed by Mark Lam.

JSTests:

  • stress/terminated-execution-error-in-promise.js: Added. (let.x.get toString): (import.x.then):

Source/JavaScriptCore:

TerminatedExecutionError is uncatcheable exception to finish JS execution as soon as possible.
We should not propagate TerminatedExecutionError in JSPromise's rejection.
In this patch, we do not reject promise if exception is TerminatedExecutionError.

  • API/JSAPIGlobalObject.mm: (JSC::JSAPIGlobalObject::moduleLoaderImportModule): (JSC::JSAPIGlobalObject::moduleLoaderFetch):
  • API/JSContext.mm: (-[JSContext evaluateJSScript:]):
  • jsc.cpp: (GlobalObject::moduleLoaderImportModule): (GlobalObject::moduleLoaderFetch): (runWithOptions):
  • runtime/Completion.cpp: (JSC::rejectPromise): (JSC::loadAndEvaluateModule): (JSC::loadModule):
  • runtime/JSGlobalObjectFunctions.cpp: (JSC::JSC_DEFINE_HOST_FUNCTION):
  • runtime/JSModuleLoader.cpp: (JSC::reject): (JSC::JSModuleLoader::importModule): (JSC::JSModuleLoader::resolve): (JSC::JSModuleLoader::fetch): (JSC::JSC_DEFINE_HOST_FUNCTION):
  • wasm/js/JSWebAssembly.cpp: (JSC::reject):

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

1:02 PM Changeset in webkit [272513] by Alan Coon
  • 8 edits in branches/safari-611-branch/Source/WebCore

Cherry-pick r271686. rdar://problem/74032451

Further propagate ChildChange::Source to optimize HTMLInputElement creation
https://bugs.webkit.org/show_bug.cgi?id=220785

Reviewed by Ryosuke Niwa.

This patch further propagates ChildChange::Source to optimize HTMLInputElement creation.
We add appendChild method taking ChildChange::Source to transparently pick the efficient
one based on the parameter.

  • dom/ContainerNode.cpp: (WebCore::ContainerNode::appendChild):
  • dom/ContainerNode.h:
  • html/BaseDateAndTimeInputType.cpp: (WebCore::BaseDateAndTimeInputType::createShadowSubtreeAndUpdateInnerTextElementEditability):
  • html/ColorInputType.cpp: (WebCore::ColorInputType::createShadowSubtreeAndUpdateInnerTextElementEditability):
  • html/FileInputType.cpp: (WebCore::FileInputType::createShadowSubtreeAndUpdateInnerTextElementEditability):
  • html/RangeInputType.cpp: (WebCore::RangeInputType::createShadowSubtreeAndUpdateInnerTextElementEditability):
  • html/TextFieldInputType.cpp: (WebCore::TextFieldInputType::createShadowSubtreeAndUpdateInnerTextElementEditability):

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

1:02 PM Changeset in webkit [272512] by Alan Coon
  • 47 edits in branches/safari-611-branch/Source/WebCore

Cherry-pick r271672. rdar://problem/74105677

Accelerate HTMLInputElement creation
https://bugs.webkit.org/show_bug.cgi?id=220758

Reviewed by Simon Fraser.

HTMLInputElement creation is too slow.

  1. InputType is excessively using virtual dispatching, which is too slow for hot path.
  2. HTMLInputElement creates internal elements as a shadow DOM and its creation is too generic.
  3. We are setting inner text element's editability in a very generic way. This allocates ElementData for each elements while attributes are almost the same.

In this patch,

  1. We add m_type field in InputType, and for the hot path, we attempt to devirtualize things due to performance problem.
  2. We pass "parsing phase" information to shadow DOM creation to make them fast.
  3. We initialize editibility when creating TextControlInnerTextElement. And we use parserSetAttributes to set shared ElementData. This is faster and less memory.
  4. We also shrink sizeof(Style::Scope) to reduce size of allocation when using shadow DOM.

This change offers 1% progression in Speedometer2/jQuery.

  • html/BaseButtonInputType.h: (WebCore::BaseButtonInputType::BaseButtonInputType):
  • html/BaseCheckableInputType.h: (WebCore::BaseCheckableInputType::BaseCheckableInputType):
  • html/BaseClickableWithKeyInputType.h: (WebCore::BaseClickableWithKeyInputType::BaseClickableWithKeyInputType):
  • html/BaseDateAndTimeInputType.cpp: (WebCore::BaseDateAndTimeInputType::isSteppableSlow const): (WebCore::BaseDateAndTimeInputType::createShadowSubtreeAndUpdateInnerTextElementEditability): (WebCore::BaseDateAndTimeInputType::isSteppable const): Deleted. (WebCore::BaseDateAndTimeInputType::createShadowSubtree): Deleted.
  • html/BaseDateAndTimeInputType.h: (WebCore::BaseDateAndTimeInputType::BaseDateAndTimeInputType):
  • html/BaseTextInputType.h: (WebCore::BaseTextInputType::BaseTextInputType):
  • html/ButtonInputType.h:
  • html/CheckboxInputType.h:
  • html/ColorInputType.cpp: (WebCore::ColorInputType::createShadowSubtreeAndUpdateInnerTextElementEditability): (WebCore::ColorInputType::createShadowSubtree): Deleted.
  • html/ColorInputType.h:
  • html/DateInputType.cpp: (WebCore::DateInputType::DateInputType):
  • html/DateInputType.h:
  • html/DateTimeLocalInputType.h:
  • html/EmailInputType.h:
  • html/FileInputType.cpp: (WebCore::FileInputType::FileInputType): (WebCore::FileInputType::createShadowSubtreeAndUpdateInnerTextElementEditability): (WebCore::FileInputType::createShadowSubtree): Deleted.
  • html/FileInputType.h:
  • html/HTMLInputElement.cpp: (WebCore::HTMLInputElement::didAddUserAgentShadowRoot): (WebCore::HTMLInputElement::isValid const): (WebCore::HTMLInputElement::updateType):
  • html/HTMLTextAreaElement.cpp: (WebCore::HTMLTextAreaElement::didAddUserAgentShadowRoot):
  • html/HTMLTextFormControlElement.cpp: (WebCore::HTMLTextFormControlElement::updateInnerTextElementEditability):
  • html/HiddenInputType.h:
  • html/ImageInputType.cpp: (WebCore::ImageInputType::ImageInputType):
  • html/ImageInputType.h:
  • html/InputType.cpp: (WebCore::InputType::isInvalid const): (WebCore::InputType::createShadowSubtreeAndUpdateInnerTextElementEditability): (WebCore::InputType::isSteppable const): (WebCore::InputType::createShadowSubtree): Deleted.
  • html/InputType.h: (WebCore::InputType::InputType): (WebCore::InputType::isSteppableSlow const): (WebCore::isInvalidInputType):
  • html/MonthInputType.h:
  • html/NumberInputType.cpp: (WebCore::NumberInputType::isSteppableSlow const): (WebCore::NumberInputType::isSteppable const): Deleted.
  • html/NumberInputType.h:
  • html/PasswordInputType.h:
  • html/RadioInputType.h:
  • html/RangeInputType.cpp: (WebCore::RangeInputType::RangeInputType): (WebCore::RangeInputType::isSteppableSlow const): (WebCore::RangeInputType::createShadowSubtreeAndUpdateInnerTextElementEditability): (WebCore::RangeInputType::isSteppable const): Deleted. (WebCore::RangeInputType::createShadowSubtree): Deleted.
  • html/RangeInputType.h:
  • html/ResetInputType.h:
  • html/SearchInputType.cpp: (WebCore::SearchInputType::SearchInputType): (WebCore::SearchInputType::createShadowSubtreeAndUpdateInnerTextElementEditability): (WebCore::SearchInputType::createShadowSubtree): Deleted.
  • html/SearchInputType.h:
  • html/SubmitInputType.h:
  • html/TelephoneInputType.h:
  • html/TextFieldInputType.cpp: (WebCore::TextFieldInputType::TextFieldInputType): (WebCore::TextFieldInputType::createShadowSubtreeAndUpdateInnerTextElementEditability): (WebCore::TextFieldInputType::createShadowSubtree): Deleted.
  • html/TextFieldInputType.h:
  • html/TextInputType.h:
  • html/TimeInputType.cpp: (WebCore::TimeInputType::TimeInputType):
  • html/TimeInputType.h:
  • html/URLInputType.h:
  • html/WeekInputType.h:
  • html/shadow/TextControlInnerElements.cpp: (WebCore::TextControlInnerTextElement::create): (WebCore::TextControlInnerTextElement::updateInnerTextElementEditabilityImpl):
  • html/shadow/TextControlInnerElements.h:
  • style/StyleScope.h:

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

1:02 PM Changeset in webkit [272511] by Alan Coon
  • 5 edits in branches/safari-611-branch/Source/WTF

Cherry-pick r271633. rdar://problem/74105761

[WTF] StringImpl::removeCharacters should be inlined
https://bugs.webkit.org/show_bug.cgi?id=220742

Reviewed by Saam Barati.

removeCharacters is used in WebCore's HTMLInputElement's critical path. And since String relatively has many elements (characters),
non-inlined StringImpl::removeCharacters causes significant number of indirect function calls of findMatch argument since it is
passed function pointer. We should make them templatized function to allow inlining of findMatch function to avoid repeated indirect calls.

  • wtf/text/StringImpl.cpp: (WTF::StringImpl::removeCharacters): Deleted.
  • wtf/text/StringImpl.h: (WTF::StringImpl::removeCharactersImpl): (WTF::StringImpl::removeCharacters):
  • wtf/text/WTFString.cpp: (WTF::String::removeCharacters const): Deleted.
  • wtf/text/WTFString.h: (WTF::String::removeCharacters const):

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

1:02 PM Changeset in webkit [272510] by Alan Coon
  • 2 edits in branches/safari-611-branch/Source/JavaScriptCore

Cherry-pick r271624. rdar://problem/74105183

Unreviewed, fix GCC warnings
https://bugs.webkit.org/show_bug.cgi?id=220718

  • dfg/DFGOperations.cpp: (JSC::DFG::tierUpCommon):

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

1:02 PM Changeset in webkit [272509] by Alan Coon
  • 3 edits
    1 add in branches/safari-611-branch

Cherry-pick r271596. rdar://problem/74105183

[JSC] FTL::prepareOSREntry can clear OSR entry CodeBlock if it is already invalidated
https://bugs.webkit.org/show_bug.cgi?id=220718
<rdar://problem/70527068>

Reviewed by Mark Lam.

JSTests:

  • stress/ftl-osr-failure-clear-twice.js: Added. (foo):

Source/JavaScriptCore:

FTL::prepareOSREntry can clear OSR entry CodeBlock if it is already invalidated. However, the caller is not assuming that,
and it calls clearOSREntryBlockAndResetThresholds again. And clearOSREntryBlockAndResetThresholds's assertion hit.
This patch correctly handles the invalidated case.

  • dfg/DFGOperations.cpp: (JSC::DFG::tierUpCommon):

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

1:02 PM Changeset in webkit [272508] by Alan Coon
  • 3 edits
    1 add in branches/safari-611-branch

Cherry-pick r271571. rdar://problem/74105245

[JSC] FTL OSR entry FlushFormat array is reversed
https://bugs.webkit.org/show_bug.cgi?id=220695
<rdar://problem/72930932>

Reviewed by Mark Lam.

JSTests:

  • stress/ftl-osr-entry-order-reverse.js: Added. (shouldThrow): (foo):

Source/JavaScriptCore:

After r268783, FlushFormat array is erroneously sorted in reversed order.
This patch fixes that.

  • ftl/FTLLowerDFGToB3.cpp: (JSC::FTL::DFG::LowerDFGToB3::lower):

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

12:22 PM Changeset in webkit [272507] by youenn@apple.com
  • 4 edits in trunk

[MacOS] Enable Audio Capture in GPUProcess by default
https://bugs.webkit.org/show_bug.cgi?id=221400

Reviewed by Eric Carlson.

Source/WebKit:

Manually tested.

  • Shared/WebPreferencesDefaultValues.cpp:

(WebKit::defaultCaptureAudioInGPUProcessEnabled):

Tools:

  • TestWebKitAPI/Tests/WebKit/GetUserMediaReprompt.mm:

(-[GetUserMediaRepromptTestView haveStream:]):
Increase timeout since capture might require spinning GPUProcess.

12:07 PM Changeset in webkit [272506] by ddkilzer@apple.com
  • 3 edits in trunk/Source/WebKit

Check that CGPDFDocumentRef is consistently unlocked and printable
<https://webkit.org/b/221512>
<rdar://problem/65277765>

Reviewed by Daniel Bates.

This patch does the following when printing PDFs:

  • Checks return value of CGPDFDocumentUnlockWithPassword().
  • Calls CGPDFDocumentAllowsPrinting() consistently.
  • Handles -_ensureDocumentForPrinting and -_wk_printedDocument returning nullptr.
  • UIProcess/_WKWebViewPrintFormatter.mm:

(-[_WKWebViewPrintFormatter drawInRect:forPageAtIndex:]):

  • Check return value of -_wk_printedDocument since it may return nullptr now.
  • UIProcess/ios/WKPDFView.mm:

(-[WKPDFView _ensureDocumentForPrinting]):

  • Check return value of CGPDFDocumentUnlockWithPassword(), and return nullptr if unsuccessful.
  • Add CGPDFDocumentAllowsPrinting() check and return nullptr if it fails.

(-[WKPDFView _wk_pageCountForPrintFormatter:]):

  • Move the CGPDFDocumentAllowsPrinting() check into -[WKPDFView _ensureDocumentForPrinting].
  • Check return value of -_ensureDocumentForPrinting since it may return nullptr now.
12:04 PM Changeset in webkit [272505] by Russell Epstein
  • 1 copy in tags/Safari-612.1.2.5

Tag Safari-612.1.2.5.

11:47 AM Changeset in webkit [272504] by youenn@apple.com
  • 8 edits
    3 adds in trunk

NetworkRTCSocketCocoa extractDataMessages should not read too much data
https://bugs.webkit.org/show_bug.cgi?id=221544

Reviewed by Eric Carlson.

Source/WebCore:

Move STUN/TURN message parsing to its own file routine so that we can add API test.
Code is taken from Source/WebKit/NetworkProcess/webrtc/NetworkRTCSocketCocoa.mm.
Fix the test verifying we can actually read a message given its expected length.

Covered by API test.

  • Headers.cmake:
  • Modules/mediastream/STUNMessageParsing.cpp: Added.

(WebCore::isStunMessage):
(WebCore::getSTUNOrTURNMessageLengths):
(WebCore::extractSTUNOrTURNMessages):
(WebCore::extractDataMessages):
(WebCore::extractMessages):

  • Modules/mediastream/STUNMessageParsing.h: Added.
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:

Source/WebKit:

  • NetworkProcess/webrtc/NetworkRTCSocketCocoa.mm:

Make use of WebCore method.

Tools:

  • TestWebKitAPI/Tests/WebCore/STUNMessageParsingTest.cpp: Added.

(TestWebKitAPI::TEST):

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
11:43 AM Changeset in webkit [272503] by Wenson Hsieh
  • 4 edits in trunk/Source/WebCore

Adjust EventHandler to account for image extraction content
https://bugs.webkit.org/show_bug.cgi?id=221274

Reviewed by Tim Horton.

Avoid extending the selection to the hit-tested position when dragging over an image overlay container (as
opposed to one of the children with text inside the image overlay container).

  • html/HTMLElement.cpp:

(WebCore::HTMLElement::shouldUpdateSelectionForMouseDrag):

  • html/HTMLElement.h:
  • page/EventHandler.cpp:

(WebCore::EventHandler::updateSelectionForMouseDrag):

11:28 AM Changeset in webkit [272502] by Ryan Haddad
  • 3 edits in trunk/LayoutTests

[iOS macOS] imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-perfect-negotiation.https.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=219460

Unreviwed test gardening.

Skip the test since it is a flaky failure on release, and a flaky assertion failure on debug.

  • platform/ios/TestExpectations:
  • platform/mac/TestExpectations:
11:14 AM Changeset in webkit [272501] by Russell Epstein
  • 8 edits in branches/safari-612.1.2-branch/Source

Versioning.

WebKit-7612.1.2.5

10:58 AM Changeset in webkit [272500] by Ryan Haddad
  • 2 edits in trunk/Source/WebKitLegacy/mac

Permission request API for MediaKeySystem access support
https://bugs.webkit.org/show_bug.cgi?id=221187

Unreviewed build fix for macCatalyst.

  • WebCoreSupport/WebMediaKeySystemClient.h: Add a check for ENABLE(ENCRYPTED_MEDIA).
10:11 AM Changeset in webkit [272499] by aboya@igalia.com
  • 7 edits in trunk

Add ConsoleMessage::toString()
https://bugs.webkit.org/show_bug.cgi?id=221539

Reviewed by Eric Carlson.

Source/JavaScriptCore:

Currently ConsoleMessage doesn't have a publicly API to retrieve the
stored JSON values into a string for printing.

The closest equivalent is message(), but it doesn't return any JSON
objects attached. This makes it an ill fit when printing
ConsoleMessage's to the system terminal, since these JSON values often
contain information that is important for debugging, e.g.:

SourceBufferPrivateGStreamer::removeCodedFrames(126493C320000001) removing sample (notice: no sample)
SourceBufferPrivateGStreamer::removeCodedFrames(126493C320000001) the range in removeCodedFrames() includes already enqueued samples, reenqueueing from (notice: no time)

This patch adds a new ConsoleMessage::toString() method that
constructs a String containing these JSON values, and makes use of it
when printing messages to the system terminal, giving more useful
output, e.g:

CONSOLE MEDIASOURCE DEBUG MediaSourcePrivateGStreamer::addSourceBuffer(D4447A9F1F483EEF) {"containerType":"video/webm","codecs":"codecs","profiles":"profiles"}
CONSOLE MEDIA LOG HTMLMediaElement::mediaPlayerDurationChanged(D4447A9F1F483EEF) duration = {"invalid":true,"numerator":-1,"denominator":1,"flags":0}, current time = {"value":0,"numerator":0,"denominator":10000000,"flags":1}

  • inspector/ConsoleMessage.cpp:

(Inspector::ConsoleMessage::toString const):

  • inspector/ConsoleMessage.h:

Source/WebCore:

Use ConsoleMessage::toString() instead of ConsoleMessage::message().

  • page/PageConsoleClient.cpp:

(WebCore::PageConsoleClient::addMessage):

Tools:

Added unit tests.

  • TestWebKitAPI/Tests/JavaScriptCore/InspectorConsoleMessage.cpp:

(TestWebKitAPI::TEST):

9:37 AM Changeset in webkit [272498] by weinig@apple.com
  • 4 edits in trunk

Update sRGB <-> XYZ conversion matrix values to match values in latest spec
https://bugs.webkit.org/show_bug.cgi?id=221533

Reviewed by Alex Christensen.

Source/WebCore:

Update values to keep in sync with https://github.com/w3c/csswg-drafts/issues/5922.

Updates ExtendedColor API test.

  • platform/graphics/ColorConversion.cpp:

Update values to keep in sync with the values used in the CSS Color 4 spec. This
doesn't have any user visible effect, but would reduce errors if round tripping
through this ever became necessary.

Tools:

  • TestWebKitAPI/Tests/WebCore/ExtendedColorTests.cpp:

(TestWebKitAPI::TEST):
Update values to values in P3 <-> sRGB conversion test and update to
use EXPECT_FLOAT_EQ so the values can be seen in the output when thigs
fail.

9:36 AM Changeset in webkit [272497] by commit-queue@webkit.org
  • 3 edits
    6 adds in trunk

Null check document element in createGradient
https://bugs.webkit.org/show_bug.cgi?id=221378

Patch by Rob Buis <rbuis@igalia.com> on 2021-02-08
Reviewed by Alex Christensen.

Source/WebCore:

The document element is not guaranteed to exist so null
check it before determining the root style.

Tests: fast/css/conic-gradient-no-document-element-crash.html

fast/css/linear-gradient-no-document-element-crash.html
fast/css/radial-gradient-no-document-element-crash.html

  • css/CSSGradientValue.cpp:

(WebCore::CSSLinearGradientValue::createGradient):
(WebCore::CSSRadialGradientValue::createGradient):
(WebCore::CSSConicGradientValue::createGradient):

LayoutTests:

Add tests for this.

  • fast/css/conic-gradient-no-document-element-crash-expected.txt: Added.
  • fast/css/conic-gradient-no-document-element-crash.html: Added.
  • fast/css/linear-gradient-no-document-element-crash-expected.txt: Added.
  • fast/css/linear-gradient-no-document-element-crash.html: Added.
  • fast/css/radial-gradient-no-document-element-crash-expected.txt: Added.
  • fast/css/radial-gradient-no-document-element-crash.html: Added.
9:30 AM Changeset in webkit [272496] by youenn@apple.com
  • 2 edits in trunk/Source/WebKit

Enable GPU WebRTC codecs in GPUProcess by default on MacOS
https://bugs.webkit.org/show_bug.cgi?id=221397

Reviewed by Eric Carlson.

Manually tested.

  • Shared/WebPreferencesDefaultValues.cpp:

(WebKit::defaultWebRTCCodecsInGPUProcess):

8:42 AM Changeset in webkit [272495] by Aditya Keerthi
  • 12 edits
    4 adds in trunk

[macOS] Return key binding for date inputs conflicts with return to submit form
https://bugs.webkit.org/show_bug.cgi?id=221532
<rdar://problem/74039204>

Reviewed by Wenson Hsieh.

Source/WebCore:

Currently, pressing the return key within a focused date input presents
the calendar view, rather than submitting an associated form. This is a
usability issue for keyboard users, and is different from the behavior
in Chrome. This patch matches the behavior in Chrome, and makes it so
that a return keypress submits an associated form.

However, since the return key is now reserved for form submission, we
need a new key to present the calendar view for the date input. Chrome
and Firefox use the space key for this functionality, so this patch
matches that behavior.

Note that r267281 updated date inputs to focus the next editable component
when pressing the space key. This behavior is now removed in favor of
presenting the calendar. Other separator keys, and arrow keys, can still be
used to focus the next editable component.

Tests: fast/forms/date/date-editable-components/date-picker-show-on-space-keypress.html

fast/forms/date/date-editable-components/form-submit-on-return-keypress.html

  • html/BaseDateAndTimeInputType.cpp:

(WebCore::BaseDateAndTimeInputType::handleKeypressEvent):

Date and time inputs are BaseClickableWithKeyInputTypes. This gives them
activation behavior on return and space keypresses, similar to button and
color inputs. However, since date/time inputs are closer to textfields,
than buttons, we elide activation behavior on a return keypress, allowing
the event to submit an associated form. Activation behavior on a space
keypress is supported by going through the existing code path.

  • html/shadow/DateTimeFieldElement.cpp:

(WebCore::DateTimeFieldElement::defaultKeyboardEventHandler):

Remove "Space" from the list of separator keys that focus the next
editable component.

LayoutTests:

Added tests to verify that pressing the space key in a focused date
input presents a calendar view, and pressing the enter key in a focused
date input submits a form.

Rebaselined existing tests to account for the fact that the space key
no longer focuses the next editable component within a date input.

  • fast/forms/date/date-editable-components/date-editable-components-keyboard-events-expected.txt:
  • fast/forms/date/date-editable-components/date-editable-components-keyboard-events.html:
  • fast/forms/date/date-editable-components/date-picker-show-on-space-keypress-expected.txt: Added.
  • fast/forms/date/date-editable-components/date-picker-show-on-space-keypress.html: Added.
  • fast/forms/date/date-editable-components/form-submit-on-return-keypress-expected.txt: Added.
  • fast/forms/date/date-editable-components/form-submit-on-return-keypress.html: Added.
  • fast/forms/datetimelocal/datetimelocal-editable-components/datetimelocal-editable-components-keyboard-events-expected.txt:
  • fast/forms/datetimelocal/datetimelocal-editable-components/datetimelocal-editable-components-keyboard-events.html:
  • fast/forms/month/month-editable-components/month-editable-components-keyboard-events-expected.txt:
  • fast/forms/month/month-editable-components/month-editable-components-keyboard-events.html:
  • fast/forms/time/time-editable-components/time-editable-components-keyboard-events-expected.txt:
  • fast/forms/time/time-editable-components/time-editable-components-keyboard-events.html:
8:29 AM Changeset in webkit [272494] by Antti Koivisto
  • 10 edits in trunk

[LFC][Integration] Hit test inline boxes
https://bugs.webkit.org/show_bug.cgi?id=221545

Reviewed by Zalan Bujtas.

Source/WebCore:

Fix fast/dom/nodesFromRect/nodesFromRect-inline-image.html and similar by allowing hitting non-root inline boxes.

  • layout/integration/LayoutIntegrationInlineContent.h:

Add a new vector for inlines.

  • layout/integration/LayoutIntegrationInlineContentBuilder.cpp:

(WebCore::LayoutIntegration::InlineContentBuilder::build const):
(WebCore::LayoutIntegration::InlineContentBuilder::createDisplayNonRootInlineBoxes const):

Build the vector.

  • layout/integration/LayoutIntegrationInlineContentBuilder.h:
  • layout/integration/LayoutIntegrationLine.h:

(WebCore::LayoutIntegration::NonRootInlineBox::NonRootInlineBox):
(WebCore::LayoutIntegration::NonRootInlineBox::layoutBox const):
(WebCore::LayoutIntegration::NonRootInlineBox::style const):
(WebCore::LayoutIntegration::NonRootInlineBox::lineIndex const):
(WebCore::LayoutIntegration::NonRootInlineBox::rect const):

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::hitTest):

Hit test using the inline vector.

LayoutTests:

  • fast/dom/nodesFromRect/nodesFromRect-culled-inline-with-linebreak.html:
  • fast/dom/nodesFromRect/nodesFromRect-culled-inlines.html:
  • fast/dom/nodesFromRect/resources/nodesFromRect.js:

(nodeListToString):

Sort the vector based on node type so the order is not sensitive to engine internals.
Rect based hit testing is not web exposed and the leaf-to-root order is still maintained.

8:18 AM Changeset in webkit [272493] by Lauro Moura
  • 2 edits in trunk/Tools

[GLIB] Gardening geolocation API test flakiness

Unreviewed test gardening.

Failing regularly, likely due to the same geolocation API limitation.

  • TestWebKitAPI/glib/TestExpectations.json:
8:17 AM Changeset in webkit [272492] by commit-queue@webkit.org
  • 5 edits
    1 add in trunk

WebXRSystem::RequestSession with 'viewer' as a required feature should succeed
https://bugs.webkit.org/show_bug.cgi?id=221267

Patch by Imanol Fernandez <imanol> on 2021-02-08
Reviewed by Sergio Villar Senin.

LayoutTests/imported/w3c:

Mark xrSession_viewer_availability test as passing.

  • web-platform-tests/webxr/xrSession_viewer_availability.https-expected.txt: Added.

Source/WebCore:

Tested by wpt/webxr/xrSession_viewer_availability.html

  • Modules/webxr/WebXRSystem.cpp:

(WebCore::WebXRSystem::inlineSessionRequestIsAllowedForGlobalObject const):

LayoutTests:

Mark xrSession_viewer_availability test as passing.

  • platform/wpe/TestExpectations:
8:14 AM Changeset in webkit [272491] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Fix WebXRWebGLLayer m_isCompositionDisabled checks
https://bugs.webkit.org/show_bug.cgi?id=221551

Patch by Imanol Fernandez <imanol> on 2021-02-08
Reviewed by Sergio Villar Senin.

Fix reversed m_isCompositionDisabled checks.

  • Modules/webxr/WebXRWebGLLayer.cpp:

(WebCore::WebXRWebGLLayer::create):
(WebCore::WebXRWebGLLayer::WebXRWebGLLayer):

7:40 AM Changeset in webkit [272490] by Andres Gonzalez
  • 23 edits
    2 adds in trunk

Add support for aria-sort change notifications.
https://bugs.webkit.org/show_bug.cgi?id=221495

Reviewed by Chris Fleizach.

Source/WebCore:

Test: accessibility/aria-sort-changed-notification.html

This patch adds support for aria-sort changes. Some code cleanup by
using the notificationPlatformName helper function.

  • accessibility/AXLogger.cpp:

(WebCore::operator<<):
Logging of the new notification.

  • accessibility/AXObjectCache.cpp:

Handles the aria-sort change notification. Updates the isolated tree.
(WebCore::AXObjectCache::handleAttributeChange):
(WebCore::AXObjectCache::updateIsolatedTree):

  • accessibility/AXObjectCache.h:
  • accessibility/ios/AXObjectCacheIOS.mm:

(WebCore::AXObjectCache::notificationPlatformName):
Helper to map AXCore notifications to platform notifications.
(WebCore::AXObjectCache::postPlatformNotification):
Handles the AXSortDirectionChanged notification. Some code cleanup using
the notificationPlatformName helper.

  • accessibility/ios/WebAccessibilityObjectWrapperIOS.h:
  • accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:

(-[WebAccessibilityObjectWrapper postNotification:]):
To be overridden by system AX bundles.
(-[WebAccessibilityObjectWrapper accessibilitySortDirection]):
Only ascending and descending sort directions are relevant for clients.

  • accessibility/isolatedtree/AXIsolatedTree.cpp:

(WebCore::AXIsolatedTree::updateNodeProperty):
Updates the SortDirection property.

  • accessibility/mac/AXObjectCacheMac.mm:

(WebCore::AXObjectCache::postPlatformNotification):
Handles the AXSortDirectionChanged notification.

Tools:

  • WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp:

(WTR::AccessibilityUIElement::sortDirection const):

  • WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:
  • WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl:
  • WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm:

(WTR::AccessibilityUIElement::sortDirection const):

  • WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:

(WTR::AccessibilityUIElement::currentStateValue const):
(WTR::AccessibilityUIElement::sortDirection const):

LayoutTests:

  • accessibility/aria-sort-changed-notification-expected.txt: Added.
  • accessibility/aria-sort-changed-notification.html: Added.
  • accessibility/aria-sort-expected.txt:
  • accessibility/aria-sort.html:

Calls sortDirection property on the JS accessible element instead of
retrieving the aria-sort attribute. This matches more accurately what an
actual client would do. Changed the expected file accordingly.

  • accessibility/ios-simulator/aria-sort-ios-expected.txt:
  • accessibility/ios-simulator/aria-sort-ios.html:

Same as in the Mac test above.

  • platform/ios/TestExpectations:

Added the new test to be run on the ios-simulator.

5:52 AM Changeset in webkit [272489] by Manuel Rego Casasnovas
  • 6 edits
    2 adds in trunk

[GTK] event.ctrlKey and other are false in keydown event
https://bugs.webkit.org/show_bug.cgi?id=221456

Reviewed by Adrian Perez de Castro.

Source/WebKit:

Modifier keys were not being set on "keydown" events.
For example if you check event.ctrlKey (and other) you'll get always false when the user only typed Ctrl key
(it'll be true when it's in combination with some other key, like Ctrl + P).
This is due to some differences on how X system manages the modifier keys (see http://crbug.com/127142#c8),
but this patch will align WebKitGTK with other platforms and browsers on this case.

Test: fast/events/keyboardevent-modifier.html

  • Shared/gtk/WebEventFactory.cpp:

(WebKit::modifiersForEvent): In the case of a keyboard press event check if some modifier key has been pressed.

  • UIProcess/API/gtk/WebKitWebViewBase.cpp:

(webkitWebViewBaseSynthesizeKeyEvent): Check if some modifier key has been pressed.

LayoutTests:

The test only pass in GTK right now, despite testing it manually works fine in all platforms,
it looks like they might need changes to make the test pass.

  • TestExpectations:
  • fast/events/keyboardevent-modifier-expected.txt: Added.
  • fast/events/keyboardevent-modifier.html: Added.
  • platform/gtk/TestExpectations:
5:31 AM Changeset in webkit [272488] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Perform layout before running Editor::findString
https://bugs.webkit.org/show_bug.cgi?id=220384

Patch by Frédéric Wang <fwang@igalia.com> on 2021-02-08
Reviewed by Ryosuke Niwa.

This ensures that the layout is up-to-date before performing any search.
Also disable any post-resolution that could cause more changes to happen.

  • editing/Editor.cpp:

(WebCore::Editor::findString):

4:33 AM Changeset in webkit [272487] by graouts@webkit.org
  • 2 edits in trunk/Source/WebKit

Unreviewed unified build fix.

  • UIProcess/MediaPermissionUtilities.h:
4:31 AM Changeset in webkit [272486] by graouts@webkit.org
  • 2 edits in trunk/Source/WebCore

Deprecation warnings for NSImageHintSymbolFont and NSImageHintSymbolScale
https://bugs.webkit.org/show_bug.cgi?id=221541

Unreviewed build fix.

  • rendering/RenderThemeMac.mm:

(WebCore::createAttachmentPlaceholderImage):

3:34 AM Changeset in webkit [272485] by Philippe Normand
  • 16 edits
    4 adds in trunk

[GLib] Permission request API for MediaKeySystem access support
https://bugs.webkit.org/show_bug.cgi?id=221199

Reviewed by Carlos Garcia Campos.

Source/WebKit:

Expose a new Permission Request object to the public WPE and GTK APIs, allowing the
application to defer the decision of using a given EME MediaKeySystem to the user's
approval.

Covered by new API test.

  • PlatformGTK.cmake:
  • PlatformWPE.cmake:
  • SourcesGTK.txt:
  • SourcesWPE.txt:
  • UIProcess/API/glib/WebKitMediaKeySystemPermissionRequest.cpp: Added.

(webkitMediaKeySystemPermissionRequestAllow):
(webkitMediaKeySystemPermissionRequestDeny):
(webkit_permission_request_interface_init):
(webkitMediaKeySystemPermissionRequestDispose):
(webkit_media_key_system_permission_request_class_init):
(webkitMediaKeySystemPermissionRequestCreate):
(webkit_media_key_system_permission_get_name):

  • UIProcess/API/glib/WebKitMediaKeySystemPermissionRequestPrivate.h: Added.
  • UIProcess/API/glib/WebKitUIClient.cpp:
  • UIProcess/API/gtk/WebKitAutocleanups.h:
  • UIProcess/API/gtk/WebKitMediaKeySystemPermissionRequest.h: Added.
  • UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
  • UIProcess/API/gtk/docs/webkit2gtk-docs.sgml:
  • UIProcess/API/gtk/webkit2.h:
  • UIProcess/API/wpe/WebKitMediaKeySystemPermissionRequest.h: Added.
  • UIProcess/API/wpe/docs/wpe-1.0-sections.txt:
  • UIProcess/API/wpe/docs/wpe-docs.sgml:

Tools:

Added basic support for MediaKeySystem permission request to the GTK MiniBrowser, and a GLib
API unit-test as well.

  • MiniBrowser/gtk/BrowserTab.c:

(permissionRequestDialogResponse):
(decidePermissionRequest):
(browser_tab_class_init):

  • TestWebKitAPI/Tests/WebKitGLib/TestUIClient.cpp:

(testWebViewMediaKeySystemPermissionRequests):
(beforeAll):

  • TestWebKitAPI/glib/WebKitGLib/WebViewTest.cpp:

(WebViewTest::initializeWebView):

1:47 AM Changeset in webkit [272484] by aboya@igalia.com
  • 8 edits
    1 add in trunk

ConsoleMessage: Don't encode string JSONLogValue's as JSON
https://bugs.webkit.org/show_bug.cgi?id=221421

Reviewed by Eric Carlson.

.:

Enable JavaScriptCore API tests.

  • Source/cmake/WebKitCommon.cmake:

Source/JavaScriptCore:

JSONLogValue's have two tagged types: String and JSON. Despite this,
the ConsoleMessage constructor was converting the string values to
JSON while coalescing them.

This also added quotes on the return value of message() for
ConsoleMessage's created with this constructor, but not with others.

This patch removes that behavior, keeping strings as strings and using
wrapObject() instead of wrapJSONString() for them.

  • inspector/ConsoleMessage.cpp:

(Inspector::ConsoleMessage::ConsoleMessage):
(Inspector::ConsoleMessage::addToFrontend):

Tools:

Added API tests to check for the output of message() when constructing
ConsoleMessage objects with JSONLogValue's.

This includes changes contributed by Philippe Normand enabling
JavaScriptCore tests which were previously disabled in WebKitGTK and
making them compile again.

  • TestWebKitAPI/CMakeLists.txt:
  • TestWebKitAPI/Tests/WebKit/InspectorConsoleMessage.cpp: Added.

(TestWebKitAPI::TEST):

1:12 AM Changeset in webkit [272483] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

Nullptr crash in editingIgnoresContent via InsertParagraphSeparatorCommand::doApply
https://bugs.webkit.org/show_bug.cgi?id=220349

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2021-02-08
Reviewed by Ryosuke Niwa.

Add an early return to InsertParagraphSeparatorCommand::doApply if insert position is null.

  • editing/CompositeEditCommand.cpp:

(WebCore::CompositeEditCommand::insertNodeBefore): Return early if a InsertNodeBeforeCommand can't be created.

  • editing/InsertParagraphSeparatorCommand.cpp:

(WebCore::InsertParagraphSeparatorCommand::doApply): Abort the insertion if the insert position is null.

1:00 AM Changeset in webkit [272482] by Philippe Normand
  • 2 edits in trunk/Source/WebKit

Unreviewed, unified build fix after r272480

  • WebProcess/Speech/SpeechRecognitionRealtimeMediaSourceManager.cpp: Logging.h is needed for

log channel macros usage.

12:53 AM Changeset in webkit [272481] by Philippe Normand
  • 3 edits in trunk/Source/WebKit

Unreviewed, build fix after r272480

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::requestMediaKeySystemPermissionByDefaultAction):

  • UIProcess/WebPageProxy.h:
12:37 AM Changeset in webkit [272480] by Philippe Normand
  • 38 edits
    19 adds in trunk

Permission request API for MediaKeySystem access support
https://bugs.webkit.org/show_bug.cgi?id=221187

Reviewed by Jer Noble.

Source/WebCore:

Support for user permission requesting when access to an EME MediaKeySystem is being
requested by the page. This is similar to the mediaDevices access guards.

Existing test media/encrypted-media/mock-MediaKeySystemAccess.html was updated to cover this
new code path and WPE/GTK API tests as well.

  • CMakeLists.txt:
  • Headers.cmake:
  • Modules/encryptedmedia/MediaKeySystemClient.h: Added.
  • Modules/encryptedmedia/MediaKeySystemController.cpp: Added.

(WebCore::MediaKeySystemController::supplementName):
(WebCore::MediaKeySystemController::MediaKeySystemController):
(WebCore::MediaKeySystemController::~MediaKeySystemController):
(WebCore::provideMediaKeySystemTo):
(WebCore::MediaKeySystemController::logRequestMediaKeySystemDenial):

  • Modules/encryptedmedia/MediaKeySystemController.h: Added.

(WebCore::MediaKeySystemController::client const):
(WebCore::MediaKeySystemController::from):
(WebCore::MediaKeySystemController::requestMediaKeySystem):
(WebCore::MediaKeySystemController::cancelMediaKeySystemRequest):

  • Modules/encryptedmedia/MediaKeySystemRequest.cpp: Added.

(WebCore::MediaKeySystemRequest::create):
(WebCore::MediaKeySystemRequest::MediaKeySystemRequest):
(WebCore::MediaKeySystemRequest::~MediaKeySystemRequest):
(WebCore::MediaKeySystemRequest::topLevelDocumentOrigin const):
(WebCore::MediaKeySystemRequest::start):
(WebCore::MediaKeySystemRequest::allow):
(WebCore::MediaKeySystemRequest::deny):
(WebCore::MediaKeySystemRequest::stop):
(WebCore::MediaKeySystemRequest::activeDOMObjectName const):
(WebCore::MediaKeySystemRequest::document const):

  • Modules/encryptedmedia/MediaKeySystemRequest.h: Added.

(WebCore::MediaKeySystemRequest::setAllowCallback):
(WebCore::MediaKeySystemRequest::identifier const):
(WebCore::MediaKeySystemRequest::keySystem const):

  • Modules/encryptedmedia/NavigatorEME.cpp:

(WebCore::NavigatorEME::requestMediaKeySystemAccess):

Source/WebKit:

Add new IPC and C API exposing MediaKeySystem access permissions to the UIProcess. At least
GTK/WPE would like to have API for asking permission to the user when EME's MediaKeyAccess
is being requested by a page. On Apple platforms the permission is granted by default until
a decision is made about supporting this in their APIUIClient.

  • CMakeLists.txt:
  • Headers.cmake:
  • Platform/Logging.h:
  • Shared/API/APIObject.h:
  • Shared/API/c/WKBase.h:
  • Sources.txt:
  • UIProcess/API/APIUIClient.h:

(API::UIClient::decidePolicyForMediaKeySystemPermissionRequest):

  • UIProcess/API/C/WKAPICast.h:
  • UIProcess/API/C/WKMediaKeySystemPermissionCallback.cpp: Added.

(WKMediaKeySystemPermissionCallbackGetTypeID):
(WKMediaKeySystemPermissionCallbackComplete):

  • UIProcess/API/C/WKMediaKeySystemPermissionCallback.h: Added.
  • UIProcess/API/C/WKPage.cpp:

(WKPageSetPageUIClient):

  • UIProcess/API/C/WKPageUIClient.h:
  • UIProcess/MediaKeySystemPermissionRequest.h: Added.

(WebKit::MediaKeySystemPermissionRequest::create):
(WebKit::MediaKeySystemPermissionRequest::complete):
(WebKit::MediaKeySystemPermissionRequest::keySystem const):
(WebKit::MediaKeySystemPermissionRequest::MediaKeySystemPermissionRequest):
(WebKit::MediaKeySystemPermissionCallback::create):
(WebKit::MediaKeySystemPermissionCallback::complete):
(WebKit::MediaKeySystemPermissionCallback::MediaKeySystemPermissionCallback):

  • UIProcess/MediaKeySystemPermissionRequestManagerProxy.cpp: Added.

(WebKit::MediaKeySystemPermissionRequestManagerProxy::MediaKeySystemPermissionRequestManagerProxy):
(WebKit::MediaKeySystemPermissionRequestManagerProxy::~MediaKeySystemPermissionRequestManagerProxy):
(WebKit::MediaKeySystemPermissionRequestManagerProxy::invalidatePendingRequests):
(WebKit::MediaKeySystemPermissionRequestManagerProxy::denyRequest):
(WebKit::MediaKeySystemPermissionRequestManagerProxy::grantRequest):
(WebKit::MediaKeySystemPermissionRequestManagerProxy::createRequestForFrame):
(WebKit::MediaKeySystemPermissionRequestManagerProxy::logChannel const):
(WebKit::MediaKeySystemPermissionRequestManagerProxy::logger const):

  • UIProcess/MediaKeySystemPermissionRequestManagerProxy.h: Added.

(WebKit::MediaKeySystemPermissionRequestManagerProxy::page const):
(WebKit::MediaKeySystemPermissionRequestManagerProxy::denyRequest):

  • UIProcess/MediaKeySystemPermissionRequestProxy.cpp: Added.

(WebKit::MediaKeySystemPermissionRequestProxy::MediaKeySystemPermissionRequestProxy):
(WebKit::MediaKeySystemPermissionRequestProxy::allow):
(WebKit::MediaKeySystemPermissionRequestProxy::deny):
(WebKit::MediaKeySystemPermissionRequestProxy::invalidate):
(WebKit::MediaKeySystemPermissionRequestProxy::doDefaultAction):

  • UIProcess/MediaKeySystemPermissionRequestProxy.h: Added.

(WebKit::MediaKeySystemPermissionRequestProxy::create):
(WebKit::MediaKeySystemPermissionRequestProxy::isPending const):
(WebKit::MediaKeySystemPermissionRequestProxy::mediaKeySystemID const):
(WebKit::MediaKeySystemPermissionRequestProxy::mainFrameID const):
(WebKit::MediaKeySystemPermissionRequestProxy::frameID const):
(WebKit::MediaKeySystemPermissionRequestProxy::topLevelDocumentSecurityOrigin):
(WebKit::MediaKeySystemPermissionRequestProxy::topLevelDocumentSecurityOrigin const):
(WebKit::MediaKeySystemPermissionRequestProxy::keySystem const):

  • UIProcess/SpeechRecognitionRemoteRealtimeMediaSource.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::requestMediaKeySystemPermissionForFrame):
(WebKit::WebPageProxy::mediaKeySystemPermissionRequestManager):
(WebKit::WebPageProxy::requestMediaKeySystemPermissionByDefaultAction):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • WebProcess/EncryptedMedia/MediaKeySystemPermissionRequestManager.cpp: Added.

(WebKit::MediaKeySystemPermissionRequestManager::MediaKeySystemPermissionRequestManager):
(WebKit::MediaKeySystemPermissionRequestManager::startMediaKeySystemRequest):
(WebKit::MediaKeySystemPermissionRequestManager::sendMediaKeySystemRequest):
(WebKit::MediaKeySystemPermissionRequestManager::cancelMediaKeySystemRequest):
(WebKit::MediaKeySystemPermissionRequestManager::mediaKeySystemWasGranted):
(WebKit::MediaKeySystemPermissionRequestManager::mediaKeySystemWasDenied):

  • WebProcess/EncryptedMedia/MediaKeySystemPermissionRequestManager.h: Added.
  • WebProcess/WebCoreSupport/WebMediaKeySystemClient.cpp: Added.

(WebKit::WebMediaKeySystemClient::WebMediaKeySystemClient):
(WebKit::WebMediaKeySystemClient::pageDestroyed):
(WebKit::WebMediaKeySystemClient::requestMediaKeySystem):
(WebKit::WebMediaKeySystemClient::cancelMediaKeySystemRequest):

  • WebProcess/WebCoreSupport/WebMediaKeySystemClient.h: Added.

(WebKit::WebMediaKeySystemClient::~WebMediaKeySystemClient):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::m_limitsNavigationsToAppBoundDomains):
(WebKit::WebPage::mediaKeySystemWasGranted):
(WebKit::WebPage::mediaKeySystemWasDenied):

  • WebProcess/WebPage/WebPage.h:

(WebKit::WebPage::mediaKeySystemPermissionRequestManager):

  • WebProcess/WebPage/WebPage.messages.in:

Tools:

Add support for setting the permission request response from the TestRunner, for usage within layout tests.

  • WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
  • WebKitTestRunner/InjectedBundle/TestRunner.cpp:

(WTR::TestRunner::setIsMediaKeySystemPermissionGranted):

  • WebKitTestRunner/InjectedBundle/TestRunner.h:
  • WebKitTestRunner/TestController.cpp:

(WTR::decidePolicyForMediaKeySystemPermissionRequest):
(WTR::TestController::completeMediaKeySystemPermissionCheck):
(WTR::TestController::setIsMediaKeySystemPermissionGranted):
(WTR::TestController::createWebViewWithOptions):

  • WebKitTestRunner/TestController.h:
  • WebKitTestRunner/TestInvocation.cpp:

(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):

LayoutTests:

Add basic coverage support for overriding the MediaKeySystem permission answer and thus have
the promise rejection tested in this case.

  • media/encrypted-media/mock-MediaKeySystemAccess-expected.txt:
  • media/encrypted-media/mock-MediaKeySystemAccess.html:

Feb 7, 2021:

8:18 PM Changeset in webkit [272479] by Lauro Moura
  • 4 edits in trunk

REGRESSION(r272379) [WPE] imported/w3c/web-platform-tests/mathml/relations/css-styling/mathvariant tests are Image Failing
https://bugs.webkit.org/show_bug.cgi?id=221523

Reviewed by Adrian Perez de Castro.

Source/WebCore:

Covered by existing tests.

This change makes the mathml tests pass again, but still does not
fixes fast/text/multi-code-unit-simple-path.html, which is still not
mismatching on both GTK/WPE.

  • platform/graphics/WidthIterator.cpp:

(WebCore::WidthIterator::advanceInternal): Avoid inserting the
trailing zero for GLIB.

LayoutTests:

  • platform/wpe/TestExpectations: Remove expected failures
6:11 PM Changeset in webkit [272478] by Alan Bujtas
  • 3 edits
    2 adds in trunk

[LFC][IFC] ASSERT(constraints.left->x <= constraints.right->x) when left and right floats run out of space
https://bugs.webkit.org/show_bug.cgi?id=220963
<rdar://problem/73861675>

Reviewed by Simon Fraser.

Source/WebCore:

Remove the incorrect assert. It's valid to have "horizontally overlapping" floats here since
we probe for a vertical range (not just a point) and vertical ranges can have
multiple left and right floats where they simply "overlap" each other when only x is taken into account.

When two floats (left and right) line up like this:

_

| LF |
|_|

_

| RF |
|_|

and as we try to find space for the inline content, we may end up with a vertical range (candidate line position + line height)
where we find both LF and RF. In this range the float boxes do overlap horizontally.
It simply means that at that vertical position there's no available space for the inline content.

Test: fast/inline/intrusive-left-right-floats-assert.html

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::floatConstraints const):

LayoutTests:

  • fast/inline/intrusive-left-right-floats-assert-expected.txt: Added.
  • fast/inline/intrusive-left-right-floats-assert.html: Added.
2:10 PM Changeset in webkit [272477] by Wenson Hsieh
  • 4 edits in trunk/Source/WebCore

Remove a duplicate implementation of EventHandler::mouseDownMayStartSelect()
https://bugs.webkit.org/show_bug.cgi?id=221531

Reviewed by Tim Horton.

Remove the current bool mouseDownMayStartSelect() const method which just returns m_mouseDownMayStartSelect,
and make the current non-const version of the method const instead. Since mouseDownMayStartSelect() was
only invoked from non-const methods, the former const version was unused.

No change in behavior.

  • page/EventHandler.cpp:

(WebCore::EventHandler::mouseDownMayStartSelect const):
(WebCore::EventHandler::mouseDownMayStartSelect): Deleted.

  • page/EventHandler.h:

(WebCore::EventHandler::mouseDownMayStartSelect const): Deleted.

  • page/Page.h:

(WebCore::Page::textInteractionEnabled const):

Make this getter const, so that we can call it in mouseDownMayStartSelect() const.

(WebCore::Page::textInteractionEnabled): Deleted.

12:25 PM Changeset in webkit [272476] by Fujii Hironori
  • 2 edits in trunk/Source/WebKit

[CoordinatedGraphics] The whole content is unnecessarily repainted by animations in non-AC mode pages
https://bugs.webkit.org/show_bug.cgi?id=221391

Reviewed by Carlos Garcia Campos.

When triggerRenderingUpdate was called back, it added the whole
view area into the dirty region to repaint in non-AC mode pages.
This caused a problem that the whole content was unnecessarily
repainted by animations in non-AC mode pages

If triggerRenderingUpdate is called back,
DrawingAreaCoordinatedGraphics::display should be called to ensure
WebPage::updateRendering() called even if m_dirtyRegion is empty.

  • WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp:

(WebKit::DrawingAreaCoordinatedGraphics::triggerRenderingUpdate):
Call scheduleDisplay() instead of setNeedsDisplay().
(WebKit::DrawingAreaCoordinatedGraphics::scheduleDisplay): Don't
return early even if m_dirtyRegion is empty.
(WebKit::DrawingAreaCoordinatedGraphics::display()): Ditto.
(WebKit::DrawingAreaCoordinatedGraphics::display(UpdateInfo&)):
Return early if m_dirtyRegion is empty.

11:27 AM Changeset in webkit [272475] by weinig@apple.com
  • 75 edits in trunk/Source

Differentiate between color spaces used to tag colors and color spaces used to tag destinations
https://bugs.webkit.org/show_bug.cgi?id=221520

Reviewed by Antti Koivisto.

Source/WebCore:

Replace use of the ColorSpace enum in destination contexts (ImageBuffer, Filters, etc.)
with a new DestinationColorSpace enum that is just the limited set of color spaces
supported in that context, just SRGB and LinearSRGB. We may need to expand this to
other supported destination color spaces in the future, but currently only those two
are actually used, and color space information for higher gamut spaces like DisplayP3
are communicated differently.

This will allow us to more clearly see these two concepts as different and ensure we
we support all cases for each, without having to know to ignore some color spaces in
the destination contexts.

While changing a bunch of names, also take the oppertunity to rename ColorSpace::LinearRGB
to ColorSpace::LinearSRGB to match ColorSpace::SRGB (also done for the new
DestinationColorSpace::LinearSRGB).

  • html/CustomPaintCanvas.cpp:

(WebCore::CustomPaintCanvas::copiedImage const):

  • html/HTMLCanvasElement.cpp:

(WebCore::HTMLCanvasElement::createImageBuffer const):

  • html/HTMLVideoElement.cpp:

(WebCore::HTMLVideoElement::createBufferForPainting const):

  • html/ImageBitmap.cpp:

(WebCore::ImageBitmap::createImageBuffer):

  • html/OffscreenCanvas.cpp:

(WebCore::OffscreenCanvas::commitToPlaceholderCanvas):

  • html/canvas/CanvasRenderingContext2DBase.cpp:

(WebCore::CanvasRenderingContext2DBase::drawImage):
(WebCore::CanvasRenderingContext2DBase::drawTextUnchecked):

  • page/Chrome.cpp:

(WebCore::Chrome::createImageBuffer const):

  • page/Chrome.h:
  • page/ChromeClient.h:

(WebCore::ChromeClient::createImageBuffer const):

  • page/cocoa/ResourceUsageOverlayCocoa.mm:

(WebCore::createColor):

  • platform/HostWindow.h:
  • platform/graphics/BitmapImage.cpp:

(WebCore::BitmapImage::drawPattern):

  • platform/graphics/ColorSerialization.cpp:

(WebCore::serialization):

  • platform/graphics/ColorSpace.cpp:

(WebCore::operator<<):

  • platform/graphics/ColorSpace.h:

(WebCore::callWithColorType):

  • platform/graphics/ConcreteImageBuffer.h:

(WebCore::ConcreteImageBuffer::create):

  • platform/graphics/CustomPaintImage.cpp:

(WebCore::CustomPaintImage::drawPattern):

  • platform/graphics/GradientImage.cpp:

(WebCore::GradientImage::drawPattern):

  • platform/graphics/GraphicsContext.cpp:

(WebCore::GraphicsContext::clipToDrawingCommands):

  • platform/graphics/GraphicsContext.h:
  • platform/graphics/GraphicsContextImpl.h:
  • platform/graphics/ImageBuffer.cpp:

(WebCore::ImageBuffer::create):
(WebCore::ImageBuffer::createCompatibleBuffer):
(WebCore::ImageBuffer::copyRectToBuffer):

  • platform/graphics/ImageBuffer.h:
  • platform/graphics/ImageBufferBackend.h:

(WebCore::ImageBufferBackend::transformColorSpace):
(WebCore::ImageBufferBackend::colorSpace const):

  • platform/graphics/cairo/GraphicsContextImplCairo.h:
  • platform/graphics/cairo/ImageBufferCairoBackend.cpp:

(WebCore::ImageBufferCairoBackend::transformColorSpace):

  • platform/graphics/cairo/ImageBufferCairoBackend.h:
  • platform/graphics/cg/ColorSpaceCG.h:

(WebCore::cachedCGColorSpace):

  • platform/graphics/displaylists/DisplayListImageBuffer.h:

(WebCore::DisplayList::ImageBuffer::create):

  • platform/graphics/displaylists/DisplayListItems.h:

(WebCore::DisplayList::ClipToDrawingCommands::ClipToDrawingCommands):
(WebCore::DisplayList::ClipToDrawingCommands::colorSpace const):
(WebCore::DisplayList::ClipToDrawingCommands::decode):

  • platform/graphics/displaylists/DisplayListRecorder.cpp:

(WebCore::DisplayList::Recorder::clipToDrawingCommands):

  • platform/graphics/displaylists/DisplayListRecorder.h:
  • platform/graphics/filters/FEDisplacementMap.cpp:

(WebCore::FEDisplacementMap::setResultColorSpace):

  • platform/graphics/filters/FEDisplacementMap.h:
  • platform/graphics/filters/FEFlood.h:
  • platform/graphics/filters/FELighting.cpp:

(WebCore::FELighting::drawLighting):

  • platform/graphics/filters/FETile.cpp:

(WebCore::FETile::platformApplySoftware):

  • platform/graphics/filters/FilterEffect.cpp:

(WebCore::FilterEffect::unmultipliedResult):
(WebCore::FilterEffect::premultipliedResult):
(WebCore::FilterEffect::convertImageDataToColorSpace):
(WebCore::FilterEffect::convertImageBufferToColorSpace):
(WebCore::FilterEffect::copyConvertedImageBufferToDestination):
(WebCore::FilterEffect::copyConvertedImageDataToDestination):
(WebCore::FilterEffect::copyUnmultipliedResult):
(WebCore::FilterEffect::copyPremultipliedResult):
(WebCore::FilterEffect::requiresImageDataColorSpaceConversion):
(WebCore::FilterEffect::transformResultColorSpace):

  • platform/graphics/filters/FilterEffect.h:

(WebCore::FilterEffect::operatingColorSpace const):
(WebCore::FilterEffect::setOperatingColorSpace):
(WebCore::FilterEffect::resultColorSpace const):
(WebCore::FilterEffect::setResultColorSpace):

  • platform/graphics/filters/SourceGraphic.h:

(WebCore::SourceGraphic::SourceGraphic):

  • platform/graphics/nicosia/cairo/NicosiaCairoOperationRecorder.cpp:

(Nicosia::CairoOperationRecorder::clipToDrawingCommands):

  • platform/graphics/nicosia/cairo/NicosiaCairoOperationRecorder.h:
  • platform/graphics/win/GraphicsContextImplDirect2D.cpp:
  • platform/graphics/win/GraphicsContextImplDirect2D.h:
  • platform/graphics/win/ImageBufferDirect2DBackend.cpp:

(WebCore::ImageBufferDirect2DBackend::create):
(WebCore::ImageBufferDirect2DBackend::ImageBufferDirect2DBackend):

  • platform/mac/ThemeMac.mm:

(WebCore::ThemeMac::drawCellOrFocusRingWithViewIntoContext):

  • rendering/CSSFilter.cpp:

(WebCore::CSSFilter::buildReferenceFilter):
(WebCore::CSSFilter::build):
(WebCore::CSSFilter::apply):

  • rendering/RenderBoxModelObject.cpp:

(WebCore::RenderBoxModelObject::paintFillLayerExtended):

  • rendering/RenderLayerBacking.cpp:

(WebCore::patternForDescription):

  • rendering/RenderThemeMac.mm:

(WebCore::RenderThemeMac::paintProgressBar):

  • rendering/svg/RenderSVGResourceClipper.cpp:

(WebCore::RenderSVGResourceClipper::applyClippingToContext):

  • rendering/svg/RenderSVGResourceFilter.cpp:

(WebCore::RenderSVGResourceFilter::buildPrimitives const):
(WebCore::RenderSVGResourceFilter::applyResource):
(WebCore::RenderSVGResourceFilter::postApplyResource):

  • rendering/svg/RenderSVGResourceGradient.cpp:

(WebCore::createMaskAndSwapContextForTextGradient):

  • rendering/svg/RenderSVGResourceMasker.cpp:

(WebCore::RenderSVGResourceMasker::applyResource):
(WebCore::RenderSVGResourceMasker::drawContentIntoMaskImage):

  • rendering/svg/RenderSVGResourceMasker.h:
  • rendering/svg/RenderSVGResourcePattern.cpp:

(WebCore::RenderSVGResourcePattern::createTileImage const):

  • rendering/svg/SVGRenderingContext.cpp:

(WebCore::SVGRenderingContext::createImageBuffer):
(WebCore::SVGRenderingContext::bufferForeground):

  • rendering/svg/SVGRenderingContext.h:
  • svg/graphics/SVGImage.cpp:

(WebCore::SVGImage::drawPatternForContainer):

  • svg/graphics/filters/SVGFEImage.cpp:

(WebCore::FEImage::platformApplySoftware):

Source/WebKit:

  • Scripts/webkit/messages.py:
  • Shared/WebCoreArgumentCoders.h:

Coder implementation of EnumTraits for color space types is now
in WebCore.

  • GPUProcess/graphics/RemoteImageBuffer.h:

(WebKit::RemoteImageBuffer::create):

  • GPUProcess/graphics/RemoteRenderingBackend.cpp:

(WebKit::RemoteRenderingBackend::createImageBuffer):

  • GPUProcess/graphics/RemoteRenderingBackend.h:
  • GPUProcess/graphics/RemoteRenderingBackend.messages.in:
  • Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:

(WebKit::RemoteLayerBackingStore::swapToValidFrontBuffer):

  • WebProcess/GPU/graphics/RemoteImageBufferProxy.h:

(WebKit::RemoteImageBufferProxy::create):

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:

(WebKit::RemoteRenderingBackendProxy::createImageBuffer):

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h:
  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::createImageBuffer const):

  • WebProcess/WebCoreSupport/WebChromeClient.h:

Update to use DestinationColorSpace rather than ColorSpace.

11:22 AM Changeset in webkit [272474] by weinig@apple.com
  • 23 edits in trunk

Remove more special cases from color conversion
https://bugs.webkit.org/show_bug.cgi?id=221519

Reviewed by Antti Koivisto.

Source/WebCore:

  • Remove specialized convertTo<> function which only did component type conversion with the fully general convertColor<> function.
  • Make ColorComponents a bit more ready for non-4 component colors by reworking member functionality based on a new mapColorComponents function which maps a function F over all the components of a set of ColorComponents. e.g.

auto colorComponentsC = mapColorComponents([] (auto a, auto b) { return a + b; }, colorComponentsA, colorComponentsB);

will create a new ColorComponents where each component is the sum of the
corresponding components in colorComponentsA and colorComponentsB. It's
variadic so it can take any number of ColorComponents. This allows rewriting
all of the members to be size invariant and a little less verbose.

  • Replace special case for the identity conversion in the fallback color conversion code path, and move it into it's own partial specialization of ColorConversion.
  • Replace special case for chromatic adaptation conversions and have them just use specializations of ColorConversion like all other conversions.
  • platform/graphics/ColorComponents.h:

(WebCore::mapColorComponents):
(WebCore::ColorComponents<T>::map const):
(WebCore::ColorComponents<T>::operator const):
(WebCore::ColorComponents<T>::abs const):
(WebCore::perComponentMax):
(WebCore::perComponentMin):
Add map and mapColorComponents and re-implement existing
functionality in terms of them.

  • platform/graphics/ColorConversion.cpp:

(WebCore::WhitePoint::D50>>::convert):
(WebCore::WhitePoint::D65>>::convert):
(WebCore::SRGBA<uint8_t>>::convert):
(WebCore::SRGBA<float>>::convert):
(WebCore::SRGBA<uint8_t>::ReferenceXYZ>::convert):
(WebCore::convertFromD50WhitePointToD65WhitePoint): Deleted.
(WebCore::convertFromD65WhitePointToD50WhitePoint): Deleted.

  • platform/graphics/ColorConversion.h:

(WebCore::ColorConversion::convert):
(WebCore::performChomaticAdapatation): Deleted.
Use ColorConversion specializations for the identity conversion, chomatic
adapatation, and component type conversions, rather than hard coding them
in the fallback conversion.

  • platform/graphics/ColorUtilities.h:

(WebCore::convertTo): Deleted.
Remove convertTo<>, which is now superseded by the general convertColor<>.

  • accessibility/atk/WebKitAccessibleInterfaceText.cpp:

(webkitAccessibleTextGetText):

  • accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:

(-[WebAccessibilityObjectWrapper accessibilityColorStringValue]):

  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):

  • html/canvas/CanvasRenderingContext2DBase.cpp:

(WebCore::CanvasRenderingContext2DBase::setShadow):

  • html/canvas/CanvasStyle.cpp:

(WebCore::CanvasStyle::CanvasStyle):
(WebCore::CanvasStyle::isEquivalent const):

  • platform/graphics/Color.cpp:

(WebCore::Color::lightened const):
(WebCore::Color::darkened const):
(WebCore::Color::colorSpaceAndComponents const):

  • platform/graphics/avfoundation/InbandTextTrackPrivateAVF.cpp:

(WebCore::makeSimpleColorFromARGBCFArray):

  • platform/graphics/filters/FilterOperations.cpp:

(WebCore::FilterOperations::transformColor const):
(WebCore::FilterOperations::inverseTransformColor const):

  • platform/graphics/gtk/ColorGtk.cpp:

(WebCore::Color::Color):

  • platform/graphics/mac/ColorMac.mm:

(WebCore::makeSimpleColorFromNSColor):

  • platform/graphics/win/ColorDirect2D.cpp:

(WebCore::Color::Color):

  • platform/graphics/win/PlatformContextDirect2D.cpp:

(WebCore::PlatformContextDirect2D::brushWithColor):

  • platform/ios/ColorIOS.mm:

(WebCore::colorFromUIColor):
Adopt convertColor<> to replace convertTo<>.

Source/WebKit:

  • UIProcess/API/wpe/WebKitColor.cpp:

(webkitColorToWebCoreColor):
Replace convertTo<> component type conversion to general convertColor<>.

Tools:

  • TestWebKitAPI/Tests/WebCore/ExtendedColorTests.cpp:

(TestWebKitAPI::TEST):
Replace convertTo<> component type conversion to general convertColor<>.

11:03 AM Changeset in webkit [272473] by Antti Koivisto
  • 3 edits in trunk/Source/WebCore

[LFC][Integration] Fix http/wpt/css/css-highlight-api/ tests with inlines enabled
https://bugs.webkit.org/show_bug.cgi?id=221529

Reviewed by Zalan Bujtas.

Highlight painting code is currently tied to legacy line boxes. Disallow LFC.

  • layout/integration/LayoutIntegrationCoverage.cpp:

(WebCore::LayoutIntegration::printReason):
(WebCore::LayoutIntegration::canUseForLineLayoutWithReason):

  • layout/integration/LayoutIntegrationCoverage.h:
7:33 AM Changeset in webkit [272472] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC] A line with no content should always take the fast vertical alignment path
https://bugs.webkit.org/show_bug.cgi?id=221524

Reviewed by Antti Koivisto.

  • layout/inlineformatting/InlineFormattingContextGeometry.cpp:

(WebCore::Layout::LineBoxBuilder::constructInlineLevelBoxes):
(WebCore::Layout::LineBoxBuilder::computeLineBoxHeightAndAlignInlineLevelBoxesVertically):

3:13 AM Changeset in webkit [272471] by ysuzuki@apple.com
  • 17 edits in trunk/Source/JavaScriptCore

[JSC] Replace toInteger with toIntegerOrInfinity
https://bugs.webkit.org/show_bug.cgi?id=218642

Reviewed by Alexey Shvayka.

In ECMA262 spec, ToInteger abstract operation is replaced with ToIntegerOrInfinity.
This patch renames toInteger to toIntegerOrInfinity in JSC.

  • builtins/ArrayPrototype.js:

(fill):
(includes):
(copyWithin):
(flat):
(at):

  • builtins/FunctionPrototype.js:

(bind):

  • builtins/GlobalOperations.js:

(globalPrivate.toIntegerOrInfinity):
(globalPrivate.toLength):
(globalPrivate.toInteger): Deleted.

  • builtins/RegExpPrototype.js:

(overriddenName.string_appeared_here.replace):

  • builtins/StringPrototype.js:

(repeat):
(at):

  • builtins/TypedArrayPrototype.js:

(subarray):
(at):

  • inspector/JSInjectedScriptHost.cpp:

(Inspector::JSInjectedScriptHost::weakMapEntries):
(Inspector::JSInjectedScriptHost::weakSetEntries):
(Inspector::JSInjectedScriptHost::iteratorEntries):

  • runtime/ArrayPrototype.cpp:

(JSC::argumentClampedIndexFromStartOrEnd):
(JSC::JSC_DEFINE_HOST_FUNCTION):

  • runtime/IntlSegments.cpp:

(JSC::IntlSegments::containing):

  • runtime/JSCJSValue.cpp:

(JSC::JSValue::toIntegerOrInfinity const):
(JSC::JSValue::toLength const):
(JSC::JSValue::toInteger const): Deleted.

  • runtime/JSCJSValue.h:
  • runtime/JSCJSValueInlines.h:
  • runtime/JSGenericTypedArrayViewPrototypeFunctions.h:

(JSC::argumentClampedIndexFromStartOrEnd):
(JSC::genericTypedArrayViewProtoFuncSet):
(JSC::genericTypedArrayViewProtoFuncLastIndexOf):

  • runtime/NumberPrototype.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):
(JSC::extractToStringRadixArgument):

  • runtime/RegExpObjectInlines.h:

(JSC::getRegExpObjectLastIndexAsUnsigned):

  • runtime/StringPrototype.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):
(JSC::stringIndexOfImpl):
(JSC::stringIncludesImpl):

Feb 6, 2021:

10:08 PM Changeset in webkit [272470] by Wenson Hsieh
  • 4 edits in trunk/Source/WebKit

[macOS] Add support for accessibility image extraction
https://bugs.webkit.org/show_bug.cgi?id=221262
<rdar://problem/70744978>

Reviewed by Devin Rousso.

Add WebKitAdditions support for image extraction.

  • UIProcess/Cocoa/WebViewImpl.h:
  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::requestImageExtraction): Deleted.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::requestImageExtraction):

10:02 PM Changeset in webkit [272469] by commit-queue@webkit.org
  • 33 edits in trunk

Non-special URLs should have an opaque origin
https://bugs.webkit.org/show_bug.cgi?id=162254

Patch by Alex Christensen <achristensen@webkit.org> on 2021-02-06
Reviewed by Geoff Garen.

LayoutTests/imported/w3c:

  • web-platform-tests/url/a-element-origin-expected.txt:
  • web-platform-tests/url/a-element-origin-xhtml-expected.txt:
  • web-platform-tests/url/url-origin-expected.txt:

Source/WebCore:

This matches the behavior of Chrome, Firefox, and the URL specification.
In order to maintain compatibility with existing apps, we do a linkedOnOrAfter check for the new behavior.
In order to allow things like web extensions to continue to work, we allow non-null origins for schemes
for which a WKURLSchemeHandler has been registered. We learned this lesson 4 years ago when we tried this change.
This also makes sense conceptually because those schemes will be handled by the containing application,
so they can be an "origin" for a page.

  • page/SecurityOrigin.cpp:

(WebCore::shouldTreatAsUniqueOrigin):

  • platform/LegacySchemeRegistry.cpp:

(WebCore::schemesHandledBySchemeHandler):
(WebCore::LegacySchemeRegistry::registerURLSchemeAsHandledBySchemeHandler):
(WebCore::LegacySchemeRegistry::schemeIsHandledBySchemeHandler):

  • platform/LegacySchemeRegistry.h:
  • platform/cocoa/VersionChecks.h:

Source/WebInspectorUI:

  • UserInterface/Base/URLUtilities.js:

(parseURL):

Source/WebKit:

I needed to change API::SecurityOrigin from wrapping a WebCore::SecurityOrigin to wrapping a WebCore::SecurityOriginData,
otherwise it would often be null and we want it to be not null in the UI process.

  • Shared/API/APISecurityOrigin.h:

(API::SecurityOrigin::createFromString):
(API::SecurityOrigin::create):
(API::SecurityOrigin::securityOrigin const):
(API::SecurityOrigin::SecurityOrigin):

  • Shared/API/c/WKSecurityOriginRef.cpp:

(WKSecurityOriginCopyDatabaseIdentifier):
(WKSecurityOriginCopyProtocol):
(WKSecurityOriginCopyHost):
(WKSecurityOriginGetPort):

  • UIProcess/API/C/WKWebsiteDataStoreRef.cpp:

(WKWebsiteDataStoreRemoveFetchCacheForOrigin):

  • UIProcess/API/Cocoa/WKSecurityOrigin.mm:

(-[WKSecurityOrigin protocol]):
(-[WKSecurityOrigin host]):
(-[WKSecurityOrigin port]):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::registerURLSchemeHandler):

Source/WTF:

  • wtf/URL.h:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-1.mm:
9:08 PM Changeset in webkit [272468] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][IFC] Incorrect line box height when line-height is set on an empty root inline box
https://bugs.webkit.org/show_bug.cgi?id=221522

Reviewed by Antti Koivisto.

The root inline box with non-initial line height value stretches the line box even when root has no content.

e.g. <div style="line-height: 100px;"><span>content</span></div>
This content produces a ~100px tall line box.

  • layout/inlineformatting/InlineFormattingContextQuirks.cpp:

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

7:28 PM Changeset in webkit [272467] by Wenson Hsieh
  • 10 edits
    1 add in trunk/Source/WebCore

Introduce image overlays and add UA shadow root support for image extraction
https://bugs.webkit.org/show_bug.cgi?id=221236

Reviewed by Ryosuke Niwa.

This patch restores some of the logic previously introduced in r164457 (and removed with r272117) to render
service button cells over images, and additionally renames and repurposes it for image extraction, a new
accessibility feature. See comments below for more details.

  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources.make:
  • WebCore.xcodeproj/project.pbxproj:
  • html/HTMLElement.cpp:

(WebCore::imageOverlayElementIdentifier):
(WebCore::HTMLElement::hasImageOverlay const):

Add a helper to determine whether or not an element's UA shadow root has an image overlay element. This is
consulted in the constructor of RenderImage.

(WebCore::HTMLElement::updateWithImageExtractionResult):

Add a helper method to install image extraction content in the shadow root of an element, given an
ImageExtractionResult. This consists of an image overlay container (a relatively positioned div), which then
contains some number of absolutely positioned child div elements. Additionally load the image overlay
stylesheet as text within a style element when creating the UA shadow root.

  • html/HTMLElement.h:
  • html/shadow/imageOverlay.css: Added.

(div#image-overlay):
(div.image-overlay-text):

Add a new UA stylesheet for the image overlay shadow DOM subtree. The overlay contains a number of absolutely
positoned div elements, which are positioned inside the overlay element using using CSS transforms.

  • rendering/RenderImage.cpp:

(WebCore::RenderImage::RenderImage):
(WebCore::RenderImage::canHaveChildren const):

Return true if we require children in the shadow root (for either media controls, or this new image overlay).

(WebCore::RenderImage::layout):
(WebCore::RenderImage::layoutShadowContent):
(WebCore::RenderImage::layoutShadowControls): Deleted.

Rename layoutShadowControls to layoutShadowContent, and allow it to support both the "shadow controls" case
(i.e. RenderMedia) and the "image extraction content" case. Additonally, remove the check for
shadowControlsNeedCustomLayoutMetrics() when setting child renderer width/height. This is currently only used
for laying out media controls in RenderMedia, but we'll need it now for all RenderImages.

  • rendering/RenderImage.h:

(WebCore::RenderImage::setHasImageOverlay):
(WebCore::RenderImage::hasShadowContent const):

Add a helper method to return whether or not the RenderImage should expect shadow root content. This is true
for both media controls (m_hasShadowControls) and for the new image overlay content (m_hasImageOverlay).

(WebCore::RenderImage::shadowControlsNeedCustomLayoutMetrics const): Deleted.

  • rendering/RenderMedia.h:

See RenderImage::layoutShadowControls above.

7:13 PM Changeset in webkit [272466] by Alexey Shvayka
  • 4 edits
    1 add in trunk

REGRESSION (r264574): Unchecked JS exception in validateAndApplyPropertyDescriptor()
https://bugs.webkit.org/show_bug.cgi?id=221494

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/redefine-property-same-value-exception-check.js: Added.

Source/JavaScriptCore:

This patch brings back exception check after sameValue(), which was accidentally
removed in r264574. sameValue() may throw OOM when comparing rope strings.

Even though this case was unreachable because of PropertyDescriptor::equalTo()
fast path, we should maintain consistent exception checks.

For the same reason, sameValue() in protoFuncFinalizationRegistryRegister() is
replaced with pointer comparison, which is safe & unobservable because target
is a known JSObject.

  • runtime/FinalizationRegistryPrototype.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):

  • runtime/JSObject.cpp:

(JSC::validateAndApplyPropertyDescriptor):

6:02 PM Changeset in webkit [272465] by Lauro Moura
  • 2 edits in trunk/LayoutTests

[WPE] Gardening mathml failures

Unreviewed test gardening.

  • platform/wpe/TestExpectations:
4:10 PM Changeset in webkit [272464] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[build.webkit.org] Switch bot watchers dashboard to use new buildbot
https://bugs.webkit.org/show_bug.cgi?id=221493

Reviewed by Alexey Proskuryakov.

  • CISupport/build-webkit-org/public_html/dashboard/Scripts/WebKitBuildbot.js:

(WebKitBuildbot):

10:01 AM Changeset in webkit [272463] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][IFC] Continuation pre and post block inline boxes should not have both the start and end decorations of the original inline box
https://bugs.webkit.org/show_bug.cgi?id=221502

Reviewed by Antti Koivisto.

The generated inline boxes inside the pre/post block containers of a continuation "inherit" all the original styles e.g.

<span style="margin-left: 10px"><div></div></span>

We turn this into a continuation by constructing a set of pre and a post block containers.

(pre)Block container (anonymous)

Inline container (<span>)

Block container (<div></div>)
(post)Block container (anonymous)

Inline container (</span>)

Now the border box of the inline container inside the post block container should not have a 1px margin offset. Only the inline container in the pre block should "inherit" the left margin from the original <span>.
Legacy line layout solves this issue by calling hasInlineDirectionBordersPaddingOrMargin() during layout to decide which side of the decorations to apply,
but these inline boxes should not have those start/end values the first place.
(see fast/inline/inline-with-empty-inline-continuations.html)

  • layout/integration/LayoutIntegrationBoxTree.cpp:

(WebCore::LayoutIntegration::BoxTree::buildTree):

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::updateInlineBoxDimensions):

8:01 AM Changeset in webkit [272462] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC][Quirk] Keep the root inline box baseline anchored at 0
https://bugs.webkit.org/show_bug.cgi?id=221517

Reviewed by Antti Koivisto.

In quirks mode when the root inline box has no content, a negative baseline value should not push the root baseline upwards.
e.g.
<div><span style="vertical-align: -300px">this text should be ~300px while the root baseline is at 0px</span></div>
However an inline box with negative ascent (e.g. large enough negative margin-top value) can pull the root inline box up.

  • layout/inlineformatting/InlineFormattingContextGeometry.cpp:

(WebCore::Layout::LineBoxBuilder::computeLineBoxHeightAndAlignInlineLevelBoxesVertically):

7:22 AM Changeset in webkit [272461] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

ASSERT NOT REACHED in WebCore::Layout::LineBuilder::candidateContentForLine
https://bugs.webkit.org/show_bug.cgi?id=221492
<rdar://problem/74032439>

Reviewed by Antti Koivisto.

Floats are not part of the inline content and they should be ignored while checking if the continuous candidate content ends in a wrap opportunity.

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::candidateContentForLine):

Feb 5, 2021:

11:51 PM Changeset in webkit [272460] by Antti Koivisto
  • 2 edits in trunk/LayoutTests

Remove the Timer from Style::Scope
https://bugs.webkit.org/show_bug.cgi?id=221221
<rdar://problem/73918532>

Unreviewed followup.

  • platform/mac/TestExpectations:

imported/w3c/web-platform-tests/css/css-scoping/css-scoping-shadow-dynamic-remove-style-detached.html
should no longer be flaky on Mac

11:34 PM Changeset in webkit [272459] by don.olmstead@sony.com
  • 2 edits in trunk

[MSVC] Catalog warnings
https://bugs.webkit.org/show_bug.cgi?id=199248

Unreviewed build fix.

Missed a warning generated when building AppleWin.

  • Source/cmake/OptionsMSVC.cmake:
9:33 PM Changeset in webkit [272458] by commit-queue@webkit.org
  • 19 edits
    8 adds in trunk/LayoutTests

Update LayoutTests/imported/w3c/web-platform-tests/shadow-dom to the upstream
https://bugs.webkit.org/show_bug.cgi?id=220768

Patch by Tetsuharu Ohzeki <Tetsuharu Ohzeki> on 2021-02-05
Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

This imported https://github.com/web-platform-tests/wpt/tree/875f4c73ec1122cd0ea05580f6b56fda0ef71cc7

  • web-platform-tests/shadow-dom/HTMLSlotElement-interface.html:
  • web-platform-tests/shadow-dom/ShadowRoot-interface.html:
  • web-platform-tests/shadow-dom/declarative/declarative-shadow-dom-attachment.tentative.html:
  • web-platform-tests/shadow-dom/declarative/declarative-shadow-dom-basic.tentative-expected.txt:
  • web-platform-tests/shadow-dom/declarative/declarative-shadow-dom-basic.tentative.html:
  • web-platform-tests/shadow-dom/declarative/declarative-shadow-dom-opt-in.tentative.html: Added.
  • web-platform-tests/shadow-dom/declarative/getinnerhtml.tentative-expected.txt:
  • web-platform-tests/shadow-dom/declarative/getinnerhtml.tentative.html:
  • web-platform-tests/shadow-dom/declarative/support/declarative-child-frame.html: Added.
  • web-platform-tests/shadow-dom/declarative/support/helpers.js: Added.

(setInnerHTML):

  • web-platform-tests/shadow-dom/declarative/support/w3c-import.log: Added.
  • web-platform-tests/shadow-dom/declarative/w3c-import.log:
  • web-platform-tests/shadow-dom/focus/w3c-import.log:
  • web-platform-tests/shadow-dom/nested-slot-remove-crash.html: Added.
  • web-platform-tests/shadow-dom/slotchange-expected.txt:
  • web-platform-tests/shadow-dom/slotchange.html:
  • web-platform-tests/shadow-dom/slots-imperative-api-slotchange.tentative-expected.txt:
  • web-platform-tests/shadow-dom/slots-imperative-api-slotchange.tentative.html:
  • web-platform-tests/shadow-dom/slots-imperative-slot-api.tentative.html:
  • web-platform-tests/shadow-dom/untriaged/events/event-dispatch/test-002.html:
  • web-platform-tests/shadow-dom/w3c-import.log:

LayoutTests:

  • platform/ios/TestExpectations:
9:09 PM Changeset in webkit [272457] by don.olmstead@sony.com
  • 2 edits in trunk

[MSVC] Catalog warnings
https://bugs.webkit.org/show_bug.cgi?id=199248

Reviewed by Fujii Hironori.

Catalog all the MSVC warnings providing the message and a link to documentation
for the warning. Some warnings are noted as being against the style guide so they
won't be addressed. All other warnings could potentially be fixed in the codebase.

  • Source/cmake/OptionsMSVC.cmake:
8:06 PM Changeset in webkit [272456] by eric.carlson@apple.com
  • 2 edits in trunk/Tools

[Mac] Disable MediaSessionTest API tests
https://bugs.webkit.org/show_bug.cgi?id=221514
<rdar://74048912>

Unreviewed, disable tests that don't play well with other media tests running
at the same time.

  • TestWebKitAPI/Tests/WebKitCocoa/MediaSession.mm:

(TestWebKitAPI::TEST_F):

6:48 PM Changeset in webkit [272455] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[ews] Do not display identifier in status bubble tooltips
https://bugs.webkit.org/show_bug.cgi?id=221513

Unreviewed infrastucture fix.

  • CISupport/ews-app/ews/views/statusbubble.py:
4:56 PM Changeset in webkit [272454] by Russell Epstein
  • 1 copy in tags/Safari-612.1.2.4

Tag Safari-612.1.2.4.

4:49 PM Changeset in webkit [272453] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Deploy WTFMove in the constructor for AutofillElements
https://bugs.webkit.org/show_bug.cgi?id=221507

Patch by Ricky Mondello <Ricky Mondello> on 2021-02-05
Reviewed by Wenson Hsieh.

  • editing/cocoa/AutofillElements.cpp:

(WebCore::AutofillElements::AutofillElements):

4:44 PM Changeset in webkit [272452] by Russell Epstein
  • 8 edits in branches/safari-612.1.2-branch/Source

Versioning.

WebKit-7612.1.2.4

4:43 PM Changeset in webkit [272451] by commit-queue@webkit.org
  • 7 edits in trunk

REGRESSION(r272337): crash under WebCore::SpeechRecognizer::setInactive()
https://bugs.webkit.org/show_bug.cgi?id=221451

Patch by Sihui Liu <sihui_liu@appe.com> on 2021-02-05
Reviewed by Youenn Fablet.

Source/WebCore:

Stop sending final update in SpeechRecognizer's destructor and send it in prepareForDestruction() instead, so
that no update will be sent for a destroyed SpeechRecognizer.

API test: WebKit2.SpeechRecognitionWebProcessCrash.

  • Modules/speech/SpeechRecognizer.cpp:

(WebCore::SpeechRecognizer::prepareForDestruction):
(WebCore::SpeechRecognizer::~SpeechRecognizer): Deleted.

  • Modules/speech/SpeechRecognizer.h:

Source/WebKit:

  • UIProcess/SpeechRecognitionServer.cpp:

(WebKit::SpeechRecognitionServer::handleRequest):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/SpeechRecognition.mm:

(TestWebKitAPI::TEST):

4:16 PM Changeset in webkit [272450] by Darin Adler
  • 2 edits in trunk/Source/WebKit

Add missing null checks to decoding functions involving RetainPtr
https://bugs.webkit.org/show_bug.cgi?id=221441

Reviewed by Anders Carlsson.

  • Shared/mac/WebCoreArgumentCodersMac.mm:

(IPC::ArgumentCoder<WebCore::ResourceRequest>::decodePlatformData): Fail if the dictionary
is null: the encoder never encodes a null dictionary.
(IPC::ArgumentCoder<WebCore::CertificateInfo>::decode): Fail if the SecTrustRef is null:
the encoder never encodes a null SecTrustRef. Fail if the certificate chain array is null:
the encoder never encodes a null CFArrayRef.
(IPC::decodeNSError): Return a RetainPtr instead of using a bool return value and a
RetainPtr out argument. Fail if the user info dictionary is null: the encoder never encodes
a null user info dictionary.
(IPC::ArgumentCoder<WebCore::ResourceError>::decodePlatformData): Updated for the change
to the interface of decodeNSError.
(IPC::ArgumentCoder<WebCore::ContentFilterUnblockHandler>::decode): Fail if the CFDataRef
is null: the encoder never encodes a null CFDataRef.

4:07 PM Changeset in webkit [272449] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit

REGRESSION (r271815): [macOS] /dev/dtracehelper is blocked on customer builds, even with SIP disabled
https://bugs.webkit.org/show_bug.cgi?id=221501
<rdar://73893768>

Reviewed by Per Arne Vollan.

Instead of requiring apple-internal to use /dev/dtracehelper, allow on systems where
SIP has been deactivated.

  • WebProcess/com.apple.WebProcess.sb.in: Use CSR filter to gate access to /dev/dtracehelper
3:32 PM Changeset in webkit [272448] by commit-queue@webkit.org
  • 4 edits in trunk

Allow Password AutoFill in more text field configurations

https://bugs.webkit.org/show_bug.cgi?id=221429
rdar://problem/73899947

Patch by Ricky Mondello <Ricky Mondello> on 2021-02-05
Reviewed by Wenson Hsieh.

Extend where we'll offer Password AutoFill in web views. Allow all type=password fields. Allow in situations
with back-to-back type=password fields, but only attempt to fill the second password field when it's empty,
to flexibly accomodate account creation and password change scenarios.

I did a round of manual testing with the related existing OS feature.

  • editing/cocoa/AutofillElements.cpp:

(WebCore::AutofillElements::AutofillElements): Add secondPassword to initializer.
(WebCore::AutofillElements::computeAutofillElements): Change the algorithm as described above.
(WebCore::AutofillElements::autofill): Also fill the secondPassword, if applicable.

  • editing/cocoa/AutofillElements.h: Change constructor and add member variable.
3:26 PM Changeset in webkit [272447] by Alan Coon
  • 1 copy in tags/Safari-612.1.2.3

Tag Safari-612.1.2.3.

3:23 PM Changeset in webkit [272446] by Alan Coon
  • 8 edits in branches/safari-612.1.2-branch/Source

Versioning.

WebKit-7612.1.2.3

3:18 PM Changeset in webkit [272445] by eric.carlson@apple.com
  • 31 edits
    2 adds in trunk

[Mac] Connect MediaSession with MediaRemote and NowPlaying
https://bugs.webkit.org/show_bug.cgi?id=221431
<rdar://problem/74000363>

Reviewed by Jer Noble.

Source/WebCore:

Route all remote control commands to navigator.mediaSession when it has any
registered action handlers, and pass navigator.mediaSession.metadata to NowPlaying.

Tested with new API tests in Tools/TestWebKitAPI/Tests/WebKitCocoa/MediaSession.mm.

  • Modules/mediasession/MediaImage.h:

(WebCore::MediaImage::encode const):
(WebCore::MediaImage::decode):

  • Modules/mediasession/MediaMetadata.cpp:

(WebCore::MediaMetadata::setTitle):
(WebCore::MediaMetadata::setArtist):
(WebCore::MediaMetadata::setAlbum):
(WebCore::MediaMetadata::setArtwork):

  • Modules/mediasession/MediaMetadata.h:

(WebCore::MediaMetadata::title const):
(WebCore::MediaMetadata::artist const):
(WebCore::MediaMetadata::album const):
(WebCore::MediaMetadata::artwork const):
(WebCore::MediaMetadata::metadata const):

  • Modules/mediasession/MediaMetadataInit.h:

(WebCore::MediaMetadataInit::encode const):
(WebCore::MediaMetadataInit::decode):

  • Modules/mediasession/MediaSession.cpp:

(WebCore::nextLogIdentifier):
(WebCore::logChannel):
(WebCore::logClassName):
(WebCore::platformCommandForMediaSessionAction):
(WebCore::MediaSession::MediaSession):
(WebCore::MediaSession::setMetadata):
(WebCore::MediaSession::setPlaybackState):
(WebCore::MediaSession::setActionHandler):
(WebCore::MediaSession::setPositionState):

  • Modules/mediasession/MediaSession.h:

(WebCore::MediaSession::hasActiveActionHandlers const):
(WebCore::MediaSession::logger const):
(WebCore::MediaSession::logIdentifier const):
(WTF::LogArgument<WebCore::MediaSessionPlaybackState>::toString):
(WTF::LogArgument<WebCore::MediaSessionAction>::toString):

  • WebCore.xcodeproj/project.pbxproj:
  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::didReceiveRemoteControlCommand):

  • html/MediaElementSession.cpp:

(WebCore::MediaElementSession::didReceiveRemoteControlCommand):
(WebCore::MediaElementSession::nowPlayingInfo const):

  • html/MediaElementSession.h:
  • page/ChromeClient.h:
  • platform/RemoteCommandListener.cpp:

(WebCore::RemoteCommandListener::scheduleSupportedCommandsUpdate):
(WebCore::RemoteCommandListener::addSupportedCommand):
(WebCore::RemoteCommandListener::removeSupportedCommand):

  • platform/RemoteCommandListener.h:
  • platform/audio/NowPlayingInfo.h:

(WebCore::NowPlayingInfo::decode):

  • platform/audio/PlatformMediaSession.cpp:

(WebCore::convertEnumerationToString):

  • platform/audio/PlatformMediaSession.h:
  • platform/audio/PlatformMediaSessionManager.h:

(WebCore::PlatformMediaSessionManager::addSupportedCommand):
(WebCore::PlatformMediaSessionManager::removeSupportedCommand):

  • platform/audio/cocoa/MediaSessionManagerCocoa.h:
  • platform/audio/cocoa/MediaSessionManagerCocoa.mm:

(WebCore::MediaSessionManagerCocoa::scheduleSessionStatusUpdate):
(WebCore::MediaSessionManagerCocoa::sessionCanProduceAudioChanged):
(WebCore::MediaSessionManagerCocoa::addSupportedCommand):
(WebCore::MediaSessionManagerCocoa::removeSupportedCommand):
(WebCore::MediaSessionManagerCocoa::setNowPlayingInfo):

  • platform/mac/MediaRemoteSoftLink.cpp:
  • platform/mac/MediaRemoteSoftLink.h:
  • platform/mac/RemoteCommandListenerMac.h:
  • platform/mac/RemoteCommandListenerMac.mm:

(WebCore::mediaRemoteCommandForPlatformCommand):
(WebCore::RemoteCommandListenerMac::defaultCommands):
(WebCore::isSeekCommand):
(WebCore::RemoteCommandListenerMac::updateSupportedCommands):
(WebCore::RemoteCommandListenerMac::RemoteCommandListenerMac):

Source/WebCore/PAL:

  • pal/spi/mac/MediaRemoteSPI.h:

Source/WebKit:

Add a private preference so the new MediaSession API test can enable the feature.

  • UIProcess/API/Cocoa/WKPreferences.mm:

(-[WKPreferences _mediaSessionEnabled]):
(-[WKPreferences _setMediaSessionEnabled:]):

  • UIProcess/API/Cocoa/WKPreferencesPrivate.h:

Tools:

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

(TestWebKitAPI::MediaSessionTest::webView):
(TestWebKitAPI::MediaSessionTest::webViewPid):
(TestWebKitAPI::MediaSessionTest::getNowPlayingClient):
(TestWebKitAPI::MediaSessionTest::getNowPlayingClientPid):
(TestWebKitAPI::MediaSessionTest::loadPageAndBecomeNowPlaying):
(TestWebKitAPI::MediaSessionTest::runScriptWithUserGesture):
(TestWebKitAPI::MediaSessionTest::play):
(TestWebKitAPI::MediaSessionTest::pause):
(TestWebKitAPI::MediaSessionTest::sendMediaRemoteCommand):
(TestWebKitAPI::MediaSessionTest::sendMediaRemoteSeekCommand):
(TestWebKitAPI::MediaSessionTest::listenForEventMessages):
(TestWebKitAPI::MediaSessionTest::eventListenerWasCalled):
(TestWebKitAPI::MediaSessionTest::waitForEventListenerToBeCalled):
(TestWebKitAPI::MediaSessionTest::listenForSessionHandlerMessages):
(TestWebKitAPI::MediaSessionTest::sessionHandlerWasCalled):
(TestWebKitAPI::MediaSessionTest::waitForSessionHandlerToBeCalled):
(TestWebKitAPI::MediaSessionTest::getSupportedCommands):
(TestWebKitAPI::TEST_F):

  • TestWebKitAPI/Tests/WebKitCocoa/media-remote.html: Added.
3:09 PM Changeset in webkit [272444] by Alan Coon
  • 1 copy in tags/Safari-612.1.2.2

Tag Safari-612.1.2.2.

3:06 PM Changeset in webkit [272443] by Russell Epstein
  • 1 copy in tags/Safari-611.1.14

Tag Safari-611.1.14.

3:01 PM Changeset in webkit [272442] by Alan Coon
  • 6 edits
    1 add in branches/safari-612.1.2-branch/Source/WebCore

Cherry-pick r272377. rdar://problem/73989711

Process LocalizableAdditions string file correctly.
https://bugs.webkit.org/show_bug.cgi?id=221358

Reviewed by Tim Horton.

  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/scripts/preprocessor.pm: (applyPreprocessor):

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

2:52 PM Changeset in webkit [272441] by Alan Coon
  • 8 edits in branches/safari-612.1.2-branch/Source

Versioning.

WebKit-7612.1.2.2

2:44 PM Changeset in webkit [272440] by Lauro Moura
  • 13 edits in trunk/LayoutTests

[GLIB] Rebaseline and gardening commong gtk/wpe failures.

Unreviewed test gardening.

  • platform/glib/TestExpectations:

Rebaselines after r272100

  • platform/glib/tables/mozilla/bugs/bug106795-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug16252-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug20579-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug82946-2-expected.txt:
  • platform/wpe/tables/mozilla/bugs/bug16252-expected.txt:
  • platform/wpe/tables/mozilla/bugs/bug20579-expected.txt:
  • platform/wpe/tables/mozilla/bugs/bug82946-2-expected.txt:

Rebaseline after r272035

  • platform/gtk/imported/w3c/web-platform-tests/css/cssom/cssstyledeclaration-csstext-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/css/cssom/cssstyledeclaration-csstext-expected.txt:

Rebaseline after r271110

  • platform/gtk/fast/block/basic/014-expected.txt:
  • platform/wpe/fast/block/basic/014-expected.txt:
2:40 PM Changeset in webkit [272439] by jer.noble@apple.com
  • 3 edits in trunk/Source/WebCore

[Cocoa] CRASH in MediaPlayerPrivateMediaSourceAVFObjC::removeAudioRenderer()
https://bugs.webkit.org/show_bug.cgi?id=221490
<rdar://73966316>

Reviewed by Eric Carlson.

Add null-checks to every use of player() in SourceBufferPrivateAVFObjC.

  • platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.h:
  • platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:

(WebCore::SourceBufferPrivateAVFObjC::didParseInitializationData):
(WebCore::SourceBufferPrivateAVFObjC::willProvideContentKeyRequestInitializationDataForTrackID):
(WebCore::SourceBufferPrivateAVFObjC::didProvideContentKeyRequestInitializationDataForTrackID):
(WebCore::SourceBufferPrivateAVFObjC::appendCompleted):
(WebCore::SourceBufferPrivateAVFObjC::destroyParser):
(WebCore::SourceBufferPrivateAVFObjC::destroyRenderers):
(WebCore::SourceBufferPrivateAVFObjC::readyState const):
(WebCore::SourceBufferPrivateAVFObjC::setReadyState):
(WebCore::SourceBufferPrivateAVFObjC::trackDidChangeEnabled):
(WebCore::SourceBufferPrivateAVFObjC::flushVideo):
(WebCore::SourceBufferPrivateAVFObjC::enqueueSample):
(WebCore::SourceBufferPrivateAVFObjC::bufferWasConsumed):
(WebCore::SourceBufferPrivateAVFObjC::setDecompressionSession):
(WebCore::SourceBufferPrivateAVFObjC::player const):

2:31 PM Changeset in webkit [272438] by Devin Rousso
  • 5 edits in trunk/Source/WebCore

[macOS] REGRESSION(r272352): missing track for videos that haven't fully loaded
https://bugs.webkit.org/show_bug.cgi?id=221500

Reviewed by Eric Carlson.

r272352 removed the .track.fill that was used as a "background" for the slider. For videos
that aren't fully loaded and are buffering, that "background" is necessary to indicate where
the slider is as the .track.secondary only represents what's been buffered not the entire
length of the video/slider.

  • Modules/modern-media-controls/controls/slider.js:

(Slider.prototype.commit):

  • Modules/modern-media-controls/controls/slider.css:

(.slider > .custom-slider > .fill.primary): Added.
(.slider > .custom-slider > .fill.track): Added.
(.slider > .custom-slider > .fill.secondary): Added.
(.slider > .custom-slider > .primary): Deleted.
(.slider > .custom-slider > .secondary): Deleted.
Add back the background fill track removed in r272352, but adjust it so that it only draws
after the knob so that on macOS it doesn't draw in the space around the knob.

  • Modules/modern-media-controls/controls/macos-fullscreen-media-controls.js:

(MacOSFullscreenMediaControls):

  • Modules/modern-media-controls/controls/macos-inline-media-controls.js:

(MacOSInlineMediaControls):
Remove the secondaryValue calls since the background fill track has been added back.

1:16 PM Changeset in webkit [272437] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

[BigSur WK1] media/media-source/media-source-webm-append-buffer-after-abort.html is consistently failing
https://bugs.webkit.org/show_bug.cgi?id=221369

Unreviewed test gardening.

Patch by Amir Mark Jr <Amir Mark Jr.> on 2021-02-05

  • platform/mac-wk1/TestExpectations: Mark as skip because test is not supported on wk1
1:08 PM Changeset in webkit [272436] by weinig@apple.com
  • 13 edits in trunk

Generalize color conversion code to reduce number of overloads required
https://bugs.webkit.org/show_bug.cgi?id=221443

Reviewed by Darin Adler.

Source/WebCore:

Replace overloaded named conversion functions (e.g. toSRGBA(), toLab(), etc.)
with template specializion of a new ColorConversion struct:

template<> struct ColorConversion<Output, Input> {

Output convert(const Input& color) { ... }

};

which is accessed via a new generic convertColor<ColorType>() function.

This allows for a few improvements:

  • Removes the need for each color type to define an identity conversion.
  • Removes the need for each color type to define an generic conversion.
  • Allows integration with component type conversion so a call like

convertTo<SRGBA<uint8_t>>(toSRGBA(hsla))

can now be written just as

convertColor<SRGBA<uint8_t>>(hsla)

This also provides a path forward for more optimizations / simplifications
since we can now reason about conversion based purely on types.

  • css/parser/CSSPropertyParserHelpers.cpp:

(WebCore::CSSPropertyParserHelpers::parseRGBParameters):
(WebCore::CSSPropertyParserHelpers::parseHSLParameters):
(WebCore::CSSPropertyParserHelpers::parseHWBParameters):
(WebCore::CSSPropertyParserHelpers::parseLabParameters):
(WebCore::CSSPropertyParserHelpers::parseLCHParameters):
(WebCore::CSSPropertyParserHelpers::parseColorFunctionParameters):
Switch to convertColor<> and replace some unnecessary type with auto.

  • editing/cocoa/DataDetection.mm:

(WebCore::DataDetection::detectContentInRange):
Adopt Color::toColorTypeLossy<> and convertColor<>.

  • platform/graphics/Color.cpp:

(WebCore::Color::invertedColorWithAlpha const):
Adopt convertColor<>.

  • platform/graphics/Color.h:

(WebCore::Color::toSRGBALossy const):
(WebCore::Color::toColorTypeLossy const):
Add generic conversion function toColorTypeLossy<>() and re-implement
toSRGBALossy<>() using it.

  • platform/graphics/ColorConversion.cpp:
  • platform/graphics/ColorConversion.h:

Replace function overloads with explicit specialization of the new ColorConversion
struct. Replace identity functions and fallback functions with a single non-specialized
ColorConversion which uses constexpr to handle the identity case, conversion to/from
SRGBA<uint8_t> (the only non-float color) and the fallback case.

  • platform/graphics/ColorUtilities.cpp:

(WebCore::luminance):
Adopt convertColor<>.

  • platform/graphics/cg/ColorCG.cpp:

(WebCore::roundAndClampToSRGBALossy):
(WebCore::leakCGColor):
Adopt convertColor<>.

  • platform/graphics/filters/FELighting.cpp:

(WebCore::FELighting::drawLighting):
Adopt toColorTypeLossy<>.

  • rendering/RenderTheme.cpp:

(WebCore::RenderTheme::datePlaceholderTextColor const):
Adopt Color::toColorTypeLossy<> and convertColor<>.

Tools:

  • TestWebKitAPI/Tests/WebCore/ColorTests.cpp:

(TestWebKitAPI::TEST):
Update tests to use convertColor<>.

12:48 PM Changeset in webkit [272435] by Antti Koivisto
  • 4 edits
    2 adds in trunk

[LFC][Integration] Hit testing broken for descendants of pointer-events:none boxes
https://bugs.webkit.org/show_bug.cgi?id=221460

Reviewed by Zalan Bujtas.

Source/WebCore:

Descendants of pointer-events:none boxes may still be hittestable if they override the value.
LFC integration hit testing code didn't take this into account.

Test: fast/events/hittest-pointer-event-none-descendants.html

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::hitTest):

Replaced and inline-block boxes do the visibility/pointer-events test themselves.
This code just needs to take care of text boxes.

LayoutTests:

  • fast/events/hittest-pointer-event-none-descendants-expected.html: Added.
  • fast/events/hittest-pointer-event-none-descendants.html: Added.
12:27 PM Changeset in webkit [272434] by youenn@apple.com
  • 15 edits in trunk

Enable audio capture for speech recognition in GPUProcess
https://bugs.webkit.org/show_bug.cgi?id=221457

Reviewed by Eric Carlson.

Source/WebCore:

Add fake deviceId to play nice with capture ASSERTs.
Covered by updated tests.

  • Modules/speech/SpeechRecognitionCaptureSource.cpp:

(WebCore::SpeechRecognitionCaptureSource::createRealtimeMediaSource):

Source/WebKit:

Allow to create remote sources without any constraint.
To do so, we serialize through IPC a MediaConstraints with isValid = false and treat it as no constraint in capture process.

Make sure to send sandbox extensions and authorizations for GPUProcess to capture in case of speech recognition audio capture request.

In case of GPUProcess audio capture, send the request to capture to WebProcess like done for iOS.
WebProcess is then responsible to get audio samples from GPUProcess and forward them to UIProcess.
A future refactoring should move speech recognition to GPUProcess.

  • UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:

(WebKit::UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints):

  • UIProcess/UserMediaPermissionRequestManagerProxy.cpp:

(WebKit::UserMediaPermissionRequestManagerProxy::grantRequest):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::createRealtimeMediaSourceForSpeechRecognition):

  • WebProcess/Speech/SpeechRecognitionRealtimeMediaSourceManager.cpp:

(WebKit::SpeechRecognitionRealtimeMediaSourceManager::grantSandboxExtensions):
(WebKit::SpeechRecognitionRealtimeMediaSourceManager::createSource):

  • WebProcess/cocoa/RemoteRealtimeMediaSource.cpp:

(WebKit::RemoteRealtimeMediaSource::create):
(WebKit::RemoteRealtimeMediaSource::RemoteRealtimeMediaSource):
(WebKit::RemoteRealtimeMediaSource::createRemoteMediaSource):
(WebKit::RemoteRealtimeMediaSource::~RemoteRealtimeMediaSource):
(WebKit::RemoteRealtimeMediaSource::cloneVideoSource):
(WebKit::RemoteRealtimeMediaSource::gpuProcessConnectionDidClose):

  • WebProcess/cocoa/RemoteRealtimeMediaSource.h:
  • WebProcess/cocoa/UserMediaCaptureManager.cpp:

(WebKit::UserMediaCaptureManager::AudioFactory::createAudioCaptureSource):
(WebKit::UserMediaCaptureManager::VideoFactory::createVideoCaptureSource):
(WebKit::UserMediaCaptureManager::DisplayFactory::createDisplayCaptureSource):

LayoutTests:

  • fast/speechrecognition/ios/restart-recognition-after-stop.html:
  • fast/speechrecognition/ios/start-recognition-then-stop.html:
  • fast/speechrecognition/start-recognition-then-stop.html:
  • fast/speechrecognition/start-second-recognition.html:
12:18 PM Changeset in webkit [272433] by Patrick Angle
  • 18 edits
    2 adds in trunk

Web Inspector: Implement backend support for maintaining a list of Grid layout contexts
https://bugs.webkit.org/show_bug.cgi?id=221228

Reviewed by Devin Rousso.

Source/JavaScriptCore:

Added CSS.LayoutContextType property to DOM.Node and added CSS.nodeLayoutContextTypeChanged event.

  • inspector/protocol/CSS.json:
  • Added CSS.LayoutContextType type.
  • Added DOM.nodeLayoutContextTypeChanged event.
  • inspector/protocol/DOM.json:
  • Added layoutContextType property to DOM.Node type.

Source/WebCore:

Test: inspector/dom/layout-context.html

Implemented support for getting the layout context for grid nodes as part of the existing DOM.Node protocol
object as well as firing an event when the layout context type changes for a node.

  • dom/Element.cpp:

(WebCore::Element::didChangeRenderer):

  • Handle the underlying RenderObject changing.
  • dom/Element.h:
  • dom/Node.h:

(WebCore::Node::didChangeRenderer):

  • inspector/InspectorInstrumentation.cpp:

(WebCore::InspectorInstrumentation::nodeLayoutContextChangedImpl):

  • inspector/InspectorInstrumentation.h:

(WebCore::InspectorInstrumentation::nodeLayoutContextChanged):

  • Add instrumentation for layout context changes.
  • inspector/agents/InspectorCSSAgent.cpp:

(WebCore::InspectorCSSAgent::layoutContextTypeForRenderer):
(WebCore::InspectorCSSAgent::nodeLayoutContextTypeChanged):

  • Inform the frontend when a known node changes its layout context.
  • inspector/agents/InspectorCSSAgent.h:
  • inspector/agents/InspectorDOMAgent.cpp:

(WebCore::InspectorDOMAgent::buildObjectForNode):

  • Set the layout context for nodes that will be new to the frontend.
  • rendering/RenderObject.h:

(WebCore::Node::setRenderer):

Source/WebInspectorUI:

Added layoutContextType property to WI.DOMNode and listener for CSS.nodeLayoutContextTypeChanged event.

  • UserInterface/Controllers/DOMManager.js:

(WI.DOMManager.prototype.nodeLayoutContextTypeChanged):

  • When a node's layout context changes, update the WI.DOMNode
  • UserInterface/Models/DOMNode.js:

(WI.DOMNode):
(WI.DOMNode.prototype.get layoutContextType):
(WI.DOMNode.prototype.set layoutContextType):

  • Fire an event when the layout context type changes.
  • UserInterface/Protocol/CSSObserver.js:

(WI.CSSObserver.prototype.nodeLayoutContextTypeChanged):

  • Listen for the CSS.nodeLayoutContextTypeChanged event.

LayoutTests:

Added tests for CSS.nodeLayoutContextTypeChanged event and corresponding properties.

  • inspector/css/nodeLayoutContextTypeChanged-expected.txt: Added.
  • inspector/css/nodeLayoutContextTypeChanged.html: Added.
11:26 AM Changeset in webkit [272432] by Alan Coon
  • 1 copy in tags/Safari-612.1.2.1

Tag Safari-612.1.2.1.

11:13 AM Changeset in webkit [272431] by ysuzuki@apple.com
  • 2 edits in trunk/JSTests

Unreviewd, update test262/config.yaml

Tests are failing only in OSS build since OSS build is building WebKit with very old ICU headers.

  • test262/config.yaml:
11:08 AM Changeset in webkit [272430] by ysuzuki@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, follow-up change after r272428
https://bugs.webkit.org/show_bug.cgi?id=221454

isPropertyNameExcluded can invoke GC etc. Structure::forEachProperty can miss PropertyTable and Structure
reference when it is highly optimized, so that it can crash if GC happens in the middle of Structure::forEachProperty.

  1. Insert ensureStillAliveHere in Structure::forEachProperty to ensure liveness of PropertyTable
  2. We should not perform side-effectful operation including GC in Structure::forEachProperty. So we moved isPropertyNameExcluded.
  • runtime/StructureInlines.h:

(JSC::Structure::forEachProperty):

10:59 AM Changeset in webkit [272429] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

[GPUProcess] If the GPUProcess crashes during fullscreen playback, video pauses and exits fullscreen
https://bugs.webkit.org/show_bug.cgi?id=221485

Reviewed by Eric Carlson.

If the GPUProcess crashed during fullscreen playback, video would pause and exit fullscreen. This was suboptimal.
The video now just resumes playing while in fullscreen, just like we do when inline.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::mediaPlayerReloadAndResumePlaybackIfNeeded):

10:58 AM Changeset in webkit [272428] by ysuzuki@apple.com
  • 3 edits
    1 add in trunk

[JSC] globalFuncCopyDataProperties should not perform GC-sensitive operation in the middle of Structure::forEachProperty
https://bugs.webkit.org/show_bug.cgi?id=221454

Reviewed by Mark Lam.

JSTests:

  • stress/copy-data-properties-fast-path.js: Added.

(foo):

Source/JavaScriptCore:

isPropertyNameExcluded can invoke GC etc. And running Structure::forEachProperty
is fragile state against any side-effect including GC.
We should not perform GC-sensitive operation during Structure::forEachProperty.

  • runtime/JSGlobalObjectFunctions.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):

10:53 AM Changeset in webkit [272427] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

[GPU Process] Repopulate the TestExpectations file #2
https://bugs.webkit.org/show_bug.cgi?id=221446

Unreviewed test gardening.

Patch by Rini Patel <rini_patel@apple.com> on 2021-02-05

  • gpu-process/TestExpectations:
10:49 AM Changeset in webkit [272426] by youenn@apple.com
  • 5 edits
    2 deletes in trunk/LayoutTests

Remove GPUProcess flag in MediaRecorder tests
https://bugs.webkit.org/show_bug.cgi?id=221401

Reviewed by Eric Carlson.

Remove test that is the same as http/wpt/mediarecorder/MediaRecorder-AV-audio-video-dataavailable.html.

  • http/wpt/mediarecorder/MediaRecorder-AV-audio-video-dataavailable-gpuprocess-expected.txt: Removed.
  • http/wpt/mediarecorder/MediaRecorder-AV-audio-video-dataavailable-gpuprocess.html: Removed.
  • http/wpt/mediarecorder/MediaRecorder-AV-audio-video-dataavailable.html:
  • http/wpt/mediarecorder/pause-recording.html:

Increase timer to cope with added latency introduced by IPC messaging.

  • platform/mac-wk2/TestExpectations:
10:44 AM Changeset in webkit [272425] by Kate Cheney
  • 4 edits in trunk/Source/WebKit

ASSERTION FAILED: Completion handler should always be called under WebKit::VideoFullscreenManagerProxy::forEachSession
https://bugs.webkit.org/show_bug.cgi?id=221343
<rdar://problem/73939450>

Reviewed by Youenn Fablet.

If a client tries to exit fullscreen mode when there is no fullscreen
video present, we should call the completion handler immediately and
return.

Rename requestFullscreenModeWithCallback to requestCloseAllMediaPresentations
because the completion handler is only called when all media presentations
are closed. requestFullscreenModeWithCallback makes it seem like we
can use this function with other modes besides VideoFullscreenModeNone.

No new tests, this will fix a crashing iOS test.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView closeAllMediaPresentations:]):

  • UIProcess/Cocoa/VideoFullscreenManagerProxy.h:
  • UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:

(WebKit::VideoFullscreenModelContext::requestCloseAllMediaPresentations):
(WebKit::VideoFullscreenManagerProxy::requestCloseAllMediaPresentations):
(WebKit::VideoFullscreenModelContext::requestFullscreenModeWithCallback): Deleted.
(WebKit::VideoFullscreenManagerProxy::requestFullscreenModeWithCallback): Deleted.

10:40 AM Changeset in webkit [272424] by Russell Epstein
  • 8 edits in branches/safari-611-branch/Source

Versioning.

WebKit-7611.1.15

10:31 AM Changeset in webkit [272423] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

[ews] commit-queue should use commits.webkit.org url instead of trac url
https://bugs.webkit.org/show_bug.cgi?id=221476

Reviewed by Jonathan Bedard.

  • CISupport/ews-build/steps.py:

(PushCommitToWebKitRepo.url_for_revision):

  • CISupport/ews-build/steps_unittest.py:
10:27 AM Changeset in webkit [272422] by youenn@apple.com
  • 6 edits
    2 adds in trunk

Make sure click attribution is processed in case of redirected kept alive loads
https://bugs.webkit.org/show_bug.cgi?id=221453
<rdar://problem/70896640>

Reviewed by John Wilander.

Source/WebCore:

Test: http/tests/privateClickMeasurement/attribution-conversion-through-fetch-keepalive.html

  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::addSubresourceLoader):
Update assertion to cope with keep alive fetches which are similar to beacon/ping loads.

Source/WebKit:

  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::NetworkResourceLoader::continueWillSendRedirectedRequest):
Move the click attribution processing before kept alive check.

LayoutTests:

  • http/tests/privateClickMeasurement/attribution-conversion-through-fetch-keepalive-expected.txt: Added.
  • http/tests/privateClickMeasurement/attribution-conversion-through-fetch-keepalive.html: Added.
  • http/tests/privateClickMeasurement/resources/redirectToConversion.php:
10:12 AM Changeset in webkit [272421] by Darin Adler
  • 9 edits in trunk/Source/WebCore

StyleImage refinement to follow up recent changes
https://bugs.webkit.org/show_bug.cgi?id=221434

Reviewed by Sam Weinig.

  • rendering/style/FillLayer.cpp:

(WebCore::FillLayer::hasOpaqueImage const): Pass a reference.

  • rendering/style/StyleCachedImage.cpp:

(WebCore::StyleCachedImage::knownToBeOpaque const): Take a reference.

  • rendering/style/StyleCachedImage.h: Take a reference.
  • rendering/style/StyleGeneratedImage.cpp:

(WebCore::StyleGeneratedImage::imageSize const): Simplify using an early return.
Remove an unnnecessary redundant null check.
(WebCore::StyleGeneratedImage::knownToBeOpaque const): Take and pass a reference.

  • rendering/style/StyleGeneratedImage.h: Take a reference.
  • rendering/style/StyleImage.h: Take a reference.
  • rendering/style/StyleMultiImage.cpp:

(WebCore::StyleMultiImage::knownToBeOpaque const): Take a reference.

  • rendering/style/StyleMultiImage.h: Take a reference.
9:38 AM Changeset in webkit [272420] by Chris Dumez
  • 2 edits in trunk/LayoutTests

REGRESSION (r272392): [ MacOS ] webaudio/audioworklet-addModule-failure.html is flakey timing out
https://bugs.webkit.org/show_bug.cgi?id=221469
<rdar://problem/74027196>

Unreviewed, make sure the test triggers JS garbage collection before exiting so that the next test does
not fail with an out-of-memory error.

  • webaudio/audioworket-out-of-memory.html:
9:20 AM Changeset in webkit [272419] by pvollan@apple.com
  • 3 edits in trunk/Source/WebKit

Remove access to IOMobileFramebufferUserClient
https://bugs.webkit.org/show_bug.cgi?id=221408
<rdar://problem/70551457>

Reviewed by Brent Fulgham.

Remove access to the IOKit class IOMobileFramebufferUserClient in the WebContent process on macOS and iOS
when the GPU process is enabled.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
  • WebProcess/com.apple.WebProcess.sb.in:
9:11 AM Changeset in webkit [272418] by Kate Cheney
  • 2 edits in trunk/Source/WebKit

CrashTracer: com.apple.WebKit.Networking at WebKit: WebKit::ResourceLoadStatisticsDatabaseStore::setPrevalentResource
https://bugs.webkit.org/show_bug.cgi?id=221432
<rdar://problem/67069819>

Reviewed by John Wilander.

We are seeing crashes in ResourceLoadStatisticsDatabaseStore::setPrevalentResource
as a result of trying to use a nullopt domainID value. In theory this should
never be WTF::nullopt but is because of a failing SQLite query in
ResourceLoadStatisticsDatabaseStore::domainID which reports the error "not an error".

To fix this we should check the domain ID and return early with a
debug assert in setPrevalentResource() if it is WTF::nullopt to avoid
a crash. Additionally, we should add more information to the logging
statement, specifically the SQLite statement string, to try and debug further.

  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:

(WebKit::ResourceLoadStatisticsDatabaseStore::domainID const):
(WebKit::ResourceLoadStatisticsDatabaseStore::setPrevalentResource):

8:54 AM Changeset in webkit [272417] by commit-queue@webkit.org
  • 9 edits in trunk/Source/WebKit

SpeechRecognitionPermissionManager should not handle requests that are already cancelled
https://bugs.webkit.org/show_bug.cgi?id=221296

Patch by Sihui Liu <sihui_liu@appe.com> on 2021-02-05
Reviewed by Youenn Fablet.

It is possible that client asks to stop/abort pending requests, which are waiting for permission check to be
done. In our current implementation, SpeechRecognitionPermissionManager would perform permission checks for
these cancelled requests, which is unnecessary and may cause extra prompts. We should let
SpeechRecognitionPermissionManager check if request is still valid before checking permissions.

No test is added as this behavior change is not observable without resetting the TCC permission between requests.

  • UIProcess/SpeechRecognitionPermissionManager.cpp:

(WebKit::SpeechRecognitionPermissionManager::request):
(WebKit::SpeechRecognitionPermissionManager::startNextRequest):
(WebKit::SpeechRecognitionPermissionManager::startProcessingRequest):
(WebKit::SpeechRecognitionPermissionManager::continueProcessingRequest):
(WebKit::SpeechRecognitionPermissionManager::requestUserPermission):

  • UIProcess/SpeechRecognitionPermissionManager.h:
  • UIProcess/SpeechRecognitionPermissionRequest.h:

(WebKit::SpeechRecognitionPermissionRequest::create):
(WebKit::SpeechRecognitionPermissionRequest::~SpeechRecognitionPermissionRequest):
(WebKit::SpeechRecognitionPermissionRequest::request):
(WebKit::SpeechRecognitionPermissionRequest::SpeechRecognitionPermissionRequest):
(WebKit::SpeechRecognitionPermissionRequest::origin const): Deleted.
(WebKit::SpeechRecognitionPermissionRequest::lang const): Deleted.
(WebKit::SpeechRecognitionPermissionRequest::frameIdentifier const): Deleted.

  • UIProcess/SpeechRecognitionServer.cpp:

(WebKit::SpeechRecognitionServer::requestPermissionForRequest):
(WebKit::SpeechRecognitionServer::sendUpdate):

  • UIProcess/SpeechRecognitionServer.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::requestSpeechRecognitionPermission):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::createSpeechRecognitionServer):

8:38 AM Changeset in webkit [272416] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][IFC] Add support for "word separator" when the whitespace content has multiple characters
https://bugs.webkit.org/show_bug.cgi?id=221355

Reviewed by Antti Koivisto.

Keep track of word separator characters in whitespace content even when the whitespace content has multiple characters.
This fixes cases when "word-spacing" has a non-zero value in "space and tab preserve" content (e.g <pre style="word-spacing: 200px">This content has spaces and tabs</pre>)
(On trunk we fail to adjust the run position with the word-spacing value because the whitespace content is not marked as a word separator.)

  • layout/inlineformatting/InlineTextItem.cpp:

(WebCore::Layout::moveToNextNonWhitespacePosition):
(WebCore::Layout::InlineTextItem::createAndAppendTextItems):

  • layout/inlineformatting/InlineTextItem.h:

(WebCore::Layout::InlineTextItem::createNonWhitespaceItem):

8:19 AM Changeset in webkit [272415] by Lauro Moura
  • 2 edits in trunk/Tools

[Flatpak SDK] Print stderr when coredumpctl fails
https://bugs.webkit.org/show_bug.cgi?id=221448

Reviewed by Philippe Normand.

  • flatpak/flatpakutils.py:

(WebkitFlatpak.run_gdb):

7:50 AM Changeset in webkit [272414] by Chris Dumez
  • 11 edits in trunk

[GPUProcess][iOS] Audio is lost after media playback recovers from the GPUProcess crash
https://bugs.webkit.org/show_bug.cgi?id=221305
<rdar://problem/73904864>

Reviewed by Eric Carlson.

Source/WebCore:

The issue was that when the GPUProcess crashed while in the middle of media playback, we would
fail to remove the old/invalid AudioTrack and then append the new/valid AudioTrack upon
recovery. We would end up using the wrong old AudioTrack instead of the new track as a result.

To address the issue, I have refactored the code so that the "reload and resume" logic now
resides in HTMLMediaElement instead of MediaPlayer. This makes sure that the HTMLMediaElement
object's state stays good. In particular, when HTMLMediaElement::prepareToLoad() is called,
it calls forgetResourceSpecificTracks() to drop the old/invalid AudioTracks.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::mediaPlayerReloadAndResumePlaybackIfNeeded):

  • html/HTMLMediaElement.h:
  • platform/graphics/MediaPlayer.cpp:

(WebCore::MediaPlayer::reloadAndResumePlaybackIfNeeded):

  • platform/graphics/MediaPlayer.h:

(WebCore::MediaPlayerClient::mediaPlayerUserAgent const):
(WebCore::MediaPlayerClient::mediaPlayerReloadAndResumePlaybackIfNeeded):

Source/WebKit:

Fix issue where we would sometimes lose the video after recovering from a GPUProcess
crash. The issue is that RemoteMediaPlayerProxy::setVideoInlineSizeFenced() may get
called *before* RemoteMediaPlayerProxy::mediaPlayerFirstVideoFrameAvailable(). As a
result, we would not have a root layer yet and we would fail to set the video
dimensions and they would remain at 0x0.

  • GPUProcess/media/RemoteMediaPlayerProxy.cpp:
  • GPUProcess/media/RemoteMediaPlayerProxy.h:
  • GPUProcess/media/cocoa/RemoteMediaPlayerProxyCocoa.mm:

(WebKit::setVideoInlineSizeIfPossible):
(WebKit::RemoteMediaPlayerProxy::mediaPlayerFirstVideoFrameAvailable):
(WebKit::RemoteMediaPlayerProxy::setVideoInlineSizeFenced):

Tools:

Unskip API test checks on iOS now that they are passing.

  • TestWebKitAPI/Tests/WebKitCocoa/GPUProcess.mm:

(TEST):

7:11 AM Changeset in webkit [272413] by commit-queue@webkit.org
  • 2 edits in trunk/Source/ThirdParty/libwebrtc

[CMake] Hide libwebrtc symbols
https://bugs.webkit.org/show_bug.cgi?id=221333

This is a naive approach to hide libwebrtc symbols, particularly beacuse of boringssl, which
migth collide with system's libssl. It compiles libwebrtc with visibility set to hidden.

Patch by Víctor Manuel Jáquez Leal <vjaquez@igalia.com> on 2021-02-05
Reviewed by Michael Catanzaro.

  • CMakeLists.txt:
6:29 AM Changeset in webkit [272412] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[LFC][IFC] Incorrect last potential wrap position when inline box is present
https://bugs.webkit.org/show_bug.cgi?id=221437

Reviewed by Antti Koivisto.

The trailing run of the continuous content is not necessarily a legal wrap position.
In some cases when the text content is embedded in an inline box, the wrap position may be part of
the subsequent content e.g.

<div>content<span> <-space</span></div>

This maps to the following set of inline items:
[content][inline box start][ ][<-space][inline box end]

This content produces 3 sets of continuous content for line breaking
[non-whitespace content]
[inline box start][whitespace content]
[non-whitespace content][inline box end]

While the soft wrap opportunity is at [whitespace content], the content boundary is at a different position, right before
the [inline box start] since the content inside the inline box always belongs to the inline box.
(as opposed to [non-whitespace content][inline box start] and a separate [whitespace content] set)

In this patch we start tracking the "has trailing soft wrap opportunity" in LineCandidate and pass it to the InlineContentBreaker
as part of the line status.

  • layout/inlineformatting/InlineContentBreaker.cpp:

(WebCore::Layout::InlineContentBreaker::isWrappingAllowed):
(WebCore::Layout::InlineContentBreaker::processInlineContent):
(WebCore::Layout::InlineContentBreaker::processOverflowingContent const):
(WebCore::Layout::InlineContentBreaker::processOverflowingContentWithText const):
(WebCore::Layout::InlineContentBreaker::wordBreakBehavior const):
(WebCore::Layout::InlineContentBreaker::tryBreakingTextRun const):
(WebCore::Layout::isWrappingAllowed): Deleted.
(WebCore::Layout::lastWrapOpportunityIndex): Deleted.

  • layout/inlineformatting/InlineContentBreaker.h:
  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineCandidate::InlineContent::setHasTrailingSoftWrapOpportunity):
(WebCore::Layout::LineCandidate::InlineContent::hasTrailingSoftWrapOpportunity const):
(WebCore::Layout::LineBuilder::candidateContentForLine):
(WebCore::Layout::LineBuilder::handleInlineContent):

6:26 AM Changeset in webkit [272411] by Alexey Shvayka
  • 4 edits in trunk

Object.assign should throw for property creation on non-extensible target
https://bugs.webkit.org/show_bug.cgi?id=220712

Reviewed by Ross Kirsling.

JSTests:

  • stress/object-assign-fast-path.js:

Source/JavaScriptCore:

This performance-neutral change precludes Object.assign from taking the
fast path if target is a non-extensible JSFinalObject, which ensures
a TypeError is thrown for property creation via Set?.

Aligns JSC with the spec [1], V8, and SpiderMonkey.

[1]: https://tc39.es/ecma262/#sec-validateandapplypropertydescriptor (step 2.a)

  • runtime/ObjectConstructor.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):

5:23 AM Changeset in webkit [272410] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebCore

[SOUP] Fix error handling in WebKitFormDataInputStream
https://bugs.webkit.org/show_bug.cgi?id=221459

Reviewed by Adrian Perez de Castro.

We are checking the error parameter passed, that can be nullptr when not provided, we should be checking the
return value of g_input_stream_read() instead.

  • platform/network/soup/WebKitFormDataInputStream.cpp:

(webkitFormDataInputStreamRead):

5:22 AM Changeset in webkit [272409] by Carlos Garcia Campos
  • 4 edits in trunk

REGRESSION(r271879) [SOUP] webrtc/datachannel/gather-candidates-networkprocess-crash.html is crashing in debug mode
https://bugs.webkit.org/show_bug.cgi?id=221379

Reviewed by Youenn Fablet.

Source/WebKit:

  • NetworkProcess/soup/WebKitDirectoryInputStream.cpp:

(webkitDirectoryInputStreamRead): Fix bytes read calculation.

LayoutTests:

Remove expectations for tests that are now passing.

  • platform/glib/TestExpectations:
3:02 AM Changeset in webkit [272408] by Philippe Normand
  • 4 edits in trunk/Source/WebKit

[GTK] clang warnings
https://bugs.webkit.org/show_bug.cgi?id=221410

Reviewed by Adrian Perez de Castro.

  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::NetworkResourceLoader::resourceLoadInfo): Remove ifdef added in r272313, the
corresponding enum value is not ifdeffed either.

  • UIProcess/SpeechRecognitionServer.cpp:

(WebKit::SpeechRecognitionServer::sendUpdate): Use portable format specifier for uint64_t.

  • WebProcess/Speech/SpeechRecognitionRealtimeMediaSourceManager.cpp: Ifdef member variable

currently used only on Cocoa platforms.

2:03 AM Changeset in webkit [272407] by aboya@igalia.com
  • 2 edits in trunk/Tools

[GTK] run-gtk-tests: Support running individual tests for GTest test suites
https://bugs.webkit.org/show_bug.cgi?id=221050

Reviewed by Adrian Perez de Castro.

run-gtk-tests accepts any number of optional -p arguments to run
only certain tests. Unfortunately, this feature is only currently
implemented for glib tests suites.

This patch adds support for this feature with gtest suites as well.

  • glib/api_test_runner.py:

(TestRunner._run_google_test_suite):
(TestRunner._run_test):

12:45 AM Changeset in webkit [272406] by ysuzuki@apple.com
  • 3 edits
    1 add in trunk

[JSC] JSImmutableButterfly's toString cache should not happen for generic join
https://bugs.webkit.org/show_bug.cgi?id=221444
<rdar://problem/73972862>

Reviewed by Mark Lam.

JSTests:

  • stress/immutable-butterfly-to-string-cache-should-not-happen-for-generic-join.js: Added.

(foo):

Source/JavaScriptCore:

We should not cache Array#toString results with JSImmutableButterfly if
its join operation becomes generic join: including objects in array, since
this can invoke object.toString(), and it isn't side-effect free.

  • runtime/ArrayPrototype.cpp:

(JSC::fastJoin):
(JSC::JSC_DEFINE_HOST_FUNCTION):

12:45 AM Changeset in webkit [272405] by ysuzuki@apple.com
  • 8 edits
    6 adds in trunk

[JSC] Atomics.store in DFG / FTL should return ToNumber(input) value
https://bugs.webkit.org/show_bug.cgi?id=221438
<rdar://problem/73973264>

Reviewed by Filip Pizlo.

JSTests:

  • stress/atomic-store-result-type-in-ai.js: Added.
  • stress/atomics-store-result-double-nan.js: Added.

(shouldBe):
(test):

  • stress/atomics-store-result-double-negative-zero.js: Added.

(shouldBe):
(test):

  • stress/atomics-store-result-double.js: Added.

(shouldBe):
(test):

  • stress/atomics-store-result-int52.js: Added.

(shouldBe):

  • stress/atomics-store-result.js: Added.

(shouldBe):

Source/JavaScriptCore:

Atomics.store is different from the other ReadModifyWrite atomics. It returns the input value without truncating it into TypedArray's requirement.
For example,

var u8 = new Uint8Array(8);
Atomics.store(u8, 0, 0xffff) === 0xffff Not 0xff.

However DFG and FTL implementations do not handle it correctly.
This patch fixes AI, fixup, and code generations to handle this.

  • dfg/DFGAbstractInterpreterInlines.h:

(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):

  • dfg/DFGFixupPhase.cpp:

(JSC::DFG::FixupPhase::fixupNode):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileGetByValOnIntTypedArray):
(JSC::DFG::SpeculativeJIT::getIntTypedArrayStoreOperandForAtomics):

  • dfg/DFGSpeculativeJIT.h:
  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileAtomicsReadModifyWrite):
(JSC::FTL::DFG::LowerDFGToB3::compileGetByVal):
(JSC::FTL::DFG::LowerDFGToB3::setIntTypedArrayLoadResult):
(JSC::FTL::DFG::LowerDFGToB3::toIntegerOrInfinity):

Feb 4, 2021:

11:40 PM Changeset in webkit [272404] by Devin Rousso
  • 3 edits in trunk/LayoutTests

Add intermediate volume icon states between "mute" and "max"
https://bugs.webkit.org/show_bug.cgi?id=221371

Unreviewed test fix.

  • media/modern-media-controls/mute-button/mute-button.html:
  • media/modern-media-controls/mute-button/mute-button-expected.txt:
7:56 PM Changeset in webkit [272403] by Lauro Moura
  • 3 edits
    1 add in trunk/LayoutTests

[GLIB] Gardening accessibility and font failures

Unreviewed test gardening.

The img-with-svg-source.html test differed only in the content of the
image.description field, with empty AXDescription text, like other
accessibility tests.

  • platform/glib/TestExpectations:
  • platform/glib/accessibility/img-with-svg-source-expected.txt: Added.
  • platform/gtk/TestExpectations:
5:36 PM Changeset in webkit [272402] by Adrian Perez de Castro
  • 1 copy in releases/WPE WebKit/webkit-2.31.1

WPE WebKit 2.31.31

5:35 PM Changeset in webkit [272401] by Adrian Perez de Castro
  • 4 edits in trunk

Unreviewed. Update OptionsWPE.cmake and NEWS for the 2.31.1 release

.:

  • Source/cmake/OptionsWPE.cmake: Bump version numbers.

Source/WebKit:

  • wpe/NEWS: Add release notes for 2.31.1.
5:11 PM Changeset in webkit [272400] by Ross Kirsling
  • 3 edits in trunk/Source/WebKit

REGRESSION (r272382): 2 webkit.messages_unittest.GeneratedFileContentsTest tests failing after Semaphore.h rename
https://bugs.webkit.org/show_bug.cgi?id=221433

Reviewed by Don Olmstead.

Looks like some changes were accidentally dropped prior to landing.

  • Scripts/webkit/tests/MessageArgumentDescriptions.cpp:
  • Scripts/webkit/tests/TestWithSemaphoreMessageReceiver.cpp:
4:55 PM Changeset in webkit [272399] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

[build.webkit.org] Update dashboard links for layout test results
https://bugs.webkit.org/show_bug.cgi?id=221280

Reviewed by Jonathan Bedard.

  • CISupport/build-webkit-org/public_html/dashboard/Scripts/Buildbot.js:

(Buildbot): Set baseURLForResults.
(Buildbot.prototype.layoutTestResultsDirectoryURLForIteration): Use baseURLForResults if available.

  • CISupport/build-webkit-org/public_html/dashboard/Scripts/WebKitBuildbot.js:

(WebKitBuildbot): Pass baseURLForResults appropriately.

4:54 PM Changeset in webkit [272398] by Jonathan Bedard
  • 3 edits
    1 delete in trunk/Tools

[Python-3] Change shebang in test-webkitpy (Part-2)
https://bugs.webkit.org/show_bug.cgi?id=221415
<rdar://problem/73986503>

Reviewed by Michael Catanzaro.

  • CISupport/build-webkit-org/steps.py:

(RunWebKitPyTests): Run test-webkitpy with Python 3.

  • Scripts/test-webkitpy: Change shebang.
  • Scripts/test-webkitpy-python3: Removed.
4:27 PM Changeset in webkit [272397] by Jonathan Bedard
  • 2 edits in trunk/Tools

[Python-3] Change shebang in git-webkit (Follow-up fix)
https://bugs.webkit.org/show_bug.cgi?id=221412
<rdar://problem/73983881>

Unreviewed follow-up fix.

  • Scripts/libraries/webkitcorepy/webkitcorepy/subprocess_utils.py:

(run): Python 3.6 does not support capture_output in subprocess.run()

4:17 PM Changeset in webkit [272396] by commit-queue@webkit.org
  • 7 edits
    2 adds in trunk

Null dereference in DocumentLoader::commitData()
https://bugs.webkit.org/show_bug.cgi?id=221097

Patch by Julian Gonzalez <julian_a_gonzalez@apple.com> on 2021-02-04
Reviewed by Alex Christensen.

Source/WebCore:

Be careful to check the return value of DocumentWriter::begin()
before calling DocumentWriter::setDocumentWasLoadedAsPartOfNavigation().
This work involves exposing MediaDocument.h.

Test: loader/cancel-load-crash.html

  • Headers.cmake:
  • WebCore.xcodeproj/project.pbxproj:
  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::commitData):

Source/WebKit:

As we add another return-early case to commitData(),
WebFrameLoaderClient::committedLoad() has to allow for
the absence of a Document.

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::committedLoad):

LayoutTests:

Add a test that catches the null dereference
in DocumentLoader::commitData().

  • loader/cancel-load-crash-expected.txt: Added.
  • loader/cancel-load-crash.html: Added.
4:15 PM Changeset in webkit [272395] by Chris Dumez
  • 5 edits
    3 adds in trunk

Potential crash under BaseAudioContext's toJSNewlyCreated()
https://bugs.webkit.org/show_bug.cgi?id=221423
<rdar://73352543>

Reviewed by Darin Adler.

Source/WebCore:

BaseAudioContext has subclasses (AudioContext & OfflineAudioContext) that are exposed to JS
(for which we call toJS() for). As a result, BaseAudioContext needs a custom toJS()
implementation which returns the correct subclass wrapper (JSOfflineAudioContext &
JSAudioContext), instead of a JSBaseAudioContext.

Test: webaudio/base-audio-context-wrapper-gc.html

  • Modules/webaudio/BaseAudioContext.idl:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/JSBaseAudioContextCustom.cpp: Added.

(WebCore::toJSNewlyCreated):
(WebCore::toJS):

LayoutTests:

Add layout test coverage.

  • webaudio/base-audio-context-wrapper-gc-expected.txt: Added.
  • webaudio/base-audio-context-wrapper-gc.html: Added.
4:10 PM Changeset in webkit [272394] by rniwa@webkit.org
  • 5 edits in trunk/Source/WebCore

Avoid creating JS wrapper on a removed node when the subtree is not observable
https://bugs.webkit.org/show_bug.cgi?id=221243
<rdar://problem/73719386>

Reviewed by Geoffrey Garen.

Prior to this patch, WebKit forced the creation the JS wrapper on the root DOM node of a removed subtree
to avoid script observable deletion of nodes. This is necessary because DOM nodes are reference counted
in the C++ side, and while a DOM node keeps its child nodes alive, it won't keep its parent node alive
to avoid reference cycles (leaks). If we didn't force the creation of the JS wrapper and the root node
of the removed subtree didn't have any external reference to it in C++ side, we would happily delete it
and all its descendant nodes above any subtree with a JS wrapper or an external C++ reference.

While this turned out to be an effective strategy for implementing DOM nodes' GC semantics correctly,
it has a significant runtime and memory cost - the latter is because we don't collect the JS wrappers
of DOM nodes once they're created until they're ready to be destructed.

This patch introduces a new optimization to avoid creating these JS wrappers when the removed subtree
won't be observable by scripts in the future. The current heuristic is to check if the removed node
has any external reference to it (i.e. refCount() > 0 excluding any reference counting that happens within
our algorithm). This is sufficient because a given node should not be observable at a later time unless
it has an external reference to it. This is ~0.5% progression on Speedometer-2.0 on MacBookAir7,2.

To do this, we take advantage of the fact notifyChildNodeRemoved already traverses each removed subtree,
and check if any of them has a reference count greater than 1 (greater than 1 because notifyChildNodeRemoved
itself increments node's reference count before calling itself on child nodes). Note that we exclude the
root node of the removed subtree as these JS wrapper creation is only needed to keep the root node alive.
If the root node is already kept alive by some external reference to it, there is no need to keep it alive
again by creating a JS wrapper on it.

No new tests since existing tests such as fast/dom/gc-3.html covers it.

  • dom/ContainerNode.cpp:

(WebCore::ContainerNode::removeAllChildrenWithScriptAssertion): Call willCreatePossiblyOrphanedTreeByRemoval
if the removed subtree contains an observable node.
(WebCore::ContainerNode::removeNodeWithScriptAssertion): Ditto.
(WebCore::ContainerNode::removeSelfOrChildNodesForInsertion): Renamed from collectChildrenAndRemoveFromOldParent.
Avoid collecting the removed nodes in this function in addition to removeAllChildrenWithScriptAssertion.
(WebCore::ContainerNode::insertBefore):
(WebCore::ContainerNode::replaceChild):
(WebCore::ContainerNode::appendChildWithoutPreInsertionValidityCheck):
(WebCore::dispatchChildRemovalEvents): Don't call willCreatePossiblyOrphanedTreeByRemoval here.

  • dom/ContainerNode.h:
  • dom/ContainerNodeAlgorithms.cpp:

(WebCore::observabilityOfRemovedNode): Added. Checks the observability of a node excluding the root node of
the removed subtree since it needs a special case in removeAllChildrenWithScriptAssertion.
As notifyNodeRemovedFromDocument and notifyNodeRemovedFromTree ref's each child node before recursing on itself,
we check refCount() > 1 here.
(WebCore::updateObservability): Added. A helper function to update RemovedSubtreeObservability.
(WebCore::notifyNodeRemovedFromDocument): Now returns RemovedSubtreeObservability,
(WebCore::notifyNodeRemovedFromTree): Ditto.
(WebCore::notifyChildNodeRemoved): Ditto.

  • dom/ContainerNodeAlgorithms.h:
3:59 PM Changeset in webkit [272393] by Chris Dumez
  • 13 edits
    2 adds in trunk

RELEASE_ASSERT(bigInt) in VM constructor when constructing a WorkletGlobalScope
https://bugs.webkit.org/show_bug.cgi?id=221425
<rdar://73747997>

Reviewed by Keith Miller.

Source/WebCore:

WorkletGlobalScope should use VM::tryCreate() instead of VM::create() to deal with out-of-memory
errors.

Test: webaudio/audioworket-out-of-memory.html

  • Modules/webaudio/AudioWorkletGlobalScope.cpp:

(WebCore::AudioWorkletGlobalScope::tryCreate):
(WebCore::AudioWorkletGlobalScope::AudioWorkletGlobalScope):

  • Modules/webaudio/AudioWorkletGlobalScope.h:
  • Modules/webaudio/AudioWorkletThread.cpp:

(WebCore::AudioWorkletThread::createGlobalScope):

  • Modules/webaudio/AudioWorkletThread.h:
  • WebCore.xcodeproj/project.pbxproj:
  • workers/WorkerOrWorkletThread.cpp:

(WebCore::WorkerOrWorkletThread::workerOrWorkletThread):

  • workers/WorkerOrWorkletThread.h:
  • workers/WorkerThread.cpp:

(WebCore::WorkerThread::createGlobalScope):

  • workers/WorkerThread.h:
  • worklets/WorkletGlobalScope.cpp:

(WebCore::WorkletGlobalScope::WorkletGlobalScope):

  • worklets/WorkletGlobalScope.h:

LayoutTests:

Add layout test coverage.

  • webaudio/audioworket-out-of-memory-expected.txt: Added.
  • webaudio/audioworket-out-of-memory.html: Added.
3:52 PM Changeset in webkit [272392] by ddkilzer@apple.com
  • 2 edits in trunk/Source/WTF

WTF::dynamic_cf_cast<> should not assert in Debug builds
<https://webkit.org/b/221428>
<rdar://problem/73451079>

Reviewed by Geoff Garen.

  • wtf/cf/TypeCastsCF.h:

(WTF::dynamic_cf_cast):

  • Remove ASSERT_WITH_SECURITY_IMPLICATION().

(WTF::checked_cf_cast):

  • Add comments about how to use these template functions correctly.
3:48 PM Changeset in webkit [272391] by Alan Coon
  • 8 edits in branches/safari-612.1.2-branch/Source

Versioning.

WebKit-7612.1.2.1

2:33 PM Changeset in webkit [272390] by Chris Fleizach
  • 5 edits
    2 adds in trunk

AX: expose focusable elements even if element or ancestor has aria-hidden=true
https://bugs.webkit.org/show_bug.cgi?id=220534
<rdar://problem/71865875>

Reviewed by Zalan Bujtas.

Source/WebCore:

ARIA states that if an item is focused, then it should override aria-hidden status.
https://github.com/w3c/aria/pull/1387/files

Test: accessibility/focusable-inside-hidden.html

  • accessibility/AXObjectCache.cpp:

(WebCore::isNodeAriaVisible):

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::isAXHidden const):
(WebCore::AccessibilityObject::setIsIgnoredFromParentDataForChild):

LayoutTests:

  • accessibility/focusable-inside-hidden-expected.txt: Added.
  • accessibility/focusable-inside-hidden.html: Added.
2:29 PM Changeset in webkit [272389] by Alan Coon
  • 1 copy in tags/Safari-612.1.2

Tag Safari-612.1.2.

2:25 PM Changeset in webkit [272388] by Alan Coon
  • 3 edits in branches/safari-612.1.2-branch/Source/WebKit

Cherry-pick r272229. rdar://problem/73997275

REGRESSION(r271744): Broke Microsoft live login in internal builds
https://bugs.webkit.org/show_bug.cgi?id=221271
<rdar://problem/73848416>

Reviewed by Alex Christensen.

If a user goes straight to login.live.com without first visiting
microsoft.com, we crash when checking for storage access because
we assume the user has interacted with the page. Since this is a
quirked flow, we should not assume that, and should insert the
domain into the database.

  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: (WebKit::ResourceLoadStatisticsDatabaseStore::hasUserGrantedStorageAccessThroughPrompt): (WebKit::ResourceLoadStatisticsDatabaseStore::hasUserGrantedStorageAccessThroughPrompt const): Deleted.
  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h:

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

2:24 PM Changeset in webkit [272387] by Kate Cheney
  • 2 edits in trunk/Source/WebKit

Link libnetworkextension at compile time
https://bugs.webkit.org/show_bug.cgi?id=221372
<rdar://problem/73855844>

Reviewed by Brent Fulgham.

Network Extension is not available on tvOS.

  • Configurations/WebKit.xcconfig:
2:20 PM Changeset in webkit [272386] by Megan Gardner
  • 4 edits in trunk/Source/WebKit

Allow highlight delegate to be set on WKWebView
https://bugs.webkit.org/show_bug.cgi?id=221362

Reviewed by Tim Horton.

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
1:59 PM Changeset in webkit [272385] by Jonathan Bedard
  • 1 edit
    1 add in trunk/Tools

[Python-3] Change shebang in test-webkitpy (Part-1)
https://bugs.webkit.org/show_bug.cgi?id=221415
<rdar://problem/73986503>

Reviewed by Michael Catanzaro.

  • Scripts/test-webkitpy-python2: Added.
1:59 PM Changeset in webkit [272384] by Jonathan Bedard
  • 3 edits in trunk/Tools

[Python-3] Change shebang in git-webkit (Part 2)
https://bugs.webkit.org/show_bug.cgi?id=221412
<rdar://problem/73983881>

Reviewed by Michael Catanzaro.

  • CISupport/ews-build/steps.py:

(ShowIdentifier.start): Invoke git-webkit with Python 3.

  • CISupport/ews-build/steps_unittest.py:
1:54 PM Changeset in webkit [272383] by achristensen@apple.com
  • 4 edits in trunk

Don't launch a network process when registering URL schemes
https://bugs.webkit.org/show_bug.cgi?id=221427

Reviewed by Chris Dumez.

Source/WebKit:

When Safari on macOS is launching, it calls registerURLSchemeAsSecure and registerURLSchemeAsBypassingContentSecurityPolicy.
This causes the network process to launch before the app has finished launching. Since values are stored in the UI process
and sent in NetworkProcessCreationParameters whenever a network process starts, so it's not necessary to start the network
process when calling these two functions. This should decrease Safari's launch time.

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::registerURLSchemeAsSecure):
(WebKit::WebProcessPool::registerURLSchemeAsBypassingContentSecurityPolicy):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/NetworkProcess.mm:

(TEST):

1:41 PM Changeset in webkit [272382] by Ross Kirsling
  • 11 edits
    3 moves in trunk/Source/WebKit

Don't use Semaphore.h as a filename
https://bugs.webkit.org/show_bug.cgi?id=221418

Reviewed by Don Olmstead.

IPC::Semaphore was recently moved to IPC/Semaphore.h; let's ensure that it's IPC/IPCSemaphore.h instead.
Semaphore.h is a filename that may exist in platform SDKs and thus can cause a WK build break based on ordering.

  • GPUProcess/graphics/RemoteRenderingBackend.cpp:
  • GPUProcess/graphics/RemoteRenderingBackend.h:
  • GPUProcess/media/RemoteAudioDestinationManager.cpp:
  • GPUProcess/media/RemoteAudioDestinationManager.h:
  • Platform/IPC/IPCSemaphore.cpp: Renamed from Source/WebKit/Platform/IPC/Semaphore.cpp.
  • Platform/IPC/IPCSemaphore.h: Renamed from Source/WebKit/Platform/IPC/Semaphore.h.
  • Platform/IPC/darwin/IPCSemaphoreDarwin.cpp: Renamed from Source/WebKit/Platform/IPC/darwin/SemaphoreDarwin.cpp.
  • Scripts/webkit/messages.py:
  • Scripts/webkit/tests/MessageArgumentDescriptions.cpp:
  • Scripts/webkit/tests/TestWithSemaphoreMessageReceiver.cpp:
  • Sources.txt:
  • SourcesCocoa.txt:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h:
  • WebProcess/GPU/media/RemoteAudioDestinationProxy.h:
1:32 PM Changeset in webkit [272381] by youenn@apple.com
  • 3 edits in trunk/Source/WebKit

Test landed flaky: [iOS] TestWebKitAPI.WebKit2.CrashGPUProcessWhileCapturing
https://bugs.webkit.org/show_bug.cgi?id=221331
<rdar://problem/73935129>

Reviewed by Eric Carlson.

For video sources tied to a remote source in GPUProcess, we are calling requestToEnd instead of end
since the same remote source may be shared with other cloned video sources.
In that case, the source in WebProcess should be considered as ended as soon as requestToEnd is called.

This is important as in case of GPUProcess, we are recreating sources that are not ended.
We were thus recreating a source which was actually ended in WebProcess.
This appears in particular on iOS where only one source can be active at a time.

A further refactoring should probably change the way we clone video sources given we are now supporting size and frame rate adaptations in RealtimeVideoSource.

Covered by API test no longer falkily failing.

  • WebProcess/cocoa/RemoteRealtimeMediaSource.cpp:

(WebKit::RemoteRealtimeMediaSource::captureFailed):
(WebKit::RemoteRealtimeMediaSource::requestToEnd):

  • WebProcess/cocoa/RemoteRealtimeMediaSource.h:
1:31 PM Changeset in webkit [272380] by Jonathan Bedard
  • 4 edits in trunk/Tools

[Python-3] Change shebang in check-webkit-style
https://bugs.webkit.org/show_bug.cgi?id=221420
<rdar://problem/73990232>

Reviewed by Michael Catanzaro.

  • CISupport/ews-build/steps.py:

(CheckStyle): Invoke check-webkit-style with python3.

  • CISupport/ews-build/steps_unittest.py:

(TestCheckStyle.test_success_internal): Invoke check-webkit-style with python3.
(TestCheckStyle.test_failure_unknown_try_codebase): Ditto.
(TestCheckStyle.test_failures_with_style_issues): Ditto.
(test_failures_no_style_issues): Ditto.
(test_failures_no_changes): Ditto.

  • Scripts/check-webkit-style: Change python shebang to Python 3.
1:28 PM Changeset in webkit [272379] by mmaxfield@apple.com
  • 3 edits
    2 adds in trunk

Supplementary code points (U+10000 - U+10FFFF) are not shaped correctly in the fast text codepath
https://bugs.webkit.org/show_bug.cgi?id=221356
<rdar://problem/72555297>

Reviewed by Zalan Bujtas.

Source/WebCore:

Supplementary code points are represented in UTF-16 as two adjacent (surrogate) code units. When we map code
points to glyphs, we were originally mapping these two code units to a single glyph. However, shaping
routines require that the number of code units and glyphs be equal, by injecting a 0 glyph for the trailing
surrogate.

Luckily, we don't actually have to delete these extra 0 glyphs, because the shaping engine will do that for us.

Test: fast/text/multi-code-unit-simple-path.html

  • platform/graphics/WidthIterator.cpp:

(WebCore::WidthIterator::advanceInternal):

LayoutTests:

  • fast/text/multi-code-unit-simple-path-expected-mismatch.html: Added.
  • fast/text/multi-code-unit-simple-path.html: Added.
11:38 AM Changeset in webkit [272378] by Jonathan Bedard
  • 5 edits in trunk/Tools

[Python-3] Change shebang in git-webkit
https://bugs.webkit.org/show_bug.cgi?id=221412
<rdar://problem/73983881>

Reviewed by Stephanie Lewis.

  • Scripts/git-webkit: Change python shebang to python3.
  • Scripts/libraries/webkitscmpy/git-webkit: Ditto.
  • Scripts/libraries/webkitscmpy/webkitscmpy/program/canonicalize/committer.py: Ditto.
  • Scripts/libraries/webkitscmpy/webkitscmpy/program/canonicalize/message.py: Ditto.
11:16 AM Changeset in webkit [272377] by Megan Gardner
  • 6 edits
    1 add in trunk/Source/WebCore

Process LocalizableAdditions string file correctly.
https://bugs.webkit.org/show_bug.cgi?id=221358

Reviewed by Tim Horton.

  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/scripts/preprocessor.pm:

(applyPreprocessor):

10:10 AM Changeset in webkit [272376] by achristensen@apple.com
  • 9 edits in trunk

REGRESSION(r267763) Network process launches earlier than before
https://bugs.webkit.org/show_bug.cgi?id=221384
<rdar://problem/73507706>

Patch by Alex Christensen <achristensen@apple.com> on 2021-02-04
Reviewed by Chris Dumez.

Source/WebKit:

Before r267763 we could have an app launch, allocate a WKWebView, and set _resourceLoadStatisticsEnabled
all without having a network process launch.

When setting _resourceLoadStatisticsEnabled, we don't need to launch a network process if we haven't already
because when we do, WebsiteDataStore::parameters will send the correct value. I added a test that verifies this doesn't
launch the network process if it hasn't already been launched.

We also don't need to update the process assertion or the process suspension state if there is no network process.

sendNetworkProcessXPCEndpointToWebProcess is also called when opening Safari on iOS and would be the next thing to
unnecessarily launch the network process during app initialization. I manually verified that if we add an early return
if there is no network process yet, we do send the XPC endpoint to the web process when the network process does launch
through the call site in sendNetworkProcessXPCEndpointToAllWebProcesses.

I verified on my phone that this is the minimal change needed for Safari on iOS to not launch the network process before
application:didFinishLaunchingWithOptions: is called as it did before r267763.

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::updateProcessSuppressionState):

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::updateProcessAssertions):

  • UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:

(WebKit::WebsiteDataStore::sendNetworkProcessXPCEndpointToWebProcess):

  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::setResourceLoadStatisticsEnabled):

  • UIProcess/WebsiteData/WebsiteDataStore.h:

(WebKit::WebsiteDataStore::networkProcessIfExists):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/NetworkProcess.mm:

(TEST):

10:01 AM Changeset in webkit [272375] by Devin Rousso
  • 29 edits
    4 copies
    4 moves
    12 adds
    11 deletes in trunk

Add intermediate volume icon states between "mute" and "max"
https://bugs.webkit.org/show_bug.cgi?id=221371

Reviewed by Eric Carlson.

Source/WebCore:

  • Modules/modern-media-controls/controls/mute-button.js:

(MuteButton):
(MuteButton.prototype.get volume): Added.
(MuteButton.prototype.set volume): Added.
(MuteButton.prototype.set usesLTRUserInterfaceLayoutDirection): Added.
(MuteButton.prototype.layout):
(MuteButton.prototype.set usesRTLIconVariant): Removed.
Keep track of the volume in addition to muted so that the icon can change more granularly:

  • muted (VolumeMuted.svg and VolumeMuted-RTL.svg)
  • 0% < 25% (Volume0.svg and Volume0-RTL.svg)
  • 25% < 50% (Volume1.svg and Volume1-RTL.svg)
  • 50% < 75% (Volume2.svg and Volume2-RTL.svg)
  • 75% <= 100% (Volume3.svg and Volume3-RTL.svg)

Drive-by: rename set usesRTLIconVariant to set usesLTRUserInterfaceLayoutDirection so

that it matches MediaControls.prototype.set usesLTRUserInterfaceLayoutDirection.

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

(MediaControls.prototype.set usesLTRUserInterfaceLayoutDirection):

  • Modules/modern-media-controls/controls/inline-media-controls.js:

(InlineMediaControls.prototype.layout):
(InlineMediaControls.prototype._addTopRightBarWithMuteButtonToChildren):
Propagate usesLTRUserInterfaceLayoutDirection to volumeButton whenever it's changed.

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

(MuteSupport.prototype.syncControl):
Also pass along the volume.

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

(VolumeSupport.prototype.controlValueWillStartChanging):
Don't unmute in controlValueWillStartChanging (from "pointerdown") as the user hasn't
actually changed the volume yet.

  • Modules/modern-media-controls/js-files:
  • Modules/modern-media-controls/controls/macos-fullscreen-media-controls.js:

(MacOSFullscreenMediaControls.prototype._volumeControlsForCurrentDirection):

  • Modules/modern-media-controls/controls/macos-fullscreen-media-controls.css:

(.media-controls.mac.fullscreen:not(.uses-ltr-user-interface-layout-direction) .volume.slider): Added.
(.media-controls.mac.fullscreen:not(.uses-ltr-user-interface-layout-direction) :is(.volume-down, .volume.slider, .volume-up)): Deleted.

  • Modules/modern-media-controls/controls/volume-down-button.js: Removed.
  • Modules/modern-media-controls/controls/volume-up-button.js: Removed.
  • Modules/modern-media-controls/media/media-controller.js:

(MediaController.prototype._supportingObjectClasses):

  • Modules/modern-media-controls/media/volume-down-support.js: Removed.
  • Modules/modern-media-controls/media/volume-up-support.js: Removed.

Use the same MuteButton in fullscreen instead of VolumeDownButton and VolumeUpButton.

  • Modules/modern-media-controls/controls/icon-service.js:
  • Modules/modern-media-controls/images/iOS/Mute-RTL.svg: Removed.
  • Modules/modern-media-controls/images/iOS/Mute.svg: Removed.
  • Modules/modern-media-controls/images/iOS/Volume0-RTL.svg: Added.
  • Modules/modern-media-controls/images/iOS/Volume0.svg: Added.
  • Modules/modern-media-controls/images/iOS/Volume1-RTL.svg: Added.
  • Modules/modern-media-controls/images/iOS/Volume1.svg: Added.
  • Modules/modern-media-controls/images/iOS/Volume2-RTL.svg: Added.
  • Modules/modern-media-controls/images/iOS/Volume2.svg: Added.
  • Modules/modern-media-controls/images/iOS/Volume3-RTL.svg: Copied from Source/WebCore/Modules/modern-media-controls/images/macOS/VolumeHi-RTL.svg.
  • Modules/modern-media-controls/images/iOS/Volume3.svg: Copied from Source/WebCore/Modules/modern-media-controls/images/macOS/VolumeHi.svg.
  • Modules/modern-media-controls/images/iOS/VolumeHi-RTL.svg: Removed.
  • Modules/modern-media-controls/images/iOS/VolumeHi.svg: Removed.
  • Modules/modern-media-controls/images/iOS/VolumeMuted-RTL.svg: Copied from Source/WebCore/Modules/modern-media-controls/images/macOS/Mute-RTL.svg.
  • Modules/modern-media-controls/images/iOS/VolumeMuted.svg: Copied from Source/WebCore/Modules/modern-media-controls/images/macOS/Mute.svg.
  • Modules/modern-media-controls/images/macOS/Volume0-RTL.svg: Added.
  • Modules/modern-media-controls/images/macOS/Volume0.svg: Added.
  • Modules/modern-media-controls/images/macOS/Volume1-RTL.svg: Added.
  • Modules/modern-media-controls/images/macOS/Volume1.svg: Added.
  • Modules/modern-media-controls/images/macOS/Volume2-RTL.svg: Added.
  • Modules/modern-media-controls/images/macOS/Volume2.svg: Added.
  • Modules/modern-media-controls/images/macOS/Volume3-RTL.svg: Renamed from Source/WebCore/Modules/modern-media-controls/images/macOS/VolumeHi-RTL.svg.
  • Modules/modern-media-controls/images/macOS/Volume3.svg: Renamed from Source/WebCore/Modules/modern-media-controls/images/macOS/VolumeHi.svg.
  • Modules/modern-media-controls/images/macOS/VolumeLo.svg: Removed.
  • Modules/modern-media-controls/images/macOS/VolumeMuted-RTL.svg: Renamed from Source/WebCore/Modules/modern-media-controls/images/macOS/Mute-RTL.svg.
  • Modules/modern-media-controls/images/macOS/VolumeMuted.svg: Renamed from Source/WebCore/Modules/modern-media-controls/images/macOS/Mute.svg.
  • Configurations/Base.xcconfig:
  • Configurations/DebugRelease.xcconfig:
  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::ensureMediaControlsInjectedScript):
Add an ENGINEERING_BUILD compile flag so that the media controls JS/CSS is also available
in Web Inspector for engineering builds (in addition to debug builds).

LayoutTests:

  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-constructor.html:
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-constructor-expected.txt:
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-drag.html:
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-drag-expected.txt:
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-drag-is-prevented-over-button.html:
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-drag-is-prevented-over-button-expected.txt:
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-volume-styles.html:
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-volume-styles-expected.txt:
  • media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-rtl.html:
  • media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-rtl-expected.txt:
  • media/modern-media-controls/mute-button/mute-button.html:
  • media/modern-media-controls/mute-button/mute-button-expected.txt:
  • platform/ios/TestExpectations:
  • platform/mac/TestExpectations:
  • media/modern-media-controls/volume-down-support/volume-down-support.html: Removed.
  • media/modern-media-controls/volume-down-support/volume-down-support-expected.txt: Removed.
  • media/modern-media-controls/volume-up-support/volume-up-support.html: Removed.
  • media/modern-media-controls/volume-up-support/volume-up-support-expected.txt: Removed.
9:39 AM Changeset in webkit [272374] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

REGRESSION(r272217): clang warnings in ExtensionsGLOpenGLCommon.h
https://bugs.webkit.org/show_bug.cgi?id=221409

Patch by Philippe Normand <pnormand@igalia.com> on 2021-02-04
Reviewed by Darin Adler.

  • platform/graphics/opengl/ExtensionsGLOpenGLCommon.h: Re-add the override qualifier for a

few methods, which was removed in r272217.

9:39 AM Changeset in webkit [272373] by Devin Rousso
  • 17 edits in trunk

[macOS] Default to showing the total duration, only switching to time remaining when clicked
https://bugs.webkit.org/show_bug.cgi?id=221364

Reviewed by Eric Carlson.

Source/WebCore:

  • Modules/modern-media-controls/controls/time-label.js:

(TimeLabel.prototype.setValueWithNumberOfDigits):
(TimeLabel.prototype.commitProperty):
(TimeLabel.prototype._formattedTime):
Add TimeLabel.Type.Duration.
Drive-by: rename Types to Type as most enums are singular.

  • Modules/modern-media-controls/controls/time-control.js:

(TimeControl):
(TimeControl.prototype.get minimumWidth):
(TimeControl.prototype.get idealMinimumWidth):
(TimeControl.prototype.layout):
(TimeControl.prototype.handleEvent): Added.
(TimeControl.prototype._durationOrRemainingTimeLabel): Added.
(TimeControl.prototype._performIdealLayout):
Add another TimeLabel with the new TimeLabel.Type.Duration that is used instead of the
existing TimeLabel.Type.Remaining after the latter has been clicked (and the former has
not also been clicked to switch back).

  • en.lproj/modern-media-controls-localized-strings.js:

Add "Duration".

LayoutTests:

  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-time-control-styles.html:
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-time-control-styles-expected.txt:
  • media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-layout.html:
  • media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-layout-expected.txt:
  • media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-time-control-styles.html:
  • media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-time-control-styles-expected.txt:
  • media/modern-media-controls/macos-inline-media-controls/macos-inline-media-dropping-controls-expected.txt:
  • media/modern-media-controls/time-label/ios-time-label.html:
  • media/modern-media-controls/time-label/ios-time-label-expected.txt:
  • media/modern-media-controls/time-label/time-label.html:
  • media/modern-media-controls/time-label/time-label-expected.txt:
  • media/modern-media-controls/time-labels-support/remaining-time.html:
9:34 AM Changeset in webkit [272372] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Update .eslintrc to account for ECMAScript 2020
https://bugs.webkit.org/show_bug.cgi?id=221402

Patch by Razvan Caliman <Razvan Caliman> on 2021-02-04
Reviewed by Devin Rousso.

Add ES2020 parser option so ESLint-based linters don't throw errors
for newer JavaScript language features used in WebInspectorUI.

Note: The linter in an editor must support ESLint v6.2.0 or newer to
understand ES2020.

  • .eslintrc:

Drive-by: add 4 spaces indentation rule to match Coding Style Guidelines.

9:16 AM Changeset in webkit [272371] by Nikita Vasilyev
  • 17 edits
    1 copy
    1 add in trunk

Web Inspector: Collapse blackboxed call frames in Sources
https://bugs.webkit.org/show_bug.cgi?id=216897

Reviewed by Devin Rousso.

Source/WebInspectorUI:

Stack traces often have dozens of blackboxed call frames when using blackboxing for JS-frameworks such as React.js.
It makes it hard to see more relevant non-framework code.

To improve this, introduce "Collapse blackboxed call frames" experimental setting, that collapses adjacent
blackboxed call frames into expandable items.

  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Base/Setting.js:
  • UserInterface/Base/Utilities.js:
  • UserInterface/Images/TypeIcons.svg:
  • UserInterface/Main.html:
  • UserInterface/Models/CallFrame.js:

(WI.CallFrame):
(WI.CallFrame.prototype.get blackboxed):
(WI.CallFrame.fromDebuggerPayload):
(WI.CallFrame.fromPayload):

  • UserInterface/Views/BlackboxedGroupTreeElement.css: Added.

(.tree-outline .item.blackboxed-group):
(.tree-outline .item.blackboxed-group .icon):
(@media (prefers-color-scheme: dark) .tree-outline .item.blackboxed-group .icon):

  • UserInterface/Views/BlackboxedGroupTreeElement.js: Added.

(WI.BlackboxedGroupTreeElement):
(WI.BlackboxedGroupTreeElement.prototype.expand):

  • UserInterface/Views/CallFrameTreeElement.css:

(.tree-outline .item.call-frame.blackboxed:not(.selected)):

  • UserInterface/Views/CallFrameView.css:

(.call-frame.blackboxed > .title,):

  • UserInterface/Views/SettingsTabContentView.js:

(WI.SettingsTabContentView.prototype._createExperimentalSettingsView):

  • UserInterface/Views/SourcesNavigationSidebarPanel.js:

(WI.SourcesNavigationSidebarPanel.prototype._handleTreeSelectionDidChange):

  • UserInterface/Views/ThreadTreeElement.js:

(WI.ThreadTreeElement.prototype.refresh):

  • UserInterface/Views/TreeElement.js:

(WI.TreeElement.treeElementToggled):
This is necessary since WI.BlackboxedGroupTreeElement removes itself when expanded.

  • UserInterface/Views/Variables.css:

(:root):

LayoutTests:

Test Array.prototype.groupBy.

  • inspector/unit-tests/array-utilities-expected.txt:
  • inspector/unit-tests/array-utilities.html:
8:56 AM Changeset in webkit [272370] by Antti Koivisto
  • 5 edits in trunk/Source/WebCore

Remove the Timer from Style::Scope
https://bugs.webkit.org/show_bug.cgi?id=221221
<rdar://problem/73918532>

Reviewed by Sam Weinig.

Just request a rendering update instead. It already flushes any pending style scope updates.

  • dom/Document.cpp:

(WebCore::Document::didInsertInDocumentShadowRoot):

  • dom/Element.cpp:

(WebCore::Element::isVisibleWithoutResolvingFullStyle const):

Flush.

  • style/StyleScope.cpp:

(WebCore::Style::Scope::Scope):
(WebCore::Style::Scope::flushPendingSelfUpdate):
(WebCore::Style::Scope::scheduleUpdate):
(WebCore::Style::Scope::insertedInDocument):

Ensure that m_hasDescendantWithPendingUpdate bit gets set if a shadow root with pending update is inserted in document.

(WebCore::Style::Scope::clearPendingUpdate): Deleted.
(WebCore::Style::Scope::pendingUpdateTimerFired): Deleted.

  • style/StyleScope.h:
8:36 AM Changeset in webkit [272369] by Philippe Normand
  • 9 edits in trunk

[GStreamer] Misc Thunder nitpicks
https://bugs.webkit.org/show_bug.cgi?id=221398

Reviewed by Xabier Rodriguez-Calvar.

.:

  • Source/cmake/FindThunder.cmake: Look-up Thunder through pkg-config before attempting a

direct libocdm lookup.

Source/WebCore:

  • platform/UserAgentQuirks.cpp:

(WebCore::urlRequiresFirefoxBrowser): For Netflix we should use a Firefox User-Agent, when
Thunder is enabled.

  • platform/graphics/gstreamer/eme/CDMThunder.cpp:

(WebCore::CDMFactoryThunder::singleton): Use a dedicated gst debug category for this module,
in order to decouple from the decryptor.
(WebCore::CDMFactoryThunder::supportedKeySystems const): Use explicit return value, removing
possible misunderstandings.
(WebCore::CDMPrivateThunder::CDMPrivateThunder):
(WebCore::CDMPrivateThunder::supportedRobustnesses const): Thunder supports secure decode/crypto in software.
(WebCore::CDMPrivateThunder::supportsServerCertificates const): Plumb to new
opencdm_system_supports_certificate API.
(WebCore::CDMInstanceThunder::setStorageDirectory): Ensure storage directory exists.
(WebCore::ParsedResponseMessage::hasType const): Simplify a bit.
(WebCore::CDMInstanceSessionThunder::updateLicense):

  • platform/graphics/gstreamer/eme/CDMThunder.h:
  • platform/graphics/gstreamer/eme/WebKitThunderDecryptorGStreamer.cpp:

(webkit_media_thunder_decrypt_class_init): Use a more explicit name for the debug category.

Tools:

  • TestWebKitAPI/Tests/WebCore/UserAgentQuirks.cpp:

(TestWebKitAPI::TEST): Add test for Netflix WPE/GTK UA quirk.

6:59 AM Changeset in webkit [272368] by Aditya Keerthi
  • 15 edits
    2 adds in trunk

[macOS] Selecting a date on datetime-local inputs unexpectedly adds second and millisecond fields
https://bugs.webkit.org/show_bug.cgi?id=221350
<rdar://problem/73943517>

Reviewed by Devin Rousso.

Source/WebCore:

Currently, when setting the value of a datetime-local input using the
picker, the length of the current value of the input is used to determine
whether or not to return a value with second/millisecond precision.

This is approach is incorrect, since the value could be empty, while the
step attribute can specify second/millisecond precision. To fix, ensure
the DateTimeChooserParameters knows whether the input has second and
millisecond fields. That information can then be used by the UIProcess
to return a correctly formatted value to the WebProcess.

Test: fast/forms/datetimelocal/datetimelocal-editable-components/datetimelocal-choose-value-from-picker.html

  • html/BaseDateAndTimeInputType.cpp:

(WebCore::BaseDateAndTimeInputType::handleDOMActivateEvent):
(WebCore::BaseDateAndTimeInputType::didChangeValueFromControl):
(WebCore::BaseDateAndTimeInputType::setupDateTimeChooserParameters):

Moved this method from HTMLInputElement to the input type, since it is
specific to date/time input types, and to leverage the existing
shouldHaveSecondField and shouldHaveMillisecondField methods when
building the DateTimeChooserParameters.

  • html/BaseDateAndTimeInputType.h:
  • html/HTMLInputElement.cpp:
  • html/HTMLInputElement.h:
  • platform/DateTimeChooserParameters.h:

Added hasSecondField and hasMillisecondField members, so that the UIProcess
knows whether or not to return a string that contains seconds/milliseconds.

(WebCore::DateTimeChooserParameters::encode const):
(WebCore::DateTimeChooserParameters::decode):

Source/WebKit:

  • UIProcess/mac/WebDateTimePickerMac.mm:

(-[WKDateTimePicker updatePicker:]):
(-[WKDateTimePicker dateFormatStringForType:]):

Do not use the length of the value to determine whether or seconds and
milliseconds should be present, since the value can be empty.

Instead, use the new information in DateTimeChooserParameters, matching
the visual appearance of the input.

Tools:

Added a method to UIScriptController to simulate selecting a date using
the presented date picker.

  • TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl:
  • TestRunnerShared/UIScriptContext/UIScriptController.h:

(WTR::UIScriptController::chooseDateTimePickerValue):

  • WebKitTestRunner/mac/UIScriptControllerMac.h:
  • WebKitTestRunner/mac/UIScriptControllerMac.mm:

(WTR::UIScriptControllerMac::chooseDateTimePickerValue):

LayoutTests:

Added a test to to verify that the presence of seconds and milliseconds
in the value of a datetime-local input after selecting a date using the
picker matches the configuration.

  • fast/forms/datetimelocal/datetimelocal-editable-components/datetimelocal-choose-value-from-picker-expected.txt: Added.
  • fast/forms/datetimelocal/datetimelocal-editable-components/datetimelocal-choose-value-from-picker.html: Added.
  • resources/ui-helper.js:

(window.UIHelper.chooseDateTimePickerValue):

4:48 AM Changeset in webkit [272367] by commit-queue@webkit.org
  • 6 edits
    2 deletes in trunk

Unreviewed, reverting r272338.
https://bugs.webkit.org/show_bug.cgi?id=221403

Broke a layout test percentage-height-in-flexbox.html

Reverted changeset:

"the nested grid container which has replaced item with 'max-
height' has wrong width(0px)."
https://bugs.webkit.org/show_bug.cgi?id=219194
https://trac.webkit.org/changeset/272338

4:01 AM Changeset in webkit [272366] by Martin Robinson
  • 19 edits in trunk

Improve the serialization of scroll-snap-type and scroll-snap-align
https://bugs.webkit.org/show_bug.cgi?id=221324

LayoutTests/imported/w3c:

Reviewed by Alex Christensen.

  • web-platform-tests/css/css-scroll-snap/inheritance-expected.txt:
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-snap-align-computed-expected.txt:
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-snap-align-valid-expected.txt:
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-snap-type-valid-expected.txt:
  • web-platform-tests/css/cssom/cssstyledeclaration-csstext-expected.txt:

Source/WebCore:

Reviewed by Alex Christensen.

Improve serialization of scroll-snap-type and scroll-snap-align. When the values
are the same for both dimensions or a default value is used, don't add it to
the list of consumed tokens. The primitive conversion process will handle this
default correctly and serialization will produce a canonical serialization correctly.

We handle this case for both serialization of the style (eg getPropertyValue) and
for serialization of computed style.

No new tests.

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::valueForScrollSnapAlignment): For the computed style don't serialize
the second value if it is the same as the first.

  • css/parser/CSSPropertyParser.cpp:

(WebCore::consumeScrollSnapAlign): Only add the second value to the value list if it
exists and if it is different than the first value.
(WebCore::consumeScrollSnapType): Only add the second value if it is a non-default value.

LayoutTests:

Reviewed by Alex Christensen.

  • css3/scroll-snap/resources/iframe-content-rtl.html:
  • css3/scroll-snap/resources/iframe-content.html:
  • css3/scroll-snap/scroll-snap-inherit-expected.txt:
  • css3/scroll-snap/scroll-snap-inherit.html:
  • css3/scroll-snap/scroll-snap-initial-expected.txt:
  • css3/scroll-snap/scroll-snap-initial.html:
  • css3/scroll-snap/scroll-snap-property-computed-style-expected.txt:
  • css3/scroll-snap/scroll-snap-property-computed-style.js:
  • platform/ios-wk2/imported/w3c/web-platform-tests/css/cssom/cssstyledeclaration-csstext-expected.txt:
3:02 AM Changeset in webkit [272365] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

Modifications to Tools/wpe/install-dependencies
https://bugs.webkit.org/show_bug.cgi?id=221254

Patch by Eleni Maria Stea <hikiko> on 2021-02-04
Reviewed by Adrian Perez de Castro.

  • wpe/install-dependencies: python-psutil is replaced with

python3-psutil that is present in Debian/Ubuntu/Raspbian. libegl-mesa0
is added in the dependencies list as it's required for libegl1-mesa-dev
to be installed.

2:42 AM Changeset in webkit [272364] by ysuzuki@apple.com
  • 8 edits in trunk/Source/JavaScriptCore

[JSC] Implement Object.entries in C++
https://bugs.webkit.org/show_bug.cgi?id=221380

Reviewed by Alexey Shvayka.

This patch implements Object.entries in C++ because it is more efficient.
It is not using dynamic feature (like, calling a callback). And in C++,
we can avoid JSArray allocations for @Object.@getOwnPropertyNames.

This patch also removes unnecessary JS private functions, @propertyIsEnumerable,
and @getOwnPropertyNames.

  • builtins/BuiltinNames.h:
  • builtins/ObjectConstructor.js:

(entries): Deleted.

  • bytecode/LinkTimeConstant.h:
  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):

  • runtime/JSGlobalObjectFunctions.cpp:
  • runtime/JSGlobalObjectFunctions.h:
  • runtime/ObjectConstructor.cpp:

(JSC::ObjectConstructor::finishCreation):
(JSC::JSC_DEFINE_HOST_FUNCTION):

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

Make shouldComputeLogicalWidthFromAspectRatioAndInsets writing mode aware
https://bugs.webkit.org/show_bug.cgi?id=221328

Patch by Rob Buis <rbuis@igalia.com> on 2021-02-04
Reviewed by Manuel Rego Casasnovas.

Source/WebCore:

Commit r271061 added support for aspect-ratio on positioned elements, taking into account
insets, but it failed to take writing-mode into account when checking insets. This change fixes
that by asking logical values.

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::shouldComputeLogicalWidthFromAspectRatioAndInsets const):

LayoutTests:

Enable some tests that pass now.

12:47 AM Changeset in webkit [272362] by Lauro Moura
  • 2 edits in trunk/Source/WebKit

REGRESSION(r267763): [GTK][WPE] Broken main thread assertion in MemoryPressureMonitor
https://bugs.webkit.org/show_bug.cgi?id=217363

Reviewed by Carlos Garcia Campos.

r267763 changed a number of NetworkProcessProxy methods to be
accessible only from the main thread, including allNetworkProcesses().
This function was called from the memory pressure monitor thread
directly to notify high memory usage.

This was causing the debug bots to abort prematurely with many crashes
when in reality just a memory pressure warning would be enough.

Covered by existing tests.

  • UIProcess/linux/MemoryPressureMonitor.cpp:

(WebKit::MemoryPressureMonitor::start): Dispatch the memory pressure
notification in the main thread.

12:42 AM Changeset in webkit [272361] by magomez@igalia.com
  • 4 edits in trunk

[WPE][GTK] Wrong rendering when using opacity filters on hw accelerated layers
https://bugs.webkit.org/show_bug.cgi?id=221330

Reviewed by Carlos Garcia Campos.

Source/WebCore:

Apply the opacity filter value to the color components as well, as we need premultiplied alpha
for blending.

Covered by existent tests.

  • platform/graphics/texmap/TextureMapperShaderProgram.cpp:

LayoutTests:

Update expected image.

  • platform/gtk/css3/filters/effect-opacity-hw-expected.png:
Note: See TracTimeline for information about the timeline view.