Chromium Code Reviews| Index: chrome/browser/lifetime/browser_close_manager_browsertest.cc |
| diff --git a/chrome/browser/lifetime/browser_close_manager_browsertest.cc b/chrome/browser/lifetime/browser_close_manager_browsertest.cc |
| index fa9d7b997d77c3aa502e0c18a46295a6eebeab50..c0cde5e2a5fad0f167843c464fdbd8b1d65cf667 100644 |
| --- a/chrome/browser/lifetime/browser_close_manager_browsertest.cc |
| +++ b/chrome/browser/lifetime/browser_close_manager_browsertest.cc |
| @@ -42,6 +42,8 @@ |
| #include "content/public/browser/download_item.h" |
| #include "content/public/browser/download_manager.h" |
| #include "content/public/browser/notification_service.h" |
| +#include "content/public/browser/render_view_host.h" |
| +#include "content/public/browser/render_widget_host.h" |
| #include "content/public/browser/web_contents.h" |
| #include "content/public/test/download_test_observer.h" |
| #include "content/public/test/test_navigation_observer.h" |
| @@ -249,6 +251,17 @@ class BrowserCloseManagerBrowserTest |
| observer.NumDownloadsSeenInState(content::DownloadItem::IN_PROGRESS)); |
| } |
| + // Makes sure that hang monitor will not trigger RendererUnresponsive |
| + // for that web content. |
|
Charlie Reis
2016/05/23 17:03:30
Please mention that this must be called before any
|
| + void DisableHangMonitor(content::WebContents* web_contents) { |
| + web_contents->GetRenderViewHost()->GetWidget()->DisableHangMonitorForTest(); |
| + } |
| + |
| + void DisableHangMonitor(Browser* browser) { |
| + for (int i = 0; i < browser->tab_strip_model()->count(); i++) |
| + DisableHangMonitor(browser->tab_strip_model()->GetWebContentsAt(i)); |
| + } |
| + |
| std::vector<Browser*> browsers_; |
| }; |
| @@ -256,6 +269,8 @@ IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, TestSingleTabShutdown) { |
| ASSERT_TRUE(embedded_test_server()->Start()); |
| ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| browser(), embedded_test_server()->GetURL("/beforeunload.html"))); |
| + DisableHangMonitor(browser()); |
| + |
| RepeatedNotificationObserver cancel_observer( |
| chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); |
| chrome::CloseAllBrowsersAndQuit(); |
| @@ -278,6 +293,8 @@ IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
| ASSERT_TRUE(embedded_test_server()->Start()); |
| ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| browser(), embedded_test_server()->GetURL("/beforeunload.html"))); |
| + DisableHangMonitor(browser()); |
| + |
| RepeatedNotificationObserver cancel_observer( |
| chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); |
| chrome::CloseAllBrowsersAndQuit(); |
| @@ -297,20 +314,16 @@ IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
| EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| } |
| -// Test is flaky on Mac. http://crbug.com/517687 |
| -#if defined(OS_MACOSX) |
| -#define MAYBE_PRE_TestSessionRestore DISABLED_PRE_TestSessionRestore |
| -#else |
| -#define MAYBE_PRE_TestSessionRestore DISABLED_PRE_TestSessionRestore |
| -#endif |
| IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
| - MAYBE_PRE_TestSessionRestore) { |
| + PRE_TestSessionRestore) { |
| ASSERT_TRUE(embedded_test_server()->Start()); |
| ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| browser(), embedded_test_server()->GetURL("/beforeunload.html"))); |
| AddBlankTabAndShow(browser()); |
| ASSERT_NO_FATAL_FAILURE( |
| ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIAboutURL))); |
| + DisableHangMonitor(browser()); |
| + |
| RepeatedNotificationObserver cancel_observer( |
| chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); |
| chrome::CloseAllBrowsersAndQuit(); |
| @@ -340,14 +353,8 @@ IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
| // Test that the tab closed after the aborted shutdown attempt is not re-opened |
| // when restoring the session. |
| -// Test is flaky on Mac. http://crbug.com/517687 |
| -#if defined(OS_MACOSX) |
| -#define MAYBE_TestSessionRestore DISABLED_TestSessionRestore |
| -#else |
| -#define MAYBE_TestSessionRestore DISABLED_TestSessionRestore |
| -#endif |
| IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
| - MAYBE_TestSessionRestore) { |
| + TestSessionRestore) { |
| // The testing framework launches Chrome with about:blank as args. |
| EXPECT_EQ(2, browser()->tab_strip_model()->count()); |
| EXPECT_EQ(GURL(chrome::kChromeUIVersionURL), |
| @@ -365,6 +372,8 @@ IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, TestMultipleWindows) { |
| browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); |
| ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); |
| + DisableHangMonitor(browsers_[0]); |
| + DisableHangMonitor(browsers_[1]); |
| // Cancel shutdown on the first beforeunload event. |
| { |
| @@ -405,23 +414,15 @@ IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, TestMultipleWindows) { |
| // Test that tabs in the same window with a beforeunload event that hangs are |
| // treated the same as the user accepting the close, but do not close the tab |
| // early. |
| -// Test is flaky on windows, disabled. See http://crbug.com/276366 |
| -// Test is flaky on Mac. See http://crbug.com/517687. |
| -#if defined(OS_WIN) || defined(OS_MACOSX) |
| -#define MAYBE_TestHangInBeforeUnloadMultipleTabs \ |
| - DISABLED_TestHangInBeforeUnloadMultipleTabs |
| -#else |
| -#define MAYBE_TestHangInBeforeUnloadMultipleTabs \ |
| - TestHangInBeforeUnloadMultipleTabs |
| -#endif |
| IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
| - MAYBE_TestHangInBeforeUnloadMultipleTabs) { |
| + TestHangInBeforeUnloadMultipleTabs) { |
| ASSERT_TRUE(embedded_test_server()->Start()); |
| ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| browsers_[0], embedded_test_server()->GetURL("/beforeunload_hang.html"))); |
| AddBlankTabAndShow(browsers_[0]); |
| ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); |
| + DisableHangMonitor(browsers_[0]->tab_strip_model()->GetWebContentsAt(1)); |
|
Charlie Reis
2016/05/23 17:03:30
nit: Move this line after this block of NavigateTo
|
| AddBlankTabAndShow(browsers_[0]); |
| ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| browsers_[0], embedded_test_server()->GetURL("/beforeunload_hang.html"))); |
| @@ -456,6 +457,7 @@ IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
| browsers_[0], embedded_test_server()->GetURL("/beforeunload_hang.html"))); |
| ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); |
| + DisableHangMonitor(browsers_[1]); |
|
Charlie Reis
2016/05/23 17:03:29
Same as above.
|
| ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| browsers_[2], embedded_test_server()->GetURL("/beforeunload_hang.html"))); |
| @@ -485,6 +487,7 @@ IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
| ASSERT_TRUE(embedded_test_server()->Start()); |
| ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); |
| + DisableHangMonitor(browsers_[0]); |
| RepeatedNotificationObserver close_observer( |
| chrome::NOTIFICATION_BROWSER_CLOSED, 2); |
| @@ -503,6 +506,7 @@ IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
| ASSERT_TRUE(embedded_test_server()->Start()); |
| ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); |
| + DisableHangMonitor(browsers_[0]); |
| RepeatedNotificationObserver cancel_observer( |
| chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2); |
| @@ -510,6 +514,7 @@ IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
| browsers_.push_back(CreateBrowser(browser()->profile())); |
| ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); |
| + DisableHangMonitor(browsers_[1]); |
| ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| ASSERT_NO_FATAL_FAILURE(CancelClose()); |
| cancel_observer.Wait(); |
| @@ -529,15 +534,16 @@ IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
| } |
| // Test that tabs added during shutdown are closed. |
| -// Disabled for being flaky tests: crbug.com/519646 |
| IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
| - DISABLED_TestAddTabDuringShutdown) { |
| + TestAddTabDuringShutdown) { |
| ASSERT_TRUE(embedded_test_server()->Start()); |
| browsers_.push_back(CreateBrowser(browser()->profile())); |
| ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); |
| ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); |
| + DisableHangMonitor(browsers_[0]); |
| + DisableHangMonitor(browsers_[1]); |
| RepeatedNotificationObserver close_observer( |
| chrome::NOTIFICATION_BROWSER_CLOSED, 2); |
| @@ -553,15 +559,18 @@ IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
| // Test that tabs created during shutdown with beforeunload handlers can cancel |
| // the shutdown. |
| -// Disabled for being flaky tests: crbug.com/519646 |
| + |
| IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
| - DISABLED_TestAddTabWithBeforeUnloadDuringShutdown) { |
| + TestAddTabWithBeforeUnloadDuringShutdown) { |
| ASSERT_TRUE(embedded_test_server()->Start()); |
| browsers_.push_back(CreateBrowser(browser()->profile())); |
| ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); |
| ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); |
| + DisableHangMonitor(browsers_[0]); |
| + DisableHangMonitor(browsers_[1]); |
| + |
| RepeatedNotificationObserver cancel_observer( |
| chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2); |
| chrome::CloseAllBrowsersAndQuit(); |
| @@ -572,13 +581,14 @@ IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
| AddBlankTabAndShow(browsers_[1]); |
| ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); |
| + DisableHangMonitor(browsers_[0]); |
| + DisableHangMonitor(browsers_[1]); |
| ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| ASSERT_NO_FATAL_FAILURE(CancelClose()); |
| cancel_observer.Wait(); |
| EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); |
| EXPECT_EQ(2, browsers_[0]->tab_strip_model()->count()); |
| EXPECT_EQ(2, browsers_[1]->tab_strip_model()->count()); |
| - |
|
Charlie Reis
2016/05/23 17:03:29
nit: Let's leave this blank line, just to make the
|
| RepeatedNotificationObserver close_observer( |
| chrome::NOTIFICATION_BROWSER_CLOSED, 2); |
| chrome::CloseAllBrowsersAndQuit(); |
| @@ -597,6 +607,8 @@ IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
| ASSERT_TRUE(embedded_test_server()->Start()); |
| ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); |
| + DisableHangMonitor(browsers_[0]); |
| + |
| RepeatedNotificationObserver cancel_observer( |
| chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); |
| chrome::CloseAllBrowsersAndQuit(); |
| @@ -604,6 +616,7 @@ IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
| browsers_.push_back(CreateBrowser(browser()->profile())); |
| ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); |
| + DisableHangMonitor(browsers_[1]); |
| browsers_[1]->tab_strip_model()->CloseAllTabs(); |
| ASSERT_NO_FATAL_FAILURE(CancelClose()); |
| ASSERT_NO_FATAL_FAILURE(CancelClose()); |
| @@ -624,19 +637,13 @@ IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
| EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| } |
| -// Test is flaky on Windows and Mac. See http://crbug.com/276366. |
| -#if defined(OS_WIN) || defined(OS_MACOSX) |
| -#define MAYBE_TestOpenAndCloseWindowDuringShutdown \ |
| - DISABLED_TestOpenAndCloseWindowDuringShutdown |
| -#else |
| -#define MAYBE_TestOpenAndCloseWindowDuringShutdown \ |
| - TestOpenAndCloseWindowDuringShutdown |
| -#endif |
| IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
| - MAYBE_TestOpenAndCloseWindowDuringShutdown) { |
| + TestOpenAndCloseWindowDuringShutdown) { |
| ASSERT_TRUE(embedded_test_server()->Start()); |
| ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); |
| + DisableHangMonitor(browsers_[0]); |
| + |
| RepeatedNotificationObserver cancel_observer( |
| chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2); |
| chrome::CloseAllBrowsersAndQuit(); |
| @@ -644,6 +651,7 @@ IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
| browsers_.push_back(CreateBrowser(browser()->profile())); |
| ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); |
| + DisableHangMonitor(browsers_[1]); |
| ASSERT_FALSE(browsers_[1]->ShouldCloseWindow()); |
| ASSERT_NO_FATAL_FAILURE(CancelClose()); |
| ASSERT_NO_FATAL_FAILURE(CancelClose()); |
| @@ -672,6 +680,9 @@ IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
| browsers_.push_back(CreateBrowser(browser()->profile())); |
| ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); |
| + DisableHangMonitor(browsers_[0]); |
| + DisableHangMonitor(browsers_[1]); |
| + |
| RepeatedNotificationObserver cancel_observer( |
| chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); |
| chrome::CloseAllBrowsersAndQuit(); |
| @@ -910,14 +921,14 @@ IN_PROC_BROWSER_TEST_P(BrowserCloseManagerWithDownloadsBrowserTest, |
| } |
| // Test shutdown with downloads in progress and beforeunload handlers. |
| -// Disabled, see http://crbug.com/315754. |
| IN_PROC_BROWSER_TEST_P(BrowserCloseManagerWithDownloadsBrowserTest, |
| - DISABLED_TestBeforeUnloadAndDownloads) { |
| + TestBeforeUnloadAndDownloads) { |
| ASSERT_TRUE(embedded_test_server()->Start()); |
| SetDownloadPathForProfile(browser()->profile()); |
| ASSERT_NO_FATAL_FAILURE(CreateStalledDownload(browser())); |
| ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| browser(), embedded_test_server()->GetURL("/beforeunload.html"))); |
| + DisableHangMonitor(browser()); |
| content::WindowedNotificationObserver cancel_observer( |
| chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, |