blob: 57d20b9e9536b0336166a086d2bcf50d98df2437 [file] [log] [blame]
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/keyed_service/core/simple_dependency_manager.h"
#include "base/no_destructor.h"
#include "base/trace_event/trace_event.h"
#include "components/keyed_service/core/simple_factory_key.h"
#ifndef NDEBUG
#include "base/command_line.h"
#include "base/files/file_util.h"
namespace {
// Dumps dependency information about our simple keyed services
// into a dot file in the browser context directory.
const char kDumpSimpleDependencyGraphFlag[] = "dump-simple-graph";
} // namespace
#endif // NDEBUG
void SimpleDependencyManager::DestroyKeyedServices(SimpleFactoryKey* key) {
DependencyManager::DestroyContextServices(key);
}
// static
SimpleDependencyManager* SimpleDependencyManager::GetInstance() {
static base::NoDestructor<SimpleDependencyManager> factory;
return factory.get();
}
void SimpleDependencyManager::RegisterProfilePrefsForServices(
user_prefs::PrefRegistrySyncable* pref_registry) {
TRACE_EVENT0("browser",
"SimpleDependencyManager::RegisterProfilePrefsForServices");
RegisterPrefsForServices(pref_registry);
}
void SimpleDependencyManager::CreateServicesForTest(SimpleFactoryKey* key) {
TRACE_EVENT0("browser", "SimpleDependencyManager::CreateServices");
DependencyManager::CreateContextServices(key, true);
}
void SimpleDependencyManager::MarkContextLive(SimpleFactoryKey* key) {
DependencyManager::MarkContextLive(key);
}
SimpleDependencyManager::SimpleDependencyManager() = default;
SimpleDependencyManager::~SimpleDependencyManager() = default;
#ifndef NDEBUG
void SimpleDependencyManager::DumpContextDependencies(void* context) const {
// Whenever we try to build a destruction ordering, we should also dump a
// dependency graph to "/path/to/context/context-dependencies.dot".
if (base::CommandLine::ForCurrentProcess()->HasSwitch(
kDumpSimpleDependencyGraphFlag)) {
base::FilePath dot_file =
static_cast<const SimpleFactoryKey*>(context)->GetPath().AppendASCII(
"simple-dependencies.dot");
DumpDependenciesAsGraphviz("SimpleDependencyManager", dot_file);
}
}
#endif // NDEBUG