Skip to content
Permalink
main
Switch branches/tags

Commits on Jul 4, 2022

  1. [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
    jjgriego authored and philn committed Jul 4, 2022
  2. [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
    alanbujtas committed Jul 4, 2022
  3. [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
    youssefsoli committed Jul 4, 2022
  4. [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
    alanbujtas committed Jul 4, 2022
  5. [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
    Constellation committed Jul 4, 2022
  6. [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
    alanbujtas committed Jul 4, 2022
  7. [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
    anttijk committed Jul 4, 2022
  8. [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
    whsieh committed Jul 4, 2022
  9. [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
    alanbujtas committed Jul 4, 2022
  10. [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
    anttijk committed Jul 4, 2022
  11. Drop ARM softfp bot

    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
    aoikonomopoulos committed Jul 4, 2022
  12. [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
    aoikonomopoulos committed Jul 4, 2022
  13. [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
    aperezdc committed Jul 4, 2022
  14. [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
    jameshilliard authored and philn committed Jul 4, 2022
  15. Simplify resolveForDocument

    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
    rwlbuis committed Jul 4, 2022
  16. 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
    rniwa committed Jul 4, 2022
  17. 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 committed Jul 4, 2022
  18. [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
    cdumez committed Jul 4, 2022

Commits on Jul 3, 2022

  1. 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
    rniwa committed Jul 3, 2022
  2. 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
    hortont424 committed Jul 3, 2022
  3. 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
    rniwa committed Jul 3, 2022
  4. [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
    jameshilliard authored and philn committed Jul 3, 2022
  5. [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
    jameshilliard authored and philn committed Jul 3, 2022
  6. [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
    jameshilliard authored and philn committed Jul 3, 2022
  7. [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
    jameshilliard authored and philn committed Jul 3, 2022
  8. [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
    jameshilliard authored and mcatanzaro committed Jul 3, 2022
  9. :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
    rniwa committed Jul 3, 2022
  10. 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
    rniwa committed Jul 3, 2022

Commits on Jul 2, 2022

  1. [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
    aperezdc committed Jul 2, 2022
  2. 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
    litherum committed Jul 2, 2022
  3. [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
    alanbujtas committed Jul 2, 2022
  4. [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
    alanbujtas committed Jul 2, 2022
  5. 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
    rcaliman-apple committed Jul 2, 2022
  6. 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
    litherum committed Jul 2, 2022
  7. 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
    stwrt committed Jul 2, 2022
Older