root/chrome/browser/extensions/api/push_messaging/sync_setup_helper.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef CHROME_BROWSER_EXTENSIONS_API_PUSH_MESSAGING_SYNC_SETUP_HELPER_H_
#define CHROME_BROWSER_EXTENSIONS_API_PUSH_MESSAGING_SYNC_SETUP_HELPER_H_

#include <string>

#include "base/basictypes.h"
#include "base/compiler_specific.h"
#include "base/memory/scoped_ptr.h"
#include "net/dns/mock_host_resolver.h"

class Profile;
class ProfileSyncServiceHarness;

namespace extensions {

class SyncSetupHelper {
 public:
  SyncSetupHelper();

  ~SyncSetupHelper();

  // Performs one-time initialization to enable sync for a profile. Does nothing
  // if sync is already enabled for the profile.
  bool InitializeSync(Profile* profile);

  // Helper method used to read GAIA credentials from a local password file.
  // Note: The password file must be a plain text file with two lines.
  // The username is on the first line and the password is on the second line.
  bool ReadPasswordFile(const base::FilePath& passwordFile);

  const std::string& client_id() const { return client_id_; }
  const std::string& client_secret() const { return client_secret_; }
  const std::string& refresh_token() const { return refresh_token_; }

 private:
  // Block until all sync clients have completed their mutual sync cycles.
  // Return true if a quiescent state was successfully reached.
  bool AwaitQuiescence();

  // GAIA account used by the test case.
  std::string username_;

  // GAIA password used by the test case.
  std::string password_;

  // GAIA client id for making the API call to push messaging.
  std::string client_id_;

  // GAIA client secret for making the API call to push messaging.
  std::string client_secret_;

  // GAIA refresh token for making the API call to push messaging.
  std::string refresh_token_;

  // The sync profile used by a test. The profile is owned by the
  // ProfileManager.
  Profile* profile_;

  // Sync client used by a test. A sync client is associated with
  // a sync profile, and implements methods that sync the contents of the
  // profile with the server.
  scoped_ptr<ProfileSyncServiceHarness> client_;

  // This test needs to make live DNS requests for access to
  // GAIA and sync server URLs under google.com. We use a scoped version
  // to override the default resolver while the test is active.
  scoped_ptr<net::ScopedDefaultHostResolverProc> mock_host_resolver_override_;

  DISALLOW_COPY_AND_ASSIGN(SyncSetupHelper);
};

}  // namespace extensions

#endif  // CHROME_BROWSER_EXTENSIONS_API_PUSH_MESSAGING_SYNC_SETUP_HELPER_H_

/* [<][>][^][v][top][bottom][index][help] */