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

Unified 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/browser/accessibility/browser_accessibility_win.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/accessibility/browser_accessibility_win_unittest.cc
diff --git a/content/browser/accessibility/browser_accessibility_win_unittest.cc b/content/browser/accessibility/browser_accessibility_win_unittest.cc
index e7acf8d4b490cae0c1ed602845d015b3a95692c7..77d0cfc12d575006191744b34edbda229613d61f 100644
--- a/content/browser/accessibility/browser_accessibility_win_unittest.cc
+++ b/content/browser/accessibility/browser_accessibility_win_unittest.cc
@@ -770,8 +770,14 @@ TEST_F(BrowserAccessibilityTest, EmptyDocHasUniqueIdWin) {
}
TEST_F(BrowserAccessibilityTest, TestIA2Attributes) {
+ ui::AXNodeData pseudo_before;
+ pseudo_before.id = 2;
+ pseudo_before.role = ui::AX_ROLE_DIV;
+ pseudo_before.AddStringAttribute(ui::AX_ATTR_HTML_TAG, "<pseudo:before>");
+ pseudo_before.AddStringAttribute(ui::AX_ATTR_DISPLAY, "none");
+
ui::AXNodeData checkbox;
- checkbox.id = 2;
+ checkbox.id = 3;
checkbox.SetName("Checkbox");
checkbox.role = ui::AX_ROLE_CHECK_BOX;
checkbox.state = 1 << ui::AX_STATE_CHECKED;
@@ -782,28 +788,41 @@ TEST_F(BrowserAccessibilityTest, TestIA2Attributes) {
root.role = ui::AX_ROLE_ROOT_WEB_AREA;
root.state = (1 << ui::AX_STATE_READ_ONLY) | (1 << ui::AX_STATE_FOCUSABLE);
root.child_ids.push_back(2);
+ root.child_ids.push_back(3);
CountedBrowserAccessibility::reset();
scoped_ptr<BrowserAccessibilityManager> manager(
BrowserAccessibilityManager::Create(
- MakeAXTreeUpdate(root, checkbox),
- nullptr, new CountedBrowserAccessibilityFactory()));
- ASSERT_EQ(2, CountedBrowserAccessibility::num_instances());
+ MakeAXTreeUpdate(root, pseudo_before, checkbox), nullptr,
+ new CountedBrowserAccessibilityFactory()));
+ ASSERT_EQ(3, CountedBrowserAccessibility::num_instances());
ASSERT_NE(nullptr, manager->GetRoot());
BrowserAccessibilityWin* root_accessible =
manager->GetRoot()->ToBrowserAccessibilityWin();
ASSERT_NE(nullptr, root_accessible);
- ASSERT_EQ(1, root_accessible->PlatformChildCount());
- BrowserAccessibilityWin* checkbox_accessible =
- root_accessible->PlatformGetChild(0)->ToBrowserAccessibilityWin();
- ASSERT_NE(nullptr, checkbox_accessible);
+ ASSERT_EQ(2, root_accessible->PlatformChildCount());
+
+ BrowserAccessibilityWin* pseudo_accessible =
+ root_accessible->PlatformGetChild(0)->ToBrowserAccessibilityWin();
+ ASSERT_NE(nullptr, pseudo_accessible);
base::win::ScopedBstr attributes;
- HRESULT hr = checkbox_accessible->get_attributes(attributes.Receive());
+ HRESULT hr = pseudo_accessible->get_attributes(attributes.Receive());
EXPECT_EQ(S_OK, hr);
EXPECT_NE(nullptr, static_cast<BSTR>(attributes));
std::wstring attributes_str(attributes, attributes.Length());
+ EXPECT_EQ(L"display:none;tag:<pseudo\\:before>;", attributes_str);
+
+ BrowserAccessibilityWin* checkbox_accessible =
+ root_accessible->PlatformGetChild(1)->ToBrowserAccessibilityWin();
+ ASSERT_NE(nullptr, checkbox_accessible);
+
+ attributes.Reset();
+ hr = checkbox_accessible->get_attributes(attributes.Receive());
+ EXPECT_EQ(S_OK, hr);
+ EXPECT_NE(nullptr, static_cast<BSTR>(attributes));
+ attributes_str = std::wstring(attributes, attributes.Length());
EXPECT_EQ(L"checkable:true;", attributes_str);
manager.reset();
@@ -1240,4 +1259,11 @@ TEST_F(BrowserAccessibilityTest, TestPlatformDeepestFirstLastChild) {
EXPECT_EQ(nullptr, child2_child2_accessible->PlatformDeepestLastChild());
}
+TEST_F(BrowserAccessibilityTest, TestSanitizeStringAttributeForIA2) {
+ base::string16 input(L"\\:=,;");
+ base::string16 output;
+ BrowserAccessibilityWin::SanitizeStringAttributeForIA2(input, &output);
+ EXPECT_EQ(L"\\\\\\:\\=\\,\\;", output);
+}
+
} // namespace content
« 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