saved_files_service_factory.cc 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. // Copyright 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. #include "apps/saved_files_service_factory.h"
  5. #include "apps/saved_files_service.h"
  6. #include "components/keyed_service/content/browser_context_dependency_manager.h"
  7. #include "content/public/browser/browser_context.h"
  8. #include "extensions/browser/extension_host_registry.h"
  9. #include "extensions/browser/extensions_browser_client.h"
  10. namespace apps {
  11. // static
  12. SavedFilesService* SavedFilesServiceFactory::GetForBrowserContext(
  13. content::BrowserContext* context) {
  14. return static_cast<SavedFilesService*>(
  15. GetInstance()->GetServiceForBrowserContext(context, true));
  16. }
  17. // static
  18. SavedFilesService* SavedFilesServiceFactory::GetForBrowserContextIfExists(
  19. content::BrowserContext* context) {
  20. return static_cast<SavedFilesService*>(
  21. GetInstance()->GetServiceForBrowserContext(context, false));
  22. }
  23. // static
  24. SavedFilesServiceFactory* SavedFilesServiceFactory::GetInstance() {
  25. return base::Singleton<SavedFilesServiceFactory>::get();
  26. }
  27. SavedFilesServiceFactory::SavedFilesServiceFactory()
  28. : BrowserContextKeyedServiceFactory(
  29. "SavedFilesService",
  30. BrowserContextDependencyManager::GetInstance()) {
  31. DependsOn(extensions::ExtensionHostRegistry::GetFactory());
  32. }
  33. SavedFilesServiceFactory::~SavedFilesServiceFactory() = default;
  34. KeyedService* SavedFilesServiceFactory::BuildServiceInstanceFor(
  35. content::BrowserContext* context) const {
  36. return new SavedFilesService(context);
  37. }
  38. content::BrowserContext* SavedFilesServiceFactory::GetBrowserContextToUse(
  39. content::BrowserContext* context) const {
  40. // Make sure that the service is created even for incognito profile. The goal
  41. // is to make this service available in guest sessions, where it could be used
  42. // when apps white-listed in guest sessions attempt to use chrome.fileSystem
  43. // API.
  44. return extensions::ExtensionsBrowserClient::Get()->GetOriginalContext(
  45. context);
  46. }
  47. } // namespace apps