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

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

Issue 1397183002: Escapes backslash, colon, comma, equals and semicolon in IAccessible2 string attributes. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased with master. Created 5 years, 2 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
« no previous file with comments | « content/browser/accessibility/browser_accessibility_win.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "base/memory/scoped_ptr.h" 5 #include "base/memory/scoped_ptr.h"
6 #include "base/strings/utf_string_conversions.h" 6 #include "base/strings/utf_string_conversions.h"
7 #include "base/win/scoped_bstr.h" 7 #include "base/win/scoped_bstr.h"
8 #include "base/win/scoped_comptr.h" 8 #include "base/win/scoped_comptr.h"
9 #include "base/win/scoped_variant.h" 9 #include "base/win/scoped_variant.h"
10 #include "content/browser/accessibility/browser_accessibility_manager.h" 10 #include "content/browser/accessibility/browser_accessibility_manager.h"
(...skipping 752 matching lines...) Expand 10 before | Expand all | Expand 10 after
763 EXPECT_EQ(1 << ui::AX_STATE_BUSY | 763 EXPECT_EQ(1 << ui::AX_STATE_BUSY |
764 1 << ui::AX_STATE_READ_ONLY | 764 1 << ui::AX_STATE_READ_ONLY |
765 1 << ui::AX_STATE_ENABLED, 765 1 << ui::AX_STATE_ENABLED,
766 root->GetState()); 766 root->GetState());
767 767
768 LONG unique_id_win = root->ToBrowserAccessibilityWin()->unique_id_win(); 768 LONG unique_id_win = root->ToBrowserAccessibilityWin()->unique_id_win();
769 ASSERT_EQ(root, manager->GetFromUniqueIdWin(unique_id_win)); 769 ASSERT_EQ(root, manager->GetFromUniqueIdWin(unique_id_win));
770 } 770 }
771 771
772 TEST_F(BrowserAccessibilityTest, TestIA2Attributes) { 772 TEST_F(BrowserAccessibilityTest, TestIA2Attributes) {
773 ui::AXNodeData pseudo_before;
774 pseudo_before.id = 2;
775 pseudo_before.role = ui::AX_ROLE_DIV;
776 pseudo_before.AddStringAttribute(ui::AX_ATTR_HTML_TAG, "<pseudo:before>");
777 pseudo_before.AddStringAttribute(ui::AX_ATTR_DISPLAY, "none");
778
773 ui::AXNodeData checkbox; 779 ui::AXNodeData checkbox;
774 checkbox.id = 2; 780 checkbox.id = 3;
775 checkbox.SetName("Checkbox"); 781 checkbox.SetName("Checkbox");
776 checkbox.role = ui::AX_ROLE_CHECK_BOX; 782 checkbox.role = ui::AX_ROLE_CHECK_BOX;
777 checkbox.state = 1 << ui::AX_STATE_CHECKED; 783 checkbox.state = 1 << ui::AX_STATE_CHECKED;
778 784
779 ui::AXNodeData root; 785 ui::AXNodeData root;
780 root.id = 1; 786 root.id = 1;
781 root.SetName("Document"); 787 root.SetName("Document");
782 root.role = ui::AX_ROLE_ROOT_WEB_AREA; 788 root.role = ui::AX_ROLE_ROOT_WEB_AREA;
783 root.state = (1 << ui::AX_STATE_READ_ONLY) | (1 << ui::AX_STATE_FOCUSABLE); 789 root.state = (1 << ui::AX_STATE_READ_ONLY) | (1 << ui::AX_STATE_FOCUSABLE);
784 root.child_ids.push_back(2); 790 root.child_ids.push_back(2);
791 root.child_ids.push_back(3);
785 792
786 CountedBrowserAccessibility::reset(); 793 CountedBrowserAccessibility::reset();
787 scoped_ptr<BrowserAccessibilityManager> manager( 794 scoped_ptr<BrowserAccessibilityManager> manager(
788 BrowserAccessibilityManager::Create( 795 BrowserAccessibilityManager::Create(
789 MakeAXTreeUpdate(root, checkbox), 796 MakeAXTreeUpdate(root, pseudo_before, checkbox), nullptr,
790 nullptr, new CountedBrowserAccessibilityFactory())); 797 new CountedBrowserAccessibilityFactory()));
791 ASSERT_EQ(2, CountedBrowserAccessibility::num_instances()); 798 ASSERT_EQ(3, CountedBrowserAccessibility::num_instances());
792 799
793 ASSERT_NE(nullptr, manager->GetRoot()); 800 ASSERT_NE(nullptr, manager->GetRoot());
794 BrowserAccessibilityWin* root_accessible = 801 BrowserAccessibilityWin* root_accessible =
795 manager->GetRoot()->ToBrowserAccessibilityWin(); 802 manager->GetRoot()->ToBrowserAccessibilityWin();
796 ASSERT_NE(nullptr, root_accessible); 803 ASSERT_NE(nullptr, root_accessible);
797 ASSERT_EQ(1, root_accessible->PlatformChildCount()); 804 ASSERT_EQ(2, root_accessible->PlatformChildCount());
798 BrowserAccessibilityWin* checkbox_accessible = 805
799 root_accessible->PlatformGetChild(0)->ToBrowserAccessibilityWin(); 806 BrowserAccessibilityWin* pseudo_accessible =
800 ASSERT_NE(nullptr, checkbox_accessible); 807 root_accessible->PlatformGetChild(0)->ToBrowserAccessibilityWin();
808 ASSERT_NE(nullptr, pseudo_accessible);
801 809
802 base::win::ScopedBstr attributes; 810 base::win::ScopedBstr attributes;
803 HRESULT hr = checkbox_accessible->get_attributes(attributes.Receive()); 811 HRESULT hr = pseudo_accessible->get_attributes(attributes.Receive());
804 EXPECT_EQ(S_OK, hr); 812 EXPECT_EQ(S_OK, hr);
805 EXPECT_NE(nullptr, static_cast<BSTR>(attributes)); 813 EXPECT_NE(nullptr, static_cast<BSTR>(attributes));
806 std::wstring attributes_str(attributes, attributes.Length()); 814 std::wstring attributes_str(attributes, attributes.Length());
815 EXPECT_EQ(L"display:none;tag:<pseudo\\:before>;", attributes_str);
816
817 BrowserAccessibilityWin* checkbox_accessible =
818 root_accessible->PlatformGetChild(1)->ToBrowserAccessibilityWin();
819 ASSERT_NE(nullptr, checkbox_accessible);
820
821 attributes.Reset();
822 hr = checkbox_accessible->get_attributes(attributes.Receive());
823 EXPECT_EQ(S_OK, hr);
824 EXPECT_NE(nullptr, static_cast<BSTR>(attributes));
825 attributes_str = std::wstring(attributes, attributes.Length());
807 EXPECT_EQ(L"checkable:true;", attributes_str); 826 EXPECT_EQ(L"checkable:true;", attributes_str);
808 827
809 manager.reset(); 828 manager.reset();
810 ASSERT_EQ(0, CountedBrowserAccessibility::num_instances()); 829 ASSERT_EQ(0, CountedBrowserAccessibility::num_instances());
811 } 830 }
812 831
813 /** 832 /**
814 * Ensures that ui::AX_ATTR_TEXT_SEL_START/END attributes are correctly used to 833 * Ensures that ui::AX_ATTR_TEXT_SEL_START/END attributes are correctly used to
815 * determine caret position and text selection in simple form fields. 834 * determine caret position and text selection in simple form fields.
816 */ 835 */
(...skipping 416 matching lines...) Expand 10 before | Expand all | Expand 10 after
1233 EXPECT_EQ(child2_child1_accessible, 1252 EXPECT_EQ(child2_child1_accessible,
1234 child2_accessible->PlatformDeepestFirstChild()); 1253 child2_accessible->PlatformDeepestFirstChild());
1235 EXPECT_EQ(child2_child2_accessible, 1254 EXPECT_EQ(child2_child2_accessible,
1236 child2_accessible->PlatformDeepestLastChild()); 1255 child2_accessible->PlatformDeepestLastChild());
1237 EXPECT_EQ(nullptr, child2_child1_accessible->PlatformDeepestFirstChild()); 1256 EXPECT_EQ(nullptr, child2_child1_accessible->PlatformDeepestFirstChild());
1238 EXPECT_EQ(nullptr, child2_child1_accessible->PlatformDeepestLastChild()); 1257 EXPECT_EQ(nullptr, child2_child1_accessible->PlatformDeepestLastChild());
1239 EXPECT_EQ(nullptr, child2_child2_accessible->PlatformDeepestFirstChild()); 1258 EXPECT_EQ(nullptr, child2_child2_accessible->PlatformDeepestFirstChild());
1240 EXPECT_EQ(nullptr, child2_child2_accessible->PlatformDeepestLastChild()); 1259 EXPECT_EQ(nullptr, child2_child2_accessible->PlatformDeepestLastChild());
1241 } 1260 }
1242 1261
1262 TEST_F(BrowserAccessibilityTest, TestSanitizeStringAttributeForIA2) {
1263 base::string16 input(L"\\:=,;");
1264 base::string16 output;
1265 BrowserAccessibilityWin::SanitizeStringAttributeForIA2(input, &output);
1266 EXPECT_EQ(L"\\\\\\:\\=\\,\\;", output);
1267 }
1268
1243 } // namespace content 1269 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/accessibility/browser_accessibility_win.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698