blob: b2bd4d10092376c33dc260df2975dd14877dbb74 [file]
// Copyright 2026 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_annotator/accessibility_annotator_service_factory.h"
#include <memory>
#include <utility>
#include "base/feature_list.h"
#include "base/no_destructor.h"
#include "chrome/browser/accessibility_annotator/accessibility_annotator_backend_factory.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/profiles/profile_selections.h"
#include "components/accessibility_annotator/core/accessibility_annotator_features.h"
#include "components/accessibility_annotator/core/accessibility_annotator_service.h"
#include "components/accessibility_annotator/core/direct_server_entity_provider.h"
#include "components/accessibility_annotator/core/storage/accessibility_annotator_backend.h"
#include "content/public/browser/browser_context.h"
// static
accessibility_annotator::AccessibilityAnnotatorService*
AccessibilityAnnotatorServiceFactory::GetForProfile(Profile* profile) {
return static_cast<accessibility_annotator::AccessibilityAnnotatorService*>(
GetInstance()->GetServiceForBrowserContext(profile, true));
}
// static
AccessibilityAnnotatorServiceFactory*
AccessibilityAnnotatorServiceFactory::GetInstance() {
static base::NoDestructor<AccessibilityAnnotatorServiceFactory> instance;
return instance.get();
}
AccessibilityAnnotatorServiceFactory::AccessibilityAnnotatorServiceFactory()
: ProfileKeyedServiceFactory(
"AccessibilityAnnotatorService",
ProfileSelections::BuildRedirectedInIncognito()) {
DependsOn(AccessibilityAnnotatorBackendFactory::GetInstance());
}
AccessibilityAnnotatorServiceFactory::~AccessibilityAnnotatorServiceFactory() =
default;
std::unique_ptr<KeyedService>
AccessibilityAnnotatorServiceFactory::BuildServiceInstanceForBrowserContext(
content::BrowserContext* context) const {
if (!base::FeatureList::IsEnabled(
accessibility_annotator::features::kAccessibilityAnnotator)) {
return nullptr;
}
accessibility_annotator::AccessibilityAnnotatorBackend* backend =
AccessibilityAnnotatorBackendFactory::GetForProfile(
Profile::FromBrowserContext(context));
if (!backend) {
return nullptr;
}
std::unique_ptr<accessibility_annotator::EntityDataProvider> provider =
nullptr;
if (base::FeatureList::IsEnabled(accessibility_annotator::features::
kAccessibilityAnnotatorGetEntities)) {
provider =
std::make_unique<accessibility_annotator::DirectServerEntityProvider>(
*backend);
}
return std::make_unique<
accessibility_annotator::AccessibilityAnnotatorService>(
std::move(provider));
}