1effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// Copyright 2014 The Chromium Authors. All rights reserved.
2effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// found in the LICENSE file.
4effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
5effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "chrome/browser/sync/test/integration/sync_integration_test_util.h"
6effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
7effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "chrome/browser/sync/profile_sync_service.h"
8effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "chrome/browser/sync/test/integration/single_client_status_change_checker.h"
9effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "chrome/browser/sync/test/integration/updated_progress_marker_checker.h"
10effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
11effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochnamespace sync_integration_test_util {
12effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
13effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochclass PassphraseRequiredChecker : public SingleClientStatusChangeChecker {
14effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch public:
15effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  explicit PassphraseRequiredChecker(ProfileSyncService* service)
16effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch      : SingleClientStatusChangeChecker(service) {}
17effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
18effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  virtual bool IsExitConditionSatisfied() OVERRIDE {
19effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch    return service()->IsPassphraseRequired();
20effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  }
21effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
22effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  virtual std::string GetDebugMessage() const OVERRIDE {
23effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch    return "Passhrase Required";
24effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  }
25effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch};
26effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
27effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochclass PassphraseAcceptedChecker : public SingleClientStatusChangeChecker {
28effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch public:
29effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  explicit PassphraseAcceptedChecker(ProfileSyncService* service)
30effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch      : SingleClientStatusChangeChecker(service) {}
31effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
32effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  virtual bool IsExitConditionSatisfied() OVERRIDE {
33effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch    return !service()->IsPassphraseRequired() &&
34effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch        service()->IsUsingSecondaryPassphrase();
35effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  }
36effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
37effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  virtual std::string GetDebugMessage() const OVERRIDE {
38effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch    return "Passhrase Accepted";
39effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  }
40effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch};
41effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
42effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochbool AwaitPassphraseRequired(ProfileSyncService* service) {
43effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  PassphraseRequiredChecker checker(service);
44e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch  checker.Wait();
45effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  return !checker.TimedOut();
46effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
47effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
48effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochbool AwaitPassphraseAccepted(ProfileSyncService* service) {
49effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  PassphraseAcceptedChecker checker(service);
50e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch  checker.Wait();
51effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  return !checker.TimedOut();
52effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
53effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
54effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochbool AwaitCommitActivityCompletion(ProfileSyncService* service) {
55effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  UpdatedProgressMarkerChecker checker(service);
56e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch  checker.Wait();
57effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  return !checker.TimedOut();
58effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
59effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
60effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}  // namespace sync_integration_test_util
61