| OLD | NEW |
| 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 "content/browser/accessibility/browser_accessibility_win.h" | 5 #include "content/browser/accessibility/browser_accessibility_win.h" |
| 6 | 6 |
| 7 #include <stdint.h> | 7 #include <stdint.h> |
| 8 | 8 |
| 9 #include <memory> | 9 #include <memory> |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 120 // Test that BrowserAccessibilityManager correctly releases the tree of | 120 // Test that BrowserAccessibilityManager correctly releases the tree of |
| 121 // BrowserAccessibility instances upon delete. | 121 // BrowserAccessibility instances upon delete. |
| 122 TEST_F(BrowserAccessibilityTest, TestNoLeaks) { | 122 TEST_F(BrowserAccessibilityTest, TestNoLeaks) { |
| 123 // Create ui::AXNodeData objects for a simple document tree, | 123 // Create ui::AXNodeData objects for a simple document tree, |
| 124 // representing the accessibility information used to initialize | 124 // representing the accessibility information used to initialize |
| 125 // BrowserAccessibilityManager. | 125 // BrowserAccessibilityManager. |
| 126 ui::AXNodeData button; | 126 ui::AXNodeData button; |
| 127 button.id = 2; | 127 button.id = 2; |
| 128 button.SetName("Button"); | 128 button.SetName("Button"); |
| 129 button.role = ui::AX_ROLE_BUTTON; | 129 button.role = ui::AX_ROLE_BUTTON; |
| 130 button.state = 0; | |
| 131 | 130 |
| 132 ui::AXNodeData checkbox; | 131 ui::AXNodeData checkbox; |
| 133 checkbox.id = 3; | 132 checkbox.id = 3; |
| 134 checkbox.SetName("Checkbox"); | 133 checkbox.SetName("Checkbox"); |
| 135 checkbox.role = ui::AX_ROLE_CHECK_BOX; | 134 checkbox.role = ui::AX_ROLE_CHECK_BOX; |
| 136 checkbox.state = 0; | |
| 137 | 135 |
| 138 ui::AXNodeData root; | 136 ui::AXNodeData root; |
| 139 root.id = 1; | 137 root.id = 1; |
| 140 root.SetName("Document"); | 138 root.SetName("Document"); |
| 141 root.role = ui::AX_ROLE_ROOT_WEB_AREA; | 139 root.role = ui::AX_ROLE_ROOT_WEB_AREA; |
| 142 root.state = 0; | |
| 143 root.child_ids.push_back(2); | 140 root.child_ids.push_back(2); |
| 144 root.child_ids.push_back(3); | 141 root.child_ids.push_back(3); |
| 145 | 142 |
| 146 // Construct a BrowserAccessibilityManager with this | 143 // Construct a BrowserAccessibilityManager with this |
| 147 // ui::AXNodeData tree and a factory for an instance-counting | 144 // ui::AXNodeData tree and a factory for an instance-counting |
| 148 // BrowserAccessibility, and ensure that exactly 3 instances were | 145 // BrowserAccessibility, and ensure that exactly 3 instances were |
| 149 // created. Note that the manager takes ownership of the factory. | 146 // created. Note that the manager takes ownership of the factory. |
| 150 CountedBrowserAccessibility::reset(); | 147 CountedBrowserAccessibility::reset(); |
| 151 std::unique_ptr<BrowserAccessibilityManager> manager( | 148 std::unique_ptr<BrowserAccessibilityManager> manager( |
| 152 BrowserAccessibilityManager::Create( | 149 BrowserAccessibilityManager::Create( |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 188 } | 185 } |
| 189 | 186 |
| 190 TEST_F(BrowserAccessibilityTest, TestChildrenChange) { | 187 TEST_F(BrowserAccessibilityTest, TestChildrenChange) { |
| 191 // Create ui::AXNodeData objects for a simple document tree, | 188 // Create ui::AXNodeData objects for a simple document tree, |
| 192 // representing the accessibility information used to initialize | 189 // representing the accessibility information used to initialize |
| 193 // BrowserAccessibilityManager. | 190 // BrowserAccessibilityManager. |
| 194 ui::AXNodeData text; | 191 ui::AXNodeData text; |
| 195 text.id = 2; | 192 text.id = 2; |
| 196 text.role = ui::AX_ROLE_STATIC_TEXT; | 193 text.role = ui::AX_ROLE_STATIC_TEXT; |
| 197 text.SetName("old text"); | 194 text.SetName("old text"); |
| 198 text.state = 0; | |
| 199 | 195 |
| 200 ui::AXNodeData root; | 196 ui::AXNodeData root; |
| 201 root.id = 1; | 197 root.id = 1; |
| 202 root.SetName("Document"); | 198 root.SetName("Document"); |
| 203 root.role = ui::AX_ROLE_ROOT_WEB_AREA; | 199 root.role = ui::AX_ROLE_ROOT_WEB_AREA; |
| 204 root.state = 0; | |
| 205 root.child_ids.push_back(2); | 200 root.child_ids.push_back(2); |
| 206 | 201 |
| 207 // Construct a BrowserAccessibilityManager with this | 202 // Construct a BrowserAccessibilityManager with this |
| 208 // ui::AXNodeData tree and a factory for an instance-counting | 203 // ui::AXNodeData tree and a factory for an instance-counting |
| 209 // BrowserAccessibility. | 204 // BrowserAccessibility. |
| 210 CountedBrowserAccessibility::reset(); | 205 CountedBrowserAccessibility::reset(); |
| 211 std::unique_ptr<BrowserAccessibilityManager> manager( | 206 std::unique_ptr<BrowserAccessibilityManager> manager( |
| 212 BrowserAccessibilityManager::Create( | 207 BrowserAccessibilityManager::Create( |
| 213 MakeAXTreeUpdate(root, text), nullptr, | 208 MakeAXTreeUpdate(root, text), nullptr, |
| 214 new CountedBrowserAccessibilityFactory())); | 209 new CountedBrowserAccessibilityFactory())); |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 270 ASSERT_EQ(0, CountedBrowserAccessibility::num_instances()); | 265 ASSERT_EQ(0, CountedBrowserAccessibility::num_instances()); |
| 271 } | 266 } |
| 272 | 267 |
| 273 TEST_F(BrowserAccessibilityTest, TestChildrenChangeNoLeaks) { | 268 TEST_F(BrowserAccessibilityTest, TestChildrenChangeNoLeaks) { |
| 274 // Create ui::AXNodeData objects for a simple document tree, | 269 // Create ui::AXNodeData objects for a simple document tree, |
| 275 // representing the accessibility information used to initialize | 270 // representing the accessibility information used to initialize |
| 276 // BrowserAccessibilityManager. | 271 // BrowserAccessibilityManager. |
| 277 ui::AXNodeData div; | 272 ui::AXNodeData div; |
| 278 div.id = 2; | 273 div.id = 2; |
| 279 div.role = ui::AX_ROLE_GROUP; | 274 div.role = ui::AX_ROLE_GROUP; |
| 280 div.state = 0; | |
| 281 | 275 |
| 282 ui::AXNodeData text3; | 276 ui::AXNodeData text3; |
| 283 text3.id = 3; | 277 text3.id = 3; |
| 284 text3.role = ui::AX_ROLE_STATIC_TEXT; | 278 text3.role = ui::AX_ROLE_STATIC_TEXT; |
| 285 text3.state = 0; | |
| 286 | 279 |
| 287 ui::AXNodeData text4; | 280 ui::AXNodeData text4; |
| 288 text4.id = 4; | 281 text4.id = 4; |
| 289 text4.role = ui::AX_ROLE_STATIC_TEXT; | 282 text4.role = ui::AX_ROLE_STATIC_TEXT; |
| 290 text4.state = 0; | |
| 291 | 283 |
| 292 div.child_ids.push_back(3); | 284 div.child_ids.push_back(3); |
| 293 div.child_ids.push_back(4); | 285 div.child_ids.push_back(4); |
| 294 | 286 |
| 295 ui::AXNodeData root; | 287 ui::AXNodeData root; |
| 296 root.id = 1; | 288 root.id = 1; |
| 297 root.role = ui::AX_ROLE_ROOT_WEB_AREA; | 289 root.role = ui::AX_ROLE_ROOT_WEB_AREA; |
| 298 root.state = 0; | |
| 299 root.child_ids.push_back(2); | 290 root.child_ids.push_back(2); |
| 300 | 291 |
| 301 // Construct a BrowserAccessibilityManager with this | 292 // Construct a BrowserAccessibilityManager with this |
| 302 // ui::AXNodeData tree and a factory for an instance-counting | 293 // ui::AXNodeData tree and a factory for an instance-counting |
| 303 // BrowserAccessibility and ensure that exactly 4 instances were | 294 // BrowserAccessibility and ensure that exactly 4 instances were |
| 304 // created. Note that the manager takes ownership of the factory. | 295 // created. Note that the manager takes ownership of the factory. |
| 305 CountedBrowserAccessibility::reset(); | 296 CountedBrowserAccessibility::reset(); |
| 306 std::unique_ptr<BrowserAccessibilityManager> manager( | 297 std::unique_ptr<BrowserAccessibilityManager> manager( |
| 307 BrowserAccessibilityManager::Create( | 298 BrowserAccessibilityManager::Create( |
| 308 MakeAXTreeUpdate(root, div, text3, text4), nullptr, | 299 MakeAXTreeUpdate(root, div, text3, text4), nullptr, |
| (...skipping 24 matching lines...) Expand all Loading... |
| 333 std::string text_value = line1 + '\n' + line2; | 324 std::string text_value = line1 + '\n' + line2; |
| 334 | 325 |
| 335 ui::AXNodeData root; | 326 ui::AXNodeData root; |
| 336 root.id = 1; | 327 root.id = 1; |
| 337 root.role = ui::AX_ROLE_ROOT_WEB_AREA; | 328 root.role = ui::AX_ROLE_ROOT_WEB_AREA; |
| 338 root.child_ids.push_back(2); | 329 root.child_ids.push_back(2); |
| 339 | 330 |
| 340 ui::AXNodeData text_field; | 331 ui::AXNodeData text_field; |
| 341 text_field.id = 2; | 332 text_field.id = 2; |
| 342 text_field.role = ui::AX_ROLE_TEXT_FIELD; | 333 text_field.role = ui::AX_ROLE_TEXT_FIELD; |
| 343 text_field.state = 1 << ui::AX_STATE_EDITABLE; | 334 text_field.AddState(ui::AX_STATE_EDITABLE); |
| 344 text_field.SetValue(text_value); | 335 text_field.SetValue(text_value); |
| 345 std::vector<int32_t> line_start_offsets; | 336 std::vector<int32_t> line_start_offsets; |
| 346 line_start_offsets.push_back(15); | 337 line_start_offsets.push_back(15); |
| 347 text_field.AddIntListAttribute(ui::AX_ATTR_CACHED_LINE_STARTS, | 338 text_field.AddIntListAttribute(ui::AX_ATTR_CACHED_LINE_STARTS, |
| 348 line_start_offsets); | 339 line_start_offsets); |
| 349 text_field.child_ids.push_back(3); | 340 text_field.child_ids.push_back(3); |
| 350 text_field.child_ids.push_back(5); | 341 text_field.child_ids.push_back(5); |
| 351 text_field.child_ids.push_back(6); | 342 text_field.child_ids.push_back(6); |
| 352 | 343 |
| 353 ui::AXNodeData static_text1; | 344 ui::AXNodeData static_text1; |
| 354 static_text1.id = 3; | 345 static_text1.id = 3; |
| 355 static_text1.role = ui::AX_ROLE_STATIC_TEXT; | 346 static_text1.role = ui::AX_ROLE_STATIC_TEXT; |
| 356 static_text1.state = 1 << ui::AX_STATE_EDITABLE; | 347 static_text1.AddState(ui::AX_STATE_EDITABLE); |
| 357 static_text1.SetName(line1); | 348 static_text1.SetName(line1); |
| 358 static_text1.child_ids.push_back(4); | 349 static_text1.child_ids.push_back(4); |
| 359 | 350 |
| 360 ui::AXNodeData inline_box1; | 351 ui::AXNodeData inline_box1; |
| 361 inline_box1.id = 4; | 352 inline_box1.id = 4; |
| 362 inline_box1.role = ui::AX_ROLE_INLINE_TEXT_BOX; | 353 inline_box1.role = ui::AX_ROLE_INLINE_TEXT_BOX; |
| 363 inline_box1.state = 1 << ui::AX_STATE_EDITABLE; | 354 inline_box1.AddState(ui::AX_STATE_EDITABLE); |
| 364 inline_box1.SetName(line1); | 355 inline_box1.SetName(line1); |
| 365 std::vector<int32_t> word_start_offsets1; | 356 std::vector<int32_t> word_start_offsets1; |
| 366 word_start_offsets1.push_back(0); | 357 word_start_offsets1.push_back(0); |
| 367 word_start_offsets1.push_back(4); | 358 word_start_offsets1.push_back(4); |
| 368 word_start_offsets1.push_back(8); | 359 word_start_offsets1.push_back(8); |
| 369 inline_box1.AddIntListAttribute( | 360 inline_box1.AddIntListAttribute( |
| 370 ui::AX_ATTR_WORD_STARTS, word_start_offsets1); | 361 ui::AX_ATTR_WORD_STARTS, word_start_offsets1); |
| 371 | 362 |
| 372 ui::AXNodeData line_break; | 363 ui::AXNodeData line_break; |
| 373 line_break.id = 5; | 364 line_break.id = 5; |
| 374 line_break.role = ui::AX_ROLE_LINE_BREAK; | 365 line_break.role = ui::AX_ROLE_LINE_BREAK; |
| 375 line_break.state = 1 << ui::AX_STATE_EDITABLE; | 366 line_break.AddState(ui::AX_STATE_EDITABLE); |
| 376 line_break.SetName("\n"); | 367 line_break.SetName("\n"); |
| 377 | 368 |
| 378 ui::AXNodeData static_text2; | 369 ui::AXNodeData static_text2; |
| 379 static_text2.id = 6; | 370 static_text2.id = 6; |
| 380 static_text2.role = ui::AX_ROLE_STATIC_TEXT; | 371 static_text2.role = ui::AX_ROLE_STATIC_TEXT; |
| 381 static_text2.state = 1 << ui::AX_STATE_EDITABLE; | 372 static_text2.AddState(ui::AX_STATE_EDITABLE); |
| 382 static_text2.SetName(line2); | 373 static_text2.SetName(line2); |
| 383 static_text2.child_ids.push_back(7); | 374 static_text2.child_ids.push_back(7); |
| 384 | 375 |
| 385 ui::AXNodeData inline_box2; | 376 ui::AXNodeData inline_box2; |
| 386 inline_box2.id = 7; | 377 inline_box2.id = 7; |
| 387 inline_box2.role = ui::AX_ROLE_INLINE_TEXT_BOX; | 378 inline_box2.role = ui::AX_ROLE_INLINE_TEXT_BOX; |
| 388 inline_box2.state = 1 << ui::AX_STATE_EDITABLE; | 379 inline_box2.AddState(ui::AX_STATE_EDITABLE); |
| 389 inline_box2.SetName(line2); | 380 inline_box2.SetName(line2); |
| 390 std::vector<int32_t> word_start_offsets2; | 381 std::vector<int32_t> word_start_offsets2; |
| 391 word_start_offsets2.push_back(0); | 382 word_start_offsets2.push_back(0); |
| 392 word_start_offsets2.push_back(5); | 383 word_start_offsets2.push_back(5); |
| 393 word_start_offsets2.push_back(10); | 384 word_start_offsets2.push_back(10); |
| 394 inline_box2.AddIntListAttribute( | 385 inline_box2.AddIntListAttribute( |
| 395 ui::AX_ATTR_WORD_STARTS, word_start_offsets2); | 386 ui::AX_ATTR_WORD_STARTS, word_start_offsets2); |
| 396 | 387 |
| 397 CountedBrowserAccessibility::reset(); | 388 CountedBrowserAccessibility::reset(); |
| 398 std::unique_ptr<BrowserAccessibilityManager> manager( | 389 std::unique_ptr<BrowserAccessibilityManager> manager( |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 492 } | 483 } |
| 493 | 484 |
| 494 TEST_F(BrowserAccessibilityTest, TestSimpleHypertext) { | 485 TEST_F(BrowserAccessibilityTest, TestSimpleHypertext) { |
| 495 const std::string text1_name = "One two three."; | 486 const std::string text1_name = "One two three."; |
| 496 const std::string text2_name = " Four five six."; | 487 const std::string text2_name = " Four five six."; |
| 497 const long text_name_len = text1_name.length() + text2_name.length(); | 488 const long text_name_len = text1_name.length() + text2_name.length(); |
| 498 | 489 |
| 499 ui::AXNodeData text1; | 490 ui::AXNodeData text1; |
| 500 text1.id = 11; | 491 text1.id = 11; |
| 501 text1.role = ui::AX_ROLE_STATIC_TEXT; | 492 text1.role = ui::AX_ROLE_STATIC_TEXT; |
| 502 text1.state = 1 << ui::AX_STATE_READ_ONLY; | 493 text1.AddState(ui::AX_STATE_READ_ONLY); |
| 503 text1.SetName(text1_name); | 494 text1.SetName(text1_name); |
| 504 | 495 |
| 505 ui::AXNodeData text2; | 496 ui::AXNodeData text2; |
| 506 text2.id = 12; | 497 text2.id = 12; |
| 507 text2.role = ui::AX_ROLE_STATIC_TEXT; | 498 text2.role = ui::AX_ROLE_STATIC_TEXT; |
| 508 text2.state = 1 << ui::AX_STATE_READ_ONLY; | 499 text2.AddState(ui::AX_STATE_READ_ONLY); |
| 509 text2.SetName(text2_name); | 500 text2.SetName(text2_name); |
| 510 | 501 |
| 511 ui::AXNodeData root; | 502 ui::AXNodeData root; |
| 512 root.id = 1; | 503 root.id = 1; |
| 513 root.role = ui::AX_ROLE_ROOT_WEB_AREA; | 504 root.role = ui::AX_ROLE_ROOT_WEB_AREA; |
| 514 root.state = 1 << ui::AX_STATE_READ_ONLY; | 505 root.AddState(ui::AX_STATE_READ_ONLY); |
| 515 root.child_ids.push_back(text1.id); | 506 root.child_ids.push_back(text1.id); |
| 516 root.child_ids.push_back(text2.id); | 507 root.child_ids.push_back(text2.id); |
| 517 | 508 |
| 518 CountedBrowserAccessibility::reset(); | 509 CountedBrowserAccessibility::reset(); |
| 519 std::unique_ptr<BrowserAccessibilityManager> manager( | 510 std::unique_ptr<BrowserAccessibilityManager> manager( |
| 520 BrowserAccessibilityManager::Create( | 511 BrowserAccessibilityManager::Create( |
| 521 MakeAXTreeUpdate(root, text1, text2), nullptr, | 512 MakeAXTreeUpdate(root, text1, text2), nullptr, |
| 522 new CountedBrowserAccessibilityFactory())); | 513 new CountedBrowserAccessibilityFactory())); |
| 523 ASSERT_EQ(3, CountedBrowserAccessibility::num_instances()); | 514 ASSERT_EQ(3, CountedBrowserAccessibility::num_instances()); |
| 524 | 515 |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 575 // Each control (combo / check box, button and link) will be represented by an | 566 // Each control (combo / check box, button and link) will be represented by an |
| 576 // embedded object character. | 567 // embedded object character. |
| 577 const base::string16 embed(1, BrowserAccessibilityWin::kEmbeddedCharacter); | 568 const base::string16 embed(1, BrowserAccessibilityWin::kEmbeddedCharacter); |
| 578 const base::string16 root_hypertext = | 569 const base::string16 root_hypertext = |
| 579 text1_name + embed + text2_name + embed + embed + embed; | 570 text1_name + embed + text2_name + embed + embed + embed; |
| 580 const long root_hypertext_len = root_hypertext.length(); | 571 const long root_hypertext_len = root_hypertext.length(); |
| 581 | 572 |
| 582 ui::AXNodeData text1; | 573 ui::AXNodeData text1; |
| 583 text1.id = 11; | 574 text1.id = 11; |
| 584 text1.role = ui::AX_ROLE_STATIC_TEXT; | 575 text1.role = ui::AX_ROLE_STATIC_TEXT; |
| 585 text1.state = 1 << ui::AX_STATE_READ_ONLY; | 576 text1.AddState(ui::AX_STATE_READ_ONLY); |
| 586 text1.SetName(base::UTF16ToUTF8(text1_name)); | 577 text1.SetName(base::UTF16ToUTF8(text1_name)); |
| 587 | 578 |
| 588 ui::AXNodeData combo_box; | 579 ui::AXNodeData combo_box; |
| 589 combo_box.id = 12; | 580 combo_box.id = 12; |
| 590 combo_box.role = ui::AX_ROLE_COMBO_BOX; | 581 combo_box.role = ui::AX_ROLE_COMBO_BOX; |
| 591 combo_box.SetName(base::UTF16ToUTF8(combo_box_name)); | 582 combo_box.SetName(base::UTF16ToUTF8(combo_box_name)); |
| 592 combo_box.SetValue(base::UTF16ToUTF8(combo_box_value)); | 583 combo_box.SetValue(base::UTF16ToUTF8(combo_box_value)); |
| 593 | 584 |
| 594 ui::AXNodeData text2; | 585 ui::AXNodeData text2; |
| 595 text2.id = 13; | 586 text2.id = 13; |
| 596 text2.role = ui::AX_ROLE_STATIC_TEXT; | 587 text2.role = ui::AX_ROLE_STATIC_TEXT; |
| 597 text2.state = 1 << ui::AX_STATE_READ_ONLY; | 588 text2.AddState(ui::AX_STATE_READ_ONLY); |
| 598 text2.SetName(base::UTF16ToUTF8(text2_name)); | 589 text2.SetName(base::UTF16ToUTF8(text2_name)); |
| 599 | 590 |
| 600 ui::AXNodeData check_box; | 591 ui::AXNodeData check_box; |
| 601 check_box.id = 14; | 592 check_box.id = 14; |
| 602 check_box.role = ui::AX_ROLE_CHECK_BOX; | 593 check_box.role = ui::AX_ROLE_CHECK_BOX; |
| 603 check_box.state = 0; | |
| 604 check_box.AddIntAttribute(ui::AX_ATTR_CHECKED_STATE, | 594 check_box.AddIntAttribute(ui::AX_ATTR_CHECKED_STATE, |
| 605 ui::AX_CHECKED_STATE_TRUE); | 595 ui::AX_CHECKED_STATE_TRUE); |
| 606 check_box.SetName(base::UTF16ToUTF8(check_box_name)); | 596 check_box.SetName(base::UTF16ToUTF8(check_box_name)); |
| 607 check_box.SetValue(base::UTF16ToUTF8(check_box_value)); | 597 check_box.SetValue(base::UTF16ToUTF8(check_box_value)); |
| 608 | 598 |
| 609 ui::AXNodeData button, button_text; | 599 ui::AXNodeData button, button_text; |
| 610 button.id = 15; | 600 button.id = 15; |
| 611 button_text.id = 17; | 601 button_text.id = 17; |
| 612 button_text.SetName(base::UTF16ToUTF8(button_text_name)); | 602 button_text.SetName(base::UTF16ToUTF8(button_text_name)); |
| 613 button.role = ui::AX_ROLE_BUTTON; | 603 button.role = ui::AX_ROLE_BUTTON; |
| 614 button_text.role = ui::AX_ROLE_STATIC_TEXT; | 604 button_text.role = ui::AX_ROLE_STATIC_TEXT; |
| 615 button.state = 1 << ui::AX_STATE_READ_ONLY; | 605 button.AddState(ui::AX_STATE_READ_ONLY); |
| 616 button_text.state = 1 << ui::AX_STATE_READ_ONLY; | 606 button_text.AddState(ui::AX_STATE_READ_ONLY); |
| 617 button.child_ids.push_back(button_text.id); | 607 button.child_ids.push_back(button_text.id); |
| 618 | 608 |
| 619 ui::AXNodeData link, link_text; | 609 ui::AXNodeData link, link_text; |
| 620 link.id = 16; | 610 link.id = 16; |
| 621 link_text.id = 18; | 611 link_text.id = 18; |
| 622 link_text.SetName(base::UTF16ToUTF8(link_text_name)); | 612 link_text.SetName(base::UTF16ToUTF8(link_text_name)); |
| 623 link.role = ui::AX_ROLE_LINK; | 613 link.role = ui::AX_ROLE_LINK; |
| 624 link_text.role = ui::AX_ROLE_STATIC_TEXT; | 614 link_text.role = ui::AX_ROLE_STATIC_TEXT; |
| 625 link.state = 1 << ui::AX_STATE_READ_ONLY; | 615 link.AddState(ui::AX_STATE_READ_ONLY); |
| 626 link_text.state = 1 << ui::AX_STATE_READ_ONLY; | 616 link_text.AddState(ui::AX_STATE_READ_ONLY); |
| 627 link.child_ids.push_back(link_text.id); | 617 link.child_ids.push_back(link_text.id); |
| 628 | 618 |
| 629 ui::AXNodeData root; | 619 ui::AXNodeData root; |
| 630 root.id = 1; | 620 root.id = 1; |
| 631 root.role = ui::AX_ROLE_ROOT_WEB_AREA; | 621 root.role = ui::AX_ROLE_ROOT_WEB_AREA; |
| 632 root.state = 1 << ui::AX_STATE_READ_ONLY; | 622 root.AddState(ui::AX_STATE_READ_ONLY); |
| 633 root.child_ids.push_back(text1.id); | 623 root.child_ids.push_back(text1.id); |
| 634 root.child_ids.push_back(combo_box.id); | 624 root.child_ids.push_back(combo_box.id); |
| 635 root.child_ids.push_back(text2.id); | 625 root.child_ids.push_back(text2.id); |
| 636 root.child_ids.push_back(check_box.id); | 626 root.child_ids.push_back(check_box.id); |
| 637 root.child_ids.push_back(button.id); | 627 root.child_ids.push_back(button.id); |
| 638 root.child_ids.push_back(link.id); | 628 root.child_ids.push_back(link.id); |
| 639 | 629 |
| 640 CountedBrowserAccessibility::reset(); | 630 CountedBrowserAccessibility::reset(); |
| 641 std::unique_ptr<BrowserAccessibilityManager> manager( | 631 std::unique_ptr<BrowserAccessibilityManager> manager( |
| 642 BrowserAccessibilityManager::Create( | 632 BrowserAccessibilityManager::Create( |
| (...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 834 ui::AXNodeData pseudo_before; | 824 ui::AXNodeData pseudo_before; |
| 835 pseudo_before.id = 2; | 825 pseudo_before.id = 2; |
| 836 pseudo_before.role = ui::AX_ROLE_DIV; | 826 pseudo_before.role = ui::AX_ROLE_DIV; |
| 837 pseudo_before.AddStringAttribute(ui::AX_ATTR_HTML_TAG, "<pseudo:before>"); | 827 pseudo_before.AddStringAttribute(ui::AX_ATTR_HTML_TAG, "<pseudo:before>"); |
| 838 pseudo_before.AddStringAttribute(ui::AX_ATTR_DISPLAY, "none"); | 828 pseudo_before.AddStringAttribute(ui::AX_ATTR_DISPLAY, "none"); |
| 839 | 829 |
| 840 ui::AXNodeData checkbox; | 830 ui::AXNodeData checkbox; |
| 841 checkbox.id = 3; | 831 checkbox.id = 3; |
| 842 checkbox.SetName("Checkbox"); | 832 checkbox.SetName("Checkbox"); |
| 843 checkbox.role = ui::AX_ROLE_CHECK_BOX; | 833 checkbox.role = ui::AX_ROLE_CHECK_BOX; |
| 844 checkbox.state = 0; | |
| 845 checkbox.AddIntAttribute(ui::AX_ATTR_CHECKED_STATE, | 834 checkbox.AddIntAttribute(ui::AX_ATTR_CHECKED_STATE, |
| 846 ui::AX_CHECKED_STATE_TRUE); | 835 ui::AX_CHECKED_STATE_TRUE); |
| 847 | 836 |
| 848 ui::AXNodeData root; | 837 ui::AXNodeData root; |
| 849 root.id = 1; | 838 root.id = 1; |
| 850 root.SetName("Document"); | 839 root.SetName("Document"); |
| 851 root.role = ui::AX_ROLE_ROOT_WEB_AREA; | 840 root.role = ui::AX_ROLE_ROOT_WEB_AREA; |
| 852 root.state = (1 << ui::AX_STATE_READ_ONLY) | (1 << ui::AX_STATE_FOCUSABLE); | 841 root.AddState(ui::AX_STATE_READ_ONLY); |
| 842 root.AddState(ui::AX_STATE_FOCUSABLE); |
| 853 root.child_ids.push_back(2); | 843 root.child_ids.push_back(2); |
| 854 root.child_ids.push_back(3); | 844 root.child_ids.push_back(3); |
| 855 | 845 |
| 856 CountedBrowserAccessibility::reset(); | 846 CountedBrowserAccessibility::reset(); |
| 857 std::unique_ptr<BrowserAccessibilityManager> manager( | 847 std::unique_ptr<BrowserAccessibilityManager> manager( |
| 858 BrowserAccessibilityManager::Create( | 848 BrowserAccessibilityManager::Create( |
| 859 MakeAXTreeUpdate(root, pseudo_before, checkbox), nullptr, | 849 MakeAXTreeUpdate(root, pseudo_before, checkbox), nullptr, |
| 860 new CountedBrowserAccessibilityFactory())); | 850 new CountedBrowserAccessibilityFactory())); |
| 861 ASSERT_EQ(3, CountedBrowserAccessibility::num_instances()); | 851 ASSERT_EQ(3, CountedBrowserAccessibility::num_instances()); |
| 862 | 852 |
| (...skipping 26 matching lines...) Expand all Loading... |
| 889 EXPECT_EQ(L"checkable:true;", attributes_str); | 879 EXPECT_EQ(L"checkable:true;", attributes_str); |
| 890 | 880 |
| 891 manager.reset(); | 881 manager.reset(); |
| 892 ASSERT_EQ(0, CountedBrowserAccessibility::num_instances()); | 882 ASSERT_EQ(0, CountedBrowserAccessibility::num_instances()); |
| 893 } | 883 } |
| 894 | 884 |
| 895 TEST_F(BrowserAccessibilityTest, TestValueAttributeInTextControls) { | 885 TEST_F(BrowserAccessibilityTest, TestValueAttributeInTextControls) { |
| 896 ui::AXNodeData root; | 886 ui::AXNodeData root; |
| 897 root.id = 1; | 887 root.id = 1; |
| 898 root.role = ui::AX_ROLE_ROOT_WEB_AREA; | 888 root.role = ui::AX_ROLE_ROOT_WEB_AREA; |
| 899 root.state = (1 << ui::AX_STATE_READ_ONLY) | (1 << ui::AX_STATE_FOCUSABLE); | 889 root.AddState(ui::AX_STATE_READ_ONLY); |
| 890 root.AddState(ui::AX_STATE_FOCUSABLE); |
| 900 | 891 |
| 901 ui::AXNodeData combo_box, combo_box_text; | 892 ui::AXNodeData combo_box, combo_box_text; |
| 902 combo_box.id = 2; | 893 combo_box.id = 2; |
| 903 combo_box_text.id = 3; | 894 combo_box_text.id = 3; |
| 904 combo_box.SetName("Combo box:"); | 895 combo_box.SetName("Combo box:"); |
| 905 combo_box_text.SetName("Combo box text"); | 896 combo_box_text.SetName("Combo box text"); |
| 906 combo_box.role = ui::AX_ROLE_COMBO_BOX; | 897 combo_box.role = ui::AX_ROLE_COMBO_BOX; |
| 907 combo_box_text.role = ui::AX_ROLE_STATIC_TEXT; | 898 combo_box_text.role = ui::AX_ROLE_STATIC_TEXT; |
| 908 combo_box.state = (1 << ui::AX_STATE_EDITABLE) | | 899 combo_box.AddState(ui::AX_STATE_EDITABLE); |
| 909 (1 << ui::AX_STATE_FOCUSABLE); | 900 combo_box.AddState(ui::AX_STATE_FOCUSABLE); |
| 910 combo_box_text.state = 1 << ui::AX_STATE_EDITABLE; | 901 combo_box_text.AddState(ui::AX_STATE_EDITABLE); |
| 911 combo_box.child_ids.push_back(combo_box_text.id); | 902 combo_box.child_ids.push_back(combo_box_text.id); |
| 912 | 903 |
| 913 ui::AXNodeData search_box, search_box_text, new_line; | 904 ui::AXNodeData search_box, search_box_text, new_line; |
| 914 search_box.id = 4; | 905 search_box.id = 4; |
| 915 search_box_text.id = 5; | 906 search_box_text.id = 5; |
| 916 new_line.id = 6; | 907 new_line.id = 6; |
| 917 search_box.SetName("Search for:"); | 908 search_box.SetName("Search for:"); |
| 918 search_box_text.SetName("Search box text"); | 909 search_box_text.SetName("Search box text"); |
| 919 new_line.SetName("\n"); | 910 new_line.SetName("\n"); |
| 920 search_box.role = ui::AX_ROLE_SEARCH_BOX; | 911 search_box.role = ui::AX_ROLE_SEARCH_BOX; |
| 921 search_box_text.role = ui::AX_ROLE_STATIC_TEXT; | 912 search_box_text.role = ui::AX_ROLE_STATIC_TEXT; |
| 922 new_line.role = ui::AX_ROLE_LINE_BREAK; | 913 new_line.role = ui::AX_ROLE_LINE_BREAK; |
| 923 search_box.state = (1 << ui::AX_STATE_EDITABLE) | | 914 search_box.AddState(ui::AX_STATE_EDITABLE); |
| 924 (1 << ui::AX_STATE_FOCUSABLE); | 915 search_box.AddState(ui::AX_STATE_FOCUSABLE); |
| 925 search_box_text.state = new_line.state = 1 << ui::AX_STATE_EDITABLE; | 916 search_box_text.AddState(ui::AX_STATE_EDITABLE); |
| 917 new_line.AddState(ui::AX_STATE_EDITABLE); |
| 926 search_box.child_ids.push_back(search_box_text.id); | 918 search_box.child_ids.push_back(search_box_text.id); |
| 927 search_box.child_ids.push_back(new_line.id); | 919 search_box.child_ids.push_back(new_line.id); |
| 928 | 920 |
| 929 ui::AXNodeData text_field; | 921 ui::AXNodeData text_field; |
| 930 text_field.id = 7; | 922 text_field.id = 7; |
| 931 text_field.role = ui::AX_ROLE_TEXT_FIELD; | 923 text_field.role = ui::AX_ROLE_TEXT_FIELD; |
| 932 text_field.state = | 924 text_field.AddState(ui::AX_STATE_EDITABLE); |
| 933 (1 << ui::AX_STATE_EDITABLE) | (1 << ui::AX_STATE_FOCUSABLE); | 925 text_field.AddState(ui::AX_STATE_FOCUSABLE); |
| 934 text_field.SetValue("Text field text"); | 926 text_field.SetValue("Text field text"); |
| 935 | 927 |
| 936 ui::AXNodeData link, link_text; | 928 ui::AXNodeData link, link_text; |
| 937 link.id = 8; | 929 link.id = 8; |
| 938 link_text.id = 9; | 930 link_text.id = 9; |
| 939 link_text.SetName("Link text"); | 931 link_text.SetName("Link text"); |
| 940 link.role = ui::AX_ROLE_LINK; | 932 link.role = ui::AX_ROLE_LINK; |
| 941 link_text.role = ui::AX_ROLE_STATIC_TEXT; | 933 link_text.role = ui::AX_ROLE_STATIC_TEXT; |
| 942 link.state = link_text.state = 1 << ui::AX_STATE_READ_ONLY; | 934 link.AddState(ui::AX_STATE_READ_ONLY); |
| 935 link_text.AddState(ui::AX_STATE_READ_ONLY); |
| 943 link.child_ids.push_back(link_text.id); | 936 link.child_ids.push_back(link_text.id); |
| 944 | 937 |
| 945 ui::AXNodeData slider, slider_text; | 938 ui::AXNodeData slider, slider_text; |
| 946 slider.id = 10; | 939 slider.id = 10; |
| 947 slider_text.id = 11; | 940 slider_text.id = 11; |
| 948 slider.AddFloatAttribute(ui::AX_ATTR_VALUE_FOR_RANGE, 5.0F); | 941 slider.AddFloatAttribute(ui::AX_ATTR_VALUE_FOR_RANGE, 5.0F); |
| 949 slider_text.SetName("Slider text"); | 942 slider_text.SetName("Slider text"); |
| 950 slider.role = ui::AX_ROLE_SLIDER; | 943 slider.role = ui::AX_ROLE_SLIDER; |
| 951 slider_text.role = ui::AX_ROLE_STATIC_TEXT; | 944 slider_text.role = ui::AX_ROLE_STATIC_TEXT; |
| 952 slider.state = slider_text.state = 1 << ui::AX_STATE_READ_ONLY; | 945 slider.AddState(ui::AX_STATE_READ_ONLY); |
| 946 slider_text.AddState(ui::AX_STATE_READ_ONLY); |
| 953 slider.child_ids.push_back(slider_text.id); | 947 slider.child_ids.push_back(slider_text.id); |
| 954 | 948 |
| 955 root.child_ids.push_back(2); // Combo box. | 949 root.child_ids.push_back(2); // Combo box. |
| 956 root.child_ids.push_back(4); // Search box. | 950 root.child_ids.push_back(4); // Search box. |
| 957 root.child_ids.push_back(7); // Text field. | 951 root.child_ids.push_back(7); // Text field. |
| 958 root.child_ids.push_back(8); // Link. | 952 root.child_ids.push_back(8); // Link. |
| 959 root.child_ids.push_back(10); // Slider. | 953 root.child_ids.push_back(10); // Slider. |
| 960 | 954 |
| 961 CountedBrowserAccessibility::reset(); | 955 CountedBrowserAccessibility::reset(); |
| 962 std::unique_ptr<BrowserAccessibilityManager> manager( | 956 std::unique_ptr<BrowserAccessibilityManager> manager( |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1050 line2_word_starts.push_back(7); | 1044 line2_word_starts.push_back(7); |
| 1051 line2_word_starts.push_back(12); | 1045 line2_word_starts.push_back(12); |
| 1052 line2_word_starts.push_back(15); | 1046 line2_word_starts.push_back(15); |
| 1053 line2_word_starts.push_back(20); | 1047 line2_word_starts.push_back(20); |
| 1054 line2_word_starts.push_back(25); | 1048 line2_word_starts.push_back(25); |
| 1055 line2_word_starts.push_back(29); | 1049 line2_word_starts.push_back(29); |
| 1056 | 1050 |
| 1057 ui::AXNodeData root; | 1051 ui::AXNodeData root; |
| 1058 root.id = 1; | 1052 root.id = 1; |
| 1059 root.role = ui::AX_ROLE_ROOT_WEB_AREA; | 1053 root.role = ui::AX_ROLE_ROOT_WEB_AREA; |
| 1060 root.state = (1 << ui::AX_STATE_READ_ONLY) | (1 << ui::AX_STATE_FOCUSABLE); | 1054 root.AddState(ui::AX_STATE_READ_ONLY); |
| 1055 root.AddState(ui::AX_STATE_FOCUSABLE); |
| 1061 | 1056 |
| 1062 ui::AXNodeData textarea, textarea_div, textarea_text; | 1057 ui::AXNodeData textarea, textarea_div, textarea_text; |
| 1063 textarea.id = 2; | 1058 textarea.id = 2; |
| 1064 textarea_div.id = 3; | 1059 textarea_div.id = 3; |
| 1065 textarea_text.id = 4; | 1060 textarea_text.id = 4; |
| 1066 textarea.role = ui::AX_ROLE_TEXT_FIELD; | 1061 textarea.role = ui::AX_ROLE_TEXT_FIELD; |
| 1067 textarea_div.role = ui::AX_ROLE_DIV; | 1062 textarea_div.role = ui::AX_ROLE_DIV; |
| 1068 textarea_text.role = ui::AX_ROLE_STATIC_TEXT; | 1063 textarea_text.role = ui::AX_ROLE_STATIC_TEXT; |
| 1069 textarea.state = (1 << ui::AX_STATE_EDITABLE) | | 1064 textarea.AddState(ui::AX_STATE_EDITABLE); |
| 1070 (1 << ui::AX_STATE_FOCUSABLE) | | 1065 textarea.AddState(ui::AX_STATE_FOCUSABLE); |
| 1071 (1 << ui::AX_STATE_MULTILINE); | 1066 textarea.AddState(ui::AX_STATE_MULTILINE); |
| 1072 textarea_div.state = 1 << ui::AX_STATE_EDITABLE; | 1067 textarea_div.AddState(ui::AX_STATE_EDITABLE); |
| 1073 textarea_text.state = 1 << ui::AX_STATE_EDITABLE; | 1068 textarea_text.AddState(ui::AX_STATE_EDITABLE); |
| 1074 textarea.SetValue(base::UTF16ToUTF8(text)); | 1069 textarea.SetValue(base::UTF16ToUTF8(text)); |
| 1075 textarea_text.SetName(base::UTF16ToUTF8(text)); | 1070 textarea_text.SetName(base::UTF16ToUTF8(text)); |
| 1076 textarea.AddStringAttribute(ui::AX_ATTR_HTML_TAG, "textarea"); | 1071 textarea.AddStringAttribute(ui::AX_ATTR_HTML_TAG, "textarea"); |
| 1077 textarea.child_ids.push_back(textarea_div.id); | 1072 textarea.child_ids.push_back(textarea_div.id); |
| 1078 textarea_div.child_ids.push_back(textarea_text.id); | 1073 textarea_div.child_ids.push_back(textarea_text.id); |
| 1079 | 1074 |
| 1080 ui::AXNodeData textarea_line1, textarea_line2; | 1075 ui::AXNodeData textarea_line1, textarea_line2; |
| 1081 textarea_line1.id = 5; | 1076 textarea_line1.id = 5; |
| 1082 textarea_line2.id = 6; | 1077 textarea_line2.id = 6; |
| 1083 textarea_line1.role = ui::AX_ROLE_INLINE_TEXT_BOX; | 1078 textarea_line1.role = ui::AX_ROLE_INLINE_TEXT_BOX; |
| 1084 textarea_line2.role = ui::AX_ROLE_INLINE_TEXT_BOX; | 1079 textarea_line2.role = ui::AX_ROLE_INLINE_TEXT_BOX; |
| 1085 textarea_line1.state = 1 << ui::AX_STATE_EDITABLE; | 1080 textarea_line1.AddState(ui::AX_STATE_EDITABLE); |
| 1086 textarea_line2.state = 1 << ui::AX_STATE_EDITABLE; | 1081 textarea_line2.AddState(ui::AX_STATE_EDITABLE); |
| 1087 textarea_line1.SetName(base::UTF16ToUTF8(line1)); | 1082 textarea_line1.SetName(base::UTF16ToUTF8(line1)); |
| 1088 textarea_line2.SetName(base::UTF16ToUTF8(line2)); | 1083 textarea_line2.SetName(base::UTF16ToUTF8(line2)); |
| 1089 textarea_line1.AddIntListAttribute(ui::AX_ATTR_WORD_STARTS, | 1084 textarea_line1.AddIntListAttribute(ui::AX_ATTR_WORD_STARTS, |
| 1090 line1_word_starts); | 1085 line1_word_starts); |
| 1091 textarea_line2.AddIntListAttribute(ui::AX_ATTR_WORD_STARTS, | 1086 textarea_line2.AddIntListAttribute(ui::AX_ATTR_WORD_STARTS, |
| 1092 line2_word_starts); | 1087 line2_word_starts); |
| 1093 textarea_text.child_ids.push_back(textarea_line1.id); | 1088 textarea_text.child_ids.push_back(textarea_line1.id); |
| 1094 textarea_text.child_ids.push_back(textarea_line2.id); | 1089 textarea_text.child_ids.push_back(textarea_line2.id); |
| 1095 | 1090 |
| 1096 ui::AXNodeData text_field, text_field_div, text_field_text; | 1091 ui::AXNodeData text_field, text_field_div, text_field_text; |
| 1097 text_field.id = 7; | 1092 text_field.id = 7; |
| 1098 text_field_div.id = 8; | 1093 text_field_div.id = 8; |
| 1099 text_field_text.id = 9; | 1094 text_field_text.id = 9; |
| 1100 text_field.role = ui::AX_ROLE_TEXT_FIELD; | 1095 text_field.role = ui::AX_ROLE_TEXT_FIELD; |
| 1101 text_field_div.role = ui::AX_ROLE_DIV; | 1096 text_field_div.role = ui::AX_ROLE_DIV; |
| 1102 text_field_text.role = ui::AX_ROLE_STATIC_TEXT; | 1097 text_field_text.role = ui::AX_ROLE_STATIC_TEXT; |
| 1103 text_field.state = | 1098 text_field.AddState(ui::AX_STATE_EDITABLE); |
| 1104 (1 << ui::AX_STATE_EDITABLE) | (1 << ui::AX_STATE_FOCUSABLE); | 1099 text_field.AddState(ui::AX_STATE_FOCUSABLE); |
| 1105 text_field_div.state = 1 << ui::AX_STATE_EDITABLE; | 1100 text_field_div.AddState(ui::AX_STATE_EDITABLE); |
| 1106 text_field_text.state = 1 << ui::AX_STATE_EDITABLE; | 1101 text_field_text.AddState(ui::AX_STATE_EDITABLE); |
| 1107 text_field.SetValue(base::UTF16ToUTF8(line1)); | 1102 text_field.SetValue(base::UTF16ToUTF8(line1)); |
| 1108 text_field_text.SetName(base::UTF16ToUTF8(line1)); | 1103 text_field_text.SetName(base::UTF16ToUTF8(line1)); |
| 1109 text_field.AddStringAttribute(ui::AX_ATTR_HTML_TAG, "input"); | 1104 text_field.AddStringAttribute(ui::AX_ATTR_HTML_TAG, "input"); |
| 1110 text_field.html_attributes.push_back(std::make_pair("type", "text")); | 1105 text_field.html_attributes.push_back(std::make_pair("type", "text")); |
| 1111 text_field.child_ids.push_back(text_field_div.id); | 1106 text_field.child_ids.push_back(text_field_div.id); |
| 1112 text_field_div.child_ids.push_back(text_field_text.id); | 1107 text_field_div.child_ids.push_back(text_field_text.id); |
| 1113 | 1108 |
| 1114 ui::AXNodeData text_field_line; | 1109 ui::AXNodeData text_field_line; |
| 1115 text_field_line.id = 10; | 1110 text_field_line.id = 10; |
| 1116 text_field_line.role = ui::AX_ROLE_INLINE_TEXT_BOX; | 1111 text_field_line.role = ui::AX_ROLE_INLINE_TEXT_BOX; |
| 1117 text_field_line.state = 1 << ui::AX_STATE_EDITABLE; | 1112 text_field_line.AddState(ui::AX_STATE_EDITABLE); |
| 1118 text_field_line.SetName(base::UTF16ToUTF8(line1)); | 1113 text_field_line.SetName(base::UTF16ToUTF8(line1)); |
| 1119 text_field_line.AddIntListAttribute(ui::AX_ATTR_WORD_STARTS, | 1114 text_field_line.AddIntListAttribute(ui::AX_ATTR_WORD_STARTS, |
| 1120 line1_word_starts); | 1115 line1_word_starts); |
| 1121 text_field_text.child_ids.push_back(text_field_line.id); | 1116 text_field_text.child_ids.push_back(text_field_line.id); |
| 1122 | 1117 |
| 1123 root.child_ids.push_back(2); // Textarea. | 1118 root.child_ids.push_back(2); // Textarea. |
| 1124 root.child_ids.push_back(7); // Text field. | 1119 root.child_ids.push_back(7); // Text field. |
| 1125 | 1120 |
| 1126 CountedBrowserAccessibility::reset(); | 1121 CountedBrowserAccessibility::reset(); |
| 1127 std::unique_ptr<BrowserAccessibilityManager> manager( | 1122 std::unique_ptr<BrowserAccessibilityManager> manager( |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1192 text_field_object.Reset(); | 1187 text_field_object.Reset(); |
| 1193 | 1188 |
| 1194 manager.reset(); | 1189 manager.reset(); |
| 1195 ASSERT_EQ(0, CountedBrowserAccessibility::num_instances()); | 1190 ASSERT_EQ(0, CountedBrowserAccessibility::num_instances()); |
| 1196 } | 1191 } |
| 1197 | 1192 |
| 1198 TEST_F(BrowserAccessibilityTest, TestCaretAndSelectionInSimpleFields) { | 1193 TEST_F(BrowserAccessibilityTest, TestCaretAndSelectionInSimpleFields) { |
| 1199 ui::AXNodeData root; | 1194 ui::AXNodeData root; |
| 1200 root.id = 1; | 1195 root.id = 1; |
| 1201 root.role = ui::AX_ROLE_ROOT_WEB_AREA; | 1196 root.role = ui::AX_ROLE_ROOT_WEB_AREA; |
| 1202 root.state = (1 << ui::AX_STATE_READ_ONLY) | (1 << ui::AX_STATE_FOCUSABLE); | 1197 root.AddState(ui::AX_STATE_READ_ONLY); |
| 1198 root.AddState(ui::AX_STATE_FOCUSABLE); |
| 1203 | 1199 |
| 1204 ui::AXNodeData combo_box; | 1200 ui::AXNodeData combo_box; |
| 1205 combo_box.id = 2; | 1201 combo_box.id = 2; |
| 1206 combo_box.role = ui::AX_ROLE_COMBO_BOX; | 1202 combo_box.role = ui::AX_ROLE_COMBO_BOX; |
| 1207 combo_box.state = (1 << ui::AX_STATE_EDITABLE) | | 1203 combo_box.AddState(ui::AX_STATE_EDITABLE); |
| 1208 (1 << ui::AX_STATE_FOCUSABLE); | 1204 combo_box.AddState(ui::AX_STATE_FOCUSABLE); |
| 1209 combo_box.SetValue("Test1"); | 1205 combo_box.SetValue("Test1"); |
| 1210 // Place the caret between 't' and 'e'. | 1206 // Place the caret between 't' and 'e'. |
| 1211 combo_box.AddIntAttribute(ui::AX_ATTR_TEXT_SEL_START, 1); | 1207 combo_box.AddIntAttribute(ui::AX_ATTR_TEXT_SEL_START, 1); |
| 1212 combo_box.AddIntAttribute(ui::AX_ATTR_TEXT_SEL_END, 1); | 1208 combo_box.AddIntAttribute(ui::AX_ATTR_TEXT_SEL_END, 1); |
| 1213 | 1209 |
| 1214 ui::AXNodeData text_field; | 1210 ui::AXNodeData text_field; |
| 1215 text_field.id = 3; | 1211 text_field.id = 3; |
| 1216 text_field.role = ui::AX_ROLE_TEXT_FIELD; | 1212 text_field.role = ui::AX_ROLE_TEXT_FIELD; |
| 1217 text_field.state = (1 << ui::AX_STATE_EDITABLE) | | 1213 text_field.AddState(ui::AX_STATE_EDITABLE); |
| 1218 (1 << ui::AX_STATE_FOCUSABLE); | 1214 text_field.AddState(ui::AX_STATE_FOCUSABLE); |
| 1219 text_field.SetValue("Test2"); | 1215 text_field.SetValue("Test2"); |
| 1220 // Select the letter 'e'. | 1216 // Select the letter 'e'. |
| 1221 text_field.AddIntAttribute(ui::AX_ATTR_TEXT_SEL_START, 1); | 1217 text_field.AddIntAttribute(ui::AX_ATTR_TEXT_SEL_START, 1); |
| 1222 text_field.AddIntAttribute(ui::AX_ATTR_TEXT_SEL_END, 2); | 1218 text_field.AddIntAttribute(ui::AX_ATTR_TEXT_SEL_END, 2); |
| 1223 | 1219 |
| 1224 root.child_ids.push_back(2); | 1220 root.child_ids.push_back(2); |
| 1225 root.child_ids.push_back(3); | 1221 root.child_ids.push_back(3); |
| 1226 | 1222 |
| 1227 CountedBrowserAccessibility::reset(); | 1223 CountedBrowserAccessibility::reset(); |
| 1228 std::unique_ptr<BrowserAccessibilityManager> manager( | 1224 std::unique_ptr<BrowserAccessibilityManager> manager( |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1291 EXPECT_EQ(2, selection_end); | 1287 EXPECT_EQ(2, selection_end); |
| 1292 | 1288 |
| 1293 manager.reset(); | 1289 manager.reset(); |
| 1294 ASSERT_EQ(0, CountedBrowserAccessibility::num_instances()); | 1290 ASSERT_EQ(0, CountedBrowserAccessibility::num_instances()); |
| 1295 } | 1291 } |
| 1296 | 1292 |
| 1297 TEST_F(BrowserAccessibilityTest, TestCaretInContentEditables) { | 1293 TEST_F(BrowserAccessibilityTest, TestCaretInContentEditables) { |
| 1298 ui::AXNodeData root; | 1294 ui::AXNodeData root; |
| 1299 root.id = 1; | 1295 root.id = 1; |
| 1300 root.role = ui::AX_ROLE_ROOT_WEB_AREA; | 1296 root.role = ui::AX_ROLE_ROOT_WEB_AREA; |
| 1301 root.state = (1 << ui::AX_STATE_READ_ONLY) | (1 << ui::AX_STATE_FOCUSABLE); | 1297 root.AddState(ui::AX_STATE_READ_ONLY); |
| 1298 root.AddState(ui::AX_STATE_FOCUSABLE); |
| 1302 | 1299 |
| 1303 ui::AXNodeData div_editable; | 1300 ui::AXNodeData div_editable; |
| 1304 div_editable.id = 2; | 1301 div_editable.id = 2; |
| 1305 div_editable.role = ui::AX_ROLE_DIV; | 1302 div_editable.role = ui::AX_ROLE_DIV; |
| 1306 div_editable.state = (1 << ui::AX_STATE_EDITABLE) | | 1303 div_editable.AddState(ui::AX_STATE_EDITABLE); |
| 1307 (1 << ui::AX_STATE_FOCUSABLE); | 1304 div_editable.AddState(ui::AX_STATE_FOCUSABLE); |
| 1308 | 1305 |
| 1309 ui::AXNodeData text; | 1306 ui::AXNodeData text; |
| 1310 text.id = 3; | 1307 text.id = 3; |
| 1311 text.role = ui::AX_ROLE_STATIC_TEXT; | 1308 text.role = ui::AX_ROLE_STATIC_TEXT; |
| 1312 text.state = (1 << ui::AX_STATE_EDITABLE); | 1309 text.AddState(ui::AX_STATE_EDITABLE); |
| 1313 text.SetName("Click "); | 1310 text.SetName("Click "); |
| 1314 | 1311 |
| 1315 ui::AXNodeData link; | 1312 ui::AXNodeData link; |
| 1316 link.id = 4; | 1313 link.id = 4; |
| 1317 link.role = ui::AX_ROLE_LINK; | 1314 link.role = ui::AX_ROLE_LINK; |
| 1318 link.state = (1 << ui::AX_STATE_EDITABLE) | | 1315 link.AddState(ui::AX_STATE_EDITABLE); |
| 1319 (1 << ui::AX_STATE_FOCUSABLE) | (1 << ui::AX_STATE_LINKED); | 1316 link.AddState(ui::AX_STATE_FOCUSABLE); |
| 1317 link.AddState(ui::AX_STATE_LINKED); |
| 1320 link.SetName("here"); | 1318 link.SetName("here"); |
| 1321 | 1319 |
| 1322 ui::AXNodeData link_text; | 1320 ui::AXNodeData link_text; |
| 1323 link_text.id = 5; | 1321 link_text.id = 5; |
| 1324 link_text.role = ui::AX_ROLE_STATIC_TEXT; | 1322 link_text.role = ui::AX_ROLE_STATIC_TEXT; |
| 1325 link_text.state = (1 << ui::AX_STATE_EDITABLE) | | 1323 link_text.AddState(ui::AX_STATE_EDITABLE); |
| 1326 (1 << ui::AX_STATE_FOCUSABLE) | (1 << ui::AX_STATE_LINKED); | 1324 link_text.AddState(ui::AX_STATE_FOCUSABLE); |
| 1325 link_text.AddState(ui::AX_STATE_LINKED); |
| 1327 link_text.SetName("here"); | 1326 link_text.SetName("here"); |
| 1328 | 1327 |
| 1329 root.child_ids.push_back(2); | 1328 root.child_ids.push_back(2); |
| 1330 div_editable.child_ids.push_back(3); | 1329 div_editable.child_ids.push_back(3); |
| 1331 div_editable.child_ids.push_back(4); | 1330 div_editable.child_ids.push_back(4); |
| 1332 link.child_ids.push_back(5); | 1331 link.child_ids.push_back(5); |
| 1333 | 1332 |
| 1334 ui::AXTreeUpdate update = MakeAXTreeUpdate( | 1333 ui::AXTreeUpdate update = MakeAXTreeUpdate( |
| 1335 root, div_editable, link, link_text, text); | 1334 root, div_editable, link, link_text, text); |
| 1336 | 1335 |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1412 EXPECT_EQ(1, caret_offset); | 1411 EXPECT_EQ(1, caret_offset); |
| 1413 | 1412 |
| 1414 manager.reset(); | 1413 manager.reset(); |
| 1415 ASSERT_EQ(0, CountedBrowserAccessibility::num_instances()); | 1414 ASSERT_EQ(0, CountedBrowserAccessibility::num_instances()); |
| 1416 } | 1415 } |
| 1417 | 1416 |
| 1418 TEST_F(BrowserAccessibilityTest, TestSelectionInContentEditables) { | 1417 TEST_F(BrowserAccessibilityTest, TestSelectionInContentEditables) { |
| 1419 ui::AXNodeData root; | 1418 ui::AXNodeData root; |
| 1420 root.id = 1; | 1419 root.id = 1; |
| 1421 root.role = ui::AX_ROLE_ROOT_WEB_AREA; | 1420 root.role = ui::AX_ROLE_ROOT_WEB_AREA; |
| 1422 root.state = (1 << ui::AX_STATE_READ_ONLY) | (1 << ui::AX_STATE_FOCUSABLE); | 1421 root.AddState(ui::AX_STATE_READ_ONLY); |
| 1422 root.AddState(ui::AX_STATE_FOCUSABLE); |
| 1423 | 1423 |
| 1424 ui::AXNodeData div_editable; | 1424 ui::AXNodeData div_editable; |
| 1425 div_editable.id = 2; | 1425 div_editable.id = 2; |
| 1426 div_editable.role = ui::AX_ROLE_DIV; | 1426 div_editable.role = ui::AX_ROLE_DIV; |
| 1427 div_editable.state = | 1427 div_editable.AddState(ui::AX_STATE_FOCUSABLE); |
| 1428 (1 << ui::AX_STATE_FOCUSABLE) | (1 << ui::AX_STATE_EDITABLE); | 1428 div_editable.AddState(ui::AX_STATE_EDITABLE); |
| 1429 | 1429 |
| 1430 ui::AXNodeData text; | 1430 ui::AXNodeData text; |
| 1431 text.id = 3; | 1431 text.id = 3; |
| 1432 text.role = ui::AX_ROLE_STATIC_TEXT; | 1432 text.role = ui::AX_ROLE_STATIC_TEXT; |
| 1433 text.state = (1 << ui::AX_STATE_FOCUSABLE) | (1 << ui::AX_STATE_EDITABLE); | 1433 text.AddState(ui::AX_STATE_FOCUSABLE); |
| 1434 text.AddState(ui::AX_STATE_EDITABLE); |
| 1434 text.SetName("Click "); | 1435 text.SetName("Click "); |
| 1435 | 1436 |
| 1436 ui::AXNodeData link; | 1437 ui::AXNodeData link; |
| 1437 link.id = 4; | 1438 link.id = 4; |
| 1438 link.role = ui::AX_ROLE_LINK; | 1439 link.role = ui::AX_ROLE_LINK; |
| 1439 link.state = (1 << ui::AX_STATE_FOCUSABLE) | (1 << ui::AX_STATE_EDITABLE) | | 1440 link.AddState(ui::AX_STATE_FOCUSABLE); |
| 1440 (1 << ui::AX_STATE_LINKED); | 1441 link.AddState(ui::AX_STATE_EDITABLE); |
| 1442 link.AddState(ui::AX_STATE_LINKED); |
| 1441 link.SetName("here"); | 1443 link.SetName("here"); |
| 1442 | 1444 |
| 1443 ui::AXNodeData link_text; | 1445 ui::AXNodeData link_text; |
| 1444 link_text.id = 5; | 1446 link_text.id = 5; |
| 1445 link_text.role = ui::AX_ROLE_STATIC_TEXT; | 1447 link_text.role = ui::AX_ROLE_STATIC_TEXT; |
| 1446 link_text.state = (1 << ui::AX_STATE_FOCUSABLE) | | 1448 link_text.AddState(ui::AX_STATE_FOCUSABLE); |
| 1447 (1 << ui::AX_STATE_EDITABLE) | (1 << ui::AX_STATE_LINKED); | 1449 link_text.AddState(ui::AX_STATE_EDITABLE); |
| 1450 link_text.AddState(ui::AX_STATE_LINKED); |
| 1448 link_text.SetName("here"); | 1451 link_text.SetName("here"); |
| 1449 | 1452 |
| 1450 root.child_ids.push_back(2); | 1453 root.child_ids.push_back(2); |
| 1451 div_editable.child_ids.push_back(3); | 1454 div_editable.child_ids.push_back(3); |
| 1452 div_editable.child_ids.push_back(4); | 1455 div_editable.child_ids.push_back(4); |
| 1453 link.child_ids.push_back(5); | 1456 link.child_ids.push_back(5); |
| 1454 | 1457 |
| 1455 ui::AXTreeUpdate update = | 1458 ui::AXTreeUpdate update = |
| 1456 MakeAXTreeUpdate(root, div_editable, link, link_text, text); | 1459 MakeAXTreeUpdate(root, div_editable, link, link_text, text); |
| 1457 | 1460 |
| (...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1567 EXPECT_EQ(7, selection_end); | 1570 EXPECT_EQ(7, selection_end); |
| 1568 | 1571 |
| 1569 manager.reset(); | 1572 manager.reset(); |
| 1570 ASSERT_EQ(0, CountedBrowserAccessibility::num_instances()); | 1573 ASSERT_EQ(0, CountedBrowserAccessibility::num_instances()); |
| 1571 } | 1574 } |
| 1572 | 1575 |
| 1573 TEST_F(BrowserAccessibilityTest, TestIAccessibleHyperlink) { | 1576 TEST_F(BrowserAccessibilityTest, TestIAccessibleHyperlink) { |
| 1574 ui::AXNodeData root; | 1577 ui::AXNodeData root; |
| 1575 root.id = 1; | 1578 root.id = 1; |
| 1576 root.role = ui::AX_ROLE_ROOT_WEB_AREA; | 1579 root.role = ui::AX_ROLE_ROOT_WEB_AREA; |
| 1577 root.state = (1 << ui::AX_STATE_READ_ONLY) | (1 << ui::AX_STATE_FOCUSABLE); | 1580 root.AddState(ui::AX_STATE_READ_ONLY); |
| 1581 root.AddState(ui::AX_STATE_FOCUSABLE); |
| 1578 | 1582 |
| 1579 ui::AXNodeData div; | 1583 ui::AXNodeData div; |
| 1580 div.id = 2; | 1584 div.id = 2; |
| 1581 div.role = ui::AX_ROLE_DIV; | 1585 div.role = ui::AX_ROLE_DIV; |
| 1582 div.state = (1 << ui::AX_STATE_FOCUSABLE); | 1586 div.AddState(ui::AX_STATE_FOCUSABLE); |
| 1583 | 1587 |
| 1584 ui::AXNodeData text; | 1588 ui::AXNodeData text; |
| 1585 text.id = 3; | 1589 text.id = 3; |
| 1586 text.role = ui::AX_ROLE_STATIC_TEXT; | 1590 text.role = ui::AX_ROLE_STATIC_TEXT; |
| 1587 text.SetName("Click "); | 1591 text.SetName("Click "); |
| 1588 | 1592 |
| 1589 ui::AXNodeData link; | 1593 ui::AXNodeData link; |
| 1590 link.id = 4; | 1594 link.id = 4; |
| 1591 link.role = ui::AX_ROLE_LINK; | 1595 link.role = ui::AX_ROLE_LINK; |
| 1592 link.state = (1 << ui::AX_STATE_FOCUSABLE) | (1 << ui::AX_STATE_LINKED); | 1596 link.AddState(ui::AX_STATE_FOCUSABLE); |
| 1597 link.AddState(ui::AX_STATE_LINKED); |
| 1593 link.SetName("here"); | 1598 link.SetName("here"); |
| 1594 link.AddStringAttribute(ui::AX_ATTR_URL, "example.com"); | 1599 link.AddStringAttribute(ui::AX_ATTR_URL, "example.com"); |
| 1595 | 1600 |
| 1596 root.child_ids.push_back(2); | 1601 root.child_ids.push_back(2); |
| 1597 div.child_ids.push_back(3); | 1602 div.child_ids.push_back(3); |
| 1598 div.child_ids.push_back(4); | 1603 div.child_ids.push_back(4); |
| 1599 | 1604 |
| 1600 CountedBrowserAccessibility::reset(); | 1605 CountedBrowserAccessibility::reset(); |
| 1601 std::unique_ptr<BrowserAccessibilityManager> manager( | 1606 std::unique_ptr<BrowserAccessibilityManager> manager( |
| 1602 BrowserAccessibilityManager::Create( | 1607 BrowserAccessibilityManager::Create( |
| (...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1721 EXPECT_EQ(1, end_index); | 1726 EXPECT_EQ(1, end_index); |
| 1722 EXPECT_HRESULT_FAILED(text_accessible->get_endIndex(&end_index)); | 1727 EXPECT_HRESULT_FAILED(text_accessible->get_endIndex(&end_index)); |
| 1723 EXPECT_HRESULT_SUCCEEDED(link_accessible->get_endIndex(&end_index)); | 1728 EXPECT_HRESULT_SUCCEEDED(link_accessible->get_endIndex(&end_index)); |
| 1724 EXPECT_EQ(7, end_index); | 1729 EXPECT_EQ(7, end_index); |
| 1725 } | 1730 } |
| 1726 | 1731 |
| 1727 TEST_F(BrowserAccessibilityTest, TestTextAttributesInContentEditables) { | 1732 TEST_F(BrowserAccessibilityTest, TestTextAttributesInContentEditables) { |
| 1728 ui::AXNodeData root; | 1733 ui::AXNodeData root; |
| 1729 root.id = 1; | 1734 root.id = 1; |
| 1730 root.role = ui::AX_ROLE_ROOT_WEB_AREA; | 1735 root.role = ui::AX_ROLE_ROOT_WEB_AREA; |
| 1731 root.state = (1 << ui::AX_STATE_READ_ONLY) | (1 << ui::AX_STATE_FOCUSABLE); | 1736 root.AddState(ui::AX_STATE_READ_ONLY); |
| 1737 root.AddState(ui::AX_STATE_FOCUSABLE); |
| 1732 | 1738 |
| 1733 ui::AXNodeData div_editable; | 1739 ui::AXNodeData div_editable; |
| 1734 div_editable.id = 2; | 1740 div_editable.id = 2; |
| 1735 div_editable.role = ui::AX_ROLE_DIV; | 1741 div_editable.role = ui::AX_ROLE_DIV; |
| 1736 div_editable.state = | 1742 div_editable.AddState(ui::AX_STATE_EDITABLE); |
| 1737 (1 << ui::AX_STATE_EDITABLE) | (1 << ui::AX_STATE_FOCUSABLE); | 1743 div_editable.AddState(ui::AX_STATE_FOCUSABLE); |
| 1738 div_editable.AddStringAttribute(ui::AX_ATTR_FONT_FAMILY, "Helvetica"); | 1744 div_editable.AddStringAttribute(ui::AX_ATTR_FONT_FAMILY, "Helvetica"); |
| 1739 | 1745 |
| 1740 ui::AXNodeData text_before; | 1746 ui::AXNodeData text_before; |
| 1741 text_before.id = 3; | 1747 text_before.id = 3; |
| 1742 text_before.role = ui::AX_ROLE_STATIC_TEXT; | 1748 text_before.role = ui::AX_ROLE_STATIC_TEXT; |
| 1743 text_before.state = (1 << ui::AX_STATE_EDITABLE); | 1749 text_before.AddState(ui::AX_STATE_EDITABLE); |
| 1744 text_before.SetName("Before "); | 1750 text_before.SetName("Before "); |
| 1745 text_before.AddIntAttribute( | 1751 text_before.AddIntAttribute( |
| 1746 ui::AX_ATTR_TEXT_STYLE, | 1752 ui::AX_ATTR_TEXT_STYLE, |
| 1747 (ui::AX_TEXT_STYLE_BOLD | ui::AX_TEXT_STYLE_ITALIC)); | 1753 (ui::AX_TEXT_STYLE_BOLD | ui::AX_TEXT_STYLE_ITALIC)); |
| 1748 | 1754 |
| 1749 ui::AXNodeData link; | 1755 ui::AXNodeData link; |
| 1750 link.id = 4; | 1756 link.id = 4; |
| 1751 link.role = ui::AX_ROLE_LINK; | 1757 link.role = ui::AX_ROLE_LINK; |
| 1752 link.state = (1 << ui::AX_STATE_EDITABLE) | (1 << ui::AX_STATE_FOCUSABLE) | | 1758 link.AddState(ui::AX_STATE_EDITABLE); |
| 1753 (1 << ui::AX_STATE_LINKED); | 1759 link.AddState(ui::AX_STATE_FOCUSABLE); |
| 1760 link.AddState(ui::AX_STATE_LINKED); |
| 1754 link.SetName("lnk"); | 1761 link.SetName("lnk"); |
| 1755 link.AddIntAttribute(ui::AX_ATTR_TEXT_STYLE, ui::AX_TEXT_STYLE_UNDERLINE); | 1762 link.AddIntAttribute(ui::AX_ATTR_TEXT_STYLE, ui::AX_TEXT_STYLE_UNDERLINE); |
| 1756 | 1763 |
| 1757 ui::AXNodeData link_text; | 1764 ui::AXNodeData link_text; |
| 1758 link_text.id = 5; | 1765 link_text.id = 5; |
| 1759 link_text.role = ui::AX_ROLE_STATIC_TEXT; | 1766 link_text.role = ui::AX_ROLE_STATIC_TEXT; |
| 1760 link_text.state = (1 << ui::AX_STATE_EDITABLE) | | 1767 link_text.AddState(ui::AX_STATE_EDITABLE); |
| 1761 (1 << ui::AX_STATE_FOCUSABLE) | (1 << ui::AX_STATE_LINKED); | 1768 link_text.AddState(ui::AX_STATE_FOCUSABLE); |
| 1769 link_text.AddState(ui::AX_STATE_LINKED); |
| 1762 link_text.SetName("lnk"); | 1770 link_text.SetName("lnk"); |
| 1763 link_text.AddIntAttribute(ui::AX_ATTR_TEXT_STYLE, | 1771 link_text.AddIntAttribute(ui::AX_ATTR_TEXT_STYLE, |
| 1764 ui::AX_TEXT_STYLE_UNDERLINE); | 1772 ui::AX_TEXT_STYLE_UNDERLINE); |
| 1765 | 1773 |
| 1766 // The name "lnk" is misspelled. | 1774 // The name "lnk" is misspelled. |
| 1767 std::vector<int32_t> marker_types; | 1775 std::vector<int32_t> marker_types; |
| 1768 marker_types.push_back(static_cast<int32_t>(ui::AX_MARKER_TYPE_SPELLING)); | 1776 marker_types.push_back(static_cast<int32_t>(ui::AX_MARKER_TYPE_SPELLING)); |
| 1769 std::vector<int32_t> marker_starts; | 1777 std::vector<int32_t> marker_starts; |
| 1770 marker_starts.push_back(0); | 1778 marker_starts.push_back(0); |
| 1771 std::vector<int32_t> marker_ends; | 1779 std::vector<int32_t> marker_ends; |
| 1772 marker_ends.push_back(3); | 1780 marker_ends.push_back(3); |
| 1773 link_text.AddIntListAttribute(ui::AX_ATTR_MARKER_TYPES, marker_types); | 1781 link_text.AddIntListAttribute(ui::AX_ATTR_MARKER_TYPES, marker_types); |
| 1774 link_text.AddIntListAttribute(ui::AX_ATTR_MARKER_STARTS, marker_starts); | 1782 link_text.AddIntListAttribute(ui::AX_ATTR_MARKER_STARTS, marker_starts); |
| 1775 link_text.AddIntListAttribute(ui::AX_ATTR_MARKER_ENDS, marker_ends); | 1783 link_text.AddIntListAttribute(ui::AX_ATTR_MARKER_ENDS, marker_ends); |
| 1776 | 1784 |
| 1777 ui::AXNodeData text_after; | 1785 ui::AXNodeData text_after; |
| 1778 text_after.id = 6; | 1786 text_after.id = 6; |
| 1779 text_after.role = ui::AX_ROLE_STATIC_TEXT; | 1787 text_after.role = ui::AX_ROLE_STATIC_TEXT; |
| 1780 text_after.state = (1 << ui::AX_STATE_EDITABLE); | 1788 text_after.AddState(ui::AX_STATE_EDITABLE); |
| 1781 text_after.SetName(" after."); | 1789 text_after.SetName(" after."); |
| 1782 // Leave text style as normal. | 1790 // Leave text style as normal. |
| 1783 | 1791 |
| 1784 root.child_ids.push_back(div_editable.id); | 1792 root.child_ids.push_back(div_editable.id); |
| 1785 div_editable.child_ids.push_back(text_before.id); | 1793 div_editable.child_ids.push_back(text_before.id); |
| 1786 div_editable.child_ids.push_back(link.id); | 1794 div_editable.child_ids.push_back(link.id); |
| 1787 div_editable.child_ids.push_back(text_after.id); | 1795 div_editable.child_ids.push_back(text_after.id); |
| 1788 link.child_ids.push_back(link_text.id); | 1796 link.child_ids.push_back(link_text.id); |
| 1789 | 1797 |
| 1790 ui::AXTreeUpdate update = MakeAXTreeUpdate(root, div_editable, text_before, | 1798 ui::AXTreeUpdate update = MakeAXTreeUpdate(root, div_editable, text_before, |
| (...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1961 // The word "helo" is misspelled. | 1969 // The word "helo" is misspelled. |
| 1962 std::string value2("Helo there."); | 1970 std::string value2("Helo there."); |
| 1963 | 1971 |
| 1964 LONG value1_length = static_cast<LONG>(value1.length()); | 1972 LONG value1_length = static_cast<LONG>(value1.length()); |
| 1965 LONG value2_length = static_cast<LONG>(value2.length()); | 1973 LONG value2_length = static_cast<LONG>(value2.length()); |
| 1966 LONG combo_box_value_length = value1_length + value2_length; | 1974 LONG combo_box_value_length = value1_length + value2_length; |
| 1967 | 1975 |
| 1968 ui::AXNodeData root; | 1976 ui::AXNodeData root; |
| 1969 root.id = 1; | 1977 root.id = 1; |
| 1970 root.role = ui::AX_ROLE_ROOT_WEB_AREA; | 1978 root.role = ui::AX_ROLE_ROOT_WEB_AREA; |
| 1971 root.state = (1 << ui::AX_STATE_READ_ONLY) | (1 << ui::AX_STATE_FOCUSABLE); | 1979 root.AddState(ui::AX_STATE_READ_ONLY); |
| 1980 root.AddState(ui::AX_STATE_FOCUSABLE); |
| 1972 | 1981 |
| 1973 ui::AXNodeData combo_box; | 1982 ui::AXNodeData combo_box; |
| 1974 combo_box.id = 2; | 1983 combo_box.id = 2; |
| 1975 combo_box.role = ui::AX_ROLE_COMBO_BOX; | 1984 combo_box.role = ui::AX_ROLE_COMBO_BOX; |
| 1976 combo_box.state = | 1985 combo_box.AddState(ui::AX_STATE_EDITABLE); |
| 1977 (1 << ui::AX_STATE_EDITABLE) | (1 << ui::AX_STATE_FOCUSABLE); | 1986 combo_box.AddState(ui::AX_STATE_FOCUSABLE); |
| 1978 combo_box.SetValue(value1 + value2); | 1987 combo_box.SetValue(value1 + value2); |
| 1979 | 1988 |
| 1980 ui::AXNodeData combo_box_div; | 1989 ui::AXNodeData combo_box_div; |
| 1981 combo_box_div.id = 3; | 1990 combo_box_div.id = 3; |
| 1982 combo_box_div.role = ui::AX_ROLE_DIV; | 1991 combo_box_div.role = ui::AX_ROLE_DIV; |
| 1983 combo_box_div.state = 1 << ui::AX_STATE_EDITABLE; | 1992 combo_box_div.AddState(ui::AX_STATE_EDITABLE); |
| 1984 | 1993 |
| 1985 ui::AXNodeData static_text1; | 1994 ui::AXNodeData static_text1; |
| 1986 static_text1.id = 4; | 1995 static_text1.id = 4; |
| 1987 static_text1.role = ui::AX_ROLE_STATIC_TEXT; | 1996 static_text1.role = ui::AX_ROLE_STATIC_TEXT; |
| 1988 static_text1.state = 1 << ui::AX_STATE_EDITABLE; | 1997 static_text1.AddState(ui::AX_STATE_EDITABLE); |
| 1989 static_text1.SetName(value1); | 1998 static_text1.SetName(value1); |
| 1990 | 1999 |
| 1991 ui::AXNodeData static_text2; | 2000 ui::AXNodeData static_text2; |
| 1992 static_text2.id = 5; | 2001 static_text2.id = 5; |
| 1993 static_text2.role = ui::AX_ROLE_STATIC_TEXT; | 2002 static_text2.role = ui::AX_ROLE_STATIC_TEXT; |
| 1994 static_text2.state = 1 << ui::AX_STATE_EDITABLE; | 2003 static_text2.AddState(ui::AX_STATE_EDITABLE); |
| 1995 static_text2.SetName(value2); | 2004 static_text2.SetName(value2); |
| 1996 | 2005 |
| 1997 std::vector<int32_t> marker_types; | 2006 std::vector<int32_t> marker_types; |
| 1998 marker_types.push_back(static_cast<int32_t>(ui::AX_MARKER_TYPE_SPELLING)); | 2007 marker_types.push_back(static_cast<int32_t>(ui::AX_MARKER_TYPE_SPELLING)); |
| 1999 std::vector<int32_t> marker_starts; | 2008 std::vector<int32_t> marker_starts; |
| 2000 marker_starts.push_back(0); | 2009 marker_starts.push_back(0); |
| 2001 std::vector<int32_t> marker_ends; | 2010 std::vector<int32_t> marker_ends; |
| 2002 marker_ends.push_back(4); | 2011 marker_ends.push_back(4); |
| 2003 static_text2.AddIntListAttribute(ui::AX_ATTR_MARKER_TYPES, marker_types); | 2012 static_text2.AddIntListAttribute(ui::AX_ATTR_MARKER_TYPES, marker_types); |
| 2004 static_text2.AddIntListAttribute(ui::AX_ATTR_MARKER_STARTS, marker_starts); | 2013 static_text2.AddIntListAttribute(ui::AX_ATTR_MARKER_STARTS, marker_starts); |
| (...skipping 483 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2488 std::vector<AXEventNotificationDetails> events = {event}; | 2497 std::vector<AXEventNotificationDetails> events = {event}; |
| 2489 manager->OnAccessibilityEvents(events); | 2498 manager->OnAccessibilityEvents(events); |
| 2490 | 2499 |
| 2491 EXPECT_HRESULT_SUCCEEDED(ax_child1->get_nRelations(&n_relations)); | 2500 EXPECT_HRESULT_SUCCEEDED(ax_child1->get_nRelations(&n_relations)); |
| 2492 EXPECT_EQ(2, n_relations); | 2501 EXPECT_EQ(2, n_relations); |
| 2493 EXPECT_HRESULT_SUCCEEDED(ax_child2->get_nRelations(&n_relations)); | 2502 EXPECT_HRESULT_SUCCEEDED(ax_child2->get_nRelations(&n_relations)); |
| 2494 EXPECT_EQ(2, n_relations); | 2503 EXPECT_EQ(2, n_relations); |
| 2495 } | 2504 } |
| 2496 | 2505 |
| 2497 } // namespace content | 2506 } // namespace content |
| OLD | NEW |