Skip to content

Fix painting order of atomic inline stacking containers#30458

Merged
jdm merged 11 commits intoservo:masterfrom
delan:positioned-stacking-container-order
Oct 6, 2023
Merged

Fix painting order of atomic inline stacking containers#30458
jdm merged 11 commits intoservo:masterfrom
delan:positioned-stacking-container-order

Conversation

@delan
Copy link
Member

@delan delan commented Oct 2, 2023

When we add children to a stacking context, sort the stacking context, and build a display list for it, we partition our children into fragments, float stacking containers, and all other stacking containers and stacking contexts. Then we partition the latter into those with negative ‘z-index’ and those with non-negative (or auto) ‘z-index’.

This is incorrect per css-position-4 #painting-order and w3c/csswg-drafts#2717. Atomic inline stacking containers should never be stolen by the parent stacking context, and they should be painted together with fragments in tree order.

This patch fixes that by:

  • converting Stacking­Context­Fragment to an enum that can also represent “paint inline stacking container #i”
  • pushing that new variant to the fragments vec whenever we create a new atomic inline stacking container
  • splitting Stacking­Context­.stacking­_contexts into real­_stacking­_contexts­_and­_positioned­_stacking­_containers and atomic­_inline­_stacking­_containers

We also add warnings for the assertions in build­_canvas­_background­_display­_list when debug assertions are not enabled, and add debug logging to show the stacking context tree in painting order under -Z dump-stacking-context-tree.


Here are the results and debug logs for the original test cases:

test case in #30428 (description)

image

┌ Stacking context tree
│  ├─ RealStackingContext z=0
│  │  ├─ DescendantBackgroundsAndBorders
│  │  ├─ DescendantBackgroundsAndBorders
│  │  ├─ AtomicInlineStackingContainer #0
│  │  │  └─ OwnBackgroundsAndBorders
│  │  ├─ Foreground
│  │  ├─ AtomicInlineStackingContainer #1
│  │  │  └─ OwnBackgroundsAndBorders
│  │  ├─ PositionedStackingContainer
│  │  │  └─ OwnBackgroundsAndBorders
test case in #30428 (comment)

image

┌ Stacking context tree
│  ├─ RealStackingContext z=0
│  │  ├─ DescendantBackgroundsAndBorders
│  │  ├─ DescendantBackgroundsAndBorders
│  │  ├─ AtomicInlineStackingContainer #0
│  │  │  └─ OwnBackgroundsAndBorders
│  │  ├─ PositionedStackingContainer
│  │  │  └─ OwnBackgroundsAndBorders
test case in #30458 (comment)

image

┌ Stacking context tree
│  ├─ RealStackingContext z=0
│  │  ├─ DescendantBackgroundsAndBorders
│  │  ├─ DescendantBackgroundsAndBorders
│  │  ├─ AtomicInlineStackingContainer #0
│  │  │  ├─ OwnBackgroundsAndBorders
│  │  │  ├─ DescendantBackgroundsAndBorders
│  │  │  └─ Foreground
│  │  ├─ Foreground
│  │  ├─ Foreground
│  │  └─ Foreground
test case in #30474 (description)
┌ Stacking context tree
│  ├─ RealStackingContext z=0
│  │  ├─ DescendantBackgroundsAndBorders
│  │  ├─ DescendantBackgroundsAndBorders
│  │  ├─ RealStackingContext z=0
│  │  │  ├─ OwnBackgroundsAndBorders
│  │  │  ├─ RealStackingContext z=0
│  │  │  │  └─ OwnBackgroundsAndBorders
│  │  │  ├─ RealStackingContext z=0
│  │  │  │  └─ OwnBackgroundsAndBorders
│  │  ├─ RealStackingContext z=0
│  │  │  ├─ OwnBackgroundsAndBorders
│  │  │  ├─ RealStackingContext z=0
│  │  │  │  └─ OwnBackgroundsAndBorders
│  │  │  ├─ RealStackingContext z=0
│  │  │  │  └─ OwnBackgroundsAndBorders
  • There are tests for these changes OR
    • PASS [expected FAIL] /css/CSS2/floats/overflow-scroll-float-paint-order.html
    • PASS [expected FAIL] /css/CSS2/normal-flow/inline-block-zorder-003.xht
    • PASS [expected FAIL] /css/CSS2/normal-flow/inline-table-zorder-003.xht
    • FAIL [expected PASS] /css/css-transforms/preserve3d-and-flattening-z-order-005.html
      ‘transform-style: preserve-3d’ does not work #30474
    • PASS [expected FAIL] /html/rendering/replaced-elements/the-option-element/select-multiple-covered-by-abspos.html
  • These changes do not require tests because ___

@delan delan requested review from Loirooriol and mrobinson October 2, 2023 11:48
@mrobinson
Copy link
Member

@bors-servo try=wpt-2020

@github-actions
Copy link

github-actions bot commented Oct 2, 2023

🔨 Triggering try run (#6381205600) with platform=linux and layout=2020

@github-actions
Copy link

github-actions bot commented Oct 2, 2023

Test results for linux-wpt-layout-2020 from try job (#6381205600):

Flaky unexpected result (11)
Stable unexpected results that are known to be intermittent (18)
  • OK /css/CSS2/linebox/inline-negative-margin-001.html (#23862)
    • PASS [expected FAIL] subtest: [data-expected-height] 2
  • OK /css/css-fonts/variations/at-font-face-font-matching.html (#20684)
    • PASS [expected FAIL] subtest: Matching font-weight: '430' should prefer '420 440' over '450 460'
    • FAIL [expected PASS] subtest: Matching font-weight: '430' should prefer '400 425' over '350 399' assert_equals: Unexpected font on test element expected 487 but got 532
    • FAIL [expected PASS] subtest: Matching font-weight: '500' should prefer '500' over '450 460' assert_equals: Unexpected font on test element expected 487 but got 532
    • PASS [expected FAIL] subtest: Matching font-weight: '500' should prefer '400' over '350 399'
    • PASS [expected FAIL] subtest: Matching font-weight: '500' should prefer '350 399' over '351 398'
    • PASS [expected FAIL] subtest: Matching font-weight: '500' should prefer '351 398' over '501 550'
    • PASS [expected FAIL] subtest: Matching font-weight: '399' should prefer '340 360' over '200 300'
    • PASS [expected FAIL] subtest: Matching font-style: 'normal' should prefer 'normal' over 'oblique 0deg'
    • FAIL [expected PASS] subtest: Matching font-style: 'normal' should prefer 'oblique -50deg -20deg' over 'oblique -40deg -30deg' assert_equals: Unexpected font on test element expected 487 but got 532
    • PASS [expected FAIL] subtest: Matching font-style: 'italic' should prefer 'italic' over 'oblique 20deg'
    • And 7 more unexpected results...
  • OK /css/css-text/white-space/trailing-space-position-001.html (#24585)
    • PASS [expected FAIL] subtest: CSS Test: Positions of trailing collapsible spaces 1
    • PASS [expected FAIL] subtest: CSS Test: Positions of trailing collapsible spaces 3
  • OK [expected TIMEOUT] /fetch/api/redirect/redirect-keepalive.any.html (#29536)
  • OK /html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-iframe-contentWindow.html (#28681)
    • PASS [expected FAIL] subtest: load & pageshow events do not fire on contentWindow of <iframe> element created with src=''
    • PASS [expected FAIL] subtest: load & pageshow events do not fire on contentWindow of <iframe> element created with src='about:blank'
  • TIMEOUT [expected OK] /html/browsers/browsing-the-web/navigating-across-documents/javascript-url-load-as-html.xhtml (#29070)
    • TIMEOUT [expected PASS] subtest: javascript: URL navigation to a string must create a HTML document using the correct properties Test timed out
  • OK /html/browsers/history/the-location-interface/location-protocol-setter.html (#20839)
    • PASS [expected FAIL] subtest: Equivalent tests for data URL and srcdoc <iframe>s
  • OK [expected TIMEOUT] /html/browsers/origin/cross-origin-objects/cross-origin-objects.html (#28569)
  • OK [expected TIMEOUT] /html/interaction/focus/the-autofocus-attribute/document-with-fragment-top.html (#28259)
    • FAIL [expected TIMEOUT] subtest: Autofocus elements in top-level browsing context's documents with "top" fragments should work. assert_not_equals: got disallowed value Element node <body></body>
  • OK [expected TIMEOUT] /html/interaction/focus/the-autofocus-attribute/supported-elements.html (#24145)
    • FAIL [expected TIMEOUT] subtest: Area element should support autofocus promise_test: Unhandled rejection with value: object "TypeError: w.document.querySelector(...) is null"
  • TIMEOUT [expected OK] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html (#24066)
    • NOTRUN [expected FAIL] subtest: Check that popups from a sandboxed iframe do not escape the sandbox
  • OK [expected TIMEOUT] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html (#22154)
    • FAIL [expected NOTRUN] subtest: Check that popups from a sandboxed iframe do not escape the sandbox assert_equals: It came from a sandboxed iframe expected "null" but got "http://web-platform.test:8000"
  • OK /html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-quirks-mode.html (#21666)
  • OK /html/semantics/forms/form-submission-0/form-submit-iframe-then-location-navigate.html (#29634)
    • PASS [expected FAIL] subtest: Verifies that location navigations take precedence when following form submissions.
  • OK /html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html (#23205)
    • FAIL [expected PASS] subtest: Check that rel=noopener with target=_self does a normal load this.openedWindow.findLink is not a function
  • PASS [expected CRASH] /streams/readable-streams/crashtests/strategy-worker-terminate.html (#30124)
  • TIMEOUT [expected OK] /webmessaging/without-ports/018.html (#24485)
    • TIMEOUT [expected PASS] subtest: origin of the script that invoked the method, javascript: Test timed out
  • ERROR [expected OK] /workers/constructors/Worker/Worker-constructor.html (#22991)
Stable unexpected results (10)
  • FAIL [expected PASS] /css/CSS2/floats-clear/adjoining-float-nested-forced-clearance-003.html
  • FAIL [expected PASS] /css/CSS2/floats/floats-placement-001.html
  • FAIL [expected PASS] /css/CSS2/floats/floats-placement-002.html
  • FAIL [expected PASS] /css/CSS2/floats/floats-placement-003.html
  • FAIL [expected PASS] /css/CSS2/floats/floats-placement-008.html
  • FAIL [expected PASS] /css/CSS2/floats/floats-wrap-bfc-outside-001.xht
  • FAIL [expected PASS] /css/css-flexbox/flex-direction-row-reverse.html
  • FAIL [expected PASS] /css/css-flexbox/flexbox_margin-left-ex.html
  • FAIL [expected PASS] /css/css-transforms/preserve3d-and-flattening-z-order-005.html
  • PASS [expected FAIL] /html/rendering/replaced-elements/the-option-element/select-multiple-covered-by-abspos.html

@github-actions
Copy link

github-actions bot commented Oct 2, 2023

⚠️ Try run (#6381205600) failed.

Copy link
Contributor

@Loirooriol Loirooriol left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The problem is that for

<div style="width: 100px; height: 100px; background: red; position: relative;">
  <div style="display: inline-block; width: 100px; height: 100px; background: green;"></div>
</div>

this paints the inline-block behind its parent due to (SCT::PseudoAtomicInline, _) => Ordering::Less.

@delan
Copy link
Member Author

delan commented Oct 3, 2023

It looks like we only prevent float stacking containers from being stolen by the parent stacking context, when we should be preventing all stacking containers from being stolen. Only real stacking contexts should be stolen.

Both real stacking contexts and positioned stacking containers should be stolen, while float stacking containers and atomic inline stacking containers should be left in the new stacking container.

I also noticed that we fail to interleave atomic inline stacking containers with fragments:

<div style="display: inline-block; width: 1em; height: 1em;">
<div style="background: red; width: 5em; height: 1em;">— FAIL</div>
</div> <span style="background: white;">PASS</span>

image image

f76bf3c fixes interleaving with fragments and prevents atomic inline stacking containers from being stolen, but it erroneously prevents positioned stacking containers from being stolen. 522f298 fixes that.

@delan delan marked this pull request as draft October 3, 2023 04:34
@delan
Copy link
Member Author

delan commented Oct 3, 2023

@bors-servo try=wpt-2020

@github-actions
Copy link

github-actions bot commented Oct 3, 2023

🔨 Triggering try run (#6388844223) with platform=linux and layout=2020

@github-actions
Copy link

github-actions bot commented Oct 3, 2023

⚠️ Try run (#6388844223) failed.

@delan delan force-pushed the positioned-stacking-container-order branch from ad5e309 to f76bf3c Compare October 3, 2023 05:39
@delan
Copy link
Member Author

delan commented Oct 3, 2023

@bors-servo try=wpt-2020

@github-actions
Copy link

github-actions bot commented Oct 3, 2023

🔨 Triggering try run (#6389139624) with platform=linux and layout=2020

@github-actions
Copy link

github-actions bot commented Oct 3, 2023

⚠️ Try run (#6389139624) failed.

@delan
Copy link
Member Author

delan commented Oct 3, 2023

@bors-servo try=wpt-2020

@github-actions
Copy link

github-actions bot commented Oct 3, 2023

🔨 Triggering try run (#6390243047) with platform=linux and layout=2020

@github-actions
Copy link

github-actions bot commented Oct 3, 2023

⚠️ Try run (#6390243047) failed.

@delan delan changed the title Sort stacking contexts and stacking containers by painting order Fix painting order of atomic inline stacking containers Oct 3, 2023
@delan delan force-pushed the positioned-stacking-container-order branch 2 times, most recently from fc7ef9a to 34e430b Compare October 3, 2023 08:37
@delan
Copy link
Member Author

delan commented Oct 3, 2023

@bors-servo try=wpt-2020

@github-actions
Copy link

github-actions bot commented Oct 3, 2023

🔨 Triggering try run (#6390648595) with platform=linux and layout=2020

@delan delan force-pushed the positioned-stacking-container-order branch from 34e430b to 522f298 Compare October 3, 2023 08:41
@delan
Copy link
Member Author

delan commented Oct 3, 2023

@bors-servo try=wpt-2020

@github-actions
Copy link

github-actions bot commented Oct 3, 2023

🔨 Triggering try run (#6390684506) with platform=linux and layout=2020

@github-actions
Copy link

github-actions bot commented Oct 3, 2023

✨ Try run (#6391690877) succeeded.

@delan
Copy link
Member Author

delan commented Oct 5, 2023

8e60b20 + eba315d + 315b548 rework the naming and docs as follows:

  • Stacking­Context­Section variants
    • Block­Backgrounds­And­Borders → Descendant­Backgrounds­And­Borders, since the distinction is not actually “block” vs “not block” but rather “root fragment” vs “descendant fragment”
    • Backgrounds­And­Borders → Own­Backgrounds­And­Borders, for the same reason and because “root” is too easy to confuse for the root element in step 3 of #paint-a-stacking-context
    • Content → Foreground, to avoid confusion with Stacking­Context­Content below
  • Stacking­Context­Fragment → Stacking­Context­Content variants
    • Inline­Stacking­Container → Atomic­Inline­Stacking­Container
  • Stacking­Context­Type variants
    • Real → Real­Stacking­Context
    • Pseudo­Positioned → Positioned­Stacking­Container
    • Pseudo­Float → Float­Stacking­Container
    • Pseudo­Atomic­Inline → Atomic­Inline­Stacking­Container
  • Stacking­Context fields
    • stealable­_children → real­_stacking­_contexts­_and­_positioned­_stacking­_containers
    • inline­_stacking­_containers → atomic­_inline­_stacking­_containers
  • “stacking context” refers to a stacking context or stacking container
  • “real stacking context” refers to a stacking context only
  • removed all remaining usage of the word “pseudo”

I considered referring to things that can be either a stacking context or stacking container as a “stacking cont” (and renaming symbols accordingly), but the result looked too eccentric. The approach I went with still invents terminology (“real”), but I think that’s unavoidable with the current spec.

@delan delan requested a review from mrobinson October 5, 2023 08:44
@delan
Copy link
Member Author

delan commented Oct 5, 2023

@bors-servo try=wpt-2020

@github-actions
Copy link

github-actions bot commented Oct 5, 2023

🔨 Triggering try run (#6416742881) with platform=linux and layout=2020

@github-actions
Copy link

github-actions bot commented Oct 5, 2023

Test results for linux-wpt-layout-2020 from try job (#6416742881):

Flaky unexpected result (18)
  • OK /_mozilla/mozilla/task_queue_throttling.any.html (#22519)
    • FAIL [expected PASS] subtest: Throttling the performance timeline task queue. assert_true: expected true got false
  • TIMEOUT [expected OK] /_webgl/conformance/glsl/misc/shader-uniform-packing-restrictions.html (#28103)
    • NOTRUN [expected PASS] subtest: Overall test
  • TIMEOUT [expected OK] /_webgl/conformance/uniforms/out-of-bounds-uniform-array-access.html (#26225)
    • NOTRUN [expected PASS] subtest: Overall test
  • TIMEOUT [expected PASS] /css/css-fonts/font-size-adjust-reload.html
  • TIMEOUT /fetch/metadata/generated/element-img-environment-change.sub.html (#30111)
    • PASS [expected FAIL] subtest: sec-fetch-site - Not sent to non-trustworthy same-origin destination, no attributes
  • TIMEOUT [expected OK] /html/browsers/browsing-the-web/navigating-across-documents/navigate-to-unparseable-url.html (#29050)
    • TIMEOUT [expected FAIL] subtest: location.href setter throws a SyntaxError DOMException for unparseable URLs Test timed out
    • NOTRUN [expected FAIL] subtest: <a> tag navigate fails for unparseable URLs
  • OK /html/browsers/browsing-the-web/read-media/pageload-image-in-popup.html (#23849)
    • PASS [expected FAIL] subtest: The document for a standalone media file should have one child in the body.
  • TIMEOUT [expected OK] /html/interaction/focus/the-autofocus-attribute/skip-another-top-level-browsing-context.html (#24161)
    • TIMEOUT [expected PASS] subtest: Autofocus elements queued in another top-level browsing context's documents should be skipped. Test timed out
  • OK [expected TIMEOUT] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html (#22154)
    • FAIL [expected NOTRUN] subtest: Check that popups from a sandboxed iframe do not escape the sandbox assert_equals: It came from a sandboxed iframe expected "null" but got "http://web-platform.test:8000"
  • OK /html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-quirks-mode.html (#21666)
  • OK /html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-standards-mode.html (#21666)
    • PASS [expected FAIL] subtest: <img srcset="/images/green-1x1.png?e38 50w, /images/green-16x16.png?e38 51w" sizes="(min-width:calc(0)) 1px"> ref sizes="1px" (standards mode)
    • PASS [expected FAIL] subtest: <img srcset="/images/green-1x1.png?e45 50w, /images/green-16x16.png?e45 51w" sizes="(min-width:-1px) 1px, 100vw"> ref sizes="1px" (standards mode)
    • PASS [expected FAIL] subtest: <img srcset="/images/green-1x1.png?e58 50w, /images/green-16x16.png?e58 51w" sizes="(min-width:0) or (unknown-mf-name) 1px"> ref sizes="1px" (standards mode)
    • PASS [expected FAIL] subtest: <img srcset="/images/green-1x1.png?e59 50w, /images/green-16x16.png?e59 51w" sizes="(min-width:0) or (min-width:unknown-mf-value) 1px"> ref sizes="1px" (standards mode)
    • PASS [expected FAIL] subtest: <img srcset="/images/green-1x1.png?e60 50w, /images/green-16x16.png?e60 51w" sizes="(min-width:0) or (min-width:-1px) 1px"> ref sizes="1px" (standards mode)
    • PASS [expected FAIL] subtest: <img srcset="/images/green-1x1.png?e61 50w, /images/green-16x16.png?e61 51w" sizes="(min-width:0) or (unknown &quot;general-enclosed&quot;) 1px"> ref sizes="1px" (standards mode)
    • PASS [expected FAIL] subtest: <img srcset="/images/green-1x1.png?e62 50w, /images/green-16x16.png?e62 51w" sizes="(min-width:0) or unknown-general-enclosed(foo) 1px"> ref sizes="1px" (standards mode)
    • PASS [expected FAIL] subtest: <img srcset="/images/green-1x1.png?e106 50w, /images/green-16x16.png?e106 51w" sizes="(min-width:0) or (unknown-general-enclosed !) 1px"> ref sizes="1px" (standards mode)
  • OK /html/semantics/forms/form-submission-0/multipart-formdata.window.html (#28725)
    • PASS [expected FAIL] subtest: multipart/form-data: 0x00 in value (formdata event)
  • OK /html/semantics/forms/historical.html (#28568)
    • PASS [expected FAIL] subtest: <input name=isindex> should not be supported
  • OK /html/webappapis/dynamic-markup-insertion/document-write/module-static-import-delayed.html (#26243)
    • FAIL [expected PASS] subtest: document.write in an imported module assert_true: onload must be called expected true got false
  • TIMEOUT /html/webappapis/scripting/events/compile-event-handler-settings-objects.html (#24246)
    • TIMEOUT [expected FAIL] subtest: The entry settings object while executing the compiled callback via Web IDL's invoke must be that of the node document Test timed out
  • OK [expected TIMEOUT] /html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry-different-function-realm.html (#25805)
  • TIMEOUT [expected OK] /webmessaging/with-ports/018.html (#24485)
    • TIMEOUT [expected PASS] subtest: origin of the script that invoked the method, javascript: Test timed out
  • OK [expected TIMEOUT] /webmessaging/without-ports/017.html (#24486)
    • PASS [expected TIMEOUT] subtest: origin of the script that invoked the method, about:blank
Stable unexpected results that are known to be intermittent (18)
  • OK /css/CSS2/linebox/inline-negative-margin-001.html (#23862)
    • PASS [expected FAIL] subtest: [data-expected-height] 2
  • OK /css/css-fonts/variations/at-font-face-font-matching.html (#20684)
    • FAIL [expected PASS] subtest: Matching font-weight: '430' should prefer '400 425' over '350 399' assert_equals: Unexpected font on test element expected 487 but got 532
    • FAIL [expected PASS] subtest: Matching font-weight: '500' should prefer '500' over '450 460' assert_equals: Unexpected font on test element expected 487 but got 532
    • FAIL [expected PASS] subtest: Matching font-weight: '501' should prefer '501' over '502 510' assert_equals: Unexpected font on test element expected 487 but got 532
    • FAIL [expected PASS] subtest: Matching font-weight: '501' should prefer '450 460' over '390 410' assert_equals: Unexpected font on test element expected 487 but got 532
    • FAIL [expected PASS] subtest: Matching font-style: 'normal' should prefer 'oblique -50deg -20deg' over 'oblique -40deg -30deg' assert_equals: Unexpected font on test element expected 487 but got 532
    • FAIL [expected PASS] subtest: Matching font-style: 'oblique 21deg' should prefer 'oblique 20deg' over 'oblique 10deg' assert_equals: Unexpected font on test element expected 487 but got 532
    • FAIL [expected PASS] subtest: Matching font-style: 'oblique 21deg' should prefer 'oblique 0deg' over 'oblique -50deg -20deg' assert_equals: Unexpected font on test element expected 487 but got 532
    • PASS [expected FAIL] subtest: Matching font-style: 'oblique 21deg' should prefer 'oblique -50deg -20deg' over 'oblique -40deg -30deg'
    • PASS [expected FAIL] subtest: Matching font-style: 'oblique -10deg' should prefer 'italic' over 'oblique 0deg 10deg'
    • FAIL [expected PASS] subtest: Matching font-style: 'oblique -21deg' should prefer 'oblique -10deg' over 'italic' assert_equals: Unexpected font on test element expected 487 but got 532
  • OK /css/css-text/white-space/trailing-space-position-001.html (#24585)
    • PASS [expected FAIL] subtest: CSS Test: Positions of trailing collapsible spaces 1
    • PASS [expected FAIL] subtest: CSS Test: Positions of trailing collapsible spaces 3
  • OK [expected TIMEOUT] /html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/iframe-src-aboutblank-navigate-immediately.html (#29048)
  • OK /html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-iframe-contentWindow.html (#28681)
    • PASS [expected FAIL] subtest: load & pageshow events do not fire on contentWindow of <iframe> element created with src='about:blank#foo'
  • TIMEOUT [expected OK] /html/browsers/browsing-the-web/navigating-across-documents/javascript-url-load-as-html.xhtml (#29070)
    • TIMEOUT [expected PASS] subtest: javascript: URL navigation to a string must create a HTML document using the correct properties Test timed out
  • OK /html/browsers/browsing-the-web/navigating-across-documents/javascript-url-return-value-handling-dynamic.html (#28066)
    • PASS [expected FAIL] subtest: 0080 00FF set in href="" targeting a frame and clicked
    • PASS [expected FAIL] subtest: 0080 00FF 0100 set in href="" targeting a frame and clicked
  • OK /html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin.window.html (#29049)
    • FAIL [expected PASS] subtest: Same-origin navigation started from unload handler must be ignored assert_equals: expected "?pass" but got "?fail"
  • OK /html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/a-click.html (#28697)
  • OK /html/browsers/history/the-location-interface/location-protocol-setter.html (#20839)
    • PASS [expected FAIL] subtest: Equivalent tests for data URL and srcdoc <iframe>s
  • OK [expected TIMEOUT] /html/browsers/origin/cross-origin-objects/cross-origin-objects.html (#28569)
  • OK /html/browsers/the-window-object/open-close/creating_browsing_context_test_01.html (#29046)
  • OK [expected TIMEOUT] /html/interaction/focus/the-autofocus-attribute/document-with-fragment-top.html (#28259)
    • FAIL [expected TIMEOUT] subtest: Autofocus elements in top-level browsing context's documents with "top" fragments should work. assert_not_equals: got disallowed value Element node <body></body>
  • OK [expected TIMEOUT] /html/interaction/focus/the-autofocus-attribute/supported-elements.html (#24145)
    • FAIL [expected TIMEOUT] subtest: Area element should support autofocus promise_test: Unhandled rejection with value: object "TypeError: w.document.querySelector(...) is null"
  • OK /html/semantics/embedded-content/the-img-element/non-active-document.html (#21544)
    • PASS [expected FAIL] subtest: createHTMLDocument
    • PASS [expected FAIL] subtest: <template>
  • OK /html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html (#23205)
    • FAIL [expected PASS] subtest: Check that rel=noopener with target=_self does a normal load this.openedWindow.findLink is not a function
  • PASS [expected CRASH] /streams/readable-streams/crashtests/strategy-worker-terminate.html (#30124)
  • TIMEOUT [expected OK] /webmessaging/with-ports/017.html (#24486)
    • TIMEOUT [expected PASS] subtest: origin of the script that invoked the method, about:blank Test timed out

@github-actions
Copy link

github-actions bot commented Oct 5, 2023

✨ Try run (#6416742881) succeeded.

Copy link
Member

@mrobinson mrobinson left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the iterations on this. This is looking good to me. There is only one thing that I think should be changed before landing and that is avoiding a panic when having issues painting the root canvas background.

@delan delan enabled auto-merge October 6, 2023 08:22
@delan delan disabled auto-merge October 6, 2023 08:22
@delan delan enabled auto-merge October 6, 2023 08:23
@delan delan added this pull request to the merge queue Oct 6, 2023
@github-merge-queue github-merge-queue bot removed this pull request from the merge queue due to failed status checks Oct 6, 2023
@delan delan added this pull request to the merge queue Oct 6, 2023
@github-merge-queue github-merge-queue bot removed this pull request from the merge queue due to failed status checks Oct 6, 2023
@delan delan added this pull request to the merge queue Oct 6, 2023
@github-merge-queue github-merge-queue bot removed this pull request from the merge queue due to failed status checks Oct 6, 2023
@jdm jdm added this pull request to the merge queue Oct 6, 2023
Merged via the queue into servo:master with commit afe4faa Oct 6, 2023
@delan delan deleted the positioned-stacking-container-order branch October 9, 2023 08:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Positioned elements should be painted in front of others

4 participants