Commit 4b3dc102 authored by Xiyuan Xia's avatar Xiyuan Xia Committed by Commit Bot

ash: Decommission mojom::PrefConnector

Bug: 958212
Change-Id: Ia09c8202887642a7eed6aa4d253ab77fee29f4f8
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1606680
Commit-Queue: Xiyuan Xia <xiyuan@chromium.org>
Reviewed-by: default avatarTom Sepez <tsepez@chromium.org>
Reviewed-by: default avatarScott Violet <sky@chromium.org>
Cr-Commit-Position: refs/heads/master@{#659088}
parent c70c934e
......@@ -27,7 +27,6 @@
#include "ash/public/interfaces/new_window.mojom.h"
#include "ash/public/interfaces/night_light_controller.mojom.h"
#include "ash/public/interfaces/note_taking_controller.mojom.h"
#include "ash/public/interfaces/pref_connector.mojom.h"
#include "ash/public/interfaces/process_creation_time_recorder.mojom.h"
#include "ash/public/interfaces/shelf.mojom.h"
#include "ash/public/interfaces/shelf_integration_test_api.mojom.h"
......@@ -107,7 +106,6 @@ const service_manager::Manifest& GetManifest() {
"pref_client")
.RequireCapability(content::mojom::kServiceName, "navigation")
.RequireCapability(data_decoder::mojom::kServiceName, "image_decoder")
.RequireCapability(mojom::kPrefConnectorServiceName, "pref_connector")
.RequireCapability(viz::mojom::kVizServiceName, "ozone")
.RequireCapability(viz::mojom::kVizServiceName, "viz_host")
.RequireCapability(ws::mojom::kServiceName, "ozone")
......
......@@ -48,7 +48,6 @@ mojom("interfaces_internal") {
"new_window.mojom",
"night_light_controller.mojom",
"note_taking_controller.mojom",
"pref_connector.mojom",
"process_creation_time_recorder.mojom",
"shelf.mojom",
"shelf_integration_test_api.mojom",
......
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
module ash.mojom;
import "components/account_id/interfaces/account_id.mojom";
import "services/preferences/public/mojom/preferences.mojom";
const string kPrefConnectorServiceName = "ash_pref_connector";
// A connector of PrefStoreConnectors. Provides ash with access to per-profile
// prefs.
interface PrefConnector {
// Provides a PrefStoreConnector for the signin screen profile prefs. Once
// connected the prefs continue to be available even after the user logs in.
GetPrefStoreConnectorForSigninScreen(
prefs.mojom.PrefStoreConnector& connector);
// Provides, via |connector|, a PrefStoreConnector for |account_id|. If
// |account_id| is invalid or unknown, |connector| will be closed.
GetPrefStoreConnectorForUser(signin.mojom.AccountId account_id,
prefs.mojom.PrefStoreConnector& connector);
};
......@@ -617,7 +617,6 @@ source_set("chrome_packaged_service_manifests") {
if (is_chromeos) {
deps += [
"//ash/public/cpp:manifest",
"//chrome/browser/chromeos:ash_pref_connector_manifest",
"//chrome/services/cups_ipp_parser/public/cpp:manifest",
"//chrome/services/cups_proxy/public/cpp:manifest",
"//chromeos/services/cellular_setup/public/cpp:manifest",
......
......@@ -23,7 +23,6 @@
#if defined(OS_CHROMEOS)
#include "ash/public/cpp/manifest.h"
#include "chrome/browser/chromeos/prefs/ash_pref_connector_manifest.h"
#include "chrome/services/cups_ipp_parser/public/cpp/manifest.h" // nogncheck
#include "chrome/services/cups_proxy/public/cpp/manifest.h"
#include "chromeos/services/cellular_setup/public/cpp/manifest.h"
......@@ -166,7 +165,6 @@ GetChromePackagedServiceManifests() {
#endif
#if defined(OS_CHROMEOS)
ash::GetManifest(),
GetAshPrefConnectorManifest(),
GetCupsIppParserManifest(),
chromeos::cellular_setup::GetManifest(),
chromeos::printing::GetCupsProxyManifest(),
......
......@@ -6,7 +6,6 @@
#include "ash/ash_service.h"
#include "ash/public/interfaces/constants.mojom.h"
#include "chrome/browser/chromeos/prefs/pref_connector_service.h"
#include "content/public/common/service_manager_connection.h"
namespace ash_service_registry {
......@@ -14,8 +13,6 @@ namespace ash_service_registry {
std::unique_ptr<service_manager::Service> HandleServiceRequest(
const std::string& service_name,
service_manager::mojom::ServiceRequest request) {
if (service_name == ash::mojom::kPrefConnectorServiceName)
return std::make_unique<AshPrefConnector>(std::move(request));
return service_name == ash::mojom::kServiceName
? std::make_unique<ash::AshService>(std::move(request))
: nullptr;
......
......@@ -1791,8 +1791,6 @@ source_set("chromeos") {
"power/renderer_freezer.h",
"preferences.cc",
"preferences.h",
"prefs/pref_connector_service.cc",
"prefs/pref_connector_service.h",
"printing/automatic_usb_printer_configurer.cc",
"printing/automatic_usb_printer_configurer.h",
"printing/bulk_printers_calculator.cc",
......@@ -2768,20 +2766,6 @@ proto_library("device_configuration_proto") {
generate_python = false
}
source_set("ash_pref_connector_manifest") {
sources = [
"prefs/ash_pref_connector_manifest.cc",
"prefs/ash_pref_connector_manifest.h",
]
deps = [
"//ash/public/cpp",
"//base",
"//services/preferences/public/mojom",
"//services/service_manager/public/cpp",
]
}
device_policy_remover_path = "$target_gen_dir/device_policy_remover.cc"
action("device_policy_remover_generate") {
......
per-file ash_pref_connector_manifest.cc=set noparent
per-file ash_pref_connector_manifest.cc=file://ipc/SECURITY_OWNERS
per-file ash_pref_connector_manifest.h=set noparent
per-file ash_pref_connector_manifest.h=file://ipc/SECURITY_OWNERS
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/chromeos/prefs/ash_pref_connector_manifest.h"
#include "ash/public/interfaces/pref_connector.mojom.h"
#include "base/no_destructor.h"
#include "services/preferences/public/mojom/preferences.mojom.h"
#include "services/service_manager/public/cpp/manifest_builder.h"
const service_manager::Manifest& GetAshPrefConnectorManifest() {
static base::NoDestructor<service_manager::Manifest> manifest{
service_manager::ManifestBuilder()
.WithServiceName(ash::mojom::kPrefConnectorServiceName)
.WithDisplayName("Ash Pref Connector")
.ExposeCapability("pref_connector",
service_manager::Manifest::InterfaceList<
ash::mojom::PrefConnector>())
.RequireCapability(prefs::mojom::kServiceName, "pref_client")
.Build()};
return *manifest;
}
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_CHROMEOS_PREFS_ASH_PREF_CONNECTOR_MANIFEST_H_
#define CHROME_BROWSER_CHROMEOS_PREFS_ASH_PREF_CONNECTOR_MANIFEST_H_
#include "services/service_manager/public/cpp/manifest.h"
const service_manager::Manifest& GetAshPrefConnectorManifest();
#endif // CHROME_BROWSER_CHROMEOS_PREFS_ASH_PREF_CONNECTOR_MANIFEST_H_
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/chromeos/prefs/pref_connector_service.h"
#include "base/bind.h"
#include "chrome/browser/chromeos/profiles/profile_helper.h"
#include "chrome/browser/profiles/profile_manager.h"
#include "components/user_manager/user_manager.h"
#include "content/public/browser/browser_context.h"
#include "mojo/public/cpp/bindings/interface_request.h"
#include "services/service_manager/public/cpp/connector.h"
AshPrefConnector::AshPrefConnector(
service_manager::mojom::ServiceRequest request)
: service_binding_(this, std::move(request)) {
registry_.AddInterface<ash::mojom::PrefConnector>(base::Bind(
&AshPrefConnector::BindConnectorRequest, base::Unretained(this)));
}
AshPrefConnector::~AshPrefConnector() = default;
void AshPrefConnector::GetPrefStoreConnectorForSigninScreen(
prefs::mojom::PrefStoreConnectorRequest request) {
// The signin screen profile is incognito and is not associated with a
// specific user.
Profile* profile = chromeos::ProfileHelper::Get()->GetSigninProfile();
DCHECK(profile->IsOffTheRecord());
content::BrowserContext::GetConnectorFor(profile)->BindInterface(
prefs::mojom::kServiceName, std::move(request));
}
void AshPrefConnector::GetPrefStoreConnectorForUser(
const AccountId& account_id,
prefs::mojom::PrefStoreConnectorRequest request) {
user_manager::User* user =
user_manager::UserManager::Get()->FindUserAndModify(account_id);
if (!user)
return;
Profile* profile = chromeos::ProfileHelper::Get()->GetProfileByUser(user);
if (!profile) {
user->AddProfileCreatedObserver(base::BindOnce(
&AshPrefConnector::GetPrefStoreConnectorForUser,
weak_factory_.GetWeakPtr(), account_id, std::move(request)));
return;
}
content::BrowserContext::GetConnectorFor(profile)->BindInterface(
prefs::mojom::kServiceName, std::move(request));
}
void AshPrefConnector::BindConnectorRequest(
ash::mojom::PrefConnectorRequest request) {
connector_bindings_.AddBinding(this, std::move(request));
}
void AshPrefConnector::OnStart() {}
void AshPrefConnector::OnBindInterface(
const service_manager::BindSourceInfo& source_info,
const std::string& interface_name,
mojo::ScopedMessagePipeHandle interface_pipe) {
registry_.BindInterface(interface_name, std::move(interface_pipe));
}
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_CHROMEOS_PREFS_PREF_CONNECTOR_SERVICE_H_
#define CHROME_BROWSER_CHROMEOS_PREFS_PREF_CONNECTOR_SERVICE_H_
#include <vector>
#include "ash/public/interfaces/pref_connector.mojom.h"
#include "base/macros.h"
#include "base/memory/weak_ptr.h"
#include "components/prefs/pref_value_store.h"
#include "mojo/public/cpp/bindings/binding_set.h"
#include "services/preferences/public/mojom/preferences.mojom.h"
#include "services/service_manager/public/cpp/binder_registry.h"
#include "services/service_manager/public/cpp/service.h"
#include "services/service_manager/public/cpp/service_binding.h"
#include "services/service_manager/public/mojom/service.mojom.h"
// A |ash::mojom::PrefConnector| implementation that provides ash with access to
// a |prefs::mojom::PrefStoreConnector| for a requested profile.
//
// TODO(http://crbug.com/705347): Once mash can connect to per-profile services
// via service manager, remove this class and the ash_pref_connector service.
class AshPrefConnector : public ash::mojom::PrefConnector,
public service_manager::Service {
public:
explicit AshPrefConnector(service_manager::mojom::ServiceRequest request);
~AshPrefConnector() override;
private:
// ash::mojom::PrefConnector:
void GetPrefStoreConnectorForSigninScreen(
prefs::mojom::PrefStoreConnectorRequest request) override;
void GetPrefStoreConnectorForUser(
const AccountId& account_id,
prefs::mojom::PrefStoreConnectorRequest request) override;
// service_manager::Service:
void OnStart() override;
void OnBindInterface(const service_manager::BindSourceInfo& source_info,
const std::string& interface_name,
mojo::ScopedMessagePipeHandle interface_pipe) override;
void BindConnectorRequest(ash::mojom::PrefConnectorRequest request);
prefs::mojom::PrefStoreConnector& GetPrefStoreConnector();
service_manager::ServiceBinding service_binding_;
service_manager::BinderRegistry registry_;
mojo::BindingSet<ash::mojom::PrefConnector> connector_bindings_;
base::WeakPtrFactory<AshPrefConnector> weak_factory_{this};
DISALLOW_COPY_AND_ASSIGN(AshPrefConnector);
};
#endif // CHROME_BROWSER_CHROMEOS_PREFS_PREF_CONNECTOR_SERVICE_H_
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