service_worker_task_queue_factory.cc 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. // Copyright 2017 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 "extensions/browser/service_worker_task_queue_factory.h"
  5. #include "components/keyed_service/content/browser_context_dependency_manager.h"
  6. #include "extensions/browser/extension_registry_factory.h"
  7. #include "extensions/browser/extensions_browser_client.h"
  8. #include "extensions/browser/process_manager_factory.h"
  9. #include "extensions/browser/service_worker_task_queue.h"
  10. using content::BrowserContext;
  11. namespace extensions {
  12. // static
  13. ServiceWorkerTaskQueue* ServiceWorkerTaskQueueFactory::GetForBrowserContext(
  14. BrowserContext* context) {
  15. return static_cast<ServiceWorkerTaskQueue*>(
  16. GetInstance()->GetServiceForBrowserContext(context, true));
  17. }
  18. // static
  19. ServiceWorkerTaskQueueFactory* ServiceWorkerTaskQueueFactory::GetInstance() {
  20. return base::Singleton<ServiceWorkerTaskQueueFactory>::get();
  21. }
  22. ServiceWorkerTaskQueueFactory::ServiceWorkerTaskQueueFactory()
  23. : BrowserContextKeyedServiceFactory(
  24. "ServiceWorkerTaskQueue",
  25. BrowserContextDependencyManager::GetInstance()) {
  26. DependsOn(ExtensionRegistryFactory::GetInstance());
  27. DependsOn(ProcessManagerFactory::GetInstance());
  28. }
  29. ServiceWorkerTaskQueueFactory::~ServiceWorkerTaskQueueFactory() {}
  30. KeyedService* ServiceWorkerTaskQueueFactory::BuildServiceInstanceFor(
  31. BrowserContext* context) const {
  32. ServiceWorkerTaskQueue* task_queue = new ServiceWorkerTaskQueue(context);
  33. BrowserContext* original_context =
  34. ExtensionsBrowserClient::Get()->GetOriginalContext(context);
  35. if (original_context != context) {
  36. // To let incognito context's ServiceWorkerTaskQueue know about extensions
  37. // that were activated (which has its own instance of
  38. // ServiceWorkerTaskQueue), we'd need to activate extensions from
  39. // |original_context|'s ServiceWorkerTaskQueue.
  40. task_queue->ActivateIncognitoSplitModeExtensions(
  41. ServiceWorkerTaskQueue::Get(original_context));
  42. }
  43. return task_queue;
  44. }
  45. BrowserContext* ServiceWorkerTaskQueueFactory::GetBrowserContextToUse(
  46. BrowserContext* context) const {
  47. return context;
  48. }
  49. } // namespace extensions