blob: 9954591e2fbf51e93a3819cab1027297be967559 [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.
#include "chromeos/services/power/public/cpp/power_manager_mojo_controller.h"
#include "chromeos/dbus/power_manager/backlight.pb.h"
namespace chromeos {
PowerManagerMojoController::PowerManagerMojoController() = default;
PowerManagerMojoController::~PowerManagerMojoController() {
if (PowerManagerClient::Get()->HasObserver(this))
PowerManagerClient::Get()->RemoveObserver(this);
}
void PowerManagerMojoController::BindRequest(
power::mojom::PowerManagerControllerRequest request) {
binding_set_.AddBinding(this, std::move(request));
}
void PowerManagerMojoController::SetObserver(
power::mojom::PowerManagerObserverAssociatedPtrInfo client) {
DCHECK(!client_.is_bound());
client_.Bind(std::move(client));
PowerManagerClient::Get()->AddObserver(this);
}
void PowerManagerMojoController::SetScreenBrightness(
const power_manager::SetBacklightBrightnessRequest& request) {
PowerManagerClient::Get()->SetScreenBrightness(request);
}
void PowerManagerMojoController::GetScreenBrightnessPercent(
GetScreenBrightnessPercentCallback callback) {
// This extra thunk is only necessary to convert between
// power::mojom::BrightnessPtr and base::Optional<double>.
PowerManagerClient::Get()->GetScreenBrightnessPercent(base::BindOnce(
[](GetScreenBrightnessPercentCallback callback,
base::Optional<double> value) {
if (value)
std::move(callback).Run(power::mojom::Brightness::New(*value));
else
std::move(callback).Run({});
},
std::move(callback)));
}
void PowerManagerMojoController::PowerManagerBecameAvailable(bool available) {
client_->PowerManagerBecameAvailable(available);
}
void PowerManagerMojoController::ScreenBrightnessChanged(
const power_manager::BacklightBrightnessChange& change) {
client_->ScreenBrightnessChanged(change);
}
void PowerManagerMojoController::KeyboardBrightnessChanged(
const power_manager::BacklightBrightnessChange& change) {
client_->KeyboardBrightnessChanged(change);
}
} // namespace chromeos