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 @@
#include "chrome/browser/prefs/in_process_service_factory_factory.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/service_manager/public/cpp/service.h"
......@@ -17,27 +17,25 @@ InProcessPrefServiceFactoryFactory::GetInstance() {
// static
prefs::InProcessPrefServiceFactory*
InProcessPrefServiceFactoryFactory::GetInstanceForContext(
content::BrowserContext* context) {
InProcessPrefServiceFactoryFactory::GetInstanceForKey(SimpleFactoryKey* key) {
return static_cast<prefs::InProcessPrefServiceFactory*>(
GetInstance()->GetServiceForBrowserContext(context, true));
GetInstance()->GetServiceForKey(key, true));
}
InProcessPrefServiceFactoryFactory::InProcessPrefServiceFactoryFactory()
: BrowserContextKeyedServiceFactory(
"InProcessPrefServiceFactory",
BrowserContextDependencyManager::GetInstance()) {}
: SimpleKeyedServiceFactory("InProcessPrefServiceFactory",
SimpleDependencyManager::GetInstance()) {}
InProcessPrefServiceFactoryFactory::~InProcessPrefServiceFactoryFactory() =
default;
KeyedService* InProcessPrefServiceFactoryFactory::BuildServiceInstanceFor(
content::BrowserContext* context) const {
return new prefs::InProcessPrefServiceFactory;
std::unique_ptr<KeyedService>
InProcessPrefServiceFactoryFactory::BuildServiceInstanceFor(
SimpleFactoryKey* key) const {
return std::make_unique<prefs::InProcessPrefServiceFactory>();
}
content::BrowserContext*
InProcessPrefServiceFactoryFactory::GetBrowserContextToUse(
content::BrowserContext* context) const {
return context;
SimpleFactoryKey* InProcessPrefServiceFactoryFactory::GetKeyToUse(
SimpleFactoryKey* key) const {
return key;
}
......@@ -5,8 +5,10 @@
#ifndef 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 "components/keyed_service/content/browser_context_keyed_service_factory.h"
#include "components/keyed_service/core/simple_keyed_service_factory.h"
namespace base {
template <typename T>
......@@ -17,13 +19,12 @@ namespace prefs {
class InProcessPrefServiceFactory;
}
class InProcessPrefServiceFactoryFactory
: public BrowserContextKeyedServiceFactory {
class InProcessPrefServiceFactoryFactory : public SimpleKeyedServiceFactory {
public:
static InProcessPrefServiceFactoryFactory* GetInstance();
static prefs::InProcessPrefServiceFactory* GetInstanceForContext(
content::BrowserContext* context);
static prefs::InProcessPrefServiceFactory* GetInstanceForKey(
SimpleFactoryKey* key);
private:
friend struct base::DefaultSingletonTraits<
......@@ -32,10 +33,9 @@ class InProcessPrefServiceFactoryFactory
InProcessPrefServiceFactoryFactory();
~InProcessPrefServiceFactoryFactory() override;
KeyedService* BuildServiceInstanceFor(
content::BrowserContext* context) const override;
content::BrowserContext* GetBrowserContextToUse(
content::BrowserContext* context) const override;
std::unique_ptr<KeyedService> BuildServiceInstanceFor(
SimpleFactoryKey* key) const override;
SimpleFactoryKey* GetKeyToUse(SimpleFactoryKey* key) const override;
DISALLOW_COPY_AND_ASSIGN(InProcessPrefServiceFactoryFactory);
};
......
......@@ -149,7 +149,7 @@ OffTheRecordProfileImpl::OffTheRecordProfileImpl(Profile* real_profile)
prefs_ = CreateIncognitoPrefServiceSyncable(
PrefServiceSyncableFromProfile(profile_),
CreateExtensionPrefStore(profile_, true),
InProcessPrefServiceFactoryFactory::GetInstanceForContext(this)
InProcessPrefServiceFactoryFactory::GetInstanceForKey(key_.get())
->CreateDelegate());
key_->SetPrefs(prefs_.get());
......@@ -404,7 +404,7 @@ OffTheRecordProfileImpl::HandleServiceRequest(
const std::string& service_name,
service_manager::mojom::ServiceRequest request) {
if (service_name == prefs::mojom::kServiceName) {
return InProcessPrefServiceFactoryFactory::GetInstanceForContext(this)
return InProcessPrefServiceFactoryFactory::GetInstanceForKey(key_.get())
->CreatePrefService(std::move(request));
}
......
......@@ -572,7 +572,7 @@ ProfileImpl::ProfileImpl(
{
auto delegate =
InProcessPrefServiceFactoryFactory::GetInstanceForContext(this)
InProcessPrefServiceFactoryFactory::GetInstanceForKey(key_.get())
->CreateDelegate();
delegate->InitPrefRegistry(pref_registry_.get());
prefs_ = chrome_prefs::CreateProfilePrefs(
......@@ -1274,7 +1274,7 @@ std::unique_ptr<service_manager::Service> ProfileImpl::HandleServiceRequest(
}
if (service_name == prefs::mojom::kServiceName) {
return InProcessPrefServiceFactoryFactory::GetInstanceForContext(this)
return InProcessPrefServiceFactoryFactory::GetInstanceForKey(key_.get())
->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