Index: content/renderer/accessibility/blink_ax_tree_source.cc |
diff --git a/content/renderer/accessibility/blink_ax_tree_source.cc b/content/renderer/accessibility/blink_ax_tree_source.cc |
index 2ba5be4e99daa2686deab061c830f81a78f781e1..13b255c6a1ffc98806fed1a3153e8ec13fd6fa95 100644 |
--- a/content/renderer/accessibility/blink_ax_tree_source.cc |
+++ b/content/renderer/accessibility/blink_ax_tree_source.cc |
@@ -26,12 +26,14 @@ |
#include "third_party/WebKit/public/web/WebNode.h" |
#include "third_party/WebKit/public/web/WebView.h" |
+ |
using base::ASCIIToUTF16; |
using base::UTF16ToUTF8; |
using blink::WebAXObject; |
using blink::WebDocument; |
using blink::WebDocumentType; |
using blink::WebElement; |
+using blink::WebFrame; |
using blink::WebLocalFrame; |
using blink::WebNode; |
using blink::WebVector; |
@@ -100,6 +102,13 @@ BlinkAXTreeSource::BlinkAXTreeSource(RenderViewImpl* render_view) |
BlinkAXTreeSource::~BlinkAXTreeSource() { |
} |
+void BlinkAXTreeSource::CollectChildFrameIdMapping( |
+ std::map<int32, int>* guest_instance_ids, |
+ std::map<int32, int>* frame_routing_ids) { |
+ guest_instance_ids_ = guest_instance_ids; |
+ frame_routing_ids_ = frame_routing_ids; |
+} |
+ |
blink::WebAXObject BlinkAXTreeSource::GetRoot() const { |
return GetMainDocument().accessibilityObject(); |
} |
@@ -438,6 +447,13 @@ void BlinkAXTreeSource::SerializeNode(blink::WebAXObject src, |
const gfx::Size& max_offset = document.frame()->maximumScrollOffset(); |
dst->AddIntAttribute(ui::AX_ATTR_SCROLL_X_MAX, max_offset.width()); |
dst->AddIntAttribute(ui::AX_ATTR_SCROLL_Y_MAX, max_offset.height()); |
+ |
+ if (frame_routing_ids_ && !src.equals(GetRoot())) { |
+ WebFrame* frame = document.frame(); |
+ RenderFrameImpl* render_frame = RenderFrameImpl::FromWebFrame(frame); |
+ frame_routing_ids_->insert(std::pair<int32, int>( |
+ dst->id, render_frame->GetRoutingID())); |
+ } |
} |
if (dst->role == ui::AX_ROLE_TABLE) { |