1dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// Copyright (c) 2011 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 73345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#include "base/utf_string_conversions.h" 8ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/win/scoped_comptr.h" 94a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#include "chrome/browser/ui/browser.h" 10ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/ui/browser_window.h" 1121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#include "chrome/browser/ui/view_ids.h" 12dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "chrome/browser/ui/views/bookmarks/bookmark_bar_view.h" 1321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#include "chrome/browser/ui/views/frame/browser_view.h" 1421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#include "chrome/browser/ui/views/toolbar_view.h" 15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/common/url_constants.h" 16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/test/in_process_browser_test.h" 17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/test/ui_test_utils.h" 18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "grit/chromium_strings.h" 19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "grit/generated_resources.h" 20ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "ui/base/accessibility/accessibility_types.h" 2172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "ui/base/l10n/l10n_util.h" 22ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "views/accessibility/native_view_accessibility_win.h" 23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "views/widget/root_view.h" 24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "views/widget/widget_win.h" 25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "views/window/window.h" 26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace { 28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 29c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochVARIANT id_self = {VT_I4, CHILDID_SELF}; 30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Dummy class to force creation of ATL module, needed by COM to instantiate 32ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// NativeViewAccessibilityWin. 33dc0f95d653279beabeb9817299e2902918ba123eKristian Monsenclass TestAtlModule : public CAtlDllModuleT<TestAtlModule> {}; 34c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTestAtlModule test_atl_module_; 35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 36dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen} // namespace 37dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass BrowserViewsAccessibilityTest : public InProcessBrowserTest { 39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch BrowserViewsAccessibilityTest() { 41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ::CoInitialize(NULL); 42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ~BrowserViewsAccessibilityTest() { 45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ::CoUninitialize(); 46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Retrieves an instance of BrowserWindowTesting 49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch BrowserWindowTesting* GetBrowserWindowTesting() { 50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch BrowserWindow* browser_window = browser()->window(); 51c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 52c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch if (!browser_window) 53c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return NULL; 54c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 55c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return browser_window->GetBrowserWindowTesting(); 56c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 57c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 58c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Retrieve an instance of BrowserView 59c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch BrowserView* GetBrowserView() { 60c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return BrowserView::GetBrowserViewForNativeWindow( 61c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch browser()->window()->GetNativeHandle()); 62c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 63c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 64c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Retrieves and initializes an instance of ToolbarView. 65c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ToolbarView* GetToolbarView() { 66c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch BrowserWindowTesting* browser_window_testing = GetBrowserWindowTesting(); 67c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 68c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch if (!browser_window_testing) 69c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return NULL; 70c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 71c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return browser_window_testing->GetToolbarView(); 72c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 73c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 74c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Retrieves and initializes an instance of BookmarkBarView. 75c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch BookmarkBarView* GetBookmarkBarView() { 76c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch BrowserWindowTesting* browser_window_testing = GetBrowserWindowTesting(); 77c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 78c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch if (!browser_window_testing) 79c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return NULL; 80c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 81c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return browser_window_testing->GetBookmarkBarView(); 82c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 83c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 84c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Retrieves and verifies the accessibility object for the given View. 85c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void TestViewAccessibilityObject(views::View* view, std::wstring name, 86c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch int32 role) { 87c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(NULL != view); 88c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 89731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick TestAccessibilityInfo( 90ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen NativeViewAccessibilityWin::GetAccessibleForView(view), 91ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen name, 92ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen role); 93c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 94c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 95c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 96c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Verifies MSAA Name and Role properties of the given IAccessible. 97c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void TestAccessibilityInfo(IAccessible* acc_obj, std::wstring name, 98c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch int32 role) { 99c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Verify MSAA Name property. 100c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch BSTR acc_name; 101c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 102c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch HRESULT hr = acc_obj->get_accName(id_self, &acc_name); 103c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_EQ(S_OK, hr); 104c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_STREQ(acc_name, name.c_str()); 105c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 106c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Verify MSAA Role property. 107c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch VARIANT acc_role; 108c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ::VariantInit(&acc_role); 109c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 110c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch hr = acc_obj->get_accRole(id_self, &acc_role); 111c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_EQ(S_OK, hr); 112c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(VT_I4, acc_role.vt); 113c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(role, acc_role.lVal); 114c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 115c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ::VariantClear(&acc_role); 116c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ::SysFreeString(acc_name); 117c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 118c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 119c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 120c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Retrieve accessibility object for main window and verify accessibility info. 121c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochIN_PROC_BROWSER_TEST_F(BrowserViewsAccessibilityTest, 122c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch TestChromeWindowAccObj) { 123c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch BrowserWindow* browser_window = browser()->window(); 124c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(NULL != browser_window); 125c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 126c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch HWND hwnd = browser_window->GetNativeHandle(); 127c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(NULL != hwnd); 128c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 129c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Get accessibility object. 130ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen base::win::ScopedComPtr<IAccessible> acc_obj; 131c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch HRESULT hr = ::AccessibleObjectFromWindow(hwnd, OBJID_WINDOW, IID_IAccessible, 132c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch reinterpret_cast<void**>(&acc_obj)); 133c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_EQ(S_OK, hr); 134c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(NULL != acc_obj); 135c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 136c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ui_test_utils::NavigateToURL(browser(), GURL(chrome::kAboutBlankURL)); 1373f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen std::wstring title = UTF16ToWide(l10n_util::GetStringFUTF16( 1383f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen IDS_BROWSER_WINDOW_TITLE_FORMAT, 1393f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen ASCIIToUTF16(chrome::kAboutBlankURL))); 140c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch TestAccessibilityInfo(acc_obj, title, ROLE_SYSTEM_WINDOW); 141c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 142c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 143c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Retrieve accessibility object for non client view and verify accessibility 144c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// info. 145c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochIN_PROC_BROWSER_TEST_F(BrowserViewsAccessibilityTest, TestNonClientViewAccObj) { 146c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch views::View* non_client_view = 147dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen GetBrowserView()->GetWindow()->non_client_view(); 148c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 149c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch TestViewAccessibilityObject(non_client_view, 1503f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen UTF16ToWide(l10n_util::GetStringUTF16(IDS_PRODUCT_NAME)), 151c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ROLE_SYSTEM_WINDOW); 152c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 153c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 154c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Retrieve accessibility object for browser root view and verify 155c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// accessibility info. 156c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochIN_PROC_BROWSER_TEST_F(BrowserViewsAccessibilityTest, 157c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch TestBrowserRootViewAccObj) { 158c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch views::View* browser_root_view = 159c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GetBrowserView()->frame()->GetFrameView()->GetRootView(); 160c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1613f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen TestViewAccessibilityObject( 1623f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen browser_root_view, 1633f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen UTF16ToWide(l10n_util::GetStringUTF16(IDS_PRODUCT_NAME)), 1643f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen ROLE_SYSTEM_APPLICATION); 165c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 166c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 167c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Retrieve accessibility object for browser view and verify accessibility info. 168c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochIN_PROC_BROWSER_TEST_F(BrowserViewsAccessibilityTest, TestBrowserViewAccObj) { 169c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Verify root view MSAA name and role. 1703f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen TestViewAccessibilityObject( 1713f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen GetBrowserView(), 1723f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen UTF16ToWide(l10n_util::GetStringUTF16(IDS_PRODUCT_NAME)), 1733f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen ROLE_SYSTEM_CLIENT); 174c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 175c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 176c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Retrieve accessibility object for toolbar view and verify accessibility info. 177c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochIN_PROC_BROWSER_TEST_F(BrowserViewsAccessibilityTest, TestToolbarViewAccObj) { 178c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Verify toolbar MSAA name and role. 1793f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen TestViewAccessibilityObject( 1803f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen GetToolbarView(), 1813f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen UTF16ToWide(l10n_util::GetStringUTF16(IDS_ACCNAME_TOOLBAR)), 1823f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen ROLE_SYSTEM_TOOLBAR); 183c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 184c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 185c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Retrieve accessibility object for Back button and verify accessibility info. 186c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochIN_PROC_BROWSER_TEST_F(BrowserViewsAccessibilityTest, TestBackButtonAccObj) { 187c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Verify Back button MSAA name and role. 188c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch TestViewAccessibilityObject( 189c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GetToolbarView()->GetViewByID(VIEW_ID_BACK_BUTTON), 1903f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen UTF16ToWide(l10n_util::GetStringUTF16(IDS_ACCNAME_BACK)), 1913f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen ROLE_SYSTEM_BUTTONDROPDOWN); 192c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 193c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 194c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Retrieve accessibility object for Forward button and verify accessibility 195c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// info. 196c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochIN_PROC_BROWSER_TEST_F(BrowserViewsAccessibilityTest, TestForwardButtonAccObj) { 197c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Verify Forward button MSAA name and role. 198c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch TestViewAccessibilityObject( 199c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GetToolbarView()->GetViewByID(VIEW_ID_FORWARD_BUTTON), 2003f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen UTF16ToWide(l10n_util::GetStringUTF16(IDS_ACCNAME_FORWARD)), 2013f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen ROLE_SYSTEM_BUTTONDROPDOWN); 202c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 203c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 204c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Retrieve accessibility object for Reload button and verify accessibility 205c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// info. 206c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochIN_PROC_BROWSER_TEST_F(BrowserViewsAccessibilityTest, TestReloadButtonAccObj) { 207c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Verify Reload button MSAA name and role. 208c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch TestViewAccessibilityObject( 209c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GetToolbarView()->GetViewByID(VIEW_ID_RELOAD_BUTTON), 2103f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen UTF16ToWide(l10n_util::GetStringUTF16(IDS_ACCNAME_RELOAD)), 2113f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen ROLE_SYSTEM_PUSHBUTTON); 212c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 213c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 214c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Retrieve accessibility object for Home button and verify accessibility info. 215c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochIN_PROC_BROWSER_TEST_F(BrowserViewsAccessibilityTest, TestHomeButtonAccObj) { 216c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Verify Home button MSAA name and role. 217c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch TestViewAccessibilityObject( 218c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GetToolbarView()->GetViewByID(VIEW_ID_HOME_BUTTON), 2193f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen UTF16ToWide(l10n_util::GetStringUTF16(IDS_ACCNAME_HOME)), 2203f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen ROLE_SYSTEM_PUSHBUTTON); 221c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 222c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 223c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Retrieve accessibility object for Star button and verify accessibility info. 224c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochIN_PROC_BROWSER_TEST_F(BrowserViewsAccessibilityTest, 225c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch TestStarButtonAccObj) { 226c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Verify Star button MSAA name and role. 227c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch TestViewAccessibilityObject( 228c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GetToolbarView()->GetViewByID(VIEW_ID_STAR_BUTTON), 2293f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen UTF16ToWide(l10n_util::GetStringUTF16(IDS_ACCNAME_STAR)), 2303f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen ROLE_SYSTEM_PUSHBUTTON); 231c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 232c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 233c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Retrieve accessibility object for App menu button and verify accessibility 234c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// info. 235c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochIN_PROC_BROWSER_TEST_F(BrowserViewsAccessibilityTest, TestAppMenuAccObj) { 236c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Verify App menu button MSAA name and role. 2373f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen TestViewAccessibilityObject( 2383f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen GetToolbarView()->GetViewByID(VIEW_ID_APP_MENU), 2393f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen UTF16ToWide(l10n_util::GetStringUTF16(IDS_ACCNAME_APP)), 2403f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen ROLE_SYSTEM_BUTTONMENU); 241c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 242c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 243c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochIN_PROC_BROWSER_TEST_F(BrowserViewsAccessibilityTest, 244c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch TestBookmarkBarViewAccObj) { 2453f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen TestViewAccessibilityObject( 2463f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen GetBookmarkBarView(), 2473f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen UTF16ToWide(l10n_util::GetStringUTF16(IDS_ACCNAME_BOOKMARKS)), 2483f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen ROLE_SYSTEM_TOOLBAR); 249c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 250c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 251c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochIN_PROC_BROWSER_TEST_F(BrowserViewsAccessibilityTest, 252c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch TestAboutChromeViewAccObj) { 253c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Firstly, test that the WindowDelegate got updated. 254dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen views::Window* about_chrome_window = 255dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen GetBrowserView()->DoShowAboutChromeDialog(); 2563f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen EXPECT_STREQ( 257dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen about_chrome_window->window_delegate()->GetWindowTitle().c_str(), 2583f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen UTF16ToWide(l10n_util::GetStringUTF16(IDS_ABOUT_CHROME_TITLE)).c_str()); 259ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_EQ(about_chrome_window->window_delegate()->GetAccessibleWindowRole(), 260ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen ui::AccessibilityTypes::ROLE_DIALOG); 261c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 262c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Also test the accessibility object directly. 263c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch IAccessible* acc_obj = NULL; 264c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch HRESULT hr = 265dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen ::AccessibleObjectFromWindow(about_chrome_window->GetNativeWindow(), 266c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch OBJID_CLIENT, 267c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch IID_IAccessible, 268c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch reinterpret_cast<void**>(&acc_obj)); 269c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_EQ(S_OK, hr); 270c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(NULL != acc_obj); 271c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 2723f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen TestAccessibilityInfo( 2733f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen acc_obj, 2743f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen UTF16ToWide(l10n_util::GetStringUTF16(IDS_ABOUT_CHROME_TITLE)), 2753f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen ROLE_SYSTEM_DIALOG); 276c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 277c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch acc_obj->Release(); 278c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 279