diff --git a/source b/source index e8c4389d51c..1243870d0fe 100644 --- a/source +++ b/source @@ -80214,10 +80214,10 @@ dictionary ToggleEventInit : EventInit {

Sequential focus navigation

-

Each Document has a sequential focus navigation order, which orders some - or all of the focusable areas in the Document - relative to each other. Its contents and ordering are given by the flattened - tabindex-ordered focus navigation scope of the Document.

+

Each Document has a sequential focus navigation order, which orders + some or all of the focusable areas in the + Document relative to each other. Its contents and ordering are given by the + flattened tabindex-ordered focus navigation scope of the Document.

Per the rules defining the flattened tabindex-ordered focus navigation scope, the ordering is not necessarily related to the tree order of the @@ -80237,10 +80237,21 @@ dictionary ToggleEventInit : EventInit { point to the target element when navigating to a fragment.

+

A sequential focus direction is one of two possible values: "forward", or "backward". They are used in the below algorithms + to describe the direction in which sequential focus travels at the user's request.

+ +

A selection mechanism is one of two possible values: "DOM", or + "sequential". They are used to + describe how the sequential navigation search algorithm finds the focusable + area it returns.

+

When the user requests that focus move from the currently focused area of a top-level - traversable to the next or previous focusable area (e.g. as the default + traversable to the next or previous focusable area (e.g., as the default action of pressing the tab key), or when the user requests that focus - sequentially move to a top-level traversable in the first place (e.g. from the + sequentially move to a top-level traversable in the first place (e.g., from the browser's location bar), the user agent must use the following algorithm:

    @@ -80254,26 +80265,29 @@ dictionary ToggleEventInit : EventInit { focus navigation starting point instead.

  1. -

    Let direction be forward if the user requested the next - control, and backward if the user requested the previous control.

    +

    Let direction be "forward" if the + user requested the next control, and "backward" if the user requested the previous + control.

    -

    Typically, pressing tab requests the next control, and pressing - shift + tab requests the previous control.

    +

    Typically, pressing tab requests the next control, and + pressing shift + tab requests the previous control.

  2. -

    Loop: Let selection mechanism be sequential if the starting - point is a navigable or if starting point is in its - Document's sequential focus navigation order.

    +

    Loop: Let selection mechanism be "sequential" if starting point is a + navigable or if starting point is in its Document's + sequential focus navigation order.

    -

    Otherwise, starting point is not in its Document's - sequential focus navigation order; let selection mechanism be - DOM.

    +

    Otherwise, starting point is not in its Document's sequential + focus navigation order; let selection mechanism be "DOM".

  3. Let candidate be the result of running the sequential navigation search algorithm with starting point, direction, and selection - mechanism as the arguments.

  4. + mechanism.

  5. If candidate is not null, then run the focusing steps for candidate and return.

  6. @@ -80311,23 +80325,26 @@ dictionary ToggleEventInit : EventInit {
-

The sequential navigation search algorithm consists of the following steps. This - algorithm takes three arguments: starting point, direction, - and selection mechanism.

+

The sequential navigation search algorithm, given a focusable area + starting point, sequential focus direction direction, and + selection mechanism selection mechanism, consists of the following steps. + They return a focusable area-or-null.

  1. Pick the appropriate cell from the following table, and follow the instructions in that cell.

    -

    The appropriate cell is the one that is from the column whose header describes direction and from the first row whose header describes starting point and selection mechanism.

    +

    The appropriate cell is the one that is from the column whose header describes + direction and from the first row whose header describes starting point and + selection mechanism.

    - + + -
    - direction is forward - direction is backward + direction is "forward" + direction is "backward"
    starting point is a navigable @@ -80338,45 +80355,54 @@ dictionary ToggleEventInit : EventInit { in starting point's active document, if any; or else null
    selection mechanism is DOM + selection mechanism is "DOM" + +

    Let candidate be the suitable sequentially focusable area, that + appears nearest after starting point in starting point's + Document, in shadow-including tree order, if any; or else null

    + +

    In this case, starting point does not necessarily belong to its + Document's sequential focus navigation order, so we'll select the + suitable item from that list that comes after starting point in + shadow-including tree order.

    +
    Let candidate be the suitable sequentially focusable area, that + appears nearest before starting point in starting point's + Document, in shadow-including tree order, if any; or else null +
    selection mechanism is "sequential" Let candidate be the first suitable sequentially focusable area - in the home document following starting point, if any; or else null + after starting point, in starting point's Document's + sequential focus navigation order, if any; or else null Let candidate be the last suitable sequentially focusable area - in the home document preceding starting point, if any; or else null -
    selection mechanism is sequential - Let candidate be the first suitable sequentially focusable area in the home sequential focus navigation order following starting point, if any; or else null - Let candidate be the last suitable sequentially focusable area in the home sequential focus navigation order preceding starting point, if any; or else null - + before starting point, in starting point's Document's + sequential focus navigation order, if any; or else null

    A suitable sequentially focusable area is a focusable area whose DOM anchor is not inert and is sequentially focusable.

    - -

    The home document is the Document to which starting point - belongs.

    - -

    The home sequential focus navigation order is the sequential focus - navigation order to which starting point belongs.

    - -

    The home sequential focus navigation order is the home - document's sequential focus navigation order, but is only used when the - starting point is in that sequential focus navigation order - (when it's not, selection mechanism will be DOM).

  2. If candidate is a navigable container with a non-null content - navigable, then let new candidate be the result of running the - sequential navigation search algorithm with candidate's content - navigable as the first argument, direction as the second, and - sequential as the third.

    - -

    If new candidate is null, then let starting point - be candidate, and return to the top of this algorithm. Otherwise, let - candidate be new candidate.

    + navigable, then:

    + +
      +
    1. Let recursive candidate be the result of running the sequential + navigation search algorithm with candidate's content navigable, + direction, and "sequential".

    2. + +
    3. If recursive candidate is null, then return the result of running the + sequential navigation search algorithm with candidate, + direction, and selection mechanism.

    4. + +
    5. Otherwise, set candidate to recursive candidate.

    6. +
  3. Return candidate.