Commit 51ac682a authored by Matt Giuca's avatar Matt Giuca Committed by Commit Bot

Revert "Don't use NOTIFICATION_BROWSER_CLOSE_CANCELLED in tests"

This reverts commit 7a5df8d5.

Reason for revert: Suspect it introduces timeout https://crbug.com/990692

DevToolsSanityTest.TestDeviceEmulation is reliably timing out with
"[FAILED] Timeout exceeded: 20 sec".

Original change's description:
> Don't use NOTIFICATION_BROWSER_CLOSE_CANCELLED in tests
> 
> Bug: 268984
> Change-Id: Ie41cb913d29ad690b9364d9c478c7a3c4771f607
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1730591
> Reviewed-by: Avi Drissman <avi@chromium.org>
> Commit-Queue: Evan Stade <estade@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#683662}

TBR=avi@chromium.org,estade@chromium.org

# Not skipping CQ checks because original CL landed > 1 day ago.

Bug: 268984, 990692
Change-Id: Ia1213f589b2cf3b966381886f2d60ff646ae7103
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1734735Reviewed-by: default avatarMatt Giuca <mgiuca@chromium.org>
Commit-Queue: Matt Giuca <mgiuca@chromium.org>
Cr-Commit-Position: refs/heads/master@{#683935}
parent 62255ee7
...@@ -43,7 +43,6 @@ ...@@ -43,7 +43,6 @@
#include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_commands.h" #include "chrome/browser/ui/browser_commands.h"
#include "chrome/browser/ui/browser_list.h"
#include "chrome/browser/ui/tabs/tab_strip_model.h" #include "chrome/browser/ui/tabs/tab_strip_model.h"
#include "chrome/common/chrome_paths.h" #include "chrome/common/chrome_paths.h"
#include "chrome/common/chrome_switches.h" #include "chrome/common/chrome_switches.h"
...@@ -787,21 +786,22 @@ IN_PROC_BROWSER_TEST_F(DevToolsBeforeUnloadTest, ...@@ -787,21 +786,22 @@ IN_PROC_BROWSER_TEST_F(DevToolsBeforeUnloadTest,
DevToolsWindowTesting::Get(windows[2])->main_web_contents()); DevToolsWindowTesting::Get(windows[2])->main_web_contents());
// Try to close second devtools. // Try to close second devtools.
{ {
content::WindowedNotificationObserver cancel_browser(
chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED,
content::NotificationService::AllSources());
chrome::CloseWindow(DevToolsWindowTesting::Get(windows[1])->browser()); chrome::CloseWindow(DevToolsWindowTesting::Get(windows[1])->browser());
CancelModalDialog(); CancelModalDialog();
base::RunLoop().RunUntilIdle(); cancel_browser.Wait();
// The second devtools hasn't closed.
EXPECT_EQ(windows[1],
DevToolsWindow::GetInstanceForInspectedWebContents(
DevToolsWindowTesting::Get(windows[0])->main_web_contents()));
} }
// Try to close browser window. // Try to close browser window.
{ {
content::WindowedNotificationObserver cancel_browser(
chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED,
content::NotificationService::AllSources());
chrome::CloseWindow(browser()); chrome::CloseWindow(browser());
AcceptModalDialog(); AcceptModalDialog();
CancelModalDialog(); CancelModalDialog();
base::RunLoop().RunUntilIdle(); cancel_browser.Wait();
EXPECT_EQ(browser(), BrowserList::GetInstance()->get(0));
} }
// Try to exit application. // Try to exit application.
{ {
......
...@@ -77,14 +77,12 @@ app_modal::NativeAppModalDialog* GetNextDialog() { ...@@ -77,14 +77,12 @@ app_modal::NativeAppModalDialog* GetNextDialog() {
// trying to close it, to avoid flakiness. https://crbug.com/519646 // trying to close it, to avoid flakiness. https://crbug.com/519646
void AcceptClose() { void AcceptClose() {
GetNextDialog()->AcceptAppModalDialog(); GetNextDialog()->AcceptAppModalDialog();
base::RunLoop().RunUntilIdle();
} }
// Note: call |PrepareForDialog| on the relevant WebContents or Browser before // Note: call |PrepareForDialog| on the relevant WebContents or Browser before
// trying to close it, to avoid flakiness. https://crbug.com/519646 // trying to close it, to avoid flakiness. https://crbug.com/519646
void CancelClose() { void CancelClose() {
GetNextDialog()->CancelAppModalDialog(); GetNextDialog()->CancelAppModalDialog();
base::RunLoop().RunUntilIdle();
} }
class RepeatedNotificationObserver : public content::NotificationObserver { class RepeatedNotificationObserver : public content::NotificationObserver {
...@@ -306,7 +304,7 @@ class BrowserCloseManagerBrowserTest : public InProcessBrowserTest { ...@@ -306,7 +304,7 @@ class BrowserCloseManagerBrowserTest : public InProcessBrowserTest {
} }
void WaitForAllBrowsersToClose() { void WaitForAllBrowsersToClose() {
while (!BrowserList::GetInstance()->empty()) for (size_t i = 0U; i < browsers_.size(); ++i)
ui_test_utils::WaitForBrowserToClose(); ui_test_utils::WaitForBrowserToClose();
} }
...@@ -318,13 +316,16 @@ IN_PROC_BROWSER_TEST_F(BrowserCloseManagerBrowserTest, TestSingleTabShutdown) { ...@@ -318,13 +316,16 @@ IN_PROC_BROWSER_TEST_F(BrowserCloseManagerBrowserTest, TestSingleTabShutdown) {
browser(), embedded_test_server()->GetURL("/beforeunload.html"))); browser(), embedded_test_server()->GetURL("/beforeunload.html")));
PrepareForDialog(browser()); PrepareForDialog(browser());
RepeatedNotificationObserver cancel_observer(
chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1);
chrome::CloseAllBrowsersAndQuit(); chrome::CloseAllBrowsersAndQuit();
ASSERT_NO_FATAL_FAILURE(CancelClose()); ASSERT_NO_FATAL_FAILURE(CancelClose());
cancel_observer.Wait();
EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
EXPECT_EQ(1, browser()->tab_strip_model()->count()); EXPECT_EQ(1, browser()->tab_strip_model()->count());
chrome::CloseAllBrowsersAndQuit(); chrome::CloseAllBrowsersAndQuit();
GetNextDialog()->AcceptAppModalDialog(); ASSERT_NO_FATAL_FAILURE(AcceptClose());
ui_test_utils::WaitForBrowserToClose(); ui_test_utils::WaitForBrowserToClose();
EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); EXPECT_TRUE(browser_shutdown::IsTryingToQuit());
EXPECT_TRUE(BrowserList::GetInstance()->empty()); EXPECT_TRUE(BrowserList::GetInstance()->empty());
...@@ -336,15 +337,18 @@ IN_PROC_BROWSER_TEST_F(BrowserCloseManagerBrowserTest, ...@@ -336,15 +337,18 @@ IN_PROC_BROWSER_TEST_F(BrowserCloseManagerBrowserTest,
browser(), embedded_test_server()->GetURL("/beforeunload.html"))); browser(), embedded_test_server()->GetURL("/beforeunload.html")));
PrepareForDialog(browser()); PrepareForDialog(browser());
RepeatedNotificationObserver cancel_observer(
chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1);
chrome::CloseAllBrowsersAndQuit(); chrome::CloseAllBrowsersAndQuit();
chrome::CloseAllBrowsersAndQuit(); chrome::CloseAllBrowsersAndQuit();
ASSERT_NO_FATAL_FAILURE(CancelClose()); ASSERT_NO_FATAL_FAILURE(CancelClose());
cancel_observer.Wait();
EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
EXPECT_EQ(1, browser()->tab_strip_model()->count()); EXPECT_EQ(1, browser()->tab_strip_model()->count());
chrome::CloseAllBrowsersAndQuit(); chrome::CloseAllBrowsersAndQuit();
chrome::CloseAllBrowsersAndQuit(); chrome::CloseAllBrowsersAndQuit();
GetNextDialog()->AcceptAppModalDialog(); ASSERT_NO_FATAL_FAILURE(AcceptClose());
ui_test_utils::WaitForBrowserToClose(); ui_test_utils::WaitForBrowserToClose();
EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); EXPECT_TRUE(browser_shutdown::IsTryingToQuit());
EXPECT_TRUE(BrowserList::GetInstance()->empty()); EXPECT_TRUE(BrowserList::GetInstance()->empty());
...@@ -358,8 +362,11 @@ IN_PROC_BROWSER_TEST_F(BrowserCloseManagerBrowserTest, PRE_TestSessionRestore) { ...@@ -358,8 +362,11 @@ IN_PROC_BROWSER_TEST_F(BrowserCloseManagerBrowserTest, PRE_TestSessionRestore) {
ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIAboutURL))); ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIAboutURL)));
PrepareForDialog(browser()); PrepareForDialog(browser());
RepeatedNotificationObserver cancel_observer(
chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1);
chrome::CloseAllBrowsersAndQuit(); chrome::CloseAllBrowsersAndQuit();
ASSERT_NO_FATAL_FAILURE(CancelClose()); ASSERT_NO_FATAL_FAILURE(CancelClose());
cancel_observer.Wait();
EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
browser()->tab_strip_model() browser()->tab_strip_model()
...@@ -409,8 +416,11 @@ IN_PROC_BROWSER_TEST_F(BrowserCloseManagerBrowserTest, TestMultipleWindows) { ...@@ -409,8 +416,11 @@ IN_PROC_BROWSER_TEST_F(BrowserCloseManagerBrowserTest, TestMultipleWindows) {
// Cancel shutdown on the first beforeunload event. // Cancel shutdown on the first beforeunload event.
{ {
RepeatedNotificationObserver cancel_observer(
chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1);
chrome::CloseAllBrowsersAndQuit(); chrome::CloseAllBrowsersAndQuit();
ASSERT_NO_FATAL_FAILURE(CancelClose()); ASSERT_NO_FATAL_FAILURE(CancelClose());
cancel_observer.Wait();
} }
EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count());
...@@ -418,9 +428,12 @@ IN_PROC_BROWSER_TEST_F(BrowserCloseManagerBrowserTest, TestMultipleWindows) { ...@@ -418,9 +428,12 @@ IN_PROC_BROWSER_TEST_F(BrowserCloseManagerBrowserTest, TestMultipleWindows) {
// Cancel shutdown on the second beforeunload event. // Cancel shutdown on the second beforeunload event.
{ {
RepeatedNotificationObserver cancel_observer(
chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2);
chrome::CloseAllBrowsersAndQuit(); chrome::CloseAllBrowsersAndQuit();
ASSERT_NO_FATAL_FAILURE(AcceptClose()); ASSERT_NO_FATAL_FAILURE(AcceptClose());
ASSERT_NO_FATAL_FAILURE(CancelClose()); ASSERT_NO_FATAL_FAILURE(CancelClose());
cancel_observer.Wait();
} }
EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count());
...@@ -452,14 +465,17 @@ IN_PROC_BROWSER_TEST_F(BrowserCloseManagerBrowserTest, ...@@ -452,14 +465,17 @@ IN_PROC_BROWSER_TEST_F(BrowserCloseManagerBrowserTest,
// the dialog is guaranteed to show. // the dialog is guaranteed to show.
PrepareForDialog(browsers_[0]->tab_strip_model()->GetWebContentsAt(1)); PrepareForDialog(browsers_[0]->tab_strip_model()->GetWebContentsAt(1));
RepeatedNotificationObserver cancel_observer(
chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1);
chrome::CloseAllBrowsersAndQuit(); chrome::CloseAllBrowsersAndQuit();
ASSERT_NO_FATAL_FAILURE(CancelClose()); ASSERT_NO_FATAL_FAILURE(CancelClose());
cancel_observer.Wait();
EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
// All tabs should still be open. // All tabs should still be open.
EXPECT_EQ(3, browsers_[0]->tab_strip_model()->count()); EXPECT_EQ(3, browsers_[0]->tab_strip_model()->count());
chrome::CloseAllBrowsersAndQuit(); chrome::CloseAllBrowsersAndQuit();
GetNextDialog()->AcceptAppModalDialog(); ASSERT_NO_FATAL_FAILURE(AcceptClose());
ui_test_utils::WaitForBrowserToClose(); ui_test_utils::WaitForBrowserToClose();
EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); EXPECT_TRUE(browser_shutdown::IsTryingToQuit());
EXPECT_TRUE(BrowserList::GetInstance()->empty()); EXPECT_TRUE(BrowserList::GetInstance()->empty());
...@@ -482,8 +498,11 @@ IN_PROC_BROWSER_TEST_F(BrowserCloseManagerBrowserTest, ...@@ -482,8 +498,11 @@ IN_PROC_BROWSER_TEST_F(BrowserCloseManagerBrowserTest,
// the dialog is guaranteed to show. // the dialog is guaranteed to show.
PrepareForDialog(browsers_[1]); PrepareForDialog(browsers_[1]);
RepeatedNotificationObserver cancel_observer(
chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2);
chrome::CloseAllBrowsersAndQuit(); chrome::CloseAllBrowsersAndQuit();
ASSERT_NO_FATAL_FAILURE(CancelClose()); ASSERT_NO_FATAL_FAILURE(CancelClose());
cancel_observer.Wait();
EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
// All windows should still be open. // All windows should still be open.
EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count());
...@@ -527,8 +546,11 @@ IN_PROC_BROWSER_TEST_F(BrowserCloseManagerBrowserTest, ...@@ -527,8 +546,11 @@ IN_PROC_BROWSER_TEST_F(BrowserCloseManagerBrowserTest,
PrepareForDialog( PrepareForDialog(
browsers_[0]->tab_strip_model()->GetWebContentsAt(kResposiveTabIndex)); browsers_[0]->tab_strip_model()->GetWebContentsAt(kResposiveTabIndex));
RepeatedNotificationObserver cancel_observer(
chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1);
chrome::CloseAllBrowsersAndQuit(); chrome::CloseAllBrowsersAndQuit();
ASSERT_NO_FATAL_FAILURE(CancelClose()); ASSERT_NO_FATAL_FAILURE(CancelClose());
cancel_observer.Wait();
EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
// All tabs should still be open. // All tabs should still be open.
...@@ -536,7 +558,7 @@ IN_PROC_BROWSER_TEST_F(BrowserCloseManagerBrowserTest, ...@@ -536,7 +558,7 @@ IN_PROC_BROWSER_TEST_F(BrowserCloseManagerBrowserTest,
// Quit, this time accepting close confirmation dialog. // Quit, this time accepting close confirmation dialog.
chrome::CloseAllBrowsersAndQuit(); chrome::CloseAllBrowsersAndQuit();
GetNextDialog()->AcceptAppModalDialog(); ASSERT_NO_FATAL_FAILURE(AcceptClose());
ui_test_utils::WaitForBrowserToClose(); ui_test_utils::WaitForBrowserToClose();
EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); EXPECT_TRUE(browser_shutdown::IsTryingToQuit());
EXPECT_TRUE(BrowserList::GetInstance()->empty()); EXPECT_TRUE(BrowserList::GetInstance()->empty());
...@@ -557,7 +579,7 @@ IN_PROC_BROWSER_TEST_F(BrowserCloseManagerBrowserTest, ...@@ -557,7 +579,7 @@ IN_PROC_BROWSER_TEST_F(BrowserCloseManagerBrowserTest,
IN_PROC_BROWSER_TEST_F(BrowserCloseManagerBrowserTest, IN_PROC_BROWSER_TEST_F(BrowserCloseManagerBrowserTest,
MAYBE_TestBeforeUnloadMultipleSlowWindows) { MAYBE_TestBeforeUnloadMultipleSlowWindows) {
const int kBrowserCount = 5; const int kBrowserCount = 5;
const int kResponsiveBrowserIndex = 2; const int kResposiveBrowserIndex = 2;
// Create multiple browsers with all tabs except one responding after // Create multiple browsers with all tabs except one responding after
// RenderViewHostImpl::kUnloadTimeoutMS . // RenderViewHostImpl::kUnloadTimeoutMS .
// Minimum configuration is just one browser with slow tab and then // Minimum configuration is just one browser with slow tab and then
...@@ -569,16 +591,19 @@ IN_PROC_BROWSER_TEST_F(BrowserCloseManagerBrowserTest, ...@@ -569,16 +591,19 @@ IN_PROC_BROWSER_TEST_F(BrowserCloseManagerBrowserTest,
browsers_.push_back(CreateBrowser(browser()->profile())); browsers_.push_back(CreateBrowser(browser()->profile()));
ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
browsers_[i], browsers_[i],
embedded_test_server()->GetURL((i == kResponsiveBrowserIndex) embedded_test_server()->GetURL((i == kResposiveBrowserIndex)
? "/beforeunload.html" ? "/beforeunload.html"
: "/beforeunload_slow.html"))); : "/beforeunload_slow.html")));
} }
// Disable the hang monitor in the tab that is not expected to hang, so that // Disable the hang monitor in the tab that is not expected to hang, so that
// the dialog is guaranteed to show. // the dialog is guaranteed to show.
PrepareForDialog(browsers_[kResponsiveBrowserIndex]); PrepareForDialog(browsers_[kResposiveBrowserIndex]);
RepeatedNotificationObserver cancel_observer(
chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, kResposiveBrowserIndex + 1);
chrome::CloseAllBrowsersAndQuit(); chrome::CloseAllBrowsersAndQuit();
ASSERT_NO_FATAL_FAILURE(CancelClose()); ASSERT_NO_FATAL_FAILURE(CancelClose());
cancel_observer.Wait();
EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
// All windows should still be open. // All windows should still be open.
...@@ -623,6 +648,8 @@ IN_PROC_BROWSER_TEST_F(BrowserCloseManagerBrowserTest, ...@@ -623,6 +648,8 @@ IN_PROC_BROWSER_TEST_F(BrowserCloseManagerBrowserTest,
browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); browsers_[0], embedded_test_server()->GetURL("/beforeunload.html")));
PrepareForDialog(browsers_[0]); PrepareForDialog(browsers_[0]);
RepeatedNotificationObserver cancel_observer(
chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2);
chrome::CloseAllBrowsersAndQuit(); chrome::CloseAllBrowsersAndQuit();
browsers_.push_back(CreateBrowser(browser()->profile())); browsers_.push_back(CreateBrowser(browser()->profile()));
ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
...@@ -630,6 +657,7 @@ IN_PROC_BROWSER_TEST_F(BrowserCloseManagerBrowserTest, ...@@ -630,6 +657,7 @@ IN_PROC_BROWSER_TEST_F(BrowserCloseManagerBrowserTest,
PrepareForDialog(browsers_[1]); PrepareForDialog(browsers_[1]);
ASSERT_NO_FATAL_FAILURE(AcceptClose()); ASSERT_NO_FATAL_FAILURE(AcceptClose());
ASSERT_NO_FATAL_FAILURE(CancelClose()); ASSERT_NO_FATAL_FAILURE(CancelClose());
cancel_observer.Wait();
EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count());
EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count());
...@@ -677,6 +705,8 @@ IN_PROC_BROWSER_TEST_F(BrowserCloseManagerBrowserTest, ...@@ -677,6 +705,8 @@ IN_PROC_BROWSER_TEST_F(BrowserCloseManagerBrowserTest,
PrepareForDialog(browsers_[0]); PrepareForDialog(browsers_[0]);
PrepareForDialog(browsers_[1]); PrepareForDialog(browsers_[1]);
RepeatedNotificationObserver cancel_observer(
chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2);
chrome::CloseAllBrowsersAndQuit(); chrome::CloseAllBrowsersAndQuit();
ASSERT_NO_FATAL_FAILURE(AcceptClose()); ASSERT_NO_FATAL_FAILURE(AcceptClose());
AddBlankTabAndShow(browsers_[0]); AddBlankTabAndShow(browsers_[0]);
...@@ -689,6 +719,7 @@ IN_PROC_BROWSER_TEST_F(BrowserCloseManagerBrowserTest, ...@@ -689,6 +719,7 @@ IN_PROC_BROWSER_TEST_F(BrowserCloseManagerBrowserTest,
PrepareForDialog(browsers_[1]); PrepareForDialog(browsers_[1]);
ASSERT_NO_FATAL_FAILURE(AcceptClose()); ASSERT_NO_FATAL_FAILURE(AcceptClose());
ASSERT_NO_FATAL_FAILURE(CancelClose()); ASSERT_NO_FATAL_FAILURE(CancelClose());
cancel_observer.Wait();
EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
EXPECT_EQ(2, browsers_[0]->tab_strip_model()->count()); EXPECT_EQ(2, browsers_[0]->tab_strip_model()->count());
EXPECT_EQ(2, browsers_[1]->tab_strip_model()->count()); EXPECT_EQ(2, browsers_[1]->tab_strip_model()->count());
...@@ -752,7 +783,7 @@ IN_PROC_BROWSER_TEST_F(BrowserCloseManagerBrowserTest, ...@@ -752,7 +783,7 @@ IN_PROC_BROWSER_TEST_F(BrowserCloseManagerBrowserTest,
chrome::CloseWindow(browser2); chrome::CloseWindow(browser2);
// Just to be sure CloseWindow doesn't have asynchronous tasks // Just to be sure CloseWindow doesn't have asynchronous tasks
// that could have an impact. // that could have an impact.
base::RunLoop().RunUntilIdle(); content::RunAllPendingInMessageLoop();
// Closing browser shouldn't happen because of beforeunload handler. // Closing browser shouldn't happen because of beforeunload handler.
EXPECT_EQ(2u, BrowserList::GetInstance()->size()); EXPECT_EQ(2u, BrowserList::GetInstance()->size());
...@@ -767,11 +798,14 @@ IN_PROC_BROWSER_TEST_F(BrowserCloseManagerBrowserTest, ...@@ -767,11 +798,14 @@ IN_PROC_BROWSER_TEST_F(BrowserCloseManagerBrowserTest,
->NeedToFireBeforeUnload()); ->NeedToFireBeforeUnload());
// Accept closing the first tab. // Accept closing the first tab.
ASSERT_NO_FATAL_FAILURE(AcceptClose()); ASSERT_NO_FATAL_FAILURE(AcceptClose());
// Just to be sure accepting a dialog doesn't have asynchronous tasks
// that could have an impact.
content::RunAllPendingInMessageLoop();
// It shouldn't close the whole window/browser. // It shouldn't close the whole window/browser.
EXPECT_EQ(2u, BrowserList::GetInstance()->size()); EXPECT_EQ(2u, BrowserList::GetInstance()->size());
EXPECT_EQ(2, browser2->tab_strip_model()->count()); EXPECT_EQ(2, browser2->tab_strip_model()->count());
// Accept closing the second tab. // Accept closing the second tab.
GetNextDialog()->AcceptAppModalDialog(); ASSERT_NO_FATAL_FAILURE(AcceptClose());
ui_test_utils::WaitForBrowserToClose(); ui_test_utils::WaitForBrowserToClose();
// Now the second window/browser should be closed. // Now the second window/browser should be closed.
EXPECT_EQ(1u, BrowserList::GetInstance()->size()); EXPECT_EQ(1u, BrowserList::GetInstance()->size());
...@@ -799,6 +833,8 @@ IN_PROC_BROWSER_TEST_F(BrowserCloseManagerBrowserTest, ...@@ -799,6 +833,8 @@ IN_PROC_BROWSER_TEST_F(BrowserCloseManagerBrowserTest,
browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); browsers_[0], embedded_test_server()->GetURL("/beforeunload.html")));
PrepareForDialog(browsers_[0]); PrepareForDialog(browsers_[0]);
RepeatedNotificationObserver cancel_observer(
chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1);
chrome::CloseAllBrowsersAndQuit(); chrome::CloseAllBrowsersAndQuit();
browsers_.push_back(CreateBrowser(browser()->profile())); browsers_.push_back(CreateBrowser(browser()->profile()));
...@@ -808,6 +844,7 @@ IN_PROC_BROWSER_TEST_F(BrowserCloseManagerBrowserTest, ...@@ -808,6 +844,7 @@ IN_PROC_BROWSER_TEST_F(BrowserCloseManagerBrowserTest,
browsers_[1]->tab_strip_model()->CloseAllTabs(); browsers_[1]->tab_strip_model()->CloseAllTabs();
ASSERT_NO_FATAL_FAILURE(CancelClose()); ASSERT_NO_FATAL_FAILURE(CancelClose());
ASSERT_NO_FATAL_FAILURE(CancelClose()); ASSERT_NO_FATAL_FAILURE(CancelClose());
cancel_observer.Wait();
EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count());
EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count());
...@@ -828,6 +865,8 @@ IN_PROC_BROWSER_TEST_F(BrowserCloseManagerBrowserTest, ...@@ -828,6 +865,8 @@ IN_PROC_BROWSER_TEST_F(BrowserCloseManagerBrowserTest,
browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); browsers_[0], embedded_test_server()->GetURL("/beforeunload.html")));
PrepareForDialog(browsers_[0]); PrepareForDialog(browsers_[0]);
RepeatedNotificationObserver cancel_observer(
chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2);
chrome::CloseAllBrowsersAndQuit(); chrome::CloseAllBrowsersAndQuit();
browsers_.push_back(CreateBrowser(browser()->profile())); browsers_.push_back(CreateBrowser(browser()->profile()));
...@@ -837,6 +876,7 @@ IN_PROC_BROWSER_TEST_F(BrowserCloseManagerBrowserTest, ...@@ -837,6 +876,7 @@ IN_PROC_BROWSER_TEST_F(BrowserCloseManagerBrowserTest,
ASSERT_FALSE(browsers_[1]->ShouldCloseWindow()); ASSERT_FALSE(browsers_[1]->ShouldCloseWindow());
ASSERT_NO_FATAL_FAILURE(CancelClose()); ASSERT_NO_FATAL_FAILURE(CancelClose());
ASSERT_NO_FATAL_FAILURE(CancelClose()); ASSERT_NO_FATAL_FAILURE(CancelClose());
cancel_observer.Wait();
EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count());
EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count());
...@@ -861,10 +901,13 @@ IN_PROC_BROWSER_TEST_F(BrowserCloseManagerBrowserTest, ...@@ -861,10 +901,13 @@ IN_PROC_BROWSER_TEST_F(BrowserCloseManagerBrowserTest,
PrepareForDialog(browsers_[0]); PrepareForDialog(browsers_[0]);
PrepareForDialog(browsers_[1]); PrepareForDialog(browsers_[1]);
RepeatedNotificationObserver cancel_observer(
chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1);
chrome::CloseAllBrowsersAndQuit(); chrome::CloseAllBrowsersAndQuit();
ASSERT_FALSE(browsers_[0]->ShouldCloseWindow()); ASSERT_FALSE(browsers_[0]->ShouldCloseWindow());
ASSERT_NO_FATAL_FAILURE(CancelClose()); ASSERT_NO_FATAL_FAILURE(CancelClose());
cancel_observer.Wait();
EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count());
EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count());
...@@ -1096,9 +1139,13 @@ IN_PROC_BROWSER_TEST_F(BrowserCloseManagerBrowserTest, ...@@ -1096,9 +1139,13 @@ IN_PROC_BROWSER_TEST_F(BrowserCloseManagerBrowserTest,
browser(), embedded_test_server()->GetURL("/beforeunload.html"))); browser(), embedded_test_server()->GetURL("/beforeunload.html")));
PrepareForDialog(browser()); PrepareForDialog(browser());
content::WindowedNotificationObserver cancel_observer(
chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED,
content::NotificationService::AllSources());
TestBrowserCloseManager::AttemptClose( TestBrowserCloseManager::AttemptClose(
TestBrowserCloseManager::USER_CHOICE_USER_CANCELS_CLOSE); TestBrowserCloseManager::USER_CHOICE_USER_CANCELS_CLOSE);
ASSERT_NO_FATAL_FAILURE(AcceptClose()); ASSERT_NO_FATAL_FAILURE(AcceptClose());
cancel_observer.Wait();
EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
TestBrowserCloseManager::AttemptClose( TestBrowserCloseManager::AttemptClose(
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment