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

Side by Side Diff: content/browser/accessibility/accessibility_mode_browsertest.cc

Issue 2694413006: Scope and clean up uses of AccessibilityMode. (Closed)
Patch Set: address comments Created 3 years, 9 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "content/browser/accessibility/browser_accessibility_state_impl.h" 5 #include "content/browser/accessibility/browser_accessibility_state_impl.h"
6 #include "content/browser/renderer_host/render_view_host_impl.h" 6 #include "content/browser/renderer_host/render_view_host_impl.h"
7 #include "content/browser/renderer_host/render_widget_host_impl.h" 7 #include "content/browser/renderer_host/render_widget_host_impl.h"
8 #include "content/browser/renderer_host/render_widget_host_view_base.h" 8 #include "content/browser/renderer_host/render_widget_host_view_base.h"
9 #include "content/browser/web_contents/web_contents_impl.h" 9 #include "content/browser/web_contents/web_contents_impl.h"
10 #include "content/common/accessibility_mode.h"
10 #include "content/public/browser/render_view_host.h" 11 #include "content/public/browser/render_view_host.h"
11 #include "content/public/browser/render_widget_host.h" 12 #include "content/public/browser/render_widget_host.h"
12 #include "content/public/browser/render_widget_host_view.h" 13 #include "content/public/browser/render_widget_host_view.h"
13 #include "content/public/browser/web_contents.h" 14 #include "content/public/browser/web_contents.h"
14 #include "content/public/common/url_constants.h" 15 #include "content/public/common/url_constants.h"
15 #include "content/public/test/content_browser_test.h" 16 #include "content/public/test/content_browser_test.h"
16 #include "content/public/test/content_browser_test_utils.h" 17 #include "content/public/test/content_browser_test_utils.h"
17 #include "content/shell/browser/shell.h" 18 #include "content/shell/browser/shell.h"
18 #include "content/test/accessibility_browser_test_utils.h" 19 #include "content/test/accessibility_browser_test_utils.h"
19 #include "testing/gtest/include/gtest/gtest.h" 20 #include "testing/gtest/include/gtest/gtest.h"
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
56 *node.PlatformGetChild(i), role, name); 57 *node.PlatformGetChild(i), role, name);
57 if (result) 58 if (result)
58 return result; 59 return result;
59 } 60 }
60 return nullptr; 61 return nullptr;
61 } 62 }
62 }; 63 };
63 64
64 IN_PROC_BROWSER_TEST_F(AccessibilityModeTest, AccessibilityModeOff) { 65 IN_PROC_BROWSER_TEST_F(AccessibilityModeTest, AccessibilityModeOff) {
65 NavigateToURL(shell(), GURL(kMinimalPageDataURL)); 66 NavigateToURL(shell(), GURL(kMinimalPageDataURL));
66 67 EXPECT_TRUE(web_contents()->GetAccessibilityMode() ==
67 EXPECT_EQ(AccessibilityModeOff, web_contents()->GetAccessibilityMode()); 68 AccessibilityMode::kOff);
68 EXPECT_EQ(nullptr, GetManager()); 69 EXPECT_EQ(nullptr, GetManager());
69 } 70 }
70 71
71 IN_PROC_BROWSER_TEST_F(AccessibilityModeTest, AccessibilityModeComplete) { 72 IN_PROC_BROWSER_TEST_F(AccessibilityModeTest, AccessibilityModeComplete) {
72 NavigateToURL(shell(), GURL(kMinimalPageDataURL)); 73 NavigateToURL(shell(), GURL(kMinimalPageDataURL));
73 ASSERT_EQ(AccessibilityModeOff, web_contents()->GetAccessibilityMode()); 74 ASSERT_TRUE(web_contents()->GetAccessibilityMode() ==
75 AccessibilityMode::kOff);
74 76
75 AccessibilityNotificationWaiter waiter(shell()->web_contents()); 77 AccessibilityNotificationWaiter waiter(shell()->web_contents());
76 web_contents()->AddAccessibilityMode(ACCESSIBILITY_MODE_COMPLETE); 78 web_contents()->AddAccessibilityMode(AccessibilityMode::kComplete);
77 EXPECT_EQ(ACCESSIBILITY_MODE_COMPLETE, 79 EXPECT_TRUE(web_contents()->GetAccessibilityMode() ==
78 web_contents()->GetAccessibilityMode()); 80 AccessibilityMode::kComplete);
79 waiter.WaitForNotification(); 81 waiter.WaitForNotification();
80 EXPECT_NE(nullptr, GetManager()); 82 EXPECT_NE(nullptr, GetManager());
81 } 83 }
82 84
83 IN_PROC_BROWSER_TEST_F(AccessibilityModeTest, 85 IN_PROC_BROWSER_TEST_F(AccessibilityModeTest,
84 AccessibilityModeWebContentsOnly) { 86 AccessibilityModeWebContentsOnly) {
85 NavigateToURL(shell(), GURL(kMinimalPageDataURL)); 87 NavigateToURL(shell(), GURL(kMinimalPageDataURL));
86 ASSERT_EQ(AccessibilityModeOff, web_contents()->GetAccessibilityMode()); 88 ASSERT_TRUE(web_contents()->GetAccessibilityMode() ==
89 AccessibilityMode::kOff);
87 90
88 AccessibilityNotificationWaiter waiter(shell()->web_contents()); 91 AccessibilityNotificationWaiter waiter(shell()->web_contents());
89 web_contents()->AddAccessibilityMode(ACCESSIBILITY_MODE_WEB_CONTENTS_ONLY); 92 web_contents()->AddAccessibilityMode(AccessibilityMode::kWebContentsOnly);
90 EXPECT_EQ(ACCESSIBILITY_MODE_WEB_CONTENTS_ONLY, 93 EXPECT_TRUE(web_contents()->GetAccessibilityMode() ==
91 web_contents()->GetAccessibilityMode()); 94 AccessibilityMode::kWebContentsOnly);
92 waiter.WaitForNotification(); 95 waiter.WaitForNotification();
93 // No BrowserAccessibilityManager expected for this mode. 96 // No BrowserAccessibilityManager expected for this mode.
94 EXPECT_EQ(nullptr, GetManager()); 97 EXPECT_EQ(nullptr, GetManager());
95 } 98 }
96 99
97 IN_PROC_BROWSER_TEST_F(AccessibilityModeTest, AddingModes) { 100 IN_PROC_BROWSER_TEST_F(AccessibilityModeTest, AddingModes) {
98 NavigateToURL(shell(), GURL(kMinimalPageDataURL)); 101 NavigateToURL(shell(), GURL(kMinimalPageDataURL));
99 102
100 AccessibilityNotificationWaiter waiter(shell()->web_contents()); 103 AccessibilityNotificationWaiter waiter(shell()->web_contents());
101 web_contents()->AddAccessibilityMode(ACCESSIBILITY_MODE_WEB_CONTENTS_ONLY); 104 web_contents()->AddAccessibilityMode(AccessibilityMode::kWebContentsOnly);
102 EXPECT_EQ(ACCESSIBILITY_MODE_WEB_CONTENTS_ONLY, 105 EXPECT_TRUE(web_contents()->GetAccessibilityMode() ==
103 web_contents()->GetAccessibilityMode()); 106 AccessibilityMode::kWebContentsOnly);
104 waiter.WaitForNotification(); 107 waiter.WaitForNotification();
105 EXPECT_EQ(nullptr, GetManager()); 108 EXPECT_EQ(nullptr, GetManager());
106 109
107 AccessibilityNotificationWaiter waiter2(shell()->web_contents()); 110 AccessibilityNotificationWaiter waiter2(shell()->web_contents());
108 web_contents()->AddAccessibilityMode(ACCESSIBILITY_MODE_COMPLETE); 111 web_contents()->AddAccessibilityMode(AccessibilityMode::kComplete);
109 EXPECT_EQ(ACCESSIBILITY_MODE_COMPLETE, 112 EXPECT_TRUE(web_contents()->GetAccessibilityMode() ==
110 web_contents()->GetAccessibilityMode()); 113 AccessibilityMode::kComplete);
111 waiter2.WaitForNotification(); 114 waiter2.WaitForNotification();
112 EXPECT_NE(nullptr, GetManager()); 115 EXPECT_NE(nullptr, GetManager());
113 } 116 }
114 117
115 IN_PROC_BROWSER_TEST_F(AccessibilityModeTest, 118 IN_PROC_BROWSER_TEST_F(AccessibilityModeTest,
116 FullAccessibilityHasInlineTextBoxes) { 119 FullAccessibilityHasInlineTextBoxes) {
117 // TODO(dmazzoni): On Android we use an ifdef to disable inline text boxes, 120 // TODO(dmazzoni): On Android we use an ifdef to disable inline text boxes,
118 // we should do it with accessibility flags instead. http://crbug.com/672205 121 // we should do it with accessibility flags instead. http://crbug.com/672205
119 #if !defined(OS_ANDROID) 122 #if !defined(OS_ANDROID)
120 NavigateToURL(shell(), GURL(url::kAboutBlankURL)); 123 NavigateToURL(shell(), GURL(url::kAboutBlankURL));
121 124
122 AccessibilityNotificationWaiter waiter(shell()->web_contents(), 125 AccessibilityNotificationWaiter waiter(shell()->web_contents(),
123 ACCESSIBILITY_MODE_COMPLETE, 126 AccessibilityMode::kComplete,
124 ui::AX_EVENT_LOAD_COMPLETE); 127 ui::AX_EVENT_LOAD_COMPLETE);
125 GURL url("data:text/html,<p>Para</p>"); 128 GURL url("data:text/html,<p>Para</p>");
126 NavigateToURL(shell(), url); 129 NavigateToURL(shell(), url);
127 waiter.WaitForNotification(); 130 waiter.WaitForNotification();
128 131
129 const BrowserAccessibility* text = FindNode(ui::AX_ROLE_STATIC_TEXT, "Para"); 132 const BrowserAccessibility* text = FindNode(ui::AX_ROLE_STATIC_TEXT, "Para");
130 ASSERT_NE(nullptr, text); 133 ASSERT_NE(nullptr, text);
131 ASSERT_EQ(1U, text->InternalChildCount()); 134 ASSERT_EQ(1U, text->InternalChildCount());
132 BrowserAccessibility* inline_text = text->InternalGetChild(0); 135 BrowserAccessibility* inline_text = text->InternalGetChild(0);
133 ASSERT_NE(nullptr, inline_text); 136 ASSERT_NE(nullptr, inline_text);
134 EXPECT_EQ(ui::AX_ROLE_INLINE_TEXT_BOX, inline_text->GetRole()); 137 EXPECT_EQ(ui::AX_ROLE_INLINE_TEXT_BOX, inline_text->GetRole());
135 #endif // !defined(OS_ANDROID) 138 #endif // !defined(OS_ANDROID)
136 } 139 }
137 140
138 IN_PROC_BROWSER_TEST_F(AccessibilityModeTest, 141 IN_PROC_BROWSER_TEST_F(AccessibilityModeTest,
139 MinimalAccessibilityModeHasNoInlineTextBoxes) { 142 MinimalAccessibilityModeHasNoInlineTextBoxes) {
140 // TODO(dmazzoni): On Android we use an ifdef to disable inline text boxes, 143 // TODO(dmazzoni): On Android we use an ifdef to disable inline text boxes,
141 // we should do it with accessibility flags instead. http://crbug.com/672205 144 // we should do it with accessibility flags instead. http://crbug.com/672205
142 #if !defined(OS_ANDROID) 145 #if !defined(OS_ANDROID)
143 NavigateToURL(shell(), GURL(url::kAboutBlankURL)); 146 NavigateToURL(shell(), GURL(url::kAboutBlankURL));
144 147
145 AccessibilityNotificationWaiter waiter( 148 AccessibilityNotificationWaiter waiter(
146 shell()->web_contents(), 149 shell()->web_contents(),
147 ACCESSIBILITY_MODE_FLAG_NATIVE_APIS | 150 AccessibilityMode::kNativeAPIs | AccessibilityMode::kWebContents,
148 ACCESSIBILITY_MODE_FLAG_WEB_CONTENTS,
149 ui::AX_EVENT_LOAD_COMPLETE); 151 ui::AX_EVENT_LOAD_COMPLETE);
150 GURL url("data:text/html,<p>Para</p>"); 152 GURL url("data:text/html,<p>Para</p>");
151 NavigateToURL(shell(), url); 153 NavigateToURL(shell(), url);
152 waiter.WaitForNotification(); 154 waiter.WaitForNotification();
153 155
154 const BrowserAccessibility* text = FindNode(ui::AX_ROLE_STATIC_TEXT, "Para"); 156 const BrowserAccessibility* text = FindNode(ui::AX_ROLE_STATIC_TEXT, "Para");
155 ASSERT_NE(nullptr, text); 157 ASSERT_NE(nullptr, text);
156 EXPECT_EQ(0U, text->InternalChildCount()); 158 EXPECT_EQ(0U, text->InternalChildCount());
157 #endif // !defined(OS_ANDROID) 159 #endif // !defined(OS_ANDROID)
158 } 160 }
159 161
160 IN_PROC_BROWSER_TEST_F(AccessibilityModeTest, AddScreenReaderModeFlag) { 162 IN_PROC_BROWSER_TEST_F(AccessibilityModeTest, AddScreenReaderModeFlag) {
161 NavigateToURL(shell(), GURL(url::kAboutBlankURL)); 163 NavigateToURL(shell(), GURL(url::kAboutBlankURL));
162 164
163 AccessibilityNotificationWaiter waiter( 165 AccessibilityNotificationWaiter waiter(
164 shell()->web_contents(), 166 shell()->web_contents(),
165 ACCESSIBILITY_MODE_FLAG_NATIVE_APIS | 167 AccessibilityMode::kNativeAPIs | AccessibilityMode::kWebContents,
166 ACCESSIBILITY_MODE_FLAG_WEB_CONTENTS,
167 ui::AX_EVENT_LOAD_COMPLETE); 168 ui::AX_EVENT_LOAD_COMPLETE);
168 GURL url("data:text/html,<input aria-label=Foo placeholder=Bar>"); 169 GURL url("data:text/html,<input aria-label=Foo placeholder=Bar>");
169 NavigateToURL(shell(), url); 170 NavigateToURL(shell(), url);
170 waiter.WaitForNotification(); 171 waiter.WaitForNotification();
171 172
172 const BrowserAccessibility* textbox = FindNode(ui::AX_ROLE_TEXT_FIELD, "Foo"); 173 const BrowserAccessibility* textbox = FindNode(ui::AX_ROLE_TEXT_FIELD, "Foo");
173 ASSERT_NE(nullptr, textbox); 174 ASSERT_NE(nullptr, textbox);
174 EXPECT_FALSE(textbox->HasStringAttribute(ui::AX_ATTR_PLACEHOLDER)); 175 EXPECT_FALSE(textbox->HasStringAttribute(ui::AX_ATTR_PLACEHOLDER));
175 int original_id = textbox->GetId(); 176 int original_id = textbox->GetId();
176 177
177 AccessibilityNotificationWaiter waiter2( 178 AccessibilityNotificationWaiter waiter2(shell()->web_contents(),
178 shell()->web_contents(), 0, ui::AX_EVENT_LAYOUT_COMPLETE); 179 AccessibilityMode::kOff,
180 ui::AX_EVENT_LAYOUT_COMPLETE);
179 BrowserAccessibilityStateImpl::GetInstance()->AddAccessibilityModeFlags( 181 BrowserAccessibilityStateImpl::GetInstance()->AddAccessibilityModeFlags(
180 ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 182 AccessibilityMode::kScreenReader);
181 waiter2.WaitForNotification(); 183 waiter2.WaitForNotification();
182 184
183 const BrowserAccessibility* textbox2 = FindNode( 185 const BrowserAccessibility* textbox2 = FindNode(
184 ui::AX_ROLE_TEXT_FIELD, "Foo"); 186 ui::AX_ROLE_TEXT_FIELD, "Foo");
185 ASSERT_NE(nullptr, textbox2); 187 ASSERT_NE(nullptr, textbox2);
186 EXPECT_TRUE(textbox2->HasStringAttribute(ui::AX_ATTR_PLACEHOLDER)); 188 EXPECT_TRUE(textbox2->HasStringAttribute(ui::AX_ATTR_PLACEHOLDER));
187 EXPECT_NE(original_id, textbox2->GetId()); 189 EXPECT_NE(original_id, textbox2->GetId());
188 } 190 }
189 191
190 } // namespace content 192 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698