browser_views_accessibility_browsertest.cc revision 731df977c0511bca2206b5f333555b1205ff1f43
1c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Copyright (c) 2010 The Chromium Authors. All rights reserved.
2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file.
4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include <oleacc.h>
6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
7c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "app/l10n_util.h"
8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/scoped_comptr_win.h"
93345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#include "base/utf_string_conversions.h"
10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/browser.h"
11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/browser_window.h"
12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/view_ids.h"
13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/views/bookmark_bar_view.h"
14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/views/frame/browser_view.h"
15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/views/toolbar_view.h"
16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/common/url_constants.h"
17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/test/in_process_browser_test.h"
18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/test/ui_test_utils.h"
19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "grit/chromium_strings.h"
20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "grit/generated_resources.h"
21731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#include "views/accessibility/view_accessibility.h"
22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "views/widget/root_view.h"
23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "views/widget/widget_win.h"
24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "views/window/window.h"
25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace {
27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
28c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochVARIANT id_self = {VT_I4, CHILDID_SELF};
29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Dummy class to force creation of ATL module, needed by COM to instantiate
31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// ViewAccessibility.
32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass TestAtlModule : public CAtlDllModuleT< TestAtlModule > {};
33c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTestAtlModule test_atl_module_;
34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass BrowserViewsAccessibilityTest : public InProcessBrowserTest {
36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public:
37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  BrowserViewsAccessibilityTest() {
38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    ::CoInitialize(NULL);
39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  }
40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ~BrowserViewsAccessibilityTest() {
42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    ::CoUninitialize();
43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  }
44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Retrieves an instance of BrowserWindowTesting
46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  BrowserWindowTesting* GetBrowserWindowTesting() {
47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    BrowserWindow* browser_window = browser()->window();
48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    if (!browser_window)
50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      return NULL;
51c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
52c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    return browser_window->GetBrowserWindowTesting();
53c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  }
54c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
55c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Retrieve an instance of BrowserView
56c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  BrowserView* GetBrowserView() {
57c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    return BrowserView::GetBrowserViewForNativeWindow(
58c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch               browser()->window()->GetNativeHandle());
59c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  }
60c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
61c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Retrieves and initializes an instance of ToolbarView.
62c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ToolbarView* GetToolbarView() {
63c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    BrowserWindowTesting* browser_window_testing = GetBrowserWindowTesting();
64c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
65c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    if (!browser_window_testing)
66c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      return NULL;
67c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
68c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    return browser_window_testing->GetToolbarView();
69c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  }
70c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
71c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Retrieves and initializes an instance of BookmarkBarView.
72c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  BookmarkBarView* GetBookmarkBarView() {
73c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    BrowserWindowTesting* browser_window_testing = GetBrowserWindowTesting();
74c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
75c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    if (!browser_window_testing)
76c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      return NULL;
77c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
78c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    return browser_window_testing->GetBookmarkBarView();
79c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  }
80c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
81c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Retrieves and verifies the accessibility object for the given View.
82c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  void TestViewAccessibilityObject(views::View* view, std::wstring name,
83c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                   int32 role) {
84c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    ASSERT_TRUE(NULL != view);
85c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
86731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick    TestAccessibilityInfo(
87731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick        ViewAccessibility::GetAccessibleForView(view), name, role);
88c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  }
89c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
90c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
91c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Verifies MSAA Name and Role properties of the given IAccessible.
92c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  void TestAccessibilityInfo(IAccessible* acc_obj, std::wstring name,
93c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                             int32 role) {
94c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    // Verify MSAA Name property.
95c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    BSTR acc_name;
96c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
97c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    HRESULT hr = acc_obj->get_accName(id_self, &acc_name);
98c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    ASSERT_EQ(S_OK, hr);
99c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    EXPECT_STREQ(acc_name, name.c_str());
100c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
101c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    // Verify MSAA Role property.
102c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    VARIANT acc_role;
103c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    ::VariantInit(&acc_role);
104c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
105c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    hr = acc_obj->get_accRole(id_self, &acc_role);
106c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    ASSERT_EQ(S_OK, hr);
107c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    EXPECT_EQ(VT_I4, acc_role.vt);
108c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    EXPECT_EQ(role, acc_role.lVal);
109c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
110c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    ::VariantClear(&acc_role);
111c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    ::SysFreeString(acc_name);
112c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  }
113c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch};
114c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
115c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Retrieve accessibility object for main window and verify accessibility info.
116c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochIN_PROC_BROWSER_TEST_F(BrowserViewsAccessibilityTest,
117c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                       TestChromeWindowAccObj) {
118c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  BrowserWindow* browser_window = browser()->window();
119c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ASSERT_TRUE(NULL != browser_window);
120c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
121c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  HWND hwnd = browser_window->GetNativeHandle();
122c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ASSERT_TRUE(NULL != hwnd);
123c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
124c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Get accessibility object.
125c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ScopedComPtr<IAccessible> acc_obj;
126c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  HRESULT hr = ::AccessibleObjectFromWindow(hwnd, OBJID_WINDOW, IID_IAccessible,
127c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                            reinterpret_cast<void**>(&acc_obj));
128c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ASSERT_EQ(S_OK, hr);
129c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ASSERT_TRUE(NULL != acc_obj);
130c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
131c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ui_test_utils::NavigateToURL(browser(), GURL(chrome::kAboutBlankURL));
132c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  std::wstring title =
133c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      l10n_util::GetStringF(IDS_BROWSER_WINDOW_TITLE_FORMAT,
134c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      ASCIIToWide(chrome::kAboutBlankURL));
135c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  TestAccessibilityInfo(acc_obj, title, ROLE_SYSTEM_WINDOW);
136c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
137c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
138c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Retrieve accessibility object for non client view and verify accessibility
139c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// info.
140c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochIN_PROC_BROWSER_TEST_F(BrowserViewsAccessibilityTest, TestNonClientViewAccObj) {
141c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  views::View* non_client_view =
142c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  GetBrowserView()->GetWindow()->GetNonClientView();
143c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
144c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  TestViewAccessibilityObject(non_client_view,
145c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      l10n_util::GetString(IDS_PRODUCT_NAME),
146c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      ROLE_SYSTEM_WINDOW);
147c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
148c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
149c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Retrieve accessibility object for browser root view and verify
150c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// accessibility info.
151c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochIN_PROC_BROWSER_TEST_F(BrowserViewsAccessibilityTest,
152c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                       TestBrowserRootViewAccObj) {
153c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  views::View* browser_root_view =
154c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      GetBrowserView()->frame()->GetFrameView()->GetRootView();
155c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
156c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  TestViewAccessibilityObject(browser_root_view,
157c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                              l10n_util::GetString(IDS_PRODUCT_NAME),
158c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                              ROLE_SYSTEM_APPLICATION);
159c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
160c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
161c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Retrieve accessibility object for browser view and verify accessibility info.
162c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochIN_PROC_BROWSER_TEST_F(BrowserViewsAccessibilityTest, TestBrowserViewAccObj) {
163c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Verify root view MSAA name and role.
164c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  TestViewAccessibilityObject(GetBrowserView(),
165c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                              l10n_util::GetString(IDS_PRODUCT_NAME),
166c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                              ROLE_SYSTEM_CLIENT);
167c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
168c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
169c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Retrieve accessibility object for toolbar view and verify accessibility info.
170c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochIN_PROC_BROWSER_TEST_F(BrowserViewsAccessibilityTest, TestToolbarViewAccObj) {
171c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Verify toolbar MSAA name and role.
172c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  TestViewAccessibilityObject(GetToolbarView(),
173c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                              l10n_util::GetString(IDS_ACCNAME_TOOLBAR),
174c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                              ROLE_SYSTEM_TOOLBAR);
175c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
176c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
177c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Retrieve accessibility object for Back button and verify accessibility info.
178c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochIN_PROC_BROWSER_TEST_F(BrowserViewsAccessibilityTest, TestBackButtonAccObj) {
179c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Verify Back button MSAA name and role.
180c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  TestViewAccessibilityObject(
181c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      GetToolbarView()->GetViewByID(VIEW_ID_BACK_BUTTON),
182c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      l10n_util::GetString(IDS_ACCNAME_BACK), ROLE_SYSTEM_BUTTONDROPDOWN);
183c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
184c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
185c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Retrieve accessibility object for Forward button and verify accessibility
186c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// info.
187c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochIN_PROC_BROWSER_TEST_F(BrowserViewsAccessibilityTest, TestForwardButtonAccObj) {
188c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Verify Forward button MSAA name and role.
189c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  TestViewAccessibilityObject(
190c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      GetToolbarView()->GetViewByID(VIEW_ID_FORWARD_BUTTON),
191c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      l10n_util::GetString(IDS_ACCNAME_FORWARD), ROLE_SYSTEM_BUTTONDROPDOWN);
192c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
193c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
194c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Retrieve accessibility object for Reload button and verify accessibility
195c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// info.
196c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochIN_PROC_BROWSER_TEST_F(BrowserViewsAccessibilityTest, TestReloadButtonAccObj) {
197c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Verify Reload button MSAA name and role.
198c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  TestViewAccessibilityObject(
199c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      GetToolbarView()->GetViewByID(VIEW_ID_RELOAD_BUTTON),
200c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      l10n_util::GetString(IDS_ACCNAME_RELOAD), ROLE_SYSTEM_PUSHBUTTON);
201c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
202c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
203c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Retrieve accessibility object for Home button and verify accessibility info.
204c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochIN_PROC_BROWSER_TEST_F(BrowserViewsAccessibilityTest, TestHomeButtonAccObj) {
205c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Verify Home button MSAA name and role.
206c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  TestViewAccessibilityObject(
207c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      GetToolbarView()->GetViewByID(VIEW_ID_HOME_BUTTON),
208c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      l10n_util::GetString(IDS_ACCNAME_HOME), ROLE_SYSTEM_PUSHBUTTON);
209c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
210c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
211c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Retrieve accessibility object for Star button and verify accessibility info.
212c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochIN_PROC_BROWSER_TEST_F(BrowserViewsAccessibilityTest,
213c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                       TestStarButtonAccObj) {
214c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Verify Star button MSAA name and role.
215c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  TestViewAccessibilityObject(
216c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      GetToolbarView()->GetViewByID(VIEW_ID_STAR_BUTTON),
217c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      l10n_util::GetString(IDS_ACCNAME_STAR), ROLE_SYSTEM_PUSHBUTTON);
218c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
219c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
220c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Retrieve accessibility object for App menu button and verify accessibility
221c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// info.
222c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochIN_PROC_BROWSER_TEST_F(BrowserViewsAccessibilityTest, TestAppMenuAccObj) {
223c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Verify App menu button MSAA name and role.
224c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  TestViewAccessibilityObject(GetToolbarView()->GetViewByID(VIEW_ID_APP_MENU),
225c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                              l10n_util::GetString(IDS_ACCNAME_APP),
226c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                              ROLE_SYSTEM_BUTTONMENU);
227c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
228c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
229c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochIN_PROC_BROWSER_TEST_F(BrowserViewsAccessibilityTest,
230c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                       TestBookmarkBarViewAccObj) {
231c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  TestViewAccessibilityObject(GetBookmarkBarView(),
232c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                              l10n_util::GetString(IDS_ACCNAME_BOOKMARKS),
233c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                              ROLE_SYSTEM_TOOLBAR);
234c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
235c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
236c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochIN_PROC_BROWSER_TEST_F(BrowserViewsAccessibilityTest,
237c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                       TestAboutChromeViewAccObj) {
238c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  //  Firstly, test that the WindowDelegate got updated.
239c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  views::Window* aboutChromeWindow = GetBrowserView()->ShowAboutChromeDialog();
240c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_STREQ(aboutChromeWindow->GetDelegate()->GetWindowTitle().c_str(),
241c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch               l10n_util::GetString(IDS_ABOUT_CHROME_TITLE).c_str());
242c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_EQ(aboutChromeWindow->GetDelegate()->accessible_role(),
243c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch            AccessibilityTypes::ROLE_DIALOG);
244c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
245c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Also test the accessibility object directly.
246c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  IAccessible* acc_obj = NULL;
247c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  HRESULT hr =
248c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    ::AccessibleObjectFromWindow(aboutChromeWindow->GetNativeWindow(),
249c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                 OBJID_CLIENT,
250c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                 IID_IAccessible,
251c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                 reinterpret_cast<void**>(&acc_obj));
252c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ASSERT_EQ(S_OK, hr);
253c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ASSERT_TRUE(NULL != acc_obj);
254c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
255c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  TestAccessibilityInfo(acc_obj, l10n_util::GetString(IDS_ABOUT_CHROME_TITLE),
256c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                        ROLE_SYSTEM_DIALOG);
257c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
258c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  acc_obj->Release();
259c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
260c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}  // Namespace.
261