sync_setup_helper.h revision a93a17c8d99d686bd4a1511e5504e5e6cc9fcadf
1// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CHROME_BROWSER_EXTENSIONS_API_PUSH_MESSAGING_SYNC_SETUP_HELPER_H_
6#define CHROME_BROWSER_EXTENSIONS_API_PUSH_MESSAGING_SYNC_SETUP_HELPER_H_
7
8#include <string>
9
10#include "base/basictypes.h"
11#include "base/compiler_specific.h"
12#include "base/memory/scoped_ptr.h"
13#include "net/dns/mock_host_resolver.h"
14
15class Profile;
16class ProfileSyncServiceHarness;
17
18namespace extensions {
19
20class SyncSetupHelper {
21 public:
22  SyncSetupHelper();
23
24  ~SyncSetupHelper();
25
26  // Performs one-time initialization to enable sync for a profile. Does nothing
27  // if sync is already enabled for the profile.
28  bool InitializeSync(Profile* profile);
29
30  // Helper method used to read GAIA credentials from a local password file.
31  // Note: The password file must be a plain text file with two lines.
32  // The username is on the first line and the password is on the second line.
33  bool ReadPasswordFile(const base::FilePath& passwordFile);
34
35  const std::string& client_id() const { return client_id_; }
36  const std::string& client_secret() const { return client_secret_; }
37  const std::string& refresh_token() const { return refresh_token_; }
38
39 private:
40  // Block until all sync clients have completed their mutual sync cycles.
41  // Return true if a quiescent state was successfully reached.
42  bool AwaitQuiescence();
43
44  // GAIA account used by the test case.
45  std::string username_;
46
47  // GAIA password used by the test case.
48  std::string password_;
49
50  // GAIA client id for making the API call to push messaging.
51  std::string client_id_;
52
53  // GAIA client secret for making the API call to push messaging.
54  std::string client_secret_;
55
56  // GAIA refresh token for making the API call to push messaging.
57  std::string refresh_token_;
58
59  // The sync profile used by a test. The profile is owned by the
60  // ProfileManager.
61  Profile* profile_;
62
63  // Sync client used by a test. A sync client is associated with
64  // a sync profile, and implements methods that sync the contents of the
65  // profile with the server.
66  scoped_ptr<ProfileSyncServiceHarness> client_;
67
68  // This test needs to make live DNS requests for access to
69  // GAIA and sync server URLs under google.com. We use a scoped version
70  // to override the default resolver while the test is active.
71  scoped_ptr<net::ScopedDefaultHostResolverProc> mock_host_resolver_override_;
72
73  DISALLOW_COPY_AND_ASSIGN(SyncSetupHelper);
74};
75
76}  // namespace extensions
77
78#endif  // CHROME_BROWSER_EXTENSIONS_API_PUSH_MESSAGING_SYNC_SETUP_HELPER_H_
79