RESOLVED FIXED 146012
AX: ARIA 1.1 @aria-current
https://bugs.webkit.org/show_bug.cgi?id=146012
Summary AX: ARIA 1.1 @aria-current
Attachments
patch (28.35 KB, patch)
2015-08-31 11:38 PDT, Nan Wang
no flags
patch (25.86 KB, patch)
2015-08-31 12:54 PDT, Nan Wang
no flags
patch (35.26 KB, patch)
2015-09-09 17:47 PDT, Nan Wang
no flags
patch (35.26 KB, patch)
2015-09-09 17:54 PDT, Nan Wang
no flags
patch (35.06 KB, patch)
2015-09-09 18:24 PDT, Nan Wang
no flags
patch (34.82 KB, patch)
2015-09-11 16:11 PDT, Nan Wang
cfleizach: review+
patch (34.82 KB, patch)
2015-09-11 16:50 PDT, Nan Wang
no flags
example (1.76 KB, text/html)
2015-09-17 14:02 PDT, Nan Wang
no flags
Radar WebKit Bug Importer
Comment 1 2015-07-15 06:28:59 PDT
Nan Wang
Comment 2 2015-08-31 11:38:52 PDT
Nan Wang
Comment 3 2015-08-31 12:54:07 PDT
chris fleizach
Comment 4 2015-09-09 14:53:14 PDT
Comment on attachment 260310 [details] patch View in context: https://bugs.webkit.org/attachment.cgi?id=260310&action=review > Source/JavaScriptCore/ChangeLog:8 > + Updated inspector to support aria-current. we should add a WebINspector layout test for these changes too > Source/WebCore/accessibility/AccessibilityObject.cpp:1834 > + String currentStateValue = stripLeadingAndTrailingHTMLSpaces(getAttribute(aria_currentAttr)); we should have a unit test within our test that confirms extra white space is removed correctly thinks also like " page " > Source/WebCore/accessibility/AccessibilityObject.h:439 > +enum AccessibilityCurrentState { CurrentFalse, CurrentTrue, CurrentPage, CurrentStep, CurrentLocation, CurrentDate, CurrentTime }; I think "current" by itself is too vague to be shortened on its own. Maybe we should either call this ARIACurrent or ContainerCurrentItem > Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:2884 > + switch (currentState) { we can make this switch (m_object->currentState()) { > Source/WebInspectorUI/UserInterface/Views/DOMNodeDetailsSidebarPanel.js:352 > + if (accessibilityProperties.current === DOMAgent.AccessibilityPropertiesCurrent.True) seems like we should use a switch statement here > Source/WebInspectorUI/UserInterface/Views/DOMNodeDetailsSidebarPanel.js:353 > + current = WebInspector.UIString("Yes"); i think this should be "True" instead of Yes, because this is not a binary (yes/no) property but rather a multi-value thing where "true" is different from 'yes" > LayoutTests/ChangeLog:8 > + * accessibility/aria-current-expected.txt: Added. you probably need to add Skip to other TestExpectations and make bugs for Win and GTK to add support to query for aria-current
Nan Wang
Comment 5 2015-09-09 17:47:28 PDT
Nan Wang
Comment 6 2015-09-09 17:54:43 PDT
chris fleizach
Comment 7 2015-09-09 18:07:55 PDT
Comment on attachment 260895 [details] patch View in context: https://bugs.webkit.org/attachment.cgi?id=260895&action=review > Source/JavaScriptCore/inspector/protocol/DOM.json:83 > + { "name": "ARIACurrent", "type": "string", "optional": true, "enum": ["true", "false", "page", "step", "location", "date", "time"], "description": "Current item within a container or set of related elements." }, do we name any other properties with ARIA as the prefix in the node inspector? if not, we might as well leave just this string as "current"... i think internally and with the platform API we can leave it ARIACurrent, but node inspector can probably stick with "current"
Nan Wang
Comment 8 2015-09-09 18:09:10 PDT
(In reply to comment #7) > Comment on attachment 260895 [details] > patch > > View in context: > https://bugs.webkit.org/attachment.cgi?id=260895&action=review > > > Source/JavaScriptCore/inspector/protocol/DOM.json:83 > > + { "name": "ARIACurrent", "type": "string", "optional": true, "enum": ["true", "false", "page", "step", "location", "date", "time"], "description": "Current item within a container or set of related elements." }, > > do we name any other properties with ARIA as the prefix in the node > inspector? > if not, we might as well leave just this string as "current"... i think > internally and with the platform API we can leave it ARIACurrent, but node > inspector can probably stick with "current" Okay, will make the change
Nan Wang
Comment 9 2015-09-09 18:24:17 PDT
Nan Wang
Comment 10 2015-09-10 14:20:27 PDT
Comment on attachment 260897 [details] patch Obsolete the patch since we are going for another approach that the current item object should also be exposed to its parent.
Darin Adler
Comment 11 2015-09-11 09:38:55 PDT
Comment on attachment 260897 [details] patch View in context: https://bugs.webkit.org/attachment.cgi?id=260897&action=review > Source/WebCore/accessibility/AccessibilityObject.cpp:1830 > + String falseValue = ASCIILiteral("false"); > + String pageValue = ASCIILiteral("page"); > + String stepValue = ASCIILiteral("step"); > + String locationValue = ASCIILiteral("location"); > + String dateValue = ASCIILiteral("date"); > + String timeValue = ASCIILiteral("time"); Putting these into local String variables is not helpful. We actually miss the opportunity to get the optimized version of == and waste time every time this function is called, allocating and deallocating 6 extra strings. I suggest just comparing directly with the string literals, or using locals of type const char[] or const char*.
Nan Wang
Comment 12 2015-09-11 16:11:15 PDT
Created attachment 261023 [details] patch The exposing current item to parent approach has some complex edge cases that need to be taken care of. Will go for the original proposal for now.
chris fleizach
Comment 13 2015-09-11 16:44:54 PDT
Comment on attachment 261023 [details] patch View in context: https://bugs.webkit.org/attachment.cgi?id=261023&action=review > Source/WebCore/accessibility/AccessibilityObject.cpp:1825 > + // aria-current can return false (default), true, page, step, location, date or time end this line with a period because it's a full sentence > Source/WebCore/accessibility/AccessibilityObject.cpp:1843 > + // Any value not included in the list of allowed values should be treated as "true" ditto about period
Nan Wang
Comment 14 2015-09-11 16:50:45 PDT
Created attachment 261031 [details] patch Added periods to comments.
WebKit Commit Bot
Comment 15 2015-09-11 17:47:32 PDT
Comment on attachment 261031 [details] patch Clearing flags on attachment: 261031 Committed r189642: <http://trac.webkit.org/changeset/189642>
WebKit Commit Bot
Comment 16 2015-09-11 17:47:39 PDT
All reviewed patches have been landed. Closing bug.
Nan Wang
Comment 17 2015-09-17 14:02:21 PDT
Created attachment 261418 [details] example Added example for "aria-current".
Joseph Scheuhammer
Comment 18 2016-01-15 10:57:18 PST
Question: do the changes here incur a notification? I've looked over the code, and don't see one, but I may have missed it. The other platforms -- UIA, IA2, ATK-AT-SPI -- do provide an event when the value of aria-current changes. See: http://rawgit.com/w3c/aria/master/core-aam/core-aam.html#event-aria-current Can someone confirm what AXAPI does in this regard? Thanks.
Nan Wang
Comment 19 2016-01-15 11:33:54 PST
(In reply to comment #18) > Question: do the changes here incur a notification? I've looked over the > code, and don't see one, but I may have missed it. > > The other platforms -- UIA, IA2, ATK-AT-SPI -- do provide an event when the > value of aria-current changes. See: > > http://rawgit.com/w3c/aria/master/core-aam/core-aam.html#event-aria-current > > Can someone confirm what AXAPI does in this regard? Thanks. There's no specific notification set up for aria-current changes. But it will incur the AXAriaAttributeChanged notification by default.
Joseph Scheuhammer
Comment 20 2016-01-18 11:31:19 PST
(In reply to comment #19) > (In reply to comment #18) > > Question: do the changes here incur a notification? > > ... > > > > There's no specific notification set up for aria-current changes. But it > will incur the AXAriaAttributeChanged notification by default. Thanks. I assume that AXAriaAttributeChanged is a general notification of when any aria-* attribute changes. Is the recommendation that the mapping specification explicitly state that AXAriaAttributeChanged is the appropriate notification in the case of changes to aria-current? (By "mapping specification", I mean these entries: http://rawgit.com/w3c/aria/master/core-aam/core-aam.html#event-aria-current)
Nan Wang
Comment 21 2016-01-20 10:07:44 PST
(In reply to comment #20) > (In reply to comment #19) > > (In reply to comment #18) > > > Question: do the changes here incur a notification? > > > ... > > > > > > > There's no specific notification set up for aria-current changes. But it > > will incur the AXAriaAttributeChanged notification by default. > > Thanks. > > I assume that AXAriaAttributeChanged is a general notification of when any > aria-* attribute changes. > > Is the recommendation that the mapping specification explicitly state that > AXAriaAttributeChanged is the appropriate notification in the case of > changes to aria-current? > > (By "mapping specification", I mean these entries: > http://rawgit.com/w3c/aria/master/core-aam/core-aam.html#event-aria-current) There's no explicit statement for that but it's appropriate to add that notification to almost all of the attributes listed. Many of the entries just list "Not Mapped", however, "No Notification" is a more accurate phrasing.
Joseph Scheuhammer
Comment 22 2016-01-25 10:19:51 PST
(In reply to comment #21) > > > ... > > Thanks. > > > > I assume that AXAriaAttributeChanged is a general notification of when any > > aria-* attribute changes. > > > > Is the recommendation that the mapping specification explicitly state that > > AXAriaAttributeChanged is the appropriate notification in the case of > > changes to aria-current? > > > > (By "mapping specification", I mean these entries: > > http://rawgit.com/w3c/aria/master/core-aam/core-aam.html#event-aria-current) > > There's no explicit statement for that but it's appropriate to add that > notification to almost all of the attributes listed. > > Many of the entries just list "Not Mapped", however, "No Notification" is a > more accurate phrasing. The phrase, "Not Mapped" is also used for the other platforms, e.g., IAccessible2. There "No Event" is the more accurate phrase. It might be a good idea to change them both. For now, I'm going add "No Notification" for aria-current changes for AXAPI. Thanks again.
Note You need to log in before you can comment on or make changes to this bug.