OLD | NEW |
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 #import <Cocoa/Cocoa.h> | 5 #import <Cocoa/Cocoa.h> |
6 | 6 |
7 #include "base/memory/scoped_ptr.h" | 7 #include "base/memory/scoped_ptr.h" |
8 #include "base/strings/string_util.h" | 8 #include "base/strings/string_util.h" |
9 #include "base/strings/utf_string_conversions.h" | 9 #include "base/strings/utf_string_conversions.h" |
10 #include "content/browser/accessibility/browser_accessibility_cocoa.h" | 10 #include "content/browser/accessibility/browser_accessibility_cocoa.h" |
(...skipping 12 matching lines...) Expand all Loading... |
23 RebuildAccessibilityTree(); | 23 RebuildAccessibilityTree(); |
24 } | 24 } |
25 | 25 |
26 protected: | 26 protected: |
27 void RebuildAccessibilityTree() { | 27 void RebuildAccessibilityTree() { |
28 ui::AXNodeData root; | 28 ui::AXNodeData root; |
29 root.id = 1000; | 29 root.id = 1000; |
30 root.location.set_width(500); | 30 root.location.set_width(500); |
31 root.location.set_height(100); | 31 root.location.set_height(100); |
32 root.role = ui::AX_ROLE_ROOT_WEB_AREA; | 32 root.role = ui::AX_ROLE_ROOT_WEB_AREA; |
33 root.AddStringAttribute(ui::AX_ATTR_HELP, "HelpText"); | 33 root.AddStringAttribute(ui::AX_ATTR_DESCRIPTION, "HelpText"); |
34 root.child_ids.push_back(1001); | 34 root.child_ids.push_back(1001); |
35 root.child_ids.push_back(1002); | 35 root.child_ids.push_back(1002); |
36 | 36 |
37 ui::AXNodeData child1; | 37 ui::AXNodeData child1; |
38 child1.id = 1001; | 38 child1.id = 1001; |
39 child1.SetName("Child1"); | 39 child1.SetName("Child1"); |
40 child1.location.set_width(250); | 40 child1.location.set_width(250); |
41 child1.location.set_height(100); | 41 child1.location.set_height(100); |
42 child1.role = ui::AX_ROLE_BUTTON; | 42 child1.role = ui::AX_ROLE_BUTTON; |
43 | 43 |
(...skipping 15 matching lines...) Expand all Loading... |
59 | 59 |
60 base::scoped_nsobject<BrowserAccessibilityCocoa> accessibility_; | 60 base::scoped_nsobject<BrowserAccessibilityCocoa> accessibility_; |
61 scoped_ptr<BrowserAccessibilityManager> manager_; | 61 scoped_ptr<BrowserAccessibilityManager> manager_; |
62 }; | 62 }; |
63 | 63 |
64 // Standard hit test. | 64 // Standard hit test. |
65 TEST_F(BrowserAccessibilityTest, HitTestTest) { | 65 TEST_F(BrowserAccessibilityTest, HitTestTest) { |
66 BrowserAccessibilityCocoa* firstChild = | 66 BrowserAccessibilityCocoa* firstChild = |
67 [accessibility_ accessibilityHitTest:NSMakePoint(50, 50)]; | 67 [accessibility_ accessibilityHitTest:NSMakePoint(50, 50)]; |
68 EXPECT_NSEQ(@"Child1", | 68 EXPECT_NSEQ(@"Child1", |
69 [firstChild accessibilityAttributeValue:NSAccessibilityTitleAttribute]); | 69 [firstChild |
| 70 accessibilityAttributeValue:NSAccessibilityDescriptionAttribute]); |
70 } | 71 } |
71 | 72 |
72 // Test doing a hit test on the edge of a child. | 73 // Test doing a hit test on the edge of a child. |
73 TEST_F(BrowserAccessibilityTest, EdgeHitTest) { | 74 TEST_F(BrowserAccessibilityTest, EdgeHitTest) { |
74 BrowserAccessibilityCocoa* firstChild = | 75 BrowserAccessibilityCocoa* firstChild = |
75 [accessibility_ accessibilityHitTest:NSZeroPoint]; | 76 [accessibility_ accessibilityHitTest:NSZeroPoint]; |
76 EXPECT_NSEQ(@"Child1", | 77 EXPECT_NSEQ(@"Child1", |
77 [firstChild accessibilityAttributeValue:NSAccessibilityTitleAttribute]); | 78 [firstChild |
| 79 accessibilityAttributeValue:NSAccessibilityDescriptionAttribute]); |
78 } | 80 } |
79 | 81 |
80 // This will test a hit test with invalid coordinates. It is assumed that | 82 // This will test a hit test with invalid coordinates. It is assumed that |
81 // the hit test has been narrowed down to this object or one of its children | 83 // the hit test has been narrowed down to this object or one of its children |
82 // so it should return itself since it has no better hit result. | 84 // so it should return itself since it has no better hit result. |
83 TEST_F(BrowserAccessibilityTest, InvalidHitTestCoordsTest) { | 85 TEST_F(BrowserAccessibilityTest, InvalidHitTestCoordsTest) { |
84 BrowserAccessibilityCocoa* hitTestResult = | 86 BrowserAccessibilityCocoa* hitTestResult = |
85 [accessibility_ accessibilityHitTest:NSMakePoint(-50, 50)]; | 87 [accessibility_ accessibilityHitTest:NSMakePoint(-50, 50)]; |
86 EXPECT_NSEQ(accessibility_, hitTestResult); | 88 EXPECT_NSEQ(accessibility_, hitTestResult); |
87 } | 89 } |
(...skipping 10 matching lines...) Expand all Loading... |
98 NSString* shouldBeNil = [accessibility_ | 100 NSString* shouldBeNil = [accessibility_ |
99 accessibilityAttributeValue:@"NSAnInvalidAttribute"]; | 101 accessibilityAttributeValue:@"NSAnInvalidAttribute"]; |
100 EXPECT_TRUE(shouldBeNil == nil); | 102 EXPECT_TRUE(shouldBeNil == nil); |
101 } | 103 } |
102 | 104 |
103 TEST_F(BrowserAccessibilityTest, RetainedDetachedObjectsReturnNil) { | 105 TEST_F(BrowserAccessibilityTest, RetainedDetachedObjectsReturnNil) { |
104 // Get the first child. | 106 // Get the first child. |
105 BrowserAccessibilityCocoa* retainedFirstChild = | 107 BrowserAccessibilityCocoa* retainedFirstChild = |
106 [accessibility_ accessibilityHitTest:NSMakePoint(50, 50)]; | 108 [accessibility_ accessibilityHitTest:NSMakePoint(50, 50)]; |
107 EXPECT_NSEQ(@"Child1", [retainedFirstChild | 109 EXPECT_NSEQ(@"Child1", [retainedFirstChild |
108 accessibilityAttributeValue:NSAccessibilityTitleAttribute]); | 110 accessibilityAttributeValue:NSAccessibilityDescriptionAttribute]); |
109 | 111 |
110 // Retain it. This simulates what the system might do with an | 112 // Retain it. This simulates what the system might do with an |
111 // accessibility object. | 113 // accessibility object. |
112 [retainedFirstChild retain]; | 114 [retainedFirstChild retain]; |
113 | 115 |
114 // Rebuild the accessibility tree, which should detach |retainedFirstChild|. | 116 // Rebuild the accessibility tree, which should detach |retainedFirstChild|. |
115 RebuildAccessibilityTree(); | 117 RebuildAccessibilityTree(); |
116 | 118 |
117 // Now any attributes we query should return nil. | 119 // Now any attributes we query should return nil. |
118 EXPECT_EQ(nil, [retainedFirstChild | 120 EXPECT_EQ(nil, [retainedFirstChild |
119 accessibilityAttributeValue:NSAccessibilityTitleAttribute]); | 121 accessibilityAttributeValue:NSAccessibilityDescriptionAttribute]); |
120 | 122 |
121 // Don't leak memory in the test. | 123 // Don't leak memory in the test. |
122 [retainedFirstChild release]; | 124 [retainedFirstChild release]; |
123 } | 125 } |
124 | 126 |
125 } // namespace content | 127 } // namespace content |
OLD | NEW |