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

Side by Side 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, 7 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/accessibility/browser_accessibility_manager.h" 5 #include "content/browser/accessibility/browser_accessibility_manager.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "content/browser/accessibility/browser_accessibility.h" 8 #include "content/browser/accessibility/browser_accessibility.h"
9 #include "content/browser/accessibility/frame_tree_accessibility.h" 9 #include "content/browser/accessibility/frame_tree_accessibility.h"
10 #include "content/common/accessibility_messages.h" 10 #include "content/common/accessibility_messages.h"
11 #include "ui/accessibility/ax_tree_serializer.h"
11 12
12 namespace content { 13 namespace content {
13 14
14 ui::AXTreeUpdate MakeAXTreeUpdate( 15 ui::AXTreeUpdate MakeAXTreeUpdate(
15 const ui::AXNodeData& node1, 16 const ui::AXNodeData& node1,
16 const ui::AXNodeData& node2 /* = ui::AXNodeData() */, 17 const ui::AXNodeData& node2 /* = ui::AXNodeData() */,
17 const ui::AXNodeData& node3 /* = ui::AXNodeData() */, 18 const ui::AXNodeData& node3 /* = ui::AXNodeData() */,
18 const ui::AXNodeData& node4 /* = ui::AXNodeData() */, 19 const ui::AXNodeData& node4 /* = ui::AXNodeData() */,
19 const ui::AXNodeData& node5 /* = ui::AXNodeData() */, 20 const ui::AXNodeData& node5 /* = ui::AXNodeData() */,
20 const ui::AXNodeData& node6 /* = ui::AXNodeData() */, 21 const ui::AXNodeData& node6 /* = ui::AXNodeData() */,
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 BrowserAccessibilityFactory* factory) { 62 BrowserAccessibilityFactory* factory) {
62 return new BrowserAccessibilityManager(initial_tree, delegate, factory); 63 return new BrowserAccessibilityManager(initial_tree, delegate, factory);
63 } 64 }
64 #endif 65 #endif
65 66
66 BrowserAccessibilityManager::BrowserAccessibilityManager( 67 BrowserAccessibilityManager::BrowserAccessibilityManager(
67 BrowserAccessibilityDelegate* delegate, 68 BrowserAccessibilityDelegate* delegate,
68 BrowserAccessibilityFactory* factory) 69 BrowserAccessibilityFactory* factory)
69 : delegate_(delegate), 70 : delegate_(delegate),
70 factory_(factory), 71 factory_(factory),
71 tree_(new ui::AXTree()), 72 tree_(new ui::AXSerializableTree()),
72 focus_(NULL), 73 focus_(NULL),
73 parent_frame_frame_id_(0), 74 parent_frame_frame_id_(0),
74 parent_frame_node_id_(0), 75 parent_frame_node_id_(0),
75 osk_state_(OSK_ALLOWED) { 76 osk_state_(OSK_ALLOWED) {
76 tree_->SetDelegate(this); 77 tree_->SetDelegate(this);
77 } 78 }
78 79
79 BrowserAccessibilityManager::BrowserAccessibilityManager( 80 BrowserAccessibilityManager::BrowserAccessibilityManager(
80 const ui::AXTreeUpdate& initial_tree, 81 const ui::AXTreeUpdate& initial_tree,
81 BrowserAccessibilityDelegate* delegate, 82 BrowserAccessibilityDelegate* delegate,
82 BrowserAccessibilityFactory* factory) 83 BrowserAccessibilityFactory* factory)
83 : delegate_(delegate), 84 : delegate_(delegate),
84 factory_(factory), 85 factory_(factory),
85 tree_(new ui::AXTree()), 86 tree_(new ui::AXSerializableTree()),
86 focus_(NULL), 87 focus_(NULL),
87 osk_state_(OSK_ALLOWED) { 88 osk_state_(OSK_ALLOWED) {
88 tree_->SetDelegate(this); 89 tree_->SetDelegate(this);
89 Initialize(initial_tree); 90 Initialize(initial_tree);
90 } 91 }
91 92
92 BrowserAccessibilityManager::~BrowserAccessibilityManager() { 93 BrowserAccessibilityManager::~BrowserAccessibilityManager() {
93 tree_.reset(NULL); 94 tree_.reset(NULL);
94 } 95 }
95 96
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after
340 } 341 }
341 342
342 void BrowserAccessibilityManager::OnNodeCreationFinished(ui::AXNode* node) { 343 void BrowserAccessibilityManager::OnNodeCreationFinished(ui::AXNode* node) {
343 GetFromAXNode(node)->OnUpdateFinished(); 344 GetFromAXNode(node)->OnUpdateFinished();
344 } 345 }
345 346
346 void BrowserAccessibilityManager::OnNodeChangeFinished(ui::AXNode* node) { 347 void BrowserAccessibilityManager::OnNodeChangeFinished(ui::AXNode* node) {
347 GetFromAXNode(node)->OnUpdateFinished(); 348 GetFromAXNode(node)->OnUpdateFinished();
348 } 349 }
349 350
351 ui::AXTreeUpdate BrowserAccessibilityManager::SnapshotAXTreeForTesting() {
352 scoped_ptr<ui::AXTreeSource<const ui::AXNode*> > tree_source(
353 tree_->CreateTreeSource());
354 ui::AXTreeSerializer<const ui::AXNode*> serializer(tree_source.get());
355 ui::AXTreeUpdate update;
356 serializer.SerializeChanges(tree_->GetRoot(), &update);
357 return update;
358 }
359
350 void BrowserAccessibilityManager::SetParentFrameIds( 360 void BrowserAccessibilityManager::SetParentFrameIds(
351 int parent_frame_frame_id, int parent_frame_node_id) { 361 int parent_frame_frame_id, int parent_frame_node_id) {
352 parent_frame_frame_id_ = parent_frame_frame_id; 362 parent_frame_frame_id_ = parent_frame_frame_id;
353 parent_frame_node_id_ = parent_frame_node_id; 363 parent_frame_node_id_ = parent_frame_node_id;
354 } 364 }
355 365
366 void BrowserAccessibilityManager::SetChildFrameId(
367 int node_id, int child_frame_id) {
368 BrowserAccessibility* node = GetFromID(node_id);
369 if (node) {
370 // The node id passed to us is the web area for the proxy frame.
371 // In order to replace this node with the child frame, set the
372 // child frame id on its parent.
373 BrowserAccessibility* node_parent = node->GetParent();
374 if (node_parent)
375 node_parent->SetChildFrameId(child_frame_id);
376 }
377 }
378
356 BrowserAccessibility* BrowserAccessibilityManager::GetCrossFrameParent() { 379 BrowserAccessibility* BrowserAccessibilityManager::GetCrossFrameParent() {
357 FrameTreeAccessibility* frames = FrameTreeAccessibility::GetInstance(); 380 FrameTreeAccessibility* frames = FrameTreeAccessibility::GetInstance();
358 BrowserAccessibilityManager* parent_manager = 381 BrowserAccessibilityManager* parent_manager =
359 frames->FindAccessibilityManagerById(parent_frame_frame_id_); 382 frames->FindAccessibilityManagerById(parent_frame_frame_id_);
360 if (!parent_manager) 383 if (!parent_manager)
361 return NULL; 384 return NULL;
362 return parent_manager->GetFromID(parent_frame_node_id_); 385 return parent_manager->GetFromID(parent_frame_node_id_);
363 } 386 }
364 387
365 } // namespace content 388 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698