Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[css-view-transitions-1] Handle startVT/cross-doc transitions when Document is hidden #9543

Closed
khushalsagar opened this issue Oct 31, 2023 · 5 comments
Labels
css-view-transitions-1 View Transitions; Bugs only

Comments

@khushalsagar
Copy link
Member

khushalsagar commented Oct 31, 2023

If startViewTransition is called while a Document is hidden. Or the document is hidden at any point during the transition's lifecycle, we don't do anything special. We should probably explicitly skip the transition if the Document is hidden.

Not sure what to do with iframes. The UA can stop rendering opportunities if the iframe is far enough for the viewport. Should we assume its hidden?

The spec way of when a Document is hidden can be based on this : The step labeled Rendering opportunities prevents the user agent from updating the rendering when it is unable to present new content to the user. If the Document is in this state, skip all ViewTransitions?

@noamr
Copy link
Collaborator

noamr commented Oct 31, 2023

What would happen given the current spec is that the transition would be delayed until the page is visible or the timeout passes. Perhaps for iframe this is OK, and for explicitly hidden pages we can skip immediately?

@khushalsagar
Copy link
Member Author

What would happen given the current spec is that the transition would be delayed until the page is visible or the timeout passes.

Right now it depends on when the page is hidden. If its before rendering has been frozen then we'll keep waiting for the next frame. If its during rendering frozen then we timeout. And if its after the DOM has been constructed then it will wait until all animations are finished. I'm not sure how we deal with animation progress for hidden Documents but if that's checked when the Document is made visible again then likely we'll discover the transition to be finished then?

Perhaps for iframe this is OK, and for explicitly hidden pages we can skip immediately?

Sounds reasonable. If the Document is hidden, that probably means the user doesn't care to see an animation when its made visible again. We can render the new DOM directly.

For the iframe case, browsers can stop rendering the iframe if its far off from the viewport. That means sometimes authors might see a timeout error if the iframe goes offscreen right after the transition was initiated. Its rare enough that we can ignore this case. But this was why I was leaning towards using a "rendering opportunity" based definition. So we skip for any case where the Document is not going to produce any more frames.

@khushalsagar
Copy link
Member Author

Proposed Resolution
Any active transition is immediately skipped when the Document's visibility state changes to "hidden". If startVT is called while the Document is in this state, that is also immediately skipped.

It's unclear what to do for offscreen iframes, filed #9839 for that.

@khushalsagar khushalsagar changed the title [css-view-transitions-1] Handle startVT when Document is hidden [css-view-transitions-1] Handle startVT/cross-doc transitions when Document is hidden Feb 7, 2024
@khushalsagar
Copy link
Member Author

The proposal is for same and cross-document transitions.

@css-meeting-bot
Copy link
Member

The CSS Working Group just discussed [css-view-transitions-1] Handle startVT/cross-doc transitions when Document is hidden, and agreed to the following:

  • RESOLVED: Skip transitions if the document state is hidden (or changes to hidden)
The full IRC log of that discussion <TabAtkins> khush: this is about what to do if, in any phase of he transition, the doc is hidden (you switch tabs)
<TabAtkins> khush: two quirky cases
<TabAtkins> khush: one, tab is hidden before you even cache the old dom's appearance
<TabAtkins> khush: In the spec we wait for a frame to happen so we can cache, and eventually time out
<TabAtkins> khush: confusing to authors
<TabAtkins> khush: second is we cache the screenshot, create the pseudo, but animations don't tick
<TabAtkins> khush: in principle they tick, like a web animation, but unless we queue a task for when the transition *should* finish we just hang onto the memory for the snapshot indefinitely
<TabAtkins> khush: both are bad. there's no reason to keep the machinery alive when the doc isn't visible. user should just see the new state when they arrive
<TabAtkins> khush: so proposal is, if the doc ever changes to hidden, just flip to the end state
<TabAtkins> khush: quiriker case is iframes. if you scroll it off-screen enough, browsers will throttle rendering
<emilio> q+
<TabAtkins> khush: so maybe another resolution - if an iframe isn't going to get rendering opportunities, just skip the transition. if needed i can go into detail about where that change will happen in html
<bramus> q+
<TabAtkins> khush: So first proposed resolution: if page is hidden, skip transitions.
<miriam> ack emilio
<TabAtkins> emilio: seems reasonable. what's the author-visible behavior? does promise reject or something else?
<noamr> q+
<flackr> q+
<TabAtkins> khush: there's already a bit in the API where a transition can skip to the end at any point.
<TabAtkins> khush: So all the promises define how they act in this case already
<TabAtkins> khush: [describes the promises behavior]
<TabAtkins> emilio: so that won't cause spurious exceptions... unless you await the ready promise?
<TabAtkins> emilio: Might be bad to test
<TabAtkins> TabAtkins: we dont' *reject* the promises, do we?
<TabAtkins> khush: we do reject the XXX promise because it indicates there is no pseudo-elements generated
<noamr> We reject the ready promise
<TabAtkins> khush: I'd expect most authors to have written error-handling code
<TabAtkins> emilio: ehhhhhhh
<TabAtkins> khush: if you do try to do something to the pseudo-element, your code will be wrong anyway and throw other errors
<TabAtkins> emilio: yeah my concern is just that it's really easy to write code that doesn't test for this
<TabAtkins> vmpstr: ready promise already rejects on timeout
<TabAtkins> emilio: ready promise is okay, i just don't want the other promises to reject
<miriam> ack bramus
<TabAtkins> bramus: Maybe we should only do that if animations are linked to document timeline?
<TabAtkins> khush: spec already says the only transition that holds the pseudo dom are those attached to document timeline
<TabAtkins> khush: So if the browser is slow internally or your callback is slow, that can already cause a timeout and reject the ready promise
<TabAtkins> khush: This also applies to cross-document transitions
<miriam> ack noamr
<TabAtkins> noamr: I think we already have spec language that says we can skip transitions for UA-defined reasons, that might be a good place to put the "if iframe is hidden" part since that's also UA-defined
<TabAtkins> noamr: And I suggest that if whole document is hidden (document.hidden) we should never expect a VT to work
<khush> q?
<TabAtkins> flackr: I didn't fully catch the reponse to Bramus' question, i think i have same concern
<noamr> q+
<TabAtkins> flackr: could create unpredictable behavior for transitions that last a long time or have a non-monotonic timeline
<miriam> ack flackr
<TabAtkins> bramus: it was covered
<TabAtkins> khush: If the only animations you ahve are non-document timeline'd, we already don't let you hold a transition forever
<noamr> q-
<TabAtkins> khush: when we walk thru the transitions and ask if there's anything that should keep the pseudo-dom alive, we ignore any that aren't attached to the document timeline
<TabAtkins> flackr: So you're not allowed to do this today
<TabAtkins> khush: Yeah, you'd have to manually hack it up
<TabAtkins> khush: There's an issue about us allowing raf/script-driven animations, and have an option to let people say "please dont' auto-shut-off my animation, I know what i'm doing"
<miriam> ack fantasai
<TabAtkins> fantasai: I hear emilio's concern about testing pathways
<TabAtkins> fantasai: but if we already have that problem, making it happen more often is helpful because it's more likely to occur in front of the dev
<TabAtkins> fantasai: re: what the user expects, since transitions should be temporary, it seems okay to just skip
<khush> q?
<vmpstr> q+
<TabAtkins> fantasai: so it seems that making them skip on hidden seems reasonable, and hopefully helps devs hit the error case more often if their code is broken
<miriam> ack vmpstr
<TabAtkins> vmpstr: the only thing from Bramus' point, there *are* cases where you want to control the animation with WebAnimations, so you can animation-play-state:paused and then respond to user input
<TabAtkins> vmpstr: Skipping on *those* cases if you swtich the tab seems unfortunate
<noamr> q+
<TabAtkins> khush: It's a behavior change you'd have to explicitly code for now
<TabAtkins> bramus: Isn't that already covered by the conditions?
<TabAtkins> khush: spec says keep the structure alive if the animation is running or paused
<TabAtkins> bramus: So should we remove the paused condition?
<TabAtkins> khush: I think I'm concurring with elika, since there are situations where this can occur already (gpu busy, your callback is longer than expected), in some cases the promise will reject already
<TabAtkins> khush: And in these scenarios the most logical thing to do is skip the transition
<miriam> ack noamr
<TabAtkins> noamr: The whole thing about paused transitions - at this time the document isn't interactive
<TabAtkins> noamr: It's a strange state, needs to be dealt with holistically
<TabAtkins> khush: proposed resolution: Skip transitions if the document state is hidden (or changes to hidden)
<TabAtkins> miriam: objections?
<TabAtkins> bramus: And this is with the current conditions in the spec right now?
<TabAtkins> khush: yes
<TabAtkins> RESOLVED: Skip transitions if the document state is hidden (or changes to hidden)

noamr added a commit to noamr/csswg-drafts that referenced this issue Feb 13, 2024
noamr added a commit that referenced this issue Feb 13, 2024
noamr added a commit to noamr/csswg-drafts that referenced this issue Feb 13, 2024
noamr added a commit to noamr/csswg-drafts that referenced this issue Feb 13, 2024
noamr added a commit that referenced this issue Feb 13, 2024
…dden or not-yet-revealed (#9948)

* [css-view-transitions-2] Skip cross-document view-transitions when hidden or not-yet-revealed

Closes #9822
See also #9543

* Add dfn
noamr added a commit to noamr/html that referenced this issue Feb 13, 2024
This allows the CSS view-transitions spec to react to page visibility changes.
Specifically, skip the active transition once a page is hidden.

See w3c/csswg-drafts#9543
noamr added a commit that referenced this issue Feb 14, 2024
…a hidden document (#9949)

* [css-view-transitions-1] Export an algorithm to skip a transition in a hidden document

See #9543

* Remove cruft

* Add assert
chromium-wpt-export-bot pushed a commit to web-platform-tests/wpt that referenced this issue Mar 15, 2024
- Skip the transition if document becomes hidden
- Disallow oubound cross-document view transitions when document is
  hidden
- Skip inbound cross-document view transition if document becomes
  hidden
- When calling startViewTransition() in a hidden document, start is
  as skipped.

Based on following CSS resolution:
w3c/csswg-drafts#9543 (comment)

Bug: 329302331
Change-Id: Ieef3238240b35c5d7f7f819793f65f71d7d75037
BruceDai pushed a commit to BruceDai/wpt that referenced this issue Mar 25, 2024
- Skip the transition if document becomes hidden
- Disallow oubound cross-document view transitions when document is
  hidden
- Skip inbound cross-document view transition if document becomes
  hidden
- When calling startViewTransition() in a hidden document, start is
  as skipped.

Based on following CSS resolution:
w3c/csswg-drafts#9543 (comment)

Bug: 329302331
Change-Id: Ieef3238240b35c5d7f7f819793f65f71d7d75037
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5374309
Reviewed-by: David Bokan <[email protected]>
Commit-Queue: Noam Rosenthal <[email protected]>
Cr-Commit-Position: refs/heads/main@{#1273445}
BruceDai pushed a commit to BruceDai/wpt that referenced this issue Mar 25, 2024
This reverts commit 763158dc9602048a522e165a8dcdabcc9da37db7.

Reason for revert: [Gardening] Test hide-before-reveal.html is consistently failing on CI bots.

Original change's description:
> View-transitions should only be allowed when page is visible
>
> - Skip the transition if document becomes hidden
> - Disallow oubound cross-document view transitions when document is
>   hidden
> - Skip inbound cross-document view transition if document becomes
>   hidden
> - When calling startViewTransition() in a hidden document, start is
>   as skipped.
>
> Based on following CSS resolution:
> w3c/csswg-drafts#9543 (comment)
>
> Bug: 329302331
> Change-Id: Ieef3238240b35c5d7f7f819793f65f71d7d75037
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5374309
> Reviewed-by: David Bokan <[email protected]>
> Commit-Queue: Noam Rosenthal <[email protected]>
> Cr-Commit-Position: refs/heads/main@{#1273445}

Bug: 329302331
Change-Id: Idd4ae8f47af123401e6c8d2673e26d23e296b9b1
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5375475
Commit-Queue: Brad Triebwasser <[email protected]>
Bot-Commit: Rubber Stamper <[email protected]>
Owners-Override: Brad Triebwasser <[email protected]>
Auto-Submit: Brad Triebwasser <[email protected]>
Cr-Commit-Position: refs/heads/main@{#1273716}
BruceDai pushed a commit to BruceDai/wpt that referenced this issue Mar 25, 2024


... This time marking test as long.

View-transitions should only be allowed when page is visible

- Skip the transition if document becomes hidden
- Disallow oubound cross-document view transitions when document is
  hidden
- Skip inbound cross-document view transition if document becomes
  hidden
- When calling startViewTransition() in a hidden document, start is
  as skipped.

Based on following CSS resolution:
w3c/csswg-drafts#9543 (comment)

Bug: 329302331
Change-Id: Ifbd8be3765307d2756ef2955eb6ef72e4b2b8756
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5372454
Reviewed-by: David Bokan <[email protected]>
Commit-Queue: Noam Rosenthal <[email protected]>
Cr-Commit-Position: refs/heads/main@{#1274101}
noamr added a commit to noamr/html that referenced this issue Mar 25, 2024
This allows the CSS view-transitions spec to react to page visibility changes.
Specifically, skip the active transition once a page is hidden.

See w3c/csswg-drafts#9543
ErichDonGubler pushed a commit to erichdongubler-mozilla/firefox that referenced this issue Mar 25, 2024
…when page is visible, a=testonly

Automatic update from web-platform-tests
View-transitions should only be allowed when page is visible

- Skip the transition if document becomes hidden
- Disallow oubound cross-document view transitions when document is
  hidden
- Skip inbound cross-document view transition if document becomes
  hidden
- When calling startViewTransition() in a hidden document, start is
  as skipped.

Based on following CSS resolution:
w3c/csswg-drafts#9543 (comment)

Bug: 329302331
Change-Id: Ieef3238240b35c5d7f7f819793f65f71d7d75037
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5374309
Reviewed-by: David Bokan <[email protected]>
Commit-Queue: Noam Rosenthal <[email protected]>
Cr-Commit-Position: refs/heads/main@{#1273445}

--

wpt-commits: de64b61df17bec0ed1e2777ab717bec6f8959a25
wpt-pr: 45122
ErichDonGubler pushed a commit to erichdongubler-mozilla/firefox that referenced this issue Mar 25, 2024
…allowed when page is visible", a=testonly

Automatic update from web-platform-tests
Revert "View-transitions should only be allowed when page is visible"

This reverts commit 763158dc9602048a522e165a8dcdabcc9da37db7.

Reason for revert: [Gardening] Test hide-before-reveal.html is consistently failing on CI bots.

Original change's description:
> View-transitions should only be allowed when page is visible
>
> - Skip the transition if document becomes hidden
> - Disallow oubound cross-document view transitions when document is
>   hidden
> - Skip inbound cross-document view transition if document becomes
>   hidden
> - When calling startViewTransition() in a hidden document, start is
>   as skipped.
>
> Based on following CSS resolution:
> w3c/csswg-drafts#9543 (comment)
>
> Bug: 329302331
> Change-Id: Ieef3238240b35c5d7f7f819793f65f71d7d75037
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5374309
> Reviewed-by: David Bokan <[email protected]>
> Commit-Queue: Noam Rosenthal <[email protected]>
> Cr-Commit-Position: refs/heads/main@{#1273445}

Bug: 329302331
Change-Id: Idd4ae8f47af123401e6c8d2673e26d23e296b9b1
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5375475
Commit-Queue: Brad Triebwasser <[email protected]>
Bot-Commit: Rubber Stamper <[email protected]>
Owners-Override: Brad Triebwasser <[email protected]>
Auto-Submit: Brad Triebwasser <[email protected]>
Cr-Commit-Position: refs/heads/main@{#1273716}

--

wpt-commits: ddf5b1d83d7bd893030f1761af17deab9d9881c1
wpt-pr: 45143
ErichDonGubler pushed a commit to erichdongubler-mozilla/firefox that referenced this issue Mar 25, 2024
…rce.com/c/chromium/src/+/5374309, a=testonly

Automatic update from web-platform-tests
Reland https://chromium-review.googlesource.com/c/chromium/src/+/5374309

... This time marking test as long.

View-transitions should only be allowed when page is visible

- Skip the transition if document becomes hidden
- Disallow oubound cross-document view transitions when document is
  hidden
- Skip inbound cross-document view transition if document becomes
  hidden
- When calling startViewTransition() in a hidden document, start is
  as skipped.

Based on following CSS resolution:
w3c/csswg-drafts#9543 (comment)

Bug: 329302331
Change-Id: Ifbd8be3765307d2756ef2955eb6ef72e4b2b8756
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5372454
Reviewed-by: David Bokan <[email protected]>
Commit-Queue: Noam Rosenthal <[email protected]>
Cr-Commit-Position: refs/heads/main@{#1274101}

--

wpt-commits: d4535158a3196da9278c836c1d679545b026aaaf
wpt-pr: 45162
domenic pushed a commit to whatwg/html that referenced this issue Apr 2, 2024
This allows the CSS view-transitions spec to react to page visibility changes. Specifically, skip the active transition once a page is hidden.

See w3c/csswg-drafts#9543.
rubberyuzu pushed a commit to rubberyuzu/html that referenced this issue Apr 8, 2024
This allows the CSS view-transitions spec to react to page visibility changes. Specifically, skip the active transition once a page is hidden.

See w3c/csswg-drafts#9543.
rubberyuzu added a commit to rubberyuzu/html that referenced this issue Apr 8, 2024
Allow top layer elements to be nested within popovers

This allows top layer elements, including the dialog element, to be nested inside of an open popover, by not closing the popover when the new top layer element is opened. Without this patch, opening a modal dialog inside of a popover will make the page inert and make the dialog invisible.

Fixes whatwg#9998. See also whatwg/fullscreen#237.

Editorial: order of comparisons

For consistency:
- greater than or equal to
- less than or equal to

Improve element reflection

This attempts to make the following improvements:

1. Make it more clear that initializing attr is not the first step in an algorithm, but rather something that counts for all the list items.
2. Rewrite the associated element(s) fields as algorithms. As there are no downstream references so far this is a change we can still make.
3. Add another layer of caching that is separate from the FrozenArray to avoid having to compare a list of elements with a FrozenArray directly.

This helps with whatwg#10219.

Disable PageSwapEvent's activation on cross-origin redirects

Closes whatwg#10196.

Upstream Long Animation Frames monkey-patches

Long Animation Frames (https://w3c.github.io/long-animation-frames/) expects a few calls from HTML and other specs, for reporting when tasks, rendering or JS entry points take place. This moves those calls from the Long Animation Frames spec to HTML.

Preload: only allow certain values for as=""

Closes whatwg#8332.

Call the view transition page visibility change steps

This allows the CSS view-transitions spec to react to page visibility changes. Specifically, skip the active transition once a page is hidden.

See w3c/csswg-drafts#9543.

Style marquee using overflow: hidden

This matches Chromium and WebKit. Tests will be worked on in https://bugzilla.mozilla.org/show_bug.cgi?id=306344.

Editorial: export Element's innerText getter and setter steps

These will be used by Trusted Types (and eventually HTML once upstreamed) as part of shadowing this attribute to HTMLScriptElement.

Add getHTML() and serializable shadow roots

Corresponding DOM PR: whatwg/dom#1256.

Closes whatwg#8867.

Co-authored-by: Domenic Denicola <[email protected]>

Make buttons respect display: none/contents in button layout

Fixes whatwg#10238. This matches what is already implemented in browsers.

Remove duplicate requirement for 'overflow' for marquee

The duplication was introduced by whatwg#10243.

Meta: make all the SVGs darkmode-aware

Also tag them as such, so that they don't get a white background after whatwg/whatwg.org#439 is merged.

Warn that the XML syntax is not recommended

Closes whatwg#10237.
rubberyuzu added a commit to rubberyuzu/html that referenced this issue Apr 8, 2024
Allow top layer elements to be nested within popovers

This allows top layer elements, including the dialog element, to be nested inside of an open popover, by not closing the popover when the new top layer element is opened. Without this patch, opening a modal dialog inside of a popover will make the page inert and make the dialog invisible.

Fixes whatwg#9998. See also whatwg/fullscreen#237.

Editorial: order of comparisons

For consistency:
- greater than or equal to
- less than or equal to

Improve element reflection

This attempts to make the following improvements:

1. Make it more clear that initializing attr is not the first step in an algorithm, but rather something that counts for all the list items.
2. Rewrite the associated element(s) fields as algorithms. As there are no downstream references so far this is a change we can still make.
3. Add another layer of caching that is separate from the FrozenArray to avoid having to compare a list of elements with a FrozenArray directly.

This helps with whatwg#10219.

Disable PageSwapEvent's activation on cross-origin redirects

Closes whatwg#10196.

Upstream Long Animation Frames monkey-patches

Long Animation Frames (https://w3c.github.io/long-animation-frames/) expects a few calls from HTML and other specs, for reporting when tasks, rendering or JS entry points take place. This moves those calls from the Long Animation Frames spec to HTML.

Preload: only allow certain values for as=""

Closes whatwg#8332.

Call the view transition page visibility change steps

This allows the CSS view-transitions spec to react to page visibility changes. Specifically, skip the active transition once a page is hidden.

See w3c/csswg-drafts#9543.

Style marquee using overflow: hidden

This matches Chromium and WebKit. Tests will be worked on in https://bugzilla.mozilla.org/show_bug.cgi?id=306344.

Editorial: export Element's innerText getter and setter steps

These will be used by Trusted Types (and eventually HTML once upstreamed) as part of shadowing this attribute to HTMLScriptElement.

Add getHTML() and serializable shadow roots

Corresponding DOM PR: whatwg/dom#1256.

Closes whatwg#8867.

Co-authored-by: Domenic Denicola <[email protected]>

Make buttons respect display: none/contents in button layout

Fixes whatwg#10238. This matches what is already implemented in browsers.

Remove duplicate requirement for 'overflow' for marquee

The duplication was introduced by whatwg#10243.

Meta: make all the SVGs darkmode-aware

Also tag them as such, so that they don't get a white background after whatwg/whatwg.org#439 is merged.

Warn that the XML syntax is not recommended

Closes whatwg#10237.
rubberyuzu added a commit to rubberyuzu/html that referenced this issue May 13, 2024
Allow top layer elements to be nested within popovers

This allows top layer elements, including the dialog element, to be nested inside of an open popover, by not closing the popover when the new top layer element is opened. Without this patch, opening a modal dialog inside of a popover will make the page inert and make the dialog invisible.

Fixes whatwg#9998. See also whatwg/fullscreen#237.

Editorial: order of comparisons

For consistency:
- greater than or equal to
- less than or equal to

Improve element reflection

This attempts to make the following improvements:

1. Make it more clear that initializing attr is not the first step in an algorithm, but rather something that counts for all the list items.
2. Rewrite the associated element(s) fields as algorithms. As there are no downstream references so far this is a change we can still make.
3. Add another layer of caching that is separate from the FrozenArray to avoid having to compare a list of elements with a FrozenArray directly.

This helps with whatwg#10219.

Disable PageSwapEvent's activation on cross-origin redirects

Closes whatwg#10196.

Upstream Long Animation Frames monkey-patches

Long Animation Frames (https://w3c.github.io/long-animation-frames/) expects a few calls from HTML and other specs, for reporting when tasks, rendering or JS entry points take place. This moves those calls from the Long Animation Frames spec to HTML.

Preload: only allow certain values for as=""

Closes whatwg#8332.

Call the view transition page visibility change steps

This allows the CSS view-transitions spec to react to page visibility changes. Specifically, skip the active transition once a page is hidden.

See w3c/csswg-drafts#9543.

Style marquee using overflow: hidden

This matches Chromium and WebKit. Tests will be worked on in https://bugzilla.mozilla.org/show_bug.cgi?id=306344.

Editorial: export Element's innerText getter and setter steps

These will be used by Trusted Types (and eventually HTML once upstreamed) as part of shadowing this attribute to HTMLScriptElement.

Add getHTML() and serializable shadow roots

Corresponding DOM PR: whatwg/dom#1256.

Closes whatwg#8867.

Co-authored-by: Domenic Denicola <[email protected]>

Make buttons respect display: none/contents in button layout

Fixes whatwg#10238. This matches what is already implemented in browsers.

Remove duplicate requirement for 'overflow' for marquee

The duplication was introduced by whatwg#10243.

Meta: make all the SVGs darkmode-aware

Also tag them as such, so that they don't get a white background after whatwg/whatwg.org#439 is merged.

Warn that the XML syntax is not recommended

Closes whatwg#10237.
rubberyuzu added a commit to rubberyuzu/html that referenced this issue May 20, 2024
Allow top layer elements to be nested within popovers

This allows top layer elements, including the dialog element, to be nested inside of an open popover, by not closing the popover when the new top layer element is opened. Without this patch, opening a modal dialog inside of a popover will make the page inert and make the dialog invisible.

Fixes whatwg#9998. See also whatwg/fullscreen#237.

Editorial: order of comparisons

For consistency:
- greater than or equal to
- less than or equal to

Improve element reflection

This attempts to make the following improvements:

1. Make it more clear that initializing attr is not the first step in an algorithm, but rather something that counts for all the list items.
2. Rewrite the associated element(s) fields as algorithms. As there are no downstream references so far this is a change we can still make.
3. Add another layer of caching that is separate from the FrozenArray to avoid having to compare a list of elements with a FrozenArray directly.

This helps with whatwg#10219.

Disable PageSwapEvent's activation on cross-origin redirects

Closes whatwg#10196.

Upstream Long Animation Frames monkey-patches

Long Animation Frames (https://w3c.github.io/long-animation-frames/) expects a few calls from HTML and other specs, for reporting when tasks, rendering or JS entry points take place. This moves those calls from the Long Animation Frames spec to HTML.

Preload: only allow certain values for as=""

Closes whatwg#8332.

Call the view transition page visibility change steps

This allows the CSS view-transitions spec to react to page visibility changes. Specifically, skip the active transition once a page is hidden.

See w3c/csswg-drafts#9543.

Style marquee using overflow: hidden

This matches Chromium and WebKit. Tests will be worked on in https://bugzilla.mozilla.org/show_bug.cgi?id=306344.

Editorial: export Element's innerText getter and setter steps

These will be used by Trusted Types (and eventually HTML once upstreamed) as part of shadowing this attribute to HTMLScriptElement.

Add getHTML() and serializable shadow roots

Corresponding DOM PR: whatwg/dom#1256.

Closes whatwg#8867.

Co-authored-by: Domenic Denicola <[email protected]>

Make buttons respect display: none/contents in button layout

Fixes whatwg#10238. This matches what is already implemented in browsers.

Remove duplicate requirement for 'overflow' for marquee

The duplication was introduced by whatwg#10243.

Meta: make all the SVGs darkmode-aware

Also tag them as such, so that they don't get a white background after whatwg/whatwg.org#439 is merged.

Warn that the XML syntax is not recommended

Closes whatwg#10237.
nt1m added a commit to nt1m/WebKit that referenced this issue Jun 11, 2024
https://bugs.webkit.org/show_bug.cgi?id=271248
rdar://125017653

Reviewed by NOBODY (OOPS!).

Follow:
- https://drafts.csswg.org/css-view-transitions-1/#page-visibility-change-steps
- w3c/csswg-drafts#9543

Add transition-in-hidden-page.html WPT from upstream.

* LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/transition-in-hidden-page-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/transition-in-hidden-page.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/window-resize-aborts-transition-before-ready-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/window-resize-aborts-transition-expected.txt:
* Source/WebCore/dom/Document.cpp:
(WebCore::Document::visibilityStateChanged): Make this more robust to allow unregistering clients while iterating.
(WebCore::Document::startViewTransition):
* Source/WebCore/dom/ViewTransition.cpp:
(WebCore::ViewTransition::ViewTransition):
(WebCore::ViewTransition::skipViewTransition):
(WebCore::ViewTransition::stop):
(WebCore::ViewTransition::visibilityStateChanged):
* Source/WebCore/dom/ViewTransition.h:
rubberyuzu added a commit to rubberyuzu/html that referenced this issue Jun 17, 2024
Allow top layer elements to be nested within popovers

This allows top layer elements, including the dialog element, to be nested inside of an open popover, by not closing the popover when the new top layer element is opened. Without this patch, opening a modal dialog inside of a popover will make the page inert and make the dialog invisible.

Fixes whatwg#9998. See also whatwg/fullscreen#237.

Editorial: order of comparisons

For consistency:
- greater than or equal to
- less than or equal to

Improve element reflection

This attempts to make the following improvements:

1. Make it more clear that initializing attr is not the first step in an algorithm, but rather something that counts for all the list items.
2. Rewrite the associated element(s) fields as algorithms. As there are no downstream references so far this is a change we can still make.
3. Add another layer of caching that is separate from the FrozenArray to avoid having to compare a list of elements with a FrozenArray directly.

This helps with whatwg#10219.

Disable PageSwapEvent's activation on cross-origin redirects

Closes whatwg#10196.

Upstream Long Animation Frames monkey-patches

Long Animation Frames (https://w3c.github.io/long-animation-frames/) expects a few calls from HTML and other specs, for reporting when tasks, rendering or JS entry points take place. This moves those calls from the Long Animation Frames spec to HTML.

Preload: only allow certain values for as=""

Closes whatwg#8332.

Call the view transition page visibility change steps

This allows the CSS view-transitions spec to react to page visibility changes. Specifically, skip the active transition once a page is hidden.

See w3c/csswg-drafts#9543.

Style marquee using overflow: hidden

This matches Chromium and WebKit. Tests will be worked on in https://bugzilla.mozilla.org/show_bug.cgi?id=306344.

Editorial: export Element's innerText getter and setter steps

These will be used by Trusted Types (and eventually HTML once upstreamed) as part of shadowing this attribute to HTMLScriptElement.

Add getHTML() and serializable shadow roots

Corresponding DOM PR: whatwg/dom#1256.

Closes whatwg#8867.

Co-authored-by: Domenic Denicola <[email protected]>

Make buttons respect display: none/contents in button layout

Fixes whatwg#10238. This matches what is already implemented in browsers.

Remove duplicate requirement for 'overflow' for marquee

The duplication was introduced by whatwg#10243.

Meta: make all the SVGs darkmode-aware

Also tag them as such, so that they don't get a white background after whatwg/whatwg.org#439 is merged.

Warn that the XML syntax is not recommended

Closes whatwg#10237.
rubberyuzu added a commit to rubberyuzu/html that referenced this issue Jun 25, 2024
Allow top layer elements to be nested within popovers

This allows top layer elements, including the dialog element, to be nested inside of an open popover, by not closing the popover when the new top layer element is opened. Without this patch, opening a modal dialog inside of a popover will make the page inert and make the dialog invisible.

Fixes whatwg#9998. See also whatwg/fullscreen#237.

Editorial: order of comparisons

For consistency:
- greater than or equal to
- less than or equal to

Improve element reflection

This attempts to make the following improvements:

1. Make it more clear that initializing attr is not the first step in an algorithm, but rather something that counts for all the list items.
2. Rewrite the associated element(s) fields as algorithms. As there are no downstream references so far this is a change we can still make.
3. Add another layer of caching that is separate from the FrozenArray to avoid having to compare a list of elements with a FrozenArray directly.

This helps with whatwg#10219.

Disable PageSwapEvent's activation on cross-origin redirects

Closes whatwg#10196.

Upstream Long Animation Frames monkey-patches

Long Animation Frames (https://w3c.github.io/long-animation-frames/) expects a few calls from HTML and other specs, for reporting when tasks, rendering or JS entry points take place. This moves those calls from the Long Animation Frames spec to HTML.

Preload: only allow certain values for as=""

Closes whatwg#8332.

Call the view transition page visibility change steps

This allows the CSS view-transitions spec to react to page visibility changes. Specifically, skip the active transition once a page is hidden.

See w3c/csswg-drafts#9543.

Style marquee using overflow: hidden

This matches Chromium and WebKit. Tests will be worked on in https://bugzilla.mozilla.org/show_bug.cgi?id=306344.

Editorial: export Element's innerText getter and setter steps

These will be used by Trusted Types (and eventually HTML once upstreamed) as part of shadowing this attribute to HTMLScriptElement.

Add getHTML() and serializable shadow roots

Corresponding DOM PR: whatwg/dom#1256.

Closes whatwg#8867.

Co-authored-by: Domenic Denicola <[email protected]>

Make buttons respect display: none/contents in button layout

Fixes whatwg#10238. This matches what is already implemented in browsers.

Remove duplicate requirement for 'overflow' for marquee

The duplication was introduced by whatwg#10243.

Meta: make all the SVGs darkmode-aware

Also tag them as such, so that they don't get a white background after whatwg/whatwg.org#439 is merged.

Warn that the XML syntax is not recommended

Closes whatwg#10237.
rubberyuzu added a commit to rubberyuzu/html that referenced this issue Aug 20, 2024
Allow top layer elements to be nested within popovers

This allows top layer elements, including the dialog element, to be nested inside of an open popover, by not closing the popover when the new top layer element is opened. Without this patch, opening a modal dialog inside of a popover will make the page inert and make the dialog invisible.

Fixes whatwg#9998. See also whatwg/fullscreen#237.

Editorial: order of comparisons

For consistency:
- greater than or equal to
- less than or equal to

Improve element reflection

This attempts to make the following improvements:

1. Make it more clear that initializing attr is not the first step in an algorithm, but rather something that counts for all the list items.
2. Rewrite the associated element(s) fields as algorithms. As there are no downstream references so far this is a change we can still make.
3. Add another layer of caching that is separate from the FrozenArray to avoid having to compare a list of elements with a FrozenArray directly.

This helps with whatwg#10219.

Disable PageSwapEvent's activation on cross-origin redirects

Closes whatwg#10196.

Upstream Long Animation Frames monkey-patches

Long Animation Frames (https://w3c.github.io/long-animation-frames/) expects a few calls from HTML and other specs, for reporting when tasks, rendering or JS entry points take place. This moves those calls from the Long Animation Frames spec to HTML.

Preload: only allow certain values for as=""

Closes whatwg#8332.

Call the view transition page visibility change steps

This allows the CSS view-transitions spec to react to page visibility changes. Specifically, skip the active transition once a page is hidden.

See w3c/csswg-drafts#9543.

Style marquee using overflow: hidden

This matches Chromium and WebKit. Tests will be worked on in https://bugzilla.mozilla.org/show_bug.cgi?id=306344.

Editorial: export Element's innerText getter and setter steps

These will be used by Trusted Types (and eventually HTML once upstreamed) as part of shadowing this attribute to HTMLScriptElement.

Add getHTML() and serializable shadow roots

Corresponding DOM PR: whatwg/dom#1256.

Closes whatwg#8867.

Co-authored-by: Domenic Denicola <[email protected]>

Make buttons respect display: none/contents in button layout

Fixes whatwg#10238. This matches what is already implemented in browsers.

Remove duplicate requirement for 'overflow' for marquee

The duplication was introduced by whatwg#10243.

Meta: make all the SVGs darkmode-aware

Also tag them as such, so that they don't get a white background after whatwg/whatwg.org#439 is merged.

Warn that the XML syntax is not recommended

Closes whatwg#10237.
@github-project-automation github-project-automation bot moved this to Monday morning in Feb 2024 Agenda Aug 26, 2024
rubberyuzu added a commit to rubberyuzu/html that referenced this issue Aug 27, 2024
Allow top layer elements to be nested within popovers

This allows top layer elements, including the dialog element, to be nested inside of an open popover, by not closing the popover when the new top layer element is opened. Without this patch, opening a modal dialog inside of a popover will make the page inert and make the dialog invisible.

Fixes whatwg#9998. See also whatwg/fullscreen#237.

Editorial: order of comparisons

For consistency:
- greater than or equal to
- less than or equal to

Improve element reflection

This attempts to make the following improvements:

1. Make it more clear that initializing attr is not the first step in an algorithm, but rather something that counts for all the list items.
2. Rewrite the associated element(s) fields as algorithms. As there are no downstream references so far this is a change we can still make.
3. Add another layer of caching that is separate from the FrozenArray to avoid having to compare a list of elements with a FrozenArray directly.

This helps with whatwg#10219.

Disable PageSwapEvent's activation on cross-origin redirects

Closes whatwg#10196.

Upstream Long Animation Frames monkey-patches

Long Animation Frames (https://w3c.github.io/long-animation-frames/) expects a few calls from HTML and other specs, for reporting when tasks, rendering or JS entry points take place. This moves those calls from the Long Animation Frames spec to HTML.

Preload: only allow certain values for as=""

Closes whatwg#8332.

Call the view transition page visibility change steps

This allows the CSS view-transitions spec to react to page visibility changes. Specifically, skip the active transition once a page is hidden.

See w3c/csswg-drafts#9543.

Style marquee using overflow: hidden

This matches Chromium and WebKit. Tests will be worked on in https://bugzilla.mozilla.org/show_bug.cgi?id=306344.

Editorial: export Element's innerText getter and setter steps

These will be used by Trusted Types (and eventually HTML once upstreamed) as part of shadowing this attribute to HTMLScriptElement.

Add getHTML() and serializable shadow roots

Corresponding DOM PR: whatwg/dom#1256.

Closes whatwg#8867.

Co-authored-by: Domenic Denicola <[email protected]>

Make buttons respect display: none/contents in button layout

Fixes whatwg#10238. This matches what is already implemented in browsers.

Remove duplicate requirement for 'overflow' for marquee

The duplication was introduced by whatwg#10243.

Meta: make all the SVGs darkmode-aware

Also tag them as such, so that they don't get a white background after whatwg/whatwg.org#439 is merged.

Warn that the XML syntax is not recommended

Closes whatwg#10237.
nt1m added a commit to nt1m/WebKit that referenced this issue Sep 3, 2024
https://bugs.webkit.org/show_bug.cgi?id=271248
rdar://125017653

Reviewed by NOBODY (OOPS!).

Follow:
- https://drafts.csswg.org/css-view-transitions-1/#page-visibility-change-steps
- w3c/csswg-drafts#9543
- w3c/csswg-drafts#10815

* LayoutTests/TestExpectations:
* LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/transition-in-hidden-page-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/transition-in-hidden-page.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/window-resize-aborts-transition-before-ready.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/window-resize-aborts-transition.html:
* Source/WebCore/dom/Document.cpp:
(WebCore::Document::visibilityStateChanged): Make this more robust to allow unregistering clients while iterating.
(WebCore::Document::reveal):
(WebCore::Document::clearInboundViewTransitionParams):
(WebCore::Document::startViewTransition):
* Source/WebCore/dom/ViewTransition.cpp:
(WebCore::ViewTransition::ViewTransition):
(WebCore::ViewTransition::skipViewTransition):
(WebCore::ViewTransition::stop):
(WebCore::ViewTransition::visibilityStateChanged):
* Source/WebCore/dom/ViewTransition.h:
nt1m added a commit to nt1m/WebKit that referenced this issue Sep 3, 2024
https://bugs.webkit.org/show_bug.cgi?id=271248
rdar://125017653

Reviewed by NOBODY (OOPS!).

Follow:
- https://drafts.csswg.org/css-view-transitions-1/#page-visibility-change-steps
- w3c/csswg-drafts#9543
- w3c/csswg-drafts#10815

* LayoutTests/TestExpectations:
* LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/transition-in-hidden-page-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/transition-in-hidden-page.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/window-resize-aborts-transition-before-ready.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/window-resize-aborts-transition.html:
* Source/WebCore/dom/Document.cpp:
(WebCore::Document::visibilityStateChanged): Make this more robust to allow unregistering clients while iterating.
(WebCore::Document::reveal):
(WebCore::Document::clearInboundViewTransitionParams):
(WebCore::Document::startViewTransition):
* Source/WebCore/dom/ViewTransition.cpp:
(WebCore::ViewTransition::ViewTransition):
(WebCore::ViewTransition::skipViewTransition):
(WebCore::ViewTransition::stop):
(WebCore::ViewTransition::visibilityStateChanged):
* Source/WebCore/dom/ViewTransition.h:
nt1m added a commit to nt1m/WebKit that referenced this issue Sep 3, 2024
https://bugs.webkit.org/show_bug.cgi?id=271248
rdar://125017653

Reviewed by NOBODY (OOPS!).

Follow:
- https://drafts.csswg.org/css-view-transitions-1/#page-visibility-change-steps
- w3c/csswg-drafts#9543
- w3c/csswg-drafts#10815

* LayoutTests/TestExpectations:
* LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/transition-in-hidden-page-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/transition-in-hidden-page.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/window-resize-aborts-transition-before-ready.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/window-resize-aborts-transition.html:
* LayoutTests/platform/mac-wk2/TestExpectations: Remove duplicate test expectations to reduce confusion.
* Source/WebCore/dom/Document.cpp:
(WebCore::Document::visibilityStateChanged): Make this more robust to allow unregistering clients while iterating.
(WebCore::Document::reveal):
(WebCore::Document::clearInboundViewTransitionParams):
(WebCore::Document::startViewTransition):
* Source/WebCore/dom/ViewTransition.cpp:
(WebCore::ViewTransition::ViewTransition):
(WebCore::ViewTransition::skipViewTransition):
(WebCore::ViewTransition::stop):
(WebCore::ViewTransition::visibilityStateChanged):
* Source/WebCore/dom/ViewTransition.h:
nt1m added a commit to nt1m/WebKit that referenced this issue Sep 3, 2024
https://bugs.webkit.org/show_bug.cgi?id=271248
rdar://125017653

Reviewed by NOBODY (OOPS!).

Follow:
- https://drafts.csswg.org/css-view-transitions-1/#page-visibility-change-steps
- w3c/csswg-drafts#9543
- w3c/csswg-drafts#10815

* LayoutTests/TestExpectations:
* LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/transition-in-hidden-page-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/transition-in-hidden-page.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/window-resize-aborts-transition-before-ready.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/window-resize-aborts-transition.html:
* LayoutTests/platform/ios/TestExpectations:
* LayoutTests/platform/mac-wk2/TestExpectations: Remove duplicate test expectations to reduce confusion.
* LayoutTests/platform/wpe/TestExpectations:
* Source/WebCore/dom/Document.cpp:
(WebCore::Document::visibilityStateChanged): Make this more robust to allow unregistering clients while iterating.
(WebCore::Document::resolveViewTransitionRule):
(WebCore::Document::reveal):
(WebCore::Document::startViewTransition):
* Source/WebCore/dom/ViewTransition.cpp:
(WebCore::ViewTransition::ViewTransition):
(WebCore::ViewTransition::stop):
(WebCore::ViewTransition::visibilityStateChanged):
* Source/WebCore/dom/ViewTransition.h:
nt1m added a commit to nt1m/WebKit that referenced this issue Sep 3, 2024
https://bugs.webkit.org/show_bug.cgi?id=271248
rdar://125017653

Reviewed by NOBODY (OOPS!).

Follow:
- https://drafts.csswg.org/css-view-transitions-1/#page-visibility-change-steps
- w3c/csswg-drafts#9543

* LayoutTests/TestExpectations:
* LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/transition-in-hidden-page-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/transition-in-hidden-page.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/window-resize-aborts-transition-before-ready.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/window-resize-aborts-transition.html:
* LayoutTests/platform/ios/TestExpectations:
* LayoutTests/platform/mac-wk2/TestExpectations: Remove duplicate test expectations to reduce confusion.
* LayoutTests/platform/wpe/TestExpectations:
* Source/WebCore/dom/Document.cpp:
(WebCore::Document::visibilityStateChanged): Make this more robust to allow unregistering clients while iterating.
(WebCore::Document::resolveViewTransitionRule):
(WebCore::Document::reveal):
(WebCore::Document::startViewTransition):
* Source/WebCore/dom/ViewTransition.cpp:
(WebCore::ViewTransition::ViewTransition):
(WebCore::ViewTransition::stop):
(WebCore::ViewTransition::visibilityStateChanged):
* Source/WebCore/dom/ViewTransition.h:
webkit-commit-queue pushed a commit to nt1m/WebKit that referenced this issue Sep 3, 2024
https://bugs.webkit.org/show_bug.cgi?id=271248
rdar://125017653

Reviewed by Matt Woodrow.

Follow:
- https://drafts.csswg.org/css-view-transitions-1/#page-visibility-change-steps
- w3c/csswg-drafts#9543

* LayoutTests/TestExpectations:
* LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/transition-in-hidden-page-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/transition-in-hidden-page.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/window-resize-aborts-transition-before-ready.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/window-resize-aborts-transition.html:
* LayoutTests/platform/ios/TestExpectations:
* LayoutTests/platform/mac-wk2/TestExpectations: Remove duplicate test expectations to reduce confusion.
* LayoutTests/platform/wpe/TestExpectations:
* Source/WebCore/dom/Document.cpp:
(WebCore::Document::visibilityStateChanged): Make this more robust to allow unregistering clients while iterating.
(WebCore::Document::resolveViewTransitionRule):
(WebCore::Document::reveal):
(WebCore::Document::startViewTransition):
* Source/WebCore/dom/ViewTransition.cpp:
(WebCore::ViewTransition::ViewTransition):
(WebCore::ViewTransition::stop):
(WebCore::ViewTransition::visibilityStateChanged):
* Source/WebCore/dom/ViewTransition.h:

Canonical link: https://commits.webkit.org/283084@main
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
css-view-transitions-1 View Transitions; Bugs only
Projects
Status: Monday morning
Development

No branches or pull requests

3 participants