Closed Bug 998590 Opened 6 years ago Closed 8 months ago

expose heading level in acc layer based on outline depth not heading numeric value

Categories

(Core :: Disability Access APIs, defect)

x86_64
Windows 8.1
defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla71
Tracking Status
firefox71 --- fixed

People

(Reporter: faulkner.steve, Assigned: emilio)

References

Details

Attachments

(3 files)

Currently the HTML5 outline algorithm [1] is not implemented, I propose implementing and exposing as a DOM method (document.outline()) so developers and 3rd part software such as assistive technology can provide a document outline to users. 

The HTML5 outline algorithm is implemented in conformance checkers:
http://validator.w3.org/nu/ 
https://github.com/validator/

and browser extensions:
https://chrome.google.com/webstore/detail/html5-outliner/afoibpobokebhgfnknfndkgemglggomo?hl=en

[1] http://www.w3.org/html/wg/drafts/html/master/sections.html#outlines
related User Agent Accessibility Guideline criteria
Provide alternative views
http://www.w3.org/TR/UAAG20/#gl-alternative-views
Some background to this ticket, and how I think it should be repurposed to fix the more immediate issue https://code.google.com/p/chromium/issues/detail?id=365070#c2
i.e. implement 'heading role, with the aria-level property set to the element's outline depth' as per  
http://www.w3.org/html/wg/drafts/html/master/dom.html#sec-implicit-aria-semantics

Acc API mappings
http://rawgit.com/w3c/html-api-map/master/index.html#el-h1-h6

* MSAA + IAccessible2 *
Role:  IA2_ROLE_HEADING 
Object attributes:  level:<heading_level> 
Interfaces:  IAccessibleText2; IAccessibleHypertext2; 

*ATK*
Role:  ATK_ROLE_HEADING 
Object attributes:  level:<heading_level> 
Interfaces:  AtkText; AtkHypertext  

*AX*
AXRole: AXHeading 
AXSubrole: (nil) 
AXRoleDescription: "heading" 
Properties: Use AXLevel to expose the heading level
Summary: expose output of html5 outline algorithm as a DOM method → expose heading level in acc layer based on outline depth not heading numeric value
(In reply to steve faulkner from comment #0)
> Currently the HTML5 outline algorithm [1] is not implemented, I propose
> implementing and exposing as a DOM method (document.outline()) so developers
> and 3rd part software such as assistive technology can provide a document
> outline to users. 
> 
Note:

while dom api proposal is wider in scope, it would provide a more robust/useful implementation for acc tools and developers of all stripes.

Not all screen readers access the acc tree exposed via acc APIs, as I understand it chromevox is JS/DOm based, so exposing via MSAA/Ia2/STK/Ax acc APIs only, does not provide the ability for DOM based tools such as chromevox to access the output of a document outline exposed in the acc layer only.

Emilio, I propose we prototype the algorithm in https://github.com/whatwg/html/issues/5002, i.e.,

  • For h1, its level is the number of section/article/aside/nav ancestor elements + 1.
  • For hN with N in the range 2 to 6, inclusive, if their parent is hgroup, their level is the number of section/article/aside/nav ancestor elements + N.
  • For hN with N in the range 2 to 6, inclusive, if their parent is not hgroup, their level is N.

and enable that on Nightly (and maybe Dev?).

I think we want to wait with :heading/:heading() until it's a bit clearer what the syntax situation would look like for that and until there are more tests.

I'll take care of the intent to prototype.

Flags: needinfo?(emilio)
See Also: → 1588784

I don't think these need invalidation of any sort since they only depend on
ancestors, and we recreate accessibles when the element's ancestor chain changes.

Flags: needinfo?(emilio)
Pushed by ealvarez@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/0e06e454c8c8
Cleanup HTMLHeadingElement, and add HTMLHeadingElement::FromNode. r=bzbarsky
https://hg.mozilla.org/integration/autoland/rev/e46f94e12554
Factor out heading accessibility level into HTMLHeadingElement. r=MarcoZ
https://hg.mozilla.org/integration/autoland/rev/41b4f84dd944
Prototype accessibility level changes for headings behind a pref. r=MarcoZ
Assignee: nobody → emilio
You need to log in before you can comment on or make changes to this bug.