|  | // Copyright 2021 The Chromium Authors | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | #ifndef CHROME_BROWSER_ASH_CROSAPI_DEVICE_SETTINGS_ASH_H_ | 
|  | #define CHROME_BROWSER_ASH_CROSAPI_DEVICE_SETTINGS_ASH_H_ | 
|  |  | 
|  | #include "chrome/browser/ash/settings/device_settings_service.h" | 
|  | #include "chromeos/crosapi/mojom/device_settings_service.mojom.h" | 
|  | #include "mojo/public/cpp/bindings/pending_receiver.h" | 
|  | #include "mojo/public/cpp/bindings/pending_remote.h" | 
|  | #include "mojo/public/cpp/bindings/receiver_set.h" | 
|  | #include "mojo/public/cpp/bindings/remote_set.h" | 
|  |  | 
|  | namespace crosapi { | 
|  |  | 
|  | // Implements the crosapi device settings interface. Lives in ash-chrome. | 
|  | // Allows lacros-chrome to access device settings that live in ash. | 
|  | class DeviceSettingsAsh : public mojom::DeviceSettingsService, | 
|  | public ash::DeviceSettingsService::Observer { | 
|  | public: | 
|  | DeviceSettingsAsh(); | 
|  | DeviceSettingsAsh(const DeviceSettingsAsh&) = delete; | 
|  | DeviceSettingsAsh& operator=(const DeviceSettingsAsh&) = delete; | 
|  | ~DeviceSettingsAsh() override; | 
|  |  | 
|  | void BindReceiver( | 
|  | mojo::PendingReceiver<mojom::DeviceSettingsService> receiver); | 
|  |  | 
|  | // ash::DeviceSettingsService::Observer | 
|  | void DeviceSettingsUpdated() override; | 
|  |  | 
|  | // crosapi::mojom::DeviceSettingsService: | 
|  | void AddDeviceSettingsObserver( | 
|  | mojo::PendingRemote<mojom::DeviceSettingsObserver> observer) override; | 
|  | void GetDevicePolicy(GetDevicePolicyCallback callback) override; | 
|  | void GetDevicePolicyDeprecated( | 
|  | GetDevicePolicyDeprecatedCallback callback) override; | 
|  | void GetDeviceReportSources(GetDeviceReportSourcesCallback callback) override; | 
|  | void IsDeviceDeprovisioned(IsDeviceDeprovisionedCallback callback) override; | 
|  |  | 
|  | private: | 
|  | mojo::ReceiverSet<mojom::DeviceSettingsService> receivers_; | 
|  |  | 
|  | // Support any number of device settings observers. | 
|  | mojo::RemoteSet<mojom::DeviceSettingsObserver> observers_; | 
|  | }; | 
|  |  | 
|  | }  // namespace crosapi | 
|  |  | 
|  | #endif  // CHROME_BROWSER_ASH_CROSAPI_DEVICE_SETTINGS_ASH_H_ |