summaryrefslogtreecommitdiffstats
path: root/content/browser/accessibility
diff options
context:
space:
mode:
Diffstat (limited to 'content/browser/accessibility')
-rw-r--r--content/browser/accessibility/browser_accessibility_win.cc7
-rw-r--r--content/browser/accessibility/browser_accessibility_win_unittest.cc42
2 files changed, 45 insertions, 4 deletions
diff --git a/content/browser/accessibility/browser_accessibility_win.cc b/content/browser/accessibility/browser_accessibility_win.cc
index 40b0e56..a6173c2 100644
--- a/content/browser/accessibility/browser_accessibility_win.cc
+++ b/content/browser/accessibility/browser_accessibility_win.cc
@@ -696,10 +696,9 @@ STDMETHODIMP BrowserAccessibilityWin::get_attributes(BSTR* attributes) {
// The iaccessible2 attributes are a set of key-value pairs
// separated by semicolons, with a colon between the key and the value.
base::string16 str;
- for (unsigned int i = 0; i < ia2_attributes_.size(); ++i) {
- if (i != 0)
- str += L';';
- str += ia2_attributes_[i];
+ const std::vector<base::string16>& attributes_list = ia2_attributes();
+ for (unsigned int i = 0; i < attributes_list.size(); ++i) {
+ str += attributes_list[i] + L';';
}
if (str.empty())
diff --git a/content/browser/accessibility/browser_accessibility_win_unittest.cc b/content/browser/accessibility/browser_accessibility_win_unittest.cc
index ccda978..552ffcd 100644
--- a/content/browser/accessibility/browser_accessibility_win_unittest.cc
+++ b/content/browser/accessibility/browser_accessibility_win_unittest.cc
@@ -703,4 +703,46 @@ TEST_F(BrowserAccessibilityTest, EmptyDocHasUniqueIdWin) {
ASSERT_EQ(root, manager->GetFromUniqueIdWin(unique_id_win));
}
+TEST_F(BrowserAccessibilityTest, TestIA2Attributes) {
+ ui::AXNodeData button;
+ ui::AXNodeData checkbox;
+ checkbox.id = 2;
+ checkbox.SetName("Checkbox");
+ checkbox.role = ui::AX_ROLE_CHECK_BOX;
+ checkbox.state = 1 << ui::AX_STATE_CHECKED;
+
+ ui::AXNodeData root;
+ root.id = 1;
+ root.SetName("Document");
+ root.role = ui::AX_ROLE_ROOT_WEB_AREA;
+ root.state = 0;
+ root.child_ids.push_back(2);
+
+ CountedBrowserAccessibility::reset();
+ scoped_ptr<BrowserAccessibilityManager> manager(
+ BrowserAccessibilityManager::Create(
+ MakeAXTreeUpdate(root, checkbox),
+ nullptr, new CountedBrowserAccessibilityFactory()));
+ ASSERT_EQ(2, 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);
+
+ base::win::ScopedBstr attributes;
+ HRESULT hr = checkbox_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"checkable:true;", attributes_str);
+
+ manager.reset();
+ ASSERT_EQ(0, CountedBrowserAccessibility::num_instances());
+}
+
} // namespace content