WebKit-https.git
11 months agoTest gardening for [CSS Blending] Non-separable blend modes don't work
jonlee@apple.com [Sun, 20 Feb 2022 04:35:37 +0000 (04:35 +0000)]
Test gardening for [CSS Blending] Non-separable blend modes don't work
https://bugs.webkit.org/show_bug.cgi?id=131354

LayoutTests/imported/mozilla:

Unreviewed. Add fuzzy data.
* svg/blend-color.svg:
* svg/blend-hue.svg:
* svg/blend-luminosity.svg:

LayoutTests:

Unreviewed.
* TestExpectations:

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

11 months agomacCatalyst: WKWebView crashes whenever the view frame changes
timothy_horton@apple.com [Sun, 20 Feb 2022 01:42:23 +0000 (01:42 +0000)]
macCatalyst: WKWebView crashes whenever the view frame changes
https://bugs.webkit.org/show_bug.cgi?id=236887
<rdar://problem/89182039>

Reviewed by Chris Dumez.

* UIProcess/API/ios/WKWebViewIOS.mm:
(-[WKWebView _acquireResizeAssertionForReason:]):
Add a respondsToSelector check.

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

11 months agoSet custom general storage directory for custom WebsiteDataStore in TestController
sihui_liu@apple.com [Sun, 20 Feb 2022 01:34:27 +0000 (01:34 +0000)]
Set custom general storage directory for custom WebsiteDataStore in TestController
https://bugs.webkit.org/show_bug.cgi?id=236893

Reviewed by Chris Dumez.

If we don't set custom generalStorageDirectory for a custom WebsiteDataStore, it will use the same path as the
default WebsiteDataStore. That means when WebKitTestRunner creates multiple WebsiteDataStores (it may create
mutliple TestControllers to run tests in parallel), the directory will be accessed concurrently and data can be
corrupted.

* WebKitTestRunner/TestController.cpp:
(WTR::TestController::configureWebsiteDataStoreTemporaryDirectories):

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

11 months ago[Re-landing] Provide a WebCore subspaceImplFor template to make code more readable.
mark.lam@apple.com [Sat, 19 Feb 2022 23:05:53 +0000 (23:05 +0000)]
[Re-landing] Provide a WebCore subspaceImplFor template to make code more readable.
https://bugs.webkit.org/show_bug.cgi?id=236868
rdar://problem/89170090

Reviewed by Yusuke Suzuki.

The pre-existing code is difficult to follow, especially in CodeGeneratorJS.pm.
This change also consolidates the framework implementation of subspaceForImpl in
one place rather than scattered across 3 locations.  This will make it easier to
change this code in the future.

Also introduced ExtendedDOMIsoSubspace and ExtendedDOMClientIsoSubspaces classes
and moved the FileSystemDirectoryHandleIterator subspaces in there.  This makes
the code behave more consistently for FileSystemDirectoryHandleIterator's
IsoSubspace as for other IsoSubspaces.

Also rebased bindings test results.

* WebCore.xcodeproj/project.pbxproj:
* bindings/js/ExtendedDOMClientIsoSubspaces.h: Added.
* bindings/js/ExtendedDOMIsoSubspaces.h: Added.
* bindings/js/JSFileSystemDirectoryHandleIterator.cpp:
(WebCore::JSFileSystemDirectoryHandleIterator::subspaceForImpl):
* bindings/js/WebCoreJSClientData.cpp:
(WebCore::JSHeapData::JSHeapData):
(WebCore::JSVMClientData::JSVMClientData):
* bindings/js/WebCoreJSClientData.h:
(WebCore::JSHeapData::subspaces):
(WebCore::JSVMClientData::idbSerializationSpace):
(WebCore::JSVMClientData::clientSubspaces):
(WebCore::subspaceForImpl):
(WebCore::JSHeapData::fileSystemDirectoryHandleIteratorSpace): Deleted.
(WebCore::JSHeapData::setFileSystemDirectoryHandleIteratorSpace): Deleted.
(WebCore::JSVMClientData::fileSystemDirectoryHandleIteratorSpace): Deleted.
(WebCore::JSVMClientData::setFileSystemDirectoryHandleIteratorSpace): Deleted.
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateImplementation):
(GenerateIterableDefinition):
* bindings/scripts/test/JS/JSDOMWindow.cpp:
(WebCore::JSDOMWindow::subspaceForImpl):
* bindings/scripts/test/JS/JSDedicatedWorkerGlobalScope.cpp:
(WebCore::JSDedicatedWorkerGlobalScope::subspaceForImpl):
* bindings/scripts/test/JS/JSExposedStar.cpp:
(WebCore::JSExposedStar::subspaceForImpl):
* bindings/scripts/test/JS/JSExposedToWorkerAndWindow.cpp:
(WebCore::JSExposedToWorkerAndWindow::subspaceForImpl):
* bindings/scripts/test/JS/JSPaintWorkletGlobalScope.cpp:
(WebCore::JSPaintWorkletGlobalScope::subspaceForImpl):
* bindings/scripts/test/JS/JSServiceWorkerGlobalScope.cpp:
(WebCore::JSServiceWorkerGlobalScope::subspaceForImpl):
* bindings/scripts/test/JS/JSShadowRealmGlobalScope.cpp:
(WebCore::JSShadowRealmGlobalScope::subspaceForImpl):
* bindings/scripts/test/JS/JSSharedWorkerGlobalScope.cpp:
(WebCore::JSSharedWorkerGlobalScope::subspaceForImpl):
* bindings/scripts/test/JS/JSTestCEReactions.cpp:
(WebCore::JSTestCEReactions::subspaceForImpl):
* bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp:
(WebCore::JSTestCEReactionsStringifier::subspaceForImpl):
* bindings/scripts/test/JS/JSTestCallTracer.cpp:
(WebCore::JSTestCallTracer::subspaceForImpl):
* bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp:
(WebCore::JSTestClassWithJSBuiltinConstructor::subspaceForImpl):
* bindings/scripts/test/JS/JSTestConditionalIncludes.cpp:
(WebCore::JSTestConditionalIncludes::subspaceForImpl):
* bindings/scripts/test/JS/JSTestConditionallyReadWrite.cpp:
(WebCore::JSTestConditionallyReadWrite::subspaceForImpl):
* bindings/scripts/test/JS/JSTestDOMJIT.cpp:
(WebCore::JSTestDOMJIT::subspaceForImpl):
* bindings/scripts/test/JS/JSTestDefaultToJSON.cpp:
(WebCore::JSTestDefaultToJSON::subspaceForImpl):
* bindings/scripts/test/JS/JSTestDefaultToJSONFilteredByExposed.cpp:
(WebCore::JSTestDefaultToJSONFilteredByExposed::subspaceForImpl):
* 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/JSTestDelegateToSharedSyntheticAttribute.cpp:
(WebCore::JSTestDelegateToSharedSyntheticAttribute::subspaceForImpl):
* bindings/scripts/test/JS/JSTestDomainSecurity.cpp:
(WebCore::JSTestDomainSecurity::subspaceForImpl):
* bindings/scripts/test/JS/JSTestEnabledBySetting.cpp:
(WebCore::JSTestEnabledBySetting::subspaceForImpl):
* bindings/scripts/test/JS/JSTestEnabledForContext.cpp:
(WebCore::JSTestEnabledForContext::subspaceForImpl):
* 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):
* bindings/scripts/test/JS/JSTestGenerateAddOpaqueRoot.cpp:
(WebCore::JSTestGenerateAddOpaqueRoot::subspaceForImpl):
* bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp:
(WebCore::JSTestGenerateIsReachable::subspaceForImpl):
* bindings/scripts/test/JS/JSTestGlobalObject.cpp:
(WebCore::JSTestGlobalObject::subspaceForImpl):
* bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp:
(WebCore::JSTestIndexedSetterNoIdentifier::subspaceForImpl):
* bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp:
(WebCore::JSTestIndexedSetterThrowingException::subspaceForImpl):
* bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp:
(WebCore::JSTestIndexedSetterWithIdentifier::subspaceForImpl):
* bindings/scripts/test/JS/JSTestInterface.cpp:
(WebCore::jsTestInterfacePrototypeFunction_entriesCaller):
(WebCore::JSTestInterface::subspaceForImpl):
* bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp:
(WebCore::JSTestInterfaceLeadingUnderscore::subspaceForImpl):
* bindings/scripts/test/JS/JSTestIterable.cpp:
(WebCore::jsTestIterablePrototypeFunction_entriesCaller):
(WebCore::JSTestIterable::subspaceForImpl):
* bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp:
(WebCore::JSTestJSBuiltinConstructor::subspaceForImpl):
* bindings/scripts/test/JS/JSTestLegacyFactoryFunction.cpp:
(WebCore::JSTestLegacyFactoryFunction::subspaceForImpl):
* bindings/scripts/test/JS/JSTestLegacyNoInterfaceObject.cpp:
(WebCore::JSTestLegacyNoInterfaceObject::subspaceForImpl):
* bindings/scripts/test/JS/JSTestLegacyOverrideBuiltIns.cpp:
(WebCore::JSTestLegacyOverrideBuiltIns::subspaceForImpl):
* bindings/scripts/test/JS/JSTestMapLike.cpp:
(WebCore::JSTestMapLike::subspaceForImpl):
* bindings/scripts/test/JS/JSTestMapLikeWithOverriddenOperations.cpp:
(WebCore::JSTestMapLikeWithOverriddenOperations::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp:
(WebCore::JSTestNamedAndIndexedSetterNoIdentifier::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp:
(WebCore::JSTestNamedAndIndexedSetterThrowingException::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp:
(WebCore::JSTestNamedAndIndexedSetterWithIdentifier::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp:
(WebCore::JSTestNamedDeleterNoIdentifier::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp:
(WebCore::JSTestNamedDeleterThrowingException::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp:
(WebCore::JSTestNamedDeleterWithIdentifier::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp:
(WebCore::JSTestNamedDeleterWithIndexedGetter::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedGetterCallWith.cpp:
(WebCore::JSTestNamedGetterCallWith::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.cpp:
(WebCore::JSTestNamedGetterNoIdentifier::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.cpp:
(WebCore::JSTestNamedGetterWithIdentifier::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp:
(WebCore::JSTestNamedSetterNoIdentifier::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp:
(WebCore::JSTestNamedSetterThrowingException::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp:
(WebCore::JSTestNamedSetterWithIdentifier::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp:
(WebCore::JSTestNamedSetterWithIndexedGetter::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp:
(WebCore::JSTestNamedSetterWithIndexedGetterAndSetter::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedSetterWithLegacyOverrideBuiltIns.cpp:
(WebCore::JSTestNamedSetterWithLegacyOverrideBuiltIns::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedSetterWithLegacyUnforgeableProperties.cpp:
(WebCore::JSTestNamedSetterWithLegacyUnforgeableProperties::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns.cpp:
(WebCore::JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamespaceObject.cpp:
(WebCore::JSTestNamespaceObject::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNode.cpp:
(WebCore::jsTestNodePrototypeFunction_entriesCaller):
(WebCore::JSTestNode::subspaceForImpl):
* bindings/scripts/test/JS/JSTestObj.cpp:
(WebCore::JSTestObj::subspaceForImpl):
* bindings/scripts/test/JS/JSTestOperationConditional.cpp:
(WebCore::JSTestOperationConditional::subspaceForImpl):
* bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp:
(WebCore::JSTestOverloadedConstructors::subspaceForImpl):
* bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp:
(WebCore::JSTestOverloadedConstructorsWithSequence::subspaceForImpl):
* bindings/scripts/test/JS/JSTestPluginInterface.cpp:
(WebCore::JSTestPluginInterface::subspaceForImpl):
* bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp:
(WebCore::JSTestPromiseRejectionEvent::subspaceForImpl):
* bindings/scripts/test/JS/JSTestReadOnlyMapLike.cpp:
(WebCore::JSTestReadOnlyMapLike::subspaceForImpl):
* bindings/scripts/test/JS/JSTestReadOnlySetLike.cpp:
(WebCore::JSTestReadOnlySetLike::subspaceForImpl):
* bindings/scripts/test/JS/JSTestReportExtraMemoryCost.cpp:
(WebCore::JSTestReportExtraMemoryCost::subspaceForImpl):
* bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:
(WebCore::JSTestSerializedScriptValueInterface::subspaceForImpl):
* bindings/scripts/test/JS/JSTestSetLike.cpp:
(WebCore::JSTestSetLike::subspaceForImpl):
* bindings/scripts/test/JS/JSTestSetLikeWithOverriddenOperations.cpp:
(WebCore::JSTestSetLikeWithOverriddenOperations::subspaceForImpl):
* bindings/scripts/test/JS/JSTestStringifier.cpp:
(WebCore::JSTestStringifier::subspaceForImpl):
* bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.cpp:
(WebCore::JSTestStringifierAnonymousOperation::subspaceForImpl):
* bindings/scripts/test/JS/JSTestStringifierNamedOperation.cpp:
(WebCore::JSTestStringifierNamedOperation::subspaceForImpl):
* bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.cpp:
(WebCore::JSTestStringifierOperationImplementedAs::subspaceForImpl):
* bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.cpp:
(WebCore::JSTestStringifierOperationNamedToString::subspaceForImpl):
* bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.cpp:
(WebCore::JSTestStringifierReadOnlyAttribute::subspaceForImpl):
* bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.cpp:
(WebCore::JSTestStringifierReadWriteAttribute::subspaceForImpl):
* bindings/scripts/test/JS/JSTestTaggedWrapper.cpp:
(WebCore::JSTestTaggedWrapper::subspaceForImpl):
* bindings/scripts/test/JS/JSTestTypedefs.cpp:
(WebCore::JSTestTypedefs::subspaceForImpl):
* bindings/scripts/test/JS/JSWorkerGlobalScope.cpp:
(WebCore::JSWorkerGlobalScope::subspaceForImpl):
* bindings/scripts/test/JS/JSWorkletGlobalScope.cpp:
(WebCore::JSWorkletGlobalScope::subspaceForImpl):

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

11 months agoUnreviewed, reverting r290196.
cdumez@apple.com [Sat, 19 Feb 2022 21:42:51 +0000 (21:42 +0000)]
Unreviewed, reverting r290196.

Caused Network Process crashes <rdar://89190571>

Reverted changeset:

"Add assertion that no two network sessions share the same
storage path"
https://bugs.webkit.org/show_bug.cgi?id=236844
https://commits.webkit.org/r290196

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

11 months agoUnreviewed, reverting r290194 and r290210.
commit-queue@webkit.org [Sat, 19 Feb 2022 21:16:01 +0000 (21:16 +0000)]
Unreviewed, reverting r290194 and r290210.
https://bugs.webkit.org/show_bug.cgi?id=236890

debug crash

Reverted changesets:

"[JSC] Make ArrayPrototype just an array"
https://bugs.webkit.org/show_bug.cgi?id=236869
https://commits.webkit.org/r290194

"Unreviewed, use ArrayWithUndecided in ArrayPrototype"
https://bugs.webkit.org/show_bug.cgi?id=236869
https://commits.webkit.org/r290210

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

11 months agoUnreviewed, fix the internal iOS build after r290154
wenson_hsieh@apple.com [Sat, 19 Feb 2022 21:02:42 +0000 (21:02 +0000)]
Unreviewed, fix the internal iOS build after r290154

`-[ASCAgentProtocol performAutoFillAuthorizationRequestsForContext:]` only exists on macOS and Catalyst; as
such, this call site needs to be guarded for those platforms.

* UIProcess/WebAuthentication/Cocoa/WebAuthenticatorCoordinatorProxy.mm:
(WebKit::WebAuthenticatorCoordinatorProxy::performRequest):

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

11 months ago[macOS] Hovering over "Copy Cropped Image" context menu item should reveal the croppe...
wenson_hsieh@apple.com [Sat, 19 Feb 2022 19:24:02 +0000 (19:24 +0000)]
[macOS] Hovering over "Copy Cropped Image" context menu item should reveal the cropped image
https://bugs.webkit.org/show_bug.cgi?id=236845
rdar://89152746

Reviewed by Dean Jackson.

Add support for revealing the "cropped" region of an image element (while dimming out the rest of the image)
when the user highlights the new "Copy Cropped Image" context menu item on macOS. See below for more details.

* Platform/cocoa/TextRecognitionUtilities.h:

Adjust `requestImageAnalysisMarkup` to take a completion handler with both the resulting CGImageRef, as well as
a CGRect that represents the frame of the cropped image with respect to the source image, normalized to the unit
square. Additionally, tweak all call sites of `requestImageAnalysisMarkup` to pass in completion handlers that
accept both arguments.

* Shared/ContextMenuContextData.cpp:
(WebKit::ContextMenuContextData::ContextMenuContextData):
(WebKit::ContextMenuContextData::encode const):
(WebKit::ContextMenuContextData::decode):
* Shared/ContextMenuContextData.h:
(WebKit::ContextMenuContextData::hitTestedElementContext const):

Add an optional ElementContext representing the inner hit-tested element for the context menu. We use this below
in `WebPageProxy::willHighlightContextMenuItem` to know where we need to install the cropped image overlay.

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::didDismissContextMenu):

Reset the cached cropped image result as well as the cropped image overlay state when the context menu is
dismissed.

(WebKit::WebPageProxy::resetStateAfterProcessExited):

Also clear the above state if the process crashes.

* UIProcess/WebPageProxy.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView doAfterComputingImageAnalysisResultsForMarkup:]):
(-[WKContentView actionSheetAssistant:copyCroppedImage:sourceMIMEType:]):
* UIProcess/mac/WebContextMenuProxyMac.mm:
(-[WKMenuDelegate menu:willHighlightItem:]):

Implement this NSMenu delegate method and call out to WebPageProxy whenever the highlighted context menu item
changes. See below for more details.

(WebKit::WebContextMenuProxyMac::applyMarkupToControlledImage):
* UIProcess/mac/WebPageProxyMac.mm:
(WebKit::WebPageProxy::willHighlightContextMenuItem):

This method coordinates showing or hiding the cropped image overlay when the user highlights (but does not yet
select) the "Copy Cropped Image" context menu item. When the user first highlights this item, we trigger an
analysis request in VisionKit; when we later obtain the results, we send the image to the web process as TIFF
data, and inject it into the image using `ImageOverlay::CroppedImage::install`. Un-highlighting and re-
highlighting the menu item then respectively hides and shows the cropped image overlay by setting visibility.

(WebKit::WebPageProxy::handleContextMenuCopyCroppedImage):

Adjust this to use the cached `m_croppedImageResult` if it has already been computed.

* WebProcess/WebPage/WebContextMenu.cpp:
(WebKit::WebContextMenu::show):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::didDismissContextMenu):

Destroy the `m_croppedImageOverlay` after the context menu is dismissed (which uninstalls the cropped image
overlay in the process).

(WebKit::WebPage::installCroppedImageOverlay):
(WebKit::WebPage::setCroppedImageOverlayVisibility):

Add methods to install and toggle the visibility of the cropped image overlay.

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

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

11 months agoUnreviewed, use ArrayWithUndecided in ArrayPrototype
ysuzuki@apple.com [Sat, 19 Feb 2022 17:51:44 +0000 (17:51 +0000)]
Unreviewed, use ArrayWithUndecided in ArrayPrototype
https://bugs.webkit.org/show_bug.cgi?id=236869

JSTests:

* stress/array-prototype-concat.js: Added.

Source/JavaScriptCore:

* runtime/ArrayPrototype.h:

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

11 months ago[JSC] Implement Temporal.PlainDate
dino@apple.com [Sat, 19 Feb 2022 17:43:14 +0000 (17:43 +0000)]
[JSC] Implement Temporal.PlainDate
https://bugs.webkit.org/show_bug.cgi?id=230033
<rdar://problem/83127747>

Reviewed by Yusuke Suzuki.

JSTests:

Some basic tests for PlainDate.

* stress/temporal-plaindate.js: Added.
(shouldBe):
(shouldThrow):
(shouldBe.String.Temporal.PlainDate.from):
(let.text.of.failures.shouldThrow):

Source/JavaScriptCore:

Implement the constructor, `from` and `compare` for Temporal.PlainDate.
This is only a partial implementation, because `from` doesn't
support object parameters, and the `compare` function creates some
internally. However, it is a start!

* DerivedSources-input.xcfilelist: Add new files.
* DerivedSources-output.xcfilelist:
* DerivedSources.make:
* JavaScriptCore.xcodeproj/project.pbxproj:
* Sources.txt:

* heap/Heap.cpp: Create the temporalPlainDateSpace.
* heap/Heap.h:
* heap/HeapSubspaceTypes.h:

* runtime/ISO8601.cpp:
(JSC::ISO8601::daysInMonth): Make this publicly visible.
(JSC::ISO8601::temporalDateToString): New method for printing a date.
* runtime/ISO8601.h:

* runtime/JSGlobalObject.cpp: Make the m_plainDateStructure object.
(JSC::JSGlobalObject::init):
* runtime/JSGlobalObject.h:
(JSC::JSGlobalObject::plainDateStructure):

* runtime/TemporalObject.cpp: Add the PlainDate constructor.
(JSC::createPlainDateConstructor):
* runtime/TemporalObject.h:

* runtime/TemporalPlainDate.cpp: Added.
(JSC::TemporalPlainDate::create):
(JSC::TemporalPlainDate::createStructure):
(JSC::TemporalPlainDate::TemporalPlainDate):
(JSC::TemporalPlainDate::finishCreation):
(JSC::TemporalPlainDate::visitChildrenImpl):
(JSC::toPlainDate):
(JSC::TemporalPlainDate::tryCreateIfValid):
(JSC::TemporalPlainDate::toString const):
(JSC::TemporalPlainDate::from):
(JSC::TemporalPlainDate::compare):
* runtime/TemporalPlainDate.h: Added.
* runtime/TemporalPlainDateConstructor.cpp: Added.
(JSC::TemporalPlainDateConstructor::create):
(JSC::TemporalPlainDateConstructor::createStructure):
(JSC::TemporalPlainDateConstructor::TemporalPlainDateConstructor):
(JSC::TemporalPlainDateConstructor::finishCreation):
(JSC::JSC_DEFINE_HOST_FUNCTION):
* runtime/TemporalPlainDateConstructor.h: Added.
* runtime/TemporalPlainDatePrototype.cpp: Added.
(JSC::TemporalPlainDatePrototype::create):
(JSC::TemporalPlainDatePrototype::createStructure):
(JSC::TemporalPlainDatePrototype::TemporalPlainDatePrototype):
(JSC::TemporalPlainDatePrototype::finishCreation):
(JSC::JSC_DEFINE_HOST_FUNCTION):
(JSC::JSC_DEFINE_CUSTOM_GETTER):
* runtime/TemporalPlainDatePrototype.h: Added.

* runtime/VM.h: Define the temporalPlainDateSpace.

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

11 months agoUnreviewed gardening for GPU Process bots.
jonlee@apple.com [Sat, 19 Feb 2022 17:31:44 +0000 (17:31 +0000)]
Unreviewed gardening for GPU Process bots.

LayoutTests/imported/mozilla:

* svg/blend-hard-light.svg:

LayoutTests:

* gpu-process/TestExpectations:
* platform/ios/TestExpectations:

* compositing/images/positioned-image-content-rect.html:
* compositing/overlap-blending/nested-overlap.html:
* css2.1/20110323/height-applies-to-010a.htm:
* fast/borders/border-radius-on-html.html:
* fast/replaced/ul-li-word-break-break-word.html:
* imported/blink/fast/scrolling/fractional-scroll-offset-iframe-fixed-position.html:

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

11 months ago[LFC][IFC] Add support for ideographic baseline with font fallback
zalan@apple.com [Sat, 19 Feb 2022 16:16:06 +0000 (16:16 +0000)]
[LFC][IFC] Add support for ideographic baseline with font fallback
https://bugs.webkit.org/show_bug.cgi?id=236872

Reviewed by Antti Koivisto.

Let's use the pre-collected fallback fonts to adjust the inline box layout bounds with their ideographic baselines.
This is in preparation for enabling vertical text.

* layout/formattingContexts/inline/InlineLineBoxBuilder.cpp:
(WebCore::Layout::LineBoxBuilder::adjustLayoutBoundsWithFallbackFonts const):
(WebCore::Layout::LineBoxBuilder::collectFallbackFonts):
(WebCore::Layout::LineBoxBuilder::constructInlineLevelBoxes):
(WebCore::Layout::LineBoxBuilder::adjustIdeographicBaselineIfApplicable):
* layout/formattingContexts/inline/InlineLineBoxBuilder.h:

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

11 months ago[WPE][GTK] Enable Thunder and remove old Clearkey CDM/Decryptor
commit-queue@webkit.org [Sat, 19 Feb 2022 14:45:45 +0000 (14:45 +0000)]
[WPE][GTK] Enable Thunder and remove old Clearkey CDM/Decryptor
https://bugs.webkit.org/show_bug.cgi?id=235492

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

.:

Enable Thunder in developer builds, this is now needed for the clearkey EME layout tests.

* Source/cmake/OptionsGTK.cmake:
* Source/cmake/OptionsWPE.cmake:

Source/WebCore:

The Thunder decryptor can now handle ClearKey payloads, as long as the underlying ocdm
library advertises it as supported. Thus the dedicated ClearKey decryptor is no longer
needed and can be removed.

Covered by existing EME ClearKey layout tests.

* platform/GStreamer.cmake:
* platform/graphics/gstreamer/GStreamerCommon.cpp:
(WebCore::registerWebKitGStreamerElements):
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
* platform/graphics/gstreamer/eme/CDMFactoryGStreamer.cpp:
(WebCore::CDMFactory::platformRegisterFactories):
* platform/graphics/gstreamer/eme/CDMProxyClearKey.cpp: Removed.
(): Deleted.
(WebCore::CDMProxyFactoryClearKey::singleton): Deleted.
(WebCore::CDMProxyFactoryClearKey::createCDMProxy): Deleted.
(WebCore::CDMProxyFactoryClearKey::supportsKeySystem): Deleted.
(WebCore::CDMProxyClearKey::~CDMProxyClearKey): Deleted.
(WebCore::CDMProxyClearKey::cencSetCounterVector): Deleted.
(WebCore::CDMProxyClearKey::cencSetDecryptionKey): Deleted.
(WebCore::CDMProxyClearKey::cencDecryptFullSample): Deleted.
(WebCore::CDMProxyClearKey::cencDecryptSubsampled): Deleted.
(WebCore::CDMProxyClearKey::cencDecrypt): Deleted.
(WebCore::CDMProxyClearKey::closeGCryptHandle): Deleted.
(WebCore::CDMProxyClearKey::gCryptHandle): Deleted.
* platform/graphics/gstreamer/eme/CDMProxyClearKey.h: Removed.
(): Deleted.
* platform/graphics/gstreamer/eme/CDMThunder.cpp:
(WebCore::CDMFactoryThunder::supportedKeySystems const):
* platform/graphics/gstreamer/eme/WebKitClearKeyDecryptorGStreamer.cpp: Removed.
(webkit_media_clear_key_decrypt_class_init): Deleted.
(protectionSystemId): Deleted.
(cdmProxyAttached): Deleted.
(decrypt): Deleted.
* platform/graphics/gstreamer/eme/WebKitClearKeyDecryptorGStreamer.h: Removed.
* platform/graphics/gstreamer/eme/WebKitThunderDecryptorGStreamer.cpp:
* platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamer.cpp:
(webKitMediaSrcSendEvent):

LayoutTests:

Update EME ClearKey baselines, a few more tests were enabled.

* platform/glib/TestExpectations:
* platform/glib/imported/w3c/web-platform-tests/encrypted-media/idlharness.https-expected.txt: Added.
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/idlharness.https-expected.txt: Removed.

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

11 months ago[CSS Container Queries] Match container queries correctly in non-rendered subtrees
antti@apple.com [Sat, 19 Feb 2022 14:05:53 +0000 (14:05 +0000)]
[CSS Container Queries] Match container queries correctly in non-rendered subtrees
https://bugs.webkit.org/show_bug.cgi?id=236840

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

* web-platform-tests/css/css-contain/container-queries/backdrop-invalidation-expected.txt:
* web-platform-tests/css/css-contain/container-queries/display-contents-expected.txt:
* web-platform-tests/css/css-contain/container-queries/display-none-expected.txt:
* web-platform-tests/css/css-contain/container-queries/pseudo-elements-001-expected.txt:
* web-platform-tests/css/css-contain/container-queries/pseudo-elements-003.tentative-expected.txt:
* web-platform-tests/css/css-contain/container-queries/size-container-no-principal-box-expected.txt:
* web-platform-tests/css/css-contain/container-queries/top-layer-dialog-container-expected.txt:
* web-platform-tests/css/css-contain/container-queries/top-layer-dialog-expected.txt:
* web-platform-tests/css/css-contain/container-queries/top-layer-nested-dialog-expected.txt:

Source/WebCore:

"If the query container does not have a principal box ... then the result of evaluating the size feature is unknown."

https://drafts.csswg.org/css-contain-3/#size-container

* rendering/updating/RenderTreeBuilderFirstLetter.cpp:
(WebCore::styleForFirstLetter):

Remove the assert, this issue is tested by marked-as-failure
imported/w3c/web-platform-tests/css/css-contain/container-queries/pseudo-elements-002.tentative.html

* style/ContainerQueryEvaluator.cpp:
(WebCore::Style::ContainerQueryEvaluator::ContainerQueryEvaluator):
(WebCore::Style::ContainerQueryEvaluator::evaluate const):
(WebCore::Style::ContainerQueryEvaluator::resolveContainer const):

Factor into a function.
If we don't have selector matching state (like we do during style resolution) then look up containers from DOM.
An element without a renderer may still be a valid container (size queries againt it evaluate to unknown).

(WebCore::Style::ContainerQueryEvaluator::evaluateSizeFeature const):
* style/ContainerQueryEvaluator.h:
* style/ElementRuleCollector.cpp:
(WebCore::Style::ElementRuleCollector::containerQueryMatches):

Evaluate to unknown if we don't have a principal box.

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

11 months ago[LFC][IFC] Introduce LineBoxBuilder::collectFallbackFonts
zalan@apple.com [Sat, 19 Feb 2022 13:30:26 +0000 (13:30 +0000)]
[LFC][IFC] Introduce LineBoxBuilder::collectFallbackFonts
https://bugs.webkit.org/show_bug.cgi?id=236866

Reviewed by Antti Koivisto.

Let's move fallback font collect to a dedicated function and stop leaking internal line types to TextUtil.

* layout/formattingContexts/inline/InlineLineBoxBuilder.cpp:
(WebCore::Layout::LineBoxBuilder::collectFallbackFonts):
(WebCore::Layout::LineBoxBuilder::constructInlineLevelBoxes):
(WebCore::Layout::fallbackFontHasVerticalGlyph): Deleted.
* layout/formattingContexts/inline/InlineLineBoxBuilder.h:
* layout/formattingContexts/inline/text/TextUtil.cpp:
(WebCore::Layout::TextUtil::fallbackFontsForText):
(WebCore::Layout::TextUtil::fallbackFontsForRun): Deleted.
* layout/formattingContexts/inline/text/TextUtil.h:

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

11 months agoREGRESSION(r290175): ASSERTION FAILED: platformSample.type == PlatformSample::CMSampl...
commit-queue@webkit.org [Sat, 19 Feb 2022 12:36:54 +0000 (12:36 +0000)]
REGRESSION(r290175): ASSERTION FAILED: platformSample.type == PlatformSample::CMSampleBufferType while running webgl tests
https://bugs.webkit.org/show_bug.cgi?id=236878

Add a missing hunk.
Unreviewed, TBR Eric Carlson.

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2022-02-19

* GPUProcess/media/RemoteVideoFrameObjectHeap.cpp:
(WebKit::RemoteVideoFrameObjectHeap::getVideoFrameBuffer):

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

11 months ago[LFC][IFC] layoutBoundsForInlineBox should read layoutBoundsPrimaryMetricsForInlineBox
zalan@apple.com [Sat, 19 Feb 2022 09:01:20 +0000 (09:01 +0000)]
[LFC][IFC] layoutBoundsForInlineBox should read layoutBoundsPrimaryMetricsForInlineBox
https://bugs.webkit.org/show_bug.cgi?id=236864

Reviewed by Antti Koivisto.

layoutBoundsForInlineBox returns the layout bounds based on the primary font.
This is in preparation for adding font fallback support for ideographic baseline.

* layout/formattingContexts/inline/InlineLineBoxBuilder.cpp:
(WebCore::Layout::layoutBoundsPrimaryMetricsForInlineBox):
(WebCore::Layout::LineBoxBuilder::constructInlineLevelBoxes):
(WebCore::Layout::LineBoxBuilder::adjustIdeographicBaselineIfApplicable):
(WebCore::Layout::layoutBoundsMetricsForInlineBox): Deleted.

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

11 months agoREGRESSION (r287524): hihello.me does not show sliding sheet at the bottom of the...
graouts@webkit.org [Sat, 19 Feb 2022 08:48:22 +0000 (08:48 +0000)]
REGRESSION (r287524): hihello.me does not show sliding sheet at the bottom of the page
https://bugs.webkit.org/show_bug.cgi?id=236838
rdar://88672183

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

Add new WPT tests to check we correctly compute implicit keyframes when a 0% and/or 100% keyframe
is defined but only specifies a timing function. One test checks the output of getKeyframes() and
the other that we correctly account for the implicit vaues when computing styles.

* web-platform-tests/css/css-animations/KeyframeEffect-getKeyframes.tentative-expected.txt:
* web-platform-tests/css/css-animations/KeyframeEffect-getKeyframes.tentative.html:
* web-platform-tests/css/css-animations/animation-multiple-from-to-keyframes-with-only-timing-function-expected.txt: Added.
* web-platform-tests/css/css-animations/animation-multiple-from-to-keyframes-with-only-timing-function.html: Added.

Source/WebCore:

When we fixed bug 234799 we fixed the behavior of keyframe deduplication in
Style::Resolver::keyframeRulesForName(). While this was a good fix, code that
relied on the KeyframeList that would eventually be yielded from that function
did not quite correctly add implicit keyframes for the 0% and 100% case in some
relatively obscure situation.

The site hihello.me made this shortcoming apparent. This site has this odd keyframe rule:

    from, 60%, 75%, 90%, to {
        animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
    }

It appears the intention of the author with this rule is to replicate the timing function
on multiple keyframes. However, this does not work. This timing function will not be used
for *anything* since if a rule is specified without an animation-timing-function value it
will use the value set on the element, not one on a different keyframe.

This also means that while there are explicit 0% and 100% keyframes, they are not adequate
to then compute implicit properties since the timing function wouldn't match the default
timing function (unless the element that those keyframes are applied to would happen to
specify that exact same timing function).

To correctly handle this, we need to do several things.

First of all, we remove the implicit keyframe code found in KeyframeEffect::getKeyframes()
and let KeyframeList::fillImplicitKeyframes() do all the work to correctly fill-in values
for properties not eplicitly specified on a 0% or 100% keyframe.

This means we need to improve that function to correctly do the task that it's supposed to
do. Now provided with a KeyframeEffect and an underlying style as parameters, for 0% and
100% it correctly:

    1. compiles a list of implicit properties for the given keyframe
    2. find a compatible keyframe for the implicit properties or create one
    3. set the implicit properties on that compatible keyframe to match the values found
       in the underlying style

This correctly takes cares of calls to getKeyframes() as well as the generation of keyframes
passed down to RenderLayerBacking when starting an accelerated animation.

But RenderLayerBacking also had some outdated assumptions on the KeyframeList it receives.
Indeed, it would always assume that a 0% or 100% keyframe would *always* specify properties
for the animated property. That was incorrect since we correctly deduplicate keyframes and
having several 0% or 100% keyframes is perfectly valid. Now we don't give special treatment
to 0% or 100% keyframes in RenderLayerBacking::startAnimation() and always check that a keyframe
features values for the animated property before creating an animation value to send down
to GraphicsLayer.

Finally, another place we make assumptions on implicit keyframes was when resolving styles
as effects are applied in KeyframeEffect::setAnimatedPropertiesInStyle(). There we assumed
that a 0% or 100% keyframe would always qualify as a keyframe containing the animated property,
whereas the steps for resolving styles as specified by the Web Animations specification has
logic to deal with the case where we don't find a 0% or 100% keyframe with an explicit value
for the animated property. So we simplified the checks there to only ever check for an
explicit value.

This rather obscure way to specify keyframes was not previously tested by WPT, so this patch
improves the testing coverage in a way that would have caught this regression in the first place.

Test: imported/w3c/web-platform-tests/css/css-animations/animation-multiple-from-to-keyframes-with-only-timing-function.html

* animation/KeyframeEffect.cpp:
(WebCore::KeyframeEffect::getKeyframes):
(WebCore::KeyframeEffect::setAnimatedPropertiesInStyle):
(WebCore::KeyframeEffect::applyPendingAcceleratedActions):
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::startAnimation):
* rendering/style/KeyframeList.cpp:
(WebCore::KeyframeList::insert):
(WebCore::KeyframeList::fillImplicitKeyframes):
* rendering/style/KeyframeList.h:

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

11 months agoASSERTION FAILED: !hasAnyOpenConnections() in UniqueIDBDatabase::~UniqueIDBDatabase()
sihui_liu@apple.com [Sat, 19 Feb 2022 07:22:47 +0000 (07:22 +0000)]
ASSERTION FAILED: !hasAnyOpenConnections() in UniqueIDBDatabase::~UniqueIDBDatabase()
https://bugs.webkit.org/show_bug.cgi?id=236856

Reviewed by Chris Dumez.

The assertion is hit when running API test WebKit.MigrateIndexedDBDataToGeneralStorageDirectory. We need to
properly close UniqueIDBDatabase before it's destroyed.

* NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::storageSession): remove logging as it was added when we had check for
default session. Since we don't have the check now, the logging does not make much sense.
* NetworkProcess/storage/IDBStorageManager.cpp:
(WebKit::IDBStorageManager::~IDBStorageManager):
* NetworkProcess/storage/IDBStorageManager.h:

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

11 months ago[Tools] Sanitizer builds should obey `set-webkit-configuration --force-optimization...
ddkilzer@apple.com [Sat, 19 Feb 2022 07:19:34 +0000 (07:19 +0000)]
[Tools] Sanitizer builds should obey `set-webkit-configuration --force-optimization-level`
<https://webkit.org/b/236859>
<rdar://problem/89161649>

Reviewed by Brent Fulgham.

* Scripts/webkitdirs.pm:
(XcodeOptions):
- Pass WK_FORCE_OPTIMIZATION_LEVEL instead of
  GCC_OPTIMIZATION_LEVEL if sanitizers are enabled so the
  optimization level can be overridden in sanitizer.xcconfig.

* sanitizer/asan.xcconfig:
(WK_NOT_): Remove.
(WK_NOT_YES): Remove.
- Move variables to sanitizer.xcconfig.

* sanitizer/sanitizer.xcconfig:
(WK_EMPTY_): Add.
(WK_NOT_): Add.
(WK_NOT_YES): Add.
- Add utility variables originally from SDKVariant.xcconfig.
(WK_OVERRIDE_OPTIMIZATION_LEVEL): Add.
- Set to YES/NO depending on whether WK_FORCE_OPTIMIZATION_LEVEL
  is set.
(GCC_OPTIMIZATION_LEVEL):
(GCC_OPTIMIZATION_LEVEL_OVERRIDE_YES): Add.
(GCC_OPTIMIZATION_LEVEL_OVERRIDE_NO): Add.
(GCC_OPTIMIZATION_LEVEL_OVERRIDE_NO_Debug): Rename from GCC_OPTIMIZATION_LEVEL_Debug.
(GCC_OPTIMIZATION_LEVEL_OVERRIDE_NO_Production): Rename from GCC_OPTIMIZATION_LEVEL_Production.
(GCC_OPTIMIZATION_LEVEL_OVERRIDE_NO_Release): Rename from GCC_OPTIMIZATION_LEVEL_Release.
- Make use of WK_OVERRIDE_OPTIMIZATION_LEVEL and
  WK_FORCE_OPTIMIZATION_LEVEL to allow overriding the default
  optimization level for sanitizer builds.

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

11 months agoHook up PushManager to permission state
nham@apple.com [Sat, 19 Feb 2022 05:26:41 +0000 (05:26 +0000)]
Hook up PushManager to permission state
https://bugs.webkit.org/show_bug.cgi?id=236739

Reviewed by Brady Eidson.

Source/WebCore:

This implements PushManager.permissionState. It returns the same value as
Notification.permission through the same mechanism.

This also makes PushManager.subscribe request permission from the user to show notifications
if the permission is in the default state and these requirements are met:

1. The caller is a document with the same origin as a top level document. This means that
   cross-origin iframes cannot request push permissions. This matches Chrome's behavior.
2. The caller cannot be a service worker. This limitation is allowed for by the spec.

There also needs to be some code added which removes a push subscription if the user deletes
the subscription entirely in the UI, for instance when the UIProcess calls
WKNotificationManagerProviderDidRemoveNotificationPolicies. That will be handled in a
separate patch.

Covered by new layout tests.

* Modules/push-api/PushManager.cpp:
(WebCore::PushManager::subscribe):
(WebCore::PushManager::getSubscription):
(WebCore::PushManager::permissionState):

Source/WebKit:

Update comment explaining why we still have a permission state stub in webpushd.

* webpushd/WebPushDaemon.mm:
(WebPushD::Daemon::getPushPermissionState):

Tools:

Made the WebPushD API tests work now that subscribe checks for permission.

* TestWebKitAPI/Tests/WebKitCocoa/WebPushDaemon.mm:

LayoutTests:

Added tests that make sure that PushManager.permissionState() and PushManager.subscribe()
respect the notification permission level for the current origin.

I made these regular tests rather than WPT tests because the WPT test harness calls
grantWebNotificationPermission at the top of its setup script (in testharnessreport.js), and
I didn't want to change that for this patch.

* http/tests/push-api/resources/push-api-test-pre.js: Added.
(finishPushAPITest):
(waitForState):
* http/tests/push-api/resources/subscribe-iframe-cross-origin.html: Added.
* http/tests/push-api/resources/subscribe-iframe-same-origin.html: Added.
* http/tests/push-api/resources/subscribe-tests.js: Added.
(async testServiceWorkerPermissionState):
(async testDocumentPermissionState):
(async testServiceWorkerSubscribe):
(async testDocumentSubscribe):
* http/tests/push-api/resources/subscribe-worker.js: Added.
(async event):
* http/tests/push-api/subscribe-default-permissions-expected.txt: Added.
* http/tests/push-api/subscribe-default-permissions-iframe-cross-origin-expected.txt: Added.
* http/tests/push-api/subscribe-default-permissions-iframe-cross-origin.html: Added.
* http/tests/push-api/subscribe-default-permissions-iframe-same-origin-expected.txt: Added.
* http/tests/push-api/subscribe-default-permissions-iframe-same-origin.html: Added.
* http/tests/push-api/subscribe-default-permissions.html: Added.
* http/tests/push-api/subscribe-deny-permissions-expected.txt: Added.
* http/tests/push-api/subscribe-deny-permissions.html: Added.
* http/tests/push-api/subscribe-grant-permissions-expected.txt: Added.
* http/tests/push-api/subscribe-grant-permissions.html: Added.
* platform/gtk/TestExpectations:
* platform/mac-wk1/TestExpectations:
* platform/win/TestExpectations:

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

11 months agoStop propagating inertness through iframes in Node::deprecatedIsInert()
ntim@apple.com [Sat, 19 Feb 2022 04:27:39 +0000 (04:27 +0000)]
Stop propagating inertness through iframes in Node::deprecatedIsInert()
https://bugs.webkit.org/show_bug.cgi?id=236512

Reviewed by Chris Dumez.

This is only a bug for Node::deprecatedIsInert(), so it only affects focus. Selection APIs, etc. weren't affected
before this bug.

LayoutTests/imported/w3c:

* web-platform-tests/html/semantics/interactive-elements/the-dialog-element/inert-focus-in-frames-expected.txt:

Source/WebCore:

Test: web-platform-tests/html/semantics/interactive-elements/the-dialog-element/inert-focus-in-frames.html

* dom/Node.cpp:
(WebCore::Node::deprecatedIsInert const):

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

11 months agoSource/WebKit:
sihui_liu@apple.com [Sat, 19 Feb 2022 04:14:04 +0000 (04:14 +0000)]
Source/WebKit:
Add assertion that no two network sessions share the same storage path
https://bugs.webkit.org/show_bug.cgi?id=236844

Reviewed by Chris Dumez.

Each NetworkStorageManager has its own queue and accesses the storage files on that queue, so we can't have two
NetworkworkStorageManagers use the same path, as the path may be accessed concurrently and cause corruption.
Currently we have an SPI for setting custom generalStorageDirectory for WebsiteDataStore (in
_WKWebsiteDataStoreConfiguration), which means SPI clients can create two sessions with the same path in theory.
Let's add an assertion to ensure that does not happen.

This assertion has helped find a bug in WebKitTestRunner that we didn't set custom generalStorageDirectory for a
custom WebsiteDataStore (so it's using the same path as default WebsiteDataStore).

* NetworkProcess/storage/NetworkStorageManager.cpp:
(WebKit::activePaths):
(WebKit::NetworkStorageManager::NetworkStorageManager):
(WebKit::NetworkStorageManager::~NetworkStorageManager):

Tools:
Add assertion that no two network session share the same storage path
https://bugs.webkit.org/show_bug.cgi?id=236844

Reviewed by Chris Dumez.

* WebKitTestRunner/TestController.cpp:
(WTR::TestController::configureWebsiteDataStoreTemporaryDirectories):

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

11 months ago[libpas] Increase scavenger period from 100ms to 125ms in Darwin x64
ysuzuki@apple.com [Sat, 19 Feb 2022 03:56:45 +0000 (03:56 +0000)]
[libpas] Increase scavenger period from 100ms to 125ms in Darwin x64
https://bugs.webkit.org/show_bug.cgi?id=236873

Reviewed by Saam Barati.

Make x64 scavenger less aggressive while maintaining Membuster neutral
to make it less work.

* libpas/src/libpas/pas_config_prefix.h:
* libpas/src/libpas/pas_scavenger.c:
* libpas/src/libpas/pas_utils.h:

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

11 months ago[JSC] Make ArrayPrototype just an array
ysuzuki@apple.com [Sat, 19 Feb 2022 03:53:08 +0000 (03:53 +0000)]
[JSC] Make ArrayPrototype just an array
https://bugs.webkit.org/show_bug.cgi?id=236869

Reviewed by Saam Barati.

Originally, ArrayPrototype has slightly different memory layout & different logic etc.
But now, it is just an array with a lot of properties. We should just make it an array.

* runtime/ArrayPrototype.cpp:
(JSC::ArrayPrototype::finishCreation):
* runtime/ArrayPrototype.h:

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

11 months agoUnreviewed, reverting r290188.
mark.lam@apple.com [Sat, 19 Feb 2022 03:21:11 +0000 (03:21 +0000)]
Unreviewed, reverting r290188.
https://bugs.webkit.org/show_bug.cgi?id=236875

Broke WebKitGTK &amp; WPE build bots

Reverted changeset:

"Provide a WebCore subspaceImplFor template to make code more
readable."
https://bugs.webkit.org/show_bug.cgi?id=236868
https://commits.webkit.org/r290188

Patch by Commit Queue <commit-queue@webkit.org> on 2022-02-18

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

11 months agohttp/wpt/push-api/onpush-disabled.html fails (incremental build issue?)
ryanhaddad@apple.com [Sat, 19 Feb 2022 02:47:22 +0000 (02:47 +0000)]
http/wpt/push-api/onpush-disabled.html fails (incremental build issue?)
https://bugs.webkit.org/show_bug.cgi?id=236874

Unreviewed test gardening.

* TestExpectations: Mark test as failing to reduce impact on EWS.

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

11 months agoREGRESSION(r287249): [ Monterey wk2 ] media/media-source/media-webm-vorbis-partial...
jenner@apple.com [Sat, 19 Feb 2022 02:09:33 +0000 (02:09 +0000)]
REGRESSION(r287249): [ Monterey wk2 ] media/media-source/media-webm-vorbis-partial.html is a constant text failure
https://bugs.webkit.org/show_bug.cgi?id=236857

Unreviewed test gardening.

Patch by Matteo Flores <matteo_flores@apple.com> on 2022-02-18

* platform/mac-bigsur/fast/text/international/Geeza-Pro-vertical-metrics-adjustment-expected.txt: Copied from LayoutTests/platform/mac/fast/text/international/Geeza-Pro-vertical-metrics-adjustment-expected.txt.
* platform/mac/fast/text/international/Geeza-Pro-vertical-metrics-adjustment-expected.txt: Rebaslining due to test changes.

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

11 months ago[WebGPU] Any object-creation function that takes a descriptor can fail
mmaxfield@apple.com [Sat, 19 Feb 2022 01:03:29 +0000 (01:03 +0000)]
[WebGPU] Any object-creation function that takes a descriptor can fail
https://bugs.webkit.org/show_bug.cgi?id=236855

Reviewed by Dean Jackson.

Generally, we view allocation failure as catastrophic, and crash. Because of that, I originally
made these methods return Refs, because I expected the failure case to cause intentional crashes
rather than return nullptr.

However, descriptors the shared header have a nextInChain pointer, which allows callers to pass
in extra extension-specific structs, as a linked list. If the WebGPU implementation sees one of
these extra structs that it doesn't know what to do with, it has to fail. That means that it's
possible to fail in a way other than an allocation failure, which means these functions have to
return RefPtrs instead of Refs.

* WebGPU/Adapter.h:
* WebGPU/Adapter.mm:
(WebGPU::Adapter::requestDevice):
(wgpuAdapterRequestDevice):
* WebGPU/CommandEncoder.h:
* WebGPU/CommandEncoder.mm:
(WebGPU::CommandEncoder::beginComputePass):
(WebGPU::CommandEncoder::beginRenderPass):
(WebGPU::CommandEncoder::finish):
(wgpuCommandEncoderBeginComputePass):
(wgpuCommandEncoderBeginRenderPass):
(wgpuCommandEncoderFinish):
* WebGPU/Device.h:
* WebGPU/Device.mm:
(WebGPU::Device::createBindGroup):
(WebGPU::Device::createBindGroupLayout):
(WebGPU::Device::createBuffer):
(WebGPU::Device::createCommandEncoder):
(WebGPU::Device::createComputePipeline):
(WebGPU::Device::createComputePipelineAsync):
(WebGPU::Device::createPipelineLayout):
(WebGPU::Device::createQuerySet):
(WebGPU::Device::createRenderBundleEncoder):
(WebGPU::Device::createRenderPipeline):
(WebGPU::Device::createRenderPipelineAsync):
(WebGPU::Device::createSampler):
(WebGPU::Device::createShaderModule):
(WebGPU::Device::createSwapChain):
(WebGPU::Device::createTexture):
(WebGPU::Device::getQueue):
(wgpuDeviceCreateBindGroup):
(wgpuDeviceCreateBindGroupLayout):
(wgpuDeviceCreateBuffer):
(wgpuDeviceCreateCommandEncoder):
(wgpuDeviceCreateComputePipeline):
(wgpuDeviceCreateComputePipelineAsync):
(wgpuDeviceCreatePipelineLayout):
(wgpuDeviceCreateQuerySet):
(wgpuDeviceCreateRenderBundleEncoder):
(wgpuDeviceCreateRenderPipeline):
(wgpuDeviceCreateRenderPipelineAsync):
(wgpuDeviceCreateSampler):
(wgpuDeviceCreateShaderModule):
(wgpuDeviceCreateSwapChain):
(wgpuDeviceCreateTexture):
(wgpuDeviceGetQueue):
* WebGPU/Instance.h:
* WebGPU/Instance.mm:
(WebGPU::Instance::createSurface):
(wgpuInstanceCreateSurface):
* WebGPU/RenderBundleEncoder.h:
* WebGPU/RenderBundleEncoder.mm:
(WebGPU::RenderBundleEncoder::finish):
(wgpuRenderBundleEncoderFinish):
* WebGPU/Texture.h:
* WebGPU/Texture.mm:
(WebGPU::Texture::createView):
(wgpuTextureCreateView):

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

11 months agoMove content filtering to Networking process
pvollan@apple.com [Sat, 19 Feb 2022 01:02:27 +0000 (01:02 +0000)]
Move content filtering to Networking process
https://bugs.webkit.org/show_bug.cgi?id=233760
<rdar://problem/86150702>

Reviewed by Brent Fulgham.

Source/WebCore:

Remove content filtering from DocumentLoader when the feature is enabled, since this takes place in the WebContent process.
Modify the ContentFilter class by removing use of the types CachedResoure and CachedRawResource, since objects of these
types are not available in the Networking process. Parameters with these types are replaced with URL parameters.
The new behavior is behind a feature flag, which is not enabled in this patch.

* WebCore.xcodeproj/project.pbxproj:
* loader/ContentFilter.cpp:
(WebCore::ContentFilter::startFilteringMainResource):
(WebCore::ContentFilter::stopFilteringMainResource):
(WebCore::ContentFilter::continueAfterResponseReceived):
(WebCore::ContentFilter::continueAfterDataReceived):
(WebCore::ContentFilter::continueAfterNotifyFinished):
(WebCore::ContentFilter::didDecide):
(WebCore::ContentFilter::deliverResourceData):
(WebCore::ContentFilter::url):
(WebCore::ContentFilter::deliverStoredResourceData):
* loader/ContentFilter.h:
(WebCore::ContentFilter::blockedError const):
(WebCore::ContentFilter::isAllowed const):
(WebCore::ContentFilter::responseReceived const):
* loader/ContentFilterClient.h:
* loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::notifyFinished):
(WebCore::DocumentLoader::willSendRequest):
(WebCore::DocumentLoader::responseReceived):
(WebCore::DocumentLoader::dataReceived):
(WebCore::DocumentLoader::detachFromFrame):
(WebCore::DocumentLoader::startLoadingMainResource):
(WebCore::DocumentLoader::clearMainResource):
(WebCore::DocumentLoader::becomeMainResourceClient):
(WebCore::DocumentLoader::contentFilterDidBlock):
(WebCore::DocumentLoader::handleContentFilterDidBlock):
(WebCore::DocumentLoader::handleContentFilterProvisionalLoadFailure):
(WebCore::DocumentLoader::contentFilterWillHandleProvisionalLoadFailure):
(WebCore::DocumentLoader::contentFilterHandleProvisionalLoadFailure):
* loader/DocumentLoader.h:
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::dispatchDidFailProvisionalLoad):
* loader/PolicyChecker.cpp:
(WebCore::FrameLoader::PolicyChecker::checkNavigationPolicy):
* loader/SubstituteData.h:
(WebCore::SubstituteData::encode const):
(WebCore::SubstituteData::decode):
* platform/cocoa/ContentFilterUnblockHandlerCocoa.mm:
(WebCore::ContentFilterUnblockHandler::canHandleRequest const):

Source/WebKit:

Move content filtering from the DocumentLoader class in the WebProcess to the NetworkResourceLoader class in the
Networking process. The NetworkResourceLoader is now a client of the content filter, and will send messages
to the DocumentLoader in the WebProcess to cancel the load when the content filter decided to block the load.
If the content filter is providing replacement data, this will also be sent over IPC to the WebProcess.
Data is not being sent to the WebProcess until the content filter has decided to allow the load, if content
filtering is enabled.

* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::start):
(WebKit::NetworkResourceLoader::startContentFiltering):
(WebKit::NetworkResourceLoader::didReceiveResponse):
(WebKit::NetworkResourceLoader::didFinishLoading):
(WebKit::NetworkResourceLoader::willSendRedirectedRequest):
(WebKit::NetworkResourceLoader::bufferingTimerFired):
(WebKit::NetworkResourceLoader::sendBuffer):
(WebKit::NetworkResourceLoader::didRetrieveCacheEntry):
(WebKit::NetworkResourceLoader::sendResultForCacheEntry):
(WebKit::NetworkResourceLoader::dataReceivedThroughContentFilter):
(WebKit::NetworkResourceLoader::contentFilterDidBlock):
(WebKit::NetworkResourceLoader::cancelMainResourceLoadForContentFilter):
(WebKit::NetworkResourceLoader::handleProvisionalLoadFailureFromContentFilter):
* NetworkProcess/NetworkResourceLoader.h:
* UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::reloadAfterUnblockedContentFilter):
* UIProcess/Network/NetworkProcessProxy.h:
* UIProcess/Network/NetworkProcessProxy.messages.in:
* WebProcess/Network/WebResourceLoader.cpp:
(WebKit::WebResourceLoader::contentFilterDidBlockLoad):
(WebKit::WebResourceLoader::cancelMainResourceLoadForContentFilter):
(WebKit::WebResourceLoader::handleProvisionalLoadFailureFromContentFilter):
(WebKit::WebResourceLoader::reload):
* WebProcess/Network/WebResourceLoader.h:
* WebProcess/Network/WebResourceLoader.messages.in:

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

11 months agoProvide a WebCore subspaceImplFor template to make code more readable.
mark.lam@apple.com [Sat, 19 Feb 2022 00:57:42 +0000 (00:57 +0000)]
Provide a WebCore subspaceImplFor template to make code more readable.
https://bugs.webkit.org/show_bug.cgi?id=236868
rdar://problem/89170090

Reviewed by Yusuke Suzuki.

The pre-existing code is difficult to follow, especially in CodeGeneratorJS.pm.
This change also consolidates the framework implementation of subspaceForImpl in
one place rather than scattered across 3 locations.  This will make it easier to
change this code in the future.

Also introduced ExtendedDOMIsoSubspace and ExtendedDOMClientIsoSubspaces classes
and moved the FileSystemDirectoryHandleIterator subspaces in there.  This makes
the code behave more consistently for FileSystemDirectoryHandleIterator's
IsoSubspace as for other IsoSubspaces.

Also rebased bindings test results.

* WebCore.xcodeproj/project.pbxproj:
* bindings/js/ExtendedDOMClientIsoSubspaces.h: Added.
* bindings/js/ExtendedDOMIsoSubspaces.h: Added.
* bindings/js/JSFileSystemDirectoryHandleIterator.cpp:
(WebCore::JSFileSystemDirectoryHandleIterator::subspaceForImpl):
* bindings/js/WebCoreJSClientData.cpp:
(WebCore::JSHeapData::JSHeapData):
(WebCore::JSVMClientData::JSVMClientData):
* bindings/js/WebCoreJSClientData.h:
(WebCore::JSHeapData::subspaces):
(WebCore::JSVMClientData::idbSerializationSpace):
(WebCore::JSVMClientData::clientSubspaces):
(WebCore::subspaceForImpl):
(WebCore::JSHeapData::fileSystemDirectoryHandleIteratorSpace): Deleted.
(WebCore::JSHeapData::setFileSystemDirectoryHandleIteratorSpace): Deleted.
(WebCore::JSVMClientData::fileSystemDirectoryHandleIteratorSpace): Deleted.
(WebCore::JSVMClientData::setFileSystemDirectoryHandleIteratorSpace): Deleted.
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateImplementation):
(GenerateIterableDefinition):
* bindings/scripts/test/JS/JSDOMWindow.cpp:
(WebCore::JSDOMWindow::subspaceForImpl):
* bindings/scripts/test/JS/JSDedicatedWorkerGlobalScope.cpp:
(WebCore::JSDedicatedWorkerGlobalScope::subspaceForImpl):
* bindings/scripts/test/JS/JSExposedStar.cpp:
(WebCore::JSExposedStar::subspaceForImpl):
* bindings/scripts/test/JS/JSExposedToWorkerAndWindow.cpp:
(WebCore::JSExposedToWorkerAndWindow::subspaceForImpl):
* bindings/scripts/test/JS/JSPaintWorkletGlobalScope.cpp:
(WebCore::JSPaintWorkletGlobalScope::subspaceForImpl):
* bindings/scripts/test/JS/JSServiceWorkerGlobalScope.cpp:
(WebCore::JSServiceWorkerGlobalScope::subspaceForImpl):
* bindings/scripts/test/JS/JSShadowRealmGlobalScope.cpp:
(WebCore::JSShadowRealmGlobalScope::subspaceForImpl):
* bindings/scripts/test/JS/JSSharedWorkerGlobalScope.cpp:
(WebCore::JSSharedWorkerGlobalScope::subspaceForImpl):
* bindings/scripts/test/JS/JSTestCEReactions.cpp:
(WebCore::JSTestCEReactions::subspaceForImpl):
* bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp:
(WebCore::JSTestCEReactionsStringifier::subspaceForImpl):
* bindings/scripts/test/JS/JSTestCallTracer.cpp:
(WebCore::JSTestCallTracer::subspaceForImpl):
* bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp:
(WebCore::JSTestClassWithJSBuiltinConstructor::subspaceForImpl):
* bindings/scripts/test/JS/JSTestConditionalIncludes.cpp:
(WebCore::JSTestConditionalIncludes::subspaceForImpl):
* bindings/scripts/test/JS/JSTestConditionallyReadWrite.cpp:
(WebCore::JSTestConditionallyReadWrite::subspaceForImpl):
* bindings/scripts/test/JS/JSTestDOMJIT.cpp:
(WebCore::JSTestDOMJIT::subspaceForImpl):
* bindings/scripts/test/JS/JSTestDefaultToJSON.cpp:
(WebCore::JSTestDefaultToJSON::subspaceForImpl):
* bindings/scripts/test/JS/JSTestDefaultToJSONFilteredByExposed.cpp:
(WebCore::JSTestDefaultToJSONFilteredByExposed::subspaceForImpl):
* 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/JSTestDelegateToSharedSyntheticAttribute.cpp:
(WebCore::JSTestDelegateToSharedSyntheticAttribute::subspaceForImpl):
* bindings/scripts/test/JS/JSTestDomainSecurity.cpp:
(WebCore::JSTestDomainSecurity::subspaceForImpl):
* bindings/scripts/test/JS/JSTestEnabledBySetting.cpp:
(WebCore::JSTestEnabledBySetting::subspaceForImpl):
* bindings/scripts/test/JS/JSTestEnabledForContext.cpp:
(WebCore::JSTestEnabledForContext::subspaceForImpl):
* 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):
* bindings/scripts/test/JS/JSTestGenerateAddOpaqueRoot.cpp:
(WebCore::JSTestGenerateAddOpaqueRoot::subspaceForImpl):
* bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp:
(WebCore::JSTestGenerateIsReachable::subspaceForImpl):
* bindings/scripts/test/JS/JSTestGlobalObject.cpp:
(WebCore::JSTestGlobalObject::subspaceForImpl):
* bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp:
(WebCore::JSTestIndexedSetterNoIdentifier::subspaceForImpl):
* bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp:
(WebCore::JSTestIndexedSetterThrowingException::subspaceForImpl):
* bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp:
(WebCore::JSTestIndexedSetterWithIdentifier::subspaceForImpl):
* bindings/scripts/test/JS/JSTestInterface.cpp:
(WebCore::jsTestInterfacePrototypeFunction_entriesCaller):
(WebCore::JSTestInterface::subspaceForImpl):
* bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp:
(WebCore::JSTestInterfaceLeadingUnderscore::subspaceForImpl):
* bindings/scripts/test/JS/JSTestIterable.cpp:
(WebCore::jsTestIterablePrototypeFunction_entriesCaller):
(WebCore::JSTestIterable::subspaceForImpl):
* bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp:
(WebCore::JSTestJSBuiltinConstructor::subspaceForImpl):
* bindings/scripts/test/JS/JSTestLegacyFactoryFunction.cpp:
(WebCore::JSTestLegacyFactoryFunction::subspaceForImpl):
* bindings/scripts/test/JS/JSTestLegacyNoInterfaceObject.cpp:
(WebCore::JSTestLegacyNoInterfaceObject::subspaceForImpl):
* bindings/scripts/test/JS/JSTestLegacyOverrideBuiltIns.cpp:
(WebCore::JSTestLegacyOverrideBuiltIns::subspaceForImpl):
* bindings/scripts/test/JS/JSTestMapLike.cpp:
(WebCore::JSTestMapLike::subspaceForImpl):
* bindings/scripts/test/JS/JSTestMapLikeWithOverriddenOperations.cpp:
(WebCore::JSTestMapLikeWithOverriddenOperations::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp:
(WebCore::JSTestNamedAndIndexedSetterNoIdentifier::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp:
(WebCore::JSTestNamedAndIndexedSetterThrowingException::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp:
(WebCore::JSTestNamedAndIndexedSetterWithIdentifier::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp:
(WebCore::JSTestNamedDeleterNoIdentifier::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp:
(WebCore::JSTestNamedDeleterThrowingException::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp:
(WebCore::JSTestNamedDeleterWithIdentifier::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp:
(WebCore::JSTestNamedDeleterWithIndexedGetter::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedGetterCallWith.cpp:
(WebCore::JSTestNamedGetterCallWith::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.cpp:
(WebCore::JSTestNamedGetterNoIdentifier::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.cpp:
(WebCore::JSTestNamedGetterWithIdentifier::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp:
(WebCore::JSTestNamedSetterNoIdentifier::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp:
(WebCore::JSTestNamedSetterThrowingException::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp:
(WebCore::JSTestNamedSetterWithIdentifier::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp:
(WebCore::JSTestNamedSetterWithIndexedGetter::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp:
(WebCore::JSTestNamedSetterWithIndexedGetterAndSetter::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedSetterWithLegacyOverrideBuiltIns.cpp:
(WebCore::JSTestNamedSetterWithLegacyOverrideBuiltIns::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedSetterWithLegacyUnforgeableProperties.cpp:
(WebCore::JSTestNamedSetterWithLegacyUnforgeableProperties::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns.cpp:
(WebCore::JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamespaceObject.cpp:
(WebCore::JSTestNamespaceObject::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNode.cpp:
(WebCore::jsTestNodePrototypeFunction_entriesCaller):
(WebCore::JSTestNode::subspaceForImpl):
* bindings/scripts/test/JS/JSTestObj.cpp:
(WebCore::JSTestObj::subspaceForImpl):
* bindings/scripts/test/JS/JSTestOperationConditional.cpp:
(WebCore::JSTestOperationConditional::subspaceForImpl):
* bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp:
(WebCore::JSTestOverloadedConstructors::subspaceForImpl):
* bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp:
(WebCore::JSTestOverloadedConstructorsWithSequence::subspaceForImpl):
* bindings/scripts/test/JS/JSTestPluginInterface.cpp:
(WebCore::JSTestPluginInterface::subspaceForImpl):
* bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp:
(WebCore::JSTestPromiseRejectionEvent::subspaceForImpl):
* bindings/scripts/test/JS/JSTestReadOnlyMapLike.cpp:
(WebCore::JSTestReadOnlyMapLike::subspaceForImpl):
* bindings/scripts/test/JS/JSTestReadOnlySetLike.cpp:
(WebCore::JSTestReadOnlySetLike::subspaceForImpl):
* bindings/scripts/test/JS/JSTestReportExtraMemoryCost.cpp:
(WebCore::JSTestReportExtraMemoryCost::subspaceForImpl):
* bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:
(WebCore::JSTestSerializedScriptValueInterface::subspaceForImpl):
* bindings/scripts/test/JS/JSTestSetLike.cpp:
(WebCore::JSTestSetLike::subspaceForImpl):
* bindings/scripts/test/JS/JSTestSetLikeWithOverriddenOperations.cpp:
(WebCore::JSTestSetLikeWithOverriddenOperations::subspaceForImpl):
* bindings/scripts/test/JS/JSTestStringifier.cpp:
(WebCore::JSTestStringifier::subspaceForImpl):
* bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.cpp:
(WebCore::JSTestStringifierAnonymousOperation::subspaceForImpl):
* bindings/scripts/test/JS/JSTestStringifierNamedOperation.cpp:
(WebCore::JSTestStringifierNamedOperation::subspaceForImpl):
* bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.cpp:
(WebCore::JSTestStringifierOperationImplementedAs::subspaceForImpl):
* bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.cpp:
(WebCore::JSTestStringifierOperationNamedToString::subspaceForImpl):
* bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.cpp:
(WebCore::JSTestStringifierReadOnlyAttribute::subspaceForImpl):
* bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.cpp:
(WebCore::JSTestStringifierReadWriteAttribute::subspaceForImpl):
* bindings/scripts/test/JS/JSTestTaggedWrapper.cpp:
(WebCore::JSTestTaggedWrapper::subspaceForImpl):
* bindings/scripts/test/JS/JSTestTypedefs.cpp:
(WebCore::JSTestTypedefs::subspaceForImpl):
* bindings/scripts/test/JS/JSWorkerGlobalScope.cpp:
(WebCore::JSWorkerGlobalScope::subspaceForImpl):
* bindings/scripts/test/JS/JSWorkletGlobalScope.cpp:
(WebCore::JSWorkletGlobalScope::subspaceForImpl):

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

11 months ago[iOS] Add required Mach service to the sandbox of the GPU process
pvollan@apple.com [Sat, 19 Feb 2022 00:52:16 +0000 (00:52 +0000)]
[iOS] Add required Mach service to the sandbox of the GPU process
https://bugs.webkit.org/show_bug.cgi?id=236860

Reviewed by Darin Adler.

* Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb:

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

11 months ago[iOS] Safari can sometimes hang while printing due to sync IPC
drousso@apple.com [Sat, 19 Feb 2022 00:44:12 +0000 (00:44 +0000)]
[iOS] Safari can sometimes hang while printing due to sync IPC
https://bugs.webkit.org/show_bug.cgi?id=236811
<rdar://problem/56425783>

Reviewed by Aditya Keerthi.

Source/WebKit:

* UIProcess/_WKWebViewPrintFormatter.h:
* UIProcess/_WKWebViewPrintFormatterInternal.h:
* UIProcess/_WKWebViewPrintFormatter.mm:
(-[_WKWebViewPrintFormatter requiresMainThread]): Added.
Adopt new UIKit SPI for allowing `UIPrintFormatter` to be called off the main thread.

* UIProcess/ios/WKContentView.mm:
(-[WKContentView _processDidExit]):
(-[WKContentView _wk_printFormatterRequiresMainThread]): Added.
(-[WKContentView _wk_pageCountForPrintFormatter:]):
(-[WKContentView _waitForDrawToPDFCallbackIfNeeded:]): Added.
(-[WKContentView _wk_printedDocument:]):
(-[WKContentView _waitForDrawToPDFCallback:]): Deleted.
Reorganize this code to support both sync and async flows.

* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::computePagesForPrintingiOS): Added.
(WebKit::WebPageProxy::drawToPDFiOS): Added.
(WebKit::WebPageProxy::computePagesForPrintingAndDrawToPDF): Deleted.
* WebProcess/WebPage/WebPage.messages.in:
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/ios/WebPageIOS.mm:
Split `WebPageProxy::computePagesForPrintingAndDrawToPDF` into two methods, as the first
"part" (i.e. `computePagesForPrintingiOS`) is no longer needed with this new UIKit SPI.

* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::computePagesForPrinting):
* UIProcess/API/C/WKPage.cpp:
(WKPageComputePagesForPrinting):
* UIProcess/mac/WKPrintingView.mm:
(-[WKPrintingView _askPageToComputePageRects]):
Have `WebPageProxy::computePagesForPrinting` take a `WebCore::FrameIdentifier` instead of a
`WebFrameProxy*` so that more callers (e.g. `API::FrameHandle`) can use it.

* UIProcess/ios/WKPDFView.mm:
(-[WKPDFView _wk_printFormatterRequiresMainThread]): Added.
By the time `WKPDFView` is asked to print, it should already have all the data necessary to
do so, so there's no reason to not use the main thread (since there's no sync IPC).

Source/WTF:

Adopt new UIKit SPI for allowing `UIPrintFormatter` to be called off the main thread.

* wtf/PlatformHave.h:
Add a `HAVE_UIKIT_BACKGROUND_THREAD_PRINTING` to guard this new behavior.

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

11 months ago[JSC] Fix test sharding when using --make-runner and --remote
angelos@igalia.com [Sat, 19 Feb 2022 00:40:18 +0000 (00:40 +0000)]
[JSC] Fix test sharding when using --make-runner and --remote
https://bugs.webkit.org/show_bug.cgi?id=236560

Reviewed by Adrian Perez de Castro.

After https://commits.webkit.org/244496@main, test sharding was broken
for the make runner. Specifically, all remotes would get assigned all
tests (instead of a subset).

Fix this by propagating and using the correct value for remoteHosts.

* Scripts/webkitruby/jsc-stress-test-writer-default.rb:

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

11 months ago[WebAuthn] Support for conditional mediation
j_pascoe@apple.com [Sat, 19 Feb 2022 00:28:13 +0000 (00:28 +0000)]
[WebAuthn] Support for conditional mediation
https://bugs.webkit.org/show_bug.cgi?id=236820
rdar://84821947

Reviewed by Brent Fulgham and Chris Dumez.

This patch adds support for conditional mediation, as defined in the
credentials management spec: https://w3c.github.io/webappsec-credential-management/#dom-credentialmediationrequirement-conditional

Source/WebCore:

* Modules/credentialmanagement/BasicCredential.cpp:
(WebCore::BasicCredential::isConditionalMediationAvailable):
* Modules/credentialmanagement/BasicCredential.h:
* Modules/credentialmanagement/BasicCredential.idl:
* Modules/credentialmanagement/CredentialRequestOptions.h:
* Modules/credentialmanagement/CredentialRequestOptions.idl:
* Modules/credentialmanagement/CredentialsContainer.cpp:
(WebCore::CredentialsContainer::get):
* Modules/webauthn/AuthenticatorCoordinator.cpp:
(WebCore::AuthenticatorCoordinator::discoverFromExternalSource const):
(WebCore::AuthenticatorCoordinator::isConditionalMediationAvailable const):
* Modules/webauthn/AuthenticatorCoordinator.h:
* Modules/webauthn/AuthenticatorCoordinatorClient.h:
* WebCore.xcodeproj/project.pbxproj:

Source/WebKit:

* Platform/spi/Cocoa/AuthenticationServicesCoreSPI.h:
* UIProcess/WebAuthentication/Cocoa/WebAuthenticatorCoordinatorProxy.mm:
(WebKit::configurationAssertionRequestContext):
(WebKit::WebAuthenticatorCoordinatorProxy::contextForRequest):
(WebKit::WebAuthenticatorCoordinatorProxy::performRequest):
(WebKit::WebAuthenticatorCoordinatorProxy::isConditionalMediationAvailable):
* UIProcess/WebAuthentication/WebAuthenticationRequestData.h:
* UIProcess/WebAuthentication/WebAuthenticatorCoordinatorProxy.cpp:
(WebKit::WebAuthenticatorCoordinatorProxy::makeCredential):
(WebKit::WebAuthenticatorCoordinatorProxy::getAssertion):
(WebKit::WebAuthenticatorCoordinatorProxy::isConditionalMediationAvailable):
* UIProcess/WebAuthentication/WebAuthenticatorCoordinatorProxy.h:
* UIProcess/WebAuthentication/WebAuthenticatorCoordinatorProxy.messages.in:
* WebProcess/WebAuthentication/WebAuthenticatorCoordinator.cpp:
(WebKit::WebAuthenticatorCoordinator::getAssertion):
* WebProcess/WebAuthentication/WebAuthenticatorCoordinator.h:

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

11 months agoRemove unneeded sandbox extension code
pvollan@apple.com [Sat, 19 Feb 2022 00:27:04 +0000 (00:27 +0000)]
Remove unneeded sandbox extension code
https://bugs.webkit.org/show_bug.cgi?id=228777
<rdar://problem/81516828>

Reviewed by Brent Fulgham.

Since the GPU process is now enabled by default, some related sandbox extension code can be removed.

* Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in:
* Shared/WebPageCreationParameters.cpp:
(WebKit::WebPageCreationParameters::encode const):
(WebKit::WebPageCreationParameters::decode):
* Shared/WebPageCreationParameters.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::creationParameters):
(WebKit::mediaRelatedMachServices): Deleted.
(WebKit::mediaRelatedIOKitClasses): Deleted.
* WebProcess/WebPage/WebPage.cpp:
(WebKit::m_appHighlightsVisible):
* WebProcess/com.apple.WebProcess.sb.in:

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

11 months ago[iOS] Add access to required Mach service in the Network process
pvollan@apple.com [Sat, 19 Feb 2022 00:18:58 +0000 (00:18 +0000)]
[iOS] Add access to required Mach service in the Network process
https://bugs.webkit.org/show_bug.cgi?id=236853
<rdar://89031731>

Reviewed by Darin Adler.

* Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb:

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

11 months agoUnreviewed, reverting r290149.
jenner@apple.com [Sat, 19 Feb 2022 00:03:05 +0000 (00:03 +0000)]
Unreviewed, reverting r290149.

Broke Debug Builds.

Reverted changeset:

"Generate compile_commands.json on macOS Builds"
https://bugs.webkit.org/show_bug.cgi?id=235686
https://commits.webkit.org/r290149

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

11 months ago[Live Text] Add a mechanism to inject images into image overlays
wenson_hsieh@apple.com [Fri, 18 Feb 2022 23:50:27 +0000 (23:50 +0000)]
[Live Text] Add a mechanism to inject images into image overlays
https://bugs.webkit.org/show_bug.cgi?id=236842

Reviewed by Aditya Keerthi.

Source/WebCore:

To support additional behaviors around the "Copy Cropped Image" context menu item on macOS, add a new image
overlay helper method to install a temporary image element within the image overlay shadow root of a host image.
See below for more details.

Test: fast/images/text-recognition/image-overlay-cropped-image.html

* dom/ImageOverlay.cpp:
(WebCore::ImageOverlay::imageOverlayCroppedImageIdentifier):
(WebCore::ImageOverlay::imageOverlayCroppedImageBackdropIdentifier):
(WebCore::ImageOverlay::isOverlayText):
(WebCore::ImageOverlay::removeOverlaySoonIfNeeded):
(WebCore::ImageOverlay::installImageOverlayStyleSheet):

Pull out logic for installing the UA style sheet for image overlays into a helper method, so that we can ensure
the stylesheet in both cases where the `CroppedImage` is installed first, or Live Text is injected first.

(WebCore::ImageOverlay::updateSubtree):

Refactor this method to not completely remove the image overlay root container in the case where the Live Text
subtree needs to be regenerated; this prevents us from inadvertently removing the cropped image overlay elements
when updating Live Text elements in the UA shadow root.

(WebCore::ImageOverlay::CroppedImage::install):

Add a method to install a cropped image overlay into the given host element. This creates a new blob URL using
the given image data and MIME type, and uses it to insert an image element within the image overlay root
container that's absolutely positioned over the given crop rect (normalized relative to the image).

This inserted image is presented over another dimming element that fades in and out as `setVisibility()` is
called. Finally, `install` returns a `unique_ptr` to a RAII object that can be used to fade the cropped image
backdrop in or out; when destroyed, this RAII object immediately disconnects both the backdrop and the image
element, and revokes the temporary blob URL created during `install()`.

(WebCore::ImageOverlay::CroppedImage::CroppedImage):
(WebCore::ImageOverlay::CroppedImage::~CroppedImage):
(WebCore::ImageOverlay::CroppedImage::setVisibility):
* dom/ImageOverlay.h:
* dom/ShadowRoot.h:

Add a `using TreeScope::getElementById;` here to make it possible to call `getElementById` on `ShadowRoot`
without having to cast to a `TreeScope`.

* html/shadow/imageOverlay.css:
(img#image-overlay-cropped-image):
(div#image-overlay-cropped-image-backdrop):
* testing/Internals.cpp:
(WebCore::Internals::pngDataForTesting):
(WebCore::Internals::installCroppedImageOverlay):
(WebCore::Internals::uninstallCroppedImageOverlay):

Add internal testing support for the cropped image overlay by allowing layout tests to inject an image overlay
with hard-coded PNG data into the given element.

* testing/Internals.h:
* testing/Internals.idl:
* testing/Internals.mm:
(WebCore::Internals::pngDataForTesting):

LayoutTests:

Add a layout test that exercises the new cropped image overlay code.

* fast/images/text-recognition/image-overlay-cropped-image-expected.txt: Added.
* fast/images/text-recognition/image-overlay-cropped-image.html: Added.

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

11 months agoREGRESSION (10/5/2021?): [iOS] http/wpt/cross-origin-opener-policy/single-request...
ryanhaddad@apple.com [Fri, 18 Feb 2022 23:42:31 +0000 (23:42 +0000)]
REGRESSION (10/5/2021?): [iOS] http/wpt/cross-origin-opener-policy/single-request-to-server.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=233284

Unreviewed test gardening.

* platform/ios/TestExpectations: Mark test as flaky.

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

11 months agoWebGL GPUP: Crash when running fast/mediastream/getUserMedia-to-canvas-1.html
commit-queue@webkit.org [Fri, 18 Feb 2022 22:48:08 +0000 (22:48 +0000)]
WebGL GPUP: Crash when running fast/mediastream/getUserMedia-to-canvas-1.html
https://bugs.webkit.org/show_bug.cgi?id=236502
Source/WebCore:

<rdar://problem/88862921>

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2022-02-18
Reviewed by Eric Carlson.

Add a polymorphic function asVideoFrameCV to convert VideoFrame to VideoFrameCV.
VideoFrameCV is used to draw the in-process video frame to in-process WebGL.

RemoteVideoFrameProxy will implement asVideoFrameCV by fetching the data from
GPUP and returning a new object exposing the data.

No new tests, tested by now unskipped tests.

* platform/VideoFrame.h:
* platform/graphics/cocoa/GraphicsContextGLCocoa.mm:
(WebCore::GraphicsContextGLCocoa::copyTextureFromMedia):
* platform/graphics/cv/VideoFrameCV.h:
* platform/graphics/cv/VideoFrameCV.mm:
(WebCore::VideoFrameCV::asVideoFrameCV):

Source/WebKit:

The crash is about MediaPlayerPrivateMediaStreamAVFObjC being in WP while other
media player private variants are proxied to GPUP. The previous implementation
would send media player identifiers to GPUP for copying.
This patch will implement the copy by the media player creating a reference
to VideoFrame. WebGL would send reference of the VideoFrame to GPUP for copying.

Make WP MediaPlayerPrivateRemote always return RemoteVideoFrameProxy objects
instead of WP in-process VideoFrame instances (for Cocoa VideoFrameCV) that
would hold the video data in process.

WP MediaPlayerPrivateMediaStreamAVFObjC already returns RemoteVideoFrameProxy
objects. This way GPUP WebGL implementation can obtain the read reference
to the remote object and send it in copyTextureFromVideoFrame message.

The WP in-process WebGL implementation converts the RemoteVideoFrameProxy
to VideoFrameCV with the new RemoteVideoFrameProxy::asVideoFrameCV.

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2022-02-18
Reviewed by Eric Carlson.

* GPUProcess/graphics/RemoteGraphicsContextGL.cpp:
(WebKit::RemoteGraphicsContextGL::RemoteGraphicsContextGL):
(WebKit::RemoteGraphicsContextGL::copyTextureFromVideoFrame):
* GPUProcess/graphics/RemoteGraphicsContextGL.h:
* GPUProcess/graphics/RemoteGraphicsContextGL.messages.in:
* GPUProcess/graphics/RemoteGraphicsContextGLCocoa.cpp:
(WebKit::RemoteGraphicsContextGL::copyTextureFromVideoFrame):
(WebKit::RemoteGraphicsContextGL::create):
(WebKit::RemoteGraphicsContextGLCocoa::RemoteGraphicsContextGLCocoa):
(WebKit::RemoteGraphicsContextGLCocoa::platformWorkQueueInitialize):
(WebKit::RemoteGraphicsContextGLCocoa::prepareForDisplay):
* GPUProcess/media/RemoteMediaPlayerManagerProxy.cpp:
(WebKit::RemoteMediaPlayerManagerProxy::createMediaPlayer):
* GPUProcess/media/RemoteMediaPlayerProxy.cpp:
(WebKit::RemoteMediaPlayerProxy::RemoteMediaPlayerProxy):
(WebKit::RemoteMediaPlayerProxy::videoFrameForCurrentTimeIfChanged):
* GPUProcess/media/RemoteMediaPlayerProxy.h:
* GPUProcess/media/RemoteMediaPlayerProxy.messages.in:
* WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.cpp:
(WebKit::RemoteGraphicsContextGLProxy::copyTextureFromMedia):
* WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.h:
* WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:
(WebKit::MediaPlayerPrivateRemote::videoFrameForCurrentTime):
* WebProcess/GPU/media/MediaPlayerPrivateRemote.h:
* WebProcess/GPU/media/RemoteVideoFrameProxy.cpp:
(WebKit::RemoteVideoFrameProxy::asVideoFrameCV):
* WebProcess/GPU/media/RemoteVideoFrameProxy.h:

LayoutTests:

Unskip the previous crashes caused by the lack of implementation.

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2022-02-18
Reviewed by Eric Carlson.

* platform/ios-wk2/TestExpectations:

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

11 months ago[macOS] Allow screen and window capture to be done in the GPU Process
eric.carlson@apple.com [Fri, 18 Feb 2022 22:43:33 +0000 (22:43 +0000)]
[macOS] Allow screen and window capture to be done in the GPU Process
https://bugs.webkit.org/show_bug.cgi?id=236815
<rdar://problem/89117278>

Reviewed by Jer Noble.

Source/WebCore:

Tested manually.

* platform/mediastream/mac/ScreenCaptureKitCaptureSource.h:
* platform/mediastream/mac/ScreenCaptureKitCaptureSource.mm:
(WebCore::ScreenCaptureKitCaptureSource::sessionDidChangeContent): Call CaptureDevice
constructor directly since we have everything it needs.
(WebCore::findSharableDevice): Extract logic from processSharableContent into a
static function so it can be reused.
(WebCore::ScreenCaptureKitCaptureSource::findShareableContent): Use findSharableDevice.
(WebCore::ScreenCaptureKitCaptureSource::streamConfiguration): Add logging.
(WebCore::ScreenCaptureKitCaptureSource::startContentStream): Ditto.
(WebCore::ScreenCaptureKitCaptureSource::captureDeviceWithPersistentID):
(WebCore::ScreenCaptureKitCaptureSource::processSharableContent): Deleted.
* platform/mediastream/mac/ScreenCaptureKitSharingSessionManager.h:
(WebCore::ScreenCaptureKitSharingSessionManager::SharingSessionObserver::operator== const): Deleted.

* platform/mediastream/mac/ScreenCaptureKitSharingSessionManager.mm:
(WebCore::ScreenCaptureKitSharingSessionManager::isAvailable):
(WebCore::ScreenCaptureKitSharingSessionManager::sessionDidChangeContent): Call
CaptureDevice constructor directly since we have everything it needs.
(WebCore::ScreenCaptureKitSharingSessionManager::promptForGetDisplayMedia): Call
completion handler if the class is not available.

Source/WebKit:

* GPUProcess/GPUProcess.cpp:
(WebKit::GPUProcess::showWindowPicker): Call the picker.
(WebKit::GPUProcess::showScreenPicker): Ditto.
(WebKit::GPUProcess::setUseScreenCaptureKit):
* GPUProcess/GPUProcess.h:
* GPUProcess/GPUProcess.messages.in:

* GPUProcess/mac/com.apple.WebKit.GPUProcess.sb.in: Add rule to allow sandbox
to be extended dynamically with the mach-lookups required for the picker.
* Scripts/process-entitlements.sh: Add entitlements required for picker.

* Shared/WebPageCreationParameters.cpp:
(WebKit::WebPageCreationParameters::encode const): Encode shouldCaptureDisplayInGPUProcess.
(WebKit::WebPageCreationParameters::decode): Decode shouldCaptureDisplayInGPUProcess.
* Shared/WebPageCreationParameters.h:

* UIProcess/Cocoa/WebPageProxyCocoa.mm:
* UIProcess/GPU/GPUProcessProxy.cpp:
(WebKit::addDisplayCaptureSandboxExtension): Create extensions required to use the
system picker.
(WebKit::GPUProcessProxy::updateSandboxAccess): Add display capture.
(WebKit::GPUProcessProxy::updateCaptureAccess): Pass "allowDisplayCapture" to updateSandboxAccess.
(WebKit::GPUProcessProxy::showWindowPicker):
(WebKit::GPUProcessProxy::showScreenPicker):
(WebKit::GPUProcessProxy::updatePreferences):
* UIProcess/GPU/GPUProcessProxy.h:

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::creationParameters): Set shouldCaptureDisplayInGPUProcess.

* UIProcess/mac/DisplayCaptureSessionManager.mm:
(WebKit::DisplayCaptureSessionManager::showWindowPicker): Send message to GPU
process when necessary.
(WebKit::DisplayCaptureSessionManager::showScreenPicker): Ditto.

* WebProcess/WebPage/Cocoa/WebPageCocoa.mm:
(WebKit::WebPage::platformInitialize): Pass shouldCaptureDisplayInGPUProcess to setupCaptureProcesses.

* WebProcess/cocoa/UserMediaCaptureManager.cpp:
(WebKit::UserMediaCaptureManager::setupCaptureProcesses): Add shouldCaptureDisplayInGPUProcess
parameter.
(WebKit::UserMediaCaptureManager::DisplayFactory::createDisplayCaptureSource): Deal
with GPU process capture.
(WebKit::UserMediaCaptureManager::DisplayFactory::setShouldCaptureInGPUProcess):
* WebProcess/cocoa/UserMediaCaptureManager.h:

Source/WTF:

* Scripts/Preferences/WebPreferencesExperimental.yaml: Add UseGPUProcessForDisplayCapture.

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

11 months agoUse async NSSharingServicePicker menu if available
katherine_cheney@apple.com [Fri, 18 Feb 2022 22:40:32 +0000 (22:40 +0000)]
Use async NSSharingServicePicker menu if available
https://bugs.webkit.org/show_bug.cgi?id=236823
<rdar://problem/88858606>

Reviewed by Dean Jackson.

* UIProcess/Cocoa/WKShareSheet.h:
* UIProcess/Cocoa/WKShareSheet.mm:
(-[WKShareSheet presentWithShareDataArray:inRect:]):
(-[WKShareSheet canShowPickerAsync:]):
(-[WKShareSheet showPickerAsync:completionHandler:]):

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

11 months ago[LFC][IFC] Fix ideographic baseline for atomic inline level boxes with non-zero descent
zalan@apple.com [Fri, 18 Feb 2022 22:32:31 +0000 (22:32 +0000)]
[LFC][IFC] Fix ideographic baseline for atomic inline level boxes with non-zero descent
https://bugs.webkit.org/show_bug.cgi?id=236841

Reviewed by Antti Koivisto.

In most cases atomic inline level boxes have zero descent values. However the ideographic should
include the descent value (see RenderBox::baselinePosition)
This patch also removes the check for orthogonal content since it is already covered at LineLayout::updateLayoutBoxDimensions
(getting the correct baseline value that is).

* layout/formattingContexts/inline/InlineLineBoxBuilder.cpp:
(WebCore::Layout::LineBoxBuilder::adjustIdeographicBaselineIfApplicable):

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

11 months agoRevert 290166.
dino@apple.com [Fri, 18 Feb 2022 22:01:40 +0000 (22:01 +0000)]
Revert 290166.

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

11 months agoREGRESSION (r288201): ASSERTION FAILED: !allScriptExecutionContextsMap().contains...
youenn@apple.com [Fri, 18 Feb 2022 21:38:57 +0000 (21:38 +0000)]
REGRESSION (r288201): ASSERTION FAILED: !allScriptExecutionContextsMap().contains(m_identifier)
https://bugs.webkit.org/show_bug.cgi?id=236123
<rdar://problem/88472494>

Reviewed by Chris Dumez.

We sometimes call setupForReplace which reset m_gotFirstByte to false.
In that case, we may reuse the same client ID for two different documents.
To prevent this, we clear the clientID in setupForReplace.
For good measure, if service worker runtime flag is not on, we do not set the client ID at all.

Covered by existing WK1 tests.

* loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::setupForReplace):
(WebCore::DocumentLoader::loadMainResource):

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

11 months agoTemporarily adding JSON output for request queue to see if it works.
dino@apple.com [Fri, 18 Feb 2022 21:32:03 +0000 (21:32 +0000)]
Temporarily adding JSON output for request queue to see if it works.
Will remove it immediately after testing.

Unreviewed.

* template/en/default/queue.json.tmpl: Added.

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

11 months agoREGRESSION (r289990): [iOS] fast/backgrounds/gradient-background-shadow.html is consi...
jonlee@apple.com [Fri, 18 Feb 2022 21:29:52 +0000 (21:29 +0000)]
REGRESSION (r289990): [iOS] fast/backgrounds/gradient-background-shadow.html is consistently failing
https://bugs.webkit.org/show_bug.cgi?id=236854

Unreviewed. Expanding fuzzy range.
* fast/backgrounds/gradient-background-shadow.html:

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

11 months agoRe-import inert and <dialog> WPT
ntim@apple.com [Fri, 18 Feb 2022 21:21:28 +0000 (21:21 +0000)]
Re-import inert and <dialog> WPT
https://bugs.webkit.org/show_bug.cgi?id=236808

Reviewed by Simon Fraser.

Commit: https://github.com/web-platform-tests/wpt/commit/0d483a3bea340a2c60cb7a4add49eb63cbba2a64

LayoutTests/imported/w3c:

* web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-focus-shadow-double-nested-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-focus-shadow-delegatesfocus-expected.txt.
* web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-focus-shadow-double-nested.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-focus-shadow-delegatesfocus.html.
* web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-focus-shadow-expected.txt:
* web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-focus-shadow.html:
* web-platform-tests/html/semantics/interactive-elements/the-dialog-element/inert-focus-in-frames-expected.txt:
* web-platform-tests/html/semantics/interactive-elements/the-dialog-element/inert-focus-in-frames.html:
* web-platform-tests/html/semantics/interactive-elements/the-dialog-element/inert-label-focus.html:
* web-platform-tests/html/semantics/interactive-elements/the-dialog-element/inertness-with-modal-dialogs-and-iframes-expected.txt:
* web-platform-tests/html/semantics/interactive-elements/the-dialog-element/inertness-with-modal-dialogs-and-iframes.html:
* web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-scroll-height.html:
* web-platform-tests/html/semantics/interactive-elements/the-dialog-element/w3c-import.log:
* web-platform-tests/inert/dynamic-inert-on-focused-element.tentative-expected.txt: Added.
* web-platform-tests/inert/dynamic-inert-on-focused-element.tentative.html: Added.
* web-platform-tests/inert/inert-canvas-fallback-content.tentative-expected.txt: Added.
* web-platform-tests/inert/inert-canvas-fallback-content.tentative.html: Added.
* web-platform-tests/inert/inert-iframe-hittest.tentative-expected.txt: Added.
* web-platform-tests/inert/inert-iframe-hittest.tentative.html: Added.
* web-platform-tests/inert/inert-iframe-tabbing.tentative-expected.txt: Added.
* web-platform-tests/inert/inert-iframe-tabbing.tentative.html: Added.
* web-platform-tests/inert/inert-node-is-uneditable.tentative.html:
* web-platform-tests/inert/inert-with-modal-dialog-001.tentative-expected.txt: Added.
* web-platform-tests/inert/inert-with-modal-dialog-001.tentative.html: Added.
* web-platform-tests/inert/inert-with-modal-dialog-002.tentative-expected.txt: Added.
* web-platform-tests/inert/inert-with-modal-dialog-002.tentative.html: Added.
* web-platform-tests/inert/w3c-import.log:

LayoutTests:

* platform/ios-wk2/imported/w3c/web-platform-tests/inert/inert-iframe-hittest.tentative-expected.txt: Added.
* platform/ios-wk2/imported/w3c/web-platform-tests/inert/inert-iframe-tabbing.tentative-expected.txt: Added.

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

11 months agoReplace trac URLs in Introduction.md by equivalent GitHub URLs
rniwa@webkit.org [Fri, 18 Feb 2022 21:18:08 +0000 (21:18 +0000)]
Replace trac URLs in Introduction.md by equivalent GitHub URLs
https://bugs.webkit.org/show_bug.cgi?id=236826

Reviewed by Sihui Liu.

Replaced track links by equivalent Github links in Introduction.md.

Also replaced an example of a reference test since the previously referenced test
had been converted to a manual test, and updated documentations around preferences
as they had been refactored since this was originally written.

* Introduction.md:

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

11 months ago[XCBuild] "All Modules" workspace builds building out of order
emw@apple.com [Fri, 18 Feb 2022 21:12:51 +0000 (21:12 +0000)]
[XCBuild] "All Modules" workspace builds building out of order
https://bugs.webkit.org/show_bug.cgi?id=236813

Reviewed by Alexey Proskuryakov.

Source/ThirdParty/libwebrtc:

Nothing particularly interesting here, but should fix build failures on
Apple-BigSur-XCBuild-Release-Build <https://build.webkit.org/#/builders/463>.

* libwebrtc.xcodeproj/project.pbxproj: Ensure yasm is built before using it.

Source/WebCore/PAL:

Add product dependency on WTF, since PAL uses its headers without linking against it.

* PAL.xcodeproj/project.pbxproj:

Source/WebGPU:

Add product dependency on WTF. WGSL uses its headers without linking against it.

* Configurations/WGSL.xcconfig:
* WebGPU.xcodeproj/project.pbxproj:

Tools:

Add product dependency on WebKit. LayoutTestHelper uses headers from WebKit and lower
frameworks without linking against them.

* DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
* DumpRenderTree/mac/Configurations/LayoutTestHelper.xcconfig:

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

11 months agoServiceWorkerGlobalScope+PushAPI requires PushAPIEnabled
cdumez@apple.com [Fri, 18 Feb 2022 20:58:46 +0000 (20:58 +0000)]
ServiceWorkerGlobalScope+PushAPI requires PushAPIEnabled
https://bugs.webkit.org/show_bug.cgi?id=236846

Patch by Sam Sneddon <gsnedders@apple.com> on 2022-02-18
Reviewed by Chris Dumez.

Source/WebCore:

Tests: http/wpt/push-api/onpush-disabled.html
       http/wpt/push-api/onpush-enabled.html

* Modules/push-api/ServiceWorkerGlobalScope+PushAPI.idl:

LayoutTests:

* http/wpt/push-api/onpush-disabled-expected.txt: Added.
* http/wpt/push-api/onpush-disabled.html: Added.
* http/wpt/push-api/onpush-disabled.js: Added.
(test):
* http/wpt/push-api/onpush-enabled-expected.txt: Added.
* http/wpt/push-api/onpush-enabled.html: Added.
* http/wpt/push-api/onpush-enabled.js: Added.
(test):

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

11 months agoFix copy-paste error in r290129.
mark.lam@apple.com [Fri, 18 Feb 2022 20:42:39 +0000 (20:42 +0000)]
Fix copy-paste error in r290129.
https://bugs.webkit.org/show_bug.cgi?id=236847
rdar://problem/89155146

Reviewed by Yusuke Suzuki.

The heap server subspace name should be parameterized based on the interfaceName.

* bindings/scripts/CodeGeneratorJS.pm:
(GenerateImplementation):
* bindings/scripts/test/JS/JSDOMWindow.cpp:
(WebCore::JSDOMWindow::subspaceForImpl):
* bindings/scripts/test/JS/JSDedicatedWorkerGlobalScope.cpp:
(WebCore::JSDedicatedWorkerGlobalScope::subspaceForImpl):
* bindings/scripts/test/JS/JSExposedStar.cpp:
(WebCore::JSExposedStar::subspaceForImpl):
* bindings/scripts/test/JS/JSExposedToWorkerAndWindow.cpp:
(WebCore::JSExposedToWorkerAndWindow::subspaceForImpl):
* bindings/scripts/test/JS/JSPaintWorkletGlobalScope.cpp:
(WebCore::JSPaintWorkletGlobalScope::subspaceForImpl):
* bindings/scripts/test/JS/JSServiceWorkerGlobalScope.cpp:
(WebCore::JSServiceWorkerGlobalScope::subspaceForImpl):
* bindings/scripts/test/JS/JSShadowRealmGlobalScope.cpp:
(WebCore::JSShadowRealmGlobalScope::subspaceForImpl):
* bindings/scripts/test/JS/JSSharedWorkerGlobalScope.cpp:
(WebCore::JSSharedWorkerGlobalScope::subspaceForImpl):
* bindings/scripts/test/JS/JSTestCEReactions.cpp:
(WebCore::JSTestCEReactions::subspaceForImpl):
* bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp:
(WebCore::JSTestCEReactionsStringifier::subspaceForImpl):
* bindings/scripts/test/JS/JSTestCallTracer.cpp:
(WebCore::JSTestCallTracer::subspaceForImpl):
* bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp:
(WebCore::JSTestClassWithJSBuiltinConstructor::subspaceForImpl):
* bindings/scripts/test/JS/JSTestConditionalIncludes.cpp:
(WebCore::JSTestConditionalIncludes::subspaceForImpl):
* bindings/scripts/test/JS/JSTestConditionallyReadWrite.cpp:
(WebCore::JSTestConditionallyReadWrite::subspaceForImpl):
* bindings/scripts/test/JS/JSTestDOMJIT.cpp:
(WebCore::JSTestDOMJIT::subspaceForImpl):
* bindings/scripts/test/JS/JSTestDefaultToJSON.cpp:
(WebCore::JSTestDefaultToJSON::subspaceForImpl):
* bindings/scripts/test/JS/JSTestDefaultToJSONFilteredByExposed.cpp:
(WebCore::JSTestDefaultToJSONFilteredByExposed::subspaceForImpl):
* 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/JSTestDelegateToSharedSyntheticAttribute.cpp:
(WebCore::JSTestDelegateToSharedSyntheticAttribute::subspaceForImpl):
* bindings/scripts/test/JS/JSTestDomainSecurity.cpp:
(WebCore::JSTestDomainSecurity::subspaceForImpl):
* bindings/scripts/test/JS/JSTestEnabledBySetting.cpp:
(WebCore::JSTestEnabledBySetting::subspaceForImpl):
* bindings/scripts/test/JS/JSTestEnabledForContext.cpp:
(WebCore::JSTestEnabledForContext::subspaceForImpl):
* 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):
* bindings/scripts/test/JS/JSTestGenerateAddOpaqueRoot.cpp:
(WebCore::JSTestGenerateAddOpaqueRoot::subspaceForImpl):
* bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp:
(WebCore::JSTestGenerateIsReachable::subspaceForImpl):
* bindings/scripts/test/JS/JSTestGlobalObject.cpp:
(WebCore::JSTestGlobalObject::subspaceForImpl):
* bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp:
(WebCore::JSTestIndexedSetterNoIdentifier::subspaceForImpl):
* bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp:
(WebCore::JSTestIndexedSetterThrowingException::subspaceForImpl):
* bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp:
(WebCore::JSTestIndexedSetterWithIdentifier::subspaceForImpl):
* bindings/scripts/test/JS/JSTestInterface.cpp:
(WebCore::JSTestInterface::subspaceForImpl):
* bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp:
(WebCore::JSTestInterfaceLeadingUnderscore::subspaceForImpl):
* bindings/scripts/test/JS/JSTestIterable.cpp:
(WebCore::JSTestIterable::subspaceForImpl):
* bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp:
(WebCore::JSTestJSBuiltinConstructor::subspaceForImpl):
* bindings/scripts/test/JS/JSTestLegacyFactoryFunction.cpp:
(WebCore::JSTestLegacyFactoryFunction::subspaceForImpl):
* bindings/scripts/test/JS/JSTestLegacyNoInterfaceObject.cpp:
(WebCore::JSTestLegacyNoInterfaceObject::subspaceForImpl):
* bindings/scripts/test/JS/JSTestLegacyOverrideBuiltIns.cpp:
(WebCore::JSTestLegacyOverrideBuiltIns::subspaceForImpl):
* bindings/scripts/test/JS/JSTestMapLike.cpp:
(WebCore::JSTestMapLike::subspaceForImpl):
* bindings/scripts/test/JS/JSTestMapLikeWithOverriddenOperations.cpp:
(WebCore::JSTestMapLikeWithOverriddenOperations::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp:
(WebCore::JSTestNamedAndIndexedSetterNoIdentifier::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp:
(WebCore::JSTestNamedAndIndexedSetterThrowingException::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp:
(WebCore::JSTestNamedAndIndexedSetterWithIdentifier::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp:
(WebCore::JSTestNamedDeleterNoIdentifier::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp:
(WebCore::JSTestNamedDeleterThrowingException::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp:
(WebCore::JSTestNamedDeleterWithIdentifier::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp:
(WebCore::JSTestNamedDeleterWithIndexedGetter::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedGetterCallWith.cpp:
(WebCore::JSTestNamedGetterCallWith::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.cpp:
(WebCore::JSTestNamedGetterNoIdentifier::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.cpp:
(WebCore::JSTestNamedGetterWithIdentifier::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp:
(WebCore::JSTestNamedSetterNoIdentifier::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp:
(WebCore::JSTestNamedSetterThrowingException::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp:
(WebCore::JSTestNamedSetterWithIdentifier::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp:
(WebCore::JSTestNamedSetterWithIndexedGetter::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp:
(WebCore::JSTestNamedSetterWithIndexedGetterAndSetter::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedSetterWithLegacyOverrideBuiltIns.cpp:
(WebCore::JSTestNamedSetterWithLegacyOverrideBuiltIns::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedSetterWithLegacyUnforgeableProperties.cpp:
(WebCore::JSTestNamedSetterWithLegacyUnforgeableProperties::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns.cpp:
(WebCore::JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamespaceObject.cpp:
(WebCore::JSTestNamespaceObject::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNode.cpp:
(WebCore::JSTestNode::subspaceForImpl):
* bindings/scripts/test/JS/JSTestObj.cpp:
(WebCore::JSTestObj::subspaceForImpl):
* bindings/scripts/test/JS/JSTestOperationConditional.cpp:
(WebCore::JSTestOperationConditional::subspaceForImpl):
* bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp:
(WebCore::JSTestOverloadedConstructors::subspaceForImpl):
* bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp:
(WebCore::JSTestOverloadedConstructorsWithSequence::subspaceForImpl):
* bindings/scripts/test/JS/JSTestPluginInterface.cpp:
(WebCore::JSTestPluginInterface::subspaceForImpl):
* bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp:
(WebCore::JSTestPromiseRejectionEvent::subspaceForImpl):
* bindings/scripts/test/JS/JSTestReadOnlyMapLike.cpp:
(WebCore::JSTestReadOnlyMapLike::subspaceForImpl):
* bindings/scripts/test/JS/JSTestReadOnlySetLike.cpp:
(WebCore::JSTestReadOnlySetLike::subspaceForImpl):
* bindings/scripts/test/JS/JSTestReportExtraMemoryCost.cpp:
(WebCore::JSTestReportExtraMemoryCost::subspaceForImpl):
* bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:
(WebCore::JSTestSerializedScriptValueInterface::subspaceForImpl):
* bindings/scripts/test/JS/JSTestSetLike.cpp:
(WebCore::JSTestSetLike::subspaceForImpl):
* bindings/scripts/test/JS/JSTestSetLikeWithOverriddenOperations.cpp:
(WebCore::JSTestSetLikeWithOverriddenOperations::subspaceForImpl):
* bindings/scripts/test/JS/JSTestStringifier.cpp:
(WebCore::JSTestStringifier::subspaceForImpl):
* bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.cpp:
(WebCore::JSTestStringifierAnonymousOperation::subspaceForImpl):
* bindings/scripts/test/JS/JSTestStringifierNamedOperation.cpp:
(WebCore::JSTestStringifierNamedOperation::subspaceForImpl):
* bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.cpp:
(WebCore::JSTestStringifierOperationImplementedAs::subspaceForImpl):
* bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.cpp:
(WebCore::JSTestStringifierOperationNamedToString::subspaceForImpl):
* bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.cpp:
(WebCore::JSTestStringifierReadOnlyAttribute::subspaceForImpl):
* bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.cpp:
(WebCore::JSTestStringifierReadWriteAttribute::subspaceForImpl):
* bindings/scripts/test/JS/JSTestTaggedWrapper.cpp:
(WebCore::JSTestTaggedWrapper::subspaceForImpl):
* bindings/scripts/test/JS/JSTestTypedefs.cpp:
(WebCore::JSTestTypedefs::subspaceForImpl):
* bindings/scripts/test/JS/JSWorkerGlobalScope.cpp:
(WebCore::JSWorkerGlobalScope::subspaceForImpl):
* bindings/scripts/test/JS/JSWorkletGlobalScope.cpp:
(WebCore::JSWorkletGlobalScope::subspaceForImpl):

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

11 months ago[WebAuthn] Add credentialID to _WKWebAuthenticationAssertionResponse and userHandle...
j_pascoe@apple.com [Fri, 18 Feb 2022 20:37:00 +0000 (20:37 +0000)]
[WebAuthn] Add credentialID to _WKWebAuthenticationAssertionResponse and userHandle in getAllLocalAuthenticatorCredentials
https://bugs.webkit.org/show_bug.cgi?id=236657
rdar://problem/88979279

Reviewed by Brent Fulgham.

Source/WebKit:

Modified API tests to verify new fields present and populated.

* UIProcess/API/APIWebAuthenticationAssertionResponse.cpp:
(API::WebAuthenticationAssertionResponse::credentialID const):
* UIProcess/API/APIWebAuthenticationAssertionResponse.h:
* UIProcess/API/Cocoa/_WKWebAuthenticationAssertionResponse.h:
* UIProcess/API/Cocoa/_WKWebAuthenticationAssertionResponse.mm:
(-[_WKWebAuthenticationAssertionResponse credentialID]):
* UIProcess/API/Cocoa/_WKWebAuthenticationPanel.h:
* UIProcess/API/Cocoa/_WKWebAuthenticationPanel.mm:
(getAllLocalAuthenticatorCredentialsImpl):

Tools:

Adjusted existing API tests, GetAllCredential and MultipleAccounts, to test for new fields
being returned and that they match the values expected. These values stem from testUserEntityBundleBase64
and testAssertionMessageLongBase64.

* TestWebKitAPI/Tests/WebKitCocoa/_WKWebAuthenticationPanel.mm:
(-[TestWebAuthenticationPanelDelegate panel:selectAssertionResponse:source:completionHandler:]):
(TestWebKitAPI::TEST):

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

11 months ago[Cocoa] Make AVFoundationSPI.h robust against changes in system headers
jer.noble@apple.com [Fri, 18 Feb 2022 20:30:09 +0000 (20:30 +0000)]
[Cocoa] Make AVFoundationSPI.h robust against changes in system headers
https://bugs.webkit.org/show_bug.cgi?id=236787
<rdar://89076606>

Reviewed by Eric Carlson.

Source/WebCore:

Wrap call-sites in #if HAVE() macros.

* platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm:
(WebCore::CDMInstanceFairPlayStreamingAVFObjC::contentKeySession):
(WebCore::CDMInstanceFairPlayStreamingAVFObjC::sessionForRequest const):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::requestLicense):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::removeSessionData):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::didProvideRequest):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::protectionStatusForDisplayID const):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::ensureSessionOrGroup):

Source/WebCore/PAL:

Follow-up: build problems still persist on certain platforms, so the "robustness"
changes made previously were not robust enough. The guards in AVFoundationSPI.h were
intended to ensure the definitions were present even on builds where the official API
is not supported. However, just because the API is not supported does not mean it's not
present, which leads to duplicate-interface build errors.

Fix the AVFoundationSPI.h pragmas to only define the classes and methods where those
objects are supported, and in parallel, wrap implementations which use those objects
in those same guards (making these checks compile-time in addition to runtime).

Move the declarations inside the #else (IOW, !USE(APPLE_INTERNAL_SDK)) block above,
and wrap each declaration in the correct HAVE() macro.

* pal/spi/cocoa/AVFoundationSPI.h:

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

11 months agoKeep promise in scope when calling DeferredPromise::reject
commit-queue@webkit.org [Fri, 18 Feb 2022 20:27:21 +0000 (20:27 +0000)]
Keep promise in scope when calling DeferredPromise::reject
https://bugs.webkit.org/show_bug.cgi?id=236454

Patch by Gabriel Nava Marino <gnavamarino@apple.com> on 2022-02-18
Reviewed by Darin Adler.

Keep promise in scope when calling DeferredPromise::reject, as createDOMException
could go through a path that invokes GC on its owner and the promise.

* Modules/fetch/FetchBodyConsumer.cpp:
(WebCore::FetchBodyConsumer::resolveWithFormData):

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

11 months agoClient-set minimum effective device width is not respected if AllowViewportShrinkToFi...
timothy_horton@apple.com [Fri, 18 Feb 2022 20:21:56 +0000 (20:21 +0000)]
Client-set minimum effective device width is not respected if AllowViewportShrinkToFitContent is enabled
https://bugs.webkit.org/show_bug.cgi?id=236822

Reviewed by Wenson Hsieh.

Source/WebCore:

New test: fast/viewport/ios/shrink-to-fit-content-with-wider-minimum-device-width.html

Re-instate the functionality of -[WKWebView _setMinimumEffectiveDeviceWidth:]
after it was intentionally broken in favor of shrink-to-fit in r244849.

It turns out that clients sometimes need a larger manually-set minimum
than the one shrink-to-fit will choose, so instead of picking between
them, we just take the maximum of the two.

* page/ViewportConfiguration.cpp:
(WebCore::ViewportConfiguration::setViewLayoutSize):
Rename the client-set mEDW to `m_minimumEffectiveDeviceWidthForView`.

(WebCore::ViewportConfiguration::nativeWebpageParameters):
(WebCore::ViewportConfiguration::setMinimumEffectiveDeviceWidthForShrinkToFit):
Rename to shouldIgnoreMinimumEffectiveDeviceWidthForShrinkToFit to be clear that
it's only about ignoring the shrink-to-fit mEDW, not the client-set one.

Rename the shrink-to-fit-set mEDW to `m_minimumEffectiveDeviceWidthForShrinkToFit`.

(WebCore::ViewportConfiguration::description const):
(WebCore::ViewportConfiguration::setMinimumEffectiveDeviceWidth): Deleted.
* page/ViewportConfiguration.h:
(WebCore::ViewportConfiguration::minimumEffectiveDeviceWidth const):
The effective-mEDW now takes the client-set value into account in all cases,
taking the maximum-of-minimums as the effective value.

(WebCore::ViewportConfiguration::shouldIgnoreMinimumEffectiveDeviceWidthForShrinkToFit const):
(WebCore::ViewportConfiguration::shouldIgnoreMinimumEffectiveDeviceWidth const): Deleted.

Source/WebKit:

* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::setViewportConfigurationViewLayoutSize):
Reset the separate shrink-to-fit mEDW if shrink-to-fit is not engaged.

(WebKit::WebPage::shrinkToFitContent):

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

11 months ago[TextureMapper] Refactor TextureMapperPlatformLayerProxy into specializable implement...
commit-queue@webkit.org [Fri, 18 Feb 2022 20:17:45 +0000 (20:17 +0000)]
[TextureMapper] Refactor TextureMapperPlatformLayerProxy into specializable implementations
https://bugs.webkit.org/show_bug.cgi?id=236836

Patch by Zan Dobersek <zdobersek@igalia.com> on 2022-02-18
Reviewed by Alejandro G. Castro.

Turn TextureMapperPlatformLayerProxy into an abstract class from which
different specializations can then be derived. Current implementation is
spun off into the TextureMapperPlatformLayerProxyGL class, and type
traits specialization facilities are provided for future parallel
implementations (e.g. a DMABuf-consuming proxy class).

Existing uses of TextureMapperPlatformLayerProxy are updated to use
the TextureMapperPlatformLayerProxyGL class instead. Downcasting is
done as necessary, with asserts checking for the expected implementation
type.

No change in functionality, only refactoring existing code.

* platform/TextureMapper.cmake:
* platform/graphics/gstreamer/GStreamerVideoFrameHolder.h:
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::MediaPlayerPrivateGStreamer):
(WebCore::MediaPlayerPrivateGStreamer::pushTextureToCompositor):
(WebCore::MediaPlayerPrivateGStreamer::triggerRepaint):
(WebCore::MediaPlayerPrivateGStreamer::flushCurrentBuffer):
(WebCore::MediaPlayerPrivateGStreamer::pushNextHolePunchBuffer):
* platform/graphics/holepunch/MediaPlayerPrivateHolePunch.cpp:
(WebCore::MediaPlayerPrivateHolePunch::MediaPlayerPrivateHolePunch):
(WebCore::MediaPlayerPrivateHolePunch::pushNextHolePunchBuffer):
* platform/graphics/nicosia/NicosiaImageBufferPipe.cpp:
(Nicosia::NicosiaImageBufferPipeSource::handle):
* platform/graphics/nicosia/texmap/NicosiaContentLayerTextureMapperImpl.cpp:
(Nicosia::ContentLayerTextureMapperImpl::createFactory):
(Nicosia::ContentLayerTextureMapperImpl::ContentLayerTextureMapperImpl):
* platform/graphics/nicosia/texmap/NicosiaContentLayerTextureMapperImpl.h:
* platform/graphics/nicosia/texmap/NicosiaGCGLANGLELayer.cpp:
(Nicosia::GCGLANGLELayer::swapBuffersIfNeeded):
* platform/graphics/nicosia/texmap/NicosiaGCGLLayer.cpp:
(Nicosia::GCGLLayer::swapBuffersIfNeeded):
* platform/graphics/texmap/TextureMapperGCGLPlatformLayer.cpp:
(WebCore::TextureMapperGCGLPlatformLayer::TextureMapperGCGLPlatformLayer):
(WebCore::TextureMapperGCGLPlatformLayer::swapBuffersIfNeeded):
* platform/graphics/texmap/TextureMapperPlatformLayerProxy.cpp:
(WebCore::TextureMapperPlatformLayerProxy::TextureMapperPlatformLayerProxy): Deleted.
(WebCore::TextureMapperPlatformLayerProxy::~TextureMapperPlatformLayerProxy): Deleted.
(WebCore::TextureMapperPlatformLayerProxy::activateOnCompositingThread): Deleted.
(WebCore::TextureMapperPlatformLayerProxy::invalidate): Deleted.
(WebCore::TextureMapperPlatformLayerProxy::pushNextBuffer): Deleted.
(WebCore::TextureMapperPlatformLayerProxy::getAvailableBuffer): Deleted.
(WebCore::TextureMapperPlatformLayerProxy::appendToUnusedBuffers): Deleted.
(WebCore::TextureMapperPlatformLayerProxy::scheduleReleaseUnusedBuffers): Deleted.
(WebCore::TextureMapperPlatformLayerProxy::releaseUnusedBuffersTimerFired): Deleted.
(WebCore::TextureMapperPlatformLayerProxy::swapBuffer): Deleted.
(WebCore::TextureMapperPlatformLayerProxy::dropCurrentBufferWhilePreservingTexture): Deleted.
(WebCore::TextureMapperPlatformLayerProxy::scheduleUpdateOnCompositorThread): Deleted.
(WebCore::TextureMapperPlatformLayerProxy::compositorThreadUpdateTimerFired): Deleted.
* platform/graphics/texmap/TextureMapperPlatformLayerProxy.h:
(WebCore::TextureMapperPlatformLayerProxy::isGLBased const):
(WebCore::TextureMapperPlatformLayerProxy::isDMABufBased const):
(WebCore::TextureMapperPlatformLayerProxy::WTF_RETURNS_LOCK):
(WebCore::TextureMapperPlatformLayerProxy::WTF_GUARDED_BY_LOCK): Deleted.
* platform/graphics/texmap/TextureMapperPlatformLayerProxyGL.cpp: Copied from Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerProxy.cpp.
(WebCore::TextureMapperPlatformLayerProxyGL::~TextureMapperPlatformLayerProxyGL):
(WebCore::TextureMapperPlatformLayerProxyGL::activateOnCompositingThread):
(WebCore::TextureMapperPlatformLayerProxyGL::invalidate):
(WebCore::TextureMapperPlatformLayerProxyGL::pushNextBuffer):
(WebCore::TextureMapperPlatformLayerProxyGL::getAvailableBuffer):
(WebCore::TextureMapperPlatformLayerProxyGL::appendToUnusedBuffers):
(WebCore::TextureMapperPlatformLayerProxyGL::scheduleReleaseUnusedBuffers):
(WebCore::TextureMapperPlatformLayerProxyGL::releaseUnusedBuffersTimerFired):
(WebCore::TextureMapperPlatformLayerProxyGL::swapBuffer):
(WebCore::TextureMapperPlatformLayerProxyGL::dropCurrentBufferWhilePreservingTexture):
(WebCore::TextureMapperPlatformLayerProxyGL::scheduleUpdateOnCompositorThread):
(WebCore::TextureMapperPlatformLayerProxyGL::compositorThreadUpdateTimerFired):
* platform/graphics/texmap/TextureMapperPlatformLayerProxyGL.h: Copied from Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerProxy.h.

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

11 months agoGenerate compile_commands.json on macOS Builds
commit-queue@webkit.org [Fri, 18 Feb 2022 20:06:08 +0000 (20:06 +0000)]
Generate compile_commands.json on macOS Builds
https://bugs.webkit.org/show_bug.cgi?id=235686

Patch by Brandon Stewart <brandonstewart@apple.com> on 2022-02-18
Reviewed by Saam Barati.

Add support for generating compile_commands.json file to WebKit.

compile_commands.json can be used by tools like clangd to provide code complete,
refactoring, formatting, and cross references.

Steps to generate the compile commands file:
make r EXPORT_COMPILE_COMMANDS=YES
generate-compile-commands WebKitBuild/Release

.:

* Makefile.shared:

PerformanceTests:

* DecoderTest/Configurations/DebugRelease.xcconfig:
* MediaTime/Configurations/DebugRelease.xcconfig:

Source/bmalloc:

* Configurations/DebugRelease.xcconfig:

Source/JavaScriptCore:

* Configurations/DebugRelease.xcconfig:

Source/ThirdParty/ANGLE:

* Configurations/DebugRelease.xcconfig:

Source/ThirdParty/libwebrtc:

* Configurations/DebugRelease.xcconfig:

Source/WebCore:

* Configurations/DebugRelease.xcconfig:

Source/WebCore/PAL:

* Configurations/DebugRelease.xcconfig:

Source/WebGPU:

* Configurations/DebugRelease.xcconfig:

Source/WebInspectorUI:

* Configurations/DebugRelease.xcconfig:

Source/WebKit:

* Configurations/DebugRelease.xcconfig:
* UIProcess/API/C/WKPageUIClient.h:

Source/WebKitLegacy/mac:

* Configurations/DebugRelease.xcconfig:

Source/WTF:

* Configurations/DebugRelease.xcconfig:

Tools:

* ContentExtensionTester/Configurations/DebugRelease.xcconfig:
* DumpRenderTree/mac/Configurations/DebugRelease.xcconfig:
* ImageDiff/cg/Configurations/DebugRelease.xcconfig:
* MiniBrowser/Configurations/DebugRelease.xcconfig:
* Scripts/build-jsc:
* Scripts/build-webkit:
* Scripts/generate-compile-commands: Added.
* TestWebKitAPI/Configurations/DebugRelease.xcconfig:
* WebEditingTester/Configurations/DebugRelease.xcconfig:
* WebKitTestRunner/Configurations/DebugRelease.xcconfig:
* lldb/lldbWebKitTester/Configurations/DebugRelease.xcconfig:

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

11 months ago[git-webkit] Link issue to pull requests (Follow-up fix)
jbedard@apple.com [Fri, 18 Feb 2022 20:04:39 +0000 (20:04 +0000)]
[git-webkit] Link issue to pull requests (Follow-up fix)
https://bugs.webkit.org/show_bug.cgi?id=236339
<rdar://problem/88657772>

Reviewed by Stephanie Lewis.

* Tools/Scripts/libraries/webkitscmpy/setup.py: Bump version.
* Tools/Scripts/libraries/webkitscmpy/webkitscmpy/__init__.py: Ditto.
* Tools/Scripts/libraries/webkitscmpy/webkitscmpy/program/pull_request.py:
(PullRequest.main): Re-open associated closed PRs.
* Tools/Scripts/libraries/webkitscmpy/webkitscmpy/test/pull_request_unittest.py:

link: https://commits.webkit.org/247487@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@290148 268f45cc-cd09-0410-ab3c-d52691b4dbfc

11 months agoAdd test coverage for data migration introduced in r289878
sihui_liu@apple.com [Fri, 18 Feb 2022 19:47:39 +0000 (19:47 +0000)]
Add test coverage for data migration introduced in r289878
https://bugs.webkit.org/show_bug.cgi?id=236825

Reviewed by Chris Dumez.

Ensure website data fetch and removal will examine both old paths (custom storage paths) and new paths (under
general storage directory). Also, ensure that data is migrated from old paths to new paths when an origin is
visited during data fetch and removal.

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm:
(TEST):
* TestWebKitAPI/Tests/WebKitCocoa/general-storage-directory-indexeddb.sqlite3: Added.
* TestWebKitAPI/Tests/WebKitCocoa/general-storage-directory-localstorage.sqlite3: Added.
* TestWebKitAPI/Tests/WebKitCocoa/general-storage-directory.origin: Added.

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

11 months agoAdd an InstallCoordination webpushd backend
beidson@apple.com [Fri, 18 Feb 2022 19:01:21 +0000 (19:01 +0000)]
Add an InstallCoordination webpushd backend
https://bugs.webkit.org/show_bug.cgi?id=233714

Reviewed by Alex Christensen.

Source/WebCore/PAL:

Expose "toHexString" so we can SHA256 an arbitrary string to a hex representation.

* pal/crypto/CryptoDigest.h:
* pal/crypto/commoncrypto/CryptoDigestCommonCrypto.cpp:
(PAL::CryptoDigest::toHexString):

Source/WebKit:

Covered by API tests.

This patch lets the iOS build create a placeholder app bundle to represent a registration using InstallCoordination.

* Configurations/webpushd.xcconfig:
* WebKit.xcodeproj/project.pbxproj:

* webpushd/AppBundleRequest.mm:
(WebPushD::AppBundleRequest::start): Use the ICAppBundle implementation when appropriate.

* webpushd/ICAppBundle.h: Copied from Source/WebKit/webpushd/PushAppBundle.h.
(WebPushD::ICAppBundle::create):

* webpushd/ICAppBundle.mm: Added.
(-[WebAppInstallCoordinatorObserver initWithICAppBundle:]):
(-[WebAppInstallCoordinatorObserver coordinatorDidCompleteSuccessfully:forApplicationRecord:]):
(-[WebAppInstallCoordinatorObserver coordinator:canceledWithReason:client:]):
(WebPushD::broadcastDebugMessage):
(WebPushD::ICAppBundle::ICAppBundle):
(WebPushD::encodeOriginStringForBundleIdentifier):
(WebPushD::originStringFromEncodedBundleIdentifier):
(WebPushD::bundlePrefixForHostAppIdentifier):
(WebPushD::bundleNameForOriginStringAndHostAppIdentifier):
(WebPushD::ICAppBundle::getOriginsWithRegistrations):
(WebPushD::ICAppBundle::getBundleIdentifier):
(WebPushD::ICAppBundle::checkForExistingBundle):
(WebPushD::ICAppBundle::deleteExistingBundle):
(WebPushD::ICAppBundle::didDeleteExistingBundleWithError):
(WebPushD::ICAppBundle::stop):
(WebPushD::ICAppBundle::createBundle):
(WebPushD::ICAppBundle::bundleCreationSucceeded):
(WebPushD::ICAppBundle::bundleCreationFailed):

* webpushd/InstallCoordinationSPI.h: Added.
* webpushd/LaunchServicesSPI.h: Copied from Source/WebKit/webpushd/PushAppBundle.h.
* webpushd/PushAppBundle.h:

* webpushd/WebPushDaemon.mm:
(WebPushD::Daemon::getOriginsWithPushAndNotificationPermissions): Use the ICAppBundle implementation when appropriate.

Source/WTF:

* wtf/PlatformEnableCocoa.h:

Tools:

* TestWebKitAPI/Tests/WebKitCocoa/WebPushDaemon.mm:

WebKitLibraries:

* WebKitPrivateFrameworkStubs/iOS/15/InstallCoordination.framework/InstallCoordination.tbd: Added.

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

11 months agoRemove ANGLE-static.xcconfig
sbarati@apple.com [Fri, 18 Feb 2022 18:59:32 +0000 (18:59 +0000)]
Remove ANGLE-static.xcconfig
https://bugs.webkit.org/show_bug.cgi?id=236827

Reviewed by Dean Jackson.

It was unused.

* ANGLE.xcodeproj/project.pbxproj:
* Configurations/ANGLE-static.xcconfig: Removed.
* Configurations/Base.xcconfig:

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

11 months agoChange domain used to hold whether CaptivePortalMode is active
commit-queue@webkit.org [Fri, 18 Feb 2022 18:54:31 +0000 (18:54 +0000)]
Change domain used to hold whether CaptivePortalMode is active
https://bugs.webkit.org/show_bug.cgi?id=236793

Patch by Gavin Phillips <gavin.p@apple.com> on 2022-02-18
Reviewed by Per Arne Vollan.

We need to update the location specifying whether CaptivePortalMode is active
to fall within the users domain.

* UIProcess/API/Cocoa/_WKSystemPreferences.mm:
(+[_WKSystemPreferences isCaptivePortalModeEnabled]):
(+[_WKSystemPreferences setCaptivePortalModeEnabled:]):

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

11 months agoFollow up to b236802. Unreviewed.
jonlee@apple.com [Fri, 18 Feb 2022 18:52:06 +0000 (18:52 +0000)]
Follow up to b236802. Unreviewed.

* platform/ios/TestExpectations: Remove the test expectations.

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

11 months ago[iOS] css/css-color/t422-rgba-onscreen-b.xht and css/css-color/t425-hsla-onscreen...
jonlee@apple.com [Fri, 18 Feb 2022 18:49:59 +0000 (18:49 +0000)]
[iOS] css/css-color/t422-rgba-onscreen-b.xht and css/css-color/t425-hsla-onscreen-b.xht are consistently failing
https://bugs.webkit.org/show_bug.cgi?id=236802

Reviewed by Dean Jackson.

* web-platform-tests/css/css-color/t422-rgba-onscreen-b.xht: Expand maxDifference range to accommodate iOS.
* web-platform-tests/css/css-color/t425-hsla-onscreen-b.xht:

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

11 months agoUnreviewed gardening for GPU Process bot.
jonlee@apple.com [Fri, 18 Feb 2022 18:15:16 +0000 (18:15 +0000)]
Unreviewed gardening for GPU Process bot.

* TestExpectations:
* fast/css/counters/counter-list-item.html: Add fuzzy data.
* gpu-process/TestExpectations:
* platform/ios-wk2/TestExpectations:
* platform/ios/TestExpectations:

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

11 months ago[CMake] Cannot find OpenGL when system provides opengl.pc instead of gl.pc
aperez@igalia.com [Fri, 18 Feb 2022 18:12:06 +0000 (18:12 +0000)]
[CMake] Cannot find OpenGL when system provides opengl.pc instead of gl.pc
https://bugs.webkit.org/show_bug.cgi?id=236592

Reviewed by Michael Catanzaro.

.:

* Source/cmake/FindOpenGL.cmake: Rewrite to use imported targets, try the "opengl" and "glx"
pkg-config modules first, otherwise keep the existing logic that tried the "gl" pkg-config
module with fallbacks to find_path/find_library.
* Source/cmake/OptionsGTK.cmake: Check for the presence of the OpenGL::GLX target instead of
te GLX_FOUND variable.

Source/ThirdParty/ANGLE:

* PlatformGTK.cmake: Use the OpenGL::OpenGL imported target instead of the
OPENGL_LIBRARIES variable.
* PlatformWPE.cmake: Remove linking againt OpenGL libraries; the WPE port is not
supposed to link to any of them directly.

Source/WebCore:

* CMakeLists.txt: Use the OpenGL::OpenGL and OpenGL::GLX imported targets instead of variables.
* platform/graphics/GLContext.cpp: Move here includes for the GL headers.
* platform/graphics/GLContext.h: Remove includes for the GL headers, none of their
declarations are used here; instead include only the needed EGL headers to get the
definition of EGLNativeWindowType.

Source/WebKit:

* CMakeLists.txt: Remove usage of the OPENGL_ variables for the WebKit target, which is
uneeded because it links to WebCore, which transitively pulls the needed libraries now
that imported targets are being used.

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

11 months agoimported/w3c/web-platform-tests/css/css-sizing/range-percent-intrinsic-size-* fail
jonlee@apple.com [Fri, 18 Feb 2022 18:10:35 +0000 (18:10 +0000)]
imported/w3c/web-platform-tests/css/css-sizing/range-percent-intrinsic-size-* fail
https://bugs.webkit.org/show_bug.cgi?id=203514

Unreviewed.
* TestExpectations: No longer happening. Removing.

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

11 months ago[iOS][Modern Media Controls] Add an alternative overflow icon
peng.liu6@apple.com [Fri, 18 Feb 2022 17:32:52 +0000 (17:32 +0000)]
[iOS][Modern Media Controls] Add an alternative overflow icon
https://bugs.webkit.org/show_bug.cgi?id=236729

Reviewed by Devin Rousso.

Add a new overflow icon. By default, the media controls will use the
original overflow icon. So this patch does not change the appearance of
the media controls.

* Modules/modern-media-controls/controls/icon-service.js:
* Modules/modern-media-controls/controls/layout-traits.js:
(LayoutTraits.prototype.overflowButtonHasCircle):
* Modules/modern-media-controls/controls/overflow-button.js:
(OverflowButton):
* Modules/modern-media-controls/images/iOS/OverflowCircle.svg: Added.

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

11 months ago[EME][GStreamer][Thunder] Add video/x-h265 caps to Thunder decryptor
calvaris@igalia.com [Fri, 18 Feb 2022 17:29:54 +0000 (17:29 +0000)]
[EME][GStreamer][Thunder] Add video/x-h265 caps to Thunder decryptor
https://bugs.webkit.org/show_bug.cgi?id=236833

Reviewed by Philippe Normand.

This patch is authored by Eugene Mutavchi <Ievgen_Mutavchi@comcast.com>
See: https://github.com/WebPlatformForEmbedded/WPEWebKit/pull/790

* platform/graphics/gstreamer/eme/WebKitThunderDecryptorGStreamer.cpp:

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

11 months agoUse more StringView during CSP parsing
cdumez@apple.com [Fri, 18 Feb 2022 17:25:33 +0000 (17:25 +0000)]
Use more StringView during CSP parsing
https://bugs.webkit.org/show_bug.cgi?id=236784

Reviewed by Darin Adler.

* page/csp/ContentSecurityPolicy.cpp:
(WebCore::ContentSecurityPolicy::reportDirectiveAsSourceExpression const):
* page/csp/ContentSecurityPolicy.h:
* page/csp/ContentSecurityPolicySourceList.cpp:
(WebCore::isCSPDirectiveName):
(WebCore::ContentSecurityPolicySourceList::parse):
(WebCore::ContentSecurityPolicySourceList::parseScheme):
(WebCore::ContentSecurityPolicySourceList::parseHost):
* page/csp/ContentSecurityPolicySourceList.h:

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

11 months agoAX: AccessibilityScrollView should be resilient to destruction of underlying scroll...
tyler_w@apple.com [Fri, 18 Feb 2022 16:47:36 +0000 (16:47 +0000)]
AX: AccessibilityScrollView should be resilient to destruction of underlying scroll view
https://bugs.webkit.org/show_bug.cgi?id=236750

Reviewed by Andres Gonzalez.

Sometimes we can get into a state where we have a valid AccessibilityScrollView,
backed by an iframe, with a destroyed WeakPtr<ScrollView> m_scrollView. When this
happens, all of the content inside the iframe becomes inaccessible. We need to handle
the case where an iframe changes the frame and document it holds (e.g. respect the current frame in
HTMLFrameOwner::contentFrame, which can change).

This patch fixes this by caching a WeakPtr<HTMLFrameOwnerElement> when an AccessibilityScrollView
is created. A new method currentScrollView() has been added to prefer the original m_scrollView, and
fallback to the scrollview represented by the frame owner element if m_scrollView has been destroyed.

Thanks to Andres Gonzalez for helping to find and fix this issue.

* accessibility/AccessibilityScrollView.cpp:
(WebCore::AccessibilityScrollView::AccessibilityScrollView):
Cache the frame owner of the provided ScrollView* in new
m_frameOwnerElement field.
(WebCore::AccessibilityScrollView::detachRemoteParts):
Detach new m_frameOwnerElement field.
(WebCore::AccessibilityScrollView::currentScrollView const):
Added.

(WebCore::AccessibilityScrollView::isAttachment const):
(WebCore::AccessibilityScrollView::platformWidget const):
(WebCore::AccessibilityScrollView::updateScrollbars):
(WebCore::AccessibilityScrollView::computeAccessibilityIsIgnored const):
(WebCore::AccessibilityScrollView::addChildren):
(WebCore::AccessibilityScrollView::webAreaObject const):
(WebCore::AccessibilityScrollView::elementRect const):
(WebCore::AccessibilityScrollView::document const):
(WebCore::AccessibilityScrollView::documentFrameView const):
(WebCore::AccessibilityScrollView::parentObject const):
(WebCore::AccessibilityScrollView::scrollTo const):
Use new currentScrollView() method instead of directly using m_scrollView.

(WebCore::AccessibilityScrollView::widgetForAttachmentView const):
Inlined in header.
(WebCore::AccessibilityScrollView::parentObjectIfExists const):
Inlined in header as call to parentObject() since these methods were duplicated.
(WebCore::AccessibilityScrollView::getScrollableAreaIfScrollable const):
Inlined in header.
* accessibility/AccessibilityScrollView.h:

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

11 months agoSplit IsoSubspace into a GCClient allocator used by VM and a backend managed by Heap.
mark.lam@apple.com [Fri, 18 Feb 2022 16:43:58 +0000 (16:43 +0000)]
Split IsoSubspace into a GCClient allocator used by VM and a backend managed by Heap.
https://bugs.webkit.org/show_bug.cgi?id=233878
rdar://problem/86108394

Reviewed by Yusuke Suzuki.

Source/JavaScriptCore:

1. Add a useGlobalGC option.  We're currently only using this to guard some code
   for GlobalGC.  We're not ready to run with GlobalGC enabled yet.

2. Create a new GCClient namespace in JSC.  The Heap is now split into 2 parts:
   a. VM / GCClient / client side: JSC::GCClient::Heap
   b. GlobalGC / server side: JSC::Heap

   The eventual goal is to have many GCClient Heaps backed by a singleton server
   Heap.  Currently, we still have a 1 to 1 correspondence between the client and
   server side i.e. VM embeds both one instance each of GCClient::Heap and Heap.

3. Split IsoSubspace into:
   a. VM / GCClient / client side: JSC::GCClient::IsoSubspace
   b. GlobalGC / server side: JSC::IsoSubspace

   The client side will now manage a LocalAllocator for the IsoSubspace.

   The eventual goal is to have many GCClient::IsoSubspace allocators fed from
   a server IsoSubspace.  Currently, we still have a 1 to 1 correspondence
   between the client and server side.  GCClient::IsoSubspace instances will be
   managed by GCClient::Heap.  Server side IsoSubspaces continue to be managed
   by Heap.

3. IsoSubspacePerVM is also now client-server aware.

   Previously, IsoSubspacePerVM was relying on AutoremovingIsoSubspace to
   "automatically" unregister IsoSubspaces from IsoSubspacePerVM via its
   destructor.  However, there is a bug where the AutoremovingIsoSubspace is
   never associated with the VM, and there is nothing that will trigger its
   destruction when the VM shuts down.

   This patch fixes this issue by having IsoSubspacePerVM register with the VM's
   GCClient::Heap and Heap.  On destruction, those Heaps will now be aware of
   the IsoSubspacePerVM in use, and will tell the IsoSubspacePerVM to release
   the associated IsoSubspaces.

   The IsoSubspacePerVM::AutoremovingIsoSubspace class is now removed since it
   is not needed.

4. Previously, in Heap, we have some SpaceAndSet members that were named simply as
   "Space".  Renamed these to be "SpaceAndSet" explicitly to more accurately
   reflect what they are.

* API/JSAPIGlobalObject.h:
* API/JSAPIValueWrapper.h:
* API/JSAPIWrapperObject.mm:
(JSC::JSCallbackObject<JSAPIWrapperObject>::subspaceForImpl):
* API/JSCallbackConstructor.h:
* API/JSCallbackFunction.h:
* API/JSCallbackObject.cpp:
(JSC::JSCallbackObject<JSNonFinalObject>::subspaceForImpl):
(JSC::JSCallbackObject<JSGlobalObject>::subspaceForImpl):
* API/JSCallbackObject.h:
* API/ObjCCallbackFunction.h:
(JSC::ObjCCallbackFunction::subspaceFor):
* API/glib/JSAPIWrapperGlobalObject.cpp:
(JSC::JSCallbackObject<JSAPIWrapperGlobalObject>::subspaceForImpl):
* API/glib/JSAPIWrapperObjectGLib.cpp:
(JSC::JSCallbackObject<JSAPIWrapperObject>::subspaceForImpl):
* API/glib/JSCCallbackFunction.h:
* bytecode/CodeBlock.cpp:
(JSC::CodeBlock::visitChildren):
(JSC::CodeBlock::finalizeUnconditionally):
* bytecode/EvalCodeBlock.h:
* bytecode/ExecutableToCodeBlockEdge.h:
* bytecode/FunctionCodeBlock.h:
* bytecode/ModuleProgramCodeBlock.h:
* bytecode/ProgramCodeBlock.h:
* bytecode/UnlinkedEvalCodeBlock.h:
* bytecode/UnlinkedFunctionCodeBlock.h:
* bytecode/UnlinkedFunctionExecutable.cpp:
(JSC::UnlinkedFunctionExecutable::unlinkedCodeBlockFor):
(JSC::UnlinkedFunctionExecutable::finalizeUnconditionally):
* bytecode/UnlinkedFunctionExecutable.h:
* bytecode/UnlinkedModuleProgramCodeBlock.h:
* bytecode/UnlinkedProgramCodeBlock.h:
* debugger/DebuggerScope.h:
* heap/Heap.cpp:
(JSC::Heap::Heap):
(JSC::Heap::~Heap):
(JSC::Heap::finalizeUnconditionalFinalizers):
(JSC::Heap::deleteAllUnlinkedCodeBlocks):
(JSC::GCClient::Heap::Heap):
(JSC::GCClient::Heap::~Heap):
* heap/Heap.h:
(JSC::Heap::lock):
(JSC::Heap::forEachCodeBlockSpace):
(JSC::Heap::forEachScriptExecutableSpace):
(JSC::GCClient::Heap::server):
* heap/HeapInlines.h:
(JSC::GCClient::Heap::vm const):
* heap/IsoSubspace.cpp:
(JSC::IsoSubspace::IsoSubspace):
(JSC::GCClient::IsoSubspace::IsoSubspace):
* heap/IsoSubspace.h:
(JSC::GCClient::IsoSubspace::cellSize):
(JSC::IsoSubspace::allocatorFor): Deleted.
* heap/IsoSubspaceInlines.h:
(JSC::IsoSubspace::allocate): Deleted.
* heap/IsoSubspacePerVM.cpp:
(JSC::IsoSubspacePerVM::IsoSubspacePerVM):
(JSC::IsoSubspacePerVM::isoSubspaceforHeap):
(JSC::IsoSubspacePerVM::clientIsoSubspaceforVM):
(JSC::IsoSubspacePerVM::releaseIsoSubspace):
(JSC::IsoSubspacePerVM::releaseClientIsoSubspace):
(): Deleted.
(JSC::IsoSubspacePerVM::forVM): Deleted.
* heap/IsoSubspacePerVM.h:
* heap/LocalAllocator.cpp:
(JSC::LocalAllocator::allocateSlowCase):
(JSC::LocalAllocator::tryAllocateWithoutCollecting):
(JSC::LocalAllocator::doTestCollectionsIfNeeded):
* heap/LocalAllocator.h:
(JSC::LocalAllocator::directory const):
* heap/MarkedBlock.cpp:
(JSC::MarkedBlock::Handle::stopAllocating):
* heap/MutatorState.h:
* inspector/JSInjectedScriptHost.h:
* inspector/JSInjectedScriptHostPrototype.h:
* inspector/JSJavaScriptCallFrame.h:
* inspector/JSJavaScriptCallFramePrototype.h:
* runtime/AggregateErrorPrototype.h:
* runtime/ArrayIteratorPrototype.h:
* runtime/AsyncFromSyncIteratorPrototype.h:
* runtime/AsyncFunctionPrototype.h:
* runtime/AsyncGeneratorFunctionPrototype.h:
* runtime/AsyncGeneratorPrototype.h:
* runtime/AsyncIteratorPrototype.h:
* runtime/AtomicsObject.h:
* runtime/BigIntObject.h:
* runtime/BigIntPrototype.h:
* runtime/BooleanObject.h:
(JSC::BooleanObject::subspaceFor):
* runtime/BrandedStructure.h:
* runtime/ClonedArguments.h:
* runtime/ConsoleObject.h:
* runtime/CustomGetterSetter.h:
(JSC::CustomGetterSetter::subspaceFor):
* runtime/DOMAttributeGetterSetter.h:
* runtime/DateInstance.h:
* runtime/DatePrototype.h:
* runtime/ErrorInstance.h:
(JSC::ErrorInstance::subspaceFor):
* runtime/ErrorPrototype.h:
* runtime/EvalExecutable.h:
(JSC::EvalExecutable::subspaceFor):
* runtime/Exception.h:
* runtime/FinalizationRegistryPrototype.h:
* runtime/FunctionExecutable.h:
* runtime/FunctionRareData.h:
* runtime/GeneratorFunctionPrototype.h:
* runtime/GeneratorPrototype.h:
* runtime/GetterSetter.h:
* runtime/HashMapImpl.h:
* runtime/InternalFunction.h:
(JSC::InternalFunction::subspaceFor):
* runtime/IntlCollator.h:
* runtime/IntlCollatorPrototype.h:
* runtime/IntlDateTimeFormat.h:
* runtime/IntlDateTimeFormatPrototype.h:
* runtime/IntlDisplayNames.h:
* runtime/IntlDisplayNamesPrototype.h:
* runtime/IntlListFormat.h:
* runtime/IntlListFormatPrototype.h:
* runtime/IntlLocale.h:
* runtime/IntlLocalePrototype.h:
* runtime/IntlNumberFormat.h:
* runtime/IntlNumberFormatPrototype.h:
* runtime/IntlObject.h:
* runtime/IntlPluralRules.h:
* runtime/IntlPluralRulesPrototype.h:
* runtime/IntlRelativeTimeFormat.h:
* runtime/IntlRelativeTimeFormatPrototype.h:
* runtime/IntlSegmentIterator.h:
* runtime/IntlSegmentIteratorPrototype.h:
* runtime/IntlSegmenter.h:
* runtime/IntlSegmenterPrototype.h:
* runtime/IntlSegments.h:
* runtime/IntlSegmentsPrototype.h:
* runtime/IteratorPrototype.h:
* runtime/JSArray.h:
(JSC::JSArray::subspaceFor):
* runtime/JSArrayBuffer.h:
* runtime/JSArrayBufferPrototype.h:
* runtime/JSArrayIterator.h:
* runtime/JSAsyncGenerator.h:
* runtime/JSBigInt.h:
* runtime/JSBoundFunction.h:
* runtime/JSCallee.h:
(JSC::JSCallee::subspaceFor):
* runtime/JSCustomGetterFunction.h:
* runtime/JSCustomSetterFunction.h:
* runtime/JSDataView.h:
* runtime/JSDataViewPrototype.h:
* runtime/JSFinalizationRegistry.h:
* runtime/JSFunction.h:
(JSC::JSFunction::subspaceFor):
* runtime/JSGenerator.h:
* runtime/JSGenericTypedArrayView.h:
* runtime/JSGenericTypedArrayViewPrototype.h:
* runtime/JSGlobalLexicalEnvironment.h:
* runtime/JSGlobalObject.h:
(JSC::JSGlobalObject::subspaceFor):
* runtime/JSMap.h:
* runtime/JSMapIterator.h:
* runtime/JSModuleLoader.h:
* runtime/JSModuleNamespaceObject.h:
* runtime/JSModuleRecord.h:
* runtime/JSNativeStdFunction.h:
* runtime/JSONObject.h:
* runtime/JSPromise.h:
(JSC::JSPromise::subspaceFor):
* runtime/JSPromisePrototype.h:
(JSC::JSPromisePrototype::subspaceFor):
* runtime/JSPropertyNameEnumerator.h:
* runtime/JSProxy.h:
(JSC::JSProxy::subspaceFor):
* runtime/JSRemoteFunction.h:
* runtime/JSScriptFetchParameters.h:
* runtime/JSScriptFetcher.h:
* runtime/JSSet.h:
* runtime/JSSetIterator.h:
* runtime/JSSourceCode.h:
* runtime/JSString.h:
(JSC::JSString::subspaceFor):
* runtime/JSStringIterator.h:
* runtime/JSTemplateObjectDescriptor.h:
* runtime/JSTypedArrayViewPrototype.h:
* runtime/JSWeakObjectRef.h:
* runtime/JSWithScope.h:
* runtime/MapIteratorPrototype.h:
* runtime/MapPrototype.h:
* runtime/MathObject.h:
* runtime/ModuleProgramExecutable.h:
* runtime/NativeErrorPrototype.h:
* runtime/NativeExecutable.h:
* runtime/NumberObject.h:
(JSC::NumberObject::subspaceFor):
* runtime/ObjectPrototype.h:
* runtime/OptionsList.h:
* runtime/ProgramExecutable.h:
* runtime/PropertyTable.h:
* runtime/ProxyObject.h:
* runtime/ProxyRevoke.h:
* runtime/ReflectObject.h:
* runtime/RegExp.h:
* runtime/RegExpObject.h:
* runtime/RegExpPrototype.h:
* runtime/RegExpStringIteratorPrototype.h:
* runtime/ScopedArguments.h:
* runtime/ScopedArgumentsTable.h:
* runtime/ScriptExecutable.cpp:
(JSC::ScriptExecutable::clearCode):
(JSC::ScriptExecutable::installCode):
* runtime/SetIteratorPrototype.h:
* runtime/SetPrototype.h:
* runtime/ShadowRealmObject.h:
* runtime/ShadowRealmPrototype.h:
* runtime/SparseArrayValueMap.h:
* runtime/StrictEvalActivation.h:
* runtime/StringIteratorPrototype.h:
* runtime/StringObject.h:
(JSC::StringObject::subspaceFor):
* runtime/Structure.h:
(JSC::Structure::subspaceFor):
* runtime/StructureChain.h:
* runtime/StructureRareData.h:
* runtime/Symbol.h:
* runtime/SymbolObject.h:
* runtime/SymbolPrototype.h:
* runtime/SymbolTable.h:
* runtime/TemporalCalendar.h:
* runtime/TemporalCalendarPrototype.h:
* runtime/TemporalDuration.h:
* runtime/TemporalDurationPrototype.h:
* runtime/TemporalInstant.h:
* runtime/TemporalInstantPrototype.h:
* runtime/TemporalNow.h:
* runtime/TemporalObject.h:
* runtime/TemporalPlainTime.h:
* runtime/TemporalPlainTimePrototype.h:
* runtime/TemporalTimeZone.h:
* runtime/TemporalTimeZonePrototype.h:
* runtime/VM.cpp:
(JSC::VM::VM):
* runtime/VM.h:
(JSC::VM::codeBlockSpace):
(JSC::VM::functionExecutableSpace):
(JSC::VM::programExecutableSpace):
(JSC::VM::unlinkedFunctionExecutableSpace):
(JSC::VM::arraySpace): Deleted.
(JSC::VM::bigIntSpace): Deleted.
(JSC::VM::calleeSpace): Deleted.
(JSC::VM::clonedArgumentsSpace): Deleted.
(JSC::VM::customGetterSetterSpace): Deleted.
(JSC::VM::dateInstanceSpace): Deleted.
(JSC::VM::domAttributeGetterSetterSpace): Deleted.
(JSC::VM::exceptionSpace): Deleted.
(JSC::VM::executableToCodeBlockEdgeSpace): Deleted.
(JSC::VM::functionSpace): Deleted.
(JSC::VM::getterSetterSpace): Deleted.
(JSC::VM::globalLexicalEnvironmentSpace): Deleted.
(JSC::VM::internalFunctionSpace): Deleted.
(JSC::VM::jsProxySpace): Deleted.
(JSC::VM::nativeExecutableSpace): Deleted.
(JSC::VM::numberObjectSpace): Deleted.
(JSC::VM::plainObjectSpace): Deleted.
(JSC::VM::promiseSpace): Deleted.
(JSC::VM::propertyNameEnumeratorSpace): Deleted.
(JSC::VM::propertyTableSpace): Deleted.
(JSC::VM::regExpSpace): Deleted.
(JSC::VM::regExpObjectSpace): Deleted.
(JSC::VM::ropeStringSpace): Deleted.
(JSC::VM::scopedArgumentsSpace): Deleted.
(JSC::VM::sparseArrayValueMapSpace): Deleted.
(JSC::VM::stringSpace): Deleted.
(JSC::VM::stringObjectSpace): Deleted.
(JSC::VM::structureChainSpace): Deleted.
(JSC::VM::structureRareDataSpace): Deleted.
(JSC::VM::structureSpace): Deleted.
(JSC::VM::brandedStructureSpace): Deleted.
(JSC::VM::symbolTableSpace): Deleted.
* runtime/WeakMapImpl.h:
(JSC::WeakMapImpl::subspaceFor):
* runtime/WeakMapPrototype.h:
* runtime/WeakObjectRefPrototype.h:
* runtime/WeakSetPrototype.h:
* wasm/js/JSToWasmICCallee.h:
* wasm/js/JSWebAssembly.h:
* wasm/js/JSWebAssemblyException.h:
* wasm/js/JSWebAssemblyGlobal.h:
* wasm/js/JSWebAssemblyInstance.h:
* wasm/js/JSWebAssemblyMemory.h:
* wasm/js/JSWebAssemblyModule.h:
* wasm/js/JSWebAssemblyTable.h:
* wasm/js/JSWebAssemblyTag.h:
* wasm/js/WebAssemblyCompileErrorPrototype.h:
* wasm/js/WebAssemblyExceptionPrototype.h:
* wasm/js/WebAssemblyFunction.h:
* wasm/js/WebAssemblyGlobalPrototype.h:
* wasm/js/WebAssemblyInstancePrototype.h:
* wasm/js/WebAssemblyLinkErrorPrototype.h:
* wasm/js/WebAssemblyMemoryPrototype.h:
* wasm/js/WebAssemblyModulePrototype.h:
* wasm/js/WebAssemblyModuleRecord.h:
* wasm/js/WebAssemblyRuntimeErrorPrototype.h:
* wasm/js/WebAssemblyTablePrototype.h:
* wasm/js/WebAssemblyTagPrototype.h:
* wasm/js/WebAssemblyWrapperFunction.h:

Source/WebCore:

1. Make various classes client-server aware in terms of IsoSubspaces.
2. Make CodeGeneratorJS.pm client-server aware in terms of IsoSubspaces.
3. Rebase bindings test results.

* CMakeLists.txt:
* DerivedSources-output.xcfilelist:
* DerivedSources.make:
* bindings/js/DOMGCOutputConstraint.cpp:
(WebCore::DOMGCOutputConstraint::DOMGCOutputConstraint):
(WebCore::DOMGCOutputConstraint::executeImplImpl):
* bindings/js/DOMGCOutputConstraint.h:
* bindings/js/JSDOMAsyncIterator.h:
* bindings/js/JSDOMBuiltinConstructorBase.cpp:
(WebCore::JSDOMBuiltinConstructorBase::subspaceForImpl):
* bindings/js/JSDOMBuiltinConstructorBase.h:
(WebCore::JSDOMBuiltinConstructorBase::subspaceFor):
* bindings/js/JSDOMConstructorBase.cpp:
(WebCore::JSDOMConstructorBase::subspaceForImpl):
* bindings/js/JSDOMConstructorBase.h:
(WebCore::JSDOMConstructorBase::subspaceFor):
* bindings/js/JSDOMConstructorNotCallable.h:
(WebCore::JSDOMConstructorNotCallable::subspaceFor):
* bindings/js/JSDOMIterator.h:
* bindings/js/JSDOMWindowProperties.cpp:
(WebCore::JSDOMWindowProperties::subspaceForImpl):
* bindings/js/JSDOMWindowProperties.h:
* bindings/js/JSFileSystemDirectoryHandleIterator.cpp:
(WebCore::JSFileSystemDirectoryHandleIterator::subspaceForImpl):
* bindings/js/JSFileSystemDirectoryHandleIterator.h:
* bindings/js/JSIDBSerializationGlobalObject.cpp:
(WebCore::JSIDBSerializationGlobalObject::subspaceForImpl):
* bindings/js/JSIDBSerializationGlobalObject.h:
* bindings/js/JSWindowProxy.cpp:
(WebCore::JSWindowProxy::subspaceForImpl):
* bindings/js/JSWindowProxy.h:
* bindings/js/WebCoreJSClientData.cpp:
(WebCore::JSHeapData::JSHeapData):
(WebCore::JSHeapData::ensureHeapData):
(WebCore::JSVMClientData::JSVMClientData):
(WebCore::JSVMClientData::initNormalWorld):
* bindings/js/WebCoreJSClientData.h:
(WebCore::JSHeapData::lock):
(WebCore::JSHeapData::subspaces):
(WebCore::JSHeapData::fileSystemDirectoryHandleIteratorSpace):
(WebCore::JSHeapData::setFileSystemDirectoryHandleIteratorSpace):
(WebCore::JSVMClientData::normalWorld):
(WebCore::JSVMClientData::rememberWorld):
(WebCore::JSVMClientData::forgetWorld):
(WebCore::JSVMClientData::heapData):
(WebCore::JSVMClientData::builtinNames):
(WebCore::JSVMClientData::builtinFunctions):
(WebCore::JSVMClientData::domBuiltinConstructorSpace):
(WebCore::JSVMClientData::domConstructorSpace):
(WebCore::JSVMClientData::domNamespaceObjectSpace):
(WebCore::JSVMClientData::domWindowPropertiesSpace):
(WebCore::JSVMClientData::runtimeArraySpace):
(WebCore::JSVMClientData::runtimeMethodSpace):
(WebCore::JSVMClientData::runtimeObjectSpace):
(WebCore::JSVMClientData::windowProxySpace):
(WebCore::JSVMClientData::idbSerializationSpace):
(WebCore::JSVMClientData::fileSystemDirectoryHandleIteratorSpace):
(WebCore::JSVMClientData::setFileSystemDirectoryHandleIteratorSpace):
(WebCore::JSVMClientData::clientSubspaces):
(WebCore::JSVMClientData::forEachOutputConstraintSpace): Deleted.
(WebCore::JSVMClientData::subspaces): Deleted.
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateHeader):
(GenerateImplementation):
(GenerateIterableDefinition):
(GeneratePrototypeDeclaration):
* bindings/scripts/preprocess-idls.pl:
* bindings/scripts/test/JS/JSDOMWindow.cpp:
(WebCore::JSDOMWindow::subspaceForImpl):
* bindings/scripts/test/JS/JSDOMWindow.h:
(WebCore::JSDOMWindow::subspaceFor):
* bindings/scripts/test/JS/JSDedicatedWorkerGlobalScope.cpp:
(WebCore::JSDedicatedWorkerGlobalScope::subspaceForImpl):
* bindings/scripts/test/JS/JSDedicatedWorkerGlobalScope.h:
(WebCore::JSDedicatedWorkerGlobalScope::subspaceFor):
* bindings/scripts/test/JS/JSExposedStar.cpp:
(WebCore::JSExposedStarDOMConstructor::prototypeForStructure):
(WebCore::JSExposedStar::subspaceForImpl):
* bindings/scripts/test/JS/JSExposedStar.h:
(WebCore::JSExposedStar::subspaceFor):
* bindings/scripts/test/JS/JSExposedToWorkerAndWindow.cpp:
(WebCore::JSExposedToWorkerAndWindow::subspaceForImpl):
* bindings/scripts/test/JS/JSExposedToWorkerAndWindow.h:
(WebCore::JSExposedToWorkerAndWindow::subspaceFor):
* bindings/scripts/test/JS/JSPaintWorkletGlobalScope.cpp:
(WebCore::JSPaintWorkletGlobalScope::subspaceForImpl):
* bindings/scripts/test/JS/JSPaintWorkletGlobalScope.h:
(WebCore::JSPaintWorkletGlobalScope::subspaceFor):
* bindings/scripts/test/JS/JSServiceWorkerGlobalScope.cpp:
(WebCore::JSServiceWorkerGlobalScope::subspaceForImpl):
* bindings/scripts/test/JS/JSServiceWorkerGlobalScope.h:
(WebCore::JSServiceWorkerGlobalScope::subspaceFor):
* bindings/scripts/test/JS/JSShadowRealmGlobalScope.cpp:
(WebCore::JSShadowRealmGlobalScope::subspaceForImpl):
* bindings/scripts/test/JS/JSShadowRealmGlobalScope.h:
(WebCore::JSShadowRealmGlobalScope::subspaceFor):
* bindings/scripts/test/JS/JSSharedWorkerGlobalScope.cpp:
(WebCore::JSSharedWorkerGlobalScope::subspaceForImpl):
* bindings/scripts/test/JS/JSSharedWorkerGlobalScope.h:
(WebCore::JSSharedWorkerGlobalScope::subspaceFor):
* bindings/scripts/test/JS/JSTestCEReactions.cpp:
(WebCore::JSTestCEReactionsDOMConstructor::prototypeForStructure):
(WebCore::JSTestCEReactions::subspaceForImpl):
* bindings/scripts/test/JS/JSTestCEReactions.h:
(WebCore::JSTestCEReactions::subspaceFor):
* bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp:
(WebCore::JSTestCEReactionsStringifierDOMConstructor::prototypeForStructure):
(WebCore::JSTestCEReactionsStringifier::subspaceForImpl):
* bindings/scripts/test/JS/JSTestCEReactionsStringifier.h:
(WebCore::JSTestCEReactionsStringifier::subspaceFor):
* bindings/scripts/test/JS/JSTestCallTracer.cpp:
(WebCore::JSTestCallTracerDOMConstructor::prototypeForStructure):
(WebCore::JSTestCallTracer::subspaceForImpl):
* bindings/scripts/test/JS/JSTestCallTracer.h:
(WebCore::JSTestCallTracer::subspaceFor):
* bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp:
(WebCore::JSTestClassWithJSBuiltinConstructorDOMConstructor::prototypeForStructure):
(WebCore::JSTestClassWithJSBuiltinConstructor::subspaceForImpl):
* bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.h:
(WebCore::JSTestClassWithJSBuiltinConstructor::subspaceFor):
* bindings/scripts/test/JS/JSTestConditionalIncludes.cpp:
(WebCore::JSTestConditionalIncludesDOMConstructor::prototypeForStructure):
(WebCore::JSTestConditionalIncludes::subspaceForImpl):
* bindings/scripts/test/JS/JSTestConditionalIncludes.h:
(WebCore::JSTestConditionalIncludes::subspaceFor):
* bindings/scripts/test/JS/JSTestConditionallyReadWrite.cpp:
(WebCore::JSTestConditionallyReadWriteDOMConstructor::prototypeForStructure):
(WebCore::JSTestConditionallyReadWrite::subspaceForImpl):
* bindings/scripts/test/JS/JSTestConditionallyReadWrite.h:
(WebCore::JSTestConditionallyReadWrite::subspaceFor):
* bindings/scripts/test/JS/JSTestDOMJIT.cpp:
(WebCore::JSTestDOMJITDOMConstructor::prototypeForStructure):
(WebCore::JSTestDOMJIT::subspaceForImpl):
* bindings/scripts/test/JS/JSTestDOMJIT.h:
(WebCore::JSTestDOMJIT::subspaceFor):
* bindings/scripts/test/JS/JSTestDefaultToJSON.cpp:
(WebCore::JSTestDefaultToJSONDOMConstructor::prototypeForStructure):
(WebCore::JSTestDefaultToJSON::subspaceForImpl):
* bindings/scripts/test/JS/JSTestDefaultToJSON.h:
(WebCore::JSTestDefaultToJSON::subspaceFor):
* bindings/scripts/test/JS/JSTestDefaultToJSONFilteredByExposed.cpp:
(WebCore::JSTestDefaultToJSONFilteredByExposedDOMConstructor::prototypeForStructure):
(WebCore::JSTestDefaultToJSONFilteredByExposed::subspaceForImpl):
* bindings/scripts/test/JS/JSTestDefaultToJSONFilteredByExposed.h:
(WebCore::JSTestDefaultToJSONFilteredByExposed::subspaceFor):
* bindings/scripts/test/JS/JSTestDefaultToJSONIndirectInheritance.cpp:
(WebCore::JSTestDefaultToJSONIndirectInheritanceDOMConstructor::prototypeForStructure):
(WebCore::JSTestDefaultToJSONIndirectInheritance::subspaceForImpl):
* bindings/scripts/test/JS/JSTestDefaultToJSONIndirectInheritance.h:
(WebCore::JSTestDefaultToJSONIndirectInheritance::subspaceFor):
* bindings/scripts/test/JS/JSTestDefaultToJSONInherit.cpp:
(WebCore::JSTestDefaultToJSONInheritDOMConstructor::prototypeForStructure):
(WebCore::JSTestDefaultToJSONInherit::subspaceForImpl):
* bindings/scripts/test/JS/JSTestDefaultToJSONInherit.h:
(WebCore::JSTestDefaultToJSONInherit::subspaceFor):
* bindings/scripts/test/JS/JSTestDefaultToJSONInheritFinal.cpp:
(WebCore::JSTestDefaultToJSONInheritFinalDOMConstructor::prototypeForStructure):
(WebCore::JSTestDefaultToJSONInheritFinal::subspaceForImpl):
* bindings/scripts/test/JS/JSTestDefaultToJSONInheritFinal.h:
(WebCore::JSTestDefaultToJSONInheritFinal::subspaceFor):
* bindings/scripts/test/JS/JSTestDelegateToSharedSyntheticAttribute.cpp:
(WebCore::JSTestDelegateToSharedSyntheticAttributeDOMConstructor::prototypeForStructure):
(WebCore::JSTestDelegateToSharedSyntheticAttribute::subspaceForImpl):
* bindings/scripts/test/JS/JSTestDelegateToSharedSyntheticAttribute.h:
(WebCore::JSTestDelegateToSharedSyntheticAttribute::subspaceFor):
* bindings/scripts/test/JS/JSTestDomainSecurity.cpp:
(WebCore::JSTestDomainSecurityDOMConstructor::prototypeForStructure):
(WebCore::JSTestDomainSecurity::subspaceForImpl):
* bindings/scripts/test/JS/JSTestDomainSecurity.h:
(WebCore::JSTestDomainSecurity::subspaceFor):
* bindings/scripts/test/JS/JSTestEnabledBySetting.cpp:
(WebCore::JSTestEnabledBySettingDOMConstructor::prototypeForStructure):
(WebCore::JSTestEnabledBySetting::subspaceForImpl):
* bindings/scripts/test/JS/JSTestEnabledBySetting.h:
(WebCore::JSTestEnabledBySetting::subspaceFor):
* bindings/scripts/test/JS/JSTestEnabledForContext.cpp:
(WebCore::JSTestEnabledForContextDOMConstructor::prototypeForStructure):
(WebCore::JSTestEnabledForContext::subspaceForImpl):
* bindings/scripts/test/JS/JSTestEnabledForContext.h:
(WebCore::JSTestEnabledForContext::subspaceFor):
* bindings/scripts/test/JS/JSTestEventConstructor.cpp:
(WebCore::JSTestEventConstructor::subspaceForImpl):
* bindings/scripts/test/JS/JSTestEventConstructor.h:
(WebCore::JSTestEventConstructor::subspaceFor):
* bindings/scripts/test/JS/JSTestEventTarget.cpp:
(WebCore::JSTestEventTargetDOMConstructor::prototypeForStructure):
(WebCore::JSTestEventTarget::subspaceForImpl):
* bindings/scripts/test/JS/JSTestEventTarget.h:
(WebCore::JSTestEventTarget::subspaceFor):
* bindings/scripts/test/JS/JSTestException.cpp:
(WebCore::JSTestExceptionDOMConstructor::prototypeForStructure):
(WebCore::JSTestException::subspaceForImpl):
* bindings/scripts/test/JS/JSTestException.h:
(WebCore::JSTestException::subspaceFor):
* bindings/scripts/test/JS/JSTestGenerateAddOpaqueRoot.cpp:
(WebCore::JSTestGenerateAddOpaqueRootDOMConstructor::prototypeForStructure):
(WebCore::JSTestGenerateAddOpaqueRoot::subspaceForImpl):
* bindings/scripts/test/JS/JSTestGenerateAddOpaqueRoot.h:
(WebCore::JSTestGenerateAddOpaqueRoot::subspaceFor):
* bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp:
(WebCore::JSTestGenerateIsReachableDOMConstructor::prototypeForStructure):
(WebCore::JSTestGenerateIsReachable::subspaceForImpl):
* bindings/scripts/test/JS/JSTestGenerateIsReachable.h:
(WebCore::JSTestGenerateIsReachable::subspaceFor):
* bindings/scripts/test/JS/JSTestGlobalObject.cpp:
(WebCore::JSTestGlobalObject::subspaceForImpl):
* bindings/scripts/test/JS/JSTestGlobalObject.h:
(WebCore::JSTestGlobalObject::subspaceFor):
* bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp:
(WebCore::JSTestIndexedSetterNoIdentifierDOMConstructor::prototypeForStructure):
(WebCore::JSTestIndexedSetterNoIdentifier::subspaceForImpl):
* bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.h:
(WebCore::JSTestIndexedSetterNoIdentifier::subspaceFor):
* bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp:
(WebCore::JSTestIndexedSetterThrowingExceptionDOMConstructor::prototypeForStructure):
(WebCore::JSTestIndexedSetterThrowingException::subspaceForImpl):
* bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.h:
(WebCore::JSTestIndexedSetterThrowingException::subspaceFor):
* bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp:
(WebCore::JSTestIndexedSetterWithIdentifierDOMConstructor::prototypeForStructure):
(WebCore::JSTestIndexedSetterWithIdentifier::subspaceForImpl):
* bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.h:
(WebCore::JSTestIndexedSetterWithIdentifier::subspaceFor):
* bindings/scripts/test/JS/JSTestInterface.cpp:
(WebCore::JSTestInterfaceDOMConstructor::construct):
(WebCore::jsTestInterfacePrototypeFunction_entriesCaller):
(WebCore::JSTestInterface::subspaceForImpl):
* bindings/scripts/test/JS/JSTestInterface.h:
* bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp:
(WebCore::JSTestInterfaceLeadingUnderscoreDOMConstructor::prototypeForStructure):
(WebCore::JSTestInterfaceLeadingUnderscore::subspaceForImpl):
* bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.h:
(WebCore::JSTestInterfaceLeadingUnderscore::subspaceFor):
* bindings/scripts/test/JS/JSTestIterable.cpp:
(WebCore::JSTestIterableDOMConstructor::prototypeForStructure):
(WebCore::jsTestIterablePrototypeFunction_entriesCaller):
(WebCore::JSTestIterable::subspaceForImpl):
* bindings/scripts/test/JS/JSTestIterable.h:
(WebCore::JSTestIterable::subspaceFor):
* bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp:
(WebCore::JSTestJSBuiltinConstructorDOMConstructor::prototypeForStructure):
(WebCore::JSTestJSBuiltinConstructor::subspaceForImpl):
* bindings/scripts/test/JS/JSTestJSBuiltinConstructor.h:
(WebCore::JSTestJSBuiltinConstructor::subspaceFor):
* bindings/scripts/test/JS/JSTestLegacyFactoryFunction.cpp:
(WebCore::JSTestLegacyFactoryFunctionDOMConstructor::prototypeForStructure):
(WebCore::JSTestLegacyFactoryFunction::subspaceForImpl):
* bindings/scripts/test/JS/JSTestLegacyFactoryFunction.h:
(WebCore::JSTestLegacyFactoryFunction::subspaceFor):
* bindings/scripts/test/JS/JSTestLegacyNoInterfaceObject.cpp:
(WebCore::JSTestLegacyNoInterfaceObjectPrototype::finishCreation):
(WebCore::JSTestLegacyNoInterfaceObject::subspaceForImpl):
* bindings/scripts/test/JS/JSTestLegacyNoInterfaceObject.h:
(WebCore::JSTestLegacyNoInterfaceObject::subspaceFor):
* bindings/scripts/test/JS/JSTestLegacyOverrideBuiltIns.cpp:
(WebCore::JSTestLegacyOverrideBuiltInsDOMConstructor::prototypeForStructure):
(WebCore::JSTestLegacyOverrideBuiltIns::subspaceForImpl):
* bindings/scripts/test/JS/JSTestLegacyOverrideBuiltIns.h:
(WebCore::JSTestLegacyOverrideBuiltIns::subspaceFor):
* bindings/scripts/test/JS/JSTestMapLike.cpp:
(WebCore::JSTestMapLikeDOMConstructor::prototypeForStructure):
(WebCore::JSTestMapLike::subspaceForImpl):
* bindings/scripts/test/JS/JSTestMapLike.h:
(WebCore::JSTestMapLike::subspaceFor):
* bindings/scripts/test/JS/JSTestMapLikeWithOverriddenOperations.cpp:
(WebCore::JSTestMapLikeWithOverriddenOperationsDOMConstructor::prototypeForStructure):
(WebCore::JSTestMapLikeWithOverriddenOperations::subspaceForImpl):
* bindings/scripts/test/JS/JSTestMapLikeWithOverriddenOperations.h:
(WebCore::JSTestMapLikeWithOverriddenOperations::subspaceFor):
* bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp:
(WebCore::JSTestNamedAndIndexedSetterNoIdentifierDOMConstructor::prototypeForStructure):
(WebCore::JSTestNamedAndIndexedSetterNoIdentifier::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.h:
(WebCore::JSTestNamedAndIndexedSetterNoIdentifier::subspaceFor):
* bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp:
(WebCore::JSTestNamedAndIndexedSetterThrowingExceptionDOMConstructor::prototypeForStructure):
(WebCore::JSTestNamedAndIndexedSetterThrowingException::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.h:
(WebCore::JSTestNamedAndIndexedSetterThrowingException::subspaceFor):
* bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp:
(WebCore::JSTestNamedAndIndexedSetterWithIdentifierDOMConstructor::prototypeForStructure):
(WebCore::JSTestNamedAndIndexedSetterWithIdentifier::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.h:
(WebCore::JSTestNamedAndIndexedSetterWithIdentifier::subspaceFor):
* bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp:
(WebCore::JSTestNamedDeleterNoIdentifierDOMConstructor::prototypeForStructure):
(WebCore::JSTestNamedDeleterNoIdentifier::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.h:
(WebCore::JSTestNamedDeleterNoIdentifier::subspaceFor):
* bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp:
(WebCore::JSTestNamedDeleterThrowingExceptionDOMConstructor::prototypeForStructure):
(WebCore::JSTestNamedDeleterThrowingException::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.h:
(WebCore::JSTestNamedDeleterThrowingException::subspaceFor):
* bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp:
(WebCore::JSTestNamedDeleterWithIdentifierDOMConstructor::prototypeForStructure):
(WebCore::JSTestNamedDeleterWithIdentifier::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.h:
(WebCore::JSTestNamedDeleterWithIdentifier::subspaceFor):
* bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp:
(WebCore::JSTestNamedDeleterWithIndexedGetterDOMConstructor::prototypeForStructure):
(WebCore::JSTestNamedDeleterWithIndexedGetter::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.h:
(WebCore::JSTestNamedDeleterWithIndexedGetter::subspaceFor):
* bindings/scripts/test/JS/JSTestNamedGetterCallWith.cpp:
(WebCore::JSTestNamedGetterCallWithDOMConstructor::prototypeForStructure):
(WebCore::JSTestNamedGetterCallWith::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedGetterCallWith.h:
(WebCore::JSTestNamedGetterCallWith::subspaceFor):
* bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.cpp:
(WebCore::JSTestNamedGetterNoIdentifierDOMConstructor::prototypeForStructure):
(WebCore::JSTestNamedGetterNoIdentifier::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.h:
(WebCore::JSTestNamedGetterNoIdentifier::subspaceFor):
* bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.cpp:
(WebCore::JSTestNamedGetterWithIdentifierDOMConstructor::prototypeForStructure):
(WebCore::JSTestNamedGetterWithIdentifier::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.h:
(WebCore::JSTestNamedGetterWithIdentifier::subspaceFor):
* bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp:
(WebCore::JSTestNamedSetterNoIdentifierDOMConstructor::prototypeForStructure):
(WebCore::JSTestNamedSetterNoIdentifier::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.h:
(WebCore::JSTestNamedSetterNoIdentifier::subspaceFor):
* bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp:
(WebCore::JSTestNamedSetterThrowingExceptionDOMConstructor::prototypeForStructure):
(WebCore::JSTestNamedSetterThrowingException::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedSetterThrowingException.h:
(WebCore::JSTestNamedSetterThrowingException::subspaceFor):
* bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp:
(WebCore::JSTestNamedSetterWithIdentifierDOMConstructor::prototypeForStructure):
(WebCore::JSTestNamedSetterWithIdentifier::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.h:
(WebCore::JSTestNamedSetterWithIdentifier::subspaceFor):
* bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp:
(WebCore::JSTestNamedSetterWithIndexedGetterDOMConstructor::prototypeForStructure):
(WebCore::JSTestNamedSetterWithIndexedGetter::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.h:
(WebCore::JSTestNamedSetterWithIndexedGetter::subspaceFor):
* bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp:
(WebCore::JSTestNamedSetterWithIndexedGetterAndSetterDOMConstructor::prototypeForStructure):
(WebCore::JSTestNamedSetterWithIndexedGetterAndSetter::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.h:
(WebCore::JSTestNamedSetterWithIndexedGetterAndSetter::subspaceFor):
* bindings/scripts/test/JS/JSTestNamedSetterWithLegacyOverrideBuiltIns.cpp:
(WebCore::JSTestNamedSetterWithLegacyOverrideBuiltInsDOMConstructor::prototypeForStructure):
(WebCore::JSTestNamedSetterWithLegacyOverrideBuiltIns::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedSetterWithLegacyOverrideBuiltIns.h:
(WebCore::JSTestNamedSetterWithLegacyOverrideBuiltIns::subspaceFor):
* bindings/scripts/test/JS/JSTestNamedSetterWithLegacyUnforgeableProperties.cpp:
(WebCore::JSTestNamedSetterWithLegacyUnforgeablePropertiesDOMConstructor::prototypeForStructure):
(WebCore::JSTestNamedSetterWithLegacyUnforgeableProperties::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedSetterWithLegacyUnforgeableProperties.h:
(WebCore::JSTestNamedSetterWithLegacyUnforgeableProperties::subspaceFor):
* bindings/scripts/test/JS/JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns.cpp:
(WebCore::JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltInsDOMConstructor::prototypeForStructure):
(WebCore::JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns.h:
(WebCore::JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns::subspaceFor):
* bindings/scripts/test/JS/JSTestNamespaceObject.cpp:
(WebCore::JSTestNamespaceObject::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNamespaceObject.h:
(WebCore::JSTestNamespaceObject::subspaceFor):
* bindings/scripts/test/JS/JSTestNode.cpp:
(WebCore::jsTestNodePrototypeFunction_entriesCaller):
(WebCore::JSTestNode::subspaceForImpl):
* bindings/scripts/test/JS/JSTestNode.h:
* bindings/scripts/test/JS/JSTestObj.cpp:
(WebCore::JSTestObjDOMConstructor::construct):
(WebCore::JSTestObj::subspaceForImpl):
* bindings/scripts/test/JS/JSTestObj.h:
(WebCore::JSTestObj::subspaceFor):
* bindings/scripts/test/JS/JSTestOperationConditional.cpp:
(WebCore::JSTestOperationConditionalDOMConstructor::prototypeForStructure):
(WebCore::JSTestOperationConditional::subspaceForImpl):
* bindings/scripts/test/JS/JSTestOperationConditional.h:
(WebCore::JSTestOperationConditional::subspaceFor):
* bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp:
(WebCore::JSTestOverloadedConstructors::subspaceForImpl):
* bindings/scripts/test/JS/JSTestOverloadedConstructors.h:
(WebCore::JSTestOverloadedConstructors::subspaceFor):
* bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp:
(WebCore::JSTestOverloadedConstructorsWithSequence::subspaceForImpl):
* bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.h:
(WebCore::JSTestOverloadedConstructorsWithSequence::subspaceFor):
* bindings/scripts/test/JS/JSTestPluginInterface.cpp:
(WebCore::JSTestPluginInterfaceDOMConstructor::prototypeForStructure):
(WebCore::JSTestPluginInterface::subspaceForImpl):
* bindings/scripts/test/JS/JSTestPluginInterface.h:
(WebCore::JSTestPluginInterface::subspaceFor):
* bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp:
(WebCore::JSTestPromiseRejectionEvent::subspaceForImpl):
* bindings/scripts/test/JS/JSTestPromiseRejectionEvent.h:
(WebCore::JSTestPromiseRejectionEvent::subspaceFor):
* bindings/scripts/test/JS/JSTestReadOnlyMapLike.cpp:
(WebCore::JSTestReadOnlyMapLikeDOMConstructor::prototypeForStructure):
(WebCore::JSTestReadOnlyMapLike::subspaceForImpl):
* bindings/scripts/test/JS/JSTestReadOnlyMapLike.h:
(WebCore::JSTestReadOnlyMapLike::subspaceFor):
* bindings/scripts/test/JS/JSTestReadOnlySetLike.cpp:
(WebCore::JSTestReadOnlySetLikeDOMConstructor::prototypeForStructure):
(WebCore::JSTestReadOnlySetLike::subspaceForImpl):
* bindings/scripts/test/JS/JSTestReadOnlySetLike.h:
(WebCore::JSTestReadOnlySetLike::subspaceFor):
* bindings/scripts/test/JS/JSTestReportExtraMemoryCost.cpp:
(WebCore::JSTestReportExtraMemoryCostDOMConstructor::prototypeForStructure):
(WebCore::JSTestReportExtraMemoryCost::subspaceForImpl):
* bindings/scripts/test/JS/JSTestReportExtraMemoryCost.h:
(WebCore::JSTestReportExtraMemoryCost::subspaceFor):
* bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:
(WebCore::JSTestSerializedScriptValueInterfaceDOMConstructor::prototypeForStructure):
(WebCore::JSTestSerializedScriptValueInterface::subspaceForImpl):
* bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.h:
(WebCore::JSTestSerializedScriptValueInterface::subspaceFor):
* bindings/scripts/test/JS/JSTestSetLike.cpp:
(WebCore::JSTestSetLikeDOMConstructor::prototypeForStructure):
(WebCore::JSTestSetLike::subspaceForImpl):
* bindings/scripts/test/JS/JSTestSetLike.h:
(WebCore::JSTestSetLike::subspaceFor):
* bindings/scripts/test/JS/JSTestSetLikeWithOverriddenOperations.cpp:
(WebCore::JSTestSetLikeWithOverriddenOperationsDOMConstructor::prototypeForStructure):
(WebCore::JSTestSetLikeWithOverriddenOperations::subspaceForImpl):
* bindings/scripts/test/JS/JSTestSetLikeWithOverriddenOperations.h:
(WebCore::JSTestSetLikeWithOverriddenOperations::subspaceFor):
* bindings/scripts/test/JS/JSTestStringifier.cpp:
(WebCore::JSTestStringifierDOMConstructor::prototypeForStructure):
(WebCore::JSTestStringifier::subspaceForImpl):
* bindings/scripts/test/JS/JSTestStringifier.h:
(WebCore::JSTestStringifier::subspaceFor):
* bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.cpp:
(WebCore::JSTestStringifierAnonymousOperationDOMConstructor::prototypeForStructure):
(WebCore::JSTestStringifierAnonymousOperation::subspaceForImpl):
* bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.h:
(WebCore::JSTestStringifierAnonymousOperation::subspaceFor):
* bindings/scripts/test/JS/JSTestStringifierNamedOperation.cpp:
(WebCore::JSTestStringifierNamedOperationDOMConstructor::prototypeForStructure):
(WebCore::JSTestStringifierNamedOperation::subspaceForImpl):
* bindings/scripts/test/JS/JSTestStringifierNamedOperation.h:
(WebCore::JSTestStringifierNamedOperation::subspaceFor):
* bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.cpp:
(WebCore::JSTestStringifierOperationImplementedAsDOMConstructor::prototypeForStructure):
(WebCore::JSTestStringifierOperationImplementedAs::subspaceForImpl):
* bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.h:
(WebCore::JSTestStringifierOperationImplementedAs::subspaceFor):
* bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.cpp:
(WebCore::JSTestStringifierOperationNamedToStringDOMConstructor::prototypeForStructure):
(WebCore::JSTestStringifierOperationNamedToString::subspaceForImpl):
* bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.h:
(WebCore::JSTestStringifierOperationNamedToString::subspaceFor):
* bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.cpp:
(WebCore::JSTestStringifierReadOnlyAttributeDOMConstructor::prototypeForStructure):
(WebCore::JSTestStringifierReadOnlyAttribute::subspaceForImpl):
* bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.h:
(WebCore::JSTestStringifierReadOnlyAttribute::subspaceFor):
* bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.cpp:
(WebCore::JSTestStringifierReadWriteAttributeDOMConstructor::prototypeForStructure):
(WebCore::JSTestStringifierReadWriteAttribute::subspaceForImpl):
* bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.h:
(WebCore::JSTestStringifierReadWriteAttribute::subspaceFor):
* bindings/scripts/test/JS/JSTestTaggedWrapper.cpp:
(WebCore::JSTestTaggedWrapperDOMConstructor::prototypeForStructure):
(WebCore::JSTestTaggedWrapper::subspaceForImpl):
* bindings/scripts/test/JS/JSTestTaggedWrapper.h:
(WebCore::JSTestTaggedWrapper::subspaceFor):
* bindings/scripts/test/JS/JSTestTypedefs.cpp:
(WebCore::JSTestTypedefsDOMConstructor::construct):
(WebCore::JSTestTypedefs::subspaceForImpl):
* bindings/scripts/test/JS/JSTestTypedefs.h:
(WebCore::JSTestTypedefs::subspaceFor):
* bindings/scripts/test/JS/JSWorkerGlobalScope.cpp:
(WebCore::JSWorkerGlobalScope::subspaceForImpl):
* bindings/scripts/test/JS/JSWorkerGlobalScope.h:
(WebCore::JSWorkerGlobalScope::subspaceFor):
* bindings/scripts/test/JS/JSWorkletGlobalScope.cpp:
(WebCore::JSWorkletGlobalScope::subspaceForImpl):
* bindings/scripts/test/JS/JSWorkletGlobalScope.h:
(WebCore::JSWorkletGlobalScope::subspaceFor):
* bridge/objc/objc_runtime.h:
* bridge/objc/objc_runtime.mm:
(JSC::Bindings::ObjcFallbackObjectImp::subspaceForImpl):
* bridge/runtime_array.cpp:
(JSC::RuntimeArray::subspaceForImpl):
* bridge/runtime_array.h:
* bridge/runtime_method.cpp:
(JSC::RuntimeMethod::subspaceForImpl):
* bridge/runtime_method.h:
* bridge/runtime_object.cpp:
(JSC::Bindings::RuntimeObject::subspaceForImpl):
* bridge/runtime_object.h:

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

11 months agoAX: isAXAuthenticatedCallback must be handled on the main runloop
tyler_w@apple.com [Fri, 18 Feb 2022 16:41:41 +0000 (16:41 +0000)]
AX: isAXAuthenticatedCallback must be handled on the main runloop
https://bugs.webkit.org/show_bug.cgi?id=236789

Reviewed by Chris Fleizach.

isAXAuthenticatedCallback in WebProcessCocoa.mm performs IPC to the UI process
to determine if the given auditToken is valid. This causes a crash with isolated
tree mode enabled as IPC must be performed on the main thread / runloop.

This patch changes this function to dispatch to the main runloop.

* WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::isAXAuthenticatedCallback):

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

11 months ago[LFC][Integration] Add missing LineIteratorModernPath::isHorizontal implementation
zalan@apple.com [Fri, 18 Feb 2022 16:30:58 +0000 (16:30 +0000)]
[LFC][Integration] Add missing LineIteratorModernPath::isHorizontal implementation
https://bugs.webkit.org/show_bug.cgi?id=236835

Reviewed by Antti Koivisto.

isHorizontal value comes from the root inline box's writing mode.

* layout/formattingContexts/inline/InlineLineBox.h:
(WebCore::Layout::LineBox::isHorizontal const):
* layout/formattingContexts/inline/display/InlineDisplayLine.h:
(WebCore::InlineDisplay::Line::isHorizontal const):
(WebCore::InlineDisplay::Line::Line):
* layout/formattingContexts/inline/display/InlineDisplayLineBuilder.cpp:
(WebCore::Layout::InlineDisplayLineBuilder::build const):
* layout/integration/InlineIteratorLineModernPath.h:
(WebCore::InlineIterator::LineIteratorModernPath::isHorizontal const):
* layout/integration/LayoutIntegrationInlineContentBuilder.cpp:
(WebCore::LayoutIntegration::InlineContentBuilder::createDisplayLines const):
* layout/integration/LayoutIntegrationLine.h:
(WebCore::LayoutIntegration::Line::Line):
(WebCore::LayoutIntegration::Line::isHorizontal const):
* layout/integration/LayoutIntegrationPagination.cpp:
(WebCore::LayoutIntegration::makeAdjustedContent):

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

11 months ago[EWS] Trigger Mac builders on pull-requests
jbedard@apple.com [Fri, 18 Feb 2022 15:46:08 +0000 (15:46 +0000)]
[EWS] Trigger Mac builders on pull-requests
https://bugs.webkit.org/show_bug.cgi?id=236257
<rdar://problem/88591950>

Reviewed by Aakash Jain.

* Tools/CISupport/ews-build/config.json: Enable Mac builders on pull-requests.

link: https://commits.webkit.org/247469@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@290126 268f45cc-cd09-0410-ab3c-d52691b4dbfc

11 months ago[frame-rate] [custom-effect] allow setting frameRate as an option passed to document...
graouts@webkit.org [Fri, 18 Feb 2022 15:44:59 +0000 (15:44 +0000)]
[frame-rate] [custom-effect] allow setting frameRate as an option passed to document.timeline.animate()
https://bugs.webkit.org/show_bug.cgi?id=236831

Reviewed by Dean Jackson.

Source/WebCore:

* animation/CustomAnimationOptions.h:
* animation/CustomAnimationOptions.idl:
* animation/DocumentTimeline.cpp:
(WebCore::DocumentTimeline::animate):

LayoutTests:

* webanimations/frame-rate/animation-frame-rate-expected.txt:
* webanimations/frame-rate/animation-frame-rate.html:

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

11 months ago[InputElement] Return empty string for an invalid floating-point number that ends...
zsun@igalia.com [Fri, 18 Feb 2022 15:39:39 +0000 (15:39 +0000)]
[InputElement] Return empty string for an invalid floating-point number that ends with "."
https://bugs.webkit.org/show_bug.cgi?id=236700

Reviewed by Chris Dumez.

LayoutTests/imported/w3c:

* web-platform-tests/html/semantics/forms/the-input-element/number-expected.txt:

Source/WebCore:

As per specs https://html.spec.whatwg.org/multipage/input.html#number-state-(type%3Dnumber),
"If the value of the element is not a valid floating-point number, then set it to the empty
string instead".

* html/parser/HTMLParserIdioms.cpp:
(WebCore::parseToDoubleForNumberType):

LayoutTests:

* fast/forms/number/number-stepup-stepdown-expected.txt:
* fast/forms/number/number-stepup-stepdown-from-renderer-expected.txt:
* fast/forms/number/number-stepup-stepdown-from-renderer.html:
* fast/forms/number/number-stepup-stepdown.html:

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

11 months ago[frame-rate] allow setting frameRate as an option passed to Element.animate()
graouts@webkit.org [Fri, 18 Feb 2022 15:38:23 +0000 (15:38 +0000)]
[frame-rate] allow setting frameRate as an option passed to Element.animate()
https://bugs.webkit.org/show_bug.cgi?id=236830

Reviewed by Dean Jackson.

Source/WebCore:

* animation/KeyframeAnimationOptions.h:
* animation/KeyframeAnimationOptions.idl:
* dom/Element.cpp:
(WebCore::Element::animate):

LayoutTests:

* webanimations/frame-rate/animation-frame-rate-expected.txt:
* webanimations/frame-rate/animation-frame-rate.html:

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

11 months ago[custom-effect] Animations associated with a custom effect should appear in document...
graouts@webkit.org [Fri, 18 Feb 2022 15:35:59 +0000 (15:35 +0000)]
[custom-effect] Animations associated with a custom effect should appear in document.getAnimations() result
https://bugs.webkit.org/show_bug.cgi?id=236828

Reviewed by Dean Jackson.

Source/WebCore:

Test: webanimations/custom-effect/custom-effect-get-animations.html

* dom/Document.cpp:
(WebCore::Document::matchingAnimations):

LayoutTests:

* webanimations/custom-effect/custom-effect-get-animations-expected.txt: Added.
* webanimations/custom-effect/custom-effect-get-animations.html: Added.

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

11 months ago[frame-rate] animation with different but compatible frame rates should be aligned
graouts@webkit.org [Fri, 18 Feb 2022 10:47:13 +0000 (10:47 +0000)]
[frame-rate] animation with different but compatible frame rates should be aligned
https://bugs.webkit.org/show_bug.cgi?id=236778
<rdar://problem/89083932>

Reviewed by Simon Fraser.

Source/WebCore:

With bug 234202 we started accounting for the frameRate property of an animation when updating
animations and ensuring that animations with the same frameRate are sampled in the same frame.

We expand on this by aligning animations that use different frameRate but could share sample frames.
For instance, if we have animations running with frameRate set to 6, 12 and 18, and assuming no
frames are ever skipped, we should expect a sequence of frames where the following animations are
sampled:

- frame 1: 12, 18, 6
- frame 2: 18
- frame 3: 12
- frame 4: 18
- frame 5: 12, 18, 6

and for that pattern to repeat.

To achieve this, we add a new "isNew" boolean flag on the FrameRateData struct. Then, in
FrameRateAligner::finishUpdate(), which is newly called from updateAnimationsAndSendEvents(),
we identify which frame rates have this flag, and analyze the other frame rates to determine
which frame rate it is most compatible with. If we find such a compatible frame rate, the new
frame rate adopts the same firstUpdateTime which ensures that they now have the same basis to
compute ideal times for sampling.

Within updateAnimationsAndSendEvents(), we also ensure that newly-added animations, regardless
of the output of FrameRateAligner::updateFrameRate(), are sampled right away so that there's no
delay for an animation to have visual output, letting them be synchronized with other animations
of that frame rate at the next opportunity.

Tests: webanimations/frame-rate/animation-frame-rate-alignment-compatible-frame-rates.html
       webanimations/frame-rate/animation-frame-rate-alignment-started-together.html
       webanimations/frame-rate/animation-frame-rate-alignment-started-with-one-frame-separation.html

* animation/DocumentTimelinesController.cpp:
(WebCore::DocumentTimelinesController::updateAnimationsAndSendEvents):
* animation/FrameRateAligner.cpp:
(WebCore::FrameRateAligner::beginUpdate):
(WebCore::FrameRateAligner::updateFrameRate):
(WebCore::frameRatesCanBeAligned):
(WebCore::FrameRateAligner::finishUpdate):
* animation/FrameRateAligner.h:

LayoutTests:

Add new tests that check the behavior of alignment when:

- two animations are started together with the same frame rate,
- two animations are started one frame apart with the same frame rate,
- three animations are each started one frame apart and with different, but compatible frame rates.

* TestExpectations:
* platform/ios-wk2/TestExpectations:
* platform/mac-wk2/TestExpectations:
* webanimations/frame-rate/animation-frame-rate-alignment-compatible-frame-rates-expected.txt: Added.
* webanimations/frame-rate/animation-frame-rate-alignment-compatible-frame-rates.html: Added.
* webanimations/frame-rate/animation-frame-rate-alignment-started-together-expected.txt: Added.
* webanimations/frame-rate/animation-frame-rate-alignment-started-together.html: Added.
* webanimations/frame-rate/animation-frame-rate-alignment-started-with-one-frame-separation-expected.txt: Added.
* webanimations/frame-rate/animation-frame-rate-alignment-started-with-one-frame-separation.html: Added.

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

11 months agoUnreviewed gardening for GPU Process bots. Update fuzzy data.
jonlee@apple.com [Fri, 18 Feb 2022 09:19:04 +0000 (09:19 +0000)]
Unreviewed gardening for GPU Process bots. Update fuzzy data.

LayoutTests/imported/w3c:

* web-platform-tests/css/css-images/gradients-with-transparent.html:
* web-platform-tests/svg/coordinate-systems/viewBox-scaling-text-001.html:

LayoutTests:

* gpu-process/TestExpectations:
* platform/ios/TestExpectations: A couple tests are happening on all iOS bots and not uniquely on GPU Process bots.

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

11 months ago[JSC] Enable Shadow Realms support by default
commit-queue@webkit.org [Fri, 18 Feb 2022 08:50:17 +0000 (08:50 +0000)]
[JSC] Enable Shadow Realms support by default
https://bugs.webkit.org/show_bug.cgi?id=236673

Patch by Joseph Griego <jgriego@igalia.com> on 2022-02-18
Reviewed by Yusuke Suzuki.

LayoutTests/imported/w3c:

Enabling this flag causes the new WPT test to partially pass (since
ShadowRealm is available on Window) but does not completely pass
because shadow realm contexts do not yet have the required web APIs
exposed.

* web-platform-tests/dom/idlharness-shadowrealm.window-expected.txt:

Source/JavaScriptCore:

The implementaiton in JSC is complete and should be correct and
reasonably fast now; so, enable it without requiring the flag.

Should be covered by EWS and existing tests of shadow realms functionality.

* runtime/OptionsList.h:

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

11 months ago[GTK][WPE] Don't use ANGLE's GBM-based display
commit-queue@webkit.org [Fri, 18 Feb 2022 08:48:24 +0000 (08:48 +0000)]
[GTK][WPE] Don't use ANGLE's GBM-based display
https://bugs.webkit.org/show_bug.cgi?id=236772

Patch by Zan Dobersek <zdobersek@igalia.com> on 2022-02-18
Reviewed by Alejandro G. Castro.

Source/ThirdParty/ANGLE:

With DisplayGbm functionality not necessary anymore, we can stop
building the associated code and linking against libgbm and libdrm at
the ANGLE level. These two libraries are still dependencies that have
since become necessary in WebCore.

* CMakeLists.txt:
* PlatformGTK.cmake:
* PlatformWPE.cmake:

Source/WebCore:

ANGLE's DisplayGbm implementation adds unnecessary overhead for how we
would want to use ANGLE. We don't need a connection to the DRM display
device or the ability for the display to provide pre-allocated buffer
objects that are then displayed on that device. Instead we have to
control our own GBM buffers and have options in terms of how we want
those buffers to be handled and presented.

We can live with the DisplayEGL implementation instead. To be able to
utilize it, we have to switch to using the EGL_GetPlatformDisplayEXT
entrypoint, along with a display attribute list that selects the
OpenGLES as the display's GL target (matching what we've used with
DisplayGBM so far) and EGL as the device type. Additionally, we
specify surfaceless as the native platform type, even when right now
this doesn't seem to have any effect.

* platform/graphics/nicosia/texmap/NicosiaGCGLANGLELayer.cpp:
(Nicosia::GCGLANGLELayer::ANGLEContext::createContext):

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

11 months agoAdd LC_SOURCE_VERSION to compile targets
sbarati@apple.com [Fri, 18 Feb 2022 08:16:54 +0000 (08:16 +0000)]
Add LC_SOURCE_VERSION to compile targets
https://bugs.webkit.org/show_bug.cgi?id=236720
<rdar://84984140>

Reviewed by Michael Saboff.

Source/JavaScriptCore:

* Configurations/JSC.xcconfig:
* Configurations/JavaScriptCore.xcconfig:
* Configurations/TestAPI.xcconfig:
* Configurations/ToolExecutable.xcconfig:
* Configurations/Version.xcconfig:

Source/ThirdParty/ANGLE:

* Configurations/Base.xcconfig:
* Configurations/Version.xcconfig:

Source/ThirdParty/libwebrtc:

* Configurations/Version.xcconfig:
* Configurations/boringssl.xcconfig:
* Configurations/libsrtp.xcconfig:
* Configurations/libvpx.xcconfig:
* Configurations/libwebm.xcconfig:
* Configurations/libwebrtc.xcconfig:
* Configurations/libyuv.xcconfig:
* Configurations/opus.xcconfig:
* Configurations/usrsctp.xcconfig:
* Configurations/yasm.xcconfig:

Source/WebCore:

* Configurations/Version.xcconfig:
* Configurations/WebCore.xcconfig:
* Configurations/WebCoreTestSupport.xcconfig:

Source/WebCore/PAL:

* Configurations/Version.xcconfig:

Source/WebGPU:

* Configurations/Version.xcconfig:
* Configurations/WGSL.xcconfig:
* Configurations/WGSLUnitTests.xcconfig:
* Configurations/WebGPU.xcconfig:

Source/WebInspectorUI:

* Configurations/Version.xcconfig:
* Configurations/WebInspectorUIFramework.xcconfig:

Source/WebKit:

* Configurations/GPUService.xcconfig:
* Configurations/NetworkService.xcconfig:
* Configurations/Version.xcconfig:
* Configurations/WebAuthnService.xcconfig:
* Configurations/WebContentService.xcconfig:
* Configurations/WebKit.xcconfig:
* Configurations/WebKitSwift.xcconfig:
* Configurations/adattributiond.xcconfig:
* Configurations/webpushd.xcconfig:
* Configurations/webpushtool.xcconfig:

Source/WebKitLegacy/mac:

* Configurations/Version.xcconfig:
* Configurations/WebKitLegacy.xcconfig:

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

11 months agoDraw highlights for Scroll To Text Fragment
megan_gardner@apple.com [Fri, 18 Feb 2022 07:55:32 +0000 (07:55 +0000)]
Draw highlights for Scroll To Text Fragment
https://bugs.webkit.org/show_bug.cgi?id=236693

Reviewed by Tim Horton.

Source/WebCore:

Implement a very basic search for text fragments (this will be properly implemented later)
and leverage our Highlight and AppHighlight infrastructures to draw the found ranges for
Scroll to Text Fragment and scroll so they are guaranteed to be in view.

* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* dom/Document.cpp:
(WebCore::Document::commonTeardown):
(WebCore::Document::fragmentHighlightRegister):
(WebCore::Document::updateHighlightPositions):
* dom/Document.h:
(WebCore::Document::fragmentHighlightRegisterIfExists):
* page/FrameView.cpp:
(WebCore::FrameView::scrollToFragment):
* rendering/MarkedText.cpp:
(WebCore::MarkedText::collectForHighlights):
* rendering/MarkedText.h:
* rendering/RenderReplaced.cpp:
(WebCore::RenderReplaced::calculateHighlightColor const):
* rendering/StyledMarkedText.cpp:
(WebCore::resolveStyleForMarkedText):

Tools:

* TestWebKitAPI/Tests/WebCore/MarkedText.cpp:
(WebCore::operator<<):

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

11 months agoExclude new LocalStorage directory from backup on iOS
sihui_liu@apple.com [Fri, 18 Feb 2022 07:45:54 +0000 (07:45 +0000)]
Exclude new LocalStorage directory from backup on iOS
https://bugs.webkit.org/show_bug.cgi?id=236423
<rdar://problem/89060863>

Reviewed by Chris Dumez.

We've been excluding LocalStorage data from backup on iOS since r212555, and we need to make sure this applies
to new LocalStorage directory after migration (r289878).

Manually tested on iOS device.

* NetworkProcess/storage/OriginStorageManager.cpp:
(WebKit::OriginStorageManager::StorageBucket::resolvedLocalStoragePath):

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

11 months agoWeb Inspector: [Flexbox] Add indicators for layout context in element tooltips
pangle@apple.com [Fri, 18 Feb 2022 05:21:37 +0000 (05:21 +0000)]
Web Inspector: [Flexbox] Add indicators for layout context in element tooltips
https://bugs.webkit.org/show_bug.cgi?id=236738

Reviewed by Devin Rousso.

* en.lproj/Localizable.strings:
* inspector/InspectorOverlay.cpp:
(WebCore::rendererIsFlexboxItem):
(WebCore::rendererIsGridItem):
(WebCore::InspectorOverlay::drawElementTitle):
- Add new `Flex Item`, `Flex`, `Grid Item`, and `Grid` bubblea to element tooltips to allow provide more
context about layout while selecting nodes on a page.
- Move the role into its own bubble with special color (based on the previous coloring of the `Role` text).

* inspector/InspectorOverlayLabel.cpp:
(WebCore::InspectorOverlayLabel::draw):
* inspector/InspectorOverlayLabel.h:
(WebCore::InspectorOverlayLabel::Content::encode const):
(WebCore::InspectorOverlayLabel::Content::decode):
(WebCore::InspectorOverlayLabel::Content::Decoration::encode const):
(WebCore::InspectorOverlayLabel::Content::Decoration::decode):
- Add the concept of text decoration (currently just bordered text).
- Create an intermediate `ComputedContentRun` to hold the intermediate representation of content with the
computed attributes of each piece of text. This allows us to better scale with the addition of the new text
decorations and other configuration properties instead of having to create even more Vectors of things that need
to be kept in sync with each other.

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

11 months agoEnable subgrid by default.
commit-queue@webkit.org [Fri, 18 Feb 2022 04:52:02 +0000 (04:52 +0000)]
Enable subgrid by default.
https://bugs.webkit.org/show_bug.cgi?id=236821

Patch by Matt Woodrow <mattwoodrow@apple.com> on 2022-02-17
Reviewed by Alan Bujtas.

* Scripts/Preferences/WebPreferencesExperimental.yaml:

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

11 months ago[libpas] scavenger should not call pthread_mach_thread_np after suspension
ysuzuki@apple.com [Fri, 18 Feb 2022 04:16:55 +0000 (04:16 +0000)]
[libpas] scavenger should not call pthread_mach_thread_np after suspension
https://bugs.webkit.org/show_bug.cgi?id=236798
rdar://89020902

Reviewed by Mark Lam and Keith Miller.

pthread_mach_thread_np can take a lock internally. So we should not call it after suspending a thread.
This patch refactors libpas scavenger so that we call pthread_mach_thread_np before suspending a thread.
We also avoid calling pthread_self() after suspension to make suspending safer (while it does not take
a lock, it also depends on an internal implementation).

* libpas/src/libpas/pas_thread_local_cache.c:
(scavenger_thread_suspend_data_create):
(suspend):
(resume):
(stop_allocator):
(pas_thread_local_cache_for_all):

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

11 months agoCrash under ScrollingCoordinatorMac::hasNodeWithAnimatedScrollChanged()
simon.fraser@apple.com [Fri, 18 Feb 2022 03:55:27 +0000 (03:55 +0000)]
Crash under ScrollingCoordinatorMac::hasNodeWithAnimatedScrollChanged()
https://bugs.webkit.org/show_bug.cgi?id=236810
<rdar://89072235>

Reviewed by Dean Jackson.

Crash data suggests that r288933 didn't fix the crash entirely.

Although the code paths I can find appear to hold the lock, there may be an
opportunity for m_scrollingCoordinator to get nulled out after we null-check it
but before the copy for the main thread dispatch.

So make a RefPtr on the stack, null-check it, and then move it into the callback.

* page/scrolling/ThreadedScrollingTree.cpp:
(WebCore::ThreadedScrollingTree::reportSynchronousScrollingReasonsChanged):
(WebCore::ThreadedScrollingTree::reportExposedUnfilledArea):
(WebCore::ThreadedScrollingTree::currentSnapPointIndicesDidChange):
(WebCore::ThreadedScrollingTree::handleWheelEventPhase):
(WebCore::ThreadedScrollingTree::setActiveScrollSnapIndices):
(WebCore::ThreadedScrollingTree::hasNodeWithAnimatedScrollChanged):

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

11 months agoClean up / optimize call sites constructing vectors
cdumez@apple.com [Fri, 18 Feb 2022 03:46:49 +0000 (03:46 +0000)]
Clean up / optimize call sites constructing vectors
https://bugs.webkit.org/show_bug.cgi?id=236748
<rdar://problem/89090710>

Reviewed by Darin Adler.

Follow-up to r290026 to address feedback from Darin.

Source/JavaScriptCore:

* b3/air/AirCode.cpp:
(JSC::B3::Air::Code::setNumEntrypoints):

Source/WebCore:

* Modules/encryptedmedia/MediaKeySession.cpp:
(WebCore::MediaKeySession::updateKeyStatuses):
* Modules/indexeddb/server/SQLiteIDBCursor.cpp:
(WebCore::IDBServer::SQLiteIDBCursor::currentData):
* accessibility/isolatedtree/AXIsolatedObject.cpp:
(WebCore::AXIsolatedObject::setMathscripts):
* bindings/js/SerializedScriptValue.cpp:
(WebCore::CloneDeserializer::readString):
* css/StyleProperties.cpp:
(WebCore::DeferredStyleProperties::DeferredStyleProperties):
* css/StyleRule.cpp:
(WebCore::DeferredStyleGroupRuleList::DeferredStyleGroupRuleList):
* dom/ElementData.cpp:
(WebCore::UniqueElementData::UniqueElementData):
* loader/archive/cf/LegacyWebArchive.cpp:
(WebCore::LegacyWebArchive::createFromSelection):
* page/csp/ContentSecurityPolicy.cpp:
(WebCore::ContentSecurityPolicy::responseHeaders const):
* platform/encryptedmedia/CDMProxy.cpp:
(WebCore::KeyStore::convertToJSKeyStatusVector const):
* platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm:
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::updateLicense):
* platform/text/LocaleICU.cpp:
(WebCore::createFallbackMonthLabels):
* platform/text/LocaleNone.cpp:
(WebCore::LocaleNone::shortMonthLabels):
* platform/text/cocoa/LocaleCocoa.mm:
(WebCore::LocaleCocoa::monthLabels):
(WebCore::LocaleCocoa::shortMonthLabels):
(WebCore::LocaleCocoa::standAloneMonthLabels):
(WebCore::LocaleCocoa::shortStandAloneMonthLabels):
* testing/MockCDMFactory.cpp:
(WebCore::MockCDMInstanceSession::updateLicense):
(WebCore::MockCDMInstanceSession::removeSessionData):

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

11 months ago[WPE] Unreviewed, fix non-unified build after r290089
dpino@igalia.com [Fri, 18 Feb 2022 03:37:28 +0000 (03:37 +0000)]
[WPE] Unreviewed, fix non-unified build after r290089

* html/PDFDocument.cpp:

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

11 months ago[GTK] Debian Stable build is broken after r290026
dpino@igalia.com [Fri, 18 Feb 2022 03:31:39 +0000 (03:31 +0000)]
[GTK] Debian Stable build is broken after r290026
https://bugs.webkit.org/show_bug.cgi?id=236819

Unreviewed build fix.

* UIProcess/API/APIWebsitePolicies.cpp:
(API::WebsitePolicies::copy const):

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

11 months ago[LFC][IFC] 'vertical-align: bottom' makes inline level boxes stick out of their paren...
zalan@apple.com [Fri, 18 Feb 2022 02:51:32 +0000 (02:51 +0000)]
[LFC][IFC] 'vertical-align: bottom' makes inline level boxes stick out of their parent block box
https://bugs.webkit.org/show_bug.cgi?id=236677

Reviewed by Antti Koivisto.

Source/WebCore:

'vertical-align: bottom' pushes the root inline box's baseline down as it stretches the line box downwards.
In most cases this makes the root inline box sit at the bottom of the line box e.g.
  <div>
    some text
    <img style="vertical-align: bottom; height: 100px; width: 10px;">
  </div>
  forms a 100px tall block box where the "some text" sits at the bottom of the line and the tall image fills the rest of the line box all the way to the top.

  Now if we add another inline level box with e.g. middle alignment.
  <div>
    some text
    <img style="vertical-align: middle; height: 80px; width: 10px;">
    <img style="vertical-align: bottom; height: 100px; width: 10px;">
  </div>
  We still form a 100px tall block box where the "some text" content sits at the bottom and the middle aligned box stick out of the block box by about 40px (middle alignment -> 80px/2) as it is aligned based
  on the root inline box's position (which is at the very bottom of the block container).
  Instead the root inline box's baseline should be pull up to make room for the middle aligned image box.

This patch fixes this incorrect behavior by removing the line box relative alignment types from the regular alignment logic and offsetting the root inline box's baseline position at a later step.
What we do here is we simply compute the root inline box's baseline position as if there were no line box relative aligned boxes present and offset the final result if such box happens to stretch the line box.
(going back to the example: without the tall, bottom aligned image box, we compute the root inline box's baseline position to be around 40px to
ensure that the 80px image box fits and later we push it down to 60px (as the 100px image box stretches the line box by 20px).)

Test: fast/inline/vertical-align-bottom.html

* layout/formattingContexts/inline/InlineLineBoxVerticalAligner.cpp:
(WebCore::Layout::LineBoxVerticalAligner::computeLogicalHeightAndAlign const):
(WebCore::Layout::LineBoxVerticalAligner::computeLineBoxLogicalHeight const):
(WebCore::Layout::LineBoxVerticalAligner::computeRootInlineBoxVerticalPosition const):
* layout/formattingContexts/inline/InlineLineBoxVerticalAligner.h:
(WebCore::Layout::LineBoxVerticalAligner::LineBoxHeight::value const):

LayoutTests:

* fast/inline/vertical-align-bottom-expected.html: Added.
* fast/inline/vertical-align-bottom.html: Added.

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

11 months agoGeneratePreferences.rb: warning: Passing safe_level with the 2nd argument of ERB...
Hironori.Fujii@sony.com [Fri, 18 Feb 2022 02:46:22 +0000 (02:46 +0000)]
GeneratePreferences.rb: warning: Passing safe_level with the 2nd argument of ERB.new is deprecated
https://bugs.webkit.org/show_bug.cgi?id=236684

Reviewed by Yusuke Suzuki.

With Ruby 3.1.0, GeneratePreferences.rb reported the following warnings.
> GeneratePreferences.rb:235: warning: Passing safe_level with the 2nd argument of ERB.new is deprecated. Do not use it, and specify other arguments as keyword arguments.
> GeneratePreferences.rb:235: warning: Passing trim_mode with the 3rd argument of ERB.new is deprecated. Use keyword argument like ERB.new(str, trim_mode: ...) instead.

* Scripts/GeneratePreferences.rb: Changed to use the keyword argument for ERB.new.

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

11 months agoRefactor share menu item presentation
katherine_cheney@apple.com [Fri, 18 Feb 2022 02:31:16 +0000 (02:31 +0000)]
Refactor share menu item presentation
https://bugs.webkit.org/show_bug.cgi?id=236806
<rdar://problem/88858606>

Reviewed by Aditya Keerthi.

Source/WebCore:

* page/ContextMenuController.cpp:
(WebCore::ContextMenuController::populate):

Source/WebCore/PAL:

* pal/spi/mac/NSSharingServicePickerSPI.h:

Source/WebKit:

* UIProcess/mac/WebContextMenuProxyMac.mm:
(WebKit::WebContextMenuProxyMac::setupServicesMenu):
(WebKit::WebContextMenuProxyMac::getShareMenuItem):

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

11 months agoLayoutTests/imported/w3c:
jonlee@apple.com [Fri, 18 Feb 2022 01:56:28 +0000 (01:56 +0000)]
LayoutTests/imported/w3c:
Unreviewed gardening. Update fuzzy data.

* web-platform-tests/css/css-masking/clip-path/clip-path-ellipse-003.html:

LayoutTests:
Unreviewed gardening for iOS GPU Process bots.

* TestExpectations:
* gpu-process/TestExpectations: Triage remaining failures.

* css3/masking/clip-path-border-radius-border-box-000.html: Add fuzzy data.
* imported/blink/svg/paintorder/paintorder.svg:

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

11 months ago'-webkit-user-select: all' is not respected in editable views
akeerthi@apple.com [Fri, 18 Feb 2022 01:03:50 +0000 (01:03 +0000)]
'-webkit-user-select: all' is not respected in editable views
https://bugs.webkit.org/show_bug.cgi?id=190977
rdar://34945944

Reviewed by Wenson Hsieh.

Source/WebCore:

Original patch by Tim Horton.

Currently, if the web view's editable bit is set to true, all nodes are
made editable via a short circuit. However, the content of nodes with
'-webkit-user-select: all' should not be editable. To fix, remove the
short circuit and allow '-webkit-user-select' to take precedence.

'-webkit-user-modify: read-only' and 'contenteditable=false' elements
remain editable in editable web views.

Tests: editing/editability/contenteditable-false-in-editable-view.html
       editing/editability/user-modify-read-only-in-editable-view.html
       editing/editability/user-select-all-in-editable-view.html

* dom/Node.cpp:
(WebCore::computeEditabilityFromComputedStyle):
(WebCore::Node::computeEditability const):
* html/HTMLElement.cpp:
(WebCore::HTMLElement::editabilityFromContentEditableAttr):
(WebCore::HTMLElement::matchesReadWritePseudoClass const):
* html/HTMLElement.h:
* page/Page.h:

Source/WebKit:

Add methods for testing the GTK port.

* UIProcess/API/C/gtk/WKView.cpp:
(WKViewSetEditable):
* UIProcess/API/C/gtk/WKViewPrivate.h:
* UIProcess/API/gtk/WebKitWebViewBase.cpp:
(webkitWebViewBaseSetEditable):
* UIProcess/API/gtk/WebKitWebViewBasePrivate.h:

Tools:

Add a UIScriptController method to make web views editable.

Remove TestRunner::setWebViewEditable as it is unused.

* DumpRenderTree/TestRunner.cpp:
(TestRunner::staticFunctions):
(setWebViewEditableCallback): Deleted.
* DumpRenderTree/TestRunner.h:
* DumpRenderTree/mac/TestRunnerMac.mm:
(TestRunner::setWebViewEditable): Deleted.
* DumpRenderTree/mac/UIScriptControllerMac.h:
* DumpRenderTree/mac/UIScriptControllerMac.mm:
(WTR::UIScriptControllerMac::setWebViewEditable):
* DumpRenderTree/win/TestRunnerWin.cpp:
(TestRunner::~TestRunner):
(TestRunner::setWebViewEditable): Deleted.
* DumpRenderTree/win/UIScriptControllerWin.cpp:
(WTR::UIScriptControllerWin::setWebViewEditable):
* DumpRenderTree/win/UIScriptControllerWin.h:
* TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl:
* TestRunnerShared/UIScriptContext/UIScriptController.h:
(WTR::UIScriptController::setWebViewEditable):
* WebKitTestRunner/cocoa/TestControllerCocoa.mm:
(WTR::TestController::cocoaResetStateToConsistentValues):
* WebKitTestRunner/cocoa/UIScriptControllerCocoa.h:
* WebKitTestRunner/cocoa/UIScriptControllerCocoa.mm:
(WTR::UIScriptControllerCocoa::setWebViewEditable):
* WebKitTestRunner/gtk/TestControllerGtk.cpp:
(WTR::TestController::platformResetStateToConsistentValues):
* WebKitTestRunner/gtk/UIScriptControllerGtk.cpp:
(WTR::UIScriptControllerGtk::setWebViewEditable):
* WebKitTestRunner/gtk/UIScriptControllerGtk.h:

LayoutTests:

Add tests to verify the behavior of `-[WKWebView _setEditable:]` with
'-webkit-user-select: all', '-webkit-user-modify: none', and
'contenteditable=false'. Elements with '-webkit-user-select: all' should
not be editable.

* editing/editability/contenteditable-false-in-editable-view-expected.txt: Added.
* editing/editability/contenteditable-false-in-editable-view.html: Added.
* editing/editability/user-modify-read-only-in-editable-view-expected.txt: Added.
* editing/editability/user-modify-read-only-in-editable-view.html: Added.
* editing/editability/user-select-all-in-editable-view-expected.txt: Added.
* editing/editability/user-select-all-in-editable-view.html: Added.
* editing/input/ios/rtl-keyboard-input-on-focus-in-editable-page.html:

Replace the test option with the new UIHelper method.

* resources/ui-helper.js:
(window.UIHelper.setWebViewEditable):

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