blob: 5e549345858c87ee96ad3635874fa5834697af23 [file] [log] [blame]
// 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 CHROMEOS_SERVICES_POWER_PUBLIC_CPP_POWER_MANAGER_MOJO_CONTROLLER_H_
#define CHROMEOS_SERVICES_POWER_PUBLIC_CPP_POWER_MANAGER_MOJO_CONTROLLER_H_
#include "base/macros.h"
#include "chromeos/dbus/power/power_manager_client.h"
#include "chromeos/services/power/public/mojom/power_manager.mojom.h"
#include "mojo/public/cpp/bindings/associated_binding.h"
#include "mojo/public/cpp/bindings/binding_set.h"
namespace chromeos {
// PowerManagerMojoController simply passes incoming mojo messages through to
// the D-Bus-backed (or fake) PowerManagerClient. It informs |client_| of
// changes by passing along PowerManagerClient::Observer notifications.
class COMPONENT_EXPORT(CHROMEOS_POWER_MOJO_CONTROLLER)
PowerManagerMojoController : public power::mojom::PowerManagerController,
public PowerManagerClient::Observer {
public:
PowerManagerMojoController();
~PowerManagerMojoController() override;
void BindRequest(power::mojom::PowerManagerControllerRequest request);
// mojom::PowerManagerMojoController:
void SetObserver(
power::mojom::PowerManagerObserverAssociatedPtrInfo client) override;
void SetScreenBrightness(
const power_manager::SetBacklightBrightnessRequest& request) override;
void GetScreenBrightnessPercent(
GetScreenBrightnessPercentCallback callback) override;
// PowerManagerClient::Observer:
void PowerManagerBecameAvailable(bool available) override;
void ScreenBrightnessChanged(
const power_manager::BacklightBrightnessChange& change) override;
void KeyboardBrightnessChanged(
const power_manager::BacklightBrightnessChange& change) override;
private:
mojo::BindingSet<power::mojom::PowerManagerController> binding_set_;
power::mojom::PowerManagerObserverAssociatedPtr client_;
DISALLOW_COPY_AND_ASSIGN(PowerManagerMojoController);
};
} // namespace chromeos
#endif // CHROMEOS_SERVICES_POWER_PUBLIC_CPP_POWER_MANAGER_MOJO_CONTROLLER_H_