| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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/logging.h" | 5 #include "base/logging.h" |
| 6 #include "content/browser/accessibility/browser_accessibility.h" | 6 #include "content/browser/accessibility/browser_accessibility.h" |
| 7 #include "content/browser/accessibility/browser_accessibility_manager.h" | 7 #include "content/browser/accessibility/browser_accessibility_manager.h" |
| 8 #include "content/browser/web_contents/web_contents_impl.h" | 8 #include "content/browser/web_contents/web_contents_impl.h" |
| 9 #include "content/public/test/browser_test_utils.h" | 9 #include "content/public/test/browser_test_utils.h" |
| 10 #include "content/public/test/content_browser_test.h" | 10 #include "content/public/test/content_browser_test.h" |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 72 return nullptr; | 72 return nullptr; |
| 73 } | 73 } |
| 74 }; | 74 }; |
| 75 | 75 |
| 76 } // namespace | 76 } // namespace |
| 77 | 77 |
| 78 IN_PROC_BROWSER_TEST_F(AccessibilityActionBrowserTest, FocusAction) { | 78 IN_PROC_BROWSER_TEST_F(AccessibilityActionBrowserTest, FocusAction) { |
| 79 NavigateToURL(shell(), GURL(url::kAboutBlankURL)); | 79 NavigateToURL(shell(), GURL(url::kAboutBlankURL)); |
| 80 | 80 |
| 81 AccessibilityNotificationWaiter waiter(shell()->web_contents(), | 81 AccessibilityNotificationWaiter waiter(shell()->web_contents(), |
| 82 ACCESSIBILITY_MODE_COMPLETE, | 82 AccessibilityMode::COMPLETE, |
| 83 ui::AX_EVENT_LOAD_COMPLETE); | 83 ui::AX_EVENT_LOAD_COMPLETE); |
| 84 GURL url("data:text/html," | 84 GURL url("data:text/html," |
| 85 "<button>One</button>" | 85 "<button>One</button>" |
| 86 "<button>Two</button>" | 86 "<button>Two</button>" |
| 87 "<button>Three</button>"); | 87 "<button>Three</button>"); |
| 88 NavigateToURL(shell(), url); | 88 NavigateToURL(shell(), url); |
| 89 waiter.WaitForNotification(); | 89 waiter.WaitForNotification(); |
| 90 | 90 |
| 91 BrowserAccessibility* target = FindNode(ui::AX_ROLE_BUTTON, "One"); | 91 BrowserAccessibility* target = FindNode(ui::AX_ROLE_BUTTON, "One"); |
| 92 ASSERT_NE(nullptr, target); | 92 ASSERT_NE(nullptr, target); |
| 93 | 93 |
| 94 AccessibilityNotificationWaiter waiter2(shell()->web_contents(), | 94 AccessibilityNotificationWaiter waiter2( |
| 95 ACCESSIBILITY_MODE_COMPLETE, | 95 shell()->web_contents(), AccessibilityMode::COMPLETE, ui::AX_EVENT_FOCUS); |
| 96 ui::AX_EVENT_FOCUS); | |
| 97 GetManager()->SetFocus(*target); | 96 GetManager()->SetFocus(*target); |
| 98 waiter2.WaitForNotification(); | 97 waiter2.WaitForNotification(); |
| 99 | 98 |
| 100 BrowserAccessibility* focus = GetManager()->GetFocus(); | 99 BrowserAccessibility* focus = GetManager()->GetFocus(); |
| 101 EXPECT_EQ(focus->GetId(), target->GetId()); | 100 EXPECT_EQ(focus->GetId(), target->GetId()); |
| 102 } | 101 } |
| 103 | 102 |
| 104 IN_PROC_BROWSER_TEST_F(AccessibilityActionBrowserTest, | 103 IN_PROC_BROWSER_TEST_F(AccessibilityActionBrowserTest, |
| 105 IncrementDecrementActions) { | 104 IncrementDecrementActions) { |
| 106 NavigateToURL(shell(), GURL(url::kAboutBlankURL)); | 105 NavigateToURL(shell(), GURL(url::kAboutBlankURL)); |
| 107 | 106 |
| 108 AccessibilityNotificationWaiter waiter(shell()->web_contents(), | 107 AccessibilityNotificationWaiter waiter(shell()->web_contents(), |
| 109 ACCESSIBILITY_MODE_COMPLETE, | 108 AccessibilityMode::COMPLETE, |
| 110 ui::AX_EVENT_LOAD_COMPLETE); | 109 ui::AX_EVENT_LOAD_COMPLETE); |
| 111 GURL url("data:text/html," | 110 GURL url("data:text/html," |
| 112 "<input type=range min=2 value=8 max=10 step=2>"); | 111 "<input type=range min=2 value=8 max=10 step=2>"); |
| 113 NavigateToURL(shell(), url); | 112 NavigateToURL(shell(), url); |
| 114 waiter.WaitForNotification(); | 113 waiter.WaitForNotification(); |
| 115 | 114 |
| 116 BrowserAccessibility* target = FindNode(ui::AX_ROLE_SLIDER, ""); | 115 BrowserAccessibility* target = FindNode(ui::AX_ROLE_SLIDER, ""); |
| 117 ASSERT_NE(nullptr, target); | 116 ASSERT_NE(nullptr, target); |
| 118 EXPECT_EQ(8.0, target->GetFloatAttribute(ui::AX_ATTR_VALUE_FOR_RANGE)); | 117 EXPECT_EQ(8.0, target->GetFloatAttribute(ui::AX_ATTR_VALUE_FOR_RANGE)); |
| 119 | 118 |
| 120 // Increment, should result in value changing from 8 to 10. | 119 // Increment, should result in value changing from 8 to 10. |
| 121 { | 120 { |
| 122 AccessibilityNotificationWaiter waiter2(shell()->web_contents(), | 121 AccessibilityNotificationWaiter waiter2(shell()->web_contents(), |
| 123 ACCESSIBILITY_MODE_COMPLETE, | 122 AccessibilityMode::COMPLETE, |
| 124 ui::AX_EVENT_VALUE_CHANGED); | 123 ui::AX_EVENT_VALUE_CHANGED); |
| 125 GetManager()->Increment(*target); | 124 GetManager()->Increment(*target); |
| 126 waiter2.WaitForNotification(); | 125 waiter2.WaitForNotification(); |
| 127 } | 126 } |
| 128 EXPECT_EQ(10.0, target->GetFloatAttribute(ui::AX_ATTR_VALUE_FOR_RANGE)); | 127 EXPECT_EQ(10.0, target->GetFloatAttribute(ui::AX_ATTR_VALUE_FOR_RANGE)); |
| 129 | 128 |
| 130 // Increment, should result in value staying the same (max). | 129 // Increment, should result in value staying the same (max). |
| 131 { | 130 { |
| 132 AccessibilityNotificationWaiter waiter2(shell()->web_contents(), | 131 AccessibilityNotificationWaiter waiter2(shell()->web_contents(), |
| 133 ACCESSIBILITY_MODE_COMPLETE, | 132 AccessibilityMode::COMPLETE, |
| 134 ui::AX_EVENT_VALUE_CHANGED); | 133 ui::AX_EVENT_VALUE_CHANGED); |
| 135 GetManager()->Increment(*target); | 134 GetManager()->Increment(*target); |
| 136 waiter2.WaitForNotification(); | 135 waiter2.WaitForNotification(); |
| 137 } | 136 } |
| 138 EXPECT_EQ(10.0, target->GetFloatAttribute(ui::AX_ATTR_VALUE_FOR_RANGE)); | 137 EXPECT_EQ(10.0, target->GetFloatAttribute(ui::AX_ATTR_VALUE_FOR_RANGE)); |
| 139 | 138 |
| 140 // Decrement, should result in value changing from 10 to 8. | 139 // Decrement, should result in value changing from 10 to 8. |
| 141 { | 140 { |
| 142 AccessibilityNotificationWaiter waiter2(shell()->web_contents(), | 141 AccessibilityNotificationWaiter waiter2(shell()->web_contents(), |
| 143 ACCESSIBILITY_MODE_COMPLETE, | 142 AccessibilityMode::COMPLETE, |
| 144 ui::AX_EVENT_VALUE_CHANGED); | 143 ui::AX_EVENT_VALUE_CHANGED); |
| 145 GetManager()->Decrement(*target); | 144 GetManager()->Decrement(*target); |
| 146 waiter2.WaitForNotification(); | 145 waiter2.WaitForNotification(); |
| 147 } | 146 } |
| 148 EXPECT_EQ(8.0, target->GetFloatAttribute(ui::AX_ATTR_VALUE_FOR_RANGE)); | 147 EXPECT_EQ(8.0, target->GetFloatAttribute(ui::AX_ATTR_VALUE_FOR_RANGE)); |
| 149 } | 148 } |
| 150 | 149 |
| 151 IN_PROC_BROWSER_TEST_F(AccessibilityActionBrowserTest, CanvasGetImage) { | 150 IN_PROC_BROWSER_TEST_F(AccessibilityActionBrowserTest, CanvasGetImage) { |
| 152 NavigateToURL(shell(), GURL(url::kAboutBlankURL)); | 151 NavigateToURL(shell(), GURL(url::kAboutBlankURL)); |
| 153 | 152 |
| 154 AccessibilityNotificationWaiter waiter(shell()->web_contents(), | 153 AccessibilityNotificationWaiter waiter(shell()->web_contents(), |
| 155 ACCESSIBILITY_MODE_COMPLETE, | 154 AccessibilityMode::COMPLETE, |
| 156 ui::AX_EVENT_LOAD_COMPLETE); | 155 ui::AX_EVENT_LOAD_COMPLETE); |
| 157 GURL url("data:text/html," | 156 GURL url("data:text/html," |
| 158 "<body>" | 157 "<body>" |
| 159 "<canvas aria-label='canvas' id='c' width='4' height='2'></canvas>" | 158 "<canvas aria-label='canvas' id='c' width='4' height='2'></canvas>" |
| 160 "<script>\n" | 159 "<script>\n" |
| 161 " var c = document.getElementById('c').getContext('2d');\n" | 160 " var c = document.getElementById('c').getContext('2d');\n" |
| 162 " c.beginPath();\n" | 161 " c.beginPath();\n" |
| 163 " c.moveTo(0, 0.5);\n" | 162 " c.moveTo(0, 0.5);\n" |
| 164 " c.lineTo(4, 0.5);\n" | 163 " c.lineTo(4, 0.5);\n" |
| 165 " c.strokeStyle = '#ff0000';\n" | 164 " c.strokeStyle = '#ff0000';\n" |
| 166 " c.stroke();\n" | 165 " c.stroke();\n" |
| 167 " c.beginPath();\n" | 166 " c.beginPath();\n" |
| 168 " c.moveTo(0, 1.5);\n" | 167 " c.moveTo(0, 1.5);\n" |
| 169 " c.lineTo(4, 1.5);\n" | 168 " c.lineTo(4, 1.5);\n" |
| 170 " c.strokeStyle = '#0000ff';\n" | 169 " c.strokeStyle = '#0000ff';\n" |
| 171 " c.stroke();\n" | 170 " c.stroke();\n" |
| 172 "</script>" | 171 "</script>" |
| 173 "</body>"); | 172 "</body>"); |
| 174 | 173 |
| 175 NavigateToURL(shell(), url); | 174 NavigateToURL(shell(), url); |
| 176 waiter.WaitForNotification(); | 175 waiter.WaitForNotification(); |
| 177 | 176 |
| 178 BrowserAccessibility* target = FindNode(ui::AX_ROLE_CANVAS, "canvas"); | 177 BrowserAccessibility* target = FindNode(ui::AX_ROLE_CANVAS, "canvas"); |
| 179 ASSERT_NE(nullptr, target); | 178 ASSERT_NE(nullptr, target); |
| 180 | 179 |
| 181 AccessibilityNotificationWaiter waiter2(shell()->web_contents(), | 180 AccessibilityNotificationWaiter waiter2(shell()->web_contents(), |
| 182 ACCESSIBILITY_MODE_COMPLETE, | 181 AccessibilityMode::COMPLETE, |
| 183 ui::AX_EVENT_IMAGE_FRAME_UPDATED); | 182 ui::AX_EVENT_IMAGE_FRAME_UPDATED); |
| 184 GetManager()->GetImageData(*target, gfx::Size()); | 183 GetManager()->GetImageData(*target, gfx::Size()); |
| 185 waiter2.WaitForNotification(); | 184 waiter2.WaitForNotification(); |
| 186 | 185 |
| 187 SkBitmap bitmap; | 186 SkBitmap bitmap; |
| 188 GetBitmapFromImageDataURL(target, &bitmap); | 187 GetBitmapFromImageDataURL(target, &bitmap); |
| 189 ASSERT_EQ(4, bitmap.width()); | 188 ASSERT_EQ(4, bitmap.width()); |
| 190 ASSERT_EQ(2, bitmap.height()); | 189 ASSERT_EQ(2, bitmap.height()); |
| 191 EXPECT_EQ(SK_ColorRED, bitmap.getColor(0, 0)); | 190 EXPECT_EQ(SK_ColorRED, bitmap.getColor(0, 0)); |
| 192 EXPECT_EQ(SK_ColorRED, bitmap.getColor(1, 0)); | 191 EXPECT_EQ(SK_ColorRED, bitmap.getColor(1, 0)); |
| 193 EXPECT_EQ(SK_ColorRED, bitmap.getColor(2, 0)); | 192 EXPECT_EQ(SK_ColorRED, bitmap.getColor(2, 0)); |
| 194 EXPECT_EQ(SK_ColorRED, bitmap.getColor(3, 0)); | 193 EXPECT_EQ(SK_ColorRED, bitmap.getColor(3, 0)); |
| 195 EXPECT_EQ(SK_ColorBLUE, bitmap.getColor(0, 1)); | 194 EXPECT_EQ(SK_ColorBLUE, bitmap.getColor(0, 1)); |
| 196 EXPECT_EQ(SK_ColorBLUE, bitmap.getColor(1, 1)); | 195 EXPECT_EQ(SK_ColorBLUE, bitmap.getColor(1, 1)); |
| 197 EXPECT_EQ(SK_ColorBLUE, bitmap.getColor(2, 1)); | 196 EXPECT_EQ(SK_ColorBLUE, bitmap.getColor(2, 1)); |
| 198 EXPECT_EQ(SK_ColorBLUE, bitmap.getColor(3, 1)); | 197 EXPECT_EQ(SK_ColorBLUE, bitmap.getColor(3, 1)); |
| 199 } | 198 } |
| 200 | 199 |
| 201 IN_PROC_BROWSER_TEST_F(AccessibilityActionBrowserTest, CanvasGetImageScale) { | 200 IN_PROC_BROWSER_TEST_F(AccessibilityActionBrowserTest, CanvasGetImageScale) { |
| 202 NavigateToURL(shell(), GURL(url::kAboutBlankURL)); | 201 NavigateToURL(shell(), GURL(url::kAboutBlankURL)); |
| 203 | 202 |
| 204 AccessibilityNotificationWaiter waiter(shell()->web_contents(), | 203 AccessibilityNotificationWaiter waiter(shell()->web_contents(), |
| 205 ACCESSIBILITY_MODE_COMPLETE, | 204 AccessibilityMode::COMPLETE, |
| 206 ui::AX_EVENT_LOAD_COMPLETE); | 205 ui::AX_EVENT_LOAD_COMPLETE); |
| 207 GURL url("data:text/html," | 206 GURL url("data:text/html," |
| 208 "<body>" | 207 "<body>" |
| 209 "<canvas aria-label='canvas' id='c' width='40' height='20'></canvas>" | 208 "<canvas aria-label='canvas' id='c' width='40' height='20'></canvas>" |
| 210 "<script>\n" | 209 "<script>\n" |
| 211 " var c = document.getElementById('c').getContext('2d');\n" | 210 " var c = document.getElementById('c').getContext('2d');\n" |
| 212 " c.fillStyle = '#00ff00';\n" | 211 " c.fillStyle = '#00ff00';\n" |
| 213 " c.fillRect(0, 0, 40, 10);\n" | 212 " c.fillRect(0, 0, 40, 10);\n" |
| 214 " c.fillStyle = '#ff00ff';\n" | 213 " c.fillStyle = '#ff00ff';\n" |
| 215 " c.fillRect(0, 10, 40, 10);\n" | 214 " c.fillRect(0, 10, 40, 10);\n" |
| 216 "</script>" | 215 "</script>" |
| 217 "</body>"); | 216 "</body>"); |
| 218 | 217 |
| 219 NavigateToURL(shell(), url); | 218 NavigateToURL(shell(), url); |
| 220 waiter.WaitForNotification(); | 219 waiter.WaitForNotification(); |
| 221 | 220 |
| 222 BrowserAccessibility* target = FindNode(ui::AX_ROLE_CANVAS, "canvas"); | 221 BrowserAccessibility* target = FindNode(ui::AX_ROLE_CANVAS, "canvas"); |
| 223 ASSERT_NE(nullptr, target); | 222 ASSERT_NE(nullptr, target); |
| 224 | 223 |
| 225 AccessibilityNotificationWaiter waiter2(shell()->web_contents(), | 224 AccessibilityNotificationWaiter waiter2(shell()->web_contents(), |
| 226 ACCESSIBILITY_MODE_COMPLETE, | 225 AccessibilityMode::COMPLETE, |
| 227 ui::AX_EVENT_IMAGE_FRAME_UPDATED); | 226 ui::AX_EVENT_IMAGE_FRAME_UPDATED); |
| 228 GetManager()->GetImageData(*target, gfx::Size(4, 4)); | 227 GetManager()->GetImageData(*target, gfx::Size(4, 4)); |
| 229 waiter2.WaitForNotification(); | 228 waiter2.WaitForNotification(); |
| 230 | 229 |
| 231 SkBitmap bitmap; | 230 SkBitmap bitmap; |
| 232 GetBitmapFromImageDataURL(target, &bitmap); | 231 GetBitmapFromImageDataURL(target, &bitmap); |
| 233 ASSERT_EQ(4, bitmap.width()); | 232 ASSERT_EQ(4, bitmap.width()); |
| 234 ASSERT_EQ(2, bitmap.height()); | 233 ASSERT_EQ(2, bitmap.height()); |
| 235 EXPECT_EQ(SK_ColorGREEN, bitmap.getColor(0, 0)); | 234 EXPECT_EQ(SK_ColorGREEN, bitmap.getColor(0, 0)); |
| 236 EXPECT_EQ(SK_ColorGREEN, bitmap.getColor(1, 0)); | 235 EXPECT_EQ(SK_ColorGREEN, bitmap.getColor(1, 0)); |
| 237 EXPECT_EQ(SK_ColorGREEN, bitmap.getColor(2, 0)); | 236 EXPECT_EQ(SK_ColorGREEN, bitmap.getColor(2, 0)); |
| 238 EXPECT_EQ(SK_ColorGREEN, bitmap.getColor(3, 0)); | 237 EXPECT_EQ(SK_ColorGREEN, bitmap.getColor(3, 0)); |
| 239 EXPECT_EQ(SK_ColorMAGENTA, bitmap.getColor(0, 1)); | 238 EXPECT_EQ(SK_ColorMAGENTA, bitmap.getColor(0, 1)); |
| 240 EXPECT_EQ(SK_ColorMAGENTA, bitmap.getColor(1, 1)); | 239 EXPECT_EQ(SK_ColorMAGENTA, bitmap.getColor(1, 1)); |
| 241 EXPECT_EQ(SK_ColorMAGENTA, bitmap.getColor(2, 1)); | 240 EXPECT_EQ(SK_ColorMAGENTA, bitmap.getColor(2, 1)); |
| 242 EXPECT_EQ(SK_ColorMAGENTA, bitmap.getColor(3, 1)); | 241 EXPECT_EQ(SK_ColorMAGENTA, bitmap.getColor(3, 1)); |
| 243 } | 242 } |
| 244 | 243 |
| 245 IN_PROC_BROWSER_TEST_F(AccessibilityActionBrowserTest, ImgElementGetImage) { | 244 IN_PROC_BROWSER_TEST_F(AccessibilityActionBrowserTest, ImgElementGetImage) { |
| 246 NavigateToURL(shell(), GURL(url::kAboutBlankURL)); | 245 NavigateToURL(shell(), GURL(url::kAboutBlankURL)); |
| 247 | 246 |
| 248 AccessibilityNotificationWaiter waiter(shell()->web_contents(), | 247 AccessibilityNotificationWaiter waiter(shell()->web_contents(), |
| 249 ACCESSIBILITY_MODE_COMPLETE, | 248 AccessibilityMode::COMPLETE, |
| 250 ui::AX_EVENT_LOAD_COMPLETE); | 249 ui::AX_EVENT_LOAD_COMPLETE); |
| 251 GURL url("data:text/html," | 250 GURL url("data:text/html," |
| 252 "<body>" | 251 "<body>" |
| 253 "<img src='data:image/gif;base64,R0lGODdhAgADAKEDAAAA//" | 252 "<img src='data:image/gif;base64,R0lGODdhAgADAKEDAAAA//" |
| 254 "8AAAD/AP///ywAAAAAAgADAAACBEwkAAUAOw=='>" | 253 "8AAAD/AP///ywAAAAAAgADAAACBEwkAAUAOw=='>" |
| 255 "</body>"); | 254 "</body>"); |
| 256 | 255 |
| 257 NavigateToURL(shell(), url); | 256 NavigateToURL(shell(), url); |
| 258 waiter.WaitForNotification(); | 257 waiter.WaitForNotification(); |
| 259 | 258 |
| 260 BrowserAccessibility* target = FindNode(ui::AX_ROLE_IMAGE, ""); | 259 BrowserAccessibility* target = FindNode(ui::AX_ROLE_IMAGE, ""); |
| 261 ASSERT_NE(nullptr, target); | 260 ASSERT_NE(nullptr, target); |
| 262 | 261 |
| 263 AccessibilityNotificationWaiter waiter2(shell()->web_contents(), | 262 AccessibilityNotificationWaiter waiter2(shell()->web_contents(), |
| 264 ACCESSIBILITY_MODE_COMPLETE, | 263 AccessibilityMode::COMPLETE, |
| 265 ui::AX_EVENT_IMAGE_FRAME_UPDATED); | 264 ui::AX_EVENT_IMAGE_FRAME_UPDATED); |
| 266 GetManager()->GetImageData(*target, gfx::Size()); | 265 GetManager()->GetImageData(*target, gfx::Size()); |
| 267 waiter2.WaitForNotification(); | 266 waiter2.WaitForNotification(); |
| 268 | 267 |
| 269 SkBitmap bitmap; | 268 SkBitmap bitmap; |
| 270 GetBitmapFromImageDataURL(target, &bitmap); | 269 GetBitmapFromImageDataURL(target, &bitmap); |
| 271 ASSERT_EQ(2, bitmap.width()); | 270 ASSERT_EQ(2, bitmap.width()); |
| 272 ASSERT_EQ(3, bitmap.height()); | 271 ASSERT_EQ(3, bitmap.height()); |
| 273 EXPECT_EQ(SK_ColorRED, bitmap.getColor(0, 0)); | 272 EXPECT_EQ(SK_ColorRED, bitmap.getColor(0, 0)); |
| 274 EXPECT_EQ(SK_ColorRED, bitmap.getColor(1, 0)); | 273 EXPECT_EQ(SK_ColorRED, bitmap.getColor(1, 0)); |
| 275 EXPECT_EQ(SK_ColorGREEN, bitmap.getColor(0, 1)); | 274 EXPECT_EQ(SK_ColorGREEN, bitmap.getColor(0, 1)); |
| 276 EXPECT_EQ(SK_ColorGREEN, bitmap.getColor(1, 1)); | 275 EXPECT_EQ(SK_ColorGREEN, bitmap.getColor(1, 1)); |
| 277 EXPECT_EQ(SK_ColorBLUE, bitmap.getColor(0, 2)); | 276 EXPECT_EQ(SK_ColorBLUE, bitmap.getColor(0, 2)); |
| 278 EXPECT_EQ(SK_ColorBLUE, bitmap.getColor(1, 2)); | 277 EXPECT_EQ(SK_ColorBLUE, bitmap.getColor(1, 2)); |
| 279 } | 278 } |
| 280 | 279 |
| 281 } // namespace content | 280 } // namespace content |
| OLD | NEW |