summaryrefslogtreecommitdiffstats
path: root/chrome/browser/autofill
diff options
context:
space:
mode:
authorbinji@chromium.org <binji@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-12-13 03:45:26 +0000
committerbinji@chromium.org <binji@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-12-13 03:45:26 +0000
commitf7e3fb85e5f15210155ef761fa4bbac674d6f501 (patch)
tree2c003f8c64063e4577783fdf2a5435890ec4a2b6 /chrome/browser/autofill
parentf0c9c12d83bfa960b2f447fc91761014c8fd7d08 (diff)
downloadchromium_src-f7e3fb85e5f15210155ef761fa4bbac674d6f501.zip
chromium_src-f7e3fb85e5f15210155ef761fa4bbac674d6f501.tar.gz
chromium_src-f7e3fb85e5f15210155ef761fa4bbac674d6f501.tar.bz2
[Autofill] Fix flakiness in autofill browsertest.
BUG=81451 TEST=AutofillTest.* Review URL: http://codereview.chromium.org/8921026 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@114177 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/autofill')
-rw-r--r--chrome/browser/autofill/autofill_browsertest.cc37
1 files changed, 37 insertions, 0 deletions
diff --git a/chrome/browser/autofill/autofill_browsertest.cc b/chrome/browser/autofill/autofill_browsertest.cc
index f25b364..3074dfb 100644
--- a/chrome/browser/autofill/autofill_browsertest.cc
+++ b/chrome/browser/autofill/autofill_browsertest.cc
@@ -13,6 +13,7 @@
#include "chrome/browser/autofill/autofill_profile.h"
#include "chrome/browser/autofill/personal_data_manager.h"
#include "chrome/browser/autofill/personal_data_manager_factory.h"
+#include "chrome/browser/autofill/personal_data_manager_observer.h"
#include "chrome/browser/infobars/infobar_tab_helper.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/translate/translate_infobar_delegate.h"
@@ -65,6 +66,34 @@ static const char* kTestFormString =
" <input type=\"text\" id=\"phone\"><br>"
"</form>";
+class WindowedPersonalDataManagerObserver : public PersonalDataManagerObserver {
+ public:
+ WindowedPersonalDataManagerObserver() :
+ personal_data_changed_(false),
+ has_run_message_loop_(false) {
+ }
+
+ void Wait() {
+ if (!personal_data_changed_) {
+ has_run_message_loop_ = true;
+ ui_test_utils::RunMessageLoop();
+ }
+ }
+
+ void OnPersonalDataChanged() OVERRIDE {
+ if (has_run_message_loop_) {
+ MessageLoopForUI::current()->Quit();
+ has_run_message_loop_ = false;
+ }
+
+ personal_data_changed_ = true;
+ }
+
+ private:
+ bool personal_data_changed_;
+ bool has_run_message_loop_;
+};
+
class AutofillTest : public InProcessBrowserTest {
protected:
AutofillTest() {
@@ -85,7 +114,15 @@ class AutofillTest : public InProcessBrowserTest {
PersonalDataManagerFactory::GetForProfile(browser()->profile());
ASSERT_TRUE(personal_data_manager);
+ WindowedPersonalDataManagerObserver observer;
+ personal_data_manager->SetObserver(&observer);
+
personal_data_manager->AddProfile(profile);
+
+ // AddProfile is asynchronous. Wait for it to finish before continuing the
+ // tests.
+ observer.Wait();
+ personal_data_manager->RemoveObserver(&observer);
}
void ExpectFieldValue(const std::wstring& field_name,