diff options
author | phajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-02-10 13:10:03 +0000 |
---|---|---|
committer | phajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-02-10 13:10:03 +0000 |
commit | d818e07fb7b4e680de9a38ad7af55ba04acb2cbf (patch) | |
tree | 6be52cdcff66f0c5972ce80feef7dbcf392ad899 /chrome/browser/extensions/extension_browsertest.cc | |
parent | d267ee95429eca5bff2e2d499725ca222848a1cf (diff) | |
download | chromium_src-d818e07fb7b4e680de9a38ad7af55ba04acb2cbf.zip chromium_src-d818e07fb7b4e680de9a38ad7af55ba04acb2cbf.tar.gz chromium_src-d818e07fb7b4e680de9a38ad7af55ba04acb2cbf.tar.bz2 |
Remove poll'n'loop code from extension_browsertest.cc.
Also use a common wait function from extension_browsertest
in the page action popup test.
BUG=34339
TEST=browser_tests
Review URL: http://codereview.chromium.org/582013
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@38615 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions/extension_browsertest.cc')
-rw-r--r-- | chrome/browser/extensions/extension_browsertest.cc | 93 |
1 files changed, 57 insertions, 36 deletions
diff --git a/chrome/browser/extensions/extension_browsertest.cc b/chrome/browser/extensions/extension_browsertest.cc index 4e25a8a..7bb8084 100644 --- a/chrome/browser/extensions/extension_browsertest.cc +++ b/chrome/browser/extensions/extension_browsertest.cc @@ -30,6 +30,11 @@ // minimize false positives. static const int kTimeoutMs = 60 * 1000; // 1 minute +ExtensionBrowserTest::ExtensionBrowserTest() + : target_page_action_count_(-1), + target_visible_page_action_count_(-1) { +} + void ExtensionBrowserTest::SetUpCommandLine(CommandLine* command_line) { // This enables DOM automation for tab contentses. EnableDOMAutomation(); @@ -161,49 +166,37 @@ void ExtensionBrowserTest::UninstallExtension(const std::string& extension_id) { } bool ExtensionBrowserTest::WaitForPageActionCountChangeTo(int count) { - base::Time start_time = base::Time::Now(); - while (true) { - LocationBarTesting* loc_bar = - browser()->window()->GetLocationBar()->GetLocationBarForTesting(); - - int actions = loc_bar->PageActionCount(); - if (actions == count) - return true; - - if ((base::Time::Now() - start_time).InMilliseconds() > kTimeoutMs) { - std::cout << "Timed out waiting for page actions to (un)load.\n" - << "Currently loaded page actions: " << IntToString(actions) - << "\n"; - return false; - } + NotificationRegistrar registrar; + registrar.Add(this, + NotificationType::EXTENSION_PAGE_ACTION_COUNT_CHANGED, + NotificationService::AllSources()); - MessageLoop::current()->PostDelayedTask(FROM_HERE, - new MessageLoop::QuitTask, 200); + MessageLoop::current()->PostDelayedTask(FROM_HERE, new MessageLoop::QuitTask, + kTimeoutMs); + + target_page_action_count_ = count; + LocationBarTesting* location_bar = + browser()->window()->GetLocationBar()->GetLocationBarForTesting(); + if (location_bar->PageActionCount() != count) ui_test_utils::RunMessageLoop(); - } + return location_bar->PageActionCount() == count; } bool ExtensionBrowserTest::WaitForPageActionVisibilityChangeTo(int count) { - base::Time start_time = base::Time::Now(); - while (true) { - LocationBarTesting* loc_bar = - browser()->window()->GetLocationBar()->GetLocationBarForTesting(); - - int visible = loc_bar->PageActionVisibleCount(); - if (visible == count) - return true; - - if ((base::Time::Now() - start_time).InMilliseconds() > kTimeoutMs) { - std::cout << "Timed out waiting for page actions to become (in)visible.\n" - << "Currently visible page actions: " << IntToString(visible) - << "\n"; - return false; - } + NotificationRegistrar registrar; + registrar.Add(this, + NotificationType::EXTENSION_PAGE_ACTION_VISIBILITY_CHANGED, + NotificationService::AllSources()); - MessageLoop::current()->PostDelayedTask(FROM_HERE, - new MessageLoop::QuitTask, 200); + MessageLoop::current()->PostDelayedTask(FROM_HERE, new MessageLoop::QuitTask, + kTimeoutMs); + + target_visible_page_action_count_ = count; + LocationBarTesting* location_bar = + browser()->window()->GetLocationBar()->GetLocationBarForTesting(); + if (location_bar->PageActionVisibleCount() != count) ui_test_utils::RunMessageLoop(); - } + return location_bar->PageActionVisibleCount() == count; } bool ExtensionBrowserTest::WaitForExtensionHostsToLoad() { @@ -315,6 +308,34 @@ void ExtensionBrowserTest::Observe(NotificationType type, MessageLoopForUI::current()->Quit(); break; + case NotificationType::EXTENSION_PAGE_ACTION_COUNT_CHANGED: { + LocationBarTesting* location_bar = + browser()->window()->GetLocationBar()->GetLocationBarForTesting(); + std::cout << "Got EXTENSION_PAGE_ACTION_COUNT_CHANGED " + << "notification. Number of page actions: " + << location_bar->PageActionCount() << "\n"; + if (location_bar->PageActionCount() == + target_page_action_count_) { + target_page_action_count_ = -1; + MessageLoopForUI::current()->Quit(); + } + break; + } + + case NotificationType::EXTENSION_PAGE_ACTION_VISIBILITY_CHANGED: { + LocationBarTesting* location_bar = + browser()->window()->GetLocationBar()->GetLocationBarForTesting(); + std::cout << "Got EXTENSION_PAGE_ACTION_VISIBILITY_CHANGED " + << "notification. Number of visible page actions: " + << location_bar->PageActionVisibleCount() << "\n"; + if (location_bar->PageActionVisibleCount() == + target_visible_page_action_count_) { + target_visible_page_action_count_ = -1; + MessageLoopForUI::current()->Quit(); + } + break; + } + default: NOTREACHED(); break; |