ARIA properties must work with <frame> or <iframe>

RESOLVED FIXED

Status

()

Core
Disability Access APIs
RESOLVED FIXED
10 years ago
10 years ago

People

(Reporter: Aaron Leventhal, Assigned: Aaron Leventhal)

Tracking

(Blocks: 1 bug, {access})

unspecified
access
Points:
---
Dependency tree / graph
Bug Flags:
blocking1.9 ?

Firefox Tracking Flags

(Not tracked)

Details

(Whiteboard: Needed for mashup use cases of ARIA, URL)

Attachments

(1 attachment, 3 obsolete attachments)

(Assignee)

Description

10 years ago
We need to investigate this. An <iframe> could represent an AJAX widget. The author of the widget may have put in some ARIA, but the user of the widgets may also wish to set them (e.g. labelledby). Possibly the properties should be combined or the outer properties should override the inner properties.
(Assignee)

Comment 1

10 years ago
Testcase of a listbox using an iframe:
http://www.mozilla.org/access/dhtml/listbox-in-iframe

Rules for dealing with iframes:
http://developer.mozilla.org/en/docs/ARIA_UA_Best_Practices#11.3.17_Documents.2C_Handling_.3Cframe.3Es_and_.3Ciframe.3Es
(Assignee)

Comment 2

10 years ago
Created attachment 308684 [details] [diff] [review]
WIP

Feedback on the rules I'm implementing would be great -- section 11.3.17 at:
http://developer.mozilla.org/en/docs/ARIA_UA_Best_Practices#11.3.17_Documents.2C_Handling_.3Cframe.3Es_and_.3Ciframe.3Es
(Assignee)

Comment 3

10 years ago
In addition the listbox ends up in the tab order twice -- I need to work on that in a separate bug.
(Assignee)

Comment 4

10 years ago
Created attachment 308937 [details] [diff] [review]
Described in comment

Changes by file:

Index: accessible/public/nsPIAccessible.idl
Add getARIAState() so that we can independently override built-in states after they have been calculated. First we will use the states from the <body> and then from the owner node on the outer doc.

Index: accessible/src/base/nsAccessibilityService.cpp
Use the ARIA role for document nodes

Index: accessible/src/base/nsAccessibilityUtils.cpp
New method to set container-foo object attributes appropriately for a parent chain within a single document.

Index: accessible/src/base/nsAccessible.cpp
1) GetRoleContent() -- only use <body>/<frameset> for HTML -- never the doc element
2) GetAttributes() -- allow array of preexisting attributes to be passed in as a starting point so that we can override doc accessible object attributes with that from frame/iframe. 
3) GetAttributesInternal() -- move GetLastEventAttributes() here. It doesn't need to be calculated twice. Also move container-foo object attribute calc here. We need special rules to deal with full parent chain, because outer docs override. Within the same doc inner nodes override.
4) GetARIAState() -- pass in previous state so we can modify and override states

Index: accessible/src/base/nsDocAccessible.cpp
1) GetName() -- Prefer name from outer node
2) GetValue() -- this is an MSAA hack -- move to MSAA code
3) SetRoleMapEntry() -- prefer role from outer node
4) GetDescription() -- prefer from outer node
5) GetARIAState() -- prefer ARIA state from outer node
6) GetAttributes() -- prefer ARIA object props from outer node
7) Init() -- ensure creation of parent and don't restrict role used by iframe

Index: accessible/src/base/nsOuterDocAccessible.cpp
Override GetAttributesInternal() so that only ARIA attributes done in nsAccessible::GetAttributes() get overriden

Index: accessible/src/base/nsRootAccessible.cpp
Allow aria-activedescendant on <body>

Index: accessible/src/msaa/nsAccessibleWrap.cpp
Return NULL and PR_FALSE if no value. This is what IE does -- we have that wrong.

Index: accessible/src/msaa/nsDocAccessibleWrap.cpp
Check for actual accessible value. If no value and we're some kind of doc, then use URL value hack.
Attachment #308684 - Attachment is obsolete: true
Attachment #308937 - Flags: review?(surkov.alexander)
(Assignee)

Updated

10 years ago
Flags: blocking1.9?
Whiteboard: Needed for mashup use cases of ARIA
(Assignee)

Comment 5

10 years ago
Created attachment 309171 [details] [diff] [review]
Updated to trunk, otherwise the same.
Attachment #308937 - Attachment is obsolete: true
Attachment #309171 - Flags: superreview?(ginn.chen)
Attachment #309171 - Flags: review?(surkov.alexander)
Attachment #308937 - Flags: review?(surkov.alexander)
(Assignee)

Comment 6

10 years ago
Created attachment 309182 [details] [diff] [review]
1)Move class object attr impl so doc can have it's own, 2) Fix DOCUMENT -> DIALOG in nsDocAccessibleWrap::get_accValue()
Attachment #309171 - Attachment is obsolete: true
Attachment #309182 - Flags: review?(surkov.alexander)
Attachment #309182 - Flags: review?(ginn.chen)
Attachment #309171 - Flags: superreview?(ginn.chen)
Attachment #309171 - Flags: review?(surkov.alexander)

Updated

10 years ago
Attachment #309182 - Flags: review?(ginn.chen) → review+
(Assignee)

Updated

10 years ago
Attachment #309182 - Flags: review?(surkov.alexander) → approval1.9?
Comment on attachment 309182 [details] [diff] [review]
1)Move class object attr impl so doc can have it's own, 2) Fix DOCUMENT -> DIALOG in nsDocAccessibleWrap::get_accValue()

a1.9+=damons
Attachment #309182 - Flags: approval1.9? → approval1.9+
(Assignee)

Updated

10 years ago
Status: NEW → RESOLVED
Last Resolved: 10 years ago
Resolution: --- → FIXED
(Assignee)

Updated

10 years ago
Depends on: 425125
You need to log in before you can comment on or make changes to this bug.