blob: 0ea8cee716f8167a8df2d45b3e9a8ae3583164b4 [file] [log] [blame]
// Copyright 2025 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/extensions/forced_extensions/assessment_assistant_tracker.h"
#include "chrome/browser/extensions/forced_extensions/install_stage_tracker.h"
#include "chrome/browser/extensions/forced_extensions/install_stage_tracker_factory.h"
#include "components/keyed_service/content/browser_context_dependency_manager.h"
#include "components/keyed_service/content/browser_context_keyed_service_factory.h"
#include "extensions/browser/extension_registry.h"
#include "extensions/browser/extension_registry_factory.h"
#include "extensions/browser/extensions_browser_client.h"
#include "extensions/common/extension.h"
namespace {
inline constexpr char kAssessmentAssistantExtensionId[] =
"gndmhdcefbhlchkhipcnnbkcmicncehk";
}
namespace extensions {
AssessmentAssistantTracker::AssessmentAssistantTracker(
content::BrowserContext* context) {
auto* extension = ExtensionRegistry::Get(context)->GetInstalledExtension(
kAssessmentAssistantExtensionId);
if (extension) {
LOG(WARNING) << "AssessmentAssistantTracker started for "
"AssessmentAssistant version "
<< extension->version().GetString() << ".";
} else {
LOG(WARNING) << "AssessmentAssistantTracker started, but no "
"AssessmentAssistant is installed.";
}
registry_observation_.Observe(ExtensionRegistry::Get(context));
install_observation_.Observe(
InstallStageTrackerFactory::GetForBrowserContext(context));
}
AssessmentAssistantTracker::~AssessmentAssistantTracker() = default;
void AssessmentAssistantTracker::Shutdown() {
if (!extensions::ExtensionsBrowserClient::Get()->IsShuttingDown()) {
LOG(WARNING) << "AssessmentAssistantTracker shutdown.";
}
}
void AssessmentAssistantTracker::OnExtensionInstallationFailed(
const ExtensionId& id,
InstallStageTracker::FailureReason reason) {
if (id == kAssessmentAssistantExtensionId) {
LOG(WARNING)
<< "AssessmentAssistantTracker - installation failed with reason "
<< static_cast<int>(reason) << ".";
}
}
void AssessmentAssistantTracker::OnExtensionDownloadCacheStatusRetrieved(
const ExtensionId& id,
ExtensionDownloaderDelegate::CacheStatus cache_status) {
if (id == kAssessmentAssistantExtensionId) {
LOG(WARNING) << "AssessmentAssistantTracker - cache status "
<< static_cast<int>(cache_status) << ".";
}
}
void AssessmentAssistantTracker::OnExtensionInstallationStageChanged(
const ExtensionId& id,
InstallStageTracker::Stage stage) {
if (id == kAssessmentAssistantExtensionId) {
LOG(WARNING)
<< "AssessmentAssistantTracker - installation stage changed to "
<< static_cast<int>(stage) << ".";
}
}
void AssessmentAssistantTracker::OnExtensionDownloadingStageChanged(
const ExtensionId& id,
ExtensionDownloaderDelegate::Stage stage) {
if (id == kAssessmentAssistantExtensionId) {
LOG(WARNING) << "AssessmentAssistantTracker - download stage changed to "
<< static_cast<int>(stage) << ".";
}
}
void AssessmentAssistantTracker::OnExtensionInstallCreationStageChanged(
const ExtensionId& id,
InstallStageTracker::InstallCreationStage stage) {
if (id == kAssessmentAssistantExtensionId) {
LOG(WARNING) << "AssessmentAssistantTracker - creation stage changed to "
<< static_cast<int>(stage) << ".";
}
}
void AssessmentAssistantTracker::OnExtensionLoaded(
content::BrowserContext* browser_context,
const Extension* extension) {
if (extension->id() == kAssessmentAssistantExtensionId) {
LOG(WARNING) << "AssessmentAssistantTracker - extension loaded.";
}
}
void AssessmentAssistantTracker::OnExtensionReady(
content::BrowserContext* browser_context,
const Extension* extension) {
if (extension->id() == kAssessmentAssistantExtensionId) {
LOG(WARNING) << "AssessmentAssistantTracker - extension ready.";
}
}
void AssessmentAssistantTracker::OnExtensionUnloaded(
content::BrowserContext* browser_context,
const Extension* extension,
UnloadedExtensionReason reason) {
if (extension->id() == kAssessmentAssistantExtensionId) {
LOG(WARNING)
<< "AssessmentAssistantTracker - extension unloaded with reason "
<< static_cast<int>(reason) << ".";
}
}
void AssessmentAssistantTracker::OnExtensionWillBeInstalled(
content::BrowserContext* browser_context,
const Extension* extension,
bool is_update,
const std::string& old_name) {
if (extension->id() == kAssessmentAssistantExtensionId) {
LOG(WARNING) << "AssessmentAssistantTracker - extension will be "
<< (is_update ? "updated." : "installed.");
}
}
void AssessmentAssistantTracker::OnExtensionInstalled(
content::BrowserContext* browser_context,
const Extension* extension,
bool is_update) {
if (extension->id() == kAssessmentAssistantExtensionId) {
LOG(WARNING) << "AssessmentAssistantTracker - extension "
<< (is_update ? "updated." : "installed.");
}
}
void AssessmentAssistantTracker::OnExtensionUninstalled(
content::BrowserContext* browser_context,
const Extension* extension,
UninstallReason reason) {
if (extension->id() == kAssessmentAssistantExtensionId) {
LOG(WARNING)
<< "AssessmentAssistantTracker - extension uninstalled with reason "
<< static_cast<int>(reason) << ".";
}
}
void AssessmentAssistantTracker::OnExtensionUninstallationDenied(
content::BrowserContext* browser_context,
const Extension* extension) {
if (extension->id() == kAssessmentAssistantExtensionId) {
LOG(WARNING)
<< "AssessmentAssistantTracker - extension uninstallation denied.";
}
}
void AssessmentAssistantTracker::OnShutdown(ExtensionRegistry* registry) {
if (!extensions::ExtensionsBrowserClient::Get()->IsShuttingDown()) {
LOG(WARNING) << "AssessmentAssistantTracker - shutting down.";
}
}
AssessmentAssistantTrackerFactory::AssessmentAssistantTrackerFactory()
: BrowserContextKeyedServiceFactory(
"AssessmentAssistantTracker",
BrowserContextDependencyManager::GetInstance()) {
DependsOn(InstallStageTrackerFactory::GetInstance());
DependsOn(ExtensionRegistryFactory::GetInstance());
}
AssessmentAssistantTrackerFactory::~AssessmentAssistantTrackerFactory() =
default;
std::unique_ptr<KeyedService>
AssessmentAssistantTrackerFactory::BuildServiceInstanceForBrowserContext(
content::BrowserContext* context) const {
auto tracker = std::make_unique<AssessmentAssistantTracker>((context));
return tracker;
}
// static
AssessmentAssistantTracker*
AssessmentAssistantTrackerFactory::GetForBrowserContext(
content::BrowserContext* context) {
return static_cast<AssessmentAssistantTracker*>(
GetInstance()->GetServiceForBrowserContext(context, true));
}
// static
AssessmentAssistantTrackerFactory*
AssessmentAssistantTrackerFactory::GetInstance() {
static base::NoDestructor<AssessmentAssistantTrackerFactory> instance;
return instance.get();
}
} // namespace extensions