Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1369)

Unified Diff: chrome/browser/autofill/autofill_browsertest.cc

Issue 8921026: [Autofill] Fix flakiness in autofill browsertest. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: address comments Created 9 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/autofill/autofill_browsertest.cc
diff --git a/chrome/browser/autofill/autofill_browsertest.cc b/chrome/browser/autofill/autofill_browsertest.cc
index f25b3645e97061083a95e23876c313db971f675f..3074dfb1079676deec63ae45edef3cd56fb2876d 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,
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698