Index: chrome/browser/ui/browser_tabrestore_browsertest.cc |
diff --git a/chrome/browser/ui/browser_tabrestore_browsertest.cc b/chrome/browser/ui/browser_tabrestore_browsertest.cc |
index 5fd6ac3b360794502826296ed6e0d22dce54bf7c..51acd8f943faf4d155ce108436c8ca7013b3bb52 100644 |
--- a/chrome/browser/ui/browser_tabrestore_browsertest.cc |
+++ b/chrome/browser/ui/browser_tabrestore_browsertest.cc |
@@ -13,6 +13,7 @@ |
#include "chrome/test/base/in_process_browser_test.h" |
#include "chrome/test/base/interactive_test_utils.h" |
#include "components/sessions/core/tab_restore_service.h" |
+#include "content/public/browser/notification_service.h" |
#include "content/public/browser/web_contents.h" |
#include "content/public/common/url_constants.h" |
#include "content/public/test/browser_test_utils.h" |
@@ -90,6 +91,24 @@ IN_PROC_BROWSER_TEST_F(BrowserTabRestoreTest, RecentTabsMenuTabDisposition) { |
EXPECT_EQ(2u, active_browser_list->size()); |
browser = active_browser_list->get(1); |
EXPECT_EQ(3, browser->tab_strip_model()->count()); |
+ // For the two test tabs we've just received "READY" DOM message. |
+ // But there won't be such message from the "about:blank" tab. |
+ // And it is possible that TabLoader hasn't loaded it yet. |
+ // Thus we should wait for "load stop" event before we will perform |
+ // CheckVisbility on "about:blank". |
+ { |
+ const content::WebContents* about_blank_contents = |
+ browser->tab_strip_model()->GetWebContentsAt(0); |
+ EXPECT_EQ("about:blank", about_blank_contents->GetURL().spec()); |
+ if (about_blank_contents->IsLoading() || |
+ about_blank_contents->GetController().NeedsReload()) { |
+ content::WindowedNotificationObserver load_stop_observer( |
+ content::NOTIFICATION_LOAD_STOP, |
+ content::Source<content::NavigationController>( |
+ &about_blank_contents->GetController())); |
+ load_stop_observer.Wait(); |
+ } |
+ } |
// The middle tab only should have visible disposition. |
CheckVisbility(browser->tab_strip_model(), 1); |
@@ -132,6 +151,21 @@ IN_PROC_BROWSER_TEST_F(BrowserTabRestoreTest, DelegateRestoreTabDisposition) { |
EXPECT_EQ(2u, active_browser_list->size()); |
browser = active_browser_list->get(1); |
EXPECT_EQ(3, browser->tab_strip_model()->count()); |
+ // The same as in RecentTabsMenuTabDisposition test case. |
+ // See there for the explanation. |
+ { |
+ const content::WebContents* about_blank_contents = |
+ browser->tab_strip_model()->GetWebContentsAt(0); |
+ EXPECT_EQ("about:blank", about_blank_contents->GetURL().spec()); |
+ if (about_blank_contents->IsLoading() || |
+ about_blank_contents->GetController().NeedsReload()) { |
+ content::WindowedNotificationObserver load_stop_observer( |
+ content::NOTIFICATION_LOAD_STOP, |
+ content::Source<content::NavigationController>( |
+ &about_blank_contents->GetController())); |
+ load_stop_observer.Wait(); |
+ } |
+ } |
// The middle tab only should have visible disposition. |
CheckVisbility(browser->tab_strip_model(), 1); |