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 "base/basictypes.h" 9 #include "base/memory/scoped_ptr.h" 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 RemoteFileSyncService; 18 class SyncFileSystemService; 19 20 class SyncFileSystemServiceFactory : public BrowserContextKeyedServiceFactory { 21 public: 22 static SyncFileSystemService* GetForProfile(Profile* profile); 23 static SyncFileSystemService* FindForProfile(Profile* profile); 24 static SyncFileSystemServiceFactory* GetInstance(); 25 26 // This overrides the 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 scoped_ptr it's one-off and the instance is passed 30 // to the newly created SyncFileSystemService. 31 void set_mock_remote_file_service( 32 scoped_ptr<RemoteFileSyncService> mock_remote_service); 33 34 private: 35 friend struct DefaultSingletonTraits<SyncFileSystemServiceFactory>; 36 SyncFileSystemServiceFactory(); 37 virtual ~SyncFileSystemServiceFactory(); 38 39 // BrowserContextKeyedServiceFactory overrides. 40 virtual KeyedService* BuildServiceInstanceFor( 41 content::BrowserContext* context) const OVERRIDE; 42 43 mutable scoped_ptr<RemoteFileSyncService> mock_remote_file_service_; 44 }; 45 46 } // namespace sync_file_system 47 48 #endif // CHROME_BROWSER_SYNC_FILE_SYSTEM_SYNC_FILE_SYSTEM_SERVICE_FACTORY_H_ 49