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

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

Issue 268543008: Cross-process iframe accessibility. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix compile error Created 6 years, 3 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.cc
diff --git a/content/browser/accessibility/browser_accessibility.cc b/content/browser/accessibility/browser_accessibility.cc
index fe71fef965aa95dfdd32a16d0c22d738e9430e99..ce558fac8cc3446bc5e6f129a9e92f9f891d9e75 100644
--- a/content/browser/accessibility/browser_accessibility.cc
+++ b/content/browser/accessibility/browser_accessibility.cc
@@ -26,7 +26,8 @@ BrowserAccessibility* BrowserAccessibility::Create() {
BrowserAccessibility::BrowserAccessibility()
: manager_(NULL),
- node_(NULL) {
+ node_(NULL),
+ child_frame_tree_node_id_(0) {
}
BrowserAccessibility::~BrowserAccessibility() {
@@ -63,6 +64,15 @@ 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();
}
@@ -83,6 +93,16 @@ 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);
}
@@ -122,7 +142,9 @@ BrowserAccessibility* BrowserAccessibility::GetParent() const {
if (!node_ || !manager_)
return NULL;
ui::AXNode* parent = node_->parent();
- return parent ? manager_->GetFromAXNode(parent) : NULL;
+ if (parent)
+ return manager_->GetFromAXNode(parent);
+ return manager_->GetCrossFrameParent();
}
int32 BrowserAccessibility::GetIndexInParent() const {
@@ -680,4 +702,10 @@ 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
« no previous file with comments | « content/browser/accessibility/browser_accessibility.h ('k') | content/browser/accessibility/browser_accessibility_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698