New issue
Advanced search Search tips

Issue 756788 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Aug 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Bug
Team-Accessibility



Sign in to add a comment

Empty AX nodes get bounds of screen

Reported by land...@opera.com, Aug 18 2017

Issue description

Chrome Version: master
OS: Linux

What steps will reproduce the problem?
(1) Load the attached test case
(2) Enable Chromevox Next
(3) Navigate in tab order

What is the expected result?
Focus highlight is a small rect in the top left corner of the divs.

What happens instead?
No focus hightlight.

What happens is that the code in extensions::ComputeGlobalNodeBounds computes the bounds of an empty aria node to the bounds of the (top most?) parent which is the whole screen it seems in this case.
So this function was giving bounds of (8,8 0x0), but is now giving bounds of (0,0 1280x720) in my setup.

This is a change of behavior with origin in https://chromium-review.googlesource.com/521686
A tentative way of addressing it was posted to https://chromium-review.googlesource.com/c/618719 but seems to break things.

The former behavior wasn't really optimal but gave us enough leeway to figure out proper visual bounds in the chromevox output javascript code by using the size of the nearest non empty parent.


 

Comment 1 by land...@opera.com, Aug 18 2017

empty_bounds.html
475 bytes View Download

Comment 2 by land...@opera.com, Aug 22 2017

@dmazzoni: What do you say about this bug? I can do some more digging into a solution but would like to hear your opinion on the validity of the issue.

Comment 3 by land...@opera.com, Aug 22 2017

I did a bit more digging into this and I may have found the source of the difference between the refactored code and the original.

It looks like the check for uninitialized rect in the top of AXTree::RelativeToTreeBounds doesn't check the uninitialized state, but rather for empty bounds. So, such bounds (which we want to preserve here) will be overwritten by the bounds of the current node we are processing for offsets, transforms etc.




Owner: dmazz...@chromium.org
Status: Started (was: Untriaged)
> What is the expected result?
> Focus highlight is a small rect in the top left corner of the divs.

I disagree with the expected result. We should never legitimately have a completely empty bounding rect for an object.

If you want a small rect in the top-left corner, just give it a width and height of 1px, and then everything should work fine.

With this example, I think we should fix it so that it inherits the bounds of the nearest ancestor with a nonzero width and height. I'm going to upload a change that does that.

Comment 5 by land...@opera.com, Aug 23 2017

@dmazzoni: I agree with your conclusion. That essentially what we have done in chromevox so far. Would be much better to do it in this part of the code directly. Thanks!
Project Member

Comment 6 by bugdroid1@chromium.org, Aug 29 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/4c9925b198332f5fbb82b3edb672ed55071f87dd

commit 4c9925b198332f5fbb82b3edb672ed55071f87dd
Author: Dominic Mazzoni <dmazzoni@chromium.org>
Date: Tue Aug 29 06:29:05 2017

Accessible objects with empty width and height should inherit from parent.

Bug:  756788 
Change-Id: Iac4a6ae59dd322418a2f7ddf01d02802982e31b7
Reviewed-on: https://chromium-review.googlesource.com/626942
Reviewed-by: Alice Boxhall <aboxhall@chromium.org>
Commit-Queue: Dominic Mazzoni <dmazzoni@chromium.org>
Cr-Commit-Position: refs/heads/master@{#498032}
[modify] https://crrev.com/4c9925b198332f5fbb82b3edb672ed55071f87dd/ui/accessibility/ax_tree.cc
[modify] https://crrev.com/4c9925b198332f5fbb82b3edb672ed55071f87dd/ui/accessibility/ax_tree_unittest.cc

Status: Fixed (was: Started)

Sign in to add a comment