WebBatteryManager.cpp [plain text]
#include "config.h"
#include "WebBatteryManager.h"
#if ENABLE(BATTERY_STATUS)
#include "WebBatteryManagerMessages.h"
#include "WebBatteryManagerProxyMessages.h"
#include "WebPage.h"
#include "WebProcess.h"
#include <WebCore/BatteryController.h>
#include <WebCore/BatteryStatus.h>
#include <WebCore/Page.h>
using namespace WebCore;
namespace WebKit {
const char* WebBatteryManager::supplementName()
{
return "WebBatteryManager";
}
WebBatteryManager::WebBatteryManager(WebProcess* process)
: m_process(process)
{
m_process->addMessageReceiver(Messages::WebBatteryManager::messageReceiverName(), this);
}
WebBatteryManager::~WebBatteryManager()
{
}
void WebBatteryManager::registerWebPage(WebPage* page)
{
bool wasEmpty = m_pageSet.isEmpty();
m_pageSet.add(page);
if (wasEmpty)
m_process->parentProcessConnection()->send(Messages::WebBatteryManagerProxy::StartUpdating(), 0);
}
void WebBatteryManager::unregisterWebPage(WebPage* page)
{
m_pageSet.remove(page);
if (m_pageSet.isEmpty())
m_process->parentProcessConnection()->send(Messages::WebBatteryManagerProxy::StopUpdating(), 0);
}
void WebBatteryManager::didChangeBatteryStatus(const WTF::AtomicString& eventType, const WebBatteryStatus::Data& data)
{
RefPtr<BatteryStatus> status = BatteryStatus::create(data.isCharging, data.chargingTime, data.dischargingTime, data.level);
HashSet<WebPage*>::const_iterator it = m_pageSet.begin();
HashSet<WebPage*>::const_iterator end = m_pageSet.end();
for (; it != end; ++it) {
WebPage* page = *it;
if (page->corePage())
BatteryController::from(page->corePage())->didChangeBatteryStatus(eventType, status.get());
}
}
void WebBatteryManager::updateBatteryStatus(const WebBatteryStatus::Data& data)
{
RefPtr<BatteryStatus> status = BatteryStatus::create(data.isCharging, data.chargingTime, data.dischargingTime, data.level);
HashSet<WebPage*>::const_iterator it = m_pageSet.begin();
HashSet<WebPage*>::const_iterator end = m_pageSet.end();
for (; it != end; ++it) {
WebPage* page = *it;
if (page->corePage())
BatteryController::from(page->corePage())->updateBatteryStatus(status.get());
}
}
}
#endif // ENABLE(BATTERY_STATUS)