Timeline



Aug 3, 2021: Today

6:37 PM Changeset in webkit [280626] by commit-queue@webkit.org
  • 6 edits in trunk

Add functions for parsing URL query string
https://bugs.webkit.org/show_bug.cgi?id=228122

Patch by Risul Islam <risul_islam@apple.com> on 2021-08-03
Reviewed by Darin Adler.

Source/WTF:

Added parsing of URL query strings.

  • wtf/KeyValuePair.h:

(WTF::operator== const):

  • wtf/URL.cpp:

(WTF::URL::differingQueryParameters):
(WTF::lengthOfURLIgnoringQueryAndFragments):
(WTF::URL::isEqualIgnoringQueryAndFragments):
(WTF::URL::removeQueryParameters):

  • wtf/URL.h:

Tools:

Added the test functions required for parsing URL query string.

  • TestWebKitAPI/Tests/WTF/URL.cpp:

(TestWebKitAPI::TEST_F):

6:23 PM Changeset in webkit [280625] by Lauro Moura
  • 2 edits
    4 deletes in trunk/LayoutTests

[WPE] Remove deprecated color-scheme baselines and expectations

Unreviewed test gardening.

  • platform/glib/TestExpectations:
  • platform/wpe/imported/w3c/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-attribute-changes-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-empty-content-value-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-first-valid-applies-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-insert-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-no-content-value-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-presentational-hint-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-remove-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-remove-head-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-single-value-in-body-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-single-value-in-head-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-single-value-in-shadow-tree-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/css/css-color-adjust/parsing/color-scheme-computed-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/css/css-color-adjust/parsing/color-scheme-invalid-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/css/css-color-adjust/parsing/color-scheme-valid-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/css/mediaqueries/prefers-color-scheme-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-attribute-changes-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-empty-content-value-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-first-valid-applies-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-insert-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-no-content-value-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-presentational-hint-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-remove-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-remove-head-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-single-value-in-body-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-single-value-in-head-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-single-value-in-shadow-tree-expected.txt: Removed.
6:10 PM Changeset in webkit [280624] by Ryan Haddad
  • 12 edits
    1 delete in trunk

Unreviewed, reverting r280531 and r280589.

caused

Reverted changesets:

"[Cocoa] Remove support for AVAssetImageGenerator"
https://bugs.webkit.org/show_bug.cgi?id=228560
https://commits.webkit.org/r280531

"REGRESSION (r280531): multiple modern-media-controls tests
have become flaky timeouts"
https://bugs.webkit.org/show_bug.cgi?id=228714
https://commits.webkit.org/r280589

5:02 PM Changeset in webkit [280623] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Null check self.session after calling _cancel instead of before
https://bugs.webkit.org/show_bug.cgi?id=228757
<rdar://79224868>

Patch by Alex Christensen <achristensen@webkit.org> on 2021-08-03
Reviewed by Geoffrey Garen.

_cancel already null checks self.session before using it.
It seems to be setting self.session to null after the null check, so move the null check to before we use it.
This should fix an occasional crash during teardown.

  • platform/network/cocoa/WebCoreNSURLSession.mm:

(-[WebCoreNSURLSessionDataTask _restart]):

4:40 PM Changeset in webkit [280622] by Jonathan Bedard
  • 2 edits in trunk/Tools

[webkitpy] Handle case where no existing simulators are defined
https://bugs.webkit.org/show_bug.cgi?id=228758
<rdar://problem/81484040>

Reviewed by Ryan Haddad.

  • Scripts/webkitpy/xcode/simulated_device.py:

(SimulatedDeviceManager._disambiguate_device_type): If there are no available devices,
find the newest device identifier which matches the requested type.

4:14 PM Changeset in webkit [280621] by Jonathan Bedard
  • 2 edits in trunk/Tools

[build.webkit.org] Simulator temp files filling up disk (Follow-up fix)
https://bugs.webkit.org/show_bug.cgi?id=228335
<rdar://problem/81171840>

Reviewed by Ryan Haddad.

  • CISupport/kill-old-processes:

(main): Use tempdir environment variable, link to underlying bug.

3:52 PM Changeset in webkit [280620] by Brent Fulgham
  • 3 edits in trunk/Source/WebKit

[iOS] Allow check for nvram "emu" state on internal OS builds
https://bugs.webkit.org/show_bug.cgi?id=228745
<rdar://problem/78363040>

Reviewed by Per Arne Vollan.

Allow access to the 'emu' nvram variable when running on an Apple Internal OS build. This
reduces spurious sandbox violation reports, and improves the performance of test systems.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in:
3:23 PM Changeset in webkit [280619] by jer.noble@apple.com
  • 4 edits in trunk/Tools

WebKitTestRunner should dump current results in the case of a timeout
https://bugs.webkit.org/show_bug.cgi?id=228706
<rdar://79154019>

Reviewed by Jonathan Bedard.

When WKTR encounters a timeout, it current prints a "PID UNRESPONSIVE" and "FAIL: timed out" message,
but the WebContent process may not actually be unresponsive; it may just be waiting for an event
which hasn't fired, or a condition to become true. In these cases, it would be very helpful to see
the results of the test so far, so as to diagnose what is keeping the test from running to completion.

When, in the WKTR process, TestInvocation's "waitToDumpWatchdogTimer" fires, first try sending a message
to the InjectedBundle, requesting it to "ForceImmediateCompletion". Only if this message fails to be
acted upon will WKTR print the "PID UNRESPONSIVE" message.

  • WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:

(WTR::InjectedBundle::didReceiveMessageToPage):

  • WebKitTestRunner/TestInvocation.cpp:

(WTR::TestInvocation::TestInvocation):
(WTR::TestInvocation::waitToDumpWatchdogTimerFired):
(WTR::TestInvocation::initializeWaitForPostDumpWatchdogTimerIfNeeded):
(WTR::TestInvocation::invalidateWaitForPostDumpWatchdogTimer):
(WTR::TestInvocation::waitForPostDumpWatchdogTimerFired):
(WTR::TestInvocation::done):

  • WebKitTestRunner/TestInvocation.h:
3:17 PM Changeset in webkit [280618] by Jonathan Bedard
  • 2 edits in trunk/Tools

[webkitpy] Narrow set of terminated simulator processes
https://bugs.webkit.org/show_bug.cgi?id=228752
<rdar://problem/81479508>

Reviewed by Alexey Proskuryakov.

  • Scripts/webkitpy/xcode/simulated_device.py:

(SimulatedDeviceManager.initialize_devices): Only check Simulator.app.
(SimulatedDeviceManager.tear_down): Only kill Simulator.app processes.
(SimulatedDevice._delete): Print error if simctl delete fails, but continue.

3:11 PM Changeset in webkit [280617] by Eric Hutchison
  • 2 edits in trunk/LayoutTests

Re-baseline imported/w3c/web-platform-tests/html/dom/idlharness.https.html.
https://bugs.webkit.org/show_bug.cgi?id=228198.

Unreviewed re-baseline.

  • platform/ipad/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
1:54 PM Changeset in webkit [280616] by Russell Epstein
  • 4 edits in branches/safari-612.1-branch/Source

Cherry-pick r280603. rdar://problem/81473647

[Live Text] [iOS] Provide a presenting UIViewController for machine readable code actions so that they are related to the same view
https://bugs.webkit.org/show_bug.cgi?id=228722

Reviewed by Tim Horton.

Source/WebCore/PAL:

  • pal/spi/cocoa/VisionKitCoreSPI.h:

Source/WebKit:

  • UIProcess/ios/WKContentViewInteraction.mm: (-[WKContentView _updateContextMenuForMachineReadableCodeForImageAnalysis:]): Added. (-[WKContentView imageAnalysisGestureDidBegin:]): (-[WKContentView imageAnalysisGestureDidTimeOut:]):

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

1:54 PM Changeset in webkit [280615] by Russell Epstein
  • 2 edits in branches/safari-612.1-branch/Source/WebCore

Cherry-pick r280591. rdar://problem/81471312

Update FirstWithDOMWindowReuseRestriction linked-on-or-after check to latest MacOS/iOS betas
https://bugs.webkit.org/show_bug.cgi?id=228736
<rdar://81419036>

Reviewed by Chris Dumez.

  • platform/cocoa/VersionChecks.h: Delay enabling new behavior to MacOS 12 and iOS 15 SDK since new behavior is enabled for those OS versions.

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

1:54 PM Changeset in webkit [280614] by Russell Epstein
  • 2 edits in branches/safari-612.1-branch/Source/WebCore

Cherry-pick r280589. rdar://problem/81471336

REGRESSION (r280531): multiple modern-media-controls tests have become flaky timeouts
https://bugs.webkit.org/show_bug.cgi?id=228714
<rdar://problem/81426715>

Reviewed by Eric Carlson.

Update preferredRenderingMode() to reflect what setUpVideoRendering() actually does: use
MediaRenderingToContext whenever possible. This will cause setUpVideoRendering() to be
called from updateStates() to create the context, even if the element has been marked as
!isVisible() by RenderVideo upon removal from the DOM.

Also, in renderingModeChanged(), don't attempt to deduce whether scheduleUpdateStates()
should be called; just call it universally.

  • platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp: (WebCore::MediaPlayerPrivateAVFoundation::preferredRenderingMode const): (WebCore::MediaPlayerPrivateAVFoundation::renderingModeChanged):

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

1:54 PM Changeset in webkit [280613] by Russell Epstein
  • 4 edits in branches/safari-612.1-branch/Source/WebCore

Cherry-pick r280587. rdar://problem/81473679

Crash in webgl/1.0.x/conformance/textures/misc/texture-with-flip-y-and-premultiply-alpha.html
https://bugs.webkit.org/show_bug.cgi?id=223920
<rdar://problem/76261913>

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2021-08-03
Reviewed by Kenneth Russell.

After enabling WEBGL_depth_texture, the getDataFormat would assert for case of
format == RGBA, type == UNSIGNED_SHORT. UNSIGNED_SHORT is intended for
format == DEPTH_COMPONENT.

Instead, return error if the data conversion cannot be done. This is better in all
cases than doing non-expected data conversion in release build and assertion in
debug builds.

Tested by webgl/1.0.x/conformance/textures/misc/texture-with-flip-y-and-premultiply-alpha.html
(disabled for now).

  • html/canvas/WebGLRenderingContextBase.cpp: (WebCore::WebGLRenderingContextBase::texImageArrayBufferViewHelper):
  • platform/graphics/GraphicsContextGL.cpp: (WebCore::getDataFormat): (WebCore::packPixels): (WebCore::GraphicsContextGL::extractTextureData):
  • platform/graphics/GraphicsContextGL.h:

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

1:37 PM Changeset in webkit [280612] by Russell Epstein
  • 1 copy in branches/safari-612.1-branch

New branch.

1:36 PM Changeset in webkit [280611] by timothy_horton@apple.com
  • 16 edits in trunk/Source/WebKit

Remove unused processDidTransitionTo{Foreground,Background} IPC
https://bugs.webkit.org/show_bug.cgi?id=228328

Reviewed by Wenson Hsieh.

  • GPUProcess/GPUProcess.cpp:

(WebKit::GPUProcess::processDidTransitionToForeground): Deleted.
(WebKit::GPUProcess::processDidTransitionToBackground): Deleted.

  • GPUProcess/GPUProcess.h:
  • GPUProcess/GPUProcess.messages.in:
  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::processDidTransitionToForeground): Deleted.
(WebKit::NetworkProcess::processDidTransitionToBackground): Deleted.

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkProcess.messages.in:
  • NetworkProcess/cocoa/NetworkProcessCocoa.mm:

(WebKit::NetworkProcess::platformProcessDidTransitionToBackground): Deleted.
(WebKit::NetworkProcess::platformProcessDidTransitionToForeground): Deleted.

  • NetworkProcess/curl/NetworkProcessCurl.cpp:

(WebKit::NetworkProcess::platformProcessDidTransitionToForeground): Deleted.
(WebKit::NetworkProcess::platformProcessDidTransitionToBackground): Deleted.

  • NetworkProcess/soup/NetworkProcessSoup.cpp:

(WebKit::NetworkProcess::platformProcessDidTransitionToForeground): Deleted.
(WebKit::NetworkProcess::platformProcessDidTransitionToBackground): Deleted.

  • UIProcess/GPU/GPUProcessProxy.cpp:

(WebKit::GPUProcessProxy::updateProcessAssertion):

  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::updateProcessAssertion):

  • UIProcess/WebAuthentication/WebAuthnProcessProxy.cpp:

(WebKit::WebAuthnProcessProxy::updateProcessAssertion):

  • WebAuthnProcess/WebAuthnProcess.cpp:

(WebKit::WebAuthnProcess::processDidTransitionToForeground): Deleted.
(WebKit::WebAuthnProcess::processDidTransitionToBackground): Deleted.

  • WebAuthnProcess/WebAuthnProcess.h:
  • WebAuthnProcess/WebAuthnProcess.messages.in:

These messages do nothing.

1:29 PM Changeset in webkit [280610] by timothy_horton@apple.com
  • 2 edits
    1 delete in trunk/LayoutTests

fast/dom/navigator-iOS-userAgent.html fails on iPad because the platform is not "iPhone" or "iPad"
https://bugs.webkit.org/show_bug.cgi?id=228750

Reviewed by Dean Jackson.

  • fast/dom/navigator-iOS-userAgent.html:
  • platform/ipad/fast/dom/navigator-iOS-userAgent-expected.txt: Removed.

This test fails on iPad in the default configuration because navigator.platform is MacIntel
due to desktop-class browsing. To maintain previous behavior of the test, revert to mobile mode.
This lets us delete the iPad-specific results.
Also, fix a typo in the variable names.

1:26 PM Changeset in webkit [280609] by Yijia Huang
  • 6 edits in trunk/Source/JavaScriptCore

[ARM64] Use link register instead of pinning a register for materializing big load constants
https://bugs.webkit.org/show_bug.cgi?id=228710

Reviewed by Mark Lam.

Previously, we pin a register as a temp for materializing a large constant that cannot fit in
Load/Store imm form. This is not efficient since the register allocator has one less register
to allocate from. To solve this problem, we should switch to using the link register as the temp
on ARM64.

  • b3/B3Common.cpp:

(JSC::B3::linkRegister):
(JSC::B3::pinnedExtendedOffsetAddrRegister): Deleted.

  • b3/B3Common.h:
  • b3/air/AirAllocateRegistersAndStackAndGenerateCode.cpp:

(JSC::B3::Air::callFrameAddr):

  • b3/air/AirCode.cpp:

(JSC::B3::Air::Code::Code):

  • b3/air/AirLowerStackArgs.cpp:

(JSC::B3::Air::lowerStackArgs):

1:04 PM Changeset in webkit [280608] by timothy_horton@apple.com
  • 2 edits in trunk/LayoutTests

[ iPad ] fast/dom/collection-iterators.html fails
https://bugs.webkit.org/show_bug.cgi?id=228657

Unreviewed rebaseline.

  • platform/ipad/fast/dom/collection-iterators-expected.txt:

Actually land the expected file, not a diff like in r280494.

12:27 PM Changeset in webkit [280607] by Lauro Moura
  • 4 edits in trunk/LayoutTests

[GLIB] Garden some passing tests

Unreviewed test gardening.

Covering latest WPE expected to fail but passing tests.

  • platform/glib/TestExpectations:
  • platform/gtk/TestExpectations:
  • platform/wpe/TestExpectations:
12:24 PM Changeset in webkit [280606] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[iOS] Fix sandbox violation in GPU process
https://bugs.webkit.org/show_bug.cgi?id=228743
<rdar://problem/81334849>

Reviewed by Brent Fulgham.

Allow reading "hw.product" in the GPU process' sandbox.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb:
12:15 PM Changeset in webkit [280605] by fpizlo@apple.com
  • 3 edits in trunk/Source/bmalloc

pas_segmented_vector's iterate functions should handle memory ordering correctly
https://bugs.webkit.org/show_bug.cgi?id=228746

Reviewed by Mark Lam.

Also fixed a missing store-store fence in bitfit_directory's use of a segmented vector.

  • libpas/src/libpas/pas_bitfit_directory.c:

(pas_bitfit_directory_get_first_free_view):

  • libpas/src/libpas/pas_segmented_vector.h:
12:00 PM Changeset in webkit [280604] by Jonathan Bedard
  • 6 edits in trunk/Tools

[webkitscmpy] Add access to git config
https://bugs.webkit.org/show_bug.cgi?id=228597
<rdar://problem/81283644>

Reviewed by Aakash Jain.

  • Scripts/libraries/webkitscmpy/setup.py: Bump version.
  • Scripts/libraries/webkitscmpy/webkitscmpy/init.py: Ditto.
  • Scripts/libraries/webkitscmpy/webkitscmpy/local/git.py:

(Git.config): Return git configuration as dictionary.

  • Scripts/libraries/webkitscmpy/webkitscmpy/mocks/local/git.py:
  • Scripts/libraries/webkitscmpy/webkitscmpy/test/git_unittest.py:

(test_config): Test repository configuration.
(test_global_config): Test global configuration.

11:22 AM Changeset in webkit [280603] by Devin Rousso
  • 4 edits in trunk/Source

[Live Text] [iOS] Provide a presenting UIViewController for machine readable code actions so that they are related to the same view
https://bugs.webkit.org/show_bug.cgi?id=228722

Reviewed by Tim Horton.

Source/WebCore/PAL:

  • pal/spi/cocoa/VisionKitCoreSPI.h:

Source/WebKit:

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _updateContextMenuForMachineReadableCodeForImageAnalysis:]): Added.
(-[WKContentView imageAnalysisGestureDidBegin:]):
(-[WKContentView imageAnalysisGestureDidTimeOut:]):

10:49 AM Changeset in webkit [280602] by Jonathan Bedard
  • 2 edits in trunk/Tools

[check-github-mirror-integrity] Handle slow Svn query
https://bugs.webkit.org/show_bug.cgi?id=228741

Reviewed by Aakash Jain.

  • Scripts/check-github-mirror-integrity: Pull commit from GitHub before Subversion.
10:34 AM Changeset in webkit [280601] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

Crash while reading WebGL drawing buffer if canvas image buffer allocation fails
https://bugs.webkit.org/show_bug.cgi?id=228737
<rdar://81150042>

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2021-08-03
Reviewed by Brent Fulgham.

Source/WebCore:

The crash would happen for example when running out of memory during snapshot
or printing. Snapshots and printing forces the WebGL canvas to be "painted
to document", which would then trigger the crash.

Other code-paths that invoke CanvasBase::makeRenderingResultsAvailable,
e.g. toDataURL and drawImage will check for the buffer before, and
as such are not testable in the sense that adding the test would trigger
the bug.

Test: webgl/webgl-oom-paint-document-no-crash.html

  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::paintRenderingResultsToCanvas):
Check for the nullptr from CanvasBase::buffer(). This might happen
when the ImageBuffer was not allocated due to memory constraints.

LayoutTests:

Add a test for failure to paint the WebGL canvas to document.
Trigger the mode by using printing.

Other code-paths that invoke CanvasBase::makeRenderingResultsAvailable,
e.g. toDataURL and drawImage will check for the buffer before, and
as such are not testable in the sense that adding the test would trigger
the bug.

  • webgl/webgl-oom-paint-document-no-crash-expected.html: Added.
  • webgl/webgl-oom-paint-document-no-crash.html: Added.
10:05 AM Changeset in webkit [280600] by youenn@apple.com
  • 2 edits in trunk/Source/WTF

RealtimeMediaSource::audioSamplesAvailable is calling malloc as part of locking in audio thread
https://bugs.webkit.org/show_bug.cgi?id=228688

Reviewed by Eric Carlson.

Allow allocations in lockSlow since allocations might happen in rare case and not for each lockSlow call.

  • wtf/Lock.cpp:

(WTF::Lock::lockSlow):
(WTF::Lock::unlockSlow):
(WTF::Lock::unlockFairlySlow):

9:54 AM Changeset in webkit [280599] by Antti Koivisto
  • 3 edits
    2 adds in trunk

REGRESSION(r279050): Crash under CSSImageValue::createDeprecatedCSSOMWrapper with cursor images
https://bugs.webkit.org/show_bug.cgi?id=228735

Reviewed by Alex Christensen.

Source/WebCore:

CSSCursorImageValue is not a CSSImageValue. This used to work before r279050 because they had
the URL field in the same offset.

Test: fast/css/cursor-image-cssvalue.html

  • css/CSSValue.cpp:

(WebCore::CSSValue::createDeprecatedCSSOMWrapper const):

Don't do any special handling for CSSCursorImageValue. They are exposed as generic (deprecated)
CSS values with cssText only.

LayoutTests:

  • fast/css/cursor-image-cssvalue-expected.txt: Added.
  • fast/css/cursor-image-cssvalue.html: Added.
9:51 AM Changeset in webkit [280598] by Russell Epstein
  • 1 copy in tags/Safari-612.1.15.4.15

Tag Safari-612.1.15.4.15.

9:50 AM Changeset in webkit [280597] by Russell Epstein
  • 6 edits in branches/safari-612.1.15.4-branch/Source

Speculative build fix. rdar://79147214.

9:44 AM Changeset in webkit [280596] by Russell Epstein
  • 3 edits in branches/safari-612.1.15.4-branch/Source/WebInspectorUI

Cherry-pick r280574. rdar://problem/81466166

Web Inspector: [AppleWin] Speculative internal build fix for copying InspectorBackendCommands.js
https://bugs.webkit.org/show_bug.cgi?id=228716

Reviewed by Maciej Stachowiak.

Speculative fix for AppleWin port internal build by using the correct directory for JSC headers. Also update the
logging message to reflect that the file will by copied later in the build.

  • WebInspectorUI.vcxproj/WebInspectorUI.make:
  • WebInspectorUI.vcxproj/build-webinspectorui.pl:

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

9:42 AM Changeset in webkit [280595] by Russell Epstein
  • 8 edits in branches/safari-612.1.15.4-branch/Source

Versioning.

WebKit-7612.1.15.4.15

9:42 AM Changeset in webkit [280594] by commit-queue@webkit.org
  • 5 edits in trunk/Source/WebCore

Use WeakPtr instead of manual raw pointer management in URLSearchParams
https://bugs.webkit.org/show_bug.cgi?id=228723

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

This is less error prone.

  • html/DOMURL.cpp:

(WebCore::DOMURL::~DOMURL): Deleted.

  • html/DOMURL.h:
  • html/URLSearchParams.cpp:

(WebCore::URLSearchParams::URLSearchParams):

  • html/URLSearchParams.h:

(WebCore::URLSearchParams::associatedURLDestroyed): Deleted.

8:59 AM Changeset in webkit [280593] by youenn@apple.com
  • 10 edits in trunk

ReadableStream's pipeTo() and pipeThrough() don't handle options in spec-perfect way
https://bugs.webkit.org/show_bug.cgi?id=227690
<rdar://problem/80482144>

LayoutTests/imported/w3c:

Reviewed by Alexey Shvayka .

  • web-platform-tests/streams/piping/general.any-expected.txt:
  • web-platform-tests/streams/piping/general.any.worker-expected.txt:
  • web-platform-tests/streams/piping/pipe-through.any-expected.txt:
  • web-platform-tests/streams/piping/pipe-through.any.js:

(tryPipeThrough):
(test.get assert_equals):

  • web-platform-tests/streams/piping/pipe-through.any.worker-expected.txt:
  • web-platform-tests/streams/piping/throwing-options.any-expected.txt:
  • web-platform-tests/streams/piping/throwing-options.any.worker-expected.txt:

Source/WebCore:

Reviewed by Alexey Shvayka.

Order getters as per spec for pipeTo and pipeThrough.
Handle the case of null dictionaries as if they are undefined
Use getter instead of using 'in' as per WebIDL spec.
If options is undefined, skip calling any getter.

Covered by updated test.

  • Modules/streams/ReadableStream.js:

(pipeThrough):
(pipeTo):

8:50 AM Changeset in webkit [280592] by cathiechen
  • 4 edits
    6 adds in trunk/LayoutTests

Import css/css-sizing/aspect-ratio tests from WPT
https://bugs.webkit.org/show_bug.cgi?id=228734

Reviewed by Rob Buis.

LayoutTests/imported/w3c:

Import css/css-sizing/aspect-ratio tests from WPT commit f76ae81001.

  • web-platform-tests/css/css-sizing/aspect-ratio/abspos-021-expected.xht: Added.
  • web-platform-tests/css/css-sizing/aspect-ratio/abspos-021.html: Added.
  • web-platform-tests/css/css-sizing/aspect-ratio/flex-aspect-ratio-027-expected.xht: Added.
  • web-platform-tests/css/css-sizing/aspect-ratio/flex-aspect-ratio-027.html: Added.
  • web-platform-tests/css/css-sizing/aspect-ratio/flex-aspect-ratio-028-expected.xht: Added.
  • web-platform-tests/css/css-sizing/aspect-ratio/flex-aspect-ratio-028.html: Added.
  • web-platform-tests/css/css-sizing/aspect-ratio/w3c-import.log:

LayoutTests:

8:33 AM Changeset in webkit [280591] by youenn@apple.com
  • 2 edits in trunk/Source/WebCore

Update FirstWithDOMWindowReuseRestriction linked-on-or-after check to latest MacOS/iOS betas
https://bugs.webkit.org/show_bug.cgi?id=228736
<rdar://81419036>

Reviewed by Chris Dumez.

  • platform/cocoa/VersionChecks.h:

Delay enabling new behavior to MacOS 12 and iOS 15 SDK since new behavior is enabled for those OS versions.

6:26 AM Changeset in webkit [280590] by Philippe Normand
  • 2 edits in trunk/Tools

[WPE][GTK] SVN_REVISION drifting away if bots don't re-run cmake
https://bugs.webkit.org/show_bug.cgi?id=228290

Reviewed by Michael Catanzaro.

The apply-build-revision-to-files.py script wasn't expanding the BUILD_REVISION beyond the
first run, because it processes files generated by CMake already, and expanding the
BUILD_REVISION once prevents further expansions. So the proposed solution is to always
expand BuildRevision.h.in from that script, and for .pc files, to restore the BUILD_REVISION
template before updating the file.

  • glib/apply-build-revision-to-files.py:

(main):

6:15 AM Changeset in webkit [280589] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore

REGRESSION (r280531): multiple modern-media-controls tests have become flaky timeouts
https://bugs.webkit.org/show_bug.cgi?id=228714
<rdar://problem/81426715>

Reviewed by Eric Carlson.

Update preferredRenderingMode() to reflect what setUpVideoRendering() actually does: use
MediaRenderingToContext whenever possible. This will cause setUpVideoRendering() to be
called from updateStates() to create the context, even if the element has been marked as
!isVisible() by RenderVideo upon removal from the DOM.

Also, in renderingModeChanged(), don't attempt to deduce whether scheduleUpdateStates()
should be called; just call it universally.

  • platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:

(WebCore::MediaPlayerPrivateAVFoundation::preferredRenderingMode const):
(WebCore::MediaPlayerPrivateAVFoundation::renderingModeChanged):

2:10 AM Changeset in webkit [280588] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Add standard logical properties to CSS keyword completion
https://bugs.webkit.org/show_bug.cgi?id=228548

Patch by Sonia Singla <soniasingla.1812@gmail.com> on 2021-08-03
Reviewed by Devin Rousso.

  • UserInterface/Models/CSSKeywordCompletions.js:
1:35 AM Changeset in webkit [280587] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebCore

Crash in webgl/1.0.x/conformance/textures/misc/texture-with-flip-y-and-premultiply-alpha.html
https://bugs.webkit.org/show_bug.cgi?id=223920
<rdar://problem/76261913>

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2021-08-03
Reviewed by Kenneth Russell.

After enabling WEBGL_depth_texture, the getDataFormat would assert for case of
format == RGBA, type == UNSIGNED_SHORT. UNSIGNED_SHORT is intended for
format == DEPTH_COMPONENT.

Instead, return error if the data conversion cannot be done. This is better in all
cases than doing non-expected data conversion in release build and assertion in
debug builds.

Tested by webgl/1.0.x/conformance/textures/misc/texture-with-flip-y-and-premultiply-alpha.html
(disabled for now).

  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::texImageArrayBufferViewHelper):

  • platform/graphics/GraphicsContextGL.cpp:

(WebCore::getDataFormat):
(WebCore::packPixels):
(WebCore::GraphicsContextGL::extractTextureData):

  • platform/graphics/GraphicsContextGL.h:
12:38 AM Changeset in webkit [280586] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

Check that shadow root is connected in invalidateStyleAfterStyleSheetChange
https://bugs.webkit.org/show_bug.cgi?id=227383

Patch by Rob Buis <rbuis@igalia.com> on 2021-08-03
Reviewed by Antti Koivisto.

Source/WebCore:

Check that shadow root is connected in invalidateStyleAfterStyleSheetChange.

Test: fast/shadow-dom/shadow-tree-removal-crash.html

  • style/StyleScope.cpp:

(WebCore::Style::Scope::updateActiveStyleSheets):

LayoutTests:

Add test for this.

  • fast/shadow-dom/shadow-tree-removal-crash-expected.txt: Added.
  • fast/shadow-dom/shadow-tree-removal-crash.html: Added.

Aug 2, 2021: Yesterday

11:54 PM Changeset in webkit [280585] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

Align implementation of PositionIterator::isCandidate() on Position::isCandidate()
https://bugs.webkit.org/show_bug.cgi?id=228635

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

The bug fixed in r280381 was due to the fact that PositionIterator::isCandidate() and
Position::isCandidate() had gone out of sync. To prevent future bugs of this kind, this patch
modifies PositionIterator::isCandidate() so that it is aligned with
PositionIterator::isCandidate() (except when an m_anchorType check is needed) and add code
comments in both functions to ensure the same changes are always applied to them.

  • dom/Position.cpp:

(WebCore::Position::isCandidate const): Add a comment to make sure we update PositionIterator
when changing that function. Also use auto for a local variable like in PositionIterator.

  • dom/PositionIterator.cpp:

(WebCore::PositionIterator::isCandidate const): Add a comment to make sure we update Position
when changing that function. Rearrange the code to use positionBeforeOrAfterNodeIsCandidate
and early return when the node is a <html> element (these are not behavior changes). For
block flow / grid / flexbox renderers, add a special handling when the anchor node is a root
editable element ; also change the fallback value returned at the end of the function (these
are two behavior changes).

9:21 PM Changeset in webkit [280584] by Jean-Yves Avenard
  • 10 edits in trunk

Source/WebCore:
[WebAudio] webm; properly trim frames according to the codec delay information
https://bugs.webkit.org/show_bug.cgi?id=228140
rdar://problem/80883882

Reviewed by Eric Carlson.

Add frame-perfect decoding for Opus and Vorbis in WebM container.
Unfortunately, due to a vorbis decoder bug, it is not possible to test that
vorbis decoding returns the right number of frames.
Amend Opus test to ensure the right amount of frames are returned.

  • platform/audio/cocoa/AudioFileReaderCocoa.cpp:

(WebCore::AudioFileReader::demuxWebMData const):
(WebCore::passthroughInputDataCallback): AudioToolbox internal logging could overflow
if we used packet descriptions with offsets, so we take the most commonly used scenario
where we have a single packet to decode at a time.
(WebCore::AudioFileReader::decodeWebMData const):

  • platform/graphics/cocoa/AudioTrackPrivateWebM.cpp:

(WebCore::AudioTrackPrivateWebM::codecDelay const):
(WebCore::AudioTrackPrivateWebM::setDiscardPadding):
(WebCore::AudioTrackPrivateWebM::discardPadding const):

  • platform/graphics/cocoa/AudioTrackPrivateWebM.h:
  • platform/graphics/cocoa/SourceBufferParserWebM.cpp:

(WebCore::SourceBufferParserWebM::OnElementEnd): Fly-by, ensure m_didParseInitializationDataCallback
only ever accessed on client thread.
(WebCore::SourceBufferParserWebM::OnBlockGroupEnd):

  • platform/graphics/cocoa/SourceBufferParserWebM.h: Add trimming data callback.

Only mark WEBCORE_EXPORT the methods that need it.
(WebCore::SourceBufferParserWebM::appendData):
(WebCore::SourceBufferParserWebM::setDidParseTrimmingDataCallback):

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::canPlayType const): Make canPlayType(webm/audio; codecs=vorbis)
returns maybe if feature flag set.

LayoutTests:
https://bugs.webkit.org/show_bug.cgi?id=228140
rdar://problem/80883882

Reviewed by Eric Carlson.

https://bugs.webkit.org/show_bug.cgi?id=228140

  • webaudio/decode-audio-data-webm-opus-expected.txt:
  • webaudio/decode-audio-data-webm-opus.html:
9:18 PM Changeset in webkit [280583] by Yijia Huang
  • 8 edits in trunk/Source/JavaScriptCore

Add a new pattern to instruction selector to utilize UMULL supported by ARM64
https://bugs.webkit.org/show_bug.cgi?id=228721

Reviewed by Saam Barati.

Unsigned Multiply Long (UMULL) multiplies two 32-bit register values, and writes the
result to the destination register. This instruction is an alias of the UMADDL instruction.

umull xd wn wm

The equivalent pattern is: d = ZExt32(n) * ZExt32(m)

Given B3 IR:
Int @0 = ArgumentReg(%x0)
Int @1 = Trunc(@0)
Int @2 = ArgumentReg(%x1)
Int @3 = Trunc(@2)
Int @4 = ZExt32(@1)
Int @5 = ZExt32(@3)
Int @6 = Mul(@4, @5)
Void@7 = Return(@6, Terminal)

Old optimized AIR
Move %x0, %x0, @4
Move %x1, %x1, @5
Mul %x0, %x1, %x0, @6
Ret %x0, @7

New optimized AIR
MultiplyZeroExtend %x0, %x1, %x0, @6
Ret %x0, @7

  • assembler/MacroAssemblerARM64.h:

(JSC::MacroAssemblerARM64::multiplyZeroExtend32):

  • assembler/testmasm.cpp:

(JSC::testMultiplyZeroExtend32):

  • b3/B3LowerToAir.cpp:
  • b3/air/AirOpcode.opcodes:
  • b3/testb3.h:
  • b3/testb3_2.cpp:

(testMulArgs32SignExtend):
(testMulArgs32ZeroExtend):

  • b3/testb3_3.cpp:

(addArgTests):

8:53 PM Changeset in webkit [280582] by Chris Dumez
  • 5 edits
    3 adds in trunk

[COOP] Cross-Origin-Opener-Policy header parsing fails when report-to parameter is present
https://bugs.webkit.org/show_bug.cgi?id=228719

Reviewed by Geoff Garen.

LayoutTests/imported/w3c:

Rebaseline WPT test that is now failing a bit later.

  • web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/reporting-redirect-with-same-origin-allow-popups.https-expected.txt:

Source/WebCore:

Cross-Origin-Opener-Policy header parsing fails when report-to parameter is present, because
parseStructuredFieldValue() doesn't handle parameters whose value is double-quoted:

Test: http/wpt/cross-origin-opener-policy/header-parsing-with-report-to.https.html

  • platform/network/HTTPParsers.cpp:

(WebCore::parseStructuredFieldValue):

LayoutTests:

Add layout test coverage.

  • http/wpt/cross-origin-opener-policy/header-parsing-with-report-to.https-expected.txt: Added.
  • http/wpt/cross-origin-opener-policy/header-parsing-with-report-to.https.html: Added.
8:39 PM WebKitGTK/2.32.x edited by clopez@igalia.com
(diff)
8:36 PM Changeset in webkit [280581] by commit-queue@webkit.org
  • 5 edits in trunk/Source/WebCore

[css-cleanup] Replace webkit- prefix properties with Standard CSS Properties in Source/
https://bugs.webkit.org/show_bug.cgi?id=228697

Patch by Sonia Singla <soniasingla.1812@gmail.com> on 2021-08-02
Reviewed by Frédéric Wang.

  • Modules/mediacontrols/mediaControlsApple.css:

(video::-webkit-media-controls-closed-captions-container h3,):

  • Modules/mediacontrols/mediaControlsBase.css:

(video::-webkit-media-controls-closed-captions-container h3,):
(video::-webkit-media-controls-closed-captions-container li.selected::before,):

  • css/html.css:

(p):
(blockquote):
(figure):
(hr):
(h1):
(:is(article, aside, nav, section) h1):
(:is(article, aside, nav, section) :is(article, aside, nav, section) h1):
(:is(article, aside, nav, section) :is(article, aside, nav, section) :is(article, aside, nav, section) h1):
(:is(article, aside, nav, section) :is(article, aside, nav, section) :is(article, aside, nav, section) :is(article, aside, nav, section) h1):
(:is(article, aside, nav, section) :is(article, aside, nav, section) :is(article, aside, nav, section) :is(article, aside, nav, section) :is(article, aside, nav, section) h1):
(h2):
(h3):
(h4):
(h5):
(h6):
(ul, menu, dir):
(ol):
(dd):
(dl):
(ol ul, ul ol, ul ul, ol ol):
(legend):
(fieldset):

  • css/mathml.css:

(mi):
(msub > mi:first-child, msubsup > mi:first-child):
(msubsup > mi:first-child + * + *):

8:30 PM Changeset in webkit [280580] by Lauro Moura
  • 4 edits in trunk/LayoutTests

[GLIB] Garden some passing tests

Unreviewed test gardening.

  • platform/glib/TestExpectations:
  • platform/gtk/TestExpectations:
  • platform/wpe/TestExpectations:
8:11 PM Changeset in webkit [280579] by Yijia Huang
  • 7 edits in trunk/Source/JavaScriptCore

Add new patterns to instruction selector to utilize AND/EOR/ORR-with-shift supported by ARM64
https://bugs.webkit.org/show_bug.cgi?id=228675

Reviewed by Saam Barati.

Bitwise AND (shifted register) performs a bitwise AND of a register value and an optionally-shifted
register value, and writes the result to the destination register.

and wd wn wm ShiftType #amount

The equivalent pattern is: n & (m ShiftType amount)

Given B3 IR:
Int @0 = ArgumentReg(%x0)
Int @1 = ArgumentReg(%x1)
Int @2 = Const32(63)
Int @3 = Shl(@1, $63(@2))
Int @4 = BitAnd(@0, @3)
Void@5 = Return(@4, Terminal)

Old optimized AIR
Lshift %x1, $63, %x1, @3
And %x0, %x1, %x0, @4
Ret %x0, @5

New optimized AIR
AndLeftShift %x0, %x1, $63, %x0, @4
Ret %x0, @5

Bitwise Exclusive OR (shifted register) performs a bitwise Exclusive OR of a register value and an
optionally-shifted register value, and writes the result to the destination register.

eor wd wn wm ShiftType #amount

The equivalent pattern is: n (m ShiftType amount)

Given B3 IR:
Int @0 = ArgumentReg(%x0)
Int @1 = ArgumentReg(%x1)
Int @2 = Const32(63)
Int @3 = Shl(@1, $63(@2))
Int @4 = BitXor(@0, @3)
Void@5 = Return(@4, Terminal)

Old optimized AIR
Lshift %x1, $63, %x1, @3
Xor %x0, %x1, %x0, @4
Ret %x0, @5

New optimized AIR
XorLeftShift %x0, %x1, $63, %x0, @4
Ret %x0, @5

Bitwise OR (shifted register) performs a bitwise (inclusive) OR of a register value and an
optionally-shifted register value, and writes the result to the destination register.

orr wd wn wm ShiftType #amount

The equivalent pattern is: n | (m ShiftType amount)

Given B3 IR:
Int @0 = ArgumentReg(%x0)
Int @1 = ArgumentReg(%x1)
Int @2 = Const32(63)
Int @3 = Shl(@1, $63(@2))
Int @4 = BitOr(@0, @3)
Void@5 = Return(@4, Terminal)

Old optimized AIR
Lshift %x1, $63, %x1, @3
Or %x0, %x1, %x0, @4
Ret %x0, @5

New optimized AIR
OrLeftShift %x0, %x1, $63, %x0, @4
Ret %x0, @5

  • assembler/MacroAssemblerARM64.h:

(JSC::MacroAssemblerARM64::andLeftShift32):
(JSC::MacroAssemblerARM64::andRightShift32):
(JSC::MacroAssemblerARM64::andUnsignedRightShift32):
(JSC::MacroAssemblerARM64::andLeftShift64):
(JSC::MacroAssemblerARM64::andRightShift64):
(JSC::MacroAssemblerARM64::andUnsignedRightShift64):
(JSC::MacroAssemblerARM64::xorLeftShift32):
(JSC::MacroAssemblerARM64::xorRightShift32):
(JSC::MacroAssemblerARM64::xorUnsignedRightShift32):
(JSC::MacroAssemblerARM64::xorLeftShift64):
(JSC::MacroAssemblerARM64::xorRightShift64):
(JSC::MacroAssemblerARM64::xorUnsignedRightShift64):
(JSC::MacroAssemblerARM64::orLeftShift32):
(JSC::MacroAssemblerARM64::orRightShift32):
(JSC::MacroAssemblerARM64::orUnsignedRightShift32):
(JSC::MacroAssemblerARM64::orLeftShift64):
(JSC::MacroAssemblerARM64::orRightShift64):
(JSC::MacroAssemblerARM64::orUnsignedRightShift64):

  • assembler/testmasm.cpp:

(JSC::testAndLeftShift32):
(JSC::testAndRightShift32):
(JSC::testAndUnsignedRightShift32):
(JSC::testAndLeftShift64):
(JSC::testAndRightShift64):
(JSC::testAndUnsignedRightShift64):
(JSC::testXorLeftShift32):
(JSC::testXorRightShift32):
(JSC::testXorUnsignedRightShift32):
(JSC::testXorLeftShift64):
(JSC::testXorRightShift64):
(JSC::testXorUnsignedRightShift64):
(JSC::testOrLeftShift32):
(JSC::testOrRightShift32):
(JSC::testOrUnsignedRightShift32):
(JSC::testOrLeftShift64):
(JSC::testOrRightShift64):
(JSC::testOrUnsignedRightShift64):

  • b3/B3LowerToAir.cpp:
  • b3/air/AirOpcode.opcodes:
  • b3/testb3.h:
  • b3/testb3_2.cpp:

(testAndLeftShift32):
(testAndRightShift32):
(testAndUnsignedRightShift32):
(testAndLeftShift64):
(testAndRightShift64):
(testAndUnsignedRightShift64):
(testXorLeftShift32):
(testXorRightShift32):
(testXorUnsignedRightShift32):
(testXorLeftShift64):
(testXorRightShift64):
(testXorUnsignedRightShift64):
(testOrLeftShift32):
(testOrRightShift32):
(testOrUnsignedRightShift32):
(testOrLeftShift64):
(testOrRightShift64):
(testOrUnsignedRightShift64):
(addBitTests):

6:45 PM Changeset in webkit [280578] by ysuzuki@apple.com
  • 7 edits in trunk/Source/JavaScriptCore

[JSC] Use loadPair / storePair in YarrJIT
https://bugs.webkit.org/show_bug.cgi?id=228687

Reviewed by Mark Lam.

Use loadPair / storePair if possible in YarrJIT. Currently, we are not
deploying Spooler in YarrJIT, but we should do that in the future too.

In this patch, we also add appropriate fallback code in loadPair / storePair:
the offset of these functions are small enough so that we should consider
overflowing case. If it overflows, we use two loads or stores.

This patch also adds loadPair32 and storePair32 to all macro assembler so that
we can call it without CPU(ARM64). Internally, two loads or stores are combined.

  • assembler/MacroAssemblerARM64.h:

(JSC::MacroAssemblerARM64::loadPair32):
(JSC::MacroAssemblerARM64::loadPair64):
(JSC::MacroAssemblerARM64::loadPair64WithNonTemporalAccess):
(JSC::MacroAssemblerARM64::storePair32):
(JSC::MacroAssemblerARM64::storePair64):
(JSC::MacroAssemblerARM64::storePair64WithNonTemporalAccess):

  • assembler/MacroAssemblerARMv7.h:

(JSC::MacroAssemblerARMv7::loadPair32):
(JSC::MacroAssemblerARMv7::storePair32):

  • assembler/MacroAssemblerMIPS.h:

(JSC::MacroAssemblerMIPS::loadPair32):
(JSC::MacroAssemblerMIPS::storePair32):

  • assembler/MacroAssemblerX86Common.h:

(JSC::MacroAssemblerX86Common::loadPair32):
(JSC::MacroAssemblerX86Common::storePair32):

  • assembler/testmasm.cpp:

(JSC::testLoadStorePair32):
(JSC::testLoadStorePair64Int64):

  • yarr/YarrJIT.cpp:
6:11 PM Changeset in webkit [280577] by ysuzuki@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, fix accidental narrowing
https://bugs.webkit.org/show_bug.cgi?id=228613

Note that this narrowing does not matter semantically since we mask this value with 0x7f.

  • yarr/YarrJIT.h:

(JSC::Yarr::BoyerMooreBitmap::addCharacters):

6:05 PM Changeset in webkit [280576] by Peng Liu
  • 4 edits in trunk

[GPUP] RemoteAudioSession::setPreferredBufferSize() does not change its preferredBufferSize
https://bugs.webkit.org/show_bug.cgi?id=228720

Reviewed by Jer Noble.

Source/WebKit:

RemoteAudioSession should update its preferredBufferSize in
setPreferredBufferSize(). Otherwise, the preferredBufferSize
will become inconsistent with the value in the GPU process.

No new tests. Fix API test failures.

  • WebProcess/GPU/media/RemoteAudioSession.cpp:

(WebKit::RemoteAudioSession::setPreferredBufferSize):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/PreferredAudioBufferSize.mm:

(TEST_F):

5:55 PM Changeset in webkit [280575] by Kate Cheney
  • 2 edits in trunk/Source/WebKit

[App Privacy Report] Domains are deleted for ephemeral website data stores
https://bugs.webkit.org/show_bug.cgi?id=228708
<rdar://problem/81282432>

Reviewed by Alex Christensen.

No new tests. Since this data is not stored in WebKit, we have no
way to test when it gets deleted or not. I tested manually and requested
an automated test at the correct networking layer.

Only clear Privacy Report data if the website data store is
persistent. Safari calls the SPI to remove website data for ephemeral
data stores in some cases that are unrelated to a user clearing
website data or history and thus should not clear App Privacy Report
data. Additionally, it is unexpected that clearing an ephemeral data
store would clear disk data, as website data is only stored in memory
in this case.

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(WebKit::NetworkSessionCocoa::removeNetworkWebsiteData):

5:55 PM Changeset in webkit [280574] by Patrick Angle
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: [AppleWin] Speculative internal build fix for copying InspectorBackendCommands.js
https://bugs.webkit.org/show_bug.cgi?id=228716

Reviewed by Maciej Stachowiak.

Speculative fix for AppleWin port internal build by using the correct directory for JSC headers. Also update the
logging message to reflect that the file will by copied later in the build.

  • WebInspectorUI.vcxproj/WebInspectorUI.make:
  • WebInspectorUI.vcxproj/build-webinspectorui.pl:
5:49 PM Changeset in webkit [280573] by Jean-Yves Avenard
  • 4 edits
    2 adds in trunk

[WebAudio] Add webm/vorbis container support
https://bugs.webkit.org/show_bug.cgi?id=228139
rdar://80883073

Reviewed by Jer Noble.

Source/WebKit:

Access to the com.apple.audio.AudioComponentRegistrar is denied by the sandbox which
prevents registering the Vorbis Audio Component. So we instantiate the decoder right before
setting up the sandbox.
This is a workaround for rdar://81137953.
Test: webaudio/decode-audio-data-webm-vorbis.html

  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::initializeSandbox):

LayoutTests:

  • platform/mac/TestExpectations:
  • webaudio/decode-audio-data-webm-vorbis-expected.txt: Added.
  • webaudio/decode-audio-data-webm-vorbis.html: Added.
5:24 PM Changeset in webkit [280572] by Russell Epstein
  • 1 copy in tags/Safari-612.1.26.0.1

Tag Safari-612.1.26.0.1.

5:19 PM Changeset in webkit [280571] by Russell Epstein
  • 1 copy in tags/Safari-612.1.26.1.1

Tag Safari-612.1.26.1.1.

4:43 PM Changeset in webkit [280570] by ysuzuki@apple.com
  • 4 edits
    3 adds in trunk

[JSC] Yarr BoyerMoore search should support character-class
https://bugs.webkit.org/show_bug.cgi?id=228613

Reviewed by Saam Barati.

JSTests:

  • stress/regexp-bm-search-character-non-fixed-size.js: Added.

(shouldBe):

  • stress/regexp-bm-search-many-candidate-zero-length.js: Added.

(shouldBe):
(regexp.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.0.1.2.3.4.5.6.7.8.9.t.v.n.r):

  • stress/regexp-bm-search-non-fixed-size.js: Added.

(shouldBe):

Source/JavaScriptCore:

This patch adds character-class support for BoyerMoore lookahead search in Yarr.
Currently, we only support fixed-sized character-class. We can extend it for repeat cases in the future.

To apply this character-class thing to jQuery's RegExp, we also allow non-fixed-sized disjunction.
For example, /aaaa.*|bbbb/'s disjunction is not fixed-sized. But still we can use (aaaa|bbbb) prefix since
this part is fixed-sized and we know minimum-size of this disjunction is 4.

Plus, instead of giving up BoyerMoore search when we found non-supported terms, we shorten BoyerMoore search
length not to include this term so that we can still have a chance to leverage BoyerMoore search. In the case
of /aaaa|bbbb|ccc(d|e|f)/, we previously gave up since it finds (d|e|f). But now, instead we shorten the length
from 4 to 3, and construct search pattern with aaa|bbb|ccc.

This patch improves jquery-todomvc-regexp by 20%.

ToT Patched

jquery-todomvc-regexp 545.3561+-0.6968 451.6117+-0.4613 definitely 1.2076x faster

This improves Speedometer2/jQuery-TodoMVC by 2%.

----------------------------------------------------------------------------------------------------------------------------------
| subtest | ms | ms | b / a | pValue (significance using False Discovery Rate) |
----------------------------------------------------------------------------------------------------------------------------------
| Elm-TodoMVC |123.470833 |123.550000 |1.000641 | 0.841600 |
| VueJS-TodoMVC |26.883333 |26.950000 |1.002480 | 0.846732 |
| EmberJS-TodoMVC |127.708333 |127.754167 |1.000359 | 0.934206 |
| BackboneJS-TodoMVC |50.545833 |50.445833 |0.998022 | 0.679610 |
| Preact-TodoMVC |20.879167 |20.791667 |0.995809 | 0.796541 |
| AngularJS-TodoMVC |137.479167 |137.275000 |0.998515 | 0.729817 |
| Vanilla-ES2015-TodoMVC |69.079167 |68.912500 |0.997587 | 0.524325 |
| Inferno-TodoMVC |65.604167 |66.120833 |1.007876 | 0.145549 |
| Flight-TodoMVC |77.029167 |76.708333 |0.995835 | 0.518562 |
| Angular2-TypeScript-TodoMVC |40.516667 |40.812500 |1.007302 | 0.513386 |
| VanillaJS-TodoMVC |54.762500 |54.895833 |1.002435 | 0.647381 |
| jQuery-TodoMVC |255.950000 |250.425000 |0.978414 | 0.000000 (significant) |
| EmberJS-Debug-TodoMVC |341.745833 |342.804167 |1.003097 | 0.219937 |
| React-TodoMVC |88.854167 |88.700000 |0.998265 | 0.568405 |
| React-Redux-TodoMVC |151.266667 |150.804167 |0.996942 | 0.256403 |
| Vanilla-ES2015-Babel-Webpack-TodoMVC |65.783333 |65.645833 |0.997910 | 0.437464 |
----------------------------------------------------------------------------------------------------------------------------------
a mean = 246.52898
b mean = 246.85128
pValue = 0.3927330278
(Bigger means are better.)
1.001 times better
Results ARE NOT significant

  • yarr/YarrJIT.cpp:

(JSC::Yarr::BoyerMooreInfo::shortenLength):
(JSC::Yarr::BoyerMooreInfo::setAll):
(JSC::Yarr::BoyerMooreInfo::addCharacters):
(JSC::Yarr::BoyerMooreInfo::addRanges):

  • yarr/YarrJIT.h:

(JSC::Yarr::BoyerMooreBitmap::add):
(JSC::Yarr::BoyerMooreBitmap::addCharacters):
(JSC::Yarr::BoyerMooreBitmap::addRanges):
(JSC::Yarr::BoyerMooreBitmap::setAll):
(JSC::Yarr::BoyerMooreBitmap::isAllSet const):

4:39 PM Changeset in webkit [280569] by stephan.szabo@sony.com
  • 2 edits in trunk/Source/JavaScriptCore

[PlayStation] Make C files in testapi compile with a C standard rather than C++ one
https://bugs.webkit.org/show_bug.cgi?id=228701

Reviewed by Ross Kirsling.

  • shell/PlatformPlayStation.cmake: Set standard for C files in testapi
4:19 PM Changeset in webkit [280568] by Jean-Yves Avenard
  • 2 edits in trunk/Source/WebKit

Crash in -[WKFullScreenWindowController windowDidExitFullScreen:]
https://bugs.webkit.org/show_bug.cgi?id=228694
rdar://79569881

Reviewed by Jer Noble.

It appears that [WKFullScreenWindowController finishedEnterFullScreenAnimation] can
cause the retain count to be decreased (this is the only explanation that makes any
sense considering the crash and when the regression started following bug 227243).
No test, can't reproduce.

  • UIProcess/mac/WKFullScreenWindowController.mm:

(-[WKFullScreenWindowController setVideoFullscreenManagerClient:]): Add utility method
to remove duplicated code.
(-[WKFullScreenWindowController didExitPictureInPicture]):
(-[WKFullScreenWindowController windowDidEnterFullScreen:]):
(-[WKFullScreenWindowController windowDidFailToExitFullScreen:]):
(-[WKFullScreenWindowController windowDidExitFullScreen:]):
(-[WKFullScreenWindowController _manager]): fly-by make style consistent with other
similar methods.

4:01 PM Changeset in webkit [280567] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit

Add log when experimental network loader is used
https://bugs.webkit.org/show_bug.cgi?id=227932

Reviewed by Chris Dumez.

We are seeing some reports of serious loading issues in bugs related to rdar://80330028
and we think they are because of problems related to the experimental network loader, which can be
enabled in experimental features but is not ready for use on the internet yet.
Add a log so we can determine for sure that is what is going on in those cases.

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(WebKit::NetworkSessionCocoa::NetworkSessionCocoa):

3:54 PM Changeset in webkit [280566] by Nikita Vasilyev
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Network: sorting of transfer size for failed requests is causing the ordering to change every layout
https://bugs.webkit.org/show_bug.cgi?id=228712

Reviewed by Devin Rousso.

  • UserInterface/Views/NetworkTableContentView.js:

(WI.NetworkTableContentView.prototype._generateSortComparator):
Don't change the item order when both values are NaN.

3:37 PM Changeset in webkit [280565] by Fujii Hironori
  • 4 edits in trunk/Source
[Win] ASSERTION FAILED: evt->type() == eventNames().keydownEvent
evt->type() == eventNames().keypressEvent in WebView::interpretKeyEvent since r280492

https://bugs.webkit.org/show_bug.cgi?id=228690

Reviewed by Brent Fulgham.

Source/WebKit:

  • WebProcess/WebPage/win/WebPageWin.cpp:

(WebKit::WebPage::handleEditingKeyboardEvent): Return early unless the event is keydown or keypress.

Source/WebKitLegacy/win:

  • WebView.cpp:

(WebView::handleEditingKeyboardEvent): Return early unless the event is keydown or keypress.

3:23 PM Changeset in webkit [280564] by sihui_liu@apple.com
  • 2 edits in trunk/Source/WebCore

Assertion is not acquired in network process when opening a SQLite database
https://bugs.webkit.org/show_bug.cgi?id=228705

Reviewed by Chris Dumez.

Opening database may require database file lock.

  • platform/sql/SQLiteDatabase.cpp:

(WebCore::SQLiteDatabase::open):

3:21 PM Changeset in webkit [280563] by Eric Hutchison
  • 2 edits in trunk/LayoutTests

[ iOS iPad ] editing/inserting/insert-paragraph-separator-with-html-elements-crash.html is a flaky failure.
https://bugs.webkit.org/show_bug.cgi?id=228718.

Unreviewed test gardening.

  • platform/ipad/TestExpectations:
3:04 PM Changeset in webkit [280562] by achristensen@apple.com
  • 4 edits in trunk

Don't change invalid baseURLs from loadData or loadHTMLString to about:blank
https://bugs.webkit.org/show_bug.cgi?id=228717
<rdar://79909343>

Reviewed by Chris Dumez.

Source/WebKit:

r278737 fixed a compatibility bug from r272469 but introduced a crash when the base URL does not successfully parse.
r279450 fixed that crash but introduced a new behavior change that changes the URL to about:blank. This didn't seem
to change anything because window.location is about:blank with and without the change, but WKWebView.URL did change,
which broke at least one app. This undoes the functionality change from r279450 and keeps the crash fix, which are
both covered by API tests. I also manually verified this fixes the app in the radar.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::loadData):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/LoadAlternateHTMLString.mm:

(TEST):

2:55 PM Changeset in webkit [280561] by Lauro Moura
  • 5 edits
    1 delete in trunk/LayoutTests

[GLIB] Gardening some failures and removing deprecated baseline.

Unreviewed test gardening.

Also unified skips for tests loading pdf as img.src.

  • platform/glib/TestExpectations:
  • platform/gtk-wayland/TestExpectations:
  • platform/gtk/TestExpectations:
  • platform/wpe/TestExpectations:
  • platform/wpe/imported/w3c/web-platform-tests/dom/events/Event-timestamp-high-resolution-expected.txt: Removed.
2:53 PM Changeset in webkit [280560] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

[results.webkit.org] Fix incorrect conditional check
https://bugs.webkit.org/show_bug.cgi?id=228666

Patch by Kevin Neal <kevin_neal@apple.com> on 2021-08-02
Reviewed by Jonathan Bedard.

  • Scripts/libraries/resultsdbpy/resultsdbpy/view/static/library/js/components/TimelineComponents.js:
2:46 PM Changeset in webkit [280559] by rniwa@webkit.org
  • 8 edits
    2 adds in trunk

Add CheckedRef
https://bugs.webkit.org/show_bug.cgi?id=227164

Reviewed by Geoffrey Garen.

Source/WTF:

Like r278344, this patch introduces a new type of smart pointer, CheckedRef,
which lets each object keep track of pointers pointing to the object.

As with CheckedPtr, the purpose of the internal counter for CheckedRef is
to release assert that there is no outstanding pointer at the time of destruction
instead of keeping the object alive when there is one.

This patch also removes makeCheckedPtr in favor of using CheckedPtr with
template argument deduction in C++17.

  • WTF.xcodeproj/project.pbxproj:
  • wtf/CMakeLists.txt:
  • wtf/CheckedPtr.h:

(WTF::CheckedPtr::CheckedPtr): Added variants which take CheckedRef as arguments.
(WTF::makeCheckedPtr): Deleted.
(WTF::CanMakeCheckedPtr): Moved to CheckedRef.h

  • wtf/CheckedRef.h: Added.

(WTF::CheckedRef::~CheckedRef): Added.
(WTF::CheckedRef::CheckedRef): Added.
(WTF::CheckedRef::isHashTableDeletedValue const): Added.
(WTF::CheckedRef::isHashTableEmptyValue const): Added.
(WTF::CheckedRef::hashTableEmptyValue): Added.
(WTF::CheckedRef::ptrAllowingHashTableEmptyValue const): Added.
(WTF::CheckedRef::ptrAllowingHashTableEmptyValue): Added.
(WTF::CheckedRef::ptr const): Added.
(WTF::CheckedRef::ptr): Added.
(WTF::CheckedRef::get const): Added.
(WTF::CheckedRef::get): Added.
(WTF::CheckedRef::operator-> const): Added.
(WTF::CheckedRef::operator->): Added.
(WTF::CheckedRef::operator const T& const): Added.
(WTF::CheckedRef::operator T&): Added.
(WTF::CheckedRef::operator! const): Added.
(WTF::CheckedRef::operator=): Added.
(WTF::CheckedRef::releasePtr): Added. Returns m_ptr without calling decrementPtrCount.
This is equivalent of leakPtr in Ref but we don't call this that since CheckedRef or
CheckedPtr is generally not used to manage the object lifetime.
(WTF::CheckedRef::poison): Added.
(WTF::CheckedRef::unpoison): Added.
(WTF::is): Added.
(WTF::CheckedRefHashTraits): Added.
(WTF::CheckedRefHashTraits::emptyValue): Added.
(WTF::CheckedRefHashTraits::constructEmptyValue): Added.
(WTF::CheckedRefHashTraits::isEmptyValue): Added.
(WTF::CheckedRefHashTraits::peek): Added.
(WTF::CheckedRefHashTraits::take): Added.
(WTF::CanMakeCheckedPtr): Moved from CheckedPtr.h

  • wtf/Forward.h:

Tools:

Added some unit tests for CheckedRef and updated the unit tests
for CheckedPtr per the removal of makeCheckedPtr.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WTF/CheckedPtr.cpp:

(WTF_CheckedPtr.CheckedRef): Added

  • TestWebKitAPI/Tests/WTF/CheckedRef.cpp: Added.

(TestWebKitAPI..CheckedObject): Added.
(TestWebKitAPI..DerivedCheckedObject): Added.
(WTF_CheckedRef.Basic): Added.
(WTF_CheckedRef.DerivedClass): Added.
(WTF_CheckedRef.HashSet): Added.

2:39 PM Changeset in webkit [280558] by Devin Rousso
  • 8 edits in trunk/Source

[Live Text] SPI for machine readable codes is only available on iOS
https://bugs.webkit.org/show_bug.cgi?id=228711

Reviewed by Tim Horton.

Source/WebCore/PAL:

  • pal/spi/cocoa/VisionKitCoreSPI.h:

Source/WebKit:

  • UIProcess/ios/WKContentViewInteraction.h:
  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _setUpImageAnalysis]):
(-[WKContentView _tearDownImageAnalysis]):
(-[WKContentView imageAnalysisGestureDidBegin:]):
(-[WKContentView imageAnalysisGestureDidTimeOut:]):
(-[WKContentView continueContextMenuInteraction:]):
(-[WKContentView contextMenuInteraction:willEndForConfiguration:animator:]):

Source/WTF:

  • wtf/PlatformEnableCocoa.h:
  • wtf/PlatformHave.h:
2:20 PM Changeset in webkit [280557] by ap@apple.com
  • 1 delete in trunk/JSTests/test262/test/built-ins/Temporal/now

Remove stale 'now' subdirectory in JSTests/test262/test/built-ins/Temporal, as we ended up with both 'now' and 'Now', breaking checkout on case insensitive file systems

2:09 PM Changeset in webkit [280556] by youenn@apple.com
  • 15 edits in trunk/Source/WebKit

Attribute nw connections to the page bundle identifier
https://bugs.webkit.org/show_bug.cgi?id=228649

Reviewed by Eric Carlson.

Send page identifier from WebProcess to NetworkProcess when creating a WebRTC socket.
Use page identifier to get the attributed bundle identifier.
For that purpose, we need to hop to main thread to get it, then go back to rtc thread to create it.
We do so by using callOnMainRunLoopAndWait when NetworkRTCProvider does not have the information for the provided page identifier.
We then make use of nw_parameters_set_source_application_by_bundle_id to set the bundle identifier on TCP and UDP connections.

  • NetworkProcess/NetworkSession.cpp:

(WebKit::NetworkSession::attributedBundleIdentifierFromPageIdentifier const):

  • NetworkProcess/NetworkSession.h:
  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(WebKit::NetworkSessionCocoa::addWebPageNetworkParameters):
(WebKit::NetworkSessionCocoa::removeWebPageNetworkParameters):

  • NetworkProcess/webrtc/NetworkRTCProvider.cpp:

(WebKit::NetworkRTCProvider::attributedBundleIdentifierFromPageIdentifier):
(WebKit::NetworkRTCProvider::createUDPSocket):
(WebKit::NetworkRTCProvider::createClientTCPSocket):

  • NetworkProcess/webrtc/NetworkRTCProvider.h:
  • NetworkProcess/webrtc/NetworkRTCProvider.messages.in:
  • NetworkProcess/webrtc/NetworkRTCTCPSocketCocoa.h:
  • NetworkProcess/webrtc/NetworkRTCTCPSocketCocoa.mm:

(WebKit::NetworkRTCTCPSocketCocoa::createClientTCPSocket):
(WebKit::NetworkRTCTCPSocketCocoa::NetworkRTCTCPSocketCocoa):

  • NetworkProcess/webrtc/NetworkRTCUDPSocketCocoa.h:
  • NetworkProcess/webrtc/NetworkRTCUDPSocketCocoa.mm:

(WebKit::NetworkRTCUDPSocketCocoaConnections::create):
(WebKit::NetworkRTCUDPSocketCocoa::createUDPSocket):
(WebKit::NetworkRTCUDPSocketCocoa::NetworkRTCUDPSocketCocoa):
(WebKit::NetworkRTCUDPSocketCocoaConnections::NetworkRTCUDPSocketCocoaConnections):
(WebKit::NetworkRTCUDPSocketCocoaConnections::configureParameters):

  • Platform/spi/Cocoa/NWParametersSPI.h:
  • WebProcess/Network/webrtc/LibWebRTCProvider.cpp:

(WebKit::RTCSocketFactory::RTCSocketFactory):
(WebKit::RTCSocketFactory::CreateUdpSocket):
(WebKit::RTCSocketFactory::CreateClientTcpSocket):
(WebKit::LibWebRTCProvider::createSocketFactory):

  • WebProcess/Network/webrtc/LibWebRTCSocketFactory.cpp:

(WebKit::LibWebRTCSocketFactory::createUdpSocket):
(WebKit::LibWebRTCSocketFactory::createClientTcpSocket):

  • WebProcess/Network/webrtc/LibWebRTCSocketFactory.h:
2:07 PM Changeset in webkit [280555] by Ayumi Kojima
  • 2 edits in trunk/LayoutTests

[ MacOS wk2 ] compositing/video/video-object-fit.html is a flaky timeout on EWS.
https://bugs.webkit.org/show_bug.cgi?id=228713

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
1:45 PM Changeset in webkit [280554] by Russell Epstein
  • 3 edits
    2 adds in branches/safari-612.1.26.1-branch

Cherry-pick r280551. rdar://problem/81427001

Calling unobserve on ResizeObserver should not clear existing observations in active targets
https://bugs.webkit.org/show_bug.cgi?id=228693

Reviewed by Chris Dumez.

Source/WebCore:

The bug was caused by ResizeObserver::removeObservation removing it from the active targets.

Note that there is nothing in the specification which alludes to this behavior,
and the new behavior is consistent with Firefox and the way IntersectionObserver works:
https://drafts.csswg.org/resize-observer/#dom-resizeobserver-unobserve

To keep elements alive while they're in the active targets but not in the observation targets,
this patch also makes each element of the active observation as opaque roots of ResizeObserver
in ResizeObserver::isReachableFromOpaqueRoots.

Test: resize-observer/resize-observer-keeps-element-of-queued-entry-alive.html

  • page/ResizeObserver.cpp: (WebCore::ResizeObserver::deliverObservations): (WebCore::ResizeObserver::isReachableFromOpaqueRoots const): (WebCore::ResizeObserver::removeObservation):

LayoutTests:

Added a regression test.

  • resize-observer/resize-observer-keeps-element-of-queued-entry-alive-expected.txt: Added.
  • resize-observer/resize-observer-keeps-element-of-queued-entry-alive.html: Added.

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

1:45 PM Changeset in webkit [280553] by Russell Epstein
  • 3 edits
    2 adds in branches/safari-612.1.26.1-branch

Cherry-pick r280549. rdar://problem/81427001

Source/WebCore:
REGRESSION(r279800): IntersectionObserver may never get a delivery of an observation if the element
has been unobserved and is disconnected
https://bugs.webkit.org/show_bug.cgi?id=228679

Reviewed by Chris Dumez.

The bug was caused by the elements of the pending entries not being considered as opaque roots
of the intersection observer. If the intersection observer is no longer observing those elements,
the JS wrapper of the intersection observer may be collected erroneously.

This patch addresses this issue by explicitly treating the elements of pending entries as
opaque roots of the intersection observer in IntersectionObserver::isReachableFromOpaqueRoots.

Test: intersection-observer/intersection-observer-keeps-element-of-queued-entry-alive.html

  • page/IntersectionObserver.cpp: (WebCore::IntersectionObserver::isReachableFromOpaqueRoots const):

LayoutTests:
REGRESSION(r279800): IntersectionObserver may never get a delivery of an observation if the element has been unobserved and is disconnected
https://bugs.webkit.org/show_bug.cgi?id=228679

Reviewed by Chris Dumez.

Added a regression test.

  • intersection-observer/intersection-observer-keeps-element-of-queued-entry-alive-expected.txt: Added.
  • intersection-observer/intersection-observer-keeps-element-of-queued-entry-alive.html: Added.

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

1:40 PM Changeset in webkit [280552] by Russell Epstein
  • 8 edits in branches/safari-612.1.26.1-branch/Source

Versioning.

WebKit-7612.1.26.1.1

1:03 PM Changeset in webkit [280551] by rniwa@webkit.org
  • 3 edits
    2 adds in trunk

Calling unobserve on ResizeObserver should not clear existing observations in active targets
https://bugs.webkit.org/show_bug.cgi?id=228693

Reviewed by Chris Dumez.

Source/WebCore:

The bug was caused by ResizeObserver::removeObservation removing it from the active targets.

Note that there is nothing in the specification which alludes to this behavior,
and the new behavior is consistent with Firefox and the way IntersectionObserver works:
https://drafts.csswg.org/resize-observer/#dom-resizeobserver-unobserve

To keep elements alive while they're in the active targets but not in the observation targets,
this patch also makes each element of the active observation as opaque roots of ResizeObserver
in ResizeObserver::isReachableFromOpaqueRoots.

Test: resize-observer/resize-observer-keeps-element-of-queued-entry-alive.html

  • page/ResizeObserver.cpp:

(WebCore::ResizeObserver::deliverObservations):
(WebCore::ResizeObserver::isReachableFromOpaqueRoots const):
(WebCore::ResizeObserver::removeObservation):

LayoutTests:

Added a regression test.

  • resize-observer/resize-observer-keeps-element-of-queued-entry-alive-expected.txt: Added.
  • resize-observer/resize-observer-keeps-element-of-queued-entry-alive.html: Added.
12:54 PM Changeset in webkit [280550] by Russell Epstein
  • 4 edits in trunk/Tools

Add basestring compatibility for Python3 in webkitcorepy.
https://bugs.webkit.org/show_bug.cgi?id=228707

Reviewed by Jonathan Bedard.

  • Scripts/libraries/webkitcorepy/setup.py: Bumped version.
  • Scripts/libraries/webkitcorepy/webkitcorepy/init.py: Ditto.
  • Scripts/libraries/webkitcorepy/webkitcorepy/string_utils.py: Added

basestring compatibility for Python3.

12:14 PM Changeset in webkit [280549] by rniwa@webkit.org
  • 3 edits
    2 adds in trunk

Source/WebCore:
REGRESSION(r279800): IntersectionObserver may never get a delivery of an observation if the element
has been unobserved and is disconnected
https://bugs.webkit.org/show_bug.cgi?id=228679

Reviewed by Chris Dumez.

The bug was caused by the elements of the pending entries not being considered as opaque roots
of the intersection observer. If the intersection observer is no longer observing those elements,
the JS wrapper of the intersection observer may be collected erroneously.

This patch addresses this issue by explicitly treating the elements of pending entries as
opaque roots of the intersection observer in IntersectionObserver::isReachableFromOpaqueRoots.

Test: intersection-observer/intersection-observer-keeps-element-of-queued-entry-alive.html

  • page/IntersectionObserver.cpp:

(WebCore::IntersectionObserver::isReachableFromOpaqueRoots const):

LayoutTests:
REGRESSION(r279800): IntersectionObserver may never get a delivery of an observation if the element has been unobserved and is disconnected
https://bugs.webkit.org/show_bug.cgi?id=228679

Reviewed by Chris Dumez.

Added a regression test.

  • intersection-observer/intersection-observer-keeps-element-of-queued-entry-alive-expected.txt: Added.
  • intersection-observer/intersection-observer-keeps-element-of-queued-entry-alive.html: Added.
11:56 AM Changeset in webkit [280548] by Wenson Hsieh
  • 4 edits
    2 adds in trunk

[Live Text] Use iBeam cursor when hovering over selectable text inside image links
https://bugs.webkit.org/show_bug.cgi?id=228700
rdar://81210248

Reviewed by Tim Horton.

Source/WebCore:

Make a couple of small adjustments to allow the cursor to change to an I-beam when hovering over selectable Live
Text inside images in links, but only in the case where the computed cursor type is Auto. Currently, this always
results in a Hand cursor type because of the link ancestor, despite the injected Live Text being selectable.

Test: fast/images/text-recognition/mac/cursor-types-for-recognized-text.html

  • html/HTMLElement.cpp:

(WebCore::HTMLElement::updateWithTextRecognitionResult):

Drive-by fix an adjacent bug, wherein we try to check whether the image element has user-select: none; before
the style has been resolved, which results in injecting selectable Live Text even when the page has explicitly
disabled text selection on the image element. Instead, move this code to right after we update layout after
ensuring the UA shadow DOM structure for Live Text, so that the bool flag is meaningful.

  • page/EventHandler.cpp:

(WebCore::EventHandler::selectCursor):

LayoutTests:

Add a layout test that hovers over Live Text in several different image elements, and checks their respective
cursor types.

  • fast/images/text-recognition/mac/cursor-types-for-recognized-text-expected.txt: Added.
  • fast/images/text-recognition/mac/cursor-types-for-recognized-text.html: Added.
11:46 AM Changeset in webkit [280547] by Chris Dumez
  • 24 edits in trunk

imported/w3c/web-platform-tests/webmessaging/broadcastchannel/blobs.html is a flaky failure since implementing BlobChannel
https://bugs.webkit.org/show_bug.cgi?id=228168
<rdar://problem/80922502>

Reviewed by Alex Christensen.

Source/WebCore:

The test was flaky because it is trying to send a Blob via BroadcastChannel.postMessage()
without keeping the blob alive. When GC triggers, the Blob would go away and trying to
decode the Blob upon receiving would fail.

To address the issue, I introduced a Blob::Handle class that wraps the Blob's internal URL
and keeps the Blob data alive as long as as someone is holding such handle. Previously,
the Blob destructor would unregister the internal URL and the Blob data would go away.

I then updated SerializedScriptValue to hold on to Blob::Handle objects instead of Blob
URLs. This guarantees that when using postMessage() to send a message to a worker, the
Blob data will stay alive until we dispatch the message event on the worker side and try
and deserialized the SerializedScriptValue.

For BroadcastChannel.postMessage() though, we end up going via the network process and
the SerializedScriptValue ends up getting serialized/deserialized over IPC. I added a
CompletionHandler to BroadcastChannelRegistry::postMessage() which only gets called
once the message event has successfully been dispatched. I use this completion handler
to make sure the SerializedScriptValue's Blob URLs stay valid until the the message has
been dispatched by holding on to the Blob::Handles.

No new tests, unskipped existing test.

  • Modules/indexeddb/IDBValue.cpp:

(WebCore::IDBValue::IDBValue):

  • bindings/js/SerializedScriptValue.cpp:

(WebCore::CloneSerializer::serialize):
(WebCore::CloneSerializer::CloneSerializer):
(WebCore::CloneSerializer::dumpIfTerminal):
(WebCore::CloneSerializer::write):
(WebCore::SerializedScriptValue::SerializedScriptValue):
(WebCore::SerializedScriptValue::computeMemoryCost const):
(WebCore::SerializedScriptValue::create):
(WebCore::SerializedScriptValue::blobURLs const):
(WebCore::SerializedScriptValue::writeBlobsToDiskForIndexedDB):

  • bindings/js/SerializedScriptValue.h:

(WebCore::SerializedScriptValue::hasBlobURLs const):
(WebCore::SerializedScriptValue::blobHandles const):
(WebCore::SerializedScriptValue::SerializedScriptValue):

  • dom/BroadcastChannel.cpp:

(WebCore::BroadcastChannel::postMessage):
(WebCore::BroadcastChannel::dispatchMessageTo):

  • dom/BroadcastChannel.h:
  • dom/BroadcastChannelRegistry.h:
  • fileapi/Blob.cpp:

(WebCore::BlobInternalURL::create):
(WebCore::BlobInternalURL::~BlobInternalURL):
(WebCore::BlobInternalURL::url const):
(WebCore::BlobInternalURL::BlobInternalURL):
(WebCore::Blob::Blob):
(WebCore::Blob::~Blob):
(WebCore::Blob::url const):
(WebCore::Blob::slice const):
(WebCore::Blob::size const):
(WebCore::Blob::handle const):
(WebCore::Blob::Handle::Handle):
(WebCore::Blob::Handle::url const):

  • fileapi/Blob.h:
  • loader/EmptyClients.cpp:

Source/WebKit:

  • NetworkProcess/NetworkBroadcastChannelRegistry.cpp:

(WebKit::NetworkBroadcastChannelRegistry::postMessage):

  • NetworkProcess/NetworkBroadcastChannelRegistry.h:
  • NetworkProcess/NetworkBroadcastChannelRegistry.messages.in:
  • Platform/IPC/HandleMessage.h:

(IPC::handleMessageAsyncWantsConnection):
handleMessageAsyncWantsConnection() had gotten out of sync with handleMessageAsync(). This was causing IPC decoding
failures when using both "Async" and "WantsConnection" for the IPC message.

  • WebProcess/WebCoreSupport/WebBroadcastChannelRegistry.cpp:

(WebKit::WebBroadcastChannelRegistry::postMessage):
(WebKit::WebBroadcastChannelRegistry::postMessageToRemote):

  • WebProcess/WebCoreSupport/WebBroadcastChannelRegistry.h:
  • WebProcess/WebCoreSupport/WebBroadcastChannelRegistry.messages.in:

Source/WebKitLegacy:

  • WebCoreSupport/WebBroadcastChannelRegistry.cpp:

(WebBroadcastChannelRegistry::postMessage):

  • WebCoreSupport/WebBroadcastChannelRegistry.h:

LayoutTests:

Unskip test that is no longer flaky.

  • platform/ios-wk2/TestExpectations:
  • platform/mac/TestExpectations:
11:41 AM Changeset in webkit [280546] by ysuzuki@apple.com
  • 5 edits
    10 deletes in trunk/JSTests

[JSC] Update test262
https://bugs.webkit.org/show_bug.cgi?id=228709

Reviewed by Mark Lam.

  • test262/latest-changes-summary.txt:
  • test262/test/built-ins/Error/prototype/constructor/S15.11.4.1_A1_T1.js: Removed.
  • test262/test/built-ins/Error/prototype/message/15.11.4.3-1.js: Removed.
  • test262/test/built-ins/Error/prototype/message/S15.11.4.3_A1.js: Removed.
  • test262/test/built-ins/Error/prototype/message/S15.11.4.3_A2.js: Removed.
  • test262/test/built-ins/Error/prototype/name/15.11.4.2-1.js: Removed.
  • test262/test/built-ins/Error/prototype/name/S15.11.4.2_A1.js: Removed.
  • test262/test/built-ins/Error/prototype/name/S15.11.4.2_A2.js: Removed.
  • test262/test/built-ins/Error/prototype/toString/S15.11.4.4_A1.js: Removed.
  • test262/test/built-ins/TypedArray/prototype/findLast/return-abrupt-from-this-out-of-bounds.js:
  • test262/test/built-ins/TypedArray/prototype/findLastIndex/return-abrupt-from-this-out-of-bounds.js:
  • test262/test/harness/sta-error.js: Removed.
  • test262/test/harness/sta-override-error.js: Removed.
  • test262/test262-Revision.txt:
11:39 AM Changeset in webkit [280545] by youenn@apple.com
  • 2 edits in trunk/Source/WTF

Enable WebRTCPlatformUDPSocketsEnabled experimental feature by default
https://bugs.webkit.org/show_bug.cgi?id=228689
<rdar://problem/81383711>

Reviewed by Eric Carlson.

Enable WebRTCPlatformUDPSocketsEnabled experimental feature by default, WebRTC proxying being off by default for now.

  • Scripts/Preferences/WebPreferencesExperimental.yaml:
10:46 AM Changeset in webkit [280544] by ysuzuki@apple.com
  • 5 edits in trunk/Source

[JSC] Yarr should use Bitmap instead of ByteVector for BoyerMoore search
https://bugs.webkit.org/show_bug.cgi?id=228676

Reviewed by Saam Barati.

Source/JavaScriptCore:

We observed that using Bitmap instead of ByteVector does not pose performance
issue. It was neutral in jquery-todomvc-regexp.js. In that case, we should use
Bitmap since it is 8x smaller.

We also search reusable Bitmap from Vector since comparing 128bit Bitmap is
super fast so we do not need to bother about linear search here (# of Bitmap
is currently up to 4).

To make code simplified, we add regT2 to ARMv7 and MIPS backend of YarrJIT.

ToT Patched

jquery-todomvc-regexp 555.9566+-0.8856 555.0737+-0.9717

  • yarr/YarrJIT.cpp:

(JSC::Yarr::BoyerMooreInfo::index const): Deleted.
(JSC::Yarr::BoyerMooreInfo::setIndex): Deleted.

  • yarr/YarrJIT.h:

(JSC::Yarr::YarrCodeBlock::set8BitCode):
(JSC::Yarr::YarrCodeBlock::set16BitCode):
(JSC::Yarr::YarrCodeBlock::set8BitCodeMatchOnly):
(JSC::Yarr::YarrCodeBlock::set16BitCodeMatchOnly):
(JSC::Yarr::YarrCodeBlock::tryReuseBoyerMooreBitmap const):
(JSC::Yarr::BoyerMooreByteVector::BoyerMooreByteVector): Deleted.
(JSC::Yarr::YarrCodeBlock::tryReuseBoyerMooreByteVector const): Deleted.

Source/WTF:

  • wtf/Bitmap.h:
10:44 AM Changeset in webkit [280543] by Wenson Hsieh
  • 8 edits
    2 adds in trunk

REGRESSION (Safari 15): Unable to repaint canvases with software filters when GPU Process is enabled
https://bugs.webkit.org/show_bug.cgi?id=228682
rdar://79699997

Reviewed by Simon Fraser.

Source/WebCore:

In the case where GPU process is enabled for canvas rendering but is not enabled for DOM rendering, canvas
elements with software CSS filters fail to repaint as the canvas' backing image buffer changes. In this
particular scenario, we first paint the canvas' remotely-backed image buffer into the filter's input buffer,
which is backed by an unaccelerated graphics context. The filter is then applied, producing an output image
buffer which we then paint into the page. The bug occurs during the initial step of painting the contents of the
canvas' remote image buffer into the filter's input context, which involves creating a CGImageRef from the
ImageBufferCGBackend::draw.

When asking for a CGImageRef from the canvas' image buffer (which is backed by an IOSurface that's drawn into in
the GPU process), QuartzCore caches the resulting CGImageRef corresponding to the IOSurface handle in the web
process. Subsequently, when we try to repaint the canvas, we'll end up using this same initial cached CGImageRef
because the graphics context of the IOSurface handle in the web process hasn't been drawn into (because all the
actual draw calls are made in the GPU process). As such, regardless of the current state of the canvas' image
buffer, the input to the filter will always be the initial native image created from the canvas' image buffer.

We avoid this problem when GPU process is disabled because the calls to update the canvas' 2D context in the
web process will clear out the cached CGImageRef in QuartzCore. Additionally, we avoid this problem when drawing
into accelerated contexts because QuartzCore will draw the cached CGImageRef using a codepath that reads back
the up-to-date contents from the IOSurface. However, in the QuartzCore's unaccelerated (ripc) image drawing
codepath, we copy the contents of the cached image right away, causing us to end up with stale image data that
does not reflect the current state of the IOSurface.

To work around this in Safari 15 (in both Monterey as well as downlevel versions of macOS), we deploy a similar
technique as we'd previously used in r201334 to invalidate QuartzCore's cached image, but only:

  1. If the seed value of the backing IOSurface has changed since the last time we've drawn the image buffer, and
  2. The destination context we're painting the image buffer into is unaccelerated.

Test: css3/filters/canvas-with-filter-after-repaint.html

  • platform/graphics/cg/ImageBufferCGBackend.cpp:

(WebCore::ImageBufferCGBackend::draw):
(WebCore::ImageBufferCGBackend::drawPattern):

Call into prepareToDrawIntoContext (see below).

  • platform/graphics/cg/ImageBufferCGBackend.cpp:

(WebCore::ImageBufferCGBackend::prepareToDrawIntoContext):

  • platform/graphics/cg/ImageBufferCGBackend.h:
  • platform/graphics/cg/ImageBufferIOSurfaceBackend.cpp:

(WebCore::ImageBufferIOSurfaceBackend::prepareToDrawIntoContext):

Add a new subclassable method on ImageBufferCGBackend that's invoked before drawing the contents of the image
buffer into a given destination GraphicsContext. We use this opportunity in ImageBufferIOSurfaceBackend to
notice if the IOSurface seed count has updated since we've last drawn the image buffer, and intentionally emit a
no-op drawing command (i.e. filling an empty rect) in the graphics context to invalidate QuartzCore's cached
CGImageRef. Note that we only deploy this workaround when drawing into unaccelerated contexts (see above for
more details).

(WebCore::ImageBufferIOSurfaceBackend::invalidateCachedNativeImage const):

Pull the no-op drawing command out into a separate helper method, with a comment describing why this exists.

(WebCore::ImageBufferIOSurfaceBackend::drawConsuming):
(WebCore::ImageBufferIOSurfaceBackend::copyCGImageForEncoding const):

  • platform/graphics/cg/ImageBufferIOSurfaceBackend.h:
  • platform/graphics/cocoa/IOSurface.h:
  • platform/graphics/cocoa/IOSurface.mm:

(WebCore::IOSurface::seed const):

Add a helper method to grab the seed value of an IOSurface.

LayoutTests:

  • css3/filters/canvas-with-filter-after-repaint-expected.html: Added.
  • css3/filters/canvas-with-filter-after-repaint.html: Added.
10:29 AM Changeset in webkit [280542] by pvollan@apple.com
  • 3 edits in trunk/Source/WebKit

[macOS] Remove unneeded sandbox extension member
https://bugs.webkit.org/show_bug.cgi?id=228584

Reviewed by Darin Adler.

Remove unneeded sandbox extension handle member, since this extension is never revoked.

  • WebProcess/WebProcess.h:
  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::switchFromStaticFontRegistryToUserFontRegistry):

10:28 AM Changeset in webkit [280541] by Chris Dumez
  • 7 edits in trunk

HTMLElement.innerText setter should convert new lines to <br>
https://bugs.webkit.org/show_bug.cgi?id=228605
<rdar://problem/81333038>

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Rebaseline WPT tests that are now passing. Those tests were already passing in Chrome and Firefox.

  • web-platform-tests/html/dom/elements/the-innertext-and-outertext-properties/innertext-setter-expected.txt:
  • web-platform-tests/html/dom/elements/the-innertext-idl-attribute/setter-expected.txt:
  • web-platform-tests/innerText/setter-expected.txt:

Source/WebCore:

HTMLElement.innerText setter should convert new lines to <br>:

Our innerText setter had some logic that was specific to render styles that isn't part of
the specification. It was causing us to not replace the new lines with <br> in some
web-observable cases. I dropped this logic to align with Blink and Gecko.

No new tests, rebaselined existing tests.

  • html/HTMLElement.cpp:

(WebCore::HTMLElement::setInnerText):

10:09 AM Changeset in webkit [280540] by Russell Epstein
  • 8 edits in branches/safari-612.1.26.0-branch/Source

Versioning.

WebKit-7612.1.26.0.1

10:05 AM Changeset in webkit [280539] by Eric Hutchison
  • 2 edits in trunk/LayoutTests

[ Mac wk1 ] imported/w3c/web-platform-tests/mathml/relations/html5-tree/dynamic-childlist-002.html is a flaky failure.
https://bugs.webkit.org/show_bug.cgi?id=228704.

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
9:52 AM Changeset in webkit [280538] by Russell Epstein
  • 1 copy in branches/safari-612.1.26.11-branch

New branch.

9:52 AM Changeset in webkit [280537] by Russell Epstein
  • 1 copy in branches/safari-612.1.26.2-branch

New branch.

9:52 AM Changeset in webkit [280536] by Russell Epstein
  • 1 copy in branches/safari-612.1.26.1-branch

New branch.

9:51 AM Changeset in webkit [280535] by Russell Epstein
  • 1 copy in branches/safari-612.1.26.0-branch

New branch.

9:38 AM Changeset in webkit [280534] by weinig@apple.com
  • 6 edits in trunk/Source/WebCore

[Modern Media Controls] Address additional feedback on LayoutTraits refactor
https://bugs.webkit.org/show_bug.cgi?id=227489
<rdar://problem/80215569>

Reviewed by Devin Rousso.

Splitting up larger change to land pieces incrementally.

Part 1:

  • Replaces eval() based lexical lookup with an explicit window.layoutTraitsClasses registry map.
  • Modules/modern-media-controls/controls/ios-layout-traits.js:
  • Modules/modern-media-controls/controls/layout-traits.js:
  • Modules/modern-media-controls/controls/macos-layout-traits.js:
  • Modules/modern-media-controls/controls/watchos-layout-traits.js:
  • Modules/modern-media-controls/media/media-controller.js:

(MediaController.prototype.get layoutTraits):

9:08 AM Changeset in webkit [280533] by Ayumi Kojima
  • 2 edits in trunk/LayoutTests

[ iPad ] fast/canvas/canvas-color-space-display-p3.html is failing.
https://bugs.webkit.org/show_bug.cgi?id=228663

Unreviewed test gardening.

  • platform/ipad/TestExpectations:
8:58 AM Changeset in webkit [280532] by Ayumi Kojima
  • 2 edits in trunk/LayoutTests

[ iOS ] fast/scrolling/ios/click-events-during-momentum-scroll-in-overflow-after-tap-on-body.html is a flaky timeout.
https://bugs.webkit.org/show_bug.cgi?id=228672

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
8:39 AM Changeset in webkit [280531] by jer.noble@apple.com
  • 12 edits
    1 add in trunk

[Cocoa] Remove support for AVAssetImageGenerator
https://bugs.webkit.org/show_bug.cgi?id=228560
LayoutTests/imported/w3c:

Reviewed by Eric Carlson.

The 2x2-green.mp4 file fails to decode as its natural size is too small for the system decoder to handle. Replace with
a media file of more reasonable size.

  • web-platform-tests/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/video-aspect-ratio.html:
  • web-platform-tests/html/semantics/embedded-content/media-elements/video_loop_base.html:
  • web-platform-tests/media/16x16-green.mp4: Added.

Source/WebCore:

Reviewed by Eric Carlson.

AVAssetImageGenerator is used when there is not yet an available image from
AVPlayerItemVideoOutput. However, AVAssetImageGenerator is a synchronous API call; if data
for the current time is not available, the generator will cause a request for that data to
be issued, and if the main thread is blocked in a synchronous call to the generator, that
request can never be completed, causing a deadlock.

Instead, always block moving to a readyState >= HAVE_CURRENT_DATA until either the
AVPlayerLayer or the AVPlayerItemVideoOutput report having an available frame. This
prevents clients from attempting to paint until a frame is available, and ensures that we
will always have an available frame for painting, removing the need for the synchronous
generator call.

To ensure the readyState is updated when AVPlayerItemVideoOutput has an available image,
register with the output at creation time for a notification as soon as an image is
available. And in the existing delegate object, send a message back to the
MediaPlayerPrivateAVFoundationObjC when that occurs.

No tests needed; this should reduce flakiness of existing tests and cause no regression in
behavior.

Note, changes from last attempt:

AVPlayerLayer will fail to move to the -readyForDisplay state if it's not attached to a
layer tree, so when we remove the HTMLMediaElement from the DOM, we must send MediaPlayer a
acceleratedRenderingStateChanged() notification. This will cause the
MediaPlayerPrivateAVFoundationObjC to throw away its AVPlayerLayer, and will not block
moving to HAVE_CURRENT_DATA waiting for the layer to become readyForDisplay.

When we throw away (or create) the AVPlayerLayer, we must conditionally call updateStates
() to recalculate the readyState; but because updateStates() may try to create or destroy
an AVPlayerLayer, we must do this on a task to avoid re-entrancy. Adopt these changes
inside MediaPlayerPrivateAVFoundationCF as well.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::pauseAfterDetachedTask):
(WebCore::HTMLMediaElement::mediaPlayerRenderingCanBeAccelerated):

  • platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:

(WebCore::MediaPlayerPrivateAVFoundation::setUpVideoRendering):
(WebCore::MediaPlayerPrivateAVFoundation::prepareForRendering):
(WebCore::MediaPlayerPrivateAVFoundation::renderingModeChanged):
(WebCore::MediaPlayerPrivateAVFoundation::scheduleUpdateStates):
(WebCore::MediaPlayerPrivateAVFoundation::updateStates):

  • platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:

(WebCore::MediaPlayerPrivateAVFoundationObjC::hasContextRenderer const):
(WebCore::MediaPlayerPrivateAVFoundationObjC::destroyContextVideoRenderer):
(WebCore::MediaPlayerPrivateAVFoundationObjC::createVideoLayer):
(WebCore::MediaPlayerPrivateAVFoundationObjC::destroyVideoLayer):
(WebCore::MediaPlayerPrivateAVFoundationObjC::paintCurrentFrameInContext):
(WebCore::MediaPlayerPrivateAVFoundationObjC::createVideoOutput):
(WebCore::MediaPlayerPrivateAVFoundationObjC::outputMediaDataWillChange):
(WebCore::MediaPlayerPrivateAVFoundationObjC::paintWithVideoOutput):
(-[WebCoreAVFPullDelegate setParent:]):
(-[WebCoreAVFPullDelegate outputMediaDataWillChange:]):
(WebCore::MediaPlayerPrivateAVFoundationObjC::createImageGenerator): Deleted.
(WebCore::MediaPlayerPrivateAVFoundationObjC::destroyImageGenerator): Deleted.
(WebCore::MediaPlayerPrivateAVFoundationObjC::paintWithImageGenerator): Deleted.
(WebCore::MediaPlayerPrivateAVFoundationObjC::createImageForTimeInRect): Deleted.

  • platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:

(WebCore::MediaPlayerPrivateAVFoundationCF::createVideoLayer):
(WebCore::MediaPlayerPrivateAVFoundationCF::destroyVideoLayer):

Source/WebKit:

<rdar://problem/81336280>

Reviewed by Eric Carlson.

Drive-by fix: Passing the wrong value down to the GPU process when the acceleratedRenderingStateChanged().
We should be passing the results of MediaPlayer::renderingCanBeAccelerated() which comes down from HTMLMediaElement,
not MediaPlayer::supportsAcceleratedRendering(), which comes up from the GPU process.

  • WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:

(WebKit::MediaPlayerPrivateRemote::acceleratedRenderingStateChanged):

8:38 AM Changeset in webkit [280530] by Alan Bujtas
  • 4 edits
    2 adds in trunk

REGRESSION (r273072): Images do not layout correctly on walmart.com/grocery
https://bugs.webkit.org/show_bug.cgi?id=228656
<rdar://80418083>

Reviewed by Sergio Villar Senin.

Source/WebCore:

Take the min/max values into account when computing the definite size (https://drafts.csswg.org/css-sizing-3/#definite)
for the flex child.

Test: fast/flexbox/flex-with-min-max-height.html

  • rendering/RenderFlexibleBox.cpp:

(WebCore::RenderFlexibleBox::computeCrossSizeForChildUsingContainerCrossSize const):

LayoutTests:

  • fast/flexbox/flex-with-min-max-height-expected.html: Added.
  • fast/flexbox/flex-with-min-max-height.html: Added.
7:43 AM Changeset in webkit [280529] by Andres Gonzalez
  • 7 edits in trunk

Fix for [WebAccessibilityObjectWrapper lineRectsAndText] to properly handle replacement nodes and SVG text.
https://bugs.webkit.org/show_bug.cgi?id=228336
<rdar://problem/81172124>

Reviewed by Chris Fleizach and Darin Adler.

Source/WebCore:

Test: LayoutTests/accessibility/ios-simulator/element-line-rects-and-text.html

  • Renamed stringsForSimpleRange to better reflect the fact that this

method can return strings and AXObjects.

  • Handles the case where contentForSimpleRange returns AXObjects

corresponding to replacement objects. This fixes the cases of images and
SVG text.

  • Fixed the problem with soft linebreaks where the start of the next

line was skipping the first character in the line.

  • accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:

(-[WebAccessibilityObjectWrapper contentForSimpleRange:attributed:]):
(-[WebAccessibilityObjectWrapper arrayOfTextForTextMarkers:attributed:]):
(-[WebAccessibilityObjectWrapper lineRectsAndText]):
(-[WebAccessibilityObjectWrapper stringsForSimpleRange:attributed:]):
Renamed to contentForSimpleRange since it is returns an array of strings
and AXObjects.

LayoutTests:

  • Expanded this test to cover the case of an image element and SVG text.
  • Added the test case of a paragraph with soft linebreaks.
  • accessibility/ios-simulator/element-line-rects-and-text-expected.txt:
  • accessibility/ios-simulator/element-line-rects-and-text.html:
7:30 AM Changeset in webkit [280528] by Lauro Moura
  • 2 edits in trunk/Tools

[GLIB] Make CORS allowlist test wait for promise resolution
https://bugs.webkit.org/show_bug.cgi?id=228695

Reviewed by Michael Catanzaro.

r278456 introduced a CORS allow list test that tries to fetch a
resource using the fetch() function, which returns a promise. This is
working on GTK but in WPE the test fails as the promise is not yet
resolved by the time the test variable is checked.

This commit changes the test to actually report the promise failure
through catch() and wait for its resolution before checking the values.

  • TestWebKitAPI/Tests/WebKitGLib/TestWebKitWebView.cpp:

(testWebViewCORSAllowlist):

1:54 AM Changeset in webkit [280527] by Martin Robinson
  • 8 edits in trunk

[css-scroll-snap] Consider all snap areas at a given snap offset when snapping
https://bugs.webkit.org/show_bug.cgi?id=228141

LayoutTests/imported/w3c:

Reviewed by Frédéric Wang.

  • web-platform-tests/css/css-scroll-snap/overflowing-snap-areas-expected.txt:
  • web-platform-tests/css/css-scroll-snap/overflowing-snap-areas.html:

Source/WebCore:

Reviewed by Frédéric Wang.

When deciding whether to snap to snap areas that overflow the snap port, don't
just consider the first snap area at a given snap offset. Instead, keep information
about all snap areas in the ScrolSnapOffsetInfo. In order to avoid iterating over
arrays of hundreds of rectangles, also record whether any of them are larger than
the viewport. This will avoid extra work on the most common usecase of large sets
of snap areas (gridded table layouts).

This change is tested by extending an existing WPT test.

  • page/scrolling/ScrollSnapOffsetsInfo.cpp:

(WebCore::rangeForAxis): Added this helper.
(WebCore::searchForPotentialSnapPoints): When deciding if a particular snap area
overflows the snap port, look at all available snap areas instead of just the
first one.
(WebCore::updateSnapOffsetsForScrollableArea): Instead of only recording the first
snap area, record all of them in the list of snap area rectangles.
(WebCore::convertOffsetInfo): Convert the list of snap ares.

  • page/scrolling/ScrollSnapOffsetsInfo.h:

(WebCore::operator==): Added this operator which is necessary now that snapAreaIndices
is a vector.

Source/WebKit:

Reviewed by Frédéric Wang.

  • Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp:

(ArgumentCoder<SnapOffset<float>>::encode): Serialize new members.
(ArgumentCoder<SnapOffset<float>>::decode): Deserialize new members.

Aug 1, 2021:

11:59 PM Changeset in webkit [280526] by Fujii Hironori
  • 3 edits in trunk/LayoutTests

[WinCairo] Unreviewed test gardening

  • platform/wincairo-wk1/TestExpectations:
  • platform/wincairo/TestExpectations:
9:56 PM Changeset in webkit [280525] by commit-queue@webkit.org
  • 6 edits in trunk/Source/WebCore

Migrate GlyphOverflow to LayoutUnits instead of ints
https://bugs.webkit.org/show_bug.cgi?id=133040

Patch by Rob Buis <rbuis@igalia.com> on 2021-08-01
Reviewed by Darin Adler.

Migrate GlyphOverflow to LayoutUnits instead of ints. This
is another step in the direction of subpixel layout/rendering.

  • platform/graphics/FontCascade.h:
  • rendering/LegacyInlineFlowBox.cpp:

(WebCore::LegacyInlineFlowBox::addTextBoxVisualOverflow):

  • rendering/LegacyRootInlineBox.cpp:

(WebCore::LegacyRootInlineBox::ascentAndDescentForBox const):

  • rendering/RenderText.cpp:

(WebCore::RenderText::computePreferredLogicalWidths):

  • style/InlineTextBoxStyle.cpp:

(WebCore::extendIntToFloat):

7:46 PM Changeset in webkit [280524] by Fujii Hironori
  • 2 edits in trunk/Tools

[Win][DumpRenderTree] Clean up IndexedDB files between tests
https://bugs.webkit.org/show_bug.cgi?id=228692

Reviewed by Ryosuke Niwa.

storage/indexeddb/getdatabases.html was failing because it counted
up the remaining databases of previous tests.

Mac DRT removes IndexedDB after the testing (Bug 192796, r240358).
Win DRT also should do it.

  • DumpRenderTree/win/DumpRenderTree.cpp:

(runTest): Call TestRunner::clearAllDatabases after the testing.

9:02 AM Changeset in webkit [280523] by youenn@apple.com
  • 12 edits in trunk/Source

Introduce an experimental feature to toggle WebRTC socket proxying
https://bugs.webkit.org/show_bug.cgi?id=228681

Reviewed by Eric Carlson.

Source/WebKit:

Decide whether to disable proxying based on experimental feature in WebProcess.
Send the disable relay value from WebProcess to NetworkProcess for TCP sockets.
Manually tested.

  • NetworkProcess/webrtc/NetworkRTCProvider.cpp:

(WebKit::NetworkRTCProvider::createClientTCPSocket):

  • NetworkProcess/webrtc/NetworkRTCProvider.h:
  • NetworkProcess/webrtc/NetworkRTCProvider.messages.in:
  • NetworkProcess/webrtc/NetworkRTCTCPSocketCocoa.h:
  • NetworkProcess/webrtc/NetworkRTCTCPSocketCocoa.mm:

(WebKit::NetworkRTCTCPSocketCocoa::createClientTCPSocket):
(WebKit::NetworkRTCTCPSocketCocoa::NetworkRTCTCPSocketCocoa):

  • WebProcess/Network/webrtc/LibWebRTCProvider.cpp:

(WebKit::RTCSocketFactory::CreateClientTcpSocket):
(WebKit::LibWebRTCProvider::createSocketFactory):

  • WebProcess/Network/webrtc/LibWebRTCSocketFactory.cpp:

(WebKit::LibWebRTCSocketFactory::createClientTcpSocket):

  • WebProcess/Network/webrtc/LibWebRTCSocketFactory.h:

Source/WTF:

  • Scripts/Preferences/WebPreferencesExperimental.yaml:
7:10 AM Changeset in webkit [280522] by Alexander Mikhaylenko
  • 2 edits in trunk/Tools

Add myself (Alexander Mikhaylenko) to contributors.json as a committer

Unreviewed.

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

Jul 31, 2021:

3:48 PM Changeset in webkit [280521] by mjs@apple.com
  • 2 edits in trunk/Source/WebCore

ListAttributeTargetObserver is needlessly created even when there is no list attribute
https://bugs.webkit.org/show_bug.cgi?id=228541

Reviewed by Yusuke Suzuki.

No new tests because no behavior change.

This is possibly a small improvement (~0.5%) on Speedometer subtests that do innerHTML, but not statistically significant.

Ported from a Chromium change by Adithya Srinivasan

  • html/HTMLInputElement.cpp:

(WebCore::HTMLInputElement::resetListAttributeTargetObserver): check if there's a list attribute before making an observer.

1:47 PM Changeset in webkit [280520] by ysuzuki@apple.com
  • 4 edits in trunk/Source

[JSC] Move JIT_UNICODE_EXPRESSIONS to ENABLE(YARR_JIT_UNICODE_EXPRESSIONS) in PlatformEnable.h
https://bugs.webkit.org/show_bug.cgi?id=228669

Reviewed by Alexey Shvayka.

Source/JavaScriptCore:

Move JIT_UNICODE_EXPRESSIONS to PlatformEnable.h to align to the other YarrJIT flags.
This makes it easy to read that this is enabled on ARM64 and X86_64.

  • yarr/YarrJIT.cpp:

Source/WTF:

  • wtf/PlatformEnable.h:
1:43 PM Changeset in webkit [280519] by ysuzuki@apple.com
  • 6 edits in trunk/Source/JavaScriptCore

[JSC] Clean up Yarr by using static constexpr
https://bugs.webkit.org/show_bug.cgi?id=228678

Reviewed by Alexey Shvayka.

Modernize Yarr code by using static constexpr.

  • assembler/AbstractMacroAssembler.h:

(JSC::AbstractMacroAssembler::TrustedImm32::TrustedImm32):

  • yarr/YarrCanonicalizeUCS2.cpp:
  • yarr/YarrCanonicalizeUCS2.js:

(set characters.hex.set string_appeared_here):

  • yarr/YarrErrorCode.cpp:

(JSC::Yarr::errorMessage):

  • yarr/YarrJIT.cpp:
10:37 AM Changeset in webkit [280518] by youenn@apple.com
  • 11 edits in trunk/Source

Improve LocalSampleBufferDisplayLayer logging
https://bugs.webkit.org/show_bug.cgi?id=228582

Reviewed by Eric Carlson.

Source/WebCore:

Add logging to correlate a LocalSampleBufferDisplayLayer to its HTMLMediaElement and its MediaStreamTrack.
Introduce setLogIdentifer for that purpose.
No observable change of behavior.

  • platform/graphics/avfoundation/SampleBufferDisplayLayer.h:
  • platform/graphics/avfoundation/objc/LocalSampleBufferDisplayLayer.h:
  • platform/graphics/avfoundation/objc/LocalSampleBufferDisplayLayer.mm:

(WebCore::LocalSampleBufferDisplayLayer::enqueueSample):
(WebCore::LocalSampleBufferDisplayLayer::onIrregularFrameRateNotification):

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:

(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::ensureLayers):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::checkSelectedVideoTrack):

Source/WebKit:

Send through IPC the log identifier to the GPU display layer.

  • GPUProcess/webrtc/RemoteSampleBufferDisplayLayer.cpp:

(WebKit::RemoteSampleBufferDisplayLayer::setLogIdentifier):

  • GPUProcess/webrtc/RemoteSampleBufferDisplayLayer.h:
  • GPUProcess/webrtc/RemoteSampleBufferDisplayLayer.messages.in:
  • WebProcess/GPU/webrtc/SampleBufferDisplayLayer.cpp:

(WebKit::SampleBufferDisplayLayer::setLogIdentifier):

  • WebProcess/GPU/webrtc/SampleBufferDisplayLayer.h:
9:53 AM Changeset in webkit [280517] by youenn@apple.com
  • 3 edits in trunk/Source/WebCore

AVVideoCaptureSource should not start/stop the camera if trying to apply the same size/frame rate configuration
https://bugs.webkit.org/show_bug.cgi?id=228634
<rdar://81174160>

Reviewed by Eric Carlson.

In some configurations, pages want to set a frame rate of 30, but the actual frame rate set will be 29.9999.
In that case, our heuristic to not recalibrate the camera fails.
To prevent this, we add checks in AVVideoCaptureSource to validate whether the new presets are the same as the already applied ones.

Manually tested.

  • platform/mediastream/mac/AVVideoCaptureSource.h:
  • platform/mediastream/mac/AVVideoCaptureSource.mm:

(WebCore::AVVideoCaptureSource::setSessionSizeAndFrameRate):

9:52 AM Changeset in webkit [280516] by youenn@apple.com
  • 2 edits in trunk/Source/WebKit

RemoteAudioMediaStreamTrackRendererInternalUnit should handle changes of requested sampleCount
https://bugs.webkit.org/show_bug.cgi?id=228631
<rdar://80690191>

Reviewed by Eric Carlson.

The requested number of samples might change in case the output device changes.
When changing device, we might have a generated buffer of 4096 while 1024 samples are requested.
For each 1024 sample chunk, we will request a buffer of 4096, which cannot be provided by WebProcess.
To prevent this case, we keep track of a requested sample count overshoot so that next time the render callback is called,
we might not request to generate another chunk.

  • GPUProcess/webrtc/RemoteAudioMediaStreamTrackRendererInternalUnitManager.cpp:

(WebKit::RemoteAudioMediaStreamTrackRendererInternalUnitManager::Unit::start):
(WebKit::RemoteAudioMediaStreamTrackRendererInternalUnitManager::Unit::render):

8:43 AM Changeset in webkit [280515] by Martin Robinson
  • 4 edits
    2 adds in trunk

REGRESSION(r279564): [GTK] Mouse wheel scrolling scrolls too little (take two)
https://bugs.webkit.org/show_bug.cgi?id=228572

Reviewed by Adrian Perez de Castro.

Source/WebCore:

Test: platform/gtk/fast/scrolling/scroll-wheel-repeated-events.html

When scrolling by a delta with ScrollAnimationSmooth, base the target point
on the current scroll target instead of on the current position. We also
pass the point to updatePerAxisData instead of the delta in order to make
it more explicit what the desired behavior is for this method.

  • platform/ScrollAnimationSmooth.h: Update argument name.
  • platform/ScrollAnimationSmooth.cpp:

(WebCore::ScrollAnimationSmooth::scroll): Base the delta on the target position and
pass that as the argument to updatePerAxisData. When scrolling to a point, simply
pass that to updatePerAxisData.
(WebCore::ScrollAnimationSmooth::updatePerAxisData): Accept a point instead of a
delta, which makes it more obvious how to use this function and allows it to
be used the same way by both version of ScrollAnimationSmooth::scroll.

LayoutTests:

  • platform/gtk/fast/scrolling/scroll-wheel-repeated-events-expected.txt: Added.
  • platform/gtk/fast/scrolling/scroll-wheel-repeated-events.html: Added.
2:43 AM Changeset in webkit [280514] by ysuzuki@apple.com
  • 4773 edits
    322 adds in trunk/JSTests

[JSC] Upgrade test262
https://bugs.webkit.org/show_bug.cgi?id=228627

Reviewed by Ross Kirsling.

  • test262/config.yaml:
  • test262/expectations.yaml:
1:29 AM Changeset in webkit [280513] by jh718.park@samsung.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed. Remove the build warning below since r280493.
warning: variable ‘block’ set but not used [-Wunused-but-set-variable]

  • b3/B3CanonicalizePrePostIncrements.cpp:

(JSC::B3::canonicalizePrePostIncrements):

1:06 AM Changeset in webkit [280512] by ysuzuki@apple.com
  • 1 edit
    9 moves in trunk/LayoutTests

Move DOM-unrelated tests out of fast/regex/dom
https://bugs.webkit.org/show_bug.cgi?id=228661

Reviewed by Saam Barati.

By moving to fast/regex/, we can run them from JSC tests too.

  • fast/regex/lastIndex-expected.txt: Renamed from LayoutTests/fast/regex/dom/lastIndex-expected.txt.
  • fast/regex/lastIndex.html: Renamed from LayoutTests/fast/regex/dom/lastIndex.html.
  • fast/regex/non-pattern-characters-expected.txt: Renamed from LayoutTests/fast/regex/dom/non-pattern-characters-expected.txt.
  • fast/regex/non-pattern-characters.html: Renamed from LayoutTests/fast/regex/dom/non-pattern-characters.html.
  • fast/regex/script-tests/lastIndex.js: Renamed from LayoutTests/fast/regex/dom/script-tests/lastIndex.js.
  • fast/regex/script-tests/non-pattern-characters.js: Renamed from LayoutTests/fast/regex/dom/script-tests/non-pattern-characters.js.
  • fast/regex/script-tests/unicodeCaseInsensitive.js: Renamed from LayoutTests/fast/regex/dom/script-tests/unicodeCaseInsensitive.js.
  • fast/regex/unicodeCaseInsensitive-expected.txt: Renamed from LayoutTests/fast/regex/dom/unicodeCaseInsensitive-expected.txt.
  • fast/regex/unicodeCaseInsensitive.html: Renamed from LayoutTests/fast/regex/dom/unicodeCaseInsensitive.html.
12:52 AM Changeset in webkit [280511] by commit-queue@webkit.org
  • 7 edits
    1 delete in trunk

Unreviewed, reverting r280488.
https://bugs.webkit.org/show_bug.cgi?id=228677

media/modern-media-controls/ tests are failing or timed-out

Reverted changeset:

"[Cocoa] Remove support for AVAssetImageGenerator"
https://bugs.webkit.org/show_bug.cgi?id=228560
https://commits.webkit.org/r280488

Jul 30, 2021:

11:41 PM Changeset in webkit [280510] by sihui_liu@apple.com
  • 4 edits
    3 adds
    2 deletes in trunk/LayoutTests

[ macOS wk2 ARM 64 ] storage/indexeddb/IDBObject-leak.html is a flakey text failure
https://bugs.webkit.org/show_bug.cgi?id=223453
<rdar://problem/75580609>

Reviewed by Youenn Fablet.

As JavaScriptCore uses conservative GC, transaction may be still be alive after one gc call, so we should invoke
gc multiple times.

Also, this patch renames IDBObject-leak.html to database-transaction-cycle.html to better indicate what it is
testing.

  • TestExpectations:
  • platform/mac-wk2/TestExpectations:
  • platform/wk2/TestExpectations:
  • storage/indexeddb/IDBObject-leak-expected.txt: Removed.
  • storage/indexeddb/IDBObject-leak.html: Removed.
  • storage/indexeddb/database-transaction-cycle-expected.txt: Added.
  • storage/indexeddb/database-transaction-cycle.html: Added.
  • storage/indexeddb/resources/database-transaction-cycle-iframe.html: Added.
11:07 PM Changeset in webkit [280509] by commit-queue@webkit.org
  • 20 edits
    2 adds in trunk

[css-overflow] Implement clip value for overflow
https://bugs.webkit.org/show_bug.cgi?id=198230

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

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-overflow/overflow-clip-hit-testing-expected.txt: Added.
  • web-platform-tests/css/css-overflow/overflow-clip-scroll-size-expected.txt: Added.
  • web-platform-tests/css/css-overflow/parsing/overflow-computed-expected.txt:
  • web-platform-tests/css/css-overflow/parsing/overflow-valid-expected.txt:

Source/WebCore:

Implement overflow: clip. Parsing is like the other
overflow values but special logic is added to handle
the case where only one of overflow-x/overflow-y uses
'clip' [1]. Also adjusts code that computes layout and
visual overflow to take overflow: clip into account.

This matches Chrome and Firefox.

[1] https://drafts.csswg.org/css-overflow/#propdef-overflow-x

  • css/CSSPrimitiveValueMappings.h:

(WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
(WebCore::CSSPrimitiveValue::operator Overflow const):

  • css/CSSProperties.json:
  • css/parser/CSSParserContext.cpp:

(WebCore::operator==):
(WebCore::add):

  • css/parser/CSSParserContext.h:
  • css/parser/CSSParserFastPaths.cpp:

(WebCore::CSSParserFastPaths::isValidKeywordPropertyAndValue):

  • page/FrameView.cpp: handle scrollbars

on viewport element same as overflow: hidden.
(WebCore::FrameView::applyOverflowToViewport):

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::updateFromStyle):
(WebCore::RenderBox::scrollWidth const): overflow clip
forbids all scrolling.
(WebCore::RenderBox::scrollHeight const): Ditto.
(WebCore::RenderBox::setScrollLeft): Ditto.
(WebCore::RenderBox::setScrollTop): Ditto.
(WebCore::RenderBox::setScrollPosition): Ditto.
(WebCore::RenderBox::requiresLayerWithScrollableArea const): do
not create layer with scrollable area for overflow: clip.
(WebCore::RenderBox::canBeProgramaticallyScrolled const): overflow clip
forbids all scrolling.
(WebCore::RenderBox::scrollPosition const): overflow clip
forbids all scrolling.
(WebCore::RenderBox::overflowClipRect const): only clip the rect horizontally
for overflow-x: clip and only vertically for overflow-y: clip.
(WebCore::RenderBox::createsNewFormattingContext const): do
not create formatting context for overflow: clip.
(WebCore::RenderBox::addOverflowFromChild):
(WebCore::RenderBox::addLayoutOverflow):
(WebCore::RenderBox::layoutOverflowRectForPropagation const):

  • rendering/RenderObject.cpp:

(WebCore::RenderObject::enclosingScrollableContainerForSnapping const):

  • rendering/RenderObject.h: Add helper method that excludes overflow-x/y: clip.

(WebCore::RenderObject::hasPotentiallyScrollableOverflow const):

  • rendering/style/RenderStyleConstants.cpp:

(WebCore::operator<<):

  • rendering/style/RenderStyleConstants.h:
  • style/StyleAdjuster.cpp: Add special logic is to handle the case where only

one of overflow-x/overflow-y uses 'clip'.
(WebCore::Style::Adjuster::adjust const):

Source/WTF:

Add preference for overflow: clip support.

  • Scripts/Preferences/WebPreferencesExperimental.yaml:

LayoutTests:

9:46 PM Changeset in webkit [280508] by ysuzuki@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] branchTest8 should not emit tst for Zero/NonZero cases
https://bugs.webkit.org/show_bug.cgi?id=228674

Reviewed by Mark Lam.

Previously, branchTest8(NonZero, BaseIndex) emits tst instruction
unnecessarily. This is because the mask is truncated into 8bit, which
makes branchTest32 (which is internally used in branchTest8) emits tst.
We observed many unnecessary tst in YarrJIT.

This patch removes this unnecessary truncation since Zero/NonZero does
not care high bits of mask in branchTest8. This is ok because the
ResultCondition version of mask8OnCondition() is always used to generate
a mask that is only used against a value that is loaded with
MacroAssemblerHelpers::load8OnCondition(). For Zero/NonZero conditions,
load8OnCondition() will always zero fill the upper bytes. The 0 filled
upper bytes will not affect the result of a branch on zero or branch on
not zero.

Before:

0x10a8068b0: ldrb w16, [x7, x6]
0x10a8068b4: tst w16, #0xff
0x10a8068b8: b.ne 0x10a8068cc

After:

0x1070068b0: ldrb w16, [x7, x6]
0x1070068b4: cbnz w16, 0x1070068c8

  • assembler/MacroAssemblerHelpers.h:

(JSC::MacroAssemblerHelpers::mask8OnCondition):

6:40 PM Changeset in webkit [280507] by rmorisset@apple.com
  • 6 edits
    1 add in trunk

Improve OSR entry into Wasm loops with arguments
https://bugs.webkit.org/show_bug.cgi?id=228595

Reviewed by Yusuke Suzuki.

JSTests:

Just a straightforward test that counts to 1M in a loop, to exercise both OSR entry and a loop with an argument at the same time.
100k iterations was not enough to reliably complete an OSR entry.

  • wasm/stress/osr-entry-with-loop-arguments.js: Added.

(async test):

Source/JavaScriptCore:

This patch has two parts:

  • improve the Wasm OSR code to fully support loop arguments (just some plumbing to make sure that the right values are propagated)
  • improve the B3 validator to fix a hole I noticed while writing the first part: we were not detecting code that introduce Upsilons in the wrong blocks. Naturally, this caused hard to debug issues, as B3 has no well-defined semantics for a Phi that is reached before the corresponding Upsilon(s).
  • b3/B3Validate.cpp:
  • wasm/WasmAirIRGenerator.cpp:

(JSC::Wasm::AirIRGenerator::emitLoopTierUpCheck):
(JSC::Wasm::AirIRGenerator::addLoop):

  • wasm/WasmB3IRGenerator.cpp:

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

  • wasm/WasmLLIntGenerator.cpp:

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

6:36 PM Changeset in webkit [280506] by commit-queue@webkit.org
  • 3 edits in trunk/Source/JavaScriptCore

[JSC] Rename Temporal.now to Temporal.Now
https://bugs.webkit.org/show_bug.cgi?id=228658

Patch by Philip Chimento <pchimento@igalia.com> on 2021-07-30
Reviewed by Yusuke Suzuki.

See https://github.com/tc39/proposal-temporal/pull/1645. In the July
2021 meeting TC39 achieved consensus to rename Temporal.now to
Temporal.Now since it is a namespace.

  • runtime/TemporalNow.cpp: Change Now[@@toStringTag] accordingly.
  • runtime/TemporalObject.cpp: Rename now property to Now.
6:33 PM Changeset in webkit [280505] by Tadeu Zagallo
  • 5 edits in trunk

putInlineFastReplacingStaticPropertyIfNeeded should handle custom values
https://bugs.webkit.org/show_bug.cgi?id=227963

Reviewed by Alexey Shvayka.

JSTests:

  • stress/reflect-set-custom-value.js:

Source/JavaScriptCore:

Follow up after r280463: as it turns out, putInlineFastReplacingStaticPropertyIfNeeded also needs to handle
custom values, similar to how definePropertyOnReceiverSlow was updated. This function will be called when the
target property of the receiver is a custom value and isn't reified. The previous test case was expanded to
test both the reified and non-reified cases.

  • runtime/JSObject.cpp:

(JSC::JSObject::putInlineFastReplacingStaticPropertyIfNeeded):

  • tools/JSDollarVM.cpp:
5:07 PM Changeset in webkit [280504] by Chris Dumez
  • 96 edits
    3 copies
    1 add in trunk

Add initial support for 'Cross-Origin-Opener-Policy' HTTP header
https://bugs.webkit.org/show_bug.cgi?id=192193
<rdar://problem/42013525>

Reviewed by Geoff Garen.

LayoutTests/imported/w3c:

Rebaseline WPT tests now that most tests are passing.

  • web-platform-tests/IndexedDB/serialize-sharedarraybuffer-throws.https-expected.txt:
  • web-platform-tests/html/cross-origin-embedder-policy/cross-origin-isolated-permission.https-expected.txt:
  • web-platform-tests/html/cross-origin-opener-policy/blob-popup.https-expected.txt:
  • web-platform-tests/html/cross-origin-opener-policy/coep-blob-popup.https-expected.txt:
  • web-platform-tests/html/cross-origin-opener-policy/coep-navigate-popup.https-expected.txt:
  • web-platform-tests/html/cross-origin-opener-policy/coep-redirect.https-expected.txt:
  • web-platform-tests/html/cross-origin-opener-policy/coep.https-expected.txt:
  • web-platform-tests/html/cross-origin-opener-policy/coop-coep-sandbox.https-expected.txt:
  • web-platform-tests/html/cross-origin-opener-policy/coop-csp-sandbox-navigate.https-expected.txt:
  • web-platform-tests/html/cross-origin-opener-policy/coop-csp-sandbox.https-expected.txt:
  • web-platform-tests/html/cross-origin-opener-policy/coop-navigated-history-popup.https-expected.txt:
  • web-platform-tests/html/cross-origin-opener-policy/coop-navigated-popup.https-expected.txt:
  • web-platform-tests/html/cross-origin-opener-policy/coop-sandbox.https-expected.txt:
  • web-platform-tests/html/cross-origin-opener-policy/header-parsing.https-expected.txt:
  • web-platform-tests/html/cross-origin-opener-policy/historical/coep-navigate-popup-unsafe-inherit.https-expected.txt:
  • web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-cross-origin.https-expected.txt:
  • web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-origin.https-expected.txt:
  • web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-site.https-expected.txt:
  • web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-cross-origin.https-expected.txt:
  • web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-origin.https-expected.txt:
  • web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-site.https-expected.txt:
  • web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-with-cross-origin.https-expected.txt:
  • web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-with-same-origin.https-expected.txt:
  • web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-with-same-site.https-expected.txt:
  • web-platform-tests/html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-same-origin-allow-popups.https-expected.txt:
  • web-platform-tests/html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-same-origin.https-expected.txt:
  • web-platform-tests/html/cross-origin-opener-policy/iframe-popup-same-origin-to-same-origin.https-expected.txt:
  • web-platform-tests/html/cross-origin-opener-policy/iframe-popup-same-origin-to-unsafe-none.https-expected.txt:
  • web-platform-tests/html/cross-origin-opener-policy/iframe-popup-unsafe-none-to-same-origin.https-expected.txt:
  • web-platform-tests/html/cross-origin-opener-policy/javascript-url.https-expected.txt:
  • web-platform-tests/html/cross-origin-opener-policy/navigate-to-aboutblank.https-expected.txt:
  • web-platform-tests/html/cross-origin-opener-policy/no-https-expected.txt:
  • web-platform-tests/html/cross-origin-opener-policy/popup-coop-by-sw-from-coop.https-expected.txt:
  • web-platform-tests/html/cross-origin-opener-policy/popup-coop-by-sw.https-expected.txt:
  • web-platform-tests/html/cross-origin-opener-policy/popup-redirect-cache.https-expected.txt:
  • web-platform-tests/html/cross-origin-opener-policy/popup-redirect-same-origin-allow-popups.https-expected.txt:
  • web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-cross-origin.https-expected.txt:
  • web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-origin.https-expected.txt:
  • web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-site.https-expected.txt:
  • web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-with-cross-origin.https-expected.txt:
  • web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-with-same-origin.https-expected.txt:
  • web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-with-same-site.https-expected.txt:
  • web-platform-tests/html/cross-origin-opener-policy/popup-unsafe-none-with-cross-origin.https-expected.txt:
  • web-platform-tests/html/cross-origin-opener-policy/popup-unsafe-none-with-same-origin.https-expected.txt:
  • web-platform-tests/html/cross-origin-opener-policy/popup-unsafe-none-with-same-site.https-expected.txt:
  • web-platform-tests/html/cross-origin-opener-policy/popup-unspecified-with-cross-origin.https-expected.txt:
  • web-platform-tests/html/cross-origin-opener-policy/popup-unspecified-with-same-origin.https-expected.txt:
  • web-platform-tests/html/cross-origin-opener-policy/popup-unspecified-with-same-site.https-expected.txt:
  • web-platform-tests/html/cross-origin-opener-policy/popup-with-structured-header.https-expected.txt:
  • web-platform-tests/html/cross-origin-opener-policy/resource-popup.https-expected.txt:
  • web-platform-tests/html/cross-origin-opener-policy/resources/resource-popup.html:
  • web-platform-tests/html/dom/idlharness.worker-expected.txt:

Source/WebCore:

Add initial support for 'Cross-Origin-Opener-Policy' HTTP header:

Support is complete enough to pass most WPT tests with the exception of:

  • The ones involving blob. Support for Blob does not seem trivial so I will address separately (https://github.com/whatwg/html/issues/5198).
  • The ones that requires reporting COOP enforcement as this is not supported yet. This is a fairly large task so I'll handle separately.
  • The ones that involve Cross-Origin-Embedder-Policy (COEP) and this is not yet supported.

I tried to stay as close as possible to the HTML specification as possible in terms
of structuring and naming. I also have code comments to link to the relevant HTML
spec sections.

Note that as it stands, we do not currently swap process based on COOP header. We
merely do isolation of the new browsing context at JS level for now. At some point,
we'll want to actually process-swap, once we support COEP and we want to re-enable
some Web APIs such as SharedArrayBuffer.

No new tests, covered by web-plaform-tests/html/cross-origin-opener-policy.

  • Headers.cmake:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/WebCoreBuiltinNames.h:
  • dom/Document.cpp:

(WebCore::Document::initSecurityContext):
(WebCore::Document::shouldForceNoOpenerBasedOnCOOP const):
(WebCore::Document::crossOriginOpenerPolicy const):
(WebCore::Document::setCrossOriginOpenerPolicy):

  • dom/Document.h:

(WebCore::Document::isSameOriginAsTopDocument const):

  • dom/SecurityContext.cpp:

(WebCore::SecurityContext::enforceSandboxFlags):

  • dom/SecurityContext.h:

(WebCore::SecurityContext::creationSandboxFlags const):

  • inspector/InspectorFrontendClientLocal.cpp:

(WebCore::InspectorFrontendClientLocal::openURLExternally):

  • loader/CrossOriginEmbedderPolicy.cpp: Copied from Source/WebCore/page/AbstractFrame.cpp.

(WebCore::obtainCrossOriginEmbedderPolicy):

  • loader/CrossOriginEmbedderPolicy.h: Copied from Source/WebCore/page/AbstractFrame.cpp.
  • loader/CrossOriginOpenerPolicy.cpp: Added.

(WebCore::obtainCrossOriginOpenerPolicy):

  • loader/CrossOriginOpenerPolicy.h: Copied from Source/WebCore/page/AbstractFrame.h.
  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::willSendRequest):
(WebCore::checkIfCOOPValuesRequireBrowsingContextGroupSwitch):
(WebCore::computeResponseOriginAndCOOP):
(WebCore::DocumentLoader::doCrossOriginOpenerHandlingOfResponse):
(WebCore::DocumentLoader::enforceResponseCrossOriginOpenerPolicy):
(WebCore::DocumentLoader::responseReceived):
(WebCore::DocumentLoader::maybeLoadEmpty):

  • loader/DocumentLoader.h:

(WebCore::DocumentLoader::crossOriginOpenerPolicy const):

  • loader/DocumentWriter.cpp:

(WebCore::DocumentWriter::begin):

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::didBeginDocument):
(WebCore::FrameLoader::setOpener):
(WebCore::FrameLoader::loadURL):
(WebCore::FrameLoader::loadPostRequest):
(WebCore::createWindow):
(WebCore::FrameLoader::switchBrowsingContextsGroup):

  • loader/FrameLoader.h:
  • loader/NavigationAction.cpp:
  • loader/NavigationAction.h:

(WebCore::NavigationAction::Requester::securityOrigin const):
(WebCore::NavigationAction::Requester::topOrigin const):
(WebCore::NavigationAction::Requester::crossOriginOpenerPolicy const):

  • page/AbstractFrame.cpp:

(WebCore::AbstractFrame::resetWindowProxy):

  • page/AbstractFrame.h:
  • page/DOMWindow.cpp:

(WebCore::DOMWindow::crossOriginIsolated const):
(WebCore::DOMWindow::createWindow):

  • page/DOMWindow.h:
  • page/Frame.cpp:

(WebCore::Frame::resetScript):

  • page/Frame.h:
  • page/Page.h:

(WebCore::Page::setOpenedByDOMWithOpener):

  • page/WindowOrWorkerGlobalScope.idl:
  • page/csp/ContentSecurityPolicy.cpp:

(WebCore::ContentSecurityPolicy::applyPolicyToScriptExecutionContext):

  • platform/network/HTTPHeaderNames.in:
  • platform/network/HTTPParsers.cpp:

(WebCore::parseStructuredFieldValue):

  • platform/network/HTTPParsers.h:
  • platform/network/ResourceResponseBase.cpp:

(WebCore::isSafeRedirectionResponseHeader):

  • workers/WorkerGlobalScope.cpp:

(WebCore::WorkerGlobalScope::crossOriginIsolated const):

  • workers/WorkerGlobalScope.h:

Source/WTF:

Add experimental feature flag for 'Cross-Origin-Opener-Policy' HTTP header
support.

  • Scripts/Preferences/WebPreferencesExperimental.yaml:

LayoutTests:

Update test expectations.

  • TestExpectations:
  • platform/ios-wk2/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/mac-wk1/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/mac-wk2/TestExpectations:
  • platform/mac-wk2/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/mac/TestExpectations:
4:57 PM Changeset in webkit [280503] by Ayumi Kojima
  • 2 edits in trunk/LayoutTests

[ iOS ] http/wpt/service-workers/navigation-redirect-main-frame.https.html is a flaky timeout.
https://bugs.webkit.org/show_bug.cgi?id=228670

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
4:08 PM Changeset in webkit [280502] by Chris Dumez
  • 28 edits in trunk

Unreviewed, reverting r280482.

Will take a more conservative approach

Reverted changeset:

"HTMLElement.innerText setter should convert new lines to
<br>"
https://bugs.webkit.org/show_bug.cgi?id=228605
https://commits.webkit.org/r280482

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

Add spacebar functionality for macOS smooth scrolling
https://bugs.webkit.org/show_bug.cgi?id=228155

Patch by Dana Estra <destra@apple.com> on 2021-07-30
Reviewed by Tim Horton.

Fixed bug that was causing spacebar events to return false from beginKeyboardScrollGesture.

Manually tested on webpage.

  • platform/KeyboardScrollingAnimator.cpp:

(WebCore::KeyboardScrollingAnimator::beginKeyboardScrollGesture):

3:38 PM Changeset in webkit [280500] by Jean-Yves Avenard
  • 5 edits in trunk

REGRESSION (r274460?): Infinite recursion on fullscreen/full-screen-remove-ancestor.html in WTR::InjectedBundlePage::closeFullScreen
https://bugs.webkit.org/show_bug.cgi?id=224085
rdar://75576840

Reviewed by Eric Carlson.

Source/WebKit:

WebFullScreenManager::close() is used to cleanup a transient error when exiting or
attempting to exit fullscreen; it then calls InjectedBundleXXX::closeFullScreen().
It is possible for the injected bundle's closeFullScreen() to attempt to exit full
screen mode again.
Rather than making the bundle responsible for doing the right thing, we add a
workaround in the fullscreen manager to ensure no recursion is happening.

Covered by existing test.

  • WebProcess/FullScreen/WebFullScreenManager.cpp:

(WebKit::WebFullScreenManager::close):

  • WebProcess/FullScreen/WebFullScreenManager.h: Make close() method private

LayoutTests:

  • platform/mac-wk2/TestExpectations: re-enable test.
3:29 PM Changeset in webkit [280499] by Ayumi Kojima
  • 2 edits in trunk/LayoutTests

[ iPad ] fast/canvas/canvas-color-space-display-p3.html is failing.
https://bugs.webkit.org/show_bug.cgi?id=228663

Unreviewed test gardening.

  • platform/ipad/TestExpectations:
3:03 PM Changeset in webkit [280498] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Unreviewed follow-up to r280491 to address review feedback from Darin Adler.

Use URL::isBlankURL() instead of a case-sensitive match for aboutBlankURL().

  • dom/Document.cpp:

(WebCore::Document::updateBaseURL):

2:35 PM Changeset in webkit [280497] by Ayumi Kojima
  • 2 edits in trunk/LayoutTests

[ iOS Debug ] fast/events/tabindex-focus-blur-all.html is failing.
https://bugs.webkit.org/show_bug.cgi?id=228659

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
2:16 PM Changeset in webkit [280496] by ysuzuki@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, fix wrong access width
https://bugs.webkit.org/show_bug.cgi?id=228301
rdar://81341472

  • yarr/YarrJIT.cpp:
1:58 PM Changeset in webkit [280495] by Ayumi Kojima
  • 2 edits in trunk/LayoutTests

REGRESSION (r275641): [ iPad Debug ] accessibility/ios-simulator/scroll-in-overflow-div.html is asserting.
https://bugs.webkit.org/show_bug.cgi?id=228622

Unreviewed test gardening.

  • platform/ipad/TestExpectations:
1:46 PM Changeset in webkit [280494] by Ayumi Kojima
  • 1 edit
    1 add in trunk/LayoutTests

[ iPad ] Rebaselining fast/dom/collection-iterators.html.
https://bugs.webkit.org/show_bug.cgi?id=228657

Unreviewed test gardening.

  • platform/ipad/fast/dom/collection-iterators-expected.txt: Added.
1:44 PM Changeset in webkit [280493] by Yijia Huang
  • 16 edits
    1 copy
    1 add in trunk/Source/JavaScriptCore

Add Pre/Post-Indexed Address Mode to Air for ARM64
https://bugs.webkit.org/show_bug.cgi?id=228047

Reviewed by Phil Pizlo.

Pre-indexed addressing means that the address is the sum of the value in the 64-bit base register
and an offset, and the address is then written back to the base register. And post-indexed
addressing means that the address is the value in the 64-bit base register, and the sum of the
address and the offset is then written back to the base register. They are relatively common for
loops to iterate over an array by increasing/decreasing a pointer into the array at each iteration.
With such an addressing mode, the instruction selector can merge the increment and access the array.

#####################################
## Pre-Index Address Mode For Load ##
#####################################

LDR Wt, [Xn, #imm]!

In B3 Reduction Strength, since we have this reduction rule:

Turn this: Load(Add(address, offset1), offset = offset2)
Into this: Load(address, offset = offset1 + offset2)

Then, the equivalent pattern is:

address = Add(base, offset)
...
memory = Load(base, offset)

First, we convert it to the canonical form:

address = Add(base, offset)
newMemory = Load(base, offset) move the memory to just after the address
...
memory = Identity(newMemory)

Next, lower to Air:

Move %base, %address
Move (%address, prefix(offset)), %newMemory

######################################
## Post-Index Address Mode For Load ##
######################################

LDR Wt, [Xn], #imm

Then, the equivalent pattern is:

memory = Load(base, 0)
...
address = Add(base, offset)

First, we convert it to the canonical form:

newOffset = Constant
newAddress = Add(base, offset)
memory = Load(base, 0) move the offset and address to just before the memory
...
offset = Identity(newOffset)
address = Identity(newAddress)

Next, lower to Air:

Move %base, %newAddress
Move (%newAddress, postfix(offset)), %memory

#############################
## Pattern Match Algorithm ##
#############################

To detect the pattern for prefix/postfix increment address is tricky due to the structure in B3 IR. The
algorithm used in this patch is to collect the first valid values (add/load), then search for any
paired value (load/add) to match all of them. In worst case, the runtime complexity is O(n2)
when n is the number of all values.

After collecting two sets of candidates, we match the prefix incremental address first since it seems
more beneficial to the compiler (shown in the next section). And then, go for the postfix one.

##############################################
## Test for Pre/Post-Increment Address Mode ##
##############################################

Given Loop with Pre-Increment:
int64_t ldr_pre(int64_t *p) {

int64_t res = 0;
while (res < 10)

res += *++p;

return res;

}

B3 IR:


BB#0: ; frequency = 1.000000

Int64 b@0 = Const64(0)
Int64 b@2 = ArgumentReg(%x0)
Void b@20 = Upsilon($0(b@0), 18, WritesLocalState)
Void b@21 = Upsilon(b@2,
19, WritesLocalState)
Void b@4 = Jump(Terminal)

Successors: #1
BB#1: ; frequency = 1.000000
Predecessors: #0, #2

Int64 b@18 = Phi(ReadsLocalState)
Int64 b@19 = Phi(ReadsLocalState)
Int64 b@7 = Const64(10)
Int32 b@8 = AboveEqual(b@18, $10(b@7))
Void b@9 = Branch(b@8, Terminal)

Successors: Then:#3, Else:#2
BB#2: ; frequency = 1.000000
Predecessors: #1

Int64 b@10 = Const64(8)
Int64 b@11 = Add(b@19, $8(b@10))
Int64 b@13 = Load(b@11, ControlDependent|Reads:Top)
Int64 b@14 = Add(b@18, b@13)
Void b@22 = Upsilon(b@14, 18, WritesLocalState)
Void b@23 = Upsilon(b@11,
19, WritesLocalState)
Void b@16 = Jump(Terminal)

Successors: #1
BB#3: ; frequency = 1.000000
Predecessors: #1

Void b@17 = Return(b@18, Terminal)

Variables:

Int64 var0
Int64 var1


W/O Pre-Increment Address Mode:


...
BB#2: ; frequency = 1.000000
Predecessors: #1

Move $8, %x3, $8(b@12)
Add64 $8, %x0, %x1, b@11
Move (%x0,%x3), %x0, b@13
Add64 %x0, %x2, %x2, b@14
Move %x1, %x0, b@23
Jump b@16

Successors: #1
...


W/ Pre-Increment Address Mode:


...
BB#2: ; frequency = 1.000000
Predecessors: #1

MoveWithIncrement64 (%x0,Pre($8)), %x2, b@13
Add64 %x2, %x1, %x1, b@14
Jump b@16

Successors: #1
...


Given Loop with Post-Increment:
int64_t ldr_pre(int64_t *p) {

int64_t res = 0;
while (res < 10)

res += *p++;

return res;

}

B3 IR:


BB#0: ; frequency = 1.000000

Int64 b@0 = Const64(0)
Int64 b@2 = ArgumentReg(%x0)
Void b@20 = Upsilon($0(b@0), 18, WritesLocalState)
Void b@21 = Upsilon(b@2,
19, WritesLocalState)
Void b@4 = Jump(Terminal)

Successors: #1
BB#1: ; frequency = 1.000000
Predecessors: #0, #2

Int64 b@18 = Phi(ReadsLocalState)
Int64 b@19 = Phi(ReadsLocalState)
Int64 b@7 = Const64(10)
Int32 b@8 = AboveEqual(b@18, $10(b@7))
Void b@9 = Branch(b@8, Terminal)

Successors: Then:#3, Else:#2
BB#2: ; frequency = 1.000000
Predecessors: #1

Int64 b@10 = Load(b@19, ControlDependent|Reads:Top)
Int64 b@11 = Add(b@18, b@10)
Int64 b@12 = Const64(8)
Int64 b@13 = Add(b@19, $8(b@12))
Void b@22 = Upsilon(b@11, 18, WritesLocalState)
Void b@23 = Upsilon(b@13,
19, WritesLocalState)
Void b@16 = Jump(Terminal)

Successors: #1
BB#3: ; frequency = 1.000000
Predecessors: #1

Void b@17 = Return(b@18, Terminal)

Variables:

Int64 var0
Int64 var1


W/O Post-Increment Address Mode:


...
BB#2: ; frequency = 1.000000
Predecessors: #1

Move (%x0), %x2, b@10
Add64 %x2, %x1, %x1, b@11
Add64 $8, %x0, %x0, b@13
Jump b@16

Successors: #1
...


W/ Post-Increment Address Mode:


...
BB#2: ; frequency = 1.000000
Predecessors: #1

MoveWithIncrement64 (%x0,Post($8)), %x2, b@10
Add64 %x2, %x1, %x1, b@11
Jump b@16

Successors: #1
...


  • Sources.txt:
  • assembler/AbstractMacroAssembler.h:

(JSC::AbstractMacroAssembler::PreIndexAddress::PreIndexAddress):
(JSC::AbstractMacroAssembler::PostIndexAddress::PostIndexAddress):

  • assembler/MacroAssemblerARM64.h:

(JSC::MacroAssemblerARM64::load64):
(JSC::MacroAssemblerARM64::load32):
(JSC::MacroAssemblerARM64::store64):
(JSC::MacroAssemblerARM64::store32):

  • assembler/testmasm.cpp:

(JSC::testStorePrePostIndex32):
(JSC::testStorePrePostIndex64):
(JSC::testLoadPrePostIndex32):
(JSC::testLoadPrePostIndex64):

  • b3/B3CanonicalizePrePostIncrements.cpp: Added.

(JSC::B3::canonicalizePrePostIncrements):

  • b3/B3CanonicalizePrePostIncrements.h: Copied from Source/JavaScriptCore/b3/B3ValueKeyInlines.h.
  • b3/B3Generate.cpp:

(JSC::B3::generateToAir):

  • b3/B3LowerToAir.cpp:
  • b3/B3ValueKey.h:
  • b3/B3ValueKeyInlines.h:

(JSC::B3::ValueKey::ValueKey):

  • b3/air/AirArg.cpp:

(JSC::B3::Air::Arg::jsHash const):
(JSC::B3::Air::Arg::dump const):
(WTF::printInternal):

  • b3/air/AirArg.h:

(JSC::B3::Air::Arg::preIndex):
(JSC::B3::Air::Arg::postIndex):
(JSC::B3::Air::Arg::isPreIndex const):
(JSC::B3::Air::Arg::isPostIndex const):
(JSC::B3::Air::Arg::isMemory const):
(JSC::B3::Air::Arg::base const):
(JSC::B3::Air::Arg::offset const):
(JSC::B3::Air::Arg::isGP const):
(JSC::B3::Air::Arg::isFP const):
(JSC::B3::Air::Arg::isValidPreIndexForm):
(JSC::B3::Air::Arg::isValidPostIndexForm):
(JSC::B3::Air::Arg::isValidForm const):
(JSC::B3::Air::Arg::forEachTmpFast):
(JSC::B3::Air::Arg::forEachTmp):
(JSC::B3::Air::Arg::asPreIndexAddress const):
(JSC::B3::Air::Arg::asPostIndexAddress const):

  • b3/air/AirOpcode.opcodes:
  • b3/air/opcode_generator.rb:
  • b3/testb3.h:
  • b3/testb3_3.cpp:

(testLoadPreIndex32):
(testLoadPreIndex64):
(testLoadPostIndex32):
(testLoadPostIndex64):
(addShrTests):

  • jit/ExecutableAllocator.cpp:

(JSC::jitWriteThunkGenerator):

1:26 PM Changeset in webkit [280492] by commit-queue@webkit.org
  • 10 edits
    2 adds in trunk/Source/WebCore

Add key-driven smooth scrolling to macOS
https://bugs.webkit.org/show_bug.cgi?id=228009

Patch by Dana Estra <destra@apple.com> on 2021-07-30
Reviewed by Tim Horton.

Cause keyboard scroll event to trigger start of smooth scroll animation, using same physics implementation as iOS smooth scrolling.

No tests yet.

  • WebCore.xcodeproj/project.pbxproj:
  • dom/Node.cpp:

(WebCore::Node::defaultEventHandler):

  • page/EventHandler.cpp:

(WebCore::EventHandler::defaultKeyboardEventHandler):
(WebCore::EventHandler::scrollDistance):
(WebCore::EventHandler::stopKeyboardScrolling):
(WebCore::EventHandler::startKeyboardScrolling):

  • platform/KeyboardScrollingAnimator.cpp: Added.
  • platform/KeyboardScrollingAnimator.h: Added.
  • platform/ScrollAnimator.cpp:

(WebCore::ScrollAnimator::startAnimationCallback):

  • platform/ScrollAnimator.h:
  • platform/ScrollController.cpp:

(WebCore::ScrollController::animationCallback):
(WebCore::ScrollController::startOrStopAnimationCallbacks):
(WebCore::ScrollController::beginKeyboardScrolling):
(WebCore::ScrollController::stopKeyboardScrolling):
(WebCore::ScrollController::setIsAnimatingKeyboardScrolling):
(WebCore::ScrollController::updateKeyboardScrollingAnimatingState):

  • platform/ScrollController.h:

(WebCore::ScrollControllerClient::updateKeyboardScrollPosition):

1:25 PM Changeset in webkit [280491] by Chris Dumez
  • 15 edits
    5 moves in trunk

Document's fallback base URL should be deduced from its creator when URL is about:blank
https://bugs.webkit.org/show_bug.cgi?id=228624

Reviewed by Geoffrey Garen.

LayoutTests/imported/w3c:

Rebaseline WPT test now that one more check is passing.

  • web-platform-tests/html/infrastructure/urls/terminology-0/document-base-url-expected.txt:

Source/WebCore:

Document's fallback base URL should be deduced from its creator when URL is about:blank:

Chrome and Firefox match the specification here.

Tests: http/tests/dom/iframe-no-src-local-origin-allow.html

http/tests/dom/iframe-no-src-set-location.html

  • dom/Document.cpp:

(WebCore::Document::updateBaseURL):

LayoutTests:

Update existing tests to reflect behavior change. I have verified that those tests were failing in Firefox & Chrome and
are now passing in those browsers.

  • http/tests/dom/iframe-no-src-local-origin-allow-expected.txt: Renamed from LayoutTests/fast/frames/iframe-no-src-local-origin-allow-expected.txt.
  • http/tests/dom/iframe-no-src-local-origin-allow.html: Renamed from LayoutTests/fast/frames/iframe-no-src-local-origin-allow.html.
  • http/tests/dom/iframe-no-src-set-location-expected.txt: Renamed from LayoutTests/fast/frames/iframe-no-src-set-location-expected.txt.
  • http/tests/dom/iframe-no-src-set-location.html: Renamed from LayoutTests/fast/frames/iframe-no-src-set-location.html.
  • http/tests/dom/resources/iframe-no-src-set-location-pass.html: Renamed from LayoutTests/fast/frames/resources/iframe-no-src-set-location-pass.html.
  • http/tests/security/aboutBlank/security-context-expected.txt:
  • http/tests/security/aboutBlank/security-context-grandchildren-expected.txt:
  • http/tests/security/aboutBlank/security-context-grandchildren-lexical-expected.txt:
  • http/tests/security/aboutBlank/security-context-grandchildren-write-lexical-expected.txt:
  • http/tests/security/aboutBlank/security-context-grandchildren-writeln-lexical-expected.txt:
  • http/tests/security/aboutBlank/security-context-window-open-expected.txt:
  • http/tests/security/aboutBlank/security-context-with-base-tag-expected.txt:
  • http/tests/security/aboutBlank/security-context-write-expected.txt:
  • http/tests/security/aboutBlank/security-context-writeln-expected.txt:
12:49 PM Changeset in webkit [280490] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebKit

Accessibility code logs to stderr in many layout test runs
https://bugs.webkit.org/show_bug.cgi?id=228653

Reviewed by Wenson Hsieh.

  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::accessibilityPreferencesDidChange):
r279342 accidentally landed a WTFLogAlways in a common codepath. Remove it.

11:56 AM Changeset in webkit [280489] by Alexey Shvayka
  • 2 edits in trunk/Source/JavaScriptCore

REGRESSION (r280460): 42 JSC test failures on Debug arm64 with ASSERTION FAILED: !m_needExceptionCheck
https://bugs.webkit.org/show_bug.cgi?id=228652

Unreviewed unchecked exception fix.

Release scope before calling RegExpGlobalData::getBackref().

  • runtime/RegExpConstructor.cpp:

(JSC::JSC_DEFINE_CUSTOM_GETTER):

11:49 AM Changeset in webkit [280488] by jer.noble@apple.com
  • 7 edits
    1 add in trunk

[Cocoa] Remove support for AVAssetImageGenerator
https://bugs.webkit.org/show_bug.cgi?id=228560

Reviewed by Eric Carlson.

LayoutTests/imported/w3c:

The 2x2-green.mp4 file fails to decode as its natural size is too small for the system decoder to handle. Replace with
a media file of more reasonable size.

  • web-platform-tests/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/video-aspect-ratio.html:
  • web-platform-tests/html/semantics/embedded-content/media-elements/video_loop_base.html:
  • web-platform-tests/media/16x16-green.mp4: Added.

Source/WebCore:

AVAssetImageGenerator is used when there is not yet an available image from AVPlayerItemVideoOutput.
However, AVAssetImageGenerator is a synchronous API call; if data for the current time is not available,
the generator will cause a request for that data to be issued, and if the main thread is blocked in a
synchronous call to the generator, that request can never be completed, causing a deadlock.

Instead, always block moving to a readyState >= HAVE_CURRENT_DATA until either the AVPlayerLayer or
the AVPlayerItemVideoOutput report having an available frame. This prevents clients from attempting
to paint until a frame is available, and ensures that we will always have an available frame for
painting, removing the need for the synchronous generator call.

To ensure the readyState is updated when AVPlayerItemVideoOutput has an available image, register
with the output at creation time for a notification as soon as an image is available. And in the existing
delegate object, send a message back to the MediaPlayerPrivateAVFoundationObjC when that occurs.

No tests needed; this should reduce flakiness of existing tests and cause no regression in behavior.

  • platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:

(WebCore::MediaPlayerPrivateAVFoundation::updateStates):

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

(WebCore::MediaPlayerPrivateAVFoundationObjC::hasContextRenderer const):
(WebCore::MediaPlayerPrivateAVFoundationObjC::destroyContextVideoRenderer):
(WebCore::MediaPlayerPrivateAVFoundationObjC::paintCurrentFrameInContext):
(WebCore::MediaPlayerPrivateAVFoundationObjC::createVideoOutput):
(WebCore::MediaPlayerPrivateAVFoundationObjC::outputMediaDataWillChange):
(WebCore::MediaPlayerPrivateAVFoundationObjC::paintWithVideoOutput):
(-[WebCoreAVFPullDelegate setParent:]):
(-[WebCoreAVFPullDelegate outputMediaDataWillChange:]):
(WebCore::MediaPlayerPrivateAVFoundationObjC::createImageGenerator): Deleted.
(WebCore::MediaPlayerPrivateAVFoundationObjC::destroyImageGenerator): Deleted.
(WebCore::MediaPlayerPrivateAVFoundationObjC::paintWithImageGenerator): Deleted.
(WebCore::MediaPlayerPrivateAVFoundationObjC::createImageForTimeInRect): Deleted.

11:25 AM Changeset in webkit [280487] by Russell Epstein
  • 1 copy in tags/Safari-612.1.26

Tag Safari-612.1.26.

11:13 AM Changeset in webkit [280486] by Russell Epstein
  • 2 edits in branches/safari-612.1.26-branch/Source/WebKit

Cherry-pick r280433. rdar://problem/81334141

The bundle path of downlevel Safari is wrong
https://bugs.webkit.org/show_bug.cgi?id=228339

Reviewed by Tim Horton.

Use the same approach as isSystemWebKit to check whether the WebKit bundle
is from the staged framework.

  • Shared/Cocoa/WebPreferencesDefaultValuesCocoa.mm: (WebKit::isFeatureFlagEnabled):

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

11:13 AM Changeset in webkit [280485] by Russell Epstein
  • 2 edits in branches/safari-612.1.26-branch/Source/WebKit

Cherry-pick r280424. rdar://problem/81334136

[macOS Catalina] Some feature preferences have wrong default values
https://bugs.webkit.org/show_bug.cgi?id=228564

Reviewed by Tim Horton.

When HAVE(SYSTEM_FEATURE_FLAGS) is false, we still need to enable
some features by default.

This patch makes sure the following features are enabled by default
on macOS (consistent with the properties in WebKit-macos.plist):

  • async_frame_and_overflow_scrolling
  • gpu_process_canvas_rendering
  • gpu_process_media
  • gpu_process_webrtc
  • incremental_pdf
  • vp9_decoder
  • webm_format_reader
  • webm_parser
  • Shared/WebPreferencesDefaultValues.cpp: (WebKit::defaultUseGPUProcessForCanvasRenderingEnabled): (WebKit::defaultUseGPUProcessForDOMRenderingEnabled): (WebKit::defaultUseGPUProcessForMediaEnabled): (WebKit::defaultCaptureAudioInGPUProcessEnabled): (WebKit::defaultCaptureVideoInGPUProcessEnabled): (WebKit::defaultWebRTCCodecsInGPUProcess): (WebKit::defaultIncrementalPDFEnabled): (WebKit::defaultWebMFormatReaderEnabled):

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

11:08 AM Changeset in webkit [280484] by youenn@apple.com
  • 3 edits in trunk/Source/WebKit

softlink nw_parameters_allow_sharing_port_with_listener
https://bugs.webkit.org/show_bug.cgi?id=228636

Reviewed by Eric Carlson.

  • NetworkProcess/webrtc/NetworkRTCUDPSocketCocoa.mm:

(WebKit::NetworkRTCUDPSocketCocoaConnections::createNWConnection):
This helps compiling/running WebKit on older OSes.
Also make use of nw_endpoint_create_host_with_numeric_port to remove the need for string to int conversion.

  • Platform/spi/Cocoa/NWParametersSPI.h:
10:46 AM Changeset in webkit [280483] by Jonathan Bedard
  • 4 edits in trunk/Tools

[git-webkit] Forward errors from log and blame
https://bugs.webkit.org/show_bug.cgi?id=228621
<rdar://problem/81297642>

Rubber-stamped by Aakash Jain.

  • Scripts/libraries/webkitscmpy/setup.py: Bump version.
  • Scripts/libraries/webkitscmpy/webkitscmpy/init.py: Ditto.
  • Scripts/libraries/webkitscmpy/webkitscmpy/program/command.py:

(FilteredCommand.main): If the exit code is non-zero, print all errors.

10:46 AM Changeset in webkit [280482] by Chris Dumez
  • 28 edits in trunk

HTMLElement.innerText setter should convert new lines to <br>
https://bugs.webkit.org/show_bug.cgi?id=228605

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

Rebaselined WPT tests that are now passing. Note that those were failing in WebKit but passing in Firefox
and Chrome.

  • web-platform-tests/html/dom/elements/the-innertext-and-outertext-properties/innertext-setter-expected.txt:
  • web-platform-tests/html/dom/elements/the-innertext-idl-attribute/setter-expected.txt:
  • web-platform-tests/innerText/setter-expected.txt:

Source/WebCore:

HTMLElement.innerText setter should convert new lines to <br>:

Our innerText setter had some logic that was specific to form elements and specific render
styles that wasn't part of the specification. It was causing us to not replace the new lines
with <br> in some cases. I dropped this logic to align with Blink and Gecko, as those are
passing the same WPT tests.

No new tests, rebaselined existing tests.

  • html/HTMLElement.cpp:

(WebCore::HTMLElement::setInnerText):

LayoutTests:

Rebaseline a few tests that changed output.

  • editing/pasteboard/smart-paste-paragraph-003-expected.txt:
  • platform/mac/editing/input/reveal-caret-of-multiline-input-expected.txt:
  • platform/mac/fast/forms/basic-textareas-quirks-expected.txt:
  • platform/mac/fast/forms/textarea-scroll-height-expected.txt:
  • platform/mac/fast/forms/textarea-scrollbar-expected.txt:
  • platform/mac/fast/forms/textarea-scrolled-type-expected.txt:
  • platform/mac/fast/forms/textarea-width-expected.txt:
  • platform/mac/fast/parser/open-comment-in-textarea-expected.txt:
  • platform/mac/fast/text/international/unicode-bidi-plaintext-in-textarea-expected.txt:
  • platform/mac/http/tests/navigation/javascriptlink-frames-expected.txt:
10:30 AM Changeset in webkit [280481] by youenn@apple.com
  • 8 edits in trunk/Source/WebKit

Attribute nw connections to the source application
https://bugs.webkit.org/show_bug.cgi?id=228641
<rdar://81039713>

Reviewed by Alex Christensen.

Add source application token for every nw connection/listener, like done for WebSocket or NSURLSession tasks.
This will allow the nw layer to do custom processing based on the application doing the loads.
Introduce an audit_token_t getter on NetworkProcess.

  • NetworkProcess/cocoa/NetworkProcessCocoa.mm:

(WebKit::NetworkProcess::sourceApplicationAuditData const):
(WebKit::NetworkProcess::sourceApplicationAuditToken const):

  • NetworkProcess/webrtc/NetworkRTCProvider.cpp:

(WebKit::NetworkRTCProvider::NetworkRTCProvider):

  • NetworkProcess/webrtc/NetworkRTCProvider.h:

(WebKit::NetworkRTCProvider::sourceApplicationAuditToken const):

  • NetworkProcess/webrtc/NetworkRTCTCPSocketCocoa.mm:

(WebKit::NetworkRTCTCPSocketCocoa::NetworkRTCTCPSocketCocoa):

  • NetworkProcess/webrtc/NetworkRTCUDPSocketCocoa.mm:

(WebKit::NetworkRTCUDPSocketCocoaConnections::NetworkRTCUDPSocketCocoaConnections):
(WebKit::NetworkRTCUDPSocketCocoaConnections::configureParameters):

  • Platform/spi/Cocoa/NWParametersSPI.h:
10:02 AM Changeset in webkit [280480] by sihui_liu@apple.com
  • 2 edits in trunk/LayoutTests

Layout Test imported/w3c/web-platform-tests/IndexedDB/fire-error-event-exception.html is a Flaky Failure
https://bugs.webkit.org/show_bug.cgi?id=201481
<rdar://problem/55046055>

Reviewed by Youenn Fablet.

The test always passes now according to recent results, but it is shown as failed as TEXT because of the
expectation.

  • platform/mac/TestExpectations:
9:41 AM Changeset in webkit [280479] by Chris Dumez
  • 13 edits in trunk

Clicking an HTMLLinkElement should not trigger a navigation
https://bugs.webkit.org/show_bug.cgi?id=228618

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

Rebaseline WPT test now that more checks are passing.

  • web-platform-tests/html/infrastructure/urls/resolving-urls/query-encoding/navigation.sub-expected.txt:

Source/WebCore:

Clicking an HTMLLinkElement should not trigger a navigation because HTMLLinkElement has no activation
behavior as per the HTML specification:

Firefox and Chrome follow the specification here.

No new tests, updated/rebaselined existing tests.

  • html/HTMLLinkElement.cpp:
  • html/HTMLLinkElement.h:

LayoutTests:

Update existing tests to reflect behavior change. I verified that the tests were failing
in both Firefox and Chrome prior to me updating them.

  • fast/dom/html-link-element-activation-behavior-on-element-click-expected.txt:
  • fast/dom/html-link-element-activation-behavior-on-element-click.html:
  • fast/dom/html-link-element-activation-behavior-on-mouse-click-expected.txt:
  • fast/dom/html-link-element-activation-behavior-on-mouse-click.html:
  • fast/dom/resources/html-link-element-activation-behavior-on-element-click-step1.html:
  • fast/dom/resources/html-link-element-activation-behavior-on-mouse-click-step1.html:
  • fast/dom/resources/html-link-element-activation-behavior-target.html:
9:35 AM Changeset in webkit [280478] by Jonathan Bedard
  • 4 edits in trunk/Tools

[git-webkit] Not all platforms support more -F
https://bugs.webkit.org/show_bug.cgi?id=228619
<rdar://problem/81296290>

Reviewed by Aakash Jain.

  • Scripts/libraries/webkitscmpy/setup.py: Bump version.
  • Scripts/libraries/webkitscmpy/webkitscmpy/init.py: Ditto.
  • Scripts/libraries/webkitscmpy/webkitscmpy/program/command.py:

(FilteredCommand.pager): Only pass -F to more on Darwin.

9:21 AM Changeset in webkit [280477] by dino@apple.com
  • 7 edits in trunk

[Media Controls] Add an option for having no scrubber on the time control and parameterize margin
https://bugs.webkit.org/show_bug.cgi?id=228633
rdar://81314458

Reviewed by Tim Horton.

Source/WebCore:

Add support for a scrubber bar that does not have a knob (or, to be clear, an
invisible knob). While here, move the constant for the margin into a custom
CSS property so it can be easily overridden.

  • Modules/modern-media-controls/controls/media-controls.css:

(*): Add --scrubber-margin custom property.

  • Modules/modern-media-controls/controls/slider.css:

(.slider > .custom-slider > .knob.none): Add style for a "none" knob.

  • Modules/modern-media-controls/controls/slider.js:

(Slider.prototype.commit): Support "none".

  • Modules/modern-media-controls/controls/time-control.js: Get the margin from

the new custom property.
(TimeControl.prototype.get minimumWidth):
(TimeControl.prototype.get idealMinimumWidth):
(TimeControl.prototype.layout):
(TimeControl.prototype._performIdealLayout):

LayoutTests:

Make sure the TimeControls element is in the document so its computed style
can be read.

  • media/modern-media-controls/time-control/time-control.html:
8:47 AM Changeset in webkit [280476] by Chris Dumez
  • 6 edits in trunk

postMessage() should throw if any duplicate transferable is found in transferList
https://bugs.webkit.org/show_bug.cgi?id=228608

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

Rebaseline WPT test now that more checks are passing.

  • web-platform-tests/html/infrastructure/safe-passing-of-structured-data/transfer-errors.window-expected.txt:

Source/WebCore:

postMessage() should throw if any duplicate transferable is found in transferList:

No new tests, rebaselined existing test.

  • bindings/js/SerializedScriptValue.cpp:

(WebCore::SerializedScriptValue::create):

8:25 AM Changeset in webkit [280475] by Eric Hutchison
  • 2 edits in trunk/LayoutTests

[ BigSur Release wk2 arm64] imported/w3c/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-unsafe-none-to-same-origin.https.html.
https://bugs.webkit.org/show_bug.cgi?id=228644.

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
8:02 AM Changeset in webkit [280474] by Eric Hutchison
  • 3 edits in trunk/LayoutTests

Updated test expectations for imported/w3c/web-platform-tests/html/cross-origin-opener-policy/header-parsing.https.html.
https://bugs.webkit.org/show_bug.cgi?id=228197.

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
  • platform/mac/TestExpectations:
7:52 AM Changeset in webkit [280473] by Eric Hutchison
  • 2 edits in trunk/LayoutTests

imported/w3c/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-same-origin-to-unsafe-none.https.html is a flaky failure .
https://bugs.webkit.org/show_bug.cgi?id=228642.

Unreviewed test gardening.

  • platform/mac/TestExpectations:
7:00 AM Changeset in webkit [280472] by Eric Hutchison
  • 2 edits in trunk/LayoutTests

[Mac Debug] imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/dedicated-worker.tentative.https.html is a flaky failure.
https://bugs.webkit.org/show_bug.cgi?id=228640.

Unreviewed test gardening.

  • platform/mac/TestExpectations:
2:09 AM Changeset in webkit [280471] by commit-queue@webkit.org
  • 4 edits in trunk

[AspectRatio] Fix replaced-element-034.html
https://bugs.webkit.org/show_bug.cgi?id=228223

Patch by Rob Buis <rbuis@igalia.com> on 2021-07-30
Reviewed by Manuel Rego Casasnovas.

Source/WebCore:

Fix replaced-element-034.html by making hasReplacedLogicalHeight
return false for *-content when aspect-ratio is provided and relying
on computeReplacedLogicalHeight to take aspect-ratio into account.

  • rendering/RenderReplaced.cpp:

(WebCore::RenderReplaced::hasReplacedLogicalHeight const):

LayoutTests:

1:41 AM Changeset in webkit [280470] by ysuzuki@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

[JSC] Use UCPURegister argument to remove zero extension in JIT code
https://bugs.webkit.org/show_bug.cgi?id=228625

Reviewed by Robin Morisset.

Yarr JIT code emits zeroExtend32ToWord for some arguments, but this is not necessary if
argument is defined as UCPURegister. In that case, caller guarantees that top 32bits are
cleared.

  • yarr/YarrJIT.cpp:
  • yarr/YarrJIT.h:
1:29 AM Changeset in webkit [280469] by Adrian Perez de Castro
  • 2 edits in trunk

[CMake] Fix fallback methods in the libgcrypt find module
https://bugs.webkit.org/show_bug.cgi?id=228581

Reviewed by Carlos Alberto Lopez Perez.

  • Source/cmake/FindLibGcrypt.cmake: Make sure to use the libgcrypt-config script as

first fallback if libgcrypt.pc is not present, and fix the regexp used as last fallback
that checks the version from the gcrypt.h header as last fallback to only include digits
and periods.

Note: See TracTimeline for information about the timeline view.