| 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 <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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |