OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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/string_util.h" | 7 #include "base/string_util.h" |
8 #include "chrome/browser/cocoa/browser_accessibility.h" | 8 #include "chrome/browser/cocoa/browser_accessibility.h" |
9 #include "chrome/browser/cocoa/cocoa_test_helper.h" | 9 #include "chrome/browser/cocoa/cocoa_test_helper.h" |
10 #include "testing/gtest/include/gtest/gtest.h" | 10 #include "testing/gtest/include/gtest/gtest.h" |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
46 root.location.width = 500; | 46 root.location.width = 500; |
47 root.location.height = 100; | 47 root.location.height = 100; |
48 root.attributes[WebAccessibility::ATTR_HELP] = ASCIIToUTF16("HelpText"); | 48 root.attributes[WebAccessibility::ATTR_HELP] = ASCIIToUTF16("HelpText"); |
49 | 49 |
50 WebAccessibility child1; | 50 WebAccessibility child1; |
51 child1.name = ASCIIToUTF16("Child1"); | 51 child1.name = ASCIIToUTF16("Child1"); |
52 child1.location.x = 0; | 52 child1.location.x = 0; |
53 child1.location.y = 0; | 53 child1.location.y = 0; |
54 child1.location.width = 250; | 54 child1.location.width = 250; |
55 child1.location.height = 100; | 55 child1.location.height = 100; |
56 | 56 |
57 WebAccessibility child2; | 57 WebAccessibility child2; |
58 child2.location.x = 250; | 58 child2.location.x = 250; |
59 child2.location.y = 0; | 59 child2.location.y = 0; |
60 child2.location.width = 250; | 60 child2.location.width = 250; |
61 child2.location.height = 100; | 61 child2.location.height = 100; |
62 | 62 |
63 root.children.push_back(child1); | 63 root.children.push_back(child1); |
64 root.children.push_back(child2); | 64 root.children.push_back(child2); |
65 | 65 |
66 delegate_.reset([[MockAccessibilityDelegate alloc] init]); | 66 delegate_.reset([[MockAccessibilityDelegate alloc] init]); |
67 accessibility_.reset( | 67 accessibility_.reset( |
68 [[BrowserAccessibility alloc] initWithObject:root | 68 [[BrowserAccessibility alloc] initWithObject:root |
69 delegate:delegate_ | 69 delegate:delegate_ |
70 parent:delegate_]); | 70 parent:delegate_]); |
71 } | 71 } |
72 | 72 |
73 protected: | 73 protected: |
74 scoped_nsobject<MockAccessibilityDelegate> delegate_; | 74 scoped_nsobject<MockAccessibilityDelegate> delegate_; |
75 scoped_nsobject<BrowserAccessibility> accessibility_; | 75 scoped_nsobject<BrowserAccessibility> accessibility_; |
76 }; | 76 }; |
77 | 77 |
| 78 // Standard hit test. |
78 TEST_F(BrowserAccessibilityTest, HitTestTest) { | 79 TEST_F(BrowserAccessibilityTest, HitTestTest) { |
79 BrowserAccessibility* firstChild = | 80 BrowserAccessibility* firstChild = |
80 [accessibility_ accessibilityHitTest:NSMakePoint(50, 50)]; | 81 [accessibility_ accessibilityHitTest:NSMakePoint(50, 50)]; |
81 EXPECT_TRUE( | 82 EXPECT_TRUE( |
82 [[firstChild accessibilityAttributeValue:NSAccessibilityTitleAttribute] | 83 [[firstChild accessibilityAttributeValue:NSAccessibilityTitleAttribute] |
83 isEqualToString:@"Child1"]); | 84 isEqualToString:@"Child1"]); |
84 } | 85 } |
85 | 86 |
| 87 // Test doing a hit test on the edge of a child. |
| 88 TEST_F(BrowserAccessibilityTest, EdgeHitTest) { |
| 89 BrowserAccessibility* firstChild = |
| 90 [accessibility_ accessibilityHitTest:NSMakePoint(0, 0)]; |
| 91 EXPECT_TRUE( |
| 92 [[firstChild accessibilityAttributeValue:NSAccessibilityTitleAttribute] |
| 93 isEqualToString:@"Child1"]); |
| 94 } |
| 95 |
| 96 // This will test a hit test with invalid coordinates. It is assumed that |
| 97 // the hit test has been narrowed down to this object or one of its children |
| 98 // so it should return itself since it has no better hit result. |
| 99 TEST_F(BrowserAccessibilityTest, InvalidHitTestCoordsTest) { |
| 100 BrowserAccessibility* hitTestResult = |
| 101 [accessibility_ accessibilityHitTest:NSMakePoint(-50, 50)]; |
| 102 EXPECT_TRUE([accessibility_ isEqualTo:hitTestResult]); |
| 103 } |
| 104 |
| 105 // Test to ensure querying standard attributes works. |
86 TEST_F(BrowserAccessibilityTest, BasicAttributeTest) { | 106 TEST_F(BrowserAccessibilityTest, BasicAttributeTest) { |
87 NSString* helpText = [accessibility_ | 107 NSString* helpText = [accessibility_ |
88 accessibilityAttributeValue:NSAccessibilityHelpAttribute]; | 108 accessibilityAttributeValue:NSAccessibilityHelpAttribute]; |
89 EXPECT_TRUE([helpText isEqualToString: @"HelpText"]); | 109 EXPECT_TRUE([helpText isEqualToString: @"HelpText"]); |
90 } | 110 } |
| 111 |
| 112 // Test querying for an invalid attribute to ensure it doesn't crash. |
| 113 TEST_F(BrowserAccessibilityTest, InvalidAttributeTest) { |
| 114 NSString* shouldBeNil = [accessibility_ |
| 115 accessibilityAttributeValue:@"NSAnInvalidAttribute"]; |
| 116 EXPECT_TRUE(shouldBeNil == nil); |
| 117 } |
OLD | NEW |