| 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/logging.h" | 6 #include "base/logging.h" |
| 7 #include "base/strings/utf_string_conversions.h" | 7 #include "base/strings/utf_string_conversions.h" |
| 8 #include "content/browser/frame_host/cross_site_transferring_request.h" | 8 #include "content/browser/frame_host/cross_site_transferring_request.h" |
| 9 #include "content/browser/frame_host/interstitial_page_impl.h" | 9 #include "content/browser/frame_host/interstitial_page_impl.h" |
| 10 #include "content/browser/frame_host/navigation_entry_impl.h" | 10 #include "content/browser/frame_host/navigation_entry_impl.h" |
| (...skipping 1408 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1419 | 1419 |
| 1420 contents()->SetDelegate(NULL); | 1420 contents()->SetDelegate(NULL); |
| 1421 } | 1421 } |
| 1422 | 1422 |
| 1423 TEST_F(WebContentsImplTest, TerminateHidesValidationMessage) { | 1423 TEST_F(WebContentsImplTest, TerminateHidesValidationMessage) { |
| 1424 FakeValidationMessageDelegate fake_delegate; | 1424 FakeValidationMessageDelegate fake_delegate; |
| 1425 contents()->SetDelegate(&fake_delegate); | 1425 contents()->SetDelegate(&fake_delegate); |
| 1426 EXPECT_FALSE(fake_delegate.hide_validation_message_was_called()); | 1426 EXPECT_FALSE(fake_delegate.hide_validation_message_was_called()); |
| 1427 | 1427 |
| 1428 // Crash the renderer. | 1428 // Crash the renderer. |
| 1429 contents()->GetMainFrame()->GetRenderViewHost()->OnMessageReceived( | 1429 contents()->GetMainFrame()->OnMessageReceived( |
| 1430 ViewHostMsg_RenderProcessGone( | 1430 FrameHostMsg_RenderProcessGone( |
| 1431 0, base::TERMINATION_STATUS_PROCESS_CRASHED, -1)); | 1431 0, base::TERMINATION_STATUS_PROCESS_CRASHED, -1)); |
| 1432 | 1432 |
| 1433 // Confirm HideValidationMessage was called. | 1433 // Confirm HideValidationMessage was called. |
| 1434 EXPECT_TRUE(fake_delegate.hide_validation_message_was_called()); | 1434 EXPECT_TRUE(fake_delegate.hide_validation_message_was_called()); |
| 1435 | 1435 |
| 1436 contents()->SetDelegate(NULL); | 1436 contents()->SetDelegate(NULL); |
| 1437 } | 1437 } |
| 1438 | 1438 |
| 1439 // Tests that fullscreen is exited throughout the object hierarchy on a renderer | 1439 // Tests that fullscreen is exited throughout the object hierarchy on a renderer |
| 1440 // crash. | 1440 // crash. |
| (...skipping 12 matching lines...) Expand all Loading... |
| 1453 EXPECT_FALSE(test_rvh()->IsFullscreen()); | 1453 EXPECT_FALSE(test_rvh()->IsFullscreen()); |
| 1454 EXPECT_FALSE(contents()->IsFullscreenForCurrentTab()); | 1454 EXPECT_FALSE(contents()->IsFullscreenForCurrentTab()); |
| 1455 EXPECT_FALSE(fake_delegate.IsFullscreenForTabOrPending(contents())); | 1455 EXPECT_FALSE(fake_delegate.IsFullscreenForTabOrPending(contents())); |
| 1456 contents()->GetMainFrame()->OnMessageReceived(FrameHostMsg_ToggleFullscreen( | 1456 contents()->GetMainFrame()->OnMessageReceived(FrameHostMsg_ToggleFullscreen( |
| 1457 contents()->GetMainFrame()->GetRoutingID(), true)); | 1457 contents()->GetMainFrame()->GetRoutingID(), true)); |
| 1458 EXPECT_TRUE(test_rvh()->IsFullscreen()); | 1458 EXPECT_TRUE(test_rvh()->IsFullscreen()); |
| 1459 EXPECT_TRUE(contents()->IsFullscreenForCurrentTab()); | 1459 EXPECT_TRUE(contents()->IsFullscreenForCurrentTab()); |
| 1460 EXPECT_TRUE(fake_delegate.IsFullscreenForTabOrPending(contents())); | 1460 EXPECT_TRUE(fake_delegate.IsFullscreenForTabOrPending(contents())); |
| 1461 | 1461 |
| 1462 // Crash the renderer. | 1462 // Crash the renderer. |
| 1463 test_rvh()->OnMessageReceived( | 1463 main_rfh()->OnMessageReceived( |
| 1464 ViewHostMsg_RenderProcessGone( | 1464 FrameHostMsg_RenderProcessGone( |
| 1465 0, base::TERMINATION_STATUS_PROCESS_CRASHED, -1)); | 1465 0, base::TERMINATION_STATUS_PROCESS_CRASHED, -1)); |
| 1466 | 1466 |
| 1467 // Confirm fullscreen has exited. | 1467 // Confirm fullscreen has exited. |
| 1468 EXPECT_FALSE(test_rvh()->IsFullscreen()); | 1468 EXPECT_FALSE(test_rvh()->IsFullscreen()); |
| 1469 EXPECT_FALSE(contents()->IsFullscreenForCurrentTab()); | 1469 EXPECT_FALSE(contents()->IsFullscreenForCurrentTab()); |
| 1470 EXPECT_FALSE(fake_delegate.IsFullscreenForTabOrPending(contents())); | 1470 EXPECT_FALSE(fake_delegate.IsFullscreenForTabOrPending(contents())); |
| 1471 | 1471 |
| 1472 contents()->SetDelegate(NULL); | 1472 contents()->SetDelegate(NULL); |
| 1473 } | 1473 } |
| 1474 | 1474 |
| (...skipping 384 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1859 bool deleted = false; | 1859 bool deleted = false; |
| 1860 GURL interstitial_url("http://interstitial"); | 1860 GURL interstitial_url("http://interstitial"); |
| 1861 TestInterstitialPage* interstitial = | 1861 TestInterstitialPage* interstitial = |
| 1862 new TestInterstitialPage(contents(), true, interstitial_url, | 1862 new TestInterstitialPage(contents(), true, interstitial_url, |
| 1863 &state, &deleted); | 1863 &state, &deleted); |
| 1864 TestInterstitialPageStateGuard state_guard(interstitial); | 1864 TestInterstitialPageStateGuard state_guard(interstitial); |
| 1865 interstitial->Show(); | 1865 interstitial->Show(); |
| 1866 interstitial->TestDidNavigate(2, interstitial_url); | 1866 interstitial->TestDidNavigate(2, interstitial_url); |
| 1867 | 1867 |
| 1868 // Crash the renderer | 1868 // Crash the renderer |
| 1869 test_rvh()->OnMessageReceived( | 1869 main_rfh()->OnMessageReceived( |
| 1870 ViewHostMsg_RenderProcessGone( | 1870 FrameHostMsg_RenderProcessGone( |
| 1871 0, base::TERMINATION_STATUS_PROCESS_CRASHED, -1)); | 1871 0, base::TERMINATION_STATUS_PROCESS_CRASHED, -1)); |
| 1872 | 1872 |
| 1873 // While the interstitial is showing, go back. | 1873 // While the interstitial is showing, go back. |
| 1874 controller().GoBack(); | 1874 controller().GoBack(); |
| 1875 contents()->GetMainFrame()->SendNavigate(1, url1); | 1875 contents()->GetMainFrame()->SendNavigate(1, url1); |
| 1876 | 1876 |
| 1877 // Make sure we are back to the original page and that the interstitial is | 1877 // Make sure we are back to the original page and that the interstitial is |
| 1878 // gone. | 1878 // gone. |
| 1879 EXPECT_EQ(TestInterstitialPage::CANCELED, state); | 1879 EXPECT_EQ(TestInterstitialPage::CANCELED, state); |
| 1880 NavigationEntry* entry = controller().GetVisibleEntry(); | 1880 NavigationEntry* entry = controller().GetVisibleEntry(); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 1898 TestInterstitialPage::INVALID; | 1898 TestInterstitialPage::INVALID; |
| 1899 bool deleted = false; | 1899 bool deleted = false; |
| 1900 GURL interstitial_url("http://interstitial"); | 1900 GURL interstitial_url("http://interstitial"); |
| 1901 TestInterstitialPage* interstitial = | 1901 TestInterstitialPage* interstitial = |
| 1902 new TestInterstitialPage(contents(), true, interstitial_url, | 1902 new TestInterstitialPage(contents(), true, interstitial_url, |
| 1903 &state, &deleted); | 1903 &state, &deleted); |
| 1904 TestInterstitialPageStateGuard state_guard(interstitial); | 1904 TestInterstitialPageStateGuard state_guard(interstitial); |
| 1905 interstitial->Show(); | 1905 interstitial->Show(); |
| 1906 | 1906 |
| 1907 // Crash the renderer | 1907 // Crash the renderer |
| 1908 test_rvh()->OnMessageReceived( | 1908 main_rfh()->OnMessageReceived( |
| 1909 ViewHostMsg_RenderProcessGone( | 1909 FrameHostMsg_RenderProcessGone( |
| 1910 0, base::TERMINATION_STATUS_PROCESS_CRASHED, -1)); | 1910 0, base::TERMINATION_STATUS_PROCESS_CRASHED, -1)); |
| 1911 | 1911 |
| 1912 interstitial->TestDidNavigate(2, interstitial_url); | 1912 interstitial->TestDidNavigate(2, interstitial_url); |
| 1913 } | 1913 } |
| 1914 | 1914 |
| 1915 // Test navigating to a page that shows an interstitial, then close the | 1915 // Test navigating to a page that shows an interstitial, then close the |
| 1916 // contents. | 1916 // contents. |
| 1917 TEST_F(WebContentsImplTest, ShowInterstitialThenCloseTab) { | 1917 TEST_F(WebContentsImplTest, ShowInterstitialThenCloseTab) { |
| 1918 // Show interstitial. | 1918 // Show interstitial. |
| 1919 TestInterstitialPage::InterstitialState state = | 1919 TestInterstitialPage::InterstitialState state = |
| (...skipping 30 matching lines...) Expand all Loading... |
| 1950 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>( | 1950 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>( |
| 1951 interstitial->GetMainFrame()->GetRenderViewHost()); | 1951 interstitial->GetMainFrame()->GetRenderViewHost()); |
| 1952 | 1952 |
| 1953 // Now close the contents. | 1953 // Now close the contents. |
| 1954 DeleteContents(); | 1954 DeleteContents(); |
| 1955 EXPECT_EQ(TestInterstitialPage::CANCELED, state); | 1955 EXPECT_EQ(TestInterstitialPage::CANCELED, state); |
| 1956 | 1956 |
| 1957 // Before the interstitial has a chance to process its shutdown task, | 1957 // Before the interstitial has a chance to process its shutdown task, |
| 1958 // simulate quitting the browser. This goes through all processes and | 1958 // simulate quitting the browser. This goes through all processes and |
| 1959 // tells them to destruct. | 1959 // tells them to destruct. |
| 1960 rvh->OnMessageReceived( | 1960 rvh->GetMainFrame()->OnMessageReceived( |
| 1961 ViewHostMsg_RenderProcessGone(0, 0, 0)); | 1961 FrameHostMsg_RenderProcessGone(0, 0, 0)); |
| 1962 | 1962 |
| 1963 RunAllPendingInMessageLoop(); | 1963 RunAllPendingInMessageLoop(); |
| 1964 EXPECT_TRUE(deleted); | 1964 EXPECT_TRUE(deleted); |
| 1965 } | 1965 } |
| 1966 | 1966 |
| 1967 // Test that after Proceed is called and an interstitial is still shown, no more | 1967 // Test that after Proceed is called and an interstitial is still shown, no more |
| 1968 // commands get executed. | 1968 // commands get executed. |
| 1969 TEST_F(WebContentsImplTest, ShowInterstitialProceedMultipleCommands) { | 1969 TEST_F(WebContentsImplTest, ShowInterstitialProceedMultipleCommands) { |
| 1970 // Navigate to a page so we have a navigation entry in the controller. | 1970 // Navigate to a page so we have a navigation entry in the controller. |
| 1971 GURL url1("http://www.google.com"); | 1971 GURL url1("http://www.google.com"); |
| (...skipping 1009 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2981 // Start a player with both audio and video. A video power save blocker | 2981 // Start a player with both audio and video. A video power save blocker |
| 2982 // should be created. If audio stream monitoring is available, an audio power | 2982 // should be created. If audio stream monitoring is available, an audio power |
| 2983 // save blocker should be created too. | 2983 // save blocker should be created too. |
| 2984 rfh->OnMessageReceived(FrameHostMsg_MediaPlayingNotification( | 2984 rfh->OnMessageReceived(FrameHostMsg_MediaPlayingNotification( |
| 2985 0, kPlayerAudioVideoId, true, true, false)); | 2985 0, kPlayerAudioVideoId, true, true, false)); |
| 2986 EXPECT_TRUE(contents()->has_video_power_save_blocker_for_testing()); | 2986 EXPECT_TRUE(contents()->has_video_power_save_blocker_for_testing()); |
| 2987 EXPECT_EQ(contents()->has_audio_power_save_blocker_for_testing(), | 2987 EXPECT_EQ(contents()->has_audio_power_save_blocker_for_testing(), |
| 2988 !AudioStreamMonitor::monitoring_available()); | 2988 !AudioStreamMonitor::monitoring_available()); |
| 2989 | 2989 |
| 2990 // Crash the renderer. | 2990 // Crash the renderer. |
| 2991 contents()->GetMainFrame()->GetRenderViewHost()->OnMessageReceived( | 2991 contents()->GetMainFrame()->OnMessageReceived( |
| 2992 ViewHostMsg_RenderProcessGone( | 2992 FrameHostMsg_RenderProcessGone( |
| 2993 0, base::TERMINATION_STATUS_PROCESS_CRASHED, -1)); | 2993 0, base::TERMINATION_STATUS_PROCESS_CRASHED, -1)); |
| 2994 | 2994 |
| 2995 // Verify that all the power save blockers have been released. | 2995 // Verify that all the power save blockers have been released. |
| 2996 EXPECT_FALSE(contents()->has_video_power_save_blocker_for_testing()); | 2996 EXPECT_FALSE(contents()->has_video_power_save_blocker_for_testing()); |
| 2997 EXPECT_FALSE(contents()->has_audio_power_save_blocker_for_testing()); | 2997 EXPECT_FALSE(contents()->has_audio_power_save_blocker_for_testing()); |
| 2998 } | 2998 } |
| 2999 #endif | 2999 #endif |
| 3000 | 3000 |
| 3001 // Test that sudden termination status is properly tracked for a frame. | 3001 // Test that sudden termination status is properly tracked for a frame. |
| 3002 TEST_F(WebContentsImplTest, SuddenTerminationForFrame) { | 3002 TEST_F(WebContentsImplTest, SuddenTerminationForFrame) { |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3038 frame->SendBeforeUnloadHandlersPresent(false); | 3038 frame->SendBeforeUnloadHandlersPresent(false); |
| 3039 EXPECT_FALSE(frame->SuddenTerminationAllowed()); | 3039 EXPECT_FALSE(frame->SuddenTerminationAllowed()); |
| 3040 frame->SendBeforeUnloadHandlersPresent(true); | 3040 frame->SendBeforeUnloadHandlersPresent(true); |
| 3041 frame->SendUnloadHandlersPresent(false); | 3041 frame->SendUnloadHandlersPresent(false); |
| 3042 EXPECT_FALSE(frame->SuddenTerminationAllowed()); | 3042 EXPECT_FALSE(frame->SuddenTerminationAllowed()); |
| 3043 frame->SendBeforeUnloadHandlersPresent(false); | 3043 frame->SendBeforeUnloadHandlersPresent(false); |
| 3044 EXPECT_TRUE(frame->SuddenTerminationAllowed()); | 3044 EXPECT_TRUE(frame->SuddenTerminationAllowed()); |
| 3045 } | 3045 } |
| 3046 | 3046 |
| 3047 } // namespace content | 3047 } // namespace content |
| OLD | NEW |