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 #include "base/utf_string_conversions.h" | 5 #include "base/utf_string_conversions.h" |
6 #include "content/common/accessibility_messages.h" | 6 #include "content/common/accessibility_messages.h" |
| 7 #include "content/common/accessibility_node_data.h" |
7 #include "content/common/view_messages.h" | 8 #include "content/common/view_messages.h" |
8 #include "content/renderer/render_view_impl.h" | 9 #include "content/renderer/render_view_impl.h" |
9 #include "content/public/test/render_view_test.h" | 10 #include "content/public/test/render_view_test.h" |
10 #include "testing/gtest/include/gtest/gtest.h" | 11 #include "testing/gtest/include/gtest/gtest.h" |
11 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebSize.h" | 12 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebSize.h" |
12 #include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h" | 13 #include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h" |
13 #include "webkit/glue/webaccessibility.h" | |
14 | 14 |
15 using webkit_glue::WebAccessibility; | 15 using content::AccessibilityNodeData; |
16 | 16 |
17 class RendererAccessibilityTest : public content::RenderViewTest { | 17 class RendererAccessibilityTest : public content::RenderViewTest { |
18 public: | 18 public: |
19 RendererAccessibilityTest() {} | 19 RendererAccessibilityTest() {} |
20 | 20 |
21 RenderViewImpl* view() { | 21 RenderViewImpl* view() { |
22 return static_cast<RenderViewImpl*>(view_); | 22 return static_cast<RenderViewImpl*>(view_); |
23 } | 23 } |
24 | 24 |
25 virtual void SetUp() { | 25 virtual void SetUp() { |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
72 // on the document. | 72 // on the document. |
73 { | 73 { |
74 SCOPED_TRACE("Initial focus on document"); | 74 SCOPED_TRACE("Initial focus on document"); |
75 AccessibilityHostMsg_NotificationParams notification; | 75 AccessibilityHostMsg_NotificationParams notification; |
76 GetLastAccNotification(¬ification); | 76 GetLastAccNotification(¬ification); |
77 EXPECT_EQ(notification.notification_type, | 77 EXPECT_EQ(notification.notification_type, |
78 AccessibilityNotificationLayoutComplete); | 78 AccessibilityNotificationLayoutComplete); |
79 EXPECT_EQ(notification.includes_children, true); | 79 EXPECT_EQ(notification.includes_children, true); |
80 EXPECT_EQ(notification.id, 1); | 80 EXPECT_EQ(notification.id, 1); |
81 EXPECT_EQ(notification.acc_tree.id, 1); | 81 EXPECT_EQ(notification.acc_tree.id, 1); |
82 EXPECT_EQ(notification.acc_tree.role, WebAccessibility::ROLE_ROOT_WEB_AREA); | 82 EXPECT_EQ(notification.acc_tree.role, |
| 83 AccessibilityNodeData::ROLE_ROOT_WEB_AREA); |
83 EXPECT_EQ(notification.acc_tree.state, | 84 EXPECT_EQ(notification.acc_tree.state, |
84 (1U << WebAccessibility::STATE_READONLY) | | 85 (1U << AccessibilityNodeData::STATE_READONLY) | |
85 (1U << WebAccessibility::STATE_FOCUSABLE) | | 86 (1U << AccessibilityNodeData::STATE_FOCUSABLE) | |
86 (1U << WebAccessibility::STATE_FOCUSED)); | 87 (1U << AccessibilityNodeData::STATE_FOCUSED)); |
87 EXPECT_EQ(notification.acc_tree.children.size(), 1U); | 88 EXPECT_EQ(notification.acc_tree.children.size(), 1U); |
88 } | 89 } |
89 | 90 |
90 // Now focus the input element, and check everything again. | 91 // Now focus the input element, and check everything again. |
91 { | 92 { |
92 SCOPED_TRACE("input"); | 93 SCOPED_TRACE("input"); |
93 sink_->ClearMessages(); | 94 sink_->ClearMessages(); |
94 ExecuteJavaScript("document.querySelector('input').focus();"); | 95 ExecuteJavaScript("document.querySelector('input').focus();"); |
95 AccessibilityHostMsg_NotificationParams notification; | 96 AccessibilityHostMsg_NotificationParams notification; |
96 GetLastAccNotification(¬ification); | 97 GetLastAccNotification(¬ification); |
97 EXPECT_EQ(notification.notification_type, | 98 EXPECT_EQ(notification.notification_type, |
98 AccessibilityNotificationFocusChanged); | 99 AccessibilityNotificationFocusChanged); |
99 EXPECT_EQ(notification.includes_children, true); | 100 EXPECT_EQ(notification.includes_children, true); |
100 EXPECT_EQ(notification.id, 3); | 101 EXPECT_EQ(notification.id, 3); |
101 EXPECT_EQ(notification.acc_tree.id, 1); | 102 EXPECT_EQ(notification.acc_tree.id, 1); |
102 EXPECT_EQ(notification.acc_tree.role, WebAccessibility::ROLE_ROOT_WEB_AREA); | 103 EXPECT_EQ(notification.acc_tree.role, |
| 104 AccessibilityNodeData::ROLE_ROOT_WEB_AREA); |
103 EXPECT_EQ(notification.acc_tree.state, | 105 EXPECT_EQ(notification.acc_tree.state, |
104 (1U << WebAccessibility::STATE_READONLY) | | 106 (1U << AccessibilityNodeData::STATE_READONLY) | |
105 (1U << WebAccessibility::STATE_FOCUSABLE)); | 107 (1U << AccessibilityNodeData::STATE_FOCUSABLE)); |
106 EXPECT_EQ(notification.acc_tree.children.size(), 1U); | 108 EXPECT_EQ(notification.acc_tree.children.size(), 1U); |
107 EXPECT_EQ(notification.acc_tree.children[0].id, 3); | 109 EXPECT_EQ(notification.acc_tree.children[0].id, 3); |
108 EXPECT_EQ(notification.acc_tree.children[0].role, | 110 EXPECT_EQ(notification.acc_tree.children[0].role, |
109 WebAccessibility::ROLE_GROUP); | 111 AccessibilityNodeData::ROLE_GROUP); |
110 EXPECT_EQ(notification.acc_tree.children[0].state, | 112 EXPECT_EQ(notification.acc_tree.children[0].state, |
111 (1U << WebAccessibility::STATE_FOCUSABLE) | | 113 (1U << AccessibilityNodeData::STATE_FOCUSABLE) | |
112 (1U << WebAccessibility::STATE_FOCUSED)); | 114 (1U << AccessibilityNodeData::STATE_FOCUSED)); |
113 } | 115 } |
114 | 116 |
115 // Check other editable text nodes. | 117 // Check other editable text nodes. |
116 { | 118 { |
117 SCOPED_TRACE("textarea"); | 119 SCOPED_TRACE("textarea"); |
118 sink_->ClearMessages(); | 120 sink_->ClearMessages(); |
119 ExecuteJavaScript("document.querySelector('textarea').focus();"); | 121 ExecuteJavaScript("document.querySelector('textarea').focus();"); |
120 AccessibilityHostMsg_NotificationParams notification; | 122 AccessibilityHostMsg_NotificationParams notification; |
121 GetLastAccNotification(¬ification); | 123 GetLastAccNotification(¬ification); |
122 EXPECT_EQ(notification.id, 4); | 124 EXPECT_EQ(notification.id, 4); |
123 EXPECT_EQ(notification.acc_tree.children[0].state, | 125 EXPECT_EQ(notification.acc_tree.children[0].state, |
124 (1U << WebAccessibility::STATE_FOCUSABLE) | | 126 (1U << AccessibilityNodeData::STATE_FOCUSABLE) | |
125 (1U << WebAccessibility::STATE_FOCUSED)); | 127 (1U << AccessibilityNodeData::STATE_FOCUSED)); |
126 } | 128 } |
127 | 129 |
128 { | 130 { |
129 SCOPED_TRACE("contentEditable"); | 131 SCOPED_TRACE("contentEditable"); |
130 sink_->ClearMessages(); | 132 sink_->ClearMessages(); |
131 ExecuteJavaScript("document.querySelector('p').focus();"); | 133 ExecuteJavaScript("document.querySelector('p').focus();"); |
132 AccessibilityHostMsg_NotificationParams notification; | 134 AccessibilityHostMsg_NotificationParams notification; |
133 GetLastAccNotification(¬ification); | 135 GetLastAccNotification(¬ification); |
134 EXPECT_EQ(notification.id, 5); | 136 EXPECT_EQ(notification.id, 5); |
135 EXPECT_EQ(notification.acc_tree.children[0].state, | 137 EXPECT_EQ(notification.acc_tree.children[0].state, |
136 (1U << WebAccessibility::STATE_FOCUSABLE) | | 138 (1U << AccessibilityNodeData::STATE_FOCUSABLE) | |
137 (1U << WebAccessibility::STATE_FOCUSED)); | 139 (1U << AccessibilityNodeData::STATE_FOCUSED)); |
138 } | 140 } |
139 | 141 |
140 { | 142 { |
141 SCOPED_TRACE("role=textarea"); | 143 SCOPED_TRACE("role=textarea"); |
142 sink_->ClearMessages(); | 144 sink_->ClearMessages(); |
143 ExecuteJavaScript("document.querySelector('div').focus();"); | 145 ExecuteJavaScript("document.querySelector('div').focus();"); |
144 AccessibilityHostMsg_NotificationParams notification; | 146 AccessibilityHostMsg_NotificationParams notification; |
145 GetLastAccNotification(¬ification); | 147 GetLastAccNotification(¬ification); |
146 EXPECT_EQ(notification.id, 6); | 148 EXPECT_EQ(notification.id, 6); |
147 EXPECT_EQ(notification.acc_tree.children[0].state, | 149 EXPECT_EQ(notification.acc_tree.children[0].state, |
148 (1U << WebAccessibility::STATE_FOCUSABLE) | | 150 (1U << AccessibilityNodeData::STATE_FOCUSABLE) | |
149 (1U << WebAccessibility::STATE_FOCUSED)); | 151 (1U << AccessibilityNodeData::STATE_FOCUSED)); |
150 } | 152 } |
151 | 153 |
152 // Try focusing things that aren't editable text. | 154 // Try focusing things that aren't editable text. |
153 { | 155 { |
154 SCOPED_TRACE("button"); | 156 SCOPED_TRACE("button"); |
155 sink_->ClearMessages(); | 157 sink_->ClearMessages(); |
156 ExecuteJavaScript("document.querySelector('button').focus();"); | 158 ExecuteJavaScript("document.querySelector('button').focus();"); |
157 AccessibilityHostMsg_NotificationParams notification; | 159 AccessibilityHostMsg_NotificationParams notification; |
158 GetLastAccNotification(¬ification); | 160 GetLastAccNotification(¬ification); |
159 EXPECT_EQ(notification.id, 7); | 161 EXPECT_EQ(notification.id, 7); |
160 EXPECT_EQ(notification.acc_tree.children[0].state, | 162 EXPECT_EQ(notification.acc_tree.children[0].state, |
161 (1U << WebAccessibility::STATE_FOCUSABLE) | | 163 (1U << AccessibilityNodeData::STATE_FOCUSABLE) | |
162 (1U << WebAccessibility::STATE_FOCUSED) | | 164 (1U << AccessibilityNodeData::STATE_FOCUSED) | |
163 (1U << WebAccessibility::STATE_READONLY)); | 165 (1U << AccessibilityNodeData::STATE_READONLY)); |
164 } | 166 } |
165 | 167 |
166 { | 168 { |
167 SCOPED_TRACE("link"); | 169 SCOPED_TRACE("link"); |
168 sink_->ClearMessages(); | 170 sink_->ClearMessages(); |
169 ExecuteJavaScript("document.querySelector('a').focus();"); | 171 ExecuteJavaScript("document.querySelector('a').focus();"); |
170 AccessibilityHostMsg_NotificationParams notification; | 172 AccessibilityHostMsg_NotificationParams notification; |
171 GetLastAccNotification(¬ification); | 173 GetLastAccNotification(¬ification); |
172 EXPECT_EQ(notification.id, 8); | 174 EXPECT_EQ(notification.id, 8); |
173 EXPECT_EQ(notification.acc_tree.children[0].state, | 175 EXPECT_EQ(notification.acc_tree.children[0].state, |
174 (1U << WebAccessibility::STATE_FOCUSABLE) | | 176 (1U << AccessibilityNodeData::STATE_FOCUSABLE) | |
175 (1U << WebAccessibility::STATE_FOCUSED) | | 177 (1U << AccessibilityNodeData::STATE_FOCUSED) | |
176 (1U << WebAccessibility::STATE_READONLY)); | 178 (1U << AccessibilityNodeData::STATE_READONLY)); |
177 } | 179 } |
178 | 180 |
179 // Clear focus. | 181 // Clear focus. |
180 { | 182 { |
181 SCOPED_TRACE("Back to document."); | 183 SCOPED_TRACE("Back to document."); |
182 sink_->ClearMessages(); | 184 sink_->ClearMessages(); |
183 ExecuteJavaScript("document.activeElement.blur()"); | 185 ExecuteJavaScript("document.activeElement.blur()"); |
184 AccessibilityHostMsg_NotificationParams notification; | 186 AccessibilityHostMsg_NotificationParams notification; |
185 GetLastAccNotification(¬ification); | 187 GetLastAccNotification(¬ification); |
186 EXPECT_EQ(notification.id, 1); | 188 EXPECT_EQ(notification.id, 1); |
187 } | 189 } |
188 } | 190 } |
OLD | NEW |