Timeline



Feb 23, 2021:

9:34 PM Changeset in webkit [273372] by weinig@apple.com
  • 5 edits in trunk/LayoutTests

Fix model test differences between platforms
https://bugs.webkit.org/show_bug.cgi?id=222323

Reviewed by Ryosuke Niwa.

  • model-element/model-element-renderer-no-source.html:
  • model-element/model-element-renderer.html:

Try to fix these on iOS by removing the doctype.

9:00 PM Changeset in webkit [273371] by msaboff@apple.com
  • 3 edits
    1 add in trunk

[YARR JIT] Crash on overflow when compiling /(a{1000000000}b{1000000000}|c{1000000000}|)d{1000000000}e{1000000000}/.test();
https://bugs.webkit.org/show_bug.cgi?id=220130

Reviewed by Yusuke Suzuki.

JSTests:

Modified the original fuzzer test to go 232-1.

  • stress/regexp-backtrack-offset-overflow.js: Added.

Source/JavaScriptCore:

Changed code to subtract out the offset of a current op before adding the offset
of the prior op when backtracking to avoid overflowing checked arithmetic.
It looks like the code had this wrong for some time.

  • yarr/YarrJIT.cpp:
8:03 PM Changeset in webkit [273370] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Fix model test differences between platforms
https://bugs.webkit.org/show_bug.cgi?id=222323

Unreviewed test gardening.

  • platform/ios/TestExpectations: Mark tests as failing until fix is reviewed & landed.
7:24 PM Changeset in webkit [273369] by Russell Epstein
  • 2 edits in branches/safari-612.1.5-branch/Source/WTF

Revert r273165. rdar://problem/74610383

6:41 PM Changeset in webkit [273368] by Devin Rousso
  • 3 edits in trunk/LayoutTests

[ macOS ] media/modern-media-controls/tracks-support/mac/tracks-support-show-panel-fullscreen.html is a flakey text failure
https://bugs.webkit.org/show_bug.cgi?id=222134
<rdar://problem/74494853>

Unreviewed, this is an identical change to r273357.

  • media/modern-media-controls/tracks-support/mac/tracks-support-show-panel-fullscreen.html:

Add a rAF+0s delay before attempting to hover the mute button to give it a chance to
"settle" after it becomes visible (based off of .getBoundingClientRect().width).

  • platform/mac/TestExpectations:
6:18 PM Changeset in webkit [273367] by Wenson Hsieh
  • 2 edits in trunk/Source/WebKit

[iOS] Add null checks for Node before accessing treeScope() in rangeForPointInRootViewCoordinates
https://bugs.webkit.org/show_bug.cgi?id=222338
<rdar://problem/72292289>

Reviewed by Tim Horton.

Add a null check for the hit test result's targetNode inside rangeForPointInRootViewCoordinates() to avoid
crashing in the case where the target node is null and either result <= selectionStart is false or
selectionEnd <= result is false.

Additionally, avoid a potential null deref on selectionStart.deepEquivalent().anchorNode() and
selectionEnd.deepEquivalent().anchorNode() by using Position::treeScope() (which null checks the anchor
node) instead of directly asking the anchor node.

Note that the call sites of rangeForPointInRootViewCoordinates() already handle a WTF::nullopt return value
gracefully, by skipping the selection update.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::rangeForPointInRootViewCoordinates):

5:41 PM Changeset in webkit [273366] by Devin Rousso
  • 3 edits in trunk/LayoutTests

REGRESSION (r273004): [ macOS ] media/modern-media-controls/volume-support/volume-support-drag.html is a flakey text failure
https://bugs.webkit.org/show_bug.cgi?id=222117
<rdar://problem/74484639>

Unreviewed, this is an identical change to r273357.

  • media/modern-media-controls/volume-support/volume-support-drag.html:

Add a rAF+0s delay before attempting to hover the mute button to give it a chance to
"settle" after it becomes visible (based off of .getBoundingClientRect().width).

  • platform/mac/TestExpectations:
5:11 PM Changeset in webkit [273365] by Patrick Angle
  • 13 edits in trunk/Source

[Cocoa] Web Inspector: Add support for reloading the inspected page via _WKInspectorExtension
https://bugs.webkit.org/show_bug.cgi?id=222296

Reviewed by BJ Burg.

Source/WebInspectorUI:

Added support for reloading the inspected page, including ignoring the cache if desired, via
_WKInspectorExtension.

  • UserInterface/Controllers/WebInspectorExtensionController.js:

(WI.WebInspectorExtensionController.prototype.evaluateScriptForExtension):
(WI.WebInspectorExtensionController.prototype.reloadForExtension):
(WI.WebInspectorExtensionController):

  • UserInterface/Protocol/InspectorFrontendAPI.js:

(InspectorFrontendAPI.evaluateScriptForExtension):
(InspectorFrontendAPI.reloadForExtension):

Source/WebKit:

Added a new method to _WKInspectorExtension which is used to implement browser.devtools.inspectedWindow.reload
in the Web Extensions API.

  • UIProcess/API/APIInspectorExtension.cpp:

(API::InspectorExtension::reloadIgnoringCache):

  • UIProcess/API/APIInspectorExtension.h:
  • UIProcess/API/Cocoa/_WKInspectorExtension.h:
  • UIProcess/API/Cocoa/_WKInspectorExtension.mm:

(-[_WKInspectorExtension reloadIgnoringCache:userAgent:injectedScript:completionHandler:]):

  • UIProcess/Inspector/WebInspectorUIExtensionControllerProxy.cpp:

(WebKit::WebInspectorUIExtensionControllerProxy::reloadForExtension):

  • UIProcess/Inspector/WebInspectorUIExtensionControllerProxy.h:
  • WebProcess/Inspector/WebInspectorUIExtensionController.cpp:

(WebKit::WebInspectorUIExtensionController::reloadForExtension):

  • WebProcess/Inspector/WebInspectorUIExtensionController.h:
  • WebProcess/Inspector/WebInspectorUIExtensionController.messages.in:
5:05 PM Changeset in webkit [273364] by Ryan Haddad
  • 2 edits in branches/safari-611-branch/Tools

Cherry-pick r272167. rdar://problem/74668621

autoinstall.py: Don't use an XML parser to parse HTML
https://bugs.webkit.org/show_bug.cgi?id=221162

Reviewed by Jonathan Bedard.

Very recently autoinstall.py started failing becagse the page returned
by https://pypi.org/simple/fasteners/ now contains a <meta> tag, which
is not parseable as XML without the trailing slash.

Despite what an initial fix in r272041 stated, this is not caused by
invalid HTML: <meta> tags are not required to have an ending slash to
be standards compliant in any version of HTML.

This patch replaces that code to use an HTML parser instead of an XML
parser, making it more robust.

  • Scripts/libraries/webkitcorepy/webkitcorepy/autoinstall.py: (SimplyPypiIndexPageParser): (SimplyPypiIndexPageParser.init): (SimplyPypiIndexPageParser.handle_starttag): (SimplyPypiIndexPageParser.handle_data): (SimplyPypiIndexPageParser.handle_endtag): (SimplyPypiIndexPageParser.parse): (Package.archives):

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

5:05 PM Changeset in webkit [273363] by Ryan Haddad
  • 4 edits in branches/safari-611-branch/Tools

Cherry-pick r272041. rdar://problem/74668621

[webkitcrepy] Handle case where pypi serves invalid html
https://bugs.webkit.org/show_bug.cgi?id=221111
<rdar://problem/73728580>

Reviewed by David Kilzer.

  • Scripts/libraries/webkitcorepy/setup.py: Bump version number.
  • Scripts/libraries/webkitcorepy/webkitcorepy/init.py: Ditto.
  • Scripts/libraries/webkitcorepy/webkitcorepy/autoinstall.py: (Package.archives): Remove possibly invalid <meta> tag from html.

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

5:05 PM Changeset in webkit [273362] by Ryan Haddad
  • 3 edits
    2 adds in branches/safari-611-branch/Tools

Cherry-pick r271683. rdar://problem/74668621

[webkitcorepy] Add TaskPool
https://bugs.webkit.org/show_bug.cgi?id=220547
<rdar://problem/73043887>

Reviewed by Dewei Zhu.

The TaskPool object is a Python 3.8 compatible multiprocessing tool. Notable features are forwarding stdout,
stderr and logging to the parent process, exception propagation between processes, and graceful clean-up when
exceptions in the parent process are encountered

  • Scripts/libraries/webkitcorepy/webkitcorepy/init.py: Bump version, add tblib.
  • Scripts/libraries/webkitcorepy/webkitcorepy/task_pool.py: Added. (Message): Base class for message passed between processes. (Task): Message including function and arguments to that function. (Result): Return value of a task passed to the parent process. (Log): Pass log message from child process to parent process. (Print): Pass stdout or stderr line from child process to parent process. (State): Notify parent process that the child process has changed state. (ChildException): Pass exception and stack trace from (BiDirectionalQueue): Pair for multiprocess queues allowing for messages to be passed between processes. (Process): Scoping class managing child-process logic. (Process.LogHandler): Logging handler that passes log lines from the child process to it's parent. (Process.Stream): Writable stream which passes content from the child process to the standard out or error of that process's parent. (Process.handler): SIGTERM should prevent future processing but allow currently in-flight tasks to complete. (Process.main): Entry-point to child process. (TaskPool): Managing allocation of tasks to child processes and clean up those child processes. (TaskPool.Exception): Exception owned by TaskPool object. (TaskPool.init): (TaskPool.enter): (TaskPool.do): Pass task to child processes. (TaskPool.wait): Wait until all processes are completed. (TaskPool.exit): Teardown all child processes.
  • Scripts/libraries/webkitcorepy/webkitcorepy/tests/task_pool_unittest.py: Added. (setup): (teardown): (action): (log): (wait): (exception): (TaskPoolUnittest): (TaskPoolUnittest.test_single): (TaskPoolUnittest.test_multiple): (TaskPoolUnittest.test_callback): (TaskPoolUnittest.test_exception): (TaskPoolUnittest.test_setup): (TaskPoolUnittest.test_teardown): (TaskPoolUnittest.test_invalid_shutdown):

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

5:05 PM Changeset in webkit [273361] by Ryan Haddad
  • 2 edits in branches/safari-611-branch/Tools

Cherry-pick r271649. rdar://problem/74668621

[webkitcorepy] Support alternative default pypi url on macOS (Follow-up fix)
https://bugs.webkit.org/show_bug.cgi?id=220744
<rdar://problem/73369338>

Unreviewed follow-up fix.

  • Scripts/libraries/webkitcorepy/webkitcorepy/autoinstall.py: (_default_pypi_index): Ensure that "simple" is excluded from the pypi url.

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

5:05 PM Changeset in webkit [273360] by Ryan Haddad
  • 4 edits in branches/safari-611-branch/Tools

Cherry-pick r271630. rdar://problem/74668621

[webkitcorepy] Support alternative default pypi url on macOS
https://bugs.webkit.org/show_bug.cgi?id=220744
<rdar://problem/73369338>

Reviewed by Aakash Jain.

  • Scripts/libraries/webkitcorepy/setup.py: Bump version.
  • Scripts/libraries/webkitcorepy/webkitcorepy/init.py: Ditto.
  • Scripts/libraries/webkitcorepy/webkitcorepy/autoinstall.py: (_default_pypi_index): Pull default pypi index from pip.conf, if available. (AutoInstall): Set index based on result of _default_pypi_index.

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

5:02 PM Changeset in webkit [273359] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit

[macOS] Allow additional syscall support in the sandbox
https://bugs.webkit.org/show_bug.cgi?id=222335
<rdar://74473824>

Reviewed by Per Arne Vollan.

Expand the WebContent process sandbox to allow SYS_open_dprotected_np

  • WebProcess/com.apple.WebProcess.sb.in:
4:26 PM Changeset in webkit [273358] by Jonathan Bedard
  • 3 edits in trunk/Tools

[check-webkit-style] Fix Contributor sorting in Python 3
https://bugs.webkit.org/show_bug.cgi?id=222329
<rdar://problem/74656667>

Reviewed by Dewei Zhu.

  • Scripts/webkitpy/common/config/committers.py:

(Contributor.cmp): Return an integer to indicate ordering.
(Contributor.eq): Add rich comparison operators for sorting.
(Contributor.ne): Ditto.
(Contributor.lt): Ditto.
(Contributor.le): Ditto.
(Contributor.gt): Ditto.
(Contributor.ge): Ditto.

  • Scripts/webkitpy/common/config/contributors.json:
4:26 PM Changeset in webkit [273357] by Devin Rousso
  • 2 edits in trunk/LayoutTests

REGRESSION: media/modern-media-controls/volume-support/volume-support-click.html is a flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=222181
<rdar://problem/74527698>

Reviewed by Eric Carlson.

  • media/modern-media-controls/volume-support/volume-support-click.html:

Add a rAF+0s delay before attempting to hover the mute button to give it a chance to
"settle" after it becomes visible (based off of .getBoundingClientRect().width).

3:59 PM CommitQueue edited by aakash_jain@apple.com
(diff)
3:13 PM Changeset in webkit [273356] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[ Big Sur Wk1 ] http/tests/security/http-0.9/default-port-script-blocked.html is flakey timing out
https://bugs.webkit.org/show_bug.cgi?id=221717

Unreviewed test gardening.

Patch by Robert Jenner <Robert Jenner> on 2021-02-23

  • platform/mac-wk1/TestExpectations:
2:56 PM Changeset in webkit [273355] by Truitt Savell
  • 3 edits in trunk/LayoutTests

[ macOS BigSur Wk2 ] compositing/video/video-border-radius-clipping.html is a flakey image failure
https://bugs.webkit.org/show_bug.cgi?id=222332

Unreviewed test gardening.

Patch by Robert Jenner <Robert Jenner> on 2021-02-23

  • platform/mac-wk2/TestExpectations: Added new test expectation to resolve issues with old expectation.
  • platform/mac/TestExpectations: Removed incorrect test expectation set as Pass Fail Timeout.
2:51 PM Changeset in webkit [273354] by Alan Coon
  • 2 edits in branches/safari-611-branch/Source/WebKit

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

ASSERTION FAILED: !size.isEmpty() under platformInitializeWebProcess

  • WebProcess/cocoa/WebProcessCocoa.mm: (WebKit::WebProcess::platformInitializeWebProcess): Follow-up to r272335; don't call IOSurface::setMaximumSize if the UI process did not send us a size. Caused all Web Content processes to assert in debug on launch.

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

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

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

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

Reviewed by Tadeu Zagallo.

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

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

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

Cherry-pick r270719. rdar://problem/74409412

REGRESSION (r270665): testapi failing on JSC bots
https://bugs.webkit.org/show_bug.cgi?id=219787

Reviewed by Saam Barati.

  • API/JSValueRef.cpp: (JSValueIsString): (JSValueIsObject): (JSValueIsSymbol):

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

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

Cherry-pick r270700. rdar://problem/74409412

REGRESSION (r270665): testapi failing on CLoop bot
https://bugs.webkit.org/show_bug.cgi?id=219787

Reviewed by Mark Lam.

The API has to special case the empty JSValue as null.

  • API/JSValueRef.cpp: (JSValueGetType): (JSValueIsNull):

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

2:51 PM Changeset in webkit [273350] by Alan Coon
  • 6 edits in branches/safari-611-branch

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

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

Reviewed by Filip Pizlo.

PerformanceTests:

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

  • APIBench/api-bench:

Source/JavaScriptCore:

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

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

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

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

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

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

2:51 PM Changeset in webkit [273349] by Alan Coon
  • 7 edits in branches/safari-611-branch

Cherry-pick r272626. rdar://problem/74410222

Descendants of row and column headers should expose the aria-sort attribute.
https://bugs.webkit.org/show_bug.cgi?id=221590

Reviewed by Chris Fleizach.

Source/WebCore:

Tests:
accessibility/aria-sort.html
accessibility/ios-simulator/aria-sort-ios.html

Walk up the accessibility hierarchy to check for an inherited aria-sort
attribute present in a row or column header ancestor.

  • accessibility/AccessibilityObject.cpp: (WebCore::AccessibilityObject::sortDirection const):

LayoutTests:

Expanded this test to include the case where the header contains a child
element that must also expose the aria-sort attribute inherited from its
parent.

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

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

2:51 PM Changeset in webkit [273348] by Russell Epstein
  • 1 copy in releases/Apple/Safari Technology Preview/Safari Technology Preview 116

Added a tag for Safari Technology Preview release 116.

2:51 PM Changeset in webkit [273347] by Alan Coon
  • 28 edits in branches/safari-611-branch

Cherry-pick r272165. rdar://problem/74032536

Use user media permission prompt for speech recognition
https://bugs.webkit.org/show_bug.cgi?id=221082
rdar://problem/73372499

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

Source/WebCore:

Add frame identifier to SpeechRecognitionRequest as it is needed for checking user media permission.

Updated existing tests for changed behavior.

  • Modules/speech/SpeechRecognition.cpp: (WebCore::SpeechRecognition::startRecognition):
  • Modules/speech/SpeechRecognitionConnection.h:
  • Modules/speech/SpeechRecognitionRequest.h: (WebCore::SpeechRecognitionRequest::frameIdentifier const):
  • Modules/speech/SpeechRecognitionRequestInfo.h: (WebCore::SpeechRecognitionRequestInfo::encode const): (WebCore::SpeechRecognitionRequestInfo::decode):
  • page/DummySpeechRecognitionProvider.h:

Source/WebKit:

Make SpeechRecognitionPermissionManager ask UserMediaPermissionRequestManagerProxy for user permission on
microphone.

  • UIProcess/SpeechRecognitionPermissionManager.cpp: (WebKit::SpeechRecognitionPermissionManager::request): (WebKit::SpeechRecognitionPermissionManager::startProcessingRequest): (WebKit::SpeechRecognitionPermissionManager::requestUserPermission):
  • UIProcess/SpeechRecognitionPermissionManager.h:
  • UIProcess/SpeechRecognitionPermissionRequest.h: (WebKit::SpeechRecognitionPermissionRequest::create): (WebKit::SpeechRecognitionPermissionRequest::frameIdentifier const): (WebKit::SpeechRecognitionPermissionRequest::SpeechRecognitionPermissionRequest):
  • UIProcess/SpeechRecognitionServer.cpp: (WebKit::SpeechRecognitionServer::start): (WebKit::SpeechRecognitionServer::requestPermissionForRequest):
  • UIProcess/SpeechRecognitionServer.h:
  • UIProcess/SpeechRecognitionServer.messages.in:
  • UIProcess/UserMediaPermissionRequestManagerProxy.cpp: (WebKit::UserMediaPermissionRequestManagerProxy::denyRequest): (WebKit::UserMediaPermissionRequestManagerProxy::grantRequest): (WebKit::UserMediaPermissionRequestManagerProxy::checkUserMediaPermissionForSpeechRecognition):
  • UIProcess/UserMediaPermissionRequestManagerProxy.h:
  • UIProcess/UserMediaPermissionRequestProxy.cpp: (WebKit::UserMediaPermissionRequestProxy::UserMediaPermissionRequestProxy):
  • UIProcess/UserMediaPermissionRequestProxy.h: (WebKit::UserMediaPermissionRequestProxy::create): (WebKit::UserMediaPermissionRequestProxy::decisionCompletionHandler):
  • UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::requestSpeechRecognitionPermission): (WebKit::WebPageProxy::requestUserMediaPermissionForSpeechRecognition):
  • UIProcess/WebPageProxy.h:
  • UIProcess/WebProcessProxy.cpp: (WebKit::WebProcessProxy::createSpeechRecognitionServer):
  • WebProcess/WebCoreSupport/WebSpeechRecognitionConnection.cpp: (WebKit::WebSpeechRecognitionConnection::start):
  • WebProcess/WebCoreSupport/WebSpeechRecognitionConnection.h:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/SpeechRecognition.mm: (-[SpeechRecognitionUIDelegate _webView:requestMediaCaptureAuthorization:decisionHandler:]):

LayoutTests:

  • fast/speechrecognition/permission-error.html:
  • fast/speechrecognition/start-recognition-in-removed-iframe-expected.txt:
  • fast/speechrecognition/start-recognition-in-removed-iframe.html:

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

2:51 PM Changeset in webkit [273346] by Alan Coon
  • 12 edits in branches/safari-611-branch

Cherry-pick r271636. rdar://problem/74452635

Update media state for active speech recognition as it uses audio capture
https://bugs.webkit.org/show_bug.cgi?id=220667

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

Source/WebCore:

To make sure the media capture state is correctly sent to client.

API test: WebKit2.SpeechRecognitionMediaCaptureStateChange

  • Modules/speech/SpeechRecognition.cpp: (WebCore::SpeechRecognition::startRecognition): (WebCore::SpeechRecognition::stop): (WebCore::SpeechRecognition::didStartCapturingAudio): (WebCore::SpeechRecognition::didStopCapturingAudio):
  • Modules/speech/SpeechRecognition.h:
  • Modules/speech/SpeechRecognitionConnection.h:
  • dom/Document.cpp: (WebCore::Document::setActiveSpeechRecognition): (WebCore::Document::updateIsPlayingMedia):
  • dom/Document.h:
  • page/DummySpeechRecognitionProvider.h:

Source/WebKit:

  • WebProcess/WebCoreSupport/WebSpeechRecognitionConnection.cpp: (WebKit::WebSpeechRecognitionConnection::unregisterClient):
  • WebProcess/WebCoreSupport/WebSpeechRecognitionConnection.h:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/SpeechRecognition.mm: (-[SpeechRecognitionUIDelegate _webView:mediaCaptureStateDidChange:]): (TestWebKitAPI::TEST): (-[SpeechRecognitionPermissionUIDelegate _webView:requestSpeechRecognitionPermissionForOrigin:decisionHandler:]): Deleted. (-[SpeechRecognitionPermissionUIDelegate _webView:requestMediaCaptureAuthorization:decisionHandler:]): Deleted. (-[SpeechRecognitionPermissionUIDelegate _webView:checkUserMediaPermissionForURL:mainFrameURL:frameIdentifier:decisionHandler:]): Deleted. (-[SpeechRecognitionPermissionUIDelegate webView:createWebViewWithConfiguration:forNavigationAction:windowFeatures:]): Deleted.

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

2:51 PM Changeset in webkit [273345] by Alan Coon
  • 23 edits
    2 adds in branches/safari-611-branch

Cherry-pick r272490. rdar://problem/74409784

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

Reviewed by Chris Fleizach.

Source/WebCore:

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

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

  • accessibility/AXLogger.cpp: (WebCore::operator<<): Logging of the new notification.
  • accessibility/AXObjectCache.cpp: Handles the aria-sort change notification. Updates the isolated tree. (WebCore::AXObjectCache::handleAttributeChange): (WebCore::AXObjectCache::updateIsolatedTree):
  • accessibility/AXObjectCache.h:
  • accessibility/ios/AXObjectCacheIOS.mm: (WebCore::AXObjectCache::notificationPlatformName): Helper to map AXCore notifications to platform notifications. (WebCore::AXObjectCache::postPlatformNotification): Handles the AXSortDirectionChanged notification. Some code cleanup using the notificationPlatformName helper.
  • accessibility/ios/WebAccessibilityObjectWrapperIOS.h:
  • accessibility/ios/WebAccessibilityObjectWrapperIOS.mm: (-[WebAccessibilityObjectWrapper postNotification:]): To be overridden by system AX bundles. (-[WebAccessibilityObjectWrapper accessibilitySortDirection]): Only ascending and descending sort directions are relevant for clients.
  • accessibility/isolatedtree/AXIsolatedTree.cpp: (WebCore::AXIsolatedTree::updateNodeProperty): Updates the SortDirection property.
  • accessibility/mac/AXObjectCacheMac.mm: (WebCore::AXObjectCache::postPlatformNotification): Handles the AXSortDirectionChanged notification.

Tools:

  • WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp: (WTR::AccessibilityUIElement::sortDirection const):
  • WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:
  • WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl:
  • WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm: (WTR::AccessibilityUIElement::sortDirection const):
  • WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm: (WTR::AccessibilityUIElement::currentStateValue const): (WTR::AccessibilityUIElement::sortDirection const):

LayoutTests:

  • accessibility/aria-sort-changed-notification-expected.txt: Added.
  • accessibility/aria-sort-changed-notification.html: Added.
  • accessibility/aria-sort-expected.txt:
  • accessibility/aria-sort.html: Calls sortDirection property on the JS accessible element instead of retrieving the aria-sort attribute. This matches more accurately what an actual client would do. Changed the expected file accordingly.
  • accessibility/ios-simulator/aria-sort-ios-expected.txt:
  • accessibility/ios-simulator/aria-sort-ios.html: Same as in the Mac test above.
  • platform/ios/TestExpectations: Added the new test to be run on the ios-simulator.

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

2:50 PM Changeset in webkit [273344] by Alan Coon
  • 14 edits in branches/safari-611-branch

Cherry-pick r271381. rdar://problem/74451875

Make SpeechRecognition permission error more informative
https://bugs.webkit.org/show_bug.cgi?id=220436

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

Source/WebKit:

Make SpeechRecognitionPermissionManager complete requests with an optional SpeechRecognitionError instead of a
boolean value.

  • UIProcess/SpeechRecognitionPermissionManager.cpp: (WebKit::SpeechRecognitionPermissionManager::~SpeechRecognitionPermissionManager): (WebKit::SpeechRecognitionPermissionManager::request): (WebKit::SpeechRecognitionPermissionManager::startProcessingRequest): (WebKit::SpeechRecognitionPermissionManager::continueProcessingRequest): (WebKit::SpeechRecognitionPermissionManager::completeCurrentRequest): (WebKit::SpeechRecognitionPermissionManager::requestSpeechRecognitionServiceAccess): (WebKit::SpeechRecognitionPermissionManager::requestMicrophoneAccess): (WebKit::SpeechRecognitionPermissionManager::requestUserPermission):
  • UIProcess/SpeechRecognitionPermissionManager.h:
  • UIProcess/SpeechRecognitionPermissionRequest.h: (WebKit::SpeechRecognitionPermissionRequest::create): (WebKit::SpeechRecognitionPermissionRequest::complete): (WebKit::SpeechRecognitionPermissionRequest::SpeechRecognitionPermissionRequest):
  • UIProcess/SpeechRecognitionServer.cpp: (WebKit::SpeechRecognitionServer::requestPermissionForRequest):
  • UIProcess/SpeechRecognitionServer.h:
  • UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::requestSpeechRecognitionPermission):
  • UIProcess/WebPageProxy.h:
  • UIProcess/WebProcessProxy.cpp: (WebKit::WebProcessProxy::createSpeechRecognitionServer):

Tools:

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

LayoutTests:

  • fast/speechrecognition/permission-error-expected.txt:
  • fast/speechrecognition/permission-error.html:

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

2:50 PM Changeset in webkit [273343] by Alan Coon
  • 22 edits
    2 adds in branches/safari-611-branch

Cherry-pick r272067. rdar://problem/74444347

Support for aria-current state changed notifications.
https://bugs.webkit.org/show_bug.cgi?id=221074

Reviewed by Chris Fleizach.

Source/WebCore:

Test: accessibility/aria-current-state-changed-notification.html

Added handling of the AXCurrentStateChanged notification for Mac and iOS
ports. This notification is fired when the aria-current attribute
changes.
Handling of this notification is required to properly update the
accessibility properties of the target object and convey them to
assistive technology clients.

  • accessibility/AXLogger.cpp: (WebCore::operator<<): Renamed notification anumerand.
  • accessibility/AXObjectCache.cpp: (WebCore::AXObjectCache::handleAttributeChange):
  • accessibility/AXObjectCache.h:
  • accessibility/atk/AXObjectCacheAtk.cpp: (WebCore::AXObjectCache::postPlatformNotification):
  • accessibility/ios/AXObjectCacheIOS.mm: (WebCore::AXObjectCache::postPlatformNotification):
  • accessibility/ios/WebAccessibilityObjectWrapperIOS.h:
  • accessibility/ios/WebAccessibilityObjectWrapperIOS.mm: (-[WebAccessibilityObjectWrapper accessibilityDOMIdentifier]): (-[WebAccessibilityObjectWrapper postCurrentStateChangedNotification]): (-[WebAccessibilityObjectWrapper accessibilityCurrentState]): (-[WebAccessibilityObjectWrapper accessibilityARIACurrentStatus]): Renamed to accessibilityCurrentState.
  • accessibility/mac/AXObjectCacheMac.mm: (WebCore::AXObjectCache::postPlatformNotification):

Tools:

Added AccessibilityUIElement::domIdentifier and currentStateValue used
in LayoutTests/accessibility/aria-current-state-changed-notification.html.

  • WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp: (WTR::AccessibilityUIElement::domIdentifier const): Non-Cocoa implementation. (WTR::AccessibilityUIElement::currentStateValue const): Non-Cocoa implementation.
  • WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:
  • WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl:
  • WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm: (WTR::AccessibilityUIElement::domIdentifier const): (WTR::AccessibilityUIElement::stringAttributeValue): (WTR::AccessibilityUIElement::currentStateValue const):
  • WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm: (WTR::AccessibilityUIElement::domIdentifier const): (WTR::AccessibilityUIElement::currentStateValue const):

LayoutTests:

  • accessibility/aria-current-state-changed-notification-expected.txt: Added.
  • accessibility/aria-current-state-changed-notification.html: Added.
  • accessibility/aria-current.html: Use AccessibilityUIElement::currentStateValue for consistency and to match closely how actual clients will invoke this functionality.
  • platform/gtk/TestExpectations:
  • platform/ios-wk1/TestExpectations:
  • platform/ios/TestExpectations:
  • platform/mac-wk1/TestExpectations:
  • platform/win/TestExpectations:

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

2:50 PM Changeset in webkit [273342] by Alan Coon
  • 10 edits in branches/safari-611-branch

Cherry-pick r272755. rdar://problem/74409916

Unreviewed, reverting r270578.
https://bugs.webkit.org/show_bug.cgi?id=221110

Caused incorrect image layout inside a flexbox container.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-flexbox/flex-aspect-ratio-img-row-013-expected.txt:
  • web-platform-tests/css/css-flexbox/image-as-flexitem-size-003-expected.txt:
  • web-platform-tests/css/css-flexbox/image-as-flexitem-size-003v-expected.txt:
  • web-platform-tests/css/css-flexbox/image-as-flexitem-size-004-expected.txt:
  • web-platform-tests/css/css-flexbox/image-as-flexitem-size-004v-expected.txt:

Source/WebCore:

  • rendering/RenderFlexibleBox.cpp: (WebCore::RenderFlexibleBox::computeMainSizeFromAspectRatioUsing const): (WebCore::RenderFlexibleBox::childCrossSizeIsDefinite const):

LayoutTests:

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

2:49 PM Changeset in webkit [273341] by Russell Epstein
  • 1 copy in releases/Apple/Safari Technology Preview/Safari Technology Preview 119

Added a tag for Safari Technology Preview release 119.

2:48 PM Changeset in webkit [273340] by Russell Epstein
  • 1 copy in releases/Apple/Safari Technology Preview/Safari Technology Preview 118

Added a tag for Safari Technology Preview release 118.

2:47 PM Changeset in webkit [273339] by Russell Epstein
  • 1 copy in releases/Apple/Safari Technology Preview/Safari Technology Preview 117

Added a tag for Safari Technology Preview release 117.

2:45 PM Changeset in webkit [273338] by Russell Epstein
  • 1 copy in releases/Apple/Safari Technology Preview/Safari Technology Preview 115

Added a tag for Safari Technology Preview release 115.

2:44 PM Changeset in webkit [273337] by Russell Epstein
  • 1 copy in releases/Apple/Safari Technology Preview/Safari Technology Preview 114

Added a tag for Safari Technology Preview release 114.

2:38 PM Changeset in webkit [273336] by Russell Epstein
  • 1 copy in releases/Apple/Safari Technology Preview/Safari Technology Preview 113

Added a tag for Safari Technology Preview release 113.

2:38 PM Changeset in webkit [273335] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[BigSur Wk2] imported/w3c/web-platform-tests/media-source/mediasource-seek-during-pending-seek.html is a flakey failure.
https://bugs.webkit.org/show_bug.cgi?id=222183

Unreviewed test gardening.

Patch by Amir Mark Jr <Amir Mark Jr.> on 2021-02-23

  • platform/mac-wk2/TestExpectations:
2:29 PM Changeset in webkit [273334] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Unreviewed Windows test gardening to speed up EWS.

  • platform/win/TestExpectations:
2:22 PM Changeset in webkit [273333] by Jonathan Bedard
  • 6 edits
    2 adds in trunk/Tools

[webkitscmpy] Add remote BitBucket
https://bugs.webkit.org/show_bug.cgi?id=222213
<rdar://problem/74542626>

Rubber-stamped by Aakash Jain.

  • Scripts/libraries/webkitscmpy/setup.py: Increment version.
  • Scripts/libraries/webkitscmpy/webkitscmpy/init.py: Ditto.
  • Scripts/libraries/webkitscmpy/webkitscmpy/mocks/remote/init.py: Export mock BitBucket.
  • Scripts/libraries/webkitscmpy/webkitscmpy/mocks/remote/bitbucket.py: Added.

(BitBucket): Mock limited set of BitBucket REST APIs.

  • Scripts/libraries/webkitscmpy/webkitscmpy/remote/init.py: Export BitBucket class.
  • Scripts/libraries/webkitscmpy/webkitscmpy/remote/bitbucket.py: Added.

(BitBucket): Repository object interacting with BitBucket via REST API.
(BitBucket.is_webserver): Check if the provided URL is a bitbucket URL.
(BitBucket.init):
(BitBucket.is_git):
(BitBucket.request): Combine paginated requests into a single API call.
(BitBucket._distance): Preform binary search
(BitBucket._branches_for): Return branches for reference.
(BitBucket.default_branch): Return the default branch.
(BitBucket.branches): Return all branches for repository.
(BitBucket.tags): Return all tags for repository.
(BitBucket.commit): Convert hash, identifier or git ref to Commit object.
(BitBucket.find): Use git to match branches and tags to a hash instead of trying to do it ourselves.

  • Scripts/libraries/webkitscmpy/webkitscmpy/remote/scm.py:

(Scm.from_url): Add BitBucket.

  • Scripts/libraries/webkitscmpy/webkitscmpy/test/git_unittest.py:

(TestGitHub.test_detection): Add bitbucket url.
(TestBitBucket): Added.

  • Scripts/libraries/webkitscmpy/webkitscmpy/test/svn_unittest.py:

(TestRemoteSvn.test_detection): Add bitbucket url.

2:05 PM Changeset in webkit [273332] by Russell Epstein
  • 1 copy in releases/Apple/Safari Technology Preview/Safari Technology Preview 120

"Added a tag for Safari Technology Preview release 120."

1:36 PM Changeset in webkit [273331] by don.olmstead@sony.com
  • 2 edits in trunk/Tools

Pass full environment when auto installing a Python module on Windows
https://bugs.webkit.org/show_bug.cgi?id=221109
<rdar://problem/74002781>

Reviewed by Jonathan Bedard.

On Python 3 when the AutoInstall routine attempted to setup markupsafe-2.0.0 it would fail
when compiling native code. When compiling outside of Visual Studio there is a batch file
that sets up the environment. This adds a large number of environment variables which could
potentially change over time so to be safe the complete environment is passed to the
setup.py installation routine for Windows only.

  • Scripts/libraries/webkitcorepy/webkitcorepy/autoinstall.py:

(Package.install):

12:19 PM Changeset in webkit [273330] by commit-queue@webkit.org
  • 5 edits
    4 adds in trunk

Nullptr crash in ReplaceSelectionCommand::removeRedundantStylesAndKeepStyleSpanInline
https://bugs.webkit.org/show_bug.cgi?id=221651

Patch by Frederic Wang <fwang@igalia.com> on 2021-02-23
Reviewed by Ryosuke Niwa.

Source/WebCore:

There are assumptions in the editing code that new containers have an associated renderer,
which is not the case if their style is "display: contents". This patch replaces the
strict debug ASSERT in CompositeEditCommand::appendBlockPlaceholder with a failure
specified by a nullptr return value, similar to other BlockPlaceholder APIs. That way
InsertParagraphSeparatorCommand::doApply can exit early when the block placeholder cannot
be inserted. This patch also fixes one nullptr dereference in release build happening when
executing Editor::replaceSelectionWithFragment.

Test: fast/editing/mutation-with-display-contents-container-crash.html

  • editing/CompositeEditCommand.cpp:

(WebCore::CompositeEditCommand::appendBlockPlaceholder): Return null is the container
has no associated renderer.

  • editing/CompositeEditCommand.h: Return a RefPtr, so it is null in case of failure.
  • editing/InsertParagraphSeparatorCommand.cpp:

(WebCore::InsertParagraphSeparatorCommand::doApply): Abort command if the block placeholder
cannot be inserted in the container.

LayoutTests:

  • fast/editing/mutation-with-display-contents-container-crash-expected.txt: Added.
  • fast/editing/mutation-with-display-contents-container-crash.html: Added.
  • platform/ios/fast/editing/mutation-with-display-contents-container-crash-expected.txt: Added.
12:09 PM Changeset in webkit [273329] by aboya@igalia.com
  • 3 edits in trunk/Source/WebCore

Make system console logging synchronous
https://bugs.webkit.org/show_bug.cgi?id=222279

Reviewed by Alex Christensen.

Previously, the logging of messages to the system console was done in
PageConsoleClient::addMessage(), which was called by
Document::addConsoleMessage(). The latter was called in a TaskQueue
callback.

This had the unfortunate side effect of adding a delay from the time a
macro such as ALWAYS_LOG() is called and the text being printed to the
console. This is particularly a problem when logging 3rd party
libraries that don't use the WebKit logging API to log to stderr, such
as GStreamer, since it causes messages logged by WebKit to not be
synchronized with messages logged by 3rd party libraries or logging
systems. As a consequence the usefulness of WebKit logs is noticeably
reduced.

This patch fixes the issue by moving the code logging to the system
console to the synchronous part of Document::didLogMessage(), while
still handling the rest in the m_logMessageTaskQueue callback.

  • dom/Document.cpp:

(WebCore::Document::didLogMessage):

  • page/PageConsoleClient.cpp:

(WebCore::PageConsoleClient::addMessage):

12:04 PM Changeset in webkit [273328] by Chris Fleizach
  • 3 edits
    2 adds in trunk

AX: VoiceOver incorrectly announces groups in ARIA tree instances as empty
https://bugs.webkit.org/show_bug.cgi?id=221716
<rdar://problem/74205567>

Reviewed by Zalan Bujtas.

Source/WebCore:

ARIA treeitems are allowed to have a child group that can represent the disclosed rows, which are disclosed through aria-owns.

Test: accessibility/mac/treeitem-row-delegation.html

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::ariaTreeRows):

LayoutTests:

  • accessibility/mac/treeitem-row-delegation-expected.txt: Added.
  • accessibility/mac/treeitem-row-delegation.html: Added.
11:55 AM Changeset in webkit [273327] by Fujii Hironori
  • 3 edits in trunk/Source/WebKit

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

Reviewed by Carlos Garcia Campos.

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

Call scheduleDisplay instead of setNeedsDisplay in
triggerRenderingUpdate.

However, if the dirty region is empty, display() exited early. If
triggerRenderingUpdate is called back,
DrawingAreaCoordinatedGraphics::display should be called to ensure
WebPage::updateRendering() called even if m_dirtyRegion is empty.

Added a new flag m_scheduledWhileWaitingForDidUpdate.

  • WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp:

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

  • WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.h:

Added m_scheduledWhileWaitingForDidUpdate.

11:46 AM Changeset in webkit [273326] by Alan Coon
  • 1 copy in releases/Apple/Safari Technology Preview/Safari Technology Preview 112

Added a tag for Safari Technology Preview release 112.

11:45 AM Changeset in webkit [273325] by Alan Coon
  • 1 delete in releases/Apple/Safari Technology Preview 112

Delete release tag.

11:44 AM Changeset in webkit [273324] by Alan Coon
  • 1 copy in releases/Apple/Safari Technology Preview 112

Added a tag for Safari Technology Preview release 112.

11:41 AM Changeset in webkit [273323] by Ruben Turcios
  • 2 edits in branches/safari-612.1.5-branch/Source/WebKit

Cherry-pick r273297. rdar://problem/74650857

[Payment Request] REGRESSION(r273143): crash shortly after showing the Apple Pay sheet
https://bugs.webkit.org/show_bug.cgi?id=222298
<rdar://problem/74557943>

Reviewed by Wenson Hsieh.

  • Platform/cocoa/PaymentAuthorizationPresenter.mm: (WebKit::toNSErrors): Don't use adoptNS with +[NSMutableArray array] since that returns an autoreleased object. Use the helper createNSArray instead (as was previously done before r273143).

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

11:10 AM Changeset in webkit [273322] by Alan Coon
  • 6 edits
    2 adds in branches/safari-611-branch/Source/WebCore

Cherry-pick r272678. rdar://problem/74410058

Integrator's note: includes an unrelated buildfix in HIDGamepadElement.cpp which
was breaking the build at this revision for some reason.

WebCore::createBusFromInMemoryAudioFile() may crash under ExtAudioFileRead()
https://bugs.webkit.org/show_bug.cgi?id=221642
<rdar://72789841>

Reviewed by Geoffrey Garen.

The crash seems to indicate we are passing an AudioBufferList to ExtAudioFileRead()
that contains a null buffer. It is not obvious how this is happening but I have made
the following changes:

  1. createAudioBufferList() / destroyAudioListBuffer() implementation is now shared on both macOS and iOS. The implementation now uses fastCalloc and returns null in case of failure to allocate.
  2. createAudioBufferList() was renamed to tryCreateAudioBufferList() to make it clear it can return null. All call sites now properly deal with tryCreateAudioBufferList() potentially return null
  3. Add a new validateAudioBufferList() function which makes sure that the AudioBufferList we are about to pass to ExtAudioFileRead() does not contain any null buffer. In case of validation failure, we log an error, generate a simulated crash log and early return gracefully instead of crashing later on.
  4. Added more assertions to help catch bugs.
  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/audio/cocoa/AudioFileReaderCocoa.cpp: Added. (WebCore::tryCreateAudioBufferList): (WebCore::destroyAudioBufferList): (WebCore::validateAudioBufferList):
  • platform/audio/cocoa/AudioFileReaderCocoa.h: Added.
  • platform/audio/ios/AudioFileReaderIOS.cpp: (WebCore::AudioFileReader::createBus): (WebCore::createAudioBufferList): Deleted. (WebCore::destroyAudioBufferList): Deleted.
  • platform/audio/mac/AudioFileReaderMac.cpp: (WebCore::AudioFileReader::createBus): (WebCore::createAudioBufferList): Deleted. (WebCore::destroyAudioBufferList): Deleted.

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

10:58 AM Changeset in webkit [273321] by Russell Epstein
  • 8 edits in trunk/Source

Versioning.

WebKit-7612.1.6

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

Unreviewed, reverting r273304.
https://bugs.webkit.org/show_bug.cgi?id=222324

Introduced test failure

Reverted changeset:

"[macOS] Crash under AuxiliaryProcess::initializeSandbox"
https://bugs.webkit.org/show_bug.cgi?id=222233
https://trac.webkit.org/changeset/273304

10:51 AM Changeset in webkit [273319] by Russell Epstein
  • 1 copy in branches/safari-612.1.5-branch

New branch.

10:46 AM Changeset in webkit [273318] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

[BigSur] imported/w3c/web-platform-tests/css/css-counter-styles/tibetan/css3-counter-styles-156.html is consistently failing
https://bugs.webkit.org/show_bug.cgi?id=222118

Unreviewed test gardening.

  • platform/mac/TestExpectations: This test is an ImageOnlyFailure.
10:23 AM Changeset in webkit [273317] by Alan Coon
  • 76 edits
    6 deletes in branches/safari-611-branch

Revert content after (and including) cherry-pick of r272678.

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

Unreviewed, reverting r273307.
https://bugs.webkit.org/show_bug.cgi?id=222320

Need to update CI code for CLoop bot before landing this

Reverted changeset:

"Detect unrecognized options in run-javascriptcore-tests"
https://bugs.webkit.org/show_bug.cgi?id=221186
https://trac.webkit.org/changeset/273307

9:54 AM Changeset in webkit [273315] by Jonathan Bedard
  • 5 edits in trunk/Tools

show-identifier fails with error: ascii codec can't decode byte 0xc3 in position
https://bugs.webkit.org/show_bug.cgi?id=222313
<rdar://problem/74645910>

Reviewed by Aakash Jain.

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

(Contributor.repr): Always return unicode for Python 2.

  • Scripts/libraries/webkitscmpy/webkitscmpy/test/contributor_unittest.py:

(TestContributor.test_unicode):

9:50 AM Changeset in webkit [273314] by commit-queue@webkit.org
  • 6 edits
    2 adds in trunk

aspect-ratio shows in computed style when disabled
https://bugs.webkit.org/show_bug.cgi?id=222286

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

Source/WebCore:

Make aspect-ratio invisible from style when disabled.

Test: fast/css/aspect-ratio-invalidate-if-disabled.html

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::ComputedStyleExtractor::valueForPropertyInStyle):

  • css/CSSProperties.json:

Tools:

Add support for disabling aspect-ratio in wk1.

  • DumpRenderTree/TestOptions.cpp:

(WTR::TestOptions::defaults):

LayoutTests:

Add test.

  • fast/css/aspect-ratio-invalidate-if-disabled-expected.txt: Added.
  • fast/css/aspect-ratio-invalidate-if-disabled.html: Added.
9:37 AM Changeset in webkit [273313] by commit-queue@webkit.org
  • 6 edits in trunk/Source/WebKit

REGRESSION(r273204): webkitpy tests fail
https://bugs.webkit.org/show_bug.cgi?id=222275
<rdar://problem/74614397>

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2021-02-23
Reviewed by Jonathan Bedard.

Regenerate the IPC generation test expectations that were
not part of r273204.

Tested by

./Tools/Scripts/test-webkitpy-python2 -j1 -p Source/WebKit/Scripts/webkit/messages_unittest.py

  • Scripts/webkit/tests/MessageArgumentDescriptions.cpp:

(IPC::jsValueForArguments):
(IPC::messageArgumentDescriptions):

  • Scripts/webkit/tests/MessageNames.cpp:

(IPC::description):
(IPC::receiverName):
(IPC::isValidMessageName):

  • Scripts/webkit/tests/MessageNames.h:
  • Scripts/webkit/tests/TestWithSemaphoreMessages.h:
  • Scripts/webkit/tests/TestWithStreamMessages.h:
9:23 AM Changeset in webkit [273312] by don.olmstead@sony.com
  • 4 edits in trunk

[CMake] Fix JSCOnly build on Windows
https://bugs.webkit.org/show_bug.cgi?id=222316

Reviewed by Michael Catanzaro.

.:

Turn off ENABLE_WEBASSEMBLY for Windows on JSCOnly now that its possible to build it
without FTL.

  • Source/cmake/OptionsJSCOnly.cmake:

Source/WTF:

Update sources for the JSCOnly Windows build.

  • wtf/PlatformJSCOnly.cmake:
9:09 AM Changeset in webkit [273311] by calvaris@igalia.com
  • 4 edits in trunk/Source/WebCore

[GStreamer][EME][Thunder] Initialize decryptor lazily
https://bugs.webkit.org/show_bug.cgi?id=222314

Reviewed by Philippe Normand.

In some cases, WebKit can be run before Thunder nano services are
up and without PSON, the result can be that you end up with WebKit
thinking there is no DRM system available.

First thing this patch does it removing the once flag so we keep
asking if there are DRM systems available if we are asked about
them from JS.

Second thing is that if we are queried from JS about the
availability of DRM systems and there are some available, we
initialize the decryptor.

  • platform/graphics/gstreamer/GStreamerCommon.cpp:

(WebCore::registerWebKitGStreamerElements):

  • platform/graphics/gstreamer/eme/CDMThunder.cpp:

(WebCore::CDMFactoryThunder::supportedKeySystems const):

  • platform/graphics/gstreamer/eme/WebKitThunderDecryptorGStreamer.cpp:
9:08 AM Changeset in webkit [273310] by don.olmstead@sony.com
  • 5 edits in trunk/Source/WebCore

Only files in WebCore/testing should be in WebCoreTestSupport
https://bugs.webkit.org/show_bug.cgi?id=222297

Reviewed by Eric Carlson.

After r272721 the non-unified WinCairo build reported error C2859, filename is not the
type file that was used when this precompiled header was created. This was because a
handful of files were in the WebCore library as well as the WebCoreTestSupport library.

Investigating the XCode project it turned out that the files listed in the CMake for
WebCoreTestSupport didn't match. The XCode project had all of the mock files within
platform in WebCore and WebCoreTestSupport just had files in the testing directory.

All mock related files were added to the Sources.txt and the erroneous listing of them
in WebCoreTestSupport_SOURCES were removed.

During the investigation it turned out some mocks were being compiled in both WebCore
and WebCoreTestSupport within the XCode build. This was rectified and an additional
WEBCORE_EXPORT in PlatformSpeechSynthesizerMock was added to support this.

  • CMakeLists.txt:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/mock/PlatformSpeechSynthesizerMock.h:
8:58 AM Changeset in webkit [273309] by commit-queue@webkit.org
  • 4 edits in trunk

[GStreamer] fast/mediastream/captureStream/canvas2d.html is flaky timing out since GStreamer 1.18 update
https://bugs.webkit.org/show_bug.cgi?id=218580

Patch by Philippe Normand <pnormand@igalia.com> on 2021-02-23
Reviewed by Xabier Rodriguez-Calvar.

Source/WebCore:

Live streams start without pre-rolling, that means they can reach PAUSED while sinks still
haven't received a sample to render. So we need to notify the media element in such cases
only after pre-rolling has completed. Otherwise the media element might emit a play event
too early, before pre-rolling has been completed.

No new tests, this patch fixes a few layout tests though, most notably removing flakiness
from fast/mediastream/captureStream/canvas2d.html.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::updateStates):
(WebCore::MediaPlayerPrivateGStreamer::triggerRepaint):

LayoutTests:

  • platform/glib/TestExpectations: Unflag no-longer-flaky and now-passing media tests.
8:21 AM Changeset in webkit [273308] by Chris Dumez
  • 52 edits in trunk/Tools

Use adoptNS() as soon as we [[ObjcClass alloc] init] to avoid leaks in Tools/
https://bugs.webkit.org/show_bug.cgi?id=222288

Reviewed by Darin Adler.

  • DumpRenderTree/ios/PixelDumpSupportIOS.mm:
  • DumpRenderTree/ios/UIScriptControllerIOS.mm:

(WTR::UIScriptControllerIOS::zoomScale const):
(WTR::UIScriptControllerIOS::scrollToOffset):
(WTR::UIScriptControllerIOS::immediateScrollToOffset):
(WTR::UIScriptControllerIOS::minimumZoomScale const):
(WTR::UIScriptControllerIOS::maximumZoomScale const):

  • DumpRenderTree/mac/DumpRenderTree.mm:

(fontAllowList):
(adjustWebDocumentForFlexibleViewport):
(createWebViewAndOffscreenWindow):
(allocateGlobalControllers):
(releaseGlobalControllers):
(resetWebViewToConsistentState):
(runTest):

  • DumpRenderTree/mac/DumpRenderTreeMac.h:
  • DumpRenderTree/mac/DumpRenderTreePasteboard.mm:

(+[DumpRenderTreePasteboard _pasteboardWithName:]):
(+[DumpRenderTreePasteboard releaseLocalPasteboards]):

  • DumpRenderTree/mac/EventSendingController.mm:

(drt_WebHTMLView_beginDraggingSessionWithItemsEventSource):
(+[EventSendingController initialize]):
(-[EventSendingController beginDragWithFiles:]):
(-[EventSendingController beginDragWithFilePromises:]):
(-[EventSendingController mouseUp:withModifiers:]):
(-[EventSendingController mouseMoveToX:Y:]):

  • DumpRenderTree/mac/FrameLoadDelegate.mm:

(-[FrameLoadDelegate didClearWindowObjectInStandardWorldForFrame:]):

  • DumpRenderTree/mac/TestRunnerMac.mm:

(TestRunner::setCustomPolicyDelegate):
(TestRunner::waitForPolicyDelegate):
(TestRunner::apiTestNewWindowDataLoadBaseURL):

  • DumpRenderTree/mac/UIDelegate.mm:

(-[UIDelegate webView:dragImage:at:offset:event:pasteboard:source:slideBack:forView:]):
(-[UIDelegate dealloc]):

  • TestRunnerShared/cocoa/LayoutTestSpellChecker.mm:

(ensureGlobalLayoutTestSpellChecker):

  • TestWebKitAPI/Tests/WebKit/GetUserMedia.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKit/GetUserMediaNavigation.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKit/GetUserMediaReprompt.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKit/mac/CustomBundleParameter.mm:

(TestWebKitAPI::didReceiveMessageFromInjectedBundle):

  • TestWebKitAPI/Tests/WebKitCocoa/CommandBackForward.mm:

(WebKit2_CommandBackForwardTestWKView::SetUp):

  • TestWebKitAPI/Tests/WebKitCocoa/Download.mm:

(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/InAppBrowserPrivacy.mm:
  • TestWebKitAPI/Tests/WebKitCocoa/NowPlayingControlsTests.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/PasteMixedContent.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/ReparentWebViewTimeout.mm:

(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/SchemeRegistry.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/SystemPreview.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/TestSOAuthorization.mm:

(-[TestSOAuthorizationDelegate webView:createWebViewWithConfiguration:forNavigationAction:windowFeatures:]):

  • TestWebKitAPI/Tests/WebKitCocoa/UserInitiatedActionInNavigationAction.mm:

(UserInitiatedActionTest::URLWithFragment):

  • TestWebKitAPI/Tests/WebKitCocoa/UserMediaDisabled.mm:

(TEST_F):

  • TestWebKitAPI/Tests/WebKitCocoa/WKHTTPCookieStore.mm:

(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/WKInspectorDelegate.mm:

(-[UIDelegate _webView:configurationForLocalInspector:]):

  • TestWebKitAPI/Tests/WebKitCocoa/WKPDFView.mm:

(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/WKWebViewCandidateTests.mm:

(+[CandidateTestWebView setUpWithFrame:testPage:]):
(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/WKWebViewDoesNotLogDuringInitialization.mm:

(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/WKWebViewEvaluateJavaScript.mm:
  • TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm:

(runWebsiteDataStoreCustomPaths):

  • TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm:

(-[WebsitePoliciesWebsiteDataStoreDelegate webView:startURLSchemeTask:]):

  • TestWebKitAPI/Tests/WebKitLegacy/mac/ClosingWebView.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKitObjC/CustomProtocolsInvalidScheme.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKitObjC/PreventImageLoadWithAutoResizing.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKitObjC/UserContentTest.mm:

(TEST_F):

  • TestWebKitAPI/Tests/ios/DragAndDropTestsIOS.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/ios/KeyboardInputTestsIOS.mm:

(+[InputAssistantItemTestingWebView leadingItemsForWebView:]):
(+[InputAssistantItemTestingWebView trailingItemsForWebView:]):

  • TestWebKitAPI/Tests/ios/WKScrollViewDelegate.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/mac/CandidateTests.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/mac/MemoryCachePruneWithinResourceLoadDelegate.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/ios/mainIOS.mm:

(main):

  • TestWebKitAPI/mac/TestFontOptions.mm:

(+[TestFontOptions sharedInstance]):

  • TestWebKitAPI/mac/mainMac.mm:

(main):

  • WebKitTestRunner/InjectedBundle/ios/AccessibilityControllerIOS.mm:

(WTR::AccessibilityController::addNotificationListener):

  • WebKitTestRunner/cocoa/TestControllerCocoa.mm:

(WTR::globalWebViewConfiguration):
(WTR::globalWebsiteDataStoreDelegateClient):
(WTR::initializeWebViewConfiguration):
(WTR::TestController::platformContext):
(WTR::TestController::platformPreferences):
(WTR::TestController::platformInitializeDataStore):
(WTR::TestController::platformCreateWebView):
(WTR::TestController::platformCreateOtherPage):
(WTR::TestController::platformAdjustContext):
(WTR::TestController::cocoaResetStateToConsistentValues):
(WTR::TestController::removeAllSessionCredentials):
(WTR::TestController::getAllStorageAccessEntries):
(WTR::TestController::loadedSubresourceDomains):
(WTR::TestController::clearLoadedSubresourceDomains):
(WTR::TestController::injectUserScript):
(WTR::TestController::setAllowStorageQuotaIncrease):
(WTR::TestController::setAllowsAnySSLCertificate):

  • WebKitTestRunner/ios/GeneratedTouchesDebugWindow.mm:

(+[GeneratedTouchesDebugWindow sharedGeneratedTouchesDebugWindow]):

  • WebKitTestRunner/ios/HIDEventGenerator.mm:

(+[HIDEventGenerator sharedHIDEventGenerator]):

  • WebKitTestRunner/mac/TestControllerMac.mm:

(WTR::TestController::configureContentExtensionForTest):

  • WebKitTestRunner/mac/WebKitTestRunnerPasteboard.mm:

(+[WebKitTestRunnerPasteboard _pasteboardWithName:]):
(+[WebKitTestRunnerPasteboard releaseLocalPasteboards]):

8:18 AM Changeset in webkit [273307] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

Detect unrecognized options in run-javascriptcore-tests
https://bugs.webkit.org/show_bug.cgi?id=221186

Patch by Angelos Oikonomopoulos <Angelos Oikonomopoulos> on 2021-02-23
Reviewed by Keith Miller.

run-javascriptcore-tests saves unrecognized arguments to pass
through to build-jsc even when --no-build is used. However, when
we're not building, nothing will ever use or look at the extra
arguments. This means that those arguments are silently eaten
up and, consequently, typos in option names can go undetected.

Change the script to fail when --no-build has been passed and
there are unrecognized options.

  • Scripts/run-javascriptcore-tests:
7:05 AM Changeset in webkit [273306] by Diego Pino Garcia
  • 2 edits in trunk/Source/WebCore

Unreviewed, GTK Ubuntu LTS build fix after r273241

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::invalidateLineLayoutPath): Function
modernLineLayout is only defined if ENABLE(LAYOUT_FORMATING_CONTEXT)

6:34 AM Changeset in webkit [273305] by Wenson Hsieh
  • 8 edits
    1 copy
    1 add in trunk/Source/WebKit

[iOS] Add a watchdog timer to forcibly reset deferring gesture recognizers
https://bugs.webkit.org/show_bug.cgi?id=222216

Reviewed by Simon Fraser.

Add a mechanism to detect and resolve situations where at least one deferring gesture recognizer
(WKDeferringGestureRecognizer) is stuck in Possible state after ending touches, but the touch event gesture
recognizer is unable to be reset (i.e. neither possible or recognizing). This state is indicative of a general
class of bugs regarding native gesture deferral, wherein our "gesture gates" never end up being lifted after
ending all touches in the view. One such example of this type of bug was fixed in r272584, where all interaction
(touch events, scrolling, tapping) due to the touch end deferrers never exiting Possible state after long
pressing to present a context menu.

To make these kinds of bugs both easier to diagnose and less fatal in the future, we introduce a watchdog timer
that dispatches after ending all touches on the content view, and checks the consistency of deferring gesture
recognizers in the view; if we detect stuck deferring gestures, we handle this by forcibly resetting the stuck
deferring gestures and logging a fault message.

I manually verified this change by reverting my fix for the aforementioned bug (r272584), and observing both (1)
a system log fault message, and (2) that interactions continued to work even without the fix in r272584, after
the watchdog timer fired. See below for more details.

  • SourcesCocoa.txt:
  • UIProcess/ios/GestureRecognizerConsistencyEnforcer.h: Copied from Source/WebKit/UIProcess/ios/WKDeferringGestureRecognizer.h.
  • UIProcess/ios/GestureRecognizerConsistencyEnforcer.mm: Added.

(WebKit::GestureRecognizerConsistencyEnforcer::GestureRecognizerConsistencyEnforcer):
(WebKit::GestureRecognizerConsistencyEnforcer::beginTracking):
(WebKit::GestureRecognizerConsistencyEnforcer::endTracking):
(WebKit::GestureRecognizerConsistencyEnforcer::reset):
(WebKit::GestureRecognizerConsistencyEnforcer::timerFired):

Add a helper class that wraps a RunLoop::Timer for the main runloop, and schedules a 1 second timer after all
deferring gestures have ended; assuming no new touches begin after this timer is scheduled, we'll perform a
consistency check over the content view's gestures and perform a log fault and force deferring gestures to end
if needed.

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

(-[WKContentView setUpInteraction]):
(-[WKContentView cleanUpInteraction]):

Make sure that we reset any extant GestureRecognizerConsistencyEnforcer if the web process crashes.

(-[WKContentView _removeDefaultGestureRecognizers]):
(-[WKContentView _addDefaultGestureRecognizers]):
(-[WKContentView _webTouchEventsRecognized:]):

Adjust a few compile-time guards so that deferring gesture recognizers exist on the view, even if
ENABLE_IOS_TOUCH_EVENTS is off. This makes some of the gesture deferral code throughout this file easier to
reason about in non-internal iOS builds, since we don't need to sprinkle as many ENABLE(IOS_TOUCH_EVENTS)
checks throughout this class.

(-[WKContentView touchEventGestureRecognizer]):
(-[WKContentView gestureRecognizerConsistencyEnforcer]):
(-[WKContentView deferringGestures]):
(-[WKContentView gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:]):
(-[WKContentView deferringGestureRecognizer:willBeginTouchesWithEvent:]):

Refactor -deferringGestureRecognizer:shouldDeferGesturesAfterBeginningTouchesWithEvent: so that it returns an
enum flag indicating whether the given gesture should be allowed to begin deferring native gestures; by making
this -deferringGestureRecognizer:willBeginTouchesWithEvent:, we can now put state management logic here that's
responsible for updating the GestureRecognizerConsistencyEnforcer.

(-[WKContentView deferringGestureRecognizer:didTransitionToState:]):
(-[WKContentView deferringGestureRecognizer:didEndTouchesWithEvent:]):
(-[WKContentView _deferringGestures]): Deleted.

Rename this to -deferringGestures and expose it as a readonly property, for use by the
GestureRecognizerConsistencyEnforcer.

(-[WKContentView deferringGestureRecognizer:shouldDeferGesturesAfterBeginningTouchesWithEvent:]): Deleted.

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

(-[WKDeferringGestureRecognizer touchesBegan:withEvent:]):
(-[WKDeferringGestureRecognizer setState:]):

Add a delegate hook to inform WKContentView when the gesture recognizer state changes.

(-[WKDeferringGestureRecognizer deferringGestureDelegate]): Deleted.

  • UIProcess/mac/WKPrintingView.h:

Fix a missing include that results in a build failure due to changed unified sources.

  • WebKit.xcodeproj/project.pbxproj:
5:58 AM Changeset in webkit [273304] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[macOS] Crash under AuxiliaryProcess::initializeSandbox
https://bugs.webkit.org/show_bug.cgi?id=222233

Unreviewed, address additional review feedback.

Add comment and logging when the WebKit client is setting the user directory suffix.

  • Shared/mac/AuxiliaryProcessMac.mm:

(WebKit::initializeSandboxParameters):

5:01 AM Changeset in webkit [273303] by commit-queue@webkit.org
  • 4 edits in trunk/Tools

[GTK] Use std::bitset to specify WebKitTestServer's options
https://bugs.webkit.org/show_bug.cgi?id=222273

Patch by Frederic Wang <fwang@igalia.com> on 2021-02-23
Reviewed by Carlos Garcia Campos.

  • TestWebKitAPI/Tests/WebKitGLib/TestSSL.cpp:

(beforeAll):

  • TestWebKitAPI/glib/WebKitGLib/WebKitTestServer.cpp:

(WebKitTestServer::WebKitTestServer):

  • TestWebKitAPI/glib/WebKitGLib/WebKitTestServer.h:
4:28 AM Changeset in webkit [273302] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

Nullptr crash in ModifySelectionListLevelCommand::appendSiblingNodeRange
https://bugs.webkit.org/show_bug.cgi?id=221650

Patch by Frederic Wang <fwang@igalia.com> on 2021-02-23
Reviewed by Ryosuke Niwa.

Source/WebCore:

getStartEndListChildren relies on the render tree to move the "end" node to the next sibling,
but this does not necessarily correspond to a sibling of the "start" node in the DOM tree.
This breaks the assumption of ModifySelectionListLevelCommand::appendSiblingNodeRange that
the "start" and "end" nodes are siblings (in that order), causing a null-pointer dereference.
This patch fixes the issue by ensuring that getStartEndListChildren does not try to change
the "end" node if it is not a sibling of the "start" one.

Test: fast/editing/modify-selection-list-level-crash.html

  • editing/ModifySelectionListLevel.cpp:

(WebCore::getStartEndListChildren): Don't change the end node if r->node() is a sibling of
startChildList.

LayoutTests:

  • fast/editing/modify-selection-list-level-crash-expected.txt: Added.
  • fast/editing/modify-selection-list-level-crash.html: Added.
12:58 AM Changeset in webkit [273301] by commit-queue@webkit.org
  • 10 edits in trunk

HTMLCanvasElement::copiedImage() contains old image with GPU Process on
https://bugs.webkit.org/show_bug.cgi?id=222101

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2021-02-23
Reviewed by Simon Fraser.

Source/WebKit:

Implement RemoteImageBufferProxy::copyImage and
RemoteImageBufferProxy::copyNativeImage.
Implement by asking the data from the GPU process.

Previously, with AcceleratedImageBufferShareableMappedBackend
the HTMLCanvasElement::copiedImage() would construct the copy
by copying the CGContext backed by the IOSurface that is accessible
by both processes. This would succeed. After a draw to the image,
the second copy would not reflect the draw but contain the same
image as the first copy.

Fix by not using the fact that the IOSurface is accessible by both
processes. In the end, IOSurfaces will not be available in
Web process.

Converts NativeImage to ShareableBitmap with WebCore::CompositeOperator::Copy
since the ImageBuffers might have unpremultiplied contents. Also, ShareableBitmap
does not have contents, so blending is overhead.

No new tests, enables ~150 tests.

  • GPUProcess/graphics/RemoteGraphicsContextGL.cpp:

(WebKit::RemoteGraphicsContextGL::copyTextureFromMedia):

  • GPUProcess/graphics/RemoteRenderingBackend.cpp:

(WebKit::RemoteRenderingBackend::getShareableBitmapForImageBuffer):

  • GPUProcess/graphics/RemoteRenderingBackend.h:
  • GPUProcess/graphics/RemoteRenderingBackend.messages.in:
  • WebProcess/GPU/graphics/RemoteImageBufferProxy.h:
  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:

(WebKit::RemoteRenderingBackendProxy::getShareableBitmap):

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h:

LayoutTests:

  • gpu-process/TestExpectations:
12:20 AM Changeset in webkit [273300] by rniwa@webkit.org
  • 2 edits in trunk/Source/WebCore

Handle Page::didFinishLoadingImageForElement asynchronously
https://bugs.webkit.org/show_bug.cgi?id=221390

Reviewed by Antti Koivisto.

Use EventLoop instead of RunLoop::main() to be thread safe in iOS WebKit1.

  • page/Page.cpp:

(WebCore::Page::didFinishLoadingImageForElement):

Feb 22, 2021:

11:43 PM Changeset in webkit [273299] by don.olmstead@sony.com
  • 21 edits in trunk/Source

Non-unified build fixes late February 2021 edition
https://bugs.webkit.org/show_bug.cgi?id=222303

Unreviewed non-unified build fixes.

Source/JavaScriptCore:

  • API/JSAPIValueWrapper.cpp:
  • bytecode/SetPrivateBrandVariant.h:
  • heap/HeapAnalyzer.h:
  • heap/HeapProfiler.cpp:
  • parser/ParserTokens.h:
  • runtime/DOMAttributeGetterSetter.cpp:
  • runtime/GlobalExecutable.cpp:
  • runtime/JSScriptFetchParameters.cpp:

Source/WebCore:

  • bindings/js/ScriptModuleLoader.cpp:
  • layout/integration/LayoutIntegrationInlineContentBuilder.cpp:
  • layout/integration/LayoutIntegrationInlineContentBuilder.h:
  • workers/WorkerGlobalScopeProxy.h:
  • workers/WorkerMessagingProxy.cpp:
  • workers/WorkerOrWorkletScriptController.cpp:
  • workers/WorkerOrWorkletScriptController.h:
  • workers/service/ServiceWorkerJob.cpp:

Source/WebKit:

  • GPUProcess/graphics/RemoteRenderingBackend.cpp:
  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:
7:50 PM Changeset in webkit [273298] by rniwa@webkit.org
  • 4 edits in trunk/Source/WebCore

REGRESSION (r272928): ASSERT NOT REACHED in WebCore::FrameSelection::setSelectionWithoutUpdatingAppearance
https://bugs.webkit.org/show_bug.cgi?id=222219
<rdar://problem/74548257>

Reviewed by Wenson Hsieh.

The assertion failure was caused by confirmCompositionAndNotifyClient called in commitProvisionalLoad
committing the composition even though the composition node had been removed from the document.

Fixed the bug by canceling the composition if the composition node had been removed or the selection
had been moved away from it in confirmCompositionAndNotifyClient.

Test: editing/input/select-all-clear-input-method.html

  • editing/Editor.cpp:

(WebCore::Editor::confirmOrCancelCompositionAndNotifyClient): Renamed from confirmCompositionAndNotifyClient.

  • editing/Editor.h:
  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::commitProvisionalLoad):

7:34 PM Changeset in webkit [273297] by Devin Rousso
  • 2 edits in trunk/Source/WebKit

[Payment Request] REGRESSION(r273143): crash shortly after showing the Apple Pay sheet
https://bugs.webkit.org/show_bug.cgi?id=222298
<rdar://problem/74557943>

Reviewed by Wenson Hsieh.

  • Platform/cocoa/PaymentAuthorizationPresenter.mm:

(WebKit::toNSErrors):
Don't use adoptNS with +[NSMutableArray array] since that returns an autoreleased object.
Use the helper createNSArray instead (as was previously done before r273143).

7:16 PM Changeset in webkit [273296] by Wenson Hsieh
  • 14 edits
    2 adds in trunk/Source

WebMouseEvent.h should avoid pulling in WebCore headers that know about DOM nodes
https://bugs.webkit.org/show_bug.cgi?id=222291

Reviewed by Darin Adler.

Source/WebCore:

Refactor PointerEvent.h so that the static class helper methods for getting the names of mouse, pen and touch
pointer event types are instead separate functions in PointerEventTypeNames.h. This allows us to just import
PointerEventTypeNames.h instead of PointerEvent.h in WebKit -- and, in particular, within WebKit headers
that are exclusive to the UI process.

No change in behavior.

  • Headers.cmake:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • dom/PointerEvent.cpp:

(WebCore::PointerEvent::mousePointerType): Deleted.
(WebCore::PointerEvent::penPointerType): Deleted.
(WebCore::PointerEvent::touchPointerType): Deleted.

  • dom/PointerEvent.h:

Drive-by fix: also forward declare Node instead of including Node.h; WebCore::Node is only used in this
header in the context of RefPtr<Node>, so the forward declaration is sufficient.

  • dom/PointerEventTypeNames.cpp: Added.

(WebCore::mousePointerEventType):
(WebCore::penPointerEventType):
(WebCore::touchPointerEventType):

  • dom/PointerEventTypeNames.h: Added.
  • dom/ios/PointerEventIOS.cpp:
  • page/PointerCaptureController.cpp:

(WebCore::PointerCaptureController::reset):
(WebCore::PointerCaptureController::pointerEventForMouseEvent):
(WebCore::PointerCaptureController::dispatchEvent):
(WebCore::PointerCaptureController::pointerEventWillBeDispatched):
(WebCore::PointerCaptureController::pointerEventWasDispatched):
(WebCore::PointerCaptureController::processPendingPointerCapture):

Source/WebKit:

Import PointerEventTypeNames.h instead of PointerEvent.h in several UI process and shared headers.

  • Shared/WebMouseEvent.h:
  • UIProcess/API/gtk/WebKitWebViewBase.cpp:

(primaryPointerForType):
(webkitWebViewBaseSynthesizeMouseEvent):

  • UIProcess/Automation/SimulatedInputDispatcher.cpp:

(WebKit::SimulatedInputDispatcher::transitionInputSourceToState):

  • UIProcess/Automation/WebAutomationSession.cpp:

(WebKit::WebAutomationSession::performMouseInteraction):

  • UIProcess/gtk/PointerLockManager.cpp:

(WebKit::PointerLockManager::handleMotion):

6:32 PM Changeset in webkit [273295] by Alan Coon
  • 1 copy in tags/Safari-611.1.18.1.1

Tag Safari-611.1.18.1.1.

6:29 PM Changeset in webkit [273294] by Alan Coon
  • 1 copy in tags/Safari-611.1.18.0.1

Tag Safari-611.1.18.0.1.

6:08 PM Changeset in webkit [273293] by Chris Dumez
  • 3 edits in trunk/Source/WebKit

Add assertions to help identify to source of <rdar://68340471>
https://bugs.webkit.org/show_bug.cgi?id=222290

Reviewed by Alex Christensen.

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::pageBeginUsingWebsiteDataStore):
(WebKit::WebProcessPool::pageEndUsingWebsiteDataStore):
(WebKit::WebProcessPool::hasPagesUsingWebsiteDataStore const):

  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::addExistingWebPage):

6:02 PM Changeset in webkit [273292] by keith_miller@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

Move asyncModuleEvaluation into its own function and use intrinsic constants
https://bugs.webkit.org/show_bug.cgi?id=222281

Reviewed by Yusuke Suzuki.

Also delete an unused field on the module entry.

  • builtins/ModuleLoader.js:

(globalPrivate.newRegistryEntry):
(moduleEvaluation):
(async asyncModuleEvaluation):

  • runtime/JSModuleLoader.cpp:
6:00 PM Changeset in webkit [273291] by Said Abou-Hallawa
  • 15 edits in trunk

[GPU Process] Implement the ClipToDrawingCommands item by using begin and end markers
https://bugs.webkit.org/show_bug.cgi?id=222230

Reviewed by Simon Fraser.

Source/WebCore:

Instead of encoding and decoding the clipping commands as a separate
DisplayList, the recorder will insert a "begin" and "end" markers before
and after the clipping commands.

When replaying the "begin" mark, the replayer will create a mask ImageBuffer
and force using its context for the following items.

When replaying the "end" mark, it will clip the original context to the
mask ImageBuffer.

  • platform/graphics/displaylists/DisplayList.cpp:

(WebCore::DisplayList::DisplayList::append):

  • platform/graphics/displaylists/DisplayListItemBuffer.cpp:

(WebCore::DisplayList::ItemHandle::apply):
(WebCore::DisplayList::ItemHandle::destroy):
(WebCore::DisplayList::ItemHandle::safeCopy const):

  • platform/graphics/displaylists/DisplayListItemType.cpp:

(WebCore::DisplayList::sizeOfItemInBytes):
(WebCore::DisplayList::isDrawingItem):
(WebCore::DisplayList::isInlineItem):

  • platform/graphics/displaylists/DisplayListItemType.h:
  • platform/graphics/displaylists/DisplayListItems.cpp:

(WebCore::DisplayList::operator<<):
(WebCore::DisplayList::ClipToDrawingCommands::apply const): Deleted.

  • platform/graphics/displaylists/DisplayListItems.h:

(WebCore::DisplayList::BeginClipToDrawingCommands::BeginClipToDrawingCommands):
(WebCore::DisplayList::BeginClipToDrawingCommands::colorSpace const):
(WebCore::DisplayList::EndClipToDrawingCommands::EndClipToDrawingCommands):
(WebCore::DisplayList::EndClipToDrawingCommands::destination const):
(WebCore::DisplayList::ClipToDrawingCommands::ClipToDrawingCommands): Deleted.
(WebCore::DisplayList::ClipToDrawingCommands::operator=): Deleted.
(WebCore::DisplayList::ClipToDrawingCommands::destination const): Deleted.
(WebCore::DisplayList::ClipToDrawingCommands::colorSpace const): Deleted.
(WebCore::DisplayList::ClipToDrawingCommands::drawingCommands const): Deleted.
(WebCore::DisplayList::ClipToDrawingCommands::encode const): Deleted.
(WebCore::DisplayList::ClipToDrawingCommands::decode): Deleted.

  • platform/graphics/displaylists/DisplayListRecorder.cpp:

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

  • platform/graphics/displaylists/DisplayListReplayer.cpp:

(WebCore::DisplayList::Replayer::context const):
(WebCore::DisplayList::Replayer::applyItem):

  • platform/graphics/displaylists/DisplayListReplayer.h:

Source/WebKit:

Replace the DisplayList item ClipToDrawingCommands by the pair items
BeginClipToDrawingCommands and EndClipToDrawingCommands.

  • GPUProcess/graphics/RemoteRenderingBackend.cpp:

(WebKit::RemoteRenderingBackend::decodeItem):

  • WebProcess/GPU/graphics/RemoteImageBufferProxy.h:

LayoutTests:

The text with gradient tests will be fixed by this change.

  • gpu-process/TestExpectations:
5:43 PM Changeset in webkit [273290] by weinig@apple.com
  • 11 edits
    14 adds in trunk

HTMLModelElement needs a renderer
https://bugs.webkit.org/show_bug.cgi?id=222114

Reviewed by Simon Fraser.

Source/WebCore:

Tests: model-element/model-element-ready-load-aborted.html

model-element/model-element-ready-load-failed.html
model-element/model-element-ready.html
model-element/model-element-renderer-no-source.html
model-element/model-element-renderer.html

  • Headers.cmake:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:

Add RenderModel.h/cpp

  • Modules/model-element/HTMLModelElement.cpp:

(WebCore::HTMLModelElement::HTMLModelElement):
(WebCore::HTMLModelElement::~HTMLModelElement):
(WebCore::HTMLModelElement::modelData const):
(WebCore::HTMLModelElement::sourcesChanged):
(WebCore::HTMLModelElement::setSourceURL):
(WebCore::HTMLModelElement::readyPromiseResolve):
(WebCore::HTMLModelElement::createElementRenderer):
(WebCore::HTMLModelElement::responseReceived):
(WebCore::HTMLModelElement::dataReceived):
(WebCore::HTMLModelElement::redirectReceived):
(WebCore::HTMLModelElement::notifyFinished):

  • Modules/model-element/HTMLModelElement.h:
  • Modules/model-element/HTMLModelElement.idl:

Add basic loading of model data as a CachedRawResource. In the future,
we may want a more specialized loader, but for now this gets the data
into a data buffer and that's a good start.

Also adds a "ready" promise that resolves when the load completes. This
may mutate to an event in the future as the spec moves forward.

  • rendering/RenderModel.cpp: Added.

(WebCore::RenderModel::RenderModel):
(WebCore::RenderModel::modelElement const):
(WebCore::RenderModel::updateFromElement):

  • rendering/RenderModel.h: Added.
  • rendering/RenderObject.h:

(WebCore::RenderObject::isRenderModel const):
Add a simple RenderReplaced subclass as the starting point of a renderer
for <model>. It's enough that it shows up in a render tree dump, but not
really anything else.

LayoutTests:

Add basic tests for loading HTMLModelElement elements and rendering
RenderModel elements.

  • model-element/model-element-ready-expected.txt: Added.
  • model-element/model-element-ready-load-aborted-expected.txt: Added.
  • model-element/model-element-ready-load-aborted.html: Added.
  • model-element/model-element-ready-load-failed-expected.txt: Added.
  • model-element/model-element-ready-load-failed.html: Added.
  • model-element/model-element-ready.html: Added.
  • model-element/model-element-renderer-expected.txt: Added.
  • model-element/model-element-renderer-no-source-expected.txt: Added.
  • model-element/model-element-renderer-no-source.html: Added.
  • model-element/model-element-renderer.html: Added.
  • model-element/resources: Added.
  • model-element/resources/heart.usdz: Added.
5:10 PM Changeset in webkit [273289] by eric.carlson@apple.com
  • 2 edits in trunk/Source/WebKit

UserMediaPermissionRequestManagerProxy may be released while computing capture device list
https://bugs.webkit.org/show_bug.cgi?id=222236
<rdar://74480265>

Unreviewed, address post-review comment.

  • UIProcess/UserMediaPermissionRequestManagerProxy.cpp:

(WebKit::UserMediaPermissionRequestManagerProxy::computeFilteredDeviceList): Use
captured this.

4:31 PM Changeset in webkit [273288] by Chris Dumez
  • 22 edits
    1 copy in trunk/Source

Prepare for memory ownership transfer in the GPUProcess
https://bugs.webkit.org/show_bug.cgi?id=222122

Reviewed by Simon Fraser.

Source/WebKit:

Prepare for memory ownership transfer in the GPUProcess:

  1. Have the WebProcess create a task identity token and pass it to the GPUProcess when connecting to it. The WebProcess' task identity token is then stored on the GPUConnectionToWebProcess object.
  2. Add the entitlement to the GPUProcess that is needed to transfer memory ownership to another process.

This is a first step towards having the GPUProcess transfer memory ownership of its
IOSurfaces and Metal textures to the WebProcesses it is serving.

  • GPUProcess/GPUConnectionToWebProcess.cpp:

(WebKit::GPUConnectionToWebProcess::create):
(WebKit::GPUConnectionToWebProcess::GPUConnectionToWebProcess):

  • GPUProcess/GPUConnectionToWebProcess.h:

(WebKit::GPUConnectionToWebProcess::webProcessIdentityToken const):

  • GPUProcess/GPUProcess.cpp:

(WebKit::GPUProcess::createGPUConnectionToWebProcess):

  • GPUProcess/GPUProcess.h:
  • GPUProcess/GPUProcess.messages.in:
  • Scripts/process-entitlements.sh:
  • Shared/GPUProcessConnectionParameters.h: Copied from Source/WTF/wtf/MachSendRight.h.

(WebKit::GPUProcessConnectionParameters::encode const):
(WebKit::GPUProcessConnectionParameters::decode):

  • UIProcess/GPU/GPUProcessProxy.cpp:

(WebKit::GPUProcessProxy::getGPUProcessConnection):

  • UIProcess/GPU/GPUProcessProxy.h:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::getGPUProcessConnection):

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

(WebKit::WebProcessProxy::getGPUProcessConnection):

  • UIProcess/WebProcessProxy.h:
  • UIProcess/WebProcessProxy.messages.in:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::platformInitializeGPUProcessConnectionParameters):
(WebKit::WebProcess::getGPUProcessConnection):

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

(WebKit::WebProcess::platformInitializeGPUProcessConnectionParameters):

Source/WTF:

  • wtf/PlatformHave.h:

Add feature flag for TASK_IDENTITY_TOKEN as this API was only
introduced very recently.

  • wtf/MachSendRight.h:
  • wtf/cocoa/MachSendRight.cpp:

(WTF::MachSendRight::MachSendRight):
(WTF::MachSendRight::operator=):
Add a copy constructor to MachSendRight for convenience.

4:19 PM Changeset in webkit [273287] by achristensen@apple.com
  • 4 edits in trunk

Re-enable RangeResponseGenerator.
https://bugs.webkit.org/show_bug.cgi?id=221072
<rdar://problem/74551753>

Source/WebCore:

  • platform/network/cocoa/RangeResponseGenerator.mm:

(WebCore::RangeResponseGenerator::willSynthesizeRangeResponses):

Tools:

r273263 was a false alarm. Reverting that revision.

  • TestWebKitAPI/Tests/WebKitCocoa/MediaLoading.mm:

(TestWebKitAPI::TEST):

4:03 PM Changeset in webkit [273286] by pvollan@apple.com
  • 5 edits in trunk/Source/WebKit

[Cocoa] Send sandbox extensions for Network Extension services in load parameters
https://bugs.webkit.org/show_bug.cgi?id=222284
<rdar://problem/74402532>

Reviewed by Brent Fulgham.

Currently, sandbox extensions for Network Extension services are sent from the UI process to the WebContent process when the
policy decision is made, but that is not soon enough in all cases. They should also be sent as part of the load parameters.

  • Shared/Cocoa/LoadParametersCocoa.mm:

(WebKit::LoadParameters::platformEncode const):
(WebKit::LoadParameters::platformDecode):

  • Shared/LoadParameters.h:
  • UIProcess/Cocoa/WebPageProxyCocoa.mm:

(WebKit::WebPageProxy::addPlatformLoadParameters):

  • WebProcess/WebPage/Cocoa/WebPageCocoa.mm:

(WebKit::WebPage::platformDidReceiveLoadParameters):

3:49 PM Changeset in webkit [273285] by Russell Epstein
  • 1 copy in tags/Safari-612.1.4.2

Tag Safari-612.1.4.2.

3:37 PM Changeset in webkit [273284] by Russell Epstein
  • 8 edits in branches/safari-612.1.4-branch/Source

Versioning.

WebKit-7612.1.4.2

3:19 PM Changeset in webkit [273283] by Chris Dumez
  • 5 edits in trunk

[Cocoa] Add WKWebView session restoration API
https://bugs.webkit.org/show_bug.cgi?id=220958
<rdar://70956146>

Reviewed by Geoffrey Garen.

Source/WebKit:

Add WKWebView session restoration API so that applications can easily retrieve
view state (such as back-forward list, scroll position, form data...) and
restore it on a WKWebView later on.

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

(-[WKWebView interactionState]):
(-[WKWebView setInteractionState:]):

Tools:

Add API test coverage.

  • TestWebKitAPI/Tests/WebKit/WKBackForwardList.mm:

(TEST):

3:07 PM Changeset in webkit [273282] by dino@apple.com
  • 2 edits in trunk/Source/WebCore

Add a PlatformXR::Device subclass for Cocoa
https://bugs.webkit.org/show_bug.cgi?id=222215

Patch by Ada Chan <ada.chan@apple.com> on 2021-02-22
Reviewed by Dean Jackson.

  • platform/xr/cocoa/PlatformXRCocoa.h:
2:27 PM Changeset in webkit [273281] by Russell Epstein
  • 5 edits
    2 adds in branches/safari-611.1.18.0-branch

Cherry-pick r273003. rdar://problem/74608107

Animated keyframe style needs to go through full style adjuster
https://bugs.webkit.org/show_bug.cgi?id=222036
rdar://72421747

Reviewed by Zalan Bujtas.

Source/WebCore:

We can create unadjusted styles via keyframe animations and those may cause problems in rendering.

Test: fast/animation/animation-position-crash.html

  • style/StyleAdjuster.cpp: (WebCore::Style::Adjuster::adjustAnimatedStyle):

Make this a member function and invoke Adjuster::adjust.
Simplify the z-index adjustment since it is mostly handled by adjust.

  • style/StyleAdjuster.h:
  • style/StyleTreeResolver.cpp:

Always use style adjuster for keyframe animation.

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

LayoutTests:

  • fast/animation/animation-position-crash-expected.html: Added.
  • fast/animation/animation-position-crash.html: Added.

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

2:24 PM Changeset in webkit [273280] by Russell Epstein
  • 2 edits in branches/safari-611.1.18.1-branch/Source/WebKit

Cherry-pick r273271. rdar://problem/74611278

[macOS] Crash under AuxiliaryProcess::initializeSandbox
https://bugs.webkit.org/show_bug.cgi?id=222233
<rdar://problem/74261611>

Reviewed by Brent Fulgham.

When a WebKit client provides a user directory suffix in the process initialization parameters, confstr with the new
user suffix applied will fail to create the full directory path if it does not exist, and return an empty result.
This will lead to empty paths in the sandbox parameters, which will cause the sandbox to fail to compile, which will
eventually crash the WebKit process. This patch addresses this by making sure the new user directory suffix does not
represent a path, since confstr is not able to handle user directory suffixes containing paths that do not exist.
Additionally, this patch reverts r271417, which was the first attempt at fixing this crash, but was unsuccessful in
doing so.

  • Shared/mac/AuxiliaryProcessMac.mm: (WebKit::initializeSandboxParameters): (WebKit::AuxiliaryProcess::initializeSandbox):

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

2:24 PM Changeset in webkit [273279] by Russell Epstein
  • 5 edits
    2 adds in branches/safari-611.1.18.1-branch

Cherry-pick r273003. rdar://problem/74608118

Animated keyframe style needs to go through full style adjuster
https://bugs.webkit.org/show_bug.cgi?id=222036
rdar://72421747

Reviewed by Zalan Bujtas.

Source/WebCore:

We can create unadjusted styles via keyframe animations and those may cause problems in rendering.

Test: fast/animation/animation-position-crash.html

  • style/StyleAdjuster.cpp: (WebCore::Style::Adjuster::adjustAnimatedStyle):

Make this a member function and invoke Adjuster::adjust.
Simplify the z-index adjustment since it is mostly handled by adjust.

  • style/StyleAdjuster.h:
  • style/StyleTreeResolver.cpp:

Always use style adjuster for keyframe animation.

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

LayoutTests:

  • fast/animation/animation-position-crash-expected.html: Added.
  • fast/animation/animation-position-crash.html: Added.

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

2:19 PM Changeset in webkit [273278] by Russell Epstein
  • 8 edits in branches/safari-611.1.18.1-branch/Source

Versioning.

WebKit-7611.1.18.1.1

2:08 PM Changeset in webkit [273277] by Russell Epstein
  • 8 edits in branches/safari-611.1.18.0-branch/Source

Versioning.

WebKit-7611.1.18.0.1

1:59 PM Changeset in webkit [273276] by Chris Dumez
  • 63 edits in trunk

Use adoptNS() as soon as we [[ObjcClass alloc] init] to avoid leaks
https://bugs.webkit.org/show_bug.cgi?id=222237

Reviewed by Darin Adler.

Source/WebCore:

  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(-[WebAccessibilityObjectWrapper ALLOW_DEPRECATED_IMPLEMENTATIONS_END]):

  • bridge/testbindings.mm:

(main):

  • platform/cocoa/VideoFullscreenModel.h:

(WebCore::VideoFullscreenModel::createVideoFullscreenViewController):

  • platform/graphics/cocoa/WebActionDisablingCALayerDelegate.mm:

(+[WebActionDisablingCALayerDelegate shared]):

  • platform/ios/WebBackgroundTaskController.mm:

(+[WebBackgroundTaskController sharedController]):

  • platform/ios/WebItemProviderPasteboard.mm:

(+[WebItemProviderPasteboard sharedInstance]):

  • platform/ios/wak/WebCoreThread.mm:

(sAsyncDelegates):
(WebThreadCallDelegateAsync):
(WebRunLoopUnlockInternal):
(StartWebThread):

  • platform/mac/ThemeMac.mm:

(WebCore::buttonCell):
(WebCore::button):

  • platform/mac/WebNSAttributedStringExtras.mm:

(WebCore::attributedStringByStrippingAttachmentCharacters):

  • platform/network/mac/ResourceHandleMac.mm:

(WebCore::operationQueueForAsyncClients):

Source/WebKit:

  • UIProcess/API/Cocoa/NSAttributedString.mm:

(globalConfiguration):
(+[_WKAttributedStringWebViewCache configuration]):
(+[_WKAttributedStringWebViewCache clearConfiguration]):

  • UIProcess/API/Cocoa/WKNSURLAuthenticationChallenge.mm:

(-[WKNSURLAuthenticationChallenge _web_createTarget]):

  • UIProcess/API/Cocoa/WKProcessPool.mm:

(sharedProcessPool):
(-[WKProcessPool encodeWithCoder:]):
(+[WKProcessPool _sharedProcessPool]):

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView loadSimulatedRequest:withResponseHTMLString:]):

  • UIProcess/API/Cocoa/WKWebsiteDataStore.mm:

(+[WKWebsiteDataStore allWebsiteDataTypes]):

  • UIProcess/Cocoa/PreferenceObserver.mm:

(+[WKPreferenceObserver sharedInstance]):

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

(WebKit::VideoFullscreenModelContext::createVideoFullscreenViewController):

  • UIProcess/Cocoa/WebInspectorPreferenceObserver.mm:

(+[WKWebInspectorPreferenceObserver sharedInstance]):

  • UIProcess/WebAuthentication/Cocoa/AuthenticatorPresenterCoordinator.mm:

(WebKit::AuthenticatorPresenterCoordinator::AuthenticatorPresenterCoordinator):

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView supportedPasteboardTypesForCurrentSelection]):
(-[WKContentView assignLegacyDataForContextMenuInteraction]):

  • UIProcess/ios/WKMouseDeviceObserver.mm:

(+[WKMouseDeviceObserver sharedInstance]):

  • UIProcess/ios/WKStylusDeviceObserver.mm:

(+[WKStylusDeviceObserver sharedInstance]):

  • UIProcess/mac/WKTextInputWindowController.mm:

(+[WKTextInputWindowController sharedTextInputWindowController]):

  • UIProcess/mac/WebColorPickerMac.mm:

(+[WKPopoverColorWell _colorPopoverCreateIfNecessary:]):

  • UIProcess/mac/WebDataListSuggestionsDropdownMac.mm:

(-[WKDataListSuggestionWindow initWithContentRect:styleMask:backing:defer:]):

  • WebProcess/InjectedBundle/API/mac/WKDOMInternals.mm:

(WebKit::initWithImpl):
(WebKit::toWKDOMType):

  • WebProcess/InjectedBundle/mac/InjectedBundleMac.mm:

(WebKit::InjectedBundle::initialize):

Source/WebKitLegacy/ios:

  • Misc/WebGeolocationProviderIOS.mm:

(+[WebGeolocationProviderIOS sharedGeolocationProvider]):

Source/WebKitLegacy/mac:

  • DefaultDelegates/WebDefaultUIDelegate.mm:

(+[WebDefaultUIDelegate sharedUIDelegate]):

  • History/WebHistoryItem.mm:

(-[WebHistoryItem copyWithZone:]):

  • Misc/WebIconDatabase.mm:

(+[WebIconDatabase sharedIconDatabase]):

  • Misc/WebNSPasteboardExtras.mm:

(_writableTypesForImageWithoutArchive):

  • Plugins/WebBaseNetscapePluginView.mm:

(-[WebBaseNetscapePluginView cacheSnapshot]):

  • Plugins/WebNetscapePluginStream.mm:

(WebNetscapePluginStream::deliverData):

  • Plugins/WebPluginController.mm:

(pluginViews):
(-[WebPluginController plugInViewWithArguments:fromPluginPackage:]):
(+[WebPluginController addPlugInView:]):
(+[WebPluginController isPlugInView:]):
(-[WebPluginController destroyPlugin:]):
(-[WebPluginController destroyAllPlugins]):

  • Plugins/WebPluginDatabase.mm:

(sharedDatabase):
(+[WebPluginDatabase sharedDatabase]):
(+[WebPluginDatabase sharedDatabaseIfExists]):
(+[WebPluginDatabase closeSharedDatabase]):
(-[WebPluginDatabase refresh]):
(-[WebPluginDatabase _plugInPaths]):
(-[WebPluginDatabase _removePlugin:]):

  • Scripts/PreferencesTemplates/WebPreferencesExperimentalFeatures.mm.erb:
  • Scripts/PreferencesTemplates/WebPreferencesInternalFeatures.mm.erb:
  • WebView/WebDataSource.mm:

(+[WebDataSource _repTypesAllowImageTypeOmission:]):

  • WebView/WebFrameView.mm:

(+[WebFrameView _viewTypesAllowImageTypeOmission:]):

  • WebView/WebFullScreenController.mm:

(createBackgroundFullscreenWindow):

  • WebView/WebHTMLRepresentation.mm:

(regExpForLabels):

  • WebView/WebHTMLView.mm:

(+[WebHTMLView _insertablePasteboardTypes]):

  • WebView/WebPreferences.mm:

(standardPreferences):
(webPreferencesInstances):
(+[WebPreferences standardPreferences]):
(+[WebPreferences _getInstanceForIdentifier:]):
(+[WebPreferences _setInstance:forIdentifier:]):
(+[WebPreferences _checkLastReferenceForIdentifier:]):

  • WebView/WebView.mm:

(schemesWithRepresentationsSet):
(outlookQuirksUserScriptContents):
(-[WebView _injectOutlookQuirksScript]):
(laBanquePostaleQuirksScript):
(-[WebView _injectLaBanquePostaleQuirks]):
(+[WebView _registerViewClass:representationClass:forURLScheme:]):
(+[WebView _representationExistsForURLScheme:]):
(+[WebView automaticallyNotifiesObserversForKey:]):
(-[WebView _declaredKeys]):
(-[WebView addPluginInstanceView:]):
(-[WebView _enterFullScreenForElement:]):

  • WebView/WebViewData.h:

Tools:

  • TestRunnerShared/mac/NSPasteboardAdditions.mm:

(+[NSPasteboard _modernPasteboardType:]):

  • TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-1.mm:
  • TestWebKitAPI/Tests/WebKitLegacy/mac/DeallocWebViewInEventListener.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/mac/CancelLoadFromResourceLoadDelegate.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/mac/CloseNewWindowInNavigationPolicyDelegate.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/mac/MemoryCacheDisableWithinResourceLoadDelegate.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/mac/MemoryCachePruneWithinResourceLoadDelegate.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/mac/StopLoadingFromDidReceiveResponse.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/mac/WindowlessWebViewWithMedia.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/ios/mainIOS.mm:

(main):

  • TestWebKitAPI/mac/mainMac.mm:

(main):

1:39 PM Changeset in webkit [273275] by Martin Robinson
  • 13 edits in trunk/Source/WebCore

Clean up ScrollableArea and ScrollAnimator API and convert less between offsets and positions
https://bugs.webkit.org/show_bug.cgi?id=222111

Reviewed by Simon Fraser.

Clean up the APIs exposed by ScrollableArea and ScrollAnimator to make them more
consistent. With this change it should be a bit easier to tell if a particular
method will trigger an animation or not. In addition, we accept positions (as
opposed to offsets) everywhere, which allows us to reduce the number of
offset <-> position conversions.

Finally, this change is also interesting for scroll snap, because it will
make it easier to use a native animation on MacOS to use for snapping after
scrollbar thumb dragging.

No new tests. This should not change behavior.

  • page/FrameView.cpp:

(WebCore::FrameView::setScrollPosition): Use new ScrollableArea APIs that
accept positions.
(WebCore::FrameView::scrollToPositionWithAnimation): Added this version
of the method that uses positions.
(WebCore::FrameView::scrollToOffsetWithAnimation): Deleted.

  • page/FrameView.h: Update method declaration.
  • platform/ScrollAnimator.cpp:

(WebCore::ScrollAnimator::scroll): Simplified a little bit the code that handles
scroll snapping here. Unified scroll snap and non-scroll snap compilation paths.
(WebCore::ScrollAnimator::scrollToOffsetWithoutAnimation): This method
now converts to a position and then calls scrollToPositionWithoutAnimation.
(WebCore::ScrollAnimator::scrollToPositionWithoutAnimation): Split this out
from scrollToOffsetWithoutAnimation.
(WebCore::ScrollAnimator::scrollToOffsetWithAnimation): This method now
converts to a position and calls scrollToPositionWithAnimation.
(WebCore::ScrollAnimator::scrollToPositionWithAnimation): Split this
out from scrollToOffsetWithAnimation.
(WebCore::ScrollAnimator::handleWheelEvent): Call scrollToPositionWithAnimation
instead of using the scroll(...) method.
(WebCore::ScrollAnimator::notifyPositionChanged): Eliminate a conversion here.
(WebCore::ScrollAnimator::scrollWithoutAnimation): Deleted.
(WebCore::ScrollAnimator::scrollToOffset): Deleted.

  • platform/ScrollAnimator.h: Update method list.
  • platform/ScrollView.cpp:

(WebCore::ScrollView::updateScrollbars): Eliminate a conversion here.

  • platform/ScrollableArea.cpp:

Removed scrollToOffsetWithAnimation and added two new methods scrollToPositionWithAnimation
and scrollToPositionWithoutAnimation. scrollToOffsetWithoutAnimation is still used
in quite a few places, so we maintain this.
(WebCore::ScrollableArea::setScrollOffsetFromInternals): Use setScrollPositionFromAnimation now.
(WebCore::ScrollableArea::setScrollPositionFromAnimation): Renamed from setScrollOffsetFromAnimation
and eliminated a mandatory cnoversion.
(WebCore::ScrollableArea::scrollToOffsetWithAnimation): Deleted.
(WebCore::ScrollableArea::setScrollOffsetFromAnimation): Deleted.

  • platform/ScrollableArea.h: Update method declarations.
  • platform/mac/ScrollAnimatorMac.h: Ditto.
  • platform/mac/ScrollAnimatorMac.mm:

(WebCore::ScrollAnimatorMac::scroll): Handle calling into scrollToPositionWithoutAnimation
and scrollToPositionWithAnimation ourselves now that we have this API. This simplifies
program flow a bit.
(WebCore::ScrollAnimatorMac::scrollToPositionWithAnimation):
(WebCore::ScrollAnimatorMac::scrollToPositionWithoutAnimation): Expose these two new
methods which are part of the base class API now.
(WebCore::ScrollAnimatorMac::immediateScrollToPositionForScrollAnimation): Use
ScrollAnimator::scrollToPositionWithoutAnimation because it was the same as
immediateScrollToPosition.
(WebCore::ScrollAnimatorMac::scrollToOffsetWithoutAnimation): Deleted.
(WebCore::ScrollAnimatorMac::immediateScrollToPosition): Deleted. No longer used.

  • rendering/RenderLayerScrollableArea.cpp:

(WebCore::RenderLayerScrollableArea::scrollToOffset): Unconditionally convert to a position
here.
(WebCore::RenderLayerScrollableArea::updateScrollInfoAfterLayout): Use ScrollableArea::scrollToPositionWithoutAnimation
because it eliminates one conversion between units.

1:38 PM Changeset in webkit [273274] by Russell Epstein
  • 1 copy in branches/safari-611.1.18.1-branch

New branch.

1:38 PM Changeset in webkit [273273] by Russell Epstein
  • 1 copy in branches/safari-611.1.18.0-branch

New branch.

1:09 PM Changeset in webkit [273272] by Peng Liu
  • 2 edits in trunk/Source/WebCore

Video elements do not work as sources for TexImage2D calls in GPU Process
https://bugs.webkit.org/show_bug.cgi?id=218184

Reviewed by Eric Carlson.

A follow-up patch of r273213 to fix build failures on the windows port.

  • platform/graphics/MediaPlayer.h:
1:08 PM Changeset in webkit [273271] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[macOS] Crash under AuxiliaryProcess::initializeSandbox
https://bugs.webkit.org/show_bug.cgi?id=222233
<rdar://problem/74261611>

Reviewed by Brent Fulgham.

When a WebKit client provides a user directory suffix in the process initialization parameters, confstr with the new
user suffix applied will fail to create the full directory path if it does not exist, and return an empty result.
This will lead to empty paths in the sandbox parameters, which will cause the sandbox to fail to compile, which will
eventually crash the WebKit process. This patch addresses this by making sure the new user directory suffix does not
represent a path, since confstr is not able to handle user directory suffixes containing paths that do not exist.
Additionally, this patch reverts r271417, which was the first attempt at fixing this crash, but was unsuccessful in
doing so.

  • Shared/mac/AuxiliaryProcessMac.mm:

(WebKit::initializeSandboxParameters):
(WebKit::AuxiliaryProcess::initializeSandbox):

12:58 PM Changeset in webkit [273270] by pvollan@apple.com
  • 4 edits in trunk/Source

[macOS] Disabling relaunch on login for the WebContent process is racy
https://bugs.webkit.org/show_bug.cgi?id=222074
<rdar://problem/74230216>

Reviewed by Geoffrey Garen.

Source/WebCore/PAL:

Declare Launch Services key to disable relaunch on login.

  • pal/spi/cocoa/LaunchServicesSPI.h:

Source/WebKit:

When NSApplication is being intialized, the method -[NSApplication disableRelaunchOnLogin] is dispatched on a non-main thread, which is in a race
with the revocation of the Launch Services sandbox extension. This patch addresses this by setting this information synchronously with Launch
Services while the sandbox extension is being held. Additionally, accessibility related code under WebPage::platformInitialize may reach out to
the Launch Services daemon once during the lifetime of the WebContent process. Make sure that call succeeds by making a synchronous call while
a sandbox extension to the Launch Services daemon is being held.

  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::platformInitializeWebProcess):

12:15 PM Changeset in webkit [273269] by keith_miller@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Remove unused internal fields from AbstractModuleLoader
https://bugs.webkit.org/show_bug.cgi?id=222256

Reviewed by Saam Barati.

  • runtime/AbstractModuleRecord.h:

(JSC::AbstractModuleRecord::initialValues):

12:12 PM Changeset in webkit [273268] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

Run Python tests for Source/WebKit/Scripts changes in EWS
https://bugs.webkit.org/show_bug.cgi?id=222276

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

  • CISupport/ews-build/steps.py:
11:58 AM Changeset in webkit [273267] by Jonathan Bedard
  • 4 edits in trunk/Tools

[git-webkit] Failure to retrieve commit in EWS
https://bugs.webkit.org/show_bug.cgi?id=222050
<rdar://problem/74439957>

Reviewed by Aakash Jain.

  • CISupport/ews-build/loadConfig.py:

(loadBuilderConfig): Load GitHub credentials.

  • CISupport/ews-build/steps.py:

(ShowIdentifier.start): Pass GitHub credentials to worker.

  • CISupport/ews-build/steps_unittest.py:
11:55 AM Changeset in webkit [273266] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

REGRESSION(r273204): webkitpy tests don't run on Py3
https://bugs.webkit.org/show_bug.cgi?id=222274

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

This doesn't make them pass, but it does get them back to running to completion.

  • Scripts/webkit/messages.py: avoid using a relative import
11:44 AM Changeset in webkit [273265] by eric.carlson@apple.com
  • 2 edits in trunk/Source/WebKit

UserMediaPermissionRequestManagerProxy may be released while computing capture device list
https://bugs.webkit.org/show_bug.cgi?id=222236
<rdar://74480265>

Reviewed by Youenn Fablet.

  • UIProcess/UserMediaPermissionRequestManagerProxy.cpp:

(WebKit::UserMediaPermissionRequestManagerProxy::computeFilteredDeviceList): Return early
if weakThis is NULL.

11:12 AM Changeset in webkit [273264] by svillar@igalia.com
  • 5 edits
    1 add in trunk

REGRESSION (r266695): twitch.tv: when in fullscreen, WebKit continually does 350ms layouts. Firefox and Chrome do not
https://bugs.webkit.org/show_bug.cgi?id=222202
<rdar://problem/74537782>

Reviewed by Simon Fraser.

PerformanceTests:

New performance test for nested column flexboxes with percentage heights.

  • Layout/nested-column-flexboxes-relative-height.html: Added.

Source/WebCore:

The problem was that we were doing the initial layout for the children of the flex container twice in those cases where
the child inline axis was not the main axis (for example with column flex containers in horizontal writing modes).
Refactored the code (specially the way we clear overriding sizes) so that we only do it once. This saves tons of layouts
in pages with nested column flexboxes with relative heights.

No new tests as there is no change in functionality, we're removing duplicate extra layouts. We're however adding a new
performance test for column flexboxes with percentage heights. With this patch we go from 3.5 layout/s to 145 layout/s
which is ~4000% better.

Inspired by Blink's crrev.com/c/1614058 by <cbiesinger@chromium.org>.

  • rendering/RenderFlexibleBox.cpp:

(WebCore::RenderFlexibleBox::computeInnerFlexBaseSizeForChild): Do not unconditionally clear overriding sizes. Also removed
relayoutChildren which is now unused. Do not layout the item, that should have been done in
computeInnerFlexBaseSizeForChild() before. Added ASSERTs to verify that child's intrinsic main size was cached as
a consequence of the previous layout.
(WebCore::RenderFlexibleBox::constructFlexItem): Do not pass relayoutChildren to computeInnerFlexBaseSizeForChild. Also no
need to update it after laying out the child.

  • rendering/RenderFlexibleBox.h:
10:56 AM Changeset in webkit [273263] by achristensen@apple.com
  • 4 edits in trunk

Disable RangeResponseGenerator.
https://bugs.webkit.org/show_bug.cgi?id=221072
<rdar://problem/74551753>

Source/WebCore:

  • platform/network/cocoa/RangeResponseGenerator.mm:

(WebCore::RangeResponseGenerator::willSynthesizeRangeResponses):

Tools:

It might be causing issues. Disabling to speculatively fix the radar.

  • TestWebKitAPI/Tests/WebKitCocoa/MediaLoading.mm:

(TestWebKitAPI::TEST):

10:46 AM Changeset in webkit [273262] by Antti Koivisto
  • 2 edits in trunk/Source/WebCore

[LFC][Integration] Respect hasLineIfEmpty
https://bugs.webkit.org/show_bug.cgi?id=222269

Reviewed by Zalan Bujtas.

In certain editing cases a block is computed to have height of a line even if it has no content.

This fixes editing/execCommand/extracted_style_assert.html

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutModernLines):

10:40 AM Changeset in webkit [273261] by Ryan Haddad
  • 6 edits in trunk/LayoutTests/imported/w3c

Implement the Top-level await proposal
https://bugs.webkit.org/show_bug.cgi?id=202484

Unreviewed test gardening.

  • web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-4-tla-expected.txt:
  • web-platform-tests/html/webappapis/dynamic-markup-insertion/document-write/module-tla-delayed-expected.txt:
  • web-platform-tests/html/webappapis/dynamic-markup-insertion/document-write/module-tla-immediate-promise-expected.txt:
  • web-platform-tests/html/webappapis/dynamic-markup-insertion/document-write/module-tla-import-expected.txt:
  • web-platform-tests/html/webappapis/dynamic-markup-insertion/document-write/module-tla-promise-expected.txt:
9:55 AM Changeset in webkit [273260] by Alan Coon
  • 2 edits in branches/safari-611-branch/Source/WebKit

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

ASSERTION FAILED: !size.isEmpty() under platformInitializeWebProcess

  • WebProcess/cocoa/WebProcessCocoa.mm: (WebKit::WebProcess::platformInitializeWebProcess): Follow-up to r272335; don't call IOSurface::setMaximumSize if the UI process did not send us a size. Caused all Web Content processes to assert in debug on launch.

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

9:55 AM Changeset in webkit [273259] by Alan Coon
  • 2 edits in branches/safari-611-branch/Source/JavaScriptCore

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

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

Reviewed by Tadeu Zagallo.

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

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

9:55 AM Changeset in webkit [273258] by Alan Coon
  • 2 edits in branches/safari-611-branch/Source/JavaScriptCore

Cherry-pick r270719. rdar://problem/74409412

REGRESSION (r270665): testapi failing on JSC bots
https://bugs.webkit.org/show_bug.cgi?id=219787

Reviewed by Saam Barati.

  • API/JSValueRef.cpp: (JSValueIsString): (JSValueIsObject): (JSValueIsSymbol):

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

9:55 AM Changeset in webkit [273257] by Alan Coon
  • 2 edits in branches/safari-611-branch/Source/JavaScriptCore

Cherry-pick r270700. rdar://problem/74409412

REGRESSION (r270665): testapi failing on CLoop bot
https://bugs.webkit.org/show_bug.cgi?id=219787

Reviewed by Mark Lam.

The API has to special case the empty JSValue as null.

  • API/JSValueRef.cpp: (JSValueGetType): (JSValueIsNull):

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

9:55 AM Changeset in webkit [273256] by Alan Coon
  • 6 edits in branches/safari-611-branch

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

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

Reviewed by Filip Pizlo.

PerformanceTests:

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

  • APIBench/api-bench:

Source/JavaScriptCore:

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

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

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

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

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

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

9:55 AM Changeset in webkit [273255] by Alan Coon
  • 7 edits in branches/safari-611-branch

Cherry-pick r272626. rdar://problem/74410222

Descendants of row and column headers should expose the aria-sort attribute.
https://bugs.webkit.org/show_bug.cgi?id=221590

Reviewed by Chris Fleizach.

Source/WebCore:

Tests:
accessibility/aria-sort.html
accessibility/ios-simulator/aria-sort-ios.html

Walk up the accessibility hierarchy to check for an inherited aria-sort
attribute present in a row or column header ancestor.

  • accessibility/AccessibilityObject.cpp: (WebCore::AccessibilityObject::sortDirection const):

LayoutTests:

Expanded this test to include the case where the header contains a child
element that must also expose the aria-sort attribute inherited from its
parent.

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

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

9:55 AM Changeset in webkit [273254] by Alan Coon
  • 28 edits in branches/safari-611-branch

Cherry-pick r272165. rdar://problem/74032536

Use user media permission prompt for speech recognition
https://bugs.webkit.org/show_bug.cgi?id=221082
rdar://problem/73372499

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

Source/WebCore:

Add frame identifier to SpeechRecognitionRequest as it is needed for checking user media permission.

Updated existing tests for changed behavior.

  • Modules/speech/SpeechRecognition.cpp: (WebCore::SpeechRecognition::startRecognition):
  • Modules/speech/SpeechRecognitionConnection.h:
  • Modules/speech/SpeechRecognitionRequest.h: (WebCore::SpeechRecognitionRequest::frameIdentifier const):
  • Modules/speech/SpeechRecognitionRequestInfo.h: (WebCore::SpeechRecognitionRequestInfo::encode const): (WebCore::SpeechRecognitionRequestInfo::decode):
  • page/DummySpeechRecognitionProvider.h:

Source/WebKit:

Make SpeechRecognitionPermissionManager ask UserMediaPermissionRequestManagerProxy for user permission on
microphone.

  • UIProcess/SpeechRecognitionPermissionManager.cpp: (WebKit::SpeechRecognitionPermissionManager::request): (WebKit::SpeechRecognitionPermissionManager::startProcessingRequest): (WebKit::SpeechRecognitionPermissionManager::requestUserPermission):
  • UIProcess/SpeechRecognitionPermissionManager.h:
  • UIProcess/SpeechRecognitionPermissionRequest.h: (WebKit::SpeechRecognitionPermissionRequest::create): (WebKit::SpeechRecognitionPermissionRequest::frameIdentifier const): (WebKit::SpeechRecognitionPermissionRequest::SpeechRecognitionPermissionRequest):
  • UIProcess/SpeechRecognitionServer.cpp: (WebKit::SpeechRecognitionServer::start): (WebKit::SpeechRecognitionServer::requestPermissionForRequest):
  • UIProcess/SpeechRecognitionServer.h:
  • UIProcess/SpeechRecognitionServer.messages.in:
  • UIProcess/UserMediaPermissionRequestManagerProxy.cpp: (WebKit::UserMediaPermissionRequestManagerProxy::denyRequest): (WebKit::UserMediaPermissionRequestManagerProxy::grantRequest): (WebKit::UserMediaPermissionRequestManagerProxy::checkUserMediaPermissionForSpeechRecognition):
  • UIProcess/UserMediaPermissionRequestManagerProxy.h:
  • UIProcess/UserMediaPermissionRequestProxy.cpp: (WebKit::UserMediaPermissionRequestProxy::UserMediaPermissionRequestProxy):
  • UIProcess/UserMediaPermissionRequestProxy.h: (WebKit::UserMediaPermissionRequestProxy::create): (WebKit::UserMediaPermissionRequestProxy::decisionCompletionHandler):
  • UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::requestSpeechRecognitionPermission): (WebKit::WebPageProxy::requestUserMediaPermissionForSpeechRecognition):
  • UIProcess/WebPageProxy.h:
  • UIProcess/WebProcessProxy.cpp: (WebKit::WebProcessProxy::createSpeechRecognitionServer):
  • WebProcess/WebCoreSupport/WebSpeechRecognitionConnection.cpp: (WebKit::WebSpeechRecognitionConnection::start):
  • WebProcess/WebCoreSupport/WebSpeechRecognitionConnection.h:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/SpeechRecognition.mm: (-[SpeechRecognitionUIDelegate _webView:requestMediaCaptureAuthorization:decisionHandler:]):

LayoutTests:

  • fast/speechrecognition/permission-error.html:
  • fast/speechrecognition/start-recognition-in-removed-iframe-expected.txt:
  • fast/speechrecognition/start-recognition-in-removed-iframe.html:

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

9:54 AM Changeset in webkit [273253] by Alan Coon
  • 12 edits in branches/safari-611-branch

Cherry-pick r271636. rdar://problem/74452635

Update media state for active speech recognition as it uses audio capture
https://bugs.webkit.org/show_bug.cgi?id=220667

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

Source/WebCore:

To make sure the media capture state is correctly sent to client.

API test: WebKit2.SpeechRecognitionMediaCaptureStateChange

  • Modules/speech/SpeechRecognition.cpp: (WebCore::SpeechRecognition::startRecognition): (WebCore::SpeechRecognition::stop): (WebCore::SpeechRecognition::didStartCapturingAudio): (WebCore::SpeechRecognition::didStopCapturingAudio):
  • Modules/speech/SpeechRecognition.h:
  • Modules/speech/SpeechRecognitionConnection.h:
  • dom/Document.cpp: (WebCore::Document::setActiveSpeechRecognition): (WebCore::Document::updateIsPlayingMedia):
  • dom/Document.h:
  • page/DummySpeechRecognitionProvider.h:

Source/WebKit:

  • WebProcess/WebCoreSupport/WebSpeechRecognitionConnection.cpp: (WebKit::WebSpeechRecognitionConnection::unregisterClient):
  • WebProcess/WebCoreSupport/WebSpeechRecognitionConnection.h:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/SpeechRecognition.mm: (-[SpeechRecognitionUIDelegate _webView:mediaCaptureStateDidChange:]): (TestWebKitAPI::TEST): (-[SpeechRecognitionPermissionUIDelegate _webView:requestSpeechRecognitionPermissionForOrigin:decisionHandler:]): Deleted. (-[SpeechRecognitionPermissionUIDelegate _webView:requestMediaCaptureAuthorization:decisionHandler:]): Deleted. (-[SpeechRecognitionPermissionUIDelegate _webView:checkUserMediaPermissionForURL:mainFrameURL:frameIdentifier:decisionHandler:]): Deleted. (-[SpeechRecognitionPermissionUIDelegate webView:createWebViewWithConfiguration:forNavigationAction:windowFeatures:]): Deleted.

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

9:54 AM Changeset in webkit [273252] by Alan Coon
  • 23 edits
    2 adds in branches/safari-611-branch

Cherry-pick r272490. rdar://problem/74409784

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

Reviewed by Chris Fleizach.

Source/WebCore:

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

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

  • accessibility/AXLogger.cpp: (WebCore::operator<<): Logging of the new notification.
  • accessibility/AXObjectCache.cpp: Handles the aria-sort change notification. Updates the isolated tree. (WebCore::AXObjectCache::handleAttributeChange): (WebCore::AXObjectCache::updateIsolatedTree):
  • accessibility/AXObjectCache.h:
  • accessibility/ios/AXObjectCacheIOS.mm: (WebCore::AXObjectCache::notificationPlatformName): Helper to map AXCore notifications to platform notifications. (WebCore::AXObjectCache::postPlatformNotification): Handles the AXSortDirectionChanged notification. Some code cleanup using the notificationPlatformName helper.
  • accessibility/ios/WebAccessibilityObjectWrapperIOS.h:
  • accessibility/ios/WebAccessibilityObjectWrapperIOS.mm: (-[WebAccessibilityObjectWrapper postNotification:]): To be overridden by system AX bundles. (-[WebAccessibilityObjectWrapper accessibilitySortDirection]): Only ascending and descending sort directions are relevant for clients.
  • accessibility/isolatedtree/AXIsolatedTree.cpp: (WebCore::AXIsolatedTree::updateNodeProperty): Updates the SortDirection property.
  • accessibility/mac/AXObjectCacheMac.mm: (WebCore::AXObjectCache::postPlatformNotification): Handles the AXSortDirectionChanged notification.

Tools:

  • WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp: (WTR::AccessibilityUIElement::sortDirection const):
  • WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:
  • WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl:
  • WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm: (WTR::AccessibilityUIElement::sortDirection const):
  • WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm: (WTR::AccessibilityUIElement::currentStateValue const): (WTR::AccessibilityUIElement::sortDirection const):

LayoutTests:

  • accessibility/aria-sort-changed-notification-expected.txt: Added.
  • accessibility/aria-sort-changed-notification.html: Added.
  • accessibility/aria-sort-expected.txt:
  • accessibility/aria-sort.html: Calls sortDirection property on the JS accessible element instead of retrieving the aria-sort attribute. This matches more accurately what an actual client would do. Changed the expected file accordingly.
  • accessibility/ios-simulator/aria-sort-ios-expected.txt:
  • accessibility/ios-simulator/aria-sort-ios.html: Same as in the Mac test above.
  • platform/ios/TestExpectations: Added the new test to be run on the ios-simulator.

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

9:54 AM Changeset in webkit [273251] by Alan Coon
  • 14 edits in branches/safari-611-branch

Cherry-pick r271381. rdar://problem/74451875

Make SpeechRecognition permission error more informative
https://bugs.webkit.org/show_bug.cgi?id=220436

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

Source/WebKit:

Make SpeechRecognitionPermissionManager complete requests with an optional SpeechRecognitionError instead of a
boolean value.

  • UIProcess/SpeechRecognitionPermissionManager.cpp: (WebKit::SpeechRecognitionPermissionManager::~SpeechRecognitionPermissionManager): (WebKit::SpeechRecognitionPermissionManager::request): (WebKit::SpeechRecognitionPermissionManager::startProcessingRequest): (WebKit::SpeechRecognitionPermissionManager::continueProcessingRequest): (WebKit::SpeechRecognitionPermissionManager::completeCurrentRequest): (WebKit::SpeechRecognitionPermissionManager::requestSpeechRecognitionServiceAccess): (WebKit::SpeechRecognitionPermissionManager::requestMicrophoneAccess): (WebKit::SpeechRecognitionPermissionManager::requestUserPermission):
  • UIProcess/SpeechRecognitionPermissionManager.h:
  • UIProcess/SpeechRecognitionPermissionRequest.h: (WebKit::SpeechRecognitionPermissionRequest::create): (WebKit::SpeechRecognitionPermissionRequest::complete): (WebKit::SpeechRecognitionPermissionRequest::SpeechRecognitionPermissionRequest):
  • UIProcess/SpeechRecognitionServer.cpp: (WebKit::SpeechRecognitionServer::requestPermissionForRequest):
  • UIProcess/SpeechRecognitionServer.h:
  • UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::requestSpeechRecognitionPermission):
  • UIProcess/WebPageProxy.h:
  • UIProcess/WebProcessProxy.cpp: (WebKit::WebProcessProxy::createSpeechRecognitionServer):

Tools:

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

LayoutTests:

  • fast/speechrecognition/permission-error-expected.txt:
  • fast/speechrecognition/permission-error.html:

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

9:54 AM Changeset in webkit [273250] by Alan Coon
  • 22 edits
    2 adds in branches/safari-611-branch

Cherry-pick r272067. rdar://problem/74444347

Support for aria-current state changed notifications.
https://bugs.webkit.org/show_bug.cgi?id=221074

Reviewed by Chris Fleizach.

Source/WebCore:

Test: accessibility/aria-current-state-changed-notification.html

Added handling of the AXCurrentStateChanged notification for Mac and iOS
ports. This notification is fired when the aria-current attribute
changes.
Handling of this notification is required to properly update the
accessibility properties of the target object and convey them to
assistive technology clients.

  • accessibility/AXLogger.cpp: (WebCore::operator<<): Renamed notification anumerand.
  • accessibility/AXObjectCache.cpp: (WebCore::AXObjectCache::handleAttributeChange):
  • accessibility/AXObjectCache.h:
  • accessibility/atk/AXObjectCacheAtk.cpp: (WebCore::AXObjectCache::postPlatformNotification):
  • accessibility/ios/AXObjectCacheIOS.mm: (WebCore::AXObjectCache::postPlatformNotification):
  • accessibility/ios/WebAccessibilityObjectWrapperIOS.h:
  • accessibility/ios/WebAccessibilityObjectWrapperIOS.mm: (-[WebAccessibilityObjectWrapper accessibilityDOMIdentifier]): (-[WebAccessibilityObjectWrapper postCurrentStateChangedNotification]): (-[WebAccessibilityObjectWrapper accessibilityCurrentState]): (-[WebAccessibilityObjectWrapper accessibilityARIACurrentStatus]): Renamed to accessibilityCurrentState.
  • accessibility/mac/AXObjectCacheMac.mm: (WebCore::AXObjectCache::postPlatformNotification):

Tools:

Added AccessibilityUIElement::domIdentifier and currentStateValue used
in LayoutTests/accessibility/aria-current-state-changed-notification.html.

  • WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp: (WTR::AccessibilityUIElement::domIdentifier const): Non-Cocoa implementation. (WTR::AccessibilityUIElement::currentStateValue const): Non-Cocoa implementation.
  • WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:
  • WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl:
  • WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm: (WTR::AccessibilityUIElement::domIdentifier const): (WTR::AccessibilityUIElement::stringAttributeValue): (WTR::AccessibilityUIElement::currentStateValue const):
  • WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm: (WTR::AccessibilityUIElement::domIdentifier const): (WTR::AccessibilityUIElement::currentStateValue const):

LayoutTests:

  • accessibility/aria-current-state-changed-notification-expected.txt: Added.
  • accessibility/aria-current-state-changed-notification.html: Added.
  • accessibility/aria-current.html: Use AccessibilityUIElement::currentStateValue for consistency and to match closely how actual clients will invoke this functionality.
  • platform/gtk/TestExpectations:
  • platform/ios-wk1/TestExpectations:
  • platform/ios/TestExpectations:
  • platform/mac-wk1/TestExpectations:
  • platform/win/TestExpectations:

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

9:54 AM Changeset in webkit [273249] by Alan Coon
  • 10 edits in branches/safari-611-branch

Cherry-pick r272755. rdar://problem/74409916

Unreviewed, reverting r270578.
https://bugs.webkit.org/show_bug.cgi?id=221110

Caused incorrect image layout inside a flexbox container.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-flexbox/flex-aspect-ratio-img-row-013-expected.txt:
  • web-platform-tests/css/css-flexbox/image-as-flexitem-size-003-expected.txt:
  • web-platform-tests/css/css-flexbox/image-as-flexitem-size-003v-expected.txt:
  • web-platform-tests/css/css-flexbox/image-as-flexitem-size-004-expected.txt:
  • web-platform-tests/css/css-flexbox/image-as-flexitem-size-004v-expected.txt:

Source/WebCore:

  • rendering/RenderFlexibleBox.cpp: (WebCore::RenderFlexibleBox::computeMainSizeFromAspectRatioUsing const): (WebCore::RenderFlexibleBox::childCrossSizeIsDefinite const):

LayoutTests:

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

9:54 AM Changeset in webkit [273248] by Alan Coon
  • 5 edits
    2 adds in branches/safari-611-branch/Source/WebCore

Cherry-pick r272678. rdar://problem/74410058

WebCore::createBusFromInMemoryAudioFile() may crash under ExtAudioFileRead()
https://bugs.webkit.org/show_bug.cgi?id=221642
<rdar://72789841>

Reviewed by Geoffrey Garen.

The crash seems to indicate we are passing an AudioBufferList to ExtAudioFileRead()
that contains a null buffer. It is not obvious how this is happening but I have made
the following changes:

  1. createAudioBufferList() / destroyAudioListBuffer() implementation is now shared on both macOS and iOS. The implementation now uses fastCalloc and returns null in case of failure to allocate.
  2. createAudioBufferList() was renamed to tryCreateAudioBufferList() to make it clear it can return null. All call sites now properly deal with tryCreateAudioBufferList() potentially return null
  3. Add a new validateAudioBufferList() function which makes sure that the AudioBufferList we are about to pass to ExtAudioFileRead() does not contain any null buffer. In case of validation failure, we log an error, generate a simulated crash log and early return gracefully instead of crashing later on.
  4. Added more assertions to help catch bugs.
  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/audio/cocoa/AudioFileReaderCocoa.cpp: Added. (WebCore::tryCreateAudioBufferList): (WebCore::destroyAudioBufferList): (WebCore::validateAudioBufferList):
  • platform/audio/cocoa/AudioFileReaderCocoa.h: Added.
  • platform/audio/ios/AudioFileReaderIOS.cpp: (WebCore::AudioFileReader::createBus): (WebCore::createAudioBufferList): Deleted. (WebCore::destroyAudioBufferList): Deleted.
  • platform/audio/mac/AudioFileReaderMac.cpp: (WebCore::AudioFileReader::createBus): (WebCore::createAudioBufferList): Deleted. (WebCore::destroyAudioBufferList): Deleted.

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

9:54 AM Changeset in webkit [273247] by Alan Coon
  • 2 edits in branches/safari-611-branch/Source/WTF

Cherry-pick r272621. rdar://problem/74410131

REGRESSION(r269017): Speedometer2 1% regression
https://bugs.webkit.org/show_bug.cgi?id=221640

Reviewed by Mark Lam.

Reverting r269017, r269478, and r272095 because of Speedometer2 ~1% regression.

  • wtf/HashTable.h: (WTF::KeyTraits>::inlineLookup): (WTF::KeyTraits>::lookupForWriting): (WTF::KeyTraits>::fullLookupForWriting): (WTF::KeyTraits>::addUniqueForInitialization): (WTF::KeyTraits>::add):
  • wtf/HashTraits.h:
  • wtf/MetaAllocator.cpp: (WTF::MetaAllocator::addFreeSpace):
  • wtf/MetaAllocator.h:

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

9:54 AM Changeset in webkit [273246] by Alan Coon
  • 8 edits
    3 adds in branches/safari-611-branch

Cherry-pick r272504. rdar://problem/74409474

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

Reviewed by Eric Carlson.

Source/WebCore:

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

Covered by API test.

  • Headers.cmake:
  • Modules/mediastream/STUNMessageParsing.cpp: Added. (WebCore::isStunMessage): (WebCore::getSTUNOrTURNMessageLengths): (WebCore::extractSTUNOrTURNMessages): (WebCore::extractDataMessages): (WebCore::extractMessages):
  • Modules/mediastream/STUNMessageParsing.h: Added.
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:

Source/WebKit:

  • NetworkProcess/webrtc/NetworkRTCSocketCocoa.mm: Make use of WebCore method.

Tools:

  • TestWebKitAPI/Tests/WebCore/STUNMessageParsingTest.cpp: Added. (TestWebKitAPI::TEST):
  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:

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

9:53 AM Changeset in webkit [273245] by commit-queue@webkit.org
  • 5 edits
    18 adds in trunk/LayoutTests

Resync web-platform-tests/css/css-sizing/aspect-ratio from upstream
https://bugs.webkit.org/show_bug.cgi?id=222266

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

LayoutTests/imported/w3c:

Resync web-platform-tests/css/css-sizing/aspect-ratio from upstream 9b505f9fc3.

  • web-platform-tests/css/css-sizing/aspect-ratio/grid-aspect-ratio-015-expected.xht: Added.
  • web-platform-tests/css/css-sizing/aspect-ratio/grid-aspect-ratio-015.html: Added.
  • web-platform-tests/css/css-sizing/aspect-ratio/grid-aspect-ratio-016-expected.xht: Added.
  • web-platform-tests/css/css-sizing/aspect-ratio/grid-aspect-ratio-016.html: Added.
  • web-platform-tests/css/css-sizing/aspect-ratio/grid-aspect-ratio-017-expected.xht: Added.
  • web-platform-tests/css/css-sizing/aspect-ratio/grid-aspect-ratio-017.html: Added.
  • web-platform-tests/css/css-sizing/aspect-ratio/intrinsic-size-012-expected.xht: Added.
  • web-platform-tests/css/css-sizing/aspect-ratio/intrinsic-size-012.html: Added.
  • web-platform-tests/css/css-sizing/aspect-ratio/intrinsic-size-013-expected.xht: Added.
  • web-platform-tests/css/css-sizing/aspect-ratio/intrinsic-size-013.html: Added.
  • web-platform-tests/css/css-sizing/aspect-ratio/intrinsic-size-014-expected.xht: Added.
  • web-platform-tests/css/css-sizing/aspect-ratio/intrinsic-size-014.html: Added.
  • web-platform-tests/css/css-sizing/aspect-ratio/intrinsic-size-015-expected.xht: Added.
  • web-platform-tests/css/css-sizing/aspect-ratio/intrinsic-size-015.html: Added.
  • web-platform-tests/css/css-sizing/aspect-ratio/intrinsic-size-016-expected.xht: Added.
  • web-platform-tests/css/css-sizing/aspect-ratio/intrinsic-size-016.html: Added.
  • web-platform-tests/css/css-sizing/aspect-ratio/parsing/w3c-import.log:
  • web-platform-tests/css/css-sizing/aspect-ratio/replaced-element-033-expected.xht: Added.
  • web-platform-tests/css/css-sizing/aspect-ratio/replaced-element-033.html: Added.
  • web-platform-tests/css/css-sizing/aspect-ratio/w3c-import.log:

LayoutTests:

Adapt platform test expectations.

9:52 AM Changeset in webkit [273244] by weinig@apple.com
  • 9 edits
    2 adds in trunk

Add experimental support for CSS Color 5 color-mix()
https://bugs.webkit.org/show_bug.cgi?id=222258

Reviewed by Antti Koivisto.

Source/WebCore:

Adds initial support for CSS Color 5 color-mix() - https://drafts.csswg.org/css-color-5/#color-mix

This feature is off by default and can be enabled via the CSSColorMixEnabled
experimental preference flag.

This implementation has the same restriction on it that the recently landed
Relative Color Syntax does in that it does support system colors or currentColor
as input, since those can't be resolved at parse time. Ultimately, we will need
to add a late binding version of this for those cases.

Test: fast/css/parsing-color-mix.html

  • css/CSSValueKeywords.in:

Add new keywords needed for color-mix().

  • css/parser/CSSParserContext.cpp:

(WebCore::operator==):

  • css/parser/CSSParserContext.h:

(WebCore::CSSParserContextHash::hash):
Add new setting for color-mix().

  • css/parser/CSSPropertyParserHelpers.cpp:

(WebCore::CSSPropertyParserHelpers::HueColorAdjuster::fixupAnglesForInterpolation):
(WebCore::CSSPropertyParserHelpers::HueColorAdjuster::HueColorAdjuster):
(WebCore::CSSPropertyParserHelpers::ColorAdjuster::ColorAdjuster):
(WebCore::CSSPropertyParserHelpers::consumeAdjuster):
(WebCore::CSSPropertyParserHelpers::consumeAndUpdateAdjusterAtIndex):
(WebCore::CSSPropertyParserHelpers::consumeAndUpdateAdjuster):
(WebCore::CSSPropertyParserHelpers::consumeAdjusters):
(WebCore::CSSPropertyParserHelpers::consumeMixComponents):
(WebCore::CSSPropertyParserHelpers::normalizeAdjusterValues):
(WebCore::CSSPropertyParserHelpers::remainingAdjustment):
(WebCore::CSSPropertyParserHelpers::mixComponent):
(WebCore::CSSPropertyParserHelpers::mixComponentAtIndex):
(WebCore::CSSPropertyParserHelpers::makeColorTypeByNormalizingComponentsAfterMix):
(WebCore::CSSPropertyParserHelpers::makeColorTypeByNormalizingComponentsAfterMix<HWBA<float>>):
(WebCore::CSSPropertyParserHelpers::mix):
(WebCore::CSSPropertyParserHelpers::parseColorMixFunctionParametersUsingAdjusters):
(WebCore::CSSPropertyParserHelpers::parseColorMixFunctionParameters):
(WebCore::CSSPropertyParserHelpers::parseColorFunction):
The implementation uses a templatized ColorAdjuster struct to declartively map the
various mixing color spaces to their allowed adjusters and what type those adjusters
operate on (either double or the hue specific HueColorAdjuster). For example, for
LCHA we have:

using LCHColorAdjuster = ColorAdjuster<LCHA<float>, CSSValueLightness, double, CSSValueChroma, HueColorAdjuster, CSSValueHue, double, CSSValueAlpha, double>;

which indicates:

  • it creates a LCHA<float> and will operate on LCHA<float> values
  • its first channel is called "lightness" and is a double
  • its second channel is called "chroma" and is a double
  • its third channel is called "hue" and is a HueColorAdjuster
  • its fourth channel is called "alpha" and is a double

This data is then used by the parsing and mixing functions to implement mixing without
having to write specific implementations for each mixing color space and can be expanded
to more spaces if needed.

  • platform/graphics/Color.h:

(WebCore::Color::Color):
Add new overloaded constructor for a generic Optional<ColorType<float>> which parallels the existing
Optional<SRGBA<uint8_t>> allowing callers to convert WTF::nullopt to an invalid Color without checking
for nullopt themselves.

Source/WTF:

  • Scripts/Preferences/WebPreferencesExperimental.yaml:

Add new experimental preference for CSS Color 5 color-mix()
which is off by default.

LayoutTests:

  • fast/css/parsing-color-mix-expected.txt: Added.
  • fast/css/parsing-color-mix.html: Added.

Add parsing and computed style computation tests for color-mix().

9:33 AM Changeset in webkit [273243] by weinig@apple.com
  • 10 edits
    2 copies
    2 moves
    14 adds
    4 deletes in trunk/LayoutTests

Update web-platform-tests/css/css-color
https://bugs.webkit.org/show_bug.cgi?id=222235

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

Update to latest version.

  • resources/import-expectations.json:
  • web-platform-tests/css/css-color/background-color-hsl-001-expected.html: Added.
  • web-platform-tests/css/css-color/background-color-hsl-001.html: Added.
  • web-platform-tests/css/css-color/background-color-hsl-002-expected.html: Added.
  • web-platform-tests/css/css-color/background-color-hsl-002.html: Added.
  • web-platform-tests/css/css-color/background-color-hsl-003-expected.html: Added.
  • web-platform-tests/css/css-color/background-color-hsl-003.html: Added.
  • web-platform-tests/css/css-color/background-color-hsl-004-expected.html: Added.
  • web-platform-tests/css/css-color/background-color-hsl-004.html: Added.
  • web-platform-tests/css/css-color/background-color-rgb-001-expected.html: Added.
  • web-platform-tests/css/css-color/background-color-rgb-001.html: Added.
  • web-platform-tests/css/css-color/background-color-rgb-002-expected.html: Added.
  • web-platform-tests/css/css-color/background-color-rgb-002.html: Added.
  • web-platform-tests/css/css-color/background-color-rgb-003-expected.html: Added.
  • web-platform-tests/css/css-color/background-color-rgb-003.html: Added.
  • web-platform-tests/css/css-color/lab-008-expected.html:
  • web-platform-tests/css/css-color/lab-008.html:
  • web-platform-tests/css/css-color/lch-008-expected.html:
  • web-platform-tests/css/css-color/lch-008.html:
  • web-platform-tests/css/css-color/predefined-003-expected.html: Removed.
  • web-platform-tests/css/css-color/predefined-003.html: Removed.
  • web-platform-tests/css/css-color/predefined-004-expected.html: Removed.
  • web-platform-tests/css/css-color/predefined-004.html: Removed.
  • web-platform-tests/css/css-color/predefined-017-expected.html: Removed.
  • web-platform-tests/css/css-color/predefined-017.html: Removed.
  • web-platform-tests/css/css-color/prophoto-rgb-005-expected.html: Added.
  • web-platform-tests/css/css-color/prophoto-rgb-005.html: Added.
  • web-platform-tests/css/css-color/rec2020-001.html:
  • web-platform-tests/css/css-color/rec2020-005-expected.html: Added.
  • web-platform-tests/css/css-color/rec2020-005.html: Added.
  • web-platform-tests/css/css-color/w3c-import.log:

LayoutTests:

Remove some tests that were removed on updating.

9:13 AM Changeset in webkit [273242] by svillar@igalia.com
  • 3 edits in trunk/Source/WebCore

[css-flex] Refactoring of code retrieving main/cross size lengths from children
https://bugs.webkit.org/show_bug.cgi?id=222175

Reviewed by Darin Adler.

Added a couple of new private methods which retrieve the main and cross size lengths of children
as it's used everywhere.

No new tests as there is no change in functionality, just a code refactoring.

  • rendering/RenderFlexibleBox.cpp:

(WebCore::RenderFlexibleBox::shouldApplyMinSizeAutoForChild const):
(WebCore::RenderFlexibleBox::flexBasisForChild const):
(WebCore::RenderFlexibleBox::crossSizeLengthForChild const): New method.
(WebCore::RenderFlexibleBox::mainSizeLengthForChild const): Ditto.
(WebCore::RenderFlexibleBox::useChildAspectRatio const):
(WebCore::RenderFlexibleBox::computeInnerFlexBaseSizeForChild):
(WebCore::RenderFlexibleBox::adjustChildSizeForMinAndMax):
(WebCore::RenderFlexibleBox::adjustChildSizeForAspectRatioCrossAxisMinAndMax):
(WebCore::RenderFlexibleBox::childHasIntrinsicMainAxisSize const):

  • rendering/RenderFlexibleBox.h:
7:30 AM Changeset in webkit [273241] by Antti Koivisto
  • 5 edits in trunk/Source/WebCore

[LFC][Integration] Switch out if large trees are being invalidated
https://bugs.webkit.org/show_bug.cgi?id=222264

Reviewed by Zalan Bujtas.

We don't support partial invalidation yet. To avoid hitting bad O(n2) cases limit the maximum tree size on invalidation.

Prevents editing/selection/move-by-character-brute-force.html, fast/innerHTML/identical-mutations.html and fast/text/emoji-num-glyphs.html
from timing out in debug.

  • layout/integration/LayoutIntegrationBoxTree.h:

(WebCore::LayoutIntegration::BoxTree::boxCount const):

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::shouldSwitchToLegacyOnInvalidation const):

  • layout/integration/LayoutIntegrationLineLayout.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::invalidateLineLayoutPath):

4:27 AM Changeset in webkit [273240] by Philippe Normand
  • 5 edits
    2 adds in trunk/Tools

[Flatpak SDK] gdb unusable in sandbox
https://bugs.webkit.org/show_bug.cgi?id=222247

Reviewed by Žan Doberšek.

This patch adds support for unix signals disabling in developer builds, for the Flatpak SDK
runtime. Currently SIGINT, SIGHUP and SIGTERM will be ignored by the flatpak and bwrap
processes when they're running gdb in the sandbox runtime. This allows for nicer interactive
debugging sessions where Ctrl-C is actually handled by gdb.

  • PlatformGTK.cmake:
  • PlatformWPE.cmake:
  • flatpak/CMakeLists.txt: Added.
  • flatpak/flatpakutils.py:

(nullcontext):
(disable_signals):
(WebkitFlatpak.execute_command):
(WebkitFlatpak.run_in_sandbox):

  • flatpak/sigaction-disabler.c: Added.

(real_sigaction):
(sigaction):

  • flatpak/webkit-bwrap:
4:24 AM Changeset in webkit [273239] by commit-queue@webkit.org
  • 4 edits
    2 adds in trunk/Tools

[Flatpak SDK] Add Monado for XR runtime support
https://bugs.webkit.org/show_bug.cgi?id=220738

Patch by Philippe Normand <pnormand@igalia.com> on 2021-02-22
Reviewed by Žan Doberšek.

Tools:

  • flatpak/flatpakutils.py:

(WebkitFlatpak.run_in_sandbox): Allow runtime XR environment setup in the sandbox through
the XR_RUNTIME_JSON variable.

Tools/buildstream:

  • elements/sdk-platform.bst:
  • elements/sdk/eigen.bst: Added.
  • elements/sdk/monado.bst: Added.
4:20 AM Changeset in webkit [273238] by Philippe Normand
  • 3 edits in trunk/Tools

[Flatpak SDK] X11 SSH forwarding fails
https://bugs.webkit.org/show_bug.cgi?id=222246

Reviewed by Žan Doberšek.

  • flatpak/flatpakutils.py:

(WebkitFlatpak.run_in_sandbox): Forward the DISPLAY env var to the sandbox.

  • flatpak/webkit-bwrap: Set the DISPLAY env var if it was set in the parent process.
3:39 AM Changeset in webkit [273237] by Chris Lord
  • 7 edits in trunk/Source/WebCore

Move FontCascadeCache onto FontCache
https://bugs.webkit.org/show_bug.cgi?id=220858

Reviewed by Myles C. Maxfield.

Make FontCascadeCache and associated functions a child of FontCache,
accessible via FontCache::singleton.

No new tests, no behavior change.

  • page/MemoryRelease.cpp:

(WebCore::releaseNoncriticalMemory):

  • page/SettingsBase.cpp:

(WebCore::invalidateAfterGenericFamilyChange):

  • platform/graphics/FontCache.cpp:

(WebCore::keysMatch):
(WebCore::FontCache::invalidateFontCascadeCache):
(WebCore::FontCache::clearWidthCaches):
(WebCore::makeFontCascadeCacheKey):
(WebCore::computeFontCascadeCacheHash):
(WebCore::FontCache::pruneUnreferencedEntriesFromFontCascadeCache):
(WebCore::FontCache::pruneSystemFallbackFonts):
(WebCore::FontCache::retrieveOrAddCachedFonts):
(WebCore::FontCache::updateFontCascade):

  • platform/graphics/FontCache.h:

(WebCore::FontCascadeCacheEntry::FontCascadeCacheEntry):

  • platform/graphics/FontCascade.cpp:

(WebCore::FontCascade::updateFonts const):
(WebCore::FontCascade::update const):

  • platform/graphics/FontCascade.h:
3:07 AM Changeset in webkit [273236] by Carlos Garcia Campos
  • 50 edits
    1 add in trunk

[SOUP] Add support for libsoup3
https://bugs.webkit.org/show_bug.cgi?id=222093

Reviewed by Adrian Perez de Castro.

.:

  • Source/cmake/FindLibSoup.cmake:
  • Source/cmake/OptionsGTK.cmake:
  • Source/cmake/OptionsWPE.cmake:

Source/WebCore:

  • platform/Soup.cmake:
  • platform/network/soup/AuthenticationChallenge.h:
  • platform/network/soup/AuthenticationChallengeSoup.cpp:

(WebCore::AuthenticationChallenge::AuthenticationChallenge):
(WebCore::AuthenticationChallenge::platformCompare):

  • platform/network/soup/CookieSoup.cpp:

(WebCore::Cookie::Cookie):
(WebCore::Cookie::toSoupCookie const):

  • platform/network/soup/GUniquePtrSoup.h:
  • platform/network/soup/NetworkStorageSessionSoup.cpp:

(WebCore::schemeFromProtectionSpaceServerType):
(WebCore::authTypeFromProtectionSpaceAuthenticationScheme):
(WebCore::NetworkStorageSession::setCookiesFromDOM const):
(WebCore::NetworkStorageSession::setCookies):
(WebCore::NetworkStorageSession::deleteCookie const):
(WebCore::NetworkStorageSession::getHostnamesWithCookies):
(WebCore::NetworkStorageSession::getCookies):
(WebCore::NetworkStorageSession::hasCookies const):
(WebCore::NetworkStorageSession::getRawCookies const):
(WebCore::cookiesForSession):

  • platform/network/soup/ResourceErrorSoup.cpp:

(WebCore::ResourceError::transportError):
(WebCore::ResourceError::httpError):
(WebCore::ResourceError::authenticationError):
(WebCore::ResourceError::tlsError):

  • platform/network/soup/ResourceRequest.h:
  • platform/network/soup/ResourceRequestSoup.cpp:

(WebCore::ResourceRequest::createSoupMessage const):
(WebCore::ResourceRequest::updateSoupMessageBody const):
(WebCore::ResourceRequest::createSoupURI const):

  • platform/network/soup/ResourceResponseSoup.cpp:

(WebCore::ResourceResponse::ResourceResponse):

  • platform/network/soup/SoupNetworkSession.cpp:

(WebCore::SoupNetworkSession::SoupNetworkSession):
(WebCore::SoupNetworkSession::setupLogger):
(WebCore::SoupNetworkSession::clearHSTSCache):
(WebCore::SoupNetworkSession::setProxySettings):

  • platform/network/soup/SoupVersioning.h: Added.

(soup_message_get_method):
(soup_server_message_get_method):
(soup_message_get_status):
(soup_server_message_set_status):
(soup_message_get_reason_phrase):
(soup_message_get_request_headers):
(soup_server_message_get_request_headers):
(soup_message_get_response_headers):
(soup_server_message_get_response_headers):
(soup_server_message_get_response_body):
(soup_server_message_set_response):
(soup_server_message_get_uri):
(soup_message_get_tls_certificate):
(soup_message_get_tls_certificate_errors):
(soup_session_send_async):
(soup_session_websocket_connect_async):
(soup_auth_cancel):

  • platform/network/soup/URLSoup.cpp:

(WebCore::soupURIToURL):
(WebCore::urlToSoupURI):

  • platform/network/soup/URLSoup.h:

Source/WebDriver:

  • soup/HTTPServerSoup.cpp:

(WebDriver::HTTPServer::listen):

Source/WebKit:

  • NetworkProcess/soup/NetworkDataTaskSoup.cpp:

(WebKit::NetworkDataTaskSoup::createRequest):
(WebKit::NetworkDataTaskSoup::clearRequest):
(WebKit::NetworkDataTaskSoup::resume):
(WebKit::NetworkDataTaskSoup::cancel):
(WebKit::NetworkDataTaskSoup::tlsConnectionAcceptCertificateCallback):
(WebKit::NetworkDataTaskSoup::acceptCertificateCallback):
(WebKit::NetworkDataTaskSoup::acceptCertificate):
(WebKit::NetworkDataTaskSoup::authenticateCallback):
(WebKit::NetworkDataTaskSoup::authenticate):
(WebKit::NetworkDataTaskSoup::continueAuthenticate):
(WebKit::shouldRedirectAsGET):
(WebKit::NetworkDataTaskSoup::continueHTTPRedirection):
(WebKit::NetworkDataTaskSoup::didGetHeaders):
(WebKit::NetworkDataTaskSoup::wroteBodyDataCallback):
(WebKit::NetworkDataTaskSoup::didWriteBodyData):
(WebKit::NetworkDataTaskSoup::networkEvent):
(WebKit::NetworkDataTaskSoup::hstsEnforced):
(WebKit::NetworkDataTaskSoup::didRestart):

  • NetworkProcess/soup/NetworkDataTaskSoup.h:
  • NetworkProcess/soup/NetworkSessionSoup.cpp:

(WebKit::NetworkSessionSoup::createWebSocketTask):

  • NetworkProcess/soup/WebSocketTaskSoup.cpp:

(WebKit::isConnectionError):
(WebKit::WebSocketTask::WebSocketTask):

Source/WTF:

  • wtf/Platform.h:
  • wtf/URL.h:
  • wtf/glib/GRefPtr.cpp:

(WTF::refGPtr):
(WTF::derefGPtr):

  • wtf/glib/GRefPtr.h:
  • wtf/glib/URLGLib.cpp:

(WTF::URL::URL):
(WTF::URL::createGUri const):

Tools:

  • MiniBrowser/gtk/BrowserTab.c:

(tlsErrorsDialogResponse):

  • TestWebKitAPI/PlatformGTK.cmake:
  • TestWebKitAPI/Tests/WebKitGLib/TestAuthentication.cpp:

(Tunnel::Tunnel):
(Tunnel::connect):
(serverCallback):

  • TestWebKitAPI/Tests/WebKitGLib/TestBackForwardList.cpp:

(serverCallback):

  • TestWebKitAPI/Tests/WebKitGLib/TestCookieManager.cpp:

(testCookieManagerAddCookie):
(testCookieManagerGetCookies):
(testCookieManagerDeleteCookie):
(serverCallback):

  • TestWebKitAPI/Tests/WebKitGLib/TestDownloads.cpp:

(addContentDispositionHTTPHeaderToResponse):
(writeNextChunk):
(serverCallback):

  • TestWebKitAPI/Tests/WebKitGLib/TestLoaderClient.cpp:

(testLoadingError):
(testWebViewIsLoading):
(serverCallback):

  • TestWebKitAPI/Tests/WebKitGLib/TestResources.cpp:

(addCacheHTTPHeadersToResponse):
(serverCallback):

  • TestWebKitAPI/Tests/WebKitGLib/TestSSL.cpp:

(WebSocketTest::serverWebSocketCallback):
(httpsServerCallback):
(httpServerCallback):

  • TestWebKitAPI/Tests/WebKitGLib/TestWebKitFaviconDatabase.cpp:

(serverCallback):

  • TestWebKitAPI/Tests/WebKitGLib/TestWebKitPolicyClient.cpp:

(serverCallback):

  • TestWebKitAPI/Tests/WebKitGLib/TestWebKitSettings.cpp:

(serverCallback):

  • TestWebKitAPI/Tests/WebKitGLib/TestWebKitUserContentManager.cpp:

(serverCallback):

  • TestWebKitAPI/Tests/WebKitGLib/TestWebKitWebContext.cpp:

(serverCallback):
(ProxyTest::webSocketProxyServerCallback):
(webSocketServerCallback):

  • TestWebKitAPI/Tests/WebKitGLib/TestWebKitWebView.cpp:

(serverCallback):

  • TestWebKitAPI/Tests/WebKitGLib/TestWebsiteData.cpp:

(serverCallback):

  • TestWebKitAPI/Tests/WebKitGtk/TestContextMenu.cpp:

(writeNextChunk):
(serverCallback):

  • TestWebKitAPI/glib/WebKitGLib/WebKitTestServer.cpp:

(WebKitTestServer::run):
(WebKitTestServer::addWebSocketHandler):

2:39 AM Changeset in webkit [273235] by commit-queue@webkit.org
  • 7 edits
    1 add in trunk/Tools/buildstream

[Flatpak SDK] Update to GStreamer 1.18.3 and backport one patch from upcoming 1.18.4
https://bugs.webkit.org/show_bug.cgi?id=222033

Patch by Philippe Normand <pnormand@igalia.com> on 2021-02-22
Reviewed by Žan Doberšek.

The backported patch fixes a racy crash in media/media-source/media-source-webm.html, where
the player would be destroyed quickly after being created.

  • elements/freedesktop-sdk.bst: Update junction.
  • elements/sdk/gst-libav.bst: Bump to 1.18.3
  • elements/sdk/gst-plugins-bad.bst: Ditto.
  • elements/sdk/gst-plugins-base.bst: Ditto and backport patch from 1.18.4.
  • elements/sdk/gst-plugins-good.bst: Bump to 1.18.3
  • elements/sdk/gstreamer.bst: Ditto.
  • patches/gst-plugins-base-0001-videodecoder-Fix-racy-critical-when-pool-negotiation.patch: Added.
2:21 AM Changeset in webkit [273234] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

[Flatpak SDK] Cog build fails when gst-build is enabled
https://bugs.webkit.org/show_bug.cgi?id=222102

Patch by Philippe Normand <pnormand@igalia.com> on 2021-02-22
Reviewed by Žan Doberšek.

Merge gst-build env vars in the sandbox environment, without overriding previously set PATH
values such as PKG_CONFIG_PATH.

  • flatpak/flatpakutils.py:

(WebkitFlatpak.setup_gstbuild):
(WebkitFlatpak.run_in_sandbox):

2:19 AM Changeset in webkit [273233] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

[Flatpak SDK] Bootstrap the run-httpd script in the SDK runtime
https://bugs.webkit.org/show_bug.cgi?id=221464

Patch by Philippe Normand <pnormand@igalia.com> on 2021-02-22
Reviewed by Žan Doberšek.

  • Scripts/run-webkit-httpd: On Linux platforms, run the script within the SDK runtime, if it

is available on the host system.

1:33 AM Changeset in webkit [273232] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebCore/platform/gtk/po

[GTK] [l10n] Updated Ukrainian translation of WebKitGTK+
https://bugs.webkit.org/show_bug.cgi?id=220992

Patch by Yuri Chornoivan <yurchor@ukr.net> on 2021-02-22
Rubber-stamped by Carlos Garcia Campos.

  • uk.po:
1:13 AM Changeset in webkit [273231] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Handle Page::didFinishLoadingImageForElement asynchronously
https://bugs.webkit.org/show_bug.cgi?id=221390

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2021-02-22
Reviewed by Alex Christensen.

When called synchronously from RenderImage::notifyFinished() it's not possible to update the layout because
scripts are not allowed at that point.

  • page/Page.cpp:

(WebCore::Page::didFinishLoadingImageForElement):

12:27 AM Changeset in webkit [273230] by Fujii Hironori
  • 2 edits in trunk/Source/WTF

RunLoop::threadWillExit is doing m_nextIteration.clear() without locking m_nextIterationLock
https://bugs.webkit.org/show_bug.cgi?id=221115

Reviewed by Yusuke Suzuki.

GKT and WPE ports were observing a random assertion failure in
Deque::append in RunLoop::dispatch.

  • wtf/RunLoop.cpp:

(WTF::RunLoop::threadWillExit): Lock m_nextIterationLock before doing m_nextIteration.clear().

Feb 21, 2021:

9:20 PM Changeset in webkit [273229] by Lauro Moura
  • 2 edits in trunk/Source/JavaScriptCore

Fix warning after r273225
https://bugs.webkit.org/show_bug.cgi?id=222257

Reviewed by Keith Miller.

The UNLIKELY condition raises a warn with "suggest parentheses around

‘&&’ within ‘
’" for the last pair.
  • parser/Parser.cpp:

(JSC::Parser<LexerType>::parseUnaryExpression):

7:13 PM Changeset in webkit [273228] by Lauro Moura
  • 8 edits
    1 delete in trunk/LayoutTests

[GLIB] Gardening and updating baselines

Unreviewed test gardening.

  • platform/glib/TestExpectations:
  • platform/glib/webaudio/audioworklet-addModule-failure-expected.txt: Removed.
  • platform/gtk/TestExpectations:
  • platform/wpe/TestExpectations:
  • platform/wpe/fast/text/international/bidi-LDB-2-CSS-expected.txt:
  • platform/wpe/fast/text/international/bidi-LDB-2-HTML-expected.txt:
  • platform/wpe/fast/text/international/bidi-LDB-2-formatting-characters-expected.txt:
  • platform/wpe/fast/text/international/bidi-ignored-for-first-child-inline-expected.txt:
6:13 PM Changeset in webkit [273227] by Andres Gonzalez
  • 15 edits
    2 adds in trunk

Add [WebAccessibilityObjectWrapper textMarkerRangeForNSRange] to allow clients to efficiently get a TextMarkerRange from an NSRange.
https://bugs.webkit.org/show_bug.cgi?id=222154

Reviewed by Chris Fleizach and Darin Adler.

Source/WebCore:

Test: accessibility/mac/textmarker-range-for-range.html

Clients like VoiceOver often need the ability to convert a text range
into an accessibility TextMarkerRange.
This patch adds [WebAccessibilityObjectWrapper textMarkerRangeForNSRange]
to allow clients to efficiently perform this conversion.
This is the Mac implementation, iOS implementation is pending.

  • accessibility/AccessibilityObject.h:

(WebCore::AccessibilityObject::allowsTextRanges const):

  • accessibility/AccessibilityObjectInterface.h:
  • accessibility/isolatedtree/AXIsolatedObject.h:
  • accessibility/isolatedtree/mac/AXIsolatedObjectMac.mm:

(WebCore::AXIsolatedObject::textMarkerRangeForNSRange const):

  • accessibility/mac/AccessibilityObjectMac.mm:

(WebCore::AccessibilityObject::textMarkerRangeForNSRange const):

  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(-[WebAccessibilityObjectWrapper textMarkerRangeForNSRange:]):
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:forParameter:]):

  • editing/Editing.cpp:

(WebCore::visiblePositionForIndexUsingCharacterIterator):
Only advance the CharacterIterator if not atEnd yet.

Tools:

  • WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp:

(WTR::AccessibilityUIElement::textMarkerRangeForRange):

  • WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:
  • WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl:
  • WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:

(WTR::AccessibilityUIElement::textMarkerRangeForRange):

LayoutTests:

  • accessibility/mac/textmarker-range-for-range-expected.txt: Added.
  • accessibility/mac/textmarker-range-for-range.html: Added.
5:04 PM Changeset in webkit [273226] by keith_miller@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, fix CMake build.

  • CMakeLists.txt:
4:41 PM Changeset in webkit [273225] by keith_miller@apple.com
  • 48 edits in trunk

Implement the Top-level await proposal
https://bugs.webkit.org/show_bug.cgi?id=202484

Reviewed by Yusuke Suzuki.

JSTests:

  • test262/config.yaml:

Source/JavaScriptCore:

This patch adds support for the TLA proposal. The bulk of this patch is adding a couple of main parts.

1) converting the AbstractModuleRecord to contain many of same internal fields as JSGenerator so much of the async codegen can be shared.

2) having the link phase of the module loader record whether a module subgraph is async.
3) teaching the module loader that evaluating a module may require more than one vm entry and forwarding the awaited value as well as the resume mode to the VM.

One thing particularly interesting about this patch is that moduleEvaluation now *sometimes* (when a strongly connected subgraph is async) will return a promise. This happened to already be awaited when called from loadAndEvaluateModule (unnecessarily before) but now also needs to be handled by requestImportModule.

No new tests because every test I came up with was subsumed by tests already in test262.

  • API/JSAPIGlobalObject.h:
  • API/JSAPIGlobalObject.mm:

(JSC::JSAPIGlobalObject::moduleLoaderEvaluate):

(globalPrivate.newRegistryEntry):
(link):
(async requestImportModule):
(moduleEvaluation): Deleted.
(requestImportModule): Deleted.

  • bytecode/BytecodeGeneratorification.cpp:

(JSC::BytecodeGeneratorification::run):
(JSC::performGeneratorification):

  • bytecode/BytecodeIntrinsicRegistry.cpp:

(JSC::BytecodeIntrinsicRegistry::BytecodeIntrinsicRegistry):

  • bytecode/BytecodeIntrinsicRegistry.h:
  • bytecode/BytecodeList.rb:
  • bytecode/BytecodeUseDef.cpp:

(JSC::computeUsesForBytecodeIndexImpl):

  • bytecode/UnlinkedModuleProgramCodeBlock.h:
  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::generate):
(JSC::BytecodeGenerator::BytecodeGenerator):
(JSC::BytecodeGenerator::emitWillLeaveCallFrameDebugHook):
(JSC::BytecodeGenerator::emitGenericEnumeration):
(JSC::BytecodeGenerator::emitYieldPoint):
(JSC::BytecodeGenerator::emitYield):
(JSC::BytecodeGenerator::emitDelegateYield):
(JSC::BytecodeGenerator::emitGeneratorStateChange):

  • bytecompiler/BytecodeGenerator.h:

(JSC::BytecodeGenerator::generatorStateRegister):
(JSC::BytecodeGenerator::generatorValueRegister):
(JSC::BytecodeGenerator::generatorResumeModeRegister):
(JSC::BytecodeGenerator::generatorFrameRegister):

  • bytecompiler/NodesCodegen.cpp:

(JSC::abstractModuleRecordInternalFieldIndex):
(JSC::BytecodeIntrinsicNode::emit_intrinsic_getAbstractModuleRecordInternalField):
(JSC::FunctionNode::emitBytecode):

  • interpreter/Interpreter.cpp:

(JSC::Interpreter::executeModuleProgram):

  • interpreter/Interpreter.h:
  • parser/ASTBuilder.h:

(JSC::ASTBuilder::createAwait):
(JSC::ASTBuilder::usesAwait):

  • parser/Nodes.cpp:

(JSC::ModuleProgramNode::ModuleProgramNode):

  • parser/Nodes.h:
  • parser/Parser.cpp:

(JSC::JSToken::dump const):
(JSC::Parser<LexerType>::parseForStatement):
(JSC::Parser<LexerType>::parseAwaitExpression):
(JSC::Parser<LexerType>::parsePrimaryExpression):
(JSC::Parser<LexerType>::parseUnaryExpression):

  • parser/ParserModes.h:
  • parser/ParserTokens.h:
  • runtime/AbstractModuleRecord.cpp:

(JSC::AbstractModuleRecord::finishCreation):
(JSC::AbstractModuleRecord::link):
(JSC::AbstractModuleRecord::evaluate):

  • runtime/AbstractModuleRecord.h:

(JSC::AbstractModuleRecord::initialValues):
(JSC::AbstractModuleRecord::internalField):
(JSC::AbstractModuleRecord::internalField const):

  • runtime/JSAsyncGenerator.h:
  • runtime/JSGenerator.h:
  • runtime/JSGlobalObject.h:
  • runtime/JSModuleLoader.cpp:

(JSC::JSModuleLoader::evaluate):
(JSC::JSModuleLoader::evaluateNonVirtual):
(JSC::JSC_DEFINE_HOST_FUNCTION):

  • runtime/JSModuleLoader.h:
  • runtime/JSModuleRecord.cpp:

(JSC::JSModuleRecord::link):
(JSC::JSModuleRecord::evaluate):

  • runtime/JSModuleRecord.h:
  • runtime/ModuleProgramExecutable.h:
  • runtime/OptionsList.h:
  • runtime/SymbolTable.cpp:

(JSC::SymbolTable::dump const):

  • runtime/SymbolTable.h:
  • wasm/js/WebAssemblyModuleRecord.cpp:

(JSC::WebAssemblyModuleRecord::link):
(JSC::WebAssemblyModuleRecord::linkImpl):

  • wasm/js/WebAssemblyModuleRecord.h:

Source/WebCore:

  • bindings/js/JSDOMGlobalObject.cpp:

(WebCore::JSDOMGlobalObject::moduleLoaderEvaluate):

  • bindings/js/JSDOMGlobalObject.h:
  • bindings/js/ScriptController.cpp:

(WebCore::ScriptController::evaluateModule):

  • bindings/js/ScriptController.h:
  • bindings/js/ScriptModuleLoader.cpp:

(WebCore::ScriptModuleLoader::evaluate):

  • bindings/js/ScriptModuleLoader.h:
  • workers/WorkerOrWorkletScriptController.cpp:

(WebCore::WorkerOrWorkletScriptController::evaluateModule):

  • workers/WorkerOrWorkletScriptController.h:
1:54 PM Changeset in webkit [273224] by ysuzuki@apple.com
  • 17 edits in trunk

Support modules in service workers
https://bugs.webkit.org/show_bug.cgi?id=222155

Reviewed by Saam Barati.

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/scripting-1/the-script-element/json-module/json-module-service-worker-test.https.tentative-expected.txt:
  • web-platform-tests/service-workers/service-worker/clients-matchall-client-types.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/import-module-scripts.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/performance-timeline.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/update-registration-with-type.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/update.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/worker-client-id.https-expected.txt:

Source/WebCore:

This patch adds module support to service-workers. Basically this just plumbs the type: "module" information to
service worker's job as described in the spec[1]: Each SW job should have workerType, and this is passed.
And we sometimes compare newestWorker->type() with this job.workerType (as defined in the spec). And we spawn
the SW with this job.workerType. Since Worker already supports "module" evaluation, this is automatically evaluated
as modules if we spawn SW thread with "module" type.

When using, we can pass "module" type to the register method as follows.

navigator.serviceWorker.register('script.mjs', {

type: "module"

});

[1]: https://w3c.github.io/ServiceWorker/

  • workers/service/ServiceWorker.h:
  • workers/service/ServiceWorkerContainer.cpp:

(WebCore::ServiceWorkerContainer::addRegistration):
(WebCore::ServiceWorkerContainer::updateRegistration):

  • workers/service/ServiceWorkerJobData.cpp:

(WebCore::ServiceWorkerJobData::isolatedCopy const):
(WebCore::ServiceWorkerJobData::isEquivalent const):

  • workers/service/ServiceWorkerJobData.h:

(WebCore::ServiceWorkerJobData::encode const):
(WebCore::ServiceWorkerJobData::decode):

  • workers/service/ServiceWorkerRegistration.cpp:

(WebCore::ServiceWorkerRegistration::update):

  • workers/service/context/ServiceWorkerThread.cpp:

(WebCore::ServiceWorkerThread::ServiceWorkerThread):

  • workers/service/server/SWServer.cpp:

(WebCore::SWServer::softUpdate):

  • workers/service/server/SWServerJobQueue.cpp:

(WebCore::SWServerJobQueue::scriptFetchFinished):
(WebCore::SWServerJobQueue::runRegisterJob):
(WebCore::SWServerJobQueue::runUpdateJob):

1:38 PM Changeset in webkit [273223] by Alan Bujtas
  • 7 edits in trunk/Source/WebCore

[LFC][IFC] Hittest should be using the border box (and not the margin box)
https://bugs.webkit.org/show_bug.cgi?id=222249

Reviewed by Antti Koivisto.

This patch fixes the cases when the inline box (e.g. <span>) has horizontal
margins and we find those inline boxes instead of their containing blocks.
e.g.
<div><span style="margin-left: 100px;">border box starts at 100px</span></div>
document.elementFromPoint(50, 10) should not find the <span>.

Let's simplify LineBox interface so that it returns the border box. Clients
are mainly interested in the border box.
(LineBox is mostly there to support vertical alignment and the vertical
alignment uses the margin box height. The inline level boxes on the line now have
this seemingly odd combination of border box width and margin box height, but
that's required to keep the alignment logic clean and simple.)

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::computeGeometryForLineContent):

  • layout/inlineformatting/InlineFormattingContextGeometry.cpp:

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

  • layout/inlineformatting/InlineLineBox.cpp:

(WebCore::Layout::LineBox::logicalBorderBoxForAtomicInlineLevelBox const):
(WebCore::Layout::LineBox::logicalBorderBoxForInlineBox const):
(WebCore::Layout::LineBox::logicalMarginRectForAtomicInlineLevelBox const): Deleted.
(WebCore::Layout::LineBox::logicalRectForInlineBox const): Deleted.

  • layout/inlineformatting/InlineLineBox.h:
  • layout/integration/LayoutIntegrationInlineContentBuilder.cpp:

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

  • layout/layouttree/LayoutTreeBuilder.cpp:

(WebCore::Layout::showInlineTreeAndRuns):

1:08 PM Changeset in webkit [273222] by ysuzuki@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] JSInternalPromise::then can fail if execution is terminated
https://bugs.webkit.org/show_bug.cgi?id=222244

Reviewed by Mark Lam.

JSInternalPromise::then assumed that call's result is always JSInternalPromise.
But this is wrong if termination exception is thrown. In that case, this call fails.
This patch makes it robust against this behavior.

  • runtime/JSInternalPromise.cpp:

(JSC::JSInternalPromise::then):

12:49 PM Changeset in webkit [273221] by Simon Fraser
  • 2 edits in trunk/Source/WTF

Re-enable Paint Timing
https://bugs.webkit.org/show_bug.cgi?id=211736

Reviewed by Noam Rosenthal.

Now that bug 222245 is fixed in r273220, re-enable Paint Timing
(aka First Contentful Paint.)

  • Scripts/Preferences/WebPreferencesEfxperimental.yaml:
11:07 AM Changeset in webkit [273220] by Noam Rosenthal
  • 4 edits in trunk/Source/WebCore

[Paint Timing] Return early from contentful paint check when no contentful pixels/characters at all
https://bugs.webkit.org/show_bug.cgi?id=222245

Reviewed by Simon Fraser.

Bail from recursive contenful-paint check if there are no pixels/text characters in the entire document.

Covered by existing tests, an optimization only.

  • dom/Document.cpp:

(WebCore::Document::enqueuePaintTimingEntryIfNeeded):

  • page/FrameView.cpp:

(WebCore::FrameView::hasContenfulDescendants const):

  • page/FrameView.h:
9:20 AM Changeset in webkit [273219] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Small improvements to r273073
https://bugs.webkit.org/show_bug.cgi?id=222179

Patch by Martin Robinson <mrobinson@igalia.com> on 2021-02-21
Reviewed by Darin Adler.

No new tests, because this should not change behavior.

  • rendering/RenderObject.cpp:

(WebCore::RenderObject::enclosingScrollableContainerForSnapping const): Replace
a while loop with a for loop and prefer downcast<> to static_cast<>.

4:51 AM Changeset in webkit [273218] by ysuzuki@apple.com
  • 7 edits
    16 adds in trunk/JSTests

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

Reviewed by Alexey Shvayka.

  • test262/config.yaml:
  • test262/expectations.yaml:
  • test262/latest-changes-summary.txt:
  • test262/test/built-ins/Object/assign/target-is-frozen-accessor-property-set-succeeds.js: Added.

(target1.set foo):
(target2.Object.freeze.set sym):

  • test262/test/built-ins/Object/assign/target-is-frozen-data-property-set-throws.js: Added.
  • test262/test/built-ins/Object/assign/target-is-non-extensible-existing-accessor-property.js: Added.

(target1.Object.preventExtensions.set foo):
(target2.set sym):

  • test262/test/built-ins/Object/assign/target-is-non-extensible-existing-data-property.js: Added.
  • test262/test/built-ins/Object/assign/target-is-non-extensible-property-creation-throws.js: Added.

(get bar):

  • test262/test/built-ins/Object/assign/target-is-sealed-existing-accessor-property.js: Added.

(target1.Object.seal.set foo):
(target2.set sym):

  • test262/test/built-ins/Object/assign/target-is-sealed-existing-data-property.js: Added.
  • test262/test/built-ins/Object/assign/target-is-sealed-property-creation-throws.js: Added.

(get bar):

  • test262/test/built-ins/Object/freeze/proxy-with-defineProperty-handler.js: Added.

(proxy.new.Proxy.get foo):
(proxy.new.Proxy.set foo):
(set foo.defineProperty):
(set foo):

  • test262/test/built-ins/Object/seal/proxy-with-defineProperty-handler.js: Added.

(proxy.new.Proxy.get foo):
(proxy.new.Proxy.set foo):
(set foo.defineProperty):
(set foo):

  • test262/test/built-ins/TypedArray/prototype/filter/BigInt/callbackfn-detachbuffer.js:

(testWithBigIntTypedArrayConstructors):

  • test262/test/built-ins/TypedArray/prototype/findIndex/BigInt/predicate-may-detach-buffer.js:

(testWithBigIntTypedArrayConstructors):

  • test262/test/intl402/DateTimeFormat/constructor-no-instanceof.js: Added.
  • test262/test/intl402/DateTimeFormat/prototype/format/no-instanceof.js: Added.
  • test262/test/intl402/DateTimeFormat/prototype/resolvedOptions/no-instanceof.js: Added.
  • test262/test/intl402/NumberFormat/constructor-no-instanceof.js: Added.
  • test262/test/intl402/NumberFormat/prototype/format/no-instanceof.js: Added.
  • test262/test/intl402/NumberFormat/prototype/resolvedOptions/no-instanceof.js: Added.
  • test262/test262-Revision.txt:
4:35 AM Changeset in webkit [273217] by ysuzuki@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

[JSC] Remove vm.topCallFrame storing in Baseline JIT
https://bugs.webkit.org/show_bug.cgi?id=222162

Reviewed by Mark Lam.

This patch removes vm.topCallFrame storing in the Baseline JIT for ports that can USE(BUILTIN_FRAME_ADDRESS).
Also refactored some CommonSlowPath functions so that they can start using builtin_frame_address later
instead of requiring that CallFrame be passed in.

  • jit/JITInlines.h:

(JSC::JIT::updateTopCallFrame):

  • runtime/CommonSlowPaths.cpp:

(JSC::iteratorOpenTryFastImpl):
(JSC::JSC_DEFINE_COMMON_SLOW_PATH):
(JSC::iteratorNextTryFastImpl):

Feb 20, 2021:

11:27 PM Changeset in webkit [273216] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit

[Cocoa] Update WebCoreArgumentCodersMac with some new additions
https://bugs.webkit.org/show_bug.cgi?id=222242
<rdar://problem/74562457>

Reviewed by Tim Horton.

Will be tested by new API Tests in a subsequent patch.

  • Shared/mac/WebCoreArgumentCodersMac.mm:

(IPC::ArgumentCoder<WebCore::ResourceRequest>::encodePlatformData):
(IPC::ArgumentCoder<WebCore::ResourceRequest>::decodePlatformData):

8:24 PM Changeset in webkit [273215] by BJ Burg
  • 4 edits in trunk/Source/WebKit

[Cocoa] Web Inspector: expose the WKBrowsingContextHandle associated with Web Inspector's page
https://bugs.webkit.org/show_bug.cgi?id=222226

Reviewed by Timothy Hatcher.

In order to implement browser.devtools.inspectedWindow.tabId for Web Extensions,
we need a way to do a reverse lookup of the tabId using the current browsing context
controller (WKWebProcessPlugInBrowserContextController) in the injected bundle.

This patch exposes the browsing context handle for the underlying WKWebView that
hosts the inspector page. Clients can use this to precompute a tabId for each
inspector browsing context that may be encountered by injected bundle code.

  • UIProcess/API/Cocoa/_WKInspectorPrivate.h:
  • UIProcess/API/Cocoa/_WKInspector.mm:

(-[_WKInspector handle]): Added.

  • WebProcess/InjectedBundle/mac/InjectedBundleMac.mm:

(WebKit::InjectedBundle::classesForCoder):
Drive-by, make it possible to use WKBrowsingContextHandle in injected bundle parameters.
This is easy because it conforms to NSSecureCoding and is simply a pageId + frameId.

8:15 PM Changeset in webkit [273214] by Chris Fleizach
  • 40 edits
    4 adds in trunk

AX: Image should report the embedded accessibility description if available
https://bugs.webkit.org/show_bug.cgi?id=221875
<rdar://problem/74320584>

Reviewed by Jer Noble.

Source/WebCore:

Check if images have accessibility description metadata and expose that to the AX API.

Test: accessibility/embedded-image-description.html

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::embeddedImageDescription const):

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

(-[WebAccessibilityObjectWrapper _accessibilityPhotoDescription]):

  • accessibility/isolatedtree/AXIsolatedObject.cpp:

(WebCore::AXIsolatedObject::initializeAttributeData):

  • accessibility/isolatedtree/AXIsolatedObject.h:
  • accessibility/isolatedtree/AXIsolatedTree.h:
  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(-[WebAccessibilityObjectWrapper ALLOW_DEPRECATED_IMPLEMENTATIONS_END]):
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):

  • platform/cf/MediaAccessibilitySoftLink.cpp:
  • platform/cf/MediaAccessibilitySoftLink.h:
  • platform/graphics/BitmapImage.h:
  • platform/graphics/Image.h:

(WebCore::Image::accessibilityDescription const):

  • platform/graphics/ImageDecoder.h:
  • platform/graphics/ImageSource.cpp:

(WebCore::ImageSource::accessibilityDescription):

  • platform/graphics/ImageSource.h:
  • platform/graphics/avfoundation/objc/ImageDecoderAVFObjC.h:
  • platform/graphics/cg/ImageDecoderCG.cpp:

(WebCore::ImageDecoderCG::accessibilityDescription const):

  • platform/graphics/cg/ImageDecoderCG.h:
  • rendering/RenderImage.h:

(WebCore::RenderImage::accessibilityDescription const):

Source/WebCore/PAL:

  • PAL.xcodeproj/project.pbxproj:
  • pal/spi/cocoa/MediaAccessibilitySPI.h: Added.

Source/WebKit:

  • WebProcess/GPU/media/RemoteImageDecoderAVF.h:

Tools:

  • DumpRenderTree/AccessibilityUIElement.cpp:

(getEmbeddedImageDescription):
(AccessibilityUIElement::getJSClass):

  • DumpRenderTree/AccessibilityUIElement.h:
  • DumpRenderTree/ios/AccessibilityUIElementIOS.mm:

(AccessibilityUIElement::embeddedImageDescription const):

  • DumpRenderTree/mac/AccessibilityUIElementMac.mm:

(AccessibilityUIElement::embeddedImageDescription const):

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

(WTR::AccessibilityUIElement::embeddedImageDescription const):

  • WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:

(WTR::AccessibilityUIElement::embeddedImageDescription const):

LayoutTests:

  • accessibility/embedded-image-description-expected.txt: Added.
  • accessibility/embedded-image-description.html: Added.
  • accessibility/resources/embedded-image-description-example.jpg: Added.
  • platform/ios-simulator/TestExpectations:
  • platform/win/TestExpectations:
6:05 PM Changeset in webkit [273213] by Peng Liu
  • 24 edits in trunk

Video elements do not work as sources for TexImage2D calls in GPU Process
https://bugs.webkit.org/show_bug.cgi?id=218184

Reviewed by Jer Noble.

Source/WebCore:

Add a function GraphicsContextGL::copyTextureFromMedia() which can be used by the graphics
context to copy video texture from a video element (player).

This patch also replaces MediaPlayer::copyVideoTextureToPlatformTexture() with
MediaPlayer::pixelBufferForCurrentTime() on Cocoa ports. The motivation is that
RemoteGraphicsContextGL::copyTextureFromMedia() will run in a background thread
("RemoteGraphicsContextGL work queue") and it is difficult to make
MediaPlayer::copyVideoTextureToPlatformTexture() thread-safe. In addition, we cannot
simply run it on the main thread because it uses graphic context internally. Adding a
function MediaPlayer::pixelBufferForCurrentTime() solves the problem.

Manually tested.
We need to enable both "GPU Process: Media" and "GPU Process: WebGL" to test the feature.

  • html/HTMLVideoElement.cpp:

(WebCore::HTMLVideoElement::copyVideoTextureToPlatformTexture): Deleted.

  • html/HTMLVideoElement.h:
  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::texImageSourceHelper):

  • platform/graphics/GraphicsContextGL.h:
  • platform/graphics/MediaPlayer.cpp:

(WebCore::MediaPlayer::pixelBufferForCurrentTime):

  • platform/graphics/MediaPlayer.h:
  • platform/graphics/MediaPlayerPrivate.h:

(WebCore::MediaPlayerPrivateInterface::pixelBufferForCurrentTime):

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

(WebCore::MediaPlayerPrivateAVFoundationObjC::pixelBufferForCurrentTime):
(WebCore::MediaPlayerPrivateAVFoundationObjC::copyVideoTextureToPlatformTexture): Deleted.

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

(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::pixelBufferForCurrentTime):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::copyVideoTextureToPlatformTexture): Deleted.

  • platform/graphics/opengl/GraphicsContextGLOpenGL.cpp:

(WebCore::GraphicsContextGLOpenGL::copyTextureFromMedia):

  • platform/graphics/opengl/GraphicsContextGLOpenGL.h:

Source/WebKit:

Add an IPC message RemoteGraphicsContextGL::CopyTextureFromMedia to implement
RemoteGraphicsContextGLProxy::copyTextureFromMedia() in the Web process.

  • GPUProcess/graphics/RemoteGraphicsContextGL.cpp:

(WebKit::RemoteGraphicsContextGL::copyTextureFromMedia):

  • GPUProcess/graphics/RemoteGraphicsContextGL.h:

We should use m_gpuConnectionToWebProcess in the main thread only.

  • GPUProcess/graphics/RemoteGraphicsContextGL.messages.in:
  • WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.cpp:

(WebKit::RemoteGraphicsContextGLProxy::copyTextureFromMedia):

  • WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.h:
  • WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:
  • WebProcess/GPU/media/MediaPlayerPrivateRemote.h:

Tools:

  • Scripts/generate-gpup-webgl:
5:06 PM Changeset in webkit [273212] by youenn@apple.com
  • 9 edits in trunk

Add support for adding/removing/clearing mock devices in GPUProcess
https://bugs.webkit.org/show_bug.cgi?id=222174

Reviewed by Eric Carlson.

Source/WebKit:

Make sure to forward mock device orders to GPU process so that it is kept in sync with UIProcess.
Covered by updated test.

  • GPUProcess/GPUProcess.cpp:

(WebKit::GPUProcess::addMockMediaDevice):
(WebKit::GPUProcess::clearMockMediaDevices):
(WebKit::GPUProcess::removeMockMediaDevice):
(WebKit::GPUProcess::resetMockMediaDevices):

  • GPUProcess/GPUProcess.h:
  • GPUProcess/GPUProcess.messages.in:
  • UIProcess/GPU/GPUProcessProxy.cpp:

(WebKit::GPUProcessProxy::addMockMediaDevice):
(WebKit::GPUProcessProxy::clearMockMediaDevices):
(WebKit::GPUProcessProxy::removeMockMediaDevice):
(WebKit::GPUProcessProxy::resetMockMediaDevices):

  • UIProcess/GPU/GPUProcessProxy.h:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::addMockMediaDevice):
(WebKit::WebProcessPool::clearMockMediaDevices):
(WebKit::WebProcessPool::removeMockMediaDevice):
(WebKit::WebProcessPool::resetMockMediaDevices):

LayoutTests:

  • fast/mediastream/device-change-event-2.html:
4:47 PM Changeset in webkit [273211] by weinig@apple.com
  • 14 edits in trunk

color(lab ...) should serialize as color(lab ...) not lab() according to latest CSS Color 4 spec
https://bugs.webkit.org/show_bug.cgi?id=222110

Reviewed by Dean Jackson.

Source/WebCore:

To make this work it was necessary to make it so that extended colors, like Lab,
could store an extra bit of data on Color to indicate that it should use the
color() function for serialization when parsed using the color() form.

To do that, Color was reworked to allow extra metadata flags for both inline and
extended colors. Previously, only inline colors could make use of the extra bits.
Now, we take advantage of the fact that we have the high 16 bits available to us
for pointers to also store that metadata for extended colors. Rather than using a
union, we encode the pointer / inline color into a uint64_t, and use the extra bits
for the flags we need. Currently we only use 6, so there is quite a bit more that
could be used here.

Finally, the color serialization code has been updated to check for the new bit,
called UseColorFunctionSerialization, and to serialize using color() notation
if it is set.

We are currently only taking advantage of this for differentiating between lab(...)
and color(lab ...), but in the future we should be able to also optimize color(srgb ...)
values that can be represented fully by SRGBA<uint8_t>.

Since we can now add flags for extended colors, the semantic bit is also now usable
for extended colors, though none currently exist.

  • css/parser/CSSPropertyParserHelpers.cpp:

(WebCore::CSSPropertyParserHelpers::parseColorFunctionForRGBTypes):
(WebCore::CSSPropertyParserHelpers::parseColorFunctionForLabParameters):
(WebCore::CSSPropertyParserHelpers::parseColorFunctionForXYZParameters):
(WebCore::CSSPropertyParserHelpers::parseColorFunctionParameters):

  • platform/graphics/Color.cpp:

(WebCore::Color::Color):
(WebCore::Color::operator=):
(WebCore::Color::colorWithAlpha const):
(WebCore::Color::semanticColor const):

  • platform/graphics/Color.h:

(WebCore::Color::isHashTableDeletedValue const):
(WebCore::Color::Color):
(WebCore::Color::toAllFlags):
(WebCore::Color::setColor):
(WebCore::Color::setExtendedColor):
(WebCore::operator==):
(WebCore::extendedColorsEqual):
(WebCore::extendedColorsEqualIgnoringSemanticColor):
(WebCore::equalIgnoringSemanticColor):
(WebCore::Color::~Color):
(WebCore::Color::hash const):
(WebCore::Color::isValid const):
(WebCore::Color::isSemantic const):
(WebCore::Color::usesColorFunctionSerialization const):
(WebCore::Color::flags const):
(WebCore::Color::isExtended const):
(WebCore::Color::isInline const):
(WebCore::Color::asExtended const):
(WebCore::Color::asExtendedRef const):
(WebCore::Color::asInline const):
(WebCore::Color::asPackedInline const):
(WebCore::Color::encodedFlags):
(WebCore::Color::encodedInlineColor):
(WebCore::Color::encodedPackedInlineColor):
(WebCore::Color::encodedExtendedColor):
(WebCore::Color::decodedFlags):
(WebCore::Color::decodedInlineColor):
(WebCore::Color::decodedPackedInlineColor):
(WebCore::Color::decodedExtendedColor):
(WebCore::Color::setInvalid):
(WebCore::Color::encode const):
(WebCore::Color::decode):
(WebCore::Color::tagAsSemantic): Deleted.
(WebCore::Color::tagAsValid): Deleted.

  • platform/graphics/ColorBlending.cpp:

(WebCore::blendWithWhite):

  • platform/graphics/ColorSerialization.cpp:

(WebCore::serializationForCSS):
(WebCore::serializationForHTML):
(WebCore::serializationForRenderTreeAsText):
(WebCore::serializationUsingColorFunction):

  • platform/graphics/cg/ColorCG.cpp:

(WebCore::Color::Color):

  • platform/graphics/mac/ColorMac.mm:

(WebCore::semanticColorFromNSColor):

  • rendering/RenderThemeIOS.mm:

(WebCore::systemColorFromCSSValueIDSelector):
(WebCore::systemColorFromCSSValueID):

  • rendering/RenderThemeMac.mm:

(WebCore::RenderThemeMac::systemColor const):

LayoutTests:

  • fast/css/parsing-lab-colors-expected.txt:
  • fast/css/parsing-lab-colors.html:

Update test and results for new serialization of color(lab ...).

4:38 PM Changeset in webkit [273210] by Simon Fraser
  • 3 edits in trunk/Source/WebCore

Fix the build when TREE_DEBUGGING is enabled in release builds
https://bugs.webkit.org/show_bug.cgi?id=222238

Reviewed by Zalan Bujtas.

FloatingObjects logging needs to use ENABLE(TREE_DEBUGGING) not #ifndef NDEBUG.

  • rendering/FloatingObjects.cpp:
  • rendering/FloatingObjects.h:
3:17 PM Changeset in webkit [273209] by jiewen_tan@apple.com
  • 32 edits in trunk

PCM: Store and report source unlinkable tokens
https://bugs.webkit.org/show_bug.cgi?id=222208
<rdar://problem/73582032>

Reviewed by John Wilander.

Source/WebCore:

This patch hooks up the network process with the PCM fraud prevention feature to
enable the generation, storing and reporting the source unlinkable token.

Existing tests updated.

  • loader/PrivateClickMeasurement.h:

(WebCore::PrivateClickMeasurement::setSourceSecretTokenValue):
Adds infrastructure to mock the crypto operations such that layout tests can be
conducted without the server side crypto support.

  • loader/PrivateClickMeasurement.cpp:

(WebCore::PrivateClickMeasurement::attributionReportJSON const):
(WebCore::PrivateClickMeasurement::tokenSignatureJSON const):
(WebCore::PrivateClickMeasurement::setSourceUnlinkableToken):
(WebCore::PrivateClickMeasurement::tokenSignatureJSON): Deleted.

  • loader/PrivateClickMeasurement.h:

(WebCore::PrivateClickMeasurement::sourceUnlinkableToken const):

  • loader/cocoa/PrivateClickMeasurementCocoa.mm:

(WebCore::PrivateClickMeasurement::calculateAndUpdateSourceSecretToken):
(WebCore::PrivateClickMeasurement::calculateAndUpdateSourceUnlinkableToken):
(WebCore::PrivateClickMeasurement::sourceSecretToken): Deleted.
(WebCore::PrivateClickMeasurement::calculateSourceUnlinkableToken): Deleted.
Update interfaces to service the use cases in the Networking process better.

Source/WebKit:

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::setFraudPreventionValuesForTesting):

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

(WebKit::NetworkSession::setFraudPreventionValuesForTesting):

  • NetworkProcess/NetworkSession.h:
  • NetworkProcess/PrivateClickMeasurementManager.cpp:

(WebKit::PrivateClickMeasurementManager::storeUnattributed):
(WebKit::PrivateClickMeasurementManager::getSignedSecretToken):
(WebKit::PrivateClickMeasurementManager::setFraudPreventionValuesForTesting):

  • NetworkProcess/PrivateClickMeasurementManager.h:
  • UIProcess/API/C/WKPage.cpp:

(WKPageSetFraudPreventionValuesForTesting):

  • UIProcess/API/C/WKPagePrivate.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::markPrivateClickMeasurementsAsExpiredForTesting):
(WebKit::WebPageProxy::setFraudPreventionValuesForTesting):

  • UIProcess/WebPageProxy.h:

Adds infrastructure to mock the crypto operations such that layout tests can be
conducted without the server side crypto support.

  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:

(WebKit::ResourceLoadStatisticsDatabaseStore::buildPrivateClickMeasurementFromDatabase):
(WebKit::ResourceLoadStatisticsDatabaseStore::insertPrivateClickMeasurement):

  • NetworkProcess/PrivateClickMeasurementManager.cpp:

(WebKit::PrivateClickMeasurementManager::storeUnattributed):
(WebKit::PrivateClickMeasurementManager::getTokenPublicKey):
(WebKit::PrivateClickMeasurementManager::getSignedSecretToken):
(WebKit::PrivateClickMeasurementManager::fireConversionRequest):
(WebKit::PrivateClickMeasurementManager::fireConversionRequestImpl):

  • NetworkProcess/PrivateClickMeasurementManager.h:

Connects the fraud prevention feature in PCM to generate, store, and report the unlinkable token.

Tools:

  • TestWebKitAPI/Tests/WebCore/PrivateClickMeasurement.cpp:

(TestWebKitAPI::TEST):

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

(WTR::TestRunner::setFraudPreventionValuesForTesting):

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

(WTR::TestController::setFraudPreventionValuesForTesting):

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

(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):
Rebases some test cases.

LayoutTests:

  • http/tests/privateClickMeasurement/expired-attribution-report-gets-sent-on-session-start-expected.txt:
  • http/tests/privateClickMeasurement/resources/signToken.php:
  • http/tests/privateClickMeasurement/send-attribution-conversion-request-expected.txt:
  • http/tests/privateClickMeasurement/store-private-click-measurement-with-source-nonce-expected.txt:
  • http/tests/privateClickMeasurement/store-private-click-measurement-with-source-nonce.html:

Modifies the test to mock the whole round trip.

3:01 PM Changeset in webkit [273208] by jiewen_tan@apple.com
  • 2 edits in trunk/Source/WTF

PCM: Turn the fraud prevention on by default
https://bugs.webkit.org/show_bug.cgi?id=222224
<rdar://problem/73588234>

Reviewed by John Wilander.

  • Scripts/Preferences/WebPreferencesExperimental.yaml:
2:43 PM Changeset in webkit [273207] by Said Abou-Hallawa
  • 2 edits in trunk/Source/WTF

Make PaintTimingEnabled default to false
https://bugs.webkit.org/show_bug.cgi?id=222186

Reviewed by Simon Fraser.

PaintTiming causes about 4% regression in the MotionMark sub-tests:
Multiply and Focus. Do disable it for now.

  • Scripts/Preferences/WebPreferencesExperimental.yaml:
2:40 PM Changeset in webkit [273206] by commit-queue@webkit.org
  • 6 edits in trunk

"min-content" & "max-content" keywords should behave as initial value in block axis (but WebKit improperly treats them as the content-size)
https://bugs.webkit.org/show_bug.cgi?id=191390

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

LayoutTests/imported/w3c:

Update improved test expectation.

  • web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/min-inline-size-expected.txt:

Source/WebCore:

"min-content" & "max-content" should use automatic size in block direction [1].

This behavior matches Gecko and Blink.

[1] https://drafts.csswg.org/css-sizing-3/#valdef-width-min-content

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::constrainLogicalHeightByMinMax const):

LayoutTests:

Adapt test to new behavior.

  • fast/css-intrinsic-dimensions/height-expected.html: Removed.
  • fast/css-intrinsic-dimensions/height.html: Removed.
2:22 PM Changeset in webkit [273205] by Lauro Moura
  • 3 edits in trunk/Source/WebCore

Unreviewed. GLib buildfix after r273203

  • bindings/js/WorkerModuleScriptLoader.h:
  • bindings/js/WorkerScriptFetcher.h:
12:33 PM Changeset in webkit [273204] by Peng Liu
  • 42 edits
    4 copies
    14 adds in trunk

WebGL GPU process IPC should use shared memory for asynchronous messages
https://bugs.webkit.org/show_bug.cgi?id=219641
<rdar://problem/72340651>

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2021-02-20
Reviewed by Geoff Garen.

Source/WebKit:

Implement a concept of a message buffer. This is a similar concept as
"command buffer" or "display list" in some graphics APIs. Messages
can be added to the buffer by a client and then played back by a
server.

Current implementation adds a specific pseudo-infinite,
semi-duplex message buffer type IPC::StreamConnectionBuffer. This
is a buffer that can be attached to stream connection, an object
that can deliver IPC messages either through the message buffer
or through normal IPC::Connection. The stream connection is
implemented as IPC::StreamClientConnection and IPC::StreamServerConnection.
The connection has server and client distinction, similar to
IPC::Connection. Unlike IPC::Connection, a stream connection is asymmetric
in features: the client can send messages and receive replies, where
as the server can receive messages and send replies.

Messages received through IPC::StreamServerConnection can be
processed by StreamConnectionWorkQueue.

Currently asynchronous messages are added to the stream. Synchronous messages
and their replies are dispatched through normal IPC.

WebGL is implemented by having one StreamConnectionWorkQueue for all WebGL
in the browser. Currently each web process WebGL context in has one
StreamClientConnection attached to one 2mb StreamConnectionBuffer.

Later on, there will be only one WebGL stream connection and connection
buffer shared between all contexts in particular thread in Web process.
The implementation is "optimized" for the later on case. Due to single-
process nature of each page, it does not make much sense to have buffer
per context. However, it is anticipated that many of the successive calls
are to same context. The SHM message format implements an optimization
where the destination id is maintained as part of the stream connection
state.

In GPU process side, all WebGL is processed in one task queue,
"RemoteGraphicsContextGL task queue". It will process up to 1000 commands
per connection per iteration.

Implemented as follows:
Sender shares the shared memory area with the destination when creating
the destination.

If the message fits to the stream shared memory area, write it there.
Otherwise send it via normal IPC as out of line message.

Messages to the destination arrive as before, in order. For each out of line
message, an entry is pushed to the stream. Receiver will stop processing the
stream and processing will continue once the out-of-line
message has been processed.

Sender can write messages to the stream simultaneous to the receiver reading
the messages. This is implemented as a ring buffer with atomic sender and receiver
pointers.

Stream connection processing is implemented as a shared semaphore. This semaphore
is notified if the receiver is waiting on it.

Performance impact (iMac Pro):

  • MotionMark triangles: 300 points -> 4000 points (~7000 points no-GPUP)
  • WebGL samples Aquarium: 1000 fish ~60fps -> 5000 fish ~60fps (~5000 fish with no-GPUP)

No new tests, tested by existing tests.

  • GPUProcess/GPUConnectionToWebProcess.cpp:

(WebKit::GPUConnectionToWebProcess::createGraphicsContextGL):

  • GPUProcess/GPUConnectionToWebProcess.h:
  • GPUProcess/GPUConnectionToWebProcess.messages.in:
  • GPUProcess/graphics/RemoteGraphicsContextGL.cpp:

(WebKit::remoteGraphicsContextGLStreamWorkQueue):
(WebKit::RemoteGraphicsContextGL::create):
(WebKit::RemoteGraphicsContextGL::RemoteGraphicsContextGL):
(WebKit::RemoteGraphicsContextGL::~RemoteGraphicsContextGL):
(WebKit::RemoteGraphicsContextGL::initialize):
(WebKit::RemoteGraphicsContextGL::connectWebProcessConnection):
(WebKit::RemoteGraphicsContextGL::disconnectWebProcessConnection):
(WebKit::RemoteGraphicsContextGL::workQueueInitialize):
(WebKit::RemoteGraphicsContextGL::workQueueUninitialize):
Initialize the OpenGL context in the work queue, since OpenGL
has various limitations wrt thread mobility.

(WebKit::RemoteGraphicsContextGL::forceContextLost):
(WebKit::RemoteGraphicsContextGL::dispatchContextChangedNotification):

  • GPUProcess/graphics/RemoteGraphicsContextGL.h:

(WebKit::RemoteGraphicsContextGL::platformWorkQueueInitialize):
(WebKit::RemoteGraphicsContextGL::send const):

  • GPUProcess/graphics/RemoteGraphicsContextGL.messages.in:
  • GPUProcess/graphics/RemoteGraphicsContextGLCocoa.cpp:

(WebKit::RemoteGraphicsContextGL::create):
(WebKit::RemoteGraphicsContextGLCocoa::RemoteGraphicsContextGLCocoa):
(WebKit::RemoteGraphicsContextGLCocoa::platformWorkQueueInitialize):

  • NetworkProcess/webrtc/NetworkRTCProvider.h:
  • Platform/IPC/ArgumentCoder.h:
  • Platform/IPC/ArgumentCoders.cpp:
  • Platform/IPC/ArgumentCoders.h:

Make it possible to use multiple different Encoder classes to encode
the IPC data.

  • Platform/IPC/Connection.cpp:

(IPC::Connection::processIncomingMessage):
(IPC::Connection::dispatchDidReceiveInvalidMessage):

  • Platform/IPC/Connection.h:

Add possibility for the stream decoding logic to send the didReceiveInvalidMessage
notification to the connection client.

  • Platform/IPC/Decoder.cpp:

(IPC::Decoder::Decoder):
(IPC::m_bufferDeallocator):
(IPC::m_destinationID):

  • Platform/IPC/Decoder.h:

Add a constructor for Decoder for constructing a decoder in place in
the stream buffer.

  • Platform/IPC/HandleMessage.h:

(IPC::handleMessageSynchronous):
Adds a stream-specific handleMessageSynchronous.
The old ones are unneccessarily complex, as they need redundant calls through redundant
generated send functions.
The old ones need the reply encoder passed in, which is redundant and problematic
for the upcoming case where the stream messaging will mainly reply through the stream itself,
constructing the IPC::StreamConnectionEncoder instead of normal IPC::Encoder.

  • Platform/IPC/StreamClientConnection.cpp: Copied from Source/WebKit/Platform/IPC/cocoa/MachPort.h.

(IPC::StreamClientConnection::StreamClientConnection):
(IPC::StreamClientConnection::setWakeUpSemaphore):
Add function to set the connection receive side wakeup semaphore.
Currently the semaphore is the semaphore that StreamConnectionWorkQueue
waits on. All streams processed by the same work queue will receive the same
semaphore and will notify it when they have written new data.

(IPC::StreamClientConnection::wakeUpReceiver):

  • Platform/IPC/StreamClientConnection.h: Added.

(IPC::StreamClientConnection::send):
(IPC::StreamClientConnection::sendSync):
(IPC::StreamClientConnection::trySendDestinationIDIfNeeded):
(IPC::StreamClientConnection::sendProcessOutOfStreamMessage):
(IPC::StreamClientConnection::tryAcquire):
(IPC::StreamClientConnection::release):
(IPC::StreamClientConnection::alignedSpan):
(IPC::StreamClientConnection::size):
(IPC::StreamClientConnection::clampedLimit const):
Add the implementation for sending data through the shared memory.

  • Platform/IPC/StreamConnectionBuffer.cpp: Added.

(IPC::createMemory):
(IPC::StreamConnectionBuffer::StreamConnectionBuffer):
(IPC::StreamConnectionBuffer::operator=):
(IPC::StreamConnectionBuffer::encode const):
(IPC::StreamConnectionBuffer::decode):

  • Platform/IPC/StreamConnectionBuffer.h: Added.

(IPC::StreamConnectionBuffer::wrapOffset const):
(IPC::StreamConnectionBuffer::alignOffset const):
(IPC::StreamConnectionBuffer::senderOffset):
(IPC::StreamConnectionBuffer::receiverOffset):
(IPC::StreamConnectionBuffer::data const):
(IPC::StreamConnectionBuffer::dataSize const):
(IPC::StreamConnectionBuffer::senderWaitSemaphore):
(IPC::StreamConnectionBuffer::header const):
(IPC::StreamConnectionBuffer::headerSize):
Add the common implementation for the shared memory ring buffer.
This is the common implementation used by both the sender side
as well as the receiver side.
Due to the selection of how the size is marked up, the
common implementation does not contain all the non-trivial code.
The "algorithm" uses a "hole indicator" to differentiate between
cases of "buffer is empty" and "buffer is full". The other
alternative could be better and maybe explored later.

  • Platform/IPC/StreamConnectionEncoder.h: Added.
  • Platform/IPC/StreamConnectionWorkQueue.cpp: Added.

(IPC::StreamConnectionWorkQueue::StreamConnectionWorkQueue):
(IPC::StreamConnectionWorkQueue::dispatch):
(IPC::StreamConnectionWorkQueue::addStreamConnection):
(IPC::StreamConnectionWorkQueue::removeStreamConnection):
(IPC::StreamConnectionWorkQueue::stop):
(IPC::StreamConnectionWorkQueue::wakeUp):
(IPC::StreamConnectionWorkQueue::wakeUpSemaphore):
(IPC::StreamConnectionWorkQueue::wakeUpProcessingThread):
(IPC::StreamConnectionWorkQueue::processStreams):
Work queue contains multiple StreamServerConnection instances.
For each iteration of the work queue thread, it will process
1000 items from each connection. If none of the connections contain
work, the queue will sleep on the work queue semaphore.
The senders will send through StreamClientConnection which
will wake up the work queue by signaling the semaphore.

  • Platform/IPC/StreamConnectionWorkQueue.h: Copied from Source/WebKit/Platform/IPC/cocoa/MachPort.h.
  • Platform/IPC/StreamServerConnection.cpp: Added.

(IPC::StreamServerConnectionBase::StreamServerConnectionBase):
(IPC::StreamServerConnectionBase::startReceivingMessagesImpl):
(IPC::StreamServerConnectionBase::stopReceivingMessagesImpl):
(IPC::StreamServerConnectionBase::enqueueMessage):
(IPC::StreamServerConnectionBase::tryAquire):
(IPC::StreamServerConnectionBase::release):
(IPC::StreamServerConnectionBase::alignedSpan):
(IPC::StreamServerConnectionBase::size):
(IPC::StreamServerConnectionBase::clampedLimit const):

  • Platform/IPC/StreamServerConnection.h: Added.

(IPC::StreamServerConnectionBase::connection):
(IPC::StreamServerConnectionBase::wrapOffset const):
(IPC::StreamServerConnectionBase::alignOffset const):
(IPC::StreamServerConnectionBase::sharedSenderOffset):
(IPC::StreamServerConnectionBase::sharedReceiverOffset):
(IPC::StreamServerConnectionBase::data const):
(IPC::StreamServerConnectionBase::dataSize const):
(IPC::StreamServerConnectionBase::sendSyncReply):
(IPC::StreamServerConnection<Receiver>::startReceivingMessages):
(IPC::StreamServerConnection<Receiver>::stopReceivingMessages):
(IPC::StreamServerConnection<Receiver>::dispatchStreamMessages):
(IPC::StreamServerConnection<Receiver>::processSetStreamDestinationID):
(IPC::StreamServerConnection<Receiver>::dispatchStreamMessage):
(IPC::StreamServerConnection<Receiver>::dispatchOutOfStreamMessage):
StreamServerConnection will process the message buffer and dispatch
messages based on the buffer contents. The class is a template so
that the message data decode switch (generated by the normal IPC
generator) is perhaps inlined to the message unpack loop.

  • Platform/IPC/cocoa/MachPort.h:
  • Scripts/webkit/messages.py:
  • Scripts/webkit/messages_unittest.py:

Implements a 'Stream' attribute for the message receiver. When marked as
'Stream', the receiver message handler is didReceiveStreamMessage and it
will be called for all messages, stream or normal IPC, sync or async.

  • Scripts/webkit/model.py:

Adds IPC control message ProcessOutOfStreamMessage that is acted on if
it is part of the stream messages. It means that the stream processing
should stop until one normal IPC message, sync or non-synch, should be
processed.

Adds IPC control message SetStreamDestinationID that is acted on if it
is part of the stream messages. It will set the destination ID for all
the subsequent stream messages, until another SetStreamDestinationID
message is seen.

  • Scripts/webkit/tests/Makefile:
  • Scripts/webkit/tests/MessageNames.cpp:

(IPC::description):
(IPC::receiverName):
(IPC::isValidMessageName):

  • Scripts/webkit/tests/MessageNames.h:
  • Scripts/webkit/tests/TestWithStream.messages.in: Copied from Source/WebKit/WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.messages.in.
  • Scripts/webkit/tests/TestWithStreamBuffer.messages.in: Copied from Source/WebKit/WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.messages.in.
  • Scripts/webkit/tests/TestWithStreamBufferMessageReceiver.cpp: Added.

(WebKit::TestWithStreamBuffer::didReceiveMessage):

  • Scripts/webkit/tests/TestWithStreamBufferMessages.h: Added.

(Messages::TestWithStreamBuffer::messageReceiverName):
(Messages::TestWithStreamBuffer::SendStreamBuffer::name):
(Messages::TestWithStreamBuffer::SendStreamBuffer::SendStreamBuffer):
(Messages::TestWithStreamBuffer::SendStreamBuffer::arguments const):

  • Scripts/webkit/tests/TestWithStreamBufferMessagesReplies.h: Added.
  • Scripts/webkit/tests/TestWithStreamMessageReceiver.cpp: Added.

(WebKit::TestWithStream::didReceiveStreamMessage):

  • Scripts/webkit/tests/TestWithStreamMessages.h: Added.

(Messages::TestWithStream::messageReceiverName):
(Messages::TestWithStream::SendString::name):
(Messages::TestWithStream::SendString::SendString):
(Messages::TestWithStream::SendString::arguments const):
(Messages::TestWithStream::SendStringSynchronized::name):
(Messages::TestWithStream::SendStringSynchronized::SendStringSynchronized):
(Messages::TestWithStream::SendStringSynchronized::arguments const):

  • Scripts/webkit/tests/TestWithStreamMessagesReplies.h: Added.
  • Sources.txt:
  • UIProcess/Downloads/DownloadProxy.h:
  • UIProcess/ProvisionalPageProxy.cpp:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.cpp:

(WebKit::RemoteGraphicsContextGLProxy::RemoteGraphicsContextGLProxy):
(WebKit::RemoteGraphicsContextGLProxy::wasCreated):
Send the work queue wakeup semaphore as a result of the context creation.

  • Platform/IPC/ScopedActiveMessageReceiveQueue.h: Added.

(IPC::ScopedActiveMessageReceiveQueue::ScopedActiveMessageReceiveQueue):
(IPC::ScopedActiveMessageReceiveQueue::operator=):
(IPC::ScopedActiveMessageReceiveQueue::~ScopedActiveMessageReceiveQueue):
(IPC::ScopedActiveMessageReceiveQueue::reset):
(IPC::ScopedActiveMessageReceiveQueue::get const):
(IPC::ScopedActiveMessageReceiveQueue::stopListeningForIPCAndRelease):
Add a holder to replace previous RemoteRenderingBackendWrapper.
Now other classes can be held similarly.

  • WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.h:
  • WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.messages.in:
  • WebProcess/Network/webrtc/LibWebRTCNetwork.h:

Tools:

Mark RemoteGraphicsContextGL message receiver as "Stream",
a new variant of receiver.

  • Scripts/generate-gpup-webgl:

LayoutTests:

Mark few tests as not timing out now that the implementation is not so slow.

  • gpu-process/TestExpectations:
12:28 PM Changeset in webkit [273203] by ysuzuki@apple.com
  • 108 edits
    2 copies
    1 move
    2 adds in trunk

JS Modules in Workers
https://bugs.webkit.org/show_bug.cgi?id=164860

Reviewed by Saam Barati.

LayoutTests/imported/w3c:

Some of worklet failures in WPT is because,

  1. Previously, worklet does not support module. These tests are passing incorrectly when modules are not supported. Now, modules are supported, and some edge features are missing, so start failing
  2. WPT is using www1.localhost in some tests (CSP tests), and this is not supported in WebKit's WPT testing. So failing incorrectly.
  • web-platform-tests/html/semantics/scripting-1/the-script-element/json-module/non-object.tentative.any.worker-expected.txt:
  • web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/checkpoint-after-workerglobalscope-onerror-module-expected.txt:
  • web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/alpha/base-url-worker-importScripts-expected.txt:
  • web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/alpha/base-url-worker.sub-expected.txt:
  • web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-1-nothrow-worker-expected.txt:
  • web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-1-worker-expected.txt:
  • web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-2-import-worker-expected.txt:
  • web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-3-dynamic-worker-expected.txt:
  • web-platform-tests/service-workers/service-worker/import-module-scripts.https-expected.txt:
  • web-platform-tests/workers/baseurl/alpha/import-in-moduleworker-expected.txt:
  • web-platform-tests/workers/baseurl/alpha/importScripts-in-worker-expected.txt:
  • web-platform-tests/workers/baseurl/alpha/xhr-in-moduleworker-expected.txt:
  • web-platform-tests/workers/baseurl/alpha/xhr-in-worker-expected.txt:
  • web-platform-tests/workers/constructors/Worker/same-origin-expected.txt:
  • web-platform-tests/workers/interfaces/WorkerGlobalScope/location/redirect-expected.txt:
  • web-platform-tests/workers/interfaces/WorkerGlobalScope/location/redirect-module-expected.txt:
  • web-platform-tests/workers/modules/dedicated-worker-import-blob-url.any-expected.txt:
  • web-platform-tests/workers/modules/dedicated-worker-import-csp-expected.txt:
  • web-platform-tests/workers/modules/dedicated-worker-import-failure-expected.txt:
  • web-platform-tests/workers/modules/dedicated-worker-import-meta-expected.txt:
  • web-platform-tests/workers/modules/dedicated-worker-import-meta.html:
  • web-platform-tests/workers/modules/dedicated-worker-import-referrer-expected.txt:
  • web-platform-tests/workers/modules/dedicated-worker-import.any-expected.txt:
  • web-platform-tests/workers/modules/dedicated-worker-options-type-expected.txt:
  • web-platform-tests/workers/modules/dedicated-worker-parse-error-failure-expected.txt:
  • web-platform-tests/workers/name-property-expected.txt:
  • web-platform-tests/worklets/audio-worklet-credentials.https-expected.txt:
  • web-platform-tests/worklets/audio-worklet-csp.https-expected.txt:
  • web-platform-tests/worklets/audio-worklet-import.https-expected.txt:
  • web-platform-tests/worklets/audio-worklet-referrer.https-expected.txt:
  • web-platform-tests/xhr/open-url-redirected-worker-origin-expected.txt:

Source/JavaScriptCore:

Add error information to extract this in WebCore's module loader.
Currently, we are using Promise pipeline, and this makes it a bit difficult to extract error information.
This error information attached in this patch allows us to extract SyntaxError in WebCore, and throwing
JS SyntaxError instead of AbortError.

We are planning to update our module pipieline not using Promises in the future. The current design derived
from the original module loader pipeline where using Promises is critical. But now, that proposal was abandoned,
so we can just simplify the module loader.

  • runtime/AggregateError.cpp:

(JSC::AggregateError::AggregateError):

  • runtime/Error.cpp:

(JSC::createError):
(JSC::createEvalError):
(JSC::createRangeError):
(JSC::createReferenceError):
(JSC::createSyntaxError):
(JSC::createTypeError):
(JSC::createURIError):
(JSC::createGetterTypeError):
(JSC::throwSyntaxError):

  • runtime/Error.h:
  • runtime/ErrorConstructor.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):

  • runtime/ErrorInstance.cpp:

(JSC::ErrorInstance::ErrorInstance):
(JSC::ErrorInstance::create):
(JSC::ErrorInstance::sanitizedMessageString):
(JSC::ErrorInstance::sanitizedNameString):
(JSC::ErrorInstance::sanitizedToString):

  • runtime/ErrorInstance.h:

(JSC::ErrorInstance::create):
(JSC::ErrorInstance::errorType const):

  • runtime/JSGlobalObjectFunctions.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):

  • runtime/NativeErrorConstructor.cpp:

(JSC::NativeErrorConstructor<errorType>::constructImpl):
(JSC::NativeErrorConstructor<errorType>::callImpl):

  • runtime/NullSetterFunction.cpp:

(JSC::NullSetterFunctionInternal::JSC_DEFINE_HOST_FUNCTION):

  • wasm/js/JSWebAssemblyCompileError.cpp:

(JSC::JSWebAssemblyCompileError::JSWebAssemblyCompileError):

  • wasm/js/JSWebAssemblyLinkError.cpp:

(JSC::JSWebAssemblyLinkError::JSWebAssemblyLinkError):

  • wasm/js/JSWebAssemblyRuntimeError.cpp:

(JSC::JSWebAssemblyRuntimeError::JSWebAssemblyRuntimeError):

  • wasm/js/WebAssemblyCompileErrorConstructor.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):

  • wasm/js/WebAssemblyLinkErrorConstructor.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):

  • wasm/js/WebAssemblyRuntimeErrorConstructor.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):

Source/WebCore:

This patch implements JS modules in Workers and Worklets. We are not supporting modules in ServiceWorkers' initialization yet.
But service-worker can import modules via JS import().

The worker can be executed as a module if we pass, type: "module" to worker options. Worklet is executed as modules by default.

  1. In Worker, we first fetch the initial code. And then, analyze the dependencies and load subsequent modules. We iterate run-loop to load all the dependent modules in the module loader. At that time, we annotate run-loop tasks with special taskMode to iterate tasks with this taskMode. This prevents us from discarding different tasks in this run-loop driving phase. (e.g. postMessage can be called from the main thread while loading module graph, in that case, we should not discard this task.)
  1. In Worklet, we just request module loading to ScriptModuleLoader, and run it after loading module graph. This is OK since worklet thread is already running. So we can just request modules and worklet thread automatically drives module loading via run-loop.
  • Headers.cmake:
  • Modules/webaudio/AudioWorkletGlobalScope.h:

(WebCore::AudioWorkletGlobalScope::currentFrame const): Deleted.
(WebCore::AudioWorkletGlobalScope::sampleRate const): Deleted.
(WebCore::AudioWorkletGlobalScope::currentTime const): Deleted.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/CachedModuleScriptLoader.cpp:

(WebCore::CachedModuleScriptLoader::create):
(WebCore::CachedModuleScriptLoader::CachedModuleScriptLoader):
(WebCore::CachedModuleScriptLoader::load):
(WebCore::CachedModuleScriptLoader::notifyFinished):

  • bindings/js/CachedModuleScriptLoader.h:
  • bindings/js/CachedScriptFetcher.cpp:
  • bindings/js/JSDOMExceptionHandling.cpp:

(WebCore::retrieveErrorMessageWithoutName):
(WebCore::createDOMException):

  • bindings/js/JSDOMExceptionHandling.h:
  • bindings/js/JSDOMGlobalObject.cpp:

(WebCore::scriptModuleLoader):
(WebCore::JSDOMGlobalObject::moduleLoaderResolve):
(WebCore::JSDOMGlobalObject::moduleLoaderFetch):
(WebCore::JSDOMGlobalObject::moduleLoaderEvaluate):
(WebCore::JSDOMGlobalObject::moduleLoaderImportModule):
(WebCore::JSDOMGlobalObject::moduleLoaderCreateImportMetaProperties):

  • bindings/js/JSDOMGlobalObject.h:
  • bindings/js/JSDOMWindowBase.cpp:

(WebCore::JSDOMWindowBase::moduleLoaderResolve): Deleted.
(WebCore::JSDOMWindowBase::moduleLoaderFetch): Deleted.
(WebCore::JSDOMWindowBase::moduleLoaderEvaluate): Deleted.
(WebCore::JSDOMWindowBase::moduleLoaderImportModule): Deleted.
(WebCore::JSDOMWindowBase::moduleLoaderCreateImportMetaProperties): Deleted.

  • bindings/js/JSDOMWindowBase.h:
  • bindings/js/JSWorkerGlobalScopeBase.cpp:
  • bindings/js/JSWorkletGlobalScopeBase.cpp:
  • bindings/js/ModuleScriptLoader.h: Copied from Source/WebCore/dom/ModuleFetchParameters.h.

(WebCore::ModuleScriptLoader::clearClient):
(WebCore::ModuleScriptLoader::scriptFetcher):
(WebCore::ModuleScriptLoader::parameters):
(WebCore::ModuleScriptLoader::ModuleScriptLoader):

  • bindings/js/ModuleScriptLoaderClient.h: Renamed from Source/WebCore/bindings/js/CachedModuleScriptLoaderClient.h.
  • bindings/js/ScriptModuleLoader.cpp:

(WebCore::ScriptModuleLoader::ScriptModuleLoader):
(WebCore::resolveModuleSpecifier):
(WebCore::ScriptModuleLoader::resolve):
(WebCore::ScriptModuleLoader::fetch):
(WebCore::ScriptModuleLoader::moduleURL):
(WebCore::ScriptModuleLoader::responseURLFromRequestURL):
(WebCore::ScriptModuleLoader::evaluate):
(WebCore::ScriptModuleLoader::importModule):
(WebCore::ScriptModuleLoader::notifyFinished):

  • bindings/js/ScriptModuleLoader.h:
  • bindings/js/ScriptSourceCode.h:

(WebCore::ScriptSourceCode::ScriptSourceCode):

  • bindings/js/WorkerModuleScriptLoader.cpp: Added.

(WebCore::WorkerModuleScriptLoader::create):
(WebCore::WorkerModuleScriptLoader::WorkerModuleScriptLoader):
(WebCore::WorkerModuleScriptLoader::~WorkerModuleScriptLoader):
(WebCore::WorkerModuleScriptLoader::load):
(WebCore::WorkerModuleScriptLoader::referrerPolicy):
(WebCore::WorkerModuleScriptLoader::notifyFinished):
(WebCore::WorkerModuleScriptLoader::taskMode):

  • bindings/js/WorkerModuleScriptLoader.h: Copied from Source/WebCore/dom/ModuleFetchParameters.h.
  • bindings/js/WorkerScriptFetcher.h: Added.
  • dom/Document.cpp:
  • dom/ExceptionCode.h:
  • dom/LoadableModuleScript.cpp:

(WebCore::LoadableModuleScript::LoadableModuleScript):
(WebCore::LoadableModuleScript::load): Deleted.

  • dom/LoadableModuleScript.h:
  • dom/ModuleFetchParameters.h:

(WebCore::ModuleFetchParameters::create):
(WebCore::ModuleFetchParameters::isTopLevelModule const):
(WebCore::ModuleFetchParameters::ModuleFetchParameters):

  • dom/ScriptElement.cpp:

(WebCore::ScriptElement::requestModuleScript):

  • loader/ThreadableLoader.cpp:

(WebCore::ThreadableLoader::create):

  • loader/ThreadableLoader.h:

(WebCore::ThreadableLoader::create):

  • workers/DedicatedWorkerGlobalScope.h:
  • workers/Worker.cpp:

(WebCore::Worker::Worker):
(WebCore::Worker::create):
(WebCore::Worker::notifyFinished):

  • workers/Worker.h:
  • workers/Worker.idl:
  • workers/WorkerGlobalScope.cpp:

(WebCore::WorkerGlobalScope::WorkerGlobalScope):
(WebCore::WorkerGlobalScope::importScripts):

  • workers/WorkerGlobalScope.h:

(WebCore::WorkerGlobalScope::credentials const):

  • workers/WorkerGlobalScopeProxy.h:
  • workers/WorkerMessagingProxy.cpp:

(WebCore::WorkerMessagingProxy::startWorkerGlobalScope):

  • workers/WorkerMessagingProxy.h:
  • workers/WorkerOrWorkletGlobalScope.cpp:

(WebCore::WorkerOrWorkletGlobalScope::WorkerOrWorkletGlobalScope):

  • workers/WorkerOrWorkletGlobalScope.h:

(WebCore::WorkerOrWorkletGlobalScope::moduleLoader):

  • workers/WorkerOrWorkletScriptController.cpp:

(WebCore::jsValueToModuleKey):
(WebCore::WorkerOrWorkletScriptController::evaluateModule):
(WebCore::WorkerOrWorkletScriptController::loadModuleSynchronously):
(WebCore::WorkerOrWorkletScriptController::linkAndEvaluateModule):
(WebCore::WorkerOrWorkletScriptController::loadAndEvaluateModule):

  • workers/WorkerOrWorkletScriptController.h:
  • workers/WorkerScriptLoader.cpp:

(WebCore::WorkerScriptLoader::loadAsynchronously):
(WebCore::WorkerScriptLoader::didReceiveResponse):

  • workers/WorkerScriptLoader.h:

(WebCore::WorkerScriptLoader::responseSource const):
(WebCore::WorkerScriptLoader::isRedirected const):

  • workers/WorkerThread.cpp:

(WebCore::WorkerParameters::isolatedCopy const):
(WebCore::WorkerThread::evaluateScriptIfNecessary):

  • workers/WorkerThread.h:
  • workers/WorkerType.h:
  • workers/service/ServiceWorkerContainer.h:
  • workers/service/ServiceWorkerGlobalScope.h:
  • workers/service/ServiceWorkerJob.cpp:

(WebCore::ServiceWorkerJob::fetchScriptWithContext):

  • workers/service/ServiceWorkerRegistrationOptions.h:
  • workers/service/context/ServiceWorkerThread.cpp:

(WebCore::ServiceWorkerThread::ServiceWorkerThread):

  • workers/service/server/SWServerWorker.h:
  • worklets/PaintWorkletGlobalScope.h:

(WebCore::PaintWorkletGlobalScope::paintDefinitionMap): Deleted.
(WebCore::PaintWorkletGlobalScope::paintDefinitionLock): Deleted.
(WebCore::PaintWorkletGlobalScope::~PaintWorkletGlobalScope): Deleted.

  • worklets/WorkletGlobalScope.cpp:

(WebCore::WorkletGlobalScope::fetchAndInvokeScript):
(WebCore::WorkletGlobalScope::processNextScriptFetchJobIfNeeded): Deleted.
(WebCore::WorkletGlobalScope::didReceiveResponse): Deleted.
(WebCore::WorkletGlobalScope::notifyFinished): Deleted.
(WebCore::WorkletGlobalScope::didCompleteScriptFetchJob): Deleted.

  • worklets/WorkletGlobalScope.h:

LayoutTests:

  • TestExpectations:
  • http/tests/security/contentSecurityPolicy/1.1/module-scriptnonce-redirect-expected.txt:
  • http/tests/subresource-integrity/sri-module-expected.txt:
  • webaudio/audioworklet-addModule-failure-expected.txt:
  • webaudio/worklet-crash-expected.txt:
10:17 AM Changeset in webkit [273202] by Wenson Hsieh
  • 5 edits in trunk

Unreviewed, reverting r273115.

Breaks autocorrect without the accompanying change in
rdar://problem/74211293

Reverted changeset:

"Unconditionally return information in _autofillContext SPI
when a field is focused"
https://bugs.webkit.org/show_bug.cgi?id=221828
https://commits.webkit.org/r273115

10:13 AM Changeset in webkit [273201] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

Unreviewed, fix regression from r273194 that was spotted by Darin Adler after landing.

  • Platform/cocoa/WKPaymentAuthorizationDelegate.mm:

(-[WKPaymentAuthorizationDelegate completePaymentMethodSelection:]):
(-[WKPaymentAuthorizationDelegate completeShippingContactSelection:]):
(-[WKPaymentAuthorizationDelegate completeShippingMethodSelection:]):

10:11 AM Changeset in webkit [273200] by dino@apple.com
  • 19 edits
    4 adds in trunk/Source/ThirdParty/ANGLE

Fix a number of functional regressions caused by enabling the Metal ANGLE backend by default.
https://bugs.webkit.org/show_bug.cgi?id=220895
<rdar://problem/73539537>

Patch by Kyle Piddington <Kyle Piddington> on 2021-02-19
Reviewed by Kenneth Russell.

Take two of this patch - this time with the new files FixTypeConstructors and NameEmbeddedUniformStructsMetal

Fixed webgl/1.0.3/conformance/context/context-hidden-alpha.html

MTL Translator direct fixes for webgl/1.0.3/conformance/glsl/constructors/glsl-construct-*vec2 tests, Plus fix for GL_VertexIndex

Fix EmitMetal crash for missing function textureRect.

Additional fixes for 73675990, shaders-with-invariance.html, shaders-with-uniform-structs.html, struct-specifiers-in-uniforms.html, framebuffer-object-attachment.html

Fixed clamping of array elements.

  • ANGLE.xcodeproj/project.pbxproj:
  • src/compiler/translator/TranslatorMetalDirect.cpp:

(sh::TranslatorMetalDirect::translateImpl):

  • src/compiler/translator/TranslatorMetalDirect/EmitMetal.cpp:

(GenMetalTraverser::emitPostQualifier):
(GenMetalTraverser::visitBinary):
(GenMetalTraverser::BuildFuncToName):

  • src/compiler/translator/TranslatorMetalDirect/FixTypeConstructors.cpp: Added.

(sh::FixTypeTraverser::FixTypeTraverser):
(sh::FixTypeConstructors):

  • src/compiler/translator/TranslatorMetalDirect/FixTypeConstructors.h: Added.
  • src/compiler/translator/TranslatorMetalDirect/NameEmbeddedUniformStructsMetal.cpp: Added.

(sh::NameEmbeddedStructUniformsMetal):

  • src/compiler/translator/TranslatorMetalDirect/NameEmbeddedUniformStructsMetal.h: Added.
  • src/compiler/translator/TranslatorMetalDirect/Pipeline.cpp:

(SaturateVectorOf):

  • src/compiler/translator/TranslatorMetalDirect/ProgramPrelude.cpp:

(sh::ProgramPrelude::ProgramPrelude):

  • src/compiler/translator/TranslatorMetalDirect/ReduceInterfaceBlocks.cpp:

(sh::Reducer::Reducer):
(sh::ReduceInterfaceBlocks):

  • src/compiler/translator/TranslatorMetalDirect/ReduceInterfaceBlocks.h:
  • src/compiler/translator/TranslatorMetalDirect/SeparateCompoundStructDeclarations.cpp:
  • src/libANGLE/renderer/load_functions_table_autogen.cpp:
  • src/libANGLE/renderer/metal/ContextMtl.mm:

(rx::ContextMtl::drawElementsImpl):

  • src/libANGLE/renderer/metal/IOSurfaceSurfaceMtl.h:
  • src/libANGLE/renderer/metal/IOSurfaceSurfaceMtl.mm:

(rx::IOSurfaceSurfaceMtl::IOSurfaceSurfaceMtl):
(rx::IOSurfaceSurfaceMtl::createBackingTexture):

  • src/libANGLE/renderer/metal/RenderBufferMtl.mm:

(rx::RenderbufferMtl::setStorageImpl):

  • src/libANGLE/renderer/metal/VertexArrayMtl.h:
  • src/libANGLE/renderer/metal/VertexArrayMtl.mm:

(rx::VertexArrayMtl::getIndexBuffer):
(rx::VertexArrayMtl::convertIndexBuffer):
(rx::VertexArrayMtl::streamIndexBufferFromClient):

  • src/libANGLE/renderer/metal/mtl_utils.mm:

(rx::mtl::InitializeDepthStencilTextureContentsGPU):

  • src/libANGLE/renderer/metal/shaders/blit.metal:
  • src/libANGLE/renderer/metal/shaders/mtl_default_shaders_src_autogen.inc:
9:00 AM Changeset in webkit [273199] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

Revert r272384 [Python-3] Change shebang in git-webkit
https://bugs.webkit.org/show_bug.cgi?id=221412

Unreviewed infrastructure fix.

Revert to Python 2 for git-webkit command because of auto-install issues.

  • CISupport/ews-build/steps.py:
  • CISupport/ews-build/steps_unittest.py:
6:18 AM Changeset in webkit [273198] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[LFC][Integration] Enclosing top and bottom value are relative to the containing block's border box
https://bugs.webkit.org/show_bug.cgi?id=222220

Reviewed by Antti Koivisto.

This patch ensures that the enclosing top and bottom values are in the same coordinate space
as the line top and bottom values are.
See fast/scrolling/scroll-to-anchor-zoomed-header.html.

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::computeGeometryForLineContent):

  • layout/inlineformatting/InlineLineGeometry.h:
  • layout/integration/LayoutIntegrationInlineContentBuilder.cpp:

(WebCore::LayoutIntegration::operator+):
(WebCore::LayoutIntegration::InlineContentBuilder::createDisplayLines const):

2:39 AM Changeset in webkit [273197] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Remove unused isGoogle function
https://bugs.webkit.org/show_bug.cgi?id=222227

Patch by Rob Buis <rbuis@igalia.com> on 2021-02-20
Reviewed by Frédéric Wang.

Remove unused (after r273084) isGoogle function.

  • platform/UserAgentQuirks.cpp:

(WebCore::isGoogle): Deleted.

Feb 19, 2021:

10:56 PM Changeset in webkit [273196] by Chris Dumez
  • 8 edits in trunk/Source/WebKit

Crash under Decoder::Decoder()
https://bugs.webkit.org/show_bug.cgi?id=222192
<rdar://31392681>

Reviewed by Geoffrey Garen.

We are sometimes crashing under Decoder's copyBuffer(), inside the memcpy()
call, with a null address. I have no idea how this is happening and this
code has not changed in a long time so I have made the following hardening:

  1. Update copyBuffer() to use tryFastMalloc() instead of fastMalloc(). Log and return null if tryFastMalloc() failed instead of calling memcpy().
  2. Update Decoder::create() to log and return early if the input buffer is null.
  3. Update Connection's createMessageDecoder() to use CheckedSize when computing the bodySize that is being passed to Decoder::create(). If we overflow, log and return null.

No new tests, no idea how this can happen in practice.

  • Platform/IPC/Decoder.cpp:

(IPC::copyBuffer):
(IPC::Decoder::create):
(IPC::Decoder::Decoder):

  • Platform/IPC/cocoa/ConnectionCocoa.mm:

(IPC::createMessageDecoder):

10:37 PM Changeset in webkit [273195] by BJ Burg
  • 3 edits in trunk/Source/WebKit

[Cocoa] WKBrowsingContextHandle should conform to NSCopying
https://bugs.webkit.org/show_bug.cgi?id=222214

Reviewed by Devin Rousso.

  • Shared/API/Cocoa/WKBrowsingContextHandle.h:
  • Shared/API/Cocoa/WKBrowsingContextHandle.mm:

(-[WKBrowsingContextHandle copyWithZone:]):

10:37 PM Changeset in webkit [273194] by Chris Dumez
  • 52 edits in trunk

Review remaining usage of autorelease to make sure it is necessary
https://bugs.webkit.org/show_bug.cgi?id=222177

Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

  • API/JSContext.mm:

(+[JSContext contextWithJSGlobalContextRef:]):

  • API/JSVirtualMachine.mm:

(+[JSVirtualMachine virtualMachineWithContextGroupRef:]):

  • API/JSWrapperMap.mm:

(-[JSWrapperMap objcWrapperForJSValueRef:inContext:]):

Source/WebCore:

  • platform/ios/WebVideoFullscreenControllerAVKit.mm:

(-[WebVideoFullscreenController didFinishFullscreen:]):

Source/WebKit:

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(WebKit::NetworkSessionCocoa::NetworkSessionCocoa):

  • Platform/cocoa/WKPaymentAuthorizationDelegate.mm:

(-[WKPaymentAuthorizationDelegate completePaymentMethodSelection:]):
(-[WKPaymentAuthorizationDelegate completeShippingContactSelection:]):
(-[WKPaymentAuthorizationDelegate completeShippingMethodSelection:]):

  • UIProcess/API/Cocoa/NSAttributedString.mm:

(+[_WKAttributedStringWebViewCache configuration]):
(+[NSAttributedString _loadFromHTMLWithOptions:contentLoader:completionHandler:]):

  • UIProcess/API/Cocoa/WKBrowsingContextController.mm:

(setUpPagePolicyClient):

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _takePDFSnapshotWithConfiguration:completionHandler:]):

  • UIProcess/API/ios/WKWebViewTestingIOS.mm:

(-[WKWebView _requestTextInputContextsInRect:completionHandler:]):

  • WebProcess/Plugins/Netscape/mac/NetscapePluginMac.mm:

(WebKit::convertToNPNNString):

  • WebProcess/WebPage/mac/WKAccessibilityWebPageObjectMac.mm:

(-[WKAccessibilityWebPageObject ALLOW_DEPRECATED_IMPLEMENTATIONS_END]):

Source/WebKitLegacy/mac:

  • Misc/WebNSObjectExtras.mm:

(-[WebMainThreadInvoker forwardInvocation:]):

  • Plugins/WebNetscapePluginView.mm:

(-[WebNetscapePluginView sendEvent:isDrawRect:]):

  • WebView/WebVideoFullscreenController.mm:

(-[WebVideoFullscreenController init]):

Tools:

  • TestRunnerShared/mac/NSPasteboardAdditions.mm:

(+[NSPasteboard _modernPasteboardType:]):

  • TestWebKitAPI/Tests/JavaScriptCore/JSRunLoopTimer.mm:

(TestWebKitAPI::triggerGC):

  • TestWebKitAPI/Tests/WebCore/cocoa/WebCoreNSURLSession.mm:

(TestWebKitAPI::WebCoreNSURLSessionTest::SetUp):

  • TestWebKitAPI/Tests/WebKit/GetUserMediaNavigation.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKit/mac/ContextMenuImgWithVideo.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/Challenge.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/ContentRuleListNotification.mm:

(-[ContentRuleListNotificationDelegate webView:startURLSchemeTask:]):

  • TestWebKitAPI/Tests/WebKitCocoa/DeviceManagementRestrictions.mm:

(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/Download.mm:

(TestWebKitAPI::webViewWithDownloadMonitorSpeedMultiplier):

  • TestWebKitAPI/Tests/WebKitCocoa/DragAndDropTests.mm:

(runDragStartDataTestCase):

  • TestWebKitAPI/Tests/WebKitCocoa/InAppBrowserPrivacy.mm:

(-[InAppBrowserSchemeHandler webView:startURLSchemeTask:]):

  • TestWebKitAPI/Tests/WebKitCocoa/IndexedDBStructuredCloneBackwardCompatibility.mm:

(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/IndexedDBTempFileSize.mm:

(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/JITEnabled.mm:

(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/LocalStorageDatabaseTracker.mm:

(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/NetworkProcess.mm:

(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
  • TestWebKitAPI/Tests/WebKitCocoa/Proxy.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/ReparentWebViewTimeout.mm:

(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/ResourceLoadStatistics.mm:

(TEST):
(-[ResourceLoadStatisticsSchemeHandler webView:startURLSchemeTask:]):

  • TestWebKitAPI/Tests/WebKitCocoa/SafeBrowsing.mm:

(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:
  • TestWebKitAPI/Tests/WebKitCocoa/TLSDeprecation.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/TextManipulation.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/UIDelegate.mm:

(TEST):
(-[UITestDelegate webView:startURLSchemeTask:]):

  • TestWebKitAPI/Tests/WebKitCocoa/UserContentController.mm:

(webViewForScriptMessageHandlerMultipleHandlerRemovalTest):
(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/WKAttachmentTests.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/WKPDFView.mm:

(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-1.mm:

(-[SyncErrorScheme webView:startURLSchemeTask:]):

  • TestWebKitAPI/Tests/WebKitCocoa/WKWebViewEvaluateJavaScript.mm:
  • TestWebKitAPI/Tests/ios/DragAndDropTestsIOS.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/mac/FontManagerTests.mm:

(TestWebKitAPI::TEST):

10:34 PM Changeset in webkit [273193] by commit-queue@webkit.org
  • 5 edits in trunk

Support aspect-ratio on flexbox items
https://bugs.webkit.org/show_bug.cgi?id=219679

Patch by Rob Buis <rbuis@igalia.com> on 2021-02-19
Reviewed by Sergio Villar Senin.

Source/WebCore:

Support aspect-ratio on flexbox items by not only
considering implicit aspect-ratio in items (for example
images) but also through explicit aspect-ratio property
usage.

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::cacheIntrinsicContentLogicalHeightForFlexItem const):
(WebCore::RenderBox::computeLogicalHeight const):
Do not pass indefinite intrinsic height.
(WebCore::RenderBox::shouldComputeLogicalWidthFromAspectRatio const):
If override height is set then we can compute logical width from it.

  • rendering/RenderFlexibleBox.cpp:

(WebCore::childHasAspectRatio):
(WebCore::RenderFlexibleBox::computeMainAxisExtentForChild):
(WebCore::RenderFlexibleBox::useChildAspectRatio const):
(WebCore::RenderFlexibleBox::computeMainSizeFromAspectRatioUsing const):
(WebCore::RenderFlexibleBox::childCrossSizeShouldUseContainerCrossSize const):
(WebCore::RenderFlexibleBox::needToStretchChildLogicalHeight const):

LayoutTests:

Unskip tests that pass now.

9:52 PM Changeset in webkit [273192] by Devin Rousso
  • 16 edits
    2 copies in trunk/Source

[Payment Request] add an object data to PaymentShippingOption so that data specific to Apple Pay can be provided
https://bugs.webkit.org/show_bug.cgi?id=222211
<rdar://problem/72916508>

Reviewed by Tim Horton.

Source/WebCore:

  • Modules/paymentrequest/PaymentShippingOption.idl:
  • Modules/paymentrequest/PaymentShippingOption.h:
  • Modules/applepay/ApplePayShippingMethod.idl:
  • Modules/applepay/ApplePayShippingMethod.h:

(WebCore::ApplePayShippingMethod::encode const):
(WebCore::ApplePayShippingMethod::decode):

  • Modules/applepay/ApplePayShippingMethodData.idl: Added.
  • Modules/applepay/ApplePayShippingMethodData.h: Added.

(WebCore::ApplePayShippingMethodData::encode const):
(WebCore::ApplePayShippingMethodData::decode):
(WebCore::ApplePayShippingMethodData::decodeData):

  • Modules/paymentrequest/PaymentRequest.cpp:

(WebCore::checkAndCanonicalizeDetails):

  • Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp:

(WebCore::merge): Added.
(WebCore::convertAndValidate):
(WebCore::computeShippingMethods):
Extend from ApplePayShippingMethodData, which is also used to pull values out of the
object data from PaymentShippingOption. This way, both Apple Pay JS and PaymentRequest
can be given the same data (albeit in slightly different places) and have the same capabilities.

  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • PlatformMac.cmake:
  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:

Source/WebKit:

  • Shared/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:

(WebKit::toPKShippingMethod):

  • Platform/cocoa/WKPaymentAuthorizationDelegate.mm:

(toShippingMethod):

9:29 PM Changeset in webkit [273191] by Devin Rousso
  • 9 edits in trunk/Source/WebCore

Allow track lists other than Subtitles/Captions/Descriptions to be sorted
https://bugs.webkit.org/show_bug.cgi?id=222207
<rdar://problem/74539660>

Reviewed by Eric Carlson.

  • html/track/TextTrac.h:
  • page/CaptionUserPreferences.h:
  • page/CaptionUserPreferences.cpp:

(WebCore::CaptionUserPreferences::sortedTrackListForMenu):

  • page/CaptionUserPreferencesMediaAF.h:
  • platform/cocoa/PlaybackSessionModelMediaElement.mm:

(WebCore::PlaybackSessionModelMediaElement::updateMediaSelectionOptions):

  • page/CaptionUserPreferencesMediaAF.cpp:

(WebCore::CaptionUserPreferencesMediaAF::sortedTrackListForMenu):

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

(OverflowSupport.prototype.get tracksToMonitor):

  • Modules/mediacontrols/MediaControlsHost.cpp:

(WebCore::MediaControlsHost::sortedTrackListForMenu):
(WebCore::MediaControlsHost::showMediaControlsContextMenu):

7:46 PM Changeset in webkit [273190] by Wenson Hsieh
  • 3 edits in trunk/Source/WebKit

Unreviewed, fix some internal builds after r273184

Add a forward declaration for this (recently added) SPI, which we can safely revert once internal automation is
using an SDK with the fix for <rdar://problem/73852335>.

  • Platform/spi/ios/UIKitSPI.h:
  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _dataOwnerForPasteboard:]):

Additionally make this binary compatible with older versions of the system by adding a -respondsToSelector:
check before attempting to use the declared SPI.

7:06 PM Changeset in webkit [273189] by Chris Dumez
  • 19 edits in trunk/Source/ThirdParty/ANGLE

Unreviewed, reverting r273188.

Broke the build: Is missing a cpp file

Reverted changeset:

"Fix a number of functional regressions caused by enabling the
Metal ANGLE backend by default."
https://bugs.webkit.org/show_bug.cgi?id=220895
https://commits.webkit.org/r273188

6:09 PM Changeset in webkit [273188] by dino@apple.com
  • 19 edits in trunk/Source/ThirdParty/ANGLE

Fix a number of functional regressions caused by enabling the Metal ANGLE backend by default.
https://bugs.webkit.org/show_bug.cgi?id=220895
<rdar://problem/73539537>

Patch by Kyle Piddington <Kyle Piddington> on 2021-02-19
Reviewed by Kenneth Russell.

Fixed webgl/1.0.3/conformance/context/context-hidden-alpha.html

MTL Translator direct fixes for webgl/1.0.3/conformance/glsl/constructors/glsl-construct-*vec2 tests, Plus fix for GL_VertexIndex

Fix EmitMetal crash for missing function textureRect.

Additional fixes for 73675990, shaders-with-invariance.html, shaders-with-uniform-structs.html, struct-specifiers-in-uniforms.html, framebuffer-object-attachment.html

Fixed clamping of array elements.

  • ANGLE.xcodeproj/project.pbxproj:
  • src/compiler/translator/TranslatorMetalDirect.cpp:

(sh::TranslatorMetalDirect::translateImpl):

  • src/compiler/translator/TranslatorMetalDirect/EmitMetal.cpp:

(GenMetalTraverser::emitPostQualifier):
(GenMetalTraverser::visitBinary):
(GenMetalTraverser::BuildFuncToName):

  • src/compiler/translator/TranslatorMetalDirect/FixTypeConstructors.cpp: Added.

(sh::FixTypeTraverser::FixTypeTraverser):
(sh::FixTypeConstructors):

  • src/compiler/translator/TranslatorMetalDirect/FixTypeConstructors.h: Added.
  • src/compiler/translator/TranslatorMetalDirect/NameEmbeddedUniformStructsMetal.cpp: Added.

(sh::NameEmbeddedStructUniformsMetal):

  • src/compiler/translator/TranslatorMetalDirect/NameEmbeddedUniformStructsMetal.h: Added.
  • src/compiler/translator/TranslatorMetalDirect/Pipeline.cpp:

(SaturateVectorOf):

  • src/compiler/translator/TranslatorMetalDirect/ProgramPrelude.cpp:

(sh::ProgramPrelude::ProgramPrelude):

  • src/compiler/translator/TranslatorMetalDirect/ReduceInterfaceBlocks.cpp:

(sh::Reducer::Reducer):
(sh::ReduceInterfaceBlocks):

  • src/compiler/translator/TranslatorMetalDirect/ReduceInterfaceBlocks.h:
  • src/compiler/translator/TranslatorMetalDirect/SeparateCompoundStructDeclarations.cpp:
  • src/libANGLE/renderer/load_functions_table_autogen.cpp:
  • src/libANGLE/renderer/metal/ContextMtl.mm:

(rx::ContextMtl::drawElementsImpl):

  • src/libANGLE/renderer/metal/IOSurfaceSurfaceMtl.h:
  • src/libANGLE/renderer/metal/IOSurfaceSurfaceMtl.mm:

(rx::IOSurfaceSurfaceMtl::IOSurfaceSurfaceMtl):
(rx::IOSurfaceSurfaceMtl::createBackingTexture):

  • src/libANGLE/renderer/metal/RenderBufferMtl.mm:

(rx::RenderbufferMtl::setStorageImpl):

  • src/libANGLE/renderer/metal/VertexArrayMtl.h:
  • src/libANGLE/renderer/metal/VertexArrayMtl.mm:

(rx::VertexArrayMtl::getIndexBuffer):
(rx::VertexArrayMtl::convertIndexBuffer):
(rx::VertexArrayMtl::streamIndexBufferFromClient):

  • src/libANGLE/renderer/metal/mtl_utils.mm:

(rx::mtl::InitializeDepthStencilTextureContentsGPU):

  • src/libANGLE/renderer/metal/shaders/blit.metal:
  • src/libANGLE/renderer/metal/shaders/mtl_default_shaders_src_autogen.inc:
6:01 PM Changeset in webkit [273187] by ysuzuki@apple.com
  • 16 edits in trunk/Source/JavaScriptCore

[JSC] Not allocating empty object for Intl options
https://bugs.webkit.org/show_bug.cgi?id=222203

Reviewed by Mark Lam.

This patch introduces Optional<JSObject&> to Intl options to explicitly mark it as maybe-null.
This maybe-null object can appear when the options is undefined. According to the spec, we allocates
empty object (with null Prototype?) for this case, but accessing this object's property is non-observable
since this does not have Prototype?. As a result, we can skip allocation and accesses in this case.

This can also pave the way to avoiding allocations of options objects for Date#toLocaleString etc.'s specific cases.

  • runtime/IntlCollator.cpp:

(JSC::IntlCollator::initializeCollator):

  • runtime/IntlDateTimeFormat.cpp:

(JSC::IntlDateTimeFormat::initializeDateTimeFormat):
(JSC::toDateTimeOptionsAnyDate): Deleted.

  • runtime/IntlDisplayNames.cpp:

(JSC::IntlDisplayNames::initializeDisplayNames):

  • runtime/IntlListFormat.cpp:

(JSC::IntlListFormat::initializeListFormat):

  • runtime/IntlLocale.cpp:

(JSC::IntlLocale::initializeLocale):

  • runtime/IntlNumberFormat.cpp:

(JSC::IntlNumberFormat::initializeNumberFormat):

  • runtime/IntlNumberFormat.h:
  • runtime/IntlNumberFormatInlines.h:

(JSC::setNumberFormatDigitOptions):

  • runtime/IntlObject.cpp:

(JSC::intlBooleanOption):
(JSC::intlStringOption):
(JSC::intlNumberOption):
(JSC::supportedLocales):

  • runtime/IntlObject.h:
  • runtime/IntlObjectInlines.h:

(JSC::intlOption):
(JSC::intlGetOptionsObject): Deleted.

  • runtime/IntlPluralRules.cpp:

(JSC::IntlPluralRules::initializePluralRules):

  • runtime/IntlPluralRules.h:
  • runtime/IntlRelativeTimeFormat.cpp:

(JSC::IntlRelativeTimeFormat::initializeRelativeTimeFormat):

  • runtime/IntlSegmenter.cpp:

(JSC::IntlSegmenter::initializeSegmenter):

5:07 PM Changeset in webkit [273186] by Kate Cheney
  • 3 edits in trunk/Source/WebKit

Add back old media playback API but deprecated
https://bugs.webkit.org/show_bug.cgi?id=222206
<rdar://problem/74539125>

We should add these back in case clients adopted them before the name
update in https://trac.webkit.org/changeset/272923/webkit.

Reviewed by Tim Horton.

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

(-[WKWebView pauseAllMediaPlayback:]):
(-[WKWebView suspendAllMediaPlayback:]):
(-[WKWebView resumeAllMediaPlayback:]):
(-[WKWebView closeAllMediaPresentations:]):
(-[WKWebView requestMediaPlaybackState:]):

4:55 PM Changeset in webkit [273185] by Patrick Angle
  • 2 edits in trunk/Source/WebCore

Web Inspector: Implement Grid Overlay "Show line names" drawing
https://bugs.webkit.org/show_bug.cgi?id=222006
<rdar://problem/74409722>

Reviewed by BJ Burg.

Followup for r273155 related to WTF::String::append performance.

  • inspector/InspectorOverlay.cpp:

(WebCore::gridLineNames):

  • Use const Vector<String>& to avoid copying the entire Vector and churning the reference count on the strings.

(WebCore::InspectorOverlay::drawGridOverlay):

  • Use WTF::StringBuilder instead of WTF::String::append for line label contents.
4:51 PM Changeset in webkit [273184] by Wenson Hsieh
  • 28 edits
    2 adds in trunk

[iOS] Specify a _UIDataOwner when reading or writing from the system pasteboard
https://bugs.webkit.org/show_bug.cgi?id=222072
<rdar://problem/74208576>

Reviewed by Devin Rousso.

Source/WebCore:

Add a static helper method to PlatformPasteboard, so that it can perform arbitrary pasteboard operations
within the context of a given DataOwnerType. We then use this static helper to wrap all pasteboard access
(reading, writing, etc.) inside calls to +[UIPasteboard _performAsDataOwner:block:] -- see WebKit ChangeLog
for more details.

Tests: UIPasteboardTests.PerformAsDataOwnerWhenCopying

UIPasteboardTests.PerformAsDataOwnerWhenPasting

  • Headers.cmake:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/DataOwnerType.h: Added.

Add a new enum to represent a data owner type.

  • platform/PlatformPasteboard.h:
  • platform/ios/PlatformPasteboardIOS.mm:

(WebCore::PlatformPasteboard::performAsDataOwner):

  • platform/libwpe/PlatformPasteboardLibWPE.cpp:

(WebCore::PlatformPasteboard::performAsDataOwner):

  • platform/mac/PlatformPasteboardMac.mm:

(WebCore::PlatformPasteboard::performAsDataOwner):

Source/WebCore/PAL:

Import UIPasteboard_Private.h so that PlatformPasteboardIOS.mm can use the new SPI.

  • pal/spi/ios/UIKitSPI.h:

Source/WebKit:

Adds WebKit2 support for tagging PlatformPasteboard with the content view's pasteboard data owner type. See
below for more details.

  • Platform/spi/ios/UIKitSPI.h:

Import UIPasteboard_Private.h so that we know about +_performAsDataOwner:block: in the API tests.

  • UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:

(WebKit::WebPasteboardProxy::getPasteboardTypes):
(WebKit::WebPasteboardProxy::getPasteboardPathnamesForType):
(WebKit::WebPasteboardProxy::getPasteboardStringForType):
(WebKit::WebPasteboardProxy::getPasteboardStringsForType):
(WebKit::WebPasteboardProxy::getPasteboardBufferForType):
(WebKit::WebPasteboardProxy::getPasteboardChangeCount):
(WebKit::WebPasteboardProxy::getPasteboardColor):
(WebKit::WebPasteboardProxy::getPasteboardURL):
(WebKit::WebPasteboardProxy::addPasteboardTypes):
(WebKit::WebPasteboardProxy::setPasteboardTypes):
(WebKit::WebPasteboardProxy::setPasteboardURL):
(WebKit::WebPasteboardProxy::setPasteboardColor):
(WebKit::WebPasteboardProxy::setPasteboardStringForType):
(WebKit::WebPasteboardProxy::containsURLStringSuitableForLoading):

Make all of these methods use dataOwner() with either a Read or Write pasteboard access intent to grab the
data owner type from the view corresponding to the page identifier, and then wrap all pasteboard access within
PlatformPasteboard's new performAsDataOwner static helper.

(WebKit::WebPasteboardProxy::urlStringSuitableForLoading):
(WebKit::WebPasteboardProxy::setPasteboardBufferForType):
(WebKit::WebPasteboardProxy::getNumberOfFiles):
(WebKit::WebPasteboardProxy::typesSafeForDOMToReadAndWrite):
(WebKit::WebPasteboardProxy::writeCustomData):
(WebKit::WebPasteboardProxy::allPasteboardItemInfo):
(WebKit::WebPasteboardProxy::informationForItemAtIndex):
(WebKit::WebPasteboardProxy::getPasteboardItemsCount):
(WebKit::WebPasteboardProxy::readStringFromPasteboard):
(WebKit::WebPasteboardProxy::readURLFromPasteboard):
(WebKit::WebPasteboardProxy::readBufferFromPasteboard):
(WebKit::WebPasteboardProxy::containsStringSafeForDOMToReadForType):
(WebKit::WebPasteboardProxy::writeURLToPasteboard):
(WebKit::WebPasteboardProxy::writeWebContentToPasteboard):
(WebKit::WebPasteboardProxy::writeImageToPasteboard):
(WebKit::WebPasteboardProxy::writeStringToPasteboard):
(WebKit::WebPasteboardProxy::updateSupportedTypeIdentifiers):
(WebKit::WebPasteboardProxy::determineDataOwner const):

Use the given page identifier in various pasteboard IPC endpoints in WebPasteboardProxy to ask WebPageProxy
for its pasteboard data owner type when reading or writing pasteboard data.

  • UIProcess/PageClient.h:

Add a client hook to return a DataOwnerType enum, given a PasteboardAccessIntent -- that is, copy (write) or
paste (read).

(WebKit::PageClient::dataOwnerForPasteboard const):

  • UIProcess/PasteboardAccessIntent.h: Added.
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::dataOwnerForPasteboard const):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPasteboardProxy.h:
  • UIProcess/WebPasteboardProxy.messages.in:
  • UIProcess/ios/PageClientImplIOS.h:
  • UIProcess/ios/PageClientImplIOS.mm:

(WebKit::PageClientImpl::dataOwnerForPasteboard const):

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

(coreDataOwnerType):
(-[WKContentView _dataOwnerForPasteboard:]):

Return -_dataOwnerForPaste or -_dataOwnerForCopy (depending on the PasteboardAccessIntent).

  • WebKit.xcodeproj/project.pbxproj:

Source/WTF:

  • wtf/PlatformHave.h:

Turn several compile-time guards previously in PlatformPasteboardIOS.mm into HAVE()-s.

Tools:

Add a couple of new API tests to verify that +[UIPasteboard _performAsDataOwner:block:] is invoked with the
expected data owner type when copying and pasting.

  • TestWebKitAPI/Tests/ios/UIPasteboardTests.mm:

(+[TestUIPasteboard _performAsDataOwner:block:]):
(TestWebKitAPI::TEST):

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

(-[WKWebView contentsAsString]):

Additionally add a helper method to grab a WKWebView's contents as an NSString, just for convenience.

4:46 PM Changeset in webkit [273183] by Chris Dumez
  • 33 edits in trunk/Source

Make format of release logging more consistent to facilitate grepping
https://bugs.webkit.org/show_bug.cgi?id=222200

Reviewed by Simon Fraser.

Source/WebCore:

  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::setMainDocumentError):
(WebCore::DocumentLoader::mainReceivedError):
(WebCore::DocumentLoader::notifyFinished):
(WebCore::DocumentLoader::continueAfterContentPolicy):
(WebCore::DocumentLoader::startLoadingMainResource):
(WebCore::DocumentLoader::cancelMainResourceLoad):

  • loader/SubresourceLoader.cpp:

(WebCore::SubresourceLoader::didFail):
(WebCore::SubresourceLoader::willCancel):

  • workers/service/ServiceWorker.cpp:

(WebCore::ServiceWorker::ServiceWorker):
(WebCore::ServiceWorker::updateState):

  • workers/service/ServiceWorkerContainer.cpp:

(WebCore::ServiceWorkerContainer::addRegistration):
(WebCore::ServiceWorkerContainer::updateRegistration):
(WebCore::ServiceWorkerContainer::jobResolvedWithRegistration):

  • workers/service/ServiceWorkerRegistration.cpp:

(WebCore::ServiceWorkerRegistration::ServiceWorkerRegistration):

  • workers/service/server/SWServerJobQueue.cpp:

(WebCore::SWServerJobQueue::scriptFetchFinished):
(WebCore::SWServerJobQueue::didResolveRegistrationPromise):

Source/WebKit:

  • NetworkProcess/NetworkCORSPreflightChecker.cpp:

(WebKit::NetworkCORSPreflightChecker::didCompleteWithError):

  • NetworkProcess/NetworkLoadChecker.cpp:

(WebKit::NetworkLoadChecker::checkCORSRequestWithPreflight):

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::didReceiveMessage):
(WebKit::NetworkProcess::didReceiveSyncMessage):
(WebKit::NetworkProcess::initializeNetworkProcess):
(WebKit::NetworkProcess::prepareToSuspend):

  • NetworkProcess/PingLoad.cpp:

(WebKit::PingLoad::didReceiveResponse):
(WebKit::PingLoad::didCompleteWithError):

  • NetworkProcess/PreconnectTask.cpp:

(WebKit::PreconnectTask::didFailLoading):

  • NetworkProcess/ServiceWorker/WebSWServerConnection.cpp:

(WebKit::WebSWServerConnection::startFetch):

  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:

(WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):
(WebKit::NetworkDataTaskCocoa::willPerformHTTPRedirection):

  • Platform/IPC/Connection.cpp:

(IPC::Connection::waitForSyncReply):

  • UIProcess/ApplicationStateTracker.mm:

(WebKit::ApplicationStateTracker::ApplicationStateTracker):

  • UIProcess/AuxiliaryProcessProxy.cpp:

(WebKit::AuxiliaryProcessProxy::terminate):

  • UIProcess/ProcessThrottler.cpp:

(WebKit::ProcessThrottler::setAssertionType):
(WebKit::ProcessThrottler::updateAssertionIfNeeded):
(WebKit::ProcessThrottler::sendPrepareToSuspendIPC):

  • UIProcess/ProvisionalPageProxy.cpp:

(WebKit::ProvisionalPageProxy::ProvisionalPageProxy):
(WebKit::ProvisionalPageProxy::processDidTerminate):
(WebKit::ProvisionalPageProxy::cancel):
(WebKit::ProvisionalPageProxy::loadData):
(WebKit::ProvisionalPageProxy::loadRequest):
(WebKit::ProvisionalPageProxy::goToBackForwardItem):
(WebKit::ProvisionalPageProxy::didCreateMainFrame):
(WebKit::ProvisionalPageProxy::didStartProvisionalLoadForFrame):
(WebKit::ProvisionalPageProxy::didFailProvisionalLoadForFrame):
(WebKit::ProvisionalPageProxy::didCommitLoadForFrame):
(WebKit::ProvisionalPageProxy::didCreateContextForVisibilityPropagation):

  • UIProcess/WebBackForwardCache.cpp:

(WebKit::WebBackForwardCache::addEntry):
(WebKit::WebBackForwardCache::removeEntry):
(WebKit::WebBackForwardCache::takeSuspendedPage):

  • UIProcess/WebBackForwardCacheEntry.cpp:

(WebKit::WebBackForwardCacheEntry::expirationTimerFired):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::receivedNavigationPolicyDecision):
(WebKit::WebPageProxy::commitProvisionalPage):
(WebKit::WebPageProxy::continueNavigationInNewProcess):
(WebKit::WebPageProxy::didStartProvisionalLoadForFrameShared):
(WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrameShared):
(WebKit::WebPageProxy::willPerformClientRedirectForFrame):
(WebKit::WebPageProxy::didCancelClientRedirectForFrame):
(WebKit::WebPageProxy::didFailProvisionalLoadForFrameShared):
(WebKit::WebPageProxy::didCommitLoadForFrame):
(WebKit::WebPageProxy::didFinishDocumentLoadForFrame):
(WebKit::WebPageProxy::didFinishLoadForFrame):
(WebKit::WebPageProxy::didFailLoadForFrame):
(WebKit::WebPageProxy::didSameDocumentNavigationForFrame):
(WebKit::WebPageProxy::decidePolicyForNavigationAction):
(WebKit::WebPageProxy::didPerformClientRedirectShared):
(WebKit::WebPageProxy::dispatchProcessDidTerminate):

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::gpuProcessCrashed):

  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::updateServiceWorkerProcessAssertion):

  • UIProcess/ios/ProcessAssertionIOS.mm:

(-[WKProcessAssertionBackgroundTaskManager _updateBackgroundTask]):
(-[WKProcessAssertionBackgroundTaskManager _handleBackgroundTaskExpiration]):
(-[WKProcessAssertionBackgroundTaskManager _handleBackgroundTaskExpirationOnMainThread]):
(WebKit::ProcessAssertion::ProcessAssertion):
(WebKit::ProcessAssertion::~ProcessAssertion):
(WebKit::ProcessAssertion::processAssertionWasInvalidated):

  • UIProcess/ios/WKApplicationStateTrackingView.mm:

(-[WKApplicationStateTrackingView willMoveToWindow:]):
(-[WKApplicationStateTrackingView didMoveToWindow]):

  • UIProcess/ios/WKContentView.mm:

(-[WKContentView _setupVisibilityPropagationView]):
(-[WKContentView _setupVisibilityPropagationViewForGPUProcess]):

  • WebAuthnProcess/WebAuthnProcess.cpp:

(WebKit::WebAuthnProcess::prepareToSuspend):

  • WebProcess/WebCoreSupport/WebResourceLoadObserver.cpp:

(WebKit::WebResourceLoadObserver::logUserInteractionWithReducedTimeResolution):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::didReceivePolicyDecision):

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::initializeWebProcess):
(WebKit::WebProcess::prepareToSuspend):

  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::updateProcessName):
(WebKit::WebProcess::updateFreezerStatus):

4:31 PM Changeset in webkit [273182] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[ macOS Wk 2 ] inspector/debugger/async-stack-trace-basic.html is flakey timing out
https://bugs.webkit.org/show_bug.cgi?id=222209

Unreviewed test gardening.

Patch by Robert Jenner <Robert Jenner> on 2021-02-19

  • platform/mac-wk2/TestExpectations: Marking as flakey timeout to skip in EWS, timeouts also occurring in production.
4:26 PM Changeset in webkit [273181] by commit-queue@webkit.org
  • 7 edits in trunk

NSError returned by WebKit API should actually conform to NSSecureCoding
https://bugs.webkit.org/show_bug.cgi?id=222204
<rdar://problem/63893583>

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

Source/WebKit:

When an NSError is encoded, its userInfo is encoded, which means everything we put in userInfo should be encodable.
WKReloadFrameErrorRecoveryAttempter was not, so let's make it! When encoded, it will just encode nothing.
When decoded, it will produce a WKReloadFrameErrorRecoveryAttempter that does nothing, which is valid behavior,
and more desirable than crashing.

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

(-[WKReloadFrameErrorRecoveryAttempter encodeWithCoder:]):
(-[WKReloadFrameErrorRecoveryAttempter initWithCoder:]):
(+[WKReloadFrameErrorRecoveryAttempter supportsSecureCoding]):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/Challenge.mm:

(TestWebKitAPI::TEST):

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

(-[TestNavigationDelegate waitForDidFailProvisionalNavigation]):

4:18 PM Changeset in webkit [273180] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

CrashTracer: com.apple.WebKit.Networking at WebKit: WTF::Detail::CallableWrapper<WebKit::PrivateClickMeasurementManager::firePendingAttributionRequests()
https://bugs.webkit.org/show_bug.cgi?id=222201

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

  • NetworkProcess/PrivateClickMeasurementManager.cpp:

(WebKit::PrivateClickMeasurementManager::attribute):
(WebKit::PrivateClickMeasurementManager::firePendingAttributionRequests):

3:50 PM Changeset in webkit [273179] by Truitt Savell
  • 2 edits in trunk/LayoutTests

inspector/animation/lifecycle-css-transition.html is a flakey timeout on EWS
https://bugs.webkit.org/show_bug.cgi?id=222195

Unreviewed testing gardneing.

Patch by Robert Jenner <Robert Jenner> on 2021-02-19

  • platform/mac/TestExpectations: Marking as flakey timeout to skip in EWS, but not in produciton.
3:38 PM Changeset in webkit [273178] by Alan Coon
  • 2 edits in branches/safari-611-branch/Source/WebCore

Cherry-pick r273069. rdar://problem/74500798

Backgrounding a page that is playing and capturing audio will stop audio playing
https://bugs.webkit.org/show_bug.cgi?id=222032
<rdar://problem/74389497>

Reviewed by Eric Carlson.

When a page gets backgrounded while capturing, it will continue doing capture, as can be seen with the red status bar.
In that case, for video conferencing, it makes sense that audio being played continues playing, at least for MediaStreamTrack.
The red status bar is an indication that the call is continuing.
Also, for MediaStreamTrack, audio and video content are not buffered: they are played or discarded.
The media player, whenever not visible, will stop processing video but will continue processing audio if not interrupted.
This makes it working for websites using video elements for both audio and video, which is more common than websites using video elements for video and audio elements for audio.

Manually tested.

  • html/HTMLMediaElement.cpp: (WebCore::HTMLMediaElement::shouldOverrideBackgroundPlaybackRestriction const):

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

3:38 PM Changeset in webkit [273177] by Alan Coon
  • 5 edits
    2 adds in branches/safari-611-branch

Cherry-pick r273003. rdar://problem/74500696

Animated keyframe style needs to go through full style adjuster
https://bugs.webkit.org/show_bug.cgi?id=222036
rdar://72421747

Reviewed by Zalan Bujtas.

Source/WebCore:

We can create unadjusted styles via keyframe animations and those may cause problems in rendering.

Test: fast/animation/animation-position-crash.html

  • style/StyleAdjuster.cpp: (WebCore::Style::Adjuster::adjustAnimatedStyle):

Make this a member function and invoke Adjuster::adjust.
Simplify the z-index adjustment since it is mostly handled by adjust.

  • style/StyleAdjuster.h:
  • style/StyleTreeResolver.cpp:

Always use style adjuster for keyframe animation.

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

LayoutTests:

  • fast/animation/animation-position-crash-expected.html: Added.
  • fast/animation/animation-position-crash.html: Added.

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

3:37 PM Changeset in webkit [273176] by Alan Coon
  • 4 edits in branches/safari-611-branch/Source/WebKit

Cherry-pick r272990. rdar://problem/74500669

Regression(r268097): Calling processDidTerminate delegate asynchronously is risky compatibility-wise
https://bugs.webkit.org/show_bug.cgi?id=222011

Reviewed by Carlos Garcia Campos.

Calling processDidTerminate delegate asynchronously like we did in r268097 is risky compatibility-wise.
This caused breakage in at least 2 client applications. While this can be dealt with on the client side,
it would be better to fix what r268097 was trying to fix without making the delegate call asynchronous.
The reason calling the delegate asynchronously is risky is because some view state may have time to get
reset by the time the client gets notified on the crash, potentially confusing the crash handling logic
in the client.

No new tests, covered by WKNavigation.ReloadRelatedViewsInProcessDidTerminate API test that is
still passing even though the delegate call is no longer asynchronous.

  • UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::commitProvisionalPage): (WebKit::WebPageProxy::resetStateAfterProcessTermination): (WebKit::WebPageProxy::dispatchProcessDidTerminate):
  • UIProcess/WebPageProxy.h:
  • UIProcess/WebProcessProxy.cpp: (WebKit::WebProcessProxy::processDidTerminateOrFailedToLaunch): (WebKit::WebProcessProxy::requestTermination):

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

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

Cherry-pick r272938. rdar://problem/74500752

operationNewArrayWithSize should call tryCreate instead of create
https://bugs.webkit.org/show_bug.cgi?id=221983
<rdar://74265630>

Reviewed by Mark Lam.

I disassembled crashlogs inside operationNewArrayWithSize. They are crashing
inside array allocation. They are crashing on OOM. By code inspection,
operationNewArrayWithSizeAndHint has the same problem.

Callsites to both functions already handle exceptions being thrown, so
converting both operationNewArrayWithSize and operationNewArrayWithSizeAndHint
to throw instead of crash on OOM is trivial.

I wasn't able to come up with a test case for this.

  • dfg/DFGOperations.cpp: (JSC::DFG::JSC_DEFINE_JIT_OPERATION):
  • runtime/ObjectConstructor.cpp: (JSC::ownPropertyKeys):

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

3:37 PM Changeset in webkit [273174] by Alan Coon
  • 2 edits in branches/safari-611-branch/Source/WebCore

Cherry-pick r272931. rdar://problem/74500616

RenderElement::containingBlockForAbsolutePosition may call RenderObject::containingBlock recursively
https://bugs.webkit.org/show_bug.cgi?id=221976
<rdar://problem/72775667>

Reviewed by Simon Fraser.

When a RenderInline happens to be absolute positioned (this is a highly incorrect state, see webkit.org/b/221994), containingBlockForAbsolutePosition() calls containingBlock()
with |this| and in return containingBlock() calls back on containingBlockForAbsolutePosition() with the same renderer.
This patch ensures that we always call containingBlock() from containingBlockForAbsolutePosition() with an ancestor -mostly with the parent().

  • rendering/RenderElement.cpp: (WebCore::RenderElement::containingBlockForAbsolutePosition const):

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

3:37 PM Changeset in webkit [273173] by Alan Coon
  • 4 edits in branches/safari-611-branch

Cherry-pick r272927. rdar://problem/74500651

REGRESSION(r271515): ::marker fired at wrong time
https://bugs.webkit.org/show_bug.cgi?id=221961
<rdar://problem/74397846>

Reviewed by Dean Jackson.

Source/WebCore:

Restore the order in which we generate CSS Animations for pseudo-elements as it was prior to r271515.

  • style/StyleTreeResolver.cpp: (WebCore::Style::TreeResolver::resolveElement):

LayoutTests:

Remove flakiness for this test since it didn't allow us to spot the regression introduced by r271515.

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

3:37 PM Changeset in webkit [273172] by Alan Coon
  • 2 edits in branches/safari-611-branch/Source/WebCore

Cherry-pick r272913. rdar://problem/74500965

AVAudioSessionCaptureDeviceManager should disable its audio session in a background thread
https://bugs.webkit.org/show_bug.cgi?id=221949
<rdar://problem/74315824>

Reviewed by Eric Carlson.

Manually tested.

  • platform/mediastream/ios/AVAudioSessionCaptureDeviceManager.mm: (WebCore::AVAudioSessionCaptureDeviceManager::disableAllDevicesQuery): Hop to a background thread before disabling the audio session. Abort if audio session is no longer marked as unneeded.

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

3:37 PM Changeset in webkit [273171] by Alan Coon
  • 3 edits
    2 adds in branches/safari-611-branch

Cherry-pick r272379. rdar://problem/74500599

Supplementary code points (U+10000 - U+10FFFF) are not shaped correctly in the fast text codepath
https://bugs.webkit.org/show_bug.cgi?id=221356
<rdar://problem/72555297>

Reviewed by Zalan Bujtas.

Source/WebCore:

Supplementary code points are represented in UTF-16 as two adjacent (surrogate) code units. When we map code
points to glyphs, we were originally mapping these two code units to a single glyph. However, shaping
routines require that the number of code units and glyphs be equal, by injecting a 0 glyph for the trailing
surrogate.

Luckily, we don't actually have to delete these extra 0 glyphs, because the shaping engine will do that for us.

Test: fast/text/multi-code-unit-simple-path.html

  • platform/graphics/WidthIterator.cpp: (WebCore::WidthIterator::advanceInternal):

LayoutTests:

  • fast/text/multi-code-unit-simple-path-expected-mismatch.html: Added.
  • fast/text/multi-code-unit-simple-path.html: Added.

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

3:37 PM Changeset in webkit [273170] by Alan Coon
  • 4 edits in branches/safari-611-branch/Source/WebKit

Revert r246382. rdar://problem/74501060

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

[iOS] Remove access to IOSurfaceAcceleratorClient
https://bugs.webkit.org/show_bug.cgi?id=222199
<rdar://problem/73518610>

Reviewed by Brent Fulgham.

Remove access to IOSurfaceAcceleratorClient in the WebContent process on iOS when the GPU process is enabled.
This patch also adds the IOKit filter from IOSurfaceRootUserClient when the GPU process is not enabled, to
the rule for IOSurfaceRootUserClient when the GPU process is enabled.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
3:16 PM Changeset in webkit [273168] by Truitt Savell
  • 2 edits in trunk/LayoutTests

css3/calc/transforms-translate.html is a flakey image failure in EWS
https://bugs.webkit.org/show_bug.cgi?id=222205

Unreviewed test gardening.

Patch by Robert Jenner <Robert Jenner> on 2021-02-19

  • platform/mac/TestExpectations: Marking as flakey Image Failure to skip in EWS, but not in production.
3:15 PM Changeset in webkit [273167] by jiewen_tan@apple.com
  • 15 edits
    4 adds in trunk

PCM: Generate secret token and corresponding unlinkable token
https://bugs.webkit.org/show_bug.cgi?id=222019
<rdar://problem/73581412>

Reviewed by John Wilander.

Source/WebCore:

Covered by API tests.

This patch utilizes RSABSSA to generate secret token for PCM fraud prevention.

  • Configurations/WebCore.xcconfig:
  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:

Paperwork to link CryptoKitCBridging.

  • loader/PrivateClickMeasurement.cpp:

(WebCore::PrivateClickMeasurement::EphemeralSourceNonce::isValid const):
(WebCore::PrivateClickMeasurement::setEphemeralSourceNonce):

  • loader/PrivateClickMeasurement.h:

(WebCore::PrivateClickMeasurement::attributeOnSite const):
(WebCore::PrivateClickMeasurement::ephemeralSourceNonce const):
(WebCore::PrivateClickMeasurement::clearEphemeralSourceNonce):
(WebCore::PrivateClickMeasurement::EphemeralSourceNonce::EphemeralSourceNonce): Deleted.
(WebCore::PrivateClickMeasurement::EphemeralSourceNonce::isValid const): Deleted.
(WebCore::PrivateClickMeasurement::setEphemeralSourceNonce): Deleted.
Groups functionalities behind HAVE_RSA_BSSA.

  • loader/cocoa/PrivateClickMeasurementCocoa.mm: Added.

(WebCore::PrivateClickMeasurement::blindedSecretJson):
(WebCore::PrivateClickMeasurement::calculatePersistentBlindedToken):
Introduces new methods to generate the blinded secrets and unlinkable tokens.

Source/WTF:

  • wtf/PlatformHave.h:

Adds a compile time flag for RSABSSA.

Tools:

  • TestWebKitAPI/Tests/WebCore/PrivateClickMeasurement.cpp:

(TestWebKitAPI::TEST):
Add tests.

3:01 PM Changeset in webkit [273166] by Truitt Savell
  • 2 edits in trunk/LayoutTests

media/modern-media-controls/tracks-support/tracks-support-audio-tracks.html is a flakey timeout on EWS
https://bugs.webkit.org/show_bug.cgi?id=222197

Unreviewed test gardening.

Patch by Robert Jenner <Robert Jenner> on 2021-02-19

  • platform/mac/TestExpectations: Marking as flakey time out to skip in EWS, but not in production.
2:56 PM Changeset in webkit [273165] by jer.noble@apple.com
  • 2 edits in trunk/Source/WTF

[Cocoa] Enable Opus decode support by default
https://bugs.webkit.org/show_bug.cgi?id=222131

Reviewed by Eric Carlson.

  • Scripts/Preferences/WebPreferencesExperimental.yaml:
1:35 PM Changeset in webkit [273164] by Nikita Vasilyev
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: CSS Grid Inspector: use a color palette for default grid overlay colors
https://bugs.webkit.org/show_bug.cgi?id=222161

Reviewed by Devin Rousso.

Define a 5-color palette.

  • UserInterface/Controllers/OverlayManager.js:

(WI.OverlayManager):
(WI.OverlayManager.prototype.showGridOverlay):
(WI.OverlayManager.prototype.colorForNode):
(WI.OverlayManager.prototype._handleMainResourceDidChange):

  • UserInterface/Views/CSSGridSection.js:

(WI.CSSGridSection.prototype.layout):

1:28 PM Changeset in webkit [273163] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

Legacy CDM doesn't work when GPU media process is enabled
https://bugs.webkit.org/show_bug.cgi?id=222163
rdar://74254335

Patch by Jean-Yves Avenard <Jean-Yves Avenard> on 2021-02-19
Reviewed by Eric Carlson.

We don't have an infrastructure to generate CDM keys

  • WebProcess/GPU/media/RemoteLegacyCDMSession.cpp:

(WebKit::RemoteLegacyCDMSession::update):
Don't unditionally report that an error occurred, but the result of the actual proxied operation in the content process.

1:04 PM Changeset in webkit [273162] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[iOS] Partially revert r272973
https://bugs.webkit.org/show_bug.cgi?id=222168

Unreviewed, partially reverting r272973.

Partially revert r272973, since it appears to have caused a Safari launch regression.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
1:04 PM Changeset in webkit [273161] by Truitt Savell
  • 2 edits in trunk/LayoutTests

media/media-extension-with-fragment.html is crashing on EWS
https://bugs.webkit.org/show_bug.cgi?id=222185

Unreviewed test gardening.

Patch by Robert Jenner <Robert Jenner> on 2021-02-19

  • platform/mac/TestExpectations: Marking as Crash to skip in EWS, but not in production.
12:50 PM Changeset in webkit [273160] by msaboff@apple.com
  • 5 edits
    14 adds in trunk

Minor fixes to RegExp match indices after r273086
https://bugs.webkit.org/show_bug.cgi?id=222157

Reviewed by Yusuke Suzuki.

JSTests:

Added a new test to verify that all flag RegExp flag combinations work round tripping
from flags to flag proerties and back.
Added standalone versions of the updated regexp-match-indices from the PR
https://github.com/tc39/test262/pull/2934 as JSTest/stress test.
Disabled the regexp-match-indices feature test in test262 until the pull request
with updated tests land and we update the WebKit version.
This is tracked in https://bugs.webkit.org/show_bug.cgi?id=222142.

  • stress/regexp-all-flags.js: Added.

(flagsFromVariation):
(setPropertiesForVariation):
(missingPropertiesForVariation):
(test.let.flagsSet.get call):
(test):

  • stress/test262-indices-array-element.js: Added.

(assertSameValue):

  • stress/test262-indices-array-matched.js: Added.

(assertSameValue):
(assertCompareArray):

  • stress/test262-indices-array-non-unicode-match.js: Added.

(assertSameValue):
(assertCompareArray):
(assertDeepEqual):
(verifyProperty):

  • stress/test262-indices-array-properties.js: Added.

(verifyProperty):

  • stress/test262-indices-array-unicode-match.js: Added.

(assertSameValue):
(assertCompareArray):
(assertDeepEqual):
(verifyProperty):

  • stress/test262-indices-array-unicode-property-names.js: Added.

(assertCompareArray):

  • stress/test262-indices-array-unmatched.js: Added.

(assertSameValue):

  • stress/test262-indices-array.js: Added.

(assert):
(assertSameValue):

  • stress/test262-indices-groups-object-undefined.js: Added.

(verifyProperty):

  • stress/test262-indices-groups-object-unmatched.js: Added.

(assertSameValue):
(assertCompareArray):

  • stress/test262-indices-groups-object.js: Added.

(assertSameValue):
(assertCompareArray):
(verifyProperty):

  • stress/test262-indices-groups-properties.js: Added.

(assertCompareArray):
(verifyProperty):

  • stress/test262-indices-property.js: Added.

(assertSameValue):
(verifyProperty):

  • test262/config.yaml:

Source/JavaScriptCore:

When hasIndices is true, but there aren't any named groups, the spec says that we should
create the indices.groups property is the value undefined.
Increased the size of FlagsString to 7 plus terminater to account for the new 'd' flags.

  • runtime/RegExpMatchesArray.h:

(JSC::createRegExpMatchesArray):

  • runtime/RegExpPrototype.cpp:
12:47 PM Changeset in webkit [273159] by Devin Rousso
  • 38 edits
    1 copy
    1 add in trunk/Source

[Payment Request] add support for Apple Pay payment method mode
https://bugs.webkit.org/show_bug.cgi?id=222128
<rdar://problem/72320278>

Reviewed by Wenson Hsieh.

Source/WebCore:

  • Modules/applepay/ApplePayPaymentMethodModeUpdate.idl: Added.
  • Modules/applepay/ApplePayPaymentMethodModeUpdate.h: Added.

(WebCore::ApplePayPaymentMethodModeUpdate::encode const):
(WebCore::ApplePayPaymentMethodModeUpdate::decode):
Allow all aspects of the current payment request to be updated.

  • Modules/applepay/ApplePaySession.h:
  • Modules/applepay/ApplePaySession.cpp:

(WebCore::convertAndValidate):
(WebCore::ApplePaySession::didChangePaymentMethodMode): Added.
(WebCore::ApplePaySession::canSuspendWithoutCanceling const):
(WebCore::ApplePaySession::canBegin const):
(WebCore::ApplePaySession::canAbort const):
(WebCore::ApplePaySession::canCancel const):
(WebCore::ApplePaySession::canCompleteShippingMethodSelection const):
(WebCore::ApplePaySession::canCompleteShippingContactSelection const):
(WebCore::ApplePaySession::canCompletePaymentMethodSelection const):
(WebCore::ApplePaySession::canCompletePaymentMethodModeChange const): Added.
(WebCore::ApplePaySession::canCompletePayment const):
(WebCore::ApplePaySession::isFinalState const):
Dispatch a new event for when the payment method mode changes and add a new method to be
called inside that event handler.

  • Modules/applepay/paymentrequest/ApplePayPaymentHandler.h:
  • Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp:

(WebCore::ApplePayPaymentHandler::computeErrors const): Added.
(WebCore::ApplePayPaymentHandler::detailsUpdated):
(WebCore::ApplePayPaymentHandler::shippingAddressUpdated):
(WebCore::ApplePayPaymentHandler::shippingOptionUpdated):
(WebCore::ApplePayPaymentHandler::paymentMethodUpdated):
(WebCore::ApplePayPaymentHandler::didAuthorizePayment):
(WebCore::ApplePayPaymentHandler::didSelectShippingMethod):
(WebCore::ApplePayPaymentHandler::didSelectShippingContact):
(WebCore::ApplePayPaymentHandler::didSelectPaymentMethod):
(WebCore::ApplePayPaymentHandler::didChangePaymentMethodMode): Added.
Use the existing PaymentMethodChangeEvent by providing the new mode in methodDetails.

  • Modules/applepay/PaymentCoordinator.h:
  • Modules/applepay/PaymentCoordinator.cpp:

(WebCore::PaymentCoordinator::completePaymentMethodModeChange): Added.
(WebCore::PaymentCoordinator::didChangePaymentMethodMode): Added.

  • Modules/applepay/PaymentCoordinatorClient.h:
  • Modules/applepay/PaymentSession.h:

Piping from/to the WebProcess for payment method mode changes.

  • dom/EventNames.h:
  • Modules/applepay/ApplePayErrorCode.h:
  • Modules/applepay/ApplePayErrorCode.idl:

New enum values for payment method mode errors.

  • Modules/applepay/PaymentHeaders.h:
  • loader/EmptyClients.cpp:
  • testing/MockPaymentCoordinator.h:
  • testing/MockPaymentCoordinator.cpp:

(WebCore::MockPaymentCoordinator::completePaymentMethodModeChange): Added.

  • PlatformMac.cmake:
  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:

Source/WebKit:

Handle the delegate call from PaymentAuthorization(View)Controller by passing it along to
the WebProcess to be handled by WebCore. Handle the response sent by the WebProcess by
invoking the callback that was provided by the delegate call (which is saved to an ivar).

  • WebProcess/ApplePay/WebPaymentCoordinator.messages.in:
  • WebProcess/ApplePay/WebPaymentCoordinator.h:
  • WebProcess/ApplePay/WebPaymentCoordinator.cpp:

(WebKit::WebPaymentCoordinator::completePaymentMethodModeChange): Added.
(WebKit::WebPaymentCoordinator::didChangePaymentMethodMode): Added.

  • Shared/ApplePay/WebPaymentCoordinatorProxy.messages.in:
  • Shared/ApplePay/WebPaymentCoordinatorProxy.h:
  • Shared/ApplePay/WebPaymentCoordinatorProxy.cpp:

(WebKit::WebPaymentCoordinatorProxy::completePaymentMethodModeChange): Added.
(WebKit::WebPaymentCoordinatorProxy::presenterDidChangePaymentMethodMode): Added.
(WebKit::WebPaymentCoordinatorProxy::canBegin const):
(WebKit::WebPaymentCoordinatorProxy::canCancel const):
(WebKit::WebPaymentCoordinatorProxy::canCompletePayment const):
(WebKit::WebPaymentCoordinatorProxy::canAbort const):

  • Shared/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:

(WebKit::WebPaymentCoordinatorProxy::platformCompletePaymentMethodModeChange): Added.

  • Platform/cocoa/PaymentAuthorizationPresenter.h:
  • Platform/cocoa/PaymentAuthorizationPresenter.mm:

(WebKit::toPKPaymentErrorCode):
(WebKit::PaymentAuthorizationPresenter::completePaymentMethodModeChange): Added.

  • Platform/cocoa/PaymentAuthorizationViewController.mm:
  • Platform/cocoa/WKPaymentAuthorizationDelegate.h:
  • Platform/cocoa/WKPaymentAuthorizationDelegate.mm:
  • Platform/ios/PaymentAuthorizationController.mm:

Source/WebKitLegacy/mac:

  • WebCoreSupport/WebPaymentCoordinatorClient.h:
  • WebCoreSupport/WebPaymentCoordinatorClient.mm:

(WebPaymentCoordinatorClient::completePaymentMethodModeChange):

12:39 PM Changeset in webkit [273158] by youenn@apple.com
  • 9 edits
    1 add in trunk

Allow to use BigInt as key identifier
https://bugs.webkit.org/show_bug.cgi?id=222165

Reviewed by Darin Adler.

Source/WebCore:

Allow to pass a BigInt as key id so as to use all of SFrame key ID 8 bytes.
A RangeError is thrown if BigInt is more than 64 bits.

Update the implementation to use a Vector instead of a map to keep the keys.
This allows to also use 0 and 264-1 values that HashMap reserves for its personal use.

Covered by updated test.

  • Modules/mediastream/RTCRtpSFrameTransform.idl:
  • Modules/mediastream/RTCRtpSFrameTransformer.cpp:

(WebCore::RTCRtpSFrameTransformer::setEncryptionKey):
(WebCore::RTCRtpSFrameTransformer::updateEncryptionKey):
(WebCore::RTCRtpSFrameTransformer::decryptFrame):

  • Modules/mediastream/RTCRtpSFrameTransformer.h:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/JSRTCRtpSFrameTransformCustom.cpp: Added.

(WebCore::JSRTCRtpSFrameTransform::setEncryptionKey):

LayoutTests:

  • webrtc/sframe-keys-expected.txt:
  • webrtc/sframe-keys.html:
12:12 PM Changeset in webkit [273157] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[macOS] Add IOKit filtering also when the GPU process is enabled
https://bugs.webkit.org/show_bug.cgi?id=222153
<rdar://problem/74505024>

Reviewed by Brent Fulgham.

IOKit filtering is enabled when the GPU process is not enabled. It should also be enabled when the GPU process is enabled.

  • WebProcess/com.apple.WebProcess.sb.in:
12:09 PM Changeset in webkit [273156] by Fujii Hironori
  • 4 edits in trunk

A number of offscreencanvas tests are asserting isMainThread trying to access strictCSSParserContext
https://bugs.webkit.org/show_bug.cgi?id=222156

Reviewed by Carlos Garcia Campos.

Source/WebCore:

strictCSSParserContext() can be used only in the main thread.
It can't be used in parseColorWorkerSafe().

  • css/parser/CSSParser.cpp:

(WebCore::CSSParser::parseColorWorkerSafe): Use
CSSParserContext(HTMLStandardMode) instead of
strictCSSParserContext().

LayoutTests:

  • platform/glib/TestExpectations:
12:01 PM Changeset in webkit [273155] by Patrick Angle
  • 2 edits in trunk/Source/WebCore

Web Inspector: Implement Grid Overlay "Show line names" drawing
https://bugs.webkit.org/show_bug.cgi?id=222006
<rdar://problem/74409722>

Reviewed by BJ Burg.

Add support for showing line names to the grid overlay, including explicit, auto-repeated, and implicit names.

  • inspector/InspectorOverlay.cpp:

(WebCore::gridLineNames):

  • Gather the grid line names for a grid from the multiple possible sources.

(WebCore::InspectorOverlay::drawGridOverlay):

  • Support showing grid line name labels.
  • Refactored line number label drawing to share a common structure with line name label drawing.
11:44 AM Changeset in webkit [273154] by Aditya Keerthi
  • 355 edits
    4 adds
    1 delete in trunk

[iOS][FCR] Enable the new appearance by default
https://bugs.webkit.org/show_bug.cgi?id=222015
<rdar://problem/74415537>

Reviewed by Wenson Hsieh.

Source/WTF:

  • Scripts/Preferences/WebPreferencesInternal.yaml:

Enable the iOS Form Control Refresh.

Tools:

Rebaselined tests to account for changes to <input> and
<textarea> elements.

  • TestWebKitAPI/Tests/WebKitCocoa/DocumentEditingContext.mm:

(DocumentEditingContext.SpatialRequestInTextField):

  • TestWebKitAPI/Tests/ios/DragAndDropTestsIOS.mm:

(DragAndDropTests.BackgroundImageLinkToInput):
(DragAndDropTests.ContentEditableToTextarea):
(DragAndDropTests.ImageInLinkToInput):
(DragAndDropTests.LinkToInput):
(DragAndDropTests.TextAreaToInput):

  • TestWebKitAPI/Tests/ios/KeyboardInputTestsIOS.mm:

(KeyboardInputTests.SelectionClipRectsWhenPresentingInputView):

LayoutTests:

Rebaseline tests to account for the new appearance.

  • editing/editable-region/overflow-scroll-text-field-and-contenteditable-expected.txt:
  • editing/editable-region/search-field-basic-expected.txt:
  • editing/editable-region/text-field-basic-expected.txt:
  • editing/editable-region/text-field-inside-composited-negative-z-index-layer-expected.txt:
  • editing/editable-region/textarea-basic-expected.txt:
  • fast/forms/button-set-display-flex-justifyContent-center-expected.html:
  • fast/forms/button-set-display-flex-justifyContent-center.html:

Specify a color to ensure the text color always matches.

  • fast/forms/datalist/datalist-fallback-content.html:

Ensure the button is hidden on iOS for this reference test. Previously
the button was hidden by default.

  • fast/forms/datalist/datalist-textinput-suggestions-order.html:
  • fast/forms/date/date-input-rendering-basic-expected.txt:
  • fast/forms/date/date-pseudo-elements-expected.txt:
  • fast/forms/ios/choose-select-option.html:
  • fast/forms/ios/disabled-options-in-multi-select-picker.html:
  • fast/forms/ios/form-control-refresh/datalist/datalist-show-hide-expected.txt: Removed.
  • fast/forms/ios/form-control-refresh/datalist/datalist-show-hide.html: Removed.

Replaced by a test with the same name in fast/forms/datalist.

  • fast/forms/ios/form-control-refresh/datalist/datalist-textinput-suggestions-order-expected.txt: Removed.
  • fast/forms/ios/form-control-refresh/datalist/datalist-textinput-suggestions-order.html: Removed.

Replaced by a test with the same name in fast/forms/datalist.

  • fast/forms/ios/no-stale-checked-items-in-select-picker.html:
  • fast/forms/ios/select-picker-change-and-focus-another-select.html:
  • fast/forms/time/time-input-rendering-basic-expected.txt:
  • fast/shadow-dom/color-input-element-shadow-manipulation.html:

Use the center of element to ensure the element is detected. The new
border-radius means that the top left corner of the element is empty.

  • platform/ios-simulator/fast/forms/auto-fill-button/hide-auto-fill-strong-password-viewable-treatment-when-form-is-reset-expected.txt:
  • platform/ios-simulator/fast/forms/auto-fill-button/input-credit-card-auto-fill-button-expected.txt:
  • platform/ios-simulator/fast/forms/auto-fill-button/input-strong-password-viewable-expected.txt:
  • platform/ios-simulator/fast/forms/datalist/datalist-searchinput-appearance-expected.txt:
  • platform/ios-simulator/fast/forms/datalist/datalist-textinput-appearance-expected.txt:
  • platform/ios-wk2/compositing/contents-opaque/control-layer-expected.txt:
  • platform/ios-wk2/editing/input/caret-at-the-edge-of-input-expected.txt:
  • platform/ios-wk2/editing/input/reveal-caret-of-multiline-input-expected.txt:
  • platform/ios-wk2/editing/inserting/4960120-1-expected.txt:
  • platform/ios-wk2/editing/inserting/before-after-input-element-expected.txt:
  • platform/ios-wk2/editing/pasteboard/4641033-expected.txt:
  • platform/ios-wk2/editing/pasteboard/4944770-1-expected.txt:
  • platform/ios-wk2/editing/pasteboard/4944770-2-expected.txt:
  • platform/ios-wk2/editing/pasteboard/input-field-1-expected.txt:
  • platform/ios-wk2/editing/pasteboard/pasting-tabs-expected.txt:
  • platform/ios-wk2/editing/selection/4895428-3-expected.txt:
  • platform/ios-wk2/editing/selection/caret-before-select-expected.txt:
  • platform/ios-wk2/editing/selection/drag-select-1-expected.txt:
  • platform/ios-wk2/editing/selection/select-across-readonly-input-1-expected.txt:
  • platform/ios-wk2/editing/selection/select-across-readonly-input-2-expected.txt:
  • platform/ios-wk2/editing/selection/select-across-readonly-input-3-expected.txt:
  • platform/ios-wk2/editing/selection/select-across-readonly-input-4-expected.txt:
  • platform/ios-wk2/editing/selection/select-across-readonly-input-5-expected.txt:
  • platform/ios-wk2/editing/selection/select-from-textfield-outwards-expected.txt:
  • platform/ios-wk2/fast/block/basic/011-expected.txt:
  • platform/ios-wk2/fast/block/float/overhanging-tall-block-expected.txt:
  • platform/ios-wk2/fast/block/margin-collapse/103-expected.txt:
  • platform/ios-wk2/fast/dynamic/008-expected.txt:
  • platform/ios-wk2/fast/forms/basic-buttons-expected.txt:
  • platform/ios-wk2/fast/forms/basic-textareas-quirks-expected.txt:
  • platform/ios-wk2/fast/forms/datalist/input-appearance-range-with-datalist-rtl-expected-mismatch.html: Added.

Now that range inputs have a filled track, the RTL appearance should
mismatch the LTR appearance.

  • platform/ios-wk2/fast/forms/input-appearance-preventDefault-expected.txt:
  • platform/ios-wk2/fast/forms/input-text-click-outside-expected.txt:
  • platform/ios-wk2/fast/forms/input-text-double-click-expected.txt:
  • platform/ios-wk2/fast/forms/input-text-drag-down-expected.txt:
  • platform/ios-wk2/fast/forms/input-text-option-delete-expected.txt:
  • platform/ios-wk2/fast/forms/range/input-appearance-range-rtl-expected-mismatch.html: Added.

Now that range inputs have a filled track, the RTL appearance should
mismatch the LTR appearance.

  • platform/ios-wk2/fast/forms/targeted-frame-submission-expected.txt:
  • platform/ios-wk2/fast/forms/textAreaLineHeight-expected.txt:
  • platform/ios-wk2/fast/forms/textarea-align-expected.txt:
  • platform/ios-wk2/fast/forms/textarea-placeholder-visibility-1-expected.txt:
  • platform/ios-wk2/fast/forms/textarea-placeholder-visibility-2-expected.txt:
  • platform/ios-wk2/fast/forms/textarea-scroll-height-expected.txt:
  • platform/ios-wk2/fast/forms/textarea-setinnerhtml-expected.txt:
  • platform/ios-wk2/fast/hidpi/resize-corner-hidpi-expected.txt:
  • platform/ios-wk2/fast/overflow/scroll-nested-positioned-layer-in-overflow-expected.txt:
  • platform/ios-wk2/fast/overflow/scrollRevealButton-expected.txt:
  • platform/ios-wk2/fast/parser/document-write-option-expected.txt:
  • platform/ios-wk2/fast/parser/entity-comment-in-textarea-expected.txt:
  • platform/ios-wk2/fast/parser/open-comment-in-textarea-expected.txt:
  • platform/ios-wk2/fast/repaint/placeholder-after-caps-lock-hidden-expected.txt:
  • platform/ios-wk2/fast/replaced/border-radius-clip-expected.txt:
  • platform/ios-wk2/fast/spatial-navigation/snav-multiple-select-focusring-expected.txt:
  • platform/ios-wk2/fast/text/international/rtl-white-space-pre-wrap-expected.txt:
  • platform/ios-wk2/fast/text/international/unicode-bidi-plaintext-in-textarea-expected.txt:
  • platform/ios-wk2/fast/transforms/transformed-focused-text-input-expected.txt:
  • platform/ios-wk2/imported/w3c/web-platform-tests/css/css-flexbox/radiobutton-min-size-expected.txt:
  • platform/ios-wk2/imported/w3c/web-platform-tests/css/css-pseudo/file-chooser-button-display-toggle-crash.tentative-expected.txt:
  • platform/ios-wk2/imported/w3c/web-platform-tests/html/rendering/widgets/baseline-alignment-and-overflow.tentative-expected.txt:
  • platform/ios-wk2/imported/w3c/web-platform-tests/html/rendering/widgets/button-layout/abspos-expected.txt:
  • platform/ios-wk2/imported/w3c/web-platform-tests/html/rendering/widgets/select-wrap-no-spill.optional-expected.txt:
  • platform/ios/compositing/overflow/textarea-scroll-touch-expected.txt:
  • platform/ios/compositing/overflow/theme-affects-visual-overflow-expected.txt:
  • platform/ios/css1/box_properties/acid_test-expected.txt:
  • platform/ios/css2.1/20110323/replaced-elements-001-expected.txt:
  • platform/ios/css2.1/t09-c5526c-display-00-e-expected.txt:
  • platform/ios/css3/flexbox/button-expected.txt:
  • platform/ios/editing/pasteboard/4806874-expected.txt:
  • platform/ios/editing/selection/3690703-2-expected.txt:
  • platform/ios/editing/selection/3690703-expected.txt:
  • platform/ios/editing/selection/3690719-expected.txt:
  • platform/ios/editing/selection/4397952-expected.txt:
  • platform/ios/editing/selection/4975120-expected.txt:
  • platform/ios/editing/selection/5240265-expected.txt:
  • platform/ios/editing/selection/replaced-boundaries-3-expected.txt:
  • platform/ios/editing/selection/select-box-expected.txt:
  • platform/ios/editing/selection/select-element-paragraph-boundary-expected.txt:
  • platform/ios/editing/selection/selection-button-text-expected.txt:
  • platform/ios/fast/block/float/032-expected.txt:
  • platform/ios/fast/block/float/float-avoidance-expected.txt:
  • platform/ios/fast/block/positioning/inline-block-relposition-expected.txt:
  • platform/ios/fast/box-sizing/percentage-height-expected.txt:
  • platform/ios/fast/css/continuationCrash-expected.txt:
  • platform/ios/fast/css/focus-ring-exists-for-search-field-expected.txt:
  • platform/ios/fast/css/input-search-padding-expected.txt:
  • platform/ios/fast/css/line-height-expected.txt:
  • platform/ios/fast/css/margin-top-bottom-dynamic-expected.txt:
  • platform/ios/fast/css/non-standard-checkbox-size-expected.txt:
  • platform/ios/fast/css/rtl-ordering-expected.txt:
  • platform/ios/fast/css/text-input-with-webkit-border-radius-expected.txt:
  • platform/ios/fast/css/text-overflow-input-expected.txt:
  • platform/ios/fast/css/text-transform-select-expected.txt:
  • platform/ios/fast/dom/HTMLInputElement/input-image-alt-text-expected.txt:
  • platform/ios/fast/dom/HTMLMeterElement/meter-boundary-values-expected.txt:
  • platform/ios/fast/dom/HTMLMeterElement/meter-element-expected.txt:
  • platform/ios/fast/dom/HTMLMeterElement/meter-element-repaint-on-update-value-expected.txt:
  • platform/ios/fast/dom/HTMLMeterElement/meter-optimums-expected.txt:
  • platform/ios/fast/dom/HTMLMeterElement/meter-styles-expected.txt:
  • platform/ios/fast/dom/HTMLTableColElement/resize-table-using-col-width-expected.txt:
  • platform/ios/fast/dom/HTMLTextAreaElement/reset-textarea-expected.txt:
  • platform/ios/fast/dynamic/positioned-movement-with-positioned-children-expected.txt:
  • platform/ios/fast/events/context-no-deselect-expected.txt:
  • platform/ios/fast/forms/001-expected.txt:
  • platform/ios/fast/forms/003-expected.txt:
  • platform/ios/fast/forms/004-expected.txt:
  • platform/ios/fast/forms/auto-fill-button/input-auto-fill-button-expected.txt:
  • platform/ios/fast/forms/auto-fill-button/input-contacts-auto-fill-button-expected.txt:
  • platform/ios/fast/forms/auto-fill-button/input-strong-password-auto-fill-button-expected.txt:
  • platform/ios/fast/forms/basic-inputs-expected.txt:
  • platform/ios/fast/forms/basic-selects-expected.txt:
  • platform/ios/fast/forms/basic-textareas-expected.txt:
  • platform/ios/fast/forms/blankbuttons-expected.txt:
  • platform/ios/fast/forms/box-shadow-override-expected.txt:
  • platform/ios/fast/forms/button-align-expected.txt:
  • platform/ios/fast/forms/button-cannot-be-nested-expected.txt:
  • platform/ios/fast/forms/button-default-title-expected.txt:
  • platform/ios/fast/forms/button-generated-content-expected.txt:
  • platform/ios/fast/forms/button-positioned-expected.txt:
  • platform/ios/fast/forms/button-sizes-expected.txt:
  • platform/ios/fast/forms/button-style-color-expected.txt:
  • platform/ios/fast/forms/button-table-styles-expected.txt:
  • platform/ios/fast/forms/button-text-transform-expected.txt:
  • platform/ios/fast/forms/button-white-space-expected.txt:
  • platform/ios/fast/forms/color/input-appearance-color-expected.txt:
  • platform/ios/fast/forms/control-clip-expected.txt:
  • platform/ios/fast/forms/control-clip-overflow-expected.txt:
  • platform/ios/fast/forms/control-restrict-line-height-expected.txt:
  • platform/ios/fast/forms/disabled-select-change-index-expected.txt:
  • platform/ios/fast/forms/encoding-test-expected.txt:
  • platform/ios/fast/forms/fieldset-align-expected.txt:
  • platform/ios/fast/forms/file/file-input-direction-expected.txt:
  • platform/ios/fast/forms/file/file-input-disabled-expected.txt:
  • platform/ios/fast/forms/floating-textfield-relayout-expected.txt:
  • platform/ios/fast/forms/form-element-geometry-expected.txt:
  • platform/ios/fast/forms/formmove-expected.txt:
  • platform/ios/fast/forms/formmove2-expected.txt:
  • platform/ios/fast/forms/formmove3-expected.txt:
  • platform/ios/fast/forms/hidden-listbox-expected.txt:
  • platform/ios/fast/forms/indeterminate-expected.txt:
  • platform/ios/fast/forms/input-align-expected.txt:
  • platform/ios/fast/forms/input-appearance-bkcolor-expected.txt:
  • platform/ios/fast/forms/input-appearance-default-bkcolor-expected.txt:
  • platform/ios/fast/forms/input-appearance-disabled-expected.txt:
  • platform/ios/fast/forms/input-appearance-focus-expected.txt:
  • platform/ios/fast/forms/input-appearance-height-expected.txt:
  • platform/ios/fast/forms/input-appearance-readonly-expected.txt:
  • platform/ios/fast/forms/input-appearance-selection-expected.txt:
  • platform/ios/fast/forms/input-appearance-visibility-expected.txt:
  • platform/ios/fast/forms/input-appearance-width-expected.txt:
  • platform/ios/fast/forms/input-button-sizes-expected.txt:
  • platform/ios/fast/forms/input-disabled-color-expected.txt:
  • platform/ios/fast/forms/input-double-click-selection-gap-bug-expected.txt:
  • platform/ios/fast/forms/input-field-text-truncated-expected.txt:
  • platform/ios/fast/forms/input-first-letter-expected.txt:
  • platform/ios/fast/forms/input-placeholder-visibility-1-expected.txt:
  • platform/ios/fast/forms/input-placeholder-visibility-3-expected.txt:
  • platform/ios/fast/forms/input-readonly-dimmed-expected.txt:
  • platform/ios/fast/forms/input-readonly-empty-expected.txt:
  • platform/ios/fast/forms/input-spaces-expected.txt:
  • platform/ios/fast/forms/input-table-expected.txt:
  • platform/ios/fast/forms/input-text-click-inside-expected.txt:
  • platform/ios/fast/forms/input-text-scroll-left-on-blur-expected.txt:
  • platform/ios/fast/forms/input-text-self-emptying-click-expected.txt:
  • platform/ios/fast/forms/input-type-text-min-width-expected.txt:
  • platform/ios/fast/forms/input-value-expected.txt:
  • platform/ios/fast/forms/input-width-expected.txt:
  • platform/ios/fast/forms/listbox-bidi-align-expected.txt:
  • platform/ios/fast/forms/listbox-hit-test-zoomed-expected.txt:
  • platform/ios/fast/forms/listbox-scrollbar-incremental-load-expected.txt:
  • platform/ios/fast/forms/listbox-width-change-expected.txt:
  • platform/ios/fast/forms/menulist-clip-expected.txt:
  • platform/ios/fast/forms/menulist-deselect-update-expected.txt:
  • platform/ios/fast/forms/menulist-narrow-width-expected.txt:
  • platform/ios/fast/forms/menulist-no-overflow-expected.txt:
  • platform/ios/fast/forms/menulist-option-wrap-expected.txt:
  • platform/ios/fast/forms/menulist-restrict-line-height-expected.txt:
  • platform/ios/fast/forms/menulist-separator-painting-expected.txt:
  • platform/ios/fast/forms/menulist-style-color-expected.txt:
  • platform/ios/fast/forms/menulist-width-change-expected.txt:
  • platform/ios/fast/forms/minWidthPercent-expected.txt:
  • platform/ios/fast/forms/number/number-appearance-rtl-expected.txt:
  • platform/ios/fast/forms/number/number-appearance-spinbutton-disabled-readonly-expected.txt:
  • platform/ios/fast/forms/number/number-appearance-spinbutton-layer-expected.txt:
  • platform/ios/fast/forms/option-script-expected.txt:
  • platform/ios/fast/forms/option-strip-whitespace-expected.txt:
  • platform/ios/fast/forms/option-text-clip-expected.txt:
  • platform/ios/fast/forms/placeholder-pseudo-style-expected.txt:
  • platform/ios/fast/forms/plaintext-mode-2-expected.txt:
  • platform/ios/fast/forms/range/input-appearance-range-expected.txt:
  • platform/ios/fast/forms/range/range-thumb-height-percentage-expected.txt:
  • platform/ios/fast/forms/range/slider-thumb-shared-style-expected.txt:
  • platform/ios/fast/forms/search-cancel-button-style-sharing-expected.txt:
  • platform/ios/fast/forms/search-display-none-cancel-button-expected.txt:
  • platform/ios/fast/forms/search-input-rtl-expected.txt:
  • platform/ios/fast/forms/search-styled-expected.txt:
  • platform/ios/fast/forms/search/search-zoom-computed-style-height-expected.txt:
  • platform/ios/fast/forms/select-align-expected.txt:
  • platform/ios/fast/forms/select-background-none-expected.txt:
  • platform/ios/fast/forms/select-baseline-expected.txt:
  • platform/ios/fast/forms/select-block-background-expected.txt:
  • platform/ios/fast/forms/select-change-listbox-size-expected.txt:
  • platform/ios/fast/forms/select-change-listbox-to-popup-expected.txt:
  • platform/ios/fast/forms/select-change-popup-to-listbox-expected.txt:
  • platform/ios/fast/forms/select-dirty-parent-pref-widths-expected.txt:
  • platform/ios/fast/forms/select-disabled-appearance-expected.txt:
  • platform/ios/fast/forms/select-element-focus-ring-expected.txt:
  • platform/ios/fast/forms/select-empty-option-height-expected.txt:
  • platform/ios/fast/forms/select-initial-position-expected.txt:
  • platform/ios/fast/forms/select-item-background-clip-expected.txt:
  • platform/ios/fast/forms/select-list-box-with-height-expected.txt:
  • platform/ios/fast/forms/select-non-native-rendering-direction-expected.txt:
  • platform/ios/fast/forms/select-selected-expected.txt:
  • platform/ios/fast/forms/select-style-expected.txt:
  • platform/ios/fast/forms/select-visual-hebrew-expected.txt:
  • platform/ios/fast/forms/select-writing-direction-natural-expected.txt:
  • platform/ios/fast/forms/select/optgroup-rendering-expected.txt:
  • platform/ios/fast/forms/selectlist-minsize-expected.txt:
  • platform/ios/fast/forms/stuff-on-my-optgroup-expected.txt:
  • platform/ios/fast/forms/tabbing-input-iframe-expected.txt:
  • platform/ios/fast/forms/textarea-placeholder-pseudo-style-expected.txt:
  • platform/ios/fast/forms/textarea-scrollbar-expected.txt:
  • platform/ios/fast/forms/textarea-scrolled-type-expected.txt:
  • platform/ios/fast/forms/textarea-width-expected.txt:
  • platform/ios/fast/forms/textfield-focus-ring-expected.txt:
  • platform/ios/fast/forms/textfield-outline-expected.txt:
  • platform/ios/fast/forms/textfield-overflow-expected.txt:
  • platform/ios/fast/frames/take-focus-from-iframe-expected.txt:
  • platform/ios/fast/hidpi/video-controls-in-hidpi-expected.txt:
  • platform/ios/fast/html/details-no-summary4-expected.txt:
  • platform/ios/fast/html/details-open-javascript-expected.txt:
  • platform/ios/fast/html/details-open2-expected.txt:
  • platform/ios/fast/html/details-open4-expected.txt:
  • platform/ios/fast/html/details-replace-summary-child-expected.txt:
  • platform/ios/fast/html/details-replace-text-expected.txt:
  • platform/ios/fast/html/keygen-expected.txt:
  • platform/ios/fast/inline/positionedLifetime-expected.txt:
  • platform/ios/fast/invalid/014-expected.txt:
  • platform/ios/fast/layers/video-layer-expected.txt:
  • platform/ios/fast/lists/dynamic-marker-crash-expected.txt:
  • platform/ios/fast/multicol/client-rects-expected.txt:
  • platform/ios/fast/multicol/client-rects-spanners-complex-expected.txt:
  • platform/ios/fast/multicol/client-rects-spanners-expected.txt:
  • platform/ios/fast/multicol/newmulticol/client-rects-expected.txt:
  • platform/ios/fast/overflow/overflow-x-y-expected.txt:
  • platform/ios/fast/parser/bad-xml-slash-expected.txt:
  • platform/ios/fast/replaced/replaced-breaking-expected.txt:
  • platform/ios/fast/replaced/replaced-breaking-mixture-expected.txt:
  • platform/ios/fast/replaced/three-selects-break-expected.txt:
  • platform/ios/fast/replaced/width100percent-button-expected.txt:
  • platform/ios/fast/replaced/width100percent-checkbox-expected.txt:
  • platform/ios/fast/replaced/width100percent-menulist-expected.txt:
  • platform/ios/fast/replaced/width100percent-radio-expected.txt:
  • platform/ios/fast/replaced/width100percent-searchfield-expected.txt:
  • platform/ios/fast/replaced/width100percent-textarea-expected.txt:
  • platform/ios/fast/replaced/width100percent-textfield-expected.txt:
  • platform/ios/fast/scrolling/ios/textarea-scroll-touch-expected.txt:
  • platform/ios/fast/selectors/064-expected.txt:
  • platform/ios/fast/table/append-cells2-expected.txt:
  • platform/ios/fast/table/colspanMinWidth-expected.txt:
  • platform/ios/fast/table/remove-td-display-none-expected.txt:
  • platform/ios/fast/table/spanOverlapRepaint-expected.txt:
  • platform/ios/fast/table/text-field-baseline-expected.txt:
  • platform/ios/fast/text/drawBidiText-expected.txt:
  • platform/ios/fast/text/international/bidi-listbox-atsui-expected.txt:
  • platform/ios/fast/text/international/bidi-listbox-expected.txt:
  • platform/ios/fast/text/international/bidi-menulist-expected.txt:
  • platform/ios/fast/text/international/hindi-spacing-expected.txt:
  • platform/ios/fast/text/international/pop-up-button-text-alignment-and-direction-expected.txt:
  • platform/ios/fast/text/whitespace/normal-after-nowrap-breaking-expected.txt:
  • platform/ios/imported/w3c/web-platform-tests/selection/selection-select-all-move-input-crash-expected.txt:
  • platform/ios/media/audio-controls-rendering-expected.txt:
  • platform/ios/media/audio-repaint-expected.txt:
  • platform/ios/media/controls-strict-expected.txt:
  • platform/ios/media/controls-styling-strict-expected.txt:
  • platform/ios/media/controls-without-preload-expected.txt:
  • platform/ios/media/media-controls-clone-expected.txt:
  • platform/ios/media/video-controls-rendering-expected.txt:
  • platform/ios/media/video-zoom-controls-expected.txt:
  • platform/ios/svg/custom/foreign-object-skew-expected.txt:
  • platform/ios/svg/custom/inline-svg-in-xhtml-expected.txt:
  • platform/ios/svg/hixie/mixed/003-expected.txt:
  • platform/ios/tables/mozilla/bugs/45621-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug1188-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug12384-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug1318-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug138725-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug18359-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug194024-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug24200-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug2479-2-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug2479-3-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug2479-4-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug26178-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug28928-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug29326-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug30559-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug30692-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug33855-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug39209-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug4382-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug4429-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug44505-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug4527-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug46368-1-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug46368-2-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug51037-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug51727-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug52505-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug52506-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug55545-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug59354-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug60749-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug68912-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug7342-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug92647-2-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug96334-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug99948-expected.txt:
  • platform/ios/tables/mozilla/collapsing_borders/bug41262-4-expected.txt:
  • platform/ios/tables/mozilla/core/margins-expected.txt:
  • platform/ios/tables/mozilla/dom/tableDom-expected.txt:
  • platform/ios/tables/mozilla/other/move_row-expected.txt:
  • platform/ios/tables/mozilla_expected_failures/bugs/bug1725-expected.txt:
  • platform/ios/tables/mozilla_expected_failures/bugs/bug2479-5-expected.txt:
  • platform/ios/tables/mozilla_expected_failures/bugs/bug58402-2-expected.txt:
  • platform/ios/tables/mozilla_expected_failures/bugs/bug92647-1-expected.txt:
  • platform/ios/tables/mozilla_expected_failures/collapsing_borders/bug41262-5-expected.txt:
  • platform/ios/tables/mozilla_expected_failures/collapsing_borders/bug41262-6-expected.txt:
  • platform/ios/tables/mozilla_expected_failures/core/captions1-expected.txt:
  • platform/ios/tables/mozilla_expected_failures/core/captions2-expected.txt:
  • platform/ios/transforms/2d/zoom-menulist-expected.txt:
  • platform/ios/transforms/3d/general/perspective-non-layer-expected.txt:
  • platform/ipad/fast/forms/choose-select-option.html:

This test is covered by a test of the same name in
fast/forms/ios/form-control-refresh/select.

  • platform/ipad/fast/forms/select-with-title.html:

This test assumes a popover appearance, which is gone with the redesign.
This test can eventually be removed entirely.

11:38 AM Changeset in webkit [273153] by ysuzuki@apple.com
  • 7 edits
    1 add in trunk

[JSC] Do not use toObject for options in new Intl constructors
https://bugs.webkit.org/show_bug.cgi?id=222164

Reviewed by Alexey Shvayka.

JSTests:

  • stress/intl-get-options-not-using-toobject.js: Added.

(shouldThrow):

Source/JavaScriptCore:

New spec change[1] introduced stricter GetOptionsObject for relatively new Intl constructors: Intl.DisplayNames, Intl.ListFormat, and Intl.Segmenter[2].
This does not perform ToObject, and instead,

  1. If the input is an undefined, then it returns empty object.
  2. If the input is an object, then it returns this object.
  3. Otherwise, throwing a TypeError.

This patch implements it.

[1]: https://github.com/tc39/ecma402/pull/538
[2]: https://github.com/tc39/proposal-intl-segmenter/issues/132

  • runtime/IntlDisplayNames.cpp:

(JSC::IntlDisplayNames::initializeDisplayNames):

  • runtime/IntlListFormat.cpp:

(JSC::IntlListFormat::initializeListFormat):

  • runtime/IntlObjectInlines.h:

(JSC::intlGetOptionsObject):

  • runtime/IntlSegmenter.cpp:

(JSC::IntlSegmenter::initializeSegmenter):

11:17 AM Changeset in webkit [273152] by mark.lam@apple.com
  • 5 edits in trunk/Source/JavaScriptCore

Need to rebase builtins generator tests results.
https://bugs.webkit.org/show_bug.cgi?id=222184
rdar://74528501

Reviewed by Yusuke Suzuki.

  • Scripts/tests/builtins/expected/WebCore-AnotherGuardedInternalBuiltin-Separate.js-result:
  • Scripts/tests/builtins/expected/WebCore-GuardedInternalBuiltin-Separate.js-result:
  • Scripts/tests/builtins/expected/WebCore-xmlCasingTest-Separate.js-result:
  • Scripts/tests/builtins/expected/WebCoreJSBuiltins.h-result:
11:13 AM Changeset in webkit [273151] by pvollan@apple.com
  • 3 edits in trunk/Source/WebKit

Add notifyd message filter
https://bugs.webkit.org/show_bug.cgi?id=222129
<rdar://problem/73987767>

Reviewed by Brent Fulgham.

Add notifyd message filter in the WebContent process' sandbox.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
  • WebProcess/com.apple.WebProcess.sb.in:
11:08 AM Changeset in webkit [273150] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[ MacOS Wk2 ] media/media-fragments/TC0034.html is flakey crashing
https://bugs.webkit.org/show_bug.cgi?id=221930

Uneviewed test gardening.

Patch by Robert Jenner <Robert Jenner> on 2021-02-19

  • platform/mac-wk2/TestExpectations: Skipping test until it can be fixed.
11:06 AM Changeset in webkit [273149] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

[GPU Process] Repopulate the TestExpectations file #4
https://bugs.webkit.org/show_bug.cgi?id=222147

Unreviewed test gardening.

Patch by Rini Patel <rini_patel@apple.com> on 2021-02-19

  • gpu-process/TestExpectations:
10:53 AM Changeset in webkit [273148] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebInspectorUI

Web Inspector: Truncate long node display names in Grid Overlay list
https://bugs.webkit.org/show_bug.cgi?id=222057

Patch by Razvan Caliman <Razvan Caliman> on 2021-02-19
Reviewed by BJ Burg.

Truncate long node display names for grid overlays in the Layout panel.

  • UserInterface/Views/CSSGridSection.css:

(.css-grid-section .node-link,):
(.css-grid-section .node-overlay-list):
(.css-grid-section .node-overlay-list-item-container):
(.css-grid-section .node-overlay-list-item-container label):
(.css-grid-section .node-overlay-list-item-container .inline-swatch):

  • UserInterface/Views/CSSGridSection.js:

(WI.CSSGridSection.prototype.initialLayout):
(WI.CSSGridSection.prototype.layout):

  • UserInterface/Views/LayoutDetailsSidebarPanel.css:

(.details-section.layout-css-grid > .content > .group > .row > .css-grid-section):
(.details-section.layout-css-grid > .content,):
Resetting to display: block for .details-section and descendants that use display: table-*
otherwise it messes with the Flexbox layout of nested children.

10:51 AM Changeset in webkit [273147] by Ruben Turcios
  • 1 copy in tags/Safari-612.1.4.1

Tag Safari-612.1.4.1.

10:22 AM Changeset in webkit [273146] by Ruben Turcios
  • 8 edits in branches/safari-612.1.4-branch/Source

Versioning.

WebKit-7612.1.4.1

10:21 AM Changeset in webkit [273145] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

[ews] Ensure that the test failures are listed in sorted order
https://bugs.webkit.org/show_bug.cgi?id=222176

Reviewed by Jonathan Bedard.

  • CISupport/ews-build/steps.py:

(ReRunJavaScriptCoreTests.evaluateCommand):
(AnalyzeJSCTestsResults.start):
(RunWebKitTests.commandComplete):
(ReRunWebKitTests.evaluateCommand):
(ReRunWebKitTests.commandComplete):

  • CISupport/ews-build/steps_unittest.py:

(TestAnalyzeJSCTestsResults.test_multiple_new_stress_failure):
(TestAnalyzeJSCTestsResults.test_multiple_new_binary_failure):

9:55 AM Changeset in webkit [273144] by Kate Cheney
  • 2 edits in trunk/Source/WebKit

Add better error handling to ResourceLoadStatisticsDatabaseStore::needsUpdatedPrivateClickMeasurementSchema()
https://bugs.webkit.org/show_bug.cgi?id=222169
<rdar://problem/74522283>

Reviewed by Darin Adler.

Add better error handling for the case where the query to find the
UnattributedPrivateClickMeasurement table fails. This is unlikely to
happen in practice, however, if it does, we should add logging and
a debug ASSERT.

  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:

(WebKit::ResourceLoadStatisticsDatabaseStore::needsUpdatedPrivateClickMeasurementSchema):

9:38 AM Changeset in webkit [273143] by Devin Rousso
  • 61 edits
    3 copies
    1 move
    2 deletes in trunk/Source

[Payment Request] add an object data to PaymentDetailsBase so that data specific to Apple Pay can be provided
https://bugs.webkit.org/show_bug.cgi?id=222002
<rdar://problem/72319946>

Reviewed by Tim Horton.

Source/WebCore:

  • Modules/paymentrequest/PaymentDetailsBase.idl:
  • Modules/paymentrequest/PaymentDetailsBase.h:
  • Modules/applepay/ApplePayDetailsUpdateBase.idl: Added.
  • Modules/applepay/ApplePayDetailsUpdateBase.h: Added.

(WebCore::ApplePayDetailsUpdateBase::encode const):
(WebCore::ApplePayDetailsUpdateBase::decode):
(WebCore::ApplePayDetailsUpdateBase::decodeBase):

  • Modules/applepay/ApplePayPaymentMethodUpdate.h:
  • Modules/applepay/ApplePayPaymentMethodUpdate.idl:

(WebCore::ApplePayPaymentMethodUpdate::encode const): Added.
(WebCore::ApplePayPaymentMethodUpdate::decode): Added.

  • Modules/applepay/ApplePayShippingContactUpdate.idl:
  • Modules/applepay/ApplePayShippingContactUpdate.h:

(WebCore::ApplePayShippingContactUpdate::encode const): Added.
(WebCore::ApplePayShippingContactUpdate::decode): Added.

  • Modules/applepay/ApplePayShippingMethodUpdate.idl:
  • Modules/applepay/ApplePayShippingMethodUpdate.h:

(WebCore::ApplePayShippingMethodUpdate::encode const): Added.
(WebCore::ApplePayShippingMethodUpdate::decode): Added.
Introduce a common base class ApplePayDetailsUpdateBase instead of repeating members on
each of the ApplePay*Update final classes.

  • Modules/applepay/ApplePayDetailsUpdateData.idl: Added.
  • Modules/applepay/ApplePayDetailsUpdateData.h: Added.

(WebCore::ApplePayDetailsUpdateData::encode const):
(WebCore::ApplePayDetailsUpdateData::decode):
(WebCore::ApplePayDetailsUpdateData::decodeData):

  • Modules/paymentrequest/PaymentRequest.cpp:

(WebCore::checkAndCanonicalizeDetails):
(WebCore::PaymentRequest::settleDetailsPromise):
Have the common base class above extend from ApplePayDetailsUpdateData, which is used to
pull values out of the object data from PaymentDetailsBase. This way, both Apple Pay JS
and PaymentRequest can be given the same data (albeit in slightly different places) and have
the same capabilities.

  • Modules/applepay/ApplePayError.h:

(WebCore::ApplePayError::encode const): Added.
(WebCore::ApplePayError::decode): Added.

  • Modules/applepay/ApplePayError.cpp: Removed.
  • Modules/applepay/ApplePayErrorCode.h:
  • Modules/applepay/ApplePayErrorContactField.h:
  • Modules/applepay/ApplePayPaymentAuthorizationResult.h:
  • Modules/applepay/ApplePaySessionPaymentRequest.h:

(WebCore::ApplePaySessionPaymentRequest::shippingMethods const):
(WebCore::ApplePaySessionPaymentRequest::setShippingMethods):

  • Modules/applepay/ApplePaySession.h:
  • Modules/applepay/ApplePaySession.cpp:

(WebCore::convertAndValidate):
(WebCore::ApplePaySession::completeShippingContactSelection):
(WebCore::ApplePaySession::didSelectShippingMethod):
(WebCore::finishConverting): Deleted.
(WebCore::convert): Deleted.

  • Modules/applepay/ApplePayShippingMethod.h:

(WebCore::ApplePayShippingMethod::encode const): Added.
(WebCore::ApplePayShippingMethod::decode): Added.

  • Modules/applepay/ApplePayShippingMethodSelectedEvent.h:
  • Modules/applepay/ApplePayShippingMethodSelectedEvent.cpp:

(WebCore::ApplePayShippingMethodSelectedEvent::ApplePayShippingMethodSelectedEvent):
(WebCore::convert): Deleted.

  • Modules/applepay/PaymentCoordinator.h:
  • Modules/applepay/PaymentCoordinator.cpp:

(WebCore::PaymentCoordinator::completeShippingMethodSelection):
(WebCore::PaymentCoordinator::completeShippingContactSelection):
(WebCore::PaymentCoordinator::completePaymentMethodSelection):
(WebCore::PaymentCoordinator::didSelectShippingMethod):

  • Modules/applepay/PaymentCoordinatorClient.h:
  • Modules/applepay/PaymentHeaders.h:
  • Modules/applepay/PaymentRequestValidator.mm:

(WebCore::validateShippingMethod):
(WebCore::validateShippingMethods):

  • Modules/applepay/PaymentSession.h:
  • Modules/applepay/PaymentSummaryItems.h:
  • Modules/applepay/cocoa/PaymentSummaryItemsCocoa.mm:
  • Modules/applepay/paymentrequest/ApplePayPaymentHandler.h:
  • Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp:

(WebCore::convertAndValidate):
(WebCore::validate):
(WebCore::merge):
(WebCore::ApplePayPaymentHandler::show):
(WebCore::ApplePayPaymentHandler::computeShippingMethods):
(WebCore::ApplePayPaymentHandler::computeTotalAndLineItems const):
(WebCore::appendShippingContactInvalidError):
(WebCore::ApplePayPaymentHandler::computeErrors const):
(WebCore::ApplePayPaymentHandler::computeAddressErrors const):
(WebCore::ApplePayPaymentHandler::computePayerErrors const):
(WebCore::ApplePayPaymentHandler::computePaymentMethodErrors const):
(WebCore::ApplePayPaymentHandler::shippingAddressUpdated):
(WebCore::ApplePayPaymentHandler::shippingOptionUpdated):
(WebCore::ApplePayPaymentHandler::paymentMethodUpdated):
(WebCore::ApplePayPaymentHandler::retry):
(WebCore::ApplePayPaymentHandler::didSelectShippingMethod):

  • loader/EmptyClients.cpp:
  • testing/MockPaymentCoordinator.h:
  • testing/MockPaymentCoordinator.cpp:

(WebCore::MockPaymentCoordinator::showPaymentUI):
(WebCore::MockPaymentCoordinator::completeShippingMethodSelection):
(WebCore::convert):
(WebCore::MockPaymentCoordinator::completeShippingContactSelection):
(WebCore::MockPaymentCoordinator::completePaymentMethodSelection):
(WebCore::MockPaymentCoordinator::changeShippingOption):
(WebCore::MockPaymentCoordinator::completePaymentSession):
(WebCore::MockPaymentCoordinator::updateTotalAndLineItems): Deleted.

  • testing/MockPaymentError.h:

Use ApplePay*Update instead of duplicating its structure in another object (ApplePaySessionPaymentRequest::*Update).
Use ApplePayLineItem instead of duplicating its structure in another object (ApplePaySessionPaymentRequest::TotalAndLineItems).
Use ApplePayShippingMethod instead of duplicating its structure in another object (ApplePaySessionPaymentRequest::ShippingMethod).
Use ApplePayError* instead of duplicating its structure in another object (ApplePaySessionPaymentRequest::PaymentError::*).

  • Modules/applepay/PaymentMethodUpdate.h:
  • Modules/applepay/cocoa/PaymentMethodUpdateCocoa.mm: Removed.

Do the conversion from ApplePayPaymentMethodUpdate to PKPaymentRequestPaymentMethodUpdate
in the UIProcess.

  • Modules/applepay/ApplePayPaymentRequest.h:
  • Modules/applepay/ApplePayRequestBase.cpp:

(WebCore::convertAndValidate):

  • Modules/applepay/ApplePayRequestBase.h:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • PlatformMac.cmake:
  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:

Source/WebKit:

  • Platform/cocoa/PaymentAuthorizationPresenter.h:
  • Platform/cocoa/PaymentAuthorizationPresenter.mm:

(WebKit::toPKPaymentErrorCode):
(WebKit::toNSError):
(WebKit::toNSErrors):
(WebKit::toPKShippingMethods):
(WebKit::PaymentAuthorizationPresenter::completePaymentMethodSelection):
(WebKit::PaymentAuthorizationPresenter::completeShippingContactSelection):
(WebKit::PaymentAuthorizationPresenter::completeShippingMethodSelection):

  • Platform/cocoa/WKPaymentAuthorizationDelegate.mm:

(toShippingMethod):

  • Scripts/webkit/messages.py:
  • Shared/ApplePay/WebPaymentCoordinatorProxy.messages.in:
  • Shared/ApplePay/WebPaymentCoordinatorProxy.h:
  • Shared/ApplePay/WebPaymentCoordinatorProxy.cpp:

(WebKit::WebPaymentCoordinatorProxy::completeShippingMethodSelection):
(WebKit::WebPaymentCoordinatorProxy::completeShippingContactSelection):
(WebKit::WebPaymentCoordinatorProxy::completePaymentMethodSelection):
(WebKit::WebPaymentCoordinatorProxy::presenterDidSelectShippingMethod):

  • Shared/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.h:
  • Shared/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:

(WebKit::toPKShippingMethod):
(WebKit::WebPaymentCoordinatorProxy::platformPaymentRequest):
(WebKit::WebPaymentCoordinatorProxy::platformCompleteShippingMethodSelection):
(WebKit::WebPaymentCoordinatorProxy::platformCompleteShippingContactSelection):
(WebKit::WebPaymentCoordinatorProxy::platformCompletePaymentMethodSelection):
(WebKit::finishCreating): Deleted.

  • Shared/WebCoreArgumentCoders.h:
  • Shared/Cocoa/WebCoreArgumentCodersCocoa.mm:

(IPC::ArgumentCoder<WebCore::PaymentAuthorizationResult>::decode):
(IPC::ArgumentCoder<ApplePaySessionPaymentRequest>::decode):
(IPC::ArgumentCoder<Vector<RefPtr<ApplePayError>>>::encode): Added.
(IPC::ArgumentCoder<Vector<RefPtr<ApplePayError>>>::decode): Added.
(IPC::ArgumentCoder<WebCore::PaymentError>::encode): Deleted.
(IPC::ArgumentCoder<WebCore::PaymentError>::decode): Deleted.
(IPC::ArgumentCoder<WebCore::PaymentMethodUpdate>::encode): Deleted.
(IPC::ArgumentCoder<WebCore::PaymentMethodUpdate>::decode): Deleted.
(IPC::ArgumentCoder<ApplePaySessionPaymentRequest::ShippingMethod>::encode): Deleted.
(IPC::ArgumentCoder<ApplePaySessionPaymentRequest::ShippingMethod>::decode): Deleted.
(IPC::ArgumentCoder<ApplePaySessionPaymentRequest::TotalAndLineItems>::encode): Deleted.
(IPC::ArgumentCoder<ApplePaySessionPaymentRequest::TotalAndLineItems>::decode): Deleted.
(IPC::ArgumentCoder<WebCore::ShippingContactUpdate>::encode): Deleted.
(IPC::ArgumentCoder<WebCore::ShippingContactUpdate>::decode): Deleted.
(IPC::ArgumentCoder<WebCore::ShippingMethodUpdate>::encode): Deleted.
(IPC::ArgumentCoder<WebCore::ShippingMethodUpdate>::decode): Deleted.

  • WebProcess/ApplePay/WebPaymentCoordinator.messages.in:
  • WebProcess/ApplePay/WebPaymentCoordinator.h:
  • WebProcess/ApplePay/WebPaymentCoordinator.cpp:

(WebKit::WebPaymentCoordinator::completeShippingMethodSelection):
(WebKit::WebPaymentCoordinator::completeShippingContactSelection):
(WebKit::WebPaymentCoordinator::completePaymentMethodSelection):
(WebKit::WebPaymentCoordinator::didSelectShippingMethod):
Use ApplePay*Update instead of duplicating its structure in another object (ApplePaySessionPaymentRequest::*Update).
Use ApplePayShippingMethod instead of duplicating its structure in another object (ApplePaySessionPaymentRequest::ShippingMethod).
Use ApplePayError* instead of duplicating its structure in another object (ApplePaySessionPaymentRequest::PaymentError::*).

Source/WebKitLegacy/mac:

  • WebCoreSupport/WebPaymentCoordinatorClient.h:
  • WebCoreSupport/WebPaymentCoordinatorClient.mm:

(WebPaymentCoordinatorClient::completeShippingMethodSelection):
(WebPaymentCoordinatorClient::completeShippingContactSelection):
(WebPaymentCoordinatorClient::completePaymentMethodSelection):
Use ApplePay*Update instead of duplicating its structure in another object (ApplePaySessionPaymentRequest::*Update).

9:33 AM Changeset in webkit [273142] by Jonathan Bedard
  • 6 edits
    1 add in trunk/Tools

[webkitscmpy] Add clean command
https://bugs.webkit.org/show_bug.cgi?id=222135
<rdar://problem/74496504>

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):
(Git.clean): Throw away all local changes.

  • Scripts/libraries/webkitscmpy/webkitscmpy/local/svn.py:

(Svn):
(Svn.clean): Throw away all local changes, delete untracked files.

  • Scripts/libraries/webkitscmpy/webkitscmpy/program/init.py:

(main): Add Clean command

  • Scripts/libraries/webkitscmpy/webkitscmpy/program/clean.py: Added.

(Clean): Command to remove all local changes from the current checkout.

9:29 AM Changeset in webkit [273141] by Chris Dumez
  • 3 edits in trunk

Norton Safe Web extension is causing crashes / hangs under [WKRemoteObjectEncoder encodeObject:forKey:]
https://bugs.webkit.org/show_bug.cgi?id=222172

Reviewed by Alex Christensen.

The extension appears to be trying to send a JSValue that is a DOM Node. WebKit makes the following
call to convert it into a NSDictionary:
[[JSValue valueWithJSValueRef:value inContext:[JSContext contextWithJSGlobalContextRef:JSContextGetGlobalContext(context)]] toObject]

JSC very aggressively iterates over all of the properties of the DOM Node and recursively ends up
converting the whole DOM tree with all their properties. This leads to a lot of cycles to as JSC
maintains the JSObject <-> NSObject identity during the conversion (Each time the JSDocument is
serialized, the same NSDictionary* pointer is used to represent it).

The logic introduced in r270559 to detect cycles was flawed because it relied on a NSSet of
NSObject* and [NSSet containsObject:] to detect the cycles. The issue is that [NSSet containsObject:]
doesn't do a simple pointer comparison but instead calls [NSObject isEqual:] which is very
expensive for types like NSDictionary and leads to trouble when the dictionary contains a cycle.
To address this I replaced the NSSet with a WTF::HashSet<NSObject *> so that key lookup ends up
doing a simple pointer comparison.

Even after the previous fix, the extension would still cause massive hangs because it would take
a very long time to try and encode the whole DOM tree with all the properties of each Node (even
without cycles). To address this, we now abort encoding when detecting a cycle instead of encoding
an empty object to break the cycle.

After this change, Safari becomes usable with this extension again. However, there are still much
shorter hangs that occur due to the converting of the JSNode into a JSDictionary via
[JSValue toObject]. We should probably improve this in a follow-up.

Easy way to reproduce the crash / hang:

  1. Install Norton Safe Web & Norton Password Manager extension (may require a subscription)
  2. Make sure the extensions are activated and turned on by clicking on their icons next to the URL bar
  3. Go to https://bugs.webkit.org/attachment.cgi?id=420530&action=edit
  4. Click on the combo box next to "Review" -> Hang / Crash

No new tests, covered by WebKit.RemoteObjectRegistry API test.

  • Shared/API/Cocoa/WKRemoteObjectCoder.mm:

(-[WKRemoteObjectEncoder init]):
(encodeInvocationArguments):
(encodeObject):

9:16 AM Changeset in webkit [273140] by Caio Lima
  • 2 edits in trunk/JSTests

[ESNext] Fix Test262 expectations for static private methods
https://bugs.webkit.org/show_bug.cgi?id=222170

Unreviewed, update test262/expectations.yaml

  • test262/expectations.yaml:
8:05 AM Changeset in webkit [273139] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebKit

RemoteRenderingBackend is accessed in non-thread-safe manner
https://bugs.webkit.org/show_bug.cgi?id=222056

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2021-02-19
Reviewed by Chris Dumez.

The class calls Connection::addWorkQueueMessageReceiver() during its
construction, passing 'this' as the receiver.

The virtual function pointer is not fully constructed during the call time.
Connection may start dispatching calls to the work queue. The work queue may
dispatch the task function through that pointer immediately after the call. If a
message comes during the constructor call, it may be dispatched during the
constructor still running, before the virtual function pointer being correctly
set up. Accessing virtual function pointer is not thread safe until it is fully
constructed.

No new tests, unit tests for WebKit not possible ATM.

  • GPUProcess/graphics/RemoteRenderingBackend.cpp:

(WebKit::RemoteRenderingBackend::create):
(WebKit::RemoteRenderingBackend::RemoteRenderingBackend):
(WebKit::RemoteRenderingBackend::startListeningForIPC):

  • GPUProcess/graphics/RemoteRenderingBackend.h:
7:51 AM Changeset in webkit [273138] by mark.lam@apple.com
  • 565 edits
    7 adds in trunk/Source

Implement a GC verifier.
https://bugs.webkit.org/show_bug.cgi?id=217274
rdar://56255683

Reviewed by Filip Pizlo and Saam Barati.

Source/JavaScriptCore:

The idea behind the GC verifier is that in the GC End phase before we finalize
and sweep, we'll do a simple stop the world synchronous full GC with the
VerifierSlotVisitor. The VerifierSlotVisitor will collect it's own information
on whether a JS cell should be marked or not. After this verifier GC pass, we'll
compare the mark results.

If the verifier GC says a cell should be marked, then the real GC should have
marked the cell. The reverse is not true: if the verifier does not mark a cell,
it is still OK for the real GC to mark it. For example, in an eden GC, all old
generation cells would be considered mark by the real GC though the verifier would
know better if they are already dead.

Implementation details:

  1. SlotVisitor (only used by the real GC) now inherits from a new abstract class, AbstractSlotVisitor.

VerifierSlotVisitor (only used by the verifier GC) also inherits from
AbstractSlotVisitor.

  1. AbstractSlotVisitor declares many virtual methods.

SlotVisitor implements some of these virtual methods as inline and final.
If the client is invoking one these methods and knows that it will be operating
on a SlotVisitor, the method being final allows it to be inlined into the client
instead of going through the virtual dispatch.

For the VerifierSlotVisitor, these methods will always be invoked by virtual
dispatch via the AbstractSlotVisitor abstraction.

  1. Almost all methods that takes a SlotVisitor previously (with a few exceptions) will now be templatized, and specialized to either take a SlotVisitor or an AbstractSlotVisitor.

The cell MethodTable will now have 2 versions of visitChildren and visitOutputConstraints:
one for SlotVisitor, and one for AbstractSlotVisitor.

The reason we don't wire the 2nd version to VerifierSlotVisitor (instead of
AbstractSlotVisitor) is because we don't need the GC verifier to run at top
speed (though we don't want it to be too slow). Also, having hooks for using
an AbstractSlotVisitor gives us more utility for implementing other types of
GC checkers / analyzers in the future as subclasses of AbstractSlotVisitor.

  1. Some minority of methods that used to take a SlotVisitor but are not critical to performance, will now just take an AbstractSlotVisitor instead. For example, see TypeProfilerLog::visit().
  1. isReachableFromOpaqueRoots() methods will also only take an AbstractSlotVisitor.

The reason this is OK is because isReachableFromOpaqueRoots() only uses the
visitor's addOpaqueRoot() and containsOpaqueRoot() methods, which are implemented
in the AbstractSlotVisitor itself.

For SlotVisitor, the m_opaqueRoot field will reference Heap::m_opaqueRoots.
For VerifierSlotVisitor, the m_opaqueRoot field will reference its own
opaque roots storage.

This implementation of addOpaqueRoot() is perf neutral for SlotVisitor because
where it would previously invoke m_heap.m_opaqueRoots.add(), it will now
invoke m_opaqueRoot.add() instead where m_opaqueRoot points to m_heap.m_opaqueRoots.

Ditto for AbstractSlotVisitor::containsOpaqueRoot().

  1. When reifying a templatized visit method, we do it in 2 ways:
  1. Implement the template method as an ALWAYS_INLINE Impl method, and have 2 visit methods (taking a SlotVisitor and an AbstractSlotVisitor respectively) inline the Impl method. For example, see JSObject::visitChildrenImpl().
  1. Just templatize the visit method, and explicitly instantiate it with a SlotVisitor and an AbstractSlotVisitor. For example, see DesiredTransition::visitChildren().

The reason we need form (a) is if:

  1. we need to export the visit methods. For example, see JSObject:visitChildren().

Note: A Clang engineer told me that "there's no way to export an explicit
instantiation that will make it a strong symbol." This is because "C++ does not
provide any standard way to guarantee that an explicit instantiation is unique,
and Clang hasn't added any extension to do so."

  1. the visit method is an override of a virtual method.

For example, see DFG::Scannable::visitChildren() and DFG::Graph::visitChildren().

Otherwise, we'll prefer form (b) as it is natural C++.

  1. Because templatizing all the visit methods requires a lot of boiler plate code, we introduce some macros in SlotVisitorMacros.h to reduce some of the boiler plate burden.

We especially try to do this for methods of form (a) (see (6) above) which
require more boiler plate.

  1. The driver of the real GC is MarkingConstraintSet::executeConvergence() which runs with the MarkingConstraintSolver.

The driver of the verifier GC is Heap::verifyGC(), which has a loop to drain
marked objects and execute contraints.

  1. The GC verifier is built in by default but disabled. The relevant options are: JSC_verifyGC and JSC_verboseVerifyGC.

JSC_verifyGC will enable the GC verifier.

If JSC_verifyGC is true and the verifier finds a cell that is
erroneously not marked by the real GC, it will dump an error message and then
crash with a RELEASE_ASSERT.

JSC_verboseVerifyGC will enable the GC verifier along with some more heavy
weight record keeping (i.e. tracking the parent / owner cell that marked a
cell, and capturing the call stack when the marked cell is appended to the mark
stack).

If JSC_verboseVerifyGC is true and the verifier finds a cell that is
erroneously not marked by the real GC, it will dump the parent cell and
captured stack along with an error message before crashing. This extra
information provides the starting point for debugging GC bugs found by the
verifier.

Enabling JSC_verboseVerifyGC will automatically enable JSC_verifyGC.

  1. Non-determinism in the real GC.

The GC verifier's algorithm relies on the real GC being deterministic. However,
there are a few places where this is not true:

  1. Marking conservative roots on the mutator stacks.

By the time the verifier GC runs (in the GC End phase), the mutator stacks
will look completely different than what the real GC saw. To work around
this, if the verifier is enabled, then every conservative root captured by
the real GC will also be added to the verifier's mark stack.

When running verifyGC() in the End phase, the conservative root scans will be
treated as no-ops.

  1. CodeBlock::shouldJettisonDueToOldAge() may return a different value.

This is possible because the codeBlock may be in mid compilation while the
real GC is in progress.

CodeBlock::shouldVisitStrongly() calls shouldJettisonDueToOldAge(), and may
see an old LLInt codeBlock whose timeToLive has expired. As a result,
shouldJettisonDueToOldAge() returns true and shouldVisitStrongly() will
return false for the real GC, leading to it not marking the codeBlock.

However, before the verifier GC gets to run, baseline compilation on the
codeBlock may finish. As a baseline codeBlock now, it gets a longer time
to live.

As a result, when the verifier GC runs, shouldJettisonDueToOldAge() will
return false, and shouldVisitStrongly() in turn returns true. This results
in the verifier GC marking the codeBlock (and its children) when the real
GC did not, which leads to a false error. This is not a real error because
if the real GC did not mark the code block, it will simply get jettisoned,
and can be reinstantiated when needed later. There's no GC bug here.
However, we do need to work around this to prevent the false error for the
GC verifier.

The work around is to introduce a CodeBlock::m_visitChildrenSkippedDueToOldAge
flag that records what the real GC decided in shouldJettisonDueToOldAge().
This allows the verifier GC to replay the same decision and get a consistent
result.

  1. CodeBlock::propagateTransitions() will only do a best effort at visiting cells in ICs, etc. If a cell is not already strongly marked by the time CodeBlock::propagateTransitions() checks it, propagateTransitions() will not mark other cells that are reachable from it.

Since the real GC does marking on concurrent threads, marking order is not
deterministic. CodeBlock::propagateTransitions() may or may not see a cell
as already marked by the time it runs.

The verifier GC may mark some of these cells in a different order than the
real GC. As a result, in the verifier GC, CodeBlock::propagateTransitions()
may see a cell as marked (and therefore, visit its children) when it did
not for the real GC.

To work around this, we currently add a SuppressGCVerifierScope to
CodeBlock::propagateTransitions() to pessimize the verifier, and assume that
propagateTransitions() will mark nothing.

SuppressGCVerifierScope is a blunt hammer that stops the verifier GC from
analyzing all cells potentially reachable via CodeBlock::propagateTransitions().
In the future, it may be possible to refine this and track which cells were
actually skipped over (like we did for shouldJettisonDueToOldAge()).
However, this decision tracking needs to be done in the real GC, and can be
very expensive in terms of performance. The shouldJettisonDueToOldAge()
case is rare, and as such lends itself to this more fine grain tracking
without hurting performance. The decisions made in CodeBlock::propagateTransitions()
are not as rare, and hence, it would hurt performance if we did fine grain
decision tracking there (at least or now).

  1. Marking in the verifier GC.

The real GC tracks cell marks using a Bitmap in the MarkedBlocks. The verifier
GC keeps tracks of MarkedBlock cell marks using a Bitmap on the side, stashed
away in a HashMap.

To improve the verifier marking performance, we reserve a void* m_verifierMemo
pointer in the MarkedBlock, which the verifier will employ to cache its
MarkedBlockData for that MarkedBlock. This allows the verifier to get to its
side Bitmap without having to do a HashMap look up for every cell.

Size-wise, in the current 16K MarkBlocks, there is previously room for 1005.5
atoms after reserving space for the MarkedBlock::Footer. Since we can never
allocate half an atom anyway, that .5 atom gives us the 8 bytes we need for
the m_verifierMemo pointer, which we'll put in the MarkedBlock::Footer. With
this patch, each MarkedBlock will now have exactly 1005 atoms available for
allocation.

I ran JetStream2 and Speedometer2 locally on a MacBookAir10,1, MacBookPro16,1,
and a 12.9” 4th Gen iPad Pro. The benchmark results for these were all neutral.

The design of the GC verifier is such that it incurs almost no additional runtime
memory overhead if not in use. Code size does increase significantly because
there are now 2 variants of most of the methods that take a SlotVisitor.

When in use, the additional runtime memory is encapsulated in the
VerifierSlotVisitor, which is instantiated and destructed every GC cycle. Hence,
it can affect peak memory usage during GCs, but the cost is transient. It does
not persist past the GC End phase.

  • API/JSAPIWrapperObject.h:
  • API/JSAPIWrapperObject.mm:

(JSAPIWrapperObjectHandleOwner::isReachableFromOpaqueRoots):
(JSC::JSAPIWrapperObject::visitChildrenImpl):
(JSC::JSAPIWrapperObject::visitChildren): Deleted.

  • API/JSCallbackObject.cpp:
  • API/JSCallbackObject.h:

(JSC::JSCallbackObjectData::visitChildren):
(JSC::JSCallbackObjectData::JSPrivatePropertyMap::visitChildren):
(JSC::JSCallbackObject<Parent>::visitChildrenImpl):

  • API/JSManagedValue.mm:

(JSManagedValueHandleOwner::isReachableFromOpaqueRoots):

  • API/JSMarkingConstraintPrivate.cpp:

(JSC::isMarked):
(JSContextGroupAddMarkingConstraint):

  • API/JSVirtualMachine.mm:

(scanExternalObjectGraph):
(scanExternalRememberedSet):

  • API/JSVirtualMachineInternal.h:
  • API/MarkedJSValueRefArray.cpp:

(JSC::MarkedJSValueRefArray::visitAggregate):

  • API/MarkedJSValueRefArray.h:
  • API/glib/JSAPIWrapperGlobalObject.cpp:

(JSC::JSAPIWrapperGlobalObject::visitChildren): Deleted.

  • API/glib/JSAPIWrapperGlobalObject.h:
  • API/glib/JSAPIWrapperObjectGLib.cpp:

(JSAPIWrapperObjectHandleOwner::isReachableFromOpaqueRoots):
(JSC::JSAPIWrapperObject::visitChildrenImpl):
(JSC::JSAPIWrapperObject::visitChildren): Deleted.

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Scripts/wkbuiltins/builtins_generate_internals_wrapper_header.py:

(BuiltinsInternalsWrapperHeaderGenerator):

  • Scripts/wkbuiltins/builtins_generate_internals_wrapper_implementation.py:

(BuiltinsInternalsWrapperImplementationGenerator.generate_visit_method):

  • Scripts/wkbuiltins/builtins_templates.py:
  • Sources.txt:
  • bytecode/AccessCase.cpp:

(JSC::AccessCase::propagateTransitions const):
(JSC::AccessCase::visitAggregateImpl const):
(JSC::AccessCase::visitAggregate const): Deleted.

  • bytecode/AccessCase.h:
  • bytecode/ByValInfo.cpp:

(JSC::ByValInfo::visitAggregateImpl):
(JSC::ByValInfo::visitAggregate): Deleted.

  • bytecode/ByValInfo.h:
  • bytecode/CheckPrivateBrandStatus.cpp:

(JSC::CheckPrivateBrandStatus::visitAggregateImpl):
(JSC::CheckPrivateBrandStatus::markIfCheap):
(JSC::CheckPrivateBrandStatus::visitAggregate): Deleted.

  • bytecode/CheckPrivateBrandStatus.h:
  • bytecode/CheckPrivateBrandVariant.cpp:

(JSC::CheckPrivateBrandVariant::markIfCheap):
(JSC::CheckPrivateBrandVariant::visitAggregateImpl):
(JSC::CheckPrivateBrandVariant::visitAggregate): Deleted.

  • bytecode/CheckPrivateBrandVariant.h:
  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::CodeBlock):
(JSC::CodeBlock::visitChildrenImpl):
(JSC::CodeBlock::visitChildren):
(JSC::CodeBlock::shouldVisitStrongly):
(JSC::CodeBlock::shouldJettisonDueToOldAge):
(JSC::shouldMarkTransition):
(JSC::CodeBlock::propagateTransitions):
(JSC::CodeBlock::determineLiveness):
(JSC::CodeBlock::finalizeUnconditionally):
(JSC::CodeBlock::visitOSRExitTargets):
(JSC::CodeBlock::stronglyVisitStrongReferences):
(JSC::CodeBlock::stronglyVisitWeakReferences):

  • bytecode/CodeBlock.h:
  • bytecode/DeleteByIdVariant.cpp:

(JSC::DeleteByIdVariant::visitAggregateImpl):
(JSC::DeleteByIdVariant::markIfCheap):
(JSC::DeleteByIdVariant::visitAggregate): Deleted.

  • bytecode/DeleteByIdVariant.h:
  • bytecode/DeleteByStatus.cpp:

(JSC::DeleteByStatus::visitAggregateImpl):
(JSC::DeleteByStatus::markIfCheap):
(JSC::DeleteByStatus::visitAggregate): Deleted.

  • bytecode/DeleteByStatus.h:
  • bytecode/DirectEvalCodeCache.cpp:

(JSC::DirectEvalCodeCache::visitAggregateImpl):
(JSC::DirectEvalCodeCache::visitAggregate): Deleted.

  • bytecode/DirectEvalCodeCache.h:
  • bytecode/ExecutableToCodeBlockEdge.cpp:

(JSC::ExecutableToCodeBlockEdge::visitChildrenImpl):
(JSC::ExecutableToCodeBlockEdge::visitOutputConstraintsImpl):
(JSC::ExecutableToCodeBlockEdge::runConstraint):
(JSC::ExecutableToCodeBlockEdge::visitChildren): Deleted.
(JSC::ExecutableToCodeBlockEdge::visitOutputConstraints): Deleted.

  • bytecode/ExecutableToCodeBlockEdge.h:
  • bytecode/GetByIdVariant.cpp:

(JSC::GetByIdVariant::visitAggregateImpl):
(JSC::GetByIdVariant::markIfCheap):
(JSC::GetByIdVariant::visitAggregate): Deleted.

  • bytecode/GetByIdVariant.h:
  • bytecode/GetByStatus.cpp:

(JSC::GetByStatus::visitAggregateImpl):
(JSC::GetByStatus::markIfCheap):
(JSC::GetByStatus::visitAggregate): Deleted.

  • bytecode/GetByStatus.h:
  • bytecode/InByIdStatus.cpp:

(JSC::InByIdStatus::markIfCheap):

  • bytecode/InByIdStatus.h:
  • bytecode/InByIdVariant.cpp:

(JSC::InByIdVariant::markIfCheap):

  • bytecode/InByIdVariant.h:
  • bytecode/InternalFunctionAllocationProfile.h:

(JSC::InternalFunctionAllocationProfile::visitAggregate):

  • bytecode/ObjectAllocationProfile.h:

(JSC::ObjectAllocationProfileBase::visitAggregate):
(JSC::ObjectAllocationProfileWithPrototype::visitAggregate):

  • bytecode/PolymorphicAccess.cpp:

(JSC::PolymorphicAccess::propagateTransitions const):
(JSC::PolymorphicAccess::visitAggregateImpl):
(JSC::PolymorphicAccess::visitAggregate): Deleted.

  • bytecode/PolymorphicAccess.h:
  • bytecode/PutByIdStatus.cpp:

(JSC::PutByIdStatus::markIfCheap):

  • bytecode/PutByIdStatus.h:
  • bytecode/PutByIdVariant.cpp:

(JSC::PutByIdVariant::markIfCheap):

  • bytecode/PutByIdVariant.h:
  • bytecode/RecordedStatuses.cpp:

(JSC::RecordedStatuses::visitAggregateImpl):
(JSC::RecordedStatuses::markIfCheap):
(JSC::RecordedStatuses::visitAggregate): Deleted.

  • bytecode/RecordedStatuses.h:
  • bytecode/SetPrivateBrandStatus.cpp:

(JSC::SetPrivateBrandStatus::visitAggregateImpl):
(JSC::SetPrivateBrandStatus::markIfCheap):
(JSC::SetPrivateBrandStatus::visitAggregate): Deleted.

  • bytecode/SetPrivateBrandStatus.h:
  • bytecode/SetPrivateBrandVariant.cpp:

(JSC::SetPrivateBrandVariant::markIfCheap):
(JSC::SetPrivateBrandVariant::visitAggregateImpl):
(JSC::SetPrivateBrandVariant::visitAggregate): Deleted.

  • bytecode/SetPrivateBrandVariant.h:
  • bytecode/StructureSet.cpp:

(JSC::StructureSet::markIfCheap const):

  • bytecode/StructureSet.h:
  • bytecode/StructureStubInfo.cpp:

(JSC::StructureStubInfo::visitAggregateImpl):
(JSC::StructureStubInfo::propagateTransitions):
(JSC::StructureStubInfo::visitAggregate): Deleted.

  • bytecode/StructureStubInfo.h:
  • bytecode/UnlinkedCodeBlock.cpp:

(JSC::UnlinkedCodeBlock::visitChildrenImpl):
(JSC::UnlinkedCodeBlock::visitChildren): Deleted.

  • bytecode/UnlinkedCodeBlock.h:
  • bytecode/UnlinkedFunctionExecutable.cpp:

(JSC::UnlinkedFunctionExecutable::visitChildrenImpl):
(JSC::UnlinkedFunctionExecutable::visitChildren): Deleted.

  • bytecode/UnlinkedFunctionExecutable.h:
  • debugger/DebuggerScope.cpp:

(JSC::DebuggerScope::visitChildrenImpl):
(JSC::DebuggerScope::visitChildren): Deleted.

  • debugger/DebuggerScope.h:
  • dfg/DFGDesiredTransitions.cpp:

(JSC::DFG::DesiredTransition::visitChildren):
(JSC::DFG::DesiredTransitions::visitChildren):

  • dfg/DFGDesiredTransitions.h:
  • dfg/DFGDesiredWeakReferences.cpp:

(JSC::DFG::DesiredWeakReferences::visitChildren):

  • dfg/DFGDesiredWeakReferences.h:
  • dfg/DFGGraph.cpp:

(JSC::DFG::Graph::visitChildrenImpl):
(JSC::DFG::Graph::visitChildren):

  • dfg/DFGGraph.h:
  • dfg/DFGPlan.cpp:

(JSC::DFG::Plan::checkLivenessAndVisitChildren):
(JSC::DFG::Plan::isKnownToBeLiveDuringGC):
(JSC::DFG::Plan::isKnownToBeLiveAfterGC):

  • dfg/DFGPlan.h:
  • dfg/DFGPlanInlines.h:

(JSC::DFG::Plan::iterateCodeBlocksForGC):

  • dfg/DFGSafepoint.cpp:

(JSC::DFG::Safepoint::checkLivenessAndVisitChildren):
(JSC::DFG::Safepoint::isKnownToBeLiveDuringGC):
(JSC::DFG::Safepoint::isKnownToBeLiveAfterGC):

  • dfg/DFGSafepoint.h:
  • dfg/DFGScannable.h:
  • dfg/DFGWorklist.cpp:

(JSC::DFG::Worklist::visitWeakReferences):
(JSC::DFG::Worklist::removeDeadPlans):

  • dfg/DFGWorklist.h:
  • dfg/DFGWorklistInlines.h:

(JSC::DFG::iterateCodeBlocksForGC):
(JSC::DFG::Worklist::iterateCodeBlocksForGC):

  • heap/AbstractSlotVisitor.h: Added.

(JSC::AbstractSlotVisitor::Context::cell const):
(JSC::AbstractSlotVisitor::SuppressGCVerifierScope::SuppressGCVerifierScope):
(JSC::AbstractSlotVisitor::SuppressGCVerifierScope::~SuppressGCVerifierScope):
(JSC::AbstractSlotVisitor::DefaultMarkingViolationAssertionScope::DefaultMarkingViolationAssertionScope):
(JSC::AbstractSlotVisitor::collectorMarkStack):
(JSC::AbstractSlotVisitor::mutatorMarkStack):
(JSC::AbstractSlotVisitor::collectorMarkStack const):
(JSC::AbstractSlotVisitor::mutatorMarkStack const):
(JSC::AbstractSlotVisitor::isEmpty):
(JSC::AbstractSlotVisitor::setIgnoreNewOpaqueRoots):
(JSC::AbstractSlotVisitor::visitCount const):
(JSC::AbstractSlotVisitor::addToVisitCount):
(JSC::AbstractSlotVisitor::rootMarkReason const):
(JSC::AbstractSlotVisitor::setRootMarkReason):
(JSC::AbstractSlotVisitor::didRace):
(JSC::AbstractSlotVisitor::codeName const):
(JSC::SetRootMarkReasonScope::SetRootMarkReasonScope):
(JSC::SetRootMarkReasonScope::~SetRootMarkReasonScope):

  • heap/AbstractSlotVisitorInlines.h: Added.

(JSC::AbstractSlotVisitor::Context::Context):
(JSC::AbstractSlotVisitor::Context::~Context):
(JSC::AbstractSlotVisitor::AbstractSlotVisitor):
(JSC::AbstractSlotVisitor::heap const):
(JSC::AbstractSlotVisitor::vm):
(JSC::AbstractSlotVisitor::vm const):
(JSC::AbstractSlotVisitor::addOpaqueRoot):
(JSC::AbstractSlotVisitor::containsOpaqueRoot const):
(JSC::AbstractSlotVisitor::append):
(JSC::AbstractSlotVisitor::appendHidden):
(JSC::AbstractSlotVisitor::appendHiddenUnbarriered):
(JSC::AbstractSlotVisitor::appendValues):
(JSC::AbstractSlotVisitor::appendValuesHidden):
(JSC::AbstractSlotVisitor::appendUnbarriered):
(JSC::AbstractSlotVisitor::parentCell const):
(JSC::AbstractSlotVisitor::reset):

  • heap/HandleSet.cpp:

(JSC::HandleSet::visitStrongHandles):

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

(JSC::Heap::iterateExecutingAndCompilingCodeBlocks):
(JSC::Heap::iterateExecutingAndCompilingCodeBlocksWithoutHoldingLocks):
(JSC::Heap::runEndPhase):
(JSC::Heap::willStartCollection):
(JSC::scanExternalRememberedSet):
(JSC::serviceSamplingProfiler):
(JSC::Heap::addCoreConstraints):
(JSC::Heap::verifyGC):
(JSC::Heap::isAnalyzingHeap const): Deleted.

  • heap/Heap.h:

(JSC::Heap::isMarkingForGCVerifier const):
(JSC::Heap::numOpaqueRoots const): Deleted.

  • heap/HeapInlines.h:

(JSC::Heap::isMarked):

  • heap/HeapProfiler.cpp:

(JSC::HeapProfiler::setActiveHeapAnalyzer):

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

(JSC::IsoCellSet::forEachMarkedCellInParallel):

  • heap/JITStubRoutineSet.cpp:

(JSC::JITStubRoutineSet::traceMarkedStubRoutines):

  • heap/JITStubRoutineSet.h:

(JSC::JITStubRoutineSet::traceMarkedStubRoutines):

  • heap/MarkStackMergingConstraint.cpp:

(JSC::MarkStackMergingConstraint::prepareToExecuteImpl):
(JSC::MarkStackMergingConstraint::executeImplImpl):
(JSC::MarkStackMergingConstraint::executeImpl):

  • heap/MarkStackMergingConstraint.h:
  • heap/MarkedBlock.h:

(JSC::MarkedBlock::Handle::atomAt const):
(JSC::MarkedBlock::setVerifierMemo):
(JSC::MarkedBlock::verifierMemo const):

  • heap/MarkedSpace.cpp:

(JSC::MarkedSpace::visitWeakSets):

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

(JSC::MarkingConstraint::execute):
(JSC::MarkingConstraint::executeSynchronously):
(JSC::MarkingConstraint::prepareToExecute):
(JSC::MarkingConstraint::doParallelWork):
(JSC::MarkingConstraint::prepareToExecuteImpl):

  • heap/MarkingConstraint.h:
  • heap/MarkingConstraintExecutorPair.h: Added.

(JSC::MarkingConstraintExecutorPair::MarkingConstraintExecutorPair):
(JSC::MarkingConstraintExecutorPair::execute):

  • heap/MarkingConstraintSet.cpp:

(JSC::MarkingConstraintSet::add):
(JSC::MarkingConstraintSet::executeAllSynchronously):
(JSC::MarkingConstraintSet::executeAll): Deleted.

  • heap/MarkingConstraintSet.h:

(JSC::MarkingConstraintSet::add):

  • heap/MarkingConstraintSolver.cpp:
  • heap/MarkingConstraintSolver.h:
  • heap/SimpleMarkingConstraint.cpp:

(JSC::SimpleMarkingConstraint::SimpleMarkingConstraint):
(JSC::SimpleMarkingConstraint::executeImplImpl):
(JSC::SimpleMarkingConstraint::executeImpl):

  • heap/SimpleMarkingConstraint.h:
  • heap/SlotVisitor.cpp:

(JSC::SlotVisitor::SlotVisitor):
(JSC::SlotVisitor::reset):
(JSC::SlotVisitor::appendSlow):
(JSC::SlotVisitor::addParallelConstraintTask):

  • heap/SlotVisitor.h:

(JSC::SlotVisitor::collectorMarkStack): Deleted.
(JSC::SlotVisitor::mutatorMarkStack): Deleted.
(JSC::SlotVisitor::collectorMarkStack const): Deleted.
(JSC::SlotVisitor::mutatorMarkStack const): Deleted.
(JSC::SlotVisitor::isEmpty): Deleted.
(JSC::SlotVisitor::isFirstVisit const): Deleted.
(JSC::SlotVisitor::bytesVisited const): Deleted.
(JSC::SlotVisitor::visitCount const): Deleted.
(JSC::SlotVisitor::addToVisitCount): Deleted.
(JSC::SlotVisitor::isAnalyzingHeap const): Deleted.
(JSC::SlotVisitor::heapAnalyzer const): Deleted.
(JSC::SlotVisitor::rootMarkReason const): Deleted.
(JSC::SlotVisitor::setRootMarkReason): Deleted.
(JSC::SlotVisitor::markingVersion const): Deleted.
(JSC::SlotVisitor::mutatorIsStopped const): Deleted.
(JSC::SlotVisitor::rightToRun): Deleted.
(JSC::SlotVisitor::didRace): Deleted.
(JSC::SlotVisitor::setIgnoreNewOpaqueRoots): Deleted.
(JSC::SlotVisitor::codeName const): Deleted.
(JSC::SetRootMarkReasonScope::SetRootMarkReasonScope): Deleted.
(JSC::SetRootMarkReasonScope::~SetRootMarkReasonScope): Deleted.

  • heap/SlotVisitorInlines.h:

(JSC::SlotVisitor::isMarked const):
(JSC::SlotVisitor::addOpaqueRoot): Deleted.
(JSC::SlotVisitor::containsOpaqueRoot const): Deleted.
(JSC::SlotVisitor::heap const): Deleted.
(JSC::SlotVisitor::vm): Deleted.
(JSC::SlotVisitor::vm const): Deleted.

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

(JSC::Subspace::forEachMarkedCellInParallel):

  • heap/VerifierSlotVisitor.cpp: Added.

(JSC::MarkerData::MarkerData):
(JSC::VerifierSlotVisitor::MarkedBlockData::MarkedBlockData):
(JSC::VerifierSlotVisitor::MarkedBlockData::addMarkerData):
(JSC::VerifierSlotVisitor::MarkedBlockData::markerData const):
(JSC::VerifierSlotVisitor::PreciseAllocationData::PreciseAllocationData):
(JSC::VerifierSlotVisitor::PreciseAllocationData::markerData const):
(JSC::VerifierSlotVisitor::PreciseAllocationData::addMarkerData):
(JSC::VerifierSlotVisitor::VerifierSlotVisitor):
(JSC::VerifierSlotVisitor::~VerifierSlotVisitor):
(JSC::VerifierSlotVisitor::addParallelConstraintTask):
(JSC::VerifierSlotVisitor::executeConstraintTasks):
(JSC::VerifierSlotVisitor::append):
(JSC::VerifierSlotVisitor::appendToMarkStack):
(JSC::VerifierSlotVisitor::appendUnbarriered):
(JSC::VerifierSlotVisitor::appendHiddenUnbarriered):
(JSC::VerifierSlotVisitor::drain):
(JSC::VerifierSlotVisitor::dumpMarkerData):
(JSC::VerifierSlotVisitor::isFirstVisit const):
(JSC::VerifierSlotVisitor::isMarked const):
(JSC::VerifierSlotVisitor::markAuxiliary):
(JSC::VerifierSlotVisitor::mutatorIsStopped const):
(JSC::VerifierSlotVisitor::testAndSetMarked):
(JSC::VerifierSlotVisitor::setMarkedAndAppendToMarkStack):
(JSC::VerifierSlotVisitor::visitAsConstraint):
(JSC::VerifierSlotVisitor::visitChildren):

  • heap/VerifierSlotVisitor.h: Added.

(JSC::VerifierSlotVisitor::MarkedBlockData::block const):
(JSC::VerifierSlotVisitor::MarkedBlockData::atoms const):
(JSC::VerifierSlotVisitor::MarkedBlockData::isMarked):
(JSC::VerifierSlotVisitor::MarkedBlockData::testAndSetMarked):
(JSC::VerifierSlotVisitor::PreciseAllocationData::allocation const):
(JSC::VerifierSlotVisitor::appendSlow):

  • heap/VerifierSlotVisitorInlines.h: Added.

(JSC::VerifierSlotVisitor::forEachLiveCell):
(JSC::VerifierSlotVisitor::forEachLivePreciseAllocation):
(JSC::VerifierSlotVisitor::forEachLiveMarkedBlockCell):

  • heap/VisitCounter.h:

(JSC::VisitCounter::VisitCounter):
(JSC::VisitCounter::visitor const):

  • heap/WeakBlock.cpp:

(JSC::WeakBlock::specializedVisit):
(JSC::WeakBlock::visitImpl):
(JSC::WeakBlock::visit):

  • heap/WeakBlock.h:
  • heap/WeakHandleOwner.cpp:

(JSC::WeakHandleOwner::isReachableFromOpaqueRoots):

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

(JSC::WeakSet::visit):

  • interpreter/ShadowChicken.cpp:

(JSC::ShadowChicken::visitChildren):

  • interpreter/ShadowChicken.h:
  • jit/GCAwareJITStubRoutine.cpp:

(JSC::MarkingGCAwareJITStubRoutine::markRequiredObjectsInternalImpl):
(JSC::MarkingGCAwareJITStubRoutine::markRequiredObjectsInternal):
(JSC::GCAwareJITStubRoutine::markRequiredObjectsInternal): Deleted.

  • jit/GCAwareJITStubRoutine.h:

(JSC::GCAwareJITStubRoutine::markRequiredObjects):
(JSC::GCAwareJITStubRoutine::markRequiredObjectsInternal):

  • jit/JITWorklist.cpp:
  • jit/PolymorphicCallStubRoutine.cpp:

(JSC::PolymorphicCallStubRoutine::markRequiredObjectsInternalImpl):
(JSC::PolymorphicCallStubRoutine::markRequiredObjectsInternal):

  • jit/PolymorphicCallStubRoutine.h:
  • runtime/AbstractModuleRecord.cpp:

(JSC::AbstractModuleRecord::visitChildrenImpl):
(JSC::AbstractModuleRecord::visitChildren): Deleted.

  • runtime/AbstractModuleRecord.h:
  • runtime/ArgList.cpp:

(JSC::MarkedArgumentBuffer::markLists):

  • runtime/ArgList.h:
  • runtime/CacheableIdentifier.h:
  • runtime/CacheableIdentifierInlines.h:

(JSC::CacheableIdentifier::visitAggregate const):

  • runtime/ClassInfo.h:

(JSC::MethodTable::visitChildren const):
(JSC::MethodTable::visitOutputConstraints const):

  • runtime/ClonedArguments.cpp:

(JSC::ClonedArguments::visitChildrenImpl):
(JSC::ClonedArguments::visitChildren): Deleted.

  • runtime/ClonedArguments.h:
  • runtime/DirectArguments.cpp:

(JSC::DirectArguments::visitChildrenImpl):
(JSC::DirectArguments::visitChildren): Deleted.

  • runtime/DirectArguments.h:
  • runtime/EvalExecutable.cpp:

(JSC::EvalExecutable::visitChildrenImpl):
(JSC::EvalExecutable::visitChildren): Deleted.

  • runtime/EvalExecutable.h:
  • runtime/Exception.cpp:

(JSC::Exception::visitChildrenImpl):
(JSC::Exception::visitChildren): Deleted.

  • runtime/Exception.h:
  • runtime/FunctionExecutable.cpp:

(JSC::FunctionExecutable::visitChildrenImpl):
(JSC::FunctionExecutable::visitChildren): Deleted.

  • runtime/FunctionExecutable.h:
  • runtime/FunctionRareData.cpp:

(JSC::FunctionRareData::visitChildrenImpl):
(JSC::FunctionRareData::visitChildren): Deleted.

  • runtime/FunctionRareData.h:
  • runtime/GenericArguments.h:
  • runtime/GenericArgumentsInlines.h:

(JSC::GenericArguments<Type>::visitChildrenImpl):
(JSC::GenericArguments<Type>::visitChildren): Deleted.

  • runtime/GetterSetter.cpp:

(JSC::GetterSetter::visitChildrenImpl):
(JSC::GetterSetter::visitChildren): Deleted.

  • runtime/GetterSetter.h:
  • runtime/HashMapImpl.cpp:

(JSC::HashMapBucket<Data>::visitChildrenImpl):
(JSC::HashMapImpl<HashMapBucket>::visitChildrenImpl):
(JSC::HashMapBucket<Data>::visitChildren): Deleted.
(JSC::HashMapImpl<HashMapBucket>::visitChildren): Deleted.

  • runtime/HashMapImpl.h:
  • runtime/InternalFunction.cpp:

(JSC::InternalFunction::visitChildrenImpl):
(JSC::InternalFunction::visitChildren): Deleted.

  • runtime/InternalFunction.h:
  • runtime/IntlCollator.cpp:

(JSC::IntlCollator::visitChildrenImpl):
(JSC::IntlCollator::visitChildren): Deleted.

  • runtime/IntlCollator.h:
  • runtime/IntlDateTimeFormat.cpp:

(JSC::IntlDateTimeFormat::visitChildrenImpl):
(JSC::IntlDateTimeFormat::visitChildren): Deleted.

  • runtime/IntlDateTimeFormat.h:
  • runtime/IntlLocale.cpp:

(JSC::IntlLocale::visitChildrenImpl):
(JSC::IntlLocale::visitChildren): Deleted.

  • runtime/IntlLocale.h:
  • runtime/IntlNumberFormat.cpp:

(JSC::IntlNumberFormat::visitChildrenImpl):
(JSC::IntlNumberFormat::visitChildren): Deleted.

  • runtime/IntlNumberFormat.h:
  • runtime/IntlPluralRules.cpp:

(JSC::IntlPluralRules::visitChildrenImpl):
(JSC::IntlPluralRules::visitChildren): Deleted.

  • runtime/IntlPluralRules.h:
  • runtime/IntlRelativeTimeFormat.cpp:

(JSC::IntlRelativeTimeFormat::visitChildrenImpl):
(JSC::IntlRelativeTimeFormat::visitChildren): Deleted.

  • runtime/IntlRelativeTimeFormat.h:
  • runtime/IntlSegmentIterator.cpp:

(JSC::IntlSegmentIterator::visitChildrenImpl):
(JSC::IntlSegmentIterator::visitChildren): Deleted.

  • runtime/IntlSegmentIterator.h:
  • runtime/IntlSegments.cpp:

(JSC::IntlSegments::visitChildrenImpl):
(JSC::IntlSegments::visitChildren): Deleted.

  • runtime/IntlSegments.h:
  • runtime/JSArrayBufferView.cpp:

(JSC::JSArrayBufferView::visitChildrenImpl):
(JSC::JSArrayBufferView::visitChildren): Deleted.

  • runtime/JSArrayBufferView.h:
  • runtime/JSArrayIterator.cpp:

(JSC::JSArrayIterator::visitChildrenImpl):
(JSC::JSArrayIterator::visitChildren): Deleted.

  • runtime/JSArrayIterator.h:
  • runtime/JSAsyncGenerator.cpp:

(JSC::JSAsyncGenerator::visitChildrenImpl):
(JSC::JSAsyncGenerator::visitChildren): Deleted.

  • runtime/JSAsyncGenerator.h:
  • runtime/JSBigInt.cpp:

(JSC::JSBigInt::visitChildrenImpl):
(JSC::JSBigInt::visitChildren): Deleted.

  • runtime/JSBigInt.h:
  • runtime/JSBoundFunction.cpp:

(JSC::JSBoundFunction::visitChildrenImpl):
(JSC::JSBoundFunction::visitChildren): Deleted.

  • runtime/JSBoundFunction.h:
  • runtime/JSCallee.cpp:

(JSC::JSCallee::visitChildrenImpl):
(JSC::JSCallee::visitChildren): Deleted.

  • runtime/JSCallee.h:
  • runtime/JSCell.h:
  • runtime/JSCellInlines.h:

(JSC::JSCell::visitChildrenImpl):
(JSC::JSCell::visitOutputConstraintsImpl):
(JSC::JSCell::visitChildren): Deleted.
(JSC::JSCell::visitOutputConstraints): Deleted.

  • runtime/JSFinalizationRegistry.cpp:

(JSC::JSFinalizationRegistry::visitChildrenImpl):
(JSC::JSFinalizationRegistry::visitChildren): Deleted.

  • runtime/JSFinalizationRegistry.h:
  • runtime/JSFunction.cpp:

(JSC::JSFunction::visitChildrenImpl):
(JSC::JSFunction::visitChildren): Deleted.

  • runtime/JSFunction.h:
  • runtime/JSGenerator.cpp:

(JSC::JSGenerator::visitChildrenImpl):
(JSC::JSGenerator::visitChildren): Deleted.

  • runtime/JSGenerator.h:
  • runtime/JSGenericTypedArrayView.h:
  • runtime/JSGenericTypedArrayViewInlines.h:

(JSC::JSGenericTypedArrayView<Adaptor>::visitChildrenImpl):
(JSC::JSGenericTypedArrayView<Adaptor>::visitChildren): Deleted.

  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::visitChildrenImpl):
(JSC::JSGlobalObject::visitChildren): Deleted.

  • runtime/JSGlobalObject.h:
  • runtime/JSImmutableButterfly.cpp:

(JSC::JSImmutableButterfly::visitChildrenImpl):
(JSC::JSImmutableButterfly::visitChildren): Deleted.

  • runtime/JSImmutableButterfly.h:
  • runtime/JSInternalFieldObjectImpl.h:
  • runtime/JSInternalFieldObjectImplInlines.h:

(JSC::JSInternalFieldObjectImpl<passedNumberOfInternalFields>::visitChildrenImpl):
(JSC::JSInternalFieldObjectImpl<passedNumberOfInternalFields>::visitChildren): Deleted.

  • runtime/JSLexicalEnvironment.cpp:

(JSC::JSLexicalEnvironment::visitChildrenImpl):
(JSC::JSLexicalEnvironment::visitChildren): Deleted.

  • runtime/JSLexicalEnvironment.h:
  • runtime/JSMapIterator.cpp:

(JSC::JSMapIterator::visitChildrenImpl):
(JSC::JSMapIterator::visitChildren): Deleted.

  • runtime/JSMapIterator.h:
  • runtime/JSModuleEnvironment.cpp:

(JSC::JSModuleEnvironment::visitChildrenImpl):
(JSC::JSModuleEnvironment::visitChildren): Deleted.

  • runtime/JSModuleEnvironment.h:
  • runtime/JSModuleNamespaceObject.cpp:

(JSC::JSModuleNamespaceObject::visitChildrenImpl):
(JSC::JSModuleNamespaceObject::visitChildren): Deleted.

  • runtime/JSModuleNamespaceObject.h:
  • runtime/JSModuleRecord.cpp:

(JSC::JSModuleRecord::visitChildrenImpl):
(JSC::JSModuleRecord::visitChildren): Deleted.

  • runtime/JSModuleRecord.h:
  • runtime/JSNativeStdFunction.cpp:

(JSC::JSNativeStdFunction::visitChildrenImpl):
(JSC::JSNativeStdFunction::visitChildren): Deleted.

  • runtime/JSNativeStdFunction.h:
  • runtime/JSObject.cpp:

(JSC::JSObject::markAuxiliaryAndVisitOutOfLineProperties):
(JSC::JSObject::visitButterfly):
(JSC::JSObject::visitButterflyImpl):
(JSC::JSObject::visitChildrenImpl):
(JSC::JSFinalObject::visitChildrenImpl):
(JSC::JSObject::visitChildren): Deleted.
(JSC::JSFinalObject::visitChildren): Deleted.

  • runtime/JSObject.h:
  • runtime/JSPromise.cpp:

(JSC::JSPromise::visitChildrenImpl):
(JSC::JSPromise::visitChildren): Deleted.

  • runtime/JSPromise.h:
  • runtime/JSPropertyNameEnumerator.cpp:

(JSC::JSPropertyNameEnumerator::visitChildrenImpl):
(JSC::JSPropertyNameEnumerator::visitChildren): Deleted.

  • runtime/JSPropertyNameEnumerator.h:
  • runtime/JSProxy.cpp:

(JSC::JSProxy::visitChildrenImpl):
(JSC::JSProxy::visitChildren): Deleted.

  • runtime/JSProxy.h:
  • runtime/JSScope.cpp:

(JSC::JSScope::visitChildrenImpl):
(JSC::JSScope::visitChildren): Deleted.

  • runtime/JSScope.h:
  • runtime/JSSegmentedVariableObject.cpp:

(JSC::JSSegmentedVariableObject::visitChildrenImpl):
(JSC::JSSegmentedVariableObject::visitChildren): Deleted.

  • runtime/JSSegmentedVariableObject.h:
  • runtime/JSSetIterator.cpp:

(JSC::JSSetIterator::visitChildrenImpl):
(JSC::JSSetIterator::visitChildren): Deleted.

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

(JSC::JSString::visitChildrenImpl):
(JSC::JSString::visitChildren): Deleted.

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

(JSC::JSStringIterator::visitChildrenImpl):
(JSC::JSStringIterator::visitChildren): Deleted.

  • runtime/JSStringIterator.h:
  • runtime/JSSymbolTableObject.cpp:

(JSC::JSSymbolTableObject::visitChildrenImpl):
(JSC::JSSymbolTableObject::visitChildren): Deleted.

  • runtime/JSSymbolTableObject.h:
  • runtime/JSWeakObjectRef.cpp:

(JSC::JSWeakObjectRef::visitChildrenImpl):
(JSC::JSWeakObjectRef::visitChildren): Deleted.

  • runtime/JSWeakObjectRef.h:
  • runtime/JSWithScope.cpp:

(JSC::JSWithScope::visitChildrenImpl):
(JSC::JSWithScope::visitChildren): Deleted.

  • runtime/JSWithScope.h:
  • runtime/JSWrapperObject.cpp:

(JSC::JSWrapperObject::visitChildrenImpl):
(JSC::JSWrapperObject::visitChildren): Deleted.

  • runtime/JSWrapperObject.h:
  • runtime/LazyClassStructure.cpp:

(JSC::LazyClassStructure::visit):

  • runtime/LazyClassStructure.h:
  • runtime/LazyProperty.h:
  • runtime/LazyPropertyInlines.h:

(JSC::ElementType>::visit):

  • runtime/ModuleProgramExecutable.cpp:

(JSC::ModuleProgramExecutable::visitChildrenImpl):
(JSC::ModuleProgramExecutable::visitChildren): Deleted.

  • runtime/ModuleProgramExecutable.h:
  • runtime/Options.cpp:

(JSC::Options::recomputeDependentOptions):

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

(JSC::ProgramExecutable::visitChildrenImpl):
(JSC::ProgramExecutable::visitChildren): Deleted.

  • runtime/ProgramExecutable.h:
  • runtime/PropertyMapHashTable.h:
  • runtime/PropertyTable.cpp:

(JSC::PropertyTable::visitChildrenImpl):
(JSC::PropertyTable::visitChildren): Deleted.

  • runtime/ProxyObject.cpp:

(JSC::ProxyObject::visitChildrenImpl):
(JSC::ProxyObject::visitChildren): Deleted.

  • runtime/ProxyObject.h:
  • runtime/ProxyRevoke.cpp:

(JSC::ProxyRevoke::visitChildrenImpl):
(JSC::ProxyRevoke::visitChildren): Deleted.

  • runtime/ProxyRevoke.h:
  • runtime/RegExpCachedResult.cpp:

(JSC::RegExpCachedResult::visitAggregateImpl):
(JSC::RegExpCachedResult::visitAggregate): Deleted.

  • runtime/RegExpCachedResult.h:
  • runtime/RegExpGlobalData.cpp:

(JSC::RegExpGlobalData::visitAggregateImpl):
(JSC::RegExpGlobalData::visitAggregate): Deleted.

  • runtime/RegExpGlobalData.h:
  • runtime/RegExpObject.cpp:

(JSC::RegExpObject::visitChildrenImpl):
(JSC::RegExpObject::visitChildren): Deleted.

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

(JSC::SamplingProfiler::visit):

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

(JSC::ScopedArguments::visitChildrenImpl):
(JSC::ScopedArguments::visitChildren): Deleted.

  • runtime/ScopedArguments.h:
  • runtime/SimpleTypedArrayController.cpp:

(JSC::SimpleTypedArrayController::JSArrayBufferOwner::isReachableFromOpaqueRoots):

  • runtime/SimpleTypedArrayController.h:
  • runtime/SmallStrings.cpp:

(JSC::SmallStrings::visitStrongReferences):

  • runtime/SmallStrings.h:
  • runtime/SparseArrayValueMap.cpp:

(JSC::SparseArrayValueMap::visitChildrenImpl):
(JSC::SparseArrayValueMap::visitChildren): Deleted.

  • runtime/SparseArrayValueMap.h:
  • runtime/StackFrame.cpp:

(JSC::StackFrame::visitChildren): Deleted.

  • runtime/StackFrame.h:

(JSC::StackFrame::visitChildren):

  • runtime/Structure.cpp:

(JSC::Structure::visitChildrenImpl):
(JSC::Structure::isCheapDuringGC):
(JSC::Structure::markIfCheap):
(JSC::Structure::visitChildren): Deleted.

  • runtime/Structure.h:
  • runtime/StructureChain.cpp:

(JSC::StructureChain::visitChildrenImpl):
(JSC::StructureChain::visitChildren): Deleted.

  • runtime/StructureChain.h:
  • runtime/StructureRareData.cpp:

(JSC::StructureRareData::visitChildrenImpl):
(JSC::StructureRareData::visitChildren): Deleted.

  • runtime/StructureRareData.h:
  • runtime/SymbolTable.cpp:

(JSC::SymbolTable::visitChildrenImpl):
(JSC::SymbolTable::visitChildren): Deleted.

  • runtime/SymbolTable.h:
  • runtime/TypeProfilerLog.cpp:

(JSC::TypeProfilerLog::visit):

  • runtime/TypeProfilerLog.h:
  • runtime/VM.h:

(JSC::VM::isAnalyzingHeap const):
(JSC::VM::activeHeapAnalyzer const):
(JSC::VM::setActiveHeapAnalyzer):

  • runtime/WeakMapImpl.cpp:

(JSC::WeakMapImpl<WeakMapBucket>::visitChildrenImpl):
(JSC::WeakMapImpl<WeakMapBucket<WeakMapBucketDataKey>>::visitOutputConstraints):
(JSC::WeakMapImpl<BucketType>::visitOutputConstraints):
(JSC::WeakMapImpl<WeakMapBucket>::visitChildren): Deleted.
(JSC::WeakMapImpl<WeakMapBucket<WeakMapBucketDataKeyValue>>::visitOutputConstraints): Deleted.

  • runtime/WeakMapImpl.h:

(JSC::WeakMapBucket::visitAggregate):

  • tools/JSDollarVM.cpp:

(JSC::JSDollarVM::visitChildrenImpl):
(JSC::JSDollarVM::visitChildren): Deleted.

  • tools/JSDollarVM.h:
  • wasm/WasmGlobal.cpp:

(JSC::Wasm::Global::visitAggregateImpl):
(JSC::Wasm::Global::visitAggregate): Deleted.

  • wasm/WasmGlobal.h:
  • wasm/WasmTable.cpp:

(JSC::Wasm::Table::visitAggregateImpl):
(JSC::Wasm::Table::visitAggregate): Deleted.

  • wasm/WasmTable.h:
  • wasm/js/JSToWasmICCallee.cpp:

(JSC::JSToWasmICCallee::visitChildrenImpl):
(JSC::JSToWasmICCallee::visitChildren): Deleted.

  • wasm/js/JSToWasmICCallee.h:
  • wasm/js/JSWebAssemblyCodeBlock.cpp:

(JSC::JSWebAssemblyCodeBlock::visitChildrenImpl):
(JSC::JSWebAssemblyCodeBlock::visitChildren): Deleted.

  • wasm/js/JSWebAssemblyCodeBlock.h:
  • wasm/js/JSWebAssemblyGlobal.cpp:

(JSC::JSWebAssemblyGlobal::visitChildrenImpl):
(JSC::JSWebAssemblyGlobal::visitChildren): Deleted.

  • wasm/js/JSWebAssemblyGlobal.h:
  • wasm/js/JSWebAssemblyInstance.cpp:

(JSC::JSWebAssemblyInstance::visitChildrenImpl):
(JSC::JSWebAssemblyInstance::visitChildren): Deleted.

  • wasm/js/JSWebAssemblyInstance.h:
  • wasm/js/JSWebAssemblyMemory.cpp:

(JSC::JSWebAssemblyMemory::visitChildrenImpl):
(JSC::JSWebAssemblyMemory::visitChildren): Deleted.

  • wasm/js/JSWebAssemblyMemory.h:
  • wasm/js/JSWebAssemblyModule.cpp:

(JSC::JSWebAssemblyModule::visitChildrenImpl):
(JSC::JSWebAssemblyModule::visitChildren): Deleted.

  • wasm/js/JSWebAssemblyModule.h:
  • wasm/js/JSWebAssemblyTable.cpp:

(JSC::JSWebAssemblyTable::visitChildrenImpl):
(JSC::JSWebAssemblyTable::visitChildren): Deleted.

  • wasm/js/JSWebAssemblyTable.h:
  • wasm/js/WebAssemblyFunction.cpp:

(JSC::WebAssemblyFunction::visitChildrenImpl):
(JSC::WebAssemblyFunction::visitChildren): Deleted.

  • wasm/js/WebAssemblyFunction.h:
  • wasm/js/WebAssemblyFunctionBase.cpp:

(JSC::WebAssemblyFunctionBase::visitChildrenImpl):
(JSC::WebAssemblyFunctionBase::visitChildren): Deleted.

  • wasm/js/WebAssemblyFunctionBase.h:
  • wasm/js/WebAssemblyModuleRecord.cpp:

(JSC::WebAssemblyModuleRecord::visitChildrenImpl):
(JSC::WebAssemblyModuleRecord::visitChildren): Deleted.

  • wasm/js/WebAssemblyModuleRecord.h:
  • wasm/js/WebAssemblyWrapperFunction.cpp:

(JSC::WebAssemblyWrapperFunction::visitChildrenImpl):
(JSC::WebAssemblyWrapperFunction::visitChildren): Deleted.

  • wasm/js/WebAssemblyWrapperFunction.h:

Source/WebCore:

  1. Added support for the GC verifier.
  2. Also removed NodeFilterCondition::visitAggregate() because it is not used.
  3. Rebased bindings test results.
  • Modules/indexeddb/IDBObjectStore.cpp:

(WebCore::IDBObjectStore::visitReferencedIndexes const):

  • Modules/indexeddb/IDBObjectStore.h:
  • Modules/indexeddb/IDBTransaction.cpp:

(WebCore::IDBTransaction::visitReferencedObjectStores const):

  • Modules/indexeddb/IDBTransaction.h:
  • Modules/webaudio/AudioBuffer.cpp:

(WebCore::AudioBuffer::visitChannelWrappers):

  • Modules/webaudio/AudioBuffer.h:
  • bindings/js/DOMGCOutputConstraint.cpp:

(WebCore::DOMGCOutputConstraint::executeImplImpl):
(WebCore::DOMGCOutputConstraint::executeImpl):

  • bindings/js/DOMGCOutputConstraint.h:
  • bindings/js/JSAbortControllerCustom.cpp:

(WebCore::JSAbortController::visitAdditionalChildren):

  • bindings/js/JSAbortSignalCustom.cpp:

(WebCore::JSAbortSignalOwner::isReachableFromOpaqueRoots):

  • bindings/js/JSAttrCustom.cpp:

(WebCore::JSAttr::visitAdditionalChildren):

  • bindings/js/JSAudioBufferCustom.cpp:

(WebCore::JSAudioBuffer::visitAdditionalChildren):

  • bindings/js/JSAudioTrackCustom.cpp:

(WebCore::JSAudioTrack::visitAdditionalChildren):

  • bindings/js/JSAudioTrackListCustom.cpp:

(WebCore::JSAudioTrackList::visitAdditionalChildren):

  • bindings/js/JSAudioWorkletProcessorCustom.cpp:

(WebCore::JSAudioWorkletProcessor::visitAdditionalChildren):

  • bindings/js/JSCSSRuleCustom.cpp:

(WebCore::JSCSSRule::visitAdditionalChildren):

  • bindings/js/JSCSSRuleListCustom.cpp:

(WebCore::JSCSSRuleListOwner::isReachableFromOpaqueRoots):

  • bindings/js/JSCSSStyleDeclarationCustom.cpp:

(WebCore::JSCSSStyleDeclaration::visitAdditionalChildren):

  • bindings/js/JSCallbackData.cpp:

(WebCore::JSCallbackDataWeak::visitJSFunction):
(WebCore::JSCallbackDataWeak::WeakOwner::isReachableFromOpaqueRoots):

  • bindings/js/JSCallbackData.h:
  • bindings/js/JSCanvasRenderingContext2DCustom.cpp:

(WebCore::JSCanvasRenderingContext2DOwner::isReachableFromOpaqueRoots):
(WebCore::JSCanvasRenderingContext2D::visitAdditionalChildren):

  • bindings/js/JSCustomEventCustom.cpp:

(WebCore::JSCustomEvent::visitAdditionalChildren):

  • bindings/js/JSDOMBuiltinConstructorBase.cpp:

(WebCore::JSDOMBuiltinConstructorBase::visitChildrenImpl):
(WebCore::JSDOMBuiltinConstructorBase::visitChildren): Deleted.

  • bindings/js/JSDOMBuiltinConstructorBase.h:
  • bindings/js/JSDOMGlobalObject.cpp:

(WebCore::JSDOMGlobalObject::visitChildrenImpl):
(WebCore::JSDOMGlobalObject::visitChildren): Deleted.

  • bindings/js/JSDOMGlobalObject.h:
  • bindings/js/JSDOMGuardedObject.h:
  • bindings/js/JSDOMQuadCustom.cpp:

(WebCore::JSDOMQuad::visitAdditionalChildren):

  • bindings/js/JSDOMWindowCustom.cpp:

(WebCore::JSDOMWindow::visitAdditionalChildren):

  • bindings/js/JSDeprecatedCSSOMValueCustom.cpp:

(WebCore::JSDeprecatedCSSOMValueOwner::isReachableFromOpaqueRoots):

  • bindings/js/JSDocumentCustom.cpp:

(WebCore::JSDocument::visitAdditionalChildren):

  • bindings/js/JSErrorEventCustom.cpp:

(WebCore::JSErrorEvent::visitAdditionalChildren):

  • bindings/js/JSEventListener.cpp:

(WebCore::JSEventListener::visitJSFunctionImpl):
(WebCore::JSEventListener::visitJSFunction):

  • bindings/js/JSEventListener.h:
  • bindings/js/JSEventTargetCustom.cpp:

(WebCore::JSEventTarget::visitAdditionalChildren):

  • bindings/js/JSFetchEventCustom.cpp:

(WebCore::JSFetchEvent::visitAdditionalChildren):

  • bindings/js/JSHTMLCanvasElementCustom.cpp:

(WebCore::JSHTMLCanvasElement::visitAdditionalChildren):

  • bindings/js/JSHTMLTemplateElementCustom.cpp:

(WebCore::JSHTMLTemplateElement::visitAdditionalChildren):

  • bindings/js/JSHistoryCustom.cpp:

(WebCore::JSHistory::visitAdditionalChildren):

  • bindings/js/JSIDBCursorCustom.cpp:

(WebCore::JSIDBCursor::visitAdditionalChildren):

  • bindings/js/JSIDBCursorWithValueCustom.cpp:

(WebCore::JSIDBCursorWithValue::visitAdditionalChildren):

  • bindings/js/JSIDBIndexCustom.cpp:

(WebCore::JSIDBIndex::visitAdditionalChildren):

  • bindings/js/JSIDBObjectStoreCustom.cpp:

(WebCore::JSIDBObjectStore::visitAdditionalChildren):

  • bindings/js/JSIDBRequestCustom.cpp:

(WebCore::JSIDBRequest::visitAdditionalChildren):

  • bindings/js/JSIDBTransactionCustom.cpp:

(WebCore::JSIDBTransaction::visitAdditionalChildren):

  • bindings/js/JSIntersectionObserverCustom.cpp:

(WebCore::JSIntersectionObserver::visitAdditionalChildren):

  • bindings/js/JSIntersectionObserverEntryCustom.cpp:

(WebCore::JSIntersectionObserverEntry::visitAdditionalChildren):

  • bindings/js/JSMessageChannelCustom.cpp:

(WebCore::JSMessageChannel::visitAdditionalChildren):

  • bindings/js/JSMessageEventCustom.cpp:

(WebCore::JSMessageEvent::visitAdditionalChildren):

  • bindings/js/JSMessagePortCustom.cpp:

(WebCore::JSMessagePort::visitAdditionalChildren):

  • bindings/js/JSMutationObserverCustom.cpp:

(WebCore::JSMutationObserver::visitAdditionalChildren):
(WebCore::JSMutationObserverOwner::isReachableFromOpaqueRoots):

  • bindings/js/JSMutationRecordCustom.cpp:

(WebCore::JSMutationRecord::visitAdditionalChildren):

  • bindings/js/JSNavigatorCustom.cpp:

(WebCore::JSNavigator::visitAdditionalChildren):

  • bindings/js/JSNodeCustom.cpp:

(WebCore::isReachableFromDOM):
(WebCore::JSNodeOwner::isReachableFromOpaqueRoots):
(WebCore::JSNode::visitAdditionalChildren):

  • bindings/js/JSNodeIteratorCustom.cpp:

(WebCore::JSNodeIterator::visitAdditionalChildren):

  • bindings/js/JSNodeListCustom.cpp:

(WebCore::JSNodeListOwner::isReachableFromOpaqueRoots):

  • bindings/js/JSOffscreenCanvasRenderingContext2DCustom.cpp:

(WebCore::JSOffscreenCanvasRenderingContext2DOwner::isReachableFromOpaqueRoots):
(WebCore::JSOffscreenCanvasRenderingContext2D::visitAdditionalChildren):

  • bindings/js/JSPaintRenderingContext2DCustom.cpp:

(WebCore::JSPaintRenderingContext2DOwner::isReachableFromOpaqueRoots):
(WebCore::JSPaintRenderingContext2D::visitAdditionalChildren):

  • bindings/js/JSPaintWorkletGlobalScopeCustom.cpp:

(WebCore::JSPaintWorkletGlobalScope::visitAdditionalChildren):

  • bindings/js/JSPaymentMethodChangeEventCustom.cpp:

(WebCore::JSPaymentMethodChangeEvent::visitAdditionalChildren):

  • bindings/js/JSPaymentResponseCustom.cpp:

(WebCore::JSPaymentResponse::visitAdditionalChildren):

  • bindings/js/JSPerformanceObserverCustom.cpp:

(WebCore::JSPerformanceObserver::visitAdditionalChildren):
(WebCore::JSPerformanceObserverOwner::isReachableFromOpaqueRoots):

  • bindings/js/JSPopStateEventCustom.cpp:

(WebCore::JSPopStateEvent::visitAdditionalChildren):

  • bindings/js/JSPromiseRejectionEventCustom.cpp:

(WebCore::JSPromiseRejectionEvent::visitAdditionalChildren):

  • bindings/js/JSResizeObserverCustom.cpp:

(WebCore::JSResizeObserver::visitAdditionalChildren):

  • bindings/js/JSResizeObserverEntryCustom.cpp:

(WebCore::JSResizeObserverEntry::visitAdditionalChildren):

  • bindings/js/JSSVGViewSpecCustom.cpp:

(WebCore::JSSVGViewSpec::visitAdditionalChildren):

  • bindings/js/JSServiceWorkerGlobalScopeCustom.cpp:

(WebCore::JSServiceWorkerGlobalScope::visitAdditionalChildren):

  • bindings/js/JSStaticRangeCustom.cpp:

(WebCore::JSStaticRange::visitAdditionalChildren):

  • bindings/js/JSStyleSheetCustom.cpp:

(WebCore::JSStyleSheet::visitAdditionalChildren):

  • bindings/js/JSTextTrackCueCustom.cpp:

(WebCore::JSTextTrackCueOwner::isReachableFromOpaqueRoots):
(WebCore::JSTextTrackCue::visitAdditionalChildren):

  • bindings/js/JSTextTrackCustom.cpp:

(WebCore::JSTextTrack::visitAdditionalChildren):

  • bindings/js/JSTextTrackListCustom.cpp:

(WebCore::JSTextTrackList::visitAdditionalChildren):

  • bindings/js/JSTreeWalkerCustom.cpp:

(WebCore::JSTreeWalker::visitAdditionalChildren):

  • bindings/js/JSUndoItemCustom.cpp:

(WebCore::JSUndoItem::visitAdditionalChildren):
(WebCore::JSUndoItemOwner::isReachableFromOpaqueRoots):

  • bindings/js/JSValueInWrappedObject.h:

(WebCore::JSValueInWrappedObject::visit const):

  • bindings/js/JSVideoTrackCustom.cpp:

(WebCore::JSVideoTrack::visitAdditionalChildren):

  • bindings/js/JSVideoTrackListCustom.cpp:

(WebCore::JSVideoTrackList::visitAdditionalChildren):

  • bindings/js/JSWebGL2RenderingContextCustom.cpp:

(WebCore::JSWebGL2RenderingContext::visitAdditionalChildren):

  • bindings/js/JSWebGLRenderingContextCustom.cpp:

(WebCore::JSWebGLRenderingContext::visitAdditionalChildren):

  • bindings/js/JSWorkerGlobalScopeBase.cpp:

(WebCore::JSWorkerGlobalScopeBase::visitChildrenImpl):
(WebCore::JSWorkerGlobalScopeBase::visitChildren): Deleted.

  • bindings/js/JSWorkerGlobalScopeBase.h:
  • bindings/js/JSWorkerGlobalScopeCustom.cpp:

(WebCore::JSWorkerGlobalScope::visitAdditionalChildren):

  • bindings/js/JSWorkerNavigatorCustom.cpp:

(WebCore::JSWorkerNavigator::visitAdditionalChildren):

  • bindings/js/JSWorkletGlobalScopeBase.cpp:

(WebCore::JSWorkletGlobalScopeBase::visitChildrenImpl):
(WebCore::JSWorkletGlobalScopeBase::visitChildren): Deleted.

  • bindings/js/JSWorkletGlobalScopeBase.h:
  • bindings/js/JSXMLHttpRequestCustom.cpp:

(WebCore::JSXMLHttpRequest::visitAdditionalChildren):

  • bindings/js/JSXPathResultCustom.cpp:

(WebCore::JSXPathResult::visitAdditionalChildren):

  • bindings/js/WebCoreTypedArrayController.cpp:

(WebCore::WebCoreTypedArrayController::JSArrayBufferOwner::isReachableFromOpaqueRoots):

  • bindings/js/WebCoreTypedArrayController.h:
  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateHeader):
(GenerateImplementation):
(GenerateCallbackHeaderContent):
(GenerateCallbackImplementationContent):
(GenerateIterableDefinition):

  • bindings/scripts/test/JS/JSDOMWindow.cpp:

(WebCore::JSDOMWindow::subspaceForImpl):

  • bindings/scripts/test/JS/JSDedicatedWorkerGlobalScope.cpp:

(WebCore::JSDedicatedWorkerGlobalScope::subspaceForImpl):

  • bindings/scripts/test/JS/JSExposedToWorkerAndWindow.cpp:

(WebCore::JSExposedToWorkerAndWindow::subspaceForImpl):
(WebCore::JSExposedToWorkerAndWindowOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSExposedToWorkerAndWindow.h:
  • bindings/scripts/test/JS/JSPaintWorkletGlobalScope.cpp:

(WebCore::JSPaintWorkletGlobalScope::subspaceForImpl):

  • bindings/scripts/test/JS/JSServiceWorkerGlobalScope.cpp:

(WebCore::JSServiceWorkerGlobalScope::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestCEReactions.cpp:

(WebCore::JSTestCEReactions::subspaceForImpl):
(WebCore::JSTestCEReactionsOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestCEReactions.h:
  • bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp:

(WebCore::JSTestCEReactionsStringifier::subspaceForImpl):
(WebCore::JSTestCEReactionsStringifierOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestCEReactionsStringifier.h:
  • bindings/scripts/test/JS/JSTestCallTracer.cpp:

(WebCore::JSTestCallTracer::subspaceForImpl):
(WebCore::JSTestCallTracerOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestCallTracer.h:
  • bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp:

(WebCore::JSTestClassWithJSBuiltinConstructor::subspaceForImpl):
(WebCore::JSTestClassWithJSBuiltinConstructorOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.h:
  • bindings/scripts/test/JS/JSTestConditionalIncludes.cpp:

(WebCore::JSTestConditionalIncludes::subspaceForImpl):
(WebCore::JSTestConditionalIncludesOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestConditionalIncludes.h:
  • bindings/scripts/test/JS/JSTestConditionallyReadWrite.cpp:

(WebCore::JSTestConditionallyReadWrite::subspaceForImpl):
(WebCore::JSTestConditionallyReadWriteOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestConditionallyReadWrite.h:
  • bindings/scripts/test/JS/JSTestDOMJIT.cpp:

(WebCore::JSTestDOMJIT::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestDefaultToJSON.cpp:

(WebCore::JSTestDefaultToJSON::subspaceForImpl):
(WebCore::JSTestDefaultToJSONOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestDefaultToJSON.h:
  • bindings/scripts/test/JS/JSTestDefaultToJSONFilteredByExposed.cpp:

(WebCore::JSTestDefaultToJSONFilteredByExposed::subspaceForImpl):
(WebCore::JSTestDefaultToJSONFilteredByExposedOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestDefaultToJSONFilteredByExposed.h:
  • bindings/scripts/test/JS/JSTestDefaultToJSONIndirectInheritance.cpp:

(WebCore::JSTestDefaultToJSONIndirectInheritance::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestDefaultToJSONInherit.cpp:

(WebCore::JSTestDefaultToJSONInherit::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestDefaultToJSONInheritFinal.cpp:

(WebCore::JSTestDefaultToJSONInheritFinal::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestDomainSecurity.cpp:

(WebCore::JSTestDomainSecurity::subspaceForImpl):
(WebCore::JSTestDomainSecurityOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestDomainSecurity.h:
  • bindings/scripts/test/JS/JSTestEnabledBySetting.cpp:

(WebCore::JSTestEnabledBySetting::subspaceForImpl):
(WebCore::JSTestEnabledBySettingOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestEnabledBySetting.h:
  • bindings/scripts/test/JS/JSTestEnabledForContext.cpp:

(WebCore::JSTestEnabledForContext::subspaceForImpl):
(WebCore::JSTestEnabledForContextOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestEnabledForContext.h:
  • bindings/scripts/test/JS/JSTestEventConstructor.cpp:

(WebCore::JSTestEventConstructor::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestEventTarget.cpp:

(WebCore::JSTestEventTarget::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestException.cpp:

(WebCore::JSTestException::subspaceForImpl):
(WebCore::JSTestExceptionOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestException.h:
  • bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp:

(WebCore::JSTestGenerateIsReachable::subspaceForImpl):
(WebCore::JSTestGenerateIsReachableOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestGenerateIsReachable.h:
  • bindings/scripts/test/JS/JSTestGlobalObject.cpp:

(WebCore::JSTestGlobalObject::subspaceForImpl):
(WebCore::JSTestGlobalObjectOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestGlobalObject.h:
  • bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp:

(WebCore::JSTestIndexedSetterNoIdentifier::subspaceForImpl):
(WebCore::JSTestIndexedSetterNoIdentifierOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.h:
  • bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp:

(WebCore::JSTestIndexedSetterThrowingException::subspaceForImpl):
(WebCore::JSTestIndexedSetterThrowingExceptionOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.h:
  • bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp:

(WebCore::JSTestIndexedSetterWithIdentifier::subspaceForImpl):
(WebCore::JSTestIndexedSetterWithIdentifierOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.h:
  • bindings/scripts/test/JS/JSTestInterface.cpp:

(WebCore::jsTestInterfacePrototypeFunction_entriesCaller):
(WebCore::JSTestInterface::subspaceForImpl):
(WebCore::JSTestInterfaceOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestInterface.h:
  • bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp:

(WebCore::JSTestInterfaceLeadingUnderscore::subspaceForImpl):
(WebCore::JSTestInterfaceLeadingUnderscoreOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.h:
  • bindings/scripts/test/JS/JSTestIterable.cpp:

(WebCore::jsTestIterablePrototypeFunction_entriesCaller):
(WebCore::JSTestIterable::subspaceForImpl):
(WebCore::JSTestIterableOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestIterable.h:
  • bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp:

(WebCore::JSTestJSBuiltinConstructor::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestLegacyFactoryFunction.cpp:

(WebCore::JSTestLegacyFactoryFunction::subspaceForImpl):
(WebCore::JSTestLegacyFactoryFunctionOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestLegacyFactoryFunction.h:
  • bindings/scripts/test/JS/JSTestLegacyNoInterfaceObject.cpp:

(WebCore::JSTestLegacyNoInterfaceObject::subspaceForImpl):
(WebCore::JSTestLegacyNoInterfaceObjectOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestLegacyNoInterfaceObject.h:
  • bindings/scripts/test/JS/JSTestLegacyOverrideBuiltIns.cpp:

(WebCore::JSTestLegacyOverrideBuiltIns::subspaceForImpl):
(WebCore::JSTestLegacyOverrideBuiltInsOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestLegacyOverrideBuiltIns.h:
  • bindings/scripts/test/JS/JSTestMapLike.cpp:

(WebCore::JSTestMapLike::subspaceForImpl):
(WebCore::JSTestMapLikeOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestMapLike.h:
  • bindings/scripts/test/JS/JSTestMapLikeWithOverriddenOperations.cpp:

(WebCore::JSTestMapLikeWithOverriddenOperations::subspaceForImpl):
(WebCore::JSTestMapLikeWithOverriddenOperationsOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestMapLikeWithOverriddenOperations.h:
  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp:

(WebCore::JSTestNamedAndIndexedSetterNoIdentifier::subspaceForImpl):
(WebCore::JSTestNamedAndIndexedSetterNoIdentifierOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.h:
  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp:

(WebCore::JSTestNamedAndIndexedSetterThrowingException::subspaceForImpl):
(WebCore::JSTestNamedAndIndexedSetterThrowingExceptionOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.h:
  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp:

(WebCore::JSTestNamedAndIndexedSetterWithIdentifier::subspaceForImpl):
(WebCore::JSTestNamedAndIndexedSetterWithIdentifierOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.h:
  • bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp:

(WebCore::JSTestNamedDeleterNoIdentifier::subspaceForImpl):
(WebCore::JSTestNamedDeleterNoIdentifierOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.h:
  • bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp:

(WebCore::JSTestNamedDeleterThrowingException::subspaceForImpl):
(WebCore::JSTestNamedDeleterThrowingExceptionOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.h:
  • bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp:

(WebCore::JSTestNamedDeleterWithIdentifier::subspaceForImpl):
(WebCore::JSTestNamedDeleterWithIdentifierOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.h:
  • bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp:

(WebCore::JSTestNamedDeleterWithIndexedGetter::subspaceForImpl):
(WebCore::JSTestNamedDeleterWithIndexedGetterOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.h:
  • bindings/scripts/test/JS/JSTestNamedGetterCallWith.cpp:

(WebCore::JSTestNamedGetterCallWith::subspaceForImpl):
(WebCore::JSTestNamedGetterCallWithOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestNamedGetterCallWith.h:
  • bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.cpp:

(WebCore::JSTestNamedGetterNoIdentifier::subspaceForImpl):
(WebCore::JSTestNamedGetterNoIdentifierOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.h:
  • bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.cpp:

(WebCore::JSTestNamedGetterWithIdentifier::subspaceForImpl):
(WebCore::JSTestNamedGetterWithIdentifierOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.h:
  • bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp:

(WebCore::JSTestNamedSetterNoIdentifier::subspaceForImpl):
(WebCore::JSTestNamedSetterNoIdentifierOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.h:
  • bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp:

(WebCore::JSTestNamedSetterThrowingException::subspaceForImpl):
(WebCore::JSTestNamedSetterThrowingExceptionOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestNamedSetterThrowingException.h:
  • bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp:

(WebCore::JSTestNamedSetterWithIdentifier::subspaceForImpl):
(WebCore::JSTestNamedSetterWithIdentifierOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.h:
  • bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp:

(WebCore::JSTestNamedSetterWithIndexedGetter::subspaceForImpl):
(WebCore::JSTestNamedSetterWithIndexedGetterOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.h:
  • bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp:

(WebCore::JSTestNamedSetterWithIndexedGetterAndSetter::subspaceForImpl):
(WebCore::JSTestNamedSetterWithIndexedGetterAndSetterOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.h:
  • bindings/scripts/test/JS/JSTestNamedSetterWithLegacyOverrideBuiltIns.cpp:

(WebCore::JSTestNamedSetterWithLegacyOverrideBuiltIns::subspaceForImpl):
(WebCore::JSTestNamedSetterWithLegacyOverrideBuiltInsOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestNamedSetterWithLegacyOverrideBuiltIns.h:
  • bindings/scripts/test/JS/JSTestNamedSetterWithLegacyUnforgeableProperties.cpp:

(WebCore::JSTestNamedSetterWithLegacyUnforgeableProperties::subspaceForImpl):
(WebCore::JSTestNamedSetterWithLegacyUnforgeablePropertiesOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestNamedSetterWithLegacyUnforgeableProperties.h:
  • bindings/scripts/test/JS/JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns.cpp:

(WebCore::JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns::subspaceForImpl):
(WebCore::JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltInsOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns.h:
  • bindings/scripts/test/JS/JSTestNode.cpp:

(WebCore::jsTestNodePrototypeFunction_entriesCaller):
(WebCore::JSTestNode::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestObj.cpp:

(WebCore::JSTestObj::subspaceForImpl):
(WebCore::JSTestObj::visitChildrenImpl):
(WebCore::JSTestObjOwner::isReachableFromOpaqueRoots):
(WebCore::JSTestObj::visitChildren): Deleted.

  • bindings/scripts/test/JS/JSTestObj.h:
  • bindings/scripts/test/JS/JSTestOperationConditional.cpp:

(WebCore::JSTestOperationConditional::subspaceForImpl):
(WebCore::JSTestOperationConditionalOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestOperationConditional.h:
  • bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp:

(WebCore::JSTestOverloadedConstructors::subspaceForImpl):
(WebCore::JSTestOverloadedConstructorsOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestOverloadedConstructors.h:
  • bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp:

(WebCore::JSTestOverloadedConstructorsWithSequence::subspaceForImpl):
(WebCore::JSTestOverloadedConstructorsWithSequenceOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.h:
  • bindings/scripts/test/JS/JSTestPluginInterface.cpp:

(WebCore::JSTestPluginInterface::subspaceForImpl):
(WebCore::JSTestPluginInterfaceOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestPluginInterface.h:
  • bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp:

(WebCore::JSTestPromiseRejectionEvent::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestReadOnlyMapLike.cpp:

(WebCore::JSTestReadOnlyMapLike::subspaceForImpl):
(WebCore::JSTestReadOnlyMapLikeOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestReadOnlyMapLike.h:
  • bindings/scripts/test/JS/JSTestReadOnlySetLike.cpp:

(WebCore::JSTestReadOnlySetLike::subspaceForImpl):
(WebCore::JSTestReadOnlySetLikeOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestReadOnlySetLike.h:
  • bindings/scripts/test/JS/JSTestReportExtraMemoryCost.cpp:

(WebCore::JSTestReportExtraMemoryCost::subspaceForImpl):
(WebCore::JSTestReportExtraMemoryCost::visitChildrenImpl):
(WebCore::JSTestReportExtraMemoryCostOwner::isReachableFromOpaqueRoots):
(WebCore::JSTestReportExtraMemoryCost::visitChildren): Deleted.

  • bindings/scripts/test/JS/JSTestReportExtraMemoryCost.h:
  • bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:

(WebCore::JSTestSerializedScriptValueInterface::subspaceForImpl):
(WebCore::JSTestSerializedScriptValueInterface::visitChildrenImpl):
(WebCore::JSTestSerializedScriptValueInterfaceOwner::isReachableFromOpaqueRoots):
(WebCore::JSTestSerializedScriptValueInterface::visitChildren): Deleted.

  • bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.h:
  • bindings/scripts/test/JS/JSTestSetLike.cpp:

(WebCore::JSTestSetLike::subspaceForImpl):
(WebCore::JSTestSetLikeOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestSetLike.h:
  • bindings/scripts/test/JS/JSTestSetLikeWithOverriddenOperations.cpp:

(WebCore::JSTestSetLikeWithOverriddenOperations::subspaceForImpl):
(WebCore::JSTestSetLikeWithOverriddenOperationsOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestSetLikeWithOverriddenOperations.h:
  • bindings/scripts/test/JS/JSTestStringifier.cpp:

(WebCore::JSTestStringifier::subspaceForImpl):
(WebCore::JSTestStringifierOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestStringifier.h:
  • bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.cpp:

(WebCore::JSTestStringifierAnonymousOperation::subspaceForImpl):
(WebCore::JSTestStringifierAnonymousOperationOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.h:
  • bindings/scripts/test/JS/JSTestStringifierNamedOperation.cpp:

(WebCore::JSTestStringifierNamedOperation::subspaceForImpl):
(WebCore::JSTestStringifierNamedOperationOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestStringifierNamedOperation.h:
  • bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.cpp:

(WebCore::JSTestStringifierOperationImplementedAs::subspaceForImpl):
(WebCore::JSTestStringifierOperationImplementedAsOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.h:
  • bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.cpp:

(WebCore::JSTestStringifierOperationNamedToString::subspaceForImpl):
(WebCore::JSTestStringifierOperationNamedToStringOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.h:
  • bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.cpp:

(WebCore::JSTestStringifierReadOnlyAttribute::subspaceForImpl):
(WebCore::JSTestStringifierReadOnlyAttributeOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.h:
  • bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.cpp:

(WebCore::JSTestStringifierReadWriteAttribute::subspaceForImpl):
(WebCore::JSTestStringifierReadWriteAttributeOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.h:
  • bindings/scripts/test/JS/JSTestTypedefs.cpp:

(WebCore::JSTestTypedefs::subspaceForImpl):
(WebCore::JSTestTypedefsOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestTypedefs.h:
  • bindings/scripts/test/JS/JSWorkerGlobalScope.cpp:

(WebCore::JSWorkerGlobalScope::subspaceForImpl):

  • bindings/scripts/test/JS/JSWorkletGlobalScope.cpp:

(WebCore::JSWorkletGlobalScope::subspaceForImpl):

  • dom/ActiveDOMCallback.h:

(WebCore::ActiveDOMCallback::visitJSFunction):

  • dom/EventListener.h:

(WebCore::EventListener::visitJSFunction):

  • dom/EventTarget.cpp:

(WebCore::EventTarget::visitJSEventListeners):

  • dom/EventTarget.h:
  • dom/MutationRecord.cpp:
  • dom/MutationRecord.h:
  • dom/NodeFilterCondition.h:

(WebCore::NodeFilterCondition::visitAggregate): Deleted.

  • dom/StaticRange.cpp:

(WebCore::StaticRange::visitNodesConcurrently const):

  • dom/StaticRange.h:
  • html/canvas/WebGL2RenderingContext.cpp:

(WebCore::WebGL2RenderingContext::addMembersToOpaqueRoots):

  • html/canvas/WebGL2RenderingContext.h:
  • html/canvas/WebGLFramebuffer.cpp:

(WebCore::WebGLFramebuffer::addMembersToOpaqueRoots):

  • html/canvas/WebGLFramebuffer.h:
  • html/canvas/WebGLProgram.cpp:

(WebCore::WebGLProgram::addMembersToOpaqueRoots):

  • html/canvas/WebGLProgram.h:
  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::addMembersToOpaqueRoots):

  • html/canvas/WebGLRenderingContextBase.h:
  • html/canvas/WebGLTransformFeedback.cpp:

(WebCore::WebGLTransformFeedback::addMembersToOpaqueRoots):

  • html/canvas/WebGLTransformFeedback.h:
  • html/canvas/WebGLVertexArrayObjectBase.cpp:

(WebCore::WebGLVertexArrayObjectBase::addMembersToOpaqueRoots):

  • html/canvas/WebGLVertexArrayObjectBase.h:
3:49 AM Changeset in webkit [273137] by dino@apple.com
  • 2 edits in trunk/Source/ThirdParty/ANGLE

Crash in readPixels with ANGLE Metal backend
https://bugs.webkit.org/show_bug.cgi?id=220877

RenderbufferMtl::initializeContents is sometimes bound with a
default level index, which doesn't specify type, layer count, or
other information. When this path is called with an invalid index,
assume a 2d index.

Patch by Kyle Piddington <Kyle Piddington> on 2021-02-19
Reviewed by Dean Jackson.

  • src/libANGLE/renderer/metal/RenderBufferMtl.mm:

(rx::RenderbufferMtl::initializeContents):

2:30 AM Changeset in webkit [273136] by Manuel Rego Casasnovas
  • 2 edits in trunk/LayoutTests/imported/w3c

Fix Selenium key code for ENTER in testdriver-vendor.js
https://bugs.webkit.org/show_bug.cgi?id=222037

Reviewed by Carlos Garcia Campos.

In r272726 we added a bunch of Selenium key codes,
but the one for 0XE007 (ENTER) was wrong
as eventSender.keyDown() expects "\n" and not "enter".
This patch fixes the wrong code.

  • web-platform-tests/resources/testdriver-vendor.js:
1:42 AM Changeset in webkit [273135] by ysuzuki@apple.com
  • 11 edits
    3 adds in trunk

[JSC] Simplify excludedSet handling in object rest expression
https://bugs.webkit.org/show_bug.cgi?id=221668

Reviewed by Alexey Shvayka.

JSTests:

  • microbenchmarks/object-rest-computed-destructuring.js: Added.
  • stress/object-rest-computed-inlined-numbers.js: Added.

(inner):
(outer):

  • stress/object-rest-computed-inlined.js: Added.

(inner):
(outer):

Source/JavaScriptCore:

This patch simplifies Object rest/spread by avoiding use of JSSet.
Instead, we store IdentifierSet into UnlinkedCodeBlock's vector and
access this directly through JS constant number.
And for additional properties, we collect it during destructuring,
and pass it to @copyDataProperties as an argument so that we do not
need to call Set#add in JS side.

We also check (isNumber()
isString) conditions for properties to

avoid calling ToPropertyKey for constant case. This is OK since we
will call ToPropertyKey inside @copyDataProperties, and this is
side-effect free if the input is number or string.

This patch shows 2x improvement in microbenchmarking.

ToT Patched

object-rest-computed-destructuring 62.9960+-6.5072 30.2157+-1.1420 definitely 2.0849x faster

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::finishCreation):
(JSC::CodeBlock::setConstantIdentifierSetRegisters): Deleted.

  • bytecode/CodeBlock.h:
  • bytecode/UnlinkedCodeBlock.h:

(JSC::UnlinkedCodeBlock::constantIdentifierSets):

  • bytecode/UnlinkedCodeBlockGenerator.h:

(JSC::UnlinkedCodeBlockGenerator::constantIdentifierSets):
(JSC::UnlinkedCodeBlockGenerator::addSetConstant):

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::emitLoad):

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

(JSC::ObjectPatternNode::bindValue const):
(JSC::ObjectSpreadExpressionNode::emitBytecode):

  • runtime/CachedTypes.cpp:

(JSC::CachedConstantIdentifierSetEntry::encode): Deleted.
(JSC::CachedConstantIdentifierSetEntry::decode const): Deleted.

  • runtime/JSGlobalObjectFunctions.cpp:

(JSC::getCallerCodeBlock):
(JSC::JSC_DEFINE_HOST_FUNCTION):

1:30 AM Changeset in webkit [273134] by Kate Cheney
  • 3 edits in trunk/Source/WebKit

Create SQLite skeleton implementation for PCM fraud prevention
https://bugs.webkit.org/show_bug.cgi?id=222149
<rdar://problem/74502655>

Reviewed by Jiewen Tan.

This patch updates the PCM sqlite tables to hold 3 extra values:
token content, a signature, and a keyID. Since we are updating the
schema of an existing table, we need to migrate existing PCM data to
the new tables. These will have "null" values in the new fields.

Extensive local testing.

  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:

(WebKit::unattributedPrivateClickMeasurementSchemaV1):
(WebKit::unattributedPrivateClickMeasurementSchemaV1Alternate):
(WebKit::outdatedUnattributedColumns):
(WebKit::outdatedAttributedColumns):
Strings that will help us determine if the schema needs to be updated
and hold the existing columns so we can populate the new tables with
this data.

(WebKit::ResourceLoadStatisticsDatabaseStore::needsUpdatedPrivateClickMeasurementSchema):
Compare the existing schema with the new one. We only need to do this
for one PCM table because they are being changed in the same patch.

(WebKit::ResourceLoadStatisticsDatabaseStore::missingReferenceToObservedDomains):
Name update now that there are various reasons to migrate data.

(WebKit::columnsToCopy):
I chose to migrate all tables even if only PCM tables need updating
because it was simpler with existing code, and it gives us more
flexibility if we need to change more schemas in the future. Since
the migration happens only once each time we update the schema, this
is probably low cost. The columnsToCopy() function gives us the option
to specify data we need from existing tables when we migrate.

(WebKit::ResourceLoadStatisticsDatabaseStore::migrateDataToNewTablesIfNecessary):
(WebKit::ResourceLoadStatisticsDatabaseStore::buildPrivateClickMeasurementFromDatabase):
(WebKit::ResourceLoadStatisticsDatabaseStore::insertPrivateClickMeasurement):
For now, these are empty values that we will implement when PCM fraud
prevention pieces are in place.

(WebKit::ResourceLoadStatisticsDatabaseStore::isMigrationNecessary): Deleted.

  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h:
1:10 AM Changeset in webkit [273133] by jiewen_tan@apple.com
  • 28 edits in trunk

PCM: Request server public key to generate secret token
https://bugs.webkit.org/show_bug.cgi?id=222141
<rdar://problem/74462955>

Reviewed by John Wilander.

Source/WebCore:

This patch adds a way for PCM fraud prevention to request the server public key
which will be then used to generate the unlinkable token.

Covered by existing tests.

  • loader/PrivateClickMeasurement.cpp:

(WebCore::PrivateClickMeasurement::tokenPublicKeyURL const):

  • loader/PrivateClickMeasurement.h:

Adds new well-known ULR for this purpose.

Source/WebKit:

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::setPrivateClickMeasurementTokenPublicKeyURLForTesting):

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

(WebKit::NetworkSession::setPrivateClickMeasurementTokenPublicKeyURLForTesting):

  • NetworkProcess/NetworkSession.h:

Paperwork to add a way to set test URL.

  • NetworkProcess/PrivateClickMeasurementManager.cpp:

(WebKit::PrivateClickMeasurementManager::storeUnattributed):
(WebKit::generateNetworkResourceLoadParameters):
(WebKit::generateNetworkResourceLoadParametersForPost):
(WebKit::generateNetworkResourceLoadParametersForGet):
(WebKit::PrivateClickMeasurementManager::getTokenPublicKey):
(WebKit::PrivateClickMeasurementManager::getSignedUnlinkableToken):
(WebKit::PrivateClickMeasurementManager::fireConversionRequest):
(WebKit::PrivateClickMeasurementManager::setTokenPublicKeyURLForTesting):

  • NetworkProcess/PrivateClickMeasurementManager.h:

Teaches the PCMM to send the token public key request.

  • UIProcess/API/C/WKPage.cpp:

(WKPageSetPrivateClickMeasurementTokenPublicKeyURLForTesting):

  • UIProcess/API/C/WKPagePrivate.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::simulateResourceLoadStatisticsSessionRestart):
(WebKit::WebPageProxy::setPrivateClickMeasurementTokenPublicKeyURLForTesting):

  • UIProcess/WebPageProxy.h:

Paperwork to add a way to set test URL.

Tools:

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

(WTR::TestRunner::setPrivateClickMeasurementTokenPublicKeyURLForTesting):

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

(WTR::TestController::setPrivateClickMeasurementTokenPublicKeyURLForTesting):

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

(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):
Paperwork to add a way to set test URL.

LayoutTests:

  • http/tests/privateClickMeasurement/resources/getTokenSigningData.php:
  • http/tests/privateClickMeasurement/resources/signToken.php:
  • http/tests/privateClickMeasurement/resources/util.js:

(tearDownAndFinish):

  • http/tests/privateClickMeasurement/store-private-click-measurement-with-source-nonce-expected.txt:
  • http/tests/privateClickMeasurement/store-private-click-measurement-with-source-nonce.html:

This patch modifies the above tests to be able to record two consecutive server requests.

1:07 AM Changeset in webkit [273132] by svillar@igalia.com
  • 34 edits
    10 adds in trunk

Implement WebXR getViewerPose and getPose
https://bugs.webkit.org/show_bug.cgi?id=221225
<rdar://problem/74112910>

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

Mark pose and reference space WebXR tests as passing.

  • web-platform-tests/webxr/xrFrame_getPose.https-expected.txt: Added.
  • web-platform-tests/webxr/xrFrame_getViewerPose_getPose.https-expected.txt: Added.
  • web-platform-tests/webxr/xrReferenceSpace_originOffset_viewer.https-expected.txt: Added.
  • web-platform-tests/webxr/xrReferenceSpace_relationships.https-expected.txt: Added.
  • web-platform-tests/webxr/xrSession_requestAnimationFrame_data_valid.https-expected.txt: Added.
  • web-platform-tests/webxr/xrSession_requestAnimationFrame_getViewerPose.https-expected.txt: Added.
  • web-platform-tests/webxr/xrSession_viewer_referenceSpace.https-expected.txt: Added.
  • web-platform-tests/webxr/xrView_eyes.https-expected.txt: Added.
  • web-platform-tests/webxr/xrView_match.https-expected.txt: Added.
  • web-platform-tests/webxr/xrView_oneframeupdate.https-expected.txt: Added.

Source/WebCore:

  • Improve PlatformXR::FrameData struct.
  • Implement WebXRFrame getViewerPose and getPose.
  • Implement WebXRReferenceSpace offset, origin and effective tranforms.
  • Implement WebXRBoundedReferenceSpace nativeOrigin.
  • Apply frame updates in WebXRSession.
  • Implement views for OpenXR and DummyInlineDevice inline sessions.
  • Query and complete all the new FrameData in the OpenXR port.
  • Complete the WebFakeXRDevice implementation for WebXR WPT tests.

Tested by the WebXR WPT tests

  • Modules/webxr/WebXRBoundedReferenceSpace.cpp: Implement nativeOrigina and getOffsetReferenceSpace.

(WebCore::WebXRBoundedReferenceSpace::create):
(WebCore::WebXRBoundedReferenceSpace::WebXRBoundedReferenceSpace):
(WebCore::WebXRBoundedReferenceSpace::nativeOrigin const):
(WebCore::WebXRBoundedReferenceSpace::boundsGeometry const):
(WebCore::WebXRBoundedReferenceSpace::getOffsetReferenceSpace):

  • Modules/webxr/WebXRBoundedReferenceSpace.h:
  • Modules/webxr/WebXRFrame.cpp: Implement WebXR getViewerPose and getPose.

(WebCore::WebXRFrame::create):
(WebCore::WebXRFrame::WebXRFrame):
(WebCore::WebXRFrame::mustPosesBeLimited):
(WebCore::WebXRFrame::populatePose):
(WebCore::WebXRFrame::getViewerPose):
(WebCore::WebXRFrame::getPose):
(WebCore::WebXRFrame::matrixFromPose): add helper function.

  • Modules/webxr/WebXRFrame.h:

(WebCore::WebXRFrame::setFrameData):

  • Modules/webxr/WebXRFrame.idl: add MayThrowException.
  • Modules/webxr/WebXRPose.cpp: Add WebXRRigidTransform constructor parameter. Add specialize type traits.

(WebCore::WebXRPose::create):
(WebCore::WebXRPose::WebXRPose):

  • Modules/webxr/WebXRPose.h:

(WebCore::WebXRPose::isViewerPose const):

  • Modules/webxr/WebXRPose.idl: Remove ImplementationLacksVTable
  • Modules/webxr/WebXRReferenceSpace.cpp: Implement offset, origin and effective tranforms.

(WebCore::WebXRReferenceSpace::create):
(WebCore::WebXRReferenceSpace::WebXRReferenceSpace):
(WebCore::WebXRReferenceSpace::nativeOrigin const):
(WebCore::WebXRReferenceSpace::getOffsetReferenceSpace):
(WebCore::WebXRReferenceSpace::floorOriginTransform const):
(WebCore:: const):

  • Modules/webxr/WebXRReferenceSpace.h:

(WebCore::WebXRReferenceSpace::type const):

  • Modules/webxr/WebXRReferenceSpace.idl: Add SkipVTableValidation.
  • Modules/webxr/WebXRSession.cpp: Apply frame updates for frame. Add active views data.

(WebCore::WebXRSession::WebXRSession):
(WebCore::WebXRSession::requestReferenceSpace): Use WeakPtr instead Ref for WebXRSession.
(WebCore::WebXRSession::onFrame):
(WebCore::WebXRSession::posesCanBeReported const): add

  • Modules/webxr/WebXRSession.h:
  • Modules/webxr/WebXRSpace.cpp: Add nativeOrigin and effectiveOrigin member functions. Add specialize type traits.

(WebCore::WebXRSpace::WebXRSpace):
(WebCore::WebXRSpace::effectiveOrigin const):

  • Modules/webxr/WebXRSpace.h:

(WebCore::WebXRSpace::session const):
(WebCore::WebXRSpace::isReferenceSpace const):
(WebCore::WebXRSpace::isBoundedReferenceSpace const):

  • Modules/webxr/WebXRSystem.cpp: Implement views for DummyInlineDevice.

(WebCore::WebXRSystem::DummyInlineDevice::requestFrame):
(WebCore::WebXRSystem::DummyInlineDevice::views const):

  • Modules/webxr/WebXRSystem.h:
  • Modules/webxr/WebXRView.cpp: Pass WebXRRigidTransform in the constructor.

(WebCore::WebXRView::create):
(WebCore::WebXRView::WebXRView):
(WebCore::WebXRView::setProjectionMatrix): Use std::array to match device data.

  • Modules/webxr/WebXRView.h:

(WebCore::WebXRView::projectionMatrix const):
(WebCore::WebXRView::transform const):

  • Modules/webxr/WebXRViewerPose.cpp: Add views setter. Add specialize type traits.

(WebCore::WebXRViewerPose::create):
(WebCore::WebXRViewerPose::WebXRViewerPose):
(WebCore::WebXRViewerPose::setViews):

  • Modules/webxr/WebXRViewerPose.h:
  • Modules/webxr/WebXRViewerPose.idl: Remove ImplementationLacksVTable. Add JSGenerateToNativeObject.
  • Modules/webxr/XREye.h: Reuse PlatformXR enum.
  • platform/graphics/transforms/TransformationMatrix.cpp: Add projection matrix utility functions.

(WebCore::TransformationMatrix::fromProjection):

  • platform/graphics/transforms/TransformationMatrix.h:
  • platform/xr/PlatformXR.h: Improve FrameData.
  • platform/xr/openxr/PlatformXROpenXR.cpp: Query and complete all the new FrameData.

(PlatformXR::OpenXRDevice::createReferenceSpace): add helper function.
(PlatformXR::OpenXRDevice::recommendedResolution): Query resolution data from OpenXR.
(PlatformXR::OpenXRDevice::initializeTrackingAndRendering): Initialize local and view XrSpaces.
(PlatformXR::OpenXRDevice::initializeReferenceSpace): Lazily initialize stage XrSpace.
(PlatformXR::XrPosefToPose): add helper function.
(PlatformXR::xrViewToPose): add helper function.
(PlatformXR::OpenXRDevice::requestFrame): Complete all the new frame Data
(PlatformXR::OpenXRDevice::views const): Implement view data for OpenXR

  • platform/xr/openxr/PlatformXROpenXR.h:
  • testing/WebFakeXRDevice.cpp: Complete the required implementation for WebXR WPT tests.

(WebCore::FakeXRView::setProjection):
(WebCore::FakeXRView::setFieldOfView):
(WebCore::SimulatedXRDevice::frameTimerFired):
(WebCore::SimulatedXRDevice::requestFrame):
(WebCore::SimulatedXRDevice::views const):
(WebCore::SimulatedXRDevice::scheduleOnNextFrame):
(WebCore::WebFakeXRDevice::setViews):
(WebCore::WebFakeXRDevice::setViewerOrigin):
(WebCore::WebFakeXRDevice::clearViewerOrigin):
(WebCore::WebFakeXRDevice::setBoundsGeometry):
(WebCore::WebFakeXRDevice::setFloorOrigin):
(WebCore::WebFakeXRDevice::clearFloorOrigin):
(WebCore::WebFakeXRDevice::parseRigidTransform):
(WebCore::WebFakeXRDevice::parseView):

  • testing/WebFakeXRDevice.h:

LayoutTests:

Mark pose related WebXR tests as passing.

  • platform/wpe/TestExpectations:
1:03 AM Changeset in webkit [273131] by commit-queue@webkit.org
  • 9 edits
    1 copy in trunk/Source/WebKit

[WPE] User-Agent quirks not implemented
https://bugs.webkit.org/show_bug.cgi?id=222109

Patch by Michael Catanzaro <Michael Catanzaro> on 2021-02-19
Reviewed by Carlos Garcia Campos.

Have WPE benefit from GTK's existing user agent code by moving the bits in WebPageGtk.cpp
and WebPageProxyGtk.cpp to WebPageGLib.cpp and a new WebPageProxyGLib.cpp. This also moves
over a few stub functions that are unimplemented in both WPE and GTK. Finally, it moves a
WebsiteDataStore function that had gotten very lost.

No new tests. Unfortunately, our existing user agent quirks tests do not exercise these
higher-level functions, and so were already running and passing for WPE.

  • SourcesGTK.txt:
  • SourcesWPE.txt:
  • UIProcess/glib/WebPageProxyGLib.cpp: Copied from Source/WebKit/UIProcess/wpe/WebPageProxyWPE.cpp.

(WebKit::WebPageProxy::userAgentForURL):
(WebKit::WebPageProxy::standardUserAgent):
(WebKit::WebPageProxy::saveRecentSearches):
(WebKit::WebPageProxy::loadRecentSearches):

  • UIProcess/glib/WebsiteDataStoreGLib.cpp:

(WebKit::WebsiteDataStore::platformRemoveRecentSearches):

  • UIProcess/gtk/WebPageProxyGtk.cpp:

(WebKit::WebPageProxy::userAgentForURL): Deleted.
(WebKit::WebPageProxy::standardUserAgent): Deleted.
(WebKit::WebPageProxy::saveRecentSearches): Deleted.
(WebKit::WebPageProxy::loadRecentSearches): Deleted.
(WebKit::WebsiteDataStore::platformRemoveRecentSearches): Deleted.

  • UIProcess/wpe/WebPageProxyWPE.cpp:

(WebKit::WebPageProxy::platformInitialize):
(WebKit::WebPageProxy::userAgentForURL): Deleted.
(WebKit::WebPageProxy::standardUserAgent): Deleted.
(WebKit::WebPageProxy::saveRecentSearches): Deleted.
(WebKit::WebPageProxy::loadRecentSearches): Deleted.
(WebKit::WebsiteDataStore::platformRemoveRecentSearches): Deleted.

  • WebProcess/WebPage/glib/WebPageGLib.cpp:

(WebKit::WebPage::platformUserAgent const):

  • WebProcess/WebPage/gtk/WebPageGtk.cpp:

(WebKit::WebPage::platformUserAgent const): Deleted.

  • WebProcess/WebPage/wpe/WebPageWPE.cpp:

(WebKit::WebPage::platformUserAgent const): Deleted.

12:01 AM Changeset in webkit [273130] by youenn@apple.com
  • 17 edits
    2 adds in trunk

Update WKWebView getUserMedia delegate to latest proposal
https://bugs.webkit.org/show_bug.cgi?id=222103

Reviewed by Eric Carlson.

Source/WebKit:

Covered by updated API tests.

  • UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/Cocoa/UIDelegate.mm:

(WebKit::UIDelegate::UIClient::decidePolicyForUserMediaPermissionRequest):

  • UIProcess/UserMediaPermissionRequestProxy.cpp:

(WebKit::UserMediaPermissionRequestProxy::doDefaultAction):

Tools:

Introduce UserMediaCaptureUIDelegate to share more code between tests.

  • TestWebKitAPI/SourcesCocoa.txt:
  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit/GetUserMedia.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKit/GetUserMediaNavigation.mm:

(-[NavigationWhileGetUserMediaPromptDisplayedUIDelegate _webView:requestMediaCapturePermission:video:decisionHandler:]):

  • TestWebKitAPI/Tests/WebKit/GetUserMediaReprompt.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKit/MediaStreamTrackDetached.mm:

(-[MediaStreamTrackDetachedUIDelegate _webView:mediaCaptureStateDidChange:]):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
  • TestWebKitAPI/Tests/WebKitCocoa/SpeechRecognition.mm:

(-[SpeechRecognitionUIDelegate _webView:requestMediaCapturePermission:video:decisionHandler:]):
(-[SpeechRecognitionUIDelegate _webView:requestMediaCaptureAuthorization:decisionHandler:]):

  • TestWebKitAPI/Tests/WebKitCocoa/UserMediaDisabled.mm:

(-[UserMediaUIDelegate _webView:requestMediaCapturePermission:video:decisionHandler:]):

  • TestWebKitAPI/Tests/WebKitCocoa/UserMediaSimulateFailedSandbox.mm:

(-[SimulateFailedSandboxUIDelegate _webView:requestMediaCapturePermission:video:decisionHandler:]):

  • TestWebKitAPI/cocoa/UserMediaCaptureUIDelegate.h: Added.
  • TestWebKitAPI/cocoa/UserMediaCaptureUIDelegate.mm: Added.

(-[UserMediaCaptureUIDelegate init]):
(-[UserMediaCaptureUIDelegate wasPrompted]):
(-[UserMediaCaptureUIDelegate resetWasPrompted]):
(-[UserMediaCaptureUIDelegate waitUntilPrompted]):
(-[UserMediaCaptureUIDelegate setAudioDecision:]):
(-[UserMediaCaptureUIDelegate setVideoDecision:]):
(-[UserMediaCaptureUIDelegate _webView:requestMediaCapturePermission:video:decisionHandler:]):
(-[UserMediaCaptureUIDelegate _webView:checkUserMediaPermissionForURL:mainFrameURL:frameIdentifier:decisionHandler:]):

Note: See TracTimeline for information about the timeline view.