| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "ash/accelerators/accelerator_commands.h" | 5 #include "ash/accelerators/accelerator_commands.h" |
| 6 | 6 |
| 7 #include "apps/app_window.h" | 7 #include "apps/app_window.h" |
| 8 #include "apps/ui/native_app_window.h" | 8 #include "apps/ui/native_app_window.h" |
| 9 #include "ash/ash_switches.h" | 9 #include "ash/ash_switches.h" |
| 10 #include "ash/shell.h" | 10 #include "ash/shell.h" |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 89 ash::accelerators::ToggleMaximized(); | 89 ash::accelerators::ToggleMaximized(); |
| 90 EXPECT_FALSE(window_state->IsFullscreen()); | 90 EXPECT_FALSE(window_state->IsFullscreen()); |
| 91 EXPECT_TRUE(window_state->IsMaximized()); | 91 EXPECT_TRUE(window_state->IsMaximized()); |
| 92 } | 92 } |
| 93 | 93 |
| 94 class AcceleratorCommandsFullscreenBrowserTest | 94 class AcceleratorCommandsFullscreenBrowserTest |
| 95 : public WithParamInterface<ui::WindowShowState>, | 95 : public WithParamInterface<ui::WindowShowState>, |
| 96 public InProcessBrowserTest { | 96 public InProcessBrowserTest { |
| 97 public: | 97 public: |
| 98 AcceleratorCommandsFullscreenBrowserTest() | 98 AcceleratorCommandsFullscreenBrowserTest() |
| 99 #if defined(OS_CHROMEOS) | 99 : initial_show_state_(GetParam()) { |
| 100 : put_window_in_immersive_(true), | |
| 101 #else | |
| 102 : put_window_in_immersive_(false), | |
| 103 #endif | |
| 104 initial_show_state_(GetParam()) { | |
| 105 } | 100 } |
| 106 virtual ~AcceleratorCommandsFullscreenBrowserTest() { | 101 virtual ~AcceleratorCommandsFullscreenBrowserTest() { |
| 107 } | 102 } |
| 108 | 103 |
| 109 // Sets |window_state|'s show state to |initial_show_state_|. | 104 // Sets |window_state|'s show state to |initial_show_state_|. |
| 110 void SetToInitialShowState(ash::wm::WindowState* window_state) { | 105 void SetToInitialShowState(ash::wm::WindowState* window_state) { |
| 111 if (initial_show_state_ == ui::SHOW_STATE_MAXIMIZED) | 106 if (initial_show_state_ == ui::SHOW_STATE_MAXIMIZED) |
| 112 window_state->Maximize(); | 107 window_state->Maximize(); |
| 113 else | 108 else |
| 114 window_state->Restore(); | 109 window_state->Restore(); |
| 115 } | 110 } |
| 116 | 111 |
| 117 // Returns true if |window_state|'s show state is |initial_show_state_|. | 112 // Returns true if |window_state|'s show state is |initial_show_state_|. |
| 118 bool IsInitialShowState(const ash::wm::WindowState* window_state) const { | 113 bool IsInitialShowState(const ash::wm::WindowState* window_state) const { |
| 119 if (initial_show_state_ == ui::SHOW_STATE_MAXIMIZED) | 114 if (initial_show_state_ == ui::SHOW_STATE_MAXIMIZED) |
| 120 return window_state->IsMaximized(); | 115 return window_state->IsMaximized(); |
| 121 else | 116 else |
| 122 return window_state->IsNormalStateType(); | 117 return window_state->IsNormalStateType(); |
| 123 } | 118 } |
| 124 | 119 |
| 125 bool put_window_in_immersive() const { | |
| 126 return put_window_in_immersive_; | |
| 127 } | |
| 128 | |
| 129 private: | 120 private: |
| 130 bool put_window_in_immersive_; | |
| 131 ui::WindowShowState initial_show_state_; | 121 ui::WindowShowState initial_show_state_; |
| 132 | 122 |
| 133 DISALLOW_COPY_AND_ASSIGN(AcceleratorCommandsFullscreenBrowserTest); | 123 DISALLOW_COPY_AND_ASSIGN(AcceleratorCommandsFullscreenBrowserTest); |
| 134 }; | 124 }; |
| 135 | 125 |
| 136 // Test that toggling window fullscreen works properly. | 126 // Test that toggling window fullscreen works properly. |
| 137 IN_PROC_BROWSER_TEST_P(AcceleratorCommandsFullscreenBrowserTest, | 127 IN_PROC_BROWSER_TEST_P(AcceleratorCommandsFullscreenBrowserTest, |
| 138 ToggleFullscreen) { | 128 ToggleFullscreen) { |
| 139 #if defined(OS_WIN) | 129 #if defined(OS_WIN) |
| 140 // Run the test on Win Ash only. | 130 // Run the test on Win Ash only. |
| 141 if (!CommandLine::ForCurrentProcess()->HasSwitch(switches::kAshBrowserTests)) | 131 if (!CommandLine::ForCurrentProcess()->HasSwitch(switches::kAshBrowserTests)) |
| 142 return; | 132 return; |
| 143 #endif | 133 #endif |
| 144 | 134 |
| 145 ASSERT_TRUE(ash::Shell::HasInstance()) << "No Instance"; | 135 ASSERT_TRUE(ash::Shell::HasInstance()) << "No Instance"; |
| 146 | 136 |
| 147 // 1) Browser windows. | 137 // 1) Browser windows. |
| 148 ASSERT_TRUE(browser()->is_type_tabbed()); | 138 ASSERT_TRUE(browser()->is_type_tabbed()); |
| 149 ash::wm::WindowState* window_state = | 139 ash::wm::WindowState* window_state = |
| 150 ash::wm::GetWindowState(browser()->window()->GetNativeWindow()); | 140 ash::wm::GetWindowState(browser()->window()->GetNativeWindow()); |
| 151 ASSERT_TRUE(window_state->IsActive()); | 141 ASSERT_TRUE(window_state->IsActive()); |
| 152 SetToInitialShowState(window_state); | 142 SetToInitialShowState(window_state); |
| 153 EXPECT_TRUE(IsInitialShowState(window_state)); | 143 EXPECT_TRUE(IsInitialShowState(window_state)); |
| 154 | 144 |
| 155 ash::accelerators::ToggleFullscreen(); | 145 ash::accelerators::ToggleFullscreen(); |
| 156 EXPECT_TRUE(window_state->IsFullscreen()); | 146 EXPECT_TRUE(window_state->IsFullscreen()); |
| 157 EXPECT_EQ(put_window_in_immersive(), IsInImmersiveFullscreen(window_state)); | 147 EXPECT_TRUE(IsInImmersiveFullscreen(window_state)); |
| 158 | 148 |
| 159 ash::accelerators::ToggleFullscreen(); | 149 ash::accelerators::ToggleFullscreen(); |
| 160 EXPECT_TRUE(IsInitialShowState(window_state)); | 150 EXPECT_TRUE(IsInitialShowState(window_state)); |
| 161 | 151 |
| 162 // 2) ToggleFullscreen() should have no effect on windows which cannot be | 152 // 2) ToggleFullscreen() should have no effect on windows which cannot be |
| 163 // maximized. | 153 // maximized. |
| 164 window_state->window()->SetProperty(aura::client::kCanMaximizeKey, false); | 154 window_state->window()->SetProperty(aura::client::kCanMaximizeKey, false); |
| 165 ash::accelerators::ToggleFullscreen(); | 155 ash::accelerators::ToggleFullscreen(); |
| 166 EXPECT_TRUE(IsInitialShowState(window_state)); | 156 EXPECT_TRUE(IsInitialShowState(window_state)); |
| 167 | 157 |
| 168 // 3) Hosted apps. | 158 // 3) Hosted apps. |
| 169 Browser::CreateParams browser_create_params(Browser::TYPE_POPUP, | 159 Browser::CreateParams browser_create_params(Browser::TYPE_POPUP, |
| 170 browser()->profile(), chrome::HOST_DESKTOP_TYPE_ASH); | 160 browser()->profile(), chrome::HOST_DESKTOP_TYPE_ASH); |
| 171 browser_create_params.app_name = "Test"; | 161 browser_create_params.app_name = "Test"; |
| 172 | 162 |
| 173 Browser* app_host_browser = new Browser(browser_create_params); | 163 Browser* app_host_browser = new Browser(browser_create_params); |
| 174 ASSERT_TRUE(app_host_browser->is_app()); | 164 ASSERT_TRUE(app_host_browser->is_app()); |
| 175 AddBlankTabAndShow(app_host_browser); | 165 AddBlankTabAndShow(app_host_browser); |
| 176 window_state = | 166 window_state = |
| 177 ash::wm::GetWindowState(app_host_browser->window()->GetNativeWindow()); | 167 ash::wm::GetWindowState(app_host_browser->window()->GetNativeWindow()); |
| 178 ASSERT_TRUE(window_state->IsActive()); | 168 ASSERT_TRUE(window_state->IsActive()); |
| 179 SetToInitialShowState(window_state); | 169 SetToInitialShowState(window_state); |
| 180 EXPECT_TRUE(IsInitialShowState(window_state)); | 170 EXPECT_TRUE(IsInitialShowState(window_state)); |
| 181 | 171 |
| 182 ash::accelerators::ToggleFullscreen(); | 172 ash::accelerators::ToggleFullscreen(); |
| 183 EXPECT_TRUE(window_state->IsFullscreen()); | 173 EXPECT_TRUE(window_state->IsFullscreen()); |
| 184 EXPECT_EQ(put_window_in_immersive(), IsInImmersiveFullscreen(window_state)); | 174 EXPECT_TRUE(IsInImmersiveFullscreen(window_state)); |
| 185 | 175 |
| 186 ash::accelerators::ToggleFullscreen(); | 176 ash::accelerators::ToggleFullscreen(); |
| 187 EXPECT_TRUE(IsInitialShowState(window_state)); | 177 EXPECT_TRUE(IsInitialShowState(window_state)); |
| 188 | 178 |
| 189 // 4) Popup browser windows. | 179 // 4) Popup browser windows. |
| 190 browser_create_params.app_name = ""; | 180 browser_create_params.app_name = ""; |
| 191 Browser* popup_browser = new Browser(browser_create_params); | 181 Browser* popup_browser = new Browser(browser_create_params); |
| 192 ASSERT_TRUE(popup_browser->is_type_popup()); | 182 ASSERT_TRUE(popup_browser->is_type_popup()); |
| 193 ASSERT_FALSE(popup_browser->is_app()); | 183 ASSERT_FALSE(popup_browser->is_app()); |
| 194 AddBlankTabAndShow(popup_browser); | 184 AddBlankTabAndShow(popup_browser); |
| 195 window_state = | 185 window_state = |
| 196 ash::wm::GetWindowState(popup_browser->window()->GetNativeWindow()); | 186 ash::wm::GetWindowState(popup_browser->window()->GetNativeWindow()); |
| 197 ASSERT_TRUE(window_state->IsActive()); | 187 ASSERT_TRUE(window_state->IsActive()); |
| 198 SetToInitialShowState(window_state); | 188 SetToInitialShowState(window_state); |
| 199 EXPECT_TRUE(IsInitialShowState(window_state)); | 189 EXPECT_TRUE(IsInitialShowState(window_state)); |
| 200 | 190 |
| 201 ash::accelerators::ToggleFullscreen(); | 191 ash::accelerators::ToggleFullscreen(); |
| 202 EXPECT_TRUE(window_state->IsFullscreen()); | 192 EXPECT_TRUE(window_state->IsFullscreen()); |
| 203 EXPECT_EQ(put_window_in_immersive(), IsInImmersiveFullscreen(window_state)); | 193 EXPECT_TRUE(IsInImmersiveFullscreen(window_state)); |
| 204 | 194 |
| 205 ash::accelerators::ToggleFullscreen(); | 195 ash::accelerators::ToggleFullscreen(); |
| 206 EXPECT_TRUE(IsInitialShowState(window_state)); | 196 EXPECT_TRUE(IsInitialShowState(window_state)); |
| 207 | 197 |
| 208 // 5) Miscellaneous windows (e.g. task manager). | 198 // 5) Miscellaneous windows (e.g. task manager). |
| 209 views::Widget::InitParams params; | 199 views::Widget::InitParams params; |
| 210 params.delegate = new MaximizableWidgetDelegate(); | 200 params.delegate = new MaximizableWidgetDelegate(); |
| 211 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; | 201 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; |
| 212 scoped_ptr<views::Widget> widget(new views::Widget); | 202 scoped_ptr<views::Widget> widget(new views::Widget); |
| 213 widget->Init(params); | 203 widget->Init(params); |
| 214 widget->Show(); | 204 widget->Show(); |
| 215 | 205 |
| 216 window_state = ash::wm::GetWindowState(widget->GetNativeWindow()); | 206 window_state = ash::wm::GetWindowState(widget->GetNativeWindow()); |
| 217 ASSERT_TRUE(window_state->IsActive()); | 207 ASSERT_TRUE(window_state->IsActive()); |
| 218 SetToInitialShowState(window_state); | 208 SetToInitialShowState(window_state); |
| 219 EXPECT_TRUE(IsInitialShowState(window_state)); | 209 EXPECT_TRUE(IsInitialShowState(window_state)); |
| 220 | 210 |
| 221 ash::accelerators::ToggleFullscreen(); | 211 ash::accelerators::ToggleFullscreen(); |
| 222 EXPECT_TRUE(window_state->IsFullscreen()); | 212 EXPECT_TRUE(window_state->IsFullscreen()); |
| 223 EXPECT_EQ(put_window_in_immersive(), IsInImmersiveFullscreen(window_state)); | 213 EXPECT_TRUE(IsInImmersiveFullscreen(window_state)); |
| 224 | 214 |
| 225 // TODO(pkotwicz|oshima): Make toggling fullscreen restore the window to its | 215 // TODO(pkotwicz|oshima): Make toggling fullscreen restore the window to its |
| 226 // show state prior to entering fullscreen. | 216 // show state prior to entering fullscreen. |
| 227 ash::accelerators::ToggleFullscreen(); | 217 ash::accelerators::ToggleFullscreen(); |
| 228 EXPECT_FALSE(window_state->IsFullscreen()); | 218 EXPECT_FALSE(window_state->IsFullscreen()); |
| 229 } | 219 } |
| 230 | 220 |
| 231 INSTANTIATE_TEST_CASE_P(InitiallyRestored, | 221 INSTANTIATE_TEST_CASE_P(InitiallyRestored, |
| 232 AcceleratorCommandsFullscreenBrowserTest, | 222 AcceleratorCommandsFullscreenBrowserTest, |
| 233 Values(ui::SHOW_STATE_NORMAL)); | 223 Values(ui::SHOW_STATE_NORMAL)); |
| 234 INSTANTIATE_TEST_CASE_P(InitiallyMaximized, | 224 INSTANTIATE_TEST_CASE_P(InitiallyMaximized, |
| 235 AcceleratorCommandsFullscreenBrowserTest, | 225 AcceleratorCommandsFullscreenBrowserTest, |
| 236 Values(ui::SHOW_STATE_MAXIMIZED)); | 226 Values(ui::SHOW_STATE_MAXIMIZED)); |
| 237 | 227 |
| 238 class AcceleratorCommandsPlatformAppFullscreenBrowserTest | 228 class AcceleratorCommandsPlatformAppFullscreenBrowserTest |
| 239 : public WithParamInterface<ui::WindowShowState>, | 229 : public WithParamInterface<ui::WindowShowState>, |
| 240 public extensions::PlatformAppBrowserTest { | 230 public extensions::PlatformAppBrowserTest { |
| 241 public: | 231 public: |
| 242 AcceleratorCommandsPlatformAppFullscreenBrowserTest() | 232 AcceleratorCommandsPlatformAppFullscreenBrowserTest() |
| 243 #if defined(OS_CHROMEOS) | 233 : initial_show_state_(GetParam()) { |
| 244 : put_window_in_immersive_(true), | |
| 245 #else | |
| 246 : put_window_in_immersive_(false), | |
| 247 #endif | |
| 248 initial_show_state_(GetParam()) { | |
| 249 } | 234 } |
| 250 virtual ~AcceleratorCommandsPlatformAppFullscreenBrowserTest() { | 235 virtual ~AcceleratorCommandsPlatformAppFullscreenBrowserTest() { |
| 251 } | 236 } |
| 252 | 237 |
| 253 // Sets |app_window|'s show state to |initial_show_state_|. | 238 // Sets |app_window|'s show state to |initial_show_state_|. |
| 254 void SetToInitialShowState(apps::AppWindow* app_window) { | 239 void SetToInitialShowState(apps::AppWindow* app_window) { |
| 255 if (initial_show_state_ == ui::SHOW_STATE_MAXIMIZED) | 240 if (initial_show_state_ == ui::SHOW_STATE_MAXIMIZED) |
| 256 app_window->Maximize(); | 241 app_window->Maximize(); |
| 257 else | 242 else |
| 258 app_window->Restore(); | 243 app_window->Restore(); |
| 259 } | 244 } |
| 260 | 245 |
| 261 // Returns true if |app_window|'s show state is |initial_show_state_|. | 246 // Returns true if |app_window|'s show state is |initial_show_state_|. |
| 262 bool IsInitialShowState(apps::AppWindow* app_window) const { | 247 bool IsInitialShowState(apps::AppWindow* app_window) const { |
| 263 if (initial_show_state_ == ui::SHOW_STATE_MAXIMIZED) | 248 if (initial_show_state_ == ui::SHOW_STATE_MAXIMIZED) |
| 264 return app_window->GetBaseWindow()->IsMaximized(); | 249 return app_window->GetBaseWindow()->IsMaximized(); |
| 265 else | 250 else |
| 266 return ui::BaseWindow::IsRestored(*app_window->GetBaseWindow()); | 251 return ui::BaseWindow::IsRestored(*app_window->GetBaseWindow()); |
| 267 } | 252 } |
| 268 | 253 |
| 269 bool put_window_in_immersive() const { | |
| 270 return put_window_in_immersive_; | |
| 271 } | |
| 272 | |
| 273 private: | 254 private: |
| 274 bool put_window_in_immersive_; | |
| 275 ui::WindowShowState initial_show_state_; | 255 ui::WindowShowState initial_show_state_; |
| 276 | 256 |
| 277 DISALLOW_COPY_AND_ASSIGN(AcceleratorCommandsPlatformAppFullscreenBrowserTest); | 257 DISALLOW_COPY_AND_ASSIGN(AcceleratorCommandsPlatformAppFullscreenBrowserTest); |
| 278 }; | 258 }; |
| 279 | 259 |
| 280 // Test the behavior of platform apps when ToggleFullscreen() is called. | 260 // Test the behavior of platform apps when ToggleFullscreen() is called. |
| 281 IN_PROC_BROWSER_TEST_P(AcceleratorCommandsPlatformAppFullscreenBrowserTest, | 261 IN_PROC_BROWSER_TEST_P(AcceleratorCommandsPlatformAppFullscreenBrowserTest, |
| 282 ToggleFullscreen) { | 262 ToggleFullscreen) { |
| 283 #if defined(OS_WIN) | 263 #if defined(OS_WIN) |
| 284 // Run the test on Win Ash only. | 264 // Run the test on Win Ash only. |
| (...skipping 13 matching lines...) Expand all Loading... |
| 298 apps::AppWindow* app_window = CreateAppWindowFromParams(extension, params); | 278 apps::AppWindow* app_window = CreateAppWindowFromParams(extension, params); |
| 299 apps::NativeAppWindow* native_app_window = app_window->GetBaseWindow(); | 279 apps::NativeAppWindow* native_app_window = app_window->GetBaseWindow(); |
| 300 SetToInitialShowState(app_window); | 280 SetToInitialShowState(app_window); |
| 301 ASSERT_TRUE(app_window->GetBaseWindow()->IsActive()); | 281 ASSERT_TRUE(app_window->GetBaseWindow()->IsActive()); |
| 302 EXPECT_TRUE(IsInitialShowState(app_window)); | 282 EXPECT_TRUE(IsInitialShowState(app_window)); |
| 303 | 283 |
| 304 ash::accelerators::ToggleFullscreen(); | 284 ash::accelerators::ToggleFullscreen(); |
| 305 EXPECT_TRUE(native_app_window->IsFullscreen()); | 285 EXPECT_TRUE(native_app_window->IsFullscreen()); |
| 306 ash::wm::WindowState* window_state = | 286 ash::wm::WindowState* window_state = |
| 307 ash::wm::GetWindowState(native_app_window->GetNativeWindow()); | 287 ash::wm::GetWindowState(native_app_window->GetNativeWindow()); |
| 308 EXPECT_EQ(put_window_in_immersive(), | 288 EXPECT_TRUE(IsInImmersiveFullscreen(window_state)); |
| 309 IsInImmersiveFullscreen(window_state)); | |
| 310 | 289 |
| 311 ash::accelerators::ToggleFullscreen(); | 290 ash::accelerators::ToggleFullscreen(); |
| 312 EXPECT_TRUE(IsInitialShowState(app_window)); | 291 EXPECT_TRUE(IsInitialShowState(app_window)); |
| 313 | 292 |
| 314 CloseAppWindow(app_window); | 293 CloseAppWindow(app_window); |
| 315 } | 294 } |
| 316 | 295 |
| 317 { | 296 { |
| 318 // Repeat the test, but make sure that frameless platform apps are never put | 297 // Repeat the test, but make sure that frameless platform apps are never put |
| 319 // into immersive fullscreen. | 298 // into immersive fullscreen. |
| (...skipping 17 matching lines...) Expand all Loading... |
| 337 CloseAppWindow(app_window); | 316 CloseAppWindow(app_window); |
| 338 } | 317 } |
| 339 } | 318 } |
| 340 | 319 |
| 341 INSTANTIATE_TEST_CASE_P(InitiallyRestored, | 320 INSTANTIATE_TEST_CASE_P(InitiallyRestored, |
| 342 AcceleratorCommandsPlatformAppFullscreenBrowserTest, | 321 AcceleratorCommandsPlatformAppFullscreenBrowserTest, |
| 343 Values(ui::SHOW_STATE_NORMAL)); | 322 Values(ui::SHOW_STATE_NORMAL)); |
| 344 INSTANTIATE_TEST_CASE_P(InitiallyMaximized, | 323 INSTANTIATE_TEST_CASE_P(InitiallyMaximized, |
| 345 AcceleratorCommandsPlatformAppFullscreenBrowserTest, | 324 AcceleratorCommandsPlatformAppFullscreenBrowserTest, |
| 346 Values(ui::SHOW_STATE_MAXIMIZED)); | 325 Values(ui::SHOW_STATE_MAXIMIZED)); |
| OLD | NEW |