| Index: components/keyed_service/core/keyed_service_factory.cc
|
| diff --git a/components/keyed_service/content/browser_context_keyed_service_factory.cc b/components/keyed_service/core/keyed_service_factory.cc
|
| similarity index 50%
|
| copy from components/keyed_service/content/browser_context_keyed_service_factory.cc
|
| copy to components/keyed_service/core/keyed_service_factory.cc
|
| index a33ffedbe48a4bc330dfd5d28c16aa7af364288e..261ff29d556c319e143b8fe9e6646c77cf13a29d 100644
|
| --- a/components/keyed_service/content/browser_context_keyed_service_factory.cc
|
| +++ b/components/keyed_service/core/keyed_service_factory.cc
|
| @@ -2,18 +2,24 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#include "components/keyed_service/content/browser_context_keyed_service_factory.h"
|
| -
|
| -#include <map>
|
| +#include "components/keyed_service/core/keyed_service_factory.h"
|
|
|
| #include "base/logging.h"
|
| #include "base/stl_util.h"
|
| -#include "components/keyed_service/content/browser_context_dependency_manager.h"
|
| +#include "components/keyed_service/core/dependency_manager.h"
|
| #include "components/keyed_service/core/keyed_service.h"
|
| -#include "content/public/browser/browser_context.h"
|
|
|
| -void BrowserContextKeyedServiceFactory::SetTestingFactory(
|
| - content::BrowserContext* context,
|
| +KeyedServiceFactory::KeyedServiceFactory(const char* name,
|
| + DependencyManager* manager)
|
| + : KeyedServiceBaseFactory(name, manager) {
|
| +}
|
| +
|
| +KeyedServiceFactory::~KeyedServiceFactory() {
|
| + DCHECK(mapping_.empty());
|
| +}
|
| +
|
| +void KeyedServiceFactory::SetTestingFactory(
|
| + base::SupportsUserData* context,
|
| TestingFactoryFunction testing_factory) {
|
| // Destroying the context may cause us to lose data about whether |context|
|
| // has our preferences registered on it (since the context object itself
|
| @@ -32,8 +38,8 @@ void BrowserContextKeyedServiceFactory::SetTestingFactory(
|
| // We have to go through the shutdown and destroy mechanisms because there
|
| // are unit tests that create a service on a context and then change the
|
| // testing service mid-test.
|
| - BrowserContextShutdown(context);
|
| - BrowserContextDestroyed(context);
|
| + ContextShutdown(context);
|
| + ContextDestroyed(context);
|
|
|
| if (add_context)
|
| MarkPreferencesSetOn(context);
|
| @@ -41,50 +47,40 @@ void BrowserContextKeyedServiceFactory::SetTestingFactory(
|
| testing_factories_[context] = testing_factory;
|
| }
|
|
|
| -KeyedService* BrowserContextKeyedServiceFactory::SetTestingFactoryAndUse(
|
| - content::BrowserContext* context,
|
| +KeyedService* KeyedServiceFactory::SetTestingFactoryAndUse(
|
| + base::SupportsUserData* context,
|
| TestingFactoryFunction testing_factory) {
|
| DCHECK(testing_factory);
|
| SetTestingFactory(context, testing_factory);
|
| - return GetServiceForBrowserContext(context, true);
|
| -}
|
| -
|
| -BrowserContextKeyedServiceFactory::BrowserContextKeyedServiceFactory(
|
| - const char* name,
|
| - BrowserContextDependencyManager* manager)
|
| - : BrowserContextKeyedBaseFactory(name, manager) {}
|
| -
|
| -BrowserContextKeyedServiceFactory::~BrowserContextKeyedServiceFactory() {
|
| - DCHECK(mapping_.empty());
|
| + return GetServiceForContext(context, true);
|
| }
|
|
|
| -KeyedService* BrowserContextKeyedServiceFactory::GetServiceForBrowserContext(
|
| - content::BrowserContext* context,
|
| +KeyedService* KeyedServiceFactory::GetServiceForContext(
|
| + base::SupportsUserData* context,
|
| bool create) {
|
| - context = GetBrowserContextToUse(context);
|
| + context = GetContextToUse(context);
|
| if (!context)
|
| - return NULL;
|
| + return nullptr;
|
|
|
| // NOTE: If you modify any of the logic below, make sure to update the
|
| // refcounted version in refcounted_context_keyed_service_factory.cc!
|
| - BrowserContextKeyedServices::const_iterator it = mapping_.find(context);
|
| + const auto& it = mapping_.find(context);
|
| if (it != mapping_.end())
|
| return it->second;
|
|
|
| // Object not found.
|
| if (!create)
|
| - return NULL; // And we're forbidden from creating one.
|
| + return nullptr; // And we're forbidden from creating one.
|
|
|
| // Create new object.
|
| - // Check to see if we have a per-BrowserContext testing factory that we should
|
| - // use instead of default behavior.
|
| - KeyedService* service = NULL;
|
| - BrowserContextOverriddenTestingFunctions::const_iterator jt =
|
| - testing_factories_.find(context);
|
| + // Check to see if we have a per-context testing factory that we should use
|
| + // instead of default behavior.
|
| + KeyedService* service = nullptr;
|
| + const auto& jt = testing_factories_.find(context);
|
| if (jt != testing_factories_.end()) {
|
| if (jt->second) {
|
| - if (!context->IsOffTheRecord())
|
| - RegisterUserPrefsOnBrowserContextForTest(context);
|
| + if (!IsOffTheRecord(context))
|
| + RegisterUserPrefsOnContextForTest(context);
|
| service = jt->second(context);
|
| }
|
| } else {
|
| @@ -95,31 +91,27 @@ KeyedService* BrowserContextKeyedServiceFactory::GetServiceForBrowserContext(
|
| return service;
|
| }
|
|
|
| -void BrowserContextKeyedServiceFactory::Associate(
|
| - content::BrowserContext* context,
|
| - KeyedService* service) {
|
| +void KeyedServiceFactory::Associate(base::SupportsUserData* context,
|
| + KeyedService* service) {
|
| DCHECK(!ContainsKey(mapping_, context));
|
| mapping_.insert(std::make_pair(context, service));
|
| }
|
|
|
| -void BrowserContextKeyedServiceFactory::Disassociate(
|
| - content::BrowserContext* context) {
|
| - BrowserContextKeyedServices::iterator it = mapping_.find(context);
|
| +void KeyedServiceFactory::Disassociate(base::SupportsUserData* context) {
|
| + const auto& it = mapping_.find(context);
|
| if (it != mapping_.end()) {
|
| delete it->second;
|
| mapping_.erase(it);
|
| }
|
| }
|
|
|
| -void BrowserContextKeyedServiceFactory::BrowserContextShutdown(
|
| - content::BrowserContext* context) {
|
| - BrowserContextKeyedServices::iterator it = mapping_.find(context);
|
| +void KeyedServiceFactory::ContextShutdown(base::SupportsUserData* context) {
|
| + const auto& it = mapping_.find(context);
|
| if (it != mapping_.end() && it->second)
|
| it->second->Shutdown();
|
| }
|
|
|
| -void BrowserContextKeyedServiceFactory::BrowserContextDestroyed(
|
| - content::BrowserContext* context) {
|
| +void KeyedServiceFactory::ContextDestroyed(base::SupportsUserData* context) {
|
| Disassociate(context);
|
|
|
| // For unit tests, we also remove the factory function both so we don't
|
| @@ -128,20 +120,18 @@ void BrowserContextKeyedServiceFactory::BrowserContextDestroyed(
|
| // in this file).
|
| testing_factories_.erase(context);
|
|
|
| - BrowserContextKeyedBaseFactory::BrowserContextDestroyed(context);
|
| + KeyedServiceBaseFactory::ContextDestroyed(context);
|
| }
|
|
|
| -void BrowserContextKeyedServiceFactory::SetEmptyTestingFactory(
|
| - content::BrowserContext* context) {
|
| - SetTestingFactory(context, NULL);
|
| +void KeyedServiceFactory::SetEmptyTestingFactory(
|
| + base::SupportsUserData* context) {
|
| + SetTestingFactory(context, nullptr);
|
| }
|
|
|
| -bool BrowserContextKeyedServiceFactory::HasTestingFactory(
|
| - content::BrowserContext* context) {
|
| +bool KeyedServiceFactory::HasTestingFactory(base::SupportsUserData* context) {
|
| return testing_factories_.find(context) != testing_factories_.end();
|
| }
|
|
|
| -void BrowserContextKeyedServiceFactory::CreateServiceNow(
|
| - content::BrowserContext* context) {
|
| - GetServiceForBrowserContext(context, true);
|
| +void KeyedServiceFactory::CreateServiceNow(base::SupportsUserData* context) {
|
| + GetServiceForContext(context, true);
|
| }
|
|
|