1 // Copyright (c) 2013 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_FILE_SYSTEM_SYNC_FILE_SYSTEM_SERVICE_FACTORY_H_ 6 #define CHROME_BROWSER_SYNC_FILE_SYSTEM_SYNC_FILE_SYSTEM_SERVICE_FACTORY_H_ 7 8 #include <memory> 9 10 #include "base/memory/singleton.h" 11 #include "components/keyed_service/content/browser_context_keyed_service_factory.h" 12 13 class Profile; 14 15 namespace sync_file_system { 16 17 class LocalFileSyncService; 18 class RemoteFileSyncService; 19 class SyncFileSystemService; 20 21 class SyncFileSystemServiceFactory : public BrowserContextKeyedServiceFactory { 22 public: 23 static SyncFileSystemService* GetForProfile(Profile* profile); 24 static SyncFileSystemServiceFactory* GetInstance(); 25 26 // This overrides the local/remote service for testing. 27 // For testing this must be called before GetForProfile is called. 28 // Otherwise a new DriveFileSyncService is created for the new service. 29 // Since we use std::unique_ptr it's one-off and the instance is passed 30 // to the newly created SyncFileSystemService. 31 void set_mock_local_file_service( 32 std::unique_ptr<LocalFileSyncService> mock_local_service); 33 void set_mock_remote_file_service( 34 std::unique_ptr<RemoteFileSyncService> mock_remote_service); 35 36 private: 37 friend struct base::DefaultSingletonTraits<SyncFileSystemServiceFactory>; 38 SyncFileSystemServiceFactory(); 39 ~SyncFileSystemServiceFactory() override; 40 41 // BrowserContextKeyedServiceFactory overrides. 42 KeyedService* BuildServiceInstanceFor( 43 content::BrowserContext* context) const override; 44 45 mutable std::unique_ptr<LocalFileSyncService> mock_local_file_service_; 46 mutable std::unique_ptr<RemoteFileSyncService> mock_remote_file_service_; 47 }; 48 49 } // namespace sync_file_system 50 51 #endif // CHROME_BROWSER_SYNC_FILE_SYSTEM_SYNC_FILE_SYSTEM_SERVICE_FACTORY_H_ 52