blob: 66b8f91c125f2ffe8d43479c34204f1cc63172ec [file] [log] [blame]
// Copyright 2014 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 "content/renderer/battery_status/battery_status_dispatcher.h"
#include "content/public/common/service_registry.h"
#include "content/public/renderer/render_thread.h"
#include "third_party/WebKit/public/platform/WebBatteryStatusListener.h"
namespace content {
BatteryStatusDispatcher::BatteryStatusDispatcher(
blink::WebBatteryStatusListener* listener)
: listener_(listener) {
DCHECK(listener_);
if (ServiceRegistry* registry = RenderThread::Get()->GetServiceRegistry()) {
// registry can be null during testing.
registry->ConnectToRemoteService(&monitor_);
QueryNextStatus();
}
}
BatteryStatusDispatcher::~BatteryStatusDispatcher() {
}
void BatteryStatusDispatcher::QueryNextStatus() {
monitor_->QueryNextStatus(
base::Bind(&BatteryStatusDispatcher::DidChange, base::Unretained(this)));
}
void BatteryStatusDispatcher::DidChange(
device::BatteryStatusPtr battery_status) {
// monitor_ can be null during testing.
if (monitor_)
QueryNextStatus();
DCHECK(battery_status);
blink::WebBatteryStatus web_battery_status;
web_battery_status.charging = battery_status->charging;
web_battery_status.chargingTime = battery_status->charging_time;
web_battery_status.dischargingTime = battery_status->discharging_time;
web_battery_status.level = battery_status->level;
listener_->updateBatteryStatus(web_battery_status);
}
} // namespace content