| Index: content/browser/web_contents/web_contents_impl_unittest.cc
|
| diff --git a/content/browser/web_contents/web_contents_impl_unittest.cc b/content/browser/web_contents/web_contents_impl_unittest.cc
|
| index a6a66bbdf77c2a0634a30c6975e56ff88ea398e4..051e011c8bf2480b1112d3efd379c1d40c462f4b 100644
|
| --- a/content/browser/web_contents/web_contents_impl_unittest.cc
|
| +++ b/content/browser/web_contents/web_contents_impl_unittest.cc
|
| @@ -1299,6 +1299,58 @@ TEST_F(WebContentsImplTest, NavigationExitsFullscreen) {
|
| contents()->SetDelegate(NULL);
|
| }
|
|
|
| +// Tests that fullscreen is exited throughout the object hierarchy when
|
| +// instructing NavigationController to GoBack() or GoForward().
|
| +TEST_F(WebContentsImplTest, HistoryNavigationExitsFullscreen) {
|
| + FakeFullscreenDelegate fake_delegate;
|
| + contents()->SetDelegate(&fake_delegate);
|
| + TestRenderViewHost* const orig_rvh = test_rvh();
|
| +
|
| + // Navigate to a site.
|
| + const GURL url("http://www.google.com");
|
| + controller().LoadURL(url, Referrer(), PAGE_TRANSITION_TYPED, std::string());
|
| + contents()->TestDidNavigate(orig_rvh, 1, url, PAGE_TRANSITION_TYPED);
|
| + EXPECT_EQ(orig_rvh, contents()->GetRenderViewHost());
|
| +
|
| + // Now, navigate to another page on the same site.
|
| + const GURL url2("http://www.google.com/search?q=kittens");
|
| + controller().LoadURL(url2, Referrer(), PAGE_TRANSITION_TYPED, std::string());
|
| + EXPECT_FALSE(contents()->cross_navigation_pending());
|
| + contents()->TestDidNavigate(orig_rvh, 2, url2, PAGE_TRANSITION_TYPED);
|
| + EXPECT_EQ(orig_rvh, contents()->GetRenderViewHost());
|
| +
|
| + // Sanity-check: Confirm we're not starting out in fullscreen mode.
|
| + EXPECT_FALSE(orig_rvh->IsFullscreen());
|
| + EXPECT_FALSE(contents()->IsFullscreenForCurrentTab());
|
| + EXPECT_FALSE(fake_delegate.IsFullscreenForTabOrPending(contents()));
|
| +
|
| + for (int i = 0; i < 2; ++i) {
|
| + // Toggle fullscreen mode on (as if initiated via IPC from renderer).
|
| + orig_rvh->OnMessageReceived(
|
| + ViewHostMsg_ToggleFullscreen(orig_rvh->GetRoutingID(), true));
|
| + EXPECT_TRUE(orig_rvh->IsFullscreen());
|
| + EXPECT_TRUE(contents()->IsFullscreenForCurrentTab());
|
| + EXPECT_TRUE(fake_delegate.IsFullscreenForTabOrPending(contents()));
|
| +
|
| + // Navigate backward (or forward).
|
| + if (i == 0)
|
| + controller().GoBack();
|
| + else
|
| + controller().GoForward();
|
| + EXPECT_FALSE(contents()->cross_navigation_pending());
|
| + EXPECT_EQ(orig_rvh, contents()->GetRenderViewHost());
|
| + contents()->TestDidNavigate(
|
| + orig_rvh, i + 1, url, PAGE_TRANSITION_FORWARD_BACK);
|
| +
|
| + // Confirm fullscreen has exited.
|
| + EXPECT_FALSE(orig_rvh->IsFullscreen());
|
| + EXPECT_FALSE(contents()->IsFullscreenForCurrentTab());
|
| + EXPECT_FALSE(fake_delegate.IsFullscreenForTabOrPending(contents()));
|
| + }
|
| +
|
| + contents()->SetDelegate(NULL);
|
| +}
|
| +
|
| // Tests that fullscreen is exited throughout the object hierarchy on a renderer
|
| // crash.
|
| TEST_F(WebContentsImplTest, CrashExitsFullscreen) {
|
|
|