diff options
author | viettrungluu@chromium.org <viettrungluu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-04-08 16:16:55 +0000 |
---|---|---|
committer | viettrungluu@chromium.org <viettrungluu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-04-08 16:16:55 +0000 |
commit | 3e59bacae6bff857dfb5e3d3e8359dbde60ccb04 (patch) | |
tree | bfa6a819deb40647392a5b4db31d26e428eb0e37 /chrome/test/ui_test_utils.cc | |
parent | 714786e1b9566ca76388497904d2ebdb7fd111f5 (diff) | |
download | chromium_src-3e59bacae6bff857dfb5e3d3e8359dbde60ccb04.zip chromium_src-3e59bacae6bff857dfb5e3d3e8359dbde60ccb04.tar.gz chromium_src-3e59bacae6bff857dfb5e3d3e8359dbde60ccb04.tar.bz2 |
Revert 43950 - Revert 43931 [GTTF] Clean up browser tests:
[original revert broke compile; will disable tests in another CL instead]
use more ui_test_utils functions to simplify the code
expose more consistent and powerful utilities in ui_test_utils
minor style improvements
move some tests from DISABLED to FLAKY so we don't lose coverage
remove redundant timeouts
check more return values
TEST=browser_tests
BUG=none
Review URL: http://codereview.chromium.org/1571002
TBR=phajdan.jr@chromium.org
Review URL: http://codereview.chromium.org/1520026
TBR=viettrungluu@chromium.org, phajdan.jr@chromium.org
Review URL: http://codereview.chromium.org/1518020
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@43951 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/test/ui_test_utils.cc')
-rw-r--r-- | chrome/test/ui_test_utils.cc | 116 |
1 files changed, 35 insertions, 81 deletions
diff --git a/chrome/test/ui_test_utils.cc b/chrome/test/ui_test_utils.cc index b334e05..612d921 100644 --- a/chrome/test/ui_test_utils.cc +++ b/chrome/test/ui_test_utils.cc @@ -215,62 +215,6 @@ class DownloadsCompleteObserver : public DownloadManager::Observer, DISALLOW_COPY_AND_ASSIGN(DownloadsCompleteObserver); }; -template <class T> -class SimpleNotificationObserver : public NotificationObserver { - public: - SimpleNotificationObserver(NotificationType notification_type, - T* source) { - registrar_.Add(this, notification_type, Source<T>(source)); - ui_test_utils::RunMessageLoop(); - } - - virtual void Observe(NotificationType type, - const NotificationSource& source, - const NotificationDetails& details) { - MessageLoopForUI::current()->Quit(); - } - - private: - NotificationRegistrar registrar_; - - DISALLOW_COPY_AND_ASSIGN(SimpleNotificationObserver); -}; - -// SimpleNotificationObserver that waits for a single notification. When the -// notification is observer the source (of type S) is recorded and the message -// loop stopped. Use |source()| to access the source after the constructor -// returns. -template <class S> -class SimpleNotificationObserverWithSource : public NotificationObserver { - public: - SimpleNotificationObserverWithSource(NotificationType notification_type, - const NotificationSource& source) - : source_(NULL) { - registrar_.Add(this, notification_type, source); - ui_test_utils::RunMessageLoop(); - } - - virtual void Observe(NotificationType type, - const NotificationSource& source, - const NotificationDetails& details) { - source_ = Source<S>(source).ptr(); - - // Remove observer now, so that if there any other notifications we don't - // clobber source_. - registrar_.RemoveAll(); - - MessageLoopForUI::current()->Quit(); - } - - S* source() const { return source_; } - - private: - S* source_; - NotificationRegistrar registrar_; - - DISALLOW_COPY_AND_ASSIGN(SimpleNotificationObserverWithSource); -}; - class LanguageDetectionNotificationObserver : public NotificationObserver { public: explicit LanguageDetectionNotificationObserver(TabContents* tab) { @@ -438,26 +382,28 @@ void WaitForNavigations(NavigationController* controller, } void WaitForNewTab(Browser* browser) { - SimpleNotificationObserver<Browser> - new_tab_observer(NotificationType::TAB_ADDED, browser); + TestNotificationObserver observer; + RegisterAndWait(&observer, NotificationType::TAB_ADDED, + Source<Browser>(browser)); } void WaitForBrowserActionUpdated(ExtensionAction* browser_action) { - SimpleNotificationObserver<ExtensionAction> - observer(NotificationType::EXTENSION_BROWSER_ACTION_UPDATED, - browser_action); + TestNotificationObserver observer; + RegisterAndWait(&observer, NotificationType::EXTENSION_BROWSER_ACTION_UPDATED, + Source<ExtensionAction>(browser_action)); } void WaitForLoadStop(NavigationController* controller) { - SimpleNotificationObserver<NavigationController> - new_tab_observer(NotificationType::LOAD_STOP, controller); + TestNotificationObserver observer; + RegisterAndWait(&observer, NotificationType::LOAD_STOP, + Source<NavigationController>(controller)); } Browser* WaitForNewBrowser() { - SimpleNotificationObserverWithSource<Browser> observer( - NotificationType::BROWSER_WINDOW_READY, - NotificationService::AllSources()); - return observer.source(); + TestNotificationObserver observer; + RegisterAndWait(&observer, NotificationType::BROWSER_WINDOW_READY, + NotificationService::AllSources()); + return Source<Browser>(observer.source()).ptr(); } void OpenURLOffTheRecord(Profile* profile, const GURL& url) { @@ -571,28 +517,30 @@ void WaitForDownloadCount(DownloadManager* download_manager, size_t count) { } AppModalDialog* WaitForAppModalDialog() { - SimpleNotificationObserverWithSource<AppModalDialog> observer( - NotificationType::APP_MODAL_DIALOG_SHOWN, - NotificationService::AllSources()); - return observer.source(); + TestNotificationObserver observer; + RegisterAndWait(&observer, NotificationType::APP_MODAL_DIALOG_SHOWN, + NotificationService::AllSources()); + return Source<AppModalDialog>(observer.source()).ptr(); } void CrashTab(TabContents* tab) { RenderProcessHost* rph = tab->render_view_host()->process(); base::KillProcess(rph->GetHandle(), 0, false); - SimpleNotificationObserver<RenderProcessHost> - crash_observer(NotificationType::RENDERER_PROCESS_CLOSED, rph); + TestNotificationObserver observer; + RegisterAndWait(&observer, NotificationType::RENDERER_PROCESS_CLOSED, + Source<RenderProcessHost>(rph)); } void WaitForFocusChange(RenderViewHost* rvh) { - SimpleNotificationObserver<RenderViewHost> - focus_observer(NotificationType::FOCUS_CHANGED_IN_PAGE, rvh); + TestNotificationObserver observer; + RegisterAndWait(&observer, NotificationType::FOCUS_CHANGED_IN_PAGE, + Source<RenderViewHost>(rvh)); } void WaitForFocusInBrowser(Browser* browser) { - SimpleNotificationObserver<Browser> - focus_observer(NotificationType::FOCUS_RETURNED_TO_BROWSER, - browser); + TestNotificationObserver observer; + RegisterAndWait(&observer, NotificationType::FOCUS_RETURNED_TO_BROWSER, + Source<Browser>(browser)); } std::string WaitForLanguageDetection(TabContents* tab) { @@ -609,10 +557,16 @@ int FindInPage(TabContents* tab_contents, const string16& search_string, return observer.number_of_matches(); } -void RegisterAndWait(NotificationType::Type type, - NotificationObserver* observer) { +void WaitForNotification(NotificationType::Type type) { + TestNotificationObserver observer; + RegisterAndWait(&observer, type, NotificationService::AllSources()); +} + +void RegisterAndWait(NotificationObserver* observer, + NotificationType::Type type, + const NotificationSource& source) { NotificationRegistrar registrar; - registrar.Add(observer, type, NotificationService::AllSources()); + registrar.Add(observer, type, source); RunMessageLoop(); } |