Chromium Code Reviews| 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 "base/command_line.h" | 5 #include "base/command_line.h" |
| 6 #include "build/build_config.h" | 6 #include "build/build_config.h" |
| 7 #include "chrome/browser/ui/browser.h" | 7 #include "chrome/browser/ui/browser.h" |
| 8 #include "chrome/browser/ui/browser_tabstrip.h" | 8 #include "chrome/browser/ui/browser_tabstrip.h" |
| 9 #include "chrome/browser/ui/exclusive_access/exclusive_access_context.h" | 9 #include "chrome/browser/ui/exclusive_access/exclusive_access_context.h" |
| 10 #include "chrome/browser/ui/exclusive_access/fullscreen_controller.h" | 10 #include "chrome/browser/ui/exclusive_access/fullscreen_controller.h" |
| (...skipping 23 matching lines...) Expand all Loading... | |
| 34 // No TO_ state for METRO_SNAP, the windows implementation is synchronous. | 34 // No TO_ state for METRO_SNAP, the windows implementation is synchronous. |
| 35 METRO_SNAP, | 35 METRO_SNAP, |
| 36 TO_NORMAL, | 36 TO_NORMAL, |
| 37 TO_FULLSCREEN, | 37 TO_FULLSCREEN, |
| 38 }; | 38 }; |
| 39 | 39 |
| 40 FullscreenControllerTestWindow(); | 40 FullscreenControllerTestWindow(); |
| 41 ~FullscreenControllerTestWindow() override {} | 41 ~FullscreenControllerTestWindow() override {} |
| 42 | 42 |
| 43 // BrowserWindow Interface: | 43 // BrowserWindow Interface: |
| 44 void EnterFullscreen(const GURL& url, | |
| 45 ExclusiveAccessBubbleType type, | |
| 46 bool with_toolbar) override; | |
| 47 void ExitFullscreen() override; | |
| 48 bool ShouldHideUIForFullscreen() const override; | 44 bool ShouldHideUIForFullscreen() const override; |
| 49 bool IsFullscreen() const override; | 45 bool IsFullscreen() const override; |
| 50 bool SupportsFullscreenWithToolbar() const override; | 46 bool SupportsFullscreenWithToolbar() const override; |
| 51 void UpdateFullscreenWithToolbar(bool with_toolbar) override; | 47 void UpdateFullscreenWithToolbar(bool with_toolbar) override; |
| 52 bool IsFullscreenWithToolbar() const override; | 48 bool IsFullscreenWithToolbar() const override; |
| 53 #if defined(OS_WIN) | 49 #if defined(OS_WIN) |
| 54 void SetMetroSnapMode(bool enable) override; | 50 void SetMetroSnapMode(bool enable) override; |
| 55 bool IsInMetroSnapMode() const override; | 51 bool IsInMetroSnapMode() const override; |
| 56 #endif | 52 #endif |
| 57 static const char* GetWindowStateString(WindowState state); | 53 static const char* GetWindowStateString(WindowState state); |
| 58 WindowState state() const { return state_; } | 54 WindowState state() const { return state_; } |
| 59 void set_browser(Browser* browser) { browser_ = browser; } | 55 void set_browser(Browser* browser) { browser_ = browser; } |
| 60 ExclusiveAccessContext* GetExclusiveAccessContext() override; | 56 ExclusiveAccessContext* GetExclusiveAccessContext() override; |
| 61 | 57 |
| 62 // ExclusiveAccessContext Interface: | 58 // ExclusiveAccessContext Interface: |
| 63 Profile* GetProfile() override; | 59 Profile* GetProfile() override; |
| 64 content::WebContents* GetActiveWebContents() override; | 60 content::WebContents* GetActiveWebContents() override; |
| 65 void HideDownloadShelf() override; | 61 void HideDownloadShelf() override; |
| 66 void UnhideDownloadShelf() override; | 62 void UnhideDownloadShelf() override; |
| 63 void EnterFullscreen(const GURL& url, | |
| 64 ExclusiveAccessBubbleType type, | |
| 65 bool with_toolbar) override; | |
| 66 void ExitFullscreen() override; | |
|
Peter Kasting
2015/12/03 04:39:11
Also move the definitions of these functions to ma
| |
| 67 void UpdateExclusiveAccessExitBubbleContent( | 67 void UpdateExclusiveAccessExitBubbleContent( |
| 68 const GURL& url, | 68 const GURL& url, |
| 69 ExclusiveAccessBubbleType bubble_type) override; | 69 ExclusiveAccessBubbleType bubble_type) override; |
| 70 | 70 |
| 71 // Simulates the window changing state. | 71 // Simulates the window changing state. |
| 72 void ChangeWindowFullscreenState(); | 72 void ChangeWindowFullscreenState(); |
| 73 | 73 |
| 74 private: | 74 private: |
| 75 // Enters fullscreen with |new_mac_with_toolbar_mode|. | 75 // Enters fullscreen with |new_mac_with_toolbar_mode|. |
| 76 void EnterFullscreen(bool new_mac_with_toolbar_mode); | 76 void EnterFullscreen(bool new_mac_with_toolbar_mode); |
| (...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 233 void FullscreenControllerTestWindow::UnhideDownloadShelf() { | 233 void FullscreenControllerTestWindow::UnhideDownloadShelf() { |
| 234 GetDownloadShelf()->Unhide(); | 234 GetDownloadShelf()->Unhide(); |
| 235 } | 235 } |
| 236 | 236 |
| 237 void FullscreenControllerTestWindow::HideDownloadShelf() { | 237 void FullscreenControllerTestWindow::HideDownloadShelf() { |
| 238 GetDownloadShelf()->Hide(); | 238 GetDownloadShelf()->Hide(); |
| 239 } | 239 } |
| 240 | 240 |
| 241 void FullscreenControllerTestWindow::UpdateExclusiveAccessExitBubbleContent( | 241 void FullscreenControllerTestWindow::UpdateExclusiveAccessExitBubbleContent( |
| 242 const GURL& url, | 242 const GURL& url, |
| 243 ExclusiveAccessBubbleType bubble_type) { | 243 ExclusiveAccessBubbleType bubble_type) {} |
| 244 TestBrowserWindow::UpdateExclusiveAccessExitBubbleContent(url, bubble_type); | |
| 245 } | |
| 246 | 244 |
| 247 // FullscreenControllerStateUnitTest ------------------------------------------- | 245 // FullscreenControllerStateUnitTest ------------------------------------------- |
| 248 | 246 |
| 249 // Unit test fixture testing Fullscreen Controller through its states. Most of | 247 // Unit test fixture testing Fullscreen Controller through its states. Most of |
| 250 // the test logic comes from FullscreenControllerStateTest. | 248 // the test logic comes from FullscreenControllerStateTest. |
| 251 class FullscreenControllerStateUnitTest : public BrowserWithTestWindowTest, | 249 class FullscreenControllerStateUnitTest : public BrowserWithTestWindowTest, |
| 252 public FullscreenControllerStateTest { | 250 public FullscreenControllerStateTest { |
| 253 public: | 251 public: |
| 254 FullscreenControllerStateUnitTest(); | 252 FullscreenControllerStateUnitTest(); |
| 255 | 253 |
| (...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 446 } | 444 } |
| 447 } | 445 } |
| 448 } | 446 } |
| 449 | 447 |
| 450 output << "\n\nAll transitions:"; | 448 output << "\n\nAll transitions:"; |
| 451 output << GetStateTransitionsAsString(); | 449 output << GetStateTransitionsAsString(); |
| 452 LOG(INFO) << output.str(); | 450 LOG(INFO) << output.str(); |
| 453 } | 451 } |
| 454 | 452 |
| 455 // Test that the fullscreen exit bubble is closed by | 453 // Test that the fullscreen exit bubble is closed by |
| 456 // WindowFullscreenStateChanged() if fullscreen is exited via BrowserWindow. | 454 // WindowFullscreenStateChanged() if fullscreen is exited via the |
| 457 // This currently occurs when an extension exits fullscreen via changing the | 455 // ExclusiveAccessContext interface. |
| 458 // browser bounds. | 456 TEST_F(FullscreenControllerStateUnitTest, |
| 459 TEST_F(FullscreenControllerStateUnitTest, ExitFullscreenViaBrowserWindow) { | 457 ExitFullscreenViaExclusiveAccessContext) { |
| 460 AddTab(browser(), GURL(url::kAboutBlankURL)); | 458 AddTab(browser(), GURL(url::kAboutBlankURL)); |
| 461 ASSERT_TRUE(InvokeEvent(TOGGLE_FULLSCREEN)); | 459 ASSERT_TRUE(InvokeEvent(TOGGLE_FULLSCREEN)); |
| 462 ASSERT_TRUE(InvokeEvent(WINDOW_CHANGE)); | 460 ASSERT_TRUE(InvokeEvent(WINDOW_CHANGE)); |
| 463 ASSERT_TRUE(browser()->window()->IsFullscreen()); | 461 ASSERT_TRUE(browser()->window()->IsFullscreen()); |
| 464 // Exit fullscreen without going through fullscreen controller. | 462 // Exit fullscreen without going through fullscreen controller. |
| 465 browser()->window()->ExitFullscreen(); | 463 window_->ExitFullscreen(); |
| 466 ChangeWindowFullscreenState(); | 464 ChangeWindowFullscreenState(); |
| 467 EXPECT_EQ(EXCLUSIVE_ACCESS_BUBBLE_TYPE_NONE, | 465 EXPECT_EQ(EXCLUSIVE_ACCESS_BUBBLE_TYPE_NONE, |
| 468 browser() | 466 browser() |
| 469 ->exclusive_access_manager() | 467 ->exclusive_access_manager() |
| 470 ->GetExclusiveAccessExitBubbleType()); | 468 ->GetExclusiveAccessExitBubbleType()); |
| 471 } | 469 } |
| 472 | 470 |
| 473 // Test that switching tabs takes the browser out of tab fullscreen. | 471 // Test that switching tabs takes the browser out of tab fullscreen. |
| 474 TEST_F(FullscreenControllerStateUnitTest, ExitTabFullscreenViaSwitchingTab) { | 472 TEST_F(FullscreenControllerStateUnitTest, ExitTabFullscreenViaSwitchingTab) { |
| 475 AddTab(browser(), GURL(url::kAboutBlankURL)); | 473 AddTab(browser(), GURL(url::kAboutBlankURL)); |
| (...skipping 351 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 827 EXPECT_FALSE(wc_delegate->IsFullscreenForTabOrPending(tab)); | 825 EXPECT_FALSE(wc_delegate->IsFullscreenForTabOrPending(tab)); |
| 828 EXPECT_FALSE(second_wc_delegate->IsFullscreenForTabOrPending(tab)); | 826 EXPECT_FALSE(second_wc_delegate->IsFullscreenForTabOrPending(tab)); |
| 829 EXPECT_FALSE(GetFullscreenController()->IsWindowFullscreenForTabOrPending()); | 827 EXPECT_FALSE(GetFullscreenController()->IsWindowFullscreenForTabOrPending()); |
| 830 EXPECT_FALSE(second_browser->exclusive_access_manager() | 828 EXPECT_FALSE(second_browser->exclusive_access_manager() |
| 831 ->fullscreen_controller() | 829 ->fullscreen_controller() |
| 832 ->IsWindowFullscreenForTabOrPending()); | 830 ->IsWindowFullscreenForTabOrPending()); |
| 833 | 831 |
| 834 // Required tear-down specific to this test. | 832 // Required tear-down specific to this test. |
| 835 second_browser->tab_strip_model()->CloseAllTabs(); | 833 second_browser->tab_strip_model()->CloseAllTabs(); |
| 836 } | 834 } |
| OLD | NEW |