Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(370)

Side by Side Diff: chrome/browser/ui/views/frame/browser_non_client_frame_view_ash_browsertest.cc

Issue 2690443002: cros-md: Remove the non-MD immersive mode code paths (Closed)
Patch Set: rebase & code comments Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 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_non_client_frame_view_ash.h" 5 #include "chrome/browser/ui/views/frame/browser_non_client_frame_view_ash.h"
6 6
7 #include "ash/common/ash_constants.h" 7 #include "ash/common/ash_constants.h"
8 #include "ash/common/frame/caption_buttons/frame_caption_button_container_view.h " 8 #include "ash/common/frame/caption_buttons/frame_caption_button_container_view.h "
9 #include "ash/common/frame/header_painter.h" 9 #include "ash/common/frame/header_painter.h"
10 #include "ash/common/wm/maximize_mode/maximize_mode_controller.h" 10 #include "ash/common/wm/maximize_mode/maximize_mode_controller.h"
11 #include "ash/common/wm_shell.h" 11 #include "ash/common/wm_shell.h"
12 #include "ash/shell.h" 12 #include "ash/shell.h"
13 #include "ash/test/immersive_fullscreen_controller_test_api.h"
13 #include "base/command_line.h" 14 #include "base/command_line.h"
14 #include "build/build_config.h" 15 #include "build/build_config.h"
16 #include "chrome/browser/profiles/profile_avatar_icon_util.h"
17 #include "chrome/browser/ui/ash/multi_user/multi_user_util.h"
18 #include "chrome/browser/ui/ash/multi_user/multi_user_window_manager_test.h"
15 #include "chrome/browser/ui/browser.h" 19 #include "chrome/browser/ui/browser.h"
16 #include "chrome/browser/ui/browser_commands.h" 20 #include "chrome/browser/ui/browser_commands.h"
17 #include "chrome/browser/ui/exclusive_access/fullscreen_controller.h" 21 #include "chrome/browser/ui/exclusive_access/fullscreen_controller.h"
18 #include "chrome/browser/ui/exclusive_access/fullscreen_controller_test.h" 22 #include "chrome/browser/ui/exclusive_access/fullscreen_controller_test.h"
19 #include "chrome/browser/ui/views/frame/browser_view.h" 23 #include "chrome/browser/ui/views/frame/browser_view.h"
20 #include "chrome/browser/ui/views/frame/immersive_mode_controller.h" 24 #include "chrome/browser/ui/views/frame/immersive_mode_controller.h"
25 #include "chrome/browser/ui/views/frame/immersive_mode_controller_ash.h"
26 #include "chrome/browser/ui/views/profiles/profile_indicator_icon.h"
21 #include "chrome/browser/ui/views/tabs/tab.h" 27 #include "chrome/browser/ui/views/tabs/tab.h"
22 #include "chrome/test/base/in_process_browser_test.h" 28 #include "chrome/test/base/in_process_browser_test.h"
29 #include "components/signin/core/account_id/account_id.h"
23 #include "ui/base/hit_test.h" 30 #include "ui/base/hit_test.h"
24 #include "ui/compositor/scoped_animation_duration_scale_mode.h" 31 #include "ui/compositor/scoped_animation_duration_scale_mode.h"
25 #include "ui/views/widget/widget.h" 32 #include "ui/views/widget/widget.h"
26 33
27 #if defined(OS_CHROMEOS)
28 #include "ash/test/immersive_fullscreen_controller_test_api.h"
29 #include "chrome/browser/profiles/profile_avatar_icon_util.h"
30 #include "chrome/browser/ui/ash/multi_user/multi_user_util.h"
31 #include "chrome/browser/ui/ash/multi_user/multi_user_window_manager_test.h"
32 #include "chrome/browser/ui/views/frame/immersive_mode_controller_ash.h"
33 #include "chrome/browser/ui/views/profiles/profile_indicator_icon.h"
34 #include "components/signin/core/account_id/account_id.h"
35 #endif // defined(OS_CHROMEOS)
36
37 using views::Widget; 34 using views::Widget;
38 35
39 typedef InProcessBrowserTest BrowserNonClientFrameViewAshTest; 36 typedef InProcessBrowserTest BrowserNonClientFrameViewAshTest;
40 37
41 IN_PROC_BROWSER_TEST_F(BrowserNonClientFrameViewAshTest, NonClientHitTest) { 38 IN_PROC_BROWSER_TEST_F(BrowserNonClientFrameViewAshTest, NonClientHitTest) {
42 BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser()); 39 BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser());
43 Widget* widget = browser_view->GetWidget(); 40 Widget* widget = browser_view->GetWidget();
44 // We know we're using Ash, so static cast. 41 // We know we're using Ash, so static cast.
45 BrowserNonClientFrameViewAsh* frame_view = 42 BrowserNonClientFrameViewAsh* frame_view =
46 static_cast<BrowserNonClientFrameViewAsh*>( 43 static_cast<BrowserNonClientFrameViewAsh*>(
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
101 { 98 {
102 std::unique_ptr<FullscreenNotificationObserver> waiter( 99 std::unique_ptr<FullscreenNotificationObserver> waiter(
103 new FullscreenNotificationObserver()); 100 new FullscreenNotificationObserver());
104 chrome::ToggleFullscreenMode(browser()); 101 chrome::ToggleFullscreenMode(browser());
105 waiter->Wait(); 102 waiter->Wait();
106 } 103 }
107 EXPECT_TRUE(frame_view->ShouldPaint()); 104 EXPECT_TRUE(frame_view->ShouldPaint());
108 EXPECT_TRUE(frame_view->caption_button_container_->visible()); 105 EXPECT_TRUE(frame_view->caption_button_container_->visible());
109 } 106 }
110 107
111 #if defined(OS_CHROMEOS)
112 IN_PROC_BROWSER_TEST_F(BrowserNonClientFrameViewAshTest, ImmersiveFullscreen) { 108 IN_PROC_BROWSER_TEST_F(BrowserNonClientFrameViewAshTest, ImmersiveFullscreen) {
113 BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser()); 109 BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser());
114 content::WebContents* web_contents = browser_view->GetActiveWebContents(); 110 content::WebContents* web_contents = browser_view->GetActiveWebContents();
115 Widget* widget = browser_view->GetWidget(); 111 Widget* widget = browser_view->GetWidget();
116 // We know we're using Ash, so static cast. 112 // We know we're using Ash, so static cast.
117 BrowserNonClientFrameViewAsh* frame_view = 113 BrowserNonClientFrameViewAsh* frame_view =
118 static_cast<BrowserNonClientFrameViewAsh*>( 114 static_cast<BrowserNonClientFrameViewAsh*>(
119 widget->non_client_view()->frame_view()); 115 widget->non_client_view()->frame_view());
120 116
121 ImmersiveModeController* immersive_mode_controller = 117 ImmersiveModeController* immersive_mode_controller =
122 browser_view->immersive_mode_controller(); 118 browser_view->immersive_mode_controller();
123 ASSERT_EQ(ImmersiveModeController::Type::ASH, 119 ASSERT_EQ(ImmersiveModeController::Type::ASH,
124 immersive_mode_controller->type()); 120 immersive_mode_controller->type());
125 121
126 ash::ImmersiveFullscreenControllerTestApi( 122 ash::ImmersiveFullscreenControllerTestApi(
127 static_cast<ImmersiveModeControllerAsh*>(immersive_mode_controller) 123 static_cast<ImmersiveModeControllerAsh*>(immersive_mode_controller)
128 ->controller()) 124 ->controller())
129 .SetupForTest(); 125 .SetupForTest();
130 126
131 // Immersive fullscreen starts disabled. 127 // Immersive fullscreen starts disabled.
132 ASSERT_FALSE(widget->IsFullscreen()); 128 ASSERT_FALSE(widget->IsFullscreen());
133 EXPECT_FALSE(immersive_mode_controller->IsEnabled()); 129 EXPECT_FALSE(immersive_mode_controller->IsEnabled());
134 130
135 // Frame paints by default. 131 // Frame paints by default.
136 EXPECT_TRUE(frame_view->ShouldPaint()); 132 EXPECT_TRUE(frame_view->ShouldPaint());
137 EXPECT_LT(Tab::GetImmersiveHeight(), 133 EXPECT_LT(0, frame_view->header_painter_->GetHeaderHeightForPainting());
138 frame_view->header_painter_->GetHeaderHeightForPainting());
139 134
140 // Enter both browser fullscreen and tab fullscreen. Entering browser 135 // Enter both browser fullscreen and tab fullscreen. Entering browser
141 // fullscreen should enable immersive fullscreen. 136 // fullscreen should enable immersive fullscreen.
142 { 137 {
143 // NOTIFICATION_FULLSCREEN_CHANGED is sent asynchronously. 138 // NOTIFICATION_FULLSCREEN_CHANGED is sent asynchronously.
144 std::unique_ptr<FullscreenNotificationObserver> waiter( 139 std::unique_ptr<FullscreenNotificationObserver> waiter(
145 new FullscreenNotificationObserver()); 140 new FullscreenNotificationObserver());
146 chrome::ToggleFullscreenMode(browser()); 141 chrome::ToggleFullscreenMode(browser());
147 waiter->Wait(); 142 waiter->Wait();
148 } 143 }
149 { 144 {
150 std::unique_ptr<FullscreenNotificationObserver> waiter( 145 std::unique_ptr<FullscreenNotificationObserver> waiter(
151 new FullscreenNotificationObserver()); 146 new FullscreenNotificationObserver());
152 browser() 147 browser()
153 ->exclusive_access_manager() 148 ->exclusive_access_manager()
154 ->fullscreen_controller() 149 ->fullscreen_controller()
155 ->EnterFullscreenModeForTab(web_contents, GURL()); 150 ->EnterFullscreenModeForTab(web_contents, GURL());
156 waiter->Wait(); 151 waiter->Wait();
157 } 152 }
158 EXPECT_TRUE(immersive_mode_controller->IsEnabled()); 153 EXPECT_TRUE(immersive_mode_controller->IsEnabled());
159 154
160 // An immersive reveal shows the buttons and the top of the frame. 155 // An immersive reveal shows the buttons and the top of the frame.
161 std::unique_ptr<ImmersiveRevealedLock> revealed_lock( 156 std::unique_ptr<ImmersiveRevealedLock> revealed_lock(
162 immersive_mode_controller->GetRevealedLock( 157 immersive_mode_controller->GetRevealedLock(
163 ImmersiveModeController::ANIMATE_REVEAL_NO)); 158 ImmersiveModeController::ANIMATE_REVEAL_NO));
164 EXPECT_TRUE(immersive_mode_controller->IsRevealed()); 159 EXPECT_TRUE(immersive_mode_controller->IsRevealed());
165 EXPECT_TRUE(frame_view->ShouldPaint()); 160 EXPECT_TRUE(frame_view->ShouldPaint());
166 EXPECT_TRUE(frame_view->caption_button_container_->visible()); 161 EXPECT_TRUE(frame_view->caption_button_container_->visible());
167 EXPECT_FALSE(frame_view->UseImmersiveLightbarHeaderStyle());
168 162
169 // End the reveal. When in both immersive browser fullscreen and tab 163 // End the reveal. When in both immersive browser fullscreen and tab
170 // fullscreen, the tab lightbars should not be painted. 164 // fullscreen.
171 revealed_lock.reset(); 165 revealed_lock.reset();
172 EXPECT_FALSE(immersive_mode_controller->IsRevealed()); 166 EXPECT_FALSE(immersive_mode_controller->IsRevealed());
173 EXPECT_FALSE(frame_view->ShouldPaint()); 167 EXPECT_FALSE(frame_view->ShouldPaint());
174 EXPECT_EQ(0, frame_view->header_painter_->GetHeaderHeightForPainting()); 168 EXPECT_EQ(0, frame_view->header_painter_->GetHeaderHeightForPainting());
175 169
176 // Repeat test but without tab fullscreen. The tab lightbars should now show 170 // Repeat test but without tab fullscreen.
177 // when the top-of-window views are not revealed.
178 { 171 {
179 std::unique_ptr<FullscreenNotificationObserver> waiter( 172 std::unique_ptr<FullscreenNotificationObserver> waiter(
180 new FullscreenNotificationObserver()); 173 new FullscreenNotificationObserver());
181 browser() 174 browser()
182 ->exclusive_access_manager() 175 ->exclusive_access_manager()
183 ->fullscreen_controller() 176 ->fullscreen_controller()
184 ->ExitFullscreenModeForTab(web_contents); 177 ->ExitFullscreenModeForTab(web_contents);
185 waiter->Wait(); 178 waiter->Wait();
186 } 179 }
187 180
188 // Immersive reveal should have same behavior as before. 181 // Immersive reveal should have same behavior as before.
189 revealed_lock.reset(immersive_mode_controller->GetRevealedLock( 182 revealed_lock.reset(immersive_mode_controller->GetRevealedLock(
190 ImmersiveModeController::ANIMATE_REVEAL_NO)); 183 ImmersiveModeController::ANIMATE_REVEAL_NO));
191 EXPECT_TRUE(immersive_mode_controller->IsRevealed()); 184 EXPECT_TRUE(immersive_mode_controller->IsRevealed());
192 EXPECT_TRUE(frame_view->ShouldPaint()); 185 EXPECT_TRUE(frame_view->ShouldPaint());
193 EXPECT_TRUE(frame_view->caption_button_container_->visible()); 186 EXPECT_TRUE(frame_view->caption_button_container_->visible());
194 EXPECT_FALSE(frame_view->UseImmersiveLightbarHeaderStyle()); 187 EXPECT_LT(0, frame_view->header_painter_->GetHeaderHeightForPainting());
195 EXPECT_LT(Tab::GetImmersiveHeight(),
196 frame_view->header_painter_->GetHeaderHeightForPainting());
197 188
198 // Ending the reveal. Immersive browser should have the same behavior as full 189 // Ending the reveal. Immersive browser should have the same behavior as full
199 // screen, i.e., no light bar and having an origin of (0,0). 190 // screen, i.e., having an origin of (0,0).
200 revealed_lock.reset(); 191 revealed_lock.reset();
201 EXPECT_FALSE(frame_view->ShouldPaint()); 192 EXPECT_FALSE(frame_view->ShouldPaint());
202 EXPECT_FALSE(frame_view->UseImmersiveLightbarHeaderStyle());
203 EXPECT_EQ(0, frame_view->header_painter_->GetHeaderHeightForPainting()); 193 EXPECT_EQ(0, frame_view->header_painter_->GetHeaderHeightForPainting());
204 194
205 // Exiting immersive fullscreen should make the caption buttons and the frame 195 // Exiting immersive fullscreen should make the caption buttons and the frame
206 // visible again. 196 // visible again.
207 { 197 {
208 std::unique_ptr<FullscreenNotificationObserver> waiter( 198 std::unique_ptr<FullscreenNotificationObserver> waiter(
209 new FullscreenNotificationObserver()); 199 new FullscreenNotificationObserver());
210 browser_view->ExitFullscreen(); 200 browser_view->ExitFullscreen();
211 waiter->Wait(); 201 waiter->Wait();
212 } 202 }
213 EXPECT_FALSE(immersive_mode_controller->IsEnabled()); 203 EXPECT_FALSE(immersive_mode_controller->IsEnabled());
214 EXPECT_TRUE(frame_view->ShouldPaint()); 204 EXPECT_TRUE(frame_view->ShouldPaint());
215 EXPECT_TRUE(frame_view->caption_button_container_->visible()); 205 EXPECT_TRUE(frame_view->caption_button_container_->visible());
216 EXPECT_FALSE(frame_view->UseImmersiveLightbarHeaderStyle()); 206 EXPECT_LT(0, frame_view->header_painter_->GetHeaderHeightForPainting());
217 EXPECT_LT(Tab::GetImmersiveHeight(),
218 frame_view->header_painter_->GetHeaderHeightForPainting());
219 } 207 }
220 208
221 // Tests that Avatar icon should show on the top left corner of the teleported 209 // Tests that Avatar icon should show on the top left corner of the teleported
222 // browser window on ChromeOS. 210 // browser window on ChromeOS.
223 IN_PROC_BROWSER_TEST_F(BrowserNonClientFrameViewAshTest, 211 IN_PROC_BROWSER_TEST_F(BrowserNonClientFrameViewAshTest,
224 AvatarDisplayOnTeleportedWindow) { 212 AvatarDisplayOnTeleportedWindow) {
225 BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser()); 213 BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser());
226 Widget* widget = browser_view->GetWidget(); 214 Widget* widget = browser_view->GetWidget();
227 // We know we're using Ash, so static cast. 215 // We know we're using Ash, so static cast.
228 BrowserNonClientFrameViewAsh* frame_view = 216 BrowserNonClientFrameViewAsh* frame_view =
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
268 256
269 // Teleport the window to another desktop. 257 // Teleport the window to another desktop.
270 const AccountId account_id2(AccountId::FromUserEmail("user2")); 258 const AccountId account_id2(AccountId::FromUserEmail("user2"));
271 manager->ShowWindowForUser(browser()->window()->GetNativeWindow(), 259 manager->ShowWindowForUser(browser()->window()->GetNativeWindow(),
272 account_id2); 260 account_id2);
273 // Clicking on the avatar icon should have same behaviour like clicking on 261 // Clicking on the avatar icon should have same behaviour like clicking on
274 // the caption area, i.e., allow the user to drag the browser window around. 262 // the caption area, i.e., allow the user to drag the browser window around.
275 EXPECT_EQ(HTCAPTION, frame_view->NonClientHitTest(avatar_center)); 263 EXPECT_EQ(HTCAPTION, frame_view->NonClientHitTest(avatar_center));
276 } 264 }
277 265
278 #endif // defined(OS_CHROMEOS)
279
280 // Tests that FrameCaptionButtonContainer has been relaid out in response to 266 // Tests that FrameCaptionButtonContainer has been relaid out in response to
281 // maximize mode being toggled. 267 // maximize mode being toggled.
282 IN_PROC_BROWSER_TEST_F(BrowserNonClientFrameViewAshTest, 268 IN_PROC_BROWSER_TEST_F(BrowserNonClientFrameViewAshTest,
283 ToggleMaximizeModeRelayout) { 269 ToggleMaximizeModeRelayout) {
284 BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser()); 270 BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser());
285 Widget* widget = browser_view->GetWidget(); 271 Widget* widget = browser_view->GetWidget();
286 // We know we're using Ash, so static cast. 272 // We know we're using Ash, so static cast.
287 BrowserNonClientFrameViewAsh* frame_view = 273 BrowserNonClientFrameViewAsh* frame_view =
288 static_cast<BrowserNonClientFrameViewAsh*>( 274 static_cast<BrowserNonClientFrameViewAsh*>(
289 widget->non_client_view()->frame_view()); 275 widget->non_client_view()->frame_view());
290 276
291 const gfx::Rect initial = frame_view->caption_button_container_->bounds(); 277 const gfx::Rect initial = frame_view->caption_button_container_->bounds();
292 ash::WmShell::Get() 278 ash::WmShell::Get()
293 ->maximize_mode_controller() 279 ->maximize_mode_controller()
294 ->EnableMaximizeModeWindowManager(true); 280 ->EnableMaximizeModeWindowManager(true);
295 ash::FrameCaptionButtonContainerView::TestApi test(frame_view-> 281 ash::FrameCaptionButtonContainerView::TestApi test(frame_view->
296 caption_button_container_); 282 caption_button_container_);
297 test.EndAnimations(); 283 test.EndAnimations();
298 const gfx::Rect during_maximize = frame_view->caption_button_container_-> 284 const gfx::Rect during_maximize = frame_view->caption_button_container_->
299 bounds(); 285 bounds();
300 EXPECT_GT(initial.width(), during_maximize.width()); 286 EXPECT_GT(initial.width(), during_maximize.width());
301 ash::WmShell::Get() 287 ash::WmShell::Get()
302 ->maximize_mode_controller() 288 ->maximize_mode_controller()
303 ->EnableMaximizeModeWindowManager(false); 289 ->EnableMaximizeModeWindowManager(false);
304 test.EndAnimations(); 290 test.EndAnimations();
305 const gfx::Rect after_restore = frame_view->caption_button_container_-> 291 const gfx::Rect after_restore = frame_view->caption_button_container_->
306 bounds(); 292 bounds();
307 EXPECT_EQ(initial, after_restore); 293 EXPECT_EQ(initial, after_restore);
308 } 294 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698