profile_sync_service_mock.h revision f8ee788a64d60abd8f2d742a5fdedde054ecd910
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CHROME_BROWSER_SYNC_PROFILE_SYNC_SERVICE_MOCK_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHROME_BROWSER_SYNC_PROFILE_SYNC_SERVICE_MOCK_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string>
9a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include <vector>
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/weak_ptr.h"
12868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/string16.h"
13a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "chrome/browser/sync/glue/device_info.h"
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/sync/profile_sync_service.h"
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/test/base/testing_profile.h"
160529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "components/sync_driver/change_processor.h"
175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "components/sync_driver/data_type_controller.h"
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "google_apis/gaia/google_service_auth_error.h"
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "sync/internal_api/public/base/model_type.h"
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "sync/protocol/sync_protocol_error.h"
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gmock/include/gmock/gmock.h"
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
233551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)using ::testing::Invoke;
243551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ProfileSyncServiceMock : public ProfileSyncService {
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  explicit ProfileSyncServiceMock(Profile* profile);
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~ProfileSyncServiceMock();
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // A utility used by sync tests to create a TestingProfile with a Google
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Services username stored in a (Testing)PrefService.
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static TestingProfile* MakeSignedInTestingProfile();
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Helper routine to be used in conjunction with
3590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  // BrowserContextKeyedServiceFactory::SetTestingFactory().
36a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  static KeyedService* BuildMockProfileSyncService(
37c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      content::BrowserContext* profile);
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD0(DisableForUser, void());
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD3(OnBackendInitialized,
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      void(const syncer::WeakHandle<syncer::JsBackend>&,
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           const syncer::WeakHandle<syncer::DataTypeDebugInfoListener>&,
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           bool));
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD0(OnSyncCycleCompleted, void());
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD0(OnAuthError, void());
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD4(OnUserSubmittedAuth,
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)               void(const std::string& username,
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    const std::string& password,
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    const std::string& captcha,
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    const std::string& access_code));
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD0(OnUserCancelledDialog, void());
52a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  MOCK_CONST_METHOD0(GetAuthenticatedUsername, base::string16());
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD2(OnUserChoseDatatypes,
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)               void(bool sync_everything,
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    syncer::ModelTypeSet chosen_types));
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD2(OnUnrecoverableError,
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)               void(const tracked_objects::Location& location,
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)               const std::string& message));
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD3(DisableBrokenDatatype, void(syncer::ModelType,
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)               const tracked_objects::Location&,
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)               std::string message));
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_CONST_METHOD0(GetUserShare, syncer::UserShare*());
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD1(DeactivateDataType, void(syncer::ModelType));
6590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  MOCK_METHOD0(UnsuppressAndStart, void());
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
67ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  MOCK_METHOD1(AddObserver, void(ProfileSyncServiceBase::Observer*));
68ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  MOCK_METHOD1(RemoveObserver, void(ProfileSyncServiceBase::Observer*));
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD0(GetJsController, base::WeakPtr<syncer::JsController>());
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_CONST_METHOD0(HasSyncSetupCompleted, bool());
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_CONST_METHOD0(EncryptEverythingEnabled, bool());
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD0(EnableEncryptEverything, void());
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD1(ChangePreferredDataTypes,
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)               void(syncer::ModelTypeSet preferred_types));
77868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  MOCK_CONST_METHOD0(GetActiveDataTypes, syncer::ModelTypeSet());
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_CONST_METHOD0(GetPreferredDataTypes, syncer::ModelTypeSet());
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_CONST_METHOD0(GetRegisteredDataTypes, syncer::ModelTypeSet());
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_CONST_METHOD0(GetLastSessionSnapshot,
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     syncer::sessions::SyncSessionSnapshot());
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD1(QueryDetailedSyncStatus,
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)               bool(browser_sync::SyncBackendHost::Status* result));
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_CONST_METHOD0(GetAuthError, const GoogleServiceAuthError&());
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_CONST_METHOD0(FirstSetupInProgress, bool());
87a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  MOCK_CONST_METHOD0(GetLastSyncedTimeString, base::string16());
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_CONST_METHOD0(HasUnrecoverableError, bool());
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_CONST_METHOD0(sync_initialized, bool());
902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  MOCK_CONST_METHOD0(IsStartSuppressed, bool());
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_CONST_METHOD0(waiting_for_auth, bool());
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD1(OnActionableError, void(
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const syncer::SyncProtocolError&));
942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  MOCK_METHOD1(SetSetupInProgress, void(bool));
955d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  MOCK_CONST_METHOD0(IsSessionsDataTypeControllerRunning, bool());
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  MOCK_CONST_METHOD0(GetAllSignedInDevicesMock,
98a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)                     std::vector<browser_sync::DeviceInfo*>* ());
99a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  // This is to get around the fact that GMOCK does not handle Scoped*.
100a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  virtual ScopedVector<browser_sync::DeviceInfo>
10158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      GetAllSignedInDevices() const OVERRIDE;
102a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
1035d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  virtual scoped_ptr<browser_sync::DeviceInfo> GetLocalDeviceInfo()
1045d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      const OVERRIDE;
1055d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  MOCK_CONST_METHOD0(GetLocalDeviceInfoMock,
1065d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                     browser_sync::DeviceInfo*());
1075d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  MOCK_CONST_METHOD0(GetLocalSyncCacheGUID, std::string());
1085d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // DataTypeManagerObserver mocks.
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD0(OnConfigureBlocked, void());
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD1(OnConfigureDone,
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)               void(const browser_sync::DataTypeManager::ConfigureResult&));
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD0(OnConfigureRetry, void());
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD0(OnConfigureStart, void());
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD0(IsSyncEnabledAndLoggedIn, bool());
1172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  MOCK_CONST_METHOD0(IsManaged, bool());
1187d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  MOCK_METHOD0(IsOAuthRefreshTokenAvailable, bool());
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_CONST_METHOD0(IsPassphraseRequired, bool());
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_CONST_METHOD0(IsPassphraseRequiredForDecryption, bool());
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_CONST_METHOD0(IsUsingSecondaryPassphrase, bool());
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_CONST_METHOD0(GetPassphraseType, syncer::PassphraseType());
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_CONST_METHOD0(GetPassphraseTime, base::Time());
125c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  MOCK_CONST_METHOD0(GetExplicitPassphraseTime, base::Time());
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD1(SetDecryptionPassphrase, bool(const std::string& passphrase));
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD2(SetEncryptionPassphrase, void(const std::string& passphrase,
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                             PassphraseType type));
130f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
131f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  MOCK_METHOD1(StartUpSlowBackendComponents, void(BackendMode));
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // CHROME_BROWSER_SYNC_PROFILE_SYNC_SERVICE_MOCK_H_
135