summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--content/browser/accessibility/accessibility_tree_formatter.cc2
-rw-r--r--content/browser/accessibility/browser_accessibility.cc32
-rw-r--r--content/browser/accessibility/browser_accessibility.h24
-rw-r--r--content/browser/accessibility/browser_accessibility_manager.cc69
-rw-r--r--content/browser/accessibility/browser_accessibility_manager.h36
-rw-r--r--content/browser/accessibility/browser_accessibility_manager_unittest.cc7
-rw-r--r--content/browser/accessibility/site_per_process_accessibility_browsertest.cc144
-rw-r--r--content/browser/frame_host/frame_tree.cc36
-rw-r--r--content/browser/frame_host/render_frame_host_impl.cc70
-rw-r--r--content/browser/frame_host/render_frame_host_impl.h3
-rw-r--r--content/browser/frame_host/render_frame_proxy_host.cc30
-rw-r--r--content/browser/frame_host/render_frame_proxy_host.h4
-rw-r--r--content/browser/frame_host/render_widget_host_view_child_frame.cc6
-rw-r--r--content/browser/site_per_process_browsertest.cc74
-rw-r--r--content/browser/site_per_process_browsertest.h29
-rw-r--r--content/browser/web_contents/web_contents_impl.h2
-rw-r--r--content/common/accessibility_messages.h7
-rw-r--r--content/content_tests.gypi2
-rw-r--r--content/renderer/accessibility/blink_ax_tree_source.cc33
-rw-r--r--content/renderer/accessibility/blink_ax_tree_source.h8
-rw-r--r--content/renderer/accessibility/renderer_accessibility.cc8
-rw-r--r--content/renderer/accessibility/renderer_accessibility_complete.cc2
-rw-r--r--content/renderer/render_frame_impl.cc5
-rw-r--r--content/renderer/render_frame_impl.h2
-rw-r--r--content/renderer/render_view_impl.cc5
-rw-r--r--content/renderer/render_view_impl.h2
-rw-r--r--content/test/accessibility_browser_test_utils.cc23
-rw-r--r--content/test/accessibility_browser_test_utils.h4
28 files changed, 115 insertions, 554 deletions
diff --git a/content/browser/accessibility/accessibility_tree_formatter.cc b/content/browser/accessibility/accessibility_tree_formatter.cc
index d4c189f..97ce7fe 100644
--- a/content/browser/accessibility/accessibility_tree_formatter.cc
+++ b/content/browser/accessibility/accessibility_tree_formatter.cc
@@ -66,7 +66,7 @@ void AccessibilityTreeFormatter::RecursiveBuildAccessibilityTree(
dict->Set(kChildrenDictAttr, children);
for (size_t i = 0; i < node.PlatformChildCount(); ++i) {
- BrowserAccessibility* child_node = node.PlatformGetChild(i);
+ BrowserAccessibility* child_node = node.InternalGetChild(i);
base::DictionaryValue* child_dict = new base::DictionaryValue;
children->Append(child_dict);
RecursiveBuildAccessibilityTree(*child_node, child_dict);
diff --git a/content/browser/accessibility/browser_accessibility.cc b/content/browser/accessibility/browser_accessibility.cc
index ce558fa..fe71fef 100644
--- a/content/browser/accessibility/browser_accessibility.cc
+++ b/content/browser/accessibility/browser_accessibility.cc
@@ -26,8 +26,7 @@ BrowserAccessibility* BrowserAccessibility::Create() {
BrowserAccessibility::BrowserAccessibility()
: manager_(NULL),
- node_(NULL),
- child_frame_tree_node_id_(0) {
+ node_(NULL) {
}
BrowserAccessibility::~BrowserAccessibility() {
@@ -64,15 +63,6 @@ bool BrowserAccessibility::PlatformIsLeaf() const {
}
uint32 BrowserAccessibility::PlatformChildCount() const {
- if (child_frame_tree_node_id_ &&
- manager_ && manager_->delegate()) {
- BrowserAccessibilityManager* child_manager =
- manager_->delegate()->AccessibilityGetChildFrame(
- child_frame_tree_node_id_);
- if (child_manager)
- return 1;
- }
-
return PlatformIsLeaf() ? 0 : InternalChildCount();
}
@@ -93,16 +83,6 @@ bool BrowserAccessibility::IsDescendantOf(
BrowserAccessibility* BrowserAccessibility::PlatformGetChild(
uint32 child_index) const {
- if (child_index == 0 && child_frame_tree_node_id_ &&
- manager_ &&
- manager_->delegate()) {
- BrowserAccessibilityManager* child_manager =
- manager_->delegate()->AccessibilityGetChildFrame(
- child_frame_tree_node_id_);
- if (child_manager)
- return child_manager->GetRoot();
- }
-
DCHECK(child_index < InternalChildCount());
return InternalGetChild(child_index);
}
@@ -142,9 +122,7 @@ BrowserAccessibility* BrowserAccessibility::GetParent() const {
if (!node_ || !manager_)
return NULL;
ui::AXNode* parent = node_->parent();
- if (parent)
- return manager_->GetFromAXNode(parent);
- return manager_->GetCrossFrameParent();
+ return parent ? manager_->GetFromAXNode(parent) : NULL;
}
int32 BrowserAccessibility::GetIndexInParent() const {
@@ -702,10 +680,4 @@ int BrowserAccessibility::GetStaticTextLenRecursive() const {
return len;
}
-void BrowserAccessibility::SetChildFrameTreeNodeId(
- int64 child_frame_tree_node_id) {
- child_frame_tree_node_id_ = child_frame_tree_node_id;
- manager_->NotifyAccessibilityEvent(ui::AX_EVENT_CHILDREN_CHANGED, this);
-}
-
} // namespace content
diff --git a/content/browser/accessibility/browser_accessibility.h b/content/browser/accessibility/browser_accessibility.h
index 912620e..eeb940e 100644
--- a/content/browser/accessibility/browser_accessibility.h
+++ b/content/browser/accessibility/browser_accessibility.h
@@ -31,13 +31,12 @@ class BrowserAccessibilityWin;
//
// BrowserAccessibility
//
-// A BrowserAccessibility object represents one node in the accessibility
-// tree on the browser side. It exactly corresponds to one WebAXObject from
-// Blink. It's owned by a BrowserAccessibilityManager.
+// Class implementing the cross platform interface for the Browser-Renderer
+// communication of accessibility information, providing accessibility
+// to be used by screen readers and other assistive technology (AT).
//
-// There are subclasses of BrowserAccessibility for each platform where
-// we implement native accessibility APIs. This base class is used occasionally
-// for tests.
+// An implementation for each platform handles platform specific accessibility
+// APIs.
//
////////////////////////////////////////////////////////////////////////////////
class CONTENT_EXPORT BrowserAccessibility {
@@ -246,15 +245,6 @@ class CONTENT_EXPORT BrowserAccessibility {
// Append the text from this node and its children.
std::string GetTextRecursive() const;
- // Identifies the given frame tree node id as the only child of this node,
- // so any call to PlatformChildCount/PlatformGetChild will use
- // BrowserAccessibilityDelegate::AccessibilityGetChildFrame to retrieve
- // the BrowserAccessibilityManager of the child frame and return its root
- // node as this node's child.
- void SetChildFrameTreeNodeId(int64 child_frame_tree_node_id);
-
- int64 child_frame_tree_node_id() const { return child_frame_tree_node_id_; }
-
protected:
BrowserAccessibility();
@@ -272,9 +262,7 @@ class CONTENT_EXPORT BrowserAccessibility {
std::string name_;
std::string value_;
- // If nonzero, the frame tree node id of the child frame of this node.
- int64 child_frame_tree_node_id_;
-
+ private:
DISALLOW_COPY_AND_ASSIGN(BrowserAccessibility);
};
diff --git a/content/browser/accessibility/browser_accessibility_manager.cc b/content/browser/accessibility/browser_accessibility_manager.cc
index a4e7db5..6bdce2d 100644
--- a/content/browser/accessibility/browser_accessibility_manager.cc
+++ b/content/browser/accessibility/browser_accessibility_manager.cc
@@ -7,38 +7,9 @@
#include "base/logging.h"
#include "content/browser/accessibility/browser_accessibility.h"
#include "content/common/accessibility_messages.h"
-#include "ui/accessibility/ax_tree_serializer.h"
namespace content {
-namespace {
-
-// Recursively searches |ancestor_node| and its descendants for a
-// BrowserAccessibility with |child| as its immediate and only child.
-// Searches only the frame that |ancestor_node| belongs to, does not descend
-// into child frames (but |child| can be the root of another frame).
-BrowserAccessibility* FindParentOfNode(
- BrowserAccessibility* ancestor_node, BrowserAccessibility* child) {
- if (ancestor_node->PlatformChildCount() == 1 &&
- ancestor_node->PlatformGetChild(0) == child) {
- return ancestor_node;
- }
-
- if (ancestor_node->InternalChildCount() == 0)
- return NULL;
-
- for (uint32 i = 0; i < ancestor_node->PlatformChildCount(); ++i) {
- BrowserAccessibility* result = FindParentOfNode(
- ancestor_node->PlatformGetChild(i), child);
- if (result)
- return result;
- }
-
- return NULL;
-}
-
-} // namespace.
-
ui::AXTreeUpdate MakeAXTreeUpdate(
const ui::AXNodeData& node1,
const ui::AXNodeData& node2 /* = ui::AXNodeData() */,
@@ -96,7 +67,7 @@ BrowserAccessibilityManager::BrowserAccessibilityManager(
BrowserAccessibilityFactory* factory)
: delegate_(delegate),
factory_(factory),
- tree_(new ui::AXSerializableTree()),
+ tree_(new ui::AXTree()),
focus_(NULL),
osk_state_(OSK_ALLOWED) {
tree_->SetDelegate(this);
@@ -108,7 +79,7 @@ BrowserAccessibilityManager::BrowserAccessibilityManager(
BrowserAccessibilityFactory* factory)
: delegate_(delegate),
factory_(factory),
- tree_(new ui::AXSerializableTree()),
+ tree_(new ui::AXTree()),
focus_(NULL),
osk_state_(OSK_ALLOWED) {
tree_->SetDelegate(this);
@@ -392,40 +363,4 @@ void BrowserAccessibilityManager::OnNodeChangeFinished(ui::AXNode* node) {
GetFromAXNode(node)->OnUpdateFinished();
}
-ui::AXTreeUpdate BrowserAccessibilityManager::SnapshotAXTreeForTesting() {
- scoped_ptr<ui::AXTreeSource<const ui::AXNode*> > tree_source(
- tree_->CreateTreeSource());
- ui::AXTreeSerializer<const ui::AXNode*> serializer(tree_source.get());
- ui::AXTreeUpdate update;
- serializer.SerializeChanges(tree_->GetRoot(), &update);
- return update;
-}
-
-void BrowserAccessibilityManager::SetChildFrameTreeNodeId(
- int32 node_id, int64 child_frame_tree_node_id) {
- BrowserAccessibility* node = GetFromID(node_id);
- if (node) {
- // The node id passed to us is the web area for the proxy frame.
- // In order to replace this node with the child frame, set the
- // child frame id on its parent.
- BrowserAccessibility* node_parent = node->GetParent();
- if (node_parent)
- node_parent->SetChildFrameTreeNodeId(child_frame_tree_node_id);
- }
-}
-
-BrowserAccessibility* BrowserAccessibilityManager::GetCrossFrameParent() {
- if (!delegate_)
- return NULL;
-
- BrowserAccessibilityManager* parent_frame =
- delegate_->AccessibilityGetParentFrame();
- if (!parent_frame)
- return NULL;
-
- // Recursively search the parent frame to find the node that has this
- // frame as its child.
- return FindParentOfNode(parent_frame->GetRoot(), GetRoot());
-}
-
} // namespace content
diff --git a/content/browser/accessibility/browser_accessibility_manager.h b/content/browser/accessibility/browser_accessibility_manager.h
index 5001908..c3f0430 100644
--- a/content/browser/accessibility/browser_accessibility_manager.h
+++ b/content/browser/accessibility/browser_accessibility_manager.h
@@ -13,7 +13,7 @@
#include "content/common/content_export.h"
#include "third_party/WebKit/public/web/WebAXEnums.h"
#include "ui/accessibility/ax_node_data.h"
-#include "ui/accessibility/ax_serializable_tree.h"
+#include "ui/accessibility/ax_tree.h"
#include "ui/accessibility/ax_tree_update.h"
#include "ui/gfx/native_widget_types.h"
@@ -22,7 +22,6 @@ struct AccessibilityHostMsg_LocationChangeParams;
namespace content {
class BrowserAccessibility;
-class BrowserAccessibilityManager;
#if defined(OS_ANDROID)
class BrowserAccessibilityManagerAndroid;
#endif
@@ -43,12 +42,6 @@ CONTENT_EXPORT ui::AXTreeUpdate MakeAXTreeUpdate(
const ui::AXNodeData& node9 = ui::AXNodeData());
// Class that can perform actions on behalf of the BrowserAccessibilityManager.
-// Note: BrowserAccessibilityManager should never cache any of the return
-// values from any of these interfaces, especially those that return pointers.
-// They may only be valid within this call stack. That policy eliminates any
-// concerns about ownership and lifecycle issues; none of these interfaces
-// transfer ownership and no return values are guaranteed to be valid outside
-// of the current call stack.
class CONTENT_EXPORT BrowserAccessibilityDelegate {
public:
virtual ~BrowserAccessibilityDelegate() {}
@@ -70,9 +63,6 @@ class CONTENT_EXPORT BrowserAccessibilityDelegate {
virtual void AccessibilityFatalError() = 0;
virtual gfx::AcceleratedWidget AccessibilityGetAcceleratedWidget() = 0;
virtual gfx::NativeViewAccessible AccessibilityGetNativeViewAccessible() = 0;
- virtual BrowserAccessibilityManager* AccessibilityGetChildFrame(
- int64 frame_tree_node_id) = 0;
- virtual BrowserAccessibilityManager* AccessibilityGetParentFrame() = 0;
};
class CONTENT_EXPORT BrowserAccessibilityFactory {
@@ -199,13 +189,6 @@ class CONTENT_EXPORT BrowserAccessibilityManager : public ui::AXTreeDelegate {
delegate_ = delegate;
}
- // Get a snapshot of the current tree as an AXTreeUpdate.
- ui::AXTreeUpdate SnapshotAXTreeForTesting();
-
- // Frame tree support.
- void SetChildFrameTreeNodeId(int32 node_id, int64 child_frame_tree_node_id);
- BrowserAccessibility* GetCrossFrameParent();
-
protected:
BrowserAccessibilityManager(
BrowserAccessibilityDelegate* delegate,
@@ -242,6 +225,21 @@ class CONTENT_EXPORT BrowserAccessibilityManager : public ui::AXTreeDelegate {
OSK_ALLOWED
};
+ // Update a set of nodes using data received from the renderer
+ // process.
+ bool UpdateNodes(const std::vector<ui::AXNodeData>& nodes);
+
+ // Update one node from the tree using data received from the renderer
+ // process. Returns true on success, false on fatal error.
+ bool UpdateNode(const ui::AXNodeData& src);
+
+ void SetRoot(BrowserAccessibility* root);
+
+ BrowserAccessibility* CreateNode(
+ BrowserAccessibility* parent,
+ int32 id,
+ int32 index_in_parent);
+
protected:
// The object that can perform actions on our behalf.
BrowserAccessibilityDelegate* delegate_;
@@ -250,7 +248,7 @@ class CONTENT_EXPORT BrowserAccessibilityManager : public ui::AXTreeDelegate {
scoped_ptr<BrowserAccessibilityFactory> factory_;
// The underlying tree of accessibility objects.
- scoped_ptr<ui::AXSerializableTree> tree_;
+ scoped_ptr<ui::AXTree> tree_;
// The node that currently has focus.
ui::AXNode* focus_;
diff --git a/content/browser/accessibility/browser_accessibility_manager_unittest.cc b/content/browser/accessibility/browser_accessibility_manager_unittest.cc
index 28bbf9d..89e1abf 100644
--- a/content/browser/accessibility/browser_accessibility_manager_unittest.cc
+++ b/content/browser/accessibility/browser_accessibility_manager_unittest.cc
@@ -97,13 +97,6 @@ class TestBrowserAccessibilityDelegate
OVERRIDE {
return NULL;
}
- virtual BrowserAccessibilityManager* AccessibilityGetChildFrame(
- int64 frame_tree_node_id) OVERRIDE {
- return NULL;
- }
- virtual BrowserAccessibilityManager* AccessibilityGetParentFrame() OVERRIDE {
- return NULL;
- }
bool got_fatal_error() const { return got_fatal_error_; }
void reset_got_fatal_error() { got_fatal_error_ = false; }
diff --git a/content/browser/accessibility/site_per_process_accessibility_browsertest.cc b/content/browser/accessibility/site_per_process_accessibility_browsertest.cc
deleted file mode 100644
index 2e6533e..0000000
--- a/content/browser/accessibility/site_per_process_accessibility_browsertest.cc
+++ /dev/null
@@ -1,144 +0,0 @@
-// Copyright (c) 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "base/command_line.h"
-#include "base/strings/stringprintf.h"
-#include "content/browser/accessibility/browser_accessibility.h"
-#include "content/browser/accessibility/browser_accessibility_manager.h"
-#include "content/browser/accessibility/browser_accessibility_state_impl.h"
-#include "content/browser/frame_host/cross_process_frame_connector.h"
-#include "content/browser/frame_host/frame_tree.h"
-#include "content/browser/frame_host/render_frame_proxy_host.h"
-#include "content/browser/frame_host/render_widget_host_view_child_frame.h"
-#include "content/browser/renderer_host/render_view_host_impl.h"
-#include "content/browser/site_per_process_browsertest.h"
-#include "content/browser/web_contents/web_contents_impl.h"
-#include "content/public/browser/notification_observer.h"
-#include "content/public/browser/notification_service.h"
-#include "content/public/browser/notification_types.h"
-#include "content/public/browser/web_contents_observer.h"
-#include "content/public/common/content_switches.h"
-#include "content/public/test/browser_test_utils.h"
-#include "content/public/test/content_browser_test.h"
-#include "content/public/test/content_browser_test_utils.h"
-#include "content/public/test/test_utils.h"
-#include "content/shell/browser/shell.h"
-#include "content/test/accessibility_browser_test_utils.h"
-#include "content/test/content_browser_test_utils_internal.h"
-#include "net/dns/mock_host_resolver.h"
-#include "url/gurl.h"
-
-namespace content {
-
-class SitePerProcessAccessibilityBrowserTest
- : public SitePerProcessBrowserTest {
- public:
- SitePerProcessAccessibilityBrowserTest() {}
-};
-
-#if defined(OS_MACOSX) || (defined(OS_LINUX) && !defined(OS_CHROMEOS))
-#define MAYBE_CrossSiteIframeAccessibility CrossSiteIframeAccessibility
-#else
-#define MAYBE_CrossSiteIframeAccessibility DISABLED_CrossSiteIframeAccessibility
-#endif
-
-IN_PROC_BROWSER_TEST_F(SitePerProcessAccessibilityBrowserTest,
- MAYBE_CrossSiteIframeAccessibility) {
- // Enable full accessibility for all current and future WebContents.
- BrowserAccessibilityState::GetInstance()->EnableAccessibility();
-
- AccessibilityNotificationWaiter main_frame_accessibility_waiter(
- shell(), AccessibilityModeComplete,
- ui::AX_EVENT_LOAD_COMPLETE);
-
- host_resolver()->AddRule("*", "127.0.0.1");
- ASSERT_TRUE(test_server()->Start());
- GURL main_url(test_server()->GetURL("files/site_per_process_main.html"));
- NavigateToURL(shell(), main_url);
-
- // It is safe to obtain the root frame tree node here, as it doesn't change.
- FrameTreeNode* root =
- static_cast<WebContentsImpl*>(shell()->web_contents())->
- GetFrameTree()->root();
-
- // Load same-site page into iframe.
- FrameTreeNode* child = root->child_at(0);
- GURL http_url(test_server()->GetURL("files/title1.html"));
- NavigateFrameToURL(child, http_url);
-
- // These must stay in scope with replace_host.
- GURL::Replacements replace_host;
- std::string foo_com("foo.com");
-
- // Load cross-site page into iframe.
- GURL cross_site_url(test_server()->GetURL("files/title2.html"));
- replace_host.SetHostStr(foo_com);
- cross_site_url = cross_site_url.ReplaceComponents(replace_host);
- NavigateFrameToURL(root->child_at(0), cross_site_url);
-
- // Ensure that we have created a new process for the subframe.
- ASSERT_EQ(1U, root->child_count());
- SiteInstance* site_instance = child->current_frame_host()->GetSiteInstance();
- EXPECT_NE(shell()->web_contents()->GetSiteInstance(), site_instance);
-
- // Wait until the accessibility tree from both the main frame and
- // cross-process iframe load.
- RenderFrameHostImpl* child_frame = static_cast<RenderFrameHostImpl*>(
- child->current_frame_host());
- AccessibilityNotificationWaiter child_frame_accessibility_waiter(
- child_frame, ui::AX_EVENT_NONE);
- main_frame_accessibility_waiter.WaitForNotification();
- child_frame_accessibility_waiter.WaitForNotification();
-
- RenderFrameHostImpl* main_frame = static_cast<RenderFrameHostImpl*>(
- shell()->web_contents()->GetMainFrame());
- BrowserAccessibilityManager* main_frame_manager =
- main_frame->browser_accessibility_manager();
- VLOG(1) << "Main frame accessibility tree:\n"
- << main_frame_manager->SnapshotAXTreeForTesting().ToString();
-
- BrowserAccessibilityManager* child_frame_manager =
- child_frame->browser_accessibility_manager();
- VLOG(1) << "Child frame accessibility tree:\n"
- << child_frame_manager->SnapshotAXTreeForTesting().ToString();
-
- // Assert that we can walk from the main frame down into the child frame
- // directly, getting correct roles and data along the way.
- BrowserAccessibility* ax_root = main_frame_manager->GetRoot();
- ASSERT_EQ(ui::AX_ROLE_ROOT_WEB_AREA, ax_root->GetRole());
- ASSERT_EQ(1U, ax_root->PlatformChildCount());
-
- BrowserAccessibility* ax_group = ax_root->PlatformGetChild(0);
- ASSERT_EQ(ui::AX_ROLE_GROUP, ax_group->GetRole());
- ASSERT_EQ(1U, ax_group->PlatformChildCount());
-
- BrowserAccessibility* ax_iframe = ax_group->PlatformGetChild(0);
- ASSERT_EQ(ui::AX_ROLE_IFRAME, ax_iframe->GetRole());
- ASSERT_EQ(1U, ax_iframe->PlatformChildCount());
-
- BrowserAccessibility* ax_scroll_area = ax_iframe->PlatformGetChild(0);
- ASSERT_EQ(ui::AX_ROLE_SCROLL_AREA, ax_scroll_area->GetRole());
- ASSERT_EQ(1U, ax_scroll_area->PlatformChildCount());
-
- BrowserAccessibility* ax_child_frame_root =
- ax_scroll_area->PlatformGetChild(0);
- ASSERT_EQ(ui::AX_ROLE_ROOT_WEB_AREA, ax_child_frame_root->GetRole());
- ASSERT_EQ(1U, ax_child_frame_root->PlatformChildCount());
- ASSERT_EQ("Title Of Awesomeness", ax_child_frame_root->name());
-
- BrowserAccessibility* ax_child_frame_group =
- ax_child_frame_root->PlatformGetChild(0);
- ASSERT_EQ(ui::AX_ROLE_GROUP, ax_child_frame_group->GetRole());
- ASSERT_EQ(1U, ax_child_frame_group->PlatformChildCount());
-
- BrowserAccessibility* ax_child_frame_static_text =
- ax_child_frame_group->PlatformGetChild(0);
- ASSERT_EQ(ui::AX_ROLE_STATIC_TEXT, ax_child_frame_static_text->GetRole());
- ASSERT_EQ(0U, ax_child_frame_static_text->PlatformChildCount());
-
- // Last, check that the parent of the child frame root is correct.
- ASSERT_EQ(ax_child_frame_root->GetParent(), ax_scroll_area);
-}
-
-} // namespace content
diff --git a/content/browser/frame_host/frame_tree.cc b/content/browser/frame_host/frame_tree.cc
index 3415e46..de6c69b 100644
--- a/content/browser/frame_host/frame_tree.cc
+++ b/content/browser/frame_host/frame_tree.cc
@@ -14,7 +14,6 @@
#include "content/browser/frame_host/navigator.h"
#include "content/browser/frame_host/render_frame_host_factory.h"
#include "content/browser/frame_host/render_frame_host_impl.h"
-#include "content/browser/frame_host/render_frame_proxy_host.h"
#include "content/browser/renderer_host/render_view_host_factory.h"
#include "content/browser/renderer_host/render_view_host_impl.h"
#include "content/public/browser/browser_thread.h"
@@ -43,6 +42,20 @@ bool FrameTreeNodeForId(int64 frame_tree_node_id,
return true;
}
+bool FrameTreeNodeForRoutingId(int routing_id,
+ int process_id,
+ FrameTreeNode** out_node,
+ FrameTreeNode* node) {
+ // TODO(creis): Look through the swapped out RFHs as well.
+ if (node->current_frame_host()->GetProcess()->GetID() == process_id &&
+ node->current_frame_host()->GetRoutingID() == routing_id) {
+ *out_node = node;
+ // Terminate iteration once the node has been found.
+ return false;
+ }
+ return true;
+}
+
// Iterate over the FrameTree to reset any node affected by the loss of the
// given RenderViewHost's process.
bool ResetNodesForNewProcess(RenderViewHost* render_view_host,
@@ -107,23 +120,10 @@ FrameTreeNode* FrameTree::FindByID(int64 frame_tree_node_id) {
}
FrameTreeNode* FrameTree::FindByRoutingID(int routing_id, int process_id) {
- RenderFrameHostImpl* render_frame_host =
- RenderFrameHostImpl::FromID(process_id, routing_id);
- if (render_frame_host) {
- FrameTreeNode* result = render_frame_host->frame_tree_node();
- if (this == result->frame_tree())
- return result;
- }
-
- RenderFrameProxyHost* render_frame_proxy_host =
- RenderFrameProxyHost::FromID(process_id, routing_id);
- if (render_frame_proxy_host) {
- FrameTreeNode* result = render_frame_proxy_host->frame_tree_node();
- if (this == result->frame_tree())
- return result;
- }
-
- return NULL;
+ FrameTreeNode* node = NULL;
+ ForEach(
+ base::Bind(&FrameTreeNodeForRoutingId, routing_id, process_id, &node));
+ return node;
}
void FrameTree::ForEach(
diff --git a/content/browser/frame_host/render_frame_host_impl.cc b/content/browser/frame_host/render_frame_host_impl.cc
index e4b677a..d21b843 100644
--- a/content/browser/frame_host/render_frame_host_impl.cc
+++ b/content/browser/frame_host/render_frame_host_impl.cc
@@ -24,7 +24,6 @@
#include "content/browser/frame_host/navigator.h"
#include "content/browser/frame_host/render_frame_host_delegate.h"
#include "content/browser/frame_host/render_frame_proxy_host.h"
-#include "content/browser/frame_host/render_widget_host_view_child_frame.h"
#include "content/browser/renderer_host/input/input_router.h"
#include "content/browser/renderer_host/input/timeout_monitor.h"
#include "content/browser/renderer_host/render_process_host_impl.h"
@@ -474,38 +473,6 @@ gfx::NativeViewAccessible
return NULL;
}
-BrowserAccessibilityManager* RenderFrameHostImpl::AccessibilityGetChildFrame(
- int64 frame_tree_node_id) {
- FrameTreeNode* child_node = FrameTree::GloballyFindByID(frame_tree_node_id);
- if (!child_node)
- return NULL;
-
- // We should have gotten a node in the same frame tree.
- CHECK(child_node->frame_tree() == frame_tree_node()->frame_tree());
-
- RenderFrameHostImpl* child_rfhi = child_node->current_frame_host();
-
- // Return NULL if this isn't an out-of-process iframe. Same-process iframes
- // are already part of the accessibility tree.
- if (child_rfhi->GetProcess()->GetID() == GetProcess()->GetID())
- return NULL;
-
- return child_rfhi->GetOrCreateBrowserAccessibilityManager();
-}
-
-BrowserAccessibilityManager*
-RenderFrameHostImpl::AccessibilityGetParentFrame() {
- FrameTreeNode* parent_node = frame_tree_node()->parent();
- if (!parent_node)
- return NULL;
-
- RenderFrameHostImpl* parent_frame = parent_node->current_frame_host();
- if (!parent_frame)
- return NULL;
-
- return parent_frame->GetOrCreateBrowserAccessibilityManager();
-}
-
bool RenderFrameHostImpl::CreateRenderFrame(int parent_routing_id) {
TRACE_EVENT0("navigation", "RenderFrameHostImpl::CreateRenderFrame");
DCHECK(!IsRenderFrameLive()) << "Creating frame twice";
@@ -1033,33 +1000,6 @@ void RenderFrameHostImpl::OnAccessibilityEvents(
browser_accessibility_manager_->OnAccessibilityEvents(params);
}
- if (browser_accessibility_manager_) {
- // Get the frame routing ids from out-of-process iframes and use them
- // to notify our BrowserAccessibilityManager of the frame tree node id of
- // any of its child frames.
- for (unsigned int i = 0; i < params.size(); ++i) {
- const AccessibilityHostMsg_EventParams& param = params[i];
- std::map<int32, int>::const_iterator iter;
- for (iter = param.node_to_frame_routing_id_map.begin();
- iter != param.node_to_frame_routing_id_map.end();
- ++iter) {
- // This is the id of the accessibility node that has a child frame.
- int32 node_id = iter->first;
- // The routing id from either a RenderFrame or a RenderFrameProxy.
- int frame_routing_id = iter->second;
-
- FrameTree* frame_tree = frame_tree_node()->frame_tree();
- FrameTreeNode* child_frame_tree_node = frame_tree->FindByRoutingID(
- GetProcess()->GetID(), frame_routing_id);
- if (child_frame_tree_node) {
- browser_accessibility_manager_->SetChildFrameTreeNodeId(
- node_id, child_frame_tree_node->frame_tree_node_id());
- }
- }
- }
- }
-
- // Send the updates to the automation extension API.
std::vector<AXEventNotificationDetails> details;
details.reserve(params.size());
for (size_t i = 0; i < params.size(); ++i) {
@@ -1088,16 +1028,8 @@ void RenderFrameHostImpl::OnAccessibilityEvents(
const AccessibilityHostMsg_EventParams& param = params[i];
if (static_cast<int>(param.event_type) < 0)
continue;
-
if (!ax_tree_for_testing_) {
- if (browser_accessibility_manager_) {
- ax_tree_for_testing_.reset(new ui::AXTree(
- browser_accessibility_manager_->SnapshotAXTreeForTesting()));
- } else {
- ax_tree_for_testing_.reset(new ui::AXTree());
- CHECK(ax_tree_for_testing_->Unserialize(param.update))
- << ax_tree_for_testing_->error();
- }
+ ax_tree_for_testing_.reset(new ui::AXTree(param.update));
} else {
CHECK(ax_tree_for_testing_->Unserialize(param.update))
<< ax_tree_for_testing_->error();
diff --git a/content/browser/frame_host/render_frame_host_impl.h b/content/browser/frame_host/render_frame_host_impl.h
index cc97543..702fa64 100644
--- a/content/browser/frame_host/render_frame_host_impl.h
+++ b/content/browser/frame_host/render_frame_host_impl.h
@@ -110,9 +110,6 @@ class CONTENT_EXPORT RenderFrameHostImpl
virtual gfx::AcceleratedWidget AccessibilityGetAcceleratedWidget() OVERRIDE;
virtual gfx::NativeViewAccessible AccessibilityGetNativeViewAccessible()
OVERRIDE;
- virtual BrowserAccessibilityManager* AccessibilityGetChildFrame(
- int64 frame_tree_node_id) OVERRIDE;
- virtual BrowserAccessibilityManager* AccessibilityGetParentFrame() OVERRIDE;
bool CreateRenderFrame(int parent_routing_id);
bool IsRenderFrameLive();
diff --git a/content/browser/frame_host/render_frame_proxy_host.cc b/content/browser/frame_host/render_frame_proxy_host.cc
index 35ed286..acbd80e 100644
--- a/content/browser/frame_host/render_frame_proxy_host.cc
+++ b/content/browser/frame_host/render_frame_proxy_host.cc
@@ -4,7 +4,6 @@
#include "content/browser/frame_host/render_frame_proxy_host.h"
-#include "base/lazy_instance.h"
#include "content/browser/frame_host/cross_process_frame_connector.h"
#include "content/browser/frame_host/frame_tree.h"
#include "content/browser/frame_host/frame_tree_node.h"
@@ -14,42 +13,16 @@
#include "content/browser/renderer_host/render_widget_host_view_base.h"
#include "content/browser/site_instance_impl.h"
#include "content/common/frame_messages.h"
-#include "content/public/browser/browser_thread.h"
#include "ipc/ipc_message.h"
namespace content {
-namespace {
-
-// The (process id, routing id) pair that identifies one RenderFrameProxy.
-typedef std::pair<int32, int32> RenderFrameProxyHostID;
-typedef base::hash_map<RenderFrameProxyHostID, RenderFrameProxyHost*>
- RoutingIDFrameProxyMap;
-base::LazyInstance<RoutingIDFrameProxyMap> g_routing_id_frame_proxy_map =
- LAZY_INSTANCE_INITIALIZER;
-
-}
-
-// static
-RenderFrameProxyHost* RenderFrameProxyHost::FromID(int process_id,
- int routing_id) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- RoutingIDFrameProxyMap* frames = g_routing_id_frame_proxy_map.Pointer();
- RoutingIDFrameProxyMap::iterator it = frames->find(
- RenderFrameProxyHostID(process_id, routing_id));
- return it == frames->end() ? NULL : it->second;
-}
-
RenderFrameProxyHost::RenderFrameProxyHost(SiteInstance* site_instance,
FrameTreeNode* frame_tree_node)
: routing_id_(site_instance->GetProcess()->GetNextRoutingID()),
site_instance_(site_instance),
frame_tree_node_(frame_tree_node) {
GetProcess()->AddRoute(routing_id_, this);
- CHECK(g_routing_id_frame_proxy_map.Get().insert(
- std::make_pair(
- RenderFrameProxyHostID(GetProcess()->GetID(), routing_id_),
- this)).second);
if (!frame_tree_node_->IsMainFrame() &&
frame_tree_node_->parent()
@@ -72,8 +45,6 @@ RenderFrameProxyHost::~RenderFrameProxyHost() {
Send(new FrameMsg_DeleteProxy(routing_id_));
GetProcess()->RemoveRoute(routing_id_);
- g_routing_id_frame_proxy_map.Get().erase(
- RenderFrameProxyHostID(GetProcess()->GetID(), routing_id_));
}
void RenderFrameProxyHost::SetChildRWHView(RenderWidgetHostView* view) {
@@ -143,4 +114,5 @@ void RenderFrameProxyHost::DisownOpener() {
Send(new FrameMsg_DisownOpener(GetRoutingID()));
}
+
} // namespace content
diff --git a/content/browser/frame_host/render_frame_proxy_host.h b/content/browser/frame_host/render_frame_proxy_host.h
index 2a34fc2..bba289a 100644
--- a/content/browser/frame_host/render_frame_proxy_host.h
+++ b/content/browser/frame_host/render_frame_proxy_host.h
@@ -55,8 +55,6 @@ class RenderFrameProxyHost
: public IPC::Listener,
public IPC::Sender {
public:
- static RenderFrameProxyHost* FromID(int process_id, int routing_id);
-
RenderFrameProxyHost(SiteInstance* site_instance,
FrameTreeNode* frame_tree_node);
virtual ~RenderFrameProxyHost();
@@ -77,8 +75,6 @@ class RenderFrameProxyHost
return site_instance_.get();
}
- FrameTreeNode* frame_tree_node() const { return frame_tree_node_; };
-
void SetChildRWHView(RenderWidgetHostView* view);
// TODO(nasko): The following methods should be removed once we don't have a
diff --git a/content/browser/frame_host/render_widget_host_view_child_frame.cc b/content/browser/frame_host/render_widget_host_view_child_frame.cc
index d92f66a..3c987f2 100644
--- a/content/browser/frame_host/render_widget_host_view_child_frame.cc
+++ b/content/browser/frame_host/render_widget_host_view_child_frame.cc
@@ -4,7 +4,6 @@
#include "content/browser/frame_host/render_widget_host_view_child_frame.h"
-#include "content/browser/accessibility/browser_accessibility_manager.h"
#include "content/browser/frame_host/cross_process_frame_connector.h"
#include "content/browser/renderer_host/render_widget_host_impl.h"
#include "content/common/gpu/gpu_messages.h"
@@ -342,8 +341,9 @@ SkColorType RenderWidgetHostViewChildFrame::PreferredReadbackFormat() {
BrowserAccessibilityManager*
RenderWidgetHostViewChildFrame::CreateBrowserAccessibilityManager(
BrowserAccessibilityDelegate* delegate) {
- return BrowserAccessibilityManager::Create(
- BrowserAccessibilityManager::GetEmptyDocument(), delegate);
+ // This eventually needs to be implemented for cross-process iframes.
+ // http://crbug.com/368298
+ return NULL;
}
} // namespace content
diff --git a/content/browser/site_per_process_browsertest.cc b/content/browser/site_per_process_browsertest.cc
index 6e25b6a..88d0404 100644
--- a/content/browser/site_per_process_browsertest.cc
+++ b/content/browser/site_per_process_browsertest.cc
@@ -2,8 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "content/browser/site_per_process_browsertest.h"
-
#include "base/command_line.h"
#include "base/strings/stringprintf.h"
#include "content/browser/frame_host/cross_process_frame_connector.h"
@@ -18,11 +16,13 @@
#include "content/public/browser/web_contents_observer.h"
#include "content/public/common/content_switches.h"
#include "content/public/test/browser_test_utils.h"
+#include "content/public/test/content_browser_test.h"
#include "content/public/test/content_browser_test_utils.h"
#include "content/public/test/test_utils.h"
#include "content/shell/browser/shell.h"
#include "content/test/content_browser_test_utils_internal.h"
#include "net/dns/mock_host_resolver.h"
+#include "url/gurl.h"
namespace content {
@@ -149,44 +149,46 @@ void RedirectNotificationObserver::Observe(
running_ = false;
}
-//
-// SitePerProcessBrowserTest
-//
-
-SitePerProcessBrowserTest::SitePerProcessBrowserTest() {
-};
-
-void SitePerProcessBrowserTest::StartFrameAtDataURL() {
- std::string data_url_script =
+class SitePerProcessBrowserTest : public ContentBrowserTest {
+ public:
+ SitePerProcessBrowserTest() {}
+
+ protected:
+ // Start at a data URL so each extra navigation creates a navigation entry.
+ // (The first navigation will silently be classified as AUTO_SUBFRAME.)
+ // TODO(creis): This won't be necessary when we can wait for LOAD_STOP.
+ void StartFrameAtDataURL() {
+ std::string data_url_script =
"var iframes = document.getElementById('test');iframes.src="
"'data:text/html,dataurl';";
- ASSERT_TRUE(ExecuteScript(shell()->web_contents(), data_url_script));
-}
+ ASSERT_TRUE(ExecuteScript(shell()->web_contents(), data_url_script));
+ }
-bool SitePerProcessBrowserTest::NavigateIframeToURL(Shell* window,
- const GURL& url,
- std::string iframe_id) {
- // TODO(creis): This should wait for LOAD_STOP, but cross-site subframe
- // navigations generate extra DidStartLoading and DidStopLoading messages.
- // Until we replace swappedout:// with frame proxies, we need to listen for
- // something else. For now, we trigger NEW_SUBFRAME navigations and listen
- // for commit.
- std::string script = base::StringPrintf(
- "setTimeout(\""
- "var iframes = document.getElementById('%s');iframes.src='%s';"
- "\",0)",
- iframe_id.c_str(), url.spec().c_str());
- WindowedNotificationObserver load_observer(
- NOTIFICATION_NAV_ENTRY_COMMITTED,
- Source<NavigationController>(
- &window->web_contents()->GetController()));
- bool result = ExecuteScript(window->web_contents(), script);
- load_observer.Wait();
- return result;
-}
+ bool NavigateIframeToURL(Shell* window,
+ const GURL& url,
+ std::string iframe_id) {
+ // TODO(creis): This should wait for LOAD_STOP, but cross-site subframe
+ // navigations generate extra DidStartLoading and DidStopLoading messages.
+ // Until we replace swappedout:// with frame proxies, we need to listen for
+ // something else. For now, we trigger NEW_SUBFRAME navigations and listen
+ // for commit.
+ std::string script = base::StringPrintf(
+ "setTimeout(\""
+ "var iframes = document.getElementById('%s');iframes.src='%s';"
+ "\",0)",
+ iframe_id.c_str(), url.spec().c_str());
+ WindowedNotificationObserver load_observer(
+ NOTIFICATION_NAV_ENTRY_COMMITTED,
+ Source<NavigationController>(
+ &window->web_contents()->GetController()));
+ bool result = ExecuteScript(window->web_contents(), script);
+ load_observer.Wait();
+ return result;
+ }
-void SitePerProcessBrowserTest::SetUpCommandLine(CommandLine* command_line) {
- command_line->AppendSwitch(switches::kSitePerProcess);
+ virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE {
+ command_line->AppendSwitch(switches::kSitePerProcess);
+ }
};
// Ensure that we can complete a cross-process subframe navigation.
diff --git a/content/browser/site_per_process_browsertest.h b/content/browser/site_per_process_browsertest.h
deleted file mode 100644
index a596019..0000000
--- a/content/browser/site_per_process_browsertest.h
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright (c) 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "content/public/test/content_browser_test.h"
-#include "url/gurl.h"
-
-namespace content {
-
-class Shell;
-
-class SitePerProcessBrowserTest : public ContentBrowserTest {
- public:
- SitePerProcessBrowserTest();
-
- protected:
- // Start at a data URL so each extra navigation creates a navigation entry.
- // (The first navigation will silently be classified as AUTO_SUBFRAME.)
- // TODO(creis): This won't be necessary when we can wait for LOAD_STOP.
- void StartFrameAtDataURL();
-
- bool NavigateIframeToURL(Shell* window,
- const GURL& url,
- std::string iframe_id);
-
- virtual void SetUpCommandLine(base::CommandLine* command_line) OVERRIDE;
-};
-
-} // namespace content
diff --git a/content/browser/web_contents/web_contents_impl.h b/content/browser/web_contents/web_contents_impl.h
index 4a86a48..922829c 100644
--- a/content/browser/web_contents/web_contents_impl.h
+++ b/content/browser/web_contents/web_contents_impl.h
@@ -687,8 +687,6 @@ class CONTENT_EXPORT WebContentsImpl
FRIEND_TEST_ALL_PREFIXES(NavigationControllerTest, HistoryNavigate);
FRIEND_TEST_ALL_PREFIXES(RenderFrameHostManagerTest, PageDoesBackAndReload);
FRIEND_TEST_ALL_PREFIXES(SitePerProcessBrowserTest, CrossSiteIframe);
- FRIEND_TEST_ALL_PREFIXES(SitePerProcessAccessibilityBrowserTest,
- CrossSiteIframeAccessibility);
// So InterstitialPageImpl can access SetIsLoading.
friend class InterstitialPageImpl;
diff --git a/content/common/accessibility_messages.h b/content/common/accessibility_messages.h
index 2be0c77..adb5284 100644
--- a/content/common/accessibility_messages.h
+++ b/content/common/accessibility_messages.h
@@ -51,17 +51,10 @@ IPC_STRUCT_TRAITS_BEGIN(ui::AXTreeUpdate)
IPC_STRUCT_TRAITS_MEMBER(nodes)
IPC_STRUCT_TRAITS_END()
-typedef std::map<int32, int> FrameIDMap;
-
IPC_STRUCT_BEGIN(AccessibilityHostMsg_EventParams)
// The tree update.
IPC_STRUCT_MEMBER(ui::AXTreeUpdate, update)
- // Mapping from node id to routing id of its child frame - either the
- // routing id of a RenderFrame or a RenderFrameProxy for an out-of-process
- // iframe.
- IPC_STRUCT_MEMBER(FrameIDMap, node_to_frame_routing_id_map)
-
// Type of event.
IPC_STRUCT_MEMBER(ui::AXEvent, event_type)
diff --git a/content/content_tests.gypi b/content/content_tests.gypi
index 6c20827..b13ee86 100644
--- a/content/content_tests.gypi
+++ b/content/content_tests.gypi
@@ -1129,7 +1129,6 @@
'browser/accessibility/android_hit_testing_browsertest.cc',
'browser/accessibility/cross_platform_accessibility_browsertest.cc',
'browser/accessibility/dump_accessibility_tree_browsertest.cc',
- 'browser/accessibility/site_per_process_accessibility_browsertest.cc',
'browser/battery_status/battery_status_browsertest.cc',
'browser/compositor/image_transport_factory_browsertest.cc',
'browser/bookmarklet_browsertest.cc',
@@ -1173,7 +1172,6 @@
'browser/service_worker/service_worker_browsertest.cc',
'browser/session_history_browsertest.cc',
'browser/shared_worker/worker_browsertest.cc',
- 'browser/site_per_process_browsertest.h',
'browser/site_per_process_browsertest.cc',
'browser/speech/speech_recognition_browsertest.cc',
'browser/tracing/tracing_controller_browsertest.cc',
diff --git a/content/renderer/accessibility/blink_ax_tree_source.cc b/content/renderer/accessibility/blink_ax_tree_source.cc
index 068f03a..a60b4df 100644
--- a/content/renderer/accessibility/blink_ax_tree_source.cc
+++ b/content/renderer/accessibility/blink_ax_tree_source.cc
@@ -11,7 +11,6 @@
#include "base/strings/utf_string_conversions.h"
#include "content/renderer/accessibility/blink_ax_enum_conversion.h"
#include "content/renderer/render_frame_impl.h"
-#include "content/renderer/render_frame_proxy.h"
#include "content/renderer/render_view_impl.h"
#include "third_party/WebKit/public/platform/WebRect.h"
#include "third_party/WebKit/public/platform/WebSize.h"
@@ -23,8 +22,6 @@
#include "third_party/WebKit/public/web/WebDocumentType.h"
#include "third_party/WebKit/public/web/WebElement.h"
#include "third_party/WebKit/public/web/WebFormControlElement.h"
-#include "third_party/WebKit/public/web/WebFrame.h"
-#include "third_party/WebKit/public/web/WebLocalFrame.h"
#include "third_party/WebKit/public/web/WebInputElement.h"
#include "third_party/WebKit/public/web/WebNode.h"
#include "third_party/WebKit/public/web/WebView.h"
@@ -35,7 +32,7 @@ using blink::WebAXObject;
using blink::WebDocument;
using blink::WebDocumentType;
using blink::WebElement;
-using blink::WebLocalFrame;
+using blink::WebFrame;
using blink::WebNode;
using blink::WebVector;
using blink::WebView;
@@ -113,11 +110,6 @@ bool BlinkAXTreeSource::IsInTree(blink::WebAXObject node) const {
return false;
}
-void BlinkAXTreeSource::CollectChildFrameIdMapping(
- std::map<int32, int>* node_to_frame_routing_id_map) {
- node_to_frame_routing_id_map_ = node_to_frame_routing_id_map;
-}
-
blink::WebAXObject BlinkAXTreeSource::GetRoot() const {
return GetMainDocument().accessibilityObject();
}
@@ -456,22 +448,6 @@ void BlinkAXTreeSource::SerializeNode(blink::WebAXObject src,
const gfx::Size& max_offset = document.maximumScrollOffset();
dst->AddIntAttribute(ui::AX_ATTR_SCROLL_X_MAX, max_offset.width());
dst->AddIntAttribute(ui::AX_ATTR_SCROLL_Y_MAX, max_offset.height());
-
- if (node_to_frame_routing_id_map_ && !src.equals(GetRoot())) {
- WebLocalFrame* frame = document.frame();
- RenderFrameImpl* render_frame = RenderFrameImpl::FromWebFrame(frame);
- if (render_frame) {
- node_to_frame_routing_id_map_->insert(std::pair<int32, int>(
- dst->id, render_frame->GetRoutingID()));
- } else {
- RenderFrameProxy* render_frame_proxy =
- RenderFrameProxy::FromWebFrame(frame);
- if (render_frame_proxy) {
- node_to_frame_routing_id_map_->insert(std::pair<int32, int>(
- dst->id, render_frame_proxy->routing_id()));
- }
- }
- }
}
if (dst->role == ui::AX_ROLE_TABLE) {
@@ -574,8 +550,11 @@ void BlinkAXTreeSource::SerializeNode(blink::WebAXObject src,
}
blink::WebDocument BlinkAXTreeSource::GetMainDocument() const {
- if (render_frame_ && render_frame_->GetWebFrame())
- return render_frame_->GetWebFrame()->document();
+ WebView* view = render_frame_->render_view()->GetWebView();
+ WebFrame* main_frame = view ? view->mainFrame() : NULL;
+
+ if (main_frame)
+ return main_frame->document();
return WebDocument();
}
diff --git a/content/renderer/accessibility/blink_ax_tree_source.h b/content/renderer/accessibility/blink_ax_tree_source.h
index c58ee81..007df07 100644
--- a/content/renderer/accessibility/blink_ax_tree_source.h
+++ b/content/renderer/accessibility/blink_ax_tree_source.h
@@ -19,12 +19,6 @@ class BlinkAXTreeSource
BlinkAXTreeSource(RenderFrameImpl* render_frame);
virtual ~BlinkAXTreeSource();
- // Call this to have BlinkAXTreeSource collect a mapping from
- // node ids to the frame routing id for an out-of-process iframe during
- // calls to SerializeNode.
- void CollectChildFrameIdMapping(
- std::map<int32, int>* node_to_frame_routing_id_map);
-
// Walks up the ancestor chain to see if this is a descendant of the root.
bool IsInTree(blink::WebAXObject node) const;
@@ -48,8 +42,6 @@ class BlinkAXTreeSource
private:
RenderFrameImpl* render_frame_;
- std::map<int32, int>* node_to_frame_routing_id_map_;
-
};
} // namespace content
diff --git a/content/renderer/accessibility/renderer_accessibility.cc b/content/renderer/accessibility/renderer_accessibility.cc
index e3522b6..1bf4022 100644
--- a/content/renderer/accessibility/renderer_accessibility.cc
+++ b/content/renderer/accessibility/renderer_accessibility.cc
@@ -26,8 +26,12 @@ RendererAccessibility::~RendererAccessibility() {
}
WebDocument RendererAccessibility::GetMainDocument() {
- if (render_frame_ && render_frame_->GetWebFrame())
- return render_frame_->GetWebFrame()->document();
+ WebView* view = render_frame_->render_view()->GetWebView();
+ WebFrame* main_frame = view ? view->mainFrame() : NULL;
+
+ if (main_frame)
+ return main_frame->document();
+
return WebDocument();
}
diff --git a/content/renderer/accessibility/renderer_accessibility_complete.cc b/content/renderer/accessibility/renderer_accessibility_complete.cc
index 4a5bdda..ae01a3d 100644
--- a/content/renderer/accessibility/renderer_accessibility_complete.cc
+++ b/content/renderer/accessibility/renderer_accessibility_complete.cc
@@ -207,8 +207,6 @@ void RendererAccessibilityComplete::SendPendingAccessibilityEvents() {
}
AccessibilityHostMsg_EventParams event_msg;
- tree_source_.CollectChildFrameIdMapping(
- &event_msg.node_to_frame_routing_id_map);
event_msg.event_type = event.event_type;
event_msg.id = event.id;
serializer_.SerializeChanges(obj, &event_msg.update);
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
index bb7025e..68748c6 100644
--- a/content/renderer/render_frame_impl.cc
+++ b/content/renderer/render_frame_impl.cc
@@ -3190,11 +3190,6 @@ blink::WebScreenOrientationClient*
return screen_orientation_dispatcher_;
}
-void RenderFrameImpl::postAccessibilityEvent(const blink::WebAXObject& obj,
- blink::WebAXEvent event) {
- HandleWebAccessibilityEvent(obj, event);
-}
-
void RenderFrameImpl::DidPlay(blink::WebMediaPlayer* player) {
Send(new FrameHostMsg_MediaPlayingNotification(
routing_id_, reinterpret_cast<int64>(player), player->hasVideo(),
diff --git a/content/renderer/render_frame_impl.h b/content/renderer/render_frame_impl.h
index 53e379f..d8cdfc38 100644
--- a/content/renderer/render_frame_impl.h
+++ b/content/renderer/render_frame_impl.h
@@ -437,8 +437,6 @@ class CONTENT_EXPORT RenderFrameImpl
virtual void initializeChildFrame(const blink::WebRect& frame_rect,
float scale_factor);
virtual blink::WebScreenOrientationClient* webScreenOrientationClient();
- virtual void postAccessibilityEvent(const blink::WebAXObject& obj,
- blink::WebAXEvent event);
// WebMediaPlayerDelegate implementation:
virtual void DidPlay(blink::WebMediaPlayer* player) OVERRIDE;
diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc
index f0865b0..6f874fd 100644
--- a/content/renderer/render_view_impl.cc
+++ b/content/renderer/render_view_impl.cc
@@ -1997,6 +1997,11 @@ int RenderViewImpl::historyForwardListCount() {
return history_list_length_ - historyBackListCount() - 1;
}
+void RenderViewImpl::postAccessibilityEvent(
+ const WebAXObject& obj, blink::WebAXEvent event) {
+ main_render_frame()->HandleWebAccessibilityEvent(obj, event);
+}
+
// blink::WebWidgetClient ----------------------------------------------------
void RenderViewImpl::didFocus() {
diff --git a/content/renderer/render_view_impl.h b/content/renderer/render_view_impl.h
index 6727118..3593c93 100644
--- a/content/renderer/render_view_impl.h
+++ b/content/renderer/render_view_impl.h
@@ -417,6 +417,8 @@ class CONTENT_EXPORT RenderViewImpl
virtual void navigateBackForwardSoon(int offset);
virtual int historyBackListCount();
virtual int historyForwardListCount();
+ virtual void postAccessibilityEvent(
+ const blink::WebAXObject& obj, blink::WebAXEvent event);
virtual blink::WebSpeechRecognizer* speechRecognizer();
virtual void zoomLimitsChanged(double minimum_level, double maximum_level);
virtual void zoomLevelChanged();
diff --git a/content/test/accessibility_browser_test_utils.cc b/content/test/accessibility_browser_test_utils.cc
index ef43896..ae514ae 100644
--- a/content/test/accessibility_browser_test_utils.cc
+++ b/content/test/accessibility_browser_test_utils.cc
@@ -21,11 +21,12 @@
namespace content {
AccessibilityNotificationWaiter::AccessibilityNotificationWaiter(Shell* shell)
- : event_to_wait_for_(ui::AX_EVENT_NONE),
+ : shell_(shell),
+ event_to_wait_for_(ui::AX_EVENT_NONE),
loop_runner_(new MessageLoopRunner()),
weak_factory_(this),
event_target_id_(0) {
- WebContents* web_contents = shell->web_contents();
+ WebContents* web_contents = shell_->web_contents();
frame_host_ = static_cast<RenderFrameHostImpl*>(
web_contents->GetMainFrame());
frame_host_->SetAccessibilityCallbackForTesting(
@@ -37,12 +38,13 @@ AccessibilityNotificationWaiter::AccessibilityNotificationWaiter(
Shell* shell,
AccessibilityMode accessibility_mode,
ui::AXEvent event_type)
- : event_to_wait_for_(event_type),
+ : shell_(shell),
+ event_to_wait_for_(event_type),
loop_runner_(new MessageLoopRunner()),
weak_factory_(this),
event_target_id_(0) {
WebContentsImpl* web_contents = static_cast<WebContentsImpl*>(
- shell->web_contents());
+ shell_->web_contents());
frame_host_ = static_cast<RenderFrameHostImpl*>(
web_contents->GetMainFrame());
frame_host_->SetAccessibilityCallbackForTesting(
@@ -51,19 +53,6 @@ AccessibilityNotificationWaiter::AccessibilityNotificationWaiter(
web_contents->AddAccessibilityMode(accessibility_mode);
}
-AccessibilityNotificationWaiter::AccessibilityNotificationWaiter(
- RenderFrameHostImpl* frame_host,
- ui::AXEvent event_type)
- : frame_host_(frame_host),
- event_to_wait_for_(event_type),
- loop_runner_(new MessageLoopRunner()),
- weak_factory_(this),
- event_target_id_(0) {
- frame_host_->SetAccessibilityCallbackForTesting(
- base::Bind(&AccessibilityNotificationWaiter::OnAccessibilityEvent,
- weak_factory_.GetWeakPtr()));
-}
-
AccessibilityNotificationWaiter::~AccessibilityNotificationWaiter() {
}
diff --git a/content/test/accessibility_browser_test_utils.h b/content/test/accessibility_browser_test_utils.h
index 6f3e69c..f1a88a4 100644
--- a/content/test/accessibility_browser_test_utils.h
+++ b/content/test/accessibility_browser_test_utils.h
@@ -28,9 +28,6 @@ class AccessibilityNotificationWaiter {
Shell* shell,
AccessibilityMode accessibility_mode,
ui::AXEvent event);
- AccessibilityNotificationWaiter(
- RenderFrameHostImpl* frame_host,
- ui::AXEvent event);
~AccessibilityNotificationWaiter();
// Blocks until the specific accessibility notification registered in
@@ -54,6 +51,7 @@ class AccessibilityNotificationWaiter {
// GetAXTree() is about the page with the url "about:blank".
bool IsAboutBlank();
+ Shell* shell_;
RenderFrameHostImpl* frame_host_;
ui::AXEvent event_to_wait_for_;
scoped_refptr<MessageLoopRunner> loop_runner_;