Timeline



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

Feb 18, 2021:

10:36 PM Changeset in webkit [273129] by Simon Fraser
  • 3 edits
    1 add in trunk

Scrolling on https://www.apple.com/ipad-air/ can jitter on certain sections
https://bugs.webkit.org/show_bug.cgi?id=222136
rdar://71881767

Reviewed by Zalan Bujtas.

Source/WebCore:

On macOS computers with 16MB of memory, https://www.apple.com/ipad-air/ can trigger the
"conservative" compositing mode where RenderLayerCompositor tries to reduce the number of
composited layers.

On this particular page, a "will-change: transform" element with an overflow:hidden ancestor
triggers some bad compositing bounds geometry computation (webkit.org/b/222092,
webkit.org/b/222124) which has the end result of changing the composited bounds of the
"position:sticky" layer on every scroll. This results in layer contents temporarily
appearing stretched or in the wrong place (webkit.org/b/222132).

For now, do a conservative fix to avoid this problem, which is to continue to allow
"will-change: transform" to trigger compositing on macOS in conservative mode. This
actually reduces memory use on this page, because webkit.org/b/222092 was triggering
excessively large backing store.

Tested by compositing/layer-creation/compositing-policy.html

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::requiresCompositingForWillChange const):

LayoutTests:

  • platform/mac/compositing/layer-creation/compositing-policy-expected.txt: Added.
10:12 PM Changeset in webkit [273128] by Chris Dumez
  • 20 edits in trunk/Source

Reduce explicit usage of [objC autorelease] in WebKit
https://bugs.webkit.org/show_bug.cgi?id=221932
<rdar://problem/74410900>

Reviewed by Darin Adler.

Follow-up to r272936 in order to address post-landing review comments.

Source/JavaScriptCore:

  • API/JSContext.mm:

(-[JSContext init]):

  • API/JSWrapperMap.mm:

(-[JSWrapperMap classInfoForClass:]):

Source/WebCore:

  • accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:

(-[WebAccessibilityObjectWrapper _stringFromStartMarker:toEndMarker:attributed:]):

  • editing/cocoa/WebContentReaderCocoa.mm:

(WebCore::attributesForAttributedStringConversion):

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

(WebCore::MediaPlayerPrivateAVFoundationObjC::createAVAssetForURL):

  • platform/ios/WebAVPlayerController.mm:

(-[WebAVPlayerController init]):

  • platform/ios/wak/WAKView.mm:

(-[WAKView dealloc]):

  • platform/network/cocoa/WebCoreNSURLSession.mm:

(-[WebCoreNSURLSessionDataTask initWithSession:identifier:request:]):

  • platform/network/mac/ResourceHandleMac.mm:

(WebCore::ResourceHandle::createNSURLConnection):

Source/WebKit:

  • UIProcess/API/Cocoa/NSAttributedString.mm:

(+[NSAttributedString _loadFromHTMLWithOptions:contentLoader:completionHandler:]):

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView findString:withConfiguration:completionHandler:]):
(-[WKWebView _frames:]):
(-[WKWebView _getContentsAsAttributedStringWithCompletionHandler:]):

  • UIProcess/API/Cocoa/_WKAutomationSession.mm:

(-[_WKAutomationSession init]):

  • UIProcess/API/Cocoa/_WKInspector.mm:

(-[_WKInspector registerExtensionWithID:displayName:completionHandler:]):

  • UIProcess/API/Cocoa/_WKRemoteWebInspectorViewController.mm:

(-[_WKRemoteWebInspectorViewController registerExtensionWithID:displayName:completionHandler:]):

  • UIProcess/API/Cocoa/_WKUserContentExtensionStore.mm:

(-[_WKUserContentExtensionStore compileContentExtensionForIdentifier:encodedContentExtension:completionHandler:]):
(-[_WKUserContentExtensionStore lookupContentExtensionForIdentifier:completionHandler:]):

  • UIProcess/Automation/ios/WebAutomationSessionIOS.mm:

(WebKit::WebAutomationSession::platformSimulateKeyboardInteraction):

  • UIProcess/Cocoa/WKContactPicker.mm:

(-[WKContactPicker _contactsFromJSContacts:]):

9:51 PM Changeset in webkit [273127] by weinig@apple.com
  • 8 edits
    2 adds in trunk

Add experimental support for CSS Color 5 Relative Color Syntax
https://bugs.webkit.org/show_bug.cgi?id=221880

Reviewed by Darin Adler.

Source/WebCore:

Adds initial support for CSS Color 5 Relative Color Syntax - https://drafts.csswg.org/css-color-5/#relative-colors

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

As this is the initial commit for this functionality, it is not yet complete.
This adds basic parsing and resolution for relative rgb(), hsl(), hwb(), lab()
and lch(), but does not yet implement support for calc() functions that can operate
on the channel keywords nor does it support using system keyword colors as the
origin of the relative colors.

Some additional caveats about this initial implementation that need further
clarification from the spec editors:

  1. Currently, we only allow using the channel corresponding to to the position of that channel

in the replacement syntax. This means you can't do:

rgb(from red g r b)

to permute the channels.

  1. For rgb(), which allows r, g, and b to be all numbers or all percentages,

we currently don't assume either number or percentage, and wait until some
constant value is provided to set the type. That means that:

rgb(from red r g 10)

will treat r, ang g as numbers, but:

rgb(from red r g 10%)

will treat r and g as percentages. This is not currently observable other than
that we reject something that mixes the two, such as

rgb(from red r 10 10%)

but will be fully observable once processing the channels via calc() is supported.

Test: fast/css/parsing-relative-color-syntax.html

  • css/CSSValueKeywords.in:
  • css/parser/CSSParserContext.cpp:

(WebCore::operator==):

  • css/parser/CSSParserContext.h:

(WebCore::CSSParserContextHash::hash):

  • css/parser/CSSPropertyParserHelpers.cpp:

(WebCore::CSSPropertyParserHelpers::consumeOriginColor):
(WebCore::CSSPropertyParserHelpers::consumeOptionalAlphaOrIdent):
(WebCore::CSSPropertyParserHelpers::consumeHueOrIdent):
(WebCore::CSSPropertyParserHelpers::consumeNumberOrIdent):
(WebCore::CSSPropertyParserHelpers::consumePercentOrIdent):
(WebCore::CSSPropertyParserHelpers::extractChannelValue):
(WebCore::CSSPropertyParserHelpers::resolveRelativeColorChannel):
(WebCore::CSSPropertyParserHelpers::consumeRelativeRGBComponent):
(WebCore::CSSPropertyParserHelpers::parseRelativeRGBParameters):
(WebCore::CSSPropertyParserHelpers::parseRGBParameters):
(WebCore::CSSPropertyParserHelpers::parseRelativeHSLParameters):
(WebCore::CSSPropertyParserHelpers::parseHSLParameters):
(WebCore::CSSPropertyParserHelpers::normalizeWhitenessBlackness):
(WebCore::CSSPropertyParserHelpers::parseRelativeHWBParameters):
(WebCore::CSSPropertyParserHelpers::parseHWBParameters):
(WebCore::CSSPropertyParserHelpers::parseRelativeLabParameters):
(WebCore::CSSPropertyParserHelpers::parseLabParameters):
(WebCore::CSSPropertyParserHelpers::parseRelativeLCHParameters):
(WebCore::CSSPropertyParserHelpers::parseLCHParameters):
(WebCore::CSSPropertyParserHelpers::parseColorFunction):

Source/WTF:

  • Scripts/Preferences/WebPreferencesExperimental.yaml:

Add new experimental preference for CSS Color 5 Relative Color Syntax
which is off by default.

LayoutTests:

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

Add basic parsing and computed style computation tests for relative color syntax.

9:44 PM Changeset in webkit [273126] by Peng Liu
  • 4 edits in trunk/Source/WebKit

[ MacOS Wk2 Debug ] http/tests/misc/copy-resolves-urls.html is a flakey crash in RemoteMediaPlayerProxy
https://bugs.webkit.org/show_bug.cgi?id=222080

Reviewed by Eric Carlson.

No new tests, this will fix some crashing macOS tests.

  • GPUProcess/media/RemoteMediaResource.cpp:

(WebKit::RemoteMediaResource::RemoteMediaResource):
(WebKit::RemoteMediaResource::~RemoteMediaResource):

  • GPUProcess/media/RemoteMediaResource.h:
  • GPUProcess/media/RemoteMediaResourceManager.h:
8:39 PM Changeset in webkit [273125] by ysuzuki@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] Enable private methods
https://bugs.webkit.org/show_bug.cgi?id=222137

Reviewed by Tadeu Zagallo.

  • runtime/OptionsList.h:
8:25 PM Changeset in webkit [273124] by Lauro Moura
  • 4 edits in trunk

[GLIB] Gardening debug OffscreenCanvas crashes

Unreviewed test gardening.

Tools:

  • TestWebKitAPI/glib/TestExpectations.json: Update bug number after

last gardening.

LayoutTests:

  • platform/glib/TestExpectations:
7:35 PM Changeset in webkit [273123] by mmaxfield@apple.com
  • 2 edits in trunk/Tools

MotionMark scores are super sensitive to a single long frame
https://bugs.webkit.org/show_bug.cgi?id=220847
<rdar://problem/74152743>

Unreviewed.

Upgrade motionmark1.1.plan to r273122.

  • Scripts/webkitpy/benchmark_runner/data/plans/motionmark1.1.plan:
7:29 PM Changeset in webkit [273122] by mmaxfield@apple.com
  • 2 edits in trunk/PerformanceTests

MotionMark scores are super sensitive to a single long frame
https://bugs.webkit.org/show_bug.cgi?id=220847
<rdar://problem/74152743>

Reviewed by Maciej Stachowiak and Jon Lee.

Currently, "ramp" tests have three phases. The middle phase is where they try to determine a maximum reasonable
complexity, and the third one is where they try various complexities between 0 and the maximum. The calculation
of this maximum reasonable complexity is currently very sensitive to outlier frame times. If there is a single
outlier frame time, the failure mode is to assume that the maximum complexity is ~10. So, the solution is to
ignore outlier frame times during this first phase, and to ensure that there are at least 9 frames measured that
have non-outlier times.

  • MotionMark/tests/resources/main.js:

(filterOutOutliers):
(_measureAndResetInterval):
(update):
(registerFrameTime):
(intervalHasConcluded):
(start):
(didFinishInterval):

7:25 PM Changeset in webkit [273121] by mmaxfield@apple.com
  • 9 edits
    7 adds in trunk

[GPU Process] Temporarily disable drawing OT-SVG glyphs in the GPU process until it can be implemented properly
https://bugs.webkit.org/show_bug.cgi?id=221744
Source/WebCore:

<rdar://problem/74222334>

Reviewed by Simon Fraser.

Link with the system OTSVG framework to determine if glyphs will be rendered using that infrastructure.
Filter out glyphs which would be rendered using that infrastructure in the web process, and RELEASE_ASSERT()
in the GPU process that it won't be using that infrastructure.

This is just a temporary plug of a security hole, until we can properly transcode OT-SVG glyphs into WebKit's
display list infrastructure. This patch explicitly breaks drawing OT-SVG glyphs using the GPU process (which,
right now, only means it will be broken in canvas drawing, since regular DOM drawing doesn't use the GPU
process yet.)

Test: fast/text/otsvg-spacing.html

  • platform/graphics/Font.h:
  • platform/graphics/coretext/FontCascadeCoreText.cpp:

(WebCore::FontCascade::drawGlyphs):

  • platform/graphics/coretext/FontCoreText.cpp:

(WebCore::Font::findOTSVGGlyphs const):

  • platform/graphics/displaylists/DisplayListDrawGlyphsRecorderCoreText.cpp:

(WebCore::DisplayList::filterOutOTSVGGlyphs):
(WebCore::DisplayList::DrawGlyphsRecorder::drawGlyphs):

Source/WebCore/PAL:

Reviewed by Simon Fraser.

This patch soft-links the OTSVG framework because it's a private framework that doesn't exist on watchOS.

  • PAL.xcodeproj/project.pbxproj:
  • pal/cf/CoreTextSoftLink.cpp: Added.
  • pal/cf/CoreTextSoftLink.h: Added.
  • pal/cf/OTSVGTable.cpp: Added.

(PAL::OTSVGTable::OTSVGTable):
(PAL::OTSVGTable::~OTSVGTable):
(PAL::OTSVGTable::operator=):

  • pal/cf/OTSVGTable.h: Added.
  • pal/spi/cf/CoreTextSPI.h:

LayoutTests:

<rdar://problem/74222334>

Reviewed by Simon Fraser.

Create an OTSVG font for testing.
The A glyph is a green rectangle.
The B glyph is an image.
The C glyph is another image, with a different EXIF orientation than the B glyph.

This test makes sure that two glyphs with an OTSVG glyph between them don't get smooshed together in canvas.

I'm explicitly not testing the behavior of OTSVG itself in canvas, because this test explicitly disables
that behavior. I think it's wrong to create tests that make sure some functionality is broken, because the
functionality, philosophically, shouldn't be broken.

  • fast/text/otsvg-spacing-expected.html: Added.
  • fast/text/otsvg-spacing.html: Added.
  • fast/text/resources/Ahem-SVG.ttf: Added.
6:53 PM Changeset in webkit [273120] by pvollan@apple.com
  • 5 edits in trunk/Source/WebKit

[iOS] Remove access to AppleJPEGDriverUserClient
https://bugs.webkit.org/show_bug.cgi?id=221458
<rdar://problem/73518481>

Reviewed by Brent Fulgham.

Remove access to AppleJPEGDriverUserClient in the WebContent process' sandbox on iOS.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebAuthn.sb:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
  • UIProcess/WebPageProxy.cpp:

(WebKit::gpuIOKitClasses):

6:16 PM Changeset in webkit [273119] by Megan Gardner
  • 3 edits in trunk/Source/WebKit

Correctly retain properties in _WKAppHighlight
https://bugs.webkit.org/show_bug.cgi?id=222151

Reviewed by Wenson Hsieh.

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

(-[_WKAppHighlight initWithHighlight:text:image:]):
(-[_WKAppHighlight highlight]):
(-[_WKAppHighlight text]):
(-[_WKAppHighlight image]):

6:10 PM Changeset in webkit [273118] by Dewei Zhu
  • 6 edits in trunk/Websites/perf.webkit.org

Fix a bug that a syncing script may try to reuse a delete root.
https://bugs.webkit.org/show_bug.cgi?id=222144

Reviewed by Ryosuke Niwa.

UploadedFile.deletedAt is not returned by API which makes UploadedFile instance always claims
the file it not deleted.
Fix a logical bug in CommitSet.areAllRootsAvailable.

  • public/include/uploaded-file-helpers.php: Include 'deletedAt' filed in the API response.
  • public/v3/models/commit-set.js:

(CommitSet.prototype.areAllRootsAvailable): Fixed an syntax error and a logical bug.

  • server-tests/api-build-requests-tests.js: Added check on 'deletedAt' to be set on deleted files.
  • unit-tests/commit-set-tests.js: Added unit tests for CommitSet.areAllRootsAvailable.
  • unit-tests/resources/mock-v3-models.js: Cleared static map for UploadedFile.
5:57 PM Changeset in webkit [273117] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC] Do not create the line with negative width when negative letter spacing is present
https://bugs.webkit.org/show_bug.cgi?id=222119

Reviewed by Antti Koivisto.

We already handle the case of individual runs. This patch fixes the case when we merge runs together.
see fast/text/text-letter-spacing.html.

  • layout/inlineformatting/InlineLine.cpp:

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

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

Crash in IPC::decode(Decoder& decoder, RetainPtr<SecKeychainItemRef>& result)
https://bugs.webkit.org/show_bug.cgi?id=222084

Patch by Julian Gonzalez <julian_a_gonzalez@apple.com> on 2021-02-18
Reviewed by Ryosuke Niwa.

Source/WebKit:

Add a check for a CFDataRef of 0 length so that we do not pass those
to SecKeychainItemCopyFromPersistentReference(), which crashes with them.

Test: ipc/argument-coders-crash.html

  • Shared/cf/ArgumentCodersCF.cpp:

(IPC::decode):

LayoutTests:

Add the test provided by Nils Sommer that catches this crash.

  • ipc/argument-coders-crash-expected.txt: Added.
  • ipc/argument-coders-crash.html: Added.
4:58 PM Changeset in webkit [273115] by commit-queue@webkit.org
  • 5 edits in trunk

Unconditionally return information in _autofillContext SPI when a field is focused
https://bugs.webkit.org/show_bug.cgi?id=221828
rdar://74211237

Patch by Ricky Mondello <Ricky Mondello> on 2021-02-18
Reviewed by Darin Adler.

Source/WebKit:

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _autofillContext]): Change the contract of _autofillContext to return information for any focused

text field. Add a "version" key. Explicitly indicate whether we're in a login context. This SPI remains stringly
typed for flexibility.

Tools:

Tests updated by Wenson Hsieh.

Rebaseline tests.

  • TestWebKitAPI/Tests/ios/KeyboardInputTestsIOS.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/ios/WKWebViewAutofillTests.mm:

(-[AutoFillTestView acceptsAutoFillLoginCredentials]): Renamed in line with the Password AutoFill-related

contract these tests are about.

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

[macOS] Re-add fsctl support for marking files as potentially 'hot'
https://bugs.webkit.org/show_bug.cgi?id=222120
<rdar://problem/74387453>

Reviewed by Per Arne Vollan.

Rolled out r271959.

  • WebProcess/com.apple.WebProcess.sb.in:
4:37 PM Changeset in webkit [273113] by Devin Rousso
  • 35 edits
    2 copies
    6 adds in trunk

[Payment Request] add an object data to PaymentItem so that data specific to Apple Pay can be provided
https://bugs.webkit.org/show_bug.cgi?id=221970
<rdar://problem/69806999>

Reviewed by Alex Christensen.

Source/WebCore:

  • Modules/paymentrequest/PaymentItem.idl:
  • Modules/paymentrequest/PaymentItem.h:
  • Modules/applepay/ApplePayLineItem.idl:
  • Modules/applepay/ApplePayLineItem.h:

(WebCore::ApplePayLineItem::encode const): Added.
(WebCore::ApplePayLineItem::decode): Added.

  • Modules/applepay/ApplePayLineItemData.idl: Added.
  • Modules/applepay/ApplePayLineItemData.h: Added.

(WebCore::ApplePayLineItemData::encode const):
(WebCore::ApplePayLineItemData::decode):
(WebCore::ApplePayLineItemData::decodeData):

  • Modules/paymentrequest/PaymentRequest.cpp:

(WebCore::checkAndCanonicalizeData): Added.
(WebCore::checkAndCanonicalizePaymentItem): Added.
(WebCore::checkAndCanonicalizeTotal):
(WebCore::checkAndCanonicalizeDetails):
(WebCore::PaymentRequest::create):
(WebCore::PaymentRequest::settleDetailsPromise):
Add IPC support and extend from ApplePayLineItemData which is used to pull values out of
the object data from PaymentItem. 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/ApplePaySession.cpp:

(WebCore::convertAndValidateTotal):
(WebCore::convertAndValidate):

  • Modules/applepay/ApplePaySessionPaymentRequest.h:

(WebCore::ApplePaySessionPaymentRequest::lineItems const):
(WebCore::ApplePaySessionPaymentRequest::setLineItems):
(WebCore::ApplePaySessionPaymentRequest::total const):
(WebCore::ApplePaySessionPaymentRequest::setTotal):

  • Modules/applepay/PaymentMethodUpdate.h:
  • Modules/applepay/PaymentRequestValidator.h:
  • Modules/applepay/PaymentRequestValidator.mm:

(WebCore::PaymentRequestValidator::validateTotal):

  • Modules/applepay/PaymentSummaryItems.h:
  • Modules/applepay/cocoa/PaymentMethodUpdateCocoa.mm:

(WebCore::PaymentMethodUpdate::PaymentMethodUpdate):

  • Modules/applepay/cocoa/PaymentSummaryItemsCocoa.mm:

(WebCore::toPKPaymentSummaryItemType):
(WebCore::toPKPaymentSummaryItem):
(WebCore::platformSummaryItems):

  • Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp:

(WebCore::merge): Added.
(WebCore::convertAndValidate):
(WebCore::ApplePayPaymentHandler::show):
(WebCore::ApplePayPaymentHandler::computeTotalAndLineItems const):

  • testing/MockPaymentCoordinator.cpp:

(WebCore::MockPaymentCoordinator::updateTotalAndLineItems):
Just use ApplePayLineItem instead of duplicating its structure in another object (ApplePaySessionPaymentRequest::LineItem).

  • inspector/WebInjectedScriptHost.cpp:

(WebCore::objectForPaymentDetailsModifier):
Drive-by: Don't always set modifier.total or modifier.additionalDisplayItems since they
might not have been provided.
Drive-by: Don't bother setting modifier.data since it's cleared during validation.

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateDictionaryImplementationContent):

  • bindings/scripts/test/SupplementalDependencies.dep:
  • bindings/scripts/test/TestDictionaryWithOnlyConditionalMembers.idl: Added.
  • bindings/scripts/test/JS/JSTestDictionaryWithOnlyConditionalMembers.h: Added.
  • bindings/scripts/test/JS/JSTestDictionaryWithOnlyConditionalMembers.cpp: Added.

(WebCore::convertDictionary<TestDictionaryWithOnlyConditionalMembers>):
(WebCore::convertDictionaryToJS):

  • bindings/scripts/test/TestEmptyDictionary.idl: Added.
  • bindings/scripts/test/JS/JSTestEmptyDictionary.h: Added.
  • bindings/scripts/test/JS/JSTestEmptyDictionary.cpp: Added.

(WebCore::convertDictionary<TestEmptyDictionary>):
(WebCore::convertDictionaryToJS):
Modify the IDL code generator to be able to handle empty IDL dictionaries.

  • platform/cocoa/WebCoreAdditions.mm:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • PlatformMac.cmake:
  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:

Source/WebCore/PAL:

  • pal/cocoa/PassKitSoftLink.h:
  • pal/cocoa/PassKitSoftLink.mm:
  • pal/spi/cocoa/PassKitSPI.h:

Source/WebKit:

  • Shared/WebCoreArgumentCoders.h:
  • Shared/Cocoa/WebCoreArgumentCodersCocoa.mm:

(IPC::ArgumentCoder<ApplePaySessionPaymentRequest>::decode):
(IPC::ArgumentCoder<ApplePaySessionPaymentRequest::TotalAndLineItems>::decode):
(IPC::ArgumentCoder<ApplePaySessionPaymentRequest::LineItem>::encode): Deleted.
(IPC::ArgumentCoder<ApplePaySessionPaymentRequest::LineItem>::decode): Deleted.
Just use ApplePayLineItem instead of duplicating its structure in another object (ApplePaySessionPaymentRequest::LineItem).

LayoutTests:

  • http/tests/inspector/paymentrequest/payment-request-internal-properties.https-expected.txt:
4:19 PM Changeset in webkit [273112] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[ macOS Wk2 ]inspector/indexeddb/clearObjectStore.html is a flakey timeout
https://bugs.webkit.org/show_bug.cgi?id=222140

Unreviewed test gardening.

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

  • platform/mac-wk2/TestExpectations:
4:15 PM Changeset in webkit [273111] by achristensen@apple.com
  • 4 edits in trunk

Add null check in _getMainResourceDataWithCompletionHandler
https://bugs.webkit.org/show_bug.cgi?id=222139
<rdar://problem/74449438>

Reviewed by Tim Horton.

Source/WebKit:

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _getMainResourceDataWithCompletionHandler:]):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/GetResourceData.mm:

(TEST):

4:15 PM Changeset in webkit [273110] by rniwa@webkit.org
  • 2 edits in trunk/LayoutTests

ASSERTION FAILED: m_state == State::Committed in WebKit::FrameLoadState::didFailLoad()
https://bugs.webkit.org/show_bug.cgi?id=221783
<rdar://problem/74257153>

Skip the test temporarily on debug bots while we figure out how to fix it.

  • platform/wk2/TestExpectations:
4:07 PM Changeset in webkit [273109] by BJ Burg
  • 12 edits in trunk/Source/WebKit

[Cocoa] Web Inspector: add support for using custom process pool and page group identifier
https://bugs.webkit.org/show_bug.cgi?id=222046
<rdar://74180162>

Reviewed by Timothy Hatcher.

These additions are necessary for clients to inject Web Extensions API into the tabs created
using _WKInspectorExtension.

Currently, Web Inspector pages use a private process pool that is separate from page content.
Since there is no way to set the pool's injected bundle path prior to opening Web Inspector,
we need to allow clients to explicitly configure and set a process pool to be used for
WebInspectorUI and any iframe tabs created using _WKInspectorExtension.

  • UIProcess/API/APIInspectorConfiguration.cpp:

(API::InspectorConfiguration::processPool):
(API::InspectorConfiguration::setProcessPool):

  • UIProcess/API/APIInspectorConfiguration.h:
  • UIProcess/API/Cocoa/_WKInspectorConfiguration.h:
  • UIProcess/API/Cocoa/_WKInspectorConfiguration.mm:

(-[_WKInspectorConfiguration setProcessPool:]):
(-[_WKInspectorConfiguration processPool]):
(-[_WKInspectorConfiguration applyToWebViewConfiguration:]):
(-[_WKInspectorConfiguration copyWithZone:]):
Add some plumbing for the new properties.

  • UIProcess/Inspector/WebInspectorUtilities.h:
  • UIProcess/Inspector/WebInspectorUtilities.cpp:

(WebKit::defaultInspectorPageGroupIdentifierForPage): Renamed.
(WebKit::defaultInspectorProcessPool): Renamed.
(WebKit::allInspectorProcessPools): Move to using a WeakHashSet since there could
be a number of pools specified by the client for different inspector instances.
(WebKit::prepareProcessPoolForInspector): Added.
(WebKit::isInspectorProcessPool): Turn this into a set lookup.

  • UIProcess/Inspector/mac/WKInspectorViewController.mm:

(-[WKInspectorViewController webViewConfiguration]):
Add logic to use a custom process pool or a default process pool (existing behavior).
Add logic to use a custom page group identifier or a default value (existing behavior).

  • UIProcess/Inspector/gtk/RemoteWebInspectorProxyGtk.cpp:

(WebKit::RemoteWebInspectorProxy::platformCreateFrontendPageAndWindow):

  • UIProcess/Inspector/gtk/WebInspectorProxyGtk.cpp:

(WebKit::WebInspectorProxy::platformCreateFrontendPage):

  • UIProcess/Inspector/win/RemoteWebInspectorProxyWin.cpp:

(WebKit::RemoteWebInspectorProxy::platformCreateFrontendPageAndWindow):

  • UIProcess/Inspector/win/WebInspectorProxyWin.cpp:

(WebKit::WebInspectorProxy::platformCreateFrontendPage):
Adapt to renames.

4:01 PM Changeset in webkit [273108] by Wenson Hsieh
  • 24 edits in trunk/Source

Plumb an Optional<PageIdentifier> through WebPasteboardProxy
https://bugs.webkit.org/show_bug.cgi?id=222071

Reviewed by Tim Horton.

Source/WebCore:

Update various PasteboardStrategy methods to additionally take a const PasteboardContext*; additionally
update call sites of PasteboardStrategy methods to pass in a context (e.g. Pasteboard::context(), in the
vast majority of cases below).

  • editing/cocoa/EditorCocoa.mm:

(WebCore::Editor::takeFindStringFromSelection):

  • page/mac/DragControllerMac.mm:

(WebCore::DragController::updateSupportedTypeIdentifiersForDragHandlingMethod const):

  • platform/Pasteboard.cpp:

(WebCore::Pasteboard::allPasteboardItemInfo const):
(WebCore::Pasteboard::pasteboardItemInfo const):
(WebCore::Pasteboard::readString):
(WebCore::Pasteboard::readBuffer):
(WebCore::Pasteboard::readURL):

  • platform/PasteboardStrategy.h:
  • platform/cocoa/DragDataCocoa.mm:

(WebCore::DragData::containsURLTypeIdentifier const):
(WebCore::DragData::containsColor const):
(WebCore::DragData::numberOfFiles const):
(WebCore::DragData::asFilenames const):
(WebCore::DragData::containsPlainText const):
(WebCore::DragData::asColor const):
(WebCore::DragData::containsCompatibleContent const):
(WebCore::DragData::containsPromise const):
(WebCore::DragData::containsURL const):
(WebCore::DragData::asURL const):

  • platform/cocoa/PasteboardCocoa.mm:

(WebCore::Pasteboard::fileContentState):
(WebCore::Pasteboard::typesSafeForBindings):
(WebCore::Pasteboard::writeCustomData):
(WebCore::Pasteboard::changeCount const):
(WebCore::Pasteboard::readTypesWithSecurityCheck):
(WebCore::Pasteboard::readBufferForTypeWithSecurityCheck):

  • platform/gtk/PasteboardGtk.cpp:

(WebCore::Pasteboard::typesSafeForBindings):
(WebCore::Pasteboard::writeCustomData):

  • platform/ios/PasteboardIOS.mm:

(WebCore::Pasteboard::Pasteboard):
(WebCore::changeCountForPasteboard):
(WebCore::Pasteboard::write):
(WebCore::Pasteboard::writePlainText):
(WebCore::Pasteboard::read):
(WebCore::Pasteboard::readPasteboardWebContentDataForType):
(WebCore::readURLAlongsideAttachmentIfNecessary):
(WebCore::Pasteboard::readRespectingUTIFidelities):
(WebCore::Pasteboard::hasData):
(WebCore::Pasteboard::clear):
(WebCore::Pasteboard::readPlatformValuesAsStrings):
(WebCore::Pasteboard::writeString):
(WebCore::Pasteboard::readFilePaths):

  • platform/libwpe/PasteboardLibWPE.cpp:

(WebCore::Pasteboard::readString):
(WebCore::Pasteboard::read):

  • platform/mac/PasteboardMac.mm:

(WebCore::Pasteboard::Pasteboard):
(WebCore::Pasteboard::clear):
(WebCore::Pasteboard::write):
(WebCore::Pasteboard::writePlainText):
(WebCore::writeURLForTypes):
(WebCore::Pasteboard::writeTrustworthyWebURLsPboardType):
(WebCore::writeFileWrapperAsRTFDAttachment):
(WebCore::Pasteboard::canSmartReplace):
(WebCore::readStringAtPreferredItemIndex):
(WebCore::readBufferAtPreferredItemIndex):
(WebCore::Pasteboard::read):
(WebCore::Pasteboard::hasData):
(WebCore::Pasteboard::readPlatformValuesAsStrings):
(WebCore::Pasteboard::writeString):
(WebCore::Pasteboard::readFilePaths):
(WebCore::Pasteboard::setDragImage):

Source/WebKit:

Add const PasteboardContext* arguments to the PasteboardStrategy methods on WebPlatformStrategies, convert
them to PageIdentifiers, and send them over to the UI process via WebPasteboardProxy methods.

While currently unused inside WebPasteboardProxy, the next patch will attempt to use these page identifiers to
retrieve a data owner type from the corresponding WebPageProxy, and then forward this data owner type to the
PlatformPasteboard.

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

  • UIProcess/WebPasteboardProxy.cpp:

(WebKit::WebPasteboardProxy::typesSafeForDOMToReadAndWrite):
(WebKit::WebPasteboardProxy::writeCustomData):
(WebKit::WebPasteboardProxy::allPasteboardItemInfo):
(WebKit::WebPasteboardProxy::informationForItemAtIndex):
(WebKit::WebPasteboardProxy::getPasteboardItemsCount):
(WebKit::WebPasteboardProxy::readURLFromPasteboard):
(WebKit::WebPasteboardProxy::readBufferFromPasteboard):
(WebKit::WebPasteboardProxy::readStringFromPasteboard):
(WebKit::WebPasteboardProxy::containsStringSafeForDOMToReadForType):
(WebKit::WebPasteboardProxy::containsURLStringSuitableForLoading):
(WebKit::WebPasteboardProxy::urlStringSuitableForLoading):

  • UIProcess/WebPasteboardProxy.h:
  • UIProcess/WebPasteboardProxy.messages.in:
  • UIProcess/gtk/WebPasteboardProxyGtk.cpp:

(WebKit::WebPasteboardProxy::typesSafeForDOMToReadAndWrite):
(WebKit::WebPasteboardProxy::writeCustomData):

  • UIProcess/libwpe/WebPasteboardProxyLibWPE.cpp:

(WebKit::WebPasteboardProxy::readStringFromPasteboard):

  • WebProcess/Plugins/PDF/PDFPlugin.mm:

(WebKit::PDFPlugin::writeItemsToPasteboard):

  • WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:

(WebKit::pageIdentifier):
(WebKit::WebPlatformStrategies::getTypes):
(WebKit::WebPlatformStrategies::bufferForType):
(WebKit::WebPlatformStrategies::getPathnamesForType):
(WebKit::WebPlatformStrategies::stringForType):
(WebKit::WebPlatformStrategies::allStringsForType):
(WebKit::WebPlatformStrategies::changeCount):
(WebKit::WebPlatformStrategies::color):
(WebKit::WebPlatformStrategies::url):
(WebKit::WebPlatformStrategies::addTypes):
(WebKit::WebPlatformStrategies::setTypes):
(WebKit::WebPlatformStrategies::setBufferForType):
(WebKit::WebPlatformStrategies::setURL):
(WebKit::WebPlatformStrategies::setColor):
(WebKit::WebPlatformStrategies::setStringForType):
(WebKit::WebPlatformStrategies::getNumberOfFiles):
(WebKit::WebPlatformStrategies::containsURLStringSuitableForLoading):
(WebKit::WebPlatformStrategies::urlStringSuitableForLoading):
(WebKit::WebPlatformStrategies::writeToPasteboard):
(WebKit::WebPlatformStrategies::updateSupportedTypeIdentifiers):
(WebKit::WebPlatformStrategies::typesSafeForDOMToReadAndWrite):
(WebKit::WebPlatformStrategies::writeCustomData):
(WebKit::WebPlatformStrategies::containsStringSafeForDOMToReadForType):
(WebKit::WebPlatformStrategies::getPasteboardItemsCount):
(WebKit::WebPlatformStrategies::allPasteboardItemInfo):
(WebKit::WebPlatformStrategies::informationForItemAtIndex):
(WebKit::WebPlatformStrategies::readBufferFromPasteboard):
(WebKit::WebPlatformStrategies::readURLFromPasteboard):
(WebKit::WebPlatformStrategies::readStringFromPasteboard):

  • WebProcess/WebCoreSupport/WebPlatformStrategies.h:

Source/WebKitLegacy/mac:

Add const PasteboardContext* arguments to the PasteboardStrategy methods on WebPlatformStrategies.

  • WebCoreSupport/WebPlatformStrategies.h:
  • WebCoreSupport/WebPlatformStrategies.mm:

(WebPlatformStrategies::getTypes):
(WebPlatformStrategies::bufferForType):
(WebPlatformStrategies::getPathnamesForType):
(WebPlatformStrategies::allStringsForType):
(WebPlatformStrategies::stringForType):
(WebPlatformStrategies::changeCount):
(WebPlatformStrategies::color):
(WebPlatformStrategies::url):
(WebPlatformStrategies::addTypes):
(WebPlatformStrategies::setTypes):
(WebPlatformStrategies::setBufferForType):
(WebPlatformStrategies::setURL):
(WebPlatformStrategies::setColor):
(WebPlatformStrategies::setStringForType):
(WebPlatformStrategies::getNumberOfFiles):
(WebPlatformStrategies::typesSafeForDOMToReadAndWrite):
(WebPlatformStrategies::writeCustomData):
(WebPlatformStrategies::containsStringSafeForDOMToReadForType):
(WebPlatformStrategies::informationForItemAtIndex):
(WebPlatformStrategies::allPasteboardItemInfo):
(WebPlatformStrategies::getPasteboardItemsCount):
(WebPlatformStrategies::readBufferFromPasteboard):
(WebPlatformStrategies::readURLFromPasteboard):
(WebPlatformStrategies::readStringFromPasteboard):
(WebPlatformStrategies::containsURLStringSuitableForLoading):
(WebPlatformStrategies::urlStringSuitableForLoading):
(WebPlatformStrategies::writeToPasteboard):
(WebPlatformStrategies::updateSupportedTypeIdentifiers):

3:48 PM Changeset in webkit [273107] by Caio Lima
  • 12 edits
    6 adds in trunk

[JSC] Implement private static method
https://bugs.webkit.org/show_bug.cgi?id=219181

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/class-private-method-access.js: Added.
  • stress/private-accessor-static-non-static.js: Added.
  • stress/private-getter-inner-class.js:
  • stress/static-private-methods-and-accessor-inner-class.js: Added.
  • stress/static-private-methods-and-accessor-multiple-evaluation.js: Added.
  • stress/static-private-methods-and-accessors-postfix-node.js: Added.
  • stress/static-private-methods-and-accessors-prefix-node.js: Added.
  • test262/config.yaml:

Source/JavaScriptCore:

This patch is implementing static private methods and accessors
proposal based on https://github.com/tc39/proposal-static-class-features.
This implementation diverge a bit from private methods&accessors on the
brand check, because we are using a simpler way to perform static
brand checks. Since only the class constructor is allowed to access
its private methods and accessors, we save it on @privateClassBrand
on class lexical scope and compare it with the receiver of the static
private method (and accessors) using === operation.
While this genenrates more bytecodes than check_private_brand, we
don't need to perform a Structure transition to install a brand,
and avoid allocation of a private symbol. Since each evaluation of a
class generates a different constructor object, we preserve the semantics
that private methods are lexically scoped.

  • builtins/BuiltinNames.h:
  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::emitCreatePrivateBrand):
(JSC::BytecodeGenerator::emitInstallPrivateBrand):
(JSC::BytecodeGenerator::emitInstallPrivateClassBrand):
(JSC::BytecodeGenerator::emitGetPrivateBrand):
(JSC::BytecodeGenerator::emitCheckPrivateBrand):

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

(JSC::BaseDotNode::emitGetPropertyValue):
(JSC::BaseDotNode::emitPutProperty):
(JSC::PostfixNode::emitDot):
(JSC::PrefixNode::emitDot):
(JSC::ClassExprNode::emitBytecode):

  • parser/Parser.cpp:

(JSC::Parser<LexerType>::parseClass):
(JSC::Parser<LexerType>::parseGetterSetter):

  • parser/Parser.h:

(JSC::Scope::declarePrivateMethod):
(JSC::Scope::declarePrivateAccessor):
(JSC::Scope::declarePrivateSetter):
(JSC::Scope::declarePrivateGetter):

  • parser/VariableEnvironment.cpp:

(JSC::VariableEnvironment::declarePrivateAccessor):
(JSC::VariableEnvironment::declarePrivateSetter):
(JSC::VariableEnvironment::declarePrivateGetter):
(JSC::VariableEnvironment::declarePrivateMethod):

  • parser/VariableEnvironment.h:

(JSC::PrivateNameEntry::isStatic const):
(JSC::VariableEnvironment::isEmpty const):
(JSC::VariableEnvironment::declareStaticPrivateMethod):
(JSC::VariableEnvironment::declarePrivateSetter):
(JSC::VariableEnvironment::declareStaticPrivateSetter):
(JSC::VariableEnvironment::declarePrivateGetter):
(JSC::VariableEnvironment::declareStaticPrivateGetter):
(JSC::VariableEnvironment::hasStaticPrivateMethodOrAccessor const):
(JSC::VariableEnvironment::hasInstancePrivateMethodOrAccessor const):
(JSC::VariableEnvironment::hasPrivateMethodOrAccessor const): Deleted.

3:37 PM Changeset in webkit [273106] by Russell Epstein
  • 1 copy in tags/Safari-612.1.4

Tag Safari-612.1.4.

3:28 PM Changeset in webkit [273105] by Truitt Savell
  • 2 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

Unreviewed test gardening.

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

  • platform/mac/TestExpectations:
3:20 PM Changeset in webkit [273104] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] Fix segfaults on 32-bit big endian systems
https://bugs.webkit.org/show_bug.cgi?id=221710

Patch by Daniel Kolesa <Daniel Kolesa> on 2021-02-18
Reviewed by Yusuke Suzuki.

In these cases, we are loading values from memory into registers.
Seemingly, these values are present at an offset on 32-bit big
endian targets; therefore, add PayloadOffset, which is 4 on BE
and 0 on LE (same behavior as right now) and is already present
in other similar accesses in the file.

  • llint/LowLevelInterpreter32_64.asm:
3:14 PM Changeset in webkit [273103] by achristensen@apple.com
  • 4 edits in trunk

Fix null dereferencing in RangeResponseGenerator::giveResponseToTasksWithFinishedRanges
https://bugs.webkit.org/show_bug.cgi?id=222126

Reviewed by Darin Adler.

Source/WebCore:

Setting the resource to nullptr can delete the resource, which deletes the client, which is this.
When we go to read m_generator from this, we get a nullptr crash. Let's not crash.

  • platform/network/cocoa/RangeResponseGenerator.mm:

(WebCore::RangeResponseGenerator::willSynthesizeRangeResponses):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/MediaLoading.mm:

(TestWebKitAPI::TEST):

1:22 PM Changeset in webkit [273102] by Kate Cheney
  • 29 edits in trunk

Add support for non app-bound requests
https://bugs.webkit.org/show_bug.cgi?id=221909
<rdar://problem/73512988>

Source/WebCore:

Reviewed by Brent Fulgham.

Store whether the last navigation was app-bound in the DocumentLoader
so we can pass it to all sub resource loads. See WebKit changelog for more details.

  • loader/DocumentLoader.h:

(WebCore::DocumentLoader::lastNavigationWasAppBound const):
(WebCore::DocumentLoader::setlastNavigationWasAppBound):

  • platform/network/ResourceRequestBase.cpp:

(WebCore::ResourceRequestBase::setAsIsolatedCopy):

  • platform/network/ResourceRequestBase.h:

(WebCore::ResourceRequestBase::isAppBound const):
(WebCore::ResourceRequestBase::setIsAppBound):
(WebCore::ResourceRequestBase::ResourceRequestBase):
(WebCore::ResourceRequestBase::encodeBase const):
(WebCore::ResourceRequestBase::decodeBase):

Source/WebKit:

Reviewed by Brent Fulgham.

Add a new parameter to the ResourceRequest class specifying app
bound requests and populate subresource loads, redirects, and
preconnect tasks with this value.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::preconnectTo):

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

(WebKit::NetworkResourceLoader::continueWillSendRedirectedRequest):

  • Scripts/webkit/messages.py:
  • Shared/NavigatingToAppBoundDomain.h:
  • Shared/WebPageCreationParameters.cpp:

(WebKit::WebPageCreationParameters::encode const):
(WebKit::WebPageCreationParameters::decode):

  • Shared/WebPageCreationParameters.h:
  • Shared/mac/WebCoreArgumentCodersMac.mm:

(IPC::ArgumentCoder<WebCore::ResourceRequest>::encodePlatformData):
(IPC::ArgumentCoder<WebCore::ResourceRequest>::decodePlatformData):

  • UIProcess/API/Cocoa/WKWebViewPrivateForTesting.h:
  • UIProcess/API/Cocoa/WKWebViewTesting.mm:

(-[WKWebView _lastNavigationWasAppBound:]):

  • UIProcess/Cocoa/WebPageProxyCocoa.mm:

(WebKit::WebPageProxy::setLastNavigationWasAppBound):
(WebKit::WebPageProxy::lastNavigationWasAppBound):

  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::preconnectTo):

  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::loadRequest):
(WebKit::WebPageProxy::preconnectTo):
(WebKit::WebPageProxy::creationParameters):

  • UIProcess/WebPageProxy.h:
  • WebProcess/Network/WebLoaderStrategy.cpp:

(WebKit::WebLoaderStrategy::loadResource):
For the case of a main resource load without a navigation, like from about:blank,
the main resource load uses the original document loader which was created before
WebPage::loadRequest sets the value of m_lastNavigationWasAppBound. For this reason,
we should not check the document loader value for the main resource and
know that the resource request has the correct value.

(WebKit::WebLoaderStrategy::preconnectTo):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::m_lastNavigationWasAppBound):
(WebKit::WebPage::loadRequest):
(WebKit::WebPage::createDocumentLoader):
We should store lastNavigationWasAppBound in the document loader
instead of the page so we don't affect previous loads while initiating
the navigation to the next site.

(WebKit::WebPage::lastNavigationWasAppBound):

  • WebProcess/WebPage/WebPage.h:

(WebKit::WebPage::setLastNavigationWasAppBound):

  • WebProcess/WebPage/WebPage.messages.in:

Tools:

API test coverage.

Reviewed by Brent Fulgham.

  • TestWebKitAPI/Tests/WebKitCocoa/InAppBrowserPrivacy.mm:
  • TestWebKitAPI/cocoa/TestWKWebView.h:
  • TestWebKitAPI/cocoa/TestWKWebView.mm:

(-[WKWebView lastNavigationWasAppBound:]):

1:17 PM Changeset in webkit [273101] by commit-queue@webkit.org
  • 3 edits in trunk/Tools

Undeprecate some webkit-patch commands
https://bugs.webkit.org/show_bug.cgi?id=222106

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

This removes the deprecated decorator from the webkit-patch commands we quickly heard are
actually used: apply-watchlist-local, check-style, clean, create-revert, prepare-revert,
and validate-changelog.

  • Scripts/webkitpy/tool/commands/applywatchlistlocal.py:
  • Scripts/webkitpy/tool/commands/download.py:
1:04 PM Changeset in webkit [273100] by Aditya Keerthi
  • 2 edits in trunk/Source/WebCore

[iOS][FCR] Adjust button colors and fonts to match new specification
https://bugs.webkit.org/show_bug.cgi?id=222123
<rdar://problem/74485781>

Reviewed by Wenson Hsieh.

  • css/formControlsIOS.css:

(input:matches([type="button"], [type="submit"], [type="reset"]), input[type="file"]::file-selector-button, button):
(input:matches([type="button"], [type="reset"]), input[type="file"]::file-selector-button, button):

Use a blue on gray color scheme, rather than dark blue on light blue.

(input[type="submit"]):

Submit buttons have a bold font by default.

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

[macOS] Remove unused IPC shared memory reads in WebContent process
https://bugs.webkit.org/show_bug.cgi?id=222083
<rdar://problem/73509623>

Reviewed by Per Arne Vollan.

  • WebProcess/com.apple.WebProcess.sb.in:
12:58 PM Changeset in webkit [273098] by Patrick Angle
  • 2 edits in trunk/Source/WebCore

Web Inspector: Implement Grid Overlay "Show track sizes" drawing
https://bugs.webkit.org/show_bug.cgi?id=222007

Reviewed by BJ Burg.

Show computed and authored track sizes in the grid overlay. Authored sizes are determined from the original
CSSValue, not from the GridTrackSize as the later loses the exact authored syntax (e.g. 14vw is already
resolved to an absolute pixel value).

When the authored size is in px and is identical to the computed size, the value is only shown once for the
track.

  • inspector/InspectorOverlay.cpp:

(WebCore::InspectorOverlay::drawLayoutLabel):

  • Use the system-ui font for layout labels and reduce the font size to improve information density.
  • Drive-by further adjustment to label text positioning to be more accurate.

(WebCore::authoredGridTrackSizes):

  • Get the authored sizes for each track in a sizing direction (row-wise or column-wise).

(WebCore::InspectorOverlay::drawGridOverlay):

  • Draw labels for track sizes with their computed and, if different from the computed, authored values.
  • Drive-by to have area name label backgrounds share a common constant color with track size label backgrounds.
12:51 PM Changeset in webkit [273097] by Nikita Vasilyev
  • 6 edits
    1 add in trunk/Source/WebInspectorUI

Web Inspector: Elements: show badges for CSS Grid container elements
https://bugs.webkit.org/show_bug.cgi?id=221370

Reviewed by BJ Burg.

Clicking "grid" CSS badge shows/hides the grid overlay for the corresponding element.

  • UserInterface/Base/Setting.js:
  • UserInterface/Controllers/OverlayManager.js:

(WI.OverlayManager.prototype.isGridOverlayVisible):
(WI.OverlayManager.prototype.toggleGridOverlay):

  • UserInterface/Main.html:
  • UserInterface/Views/DOMTreeElement.css: Added.

(.tree-outline.dom .badge-css-grid):
(.tree-outline.dom .badge-css-grid.activated):
(.tree-outline.dom li.selected .badge-css-grid):
(.tree-outline.dom li.selected .badge-css-grid.activated):
(body:not(.window-inactive, .window-docked-inactive) .tree-outline.dom:focus-within li.selected .badge-css-grid):
(body:not(.window-inactive, .window-docked-inactive) .tree-outline.dom:focus-within li.selected .badge-css-grid.activated):
(@media (prefers-color-scheme: dark) .tree-outline.dom .badge-css-grid):

  • UserInterface/Views/DOMTreeElement.js:

(WI.DOMTreeElement):
(WI.DOMTreeElement.prototype.onattach):
(WI.DOMTreeElement.prototype.ondetach):
(WI.DOMTreeElement.prototype.updateTitle):
(WI.DOMTreeElement.prototype._updateGridBadge):
(WI.DOMTreeElement.prototype._gridBadgeClicked):
(WI.DOMTreeElement.prototype._gridBadgeDoubleClicked):
(WI.DOMTreeElement.prototype._updateGridBadgeStatus):
(WI.DOMTreeElement.prototype._handleLayoutContextTypeChanged):

  • UserInterface/Views/SettingsTabContentView.js:

(WI.SettingsTabContentView.prototype._createExperimentalSettingsView):

12:46 PM Changeset in webkit [273096] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Update .eslintrc to account for ECMAScript 2021
https://bugs.webkit.org/show_bug.cgi?id=222107

Patch by Razvan Caliman <Razvan Caliman> on 2021-02-18
Reviewed by BJ Burg.

Add ES2021 parser option so ESLint-based linters don't throw errors

for newer JavaScript features, like logical assignment operators (??=, &&=,
)

Note: The linter in an editor must support ESLint v7.8.0 or newer to understand ES2021.

  • .eslintrc:
12:46 PM Changeset in webkit [273095] by Fujii Hironori
  • 3 edits in trunk/Source/WebKit

Unreviewed, reverting r273063.

GTK port layout tests are timint out.

Reverted changeset:

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

12:38 PM Changeset in webkit [273094] by commit-queue@webkit.org
  • 10 edits in trunk/Source/WebCore

Unreviewed, reverting r272849.
https://bugs.webkit.org/show_bug.cgi?id=222121

Increased page load time

Reverted changeset:

"CSSFontFace should not need its m_fontSelector data member"
https://bugs.webkit.org/show_bug.cgi?id=208351
https://trac.webkit.org/changeset/272849

12:36 PM Changeset in webkit [273093] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[macOS] Remove access to audio IOKit
https://bugs.webkit.org/show_bug.cgi?id=222062
<rdar://problem/70496648>

Reviewed by Brent Fulgham.

Remove access to audio IOKit in the WebContent process on macOS when GPUP is enabled.

  • WebProcess/com.apple.WebProcess.sb.in:
12:15 PM Changeset in webkit [273092] by don.olmstead@sony.com
  • 2 edits in trunk/Tools

Skip platform specific Python tests
https://bugs.webkit.org/show_bug.cgi?id=222066

Reviewed by Jonathan Bedard.

Catalog platform specific tests based on operating system. Skip those tests that don't
apply to the platform. Mac should continue to run all tests since it runs the webkitpy
tests in EWS.

  • Scripts/webkitpy/test/main.py:
12:14 PM Changeset in webkit [273091] by Truitt Savell
  • 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.

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

  • platform/mac/TestExpectations:
12:08 PM Changeset in webkit [273090] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

[ews] Ensure that uat instance doesn't comment on bugs
https://bugs.webkit.org/show_bug.cgi?id=222035

Reviewed by Jonathan Bedard.

  • CISupport/ews-build/steps.py:

(SetCommitQueueMinusFlagOnPatch.getResultSummary):
(SetCommitQueueMinusFlagOnPatch.doStepIf):
(CommentOnBug.getResultSummary):
(CommentOnBug.doStepIf):
(PushCommitToWebKitRepo.doStepIf):

  • CISupport/ews-build/steps_unittest.py: Updated unit-test accordingly.
12:04 PM Changeset in webkit [273089] by youenn@apple.com
  • 5 edits in trunk/Source

libwebrtc installs some files into incorrect locations in /usr/local/include
https://bugs.webkit.org/show_bug.cgi?id=221534
<rdar://problem/74333613>

Reviewed by Eric Carlson.

Source/ThirdParty/libwebrtc:

  • libwebrtc.xcodeproj/project.pbxproj:

Mark optional.h as project instead of private.
Move vp9 header copying from common to webm.

Source/WebCore:

No change of behavior.

  • platform/graphics/cocoa/SourceBufferParserWebM.h:
  • platform/graphics/cocoa/VP9UtilitiesCocoa.mm:

Update according new vp9 header code path.

11:44 AM Changeset in webkit [273088] by wilander@apple.com
  • 35 edits
    2 copies
    3 adds in trunk

PCM: Request signature for unlinkable token using attributionSourceNonce
https://bugs.webkit.org/show_bug.cgi?id=222076
<rdar://73581651>

Reviewed by Chris Dumez.

Source/WebCore:

Test: http/tests/privateClickMeasurement/store-private-click-measurement-with-source-nonce.html

  • html/HTMLAnchorElement.cpp:

(WebCore::HTMLAnchorElement::handleClick):

Adoption of renamed function PrivateClickMeasurement::attributionReportURL().

  • loader/PrivateClickMeasurement.cpp:

(WebCore::PrivateClickMeasurement::tokenSignatureURL const):
(WebCore::PrivateClickMeasurement::tokenSignatureJSON const):

New functions to facilitate the request for a token signature.

(WebCore::PrivateClickMeasurement::attributionReportURL const):
(WebCore::PrivateClickMeasurement::attributionReportJSON const):

Renamed functions to make them distinct from their token signing peers.

(WebCore::PrivateClickMeasurement::reportURL const): Deleted.
(WebCore::PrivateClickMeasurement::json const): Deleted.

  • loader/PrivateClickMeasurement.h:

(WebCore::PrivateClickMeasurement::encode const):
(WebCore::PrivateClickMeasurement::decode):
(WebCore::PrivateClickMeasurement::EphemeralSourceNonce::encode const):
(WebCore::PrivateClickMeasurement::EphemeralSourceNonce::decode):

Encode and decode to facilitate transfer over IPC.

Source/WebKit:

This patch makes PrivateClickMeasurementManager::storeUnattributed() look
for incoming source nonces and if found, call the new function
PrivateClickMeasurementManager::getSignedUnlinkableToken().

A new static function generateNetworkResourceLoadParameters() was added
to reuse code between PrivateClickMeasurementManager::getSignedUnlinkableToken()
and the existing PrivateClickMeasurementManager::fireConversionRequest().

To enable testing, there is a new function called
NetworkSession::setPrivateClickMeasurementTokenSignatureURLForTesting() and
function setPrivateClickMeasurementConversionURLForTesting() was renamed
setPrivateClickMeasurementAttributionReportURLForTesting() in NetworkProcess,
NetworkSession, WKPagePrivate, WKWebViewPrivateForTesting, and
PrivateClickMeasurementManager to align with the naming used in other places.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::setPrivateClickMeasurementTokenSignatureURLForTesting):
(WebKit::NetworkProcess::setPrivateClickMeasurementAttributionReportURLForTesting):
(WebKit::NetworkProcess::setPrivateClickMeasurementConversionURLForTesting): Deleted.

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

(WebKit::NetworkSession::setPrivateClickMeasurementTokenSignatureURLForTesting):
(WebKit::NetworkSession::setPrivateClickMeasurementAttributionReportURLForTesting):
(WebKit::NetworkSession::setPrivateClickMeasurementConversionURLForTesting): Deleted.

  • NetworkProcess/NetworkSession.h:
  • NetworkProcess/PrivateClickMeasurementManager.cpp:

(WebKit::PrivateClickMeasurementManager::storeUnattributed):
(WebKit::generateNetworkResourceLoadParameters):
(WebKit::PrivateClickMeasurementManager::getSignedUnlinkableToken):
(WebKit::PrivateClickMeasurementManager::fireConversionRequest):
(WebKit::PrivateClickMeasurementManager::setTokenSignatureURLForTesting):
(WebKit::PrivateClickMeasurementManager::setAttributionReportURLForTesting):
(WebKit::PrivateClickMeasurementManager::setConversionURLForTesting): Deleted.

  • NetworkProcess/PrivateClickMeasurementManager.h:
  • UIProcess/API/C/WKPage.cpp:

(WKPageSetPrivateClickMeasurementTokenSignatureURLForTesting):
(WKPageSetPrivateClickMeasurementAttributionReportURLForTesting):
(WKPageSetPrivateClickMeasurementConversionURLForTesting): Deleted.

  • UIProcess/API/C/WKPagePrivate.h:
  • UIProcess/API/Cocoa/WKWebViewPrivateForTesting.h:
  • UIProcess/API/Cocoa/WKWebViewTesting.mm:

(-[WKWebView _setPrivateClickMeasurementAttributionReportURLForTesting:completionHandler:]):
(-[WKWebView _setPrivateClickMeasurementConversionURLForTesting:completionHandler:]): Deleted.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::setPrivateClickMeasurementTokenSignatureURLForTesting):
(WebKit::WebPageProxy::setPrivateClickMeasurementAttributionReportURLForTesting):
(WebKit::WebPageProxy::setPrivateClickMeasurementConversionURLForTesting): Deleted.

  • UIProcess/WebPageProxy.h:

Tools:

The changes to the TestRunner are:

  • Rename setPrivateClickMeasurementConversionURLForTesting() to

setPrivateClickMeasurementAttributionReportURLForTesting() to align with other
naming and make it clear that it does.

  • Add the new setPrivateClickMeasurementTokenSignatureURLForTesting() used for

testing the token signing request.

The changes to API tests are to adopt renamed functions in
WebCore::PrivateClickMeasurement:

  • reportURL() renamed attributionReportURL().
  • json() renamed attributionReportJSON().
  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebCore/PrivateClickMeasurement.cpp:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/EventAttribution.mm:

(TestWebKitAPI::TEST):

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

(WTR::TestRunner::setPrivateClickMeasurementTokenSignatureURLForTesting):
(WTR::TestRunner::setPrivateClickMeasurementAttributionReportURLForTesting):
(WTR::TestRunner::setPrivateClickMeasurementConversionURLForTesting): Deleted.

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

(WTR::TestController::setPrivateClickMeasurementTokenSignatureURLForTesting):
(WTR::TestController::setPrivateClickMeasurementAttributionReportURLForTesting):
(WTR::TestController::setPrivateClickMeasurementConversionURLForTesting): Deleted.

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

(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):

LayoutTests:

  • http/tests/contentextensions/block-private-click-measurement.html:

Adoption of renamed TestRunner function setPrivateClickMeasurementAttributionReportURLForTesting().

  • http/tests/privateClickMeasurement/conversion-disabled-in-ephemeral-session.html:

Adoption of renamed TestRunner function setPrivateClickMeasurementAttributionReportURLForTesting().

  • http/tests/privateClickMeasurement/expired-attribution-report-gets-sent-on-session-start.html:

Adoption of renamed TestRunner function setPrivateClickMeasurementAttributionReportURLForTesting().

  • http/tests/privateClickMeasurement/resources/getConversionData.php:

Adoption of renamed TestRunner function setPrivateClickMeasurementAttributionReportURLForTesting().

  • http/tests/privateClickMeasurement/resources/getTokenSigningData.php: Added.
  • http/tests/privateClickMeasurement/resources/signToken.php: Added.
  • http/tests/privateClickMeasurement/resources/tokenSigningFilePath.php: Added.
  • http/tests/privateClickMeasurement/resources/util.js:

(tearDownAndFinish):

Adoption of renamed TestRunner function setPrivateClickMeasurementAttributionReportURLForTesting().
Now also calls setPrivateClickMeasurementTokenSignatureURLForTesting().

  • http/tests/privateClickMeasurement/send-attribution-conversion-request.html:

Adoption of renamed TestRunner function setPrivateClickMeasurementAttributionReportURLForTesting().

  • http/tests/privateClickMeasurement/store-private-click-measurement-with-source-nonce-expected.txt: Added.
  • http/tests/privateClickMeasurement/store-private-click-measurement-with-source-nonce.html: Added.
11:40 AM Changeset in webkit [273087] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

[WPE][GTK] Avoid another child setup function in process launcher code
https://bugs.webkit.org/show_bug.cgi?id=222049

Patch by Michael Catanzaro <Michael Catanzaro> on 2021-02-18
Reviewed by Carlos Garcia Campos.

Avoiding child setup functions is desirable because it could allow GSubprocess to use
posix_spawn() instead of fork() in the future. That's not possible to do if we have code
that needs to run between fork() and exec().

In this case, the child setup is used only to unset CLOEXEC. We could simply not set it in
the first place. This only fails if a secondary thread decides to launch a subprocess before
XDGDBusProxyLauncher::launch returns. That window already exists in many other places (e.g.
anywhere else setCloseOnExec is called, such as for IPC::Connection objects). Threads should
not do that.

This also fixes a bug where unsetting CLOEXEC would fail if we get unlucky and receive
EINTR. A loop is required here. WTF::setCloseOnExec handles that for us.

  • UIProcess/Launcher/glib/BubblewrapLauncher.cpp:

(WebKit::XDGDBusProxyLauncher::launch):
(WebKit::XDGDBusProxyLauncher::childSetupFunc): Deleted.

11:14 AM Changeset in webkit [273086] by msaboff@apple.com
  • 24 edits in trunk

[JSC] Implement RegExp Match Indices proposal
https://bugs.webkit.org/show_bug.cgi?id=202475

Reviewed by Yusuke Suzuki.

JSTests:

Updated tests.

  • es6/Proxy_internal_get_calls_RegExp.prototype.flags.js:
  • stress/static-getter-in-names.js:
  • test262/config.yaml:

Source/JavaScriptCore:

This implements the latest version of the RegExp match indices proposal (https://github.com/tc39/proposal-regexp-match-indices).
It includes a new 'd' flag to RegExp's to trigger the population of the 'indices' property tree in a Matches result from
RegExp.exec() and related methods. This change is performance neutral on JetStream2.

  • dfg/DFGAbstractInterpreterInlines.h:

(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):

  • dfg/DFGStrengthReductionPhase.cpp:

(JSC::DFG::StrengthReductionPhase::handleNode):

  • runtime/CommonIdentifiers.h:
  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):
(JSC::JSGlobalObject::fireWatchpointAndMakeAllArrayStructuresSlowPut):
(JSC::JSGlobalObject::visitChildren):

  • runtime/JSGlobalObject.h:

(JSC::JSGlobalObject::regExpMatchesArrayWithIndicesStructure const):
(JSC::JSGlobalObject::regExpMatchesIndicesArrayStructure const):

  • runtime/RegExp.cpp:

(JSC::RegExpFunctionalTestCollector::outputOneTest):
(JSC::regexpToSourceString):

  • runtime/RegExp.h:
  • runtime/RegExpMatchesArray.cpp:

(JSC::createEmptyRegExpMatchesArray):
(JSC::createStructureWithIndicesImpl):
(JSC::createIndicesStructureImpl):
(JSC::createRegExpMatchesArrayWithIndicesStructure):
(JSC::createRegExpMatchesIndicesArrayStructure):
(JSC::createRegExpMatchesArrayWithIndicesSlowPutStructure):
(JSC::createRegExpMatchesIndicesArraySlowPutStructure):

  • runtime/RegExpMatchesArray.h:

(JSC::createRegExpMatchesArray):

  • runtime/RegExpPrototype.cpp:

(JSC::RegExpPrototype::finishCreation):
(JSC::flagsString):
(JSC::JSC_DEFINE_HOST_FUNCTION):

  • yarr/YarrFlags.cpp:

(JSC::Yarr::parseFlags):

  • yarr/YarrFlags.h:
  • yarr/YarrInterpreter.h:

(JSC::Yarr::BytecodePattern::hasIndices const):

  • yarr/YarrPattern.h:

(JSC::Yarr::YarrPattern::hasIndices const):

LayoutTests:

Updated tests.

  • js/Object-getOwnPropertyNames-expected.txt:
  • js/regexp-named-capture-groups-expected.txt:
  • js/script-tests/Object-getOwnPropertyNames.js:
  • js/script-tests/regexp-named-capture-groups.js:
11:12 AM Changeset in webkit [273085] by youenn@apple.com
  • 7 edits in trunk

Set ENABLE_VP9 to 1 on IOS
https://bugs.webkit.org/show_bug.cgi?id=222042
<rdar://problem/74433523>

Reviewed by Eric Carlson.

Source/WebKit:

No change of behavior.

  • UIProcess/API/C/WKPreferences.cpp:

(WKPreferencesSetVP9DecoderEnabled):
(WKPreferencesGetVP9DecoderEnabled):

  • UIProcess/API/C/WKPreferencesRef.h:

Source/WTF:

  • wtf/PlatformEnableCocoa.h:

Tools:

  • WebKitTestRunner/ios/TestControllerIOS.mm:

(WTR::TestController::platformResetPreferencesToConsistentValues):
Disable VP9Decoder in ios simulator since there is no support for it through VTB.

10:58 AM Changeset in webkit [273084] by commit-queue@webkit.org
  • 5 edits in trunk

[GTK] Remove all Google user agent quirks except for Google Docs
https://bugs.webkit.org/show_bug.cgi?id=222039

Patch by Michael Catanzaro <Michael Catanzaro> on 2021-02-18
Reviewed by Carlos Garcia Campos.

Source/WebCore:

The Google user agent quirks have a very long and complex history, detailed across over a
dozen different bug reports. But Google seems to have improved its practices, and they are
no longer needed except on Google Docs, at least for now. This is a historic moment!

  • platform/UserAgentQuirks.cpp:

(WebCore::UserAgentQuirks::quirksForURL):
(WebCore::UserAgentQuirks::stringForQuirk):
(WebCore::urlRequiresLinuxDesktopPlatform): Deleted.

  • platform/glib/UserAgentGLib.cpp:

(WebCore::buildUserAgentString):

Tools:

  • TestWebKitAPI/Tests/WebCore/UserAgentQuirks.cpp:

(TestWebKitAPI::TEST):
(TestWebKitAPI::assertUserAgentForURLHasLinuxPlatformQuirk): Deleted.

10:38 AM Changeset in webkit [273083] by Devin Rousso
  • 11 edits in trunk/Source

Experiment with using the theme-color as the scroll area background if provided
https://bugs.webkit.org/show_bug.cgi?id=222078
<rdar://problem/74158818>

Reviewed by Tim Horton.

Source/WebCore:

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

(WebCore::RenderLayerCompositor::updateLayerForOverhangAreasBackgroundColor): Added.
(WebCore::RenderLayerCompositor::rootBackgroundColorOrTransparencyChanged):

  • dom/Document.cpp:

(WebCore::Document::processThemeColor):
Notify the RenderLayerCompositor when <meta name="theme-color" content="..."> changes.

Source/WebKit:

  • UIProcess/API/ios/WKWebViewIOS.mm:

(baseScrollViewBackgroundColor):

  • UIProcess/ViewSnapshotStore.cpp:

(WebKit::ViewSnapshotStore::recordSnapshot):

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

(WebPageProxy::scrollAreaBackgroundColor): Added.

Source/WTF:

  • Scripts/Preferences/WebPreferencesInternal.yaml:
10:18 AM Changeset in webkit [273082] by pvollan@apple.com
  • 12 edits in trunk/Source

[macOS] Observe system sleep events in the UI process
https://bugs.webkit.org/show_bug.cgi?id=221996
<rdar://problem/74406570>

Reviewed by Chris Dumez.

Source/WebCore:

System sleep events should be observed in the UI process, which should notify the WebContent process.

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

(WebCore::MediaSessionManagerCocoa::MediaSessionManagerCocoa):

Source/WebCore/PAL:

Export symbols, since the system sleep listener will be instantiated in the UI process.

  • pal/system/SystemSleepListener.h:

Source/WebKit:

System sleep events should be observed in the UI process, which should notify the WebContent process.

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::registerNotificationObservers):
(WebKit::WebProcessPool::unregisterNotificationObservers):
(WebKit::WebProcessPool::systemWillSleep):
(WebKit::WebProcessPool::systemDidWake):

  • UIProcess/WebProcessPool.h:
  • WebProcess/WebProcess.h:
  • WebProcess/WebProcess.messages.in:
  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::systemWillSleep):
(WebKit::WebProcess::systemDidWake):

9:52 AM Changeset in webkit [273081] by achristensen@apple.com
  • 4 edits in trunk

Disable RangeResponseGenerator again.
https://bugs.webkit.org/show_bug.cgi?id=221072

Source/WebCore:

It seems to be causing GPU process crashes. Needs more investigating.

  • platform/network/cocoa/RangeResponseGenerator.mm:

(WebCore::RangeResponseGenerator::willSynthesizeRangeResponses):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/MediaLoading.mm:

(TestWebKitAPI::TEST):

9:46 AM Changeset in webkit [273080] by commit-queue@webkit.org
  • 30 edits in trunk

WebGL contexts do not work as source for Context2D drawImage calls in GPU process
https://bugs.webkit.org/show_bug.cgi?id=221811

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2021-02-18
Reviewed by Darin Adler.

Source/WebCore:

Implements rudimentary support for reading the WebGL context and transfering
it to a ImageBuffer.

Fixes many tests that are removed from gpu-process/TestExpectations.

  • html/OffscreenCanvas.cpp:

(WebCore::OffscreenCanvas::transferToImageBitmap):

  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::paintRenderingResultsToCanvas):

  • platform/graphics/GraphicsContextGL.h:

Make paintRenderingResultsToCanvas and paintCompositedResultsToCanvas
take ImageBuffer& instead of ImageBuffer*, since the buffer always
exists.

  • platform/graphics/cairo/GraphicsContextGLCairo.cpp:

(WebCore::GraphicsContextGLOpenGL::paintToCanvas):

  • platform/graphics/cg/GraphicsContextGLCG.cpp:

(WebCore::GraphicsContextGLOpenGL::paintToCanvas):
Change the function signature so that it can be called from
other thread and without GraphicsContextGL instance.
It is not really a GraphicsContextGLOpenGL related function..

  • platform/graphics/cocoa/GraphicsContextGLIOSurfaceSwapChain.cpp:

(WebCore::GraphicsContextGLIOSurfaceSwapChain::displayBuffer const):
(WebCore::GraphicsContextGLIOSurfaceSwapChain::recycleBuffer):
(WebCore::GraphicsContextGLIOSurfaceSwapChain::detachClient):
(WebCore::GraphicsContextGLIOSurfaceSwapChain::present):

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

(WebGLLayerSwapChain::present):
Move the triple buffering implementation to the base class.
The implementation is now also used in GPU process side,
since the GPU process needs to be able to read the composited
results.

Previously the same logic was split between Web process and GPU process.

  • platform/graphics/opengl/GraphicsContextGLOpenGL.cpp:

(WebCore::GraphicsContextGLOpenGL::paintRenderingResultsToCanvas):
(WebCore::GraphicsContextGLOpenGL::paintCompositedResultsToCanvas):
(WebCore::GraphicsContextGLOpenGL::paintRenderingResultsToImageData):
(WebCore::GraphicsContextGLOpenGL::readRenderingResultsForPainting):
(WebCore::GraphicsContextGLOpenGL::readCompositedResultsForPainting):

  • platform/graphics/opengl/GraphicsContextGLOpenGL.h:

Expose public functions to get ImageData out of drawing buffer and
display buffer.

Source/WebKit:

Implements rudimentary support for reading the WebGL context and transfering
it to a ImageBuffer.

Fixes many tests that are removed from gpu-process/TestExpectations.

  • GPUProcess/GPUConnectionToWebProcess.cpp:

(WebKit::GPUConnectionToWebProcess::createGraphicsContextGL):

  • GPUProcess/GPUConnectionToWebProcess.h:

(WebKit::GPUConnectionToWebProcess::RemoteRenderingBackendWrapper::get const):

  • GPUProcess/GPUConnectionToWebProcess.messages.in:
  • GPUProcess/graphics/RemoteGraphicsContextGL.cpp:

(WebKit::RemoteGraphicsContextGL::create):
(WebKit::RemoteGraphicsContextGL::RemoteGraphicsContextGL):

  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::createGraphicsContextGL const):

  • GPUProcess/graphics/RemoteGraphicsContextGLCocoa.cpp:

(WebKit::RemoteGraphicsContextGL::create):
(WebKit::RemoteGraphicsContextGLCocoa::RemoteGraphicsContextGLCocoa):

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h:

(WebKit::RemoteRenderingBackendProxy::renderingBackendIdentifier const):

RemoteGraphicsContextGL takes a ref of the respective RemoteRenderingBackend.
RemoteRenderingBackend is the one that can handle ImageBuffers.

(WebKit::RemoteGraphicsContextGL::paintRenderingResultsToCanvas):
(WebKit::RemoteGraphicsContextGL::paintCompositedResultsToCanvas):
(WebKit::RemoteGraphicsContextGL::paintImageDataToImageBuffer):

  • GPUProcess/graphics/RemoteGraphicsContextGL.h:
  • GPUProcess/graphics/RemoteGraphicsContextGL.messages.in:

Implement the functions by:

1) Wait for the pending changes to the ImageBuffer
2) Send a synchronous message from Web process to GPU process WebGL sequence
3) Reading the buffer, post the task to RenderingBackend sequence
4) Paint the results to the ImageBuffer
5) Return the synchronous message result

(WebKit::RemoteGraphicsContextGLCocoa::prepareForDisplay):

RemoteGraphicsContextGL now retains the reference to display buffer.
Before, just sent the display buffer to Web process and forgot
about it.

  • GPUProcess/graphics/RemoteRenderingBackend.cpp:

(WebKit::RemoteRenderingBackend::dispatch):

  • GPUProcess/graphics/RemoteRenderingBackend.h:

Add function to dispatch work to rendering backend sequence.

  • WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.cpp:

(WebKit::RemoteGraphicsContextGLProxy::create):
(WebKit::RemoteGraphicsContextGLProxy::RemoteGraphicsContextGLProxy):
(WebKit::RemoteGraphicsContextGLProxy::paintRenderingResultsToCanvas):
(WebKit::RemoteGraphicsContextGLProxy::paintCompositedResultsToCanvas):

  • WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.h:

Send the messages.

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:

(WebKit::RemoteRenderingBackendProxy::connectToGPUProcess):

Use IPC::SendOption::DispatchMessageEvenWhenWaitingForSyncReply to
send CreateRenderingBackend. It must be dispatched in order compared to other
messages such as CreateRemoteGraphicsContextGL.

Tools:

Update two signatures for manually implemented messages.

  • Scripts/generate-gpup-webgl:

LayoutTests:

Remove now passing tests from the expectations.

  • gpu-process/TestExpectations:
9:42 AM Changeset in webkit [273079] by Chris Dumez
  • 2 edits in trunk/Source/WTF

Unreviewed tiny cleanup after r273056.

  • wtf/Forward.h:
9:02 AM Changeset in webkit [273078] by weinig@apple.com
  • 10 edits in trunk

lch() colors should serialize as lch(), not lab()
https://bugs.webkit.org/show_bug.cgi?id=222085

Reviewed by Darin Adler.

Source/WebCore:

Updates fast/css/parsing-lab-colors.html

The spec was updated to require lch() to serialize to itself.

Store LCHA colors in Color to allow serialization. This just moves
the conversion to Lab from parse time to CGColor creation time (it
happens implicitly in the conversion to extended sRGB).

  • css/parser/CSSPropertyParserHelpers.cpp:

(WebCore::CSSPropertyParserHelpers::parseLCHParameters):

  • platform/graphics/ColorSerialization.cpp:

(WebCore::serialization):
(WebCore::serializationForCSS):
(WebCore::serializationForHTML):
(WebCore::serializationForRenderTreeAsText):

  • platform/graphics/ColorSpace.cpp:

(WebCore::operator<<):

  • platform/graphics/ColorSpace.h:

(WebCore::callWithColorType):

  • platform/graphics/ColorUtilities.h:

(WebCore::isBlack):
(WebCore::isWhite):

  • platform/graphics/cg/ColorSpaceCG.h:

(WebCore::cachedNullableCGColorSpace):

LayoutTests:

The spec was updated to require lch() to serialize to itself.

  • fast/css/parsing-lab-colors-expected.txt:
  • fast/css/parsing-lab-colors.html:

Update test to reflect new serialization of lch().

8:56 AM Changeset in webkit [273077] by Wenson Hsieh
  • 34 edits
    2 adds in trunk/Source

Plumb an Optional<PageIdentifier> through Pasteboard-related codepaths
https://bugs.webkit.org/show_bug.cgi?id=221987

Reviewed by Tim Horton.

Source/WebCore:

In order to facilitate tagging pasteboard reads and writes with a data owner type on iOS sourced from
WKContentView, we add infrastructure to (indirectly) tag Pasteboard with an optional PageIdentifier to
indicate which page is triggering the pasteboard operation.

However, since the Pasteboard class should only be responsible for interfacing with platform-dependent
strategies for reading or writing data, we can't directly add a PageIdentifier member to Pasteboard.
Instead, we introduce a separate PasteboardContext object, and let Pasteboard hold a unique pointer to this
context (which is set during construction). PasteboardContext is then subclassed by PagePasteboardContext,
which holds a PageIdentifier and is created from call sites of the Pasteboard constructor that have access
to page identifiers (e.g. Editor, Clipboard, EventHandler).

In a future patch, this opaque PasteboardContext will be converted back to a PagePasteboardContext in order
to retrieve the page identifier in the WebKit client layer.

  • Headers.cmake:
  • Modules/async-clipboard/Clipboard.cpp:

(WebCore::Clipboard::readText):
(WebCore::Clipboard::writeText):
(WebCore::Clipboard::read):
(WebCore::Clipboard::ItemWriter::ItemWriter):

Here (and in many places below), create PagePasteboardContext objects and use them to create Pasteboards,
passing them in as opaque PasteboardContexts.

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

(WebCore::DataTransfer::createForDrag):

  • dom/DataTransfer.h:
  • editing/Editor.cpp:

(WebCore::createDataTransferForClipboardEvent):
(WebCore::dispatchClipboardEvent):
(WebCore::Editor::pasteAsPlainTextBypassingDHTML):
(WebCore::Editor::performCutOrCopy):
(WebCore::Editor::paste):
(WebCore::Editor::pasteAsPlainText):
(WebCore::Editor::pasteAsQuotation):
(WebCore::Editor::copyURL):
(WebCore::Editor::copyImage):

  • editing/EditorCommand.cpp:

(WebCore::executePasteGlobalSelection):

  • editing/mac/EditorMac.mm:

(WebCore::Editor::readSelectionFromPasteboard):
(WebCore::Editor::replaceNodeFromPasteboard):

  • inspector/CommandLineAPIHost.cpp:

(WebCore::CommandLineAPIHost::copyText):

  • inspector/InspectorFrontendHost.cpp:

(WebCore::InspectorFrontendHost::copyText):

  • page/DragController.cpp:

(WebCore::documentFragmentFromDragData):
(WebCore::DragController::dragExited):
(WebCore::DragController::performDragOperation):
(WebCore::DragController::tryDHTMLDrag):
(WebCore::DragController::tryToUpdateDroppedImagePlaceholders):

  • page/EventHandler.cpp:

(WebCore::EventHandler::handleDrag):

  • page/PagePasteboardContext.h: Added.

Add PagePasteboardContext, a PasteboardContext subclass that contains a PageIdentifier indicating which
Page is requesting pasteboard access.

(isType):

  • platform/DragData.cpp:

(WebCore::DragData::DragData):
(WebCore::DragData::createPasteboardContext const):

Also plumb a PageIdentifier through DragData, and use it to implement a helper method that returns a context
object for Pasteboard.

  • platform/DragData.h:

Additionally make operator= platform-agnostic, instead of limited to GTK. (It isn't clear why this needs to be
limited to the GTK port).

(WebCore::DragData::DragData):
(WebCore::DragData::pageID const):

  • platform/Pasteboard.h:

Augment Pasteboard's (numerous) platform-specific constructors to take in a PasteboardContext unique
pointer as well, and store it in m_context.

(WebCore::Pasteboard::Pasteboard):
(WebCore::Pasteboard::context const):

  • platform/PasteboardContext.h: Added.

Add PasteboardContext, which provides additional context for an arbitrary pasteboard operation in an opaque
fashion. See PagePasteboardContext above.

(WebCore::PasteboardContext::isPagePasteboardContext const):

  • platform/StaticPasteboard.cpp:

(WebCore::StaticPasteboard::StaticPasteboard):

  • platform/cocoa/DragDataCocoa.mm:

(WebCore::DragData::DragData):
(WebCore::DragData::canSmartReplace const):
(WebCore::DragData::asPlainText const):

  • platform/gtk/PasteboardGtk.cpp:

(WebCore::Pasteboard::createForCopyAndPaste):
(WebCore::Pasteboard::createForGlobalSelection):
(WebCore::Pasteboard::createForDragAndDrop):
(WebCore::Pasteboard::create):
(WebCore::Pasteboard::Pasteboard):

  • platform/ios/PasteboardIOS.mm:

(WebCore::Pasteboard::Pasteboard):
(WebCore::Pasteboard::createForDragAndDrop):
(WebCore::Pasteboard::create):
(WebCore::Pasteboard::createForCopyAndPaste):

  • platform/libwpe/PasteboardLibWPE.cpp:

(WebCore::Pasteboard::createForCopyAndPaste):
(WebCore::Pasteboard::Pasteboard):

  • platform/mac/PasteboardMac.mm:

(WebCore::Pasteboard::Pasteboard):
(WebCore::Pasteboard::createForCopyAndPaste):
(WebCore::Pasteboard::createForDragAndDrop):
(WebCore::Pasteboard::create):

  • platform/win/DragDataWin.cpp:

(WebCore::DragData::DragData):

  • platform/win/PasteboardWin.cpp:

(WebCore::Pasteboard::createForCopyAndPaste):
(WebCore::Pasteboard::createForDragAndDrop):
(WebCore::Pasteboard::create):
(WebCore::Pasteboard::Pasteboard):

Source/WebKit:

Update more DragData and Pasteboard initialization sites by passing in a PageIdentifier or
PasteboardContext, respectively. See WebCore ChangeLog for more details.

  • Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<DragData>::encode):
(IPC::ArgumentCoder<DragData>::decode):

  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::draggingEntered):
(WebKit::WebViewImpl::draggingUpdated):
(WebKit::WebViewImpl::draggingExited):

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView dragDataForDropSession:dragDestinationAction:]):

  • WebProcess/WebCoreSupport/gtk/WebEditorClientGtk.cpp:

(WebKit::WebEditorClient::updateGlobalSelection):

  • WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:

(WebKit::WebDragClient::declareAndWriteDragImage):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::performDragControllerAction):

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::performActionOnElement):

Source/WebKitLegacy/mac:

Create and pass in a PasteboardContext when creating a Pasteboard. See WebCore ChangeLog for more details.

  • WebCoreSupport/WebDragClient.mm:

(WebDragClient::declareAndWriteDragImage):

8:52 AM Changeset in webkit [273076] by weinig@apple.com
  • 2 edits in trunk/Source/WTF

Enable separated graphics layer experiments on internal variant
https://bugs.webkit.org/show_bug.cgi?id=222088

Reviewed by Dean Jackson.

  • wtf/PlatformEnableCocoa.h:
8:06 AM Changeset in webkit [273075] by achristensen@apple.com
  • 27 edits
    1 add in trunk

Add SPI for getting size of PDF document during printing
https://bugs.webkit.org/show_bug.cgi?id=222064
<rdar://problem/74370891>

Reviewed by Geoff Garen and Tim Horton.

Source/WebKit:

When printing a PDF, we want to know its page size. If the print is initiated by the web process (such as when window.print is called
or if the PDF contains JavaScript that tells the browser to print it) then we would like that information with the print request so we
don't have to ask the web process, which is hung waiting for a synchronous message reply. If the print is initiated by the UI process
(such as if the user prints from a menu or keyboard shortcut) then we need a way to ask what the size of a PDF is.

I reused the SPI in WKUIDelegatePrivate because it was only briefly adopted before we knew we needed this and then reverted.
I'm also adding an SPI way to get from a WKPageRef to a WKWebView so this can be adopted without redoing all of Safari.

Covered by API tests.

  • UIProcess/API/APIUIClient.h:

(API::UIClient::printFrame):

  • UIProcess/API/C/WKPage.cpp:

(WKPageSetPageUIClient):

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

(-[WKWebView _getPDFFirstPageSizeInFrame:completionHandler:]):

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/Cocoa/UIDelegate.h:
  • UIProcess/Cocoa/UIDelegate.mm:

(WebKit::UIDelegate::setDelegate):
(WebKit::UIDelegate::UIClient::printFrame):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::printFrame):
(WebKit::WebPageProxy::getPDFFirstPageSize):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • WebProcess/Plugins/PDF/PDFPlugin.h:
  • WebProcess/Plugins/PDF/PDFPlugin.mm:

(WebKit::PDFPlugin::pdfDocumentSizeForPrinting const):

  • WebProcess/Plugins/Plugin.cpp:

(WebKit::Plugin::pdfDocumentSizeForPrinting const):

  • WebProcess/Plugins/Plugin.h:
  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::print):

  • WebProcess/WebPage/Cocoa/WebPageCocoa.mm:

(WebKit::WebPage::getPDFFirstPageSize):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::getPDFFirstPageSize):

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

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit/test_print.pdf: Added.
  • TestWebKitAPI/Tests/WebKitCocoa/WKPDFView.mm:

(-[PrintUIDelegate _webView:printFrame:pdfFirstPageSize:completionHandler:]):
(-[PrintUIDelegate waitForPageSize]):
(-[PrintUIDelegate lastPrintedFrame]):
(TEST):

7:59 AM Changeset in webkit [273074] by commit-queue@webkit.org
  • 15 edits in trunk/Source/WebKit

ThreadMessageReceiverRefCounted subclasses are accessed in non-thread-safe way
https://bugs.webkit.org/show_bug.cgi?id=221891

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2021-02-18
Reviewed by Chris Dumez.

For each ThreadMessageReceiverRefCounted subclass, remove calls
to Connection::addThreadMessageReceiver() from the constructor.
The calls pass 'this' as the ThreadMessageReceiver*. If the
connection tries to dispatch a message during the constructor, this
results in some or all of below:

  • non-thread-safe read of mutated virtual function pointer
  • call to incorrect member function, mostly to MessageReceiver::didReceiveMessage
  • an assert from above
  • skipped message

For each ThreadMessageReceiverRefCounted subclass, remove calls
to Connection::removeThreadMessageReceiver() from the destructor.
The message receive destination is still active during destructor,
so Connection might dispatch new message tasks during that time.
This causes ref of the instance already being destroyed, which
then causes the tasks to use deleted instance and then later
deleting it again.

Does not try to fix any other potential thread-related issues in
the modified areas.

  • GPUProcess/webrtc/RemoteAudioMediaStreamTrackRendererManager.cpp:

(WebKit::RemoteAudioMediaStreamTrackRendererManager::RemoteAudioMediaStreamTrackRendererManager):
(WebKit::RemoteAudioMediaStreamTrackRendererManager::startListeningForIPC):
(WebKit::RemoteAudioMediaStreamTrackRendererManager::close):

  • GPUProcess/webrtc/RemoteAudioMediaStreamTrackRendererManager.h:
  • GPUProcess/webrtc/RemoteSampleBufferDisplayLayerManager.cpp:

(WebKit::RemoteSampleBufferDisplayLayerManager::RemoteSampleBufferDisplayLayerManager):
(WebKit::RemoteSampleBufferDisplayLayerManager::startListeningForIPC):
(WebKit::RemoteSampleBufferDisplayLayerManager::close):

  • GPUProcess/webrtc/RemoteSampleBufferDisplayLayerManager.h:
  • NetworkProcess/webrtc/NetworkRTCProvider.cpp:

(WebKit::NetworkRTCProvider::NetworkRTCProvider):
(WebKit::NetworkRTCProvider::startListeningForIPC):

  • NetworkProcess/webrtc/NetworkRTCProvider.h:

(WebKit::NetworkRTCProvider::create):

  • WebProcess/GPU/webrtc/LibWebRTCCodecs.cpp:

(WebKit::LibWebRTCCodecs::LibWebRTCCodecs):
(WebKit::LibWebRTCCodecs::startListeningForIPC):
(WebKit::LibWebRTCCodecs::~LibWebRTCCodecs):
(WebKit::LibWebRTCCodecs::gpuProcessConnectionDidClose):

  • WebProcess/GPU/webrtc/LibWebRTCCodecs.h:

(WebKit::LibWebRTCCodecs::create):

  • WebProcess/Network/webrtc/LibWebRTCNetwork.cpp:

(WebKit::LibWebRTCNetwork::~LibWebRTCNetwork):

  • WebProcess/Network/webrtc/LibWebRTCNetwork.h:
  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::libWebRTCCodecs):

  • WebProcess/cocoa/RemoteCaptureSampleManager.cpp:

(WebKit::RemoteCaptureSampleManager::~RemoteCaptureSampleManager):
(WebKit::RemoteCaptureSampleManager::stopListeningForIPC):

  • WebProcess/cocoa/RemoteCaptureSampleManager.h:
  • WebProcess/cocoa/UserMediaCaptureManager.cpp:

(WebKit::UserMediaCaptureManager::~UserMediaCaptureManager):

  • WebProcess/glib/UserMediaCaptureManager.cpp:

(WebKit::UserMediaCaptureManager::~UserMediaCaptureManager):

4:02 AM Changeset in webkit [273073] by commit-queue@webkit.org
  • 7 edits
    1 delete in trunk

LayoutTests/imported/w3c:
Root scroll snapping broken overflow:scroll is set on the <body>
https://bugs.webkit.org/show_bug.cgi?id=221407

Patch by Martin Robinson <mrobinson@igalia.com> on 2021-02-18
Reviewed by Simon Fraser.

  • web-platform-tests/css/css-scroll-snap/scrollTo-scrollBy-snaps-expected.txt:

Source/WebCore:
Root scroll snapping broken overflow:scroll is set on the <body>
https://bugs.webkit.org/show_bug.cgi?id=221407

Patch by Martin Robinson <mrobinson@igalia.com> on 2021-02-18
Reviewed by Simon Fraser.

No new tests. This change fixes the WPT test:
imported/w3c/web-platform-tests/css/css-scroll-snap/scrollTo-scrollBy-snaps.html

Instead of walking up the render tree to find the containing element, be sure to
walk up the containing block chain. This will prevent WebKit from using the wrong
scrolling container for positioned elements that snap.

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::findEnclosingScrollableContainerForSnapping const): Deleted.

  • rendering/RenderBox.h: Remove method definition.
  • rendering/RenderObject.cpp:

(WebCore::RenderObject::enclosingScrollableContainerForSnapping const): Find the
scrolling container respecting the containing block chain. Never consider the
RenderView as a containing block. Although this element has a scroll area
and looks scrollable, it's a historical artifact and the real scroll container
is the FrameView.

LayoutTests:
Root scroll snapping broken when overflow:scroll is set on the <body>
https://bugs.webkit.org/show_bug.cgi?id=221407

Patch by Martin Robinson <mrobinson@igalia.com> on 2021-02-18
Reviewed by Simon Fraser.

  • platform/ios-wk2/imported/w3c/web-platform-tests/css/css-scroll-snap/scrollTo-scrollBy-snaps-expected.txt: Removed.

This baseline no longer differs between platforms.

1:58 AM Changeset in webkit [273072] by svillar@igalia.com
  • 12 edits in trunk

[css-flex] Implement section 9.8 Definite and Indefinite Sizes case 1
https://bugs.webkit.org/show_bug.cgi?id=219538
<rdar://problem/72136484>

Reviewed by Manuel Rego Casasnovas.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-flexbox/flex-aspect-ratio-img-row-013-expected.txt: Replaced FAIL by PASS expectations.
  • web-platform-tests/css/css-flexbox/image-as-flexitem-size-003-expected.txt: Ditto.
  • web-platform-tests/css/css-flexbox/image-as-flexitem-size-003v-expected.txt: Ditto.
  • web-platform-tests/css/css-flexbox/image-as-flexitem-size-004-expected.txt: Ditto.
  • web-platform-tests/css/css-flexbox/image-as-flexitem-size-004v-expected.txt: Ditto.
  • web-platform-tests/css/css-sizing/percentage-height-in-flexbox.html: Updated expectation. Still failing.

Source/WebCore:

If a single-line flex container has a definite cross size, the automatic preferred outer cross size
of any stretched flex items is the flex container's inner cross size (clamped to the flex item's
min and max cross size) and is considered definite. Before that we were considering all automatic
sizes as indefinite (see https://drafts.csswg.org/css-flexbox/#definite-sizes).

This patch does not consider all the cases where the container cross size is definite but just when
that size is fixed. Support for additional cases should be added in followup patches.

This change unveiled an implementation mistake when computing content sizes for the min-size:auto case.
In those cases we were always calling computeMainAxisExtentForChild() but that does not take into
account the aspect ratio, that's why we added an additional code path which computes the content
size using computeMainSizeFromAspectRatioUsing() instead.

This fixes 8 full tests plus 24 subtests in some other flexbox aspect ratio tests from the WPT suite.

  • rendering/RenderFlexibleBox.cpp:

(WebCore::RenderFlexibleBox::useChildAspectRatio const): Use ternary operator to simplify code.
(WebCore::RenderFlexibleBox::computeMainSizeFromAspectRatioUsing const): Resolve child size to container's
size if childCrossSizeShouldUseContainerCrossSize().
(WebCore::RenderFlexibleBox::childCrossSizeShouldUseContainerCrossSize const): New method implementing
section 9.8.1 of the specs.
(WebCore::RenderFlexibleBox::childCrossSizeIsDefinite const):
(WebCore::RenderFlexibleBox::computeInnerFlexBaseSizeForChild): Use aspect ratio to compute cross size
also if childCrossSizeShouldUseContainerCrossSize().
(WebCore::RenderFlexibleBox::adjustChildSizeForMinAndMax): Use aspect ratio specific code to compute
content size if aspect ratio should be used for child.
(WebCore::RenderFlexibleBox::adjustChildSizeForAspectRatioCrossAxisMinAndMax):

  • rendering/RenderFlexibleBox.h:

LayoutTests:

12:53 AM Changeset in webkit [273071] by youenn@apple.com
  • 5 edits in trunk

[GPUP] Test webrtc/audio-video-element-playing.html fails when media in GPU Process is enabled
https://bugs.webkit.org/show_bug.cgi?id=221844
<rdar://problem/74388532>

Reviewed by Eric Carlson.

Source/WebCore:

Move from Clock to MonotonicTime since we do not need high precision anyway for MediaPlayerPrivateMediaStreamAVFObjC.
This allows not requiring access to the underlying coreaudio clock.
Covered by updated test.

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

(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::MediaPlayerPrivateMediaStreamAVFObjC):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::play):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::currentMediaTime const):

LayoutTests:

  • webrtc/audio-video-element-playing.html:
12:49 AM Changeset in webkit [273070] by commit-queue@webkit.org
  • 12 edits in trunk

[GTK][WPE] Implement support for CSS Scroll Snap
https://bugs.webkit.org/show_bug.cgi?id=203684

Patch by Martin Robinson <mrobinson@igalia.com> on 2021-02-18
Reviewed by Carlos Garcia Campos.

.:

Add initial support for css-scroll-snap on WebKitGTK+ and WebKitWPE. This
adds support for all types of scroll snapping that WebKit supports apart
from mouse wheel snapping. Support for that will be added in a followup
change.

  • Source/cmake/OptionsGTK.cmake: Enable scroll snapping when experimental features

are enabled.

  • Source/cmake/OptionsWPE.cmake: Ditto.

Source/WebCore:

No new tests. This change unskips all cross-platform scroll-snap tests
on both platforms.

  • Headers.cmake: Add headers to header list.
  • page/scrolling/ScrollSnapOffsetsInfo.cpp:

(WebCore::findFirstSnapStopOffsetBetweenOriginAndDestination): Fix a compilation
warning that now shows up on my system.

  • platform/generic/ScrollAnimatorGeneric.cpp:

(WebCore::ScrollAnimatorGeneric::scroll): Pass the 'behavior' parameter to
the superclass call.
(WebCore::ScrollAnimatorGeneric::scrollToOffsetWithoutAnimation): Call into the super
class to update the position instead of using the special method in the subclass.
(WebCore::ScrollAnimatorGeneric::updatePosition): Also update the current snap index.
This is necessary so that changes to the scroll position also modify the currently
target snap index.

LayoutTests:

  • css3/scroll-snap/scroll-padding-mainframe-paging.html: Since the GTK+ port has

animated scrolling, we need to modify this test to support a scroll operation
that does not happen immediately.

  • platform/gtk/TestExpectations: Unskip scroll snap tests.
  • platform/wpe/TestExpectations: Ditto.
  • resources/ui-helper.js:

(window.UIHelper.waitForTargetScrollAnimationToSettle): Added a new helper that
uses rAF to detect when an animated scroll operation has finished. This is the
same strategy that the WPT tests use to detect this.

12:43 AM Changeset in webkit [273069] by youenn@apple.com
  • 2 edits in trunk/Source/WebCore

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

12:38 AM Changeset in webkit [273068] by commit-queue@webkit.org
  • 5 edits in trunk

Treat <ratio> that ends with forward slash as invalid
https://bugs.webkit.org/show_bug.cgi?id=221978

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

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-sizing/aspect-ratio/parsing/aspect-ratio-invalid-expected.txt:
  • web-platform-tests/css/css-sizing/aspect-ratio/parsing/aspect-ratio-invalid.html:

Source/WebCore:

Treat <ratio> that ends with forward slash as invalid:
https://drafts.csswg.org/css-values-4/#ratio-value

Test: imported/w3c/web-platform-tests/css/css-sizing/aspect-ratio/parsing/aspect-ratio-invalid.html

  • css/parser/CSSPropertyParser.cpp:

(WebCore::consumeAspectRatio):

12:04 AM Changeset in webkit [273067] by graouts@webkit.org
  • 8 edits
    1 add in trunk

Page updates and rAF callbacks should run at a frequency close to 60Hz on high refresh-rate displays
https://bugs.webkit.org/show_bug.cgi?id=221673
<rdar://problem/72398605>

Reviewed by Simon Fraser.

Source/WebCore:

Up to now, page rendering updates, which can, for instance, be triggered by registering a requestAnimationFrame()
callback or having CSS Animations, CSS Transitions or Web Animations running non-accelerated, would be triggered
at the current display's refresh rate on macOS, and 60fps on iOS.

For instance, this meant that plugging in a 144Hz display on a Mac would attempt to update the page rendering at
144fps. We think it's better, for Web compatibility reasons, to try to use a page rendering update cadence that
is as close to 60fps as possible while matching a display update. This means finding the whole multiple for which
the interval between frames would be as close to that for 60Hz.

Using the 144Hz case again, this means we would shoot for 72fps, since the refresh interval for 72fps is nearest
that at 60fps than that at 48fps (another multiple of 144).

In the case where the internal preference to control whether the refresh rate for page rendering updates is
forced to 60fps, which defaults to false, we pass in the page's "nominal refresh rate" to preferredFrameInterval().
If that rate is 60fps, we use the same rate and intervals as we always have. If that rate is less than 60fps, we
use that rate as-is.

  • dom/ScriptedAnimationController.cpp:

(WebCore::ScriptedAnimationController::preferredScriptedAnimationInterval const):

  • page/Page.cpp:

(WebCore::Page::preferredRenderingUpdateInterval const):

  • platform/graphics/AnimationFrameRate.h:

(WebCore::framesPerSecondNearestFullSpeed):
(WebCore::preferredFrameInterval):
(WebCore::preferredFramesPerSecond):

Source/WTF:

Add a new internal preference to force the refresh rate for page rendering updates to 60fps
rather than use the display's refresh rate. This setting defaults to false.

  • Scripts/Preferences/WebPreferencesInternal.yaml:

Tools:

Add API tests for the methods in AnimationFrameRate.h.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebCore/AnimationFrameRate.cpp: Added.
Note: See TracTimeline for information about the timeline view.