// Copyright 2022 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "extensions/browser/core_browser_context_keyed_service_factories.h"

#include "build/build_config.h"
#include "components/guest_view/buildflags/buildflags.h"
#include "extensions/browser/api/web_request/web_request_event_router_factory.h"
#include "extensions/browser/crx_installer.h"
#include "extensions/browser/delayed_install_manager_factory.h"
#include "extensions/browser/event_router_factory.h"
#include "extensions/browser/extension_action_manager.h"
#include "extensions/browser/extension_function.h"
#include "extensions/browser/extension_navigation_registry.h"
#include "extensions/browser/extension_prefs_factory.h"
#include "extensions/browser/extension_prefs_helper_factory.h"
#include "extensions/browser/extension_protocols.h"
#include "extensions/browser/extension_registrar_factory.h"
#include "extensions/browser/extension_user_activation_service_factory.h"
#include "extensions/browser/image_loader_factory.h"
#include "extensions/browser/message_tracker.h"
#include "extensions/browser/pending_extension_manager_factory.h"
#include "extensions/browser/permissions_manager.h"
#include "extensions/browser/process_manager_factory.h"
#include "extensions/browser/renderer_startup_helper.h"
#include "extensions/browser/service_worker/service_worker_keepalive.h"
#include "extensions/browser/service_worker/service_worker_task_queue_factory.h"
#include "extensions/browser/unpacked_installer.h"
#include "extensions/browser/updater/update_service_factory.h"
#include "extensions/browser/user_script_world_configuration_manager.h"
#include "extensions/buildflags/buildflags.h"

#if BUILDFLAG(ENABLE_EXTENSIONS)
#include "extensions/browser/guest_view/mime_handler_view/mime_handler_stream_manager.h"
#if !BUILDFLAG(IS_ANDROID)
#include "extensions/browser/mime_handler/mime_handler_registry.h"
#endif  // !BUILDFLAG(IS_ANDROID)
#endif  // BUILDFLAG(ENABLE_EXTENSIONS)

#if BUILDFLAG(ENABLE_PLATFORM_APPS)
#include "extensions/browser/app_window/app_window_geometry_cache.h"
#include "extensions/browser/app_window/app_window_registry.h"
#endif

namespace extensions {

void EnsureCoreBrowserContextKeyedServiceFactoriesBuilt() {
#if BUILDFLAG(ENABLE_PLATFORM_APPS)
  AppWindowGeometryCache::Factory::GetInstance();
  AppWindowRegistry::Factory::GetInstance();
#endif
  CrxInstaller::EnsureShutdownNotifierFactoryBuilt();
  DelayedInstallManagerFactory::GetInstance();
  EnsureExtensionURLLoaderFactoryShutdownNotifierFactoryBuilt();
  EventRouterFactory::GetInstance();
  ExtensionActionManager::GetFactory();
  ExtensionFunction::EnsureShutdownNotifierFactoryBuilt();
  ExtensionPrefsFactory::GetInstance();
  ExtensionNavigationRegistry::GetFactoryInstance();
  ExtensionUserActivationServiceFactory::GetInstance();
  ExtensionPrefsHelperFactory::GetInstance();
  ExtensionRegistrarFactory::GetInstance();
  ImageLoaderFactory::GetInstance();
  MessageTracker::GetFactory();
#if BUILDFLAG(ENABLE_EXTENSIONS)
  MimeHandlerStreamManager::EnsureFactoryBuilt();
#if !BUILDFLAG(IS_ANDROID)
  MimeHandlerRegistry::EnsureFactoryBuilt();
#endif  // !BUILDFLAG(IS_ANDROID)
#endif  // BUILDFLAG(ENABLE_EXTENSIONS)
  PendingExtensionManagerFactory::GetInstance();
  PermissionsManager::GetFactory();
  ProcessManagerFactory::GetInstance();
  RendererStartupHelperFactory::GetInstance();
  ServiceWorkerKeepalive::EnsureShutdownNotifierFactoryBuilt();
  ServiceWorkerTaskQueueFactory::GetInstance();
  UnpackedInstaller::EnsureShutdownNotifierFactoryBuilt();
  UpdateServiceFactory::GetInstance();
  UserScriptWorldConfigurationManager::GetFactory();
  WebRequestEventRouterFactory::GetInstance();
}

}  // namespace extensions
