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_SYNC_PROFILE_SYNC_SERVICE_MOCK_H_
6#define CHROME_BROWSER_SYNC_PROFILE_SYNC_SERVICE_MOCK_H_
7
8#include <string>
9#include <vector>
10
11#include "base/memory/weak_ptr.h"
12#include "base/strings/string16.h"
13#include "chrome/browser/sync/profile_sync_service.h"
14#include "chrome/test/base/testing_profile.h"
15#include "components/sync_driver/change_processor.h"
16#include "components/sync_driver/data_type_controller.h"
17#include "components/sync_driver/device_info.h"
18#include "google_apis/gaia/google_service_auth_error.h"
19#include "sync/internal_api/public/base/model_type.h"
20#include "sync/protocol/sync_protocol_error.h"
21#include "testing/gmock/include/gmock/gmock.h"
22
23using ::testing::Invoke;
24
25class ProfileSyncServiceMock : public ProfileSyncService {
26 public:
27  explicit ProfileSyncServiceMock(Profile* profile);
28  ProfileSyncServiceMock(
29      scoped_ptr<ProfileSyncComponentsFactory> factory, Profile* profile);
30  virtual ~ProfileSyncServiceMock();
31
32  // A utility used by sync tests to create a TestingProfile with a Google
33  // Services username stored in a (Testing)PrefService.
34  static TestingProfile* MakeSignedInTestingProfile();
35
36  // Helper routine to be used in conjunction with
37  // BrowserContextKeyedServiceFactory::SetTestingFactory().
38  static KeyedService* BuildMockProfileSyncService(
39      content::BrowserContext* profile);
40
41  MOCK_METHOD0(DisableForUser, void());
42  MOCK_METHOD4(OnBackendInitialized,
43      void(const syncer::WeakHandle<syncer::JsBackend>&,
44           const syncer::WeakHandle<syncer::DataTypeDebugInfoListener>&,
45           const std::string&,
46           bool));
47  MOCK_METHOD0(OnSyncCycleCompleted, void());
48  MOCK_METHOD0(OnAuthError, void());
49  MOCK_METHOD4(OnUserSubmittedAuth,
50               void(const std::string& username,
51                    const std::string& password,
52                    const std::string& captcha,
53                    const std::string& access_code));
54  MOCK_METHOD0(OnUserCancelledDialog, void());
55  MOCK_CONST_METHOD0(GetAuthenticatedUsername, base::string16());
56  MOCK_METHOD2(OnUserChoseDatatypes,
57               void(bool sync_everything,
58                    syncer::ModelTypeSet chosen_types));
59
60  MOCK_METHOD2(OnUnrecoverableError,
61               void(const tracked_objects::Location& location,
62               const std::string& message));
63  MOCK_METHOD1(DisableDatatype, void(const syncer::SyncError&));
64  MOCK_CONST_METHOD0(GetUserShare, syncer::UserShare*());
65  MOCK_METHOD1(DeactivateDataType, void(syncer::ModelType));
66  MOCK_METHOD0(UnsuppressAndStart, void());
67
68  MOCK_METHOD1(AddObserver, void(ProfileSyncServiceBase::Observer*));
69  MOCK_METHOD1(RemoveObserver, void(ProfileSyncServiceBase::Observer*));
70  MOCK_METHOD0(GetJsController, base::WeakPtr<syncer::JsController>());
71  MOCK_CONST_METHOD0(HasSyncSetupCompleted, bool());
72
73  MOCK_CONST_METHOD0(EncryptEverythingAllowed, bool());
74  MOCK_CONST_METHOD0(EncryptEverythingEnabled, bool());
75  MOCK_METHOD0(EnableEncryptEverything, void());
76
77  MOCK_METHOD1(ChangePreferredDataTypes,
78               void(syncer::ModelTypeSet preferred_types));
79  MOCK_CONST_METHOD0(GetActiveDataTypes, syncer::ModelTypeSet());
80  MOCK_CONST_METHOD0(GetPreferredDataTypes, syncer::ModelTypeSet());
81  MOCK_CONST_METHOD0(GetRegisteredDataTypes, syncer::ModelTypeSet());
82  MOCK_CONST_METHOD0(GetLastSessionSnapshot,
83                     syncer::sessions::SyncSessionSnapshot());
84
85  MOCK_METHOD1(QueryDetailedSyncStatus,
86               bool(browser_sync::SyncBackendHost::Status* result));
87  MOCK_CONST_METHOD0(GetAuthError, const GoogleServiceAuthError&());
88  MOCK_CONST_METHOD0(FirstSetupInProgress, bool());
89  MOCK_CONST_METHOD0(GetLastSyncedTimeString, base::string16());
90  MOCK_CONST_METHOD0(HasUnrecoverableError, bool());
91  MOCK_CONST_METHOD0(sync_initialized, bool());
92  MOCK_CONST_METHOD0(IsStartSuppressed, bool());
93  MOCK_CONST_METHOD0(waiting_for_auth, bool());
94  MOCK_METHOD1(OnActionableError, void(const syncer::SyncProtocolError&));
95  MOCK_METHOD1(SetSetupInProgress, void(bool));
96  MOCK_CONST_METHOD1(IsDataTypeControllerRunning, bool(syncer::ModelType));
97
98  // DataTypeManagerObserver mocks.
99  MOCK_METHOD0(OnConfigureBlocked, void());
100  MOCK_METHOD1(OnConfigureDone,
101               void(const sync_driver::DataTypeManager::ConfigureResult&));
102  MOCK_METHOD0(OnConfigureRetry, void());
103  MOCK_METHOD0(OnConfigureStart, void());
104
105  MOCK_METHOD0(IsSyncEnabledAndLoggedIn, bool());
106  MOCK_CONST_METHOD0(IsManaged, bool());
107  MOCK_METHOD0(IsOAuthRefreshTokenAvailable, bool());
108
109  MOCK_CONST_METHOD0(IsPassphraseRequired, bool());
110  MOCK_CONST_METHOD0(IsPassphraseRequiredForDecryption, bool());
111  MOCK_CONST_METHOD0(IsUsingSecondaryPassphrase, bool());
112  MOCK_CONST_METHOD0(GetPassphraseType, syncer::PassphraseType());
113  MOCK_CONST_METHOD0(GetPassphraseTime, base::Time());
114  MOCK_CONST_METHOD0(GetExplicitPassphraseTime, base::Time());
115
116  MOCK_METHOD1(SetDecryptionPassphrase, bool(const std::string& passphrase));
117  MOCK_METHOD2(SetEncryptionPassphrase, void(const std::string& passphrase,
118                                             PassphraseType type));
119
120  MOCK_METHOD1(StartUpSlowBackendComponents, void(BackendMode));
121};
122
123#endif  // CHROME_BROWSER_SYNC_PROFILE_SYNC_SERVICE_MOCK_H_
124