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 3 // found in the LICENSE file. 4 5 #include <set> 6 #include <string> 7 #include <vector> 8 9 #include "base/command_line.h" 10 #include "base/files/file_util.h" 11 #include "base/logging.h" 12 #include "base/path_service.h" 13 #include "base/strings/string16.h" 14 #include "base/strings/string_split.h" 15 #include "base/strings/string_util.h" 16 #include "base/strings/utf_string_conversions.h" 17 #include "content/browser/accessibility/accessibility_tree_formatter.h" 18 #include "content/browser/accessibility/browser_accessibility.h" 19 #include "content/browser/accessibility/browser_accessibility_manager.h" 20 #include "content/browser/renderer_host/render_view_host_impl.h" 21 #include "content/browser/renderer_host/render_widget_host_view_base.h" 22 #include "content/browser/web_contents/web_contents_impl.h" 23 #include "content/public/browser/web_contents.h" 24 #include "content/public/common/content_paths.h" 25 #include "content/public/common/content_switches.h" 26 #include "content/public/common/url_constants.h" 27 #include "content/public/test/content_browser_test.h" 28 #include "content/public/test/content_browser_test_utils.h" 29 #include "content/shell/browser/shell.h" 30 #include "content/test/accessibility_browser_test_utils.h" 31 #include "testing/gtest/include/gtest/gtest.h" 32 33 // TODO(aboxhall): Create expectations on Android for these 34 #if defined(OS_ANDROID) 35 #define MAYBE(x) DISABLED_##x 36 #else 37 #define MAYBE(x) x 38 #endif 39 40 namespace content { 41 42 namespace { 43 44 const char kCommentToken = '#'; 45 const char kMarkSkipFile[] = "#<skip"; 46 const char kMarkEndOfFile[] = "<-- End-of-file -->"; 47 const char kSignalDiff[] = "*"; 48 49 } // namespace 50 51 typedef AccessibilityTreeFormatter::Filter Filter; 52 53 // This test takes a snapshot of the platform BrowserAccessibility tree and 54 // tests it against an expected baseline. 55 // 56 // The flow of the test is as outlined below. 57 // 1. Load an html file from chrome/test/data/accessibility. 58 // 2. Read the expectation. 59 // 3. Browse to the page and serialize the platform specific tree into a human 60 // readable string. 61 // 4. Perform a comparison between actual and expected and fail if they do not 62 // exactly match. 63 class DumpAccessibilityTreeTest : public ContentBrowserTest { 64 public: 65 // Utility helper that does a comment aware equality check. 66 // Returns array of lines from expected file which are different. 67 std::vector<int> DiffLines(const std::vector<std::string>& expected_lines, 68 const std::vector<std::string>& actual_lines) { 69 int actual_lines_count = actual_lines.size(); 70 int expected_lines_count = expected_lines.size(); 71 std::vector<int> diff_lines; 72 int i = 0, j = 0; 73 while (i < actual_lines_count && j < expected_lines_count) { 74 if (expected_lines[j].size() == 0 || 75 expected_lines[j][0] == kCommentToken) { 76 // Skip comment lines and blank lines in expected output. 77 ++j; 78 continue; 79 } 80 81 if (actual_lines[i] != expected_lines[j]) 82 diff_lines.push_back(j); 83 ++i; 84 ++j; 85 } 86 87 // Actual file has been fully checked. 88 return diff_lines; 89 } 90 91 void AddDefaultFilters(std::vector<Filter>* filters) { 92 filters->push_back(Filter(base::ASCIIToUTF16("FOCUSABLE"), Filter::ALLOW)); 93 filters->push_back(Filter(base::ASCIIToUTF16("READONLY"), Filter::ALLOW)); 94 filters->push_back(Filter(base::ASCIIToUTF16("*=''"), Filter::DENY)); 95 } 96 97 // Parse the test html file and parse special directives, usually 98 // beginning with an '@' and inside an HTML comment, that control how the 99 // test is run and how the results are interpreted. 100 // 101 // When the accessibility tree is dumped as text, each attribute is 102 // run through filters before being appended to the string. An "allow" 103 // filter specifies attribute strings that should be dumped, and a "deny" 104 // filter specifies strings that should be suppressed. As an example, 105 // @MAC-ALLOW:AXSubrole=* means that the AXSubrole attribute should be 106 // printed, while @MAC-ALLOW:AXSubrole=AXList* means that any subrole 107 // beginning with the text "AXList" should be printed. 108 // 109 // The @WAIT-FOR:text directive allows the test to specify that the document 110 // may dynamically change after initial load, and the test is to wait 111 // until the given string (e.g., "text") appears in the resulting dump. 112 // A test can make some changes to the document, then append a magic string 113 // indicating that the test is done, and this framework will wait for that 114 // string to appear before comparing the results. 115 void ParseHtmlForExtraDirectives(const std::string& test_html, 116 std::vector<Filter>* filters, 117 std::string* wait_for) { 118 std::vector<std::string> lines; 119 base::SplitString(test_html, '\n', &lines); 120 for (std::vector<std::string>::const_iterator iter = lines.begin(); 121 iter != lines.end(); 122 ++iter) { 123 const std::string& line = *iter; 124 const std::string& allow_empty_str = 125 AccessibilityTreeFormatter::GetAllowEmptyString(); 126 const std::string& allow_str = 127 AccessibilityTreeFormatter::GetAllowString(); 128 const std::string& deny_str = 129 AccessibilityTreeFormatter::GetDenyString(); 130 const std::string& wait_str = "@WAIT-FOR:"; 131 if (StartsWithASCII(line, allow_empty_str, true)) { 132 filters->push_back( 133 Filter(base::UTF8ToUTF16(line.substr(allow_empty_str.size())), 134 Filter::ALLOW_EMPTY)); 135 } else if (StartsWithASCII(line, allow_str, true)) { 136 filters->push_back(Filter(base::UTF8ToUTF16( 137 line.substr(allow_str.size())), 138 Filter::ALLOW)); 139 } else if (StartsWithASCII(line, deny_str, true)) { 140 filters->push_back(Filter(base::UTF8ToUTF16( 141 line.substr(deny_str.size())), 142 Filter::DENY)); 143 } else if (StartsWithASCII(line, wait_str, true)) { 144 *wait_for = line.substr(wait_str.size()); 145 } 146 } 147 } 148 149 virtual void SetUpCommandLine(base::CommandLine* command_line) OVERRIDE { 150 ContentBrowserTest::SetUpCommandLine(command_line); 151 // Enable <dialog>, which is used in some tests. 152 base::CommandLine::ForCurrentProcess()->AppendSwitch( 153 switches::kEnableExperimentalWebPlatformFeatures); 154 } 155 156 void RunTest(const base::FilePath::CharType* file_path); 157 }; 158 159 void DumpAccessibilityTreeTest::RunTest( 160 const base::FilePath::CharType* file_path) { 161 NavigateToURL(shell(), GURL(url::kAboutBlankURL)); 162 163 // Setup test paths. 164 base::FilePath dir_test_data; 165 ASSERT_TRUE(PathService::Get(DIR_TEST_DATA, &dir_test_data)); 166 base::FilePath test_path( 167 dir_test_data.Append(FILE_PATH_LITERAL("accessibility"))); 168 ASSERT_TRUE(base::PathExists(test_path)) 169 << test_path.LossyDisplayName(); 170 171 base::FilePath html_file = test_path.Append(base::FilePath(file_path)); 172 // Output the test path to help anyone who encounters a failure and needs 173 // to know where to look. 174 printf("Testing: %s\n", html_file.MaybeAsASCII().c_str()); 175 176 std::string html_contents; 177 base::ReadFileToString(html_file, &html_contents); 178 179 // Read the expected file. 180 std::string expected_contents_raw; 181 base::FilePath expected_file = 182 base::FilePath(html_file.RemoveExtension().value() + 183 AccessibilityTreeFormatter::GetExpectedFileSuffix()); 184 base::ReadFileToString(expected_file, &expected_contents_raw); 185 186 // Tolerate Windows-style line endings (\r\n) in the expected file: 187 // normalize by deleting all \r from the file (if any) to leave only \n. 188 std::string expected_contents; 189 base::RemoveChars(expected_contents_raw, "\r", &expected_contents); 190 191 if (!expected_contents.compare(0, strlen(kMarkSkipFile), kMarkSkipFile)) { 192 printf("Skipping this test on this platform.\n"); 193 return; 194 } 195 196 // Parse filters and other directives in the test file. 197 std::vector<Filter> filters; 198 std::string wait_for; 199 AddDefaultFilters(&filters); 200 ParseHtmlForExtraDirectives(html_contents, &filters, &wait_for); 201 202 // Load the page. 203 base::string16 html_contents16; 204 html_contents16 = base::UTF8ToUTF16(html_contents); 205 GURL url = GetTestUrl("accessibility", 206 html_file.BaseName().MaybeAsASCII().c_str()); 207 208 // If there's a @WAIT-FOR directive, set up an accessibility notification 209 // waiter that returns on any event; we'll stop when we get the text we're 210 // waiting for, or time out. Otherwise just wait specifically for 211 // the "load complete" event. 212 scoped_ptr<AccessibilityNotificationWaiter> waiter; 213 if (!wait_for.empty()) { 214 waiter.reset(new AccessibilityNotificationWaiter( 215 shell(), AccessibilityModeComplete, ui::AX_EVENT_NONE)); 216 } else { 217 waiter.reset(new AccessibilityNotificationWaiter( 218 shell(), AccessibilityModeComplete, ui::AX_EVENT_LOAD_COMPLETE)); 219 } 220 221 // Load the test html. 222 NavigateToURL(shell(), url); 223 224 // Wait for notifications. If there's a @WAIT-FOR directive, break when 225 // the text we're waiting for appears in the dump, otherwise break after 226 // the first notification, which will be a load complete. 227 WebContentsImpl* web_contents = static_cast<WebContentsImpl*>( 228 shell()->web_contents()); 229 std::string actual_contents; 230 do { 231 waiter->WaitForNotification(); 232 base::string16 actual_contents_utf16; 233 AccessibilityTreeFormatter formatter( 234 web_contents->GetRootBrowserAccessibilityManager()->GetRoot()); 235 formatter.SetFilters(filters); 236 formatter.FormatAccessibilityTree(&actual_contents_utf16); 237 actual_contents = base::UTF16ToUTF8(actual_contents_utf16); 238 } while (!wait_for.empty() && 239 actual_contents.find(wait_for) == std::string::npos); 240 241 // Perform a diff (or write the initial baseline). 242 std::vector<std::string> actual_lines, expected_lines; 243 Tokenize(actual_contents, "\n", &actual_lines); 244 Tokenize(expected_contents, "\n", &expected_lines); 245 // Marking the end of the file with a line of text ensures that 246 // file length differences are found. 247 expected_lines.push_back(kMarkEndOfFile); 248 actual_lines.push_back(kMarkEndOfFile); 249 250 std::vector<int> diff_lines = DiffLines(expected_lines, actual_lines); 251 bool is_different = diff_lines.size() > 0; 252 EXPECT_FALSE(is_different); 253 if (is_different) { 254 // Mark the expected lines which did not match actual output with a *. 255 printf("* Line Expected\n"); 256 printf("- ---- --------\n"); 257 for (int line = 0, diff_index = 0; 258 line < static_cast<int>(expected_lines.size()); 259 ++line) { 260 bool is_diff = false; 261 if (diff_index < static_cast<int>(diff_lines.size()) && 262 diff_lines[diff_index] == line) { 263 is_diff = true; 264 ++diff_index; 265 } 266 printf("%1s %4d %s\n", is_diff? kSignalDiff : "", line + 1, 267 expected_lines[line].c_str()); 268 } 269 printf("\nActual\n"); 270 printf("------\n"); 271 printf("%s\n", actual_contents.c_str()); 272 } 273 274 if (!base::PathExists(expected_file)) { 275 base::FilePath actual_file = 276 base::FilePath(html_file.RemoveExtension().value() + 277 AccessibilityTreeFormatter::GetActualFileSuffix()); 278 279 EXPECT_TRUE(base::WriteFile( 280 actual_file, actual_contents.c_str(), actual_contents.size())); 281 282 ADD_FAILURE() << "No expectation found. Create it by doing:\n" 283 << "mv " << actual_file.LossyDisplayName() << " " 284 << expected_file.LossyDisplayName(); 285 } 286 } 287 288 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityA) { 289 RunTest(FILE_PATH_LITERAL("a.html")); 290 } 291 292 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAbbr) { 293 RunTest(FILE_PATH_LITERAL("abbr.html")); 294 } 295 296 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAddress) { 297 RunTest(FILE_PATH_LITERAL("address.html")); 298 } 299 300 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAName) { 301 RunTest(FILE_PATH_LITERAL("a-name.html")); 302 } 303 304 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityANoText) { 305 RunTest(FILE_PATH_LITERAL("a-no-text.html")); 306 } 307 308 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAOnclick) { 309 RunTest(FILE_PATH_LITERAL("a-onclick.html")); 310 } 311 312 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, 313 AccessibilityAriaActivedescendant) { 314 RunTest(FILE_PATH_LITERAL("aria-activedescendant.html")); 315 } 316 317 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaAlert) { 318 RunTest(FILE_PATH_LITERAL("aria-alert.html")); 319 } 320 321 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, 322 AccessibilityAriaApplication) { 323 RunTest(FILE_PATH_LITERAL("aria-application.html")); 324 } 325 326 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaAtomic) { 327 RunTest(FILE_PATH_LITERAL("aria-atomic.html")); 328 } 329 330 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, 331 AccessibilityAriaAutocomplete) { 332 RunTest(FILE_PATH_LITERAL("aria-autocomplete.html")); 333 } 334 335 // crbug.com/98976 will cause new elements to be added to the Blink a11y tree 336 // Re-baseline after the Blink change goes in 337 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, 338 DISABLED_AccessibilityAriaCombobox) { 339 RunTest(FILE_PATH_LITERAL("aria-combobox.html")); 340 } 341 342 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaHidden) { 343 RunTest(FILE_PATH_LITERAL("aria-hidden.html")); 344 } 345 346 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, 347 MAYBE(AccessibilityAriaFlowto)) { 348 RunTest(FILE_PATH_LITERAL("aria-flowto.html")); 349 } 350 351 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaImg) { 352 RunTest(FILE_PATH_LITERAL("aria-img.html")); 353 } 354 355 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaInvalid) { 356 RunTest(FILE_PATH_LITERAL("aria-invalid.html")); 357 } 358 359 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, 360 AccessibilityAriaLabelledByHeading) { 361 RunTest(FILE_PATH_LITERAL("aria-labelledby-heading.html")); 362 } 363 364 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaLevel) { 365 RunTest(FILE_PATH_LITERAL("aria-level.html")); 366 } 367 368 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaList) { 369 RunTest(FILE_PATH_LITERAL("aria-list.html")); 370 } 371 372 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, 373 AccessibilityAriaListBoxActiveDescendant) { 374 RunTest(FILE_PATH_LITERAL("aria-listbox-activedescendant.html")); 375 } 376 377 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, 378 AccessibilityAriaListBoxAriaSelected) { 379 RunTest(FILE_PATH_LITERAL("aria-listbox-aria-selected.html")); 380 } 381 382 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, 383 AccessibilityAriaListBoxChildFocus) { 384 RunTest(FILE_PATH_LITERAL("aria-listbox-childfocus.html")); 385 } 386 387 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaLog) { 388 RunTest(FILE_PATH_LITERAL("aria-log.html")); 389 } 390 391 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaMarquee) { 392 RunTest(FILE_PATH_LITERAL("aria-marquee.html")); 393 } 394 395 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaMenu) { 396 RunTest(FILE_PATH_LITERAL("aria-menu.html")); 397 } 398 399 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, 400 AccessibilityAriaMenuitemradio) { 401 RunTest(FILE_PATH_LITERAL("aria-menuitemradio.html")); 402 } 403 404 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, 405 AccessibilityAriaOrientation) { 406 RunTest(FILE_PATH_LITERAL("aria-orientation.html")); 407 } 408 409 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaNone) { 410 RunTest(FILE_PATH_LITERAL("aria-none.html")); 411 } 412 413 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, 414 AccessibilityAriaPressed) { 415 RunTest(FILE_PATH_LITERAL("aria-pressed.html")); 416 } 417 418 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, 419 AccessibilityAriaProgressbar) { 420 RunTest(FILE_PATH_LITERAL("aria-progressbar.html")); 421 } 422 423 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaRow) { 424 RunTest(FILE_PATH_LITERAL("aria-row.html")); 425 } 426 427 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, 428 AccessibilityAriaReadonly) { 429 RunTest(FILE_PATH_LITERAL("aria-readonly.html")); 430 } 431 432 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaSort) { 433 RunTest(FILE_PATH_LITERAL("aria-sort.html")); 434 } 435 436 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, 437 AccessibilityAriaSpinButton) { 438 RunTest(FILE_PATH_LITERAL("aria-spinbutton.html")); 439 } 440 441 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaTimer) { 442 RunTest(FILE_PATH_LITERAL("aria-timer.html")); 443 } 444 445 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, 446 AccessibilityAriaToggleButton) { 447 RunTest(FILE_PATH_LITERAL("aria-togglebutton.html")); 448 } 449 450 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, 451 AccessibilityAriaToolbar) { 452 RunTest(FILE_PATH_LITERAL("aria-toolbar.html")); 453 } 454 455 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, 456 AccessibilityAriaValueMin) { 457 RunTest(FILE_PATH_LITERAL("aria-valuemin.html")); 458 } 459 460 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, 461 AccessibilityAriaValueMax) { 462 RunTest(FILE_PATH_LITERAL("aria-valuemax.html")); 463 } 464 465 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityArticle) { 466 RunTest(FILE_PATH_LITERAL("article.html")); 467 } 468 469 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAWithImg) { 470 RunTest(FILE_PATH_LITERAL("a-with-img.html")); 471 } 472 473 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityBdo) { 474 RunTest(FILE_PATH_LITERAL("bdo.html")); 475 } 476 477 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityBody) { 478 RunTest(FILE_PATH_LITERAL("body.html")); 479 } 480 481 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityBR) { 482 RunTest(FILE_PATH_LITERAL("br.html")); 483 } 484 485 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityButton) { 486 RunTest(FILE_PATH_LITERAL("button.html")); 487 } 488 489 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityButtonNameCalc) { 490 RunTest(FILE_PATH_LITERAL("button-name-calc.html")); 491 } 492 493 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityCanvas) { 494 RunTest(FILE_PATH_LITERAL("canvas.html")); 495 } 496 497 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityCaption) { 498 RunTest(FILE_PATH_LITERAL("caption.html")); 499 } 500 501 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, 502 AccessibilityCheckboxNameCalc) { 503 RunTest(FILE_PATH_LITERAL("checkbox-name-calc.html")); 504 } 505 506 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityCol) { 507 RunTest(FILE_PATH_LITERAL("col.html")); 508 } 509 510 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityDel) { 511 RunTest(FILE_PATH_LITERAL("del.html")); 512 } 513 514 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityDfn) { 515 RunTest(FILE_PATH_LITERAL("dfn.html")); 516 } 517 518 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityDialog) { 519 RunTest(FILE_PATH_LITERAL("dialog.html")); 520 } 521 522 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityDiv) { 523 RunTest(FILE_PATH_LITERAL("div.html")); 524 } 525 526 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityDl) { 527 RunTest(FILE_PATH_LITERAL("dl.html")); 528 } 529 530 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, 531 AccessibilityContenteditableDescendants) { 532 RunTest(FILE_PATH_LITERAL("contenteditable-descendants.html")); 533 } 534 535 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityEm) { 536 RunTest(FILE_PATH_LITERAL("em.html")); 537 } 538 539 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityFigcaption) { 540 RunTest(FILE_PATH_LITERAL("figcaption.html")); 541 } 542 543 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityFigure) { 544 RunTest(FILE_PATH_LITERAL("figure.html")); 545 } 546 547 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityFooter) { 548 RunTest(FILE_PATH_LITERAL("footer.html")); 549 } 550 551 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityForm) { 552 RunTest(FILE_PATH_LITERAL("form.html")); 553 } 554 555 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityFrameset) { 556 RunTest(FILE_PATH_LITERAL("frameset.html")); 557 } 558 559 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityHeading) { 560 RunTest(FILE_PATH_LITERAL("heading.html")); 561 } 562 563 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityHR) { 564 RunTest(FILE_PATH_LITERAL("hr.html")); 565 } 566 567 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityI) { 568 RunTest(FILE_PATH_LITERAL("i.html")); 569 } 570 571 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, 572 AccessibilityIframeCoordinates) { 573 RunTest(FILE_PATH_LITERAL("iframe-coordinates.html")); 574 } 575 576 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityImg) { 577 RunTest(FILE_PATH_LITERAL("img.html")); 578 } 579 580 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityInputButton) { 581 RunTest(FILE_PATH_LITERAL("input-button.html")); 582 } 583 584 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, 585 AccessibilityInputButtonInMenu) { 586 RunTest(FILE_PATH_LITERAL("input-button-in-menu.html")); 587 } 588 589 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityInputColor) { 590 RunTest(FILE_PATH_LITERAL("input-color.html")); 591 } 592 593 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, 594 AccessibilityInputImageButtonInMenu) { 595 RunTest(FILE_PATH_LITERAL("input-image-button-in-menu.html")); 596 } 597 598 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityInputRange) { 599 RunTest(FILE_PATH_LITERAL("input-range.html")); 600 } 601 602 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityInputSearch) { 603 RunTest(FILE_PATH_LITERAL("input-search.html")); 604 } 605 606 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, 607 AccessibilityInputTextNameCalc) { 608 RunTest(FILE_PATH_LITERAL("input-text-name-calc.html")); 609 } 610 611 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityInputTextValue) { 612 RunTest(FILE_PATH_LITERAL("input-text-value.html")); 613 } 614 615 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityInputTime) { 616 RunTest(FILE_PATH_LITERAL("input-time.html")); 617 } 618 619 // crbug.com/98976 will cause new elements to be added to the Blink a11y tree 620 // Re-baseline after the Blink change goes in 621 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, 622 DISABLED_AccessibilityInputTypes) { 623 RunTest(FILE_PATH_LITERAL("input-types.html")); 624 } 625 626 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityIns) { 627 RunTest(FILE_PATH_LITERAL("ins.html")); 628 } 629 630 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityLabel) { 631 RunTest(FILE_PATH_LITERAL("label.html")); 632 } 633 634 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityLandmark) { 635 RunTest(FILE_PATH_LITERAL("landmark.html")); 636 } 637 638 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityLegend) { 639 RunTest(FILE_PATH_LITERAL("legend.html")); 640 } 641 642 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityListMarkers) { 643 RunTest(FILE_PATH_LITERAL("list-markers.html")); 644 } 645 646 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityMain) { 647 RunTest(FILE_PATH_LITERAL("main.html")); 648 } 649 650 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityMark) { 651 RunTest(FILE_PATH_LITERAL("mark.html")); 652 } 653 654 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, 655 AccessibilityMenutypecontext) { 656 RunTest(FILE_PATH_LITERAL("menu-type-context.html")); 657 } 658 659 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityMeta) { 660 RunTest(FILE_PATH_LITERAL("meta.html")); 661 } 662 663 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityMeter) { 664 RunTest(FILE_PATH_LITERAL("meter.html")); 665 } 666 667 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, 668 AccessibilityModalDialogClosed) { 669 RunTest(FILE_PATH_LITERAL("modal-dialog-closed.html")); 670 } 671 672 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, 673 AccessibilityModalDialogOpened) { 674 RunTest(FILE_PATH_LITERAL("modal-dialog-opened.html")); 675 } 676 677 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, 678 AccessibilityModalDialogInIframeClosed) { 679 RunTest(FILE_PATH_LITERAL("modal-dialog-in-iframe-closed.html")); 680 } 681 682 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, 683 AccessibilityModalDialogInIframeOpened) { 684 RunTest(FILE_PATH_LITERAL("modal-dialog-in-iframe-opened.html")); 685 } 686 687 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, 688 AccessibilityModalDialogStack) { 689 RunTest(FILE_PATH_LITERAL("modal-dialog-stack.html")); 690 } 691 692 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityOl) { 693 RunTest(FILE_PATH_LITERAL("ol.html")); 694 } 695 696 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityObject) { 697 RunTest(FILE_PATH_LITERAL("object.html")); 698 } 699 700 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, 701 AccessibilityOptionindatalist) { 702 RunTest(FILE_PATH_LITERAL("option-in-datalist.html")); 703 } 704 705 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityP) { 706 RunTest(FILE_PATH_LITERAL("p.html")); 707 } 708 709 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityQ) { 710 RunTest(FILE_PATH_LITERAL("q.html")); 711 } 712 713 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityRegion) { 714 RunTest(FILE_PATH_LITERAL("region.html")); 715 } 716 717 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilitySelect) { 718 RunTest(FILE_PATH_LITERAL("select.html")); 719 } 720 721 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilitySource) { 722 RunTest(FILE_PATH_LITERAL("source.html")); 723 } 724 725 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilitySpan) { 726 RunTest(FILE_PATH_LITERAL("span.html")); 727 } 728 729 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilitySub) { 730 RunTest(FILE_PATH_LITERAL("sub.html")); 731 } 732 733 // TODO(dmazzoni): Rebaseline this test after Blink rolls past r155083. 734 // See http://crbug.com/265619 735 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, DISABLED_AccessibilitySvg) { 736 RunTest(FILE_PATH_LITERAL("svg.html")); 737 } 738 739 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityTab) { 740 RunTest(FILE_PATH_LITERAL("tab.html")); 741 } 742 743 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityTableSimple) { 744 RunTest(FILE_PATH_LITERAL("table-simple.html")); 745 } 746 747 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityTableSpans) { 748 RunTest(FILE_PATH_LITERAL("table-spans.html")); 749 } 750 751 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityTransition) { 752 RunTest(FILE_PATH_LITERAL("transition.html")); 753 } 754 755 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityUl) { 756 RunTest(FILE_PATH_LITERAL("ul.html")); 757 } 758 759 IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityWbr) { 760 RunTest(FILE_PATH_LITERAL("wbr.html")); 761 } 762 763 } // namespace content 764