Timeline
Feb 20, 2022:
- 7:55 PM Changeset in webkit [290238] by
-
- 2 edits in trunk/Source/WebCore
Unreviewed, non-unified build fixes after 247508@main
https://bugs.webkit.org/show_bug.cgi?id=236945
- dom/ImageOverlay.h: Forward declare document.
- 4:02 PM Changeset in webkit [290237] by
-
- 2 edits in trunk/Source/WebKit
Turn WebGL in GPU Process on by default
https://bugs.webkit.org/show_bug.cgi?id=236382
rdar://58057431
Reviewed by Tim Horton.
- Shared/WebPreferencesDefaultValues.cpp:
(WebKit::defaultUseGPUProcessForWebGLEnabled):
- 3:58 PM Changeset in webkit [290236] by
-
- 3 edits in trunk/LayoutTests
Unreviewed gardening for GPU Process bots
- gpu-process/TestExpectations:
- platform/ios-wk2/TestExpectations: Newly revealed flaky timeout.
- 3:50 PM Changeset in webkit [290235] by
-
- 4 edits in trunk/LayoutTests
Unreviewed gardening.
- TestExpectations: Tests are passing after r290229.
- gpu-process/TestExpectations:
- platform/ios-simulator/TestExpectations:
- 3:36 PM Changeset in webkit [290234] by
-
- 2 edits in trunk/LayoutTests
Unreviewed garden for GPU Process bots.
- gpu-process/TestExpectations: Annotate tests with filed bugs.
- 3:09 PM Changeset in webkit [290233] by
-
- 5 edits in trunk
Origin file may not be created after migrating data to general storage directory
https://bugs.webkit.org/show_bug.cgi?id=236901
Reviewed by Chris Dumez.
Source/WebKit:
In r289081, we started writing origin file asynchronouly (we used to write it at creation of
OriginStorageManager), to avoid delay in replying sync WebStorage message. In the async task, we check if the
OriginStorageManager still exists. If it does not, we will not write origin file, because the
OriginStorageManager may be removed after origin data gets deleted, and there's no need to add new origin file.
It's also possible that the OriginStorageManager is created for website data fetch, and removed immediately
after the fetch task is done (see NetworkStorageManager::fetchDataFromDisk). We used to not store
new data in general storage directory during data fetch, so it's fine to not write origin file in this case.
With r289878, existing data can be migrated to general storage directory at data fetch, so it is important to
ensure we write origin to file; otherwise, we will lose track of the origin. To solve this, let's restore the
old behavior that synchronouly writes origin file at creation of OriginStorageManager. To solve the delay issue,
in the sync message handler (NetworkStorageManager::connectToStorageArea), we specifically ask to not write
origin file, and manually write origin file after message is replied.
Updated existing API test to add test coverage.
- NetworkProcess/storage/NetworkStorageManager.cpp:
(WebKit::NetworkStorageManager::localOriginStorageManager):
(WebKit::NetworkStorageManager::connectToStorageArea):
- NetworkProcess/storage/NetworkStorageManager.h:
Tools:
- TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm:
(TEST):
- 12:47 PM Changeset in webkit [290232] by
-
- 2 edits in trunk/LayoutTests/imported/w3c
Rebaseline inert-focus-in-frames.html after r290197.
Unreviewed test gardening.
For some reason, the rebaselining changes didn't make it in the patch.
- web-platform-tests/html/semantics/interactive-elements/the-dialog-element/inert-focus-in-frames-expected.txt:
- 10:32 AM Changeset in webkit [290231] by
-
- 2 edits in trunk/Source/WebCore
[LFC][IFC] Flip inline block coords for vertical-rl before painting
https://bugs.webkit.org/show_bug.cgi?id=236896
Reviewed by Antti Koivisto.
This is similar to what we do in LegacyInlineElementBox::paint.
- layout/integration/LayoutIntegrationLineLayout.cpp:
(WebCore::LayoutIntegration::LineLayout::paint):
- 9:54 AM Changeset in webkit [290230] by
-
- 9 edits in trunk/Source
Versioning.
WebKit-7614.1.6
- 9:53 AM Changeset in webkit [290229] by
-
- 46 edits1 copy in trunk
[IFC][Integration] Enable non-paginated vertical-lr writing mode
https://bugs.webkit.org/show_bug.cgi?id=236481
<rdar://problem/89123721>
Reviewed by Antti Koivisto.
LayoutTests/imported/w3c:
Progressions.
- web-platform-tests/css/cssom-view/offsetTopLeft-empty-inline-expected.txt:
- web-platform-tests/css/cssom-view/offsetTopLeft-leading-space-inline-expected.txt:
Source/WebCore:
- layout/integration/LayoutIntegrationCoverage.cpp:
(WebCore::LayoutIntegration::printReason):
(WebCore::LayoutIntegration::canUseForStyle):
(WebCore::LayoutIntegration::canUseForLineLayoutWithReason):
- layout/integration/LayoutIntegrationCoverage.h:
LayoutTests:
Progression:
- css3/flexbox/line-wrapping.html:
Legacy layout bounds floor/ceil mismatch:
- fast/block/float/float-with-fractional-height-vertical-lr.html:
- imported/blink/fast/multicol/vertical-lr/float-big-line-expected.html:
- imported/blink/fast/multicol/vertical-lr/float-big-line.html:
Progression (visually matching Chrome)
- platform/mac/fast/writing-mode/border-image-vertical-lr-expected.txt:
- platform/mac/fast/writing-mode/border-radius-clipping-vertical-lr-expected.txt:
- platform/mac/fast/writing-mode/border-styles-vertical-lr-expected.txt:
- platform/mac/fast/writing-mode/border-styles-vertical-lr-mixed-expected.txt:
- platform/mac/fast/writing-mode/box-shadow-vertical-lr-expected.txt:
- platform/mac/fast/writing-mode/text-orientation-basic-expected.txt:
- 9:51 AM Changeset in webkit [290228] by
-
- 1 copy in branches/safari-614.1.5-branch
New branch.
- 8:01 AM Changeset in webkit [290227] by
-
- 7 edits1 add in trunk
Generate compile_commands.json on macOS Builds
https://bugs.webkit.org/show_bug.cgi?id=235686
Patch by Brandon Stewart <Brandon> on 2022-02-20
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 d EXPORT_COMPILE_COMMANDS=YES
generate-compile-commands WebKitBuild/Debug
.:
- Makefile.shared:
Source/WebKit:
- UIProcess/API/C/WKPageUIClient.h:
Tools:
- Scripts/build-jsc:
- Scripts/build-webkit:
- Scripts/generate-compile-commands: Added.
- 7:45 AM Changeset in webkit [290226] by
-
- 2 edits in trunk/Tools
[EWS] Enable iOS Simulator queues for PRs
https://bugs.webkit.org/show_bug.cgi?id=236816
<rdar://problem/89117393>
Reviewed by Ryan Haddad.
- Tools/CISupport/ews-build/config.json:
Canonical link: https://commits.webkit.org/247552@main
- 6:17 AM Changeset in webkit [290225] by
-
- 10 edits in trunk/Source/WebCore
RenderBox::flipForWritingModeForChild should take const RenderBox& as the child renderer
https://bugs.webkit.org/show_bug.cgi?id=236895
Reviewed by Antti Koivisto.
- rendering/LegacyInlineElementBox.cpp:
(WebCore::LegacyInlineElementBox::paint):
(WebCore::LegacyInlineElementBox::nodeAtPoint):
- rendering/RenderBlock.cpp:
(WebCore::RenderBlock::paintChild):
(WebCore::RenderBlock::hitTestContents):
(WebCore::RenderBlock::paintExcludedChildrenInBorder):
(WebCore::RenderBlock::hitTestExcludedChildrenInBorder):
- rendering/RenderBlockFlow.cpp:
(WebCore::RenderBlockFlow::paintColumnRules):
- rendering/RenderBox.cpp:
(WebCore::RenderBox::flipForWritingModeForChild const):
(WebCore::RenderBox::topLeftLocation const):
- rendering/RenderBox.h:
- rendering/RenderFlexibleBox.cpp:
(WebCore::RenderFlexibleBox::hitTestChildren):
- rendering/RenderTable.cpp:
(WebCore::RenderTable::paintObject):
(WebCore::RenderTable::nodeAtPoint):
- rendering/RenderTableRow.cpp:
(WebCore::RenderTableRow::nodeAtPoint):
- rendering/RenderTableSection.cpp:
(WebCore::RenderTableSection::paintCell):
(WebCore::RenderTableSection::paintObject):
(WebCore::RenderTableSection::nodeAtPoint):
- 5:14 AM Changeset in webkit [290224] by
-
- 2 edits in trunk/Tools
REGRESSION(r289470): [Flatpak SDK] Broken local SDK handling
https://bugs.webkit.org/show_bug.cgi?id=236940
Patch by Philippe Normand <pnormand@igalia.com> on 2022-02-20
Reviewed by Martin Robinson.
The .Local path was incorrectly generated to WebKitBuild/UserFlatpak/.Local.
- flatpak/flatpakutils.py:
(WebkitFlatpak.clean_args): Revert .Local SDK path handling to the version before r289470.
Feb 19, 2022:
- 11:12 PM Changeset in webkit [290223] by
-
- 21 edits in trunk/Source
Optimize DOM storage event dispatch
https://bugs.webkit.org/show_bug.cgi?id=236871
Reviewed by Sihui Liu.
Made the following optimization to DOM storage event dispatch:
- Pass a SecurityOrigin around instead of a SecurityOriginData. Otherwise, dispatchLocalStorageEvents() / dispatchSessionStorageEvents() just keep reconstructing the SecurityOrigin from the SecurityOriginData for every frame.
- When gathering the list of frames where we need to dispatch the storage event, discard the ones that do not have a "storage" event listener.
Source/WebCore:
- inspector/InspectorInstrumentation.cpp:
(WebCore::InspectorInstrumentation::didDispatchDOMStorageEventImpl):
- inspector/InspectorInstrumentation.h:
(WebCore::InspectorInstrumentation::didDispatchDOMStorageEvent):
- inspector/agents/InspectorDOMStorageAgent.cpp:
(WebCore::InspectorDOMStorageAgent::storageId):
(WebCore::InspectorDOMStorageAgent::didDispatchDOMStorageEvent):
(WebCore::InspectorDOMStorageAgent::findStorageArea):
- inspector/agents/InspectorDOMStorageAgent.h:
- loader/EmptyClients.cpp:
- page/DOMWindow.cpp:
- storage/StorageEventDispatcher.cpp:
(WebCore::StorageEventDispatcher::dispatchSessionStorageEvents):
(WebCore::StorageEventDispatcher::dispatchLocalStorageEvents):
(WebCore::StorageEventDispatcher::dispatchSessionStorageEventsToFrames):
(WebCore::StorageEventDispatcher::dispatchLocalStorageEventsToFrames):
- storage/StorageEventDispatcher.h:
- storage/StorageNamespace.h:
- storage/StorageNamespaceProvider.cpp:
(WebCore::StorageNamespaceProvider::localStorageArea):
Source/WebKit:
- WebProcess/WebStorage/StorageAreaMap.cpp:
(WebKit::StorageAreaMap::StorageAreaMap):
(WebKit::framesForEventDispatching):
(WebKit::StorageAreaMap::dispatchSessionStorageEvent):
(WebKit::StorageAreaMap::dispatchLocalStorageEvent):
- WebProcess/WebStorage/StorageAreaMap.h:
- WebProcess/WebStorage/StorageNamespaceImpl.cpp:
(WebKit::StorageNamespaceImpl::storageArea):
- WebProcess/WebStorage/StorageNamespaceImpl.h:
Source/WebKitLegacy:
- Storage/StorageAreaImpl.cpp:
(WebKit::StorageAreaImpl::StorageAreaImpl):
(WebKit::StorageAreaImpl::create):
(WebKit::StorageAreaImpl::clearForOriginDeletion):
(WebKit::StorageAreaImpl::sync):
(WebKit::StorageAreaImpl::sessionChanged):
- Storage/StorageAreaImpl.h:
- Storage/StorageNamespaceImpl.cpp:
(WebKit::StorageNamespaceImpl::storageArea):
- Storage/StorageNamespaceImpl.h:
- 9:15 PM Changeset in webkit [290222] by
-
- 3 edits in trunk/LayoutTests
Unreviewed gardening for GPU Process bots.
- gpu-process/TestExpectations:
- platform/ios/TestExpectations:
- 9:13 PM Changeset in webkit [290221] by
-
- 2 edits in trunk/LayoutTests
Unreviewed gardening. Relating tests failing due to turning accel drawing on to b236904.
- platform/ios/TestExpectations:
- 8:35 PM Changeset in webkit [290220] by
-
- 6 edits in trunk/LayoutTests
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.
- 5:42 PM Changeset in webkit [290219] by
-
- 2 edits in trunk/Source/WebKit
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.
- 5:34 PM Changeset in webkit [290218] by
-
- 2 edits in trunk/Tools
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):
- 3:05 PM Changeset in webkit [290217] by
-
- 91 edits2 adds in trunk/Source/WebCore
[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):
- 3:01 PM Changeset in webkit [290216] by
-
- 1 copy in tags/Safari-614.1.4.1
Tag Safari-614.1.4.1.
- 2:33 PM Changeset in webkit [290215] by
-
- 9 edits in branches/safari-614.1.4-branch/Source
Versioning.
WebKit-7614.1.4.1
- 1:42 PM Changeset in webkit [290214] by
-
- 4 edits in trunk
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
- 1:16 PM Changeset in webkit [290213] by
-
- 4 edits1 delete in trunk
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
- 1:02 PM Changeset in webkit [290212] by
-
- 2 edits in trunk/Source/WebKit
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):
- 11:24 AM Changeset in webkit [290211] by
-
- 13 edits in trunk/Source/WebKit
[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
requestImageAnalysisMarkupto 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 ofrequestImageAnalysisMarkupto 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
inWebPageProxy::willHighlightContextMenuItemto 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 usingImageOverlay::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_croppedImageResultif it has already been computed.
- WebProcess/WebPage/WebContextMenu.cpp:
(WebKit::WebContextMenu::show):
- WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::didDismissContextMenu):
Destroy the
m_croppedImageOverlayafter 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:
- 9:51 AM Changeset in webkit [290210] by
-
- 3 edits1 add in trunk
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:
- 9:43 AM Changeset in webkit [290209] by
-
- 16 edits7 adds in trunk
[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,
fromandcomparefor Temporal.PlainDate.
This is only a partial implementation, becausefromdoesn't
support object parameters, and thecomparefunction 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.
- 9:31 AM Changeset in webkit [290208] by
-
- 11 edits in trunk/LayoutTests
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:
- 8:16 AM Changeset in webkit [290207] by
-
- 3 edits in trunk/Source/WebCore
[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:
- 6:45 AM Changeset in webkit [290206] by
-
- 14 edits1 add5 deletes in trunk
[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.
- 6:05 AM Changeset in webkit [290205] by
-
- 15 edits in trunk
[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.
- 5:30 AM Changeset in webkit [290204] by
-
- 5 edits in trunk/Source/WebCore
[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:
- 4:36 AM Changeset in webkit [290203] by
-
- 2 edits in trunk/Source/WebKit
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):
- 1:01 AM Changeset in webkit [290202] by
-
- 2 edits in trunk/Source/WebCore
[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.
- 12:48 AM Changeset in webkit [290201] by
-
- 8 edits2 adds in trunk
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:
- compiles a list of implicit properties for the given keyframe
- find a compatible keyframe for the implicit properties or create one
- 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: