accessibility_mode_browsertest.cc revision 010d83a9304c5a91596085d917d248abff47903a
1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "content/browser/renderer_host/render_view_host_impl.h" 6#include "content/browser/renderer_host/render_widget_host_impl.h" 7#include "content/browser/renderer_host/render_widget_host_view_base.h" 8#include "content/public/browser/render_view_host.h" 9#include "content/public/browser/render_widget_host.h" 10#include "content/public/browser/render_widget_host_view.h" 11#include "content/public/browser/web_contents.h" 12#include "content/public/common/url_constants.h" 13#include "content/public/test/content_browser_test.h" 14#include "content/public/test/content_browser_test_utils.h" 15#include "content/shell/browser/shell.h" 16#include "content/test/accessibility_browser_test_utils.h" 17#include "testing/gtest/include/gtest/gtest.h" 18 19namespace content { 20 21const char kMinimalPageDataURL[] = 22 "data:text/html,<html><head></head><body>Hello, world</body></html>"; 23 24class AccessibilityModeTest : public ContentBrowserTest { 25 protected: 26 WebContents* web_contents() { 27 return shell()->web_contents(); 28 } 29 30 RenderWidgetHostImpl* rwhi() { 31 RenderWidgetHost* rwh = 32 web_contents()->GetRenderWidgetHostView()->GetRenderWidgetHost(); 33 return RenderWidgetHostImpl::From(rwh); 34 } 35 36 RenderWidgetHostViewBase* host_view() { 37 return static_cast<RenderWidgetHostViewBase*>( 38 shell()->web_contents()->GetRenderWidgetHostView()); 39 } 40 41 void ExpectBrowserAccessibilityManager(bool expect_bam, 42 std::string message = "") { 43 if (expect_bam) { 44 EXPECT_NE((BrowserAccessibilityManager*)NULL, 45 host_view()->GetBrowserAccessibilityManager()) << message; 46 } else { 47 EXPECT_EQ((BrowserAccessibilityManager*)NULL, 48 host_view()->GetBrowserAccessibilityManager()) << message; 49 } 50 } 51}; 52 53IN_PROC_BROWSER_TEST_F(AccessibilityModeTest, AccessibilityModeOff) { 54 NavigateToURL(shell(), GURL(kMinimalPageDataURL)); 55 56 EXPECT_EQ(AccessibilityModeOff, rwhi()->accessibility_mode()); 57 ExpectBrowserAccessibilityManager(false); 58} 59 60IN_PROC_BROWSER_TEST_F(AccessibilityModeTest, AccessibilityModeComplete) { 61 NavigateToURL(shell(), GURL(kMinimalPageDataURL)); 62 ASSERT_EQ(AccessibilityModeOff, rwhi()->accessibility_mode()); 63 64 AccessibilityNotificationWaiter waiter(shell()); 65 rwhi()->AddAccessibilityMode(AccessibilityModeComplete); 66 EXPECT_EQ(AccessibilityModeComplete, rwhi()->accessibility_mode()); 67 waiter.WaitForNotification(); 68 ExpectBrowserAccessibilityManager(true); 69} 70 71IN_PROC_BROWSER_TEST_F(AccessibilityModeTest, AccessibilityModeTreeOnly) { 72 NavigateToURL(shell(), GURL(kMinimalPageDataURL)); 73 ASSERT_EQ(AccessibilityModeOff, rwhi()->accessibility_mode()); 74 75 AccessibilityNotificationWaiter waiter(shell()); 76 rwhi()->AddAccessibilityMode(AccessibilityModeTreeOnly); 77 EXPECT_EQ(AccessibilityModeTreeOnly, rwhi()->accessibility_mode()); 78 waiter.WaitForNotification(); 79 // No BrowserAccessibilityManager expected for AccessibilityModeTreeOnly 80 ExpectBrowserAccessibilityManager(false); 81} 82 83IN_PROC_BROWSER_TEST_F(AccessibilityModeTest, AddingModes) { 84 NavigateToURL(shell(), GURL(kMinimalPageDataURL)); 85 86 AccessibilityNotificationWaiter waiter(shell()); 87 rwhi()->AddAccessibilityMode(AccessibilityModeTreeOnly); 88 EXPECT_EQ(AccessibilityModeTreeOnly, rwhi()->accessibility_mode()); 89 waiter.WaitForNotification(); 90 ExpectBrowserAccessibilityManager(false, 91 "Should be no BrowserAccessibilityManager " 92 "for AccessibilityModeTreeOnly"); 93 94 AccessibilityNotificationWaiter waiter2(shell()); 95 rwhi()->AddAccessibilityMode(AccessibilityModeComplete); 96 EXPECT_EQ(AccessibilityModeComplete, rwhi()->accessibility_mode()); 97 waiter2.WaitForNotification(); 98 ExpectBrowserAccessibilityManager(true, 99 "Should be a BrowserAccessibilityManager " 100 "for AccessibilityModeComplete"); 101} 102 103} // namespace content 104