diff options
author | binji@chromium.org <binji@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-12-13 03:45:26 +0000 |
---|---|---|
committer | binji@chromium.org <binji@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-12-13 03:45:26 +0000 |
commit | f7e3fb85e5f15210155ef761fa4bbac674d6f501 (patch) | |
tree | 2c003f8c64063e4577783fdf2a5435890ec4a2b6 /chrome/browser/autofill | |
parent | f0c9c12d83bfa960b2f447fc91761014c8fd7d08 (diff) | |
download | chromium_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.cc | 37 |
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, |