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

Unified Diff: chrome/browser/sync/test/integration/passwords_helper.cc

Issue 267743003: Refactor password sync integration tests (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Remove disable tests Created 6 years, 7 months 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
Index: chrome/browser/sync/test/integration/passwords_helper.cc
diff --git a/chrome/browser/sync/test/integration/passwords_helper.cc b/chrome/browser/sync/test/integration/passwords_helper.cc
index 7fd71e12a79472c8670003e25d97ac74f7af18e3..6a3fb0fe7af79225d16e0fa4f175f0ac6f3d3acf 100644
--- a/chrome/browser/sync/test/integration/passwords_helper.cc
+++ b/chrome/browser/sync/test/integration/passwords_helper.cc
@@ -14,6 +14,7 @@
#include "chrome/browser/sync/profile_sync_service_factory.h"
#include "chrome/browser/sync/test/integration/multi_client_status_change_checker.h"
#include "chrome/browser/sync/test/integration/profile_sync_service_harness.h"
+#include "chrome/browser/sync/test/integration/single_client_status_change_checker.h"
#include "chrome/browser/sync/test/integration/sync_datatype_helper.h"
#include "chrome/test/base/ui_test_utils.h"
#include "components/password_manager/core/browser/password_form_data.h"
@@ -177,8 +178,8 @@ bool ProfilesContainSamePasswordForms(int index_a, int index_b) {
bool AllProfilesContainSamePasswordFormsAsVerifier() {
for (int i = 0; i < test()->num_clients(); ++i) {
if (!ProfileContainsSamePasswordFormsAsVerifier(i)) {
- LOG(ERROR) << "Profile " << i << " does not contain the same password"
- " forms as the verifier.";
+ DVLOG(1) << "Profile " << i << " does not contain the same password"
+ " forms as the verifier.";
return false;
}
}
@@ -188,8 +189,8 @@ bool AllProfilesContainSamePasswordFormsAsVerifier() {
bool AllProfilesContainSamePasswordForms() {
for (int i = 1; i < test()->num_clients(); ++i) {
if (!ProfilesContainSamePasswordForms(0, i)) {
- LOG(ERROR) << "Profile " << i << " does not contain the same password"
- " forms as Profile 0.";
+ DVLOG(1) << "Profile " << i << " does not contain the same password"
+ " forms as Profile 0.";
return false;
}
}
@@ -265,6 +266,69 @@ bool AwaitAllProfilesContainSamePasswordForms() {
return !checker.TimedOut();
}
+namespace {
+
+// Helper class used in the implementation of
+// AwaitProfileContainSamePasswordFormsAsVerifier.
+class SamePasswordFormsAsVerifierChecker
+ : public SingleClientStatusChangeChecker {
+ public:
+ explicit SamePasswordFormsAsVerifierChecker(int index);
+ virtual ~SamePasswordFormsAsVerifierChecker();
+
+ virtual bool IsExitConditionSatisfied() OVERRIDE;
+ virtual std::string GetDebugMessage() const OVERRIDE;
+
+ private:
+ int index_;
+
+ bool in_progress_;
+ bool needs_recheck_;
+};
+
+SamePasswordFormsAsVerifierChecker::SamePasswordFormsAsVerifierChecker(int i)
+ : SingleClientStatusChangeChecker(
+ sync_datatype_helper::test()->GetSyncService(i)),
+ index_(i),
+ in_progress_(false),
+ needs_recheck_(false) {
+}
+
+SamePasswordFormsAsVerifierChecker::~SamePasswordFormsAsVerifierChecker() {
+}
+
+// This method uses the same re-entrancy prevention trick as
+// the SamePasswordFormsChecker.
+bool SamePasswordFormsAsVerifierChecker::IsExitConditionSatisfied() {
+ if (in_progress_) {
+ LOG(WARNING) << "Setting flag and returning early to prevent nesting.";
+ needs_recheck_ = true;
+ return false;
+ }
+
+ // Keep retrying until we get a good reading.
+ bool result = false;
+ in_progress_ = true;
+ do {
+ needs_recheck_ = false;
+ result = ProfileContainsSamePasswordFormsAsVerifier(index_);
+ } while (needs_recheck_);
+ in_progress_ = false;
+ return result;
+}
+
+std::string SamePasswordFormsAsVerifierChecker::GetDebugMessage() const {
+ return "Waiting for passwords to match verifier";
+}
+
+} // namespace
+
+bool AwaitProfileContainsSamePasswordFormsAsVerifier(int index) {
+ SamePasswordFormsAsVerifierChecker checker(index);
+ checker.Wait();
+ return !checker.TimedOut();
+}
+
int GetPasswordCount(int index) {
std::vector<PasswordForm> forms;
GetLogins(GetPasswordStore(index), forms);

Powered by Google App Engine
This is Rietveld 408576698