main
Commits on Jul 4, 2022
-
[JSC] testair: testZDefOfSpillSlotWithOffsetNeedingToBeMaterializedIn…
…ARegister incorrectly passes https://bugs.webkit.org/show_bug.cgi?id=242254 Reviewed by Yusuke Suzuki. Sorry for monster commit title, but as described: This test (AIUI) tries to stress the spill generation code but on O1, when using the linear scan allocator, the StackSlots that it directly generates are ignored by the allocation pass since they do not have an associated Tmp. They will all be allocated to alias [FP]. Enabling `airLinearScanVerbose` shows this, after the linear scan pass finishes: Air Stack slots: Air spill0: byteSize = 8, offsetFromFP = 0, kind = Spill Air spill1: byteSize = 8, offsetFromFP = 0, kind = Spill Air spill2: byteSize = 8, offsetFromFP = 0, kind = Spill Air spill3: byteSize = 8, offsetFromFP = 0, kind = Spill Air spill4: byteSize = 8, offsetFromFP = 0, kind = Spill Air spill5: byteSize = 8, offsetFromFP = 0, kind = Spill Air spill6: byteSize = 8, offsetFromFP = 0, kind = Spill ... Unfortunately, this seems to have not been noticed since, even though, on e.g. Intel, these will all alias the base pointer (and each other), presumably the test harness does not use the base pointer after executing the generated code, but before restoring it. Also, the test as originally written does not verify that the slots do not alias each other, since they are all expected to match (they are assigned to the argument passed to the translated code) This patch addresses both points by: - Change the test structure so it will break if the slots allocated are aliased, by adding the numbers from zero to `(the number of slots used) - 1` - Generate a large number of simultaneously-live `Tmp`s, instead of directly generating new stack slots. Note that doing only the first of these causes the test to fail its assertion (on darwin/arm64), since the stack slots are still ignored by the linear scan allocator. * Source/JavaScriptCore/b3/air/testair.cpp: Canonical link: https://commits.webkit.org/252125@main
-
[LFC][FFC] Flex item's min/max should include margin, border and padding
https://bugs.webkit.org/show_bug.cgi?id=242302 Reviewed by Antti Koivisto. * Source/WebCore/layout/integration/flex/LayoutIntegrationFlexLayout.cpp: (WebCore::LayoutIntegration::FlexLayout::updateFlexItemDimensions): Canonical link: https://commits.webkit.org/252124@main
-
[Alternate WebM Player] Allow device sleep during playback
https://bugs.webkit.org/show_bug.cgi?id=242317 Reviewed by Jer Noble. Currently the AVSampleBufferDisplayLayer will prevent the display from sleeping by default. However, in order to improve battery life on devices, the display should be able to sleep regardless of whether or not a video is playing within the layer. * Source/WebCore/platform/graphics/cocoa/MediaPlayerPrivateWebM.mm: (WebCore::MediaPlayerPrivateWebM::ensureLayer): Canonical link: https://commits.webkit.org/252123@main
-
[LFC][FFC] Add flex-basis support for column direction
https://bugs.webkit.org/show_bug.cgi?id=242300 Reviewed by Antti Koivisto. Move flex-basis resolving out of flex layout to where we convert visual values to logical. * Source/WebCore/layout/formattingContexts/flex/FlexFormattingContext.cpp: (WebCore::Layout::FlexFormattingContext::convertFlexItemsToLogicalSpace): * Source/WebCore/layout/formattingContexts/flex/FlexLayout.cpp: (WebCore::Layout::FlexLayout::computeLogicalWidthForFlexItems): Canonical link: https://commits.webkit.org/252122@main
-
[JSC] Use memchr in WTF::find for long strings
https://bugs.webkit.org/show_bug.cgi?id=242305 Reviewed by Darin Adler. For long strings, memchr is massively faster than normal for-loop-based WTF::find. This patch upstreams a fast path from Jarred's bun. If the given string is 16 or longer, we use memchr if the input is LChar. This can offer up to 13x performance improvement for long strings. ToT Patched string-index-of-10000001-mid 2205.4979+-4.2592 ^ 221.0630+-0.8919 ^ definitely 9.9768x faster string-index-of-1001-404 0.9214+-0.0703 ^ 0.5419+-0.0703 ^ definitely 1.7002x faster string-index-of-101-mid 0.4619+-0.0156 ? 0.5250+-0.0745 ? might be 1.1365x slower string-index-of-11-404 0.4681+-0.0378 ? 0.5084+-0.0671 ? might be 1.0862x slower string-index-of-100001-end 43.2624+-0.2025 ^ 3.4478+-0.0448 ^ definitely 12.5478x faster string-index-of-1001-beg 0.5792+-0.1128 0.5020+-0.0307 might be 1.1537x faster string-index-of-1000001-mid 219.6133+-0.6721 ^ 21.7715+-0.1868 ^ definitely 10.0872x faster string-index-of-11-beg 0.5390+-0.0957 0.4938+-0.0488 might be 1.0916x faster string-index-of-100001-404 43.1607+-0.1565 ^ 3.4266+-0.0339 ^ definitely 12.5959x faster string-index-of-11-end 0.5703+-0.1035 0.4993+-0.0671 might be 1.1424x faster string-index-of-100001-beg 1.4254+-0.0285 ? 1.4297+-0.0293 ? string-index-of-1001-end 0.8898+-0.0155 ^ 0.5397+-0.0434 ^ definitely 1.6486x faster string-index-of-10001-mid 2.6381+-0.0128 ^ 0.6968+-0.0194 ^ definitely 3.7859x faster string-index-of-100001-mid 22.3904+-0.0908 ^ 2.4405+-0.0278 ^ definitely 9.1745x faster string-index-of-10001-beg 0.5799+-0.0275 ? 0.6409+-0.0848 ? might be 1.1052x slower string-index-of-1000001-end 429.8451+-1.0909 ^ 33.0243+-0.1489 ^ definitely 13.0160x faster string-index-of-10000001-end 4311.6106+-8.5017 ^ 342.4604+-2.5696 ^ definitely 12.5901x faster string-index-of-10001-404 4.7512+-0.0329 ^ 0.8011+-0.0209 ^ definitely 5.9309x faster string-index-of-101-end 0.4812+-0.0131 ? 0.4917+-0.0246 ? might be 1.0220x slower string-index-of-101-404 0.5520+-0.0778 0.5100+-0.0671 might be 1.0824x faster string-index-of-1000001-beg 10.0429+-0.0882 ? 10.0694+-0.1024 ? string-index-of-11-mid 0.4578+-0.0236 ? 0.5159+-0.0519 ? might be 1.1271x slower string-index-of-10000001-404 4318.2034+-9.4519 ^ 343.7710+-2.7918 ^ definitely 12.5613x faster string-index-of-1001-mid 0.6977+-0.0197 0.6024+-0.1121 might be 1.1581x faster string-index-of-10001-end 4.7425+-0.0291 ^ 0.8022+-0.0152 ^ definitely 5.9117x faster string-index-of-101-beg 0.5055+-0.0720 ? 0.5122+-0.0789 ? might be 1.0132x slower string-index-of-1000001-404 428.1418+-0.6700 ^ 33.0665+-0.1926 ^ definitely 12.9479x faster string-index-of-10000001-beg 105.1998+-2.6163 102.6464+-1.9531 might be 1.0249x faster <geometric> 7.5209+-0.0853 ^ 2.7424+-0.0300 ^ definitely 2.7425x faster * JSTests/microbenchmarks/string-index-of-10000001-404.js: Added. (bench): (target): (forRepeatCount): (all): * JSTests/microbenchmarks/string-index-of-10000001-beg.js: Added. (bench): (target): (forRepeatCount): (all): * JSTests/microbenchmarks/string-index-of-10000001-end.js: Added. (bench): (target): (forRepeatCount): (all): * JSTests/microbenchmarks/string-index-of-10000001-mid.js: Added. (bench): (target): (forRepeatCount): (all): * JSTests/microbenchmarks/string-index-of-1000001-404.js: Added. (bench): (target): (forRepeatCount): (all): * JSTests/microbenchmarks/string-index-of-1000001-beg.js: Added. (bench): (target): (forRepeatCount): (all): * JSTests/microbenchmarks/string-index-of-1000001-end.js: Added. (bench): (target): (forRepeatCount): (all): * JSTests/microbenchmarks/string-index-of-1000001-mid.js: Added. (bench): (target): (forRepeatCount): (all): * JSTests/microbenchmarks/string-index-of-100001-404.js: Added. (bench): (target): (forRepeatCount): (all): * JSTests/microbenchmarks/string-index-of-100001-beg.js: Added. (bench): (target): (forRepeatCount): (all): * JSTests/microbenchmarks/string-index-of-100001-end.js: Added. (bench): (target): (forRepeatCount): (all): * JSTests/microbenchmarks/string-index-of-100001-mid.js: Added. (bench): (target): (forRepeatCount): (all): * JSTests/microbenchmarks/string-index-of-10001-404.js: Added. (bench): (target): (forRepeatCount): (all): * JSTests/microbenchmarks/string-index-of-10001-beg.js: Added. (bench): (target): (forRepeatCount): (all): * JSTests/microbenchmarks/string-index-of-10001-end.js: Added. (bench): (target): (forRepeatCount): (all): * JSTests/microbenchmarks/string-index-of-10001-mid.js: Added. (bench): (target): (forRepeatCount): (all): * JSTests/microbenchmarks/string-index-of-1001-404.js: Added. (bench): (target): (forRepeatCount): (all): * JSTests/microbenchmarks/string-index-of-1001-beg.js: Added. (bench): (target): (forRepeatCount): (all): * JSTests/microbenchmarks/string-index-of-1001-end.js: Added. (bench): (target): (forRepeatCount): (all): * JSTests/microbenchmarks/string-index-of-1001-mid.js: Added. (bench): (target): (forRepeatCount): (all): * JSTests/microbenchmarks/string-index-of-101-404.js: Added. (bench): (target): (forRepeatCount): (all): * JSTests/microbenchmarks/string-index-of-101-beg.js: Added. (bench): (target): (forRepeatCount): (all): * JSTests/microbenchmarks/string-index-of-101-end.js: Added. (bench): (target): (forRepeatCount): (all): * JSTests/microbenchmarks/string-index-of-101-mid.js: Added. (bench): (target): (forRepeatCount): (all): * JSTests/microbenchmarks/string-index-of-11-404.js: Added. (bench): (target): (forRepeatCount): (all): * JSTests/microbenchmarks/string-index-of-11-beg.js: Added. (bench): (target): (forRepeatCount): (all): * JSTests/microbenchmarks/string-index-of-11-end.js: Added. (bench): (target): (forRepeatCount): (all): * JSTests/microbenchmarks/string-index-of-11-mid.js: Added. (bench): (target): (forRepeatCount): (all): * Source/WTF/wtf/text/StringCommon.h: (WTF::find): Canonical link: https://commits.webkit.org/252121@main
-
[LFC][FFC] Add support for overconstrained alignment cases
https://bugs.webkit.org/show_bug.cgi?id=242299 Reviewed by Antti Koivisto. (This is in an overconstrained context when the content is wider than the available space.) 1. gap value should never be negative (i.e. no overlapping flex items) 2. since there's no gap between the flex items, offset should be computed as if there was one wide flex item. * Source/WebCore/layout/formattingContexts/flex/FlexLayout.cpp: (WebCore::Layout::FlexLayout::justifyFlexItems): Canonical link: https://commits.webkit.org/252120@main
-
[CSS Container Queries] Rename container-type value 'none' to 'normal'
https://bugs.webkit.org/show_bug.cgi?id=242311 <rdar://96397509> Unreviewed followup. * LayoutTests/platform/mac-wk1/TestExpectations: Skip some WPTs on WK1 (they were updated to be async and don't work anymore). Canonical link: https://commits.webkit.org/252119@main
-
[iOS] Mail occasionally crashes under WebKit: API::Attachment::enclos…
…ingImageData() https://bugs.webkit.org/show_bug.cgi?id=242251 rdar://96131691 Reviewed by Chris Dumez. The QuickLook attachment thumbnailing codepath, which uses `WKQLThumbnailLoadOperation` to request an icon image for API-backed attachments, reads data out of the file wrapper from a background thread. If anything simultaneously tries to access the file wrapper's content from the main thread, the file wrapper's cached data blob will be left in a bad state (smashed, or overreleased, etc.), potentially causing Mail to crash. After the changes in 250772@main, we now automatically trigger QuickLook thumbnail requests when inserting attachments via the pasteboard (i.e. drag-and-drop or copy-paste), at the same time as we update attachment attributes (calling `enclosingImageData()` in the process on the main thread). As a result, we hit the thread safety issue and crash described above much more frequently, resulting in various API-attachment-related crashes that all occur when the main thread tries to read from the file wrapper while QuickLook thumbnail operation queue is also active. To fix this, we add a compile-time guard to ensure that access to each attachment's `m_fileWrapper` is guarded behind a `m_fileWrapperLock`; we additionally refactor the code so that instead of exposing a `Attachment::fileWrapper()` getter method, we have `Attachment::doWithFileWrapper()`, which takes a C++ lambda and calls the lambda with the `NSFileWrapper`, after grabbing the lock. * Source/WebKit/UIProcess/API/APIAttachment.cpp: (API::Attachment::invalidate): * Source/WebKit/UIProcess/API/APIAttachment.h: * Source/WebKit/UIProcess/API/Cocoa/APIAttachmentCocoa.mm: (API::Attachment::setFileWrapper): (API::Attachment::doWithFileWrapper const): Replaces the `fileWrapper()` getter. (API::Attachment::fileName const): (API::Attachment::fileSizeForDisplay const): (API::Attachment::enclosingImageData const): (API::Attachment::enclosingImageNSData const): (API::Attachment::isEmpty const): (API::Attachment::createSerializedRepresentation const): (API::Attachment::fileWrapper const): Deleted. Adopt `doWithFileWrapper` everywhere we currently use either `m_fileWrapper` directly, or the now- deleted `fileWrapper()` getter. (API::Attachment::invalidateGeneratedFileWrapper): Deleted. (API::Attachment::setFileWrapperGenerator): Deleted. Delete support for delayed file wrapper generation; this was initially introduced in r238538 for Apple pencil support in Mail, but was ultimately implemented using an alternate approach. * Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _insertAttachmentWithFileWrapper:contentType:completion:]): * Source/WebKit/UIProcess/API/Cocoa/_WKAttachment.mm: (-[_WKAttachmentInfo initWithAttachment:]): Make this take an `API::Attachment` instead of a file wrapper (and other attachment metadata) as separate arguments. This allows us to use `doWithFileWrapper()` to access the attachment's file wrapper behind a lock. (-[_WKAttachmentInfo data]): (-[_WKAttachmentInfo name]): (-[_WKAttachmentInfo fileWrapper]): (-[_WKAttachment info]): (-[_WKAttachmentInfo initWithFileWrapper:filePath:mimeType:utiType:]): Deleted. * Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm: (WebKit::WebPageProxy::platformCloneAttachment): (WebKit::WebPageProxy::requestThumbnail): (WebKit::WebPageProxy::requestThumbnailWithPath): (WebKit::WebPageProxy::requestThumbnailWithOperation): Deleted. (WebKit::WebPageProxy::requestThumbnailWithFileWrapper): Deleted. Drive-by refactoring: rename a couple of methods to the more succinct `requestThumbnail()`, relying on C++ method overloading. * Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm: (WebKit::WebViewImpl::writeToURLForFilePromiseProvider): * Source/WebKit/UIProcess/QuickLookThumbnailLoader.h: * Source/WebKit/UIProcess/QuickLookThumbnailLoader.mm: (-[WKQLThumbnailLoadOperation initWithAttachment:identifier:]): Make this take an `API::Attachment` instead of taking the attachment's file wrapper directly. This allows us to use `doWithFileWrapper` to read from the file wrapper when generating the attachment thumbnail. (-[WKQLThumbnailLoadOperation start]): * Source/WebKit/UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::requestAttachmentIcon): (WebKit::WebPageProxy::updateAttachmentAttributes): (WebKit::WebPageProxy::registerAttachmentIdentifierFromFilePath): (WebKit::WebPageProxy::registerAttachmentsFromSerializedData): * Source/WebKit/UIProcess/WebPageProxy.h: * Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm: (-[WKContentView _prepareToDragPromisedAttachment:]): (createItemProvider): * Tools/TestWebKitAPI/Tests/WebKitCocoa/WKAttachmentTests.mm: (TestWebKitAPI::TEST): Drive-by fix: make `WKAttachmentTestsMac.DraggingAttachmentBackedImagePreservesRangedSelection` pass when running API tests locally, when the TestWebKitAPI window is not ordered to the front. When running this test from command line from Terminal, the API test's window ends up behind the terminal window, which causes the drag session to never end. Canonical link: https://commits.webkit.org/252118@main
-
[LFC][FFC] ContentPosition::Left/Start/Right/End are non-logical alig…
…nment values https://bugs.webkit.org/show_bug.cgi?id=242298 Reviewed by Antti Koivisto. Use the visual "edges" when computing offset values for such non-logical alignments. * Source/WebCore/layout/formattingContexts/flex/FlexLayout.cpp: (WebCore::Layout::FlexLayout::justifyFlexItems): Canonical link: https://commits.webkit.org/252117@main
-
[CSS Container Queries] Rename container-type value 'none' to 'normal'
https://bugs.webkit.org/show_bug.cgi?id=242311 Reviewed by Alan Bujtas. Implement w3c/csswg-drafts#7402 Also exclude some values from container-name (per https://drafts.csswg.org/css-contain-3/#container-name). Also re-import container query WPT tests. * LayoutTests/imported/w3c/resources/import-expectations.json: * LayoutTests/imported/w3c/resources/resource-files.json: * LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/at-container-parsing-expected.txt: * LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/at-container-parsing.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/at-container-serialization-expected.txt: * LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/at-container-serialization.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/at-container-style-serialization-expected.txt: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/at-container-style-serialization.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/calc-evaluation-expected.txt: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/calc-evaluation.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/canvas-as-container-001.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/canvas-as-container-002.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/canvas-as-container-003.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/canvas-as-container-004.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/column-spanner-in-container-expected.txt: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/column-spanner-in-container.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-computed-expected.txt: * LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-computed.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-inheritance-expected.txt: * LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-inheritance.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-name-parsing-expected.txt: * LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-name-parsing.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-parsing-expected.txt: * LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-parsing.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-size-nested-invalidation-expected.txt: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-size-nested-invalidation.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-type-computed-expected.txt: * LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-type-computed.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-type-parsing-expected.txt: * LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-type-parsing.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-units-in-at-container-dynamic-expected.txt: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-units-in-at-container-dynamic.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-units-in-at-container-expected.txt: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-units-in-at-container-fallback-expected.txt: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-units-in-at-container-fallback.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-units-in-at-container.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-units-invalidation-expected.txt: * LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-units-invalidation.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/crashtests/columns-in-table-002-crash.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/crashtests/w3c-import.log: * LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/font-relative-calc-dynamic-expected.txt: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/font-relative-calc-dynamic.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/font-relative-units-dynamic-expected.txt: * LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/font-relative-units-dynamic.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/grid-container-expected.txt: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/grid-container.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/grid-item-container-expected.txt: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/grid-item-container.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/w3c-import.log: * Source/WebCore/css/CSSComputedStyleDeclaration.cpp: (WebCore::hasValidStyleForProperty): (WebCore::ComputedStyleExtractor::valueForPropertyInStyle): * Source/WebCore/css/CSSPrimitiveValueMappings.h: (WebCore::CSSPrimitiveValue::CSSPrimitiveValue): (WebCore::CSSPrimitiveValue::operator ContainerType const): * Source/WebCore/css/CSSValueKeywords.in: * Source/WebCore/css/StyleProperties.cpp: (WebCore::isCSSWideValueKeyword): Drive-by fix. (WebCore::isNormalValue): (WebCore::StyleProperties::getPropertyValue const): * Source/WebCore/css/parser/CSSParserFastPaths.cpp: (WebCore::CSSParserFastPaths::isValidKeywordPropertyAndValue): * Source/WebCore/css/parser/CSSPropertyParserHelpers.cpp: (WebCore::CSSPropertyParserHelpers::consumeSingleContainerName): * Source/WebCore/dom/Document.cpp: (WebCore::Document::updateLayoutIfDimensionsOutOfDate): * Source/WebCore/rendering/RenderBox.cpp: (WebCore::RenderBox::willBeDestroyed): (WebCore::RenderBox::styleWillChange): * Source/WebCore/rendering/style/RenderStyle.h: (WebCore::RenderStyle::initialContainerType): * Source/WebCore/rendering/style/RenderStyleConstants.h: * Source/WebCore/rendering/style/StyleRareNonInheritedData.cpp: (WebCore::StyleRareNonInheritedData::effectiveContainment const): * Source/WebCore/style/ContainerQueryEvaluator.cpp: (WebCore::Style::ContainerQueryEvaluator::selectContainer): (WebCore::Style::ContainerQueryEvaluator::evaluateSizeFeature const): * Source/WebCore/style/StyleScope.cpp: (WebCore::Style::Scope::updateQueryContainerState): * Source/WebCore/style/StyleSharingResolver.cpp: (WebCore::Style::SharingResolver::canShareStyleWithElement const): * Source/WebCore/style/StyleTreeResolver.cpp: (WebCore::Style::TreeResolver::pushParent): (WebCore::Style::TreeResolver::resolveComposedTree): (WebCore::Style::TreeResolver::determineQueryContainerAction): Canonical link: https://commits.webkit.org/252116@main
-
https://bugs.webkit.org/show_bug.cgi?id=242236 Reviewed by Aakash Jain. The softfp ARMv7 bot has been kept around to ensure that things would work for users that are depend on vendor libraries that require the softfp ABI. Recent changes broke softfp and we're no longer aware of any users for it. Bug 242172 drops JSC support for the softfp ABI; this bug is about removing the corresponding buildbot from build.webkit.org. * Tools/CISupport/build-webkit-org/config.json: * Tools/CISupport/build-webkit-org/factories_unittest.py: (TestExpectedBuildSteps): * Tools/CISupport/build-webkit-org/public_html/dashboard/Scripts/WebKitBuildbot.js: (WebKitBuildbot): Canonical link: https://commits.webkit.org/252115@main
-
[resultsdb] Expose reported flakiness information in the UI
https://bugs.webkit.org/show_bug.cgi?id=238809 Reviewed by Jonathan Bedard. Aggregate the number of flaky tests in an upload. In the suites view, provide a 'Show number of flaky tests' toggle. In the search view, provide a 'Show test flakiness' toggle. Make the per-dot tag into an array of information. Toggling all possible tag values on at once will certainly result in text overlap). * Tools/Scripts/libraries/resultsdbpy/resultsdbpy/model/suite_context.py: (SuiteContext.register): (SuiteContext.register.callback): * Tools/Scripts/libraries/resultsdbpy/resultsdbpy/view/static/js/timeline.js: (TimelineFromEndpoint.const.options.prototype.renderFactory): (result.div.label.Show.test.flakiness.label.label): (result.div.label.Number.of.flakes.label.label): * Tools/Scripts/libraries/resultsdbpy/resultsdbpy/view/templates/search.html: * Tools/Scripts/libraries/resultsdbpy/resultsdbpy/view/templates/suite_results.html: Canonical link: https://commits.webkit.org/252114@main
-
[GStreamer] Build failure with ENABLE_MEDIA_CAPTURE=ON
https://bugs.webkit.org/show_bug.cgi?id=242309 Reviewed by Philippe Normand. * Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLInputElement.cpp: (webkit_dom_html_input_element_set_capture_type): Switch from outdated usage of WTF::String to WTF::AtomString. Canonical link: https://commits.webkit.org/252113@main
-
[GStreamer][VideoCapture] fix getVideoSizeAndFormatFromCaps/getVideoR…
…esolutionFromCaps for video/x-raw mime-type caps without format https://bugs.webkit.org/show_bug.cgi?id=242290 Reviewed by Philippe Normand. Fixes: 0:00:02.001539663 1169 0x5577d2b74810 DEBUG video-info video-info.c:406:gst_video_info_from_caps: parsing caps video/x-raw 0:00:02.001842884 1169 0x5577d2b74810 ERROR video-info video-info.c:546:gst_video_info_from_caps: no format given 0:00:02.002197896 1169 0x5577d2b74810 INFO webkitvideocapturer GStreamerVideoCapturer.cpp:136:setSize: Setting size to 640x480 * Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.cpp: (WebCore::getVideoSizeAndFormatFromCaps): (WebCore::getVideoResolutionFromCaps): Canonical link: https://commits.webkit.org/252112@main
-
https://bugs.webkit.org/show_bug.cgi?id=242181 Reviewed by Darin Adler. Specified locale is set twice in the resolveForDocument method for no reason. Keep the second occurence only since that is the place where the FontCascadeDescription is fully determined. * Source/WebCore/rendering/RenderBlockFlow.cpp: (WebCore::RenderBlockFlow::updateColumnProgressionFromStyle): * Source/WebCore/rendering/RenderBlockFlow.h: * Source/WebCore/style/StyleResolveForDocument.cpp: (WebCore::Style::resolveForDocument): Canonical link: https://commits.webkit.org/252111@main
-
The :host() function pseudo-class should only accept a single compoun…
…d-selector https://bugs.webkit.org/show_bug.cgi?id=222733 Reviewed by Darin Adler. Align WebKit's CSS parsing behavior of :host(~) with Blink and Gecko. * Source/WebCore/css/parser/CSSSelectorParser.cpp: (WebCore::CSSSelectorParser::consumePseudo): * LayoutTests/fast/shadow-dom/shadow-host-compound-selector-expected.html: Added. * LayoutTests/fast/shadow-dom/shadow-host-compound-selector.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-scoping/host-parsing-expected.txt: Rebaselined. Canonical link: https://commits.webkit.org/252110@main
-
Rename offlineasm's asm.deferAction to asm.deferOSDarwinAction.
https://bugs.webkit.org/show_bug.cgi?id=242301 Reviewed by Yusuke Suzuki. Similarly, rename the underlying field from @deferredAction to @deferredOSDarwinAction. This deferAction was only used for OS(DARWIN) anyway. By changing it to be OS(DARWIN) specific to indicate its actual usage, we can make the generated LLIntAssembly.h more readable (less cluttered). Previously, we emit this code: OFFLINE_ASM_GLOBAL_LABEL(llintPCRangeEnd) #if OS(DARWIN) ".loh AdrpLdrGot Ljsc_llint_loh_adrp_1, Ljsc_llint_loh_ldr_1 \n" #endif #if OS(DARWIN) ".loh AdrpLdrGot Ljsc_llint_loh_adrp_2, Ljsc_llint_loh_ldr_2 \n" #endif ... #if OS(DARWIN) ".loh AdrpLdrGot Ljsc_llint_loh_adrp_2308, Ljsc_llint_loh_ldr_2308 \n" #endif OFFLINE_ASM_END Now, we emit this instead: OFFLINE_ASM_GLOBAL_LABEL(llintPCRangeEnd) #if OS(DARWIN) ".loh AdrpLdrGot Ljsc_llint_loh_adrp_1, Ljsc_llint_loh_ldr_1 \n" ".loh AdrpLdrGot Ljsc_llint_loh_adrp_2, Ljsc_llint_loh_ldr_2 \n" ... ".loh AdrpLdrGot Ljsc_llint_loh_adrp_2308, Ljsc_llint_loh_ldr_2308 \n" #endif // OS(DARWIN) OFFLINE_ASM_END * Source/JavaScriptCore/offlineasm/arm64.rb: * Source/JavaScriptCore/offlineasm/asm.rb: Canonical link: https://commits.webkit.org/252109@main
Mark Lam committedJul 4, 2022 -
[iOS] "A problem repeatedly occurred" error page when safari resuming…
… from background https://bugs.webkit.org/show_bug.cgi?id=242292 <rdar://96178034> Reviewed by Darin Adler. When Safari is suspended in the background, its WebProcesses are idle and thus more likely to get jetsammed. If they get jetsammed while Safari was suspended, Safari will only receive the crash notification(s) once it is resumed. The issue was that when resuming Safari after several WebProcesses have been jetsammed, we would get a crash notification for a view's process and let Safari know. This would cause Safari to call reload on the view to recover from the crash. However, instead of launching a fresh new process, WebPageProxy::launchProcess() would sometimes try and be smart and reuse an eligible existing WebProcess, which is usually fine. However, we can get unlucky and choose a WebProcess that was also jetsammed while suspended, for which we haven't received the crash notification yet (but are about to). When the crash notification for this second process comes in shortly after, we tell Safari that the view's process crashes again. This trips some logic in Safari that causes it to show the "A problem repeatedly occurred" error page since it was told that the view's process crashed twice in a row (i.e. failed to recover). To address the issue, I made the following change: - WebPageProxy::launchProcess() now only reuses the related WKWebView's process when it is its initial process, not in case of a crash. This was the case in the radar. This fix is covered by a new API test that reproduces the scenario in the radar. Ideally, we'd prevent WebPageProxy::launchProcess() from reusing processes from the process cache or suspended pages if they were terminated too. I will look into this in a follow-up. * Source/WebKit/UIProcess/SuspendedPageProxy.cpp: (WebKit::SuspendedPageProxy::findReusableSuspendedPageProcess): * Source/WebKit/UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::launchProcess): * Source/WebKit/UIProcess/WebProcessCache.cpp: (WebKit::WebProcessCache::takeProcess): * Source/WebKit/UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::processForRegistrableDomain): * Tools/TestWebKitAPI/Tests/WebKitCocoa/WebContentProcessDidTerminate.mm: (TEST): Canonical link: https://commits.webkit.org/252108@main
Commits on Jul 3, 2022
-
iOS: click event doesn't get dispatched when there is a click event l…
…istener on ShadowRoot https://bugs.webkit.org/show_bug.cgi?id=218923 Reviewed by Wenson Hsieh. The bug was caused by WebPage::commitPotentialTap falsely treating ShadowRoot as an invalid tap target because it doesn't have a renderer. Fixed the bug by checking the shadow host's renderer instead much like http://commits.webkit.org/r246404 for display: contents. * Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::WebPage::commitPotentialTap): Fixed the bug. * LayoutTests/fast/shadow-dom/click-eventlistener-on-shadow-root-expected.txt: Added. * LayoutTests/fast/shadow-dom/click-eventlistener-on-shadow-root.html: Added. Canonical link: https://commits.webkit.org/252107@main
-
Performing a no-op animated resize cancels any pending resize immedia…
…tely https://bugs.webkit.org/show_bug.cgi?id=242233 Reviewed by Wenson Hsieh. * Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm: (-[WKWebView _beginAnimatedResizeWithUpdates:]): _beginAnimatedResizeWithUpdates cancels the resize and completes immediately if the update block didn't change any relevant state. For clients who want to do multiple animated resizes in a row, this can result in a discontinuity if a impactful animated resize is performed, followed by a no-op animated resize before the results of the first resize arrive: this results in the first resize being cancelled, and the web view being shown in an incompletely-updated state. To avoid this, just avoid cancelling no-op resizes when there is already a pending resize. * Tools/TestWebKitAPI/Tests/WebKitCocoa/AnimatedResize.mm: (TEST): Add a test. Also move all of the other tests into an AnimatedResize test group to make it easy to run them together. Add a missing `_endAnimatedResize` to ResizeWithContentHiddenWithSubsequentNoOpResizeCompletes, because previously it was depending on this bug. Canonical link: https://commits.webkit.org/252106@main
-
WKWebView: Username/Password autocomplete does not prompt on non-pass…
…word inputs in Shadow DOM https://bugs.webkit.org/show_bug.cgi?id=203299 Reviewed by Darin Adler and Wenson Hsieh. Add tests for WKWebView autofill now that the bug has been fixed in https://commits.webkit.org/r269059. * Tools/TestWebKitAPI/Tests/ios/WKWebViewAutofillTests.mm: (WKWebViewAutoFillTests.UsernameAndPasswordFieldAcrossShadowBoundaries): Added. (WKWebViewAutoFillTests.AccountCreationPageAcrossShadowBoundaries): Added. Canonical link: https://commits.webkit.org/252105@main
-
[GStreamer][VideoCapture] Fix video/x-raw mime-type format check
https://bugs.webkit.org/show_bug.cgi?id=242296 Reviewed by Philippe Normand. Should use gst_structure_has_field not gst_structure_has_name for this check. * Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoCapturer.cpp: (WebCore::GStreamerVideoCapturer::reconfigure): Canonical link: https://commits.webkit.org/252104@main
-
[GStreamer][VideoCapture] Remove video/x-raw mime-type caps filters
https://bugs.webkit.org/show_bug.cgi?id=242256 Reviewed by Philippe Normand. We support image/jpeg mime-type sources so having a video/x-raw mime-type caps filter doesn't seem correct. * Source/WebCore/platform/mediastream/gstreamer/GStreamerCaptureDeviceManager.cpp: (WebCore::GStreamerCaptureDeviceManager::refreshCaptureDevices): Canonical link: https://commits.webkit.org/252103@main
-
[GStreamer][VideoCapture] do not call reconfigure() in settingsDidCha…
…nge unless size or framerate sucessfully changes https://bugs.webkit.org/show_bug.cgi?id=242291 Reviewed by Philippe Normand. This appears to eliminate a redundant reconfigure call during stream shutdown. * Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoCaptureSource.cpp: (WebCore::GStreamerVideoCaptureSource::settingsDidChange): Canonical link: https://commits.webkit.org/252102@main
-
[GStreamer] Improve error/warning message logging
https://bugs.webkit.org/show_bug.cgi?id=242289 Reviewed by Philippe Normand. Log warning and error messages unconditionally with pipeline. * Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp: (WebCore::MediaPlayerPrivateGStreamer::handleMessage): Canonical link: https://commits.webkit.org/252101@main
-
[GLIB] Fix memory leak in KeyedEncoderGlib finishEncoding()
https://bugs.webkit.org/show_bug.cgi?id=242295 Reviewed by Michael Catanzaro. We need to use adoptGRef when calling g_variant_get_data_as_bytes as the return is already ref'd. See: https://github.com/GNOME/glib/blob/2.72.3/glib/gvariant-core.c#L975 Fixes: ==3126== 330 (120 direct, 210 indirect) bytes in 3 blocks are definitely lost in loss record 3,105 of 3,199 ==3126== at 0x48447ED: malloc (vg_replace_malloc.c:381) ==3126== by 0xA87B2E8: g_malloc (gmem.c:106) ==3126== by 0xA892E44: g_slice_alloc (gslice.c:1072) ==3126== by 0xA84B005: g_bytes_new_with_free_func (gbytes.c:186) ==3126== by 0xA84B067: g_bytes_new_take (gbytes.c:128) ==3126== by 0xA8B934D: g_variant_ensure_serialised (gvariant-core.c:460) ==3126== by 0xA8B958E: g_variant_get_data_as_bytes (gvariant-core.c:961) ==3126== by 0x8765214: WebCore::KeyedEncoderGlib::finishEncoding() (KeyedEncoderGlib.cpp:139) ==3126== by 0x53CF40E: WebKit::writeToDisk(std::unique_ptr<WebCore::KeyedEncoder, std::default_delete<WebCore::KeyedEncoder> >&&, WTF::String&&) (PersistencyUtils.cpp:53) ==3126== by 0x545EF8C: operator() (DeviceIdHashSaltStorage.cpp:201) ==3126== by 0x545EF8C: WTF::Detail::CallableWrapper<WebKit::DeviceIdHashSaltStorage::storeHashSaltToDisk(WebKit::DeviceIdHashSaltStorage::HashSaltForOrigin const&)::{lambda()#1}, void>::call() (Function.h:53) ==3126== by 0x6E52DE9: operator() (Function.h:82) ==3126== by 0x6E52DE9: operator() (WorkQueueGeneric.cpp:70) ==3126== by 0x6E52DE9: WTF::Detail::CallableWrapper<WTF::WorkQueueBase::dispatch(WTF::Function<void ()>&&)::{lambda()#1}, void>::call() (Function.h:53) ==3126== by 0x6DF490F: operator() (Function.h:82) ==3126== by 0x6DF490F: WTF::RunLoop::performWork() (RunLoop.cpp:133) ==3126== by 0x6E55171: WTF::RunLoop::RunLoop()::{lambda(void*)#1}::_FUN(void*) (RunLoopGLib.cpp:80) ==3126== by 0x6E55D61: operator() (RunLoopGLib.cpp:53) ==3126== by 0x6E55D61: WTF::RunLoop::{lambda(_GSource*, int (*)(void*), void*)#1}::_FUN(_GSource*, int (*)(void*), void*) (RunLoopGLib.cpp:56) ==3126== by 0xA8723AB: g_main_dispatch (gmain.c:3381) ==3126== by 0xA875839: g_main_context_dispatch (gmain.c:4099) ==3126== by 0xA8759A7: g_main_context_iterate (gmain.c:4175) ==3126== by 0xA875D41: g_main_loop_run (gmain.c:4373) ==3126== by 0x6E5613C: WTF::RunLoop::run() (RunLoopGLib.cpp:108) ==3126== by 0x6E52E14: operator() (WorkQueueGeneric.cpp:51) ==3126== by 0x6E52E14: WTF::Detail::CallableWrapper<WTF::WorkQueueBase::platformInitialize(char const*, WTF::WorkQueueBase::Type, WTF::Thread::QOS)::{lambda()#1}, void>::call() (Function.h:53) ==3126== by 0x6DF6FD7: operator() (Function.h:82) ==3126== by 0x6DF6FD7: WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*) (Threading.cpp:236) ==3126== by 0x6E59A3F: WTF::wtfThreadEntryPoint(void*) (ThreadingPOSIX.cpp:242) ==3126== by 0xA9D6DC2: start_thread (pthread_create.c:442) ==3126== by 0xAA4FA0F: clone (clone.S:100) ==3126== * Source/WebCore/platform/glib/KeyedEncoderGlib.cpp: (WebCore::KeyedEncoderGlib::finishEncoding): Canonical link: https://commits.webkit.org/252100@main
-
:lang pseudo class should work across shadow boundaries
https://bugs.webkit.org/show_bug.cgi?id=235020 Reviewed by Antti Koivisto. Fixed the bug that :lang pseudo class doesn't work across shadow boundaries. * Source/WebCore/dom/Element.cpp: (WebCore::Element::computeInheritedLanguage const): Walk up the shadow-including ancestors. Note that we don't use parentElementInComposedTree as we don't want to traverse up to a slot. * LayoutTests/fast/shadow-dom/lang-pseudo-class-across-shadow-boundaries-expected.html: Added. * LayoutTests/fast/shadow-dom/lang-pseudo-class-across-shadow-boundaries.html: Added. Canonical link: https://commits.webkit.org/252099@main
-
Change adoptNode() for a DocumentFragment with host
https://bugs.webkit.org/show_bug.cgi?id=204980 Reviewed by Darin Adler. Disallow adoptNode on a TemplateContentDocumentFragment to align with the spec. Also re-introduce a fast path in containsIncludingHostElements that was removed in https://commits.webkit.org/r272703 to handle this particular case. * LayoutTests/imported/w3c/web-platform-tests/dom/nodes/adoption.window-expected.txt: * LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-template-element/template-element/template-content-hierarcy-expected.txt: * Source/WebCore/dom/ContainerNode.cpp: (WebCore::containsIncludingHostElements): * Source/WebCore/dom/Document.cpp: (WebCore::Document::adoptNode): Return early when a node is TemplateContentDocumentFragment (i.e. it's not a shadow root but has a host). * Source/WebCore/dom/TemplateContentDocumentFragment.h: (isType): Added. Canonical link: https://commits.webkit.org/252098@main
Commits on Jul 2, 2022
-
[Flatpak SDK] Update Mold to version 1.3.1
https://bugs.webkit.org/show_bug.cgi?id=242279 Reviewed by Philippe Normand. * Tools/buildstream/elements/sdk/mold.bst: Bump to version 1.3.1 Canonical link: https://commits.webkit.org/252097@main
-
REGRESSION (iOS 16): Characters outside a font-face's unicode-range a…
…ttribute don't render when characters in that range are present https://bugs.webkit.org/show_bug.cgi?id=241831 <rdar://95646820> Reviewed by Alan Bujtas. When we fall off the end of the font fallback list, we create a "system fallback" font. It's possible for this font to be a web font (see w3c/csswg-drafts#7449 for discussion about this). If it is a web font, we need to preserve the CreationData of the font so it can be transferred across IPC. Test: fast/text/font-face-fall-off-end.html * LayoutTests/fast/text/font-face-fall-off-end-expected.html: * LayoutTests/fast/text/font-face-fall-off-end.html: * Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp: (WebCore::FontCache::systemFallbackForCharacters): Canonical link: https://commits.webkit.org/252096@main
-
[LFC][FFC] Flex items with 0 logical width should still be able to flex
https://bugs.webkit.org/show_bug.cgi?id=242161 Reviewed by Antti Koivisto. Let's just use the flexGrow() value as the base for distribution. * Source/WebCore/layout/formattingContexts/flex/FlexLayout.cpp: (WebCore::Layout::FlexLayout::computeLogicalWidthForStretchingFlexItems): Canonical link: https://commits.webkit.org/252095@main
-
[LFC][FFC] Resolve flex-basis upfront and use it at available space d…
…istribution https://bugs.webkit.org/show_bug.cgi?id=242131 Reviewed by Antti Koivisto. This patch resolves the logical width of a flex item upfront when flex-basis is applicable. It fixes cases when there's no space to distribute and the final logical width is based on the flex-basis value. <div style="display: flex; width: 100px;"> <div style="width: 1px; flex-basis: 50px;"></div> <div style="width: 2px; flex-basis: 50px;"></div> </div> * Source/WebCore/layout/formattingContexts/flex/FlexLayout.cpp: (WebCore::Layout::FlexLayout::computeLogicalWidthForShrinkingFlexItems): (WebCore::Layout::FlexLayout::computeLogicalWidthForStretchingFlexItems): (WebCore::Layout::FlexLayout::computeLogicalWidthForFlexItems): Canonical link: https://commits.webkit.org/252094@main
-
Web Inspector: REGRESSION (Bug 241817 ) Filter bars missing from Styl…
…es and Computed panels https://bugs.webkit.org/show_bug.cgi?id=242186 Reviewed by Devin Rousso and Patrick Angle. The visibility of the filter bar was guarded on the truthiness of `this._filterBar`, a check that occured in `_showPanel()` before the filter bar was created in `initialLayout()`. This resulted in a filter bar that was eventually created but remained hidden. This patch inlines the contents of `WI.GeneralStyleDetailsSidebarPanel._showPanel()` into `WI.GeneralStyleDetailsSidebarPanel.initialLayout()` ensuring the filter bar is always visible if created. * Source/WebInspectorUI/UserInterface/Views/GeneralStyleDetailsSidebarPanel.js: (WI.GeneralStyleDetailsSidebarPanel.prototype.initialLayout): (WI.GeneralStyleDetailsSidebarPanel.prototype._showPanel): Deleted. Canonical link: https://commits.webkit.org/252093@main
-
Use a reference instead of a nonnull pointer in systemFallbackForChar…
…acters() https://bugs.webkit.org/show_bug.cgi?id=242284 Reviewed by Cameron McCormack. All the implementations immediately dereference the pointer, so it should be a reference instead. * Source/WebCore/platform/graphics/Font.cpp: (WebCore::Font::systemFallbackFontForCharacter const): * Source/WebCore/platform/graphics/FontCache.h: * Source/WebCore/platform/graphics/cairo/FontCairoHarfbuzzNG.cpp: (WebCore::FontCascade::fontForCombiningCharacterSequence const): * Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp: (WebCore::FontCache::systemFallbackForCharacters): * Source/WebCore/platform/graphics/freetype/FontCacheFreeType.cpp: (WebCore::FontCache::systemFallbackForCharacters): * Source/WebCore/platform/graphics/win/FontCacheWin.cpp: (WebCore::FontCache::systemFallbackForCharacters): Canonical link: https://commits.webkit.org/252092@main
-
Ensure promise is not garbage collected
https://bugs.webkit.org/show_bug.cgi?id=242287 Reviewed by Tim Nguyen. We need to ensure that the promise always remains alive when in use. Adding a RefPtr guarantees that it will not be garbage collected. * Source/WebCore/crypto/SubtleCrypto.cpp: (WebCore::SubtleCrypto::unwrapKey): Canonical link: https://commits.webkit.org/252091@main