Commit cf83c6bc authored by Rakina Zata Amni's avatar Rakina Zata Amni Committed by Commit Bot

Reland "DL: Fix flaky getFullAXTree & wrongly updated accessibility tests"

This is a reland of 2000b5b1

Got reverted because of MSAN failure didn't run the msan bot one last time before
submitting yesterday after I changed some things to use skip-viewport-activation, oops.
The MSAN failure is because we never initialize the enum ax::mojom::NameFrom  in
InspectorAccessibilityAgent::FillCoreProperties when the ax object is a display:none node
within a locked subtree, so I set a default value for it, and it doesn't fail now!

Original change's description:
> DL: Fix flaky getFullAXTree & wrongly updated accessibility tests
>
> A devtoools display locking a11y test was marked as failing in MSAN bots
> and is also flaky when tested locally, this CL updates that test and
> fixes the cause of the failure (getFullAXTree might be called when
> style/layout is dirty, which caused failing DCHECKs).
>
> Some other display locking a11y tests were not updated correctly, and is
> updated in this CL as well.
>
> Bug: 996625
> Change-Id: I32eac1385c54eb07b1e6dab800620a2485158437
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1846618
> Commit-Queue: Rakina Zata Amni <rakina@chromium.org>
> Reviewed-by: vmpstr <vmpstr@chromium.org>
> Reviewed-by: Alice Boxhall <aboxhall@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#706834}

Bug: 996625
Change-Id: I168e40614ab600d1bd11f5cf97c166fa95400213
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1866338Reviewed-by: default avatarAlice Boxhall <aboxhall@chromium.org>
Reviewed-by: default avatarvmpstr <vmpstr@chromium.org>
Commit-Queue: Rakina Zata Amni <rakina@chromium.org>
Cr-Commit-Position: refs/heads/master@{#708131}
parent a01a6b31
...@@ -2,9 +2,9 @@ ...@@ -2,9 +2,9 @@
@BLINK-ALLOW:offscreen @BLINK-ALLOW:offscreen
--> -->
<div> <div>
<div id="locked" rendersubtree="invisible"> <div id="locked" rendersubtree="invisible skip-viewport-activation">
<div>child</div> <div>child</div>
<div id="nested" rendersubtree="invisible">nested locked element!</div> <div id="nested" rendersubtree="invisible skip-viewport-activation">nested locked element!</div>
<div id="nonActivatable" rendersubtree="invisible skip-activation">nested non activatable locked element</div> <div id="nonActivatable" rendersubtree="invisible skip-activation">nested non activatable locked element</div>
</div> </div>
</div> </div>
......
...@@ -2,9 +2,9 @@ ...@@ -2,9 +2,9 @@
@BLINK-ALLOW:offscreen @BLINK-ALLOW:offscreen
--> -->
<div> <div>
<div id="locked" rendersubtree="invisible"> <div id="locked" rendersubtree="invisible skip-viewport-activation">
<div>child</div> <div>child</div>
<div id="nested" rendersubtree="invisible">nested locked element!</div> <div id="nested" rendersubtree="invisible skip-viewport-activation">nested locked element!</div>
<div id="nonActivatable" rendersubtree="invisible skip-activation">nested non activatable locked element</div> <div id="nonActivatable" rendersubtree="invisible skip-activation">nested non activatable locked element</div>
</div> </div>
</div> </div>
...@@ -2,9 +2,9 @@ ...@@ -2,9 +2,9 @@
@BLINK-ALLOW:offscreen @BLINK-ALLOW:offscreen
--> -->
<div> <div>
<div id="locked" rendersubtree="invisible skip-activation"> <div id="locked" rendersubtree="invisible skip-viewport-activation">
<div>child</div> <div>child</div>
<div id="nested" rendersubtree="invisible skip-activation">nested locked element!</div> <div id="nested" rendersubtree="invisible skip-viewport-activation">nested locked element!</div>
<div id="nonActivatable" rendersubtree="invisible skip-activation">nested non activatable locked element</div> <div id="nonActivatable" rendersubtree="invisible skip-activation">nested non activatable locked element</div>
<!-- <!--
TODO(rakina): Make display:none, visibility:hidden, aria-hidden nodes TODO(rakina): Make display:none, visibility:hidden, aria-hidden nodes
......
...@@ -2,9 +2,9 @@ ...@@ -2,9 +2,9 @@
@BLINK-ALLOW:offscreen @BLINK-ALLOW:offscreen
--> -->
<div> <div>
<div id="locked" rendersubtree="invisible"> <div id="locked" rendersubtree="invisible skip-viewport-activation">
<div>child</div> <div>child</div>
<div id="nested" rendersubtree="invisible">nested locked element!</div> <div id="nested" rendersubtree="invisible skip-viewport-activation">nested locked element!</div>
<div id="nonActivatable" rendersubtree="invisible skip-activation">nested non activatable locked element</div> <div id="nonActivatable" rendersubtree="invisible skip-activation">nested non activatable locked element</div>
<!-- <!--
TODO(rakina): Make display:none, visibility:hidden, aria-hidden nodes TODO(rakina): Make display:none, visibility:hidden, aria-hidden nodes
......
...@@ -5,6 +5,6 @@ ...@@ -5,6 +5,6 @@
<div id="locked" rendersubtree="invisible skip-activation"> <div id="locked" rendersubtree="invisible skip-activation">
<div>child</div> <div>child</div>
<div id="nested" rendersubtree="invisible skip-activation">nested locked element!</div> <div id="nested" rendersubtree="invisible skip-activation">nested locked element!</div>
<div id="activatable" rendersubtree="invisible skip-activation">non activatable locked element</div> <div id="activatable" rendersubtree="invisible skip-viewport-activation">activatable locked element</div>
</div> </div>
</div> </div>
...@@ -1561,6 +1561,9 @@ String AXObject::GetName(ax::mojom::NameFrom& name_from, ...@@ -1561,6 +1561,9 @@ String AXObject::GetName(ax::mojom::NameFrom& name_from,
bool hidden_and_ignored_but_included_in_tree = bool hidden_and_ignored_but_included_in_tree =
IsHiddenForTextAlternativeCalculation() && IsHiddenForTextAlternativeCalculation() &&
AccessibilityIsIgnoredButIncludedInTree(); AccessibilityIsIgnoredButIncludedInTree();
// Initialize |name_from|, as TextAlternative() might never set it in some
// cases.
name_from = ax::mojom::NameFrom::kNone;
String text = TextAlternative(false, hidden_and_ignored_but_included_in_tree, String text = TextAlternative(false, hidden_and_ignored_but_included_in_tree,
visited, name_from, &related_objects, nullptr); visited, name_from, &related_objects, nullptr);
......
...@@ -724,6 +724,8 @@ Response InspectorAccessibilityAgent::getFullAXTree( ...@@ -724,6 +724,8 @@ Response InspectorAccessibilityAgent::getFullAXTree(
Document* document = inspected_frames_->Root()->GetDocument(); Document* document = inspected_frames_->Root()->GetDocument();
if (!document) if (!document)
return Response::Error("No document."); return Response::Error("No document.");
if (document->View()->NeedsLayout() || document->NeedsLayoutTreeUpdate())
document->UpdateStyleAndLayout();
*nodes = std::make_unique<protocol::Array<protocol::Accessibility::AXNode>>(); *nodes = std::make_unique<protocol::Array<protocol::Accessibility::AXNode>>();
AXContext ax_context(*document); AXContext ax_context(*document);
AXObjectCacheImpl& cache = ToAXObjectCacheImpl(ax_context.GetAXObjectCache()); AXObjectCacheImpl& cache = ToAXObjectCacheImpl(ax_context.GetAXObjectCache());
......
...@@ -260,9 +260,6 @@ crbug.com/1004650 http/tests/security/contentSecurityPolicy/frame-src-cross-orig ...@@ -260,9 +260,6 @@ crbug.com/1004650 http/tests/security/contentSecurityPolicy/frame-src-cross-orig
# Display locking failures # Display locking failures
# MSAN failure
crbug.com/996625 inspector-protocol/accessibility/accessibility-getFullAXTree-display-locked.js [ Skip ]
crbug.com/849459 fragmentation/repeating-thead-under-repeating-thead.html [ Failure ] crbug.com/849459 fragmentation/repeating-thead-under-repeating-thead.html [ Failure ]
# These tests are no longer applicable in BlinkGenPropertyTree mode. # These tests are no longer applicable in BlinkGenPropertyTree mode.
......
(async function(testRunner) { (async function(testRunner) {
var {page, session, dp} = await testRunner.startHTML(` var {page, session, dp} = await testRunner.startHTML(`
<div id='activatable' rendersubtree='invisible-activatable'> <div id='activatable' rendersubtree='invisible skip-viewport-activation'>
locked locked
<div id='child'> <div id='child'>
child child
<div id='grandChild'>grandChild</div> <div id='grandChild'>grandChild</div>
</div> </div>
<div id='invisible' style='display:none'>invisible</div> <div id='invisible' style='display:none'>invisible</div>
<div id='nested' rendersubtree='invisible-activatable'>nested</div> <div id='nested' rendersubtree='invisible skip-viewport-activation'>nested</div>
text text
</div> </div>
<div id='nonActivatable' rendersubtree='invisible'>nonActivatable text</div> <div id='nonActivatable' rendersubtree='invisible skip-activation'>nonActivatable text</div>
<div id='normal'>normal text</div> <div id='normal'>normal text</div>
<script>
activatable.getBoundingClientRect(); // Force layout
</script>
`, 'Tests accessibility values of display locked nodes'); `, 'Tests accessibility values of display locked nodes');
const dumpAccessibilityNodesFromList = const dumpAccessibilityNodesFromList =
(await testRunner.loadScript('../resources/accessibility-dumpAccessibilityNodesFromList.js'))(testRunner, session); (await testRunner.loadScript('../resources/accessibility-dumpAccessibilityNodesFromList.js'))(testRunner, session);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment