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