Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(921)

Unified Diff: content/browser/accessibility/browser_accessibility_manager.cc

Issue 268543008: Cross-process iframe accessibility. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/browser/accessibility/browser_accessibility_manager.cc
diff --git a/content/browser/accessibility/browser_accessibility_manager.cc b/content/browser/accessibility/browser_accessibility_manager.cc
index c8d2cdd25930438bab713376012e8ef039329366..2dab8982ca6a972ab263da9df06ac88423f118fc 100644
--- a/content/browser/accessibility/browser_accessibility_manager.cc
+++ b/content/browser/accessibility/browser_accessibility_manager.cc
@@ -8,6 +8,7 @@
#include "content/browser/accessibility/browser_accessibility.h"
#include "content/browser/accessibility/frame_tree_accessibility.h"
#include "content/common/accessibility_messages.h"
+#include "ui/accessibility/ax_tree_serializer.h"
namespace content {
@@ -68,7 +69,7 @@ BrowserAccessibilityManager::BrowserAccessibilityManager(
BrowserAccessibilityFactory* factory)
: delegate_(delegate),
factory_(factory),
- tree_(new ui::AXTree()),
+ tree_(new ui::AXSerializableTree()),
focus_(NULL),
parent_frame_frame_id_(0),
parent_frame_node_id_(0),
@@ -82,7 +83,7 @@ BrowserAccessibilityManager::BrowserAccessibilityManager(
BrowserAccessibilityFactory* factory)
: delegate_(delegate),
factory_(factory),
- tree_(new ui::AXTree()),
+ tree_(new ui::AXSerializableTree()),
focus_(NULL),
osk_state_(OSK_ALLOWED) {
tree_->SetDelegate(this);
@@ -347,12 +348,34 @@ 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::SetParentFrameIds(
int parent_frame_frame_id, int parent_frame_node_id) {
parent_frame_frame_id_ = parent_frame_frame_id;
parent_frame_node_id_ = parent_frame_node_id;
}
+void BrowserAccessibilityManager::SetChildFrameId(
+ int node_id, int child_frame_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->SetChildFrameId(child_frame_id);
+ }
+}
+
BrowserAccessibility* BrowserAccessibilityManager::GetCrossFrameParent() {
FrameTreeAccessibility* frames = FrameTreeAccessibility::GetInstance();
BrowserAccessibilityManager* parent_manager =

Powered by Google App Engine
This is Rietveld 408576698