Index: components/arc/power/arc_power_bridge.cc |
diff --git a/components/arc/power/arc_power_bridge.cc b/components/arc/power/arc_power_bridge.cc |
index a9a47f52230fa89212c416b9dfca5a0d4cbbd55d..7d7842cc2ae6a91e614646fa6c80545f26e5602b 100644 |
--- a/components/arc/power/arc_power_bridge.cc |
+++ b/components/arc/power/arc_power_bridge.cc |
@@ -17,7 +17,7 @@ |
namespace arc { |
ArcPowerBridge::ArcPowerBridge(ArcBridgeService* bridge_service) |
- : ArcService(bridge_service), binding_(this) { |
+ : ArcService(bridge_service), binding_(this), weak_ptr_factory_(this) { |
arc_bridge_service()->power()->AddObserver(this); |
} |
@@ -34,6 +34,11 @@ void ArcPowerBridge::OnInstanceReady() { |
ash::Shell::GetInstance()->display_configurator()->AddObserver(this); |
chromeos::DBusThreadManager::Get()->GetPowerManagerClient()-> |
AddObserver(this); |
+ chromeos::DBusThreadManager::Get() |
+ ->GetPowerManagerClient() |
+ ->GetScreenBrightnessPercent( |
+ base::Bind(&ArcPowerBridge::UpdateAndroidScreenBrightness, |
+ weak_ptr_factory_.GetWeakPtr())); |
} |
void ArcPowerBridge::OnInstanceClosed() { |
@@ -63,6 +68,10 @@ void ArcPowerBridge::SuspendDone(const base::TimeDelta& sleep_duration) { |
power_instance->Resume(); |
} |
+void ArcPowerBridge::BrightnessChanged(int level, bool user_initiated) { |
+ UpdateAndroidScreenBrightness(static_cast<double>(level)); |
+} |
+ |
void ArcPowerBridge::OnPowerStateChanged( |
chromeos::DisplayPowerState power_state) { |
mojom::PowerInstance* power_instance = ARC_GET_INSTANCE_FOR_METHOD( |
@@ -126,6 +135,12 @@ void ArcPowerBridge::IsDisplayOn(const IsDisplayOnCallback& callback) { |
ash::Shell::GetInstance()->display_configurator()->IsDisplayOn()); |
} |
+void ArcPowerBridge::OnScreenBrightnessUpdateRequest(double percent) { |
+ chromeos::DBusThreadManager::Get() |
+ ->GetPowerManagerClient() |
+ ->SetScreenBrightnessPercent(percent, true); |
+} |
+ |
void ArcPowerBridge::ReleaseAllDisplayWakeLocks() { |
if (!chromeos::PowerPolicyController::IsInitialized()) { |
LOG(WARNING) << "PowerPolicyController is not available"; |
@@ -140,4 +155,12 @@ void ArcPowerBridge::ReleaseAllDisplayWakeLocks() { |
wake_locks_.clear(); |
} |
+void ArcPowerBridge::UpdateAndroidScreenBrightness(double percent) { |
+ mojom::PowerInstance* power_instance = ARC_GET_INSTANCE_FOR_METHOD( |
+ arc_bridge_service()->power(), UpdateScreenBrightnessSettings); |
+ if (!power_instance) |
+ return; |
+ power_instance->UpdateScreenBrightnessSettings(percent); |
+} |
+ |
} // namespace arc |