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

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

Issue 2217363002: Use relative bounding boxes throughout Chrome accessibility (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address feedback from aboxhall Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (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 <stddef.h> 5 #include <stddef.h>
6 #include <stdint.h> 6 #include <stdint.h>
7 7
8 #include "base/strings/string16.h" 8 #include "base/strings/string16.h"
9 #include "base/strings/utf_string_conversions.h" 9 #include "base/strings/utf_string_conversions.h"
10 #include "build/build_config.h" 10 #include "build/build_config.h"
(...skipping 676 matching lines...) Expand 10 before | Expand all | Expand 10 after
687 MakeAXTreeUpdate(root, static_text, inline_text1, inline_text2), 687 MakeAXTreeUpdate(root, static_text, inline_text1, inline_text2),
688 nullptr, new CountedBrowserAccessibilityFactory())); 688 nullptr, new CountedBrowserAccessibilityFactory()));
689 689
690 BrowserAccessibility* root_accessible = manager->GetRoot(); 690 BrowserAccessibility* root_accessible = manager->GetRoot();
691 ASSERT_NE(nullptr, root_accessible); 691 ASSERT_NE(nullptr, root_accessible);
692 BrowserAccessibility* static_text_accessible = 692 BrowserAccessibility* static_text_accessible =
693 root_accessible->PlatformGetChild(0); 693 root_accessible->PlatformGetChild(0);
694 ASSERT_NE(nullptr, static_text_accessible); 694 ASSERT_NE(nullptr, static_text_accessible);
695 695
696 EXPECT_EQ(gfx::Rect(100, 100, 6, 9).ToString(), 696 EXPECT_EQ(gfx::Rect(100, 100, 6, 9).ToString(),
697 static_text_accessible->GetLocalBoundsForRange(0, 1).ToString()); 697 static_text_accessible->GetPageBoundsForRange(0, 1).ToString());
698 698
699 EXPECT_EQ(gfx::Rect(100, 100, 26, 9).ToString(), 699 EXPECT_EQ(gfx::Rect(100, 100, 26, 9).ToString(),
700 static_text_accessible->GetLocalBoundsForRange(0, 5).ToString()); 700 static_text_accessible->GetPageBoundsForRange(0, 5).ToString());
701 701
702 EXPECT_EQ(gfx::Rect(100, 109, 5, 9).ToString(), 702 EXPECT_EQ(gfx::Rect(100, 109, 5, 9).ToString(),
703 static_text_accessible->GetLocalBoundsForRange(7, 1).ToString()); 703 static_text_accessible->GetPageBoundsForRange(7, 1).ToString());
704 704
705 EXPECT_EQ(gfx::Rect(100, 109, 25, 9).ToString(), 705 EXPECT_EQ(gfx::Rect(100, 109, 25, 9).ToString(),
706 static_text_accessible->GetLocalBoundsForRange(7, 5).ToString()); 706 static_text_accessible->GetPageBoundsForRange(7, 5).ToString());
707 707
708 EXPECT_EQ(gfx::Rect(100, 100, 29, 18).ToString(), 708 EXPECT_EQ(gfx::Rect(100, 100, 29, 18).ToString(),
709 static_text_accessible->GetLocalBoundsForRange(5, 3).ToString()); 709 static_text_accessible->GetPageBoundsForRange(5, 3).ToString());
710 710
711 EXPECT_EQ(gfx::Rect(100, 100, 29, 18).ToString(), 711 EXPECT_EQ(gfx::Rect(100, 100, 29, 18).ToString(),
712 static_text_accessible->GetLocalBoundsForRange(0, 13).ToString()); 712 static_text_accessible->GetPageBoundsForRange(0, 13).ToString());
713 713
714 // Note that each child in the parent element is represented by a single 714 // Note that each child in the parent element is represented by a single
715 // embedded object character and not by its text. 715 // embedded object character and not by its text.
716 // TODO(nektar): Investigate failure on Linux. 716 // TODO(nektar): Investigate failure on Linux.
717 EXPECT_EQ(gfx::Rect(100, 100, 29, 18).ToString(), 717 EXPECT_EQ(gfx::Rect(100, 100, 29, 18).ToString(),
718 root_accessible->GetLocalBoundsForRange(0, 13).ToString()); 718 root_accessible->GetPageBoundsForRange(0, 13).ToString());
719 } 719 }
720 720
721 TEST(BrowserAccessibilityManagerTest, BoundsForRangeMultiElement) { 721 TEST(BrowserAccessibilityManagerTest, BoundsForRangeMultiElement) {
722 ui::AXNodeData root; 722 ui::AXNodeData root;
723 root.id = 1; 723 root.id = 1;
724 root.role = ui::AX_ROLE_ROOT_WEB_AREA; 724 root.role = ui::AX_ROLE_ROOT_WEB_AREA;
725 725
726 ui::AXNodeData static_text; 726 ui::AXNodeData static_text;
727 static_text.id = 2; 727 static_text.id = 2;
728 static_text.SetName("ABC"); 728 static_text.SetName("ABC");
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
770 ASSERT_NE(nullptr, root_accessible); 770 ASSERT_NE(nullptr, root_accessible);
771 BrowserAccessibility* static_text_accessible = 771 BrowserAccessibility* static_text_accessible =
772 root_accessible->PlatformGetChild(0); 772 root_accessible->PlatformGetChild(0);
773 ASSERT_NE(nullptr, static_text_accessible); 773 ASSERT_NE(nullptr, static_text_accessible);
774 BrowserAccessibility* static_text_accessible2 = 774 BrowserAccessibility* static_text_accessible2 =
775 root_accessible->PlatformGetChild(1); 775 root_accessible->PlatformGetChild(1);
776 ASSERT_NE(nullptr, static_text_accessible); 776 ASSERT_NE(nullptr, static_text_accessible);
777 777
778 // The first line. 778 // The first line.
779 EXPECT_EQ(gfx::Rect(0, 20, 33, 9).ToString(), 779 EXPECT_EQ(gfx::Rect(0, 20, 33, 9).ToString(),
780 manager->GetLocalBoundsForRange( 780 manager->GetPageBoundsForRange(
781 *static_text_accessible, 0, 781 *static_text_accessible, 0,
782 *static_text_accessible, 3).ToString()); 782 *static_text_accessible, 3).ToString());
783 783
784 // Part of the first line. 784 // Part of the first line.
785 EXPECT_EQ(gfx::Rect(0, 20, 21, 9).ToString(), 785 EXPECT_EQ(gfx::Rect(0, 20, 21, 9).ToString(),
786 manager->GetLocalBoundsForRange( 786 manager->GetPageBoundsForRange(
787 *static_text_accessible, 0, 787 *static_text_accessible, 0,
788 *static_text_accessible, 2).ToString()); 788 *static_text_accessible, 2).ToString());
789 789
790 // Part of the first line. 790 // Part of the first line.
791 EXPECT_EQ(gfx::Rect(10, 20, 23, 9).ToString(), 791 EXPECT_EQ(gfx::Rect(10, 20, 23, 9).ToString(),
792 manager->GetLocalBoundsForRange( 792 manager->GetPageBoundsForRange(
793 *static_text_accessible, 1, 793 *static_text_accessible, 1,
794 *static_text_accessible, 3).ToString()); 794 *static_text_accessible, 3).ToString());
795 795
796 // The second line. 796 // The second line.
797 EXPECT_EQ(gfx::Rect(10, 40, 33, 9).ToString(), 797 EXPECT_EQ(gfx::Rect(10, 40, 33, 9).ToString(),
798 manager->GetLocalBoundsForRange( 798 manager->GetPageBoundsForRange(
799 *static_text_accessible2, 0, 799 *static_text_accessible2, 0,
800 *static_text_accessible2, 3).ToString()); 800 *static_text_accessible2, 3).ToString());
801 801
802 // All of both lines. 802 // All of both lines.
803 EXPECT_EQ(gfx::Rect(0, 20, 43, 29).ToString(), 803 EXPECT_EQ(gfx::Rect(0, 20, 43, 29).ToString(),
804 manager->GetLocalBoundsForRange( 804 manager->GetPageBoundsForRange(
805 *static_text_accessible, 0, 805 *static_text_accessible, 0,
806 *static_text_accessible2, 3).ToString()); 806 *static_text_accessible2, 3).ToString());
807 807
808 // Part of both lines. 808 // Part of both lines.
809 EXPECT_EQ(gfx::Rect(10, 20, 23, 29).ToString(), 809 EXPECT_EQ(gfx::Rect(10, 20, 23, 29).ToString(),
810 manager->GetLocalBoundsForRange( 810 manager->GetPageBoundsForRange(
811 *static_text_accessible, 2, 811 *static_text_accessible, 2,
812 *static_text_accessible2, 1).ToString()); 812 *static_text_accessible2, 1).ToString());
813 813
814 // Part of both lines in reverse order. 814 // Part of both lines in reverse order.
815 EXPECT_EQ(gfx::Rect(10, 20, 23, 29).ToString(), 815 EXPECT_EQ(gfx::Rect(10, 20, 23, 29).ToString(),
816 manager->GetLocalBoundsForRange( 816 manager->GetPageBoundsForRange(
817 *static_text_accessible2, 1, 817 *static_text_accessible2, 1,
818 *static_text_accessible, 2).ToString()); 818 *static_text_accessible, 2).ToString());
819 } 819 }
820 820
821 TEST(BrowserAccessibilityManagerTest, BoundsForRangeBiDi) { 821 TEST(BrowserAccessibilityManagerTest, BoundsForRangeBiDi) {
822 // In this example, we assume that the string "123abc" is rendered with 822 // In this example, we assume that the string "123abc" is rendered with
823 // "123" going left-to-right and "abc" going right-to-left. In other 823 // "123" going left-to-right and "abc" going right-to-left. In other
824 // words, on-screen it would look like "123cba". This is possible to 824 // words, on-screen it would look like "123cba". This is possible to
825 // achieve if the source string had unicode control characters 825 // achieve if the source string had unicode control characters
826 // to switch directions. This test doesn't worry about how, though - it just 826 // to switch directions. This test doesn't worry about how, though - it just
827 // tests that if something like that were to occur, GetLocalBoundsForRange 827 // tests that if something like that were to occur, GetPageBoundsForRange
828 // returns the correct bounds for different ranges. 828 // returns the correct bounds for different ranges.
829 829
830 ui::AXNodeData root; 830 ui::AXNodeData root;
831 root.id = 1; 831 root.id = 1;
832 root.role = ui::AX_ROLE_ROOT_WEB_AREA; 832 root.role = ui::AX_ROLE_ROOT_WEB_AREA;
833 833
834 ui::AXNodeData static_text; 834 ui::AXNodeData static_text;
835 static_text.id = 2; 835 static_text.id = 2;
836 static_text.SetName("123abc"); 836 static_text.SetName("123abc");
837 static_text.role = ui::AX_ROLE_STATIC_TEXT; 837 static_text.role = ui::AX_ROLE_STATIC_TEXT;
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
873 MakeAXTreeUpdate(root, static_text, inline_text1, inline_text2), 873 MakeAXTreeUpdate(root, static_text, inline_text1, inline_text2),
874 nullptr, new CountedBrowserAccessibilityFactory())); 874 nullptr, new CountedBrowserAccessibilityFactory()));
875 875
876 BrowserAccessibility* root_accessible = manager->GetRoot(); 876 BrowserAccessibility* root_accessible = manager->GetRoot();
877 ASSERT_NE(nullptr, root_accessible); 877 ASSERT_NE(nullptr, root_accessible);
878 BrowserAccessibility* static_text_accessible = 878 BrowserAccessibility* static_text_accessible =
879 root_accessible->PlatformGetChild(0); 879 root_accessible->PlatformGetChild(0);
880 ASSERT_NE(nullptr, static_text_accessible); 880 ASSERT_NE(nullptr, static_text_accessible);
881 881
882 EXPECT_EQ(gfx::Rect(100, 100, 60, 20).ToString(), 882 EXPECT_EQ(gfx::Rect(100, 100, 60, 20).ToString(),
883 static_text_accessible->GetLocalBoundsForRange(0, 6).ToString()); 883 static_text_accessible->GetPageBoundsForRange(0, 6).ToString());
884 884
885 EXPECT_EQ(gfx::Rect(100, 100, 10, 20).ToString(), 885 EXPECT_EQ(gfx::Rect(100, 100, 10, 20).ToString(),
886 static_text_accessible->GetLocalBoundsForRange(0, 1).ToString()); 886 static_text_accessible->GetPageBoundsForRange(0, 1).ToString());
887 887
888 EXPECT_EQ(gfx::Rect(100, 100, 30, 20).ToString(), 888 EXPECT_EQ(gfx::Rect(100, 100, 30, 20).ToString(),
889 static_text_accessible->GetLocalBoundsForRange(0, 3).ToString()); 889 static_text_accessible->GetPageBoundsForRange(0, 3).ToString());
890 890
891 EXPECT_EQ(gfx::Rect(150, 100, 10, 20).ToString(), 891 EXPECT_EQ(gfx::Rect(150, 100, 10, 20).ToString(),
892 static_text_accessible->GetLocalBoundsForRange(3, 1).ToString()); 892 static_text_accessible->GetPageBoundsForRange(3, 1).ToString());
893 893
894 EXPECT_EQ(gfx::Rect(130, 100, 30, 20).ToString(), 894 EXPECT_EQ(gfx::Rect(130, 100, 30, 20).ToString(),
895 static_text_accessible->GetLocalBoundsForRange(3, 3).ToString()); 895 static_text_accessible->GetPageBoundsForRange(3, 3).ToString());
896 896
897 // This range is only two characters, but because of the direction switch 897 // This range is only two characters, but because of the direction switch
898 // the bounds are as wide as four characters. 898 // the bounds are as wide as four characters.
899 EXPECT_EQ(gfx::Rect(120, 100, 40, 20).ToString(), 899 EXPECT_EQ(gfx::Rect(120, 100, 40, 20).ToString(),
900 static_text_accessible->GetLocalBoundsForRange(2, 2).ToString()); 900 static_text_accessible->GetPageBoundsForRange(2, 2).ToString());
901 } 901 }
902 902
903 TEST(BrowserAccessibilityManagerTest, BoundsForRangeScrolledWindow) { 903 TEST(BrowserAccessibilityManagerTest, BoundsForRangeScrolledWindow) {
904 ui::AXNodeData root; 904 ui::AXNodeData root;
905 root.id = 1; 905 root.id = 1;
906 root.role = ui::AX_ROLE_ROOT_WEB_AREA; 906 root.role = ui::AX_ROLE_ROOT_WEB_AREA;
907 root.AddIntAttribute(ui::AX_ATTR_SCROLL_X, 25); 907 root.AddIntAttribute(ui::AX_ATTR_SCROLL_X, 25);
908 root.AddIntAttribute(ui::AX_ATTR_SCROLL_Y, 50); 908 root.AddIntAttribute(ui::AX_ATTR_SCROLL_Y, 50);
909 909
910 ui::AXNodeData static_text; 910 ui::AXNodeData static_text;
(...skipping 24 matching lines...) Expand all
935 new CountedBrowserAccessibilityFactory())); 935 new CountedBrowserAccessibilityFactory()));
936 936
937 BrowserAccessibility* root_accessible = manager->GetRoot(); 937 BrowserAccessibility* root_accessible = manager->GetRoot();
938 ASSERT_NE(nullptr, root_accessible); 938 ASSERT_NE(nullptr, root_accessible);
939 BrowserAccessibility* static_text_accessible = 939 BrowserAccessibility* static_text_accessible =
940 root_accessible->PlatformGetChild(0); 940 root_accessible->PlatformGetChild(0);
941 ASSERT_NE(nullptr, static_text_accessible); 941 ASSERT_NE(nullptr, static_text_accessible);
942 942
943 if (manager->UseRootScrollOffsetsWhenComputingBounds()) { 943 if (manager->UseRootScrollOffsetsWhenComputingBounds()) {
944 EXPECT_EQ(gfx::Rect(75, 50, 16, 9).ToString(), 944 EXPECT_EQ(gfx::Rect(75, 50, 16, 9).ToString(),
945 static_text_accessible->GetLocalBoundsForRange(0, 3).ToString()); 945 static_text_accessible->GetPageBoundsForRange(0, 3).ToString());
946 } else { 946 } else {
947 EXPECT_EQ(gfx::Rect(100, 100, 16, 9).ToString(), 947 EXPECT_EQ(gfx::Rect(100, 100, 16, 9).ToString(),
948 static_text_accessible->GetLocalBoundsForRange(0, 3).ToString()); 948 static_text_accessible->GetPageBoundsForRange(0, 3).ToString());
949 } 949 }
950 } 950 }
951 951
952 TEST(BrowserAccessibilityManagerTest, BoundsForRangeOnParentElement) { 952 TEST(BrowserAccessibilityManagerTest, BoundsForRangeOnParentElement) {
953 ui::AXNodeData root; 953 ui::AXNodeData root;
954 root.id = 1; 954 root.id = 1;
955 root.role = ui::AX_ROLE_ROOT_WEB_AREA; 955 root.role = ui::AX_ROLE_ROOT_WEB_AREA;
956 root.child_ids.push_back(2); 956 root.child_ids.push_back(2);
957 957
958 ui::AXNodeData div; 958 ui::AXNodeData div;
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
1013 BrowserAccessibilityManager::Create( 1013 BrowserAccessibilityManager::Create(
1014 MakeAXTreeUpdate(root, div, static_text1, img, static_text2, 1014 MakeAXTreeUpdate(root, div, static_text1, img, static_text2,
1015 inline_text1, inline_text2), 1015 inline_text1, inline_text2),
1016 nullptr, new CountedBrowserAccessibilityFactory())); 1016 nullptr, new CountedBrowserAccessibilityFactory()));
1017 BrowserAccessibility* root_accessible = manager->GetRoot(); 1017 BrowserAccessibility* root_accessible = manager->GetRoot();
1018 ASSERT_NE(nullptr, root_accessible); 1018 ASSERT_NE(nullptr, root_accessible);
1019 BrowserAccessibility* div_accessible = root_accessible->PlatformGetChild(0); 1019 BrowserAccessibility* div_accessible = root_accessible->PlatformGetChild(0);
1020 ASSERT_NE(nullptr, div_accessible); 1020 ASSERT_NE(nullptr, div_accessible);
1021 1021
1022 EXPECT_EQ(gfx::Rect(100, 100, 20, 20).ToString(), 1022 EXPECT_EQ(gfx::Rect(100, 100, 20, 20).ToString(),
1023 div_accessible->GetLocalBoundsForRange(0, 1).ToString()); 1023 div_accessible->GetPageBoundsForRange(0, 1).ToString());
1024 1024
1025 EXPECT_EQ(gfx::Rect(100, 100, 40, 20).ToString(), 1025 EXPECT_EQ(gfx::Rect(100, 100, 40, 20).ToString(),
1026 div_accessible->GetLocalBoundsForRange(0, 2).ToString()); 1026 div_accessible->GetPageBoundsForRange(0, 2).ToString());
1027 1027
1028 EXPECT_EQ(gfx::Rect(100, 100, 80, 20).ToString(), 1028 EXPECT_EQ(gfx::Rect(100, 100, 80, 20).ToString(),
1029 div_accessible->GetLocalBoundsForRange(0, 4).ToString()); 1029 div_accessible->GetPageBoundsForRange(0, 4).ToString());
1030 1030
1031 EXPECT_EQ(gfx::Rect(120, 100, 60, 20).ToString(), 1031 EXPECT_EQ(gfx::Rect(120, 100, 60, 20).ToString(),
1032 div_accessible->GetLocalBoundsForRange(1, 3).ToString()); 1032 div_accessible->GetPageBoundsForRange(1, 3).ToString());
1033 1033
1034 EXPECT_EQ(gfx::Rect(120, 100, 80, 20).ToString(), 1034 EXPECT_EQ(gfx::Rect(120, 100, 80, 20).ToString(),
1035 div_accessible->GetLocalBoundsForRange(1, 4).ToString()); 1035 div_accessible->GetPageBoundsForRange(1, 4).ToString());
1036 1036
1037 EXPECT_EQ(gfx::Rect(100, 100, 100, 20).ToString(), 1037 EXPECT_EQ(gfx::Rect(100, 100, 100, 20).ToString(),
1038 div_accessible->GetLocalBoundsForRange(0, 5).ToString()); 1038 div_accessible->GetPageBoundsForRange(0, 5).ToString());
1039 } 1039 }
1040 1040
1041 TEST(BrowserAccessibilityManagerTest, TestNextPreviousInTreeOrder) { 1041 TEST(BrowserAccessibilityManagerTest, TestNextPreviousInTreeOrder) {
1042 ui::AXNodeData root; 1042 ui::AXNodeData root;
1043 root.id = 1; 1043 root.id = 1;
1044 root.role = ui::AX_ROLE_ROOT_WEB_AREA; 1044 root.role = ui::AX_ROLE_ROOT_WEB_AREA;
1045 1045
1046 ui::AXNodeData node2; 1046 ui::AXNodeData node2;
1047 node2.id = 2; 1047 node2.id = 2;
1048 root.child_ids.push_back(2); 1048 root.child_ids.push_back(2);
(...skipping 618 matching lines...) Expand 10 before | Expand all | Expand 10 after
1667 4, ui::FORWARDS_DIRECTION, ui::AX_TEXT_AFFINITY_DOWNSTREAM)); 1667 4, ui::FORWARDS_DIRECTION, ui::AX_TEXT_AFFINITY_DOWNSTREAM));
1668 1668
1669 // If the affinity is upstream, check that we get the second line. 1669 // If the affinity is upstream, check that we get the second line.
1670 ASSERT_EQ(0, static_text_accessible->GetLineStartBoundary( 1670 ASSERT_EQ(0, static_text_accessible->GetLineStartBoundary(
1671 4, ui::BACKWARDS_DIRECTION, ui::AX_TEXT_AFFINITY_UPSTREAM)); 1671 4, ui::BACKWARDS_DIRECTION, ui::AX_TEXT_AFFINITY_UPSTREAM));
1672 ASSERT_EQ(4, static_text_accessible->GetLineStartBoundary( 1672 ASSERT_EQ(4, static_text_accessible->GetLineStartBoundary(
1673 4, ui::FORWARDS_DIRECTION, ui::AX_TEXT_AFFINITY_UPSTREAM)); 1673 4, ui::FORWARDS_DIRECTION, ui::AX_TEXT_AFFINITY_UPSTREAM));
1674 } 1674 }
1675 1675
1676 } // namespace content 1676 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698