| // 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 "chrome/browser/accessibility/service/accessibility_service_router_factory.h" | 
 | #include "chrome/browser/accessibility/service/accessibility_service_router.h" | 
 | #include "chrome/browser/profiles/profile_selections.h" | 
 | #include "content/public/browser/browser_context.h" | 
 |  | 
 | namespace ax { | 
 |  | 
 | // static | 
 | AccessibilityServiceRouter* | 
 | AccessibilityServiceRouterFactory::GetForBrowserContext( | 
 |     content::BrowserContext* context) { | 
 |   return static_cast<AccessibilityServiceRouter*>( | 
 |       GetInstance()->GetServiceForBrowserContext(context, true)); | 
 | } | 
 |  | 
 | // static | 
 | AccessibilityServiceRouterFactory* | 
 | AccessibilityServiceRouterFactory::GetInstance() { | 
 |   static base::NoDestructor<AccessibilityServiceRouterFactory> instance; | 
 |   return instance.get(); | 
 | } | 
 |  | 
 | AccessibilityServiceRouterFactory::AccessibilityServiceRouterFactory() | 
 |     : ProfileKeyedServiceFactory( | 
 |           "AccessibilityService", | 
 |           ProfileSelections::Builder() | 
 |               // TODO(b/262637071): Ensure A11yService can run on all profiles, | 
 |               // there should be no UI surface that doesn't allow the | 
 |               // A11yService, as it is required to run A11y features like | 
 |               // ChromeVox. | 
 |               .WithRegular(ProfileSelection::kOriginalOnly) | 
 |               // TODO(crbug.com/40257657): Check if this service is needed in | 
 |               // Guest mode. | 
 |               .WithGuest(ProfileSelection::kOriginalOnly) | 
 |               .WithSystem(ProfileSelection::kOriginalOnly) | 
 |               .WithAshInternals(ProfileSelection::kOriginalOnly) | 
 |               .Build()) {} | 
 |  | 
 | AccessibilityServiceRouterFactory::~AccessibilityServiceRouterFactory() = | 
 |     default; | 
 |  | 
 | std::unique_ptr<KeyedService> | 
 | AccessibilityServiceRouterFactory::BuildServiceInstanceForBrowserContext( | 
 |     content::BrowserContext* context) const { | 
 |   return std::make_unique<AccessibilityServiceRouter>(); | 
 | } | 
 |  | 
 | // static | 
 | void AccessibilityServiceRouterFactory::EnsureFactoryBuilt() { | 
 |   GetInstance(); | 
 | } | 
 |  | 
 | }  // namespace ax |