Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(834)

Unified Diff: chrome/browser/lifetime/browser_close_manager_browsertest.cc

Issue 2005663002: Make unload tests stable. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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,

Powered by Google App Engine
This is Rietveld 408576698