summaryrefslogtreecommitdiffstats
path: root/chrome/test/base/ui_test_utils.cc
diff options
context:
space:
mode:
authordubroy@chromium.org <dubroy@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-03-23 09:29:34 +0000
committerdubroy@chromium.org <dubroy@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-03-23 09:29:34 +0000
commite4b3ad0d05cea43d8f63632ce78397d0692f196a (patch)
tree837dceeefb8a722d8384864949b38ffe8188e2a6 /chrome/test/base/ui_test_utils.cc
parenta0efb433dad969836833b4944f3fed0da3f436b6 (diff)
downloadchromium_src-e4b3ad0d05cea43d8f63632ce78397d0692f196a.zip
chromium_src-e4b3ad0d05cea43d8f63632ce78397d0692f196a.tar.gz
chromium_src-e4b3ad0d05cea43d8f63632ce78397d0692f196a.tar.bz2
Restore the back/forward stack when opening tabs from other devices.
BUG=68758 TEST=Added new browser_test SessionRestoreTest.RestoreForeignTab. Review URL: https://chromiumcodereview.appspot.com/9731001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@128444 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/test/base/ui_test_utils.cc')
-rw-r--r--chrome/test/base/ui_test_utils.cc53
1 files changed, 27 insertions, 26 deletions
diff --git a/chrome/test/base/ui_test_utils.cc b/chrome/test/base/ui_test_utils.cc
index 6b7b318..80ce0fe 100644
--- a/chrome/test/base/ui_test_utils.cc
+++ b/chrome/test/base/ui_test_utils.cc
@@ -363,24 +363,6 @@ void WaitForLoadStop(WebContents* tab) {
load_stop_observer.Wait();
}
-Browser* WaitForNewBrowser() {
- TestNotificationObserver observer;
- RegisterAndWait(&observer, chrome::NOTIFICATION_BROWSER_WINDOW_READY,
- content::NotificationService::AllSources());
- return content::Source<Browser>(observer.source()).ptr();
-}
-
-Browser* WaitForBrowserNotInSet(std::set<Browser*> excluded_browsers) {
- TestNotificationObserver observer;
- Browser* new_browser = GetBrowserNotInSet(excluded_browsers);
- if (new_browser == NULL) {
- new_browser = WaitForNewBrowser();
- // The new browser should never be in |excluded_browsers|.
- DCHECK(!ContainsKey(excluded_browsers, new_browser));
- }
- return new_browser;
-}
-
void OpenURLOffTheRecord(Profile* profile, const GURL& url) {
Browser::OpenURLOffTheRecord(profile, url);
Browser* browser = BrowserList::FindTabbedBrowser(
@@ -424,21 +406,15 @@ static void NavigateToURLWithDispositionBlockUntilNavigationsComplete(
NULL,
number_of_navigations);
- std::set<Browser*> initial_browsers;
- for (std::vector<Browser*>::const_iterator iter = BrowserList::begin();
- iter != BrowserList::end();
- ++iter) {
- initial_browsers.insert(*iter);
- }
-
WindowedNotificationObserver tab_added_observer(
content::NOTIFICATION_TAB_ADDED,
content::NotificationService::AllSources());
+ BrowserAddedObserver browser_added_observer;
browser->OpenURL(OpenURLParams(
url, Referrer(), disposition, content::PAGE_TRANSITION_TYPED, false));
if (browser_test_flags & BROWSER_TEST_WAIT_FOR_BROWSER)
- browser = WaitForBrowserNotInSet(initial_browsers);
+ browser = browser_added_observer.WaitForSingleNewBrowser();
if (browser_test_flags & BROWSER_TEST_WAIT_FOR_TAB)
tab_added_observer.Wait();
if (!(browser_test_flags & BROWSER_TEST_WAIT_FOR_NAVIGATION)) {
@@ -920,6 +896,14 @@ WindowedNotificationObserver::WindowedNotificationObserver(
registrar_.Add(this, notification_type, waiting_for_);
}
+WindowedNotificationObserver::WindowedNotificationObserver(
+ int notification_type)
+ : seen_(false),
+ running_(false),
+ waiting_for_(content::NotificationService::AllSources()) {
+ registrar_.Add(this, notification_type, waiting_for_);
+}
+
WindowedNotificationObserver::~WindowedNotificationObserver() {}
void WindowedNotificationObserver::Wait() {
@@ -976,6 +960,23 @@ void TitleWatcher::AlsoWaitForTitle(const string16& expected_title) {
TitleWatcher::~TitleWatcher() {
}
+BrowserAddedObserver::BrowserAddedObserver()
+ : notification_observer_(
+ chrome::NOTIFICATION_BROWSER_OPENED,
+ content::NotificationService::AllSources()) {
+ original_browsers_.insert(BrowserList::begin(), BrowserList::end());
+}
+
+BrowserAddedObserver::~BrowserAddedObserver() {
+}
+
+Browser* BrowserAddedObserver::WaitForSingleNewBrowser() {
+ notification_observer_.Wait();
+ // Ensure that only a single new browser has appeared.
+ EXPECT_EQ(original_browsers_.size() + 1, BrowserList::size());
+ return GetBrowserNotInSet(original_browsers_);
+}
+
const string16& TitleWatcher::WaitAndGetTitle() {
if (expected_title_observed_)
return observed_title_;