Commit 483f4054 authored by Xi Han's avatar Xi Han Committed by Commit Bot

Make InProcessPrefServiceFactoryFactory a SimpleKeyedServiceFactory.

In this CL, we convert InProcessPrefServiceFactoryFactory from a
BrowserContextKeyedBaseFactory to a SimpleKeyedServiceFactory. This
allows the InProcessPrefServiceFactoryFactory be used before the
profile is created.

Bug: 937469
Change-Id: I2704875d84e553b3f3af40ec37109ac6e4786fbf
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1569347
Commit-Queue: Xi Han <hanxi@chromium.org>
Reviewed-by: default avatarColin Blundell <blundell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#652245}
parent 331170e5
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
#include "chrome/browser/prefs/in_process_service_factory_factory.h" #include "chrome/browser/prefs/in_process_service_factory_factory.h"
#include "base/memory/singleton.h" #include "base/memory/singleton.h"
#include "components/keyed_service/content/browser_context_dependency_manager.h" #include "components/keyed_service/core/simple_dependency_manager.h"
#include "services/preferences/public/cpp/in_process_service_factory.h" #include "services/preferences/public/cpp/in_process_service_factory.h"
#include "services/service_manager/public/cpp/service.h" #include "services/service_manager/public/cpp/service.h"
...@@ -17,27 +17,25 @@ InProcessPrefServiceFactoryFactory::GetInstance() { ...@@ -17,27 +17,25 @@ InProcessPrefServiceFactoryFactory::GetInstance() {
// static // static
prefs::InProcessPrefServiceFactory* prefs::InProcessPrefServiceFactory*
InProcessPrefServiceFactoryFactory::GetInstanceForContext( InProcessPrefServiceFactoryFactory::GetInstanceForKey(SimpleFactoryKey* key) {
content::BrowserContext* context) {
return static_cast<prefs::InProcessPrefServiceFactory*>( return static_cast<prefs::InProcessPrefServiceFactory*>(
GetInstance()->GetServiceForBrowserContext(context, true)); GetInstance()->GetServiceForKey(key, true));
} }
InProcessPrefServiceFactoryFactory::InProcessPrefServiceFactoryFactory() InProcessPrefServiceFactoryFactory::InProcessPrefServiceFactoryFactory()
: BrowserContextKeyedServiceFactory( : SimpleKeyedServiceFactory("InProcessPrefServiceFactory",
"InProcessPrefServiceFactory", SimpleDependencyManager::GetInstance()) {}
BrowserContextDependencyManager::GetInstance()) {}
InProcessPrefServiceFactoryFactory::~InProcessPrefServiceFactoryFactory() = InProcessPrefServiceFactoryFactory::~InProcessPrefServiceFactoryFactory() =
default; default;
KeyedService* InProcessPrefServiceFactoryFactory::BuildServiceInstanceFor( std::unique_ptr<KeyedService>
content::BrowserContext* context) const { InProcessPrefServiceFactoryFactory::BuildServiceInstanceFor(
return new prefs::InProcessPrefServiceFactory; SimpleFactoryKey* key) const {
return std::make_unique<prefs::InProcessPrefServiceFactory>();
} }
content::BrowserContext* SimpleFactoryKey* InProcessPrefServiceFactoryFactory::GetKeyToUse(
InProcessPrefServiceFactoryFactory::GetBrowserContextToUse( SimpleFactoryKey* key) const {
content::BrowserContext* context) const { return key;
return context;
} }
...@@ -5,8 +5,10 @@ ...@@ -5,8 +5,10 @@
#ifndef CHROME_BROWSER_PREFS_IN_PROCESS_SERVICE_FACTORY_FACTORY_H_ #ifndef CHROME_BROWSER_PREFS_IN_PROCESS_SERVICE_FACTORY_FACTORY_H_
#define CHROME_BROWSER_PREFS_IN_PROCESS_SERVICE_FACTORY_FACTORY_H_ #define CHROME_BROWSER_PREFS_IN_PROCESS_SERVICE_FACTORY_FACTORY_H_
#include <memory>
#include "base/macros.h" #include "base/macros.h"
#include "components/keyed_service/content/browser_context_keyed_service_factory.h" #include "components/keyed_service/core/simple_keyed_service_factory.h"
namespace base { namespace base {
template <typename T> template <typename T>
...@@ -17,13 +19,12 @@ namespace prefs { ...@@ -17,13 +19,12 @@ namespace prefs {
class InProcessPrefServiceFactory; class InProcessPrefServiceFactory;
} }
class InProcessPrefServiceFactoryFactory class InProcessPrefServiceFactoryFactory : public SimpleKeyedServiceFactory {
: public BrowserContextKeyedServiceFactory {
public: public:
static InProcessPrefServiceFactoryFactory* GetInstance(); static InProcessPrefServiceFactoryFactory* GetInstance();
static prefs::InProcessPrefServiceFactory* GetInstanceForContext( static prefs::InProcessPrefServiceFactory* GetInstanceForKey(
content::BrowserContext* context); SimpleFactoryKey* key);
private: private:
friend struct base::DefaultSingletonTraits< friend struct base::DefaultSingletonTraits<
...@@ -32,10 +33,9 @@ class InProcessPrefServiceFactoryFactory ...@@ -32,10 +33,9 @@ class InProcessPrefServiceFactoryFactory
InProcessPrefServiceFactoryFactory(); InProcessPrefServiceFactoryFactory();
~InProcessPrefServiceFactoryFactory() override; ~InProcessPrefServiceFactoryFactory() override;
KeyedService* BuildServiceInstanceFor( std::unique_ptr<KeyedService> BuildServiceInstanceFor(
content::BrowserContext* context) const override; SimpleFactoryKey* key) const override;
content::BrowserContext* GetBrowserContextToUse( SimpleFactoryKey* GetKeyToUse(SimpleFactoryKey* key) const override;
content::BrowserContext* context) const override;
DISALLOW_COPY_AND_ASSIGN(InProcessPrefServiceFactoryFactory); DISALLOW_COPY_AND_ASSIGN(InProcessPrefServiceFactoryFactory);
}; };
......
...@@ -149,7 +149,7 @@ OffTheRecordProfileImpl::OffTheRecordProfileImpl(Profile* real_profile) ...@@ -149,7 +149,7 @@ OffTheRecordProfileImpl::OffTheRecordProfileImpl(Profile* real_profile)
prefs_ = CreateIncognitoPrefServiceSyncable( prefs_ = CreateIncognitoPrefServiceSyncable(
PrefServiceSyncableFromProfile(profile_), PrefServiceSyncableFromProfile(profile_),
CreateExtensionPrefStore(profile_, true), CreateExtensionPrefStore(profile_, true),
InProcessPrefServiceFactoryFactory::GetInstanceForContext(this) InProcessPrefServiceFactoryFactory::GetInstanceForKey(key_.get())
->CreateDelegate()); ->CreateDelegate());
key_->SetPrefs(prefs_.get()); key_->SetPrefs(prefs_.get());
...@@ -404,7 +404,7 @@ OffTheRecordProfileImpl::HandleServiceRequest( ...@@ -404,7 +404,7 @@ OffTheRecordProfileImpl::HandleServiceRequest(
const std::string& service_name, const std::string& service_name,
service_manager::mojom::ServiceRequest request) { service_manager::mojom::ServiceRequest request) {
if (service_name == prefs::mojom::kServiceName) { if (service_name == prefs::mojom::kServiceName) {
return InProcessPrefServiceFactoryFactory::GetInstanceForContext(this) return InProcessPrefServiceFactoryFactory::GetInstanceForKey(key_.get())
->CreatePrefService(std::move(request)); ->CreatePrefService(std::move(request));
} }
......
...@@ -572,7 +572,7 @@ ProfileImpl::ProfileImpl( ...@@ -572,7 +572,7 @@ ProfileImpl::ProfileImpl(
{ {
auto delegate = auto delegate =
InProcessPrefServiceFactoryFactory::GetInstanceForContext(this) InProcessPrefServiceFactoryFactory::GetInstanceForKey(key_.get())
->CreateDelegate(); ->CreateDelegate();
delegate->InitPrefRegistry(pref_registry_.get()); delegate->InitPrefRegistry(pref_registry_.get());
prefs_ = chrome_prefs::CreateProfilePrefs( prefs_ = chrome_prefs::CreateProfilePrefs(
...@@ -1274,7 +1274,7 @@ std::unique_ptr<service_manager::Service> ProfileImpl::HandleServiceRequest( ...@@ -1274,7 +1274,7 @@ std::unique_ptr<service_manager::Service> ProfileImpl::HandleServiceRequest(
} }
if (service_name == prefs::mojom::kServiceName) { if (service_name == prefs::mojom::kServiceName) {
return InProcessPrefServiceFactoryFactory::GetInstanceForContext(this) return InProcessPrefServiceFactoryFactory::GetInstanceForKey(key_.get())
->CreatePrefService(std::move(request)); ->CreatePrefService(std::move(request));
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment