Index: content/browser/accessibility/browser_accessibility_mac_unittest.mm |
diff --git a/content/browser/accessibility/browser_accessibility_mac_unittest.mm b/content/browser/accessibility/browser_accessibility_mac_unittest.mm |
index 30a6de9d1db53dc1880c460fe72285a0406ffbf3..292c628a9305768a949600c92d5aa5b8b4db4c19 100644 |
--- a/content/browser/accessibility/browser_accessibility_mac_unittest.mm |
+++ b/content/browser/accessibility/browser_accessibility_mac_unittest.mm |
@@ -58,6 +58,11 @@ class BrowserAccessibilityTest : public ui::CocoaTest { |
public: |
virtual void SetUp() { |
CocoaTest::SetUp(); |
+ RebuildAccessibilityTree(); |
+ } |
+ |
+ protected: |
+ void RebuildAccessibilityTree() { |
AccessibilityNodeData root; |
root.id = 1000; |
root.location.set_width(500); |
@@ -90,7 +95,6 @@ class BrowserAccessibilityTest : public ui::CocoaTest { |
retain]); |
} |
- protected: |
scoped_nsobject<MockAccessibilityDelegate> delegate_; |
scoped_nsobject<BrowserAccessibilityCocoa> accessibility_; |
scoped_ptr<BrowserAccessibilityManager> manager_; |
@@ -136,4 +140,26 @@ TEST_F(BrowserAccessibilityTest, InvalidAttributeTest) { |
EXPECT_TRUE(shouldBeNil == nil); |
} |
+TEST_F(BrowserAccessibilityTest, RetainedDetachedObjectsReturnNil) { |
+ // Get the first child. |
+ BrowserAccessibilityCocoa* retainedFirstChild = |
+ [accessibility_ accessibilityHitTest:NSMakePoint(50, 50)]; |
+ EXPECT_NSEQ(@"Child1", [retainedFirstChild |
+ accessibilityAttributeValue:NSAccessibilityTitleAttribute]); |
+ |
+ // Retain it. This simulates what the system might do with an |
+ // accessibility object. |
+ [retainedFirstChild retain]; |
+ |
+ // Rebuild the accessibility tree, which should detach |retainedFirstChild|. |
+ RebuildAccessibilityTree(); |
+ |
+ // Now any attributes we query should return nil. |
+ EXPECT_EQ(nil, [retainedFirstChild |
+ accessibilityAttributeValue:NSAccessibilityTitleAttribute]); |
+ |
+ // Don't leak memory in the test. |
+ [retainedFirstChild release]; |
+} |
+ |
} // namespace content |