Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(243)

Unified Diff: components/keyed_service/core/refcounted_keyed_service_factory.cc

Issue 1090373003: Allow cross dependencies between BCKSF and BSKSF (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix dependencies and DCHECK in Get{Original,Underlying}ContextInternal Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: components/keyed_service/core/refcounted_keyed_service_factory.cc
diff --git a/components/keyed_service/core/refcounted_keyed_service_factory.cc b/components/keyed_service/core/refcounted_keyed_service_factory.cc
index d33340b2d530fe7fdc5c25570e7e7160d0286529..1a7ab86290fc83475228b63d0be782d6a8e5c511 100644
--- a/components/keyed_service/core/refcounted_keyed_service_factory.cc
+++ b/components/keyed_service/core/refcounted_keyed_service_factory.cc
@@ -26,6 +26,7 @@ void RefcountedKeyedServiceFactory::SetTestingFactory(
// has our preferences registered on it (since the context object itself
// isn't dead). See if we need to readd it once we've gone through normal
// destruction.
+ context = GetUnderlyingContext(context);
bool add_context = ArePreferencesSetOn(context);
// We have to go through the shutdown and destroy mechanisms because there
@@ -45,6 +46,7 @@ RefcountedKeyedServiceFactory::SetTestingFactoryAndUse(
base::SupportsUserData* context,
TestingFactoryFunction testing_factory) {
DCHECK(testing_factory);
+ context = GetUnderlyingContext(context);
SetTestingFactory(context, testing_factory);
return GetServiceForContext(context, true);
}
@@ -53,6 +55,7 @@ scoped_refptr<RefcountedKeyedService>
RefcountedKeyedServiceFactory::GetServiceForContext(
base::SupportsUserData* context,
bool create) {
+ context = GetUnderlyingContext(context);
context = GetContextToUse(context);
if (!context)
return nullptr;
@@ -89,12 +92,14 @@ RefcountedKeyedServiceFactory::GetServiceForContext(
void RefcountedKeyedServiceFactory::Associate(
base::SupportsUserData* context,
const scoped_refptr<RefcountedKeyedService>& service) {
+ context = GetUnderlyingContext(context);
DCHECK(!ContainsKey(mapping_, context));
mapping_.insert(std::make_pair(context, service));
}
void RefcountedKeyedServiceFactory::ContextShutdown(
base::SupportsUserData* context) {
+ context = GetUnderlyingContext(context);
const auto& it = mapping_.find(context);
if (it != mapping_.end() && it->second.get())
it->second->ShutdownOnUIThread();
@@ -102,6 +107,7 @@ void RefcountedKeyedServiceFactory::ContextShutdown(
void RefcountedKeyedServiceFactory::ContextDestroyed(
base::SupportsUserData* context) {
+ context = GetUnderlyingContext(context);
// We "merely" drop our reference to the service. Hopefully this will cause
// the service to be destroyed. If not, oh well.
mapping_.erase(context);
@@ -117,15 +123,18 @@ void RefcountedKeyedServiceFactory::ContextDestroyed(
void RefcountedKeyedServiceFactory::SetEmptyTestingFactory(
base::SupportsUserData* context) {
+ context = GetUnderlyingContext(context);
SetTestingFactory(context, nullptr);
}
bool RefcountedKeyedServiceFactory::HasTestingFactory(
base::SupportsUserData* context) {
+ context = GetUnderlyingContext(context);
return testing_factories_.find(context) != testing_factories_.end();
}
void RefcountedKeyedServiceFactory::CreateServiceNow(
base::SupportsUserData* context) {
+ context = GetUnderlyingContext(context);
GetServiceForContext(context, true);
}

Powered by Google App Engine
This is Rietveld 408576698