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

Unified Diff: content/browser/accessibility/browser_accessibility_mac_unittest.mm

Issue 17261008: Fix crash when system retains an accessibility object. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 6 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
« no previous file with comments | « content/browser/accessibility/browser_accessibility_mac.mm ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « content/browser/accessibility/browser_accessibility_mac.mm ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698