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

Unified Diff: components/keyed_service/core/keyed_service_base_factory.h

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/keyed_service_base_factory.h
diff --git a/components/keyed_service/core/keyed_service_base_factory.h b/components/keyed_service/core/keyed_service_base_factory.h
index a22e9405808504cf2e20744f310cc5717b84af0c..b277fff50cbd416dfccdf9333d6f772d79b04f54 100644
--- a/components/keyed_service/core/keyed_service_base_factory.h
+++ b/components/keyed_service/core/keyed_service_base_factory.h
@@ -57,14 +57,14 @@ class KEYED_SERVICE_EXPORT KeyedServiceBaseFactory
#ifndef NDEBUG
// Debugging assertion that will NOTREACHED() is |context| is considered
// stale. Should be used by subclasses when accessing |context|.
- void AssertContextWasntDestroyed(const base::SupportsUserData* context) const;
+ void AssertContextWasntDestroyed(base::SupportsUserData* context) const;
// Marks |context| as live (i.e., not stale). This method can be called as a
// safeguard against |AssertContextWasntDestroyed()| checks going off due to
// |context| aliasing am instance from a prior test (i.e., 0xWhatever might
// be created, be destroyed, and then a new object might be created at
// 0xWhatever).
- void MarkContextLiveForTesting(const base::SupportsUserData* context);
+ void MarkContextLiveForTesting(base::SupportsUserData* context);
#endif
// Calls RegisterProfilePrefs() after doing house keeping required to work
@@ -72,13 +72,13 @@ class KEYED_SERVICE_EXPORT KeyedServiceBaseFactory
// TODO(gab): This method can be replaced by RegisterProfilePrefs() directly
// once RegisterUserPrefsOnContextForTest() is phased out.
void RegisterPrefsIfNecessaryForContext(
- const base::SupportsUserData* context,
+ base::SupportsUserData* context,
user_prefs::PrefRegistrySyncable* registry);
// Returns the |user_pref::PrefRegistrySyncable| associated with |context|.
// The way they are associated is controlled by the embedder.
- virtual user_prefs::PrefRegistrySyncable* GetAssociatedPrefRegistry(
- base::SupportsUserData* context) const = 0;
+ user_prefs::PrefRegistrySyncable* GetAssociatedPrefRegistry(
+ base::SupportsUserData* context) const;
// Finds which context (if any) to use.
virtual base::SupportsUserData* GetContextToUse(
@@ -109,10 +109,30 @@ class KEYED_SERVICE_EXPORT KeyedServiceBaseFactory
virtual void ContextDestroyed(base::SupportsUserData* context);
// Returns whether the preferences have been registered on this context.
- bool ArePreferencesSetOn(const base::SupportsUserData* context) const;
+ bool ArePreferencesSetOn(base::SupportsUserData* context) const;
// Mark context has having preferences registered.
- void MarkPreferencesSetOn(const base::SupportsUserData* context);
+ void MarkPreferencesSetOn(base::SupportsUserData* context);
+
+ // Returns the underlying context corresponding to |context|. Used to allow
+ // cross dependencies between BrowserContextKeyedServiceFactories and
+ // BrowserStateKeyedServiceFactories during the upstreaming of iOS. Wrapper
+ // around GetUnderlyingContextInternal() that assert the returned |context|
+ // is not null.
+ // TODO(ios): remove this method and all usage of the methods once iOS code
+ // only use BrowserStateKeyedServiceFactory, http://crbug.com/478763
+ base::SupportsUserData* GetUnderlyingContext(
+ base::SupportsUserData* context) const;
+
+ // Returns the original context corresponding to |context|. Used to allow
+ // cross dependencies between BrowserContextKeyedServiceFactories and
+ // BrowserStateKeyedServiceFactories during the upstreaming of iOS. Wrapper
+ // around GetOriginalContextInternal() that assert the returned |context|
+ // is not null.
+ // TODO(ios): remove this method and all usage of the methods once iOS code
droger 2015/04/21 14:19:17 Can we merge these comments and give a bit more de
+ // only use BrowserStateKeyedServiceFactory, http://crbug.com/478763
+ base::SupportsUserData* GetOriginalContext(
droger 2015/04/21 14:19:17 I don't really like "Original" and "Underlying". A
+ base::SupportsUserData* context) const;
private:
friend class DependencyManager;
@@ -121,6 +141,22 @@ class KEYED_SERVICE_EXPORT KeyedServiceBaseFactory
// by all the factories of a given type. Unit tests will use their own copy.
DependencyManager* dependency_manager_;
+ // Returns the underlying context corresponding to |context|. Used to allow
+ // cross dependencies between BrowserContextKeyedServiceFactories and
+ // BrowserStateKeyedServiceFactories during the upstreaming of iOS.
+ // TODO(ios): remove this method and all usage of the methods once iOS code
+ // only use BrowserStateKeyedServiceFactory, http://crbug.com/478763
droger 2015/04/21 14:19:17 Add something like: Subclasses must implement thes
+ virtual base::SupportsUserData* GetUnderlyingContextInternal(
+ base::SupportsUserData* context) const = 0;
+
+ // Returns the original context corresponding to |context|. Used to allow
+ // cross dependencies between BrowserContextKeyedServiceFactories and
+ // BrowserStateKeyedServiceFactories during the upstreaming of iOS.
+ // TODO(ios): remove this method and all usage of the methods once iOS code
+ // only use BrowserStateKeyedServiceFactory, http://crbug.com/478763
+ virtual base::SupportsUserData* GetOriginalContextInternal(
+ base::SupportsUserData* context) const = 0;
+
// Registers any preferences used by this service.
virtual void RegisterPrefs(user_prefs::PrefRegistrySyncable* registry) {}
@@ -135,7 +171,7 @@ class KEYED_SERVICE_EXPORT KeyedServiceBaseFactory
virtual void CreateServiceNow(base::SupportsUserData* context) = 0;
// Contexts that have this service's preferences registered on them.
- std::set<const base::SupportsUserData*> registered_preferences_;
+ std::set<base::SupportsUserData*> registered_preferences_;
#if !defined(NDEBUG)
// A static string passed in to the constructor. Should be unique across all

Powered by Google App Engine
This is Rietveld 408576698