tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

commit 9903a171b5ef220b3d2692be57915a93cc58be09
parent bf0542d5275f3b66542f13a55e8fea141450cf2a
Author: Emilio Cobos Álvarez <emilio@crisal.io>
Date:   Thu,  2 Oct 2025 17:43:50 +0000

Bug 1962598 - Implement full @position-try fallback for anchor positioning. r=layout-anchor-positioning-reviewers,layout-reviewers,dshin

Remaining failures are due to position-try-order, afaict.

Differential Revision: https://phabricator.services.mozilla.com/D267231

Diffstat:
Mlayout/generic/AbsoluteContainingBlock.cpp | 28++++++++++++++++++++++------
Mlayout/generic/nsIFrame.h | 19++++++++++---------
Dtesting/web-platform/meta/css/css-anchor-position/anchor-invalid-fallback.html.ini | 3---
Dtesting/web-platform/meta/css/css-anchor-position/anchor-scroll-chained-fallback.html.ini | 2--
Mtesting/web-platform/meta/css/css-anchor-position/anchor-scroll-position-try-001.html.ini | 9++-------
Dtesting/web-platform/meta/css/css-anchor-position/anchor-scroll-position-try-002.html.ini | 3---
Mtesting/web-platform/meta/css/css-anchor-position/anchor-scroll-position-try-004.html.ini | 3---
Dtesting/web-platform/meta/css/css-anchor-position/anchor-scroll-position-try-005.html.ini | 3---
Mtesting/web-platform/meta/css/css-anchor-position/anchor-scroll-position-try-006.html.ini | 3---
Mtesting/web-platform/meta/css/css-anchor-position/anchor-scroll-position-try-007.html.ini | 3---
Mtesting/web-platform/meta/css/css-anchor-position/anchor-scroll-position-try-008.html.ini | 3---
Mtesting/web-platform/meta/css/css-anchor-position/anchor-scroll-position-try-009.html.ini | 3---
Mtesting/web-platform/meta/css/css-anchor-position/anchor-scroll-position-try-010.html.ini | 3---
Mtesting/web-platform/meta/css/css-anchor-position/anchor-scroll-position-try-013.html.ini | 3---
Mtesting/web-platform/meta/css/css-anchor-position/anchor-scroll-position-try-014.html.ini | 6++++++
Mtesting/web-platform/meta/css/css-anchor-position/last-successful-animation.html.ini | 2+-
Mtesting/web-platform/meta/css/css-anchor-position/last-successful-basic.html.ini | 2+-
Mtesting/web-platform/meta/css/css-anchor-position/last-successful-change-fallbacks-position-area.html.ini | 6++++++
Mtesting/web-platform/meta/css/css-anchor-position/last-successful-change-fallbacks.html.ini | 6++++++
Mtesting/web-platform/meta/css/css-anchor-position/last-successful-change-try-rule.html.ini | 2+-
Mtesting/web-platform/meta/css/css-anchor-position/last-successful-fallback-to-base-style.html.ini | 3+++
Mtesting/web-platform/meta/css/css-anchor-position/last-successful-iframe.html.ini | 3---
Mtesting/web-platform/meta/css/css-anchor-position/last-successful-intermediate-ignored.html.ini | 3+++
Dtesting/web-platform/meta/css/css-anchor-position/position-anchor-001.html.ini | 2--
Mtesting/web-platform/meta/css/css-anchor-position/position-area-in-position-try.html.ini | 30+++++++++---------------------
Mtesting/web-platform/meta/css/css-anchor-position/position-try-001.html.ini | 3+++
Mtesting/web-platform/meta/css/css-anchor-position/position-try-003.html.ini | 3---
Dtesting/web-platform/meta/css/css-anchor-position/position-try-cascade-layer-reorder.html.ini | 6------
Mtesting/web-platform/meta/css/css-anchor-position/position-try-cascade.html.ini | 15---------------
Mtesting/web-platform/meta/css/css-anchor-position/position-try-container-query.html.ini | 3---
Dtesting/web-platform/meta/css/css-anchor-position/position-try-dynamic.html.ini | 3---
Mtesting/web-platform/meta/css/css-anchor-position/position-try-fallbacks-limit.html.ini | 3---
Dtesting/web-platform/meta/css/css-anchor-position/position-try-initial-transition.html.ini | 3---
Atesting/web-platform/meta/css/css-anchor-position/position-try-order-basic.html.ini | 45+++++++++++++++++++++++++++++++++++++++++++++
Mtesting/web-platform/meta/css/css-anchor-position/position-try-order-position-area.html.ini | 30+++++++++++++++---------------
Dtesting/web-platform/meta/css/css-anchor-position/position-try-pseudo-element.html.ini | 8--------
Mtesting/web-platform/meta/css/css-anchor-position/try-tactic-alignment.html.ini | 36++++++++++++++++++++++++++++++++++++
Mtesting/web-platform/meta/css/css-anchor-position/try-tactic-anchor.html.ini | 119++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
Mtesting/web-platform/meta/css/css-anchor-position/try-tactic-basic.html.ini | 3---
Mtesting/web-platform/meta/css/css-anchor-position/try-tactic-margin.html.ini | 3---
Mtesting/web-platform/meta/css/css-anchor-position/try-tactic-wm.html.ini | 3---
41 files changed, 281 insertions(+), 158 deletions(-)

diff --git a/layout/generic/AbsoluteContainingBlock.cpp b/layout/generic/AbsoluteContainingBlock.cpp @@ -835,6 +835,25 @@ void AbsoluteContainingBlock::ResolveAutoMarginsAfterLayout( } } +struct MOZ_STACK_CLASS MOZ_RAII AutoFallbackStyleSetter { + AutoFallbackStyleSetter(nsIFrame* aFrame, ComputedStyle* aFallbackStyle) + : mFrame(aFrame) { + if (aFallbackStyle) { + mOldStyle = aFrame->SetComputedStyleWithoutNotification(aFallbackStyle); + } + } + + ~AutoFallbackStyleSetter() { + if (mOldStyle) { + mFrame->SetComputedStyleWithoutNotification(std::move(mOldStyle)); + } + } + + private: + nsIFrame* const mFrame; + RefPtr<ComputedStyle> mOldStyle; +}; + // XXX Optimize the case where it's a resize reflow and the absolutely // positioned child has the exact same size and position and skip the // reflow... @@ -872,9 +891,8 @@ void AbsoluteContainingBlock::ReflowAbsoluteFrame( #endif // DEBUG const bool isGrid = aFlags.contains(AbsPosReflowFlag::IsGridContainerCB); - const auto* stylePos = aKidFrame->StylePosition(); // TODO(bug 1989059): position-try-order. - auto fallbacks = stylePos->mPositionTryFallbacks._0.AsSpan(); + auto fallbacks = aKidFrame->StylePosition()->mPositionTryFallbacks._0.AsSpan(); Maybe<uint32_t> currentFallbackIndex; // TODO(emilio): Right now fallback only applies to position-area, which only // makes a difference with a default anchor... Generalize it? @@ -934,20 +952,18 @@ void AbsoluteContainingBlock::ReflowAbsoluteFrame( }; do { + AutoFallbackStyleSetter fallback(aKidFrame, currentFallbackStyle); const nsRect usedCb = [&] { if (isGrid) { // TODO(emilio): how does position-area interact with grid? return nsGridContainerFrame::GridItemCB(aKidFrame); } - auto positionArea = stylePos->mPositionArea; + auto positionArea = aKidFrame->StylePosition()->mPositionArea; const StylePositionTryFallbacksTryTactic* tactic = nullptr; if (currentFallback) { if (currentFallback->IsIdentAndOrTactic()) { const auto& item = currentFallback->AsIdentAndOrTactic(); - if (currentFallbackStyle) { - positionArea = currentFallbackStyle->StylePosition()->mPositionArea; - } tactic = &item.try_tactic; } else { MOZ_ASSERT(currentFallback->IsPositionArea()); diff --git a/layout/generic/nsIFrame.h b/layout/generic/nsIFrame.h @@ -957,15 +957,16 @@ class nsIFrame : public nsQueryFrame { } /** - * SetComputedStyleWithoutNotification is for changes to the style - * context that should suppress style change processing, in other - * words, those that aren't really changes. This generally means only - * changes that happen during frame construction. - */ - void SetComputedStyleWithoutNotification(ComputedStyle* aStyle) { - if (aStyle != mComputedStyle) { - mComputedStyle = aStyle; - } + * SetComputedStyleWithoutNotification is for changes to the style that should + * suppress style change processing, in other words, those that aren't really + * changes. This generally means only changes that happen during frame + * construction, or those that get handled out of band, like @position-try + * fallback. + * @return the old style. + */ + RefPtr<ComputedStyle> SetComputedStyleWithoutNotification( + RefPtr<ComputedStyle> aStyle) { + return std::exchange(mComputedStyle, std::move(aStyle)); } protected: diff --git a/testing/web-platform/meta/css/css-anchor-position/anchor-invalid-fallback.html.ini b/testing/web-platform/meta/css/css-anchor-position/anchor-invalid-fallback.html.ini @@ -1,3 +0,0 @@ -[anchor-invalid-fallback.html] - [Flip to invalid anchor()] - expected: FAIL diff --git a/testing/web-platform/meta/css/css-anchor-position/anchor-scroll-chained-fallback.html.ini b/testing/web-platform/meta/css/css-anchor-position/anchor-scroll-chained-fallback.html.ini @@ -1,2 +0,0 @@ -[anchor-scroll-chained-fallback.html] - expected: FAIL diff --git a/testing/web-platform/meta/css/css-anchor-position/anchor-scroll-position-try-001.html.ini b/testing/web-platform/meta/css/css-anchor-position/anchor-scroll-position-try-001.html.ini @@ -1,14 +1,9 @@ [anchor-scroll-position-try-001.html] [Scroll down until the top edge of #anchor touches container but not overflowing] - expected: - [PASS, FAIL] + expected: [PASS, FAIL] [Scroll further up, where the second option no longer fits] - expected: - [PASS, FAIL] - - [Scroll further down, making the first fallback position overflow by 1px] - expected: FAIL + expected: [PASS, FAIL] [Scroll back up so that both the first and second options fit.] expected: FAIL diff --git a/testing/web-platform/meta/css/css-anchor-position/anchor-scroll-position-try-002.html.ini b/testing/web-platform/meta/css/css-anchor-position/anchor-scroll-position-try-002.html.ini @@ -1,3 +0,0 @@ -[anchor-scroll-position-try-002.html] - [Should use the second fallback position after scrolling left] - expected: FAIL diff --git a/testing/web-platform/meta/css/css-anchor-position/anchor-scroll-position-try-004.html.ini b/testing/web-platform/meta/css/css-anchor-position/anchor-scroll-position-try-004.html.ini @@ -1,7 +1,4 @@ [anchor-scroll-position-try-004.html] - [Should use the second fallback position after scrolling viewport down] - expected: FAIL - [Should use the third fallback position after scrolling the vrl scroller left] expected: if os == "android": [PASS, FAIL] diff --git a/testing/web-platform/meta/css/css-anchor-position/anchor-scroll-position-try-005.html.ini b/testing/web-platform/meta/css/css-anchor-position/anchor-scroll-position-try-005.html.ini @@ -1,3 +0,0 @@ -[anchor-scroll-position-try-005.html] - [Should use the second fallback position after scrolling left] - expected: FAIL diff --git a/testing/web-platform/meta/css/css-anchor-position/anchor-scroll-position-try-006.html.ini b/testing/web-platform/meta/css/css-anchor-position/anchor-scroll-position-try-006.html.ini @@ -1,7 +1,4 @@ [anchor-scroll-position-try-006.html] - [Should use the last (fourth) position option initially] - expected: FAIL - [Should still use the last position option as long as it fits.] expected: FAIL diff --git a/testing/web-platform/meta/css/css-anchor-position/anchor-scroll-position-try-007.html.ini b/testing/web-platform/meta/css/css-anchor-position/anchor-scroll-position-try-007.html.ini @@ -1,7 +1,4 @@ [anchor-scroll-position-try-007.html] - [Should use the last position option initially] - expected: FAIL - [Should stay at initial position, since it still fits] expected: FAIL diff --git a/testing/web-platform/meta/css/css-anchor-position/anchor-scroll-position-try-008.html.ini b/testing/web-platform/meta/css/css-anchor-position/anchor-scroll-position-try-008.html.ini @@ -1,7 +1,4 @@ [anchor-scroll-position-try-008.html] - [Should use the last fallback position initially] - expected: FAIL - [Should use the third fallback position with enough space left] expected: FAIL diff --git a/testing/web-platform/meta/css/css-anchor-position/anchor-scroll-position-try-009.html.ini b/testing/web-platform/meta/css/css-anchor-position/anchor-scroll-position-try-009.html.ini @@ -1,7 +1,4 @@ [anchor-scroll-position-try-009.html] - [Should use the last fallback position initially] - expected: FAIL - [Should use the third fallback position with enough space right] expected: FAIL diff --git a/testing/web-platform/meta/css/css-anchor-position/anchor-scroll-position-try-010.html.ini b/testing/web-platform/meta/css/css-anchor-position/anchor-scroll-position-try-010.html.ini @@ -1,7 +1,4 @@ [anchor-scroll-position-try-010.html] - [Should use the last fallback position initially] - expected: FAIL - [Should use the third fallback position with enough space right] expected: FAIL diff --git a/testing/web-platform/meta/css/css-anchor-position/anchor-scroll-position-try-013.html.ini b/testing/web-platform/meta/css/css-anchor-position/anchor-scroll-position-try-013.html.ini @@ -4,6 +4,3 @@ [anchor-scroll-position-try-013 2] expected: FAIL - - [anchor-scroll-position-try-013 1] - expected: FAIL diff --git a/testing/web-platform/meta/css/css-anchor-position/anchor-scroll-position-try-014.html.ini b/testing/web-platform/meta/css/css-anchor-position/anchor-scroll-position-try-014.html.ini @@ -1,3 +1,9 @@ [anchor-scroll-position-try-014.html] [anchor-scroll-position-try-014 1] expected: FAIL + + [anchor-scroll-position-try-014] + expected: FAIL + + [anchor-scroll-position-try-014 2] + expected: FAIL diff --git a/testing/web-platform/meta/css/css-anchor-position/last-successful-animation.html.ini b/testing/web-platform/meta/css/css-anchor-position/last-successful-animation.html.ini @@ -2,5 +2,5 @@ [No successful position, keep flip-block] expected: FAIL - [Base position without fallback now successful] + [Starts rendering with flip-block] expected: FAIL diff --git a/testing/web-platform/meta/css/css-anchor-position/last-successful-basic.html.ini b/testing/web-platform/meta/css/css-anchor-position/last-successful-basic.html.ini @@ -2,5 +2,5 @@ [No successful position, keep flip-block] expected: FAIL - [Base position without fallback now successful] + [Starts rendering with flip-block] expected: FAIL diff --git a/testing/web-platform/meta/css/css-anchor-position/last-successful-change-fallbacks-position-area.html.ini b/testing/web-platform/meta/css/css-anchor-position/last-successful-change-fallbacks-position-area.html.ini @@ -1,3 +1,9 @@ [last-successful-change-fallbacks-position-area.html] [position-try-fallbacks is set to a different value, both base and fallback works, uses base because last successful position option is invalidated] expected: FAIL + + [Starts rendering with fallback] + expected: FAIL + + [Both base and fallback works, position-try-fallbacks is set to the same value, keeps fallback] + expected: FAIL diff --git a/testing/web-platform/meta/css/css-anchor-position/last-successful-change-fallbacks.html.ini b/testing/web-platform/meta/css/css-anchor-position/last-successful-change-fallbacks.html.ini @@ -1,3 +1,9 @@ [last-successful-change-fallbacks.html] [No successful position, keep flip-block] expected: FAIL + + [Starts rendering with flip-block] + expected: FAIL + + [No successful position, last successful invalidated by position-try-fallbacks change] + expected: FAIL diff --git a/testing/web-platform/meta/css/css-anchor-position/last-successful-change-try-rule.html.ini b/testing/web-platform/meta/css/css-anchor-position/last-successful-change-try-rule.html.ini @@ -2,5 +2,5 @@ [No successful position, keep --try] expected: FAIL - [No successful position, last successful invalidated by @position-try change] + [Starts rendering with --try] expected: FAIL diff --git a/testing/web-platform/meta/css/css-anchor-position/last-successful-fallback-to-base-style.html.ini b/testing/web-platform/meta/css/css-anchor-position/last-successful-fallback-to-base-style.html.ini @@ -4,3 +4,6 @@ [Both base position and flip-inline works, keep base position since it's the last successful option] expected: FAIL + + [Starts rendering with flip-inline fallback] + expected: FAIL diff --git a/testing/web-platform/meta/css/css-anchor-position/last-successful-iframe.html.ini b/testing/web-platform/meta/css/css-anchor-position/last-successful-iframe.html.ini @@ -1,6 +1,3 @@ [last-successful-iframe.html] [No successful position, keep flip-block] expected: FAIL - - [Base position without fallback now successful] - expected: FAIL diff --git a/testing/web-platform/meta/css/css-anchor-position/last-successful-intermediate-ignored.html.ini b/testing/web-platform/meta/css/css-anchor-position/last-successful-intermediate-ignored.html.ini @@ -1,3 +1,6 @@ [last-successful-intermediate-ignored.html] [No successful position (with intermediate successful), keep flip-block] expected: FAIL + + [Starts rendering with flip-block] + expected: FAIL diff --git a/testing/web-platform/meta/css/css-anchor-position/position-anchor-001.html.ini b/testing/web-platform/meta/css/css-anchor-position/position-anchor-001.html.ini @@ -1,2 +0,0 @@ -[position-anchor-001.html] - expected: FAIL diff --git a/testing/web-platform/meta/css/css-anchor-position/position-area-in-position-try.html.ini b/testing/web-platform/meta/css/css-anchor-position/position-area-in-position-try.html.ini @@ -137,41 +137,29 @@ [span-bottom span-all] expected: FAIL - [Placement: --top] + [y-self-start x-self-start] expected: FAIL - [Placement: --left] + [y-self-start center] expected: FAIL - [Placement: --right, --top] + [y-self-start x-self-end] expected: FAIL - [Placement: --bottom, --top] + [center x-self-start] expected: FAIL - [Placement: --bottom, --right, --top] + [center x-self-end] expected: FAIL - [Placement: --bottom, --right, --left, --top] + [y-self-end x-self-start] expected: FAIL - [Placement: --bottom, --left, --top, --right] + [y-self-end center] expected: FAIL - [Placement: --right flip-inline] + [y-self-end x-self-end] expected: FAIL - [Placement: --bottom flip-block] - expected: FAIL - - [Placement: --left flip-start] - expected: FAIL - - [Placement: --left flip-inline, --top] - expected: FAIL - - [Placement: --top flip-block, --left] - expected: FAIL - - [Placement: --left flip-start flip-block, --left] + [span-y-self-start span-x-self-end] expected: FAIL diff --git a/testing/web-platform/meta/css/css-anchor-position/position-try-001.html.ini b/testing/web-platform/meta/css/css-anchor-position/position-try-001.html.ini @@ -10,3 +10,6 @@ [.target 5] expected: FAIL + + [.target 6] + expected: FAIL diff --git a/testing/web-platform/meta/css/css-anchor-position/position-try-003.html.ini b/testing/web-platform/meta/css/css-anchor-position/position-try-003.html.ini @@ -4,6 +4,3 @@ [.anchored 2] expected: FAIL - - [.anchored 3] - expected: FAIL diff --git a/testing/web-platform/meta/css/css-anchor-position/position-try-cascade-layer-reorder.html.ini b/testing/web-platform/meta/css/css-anchor-position/position-try-cascade-layer-reorder.html.ini @@ -1,6 +0,0 @@ -[position-try-cascade-layer-reorder.html] - [When in the same layer, the last rule of each name wins] - expected: FAIL - - [When in different layers, the rule of each name in the highest layer wins] - expected: FAIL diff --git a/testing/web-platform/meta/css/css-anchor-position/position-try-cascade.html.ini b/testing/web-platform/meta/css/css-anchor-position/position-try-cascade.html.ini @@ -1,18 +1,3 @@ [position-try-cascade.html] - [@position-try rule applies] - expected: FAIL - - [@position-try rule wins over inline style] - expected: FAIL - - [@position-try rule does not win over !important] - expected: FAIL - - [@position-try rule does not win over animations] - expected: FAIL - [@position-try rule does not win over transitions] expected: FAIL - - [@position-try revert / revert-layer reverts to user / author origin] - expected: FAIL diff --git a/testing/web-platform/meta/css/css-anchor-position/position-try-container-query.html.ini b/testing/web-platform/meta/css/css-anchor-position/position-try-container-query.html.ini @@ -1,6 +1,3 @@ [position-try-container-query.html] - [Size container query responds to fallback width] - expected: FAIL - [Size container query responds to fallback width and applies height to not fit the first fallback] expected: FAIL diff --git a/testing/web-platform/meta/css/css-anchor-position/position-try-dynamic.html.ini b/testing/web-platform/meta/css/css-anchor-position/position-try-dynamic.html.ini @@ -1,3 +0,0 @@ -[position-try-dynamic.html] - [Left position set to right edge of anchor with @position-try] - expected: FAIL diff --git a/testing/web-platform/meta/css/css-anchor-position/position-try-fallbacks-limit.html.ini b/testing/web-platform/meta/css/css-anchor-position/position-try-fallbacks-limit.html.ini @@ -1,6 +1,3 @@ [position-try-fallbacks-limit.html] [Try fallbacks which are not found are not part of the limit] expected: FAIL - - [Must support At least five try fallbacks] - expected: FAIL diff --git a/testing/web-platform/meta/css/css-anchor-position/position-try-initial-transition.html.ini b/testing/web-platform/meta/css/css-anchor-position/position-try-initial-transition.html.ini @@ -1,3 +0,0 @@ -[position-try-initial-transition.html] - [No transition for initial style with @position-try] - expected: FAIL diff --git a/testing/web-platform/meta/css/css-anchor-position/position-try-order-basic.html.ini b/testing/web-platform/meta/css/css-anchor-position/position-try-order-basic.html.ini @@ -0,0 +1,45 @@ +[position-try-order-basic.html] + [most-height --right, --left | --right] + expected: FAIL + + [most-inline-size --right, --left | --left] + expected: FAIL + + [most-width --right, --left | --left] + expected: FAIL + + [most-width --bottom, --top | --bottom] + expected: FAIL + + [most-block-size --bottom, --top | --top] + expected: FAIL + + [most-height --bottom, --top | --top] + expected: FAIL + + [most-inline-size --right, --left, --bottom, --top | --bottom] + expected: FAIL + + [most-inline-size --right, --left, --top, --bottom | --top] + expected: FAIL + + [most-block-size --bottom, --top, --right, --left | --right] + expected: FAIL + + [most-block-size --bottom, --top, --left, --right | --left] + expected: FAIL + + [most-block-size --bottom-sweep, --left-sweep | --left-sweep] + expected: FAIL + + [most-inline-size --right-sweep, --left-sweep, --bottom-sweep, --top-sweep | --left-sweep] + expected: FAIL + + [most-block-size --right-sweep, --left-sweep, --bottom-sweep, --top-sweep | --top-sweep] + expected: FAIL + + [most-inline-size\n --right-sweep, --left-sweep, --bottom-sweep, --top-sweep,\n /* --right, --left, --bottom, --top */\n --bottom\n | --bottom] + expected: FAIL + + [most-block-size\n --right-sweep, --left-sweep, --bottom-sweep, --top-sweep,\n /* --right, --left, --bottom, --top */\n --right\n | --right] + expected: FAIL diff --git a/testing/web-platform/meta/css/css-anchor-position/position-try-order-position-area.html.ini b/testing/web-platform/meta/css/css-anchor-position/position-try-order-position-area.html.ini @@ -1,47 +1,47 @@ [position-try-order-position-area.html] expected: if (processor == "x86") and (os == "linux"): [OK, CRASH] - [--right, --left, --bottom, --top | --right] + [most-height --right, --left | --right] expected: FAIL - [normal --right, --left, --bottom, --top | --right] + [most-width --bottom, --top | --bottom] expected: FAIL - [normal --top, --left, --bottom, --right | --top] + [most-inline-size --right, --left, --bottom, --top | --bottom] expected: FAIL - [most-block-size --right, --left | --right] + [most-inline-size --right, --left, --top, --bottom | --top] expected: FAIL - [most-height --right, --left | --right] + [most-block-size --bottom, --top, --right, --left | --right] expected: FAIL - [most-inline-size --bottom, --top | --bottom] + [most-block-size --bottom, --top, --left, --right | --left] expected: FAIL - [most-width --bottom, --top | --bottom] + [most-inline-size --right-sweep, --left-sweep, --bottom-sweep, --top-sweep | --left-sweep] expected: FAIL - [most-inline-size --right, --left, --bottom, --top | --bottom] + [most-inline-size --right, --left | --left] expected: FAIL - [most-inline-size --right, --left, --top, --bottom | --top] + [most-width --right, --left | --left] expected: FAIL - [most-block-size --bottom, --top, --right, --left | --right] + [most-block-size --bottom, --top | --top] expected: FAIL - [most-block-size --bottom, --top, --left, --right | --left] + [most-height --bottom, --top | --top] expected: FAIL - [most-inline-size --left-sweep, --bottom-sweep | --left-sweep] + [most-block-size --bottom-sweep, --left-sweep | --left-sweep] expected: FAIL - [most-inline-size --bottom-sweep, --left-sweep | --bottom-sweep] + [most-block-size --right-sweep, --left-sweep, --bottom-sweep, --top-sweep | --top-sweep] expected: FAIL - [most-block-size --left-sweep, --bottom-sweep | --left-sweep] + [most-inline-size\n --right-sweep, --left-sweep, --bottom-sweep, --top-sweep,\n /* --right, --left, --bottom, --top */\n --bottom\n | --bottom] expected: FAIL - [most-inline-size --right-sweep, --left-sweep, --bottom-sweep, --top-sweep | --left-sweep] + [most-block-size\n --right-sweep, --left-sweep, --bottom-sweep, --top-sweep,\n /* --right, --left, --bottom, --top */\n --right\n | --right] expected: FAIL diff --git a/testing/web-platform/meta/css/css-anchor-position/position-try-pseudo-element.html.ini b/testing/web-platform/meta/css/css-anchor-position/position-try-pseudo-element.html.ini @@ -1,8 +0,0 @@ -[position-try-pseudo-element.html] - expected: - if (processor == "x86") and (os == "linux"): [OK, CRASH] - [::before using second fallback] - expected: FAIL - - [::after using first fallback] - expected: FAIL diff --git a/testing/web-platform/meta/css/css-anchor-position/try-tactic-alignment.html.ini b/testing/web-platform/meta/css/css-anchor-position/try-tactic-alignment.html.ini @@ -76,3 +76,39 @@ [flip-block, align-self:flex-end] expected: FAIL + + [flip-inline, justify-self:start;align-self:start, justify-self:end;align-self:start, ltr, horizontal-tb] + expected: FAIL + + [flip-block, justify-self:start;align-self:start, justify-self:start;align-self:end, ltr, horizontal-tb] + expected: FAIL + + [flip-block flip-inline, justify-self:start;align-self:start, justify-self:end;align-self:end, ltr, horizontal-tb] + expected: FAIL + + [flip-start, justify-self:start;align-self:end, justify-self:end;align-self:start, ltr, horizontal-tb] + expected: FAIL + + [flip-block flip-start, justify-self:start;align-self:start, justify-self:end;align-self:start, ltr, horizontal-tb] + expected: FAIL + + [flip-inline flip-start, justify-self:start;align-self:start, justify-self:start;align-self:end, ltr, horizontal-tb] + expected: FAIL + + [flip-block flip-inline flip-start, justify-self:start;align-self:start, justify-self:end;align-self:end, ltr, horizontal-tb] + expected: FAIL + + [flip-inline, justify-self:left;align-self:start, justify-self:right;align-self:start, ltr, horizontal-tb] + expected: FAIL + + [flip-start, justify-self:left;align-self:end, justify-self:end;align-self:self-start, ltr, horizontal-tb] + expected: FAIL + + [flip-start, justify-self:right;align-self:start, justify-self:start;align-self:self-end, ltr, horizontal-tb] + expected: FAIL + + [flip-start, justify-self:left;align-self:end, justify-self:end;align-self:self-start, ltr, vertical-rl] + expected: FAIL + + [flip-start, justify-self:left;align-self:start, justify-self:start;align-self:self-end, rtl, horizontal-tb] + expected: FAIL diff --git a/testing/web-platform/meta/css/css-anchor-position/try-tactic-anchor.html.ini b/testing/web-platform/meta/css/css-anchor-position/try-tactic-anchor.html.ini @@ -1,21 +1,126 @@ [try-tactic-anchor.html] - [CSS Anchor Positioning: try-tactic, anchor()] + [flip-start] expected: FAIL - [flip-inline] + [flip-inline flip-start] expected: FAIL - [flip-block] + [flip-start flip-block] expected: FAIL - [flip-start] + [Can transform a value post-var-substitution] expected: FAIL - [flip-inline flip-start] + [flip-block, right:anchor(left), right:anchor(left)] expected: FAIL - [flip-start flip-block] + [flip-inline, bottom:anchor(top), bottom:anchor(top)] expected: FAIL - [Can transform a value post-var-substitution] + [flip-inline, right:anchor(left), left:anchor(right)] + expected: FAIL + + [flip-inline, left:anchor(right), right:anchor(left)] + expected: FAIL + + [flip-start, right:anchor(left), bottom:anchor(top)] + expected: FAIL + + [flip-start, bottom:anchor(top), right:anchor(left)] + expected: FAIL + + [flip-inline flip-start, right:anchor(left), top:anchor(bottom)] + expected: FAIL + + [flip-start flip-inline, top:anchor(bottom), right:anchor(left)] + expected: FAIL + + [flip-start flip-block, left:anchor(right), bottom:anchor(top)] + expected: FAIL + + [flip-block flip-start, bottom:anchor(top), left:anchor(right)] + expected: FAIL + + [flip-start, left:anchor(right), top:anchor(bottom)] + expected: FAIL + + [flip-start, top:anchor(bottom), left:anchor(right)] + expected: FAIL + + [flip-block, bottom:anchor(top), top:anchor(bottom)] + expected: FAIL + + [flip-block, top:anchor(bottom), bottom:anchor(top)] + expected: FAIL + + [flip-inline, right:anchor(start), left:anchor(right)] + expected: FAIL + + [flip-inline, left:anchor(end), right:anchor(left)] + expected: FAIL + + [flip-start, right:anchor(start), bottom:anchor(top)] + expected: FAIL + + [flip-start, bottom:anchor(start), right:anchor(left)] + expected: FAIL + + [flip-inline flip-start, right:anchor(start), top:anchor(bottom)] + expected: FAIL + + [flip-start flip-inline, top:anchor(end), right:anchor(left)] + expected: FAIL + + [flip-start flip-block, left:anchor(end), bottom:anchor(top)] + expected: FAIL + + [flip-block flip-start, bottom:anchor(start), left:anchor(right)] + expected: FAIL + + [flip-start, left:anchor(end), top:anchor(bottom)] + expected: FAIL + + [flip-start, top:anchor(end), left:anchor(right)] + expected: FAIL + + [flip-block, bottom:anchor(start), top:anchor(bottom)] + expected: FAIL + + [flip-block, top:anchor(end), bottom:anchor(top)] + expected: FAIL + + [flip-inline, right:anchor(self-start), left:anchor(right)] + expected: FAIL + + [flip-inline, left:anchor(self-end), right:anchor(left)] + expected: FAIL + + [flip-start, right:anchor(self-start), bottom:anchor(top)] + expected: FAIL + + [flip-start, bottom:anchor(self-start), right:anchor(left)] + expected: FAIL + + [flip-inline flip-start, right:anchor(self-start), top:anchor(bottom)] + expected: FAIL + + [flip-start flip-inline, top:anchor(self-end), right:anchor(left)] + expected: FAIL + + [flip-start flip-block, left:anchor(self-end), bottom:anchor(top)] + expected: FAIL + + [flip-block flip-start, bottom:anchor(self-start), left:anchor(right)] + expected: FAIL + + [flip-start, left:anchor(self-end), top:anchor(bottom)] + expected: FAIL + + [flip-start, top:anchor(self-end), left:anchor(right)] + expected: FAIL + + [flip-block, bottom:anchor(self-start), top:anchor(bottom)] + expected: FAIL + + [flip-block, top:anchor(self-end), bottom:anchor(top)] expected: FAIL diff --git a/testing/web-platform/meta/css/css-anchor-position/try-tactic-basic.html.ini b/testing/web-platform/meta/css/css-anchor-position/try-tactic-basic.html.ini @@ -20,9 +20,6 @@ [--pf flip-block flip-inline flip-start] expected: FAIL - [--pf] - expected: FAIL - [--pf flip-inline flip-block] expected: FAIL diff --git a/testing/web-platform/meta/css/css-anchor-position/try-tactic-margin.html.ini b/testing/web-platform/meta/css/css-anchor-position/try-tactic-margin.html.ini @@ -19,6 +19,3 @@ [--pf flip-block flip-inline flip-start] expected: FAIL - - [--pf] - expected: FAIL diff --git a/testing/web-platform/meta/css/css-anchor-position/try-tactic-wm.html.ini b/testing/web-platform/meta/css/css-anchor-position/try-tactic-wm.html.ini @@ -1,7 +1,4 @@ [try-tactic-wm.html] - [ horizontal-tb ltr] - expected: FAIL - [flip-inline horizontal-tb ltr] expected: FAIL