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

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: 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 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/common/accessibility_messages.h" 9 #include "content/common/accessibility_messages.h"
10 #include "ui/accessibility/ax_tree_serializer.h"
10 11
11 namespace content { 12 namespace content {
12 13
13 ui::AXTreeUpdate MakeAXTreeUpdate( 14 ui::AXTreeUpdate MakeAXTreeUpdate(
14 const ui::AXNodeData& node1, 15 const ui::AXNodeData& node1,
15 const ui::AXNodeData& node2 /* = ui::AXNodeData() */, 16 const ui::AXNodeData& node2 /* = ui::AXNodeData() */,
16 const ui::AXNodeData& node3 /* = ui::AXNodeData() */, 17 const ui::AXNodeData& node3 /* = ui::AXNodeData() */,
17 const ui::AXNodeData& node4 /* = ui::AXNodeData() */, 18 const ui::AXNodeData& node4 /* = ui::AXNodeData() */,
18 const ui::AXNodeData& node5 /* = ui::AXNodeData() */, 19 const ui::AXNodeData& node5 /* = ui::AXNodeData() */,
19 const ui::AXNodeData& node6 /* = ui::AXNodeData() */, 20 const ui::AXNodeData& node6 /* = ui::AXNodeData() */,
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 BrowserAccessibilityFactory* factory) { 61 BrowserAccessibilityFactory* factory) {
61 return new BrowserAccessibilityManager(initial_tree, delegate, factory); 62 return new BrowserAccessibilityManager(initial_tree, delegate, factory);
62 } 63 }
63 #endif 64 #endif
64 65
65 BrowserAccessibilityManager::BrowserAccessibilityManager( 66 BrowserAccessibilityManager::BrowserAccessibilityManager(
66 BrowserAccessibilityDelegate* delegate, 67 BrowserAccessibilityDelegate* delegate,
67 BrowserAccessibilityFactory* factory) 68 BrowserAccessibilityFactory* factory)
68 : delegate_(delegate), 69 : delegate_(delegate),
69 factory_(factory), 70 factory_(factory),
70 tree_(new ui::AXTree()), 71 tree_(new ui::AXSerializableTree()),
71 focus_(NULL), 72 focus_(NULL),
73 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.
72 osk_state_(OSK_ALLOWED) { 74 osk_state_(OSK_ALLOWED) {
73 tree_->SetDelegate(this); 75 tree_->SetDelegate(this);
74 } 76 }
75 77
76 BrowserAccessibilityManager::BrowserAccessibilityManager( 78 BrowserAccessibilityManager::BrowserAccessibilityManager(
77 const ui::AXTreeUpdate& initial_tree, 79 const ui::AXTreeUpdate& initial_tree,
78 BrowserAccessibilityDelegate* delegate, 80 BrowserAccessibilityDelegate* delegate,
79 BrowserAccessibilityFactory* factory) 81 BrowserAccessibilityFactory* factory)
80 : delegate_(delegate), 82 : delegate_(delegate),
81 factory_(factory), 83 factory_(factory),
82 tree_(new ui::AXTree()), 84 tree_(new ui::AXSerializableTree()),
83 focus_(NULL), 85 focus_(NULL),
84 osk_state_(OSK_ALLOWED) { 86 osk_state_(OSK_ALLOWED) {
85 tree_->SetDelegate(this); 87 tree_->SetDelegate(this);
86 Initialize(initial_tree); 88 Initialize(initial_tree);
87 } 89 }
88 90
89 BrowserAccessibilityManager::~BrowserAccessibilityManager() { 91 BrowserAccessibilityManager::~BrowserAccessibilityManager() {
90 tree_.reset(NULL); 92 tree_.reset(NULL);
91 } 93 }
92 94
(...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after
356 } 358 }
357 359
358 void BrowserAccessibilityManager::OnNodeCreationFinished(ui::AXNode* node) { 360 void BrowserAccessibilityManager::OnNodeCreationFinished(ui::AXNode* node) {
359 GetFromAXNode(node)->OnUpdateFinished(); 361 GetFromAXNode(node)->OnUpdateFinished();
360 } 362 }
361 363
362 void BrowserAccessibilityManager::OnNodeChangeFinished(ui::AXNode* node) { 364 void BrowserAccessibilityManager::OnNodeChangeFinished(ui::AXNode* node) {
363 GetFromAXNode(node)->OnUpdateFinished(); 365 GetFromAXNode(node)->OnUpdateFinished();
364 } 366 }
365 367
368 ui::AXTreeUpdate BrowserAccessibilityManager::SnapshotAXTreeForTesting() {
369 scoped_ptr<ui::AXTreeSource<const ui::AXNode*> > tree_source(
370 tree_->CreateTreeSource());
371 ui::AXTreeSerializer<const ui::AXNode*> serializer(tree_source.get());
372 ui::AXTreeUpdate update;
373 serializer.SerializeChanges(tree_->GetRoot(), &update);
374 return update;
375 }
376
377 void BrowserAccessibilityManager::SetNodeIdInParentFrame(int32 node_id) {
378 node_id_in_parent_frame_ = node_id;
379 }
380
381 void BrowserAccessibilityManager::SetChildFrameId(
382 int32 node_id, int64 child_frame_id) {
383 BrowserAccessibility* node = GetFromID(node_id);
384 if (node) {
385 // The node id passed to us is the web area for the proxy frame.
386 // In order to replace this node with the child frame, set the
387 // child frame id on its parent.
388 BrowserAccessibility* node_parent = node->GetParent();
389 if (node_parent)
390 node_parent->SetChildFrameId(child_frame_id);
391 }
392 }
393
394 BrowserAccessibility* BrowserAccessibilityManager::GetCrossFrameParent() {
395 if (!delegate_)
396 return NULL;
397
398 BrowserAccessibilityManager* parent_frame =
399 delegate_->AccessibilityGetParentFrame();
400 if (!parent_frame)
401 return NULL;
402
403 return parent_frame->GetFromID(node_id_in_parent_frame_);
404 }
405
366 } // namespace content 406 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698