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

Modernize algorithms in "Algorithm" section #120

Merged
merged 1 commit into from
Mar 8, 2024

Conversation

rakuco
Copy link
Member

@rakuco rakuco commented Mar 8, 2024

The original main goal was to give a name to the existing algorithm that
used to run in the "next animation frame task" so that it could be
referenced in the upcoming WebDriver section, but "animation frame task" as
a concept did not exist, and one thing led to another and the final change
includes a better version of the original algorithms, but without any
user-visible changes.

This change borrows a lot of ideas from the Screen Orientation spec as of
its 2023-08-09 Editor's Draft.

Most important changes:

  • The "update the device posture information" algorithm was renamed to
    "calculate the device posture information" so that it returns a value
    instead of updating [[CurrentPosture]] directly -- that is done as task
    queued in the user interaction task source (more on this below).
  • Call the main algorithm "device posture change steps".
  • Merge the separate page visibility-related algorithm into the main one,
    and add the proper checks to it to ensure that documents whose visibility
    state is "hidden" are not updated and that calls to "update the device
    posture information" that result in the same value being stored do not
    fire any "change" events.
  • The "change" event is now queued to be fired in the user interaction task
    source so that the moment it is actually fired is more predictable (the
    "device posture change steps" are not running at any specific point of the
    HTML event loop).

While here: the definition of the onchange attribute was updated to
mention the current terms defined in the HTML spec, along with a proper
<dfn> for the event handler event type.

The language and the references used in the text have also been updated: we
no longer deal with browsing contexts, but with navigables; the
PAGE-VISIBILITY spec is no longer treated as a separate specification, as it
was merged into HTML a few years ago.

Related to #104. Fixes #95.


Preview | Diff

The original main goal was to give a name to the existing algorithm that
used to run in the "next animation frame task" so that it could be
referenced in the upcoming WebDriver section, but "animation frame task" as
a concept did not exist, and one thing led to another and the final change
includes a better version of the original algorithms, but without any
user-visible changes.

This change borrows a lot of ideas from the Screen Orientation spec as of
its 2023-08-09 Editor's Draft.

Most important changes:
- The "update the device posture information" algorithm was renamed to
  "calculate the device posture information" so that it returns a value
  instead of updating `[[CurrentPosture]]` directly -- that is done as task
  queued in the user interaction task source (more on this below).
- Call the main algorithm "device posture change steps".
- Merge the separate page visibility-related algorithm into the main one,
  and add the proper checks to it to ensure that documents whose visibility
  state is "hidden" are not updated and that calls to "update the device
  posture information" that result in the same value being stored do not
  fire any "change" events.
- The "change" event is now queued to be fired in the user interaction task
  source so that the moment it is actually fired is more predictable (the
  "device posture change steps" are not running at any specific point of the
  HTML event loop).

While here: the definition of the `onchange` attribute was updated to
mention the current terms defined in the HTML spec, along with a proper
`<dfn>` for the event handler event type.

The language and the references used in the text have also been updated: we
no longer deal with browsing contexts, but with navigables; the
PAGE-VISIBILITY spec is no longer treated as a separate specification, as it
was merged into HTML a few years ago.

Related to w3c#104. Fixes w3c#95.
@rakuco rakuco requested a review from darktears March 8, 2024 18:38
@rakuco rakuco merged commit d88a411 into w3c:gh-pages Mar 8, 2024
2 checks passed
@rakuco rakuco deleted the modernize-device-posture-algorithms branch March 8, 2024 18:59
rakuco added a commit to rakuco/device-posture that referenced this pull request Mar 11, 2024
Follow-up w3c#120. `disallowRecursion` is an optional boolean parameter
for the "device posture change steps" algorithm. Passing just `true`
or `false` in call sites is not very legible though, so follow the
suggestion from the Infa spec and pass the arguments as a named
parameter.
rakuco added a commit that referenced this pull request Mar 11, 2024
…lls (#128)

Follow-up #120. `disallowRecursion` is an optional boolean parameter
for the "device posture change steps" algorithm. Passing just `true`
or `false` in call sites is not very legible though, so follow the
suggestion from the Infa spec and pass the arguments as a named
parameter.
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.

Heads up: refs to pagevisibility about to be removed
2 participants