summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions/extension_browsertest.cc
diff options
context:
space:
mode:
authorphajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-02-10 13:10:03 +0000
committerphajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-02-10 13:10:03 +0000
commitd818e07fb7b4e680de9a38ad7af55ba04acb2cbf (patch)
tree6be52cdcff66f0c5972ce80feef7dbcf392ad899 /chrome/browser/extensions/extension_browsertest.cc
parentd267ee95429eca5bff2e2d499725ca222848a1cf (diff)
downloadchromium_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.cc93
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;