ChromeVox sometimes traverses into invisible content (e.g. in AquaMail).
This is because, in the tree, we have structures like:
genericContainer {invisible}
genericContainer {}
staticText {} some text here
The nodes lower in the tree are invisible too, but not marked as such. ChromeVox walks in pre order backwards from a different subtree, and doesn't check on walking downward (since backwards pre order visits the lower node, in this case, the staticText, first before the genericContainers).
Solution
On Android side, when we see isVisibleToUser == false, simply apply that to the rest of that subtree.
Comment 1 by yawano@chromium.org
, Apr 13 2018