summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authordtseng@chromium.org <dtseng@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-04-26 21:03:41 +0000
committerdtseng@chromium.org <dtseng@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-04-26 21:03:41 +0000
commit9f697d5bb4ae0b7464ed02cb9f7ce3f43054a32f (patch)
tree9441b466f055287de018903aa058270033f86774 /chrome
parent33bd0f059a7caee231351163a208159de9a69a48 (diff)
downloadchromium_src-9f697d5bb4ae0b7464ed02cb9f7ce3f43054a32f.zip
chromium_src-9f697d5bb4ae0b7464ed02cb9f7ce3f43054a32f.tar.gz
chromium_src-9f697d5bb4ae0b7464ed02cb9f7ce3f43054a32f.tar.bz2
Ensures detached subtrees have root nodes that retain the previous parent.
Also, removes ReplaceChild, which doesn't seem to be used anymore. BUG=none TEST=BrowserAccessibilityManagerTest.TestReuseBrowserAccessibilityObjects2 Review URL: http://codereview.chromium.org/6902038 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@83072 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r--chrome/browser/accessibility/browser_accessibility.cc8
-rw-r--r--chrome/browser/accessibility/browser_accessibility.h5
-rw-r--r--chrome/browser/accessibility/browser_accessibility_mac.h5
-rw-r--r--chrome/browser/accessibility/browser_accessibility_mac.mm7
-rw-r--r--chrome/browser/accessibility/browser_accessibility_manager.cc6
-rw-r--r--chrome/browser/accessibility/browser_accessibility_manager_unittest.cc4
6 files changed, 9 insertions, 26 deletions
diff --git a/chrome/browser/accessibility/browser_accessibility.cc b/chrome/browser/accessibility/browser_accessibility.cc
index 03a51e8..a54eb1e 100644
--- a/chrome/browser/accessibility/browser_accessibility.cc
+++ b/chrome/browser/accessibility/browser_accessibility.cc
@@ -32,14 +32,6 @@ BrowserAccessibility::BrowserAccessibility()
BrowserAccessibility::~BrowserAccessibility() {
}
-void BrowserAccessibility::ReplaceChild(
- BrowserAccessibility* old_acc, BrowserAccessibility* new_acc) {
- DCHECK_EQ(children_[old_acc->index_in_parent_], old_acc);
-
- old_acc = children_[old_acc->index_in_parent_];
- children_[old_acc->index_in_parent_] = new_acc;
-}
-
void BrowserAccessibility::Initialize(
BrowserAccessibilityManager* manager,
BrowserAccessibility* parent,
diff --git a/chrome/browser/accessibility/browser_accessibility.h b/chrome/browser/accessibility/browser_accessibility.h
index 6f42911..9f28c27 100644
--- a/chrome/browser/accessibility/browser_accessibility.h
+++ b/chrome/browser/accessibility/browser_accessibility.h
@@ -48,11 +48,6 @@ class BrowserAccessibility {
// have been reset with new values from the renderer process.
virtual void Initialize();
- // Replace a child object. Used when updating the accessibility tree.
- virtual void ReplaceChild(
- BrowserAccessibility* old_acc,
- BrowserAccessibility* new_acc);
-
// Initialize this object, reading attributes from |src|. Does not
// recurse into children of |src| and build the whole subtree.
void Initialize(BrowserAccessibilityManager* manager,
diff --git a/chrome/browser/accessibility/browser_accessibility_mac.h b/chrome/browser/accessibility/browser_accessibility_mac.h
index 2f8e04a..f3c6605 100644
--- a/chrome/browser/accessibility/browser_accessibility_mac.h
+++ b/chrome/browser/accessibility/browser_accessibility_mac.h
@@ -22,11 +22,6 @@ class BrowserAccessibilityMac : public BrowserAccessibility {
virtual void NativeReleaseReference();
// Overrides from BrowserAccessibility.
- // Used to know when to update the cocoa children.
- virtual void ReplaceChild(
- BrowserAccessibility* old_acc,
- BrowserAccessibility* new_acc);
-
// The BrowserAccessibilityCocoa associated with us.
BrowserAccessibilityCocoa* native_view() const {
return browser_accessibility_cocoa_;
diff --git a/chrome/browser/accessibility/browser_accessibility_mac.mm b/chrome/browser/accessibility/browser_accessibility_mac.mm
index 97f016a..305e93c8 100644
--- a/chrome/browser/accessibility/browser_accessibility_mac.mm
+++ b/chrome/browser/accessibility/browser_accessibility_mac.mm
@@ -47,13 +47,6 @@ void BrowserAccessibilityMac::NativeReleaseReference() {
}
}
-void BrowserAccessibilityMac::ReplaceChild(
- BrowserAccessibility* old_acc,
- BrowserAccessibility* new_acc) {
- BrowserAccessibility::ReplaceChild(old_acc, new_acc);
- [browser_accessibility_cocoa_ childrenChanged];
-}
-
BrowserAccessibilityCocoa* BrowserAccessibility::toBrowserAccessibilityCocoa() {
return static_cast<BrowserAccessibilityMac*>(this)->
native_view();
diff --git a/chrome/browser/accessibility/browser_accessibility_manager.cc b/chrome/browser/accessibility/browser_accessibility_manager.cc
index 3a12164..36cbfd2 100644
--- a/chrome/browser/accessibility/browser_accessibility_manager.cc
+++ b/chrome/browser/accessibility/browser_accessibility_manager.cc
@@ -282,6 +282,9 @@ BrowserAccessibility* BrowserAccessibilityManager::UpdateNode(
return current;
}
+ BrowserAccessibility* current_parent = current->parent();
+ int current_index_in_parent = current->index_in_parent();
+
// Detach all of the nodes in the old tree and get a single flat vector
// of all node pointers.
std::vector<BrowserAccessibility*> old_tree_nodes;
@@ -289,7 +292,8 @@ BrowserAccessibility* BrowserAccessibilityManager::UpdateNode(
// Build a new tree, reusing old nodes if possible. Each node that's
// reused will have its reference count incremented by one.
- current = CreateAccessibilityTree(NULL, src, -1);
+ current =
+ CreateAccessibilityTree(current_parent, src, current_index_in_parent);
// Decrement the reference count of all nodes in the old tree, which will
// delete any nodes no longer needed.
diff --git a/chrome/browser/accessibility/browser_accessibility_manager_unittest.cc b/chrome/browser/accessibility/browser_accessibility_manager_unittest.cc
index 1b6aa1a..4d8bb15 100644
--- a/chrome/browser/accessibility/browser_accessibility_manager_unittest.cc
+++ b/chrome/browser/accessibility/browser_accessibility_manager_unittest.cc
@@ -451,6 +451,10 @@ TEST(BrowserAccessibilityManagerTest, TestReuseBrowserAccessibilityObjects2) {
EXPECT_TRUE(child2_accessible->instance_active());
EXPECT_FALSE(child3_accessible->instance_active());
+ // Ensure that we retain the parent of the detached subtree.
+ EXPECT_EQ(root_accessible, container_accessible->parent());
+ EXPECT_EQ(0, container_accessible->index_in_parent());
+
// Check that the index in parent has been updated.
EXPECT_EQ(2, child2_accessible->index_in_parent());