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