Use relative bounding boxes throughout Chrome accessibility

After a series of changes that added support in Blink for relative bounding
boxes for accessible objects, this change switches all of the code in Chrome
to use these relative bounding boxes.

This significantly cleans up the code to convert from local to global
coordinates. Instead of a complicated loop with lots of special cases
for things like out-of-process iframes, it's now a pretty straightforward
process of walking up the tree and applying offsets and transforms.

After this change lands successfully, we can delete the old absolute bounds
computation code from Blink.

BUG=618120
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:closure_compilation

Review-Url: https://codereview.chromium.org/2217363002
Cr-Commit-Position: refs/heads/master@{#412054}
diff --git a/ui/accessibility/ax_tree_combiner.cc b/ui/accessibility/ax_tree_combiner.cc
index 8214248..07318025 100644
--- a/ui/accessibility/ax_tree_combiner.cc
+++ b/ui/accessibility/ax_tree_combiner.cc
@@ -185,6 +185,10 @@
     for (size_t j = 0; j < node.child_ids.size(); ++j)
       node.child_ids[j] = MapId(tree_id, node.child_ids[j]);
 
+    // Reset the offset container ID because we make all bounding boxes
+    // absolute.
+    node.offset_container_id = -1;
+
     // Map other int attributes that refer to node IDs, and remove the
     // AX_ATTR_CHILD_TREE_ID attribute.
     for (size_t j = 0; j < node.int_attributes.size(); ++j) {