+2013-09-10 Chris Fleizach <cfleizach@apple.com>
+
+ AX: Expose DOM ID and ClassList to AX APIs for automation and AT element hashes
+ https://bugs.webkit.org/show_bug.cgi?id=120552
+
+ Reviewed by Darin Adler.
+
+ Tests that output all attributes need to be updated, since the DOM ID and DOM
+ class list are new on all elements.
+
+ * accessibility/transformed-element-expected.txt:
+ * platform/mac/accessibility/aria-columnrowheaders-expected.txt:
+ * platform/mac/accessibility/bounds-for-range-expected.txt:
+ * platform/mac/accessibility/document-attributes-expected.txt:
+ * platform/mac/accessibility/document-links-expected.txt:
+ * platform/mac/accessibility/id-class-attributes-expected.txt: Added.
+ * platform/mac/accessibility/id-class-attributes.html: Added.
+ * platform/mac/accessibility/image-link-expected.txt:
+ * platform/mac/accessibility/image-map2-expected.txt:
+ * platform/mac/accessibility/internal-link-anchors-expected.txt:
+ * platform/mac/accessibility/internal-link-anchors2-expected.txt:
+ * platform/mac/accessibility/lists-expected.txt:
+ * platform/mac/accessibility/plugin-expected.txt:
+ * platform/mac/accessibility/radio-button-group-members-expected.txt:
+ * platform/mac/accessibility/table-attributes-expected.txt:
+ * platform/mac/accessibility/table-cell-spans-expected.txt:
+ * platform/mac/accessibility/table-cells-expected.txt:
+ * platform/mac/accessibility/table-detection-expected.txt:
+ * platform/mac/accessibility/table-one-cell-expected.txt:
+ * platform/mac/accessibility/table-sections-expected.txt:
+ * platform/mac/accessibility/table-with-aria-role-expected.txt:
+ * platform/mac/accessibility/table-with-rules-expected.txt:
+
2013-09-10 Denis Nomiyama <d.nomiyama@samsung.com>
[GTK] accessibility/loading-iframe-sends-notification.html is failing
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXGroup>
AXLanguage:
+AXDOMIdentifier: hiddenDiv
+AXDOMClassList: <array of size 0>
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement:
AXLanguage:
+AXDOMIdentifier: test
+AXDOMClassList:
AXRowIndexRange: NSRange: {0, 1}
AXColumnIndexRange: NSRange: {0, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement:
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList:
AXRowIndexRange: NSRange: {0, 1}
AXColumnIndexRange: NSRange: {1, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement:
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList:
AXRowIndexRange: NSRange: {0, 1}
AXColumnIndexRange: NSRange: {2, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement:
AXLanguage:
+AXDOMIdentifier: obj1
+AXDOMClassList:
AXRowIndexRange: NSRange: {1, 1}
AXColumnIndexRange: NSRange: {0, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement:
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList:
AXRowIndexRange: NSRange: {2, 1}
AXColumnIndexRange: NSRange: {0, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXStaticText>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXARIABusy: 0
----------------------
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXWebArea>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXLinkUIElements: <array of size 0>
AXLoaded: 1
AXLayoutCount: 2
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXLink>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXURL: http://www.apple.com/
AXAccessKey: (null)
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXLink>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXURL: http://www.apple.com/
AXAccessKey: (null)
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXLink: 'link 3'>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXURL: http://webkit.org/
AXAccessKey: (null)
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXLink: 'link 4'>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXURL: LayoutTests/platform/mac/accessibility/document-links.html#asdf
AXAccessKey: (null)
AXARIABusy: 0
--- /dev/null
+content
+This tests that the DOM id and the DOM class list can be retrieved
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS item.isAttributeSupported('AXDOMIdentifier') is true
+PASS item.stringAttributeValue('AXDOMIdentifier') is 'item1'
+PASS item.isAttributeSupported('AXDOMClassList') is true
+PASS item.classList is 'test, test2'
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../../../resources/js-test-pre.js"></script>
+<style>
+.test {
+ font-size: 100px;
+};
+
+.test2 {
+ font-weight: bold;
+};
+
+</style>
+</head>
+<body id="body">
+
+<div id="item1" class="test test2">content</div>
+
+<p id="description"></p>
+<div id="console"></div>
+
+<script>
+
+ description("This tests that the DOM id and the DOM class list can be retrieved");
+
+ if (window.accessibilityController) {
+
+ var item = accessibilityController.accessibleElementById("item1");
+ shouldBeTrue("item.isAttributeSupported('AXDOMIdentifier')");
+ shouldBe("item.stringAttributeValue('AXDOMIdentifier')", "'item1'");
+
+ shouldBeTrue("item.isAttributeSupported('AXDOMClassList')");
+ shouldBe("item.classList", "'test, test2'");
+ }
+
+</script>
+
+<script src="../../../resources/js-test-post.js"></script>
+</body>
+</html>
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXLink: 'Delicious cake'>
AXLanguage:
+AXDOMIdentifier: test
+AXDOMClassList: <array of size 0>
AXURL: http://www.wowhead.com/?item=33924
AXAccessKey: (null)
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXImage>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXURL: LayoutTests/accessibility/resources/cake.png
AXAccessKey: (null)
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXGroup>
AXLanguage:
+AXDOMIdentifier: result
+AXDOMClassList: <array of size 0>
AXARIABusy: 0
------------
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXLink>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXURL: http://www.apple.com/
AXAccessKey: (null)
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXLink>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXURL: http://www.apple.com/
AXAccessKey: (null)
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXStaticText>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXARIABusy: 0
------------
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXHeading: '[ edit ] Tourette syndrome'>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXARIABusy: 0
------------
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXGroup>
AXLanguage:
+AXDOMIdentifier: bottom2
+AXDOMClassList: <array of size 0>
AXARIABusy: 0
------------
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXGroup>
AXLanguage:
+AXDOMIdentifier: bottom2
+AXDOMClassList: <array of size 0>
AXARIABusy: 0
------------
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXList>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXSelectedChildren: (null)
AXVisibleChildren: <array of size 2>
AXOrientation: AXVerticalOrientation
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXList>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXSelectedChildren: (null)
AXVisibleChildren: <array of size 2>
AXOrientation: AXVerticalOrientation
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXList>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXSelectedChildren: (null)
AXVisibleChildren: <array of size 5>
AXOrientation: AXVerticalOrientation
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXGroup>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXTitleUIElement: (null)
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXGroup>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXTitleUIElement: (null)
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXGroup: 'test 1'>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXTitleUIElement: (null)
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXGroup: 'test 2'>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXTitleUIElement: (null)
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXGroup: 'test 1'>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXTitleUIElement: (null)
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXGroup: 'test 2'>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXTitleUIElement: (null)
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXGroup>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXARIABusy: 0
------------
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXGroup>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXARIABusy: 0
------------
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXGroup>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXARIABusy: 0
------------
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXGroup>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXARIABusy: 0
------------
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXGroup>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXARIABusy: 0
------------
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXGroup>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXTitleUIElement: (null)
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXRadioButton>
AXLanguage:
+AXDOMIdentifier: test1
+AXDOMClassList: <array of size 0>
AXTitleUIElement: (null)
AXAccessKey: (null)
AXRequired: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXRadioButton>
AXLanguage:
+AXDOMIdentifier: test1
+AXDOMClassList: <array of size 0>
AXTitleUIElement: (null)
AXAccessKey: (null)
AXRequired: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXRadioButton>
AXLanguage:
+AXDOMIdentifier: test1
+AXDOMClassList: <array of size 0>
AXTitleUIElement: (null)
AXAccessKey: (null)
AXRequired: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXRadioButton>
AXLanguage:
+AXDOMIdentifier: test2
+AXDOMClassList: <array of size 0>
AXTitleUIElement: (null)
AXAccessKey: (null)
AXRequired: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXRadioButton>
AXLanguage:
+AXDOMIdentifier: test2
+AXDOMClassList: <array of size 0>
AXTitleUIElement: (null)
AXAccessKey: (null)
AXRequired: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXRadioButton: 'Yes'>
AXLanguage:
+AXDOMIdentifier: test3
+AXDOMClassList: <array of size 0>
AXTitleUIElement: (null)
AXAccessKey: (null)
AXRequired: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXRadioButton: 'No'>
AXLanguage:
+AXDOMIdentifier: test3_1
+AXDOMClassList: <array of size 0>
AXTitleUIElement: (null)
AXAccessKey: (null)
AXRequired: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXRadioButton>
AXLanguage:
+AXDOMIdentifier: test4
+AXDOMClassList: <array of size 0>
AXTitleUIElement: (null)
AXAccessKey: (null)
AXRequired: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 1>
AXRowIndexRange: NSRange: {0, 2}
AXColumnIndexRange: NSRange: {0, 2}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 1>
AXRowIndexRange: NSRange: {0, 2}
AXColumnIndexRange: NSRange: {0, 2}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 1>
AXRowIndexRange: NSRange: {0, 2}
AXColumnIndexRange: NSRange: {2, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 1>
AXRowIndexRange: NSRange: {0, 1}
AXColumnIndexRange: NSRange: {3, 2}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 1>
AXRowIndexRange: NSRange: {0, 1}
AXColumnIndexRange: NSRange: {3, 2}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 1>
AXRowIndexRange: NSRange: {0, 2}
AXColumnIndexRange: NSRange: {0, 2}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 1>
AXRowIndexRange: NSRange: {1, 1}
AXColumnIndexRange: NSRange: {3, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXRowIndexRange: NSRange: {2, 2}
AXColumnIndexRange: NSRange: {0, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXRowIndexRange: NSRange: {3, 1}
AXColumnIndexRange: NSRange: {1, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXColumn>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXIndex: 0
AXHeader: <AXColumn>
AXRows: <array of size 2>
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXColumn>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXIndex: 1
AXHeader: <AXColumn>
AXRows: <array of size 3>
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXColumn>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXIndex: 2
AXHeader: <AXColumn>
AXRows: <array of size 3>
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXColumn>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXIndex: 3
AXHeader: <AXColumn>
AXRows: <array of size 4>
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXColumn>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXIndex: 4
AXHeader: <AXColumn>
AXRows: <array of size 4>
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXRow>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXIndex: 0
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXRow>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXIndex: 1
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXRow>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXIndex: 2
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXRow>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXIndex: 3
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 1>
AXRowIndexRange: NSRange: {0, 2}
AXColumnIndexRange: NSRange: {0, 2}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 1>
AXRowIndexRange: NSRange: {0, 2}
AXColumnIndexRange: NSRange: {2, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 1>
AXRowIndexRange: NSRange: {0, 1}
AXColumnIndexRange: NSRange: {3, 2}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 1>
AXRowIndexRange: NSRange: {1, 1}
AXColumnIndexRange: NSRange: {3, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 1>
AXRowIndexRange: NSRange: {1, 1}
AXColumnIndexRange: NSRange: {4, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXRowIndexRange: NSRange: {2, 2}
AXColumnIndexRange: NSRange: {0, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXRowIndexRange: NSRange: {2, 1}
AXColumnIndexRange: NSRange: {1, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXRowIndexRange: NSRange: {2, 1}
AXColumnIndexRange: NSRange: {2, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXRowIndexRange: NSRange: {2, 1}
AXColumnIndexRange: NSRange: {3, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXRowIndexRange: NSRange: {2, 1}
AXColumnIndexRange: NSRange: {4, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXRowIndexRange: NSRange: {3, 1}
AXColumnIndexRange: NSRange: {1, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXRowIndexRange: NSRange: {3, 1}
AXColumnIndexRange: NSRange: {2, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXRowIndexRange: NSRange: {3, 1}
AXColumnIndexRange: NSRange: {3, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXRowIndexRange: NSRange: {3, 1}
AXColumnIndexRange: NSRange: {4, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXGroup>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXARIABusy: 0
------------
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 1>
AXRowIndexRange: NSRange: {0, 2}
AXColumnIndexRange: NSRange: {0, 2}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 1>
AXRowIndexRange: NSRange: {0, 2}
AXColumnIndexRange: NSRange: {0, 2}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 1>
AXRowIndexRange: NSRange: {2, 2}
AXColumnIndexRange: NSRange: {0, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 1>
AXRowIndexRange: NSRange: {2, 2}
AXColumnIndexRange: NSRange: {0, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 1>
AXRowIndexRange: NSRange: {2, 1}
AXColumnIndexRange: NSRange: {3, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 1>
AXRowIndexRange: NSRange: {0, 2}
AXColumnIndexRange: NSRange: {0, 2}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 1>
AXRowIndexRange: NSRange: {1, 1}
AXColumnIndexRange: NSRange: {3, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 1>
AXRowIndexRange: NSRange: {0, 2}
AXColumnIndexRange: NSRange: {0, 2}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXRowIndexRange: NSRange: {2, 1}
AXColumnIndexRange: NSRange: {2, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXRowIndexRange: NSRange: {5, 1}
AXColumnIndexRange: NSRange: {3, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXTable>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXRows: <array of size 2>
AXVisibleRows: <array of size 2>
AXColumns: <array of size 2>
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXTable>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXRows: <array of size 1>
AXVisibleRows: <array of size 1>
AXColumns: <array of size 2>
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXGroup>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXTitleUIElement: (null)
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXTable>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXRows: <array of size 1>
AXVisibleRows: <array of size 1>
AXColumns: <array of size 2>
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXTable>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXRows: <array of size 1>
AXVisibleRows: <array of size 1>
AXColumns: <array of size 2>
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXTable>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXRows: <array of size 2>
AXVisibleRows: <array of size 2>
AXColumns: <array of size 2>
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXTable>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXRows: <array of size 1>
AXVisibleRows: <array of size 1>
AXColumns: <array of size 2>
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXGroup>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXTitleUIElement: (null)
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXGroup>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXTitleUIElement: (null)
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXTable>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXRows: <array of size 1>
AXVisibleRows: <array of size 1>
AXColumns: <array of size 2>
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXGroup>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 1>
AXTitleUIElement: (null)
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXGroup>
AXLanguage:
+AXDOMIdentifier: nmb
+AXDOMClassList: <array of size 1>
AXTitleUIElement: (null)
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXTable>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXRows: <array of size 1>
AXVisibleRows: <array of size 1>
AXColumns: <array of size 2>
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXTable>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXRows: <array of size 2>
AXVisibleRows: <array of size 2>
AXColumns: <array of size 2>
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXGroup>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXTitleUIElement: (null)
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXTable>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXRows: <array of size 3>
AXVisibleRows: <array of size 3>
AXColumns: <array of size 2>
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXTable>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXRows: <array of size 3>
AXVisibleRows: <array of size 3>
AXColumns: <array of size 2>
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXTable>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXRows: <array of size 2>
AXVisibleRows: <array of size 2>
AXColumns: <array of size 2>
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXTable>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXRows: <array of size 24>
AXVisibleRows: <array of size 24>
AXColumns: <array of size 1>
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXGroup>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXRowIndexRange: NSRange: {0, 1}
AXColumnIndexRange: NSRange: {0, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXRowIndexRange: NSRange: {0, 1}
AXColumnIndexRange: NSRange: {1, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXRowIndexRange: NSRange: {0, 1}
AXColumnIndexRange: NSRange: {2, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXRowIndexRange: NSRange: {0, 1}
AXColumnIndexRange: NSRange: {0, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXRowIndexRange: NSRange: {1, 1}
AXColumnIndexRange: NSRange: {0, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXRowIndexRange: NSRange: {2, 1}
AXColumnIndexRange: NSRange: {0, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXColumn>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXIndex: 0
AXHeader: <AXColumn>
AXRows: <array of size 4>
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXColumn>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXIndex: 1
AXHeader: <AXColumn>
AXRows: <array of size 4>
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXColumn>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXIndex: 2
AXHeader: <AXColumn>
AXRows: <array of size 4>
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXRow>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXIndex: 0
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXRow>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXIndex: 1
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXRow>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXIndex: 2
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXRow>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXIndex: 3
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXRowIndexRange: NSRange: {0, 1}
AXColumnIndexRange: NSRange: {0, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXRowIndexRange: NSRange: {0, 1}
AXColumnIndexRange: NSRange: {1, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXRowIndexRange: NSRange: {0, 1}
AXColumnIndexRange: NSRange: {2, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXRowIndexRange: NSRange: {1, 1}
AXColumnIndexRange: NSRange: {0, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXRowIndexRange: NSRange: {1, 1}
AXColumnIndexRange: NSRange: {1, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXRowIndexRange: NSRange: {1, 1}
AXColumnIndexRange: NSRange: {2, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXRowIndexRange: NSRange: {2, 1}
AXColumnIndexRange: NSRange: {0, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXRowIndexRange: NSRange: {2, 1}
AXColumnIndexRange: NSRange: {1, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXRowIndexRange: NSRange: {2, 1}
AXColumnIndexRange: NSRange: {2, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXRowIndexRange: NSRange: {3, 1}
AXColumnIndexRange: NSRange: {0, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXRowIndexRange: NSRange: {3, 1}
AXColumnIndexRange: NSRange: {1, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXRowIndexRange: NSRange: {3, 1}
AXColumnIndexRange: NSRange: {2, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXGroup>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXARIABusy: 0
------------
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXRowIndexRange: NSRange: {0, 1}
AXColumnIndexRange: NSRange: {0, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXRowIndexRange: NSRange: {0, 1}
AXColumnIndexRange: NSRange: {1, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXRowIndexRange: NSRange: {0, 1}
AXColumnIndexRange: NSRange: {2, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXRowIndexRange: NSRange: {0, 1}
AXColumnIndexRange: NSRange: {0, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXRowIndexRange: NSRange: {1, 1}
AXColumnIndexRange: NSRange: {0, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXRowIndexRange: NSRange: {2, 1}
AXColumnIndexRange: NSRange: {0, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXColumn>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXIndex: 0
AXHeader: <AXColumn>
AXRows: <array of size 4>
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXColumn>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXIndex: 1
AXHeader: <AXColumn>
AXRows: <array of size 4>
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXColumn>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXIndex: 2
AXHeader: <AXColumn>
AXRows: <array of size 4>
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXRow>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXIndex: 0
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXRow>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXIndex: 1
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXRow>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXIndex: 2
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXRow>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXIndex: 3
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXRowIndexRange: NSRange: {0, 1}
AXColumnIndexRange: NSRange: {0, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXRowIndexRange: NSRange: {0, 1}
AXColumnIndexRange: NSRange: {1, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXRowIndexRange: NSRange: {0, 1}
AXColumnIndexRange: NSRange: {2, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXRowIndexRange: NSRange: {1, 1}
AXColumnIndexRange: NSRange: {0, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXRowIndexRange: NSRange: {1, 1}
AXColumnIndexRange: NSRange: {1, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXRowIndexRange: NSRange: {1, 1}
AXColumnIndexRange: NSRange: {2, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXRowIndexRange: NSRange: {2, 1}
AXColumnIndexRange: NSRange: {0, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXRowIndexRange: NSRange: {2, 1}
AXColumnIndexRange: NSRange: {1, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXRowIndexRange: NSRange: {2, 1}
AXColumnIndexRange: NSRange: {2, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXRowIndexRange: NSRange: {3, 1}
AXColumnIndexRange: NSRange: {0, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXRowIndexRange: NSRange: {3, 1}
AXColumnIndexRange: NSRange: {1, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXCell>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXRowIndexRange: NSRange: {3, 1}
AXColumnIndexRange: NSRange: {2, 1}
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXGroup>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXARIABusy: 0
------------
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXButton: 'test test test test test test'>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXTitleUIElement: (null)
AXAccessKey: (null)
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXTable>
AXLanguage:
+AXDOMIdentifier: testTable2
+AXDOMClassList: <array of size 0>
AXRows: <array of size 1>
AXVisibleRows: <array of size 1>
AXColumns: <array of size 2>
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXTable>
AXLanguage:
+AXDOMIdentifier: testTable3
+AXDOMClassList: <array of size 0>
AXRows: <array of size 1>
AXVisibleRows: <array of size 1>
AXColumns: <array of size 2>
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXTable>
AXLanguage:
+AXDOMIdentifier: testTable4
+AXDOMClassList: <array of size 0>
AXRows: <array of size 1>
AXVisibleRows: <array of size 1>
AXColumns: <array of size 2>
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXGroup>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXTitleUIElement: (null)
AXARIABusy: 0
AXBlockQuoteLevel: 0
AXTopLevelUIElement: <AXGroup>
AXLanguage:
+AXDOMIdentifier:
+AXDOMClassList: <array of size 0>
AXTitleUIElement: (null)
AXARIABusy: 0
+2013-09-10 Chris Fleizach <cfleizach@apple.com>
+
+ AX: Expose DOM ID and ClassList to AX APIs for automation and AT element hashes
+ https://bugs.webkit.org/show_bug.cgi?id=120552
+
+ Reviewed by Darin Adler.
+
+ Add Mac support for exposing the DOM ID and DOM class list so that accessibility
+ clients can leverage that information.
+
+ Test: platform/mac/accessibility/id-class-attributes.html
+
+ * accessibility/AccessibilityObject.cpp:
+ (WebCore::AccessibilityObject::domIdentifier):
+ (WebCore::AccessibilityObject::domClassList):
+ * accessibility/AccessibilityObject.h:
+ * accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
+ (-[WebAccessibilityObjectWrapper accessibilityAttributeNames]):
+ (convertStringsToNSArray):
+ (-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):
+
2013-09-10 Denis Nomiyama <d.nomiyama@samsung.com>
[GTK] accessibility/loading-iframe-sends-notification.html is failing
#include "AXObjectCache.h"
#include "AccessibilityRenderObject.h"
#include "AccessibilityTable.h"
+#include "DOMTokenList.h"
#include "Editor.h"
#include "FloatRect.h"
#include "FocusController.h"
return getAttribute(aria_posinsetAttr).toInt();
}
+String AccessibilityObject::identifierAttribute() const
+{
+ return getAttribute(idAttr);
+}
+
+void AccessibilityObject::classList(Vector<String>& classList) const
+{
+ Node* node = this->node();
+ if (!node || !node->isElementNode())
+ return;
+
+ Element* element = toElement(node);
+ DOMTokenList* list = element->classList();
+ if (!list)
+ return;
+ unsigned length = list->length();
+ for (unsigned k = 0; k < length; k++)
+ classList.append(list->item(k).string());
+}
+
+
bool AccessibilityObject::supportsARIAExpanded() const
{
// Undefined values should not result in this attribute being exposed to ATs according to ARIA.
AccessibilitySortDirection sortDirection() const;
virtual bool canvasHasFallbackContent() const { return false; }
bool supportsRangeValue() const;
-
+ String identifierAttribute() const;
+ void classList(Vector<String>&) const;
+
bool supportsARIASetSize() const;
bool supportsARIAPosInSet() const;
int ariaSetSize() const;
#define NSAccessibilityPathAttribute @"AXPath"
#endif
+#define NSAccessibilityDOMIdentifierAttribute @"AXDOMIdentifier"
+#define NSAccessibilityDOMClassListAttribute @"AXDOMClassList"
+
// Math attributes
#define NSAccessibilityMathRootRadicandAttribute @"AXMathRootRadicand"
#define NSAccessibilityMathRootIndexAttribute @"AXMathRootIndex"
NSAccessibilityBlockQuoteLevelAttribute,
NSAccessibilityTopLevelUIElementAttribute,
NSAccessibilityLanguageAttribute,
+ NSAccessibilityDOMIdentifierAttribute,
+ NSAccessibilityDOMClassListAttribute,
nil];
}
if (commonMenuAttrs == nil) {
return array;
}
+static NSMutableArray *convertStringsToNSArray(const Vector<String>& vector)
+{
+ size_t length = vector.size();
+ NSMutableArray *array = [NSMutableArray arrayWithCapacity:length];
+ for (size_t i = 0; i < length; ++i)
+ [array addObject:vector[i]];
+ return array;
+}
+
- (id)textMarkerRangeForSelection
{
VisibleSelection selection = m_object->selection();
if ([attributeName isEqualToString:NSAccessibilityDropEffectsAttribute]) {
Vector<String> dropEffects;
m_object->determineARIADropEffects(dropEffects);
- size_t length = dropEffects.size();
-
- NSMutableArray* dropEffectsArray = [NSMutableArray arrayWithCapacity:length];
- for (size_t i = 0; i < length; ++i)
- [dropEffectsArray addObject:dropEffects[i]];
- return dropEffectsArray;
+ return convertStringsToNSArray(dropEffects);
}
if ([attributeName isEqualToString:NSAccessibilityPlaceholderValueAttribute])
return [self accessibilityMathPrescriptPairs];
}
+ if ([attributeName isEqualToString:NSAccessibilityDOMIdentifierAttribute])
+ return m_object->identifierAttribute();
+ if ([attributeName isEqualToString:NSAccessibilityDOMClassListAttribute]) {
+ Vector<String> classList;
+ m_object->classList(classList);
+ return convertStringsToNSArray(classList);
+ }
+
// this is used only by DumpRenderTree for testing
if ([attributeName isEqualToString:@"AXClickPoint"])
return [NSValue valueWithPoint:m_object->clickPoint()];
+2013-09-10 Chris Fleizach <cfleizach@apple.com>
+
+ AX: Expose DOM ID and ClassList to AX APIs for automation and AT element hashes
+ https://bugs.webkit.org/show_bug.cgi?id=120552
+
+ Reviewed by Darin Adler.
+
+ * DumpRenderTree/AccessibilityUIElement.cpp:
+ (getClassListCallback):
+ (AccessibilityUIElement::getJSClass):
+ * DumpRenderTree/AccessibilityUIElement.h:
+ * DumpRenderTree/atk/AccessibilityUIElementAtk.cpp:
+ (AccessibilityUIElement::classList):
+ * DumpRenderTree/blackberry/AccessibilityUIElementBlackBerry.cpp:
+ (AccessibilityUIElement::classList):
+ * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
+ (AccessibilityUIElement::classList):
+ * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
+ (AccessibilityUIElement::classList):
+ * WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp:
+ (WTR::AccessibilityUIElement::classList):
+ * WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:
+ * WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl:
+ * WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:
+ (WTR::AccessibilityUIElement::classList):
+ * WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:
+ (WTR::AccessibilityUIElement::classList):
+
2013-09-10 Denis Nomiyama <d.nomiyama@samsung.com>
[GTK] accessibility/loading-iframe-sends-notification.html is failing
return JSValueMakeString(context, dropEffects.get());
}
+static JSValueRef getClassListCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception)
+{
+ JSRetainPtr<JSStringRef> classList(Adopt, toAXElement(thisObject)->classList());
+ return JSValueMakeString(context, classList.get());
+}
+
static JSValueRef getARIAIsGrabbedCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception)
{
return JSValueMakeBoolean(context, toAXElement(thisObject)->ariaIsGrabbed());
{ "orientation", getOrientationCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "ariaIsGrabbed", getARIAIsGrabbedCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "ariaDropEffects", getARIADropEffectsCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+ { "classList", getClassListCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "isIgnored", isIgnoredCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "speak", speakCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "selectedChildrenCount", selectedChildrenCountCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
JSStringRef documentEncoding();
JSStringRef documentURI();
JSStringRef url();
+ JSStringRef classList() const;
// CSS3-speech properties.
JSStringRef speak();
// FIXME: implement
}
+JSStringRef AccessibilityUIElement::classList() const
+{
+ // FIXME: implement
+ return 0;
+}
+
#endif
return false;
}
+JSStringRef AccessibilityUIElement::classList()
+{
+ notImplemented();
+ return 0;
+}
return 0;
}
+JSStringRef AccessibilityUIElement::classList() const
+{
+ BEGIN_AX_OBJC_EXCEPTIONS
+ id value = [m_element accessibilityAttributeValue:@"AXDOMClassList"];
+ if (![value isKindOfClass:[NSArray class]])
+ return 0;
+
+ NSMutableString* classList = [NSMutableString string];
+ NSInteger length = [value count];
+ for (NSInteger k = 0; k < length; ++k) {
+ [classList appendString:[value objectAtIndex:k]];
+ if (k < length - 1)
+ [classList appendString:@", "];
+ }
+
+ return [classList createJSStringRef];
+ END_AX_OBJC_EXCEPTIONS
+}
+
bool AccessibilityUIElement::ariaIsGrabbed() const
{
BEGIN_AX_OBJC_EXCEPTIONS
{
// FIXME: implement
}
+
+JSStringRef AccessibilityUIElement::classList()
+{
+ // FIXME: implement
+ return 0;
+}
PassRefPtr<AccessibilityUIElement> AccessibilityUIElement::ariaFlowToElementAtIndex(unsigned) { return 0; }
bool AccessibilityUIElement::ariaIsGrabbed() const { return false; }
JSRetainPtr<JSStringRef> AccessibilityUIElement::ariaDropEffects() const { return 0; }
+JSRetainPtr<JSStringRef> AccessibilityUIElement::classList() const { return 0; }
int AccessibilityUIElement::lineForIndex(int) { return 0; }
JSRetainPtr<JSStringRef> AccessibilityUIElement::rangeForLine(int) { return 0; }
JSRetainPtr<JSStringRef> AccessibilityUIElement::rangeForPosition(int, int) { return 0; }
JSRetainPtr<JSStringRef> documentEncoding();
JSRetainPtr<JSStringRef> documentURI();
JSRetainPtr<JSStringRef> url();
+ JSRetainPtr<JSStringRef> classList() const;
// CSS3-speech properties.
JSRetainPtr<JSStringRef> speak();
readonly attribute int hierarchicalLevel;
readonly attribute boolean ariaIsGrabbed;
readonly attribute DOMString ariaDropEffects;
-
+ readonly attribute DOMString classList;
+
readonly attribute int x;
readonly attribute int y;
readonly attribute int width;
return 0;
}
+JSRetainPtr<JSStringRef> AccessibilityUIElement::classList() const
+{
+ notImplemented();
+ return 0;
+}
+
} // namespace WTR
#endif
return 0;
}
+
+JSRetainPtr<JSStringRef> AccessibilityUIElement::classList() const
+{
+ BEGIN_AX_OBJC_EXCEPTIONS
+ id value = [m_element accessibilityAttributeValue:@"AXDOMClassList"];
+ if (![value isKindOfClass:[NSArray class]])
+ return 0;
+
+ NSMutableString* classList = [NSMutableString string];
+ NSInteger length = [value count];
+ for (NSInteger k = 0; k < length; ++k) {
+ [classList appendString:[value objectAtIndex:k]];
+ if (k < length - 1)
+ [classList appendString:@", "];
+ }
+
+ return [classList createJSStringRef];
+ END_AX_OBJC_EXCEPTIONS
+
+ return 0;
+}
JSRetainPtr<JSStringRef> AccessibilityUIElement::speak()
{