WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
[patch]
Patch
bug-243373-20220801181943.patch (text/plain), 73.56 KB, created by
Tyler Wilcock
on 2022-08-01 18:19:43 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Tyler Wilcock
Created:
2022-08-01 18:19:43 PDT
Size:
73.56 KB
patch
obsolete
>From 0063592bd8f276726ce7e00d71a70369dbaafdb6 Mon Sep 17 00:00:00 2001 >From: Tyler Wilcock <tyler_w@apple.com> >Date: Sat, 30 Jul 2022 10:39:23 -0700 >Subject: [PATCH] AX: An unnecessary group is created for every block-flow box > with no other useful AX semantics > https://bugs.webkit.org/show_bug.cgi?id=243373 > >Reviewed by Chris Fleizach. > >At the end of AccessibilityRenderObject::determineAccessibilityRole, we have this logic: > >if (m_renderer->isRenderBlockFlow()) > return m_renderer->isAnonymousBlock() ? AccessibilityRole::TextGroup : AccessibilityRole::Group; > >This causes us to create a group for every block-flow box that doesn't otherwise have any >useful AX semantics. This is problematic because: > > 1. It makes the AX tree diverge from the DOM in a way that makes inserting node-only children > (e.g. those with display:contents) at the right index in AccessibilityRenderObject::addNodeOnlyChildren > hard or impossible > 2. Causes wasted work for WebKit by having to created isolated objects for these unnecessary groups > 3. Causes wasted work for AX clients who have to filter through these semantics-less groups > >This patch removes this fallback (for Cocoa platforms). Because these groups are so pervasive throughout our tests, >this required a lot of test changes, mostly removing now-unnecessary nested calls to `childAtIndex()` >and removing the groups from accessibility tree text dumps. > >This change is required to fix: > >https://bugs.webkit.org/show_bug.cgi?id=242779 >AX: display:contents elements are inserted in the wrong position when they have inline renderer siblings > >Because the reason we insert node-only objects in the wrong position is due to the existence >of the anonymous block boxes created implicitly by inline renderers. The groups created by these boxes cause >a restructuring of the AX tree that is difficult to work around, as the inline renderer AX objects become children >of the anonymous block box AX object and are therefore no longer siblings in the AX tree to their DOM tree siblings. > >rdar://problem/97840402 > >* LayoutTests/accessibility/aria-disabled.html: >* LayoutTests/accessibility/aria-hidden-false-works-in-subtrees.html: >* LayoutTests/accessibility/aria-used-on-image-maps.html: >* LayoutTests/accessibility/deleting-iframe-destroys-axcache.html: >* LayoutTests/accessibility/double-nested-inline-element-missing-from-tree-expected.txt: >* LayoutTests/accessibility/dynamically-changing-iframe-remains-accessible-expected.txt: >* LayoutTests/accessibility/dynamically-changing-iframe-remains-accessible.html: >* LayoutTests/accessibility/hidden-th-still-column-header-expected.txt: >* LayoutTests/accessibility/hidden-th-still-column-header.html: >* LayoutTests/accessibility/iframe-bastardization-expected.txt: >* LayoutTests/accessibility/iframe-bastardization.html: >* LayoutTests/accessibility/ignore-modals-without-any-content.html: >* LayoutTests/accessibility/ignore-spacer-elements.html: >* LayoutTests/accessibility/ignored-aria-role-description-expected.txt: >* LayoutTests/accessibility/img-aria-button-alt-tag.html: >* LayoutTests/accessibility/img-fallsback-to-title.html: >* LayoutTests/accessibility/mac/aria-tree-item-children-expected.txt: >* LayoutTests/accessibility/mac/aria-tree-item-children.html: >* LayoutTests/accessibility/mac/canvas.html: >* LayoutTests/accessibility/mac/element-focus-expected.txt: >* LayoutTests/accessibility/mac/element-focus.html: >* LayoutTests/accessibility/mac/element-level-expected.txt: >* LayoutTests/accessibility/mac/element-level.html: >* LayoutTests/accessibility/mac/figure-element-expected.txt: >* LayoutTests/accessibility/mac/figure-element.html: >* LayoutTests/accessibility/mac/html-section-elements-expected.txt: >* LayoutTests/accessibility/mac/html-section-elements.html: >* LayoutTests/accessibility/mac/iframe-aria-hidden-expected.txt: >* LayoutTests/accessibility/mac/iframe-aria-hidden.html: >* LayoutTests/accessibility/mac/iframe-pdf-expected.txt: >* LayoutTests/accessibility/mac/iframe-pdf.html: >* LayoutTests/accessibility/mac/label-element-with-hidden-control.html: >* LayoutTests/accessibility/mac/math-alttext.html: >* LayoutTests/accessibility/mac/nested-inline-elements-children.html: >* LayoutTests/accessibility/mac/pseudo-element-text-markers-expected.txt: >* LayoutTests/accessibility/mac/pseudo-element-text-markers.html: >* LayoutTests/accessibility/mac/slider-allows-title-ui-element.html: >* LayoutTests/accessibility/mac/stale-textmarker-crash.html: >* LayoutTests/accessibility/mac/supports-focus-setting.html: >* LayoutTests/accessibility/nochildren-elements.html: >* LayoutTests/accessibility/table-cell-display-block.html: >* LayoutTests/accessibility/deleting-iframe-destroys-axcache-expected.txt >* LayoutTests/accessibility/mac/figure-element-expected.txt >* LayoutTests/accessibility/mac/figure-element.html >* LayoutTests/accessibility/mac/html-slider-indicator-expected.txt >* LayoutTests/accessibility/mac/search-predicate-visited-links-expected.txt >* LayoutTests/accessibility/mac/search-predicate-visited-links.html >* LayoutTests/platform/ios/accessibility/aria-roles-unignored-expected.txt >* LayoutTests/platform/mac-wk1/accessibility/dynamically-changing-iframe-remains-accessible-expected.txt >* LayoutTests/platform/mac-wk1/accessibility/roles-exposed-expected.txt >* LayoutTests/platform/mac/TestExpectations >* LayoutTests/platform/mac/accessibility/deleting-iframe-destroys-axcache-expected.txt -> LayoutTests/platform/mac-wk1/accessibility/deleting-iframe-destroys-axcache-expected.txt >* LayoutTests/platform/mac-wk2/accessibility/deleting-iframe-destroys-axcache-expected.txt: >* LayoutTests/platform/mac-wk2/accessibility/roles-exposed-expected.txt: >* LayoutTests/platform/mac/accessibility/aria-hidden-false-works-in-subtrees-expected.txt: >* LayoutTests/platform/mac/accessibility/aria-menubar-menuitems-expected.txt: >* LayoutTests/platform/mac/accessibility/generated-content-with-display-table-crash-expected.txt: >* LayoutTests/platform/mac/accessibility/image-with-alt-and-map-expected.txt: >* LayoutTests/platform/mac/accessibility/img-fallsback-to-title-expected.txt: >* LayoutTests/platform/mac/accessibility/lists-expected.txt: >Remove now-unnecessary nested calls to `childAtIndex()` and remove groups from >accessibility tree text dumps. > >* LayoutTests/accessibility/aria-roles-unignored-expected.txt: Added. >* LayoutTests/accessibility/aria-roles-unignored.html: Added. >We originally started exposing every block-flow box as a group here: >https://github.com/WebKit/WebKit/commit/1dffe622a2d62916440f71673af65d805a30430b (AX: GTK: ARIA role is not respected on <p> <label> <div> and <form>) >I've added this test to ensure we don't regress this behavior with this patch. >* LayoutTests/platform/win/TestExpectations: >* LayoutTests/platform/glib/TestExpectations: >Disable new test aria-roles-unignored.html. >* LayoutTests/platform/ios/TestExpectations >Enable new test aria-roles-unignored.html. > >* Source/WebCore/accessibility/AccessibilityRenderObject.cpp: >(WebCore::AccessibilityRenderObject::determineAccessibilityRole): >Stop giving a role to block-box flows with no other useful AX semantics >on Cocoa platforms. This change should be made for other platforms, but >doing so causes lots of failing tests that need to be worked through. >--- > .../AccessibilityRenderObject.cpp | 5 +- > LayoutTests/accessibility/aria-disabled.html | 13 ++++- > .../aria-hidden-false-works-in-subtrees.html | 2 +- > .../aria-roles-unignored-expected.txt | 31 +++++++++++ > .../accessibility/aria-roles-unignored.html | 54 +++++++++++++++++++ > .../aria-used-on-image-maps.html | 4 +- > ...eting-iframe-destroys-axcache-expected.txt | 42 --------------- > .../deleting-iframe-destroys-axcache.html | 8 +-- > ...ine-element-missing-from-tree-expected.txt | 5 +- > ...ing-iframe-remains-accessible-expected.txt | 6 +-- > ...ly-changing-iframe-remains-accessible.html | 2 +- > ...hidden-th-still-column-header-expected.txt | 2 +- > .../hidden-th-still-column-header.html | 2 +- > .../iframe-bastardization-expected.txt | 3 +- > .../accessibility/iframe-bastardization.html | 8 ++- > .../ignore-modals-without-any-content.html | 5 +- > .../accessibility/ignore-spacer-elements.html | 4 +- > ...ignored-aria-role-description-expected.txt | 2 +- > .../img-aria-button-alt-tag.html | 4 +- > .../accessibility/img-fallsback-to-title.html | 20 ++++--- > .../mac/aria-tree-item-children-expected.txt | 2 +- > .../mac/aria-tree-item-children.html | 2 +- > LayoutTests/accessibility/mac/canvas.html | 2 +- > .../mac/element-focus-expected.txt | 4 +- > .../accessibility/mac/element-focus.html | 4 +- > .../mac/element-level-expected.txt | 2 +- > .../accessibility/mac/element-level.html | 2 +- > .../mac/figure-element-expected.txt | 4 +- > .../accessibility/mac/figure-element.html | 6 ++- > .../mac/html-section-elements-expected.txt | 2 +- > .../mac/html-section-elements.html | 3 +- > .../mac/iframe-aria-hidden-expected.txt | 6 +-- > .../accessibility/mac/iframe-aria-hidden.html | 6 +-- > .../accessibility/mac/iframe-pdf-expected.txt | 1 - > LayoutTests/accessibility/mac/iframe-pdf.html | 2 +- > .../label-element-with-hidden-control.html | 2 +- > .../accessibility/mac/math-alttext.html | 2 +- > .../mac/nested-inline-elements-children.html | 4 +- > .../pseudo-element-text-markers-expected.txt | 2 - > .../mac/pseudo-element-text-markers.html | 2 +- > ...earch-predicate-visited-links-expected.txt | 4 +- > .../mac/search-predicate-visited-links.html | 4 +- > .../mac/slider-allows-title-ui-element.html | 2 +- > .../mac/stale-textmarker-crash.html | 4 +- > .../mac/supports-focus-setting.html | 2 +- > .../accessibility/nochildren-elements.html | 5 +- > .../table-cell-display-block.html | 4 +- > LayoutTests/platform/glib/TestExpectations | 3 ++ > ...idden-false-works-in-subtrees-expected.txt | 2 +- > ...eting-iframe-destroys-axcache-expected.txt | 2 - > LayoutTests/platform/ios/TestExpectations | 1 + > .../aria-roles-unignored-expected.txt | 30 +++++++++++ > ...eting-iframe-destroys-axcache-expected.txt | 10 ++-- > ...ing-iframe-remains-accessible-expected.txt | 6 +-- > .../mac/html-slider-indicator-expected.txt | 29 ++++++++++ > .../accessibility/roles-exposed-expected.txt | 4 +- > ...eting-iframe-destroys-axcache-expected.txt | 10 ++-- > .../accessibility/roles-exposed-expected.txt | 4 +- > LayoutTests/platform/mac/TestExpectations | 7 +++ > ...idden-false-works-in-subtrees-expected.txt | 4 +- > .../aria-menubar-menuitems-expected.txt | 4 -- > ...tent-with-display-table-crash-expected.txt | 3 +- > .../image-with-alt-and-map-expected.txt | 9 ++-- > .../img-fallsback-to-title-expected.txt | 2 +- > .../mac/accessibility/lists-expected.txt | 34 ------------ > LayoutTests/platform/win/TestExpectations | 2 + > 66 files changed, 271 insertions(+), 202 deletions(-) > create mode 100644 LayoutTests/accessibility/aria-roles-unignored-expected.txt > create mode 100644 LayoutTests/accessibility/aria-roles-unignored.html > delete mode 100644 LayoutTests/accessibility/deleting-iframe-destroys-axcache-expected.txt > create mode 100644 LayoutTests/platform/ios/accessibility/aria-roles-unignored-expected.txt > rename LayoutTests/platform/{mac => mac-wk1}/accessibility/deleting-iframe-destroys-axcache-expected.txt (76%) > create mode 100644 LayoutTests/platform/mac-wk1/accessibility/mac/html-slider-indicator-expected.txt > >diff --git a/Source/WebCore/accessibility/AccessibilityRenderObject.cpp b/Source/WebCore/accessibility/AccessibilityRenderObject.cpp >index f2e9ee11f03e..0c23d4bde26a 100644 >--- a/Source/WebCore/accessibility/AccessibilityRenderObject.cpp >+++ b/Source/WebCore/accessibility/AccessibilityRenderObject.cpp >@@ -2826,9 +2826,12 @@ AccessibilityRole AccessibilityRenderObject::determineAccessibilityRole() > auto roleFromNode = determineAccessibilityRoleFromNode(treatStyleFormatGroupAsInline); > if (roleFromNode != AccessibilityRole::Unknown) > return roleFromNode; >- >+ >+#if !PLATFORM(COCOA) >+ // This block should be deleted for all platforms, but doing so causes a lot of test failures that need to be sorted out. > if (m_renderer->isRenderBlockFlow()) > return m_renderer->isAnonymousBlock() ? AccessibilityRole::TextGroup : AccessibilityRole::Group; >+#endif > > // InlineRole is the final fallback before assigning AccessibilityRole::Unknown to an object. It makes it > // possible to distinguish truly unknown objects from non-focusable inline text elements >diff --git a/LayoutTests/accessibility/aria-disabled.html b/LayoutTests/accessibility/aria-disabled.html >index 76abaae42142..ce78fbdcd601 100644 >--- a/LayoutTests/accessibility/aria-disabled.html >+++ b/LayoutTests/accessibility/aria-disabled.html >@@ -17,11 +17,20 @@ > > var body = document.getElementById("body"); > body.focus(); >- var textField = accessibilityController.focusedElement.childAtIndex(0).childAtIndex(0); >+ >+ var textField; >+ if (accessibilityController.platformName === "atspi" || accessibilityController.platformName === "win") >+ textField = accessibilityController.focusedElement.childAtIndex(0).childAtIndex(0); >+ else >+ textField = accessibilityController.focusedElement.childAtIndex(0); >+ > var succeeded = textField.isEnabled; > shouldBe("succeeded", "false"); > >- textField = accessibilityController.focusedElement.childAtIndex(0).childAtIndex(1); >+ if (accessibilityController.platformName === "atspi" || accessibilityController.platformName === "win") >+ textField = accessibilityController.focusedElement.childAtIndex(0).childAtIndex(1); >+ else >+ textField = accessibilityController.focusedElement.childAtIndex(1); > succeeded = textField.isEnabled; > shouldBe("succeeded", "true"); > } >diff --git a/LayoutTests/accessibility/aria-hidden-false-works-in-subtrees.html b/LayoutTests/accessibility/aria-hidden-false-works-in-subtrees.html >index 331503b5d0ee..417ab9a6bdd5 100644 >--- a/LayoutTests/accessibility/aria-hidden-false-works-in-subtrees.html >+++ b/LayoutTests/accessibility/aria-hidden-false-works-in-subtrees.html >@@ -67,7 +67,7 @@ text3 > // Test that aria-hidden=false does NOT expose iframe fallback text. > let iframe = accessibilityController.accessibleElementById("iframe").childAtIndex(0).childAtIndex(0); > >- debug("Non-rendered iframe content should not be visible when aria-hidden=true. The first child should be a group and NOT static text."); >+ debug("Non-rendered iframe content should not be visible when aria-hidden=true. The first child should NOT be static text."); > let iframeChild = null; > await waitFor(() => { > return iframeChild = iframe.childAtIndex(0); >diff --git a/LayoutTests/accessibility/aria-roles-unignored-expected.txt b/LayoutTests/accessibility/aria-roles-unignored-expected.txt >new file mode 100644 >index 000000000000..30e502ad92f0 >--- /dev/null >+++ b/LayoutTests/accessibility/aria-roles-unignored-expected.txt >@@ -0,0 +1,31 @@ >+This tests that ARIA roles are not ignored for 'p', 'label', 'form' and 'div' elements. >+ >+AXRole: AXWebArea >+ AXRole: AXGroup >+ AXRole: AXStaticText >+ AXValue: Simple paragraph >+ AXRole: AXTable >+ AXRole: AXGroup >+ AXRole: AXStaticText >+ AXValue: A label >+ AXRole: AXStaticText >+ AXValue: A label >+ AXRole: AXHeading >+ AXRole: AXStaticText >+ AXValue: Who said label? It's a heading! >+ AXRole: AXGroup >+ AXRole: AXStaticText >+ AXValue: A form with a button >+ AXRole: AXButton >+ AXRole: AXButton >+ AXRole: AXGroup >+ AXRole: AXStaticText >+ AXValue: Just some text inside a div >+ AXRole: AXTextField >+ >+PASS successfullyParsed is true >+ >+TEST COMPLETE >+ >+ >+ >diff --git a/LayoutTests/accessibility/aria-roles-unignored.html b/LayoutTests/accessibility/aria-roles-unignored.html >new file mode 100644 >index 000000000000..56ba72f6dfc6 >--- /dev/null >+++ b/LayoutTests/accessibility/aria-roles-unignored.html >@@ -0,0 +1,54 @@ >+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> >+<html> >+<head> >+<script src="../resources/accessibility-helper.js"></script> >+<script src="../resources/js-test.js"></script> >+</head> >+<body> >+ >+<div id="content"> >+ <p>Simple paragraph</p> >+ <p role="grid">A paragraph pretending to be a table</p> >+ >+ <label>A label</label> >+ <label role="heading">Who said label? It's a heading!</label> >+ >+ <form>A form with a button <button name="button" value="Button">Click me!</button></form> >+ <form role="button">Just a button <button name="button" value="Button">Click me!</button></form> >+ >+ <div>Just some text inside a div</div> >+ <div role="textbox">This div is contains a textbox (an entry)</div> >+</div> >+ >+<script> >+ >+var testOutput = "This tests that ARIA roles are not ignored for 'p', 'label', 'form' and 'div' elements.\n\n"; >+ >+function dumpTree(axElement, indent = 0) { >+ if (!axElement) >+ return ""; >+ >+ let indentStr = ""; >+ for (let i = 0; i < indent; i++) >+ indentStr += " "; >+ >+ let str = `${indentStr}${axElement.role}\n` >+ if (axElement.role && axElement.role.includes("StaticText")) >+ str += `${indentStr}${accessibilityController.platformName === "ios" ? axElement.description : axElement.stringValue}\n` >+ >+ for (let i = 0; i < axElement.childrenCount; ++i) >+ str += dumpTree(axElement.childAtIndex(i), indent + 1); >+ >+ return str; >+} >+ >+if (window.accessibilityController) { >+ testOutput += dumpTree(accessibilityController.rootElement.childAtIndex(0)); >+ >+ document.getElementById("content").style.visibility = "hidden"; >+ debug(testOutput); >+} >+ >+</script> >+</body> >+</html> >diff --git a/LayoutTests/accessibility/aria-used-on-image-maps.html b/LayoutTests/accessibility/aria-used-on-image-maps.html >index 9b32f53566e4..ceb870e4fb63 100644 >--- a/LayoutTests/accessibility/aria-used-on-image-maps.html >+++ b/LayoutTests/accessibility/aria-used-on-image-maps.html >@@ -20,7 +20,9 @@ > > if (window.accessibilityController) { > >- var group = accessibilityController.rootElement.childAtIndex(0).childAtIndex(0); >+ var group = accessibilityController.rootElement.childAtIndex(0); >+ if (accessibilityController.platformName === "atspi" || accessibilityController.platformName === "win") >+ group = accessibilityController.rootElement.childAtIndex(0).childAtIndex(0); > shouldBe("group.childAtIndex(0).role", "'AXRole: AXButton'"); > shouldBe("group.childAtIndex(1).role", "'AXRole: AXButton'"); > } >diff --git a/LayoutTests/accessibility/deleting-iframe-destroys-axcache-expected.txt b/LayoutTests/accessibility/deleting-iframe-destroys-axcache-expected.txt >deleted file mode 100644 >index 494df270eadc..000000000000 >--- a/LayoutTests/accessibility/deleting-iframe-destroys-axcache-expected.txt >+++ /dev/null >@@ -1,42 +0,0 @@ >-Before >- >-After >- >-End of test >- >-This tests that deleting an iframe doesn't cause the accessibility cache to be destroyed and recreated. >- >-On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". >- >- >- >-Before: >-AXRole: AXScrollArea >- AXRole: AXWebArea >- AXRole: AXParagraph AXValue: Before >- AXRole: AXGroup AXValue: <obj> >- AXRole: AXGroup >- AXRole: AXScrollArea >- AXRole: AXWebArea >- AXRole: AXGroup AXValue: <obj> >- AXRole: AXButton >- AXRole: AXParagraph AXValue: After >- AXRole: AXParagraph AXValue: End of test >- >-After: >-AXRole: AXScrollArea >- AXRole: AXWebArea >- AXRole: AXParagraph AXValue: Before >- AXRole: AXParagraph AXValue: After >- AXRole: AXParagraph AXValue: End of test >- >-PASS frameBodyRole == frameBody.role is false >-PASS frameGroupRole == frameGroup.role is false >-PASS frameButtonRole == frameButton.role is false >-PASS root.isEqual(newRoot) is true >-PASS body.isEqual(newBody) is true >-PASS before.isEqual(newBefore) is true >-PASS after.isEqual(newAfter) is true >- >-TEST COMPLETE >- >diff --git a/LayoutTests/accessibility/deleting-iframe-destroys-axcache.html b/LayoutTests/accessibility/deleting-iframe-destroys-axcache.html >index 9e7fd897a081..268ed4815d4e 100644 >--- a/LayoutTests/accessibility/deleting-iframe-destroys-axcache.html >+++ b/LayoutTests/accessibility/deleting-iframe-destroys-axcache.html >@@ -18,11 +18,7 @@ > window.iframe = body.childAtIndex(1).childAtIndex(0); > window.after = body.childAtIndex(2); > >- window.frameBody = window.iframe.childAtIndex(0); >- window.frameBodyRole = window.frameBody.role; >- window.frameGroup = window.frameBody.childAtIndex(0); >- window.frameGroupRole = window.frameGroup.role; >- window.frameButton = window.frameGroup.childAtIndex(0); >+ window.frameButton = window.iframe.childAtIndex(0); > window.frameButtonRole = window.frameButton.role; > > document.getElementById("tree").innerText += "\nBefore:\n"; >@@ -43,8 +39,6 @@ > // Make sure that the accessibility objects from the iframe's nodes > // are now invalid by checking that their role is changed - this > // is because they've been deleted. >- shouldBeFalse("frameBodyRole == frameBody.role"); >- shouldBeFalse("frameGroupRole == frameGroup.role"); > shouldBeFalse("frameButtonRole == frameButton.role"); > > // Make sure that the other nodes are unchanged. >diff --git a/LayoutTests/accessibility/double-nested-inline-element-missing-from-tree-expected.txt b/LayoutTests/accessibility/double-nested-inline-element-missing-from-tree-expected.txt >index a867789c931b..0a33c96c0fbe 100644 >--- a/LayoutTests/accessibility/double-nested-inline-element-missing-from-tree-expected.txt >+++ b/LayoutTests/accessibility/double-nested-inline-element-missing-from-tree-expected.txt >@@ -7,10 +7,9 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE > > > AXRole: AXWebArea AXValue: >+ AXRole: AXStaticText AXValue: test1 > AXRole: AXGroup AXValue: >- AXRole: AXStaticText AXValue: test1 >- AXRole: AXGroup AXValue: >- AXRole: AXStaticText AXValue: test2 >+ AXRole: AXStaticText AXValue: test2 > AXRole: AXGroup AXValue: > PASS successfullyParsed is true > >diff --git a/LayoutTests/accessibility/dynamically-changing-iframe-remains-accessible-expected.txt b/LayoutTests/accessibility/dynamically-changing-iframe-remains-accessible-expected.txt >index 3e4571f02d07..2810bf709306 100644 >--- a/LayoutTests/accessibility/dynamically-changing-iframe-remains-accessible-expected.txt >+++ b/LayoutTests/accessibility/dynamically-changing-iframe-remains-accessible-expected.txt >@@ -9,8 +9,6 @@ AXRole: AXScrollArea > > AXRole: AXWebArea > >-AXRole: AXGroup >- > AXRole: AXStaticText > AXValue: Purple pineapple > >@@ -18,12 +16,10 @@ AXRole: AXScrollArea > > AXRole: AXWebArea > >-AXRole: AXGroup >- > AXRole: AXStaticText > AXValue: Purple pineapple > >-Traversed 9 elements. >+Traversed 7 elements. > PASS successfullyParsed is true > > TEST COMPLETE >diff --git a/LayoutTests/accessibility/dynamically-changing-iframe-remains-accessible.html b/LayoutTests/accessibility/dynamically-changing-iframe-remains-accessible.html >index 0a255fd37bc6..614044cbda2f 100644 >--- a/LayoutTests/accessibility/dynamically-changing-iframe-remains-accessible.html >+++ b/LayoutTests/accessibility/dynamically-changing-iframe-remains-accessible.html >@@ -4,7 +4,7 @@ > <script src="../resources/js-test.js"></script> > <script src="../resources/accessibility-helper.js"></script> > </head> >-<body id="body"> >+<body id="body" role="group"> > > <input type="text" id="text-input-outside-iframe"> > <iframe id="iframe-contentwindow" width=500 height=500></iframe> >diff --git a/LayoutTests/accessibility/hidden-th-still-column-header-expected.txt b/LayoutTests/accessibility/hidden-th-still-column-header-expected.txt >index 1ec676dff704..32e709ca0384 100644 >--- a/LayoutTests/accessibility/hidden-th-still-column-header-expected.txt >+++ b/LayoutTests/accessibility/hidden-th-still-column-header-expected.txt >@@ -6,7 +6,7 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE > > > PASS colHeaders.length is 2 >-PASS colHeaders[0].childAtIndex(0).childAtIndex(0).stringValue is 'AXValue: header 1' >+PASS colHeaders[0].childAtIndex(0).stringValue is 'AXValue: header 1' > PASS colHeaders[1].childAtIndex(0).stringValue is 'AXValue: header 3' > PASS successfullyParsed is true > >diff --git a/LayoutTests/accessibility/hidden-th-still-column-header.html b/LayoutTests/accessibility/hidden-th-still-column-header.html >index 73fef0986e8e..ecf4a582dcfd 100644 >--- a/LayoutTests/accessibility/hidden-th-still-column-header.html >+++ b/LayoutTests/accessibility/hidden-th-still-column-header.html >@@ -22,7 +22,7 @@ > var table = accessibilityController.accessibleElementById("table"); > var colHeaders = table.columnHeaders(); > shouldBe("colHeaders.length", "2"); >- shouldBe("colHeaders[0].childAtIndex(0).childAtIndex(0).stringValue", "'AXValue: header 1'"); >+ shouldBe("colHeaders[0].childAtIndex(0).stringValue", "'AXValue: header 1'"); > shouldBe("colHeaders[1].childAtIndex(0).stringValue", "'AXValue: header 3'"); > } > </script> >diff --git a/LayoutTests/accessibility/iframe-bastardization-expected.txt b/LayoutTests/accessibility/iframe-bastardization-expected.txt >index 50a622283b64..b11efc6dd88b 100644 >--- a/LayoutTests/accessibility/iframe-bastardization-expected.txt >+++ b/LayoutTests/accessibility/iframe-bastardization-expected.txt >@@ -5,8 +5,7 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE > > > PASS parentIframeWebArea.isEqual(iframeScrollArea) is true >-PASS parentIframeScrollArea.isEqual(group1) is true >-PASS parentGroup1.isEqual(webArea) is true >+PASS parentIframeScrollArea.isEqual(webArea) is true > PASS successfullyParsed is true > > TEST COMPLETE >diff --git a/LayoutTests/accessibility/iframe-bastardization.html b/LayoutTests/accessibility/iframe-bastardization.html >index 658a38d0d744..b2b61ce8e7e7 100644 >--- a/LayoutTests/accessibility/iframe-bastardization.html >+++ b/LayoutTests/accessibility/iframe-bastardization.html >@@ -1,5 +1,6 @@ > <head> > <script src="../resources/js-test-pre.js"></script> >+<script src="../resources/accessibility-helper.js"></script> > </head> > <body id="body"> > >@@ -18,17 +19,14 @@ > body.focus(); > var webArea = accessibilityController.focusedElement; > >- var group1 = webArea.childAtIndex(0); >- var iframeScrollArea = group1.childAtIndex(0); >+ var iframeScrollArea = webArea.childAtIndex(0); > var iframeWebArea = iframeScrollArea.childAtIndex(0); > > var parentIframeWebArea = iframeWebArea.parentElement(); > var parentIframeScrollArea = parentIframeWebArea.parentElement(); >- var parentGroup1 = parentIframeScrollArea.parentElement(); > > shouldBe("parentIframeWebArea.isEqual(iframeScrollArea)", "true"); >- shouldBe("parentIframeScrollArea.isEqual(group1)", "true"); >- shouldBe("parentGroup1.isEqual(webArea)", "true"); >+ shouldBe("parentIframeScrollArea.isEqual(webArea)", "true"); > } > > </script> >diff --git a/LayoutTests/accessibility/ignore-modals-without-any-content.html b/LayoutTests/accessibility/ignore-modals-without-any-content.html >index b9fb838ef1c4..a1bac9b8c740 100644 >--- a/LayoutTests/accessibility/ignore-modals-without-any-content.html >+++ b/LayoutTests/accessibility/ignore-modals-without-any-content.html >@@ -57,10 +57,9 @@ > let text = document.createTextNode("Foo text, inside modal"); > document.getElementById("modal").appendChild(text); > >+ // Wait for text node to be added as an AX child. > await waitFor(() => { >- let innerModalGroup = accessibilityController.accessibleElementById("modal").childAtIndex(0); >- // Wait for text node to be added as an AX child. >- return innerModalGroup && innerModalGroup.childAtIndex(0); >+ return accessibilityController.accessibleElementById("modal").childAtIndex(0); > }); > > let containerElement = accessibilityController.accessibleElementById("container"); >diff --git a/LayoutTests/accessibility/ignore-spacer-elements.html b/LayoutTests/accessibility/ignore-spacer-elements.html >index 17b55a39eec3..02be8f3313b4 100644 >--- a/LayoutTests/accessibility/ignore-spacer-elements.html >+++ b/LayoutTests/accessibility/ignore-spacer-elements.html >@@ -22,7 +22,9 @@ > > var body = document.getElementById("body"); > body.focus(); >- var container = accessibilityController.focusedElement.childAtIndex(0); >+ var container = accessibilityController.focusedElement; >+ if (accessibilityController.platformName === "atspi" || accessibilityController.platformName === "win") >+ container = container.childAtIndex(0); > > // The Gtk and EFL ports ATs expect the bold inline text to not have accessible objects. > var expectedCount = accessibilityController.platformName == "atspi" ? 2 : 4; >diff --git a/LayoutTests/accessibility/ignored-aria-role-description-expected.txt b/LayoutTests/accessibility/ignored-aria-role-description-expected.txt >index 5bcb906426a1..081ead0a9be1 100644 >--- a/LayoutTests/accessibility/ignored-aria-role-description-expected.txt >+++ b/LayoutTests/accessibility/ignored-aria-role-description-expected.txt >@@ -4,7 +4,7 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE > > > div role: AXRoleDescription: group >-span text role: AXRoleDescription: group >+span text role: AXRoleDescription: text > > PASS successfullyParsed is true > >diff --git a/LayoutTests/accessibility/img-aria-button-alt-tag.html b/LayoutTests/accessibility/img-aria-button-alt-tag.html >index 4ad3a55c82ec..c97691784d9b 100644 >--- a/LayoutTests/accessibility/img-aria-button-alt-tag.html >+++ b/LayoutTests/accessibility/img-aria-button-alt-tag.html >@@ -21,7 +21,9 @@ > var result = document.getElementById("result"); > > var body = document.getElementById("body").focus(); >- var imgUIElement = accessibilityController.focusedElement.childAtIndex(0).childAtIndex(0); >+ var imgUIElement = accessibilityController.focusedElement.childAtIndex(0); >+ if (accessibilityController.platformName === "atspi" || accessibilityController.platformName === "win") >+ imgUIElement = accessibilityController.focusedElement.childAtIndex(0).childAtIndex(0); > shouldBeEqualToString("platformValueForW3CName(imgUIElement)", "alternate"); > } > </script> >diff --git a/LayoutTests/accessibility/img-fallsback-to-title.html b/LayoutTests/accessibility/img-fallsback-to-title.html >index f3138c5042f1..1fe0d695ffec 100644 >--- a/LayoutTests/accessibility/img-fallsback-to-title.html >+++ b/LayoutTests/accessibility/img-fallsback-to-title.html >@@ -26,31 +26,37 @@ > document.getElementById("images").focus(); > var imagesGroup = accessibilityController.focusedElement; > >+ const isAtspi = accessibilityController.platformName === "atspi"; >+ > // First image should have a description of "test1" because there is no alt tag (it should use the title). > // The title should NOT be in the help text. >- var image1 = imagesGroup.childAtIndex(0).childAtIndex(0); >+ var image1 = isAtspi ? imagesGroup.childAtIndex(0).childAtIndex(0) : imagesGroup.childAtIndex(0); > debug("Image1:"); > debug(platformTextAlternatives(image1)); > > // Second image should use the description from the alt tag instead of the title. > // The help text should reflect what's in the title. >- var image2 = imagesGroup.childAtIndex(0).childAtIndex(1); >+ var image2 = isAtspi ? imagesGroup.childAtIndex(0).childAtIndex(1) : imagesGroup.childAtIndex(1); > debug("Image2:"); > debug(platformTextAlternatives(image2)); > > // Now do the same checks for ARIA type images. >- var image3 = imagesGroup.childAtIndex(1); >+ var image3 = isAtspi ? imagesGroup.childAtIndex(1) : imagesGroup.childAtIndex(2); > debug("Image3:"); > debug(platformTextAlternatives(image3)); > > // Now do the same checks for ARIA type images. >- var image4 = imagesGroup.childAtIndex(2); >+ var image4 = isAtspi ? imagesGroup.childAtIndex(2) : imagesGroup.childAtIndex(3); > debug("Image4:"); > debug(platformTextAlternatives(image4)); > >- // Verify that the first image (with an empty alt tag) is ignored >- // by checking the children count of the group containing the native images == 2. >- shouldBe("imagesGroup.childAtIndex(0).childrenCount", "2"); >+ if (isAtspi) >+ shouldBe("imagesGroup.childAtIndex(0).childrenCount", "2"); >+ else { >+ // Verify that the first image (with an empty alt tag) is ignored by checking the children count of >+ // the group is 4 (not 5). >+ shouldBe("imagesGroup.childrenCount", "4"); >+ } > } > > </script> >diff --git a/LayoutTests/accessibility/mac/aria-tree-item-children-expected.txt b/LayoutTests/accessibility/mac/aria-tree-item-children-expected.txt >index d19081a9f9b0..bde37d441095 100644 >--- a/LayoutTests/accessibility/mac/aria-tree-item-children-expected.txt >+++ b/LayoutTests/accessibility/mac/aria-tree-item-children-expected.txt >@@ -6,7 +6,7 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE > > > PASS tree.role is 'AXRole: AXOutline' >-PASS child1 == child2 is true >+PASS child1.stringValue == child2.stringValue && child1.role == child2.role is true > PASS successfullyParsed is true > > TEST COMPLETE >diff --git a/LayoutTests/accessibility/mac/aria-tree-item-children.html b/LayoutTests/accessibility/mac/aria-tree-item-children.html >index 93de9298ca45..e7df2ea0599a 100644 >--- a/LayoutTests/accessibility/mac/aria-tree-item-children.html >+++ b/LayoutTests/accessibility/mac/aria-tree-item-children.html >@@ -37,7 +37,7 @@ if (window.testRunner) > var treeitem = tree.childAtIndex(0); > var child1 = treeitem.childAtIndex(0); > var child2 = treeitem.uiElementArrayAttributeValue("AXChildren")[0]; >- shouldBe("child1 == child2", "true"); >+ shouldBe("child1.stringValue == child2.stringValue && child1.role == child2.role", "true"); > } > > </script> >diff --git a/LayoutTests/accessibility/mac/canvas.html b/LayoutTests/accessibility/mac/canvas.html >index b22049279d85..105c1205854f 100644 >--- a/LayoutTests/accessibility/mac/canvas.html >+++ b/LayoutTests/accessibility/mac/canvas.html >@@ -48,7 +48,7 @@ > > var body = document.getElementById("body"); > body.focus(); >- var canvasElement = accessibilityController.focusedElement.childAtIndex(0).childAtIndex(0); >+ var canvasElement = accessibilityController.focusedElement.childAtIndex(0); > > var pattern = "AXRole: AXImage"; > if (canvasElement.allAttributes().indexOf(pattern) != -1) { >diff --git a/LayoutTests/accessibility/mac/element-focus-expected.txt b/LayoutTests/accessibility/mac/element-focus-expected.txt >index 0fc4cb69543d..c6e124f4c676 100644 >--- a/LayoutTests/accessibility/mac/element-focus-expected.txt >+++ b/LayoutTests/accessibility/mac/element-focus-expected.txt >@@ -6,8 +6,8 @@ This tests that any element that supports focus has a writable AXFocused > On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". > > >-PASS body.childAtIndex(0).childAtIndex(0).role is 'AXRole: AXLink' >-PASS body.childAtIndex(0).childAtIndex(0).isAttributeSettable('AXFocused') is true >+PASS body.childAtIndex(0).role is 'AXRole: AXLink' >+PASS body.childAtIndex(0).isAttributeSettable('AXFocused') is true > PASS body.childAtIndex(1).role is 'AXRole: AXStaticText' > PASS body.childAtIndex(1).isAttributeSettable('AXFocused') is true > PASS body.childAtIndex(2).role is 'AXRole: AXGroup' >diff --git a/LayoutTests/accessibility/mac/element-focus.html b/LayoutTests/accessibility/mac/element-focus.html >index 743cbf555c3b..236bb0ba3781 100644 >--- a/LayoutTests/accessibility/mac/element-focus.html >+++ b/LayoutTests/accessibility/mac/element-focus.html >@@ -23,8 +23,8 @@ > var root = accessibilityController.rootElement; > var body = root.childAtIndex(0); > >- shouldBe("body.childAtIndex(0).childAtIndex(0).role", "'AXRole: AXLink'"); >- shouldBe("body.childAtIndex(0).childAtIndex(0).isAttributeSettable('AXFocused')", "true"); >+ shouldBe("body.childAtIndex(0).role", "'AXRole: AXLink'"); >+ shouldBe("body.childAtIndex(0).isAttributeSettable('AXFocused')", "true"); > > shouldBe("body.childAtIndex(1).role", "'AXRole: AXStaticText'"); > shouldBe("body.childAtIndex(1).isAttributeSettable('AXFocused')", "true"); >diff --git a/LayoutTests/accessibility/mac/element-level-expected.txt b/LayoutTests/accessibility/mac/element-level-expected.txt >index 1742bb4ba380..0559aa4f5ee0 100644 >--- a/LayoutTests/accessibility/mac/element-level-expected.txt >+++ b/LayoutTests/accessibility/mac/element-level-expected.txt >@@ -12,7 +12,7 @@ This tests elements' accessibility level value. > On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". > > >-PASS body.childAtIndex(0).childAtIndex(0).numberAttributeValue('AXBlockQuoteLevel') is 1 >+PASS body.childAtIndex(0).numberAttributeValue('AXBlockQuoteLevel') is 1 > PASS body.childAtIndex(1).childAtIndex(0).numberAttributeValue('AXBlockQuoteLevel') is 2 > PASS body.childAtIndex(2).numberAttributeValue('AXBlockQuoteLevel') is 0 > PASS body.childAtIndex(2).numberAttributeValue('AXValue') is 1 >diff --git a/LayoutTests/accessibility/mac/element-level.html b/LayoutTests/accessibility/mac/element-level.html >index 2b6a528ae4bd..10822a6f894b 100644 >--- a/LayoutTests/accessibility/mac/element-level.html >+++ b/LayoutTests/accessibility/mac/element-level.html >@@ -35,7 +35,7 @@ > var body = accessibilityController.focusedElement; > > // Blockquote levels. >- shouldBe("body.childAtIndex(0).childAtIndex(0).numberAttributeValue('AXBlockQuoteLevel')", "1"); >+ shouldBe("body.childAtIndex(0).numberAttributeValue('AXBlockQuoteLevel')", "1"); > shouldBe("body.childAtIndex(1).childAtIndex(0).numberAttributeValue('AXBlockQuoteLevel')", "2"); > // Non-blockquotes should return a blockquote level of 0. > shouldBe("body.childAtIndex(2).numberAttributeValue('AXBlockQuoteLevel')", "0"); >diff --git a/LayoutTests/accessibility/mac/figure-element-expected.txt b/LayoutTests/accessibility/mac/figure-element-expected.txt >index 15ceb230038c..850f7797c357 100644 >--- a/LayoutTests/accessibility/mac/figure-element-expected.txt >+++ b/LayoutTests/accessibility/mac/figure-element-expected.txt >@@ -29,14 +29,14 @@ figure4 role: AXRole: AXGroup > figure4 roleDescription: AXRoleDescription: figure > figure4 description: AXDescription: Figcaption element > figure4 helpText: AXHelp: >-PASS titleUIElement.isEqual(figureCaption) is true >+PASS (isIgnored(titleUIElement) && isIgnored(figureCaption)) || titleUIElement.isEqual(figureCaption) is true > > Test figure with figcaption element and title attribute. > figure5 role: AXRole: AXGroup > figure5 roleDescription: AXRoleDescription: figure > figure5 description: AXDescription: Figcaption element > figure5 helpText: AXHelp: title attribute >-PASS titleUIElement.isEqual(figureCaption) is true >+PASS (isIgnored(titleUIElement) && isIgnored(figureCaption)) || titleUIElement.isEqual(figureCaption) is true > > PASS successfullyParsed is true > >diff --git a/LayoutTests/accessibility/mac/figure-element.html b/LayoutTests/accessibility/mac/figure-element.html >index f907c0de3a7e..b8debd2acea8 100644 >--- a/LayoutTests/accessibility/mac/figure-element.html >+++ b/LayoutTests/accessibility/mac/figure-element.html >@@ -42,6 +42,10 @@ > > <script> > >+ function isIgnored(axElement) { >+ return !axElement || axElement.isIgnored; >+ } >+ > description("This tests that the 'figure' element is accessible on the Mac."); > > if (window.accessibilityController) { >@@ -57,7 +61,7 @@ > var titleUIElement = figure.titleUIElement(); > if (k >= 4) { > var figureCaption = accessibilityController.accessibleElementById("figCaption" + k); >- shouldBeTrue("titleUIElement.isEqual(figureCaption)"); >+ shouldBeTrue("(isIgnored(titleUIElement) && isIgnored(figureCaption)) || titleUIElement.isEqual(figureCaption)"); > } else > shouldBeTrue("!titleUIElement"); > debug(""); >diff --git a/LayoutTests/accessibility/mac/html-section-elements-expected.txt b/LayoutTests/accessibility/mac/html-section-elements-expected.txt >index a7c91715eec9..439b952da52d 100644 >--- a/LayoutTests/accessibility/mac/html-section-elements-expected.txt >+++ b/LayoutTests/accessibility/mac/html-section-elements-expected.txt >@@ -20,7 +20,7 @@ PASS body.childAtIndex(3).subrole is 'AXSubrole: AXDocumentArticle' > PASS body.childAtIndex(4).subrole is 'AXSubrole: AXLandmarkNavigation' > PASS body.childAtIndex(5).subrole is 'AXSubrole: AXLandmarkComplementary' > PASS body.childAtIndex(6).childAtIndex(0).subrole is 'AXSubrole: ' >-PASS body.childAtIndex(7).childAtIndex(0).subrole is 'AXSubrole: ' >+PASS body.childAtIndex(7).role is 'AXRole: AXStaticText' > PASS successfullyParsed is true > > TEST COMPLETE >diff --git a/LayoutTests/accessibility/mac/html-section-elements.html b/LayoutTests/accessibility/mac/html-section-elements.html >index 6222e2d43eb7..c58f0a801e21 100644 >--- a/LayoutTests/accessibility/mac/html-section-elements.html >+++ b/LayoutTests/accessibility/mac/html-section-elements.html >@@ -44,7 +44,8 @@ > shouldBe("body.childAtIndex(6).childAtIndex(0).subrole", "'AXSubrole: '"); > > // When a header and footer are inside a section, they should not be landmarks. >- shouldBe("body.childAtIndex(7).childAtIndex(0).subrole", "'AXSubrole: '"); >+ // Instead, expect only the static text inside to be exposed. >+ shouldBe("body.childAtIndex(7).role", "'AXRole: AXStaticText'"); > } > > </script> >diff --git a/LayoutTests/accessibility/mac/iframe-aria-hidden-expected.txt b/LayoutTests/accessibility/mac/iframe-aria-hidden-expected.txt >index dffc9c9e1f26..4cf1a20f7829 100644 >--- a/LayoutTests/accessibility/mac/iframe-aria-hidden-expected.txt >+++ b/LayoutTests/accessibility/mac/iframe-aria-hidden-expected.txt >@@ -4,10 +4,10 @@ This tests that aria-hidden will affect the visibility of the web area and scrol > On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". > > >-PASS body.childrenCount is 3 >-PASS body.childAtIndex(0).childrenCount is 0 >+PASS body.childrenCount is 2 >+PASS body.childAtIndex(0).childrenCount is 1 > PASS body.childrenCount is 4 >-PASS body.childAtIndex(0).childAtIndex(0).childAtIndex(0).role is 'AXRole: AXWebArea' >+PASS body.childAtIndex(0).childAtIndex(0).role is 'AXRole: AXWebArea' > PASS successfullyParsed is true > > TEST COMPLETE >diff --git a/LayoutTests/accessibility/mac/iframe-aria-hidden.html b/LayoutTests/accessibility/mac/iframe-aria-hidden.html >index 416aaa5bb744..d1d5a51c2c05 100644 >--- a/LayoutTests/accessibility/mac/iframe-aria-hidden.html >+++ b/LayoutTests/accessibility/mac/iframe-aria-hidden.html >@@ -24,8 +24,8 @@ if (window.accessibilityController) { > var body = accessibilityController.focusedElement; > > window.onload = function() { >- shouldBe("body.childrenCount", "3"); >- shouldBe("body.childAtIndex(0).childrenCount", "0"); >+ shouldBe("body.childrenCount", "2"); >+ shouldBe("body.childAtIndex(0).childrenCount", "1"); > > document.getElementById("iframe").setAttribute("aria-hidden", "false"); > >@@ -33,7 +33,7 @@ if (window.accessibilityController) { > document.body.offsetWidth; > > shouldBe("body.childrenCount", "4"); >- shouldBe("body.childAtIndex(0).childAtIndex(0).childAtIndex(0).role", "'AXRole: AXWebArea'"); >+ shouldBe("body.childAtIndex(0).childAtIndex(0).role", "'AXRole: AXWebArea'"); > > finishJSTest(); > } >diff --git a/LayoutTests/accessibility/mac/iframe-pdf-expected.txt b/LayoutTests/accessibility/mac/iframe-pdf-expected.txt >index dc882a7bd297..1858150c4c4f 100644 >--- a/LayoutTests/accessibility/mac/iframe-pdf-expected.txt >+++ b/LayoutTests/accessibility/mac/iframe-pdf-expected.txt >@@ -7,7 +7,6 @@ At index 0, got AXRole: AXWebArea > At index 0, got AXRole: AXGroup > At index 0, got AXRole: AXGroup > At index 0, got AXRole: AXGroup >-At index 0, got AXRole: AXGroup > At index 0, got AXRole: AXPage > At index 0, got AXRole: AXGroup > At index 0, got AXRole: AXGroup >diff --git a/LayoutTests/accessibility/mac/iframe-pdf.html b/LayoutTests/accessibility/mac/iframe-pdf.html >index 11def118cb41..d728e475e58f 100644 >--- a/LayoutTests/accessibility/mac/iframe-pdf.html >+++ b/LayoutTests/accessibility/mac/iframe-pdf.html >@@ -35,7 +35,7 @@ > // and the PDF inside the iframe are fully loaded. > await waitFor(() => { > let container = accessibilityController.accessibleElementById("container"); >- [traversalString, textNode] = traverseChildrenWithPath(container, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0]); >+ [traversalString, textNode] = traverseChildrenWithPath(container, [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0]); > return textNode; > }); > testOutput += "Traversal path to text node inside PDF:\n\n"; >diff --git a/LayoutTests/accessibility/mac/label-element-with-hidden-control.html b/LayoutTests/accessibility/mac/label-element-with-hidden-control.html >index 4c5814199a14..3e2a9a334d5f 100644 >--- a/LayoutTests/accessibility/mac/label-element-with-hidden-control.html >+++ b/LayoutTests/accessibility/mac/label-element-with-hidden-control.html >@@ -20,7 +20,7 @@ > > var body = document.getElementById("body"); > body.focus(); >- var container = accessibilityController.focusedElement.childAtIndex(0); >+ var container = accessibilityController.focusedElement; > shouldBe("container.childAtIndex('0').role", "'AXRole: AXStaticText'"); > shouldBe("container.childAtIndex('0').childAtIndex(0).role", "'AXRole: AXStaticText'"); > shouldBe("container.childAtIndex('0').childAtIndex(0).stringValue", "'AXValue: Test label1'"); >diff --git a/LayoutTests/accessibility/mac/math-alttext.html b/LayoutTests/accessibility/mac/math-alttext.html >index 559d78a0067c..7c1cd7cbc951 100644 >--- a/LayoutTests/accessibility/mac/math-alttext.html >+++ b/LayoutTests/accessibility/mac/math-alttext.html >@@ -41,7 +41,7 @@ > > if (window.accessibilityController) { > >- var math = accessibilityController.rootElement.childAtIndex(0).childAtIndex(0).childAtIndex(0); >+ var math = accessibilityController.rootElement.childAtIndex(0).childAtIndex(0); > shouldBe("math.role", "'AXRole: AXGroup'"); > shouldBe("math.subrole", "'AXSubrole: AXDocumentMath'"); > shouldBe("math.description", "'AXDescription: F e sub 1 minus x, end subscript. C o sub x, S b sub 2'"); >diff --git a/LayoutTests/accessibility/mac/nested-inline-elements-children.html b/LayoutTests/accessibility/mac/nested-inline-elements-children.html >index 2780fd850cc7..49121938faff 100644 >--- a/LayoutTests/accessibility/mac/nested-inline-elements-children.html >+++ b/LayoutTests/accessibility/mac/nested-inline-elements-children.html >@@ -22,7 +22,7 @@ > > <body id="body"> > >-<div> >+<div id="content" role="group"> > <span> > <span> > test1 >@@ -40,7 +40,7 @@ > if (window.accessibilityController) { > description("This tests that when you have nested inline continuations, we add the children correctly."); > >- var content = accessibilityController.rootElement.childAtIndex(0).childAtIndex(0); >+ var content = accessibilityController.accessibleElementById("content"); > dumpAccessibilityChildren(content, 0); > > shouldBe("content.childrenCount", "3"); >diff --git a/LayoutTests/accessibility/mac/pseudo-element-text-markers-expected.txt b/LayoutTests/accessibility/mac/pseudo-element-text-markers-expected.txt >index 4a3073f5edfa..e5298f2da603 100644 >--- a/LayoutTests/accessibility/mac/pseudo-element-text-markers-expected.txt >+++ b/LayoutTests/accessibility/mac/pseudo-element-text-markers-expected.txt >@@ -15,7 +15,6 @@ PASS successfullyParsed is true > TEST COMPLETE > AXRole: AXScrollArea AXValue: > AXRole: AXWebArea AXValue: >-AXRole: AXGroup AXValue: > AXRole: AXStaticText AXValue: Hello > AXRole: AXGroup AXValue: > AXRole: AXStaticText AXValue: This tests that the pseudo element style:body:before is accessible via the accessibility tree but not via TextMarkers. >@@ -28,7 +27,6 @@ AXRole: AXStaticText AXValue: ". > AXRole: AXGroup AXValue: > AXRole: AXStaticText AXValue: AXRole: AXScrollArea AXValue: > AXRole: AXStaticText AXValue: AXRole: AXWebArea AXValue: >-AXRole: AXStaticText AXValue: AXRole: AXGroup AXValue: > AXRole: AXStaticText AXValue: AXRole: AXStaticText AXValue: Hello > AXRole: AXStaticText AXValue: AXRole: AXGroup AXValue: > AXRole: AXStaticText AXValue: AXRole: AXStaticText AXValue: This tests that the pseudo element style:body:before is accessible via the accessibility tree but not via TextMarkers. >diff --git a/LayoutTests/accessibility/mac/pseudo-element-text-markers.html b/LayoutTests/accessibility/mac/pseudo-element-text-markers.html >index 1fbbc4e93abf..ff036bc6b53d 100644 >--- a/LayoutTests/accessibility/mac/pseudo-element-text-markers.html >+++ b/LayoutTests/accessibility/mac/pseudo-element-text-markers.html >@@ -22,7 +22,7 @@ > let root = accessibilityController.rootElement; > dumpAccessibilityTree(root); > >- var pseudoElement = root.childAtIndex(0).childAtIndex(0).childAtIndex(0); >+ var pseudoElement = root.childAtIndex(0).childAtIndex(0); > shouldBe("pseudoElement.role", "'AXRole: AXStaticText'"); > shouldBe("pseudoElement.stringValue", "'AXValue: Hello'"); > >diff --git a/LayoutTests/accessibility/mac/search-predicate-visited-links-expected.txt b/LayoutTests/accessibility/mac/search-predicate-visited-links-expected.txt >index d9b1aa5495ad..5e55b316ea47 100644 >--- a/LayoutTests/accessibility/mac/search-predicate-visited-links-expected.txt >+++ b/LayoutTests/accessibility/mac/search-predicate-visited-links-expected.txt >@@ -5,9 +5,9 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE > > > PASS resultElement.boolAttributeValue('AXVisited') is false >-PASS resultElement.childAtIndex(0).stringValue is 'AXValue: link' >+PASS resultElement.stringValue is 'AXValue: link' > PASS resultElement.boolAttributeValue('AXVisited') is true >-PASS resultElement.childAtIndex(0).stringValue is 'AXValue: link' >+PASS resultElement.stringValue is 'AXValue: link' > PASS successfullyParsed is true > > TEST COMPLETE >diff --git a/LayoutTests/accessibility/mac/search-predicate-visited-links.html b/LayoutTests/accessibility/mac/search-predicate-visited-links.html >index 8f76eb9eded9..dce051486b1f 100644 >--- a/LayoutTests/accessibility/mac/search-predicate-visited-links.html >+++ b/LayoutTests/accessibility/mac/search-predicate-visited-links.html >@@ -25,7 +25,7 @@ > startElement = accessibilityController.focusedElement.childAtIndex(0); > resultElement = containerElement.uiElementForSearchPredicate(startElement, true, "AXUnvisitedLinkSearchKey", "", false); > shouldBe("resultElement.boolAttributeValue('AXVisited')", "false"); >- shouldBe("resultElement.childAtIndex(0).stringValue", "'AXValue: link'"); >+ shouldBe("resultElement.stringValue", "'AXValue: link'"); > > // Visited link. > accessibilityController.focusedElement.childAtIndex(0).childAtIndex(0).press(); >@@ -33,7 +33,7 @@ > > resultElement = containerElement.uiElementForSearchPredicate(startElement, true, "AXVisitedLinkSearchKey", "", false); > shouldBe("resultElement.boolAttributeValue('AXVisited')", "true"); >- shouldBe("resultElement.childAtIndex(0).stringValue", "'AXValue: link'"); >+ shouldBe("resultElement.stringValue", "'AXValue: link'"); > > finishJSTest(); > }, 50); >diff --git a/LayoutTests/accessibility/mac/slider-allows-title-ui-element.html b/LayoutTests/accessibility/mac/slider-allows-title-ui-element.html >index af4f1ddbc01e..301a2edc3877 100644 >--- a/LayoutTests/accessibility/mac/slider-allows-title-ui-element.html >+++ b/LayoutTests/accessibility/mac/slider-allows-title-ui-element.html >@@ -21,7 +21,7 @@ > var slider = accessibilityController.focusedElement; > > document.getElementById("title").focus(); >- var title = accessibilityController.rootElement.childAtIndex(0).childAtIndex(0).childAtIndex(0); >+ var title = accessibilityController.rootElement.childAtIndex(0).childAtIndex(0); > > shouldBeTrue("slider.titleUIElement().isEqual(title)"); > shouldBe("title.role", "'AXRole: AXStaticText'"); >diff --git a/LayoutTests/accessibility/mac/stale-textmarker-crash.html b/LayoutTests/accessibility/mac/stale-textmarker-crash.html >index b8520b1bdfcf..e9cea79dc664 100644 >--- a/LayoutTests/accessibility/mac/stale-textmarker-crash.html >+++ b/LayoutTests/accessibility/mac/stale-textmarker-crash.html >@@ -22,11 +22,11 @@ > function runTest() { > > // Retrieve a marker for the search field in the iframe and cache it. >- var searchField1 = accessibilityController.accessibleElementById("content").childAtIndex(0).childAtIndex(0).childAtIndex(0).childAtIndex(0); >+ var searchField1 = accessibilityController.accessibleElementById("content").childAtIndex(0).childAtIndex(0).childAtIndex(0); > var range1 = searchField1.textMarkerRangeForElement(searchField1); > cachedMarker1 = searchField1.startTextMarkerForTextMarkerRange(range1); > >- var searchField2 = accessibilityController.accessibleElementById("content").childAtIndex(0).childAtIndex(0).childAtIndex(0).childAtIndex(1); >+ var searchField2 = accessibilityController.accessibleElementById("content").childAtIndex(0).childAtIndex(0).childAtIndex(1); > var range2 = searchField2.textMarkerRangeForElement(searchField2); > cachedMarker2 = searchField2.startTextMarkerForTextMarkerRange(range2); > >diff --git a/LayoutTests/accessibility/mac/supports-focus-setting.html b/LayoutTests/accessibility/mac/supports-focus-setting.html >index d35bd2421c0b..b05b06b7b459 100644 >--- a/LayoutTests/accessibility/mac/supports-focus-setting.html >+++ b/LayoutTests/accessibility/mac/supports-focus-setting.html >@@ -24,7 +24,7 @@ var successfullyParsed = false; > if (window.accessibilityController) { > > document.getElementById("body").focus(); >- var group = accessibilityController.focusedElement.childAtIndex(0); >+ var group = accessibilityController.focusedElement; > shouldBe("group.childAtIndex(0).isFocusable", "true"); > shouldBe("group.childAtIndex(1).isFocusable", "false"); > shouldBe("group.childAtIndex(2).isFocusable", "true"); >diff --git a/LayoutTests/accessibility/nochildren-elements.html b/LayoutTests/accessibility/nochildren-elements.html >index 7d4c6284d3ab..bf4d034e89bc 100644 >--- a/LayoutTests/accessibility/nochildren-elements.html >+++ b/LayoutTests/accessibility/nochildren-elements.html >@@ -24,10 +24,9 @@ > body.focus(); > var focusedElement = accessibilityController.focusedElement; > >- // this input=file is inside of a group, so we need to go two levels > var element1 = focusedElement.childAtIndex(0); >- element1 = element1.childAtIndex(0); >- >+ if (accessibilityController.platformName === "atspi") >+ element1 = focusedElement.childAtIndex(0).childAtIndex(0); > var element2 = focusedElement.childAtIndex(1); > > var element1Children = element1.attributesOfChildren(); >diff --git a/LayoutTests/accessibility/table-cell-display-block.html b/LayoutTests/accessibility/table-cell-display-block.html >index b369e1b33594..e8b3e898f588 100644 >--- a/LayoutTests/accessibility/table-cell-display-block.html >+++ b/LayoutTests/accessibility/table-cell-display-block.html >@@ -38,7 +38,9 @@ > // Now check a table that uses a different role to make sure we don't have any cell roles. > var table2 = accessibilityController.accessibleElementById("table2"); > shouldBe("table2.role", "'AXRole: AXGroup'"); >- var cell2 = table2.childAtIndex(0).childAtIndex(0); >+ var cell2 = table2.childAtIndex(0); >+ if (accessibilityController.platformName === "atspi") >+ cell2 = table2.childAtIndex(0).childAtIndex(0); > shouldBeFalse("cell2.role == 'AXRole: AXCell'"); > > document.getElementById("content").style.visibility = "hidden"; >diff --git a/LayoutTests/platform/glib/TestExpectations b/LayoutTests/platform/glib/TestExpectations >index 6510aa5e3e9d..8057f6421482 100644 >--- a/LayoutTests/platform/glib/TestExpectations >+++ b/LayoutTests/platform/glib/TestExpectations >@@ -1954,6 +1954,9 @@ http/tests/webrtc [ Skip ] > # Failing since more testcases were added in https://bugs.webkit.org/show_bug.cgi?id=242092 > accessibility/table-exposure-updates-dynamically.html [ Skip ] > >+# GTK already has its own version of this test (accessibility/gtk/aria-roles-unignored.html). >+accessibility/aria-roles-unignored.html [ Skip ] >+ > # Accessibility tests that should never be run for GTK/WPE due to being > # written in a platform-specific way. They should either be moved to > # the right platform or re-written in a more platform-agnostic way. >diff --git a/LayoutTests/platform/glib/accessibility/aria-hidden-false-works-in-subtrees-expected.txt b/LayoutTests/platform/glib/accessibility/aria-hidden-false-works-in-subtrees-expected.txt >index c43a5ec257c8..8a8264a69508 100644 >--- a/LayoutTests/platform/glib/accessibility/aria-hidden-false-works-in-subtrees-expected.txt >+++ b/LayoutTests/platform/glib/accessibility/aria-hidden-false-works-in-subtrees-expected.txt >@@ -22,7 +22,7 @@ PASS object.childrenCount is 0 > PASS object.role is 'AXRole: AXSection' > PASS object.childrenCount is 1 > PASS object.childAtIndex(0).role is 'AXRole: AXButton' >-Non-rendered iframe content should not be visible when aria-hidden=true. The first child should be a group and NOT static text. >+Non-rendered iframe content should not be visible when aria-hidden=true. The first child should NOT be static text. > iFrame child role: AXRole: AXWebArea > PASS successfullyParsed is true > >diff --git a/LayoutTests/platform/glib/accessibility/deleting-iframe-destroys-axcache-expected.txt b/LayoutTests/platform/glib/accessibility/deleting-iframe-destroys-axcache-expected.txt >index 2e51420f25c1..b7d5a5e8bb9e 100644 >--- a/LayoutTests/platform/glib/accessibility/deleting-iframe-destroys-axcache-expected.txt >+++ b/LayoutTests/platform/glib/accessibility/deleting-iframe-destroys-axcache-expected.txt >@@ -30,8 +30,6 @@ AXRole: AXScrollArea > AXRole: AXParagraph AXValue: After > AXRole: AXParagraph AXValue: End of test > >-PASS frameBodyRole == frameBody.role is false >-PASS frameGroupRole == frameGroup.role is false > PASS frameButtonRole == frameButton.role is false > PASS root.isEqual(newRoot) is true > PASS body.isEqual(newBody) is true >diff --git a/LayoutTests/platform/ios/TestExpectations b/LayoutTests/platform/ios/TestExpectations >index 00a0e28c8b98..85c5245d13ec 100644 >--- a/LayoutTests/platform/ios/TestExpectations >+++ b/LayoutTests/platform/ios/TestExpectations >@@ -2127,6 +2127,7 @@ accessibility/aria-hidden-display-contents-element.html [ Pass ] > accessibility/aria-multiline.html [ Pass ] > accessibility/aria-readonly-updates-after-dynamic-change.html [ Pass ] > accessibility/aria-required-updates-after-dynamic-change.html [ Pass ] >+accessibility/aria-roles-unignored.html [ Pass ] > accessibility/aria-slider-value.html [ Pass ] > accessibility/display-contents-element-roles.html [ Pass ] > accessibility/element-haspopup.html [ Pass ] >diff --git a/LayoutTests/platform/ios/accessibility/aria-roles-unignored-expected.txt b/LayoutTests/platform/ios/accessibility/aria-roles-unignored-expected.txt >new file mode 100644 >index 000000000000..8b6161e2dfb0 >--- /dev/null >+++ b/LayoutTests/platform/ios/accessibility/aria-roles-unignored-expected.txt >@@ -0,0 +1,30 @@ >+This tests that ARIA roles are not ignored for 'p', 'label', 'form' and 'div' elements. >+ >+WebArea >+ Paragraph >+ StaticText >+ AXLabel: Simple paragraph >+ Grid >+ Unknown >+ Label >+ StaticText >+ AXLabel: A label >+ Heading >+ StaticText >+ AXLabel: Who said label? It's a heading! >+ Form >+ StaticText >+ AXLabel: A form with a button >+ Button >+ Button >+ Div >+ StaticText >+ AXLabel: Just some text inside a div >+ TextField >+ >+PASS successfullyParsed is true >+ >+TEST COMPLETE >+ >+ >+ >diff --git a/LayoutTests/platform/mac/accessibility/deleting-iframe-destroys-axcache-expected.txt b/LayoutTests/platform/mac-wk1/accessibility/deleting-iframe-destroys-axcache-expected.txt >similarity index 76% >rename from LayoutTests/platform/mac/accessibility/deleting-iframe-destroys-axcache-expected.txt >rename to LayoutTests/platform/mac-wk1/accessibility/deleting-iframe-destroys-axcache-expected.txt >index 5f3558917a9a..9aa2289dc31f 100644 >--- a/LayoutTests/platform/mac/accessibility/deleting-iframe-destroys-axcache-expected.txt >+++ b/LayoutTests/platform/mac-wk1/accessibility/deleting-iframe-destroys-axcache-expected.txt >@@ -15,11 +15,9 @@ AXRole: AXScrollArea > AXRole: AXWebArea AXValue: > AXRole: AXGroup AXValue: > AXRole: AXStaticText AXValue: Before >- AXRole: AXGroup AXValue: >- AXRole: AXScrollArea >- AXRole: AXWebArea AXValue: >- AXRole: AXGroup AXValue: >- AXRole: AXButton AXValue: >+ AXRole: AXScrollArea >+ AXRole: AXWebArea AXValue: >+ AXRole: AXButton AXValue: > AXRole: AXGroup AXValue: > AXRole: AXStaticText AXValue: After > AXRole: AXGroup AXValue: >@@ -33,8 +31,6 @@ AXRole: AXScrollArea > AXRole: AXStaticText AXValue: After > AXRole: AXGroup AXValue: > >-PASS frameBodyRole == frameBody.role is false >-PASS frameGroupRole == frameGroup.role is false > PASS frameButtonRole == frameButton.role is false > PASS root.isEqual(newRoot) is true > PASS body.isEqual(newBody) is true >diff --git a/LayoutTests/platform/mac-wk1/accessibility/dynamically-changing-iframe-remains-accessible-expected.txt b/LayoutTests/platform/mac-wk1/accessibility/dynamically-changing-iframe-remains-accessible-expected.txt >index 1022eb1aee3e..a4c030210b88 100644 >--- a/LayoutTests/platform/mac-wk1/accessibility/dynamically-changing-iframe-remains-accessible-expected.txt >+++ b/LayoutTests/platform/mac-wk1/accessibility/dynamically-changing-iframe-remains-accessible-expected.txt >@@ -7,19 +7,15 @@ text-input-outside-iframe > > AXRole: AXWebArea > >-AXRole: AXGroup >- > AXRole: AXStaticText > AXValue: Purple pineapple > > AXRole: AXWebArea > >-AXRole: AXGroup >- > AXRole: AXStaticText > AXValue: Purple pineapple > >-Traversed 7 elements. >+Traversed 5 elements. > PASS successfullyParsed is true > > TEST COMPLETE >diff --git a/LayoutTests/platform/mac-wk1/accessibility/mac/html-slider-indicator-expected.txt b/LayoutTests/platform/mac-wk1/accessibility/mac/html-slider-indicator-expected.txt >new file mode 100644 >index 000000000000..ac0d73e1a3b5 >--- /dev/null >+++ b/LayoutTests/platform/mac-wk1/accessibility/mac/html-slider-indicator-expected.txt >@@ -0,0 +1,29 @@ >+ >+This tests that a basic range returns all the correct information for the mac platform. >+ >+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". >+ >+ >+PASS range.minValue is 0 >+PASS range.maxValue is 100 >+PASS range.intValue is 50 >+PASS valueIndicator.intValue is 50 >+PASS range.intValue is 49 >+PASS valueIndicator.intValue is 49 >+PASS range.intValue is 50 >+PASS valueIndicator.intValue is 50 >+PASS range.intValue is 55 >+PASS valueIndicator.intValue is 55 >+PASS range.intValue is 50 >+PASS valueIndicator.intValue is 50 >+FAIL valueIndicator.isEqual(hitTestIndicator) should be true. Was false. >+PASS range.isEqual(hitTestRange) is true >+PASS successfullyParsed is true >+Some tests failed. >+ >+TEST COMPLETE >+Successfully received AXValueChanged >+Successfully received AXValueChanged >+Successfully received AXValueChanged >+Successfully received AXValueChanged >+ >diff --git a/LayoutTests/platform/mac-wk1/accessibility/roles-exposed-expected.txt b/LayoutTests/platform/mac-wk1/accessibility/roles-exposed-expected.txt >index f2a3d19b1879..0b6c4b3b0a19 100644 >--- a/LayoutTests/platform/mac-wk1/accessibility/roles-exposed-expected.txt >+++ b/LayoutTests/platform/mac-wk1/accessibility/roles-exposed-expected.txt >@@ -131,9 +131,7 @@ header > AXRoleDescription: banner > > hgroup >- AXRole: AXGroup >- AXSubrole: >- AXRoleDescription: group >+ Could not get AX element. > > h1 > AXRole: AXHeading >diff --git a/LayoutTests/platform/mac-wk2/accessibility/deleting-iframe-destroys-axcache-expected.txt b/LayoutTests/platform/mac-wk2/accessibility/deleting-iframe-destroys-axcache-expected.txt >index a51e3a61e84a..8f0cb990ffc3 100644 >--- a/LayoutTests/platform/mac-wk2/accessibility/deleting-iframe-destroys-axcache-expected.txt >+++ b/LayoutTests/platform/mac-wk2/accessibility/deleting-iframe-destroys-axcache-expected.txt >@@ -15,11 +15,9 @@ AXRole: AXScrollArea AXValue: > AXRole: AXWebArea AXValue: > AXRole: AXGroup AXValue: > AXRole: AXStaticText AXValue: Before >- AXRole: AXGroup AXValue: >- AXRole: AXScrollArea AXValue: >- AXRole: AXWebArea AXValue: >- AXRole: AXGroup AXValue: >- AXRole: AXButton AXValue: >+ AXRole: AXScrollArea AXValue: >+ AXRole: AXWebArea AXValue: >+ AXRole: AXButton AXValue: > AXRole: AXGroup AXValue: > AXRole: AXStaticText AXValue: After > AXRole: AXGroup AXValue: >@@ -33,8 +31,6 @@ AXRole: AXScrollArea AXValue: > AXRole: AXStaticText AXValue: After > AXRole: AXGroup AXValue: > >-PASS frameBodyRole == frameBody.role is false >-PASS frameGroupRole == frameGroup.role is false > PASS frameButtonRole == frameButton.role is false > PASS root.isEqual(newRoot) is true > PASS body.isEqual(newBody) is true >diff --git a/LayoutTests/platform/mac-wk2/accessibility/roles-exposed-expected.txt b/LayoutTests/platform/mac-wk2/accessibility/roles-exposed-expected.txt >index 7aaafb946b87..e763d146aa31 100644 >--- a/LayoutTests/platform/mac-wk2/accessibility/roles-exposed-expected.txt >+++ b/LayoutTests/platform/mac-wk2/accessibility/roles-exposed-expected.txt >@@ -131,9 +131,7 @@ header > AXRoleDescription: banner > > hgroup >- AXRole: AXGroup >- AXSubrole: >- AXRoleDescription: group >+ Could not get AX element. > > h1 > AXRole: AXHeading >diff --git a/LayoutTests/platform/mac/TestExpectations b/LayoutTests/platform/mac/TestExpectations >index 039c1a857e17..76f8ef038a0c 100644 >--- a/LayoutTests/platform/mac/TestExpectations >+++ b/LayoutTests/platform/mac/TestExpectations >@@ -1505,6 +1505,13 @@ webkit.org/b/205361 [ Release ] crypto/workers/subtle/aes-indexeddb.html [ Pass > > webkit.org/b/205403 accessibility/presentation-role-iframe.html [ Pass Failure ] > >+# The actual behavior-under-test has been flaky since introduced, but this flakiness >+# was only exposed when an unnecessary group was removed from the AX tree in: >+# https://bugs.webkit.org/show_bug.cgi?id=243373 (AX: An unnecessary group is created for every block-flow box with no other useful AX semantics) >+# The flakey behavior is that sometimes the AXImage with "circle" AXStaticText child sometimes never becomes part of the AX tree. >+# Full investigation at: https://bugs.webkit.org/show_bug.cgi?id=243407 >+webkit.org/b/243407 accessibility/add-children-pseudo-element.html [ Pass Failure ] >+ > # Disabled temporarily since it is causing other tests to fail. > accessibility/mac/isolated-tree-mode-on-off.html [ Skip ] > >diff --git a/LayoutTests/platform/mac/accessibility/aria-hidden-false-works-in-subtrees-expected.txt b/LayoutTests/platform/mac/accessibility/aria-hidden-false-works-in-subtrees-expected.txt >index 06e02e6c6075..f16c880198f7 100644 >--- a/LayoutTests/platform/mac/accessibility/aria-hidden-false-works-in-subtrees-expected.txt >+++ b/LayoutTests/platform/mac/accessibility/aria-hidden-false-works-in-subtrees-expected.txt >@@ -25,8 +25,8 @@ PASS object.childrenCount is 0 > PASS object.role is 'AXRole: AXGroup' > PASS object.childrenCount is 1 > PASS object.childAtIndex(0).role is 'AXRole: AXButton' >-Non-rendered iframe content should not be visible when aria-hidden=true. The first child should be a group and NOT static text. >-iFrame child role: AXRole: AXGroup >+Non-rendered iframe content should not be visible when aria-hidden=true. The first child should NOT be static text. >+iFrame child role: AXRole: AXImage > PASS successfullyParsed is true > > TEST COMPLETE >diff --git a/LayoutTests/platform/mac/accessibility/aria-menubar-menuitems-expected.txt b/LayoutTests/platform/mac/accessibility/aria-menubar-menuitems-expected.txt >index 7b407cf0437b..68c6cc454c1c 100644 >--- a/LayoutTests/platform/mac/accessibility/aria-menubar-menuitems-expected.txt >+++ b/LayoutTests/platform/mac/accessibility/aria-menubar-menuitems-expected.txt >@@ -5,13 +5,9 @@ Menu item 2.1 > Menu item 2.2 > AXRole: AXMenuBar AXTitle: > AXRole: AXMenuItem AXTitle: Menu 1 >- AXRole: AXGroup AXTitle: >- AXRole: AXStaticText AXTitle: > AXRole: AXMenu AXTitle: > AXRole: AXMenuItem AXTitle: Menu item 1.1 > AXRole: AXMenuItem AXTitle: Menu 2 >- AXRole: AXGroup AXTitle: >- AXRole: AXStaticText AXTitle: > AXRole: AXMenu AXTitle: > AXRole: AXMenuItem AXTitle: Menu item 2.1 > AXRole: AXMenuItem AXTitle: Menu item 2.2 >diff --git a/LayoutTests/platform/mac/accessibility/generated-content-with-display-table-crash-expected.txt b/LayoutTests/platform/mac/accessibility/generated-content-with-display-table-crash-expected.txt >index 2c08593305b5..f518804ea243 100644 >--- a/LayoutTests/platform/mac/accessibility/generated-content-with-display-table-crash-expected.txt >+++ b/LayoutTests/platform/mac/accessibility/generated-content-with-display-table-crash-expected.txt >@@ -6,8 +6,7 @@ AXRole: AXWebArea AXValue: > AXRole: AXGroup AXValue: > AXRole: AXStaticText AXValue: foo > AXRole: AXStaticText AXValue: ! >- AXRole: AXGroup AXValue: >- AXRole: AXStaticText AXValue: bar >+ AXRole: AXStaticText AXValue: bar > AXRole: AXStaticText AXValue: ! > AXRole: AXGroup AXValue: > AXRole: AXStaticText AXValue: baz >diff --git a/LayoutTests/platform/mac/accessibility/image-with-alt-and-map-expected.txt b/LayoutTests/platform/mac/accessibility/image-with-alt-and-map-expected.txt >index b43bb4655d26..4750a93bb63d 100644 >--- a/LayoutTests/platform/mac/accessibility/image-with-alt-and-map-expected.txt >+++ b/LayoutTests/platform/mac/accessibility/image-with-alt-and-map-expected.txt >@@ -6,11 +6,10 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE > > > AXRole: AXWebArea AXTitle: AXDescription: >- AXRole: AXGroup AXTitle: AXDescription: >- AXRole: AXImageMap AXTitle: AXDescription: foo bar baz >- AXRole: AXLink AXTitle: AXDescription: foo >- AXRole: AXLink AXTitle: AXDescription: bar >- AXRole: AXLink AXTitle: AXDescription: baz >+ AXRole: AXImageMap AXTitle: AXDescription: foo bar baz >+ AXRole: AXLink AXTitle: AXDescription: foo >+ AXRole: AXLink AXTitle: AXDescription: bar >+ AXRole: AXLink AXTitle: AXDescription: baz > AXRole: AXGroup AXTitle: AXDescription: > PASS successfullyParsed is true > >diff --git a/LayoutTests/platform/mac/accessibility/img-fallsback-to-title-expected.txt b/LayoutTests/platform/mac/accessibility/img-fallsback-to-title-expected.txt >index f614421dadf8..80938d5ee971 100644 >--- a/LayoutTests/platform/mac/accessibility/img-fallsback-to-title-expected.txt >+++ b/LayoutTests/platform/mac/accessibility/img-fallsback-to-title-expected.txt >@@ -21,7 +21,7 @@ Image4: > AXTitle: > AXDescription: alt > AXHelp: test4 >-PASS imagesGroup.childAtIndex(0).childrenCount is 2 >+PASS imagesGroup.childrenCount is 4 > PASS successfullyParsed is true > > TEST COMPLETE >diff --git a/LayoutTests/platform/mac/accessibility/lists-expected.txt b/LayoutTests/platform/mac/accessibility/lists-expected.txt >index 6203ae533aa4..bdc8f820dd9f 100644 >--- a/LayoutTests/platform/mac/accessibility/lists-expected.txt >+++ b/LayoutTests/platform/mac/accessibility/lists-expected.txt >@@ -121,40 +121,6 @@ AXOrientation: AXVerticalOrientation > AXTitleUIElement: (null) > AXElementBusy: 0 > >------------- >-AXHasDocumentRoleAncestor: 0 >-AXHasWebApplicationAncestor: 0 >-AXRole: AXGroup >-AXSubrole: AXEmptyGroup >-AXRoleDescription: group >-AXChildren: <array of size 0> >-AXChildrenInNavigationOrder: <array of size 0> >-AXHelp: >-AXParent: <AXGroup> >-AXSize: NSSize: {784, 72} >-AXTitle: >-AXDescription: >-AXValue: >-AXFocused: 0 >-AXEnabled: 1 >-AXWindow: <AXGroup> >-AXSelectedTextMarkerRange: (null) >-AXStartTextMarker: <AXGroup> >-AXEndTextMarker: <AXGroup> >-AXVisited: 0 >-AXLinkedUIElements: <array of size 0> >-AXSelected: 0 >-AXBlockQuoteLevel: 0 >-AXTopLevelUIElement: <AXGroup> >-AXLanguage: >-AXDOMIdentifier: >-AXDOMClassList: <array of size 0> >-AXFocusableAncestor: <AXGroup> >-AXEditableAncestor: (null) >-AXHighestEditableAncestor: (null) >-AXTitleUIElement: (null) >-AXElementBusy: 0 >- > ------------ > > >diff --git a/LayoutTests/platform/win/TestExpectations b/LayoutTests/platform/win/TestExpectations >index b1da47b6672d..d9fd766e8f0d 100644 >--- a/LayoutTests/platform/win/TestExpectations >+++ b/LayoutTests/platform/win/TestExpectations >@@ -1615,6 +1615,8 @@ accessibility/aria-table-with-presentational-elements.html [ Skip ] > # stringValue is not implemented. > webkit.org/b/149177 accessibility/ax-value-with-search.html [ Skip ] > >+accessibility/aria-roles-unignored.html [ Skip ] >+ > # Accessibility tests for notifications that don't exist or aren't needed on Mac OS X (or Windows) > accessibility/aria-checkbox-sends-notification.html [ Skip ] > accessibility/combo-box-collapsed-selection-changed.html [ Skip ]
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 243373
:
461307
|
461308
|
461309
|
461338
|
461342
| 461347