New issue
Advanced search Search tips

Issue 786008 link

Starred by 1 user

Issue metadata

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



Sign in to add a comment

[Select-to-Speak] Recent changes caused Select-to-Speak to work poorly in Drive

Project Member Reported by katie@chromium.org, Nov 16 2017

Issue description

Putting the focus ring around paragraphs instead of nodes works poorly in Drive, because the whole document is being chosen as the paragraph's parent.

In addition, per-word highlighting isn't working.
 

Comment 1 by katie@chromium.org, Nov 16 2017

Looks like per-word highlighting is broken because the text is being marked as "offscreen", and as a result the meta-genericContainer of the text is what's being spoken.

The text is offscreen because two of its ancestors have a size of (0, 0).


Comment 2 by katie@chromium.org, Nov 16 2017

One of the ancestors may be kiz-zoomdocumentplugin-inner, which has size 0x0. The other is a div inside of that, also 0x0. But neither is overflow:hidden, so this may be a bug in calculating 'offscreen'.

Comment 3 by katie@chromium.org, Nov 16 2017

Owner: katie@chromium.org
Status: Assigned (was: Available)
Minimal example: the text here is being marked as offscreen but it should not be.

<div style="position:absolute; width: 0; height: 0; overflow: visible">
    <span>Text</span>
</div>

Comment 4 by katie@chromium.org, Nov 16 2017

Added example tests that should work later.
absolute-offscreen.html
440 bytes View Download
absolute-offscreen-expected-blink.txt
201 bytes View Download

Comment 5 by katie@chromium.org, Nov 16 2017

This should also mark the inner div offscreen:

<div style="border: 1px solid #f00; width: 600px; height: 400px; overflow: hidden;">
    Outer Div
    <div style="border: 1px solid #00f; position: relative; top: 500px;">
      Inner Div
    </div>
  </div>

Comment 6 by katie@chromium.org, Nov 16 2017

It seems like position:absolute changes the container, but without information about whether the div should clip its children or not, we may do the calculation incorrectly.

A solution is to pass a flag clipsChildren that is set to true by default on rootWebArea, window, maybe dialog and a few more, set to false on most views, set to true with overflow:hidden or overflow: scroll. Then use this flag to determine if clipping even needs to be calculated in ax_tree::RelativeToTreeBounds.

Comment 7 by katie@chromium.org, Nov 17 2017

Status: Started (was: Assigned)
Project Member

Comment 8 by bugdroid1@chromium.org, Nov 28 2017

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

commit c0c0d100d6ce747a9d1c595f37ec5804cbb354c8
Author: Katie Dektar <katydek@google.com>
Date: Tue Nov 28 20:33:31 2017

Add internal clips_children flag for calculating 'offscreen'.

Elements who clip their children continue to label nodes outside
their bounds as 'offscreen', whereas elements who do not clip
will no longer label their children nodes 'offscreen'.

This fixes a bug where absolutly positioned divs of size (0, 0)
with overflow:visible were having all children marked as offscreen.

Bug:  786008 
Change-Id: I9b4b3e944670035000b6a20c3c4752453e29a2bd
Reviewed-on: https://chromium-review.googlesource.com/777731
Commit-Queue: Katie D <katie@chromium.org>
Reviewed-by: Kinuko Yasuda <kinuko@chromium.org>
Reviewed-by: Dominic Mazzoni <dmazzoni@chromium.org>
Cr-Commit-Position: refs/heads/master@{#519819}
[modify] https://crrev.com/c0c0d100d6ce747a9d1c595f37ec5804cbb354c8/chrome/browser/ui/aura/accessibility/ax_tree_source_aura.cc
[modify] https://crrev.com/c0c0d100d6ce747a9d1c595f37ec5804cbb354c8/content/browser/accessibility/dump_accessibility_tree_browsertest.cc
[modify] https://crrev.com/c0c0d100d6ce747a9d1c595f37ec5804cbb354c8/content/browser/accessibility/one_shot_accessibility_tree_search_unittest.cc
[modify] https://crrev.com/c0c0d100d6ce747a9d1c595f37ec5804cbb354c8/content/renderer/accessibility/blink_ax_tree_source.cc
[add] https://crrev.com/c0c0d100d6ce747a9d1c595f37ec5804cbb354c8/content/test/data/accessibility/html/absolute-offscreen-expected-blink.txt
[add] https://crrev.com/c0c0d100d6ce747a9d1c595f37ec5804cbb354c8/content/test/data/accessibility/html/absolute-offscreen.html
[modify] https://crrev.com/c0c0d100d6ce747a9d1c595f37ec5804cbb354c8/third_party/WebKit/Source/modules/accessibility/AXImageMapLink.cpp
[modify] https://crrev.com/c0c0d100d6ce747a9d1c595f37ec5804cbb354c8/third_party/WebKit/Source/modules/accessibility/AXImageMapLink.h
[modify] https://crrev.com/c0c0d100d6ce747a9d1c595f37ec5804cbb354c8/third_party/WebKit/Source/modules/accessibility/AXInlineTextBox.cpp
[modify] https://crrev.com/c0c0d100d6ce747a9d1c595f37ec5804cbb354c8/third_party/WebKit/Source/modules/accessibility/AXInlineTextBox.h
[modify] https://crrev.com/c0c0d100d6ce747a9d1c595f37ec5804cbb354c8/third_party/WebKit/Source/modules/accessibility/AXMenuListOption.cpp
[modify] https://crrev.com/c0c0d100d6ce747a9d1c595f37ec5804cbb354c8/third_party/WebKit/Source/modules/accessibility/AXMenuListOption.h
[modify] https://crrev.com/c0c0d100d6ce747a9d1c595f37ec5804cbb354c8/third_party/WebKit/Source/modules/accessibility/AXNodeObject.cpp
[modify] https://crrev.com/c0c0d100d6ce747a9d1c595f37ec5804cbb354c8/third_party/WebKit/Source/modules/accessibility/AXNodeObject.h
[modify] https://crrev.com/c0c0d100d6ce747a9d1c595f37ec5804cbb354c8/third_party/WebKit/Source/modules/accessibility/AXObject.cpp
[modify] https://crrev.com/c0c0d100d6ce747a9d1c595f37ec5804cbb354c8/third_party/WebKit/Source/modules/accessibility/AXObject.h
[modify] https://crrev.com/c0c0d100d6ce747a9d1c595f37ec5804cbb354c8/third_party/WebKit/Source/modules/accessibility/AXSpinButton.cpp
[modify] https://crrev.com/c0c0d100d6ce747a9d1c595f37ec5804cbb354c8/third_party/WebKit/Source/modules/accessibility/AXSpinButton.h
[modify] https://crrev.com/c0c0d100d6ce747a9d1c595f37ec5804cbb354c8/third_party/WebKit/Source/modules/exported/WebAXObject.cpp
[modify] https://crrev.com/c0c0d100d6ce747a9d1c595f37ec5804cbb354c8/third_party/WebKit/public/web/WebAXObject.h
[modify] https://crrev.com/c0c0d100d6ce747a9d1c595f37ec5804cbb354c8/ui/accessibility/ax_enums.idl
[modify] https://crrev.com/c0c0d100d6ce747a9d1c595f37ec5804cbb354c8/ui/accessibility/ax_node_data.cc
[modify] https://crrev.com/c0c0d100d6ce747a9d1c595f37ec5804cbb354c8/ui/accessibility/ax_tree.cc
[modify] https://crrev.com/c0c0d100d6ce747a9d1c595f37ec5804cbb354c8/ui/accessibility/ax_tree_unittest.cc

Comment 9 by katie@chromium.org, Nov 28 2017

Status: Fixed (was: Started)

Sign in to add a comment