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

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: Rewritten based on RFHI instead of RVHI Created 6 years, 4 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 6bdce2d907a503186a04788d2ba7731723866923..75e6bed8ccc63731c7db7b69bd2a5006b3b680c3 100644
--- a/content/browser/accessibility/browser_accessibility_manager.cc
+++ b/content/browser/accessibility/browser_accessibility_manager.cc
@@ -7,6 +7,7 @@
#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 {
@@ -67,8 +68,9 @@ BrowserAccessibilityManager::BrowserAccessibilityManager(
BrowserAccessibilityFactory* factory)
: delegate_(delegate),
factory_(factory),
- tree_(new ui::AXTree()),
+ tree_(new ui::AXSerializableTree()),
focus_(NULL),
+ node_id_in_parent_frame_(0),
Charlie Reis 2014/08/21 19:23:27 Let's not use a magic number here, since it's easy
dmazzoni 2014/08/25 06:49:36 This is also gone now.
osk_state_(OSK_ALLOWED) {
tree_->SetDelegate(this);
}
@@ -79,7 +81,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);
@@ -363,4 +365,42 @@ 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::SetNodeIdInParentFrame(int32 node_id) {
+ node_id_in_parent_frame_ = node_id;
+}
+
+void BrowserAccessibilityManager::SetChildFrameId(
+ int32 node_id, int64 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() {
+ if (!delegate_)
+ return NULL;
+
+ BrowserAccessibilityManager* parent_frame =
+ delegate_->AccessibilityGetParentFrame();
+ if (!parent_frame)
+ return NULL;
+
+ return parent_frame->GetFromID(node_id_in_parent_frame_);
+}
+
} // namespace content

Powered by Google App Engine
This is Rietveld 408576698