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 "base/test/histogram_tester.h" | |
6 #include "build/build_config.h" | 7 #include "build/build_config.h" |
7 #include "chrome/browser/ui/browser.h" | 8 #include "chrome/browser/ui/browser.h" |
8 #include "chrome/browser/ui/browser_tabstrip.h" | 9 #include "chrome/browser/ui/browser_tabstrip.h" |
9 #include "chrome/browser/ui/exclusive_access/exclusive_access_context.h" | 10 #include "chrome/browser/ui/exclusive_access/exclusive_access_context.h" |
10 #include "chrome/browser/ui/exclusive_access/fullscreen_controller.h" | 11 #include "chrome/browser/ui/exclusive_access/fullscreen_controller.h" |
11 #include "chrome/browser/ui/exclusive_access/fullscreen_controller_state_test.h" | 12 #include "chrome/browser/ui/exclusive_access/fullscreen_controller_state_test.h" |
12 #include "chrome/browser/ui/tabs/tab_strip_model.h" | 13 #include "chrome/browser/ui/tabs/tab_strip_model.h" |
13 #include "chrome/test/base/browser_with_test_window_test.h" | 14 #include "chrome/test/base/browser_with_test_window_test.h" |
14 #include "content/public/browser/web_contents.h" | 15 #include "content/public/browser/web_contents.h" |
15 #include "content/public/common/url_constants.h" | 16 #include "content/public/common/url_constants.h" |
16 #include "testing/gmock/include/gmock/gmock.h" | 17 #include "testing/gmock/include/gmock/gmock.h" |
17 #include "testing/gtest/include/gtest/gtest.h" | 18 #include "testing/gtest/include/gtest/gtest.h" |
18 | 19 |
19 // The FullscreenControllerStateUnitTest unit test suite exhastively tests | 20 // The FullscreenControllerStateUnitTest unit test suite exhastively tests |
20 // the FullscreenController through all permutations of events. The behavior | 21 // the FullscreenController through all permutations of events. The behavior |
21 // of the BrowserWindow is mocked via FullscreenControllerTestWindow. | 22 // of the BrowserWindow is mocked via FullscreenControllerTestWindow. |
22 | 23 |
24 namespace { | |
25 | |
26 const char kFullscreenReshowHistogramName[] = | |
27 "ExclusiveAccess.FullscreenBubbleReshowsPerSession"; | |
23 | 28 |
24 // FullscreenControllerTestWindow ---------------------------------------------- | 29 // FullscreenControllerTestWindow ---------------------------------------------- |
25 | 30 |
26 // A BrowserWindow used for testing FullscreenController. The behavior of this | 31 // A BrowserWindow used for testing FullscreenController. The behavior of this |
27 // mock is verfied manually by running FullscreenControllerStateInteractiveTest. | 32 // mock is verfied manually by running FullscreenControllerStateInteractiveTest. |
28 class FullscreenControllerTestWindow : public TestBrowserWindow, | 33 class FullscreenControllerTestWindow : public TestBrowserWindow, |
29 ExclusiveAccessContext { | 34 ExclusiveAccessContext { |
30 public: | 35 public: |
31 // Simulate the window state with an enumeration. | 36 // Simulate the window state with an enumeration. |
32 enum WindowState { | 37 enum WindowState { |
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
239 void FullscreenControllerTestWindow::HideDownloadShelf() { | 244 void FullscreenControllerTestWindow::HideDownloadShelf() { |
240 GetDownloadShelf()->Hide(); | 245 GetDownloadShelf()->Hide(); |
241 } | 246 } |
242 | 247 |
243 void FullscreenControllerTestWindow::UpdateExclusiveAccessExitBubbleContent( | 248 void FullscreenControllerTestWindow::UpdateExclusiveAccessExitBubbleContent( |
244 const GURL& url, | 249 const GURL& url, |
245 ExclusiveAccessBubbleType bubble_type) {} | 250 ExclusiveAccessBubbleType bubble_type) {} |
246 | 251 |
247 void FullscreenControllerTestWindow::OnExclusiveAccessUserInput() {} | 252 void FullscreenControllerTestWindow::OnExclusiveAccessUserInput() {} |
248 | 253 |
254 } // namespace | |
255 | |
249 // FullscreenControllerStateUnitTest ------------------------------------------- | 256 // FullscreenControllerStateUnitTest ------------------------------------------- |
250 | 257 |
251 // Unit test fixture testing Fullscreen Controller through its states. Most of | 258 // Unit test fixture testing Fullscreen Controller through its states. Most of |
252 // the test logic comes from FullscreenControllerStateTest. | 259 // the test logic comes from FullscreenControllerStateTest. |
253 class FullscreenControllerStateUnitTest : public BrowserWithTestWindowTest, | 260 class FullscreenControllerStateUnitTest : public BrowserWithTestWindowTest, |
254 public FullscreenControllerStateTest { | 261 public FullscreenControllerStateTest { |
255 public: | 262 public: |
256 FullscreenControllerStateUnitTest(); | 263 FullscreenControllerStateUnitTest(); |
257 | 264 |
258 // FullscreenControllerStateTest: | 265 // FullscreenControllerStateTest: |
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
467 window_->ExitFullscreen(); | 474 window_->ExitFullscreen(); |
468 ChangeWindowFullscreenState(); | 475 ChangeWindowFullscreenState(); |
469 EXPECT_EQ(EXCLUSIVE_ACCESS_BUBBLE_TYPE_NONE, | 476 EXPECT_EQ(EXCLUSIVE_ACCESS_BUBBLE_TYPE_NONE, |
470 browser() | 477 browser() |
471 ->exclusive_access_manager() | 478 ->exclusive_access_manager() |
472 ->GetExclusiveAccessExitBubbleType()); | 479 ->GetExclusiveAccessExitBubbleType()); |
473 } | 480 } |
474 | 481 |
475 // Test that switching tabs takes the browser out of tab fullscreen. | 482 // Test that switching tabs takes the browser out of tab fullscreen. |
476 TEST_F(FullscreenControllerStateUnitTest, ExitTabFullscreenViaSwitchingTab) { | 483 TEST_F(FullscreenControllerStateUnitTest, ExitTabFullscreenViaSwitchingTab) { |
484 base::HistogramTester histogram_tester; | |
485 | |
477 AddTab(browser(), GURL(url::kAboutBlankURL)); | 486 AddTab(browser(), GURL(url::kAboutBlankURL)); |
478 AddTab(browser(), GURL(url::kAboutBlankURL)); | 487 AddTab(browser(), GURL(url::kAboutBlankURL)); |
479 ASSERT_TRUE(InvokeEvent(TAB_FULLSCREEN_TRUE)); | 488 ASSERT_TRUE(InvokeEvent(TAB_FULLSCREEN_TRUE)); |
480 ASSERT_TRUE(InvokeEvent(WINDOW_CHANGE)); | 489 ASSERT_TRUE(InvokeEvent(WINDOW_CHANGE)); |
481 ASSERT_TRUE(browser()->window()->IsFullscreen()); | 490 ASSERT_TRUE(browser()->window()->IsFullscreen()); |
491 histogram_tester.ExpectTotalCount(kFullscreenReshowHistogramName, 0); | |
482 | 492 |
483 browser()->tab_strip_model()->SelectNextTab(); | 493 browser()->tab_strip_model()->SelectNextTab(); |
484 ChangeWindowFullscreenState(); | 494 ChangeWindowFullscreenState(); |
485 EXPECT_FALSE(browser()->window()->IsFullscreen()); | 495 EXPECT_FALSE(browser()->window()->IsFullscreen()); |
496 | |
497 // Do a simple test that histograms are being recorded upon exiting the | |
498 // fullscreen session. | |
499 histogram_tester.ExpectUniqueSample(kFullscreenReshowHistogramName, 0, 1); | |
dominickn
2016/02/23 00:05:27
Nit: is there a test that reshows the bubble so yo
Matt Giuca
2016/02/23 02:50:28
No, there isn't. I tried writing some minimal test
dominickn
2016/02/23 03:05:53
Acknowledged.
| |
486 } | 500 } |
487 | 501 |
488 // Test that switching tabs via detaching the active tab (which is in tab | 502 // Test that switching tabs via detaching the active tab (which is in tab |
489 // fullscreen) takes the browser out of tab fullscreen. This case can | 503 // fullscreen) takes the browser out of tab fullscreen. This case can |
490 // occur if the user is in both tab fullscreen and immersive browser fullscreen. | 504 // occur if the user is in both tab fullscreen and immersive browser fullscreen. |
491 TEST_F(FullscreenControllerStateUnitTest, ExitTabFullscreenViaDetachingTab) { | 505 TEST_F(FullscreenControllerStateUnitTest, ExitTabFullscreenViaDetachingTab) { |
492 AddTab(browser(), GURL(url::kAboutBlankURL)); | 506 AddTab(browser(), GURL(url::kAboutBlankURL)); |
493 AddTab(browser(), GURL(url::kAboutBlankURL)); | 507 AddTab(browser(), GURL(url::kAboutBlankURL)); |
494 ASSERT_TRUE(InvokeEvent(TAB_FULLSCREEN_TRUE)); | 508 ASSERT_TRUE(InvokeEvent(TAB_FULLSCREEN_TRUE)); |
495 ASSERT_TRUE(InvokeEvent(WINDOW_CHANGE)); | 509 ASSERT_TRUE(InvokeEvent(WINDOW_CHANGE)); |
(...skipping 389 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
885 EXPECT_FALSE(wc_delegate->IsFullscreenForTabOrPending(tab)); | 899 EXPECT_FALSE(wc_delegate->IsFullscreenForTabOrPending(tab)); |
886 EXPECT_FALSE(second_wc_delegate->IsFullscreenForTabOrPending(tab)); | 900 EXPECT_FALSE(second_wc_delegate->IsFullscreenForTabOrPending(tab)); |
887 EXPECT_FALSE(GetFullscreenController()->IsWindowFullscreenForTabOrPending()); | 901 EXPECT_FALSE(GetFullscreenController()->IsWindowFullscreenForTabOrPending()); |
888 EXPECT_FALSE(second_browser->exclusive_access_manager() | 902 EXPECT_FALSE(second_browser->exclusive_access_manager() |
889 ->fullscreen_controller() | 903 ->fullscreen_controller() |
890 ->IsWindowFullscreenForTabOrPending()); | 904 ->IsWindowFullscreenForTabOrPending()); |
891 | 905 |
892 // Required tear-down specific to this test. | 906 // Required tear-down specific to this test. |
893 second_browser->tab_strip_model()->CloseAllTabs(); | 907 second_browser->tab_strip_model()->CloseAllTabs(); |
894 } | 908 } |
OLD | NEW |