12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifndef CHROME_BROWSER_EXTENSIONS_API_PUSH_MESSAGING_SYNC_SETUP_HELPER_H_ 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define CHROME_BROWSER_EXTENSIONS_API_PUSH_MESSAGING_SYNC_SETUP_HELPER_H_ 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <string> 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/basictypes.h" 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/compiler_specific.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/memory/scoped_ptr.h" 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "net/dns/mock_host_resolver.h" 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class Profile; 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class ProfileSyncServiceHarness; 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace extensions { 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class SyncSetupHelper { 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SyncSetupHelper(); 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ~SyncSetupHelper(); 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Performs one-time initialization to enable sync for a profile. Does nothing 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // if sync is already enabled for the profile. 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool InitializeSync(Profile* profile); 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Helper method used to read GAIA credentials from a local password file. 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Note: The password file must be a plain text file with two lines. 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // The username is on the first line and the password is on the second line. 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool ReadPasswordFile(const base::FilePath& passwordFile); 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::string& client_id() const { return client_id_; } 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::string& client_secret() const { return client_secret_; } 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::string& refresh_token() const { return refresh_token_; } 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Block until all sync clients have completed their mutual sync cycles. 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Return true if a quiescent state was successfully reached. 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool AwaitQuiescence(); 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // GAIA account used by the test case. 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::string username_; 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // GAIA password used by the test case. 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::string password_; 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // GAIA client id for making the API call to push messaging. 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::string client_id_; 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // GAIA client secret for making the API call to push messaging. 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::string client_secret_; 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // GAIA refresh token for making the API call to push messaging. 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::string refresh_token_; 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // The sync profile used by a test. The profile is owned by the 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // ProfileManager. 612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Profile* profile_; 622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Sync client used by a test. A sync client is associated with 642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // a sync profile, and implements methods that sync the contents of the 652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // profile with the server. 662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<ProfileSyncServiceHarness> client_; 672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // This test needs to make live DNS requests for access to 692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // GAIA and sync server URLs under google.com. We use a scoped version 702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // to override the default resolver while the test is active. 712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<net::ScopedDefaultHostResolverProc> mock_host_resolver_override_; 722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(SyncSetupHelper); 742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace extensions 772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif // CHROME_BROWSER_EXTENSIONS_API_PUSH_MESSAGING_SYNC_SETUP_HELPER_H_ 79