#include "components/keyed_service/core/dependency_manager.h"
#include <ostream>
#include <string>
#include "base/check.h"
#include "base/debug/crash_logging.h"
#include "base/debug/dump_without_crashing.h"
#include "base/functional/bind.h"
#include "base/logging.h"
#include "base/memory/raw_ptr.h"
#include "base/notreached.h"
#include "base/supports_user_data.h"
#include "components/keyed_service/core/features_buildflags.h"
#include "components/keyed_service/core/keyed_service_base_factory.h"
#include "components/keyed_service/core/keyed_service_factory.h"
#include "components/keyed_service/core/refcounted_keyed_service_factory.h"
#ifndef NDEBUG
#include "base/files/file_path.h"
#include "base/files/file_util.h"
#endif
namespace {
OrderedDependencyNodes;
std::vector<raw_ptr<KeyedServiceBaseFactory, VectorExperimental>>
OrderedFactoriesFromOrderedDependencyNodes(
const OrderedDependencyNodes& ordered_dependency_nodes) { … }
}
DependencyManager::DependencyManager() = default;
DependencyManager::~DependencyManager() = default;
void DependencyManager::AddComponent(KeyedServiceBaseFactory* component) { … }
void DependencyManager::RemoveComponent(KeyedServiceBaseFactory* component) { … }
void DependencyManager::AddEdge(KeyedServiceBaseFactory* depended,
KeyedServiceBaseFactory* dependee) { … }
void DependencyManager::RegisterPrefsForServices(
user_prefs::PrefRegistrySyncable* pref_registry) { … }
void DependencyManager::CreateContextServices(void* context,
bool is_testing_context) { … }
void DependencyManager::DestroyContextServices(void* context) { … }
void DependencyManager::PerformInterlockedTwoPhaseShutdown(
DependencyManager* dependency_manager1,
void* context1,
DependencyManager* dependency_manager2,
void* context2) { … }
DependencyManager::OrderedFactories DependencyManager::GetConstructionOrder() { … }
DependencyManager::OrderedFactories DependencyManager::GetDestructionOrder() { … }
void DependencyManager::ShutdownFactoriesInOrder(
void* context,
const OrderedFactories& factories) { … }
void DependencyManager::DestroyFactoriesInOrder(
void* context,
const OrderedFactories& factories) { … }
void DependencyManager::AssertContextWasntDestroyed(void* context) const { … }
void DependencyManager::MarkContextLive(void* context) { … }
void DependencyManager::MarkContextDead(void* context) { … }
#ifndef NDEBUG
namespace {
std::string KeyedServiceBaseFactoryGetNodeName(DependencyNode* node) { … }
}
void DependencyManager::DumpDependenciesAsGraphviz(
const std::string& top_level_name,
const base::FilePath& dot_file) const { … }
#endif
DependencyGraph& DependencyManager::GetDependencyGraphForTesting() { … }
void DependencyManager::DisallowKeyedServiceFactoryRegistration(
const std::string& registration_function_name_error_message) { … }