blob: e6ab56e2b5fb1312e39955edc96787f36edfbb5d [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 "battery_status_dispatcher.h"
#include "base/logging.h"
#include "content/common/battery_status_messages.h"
#include "content/renderer/render_thread_impl.h"
#include "third_party/WebKit/public/platform/WebBatteryStatusListener.h"
namespace content {
BatteryStatusDispatcher::BatteryStatusDispatcher(RenderThread* thread)
: listener_(0) {
if (thread)
thread->AddObserver(this);
}
BatteryStatusDispatcher::~BatteryStatusDispatcher() {
if (listener_)
Stop();
}
bool BatteryStatusDispatcher::SetListener(
blink::WebBatteryStatusListener* listener) {
listener_ = listener;
return listener ? Start() : Stop();
}
bool BatteryStatusDispatcher::OnControlMessageReceived(
const IPC::Message& message) {
bool handled = true;
IPC_BEGIN_MESSAGE_MAP(BatteryStatusDispatcher, message)
IPC_MESSAGE_HANDLER(BatteryStatusMsg_DidChange, OnDidChange)
IPC_MESSAGE_UNHANDLED(handled = false)
IPC_END_MESSAGE_MAP()
return handled;
}
bool BatteryStatusDispatcher::Start() {
return RenderThread::Get()->Send(new BatteryStatusHostMsg_Start());
}
bool BatteryStatusDispatcher::Stop() {
return RenderThread::Get()->Send(new BatteryStatusHostMsg_Stop());
}
void BatteryStatusDispatcher::OnDidChange(
const blink::WebBatteryStatus& status) {
if (listener_)
listener_->updateBatteryStatus(status);
}
} // namespace content