OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/ui/views/frame/browser_view.h" | 5 #include "chrome/browser/ui/views/frame/browser_view.h" |
6 | 6 |
7 #include "chrome/browser/ui/browser_commands.h" | 7 #include "chrome/browser/ui/browser_commands.h" |
8 #include "chrome/browser/ui/views/immersive_mode_controller.h" | 8 #include "chrome/browser/ui/views/immersive_mode_controller.h" |
9 #include "chrome/browser/ui/views/location_bar/location_bar_view.h" | 9 #include "chrome/browser/ui/views/location_bar/location_bar_view.h" |
10 #include "chrome/browser/ui/views/tabs/tab_strip.h" | 10 #include "chrome/browser/ui/views/tabs/tab_strip.h" |
11 #include "chrome/test/base/in_process_browser_test.h" | 11 #include "chrome/test/base/in_process_browser_test.h" |
| 12 #include "ui/compositor/layer_animator.h" |
12 #include "ui/views/focus/focus_manager.h" | 13 #include "ui/views/focus/focus_manager.h" |
13 #include "ui/views/view.h" | |
14 | 14 |
15 using views::FocusManager; | 15 using views::FocusManager; |
16 using views::View; | |
17 | 16 |
18 typedef InProcessBrowserTest BrowserViewTest; | 17 typedef InProcessBrowserTest BrowserViewTest; |
19 | 18 |
20 // Active window and focus testing is not reliable on Windows crbug.com/79493 | 19 // Active window and focus testing is not reliable on Windows crbug.com/79493 |
21 #if defined(OS_WIN) | 20 #if defined(OS_WIN) |
22 #define MAYBE_FullscreenClearsFocus DISABLED_FullscreenClearsFocus | 21 #define MAYBE_FullscreenClearsFocus DISABLED_FullscreenClearsFocus |
23 #else | 22 #else |
24 #define MAYBE_FullscreenClearsFocus FullscreenClearsFocus | 23 #define MAYBE_FullscreenClearsFocus FullscreenClearsFocus |
25 #endif | 24 #endif |
26 IN_PROC_BROWSER_TEST_F(BrowserViewTest, MAYBE_FullscreenClearsFocus) { | 25 IN_PROC_BROWSER_TEST_F(BrowserViewTest, MAYBE_FullscreenClearsFocus) { |
27 BrowserView* browser_view = static_cast<BrowserView*>(browser()->window()); | 26 BrowserView* browser_view = static_cast<BrowserView*>(browser()->window()); |
28 LocationBarView* location_bar_view = browser_view->GetLocationBarView(); | 27 LocationBarView* location_bar_view = browser_view->GetLocationBarView(); |
29 FocusManager* focus_manager = browser_view->GetFocusManager(); | 28 FocusManager* focus_manager = browser_view->GetFocusManager(); |
30 | 29 |
31 // Focus starts in the location bar or one of its children. | 30 // Focus starts in the location bar or one of its children. |
32 EXPECT_TRUE(location_bar_view->Contains(focus_manager->GetFocusedView())); | 31 EXPECT_TRUE(location_bar_view->Contains(focus_manager->GetFocusedView())); |
33 | 32 |
34 chrome::ToggleFullscreenMode(browser()); | 33 chrome::ToggleFullscreenMode(browser()); |
35 EXPECT_TRUE(browser_view->IsFullscreen()); | 34 EXPECT_TRUE(browser_view->IsFullscreen()); |
36 | 35 |
37 // Focus is released from the location bar. | 36 // Focus is released from the location bar. |
38 EXPECT_FALSE(location_bar_view->Contains(focus_manager->GetFocusedView())); | 37 EXPECT_FALSE(location_bar_view->Contains(focus_manager->GetFocusedView())); |
39 } | 38 } |
40 | 39 |
41 IN_PROC_BROWSER_TEST_F(BrowserViewTest, ImmersiveMode) { | 40 IN_PROC_BROWSER_TEST_F(BrowserViewTest, ImmersiveMode) { |
| 41 ui::LayerAnimator::set_disable_animations_for_test(true); |
| 42 |
42 BrowserView* browser_view = static_cast<BrowserView*>(browser()->window()); | 43 BrowserView* browser_view = static_cast<BrowserView*>(browser()->window()); |
43 ImmersiveModeController* controller = | 44 ImmersiveModeController* controller = |
44 browser_view->immersive_mode_controller(); | 45 browser_view->immersive_mode_controller(); |
45 | 46 |
46 // Immersive mode is not on by default. | 47 // Immersive mode is not on by default. |
47 EXPECT_FALSE(controller->enabled()); | 48 EXPECT_FALSE(controller->enabled()); |
48 EXPECT_FALSE(controller->ShouldHideTopViews()); | 49 EXPECT_FALSE(controller->ShouldHideTopViews()); |
49 | 50 |
50 // Top-of-window views are visible. | 51 // Top-of-window views are visible. |
51 EXPECT_TRUE(browser_view->IsTabStripVisible()); | 52 EXPECT_TRUE(browser_view->IsTabStripVisible()); |
52 EXPECT_TRUE(browser_view->IsToolbarVisible()); | 53 EXPECT_TRUE(browser_view->IsToolbarVisible()); |
53 | 54 |
54 // Turning immersive mode on sets the toolbar to immersive style and hides | 55 // Turning immersive mode on sets the toolbar to immersive style and hides |
55 // the top-of-window views while leaving the tab strip visible. | 56 // the top-of-window views while leaving the tab strip visible. |
56 controller->SetEnabled(true); | 57 controller->SetEnabled(true); |
57 EXPECT_TRUE(controller->enabled()); | 58 EXPECT_TRUE(controller->enabled()); |
58 EXPECT_TRUE(controller->ShouldHideTopViews()); | 59 EXPECT_TRUE(controller->ShouldHideTopViews()); |
| 60 EXPECT_FALSE(controller->IsRevealed()); |
59 EXPECT_TRUE(browser_view->tabstrip()->IsImmersiveStyle()); | 61 EXPECT_TRUE(browser_view->tabstrip()->IsImmersiveStyle()); |
60 EXPECT_TRUE(browser_view->IsTabStripVisible()); | 62 EXPECT_TRUE(browser_view->IsTabStripVisible()); |
61 EXPECT_FALSE(browser_view->IsToolbarVisible()); | 63 EXPECT_FALSE(browser_view->IsToolbarVisible()); |
62 | 64 |
63 // Trigger a reveal keeps us in immersive mode, but top-of-window views | 65 // Trigger a reveal keeps us in immersive mode, but top-of-window views |
64 // become visible. | 66 // become visible. |
65 controller->RevealTopViews(); | 67 controller->StartRevealForTest(); |
66 EXPECT_TRUE(controller->enabled()); | 68 EXPECT_TRUE(controller->enabled()); |
67 EXPECT_FALSE(controller->ShouldHideTopViews()); | 69 EXPECT_FALSE(controller->ShouldHideTopViews()); |
| 70 EXPECT_TRUE(controller->IsRevealed()); |
68 EXPECT_FALSE(browser_view->tabstrip()->IsImmersiveStyle()); | 71 EXPECT_FALSE(browser_view->tabstrip()->IsImmersiveStyle()); |
69 EXPECT_TRUE(browser_view->IsTabStripVisible()); | 72 EXPECT_TRUE(browser_view->IsTabStripVisible()); |
70 EXPECT_TRUE(browser_view->IsToolbarVisible()); | 73 EXPECT_TRUE(browser_view->IsToolbarVisible()); |
| 74 |
| 75 // Ending a reveal keeps us in immersive mode, but toolbar goes invisible. |
| 76 controller->EndRevealForTest(); |
| 77 EXPECT_TRUE(controller->enabled()); |
| 78 EXPECT_TRUE(controller->ShouldHideTopViews()); |
| 79 EXPECT_FALSE(controller->IsRevealed()); |
| 80 EXPECT_TRUE(browser_view->tabstrip()->IsImmersiveStyle()); |
| 81 EXPECT_TRUE(browser_view->IsTabStripVisible()); |
| 82 EXPECT_FALSE(browser_view->IsToolbarVisible()); |
| 83 |
| 84 // Disabling immersive mode puts us back to the beginning. |
| 85 controller->SetEnabled(false); |
| 86 EXPECT_FALSE(controller->enabled()); |
| 87 EXPECT_FALSE(controller->ShouldHideTopViews()); |
| 88 EXPECT_FALSE(controller->IsRevealed()); |
| 89 EXPECT_FALSE(browser_view->tabstrip()->IsImmersiveStyle()); |
| 90 EXPECT_TRUE(browser_view->IsTabStripVisible()); |
| 91 EXPECT_TRUE(browser_view->IsToolbarVisible()); |
| 92 |
| 93 // Disabling immersive mode while we are revealed should take us back to |
| 94 // the beginning. |
| 95 controller->SetEnabled(true); |
| 96 controller->StartRevealForTest(); |
| 97 controller->SetEnabled(false); |
| 98 EXPECT_FALSE(controller->enabled()); |
| 99 EXPECT_FALSE(controller->ShouldHideTopViews()); |
| 100 EXPECT_FALSE(controller->IsRevealed()); |
| 101 EXPECT_FALSE(browser_view->tabstrip()->IsImmersiveStyle()); |
| 102 EXPECT_TRUE(browser_view->IsTabStripVisible()); |
| 103 EXPECT_TRUE(browser_view->IsToolbarVisible()); |
71 } | 104 } |
OLD | NEW |