Index: chrome/test/ui_test_utils.cc |
diff --git a/chrome/test/ui_test_utils.cc b/chrome/test/ui_test_utils.cc |
index c66f12c1c1d6e182e259414c6f2709b23bf8bcba..3663309fa3c3cc697fe3261754fc737a72b401a9 100644 |
--- a/chrome/test/ui_test_utils.cc |
+++ b/chrome/test/ui_test_utils.cc |
@@ -68,6 +68,9 @@ class NavigationNotificationObserver : public NotificationObserver { |
Source<NavigationController>(controller)); |
registrar_.Add(this, NotificationType::LOAD_STOP, |
Source<NavigationController>(controller)); |
+ } |
+ |
+ void Run() { |
RunMessageLoop(); |
} |
@@ -412,6 +415,7 @@ void WaitForNavigation(NavigationController* controller) { |
void WaitForNavigations(NavigationController* controller, |
int number_of_navigations) { |
NavigationNotificationObserver observer(controller, number_of_navigations); |
+ observer.Run(); |
} |
void WaitForNewTab(Browser* browser) { |
@@ -472,6 +476,10 @@ static void NavigateToURLWithDispositionBlockUntilNavigationsComplete( |
int number_of_navigations, |
WindowOpenDisposition disposition, |
int browser_test_flags) { |
+ NavigationNotificationObserver |
+ same_tab_observer(&browser->GetSelectedTabContents()->controller(), |
+ number_of_navigations); |
+ |
std::set<Browser*> initial_browsers; |
for (std::vector<Browser*>::const_iterator iter = BrowserList::begin(); |
iter != BrowserList::end(); |
@@ -501,7 +509,10 @@ static void NavigateToURLWithDispositionBlockUntilNavigationsComplete( |
// The currently selected tab is the right one. |
tab_contents = browser->GetSelectedTabContents(); |
} |
- if (tab_contents) { |
+ if (disposition == CURRENT_TAB) { |
+ same_tab_observer.Run(); |
+ return; |
+ } else if (tab_contents) { |
NavigationController* controller = &tab_contents->controller(); |
WaitForNavigations(controller, number_of_navigations); |
return; |