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

Side by Side Diff: content/renderer/renderer_accessibility_browsertest.cc

Issue 10544099: Refactor all accessibility code out of webkit/glue. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: More Mac compile errors Created 8 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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(&notification); 76 GetLastAccNotification(&notification);
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(&notification); 97 GetLastAccNotification(&notification);
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(&notification); 123 GetLastAccNotification(&notification);
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(&notification); 135 GetLastAccNotification(&notification);
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(&notification); 147 GetLastAccNotification(&notification);
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(&notification); 160 GetLastAccNotification(&notification);
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(&notification); 173 GetLastAccNotification(&notification);
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(&notification); 187 GetLastAccNotification(&notification);
186 EXPECT_EQ(notification.id, 1); 188 EXPECT_EQ(notification.id, 1);
187 } 189 }
188 } 190 }
OLDNEW
« no previous file with comments | « content/renderer/renderer_accessibility.cc ('k') | content/renderer/renderer_accessibility_complete.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698