1/* 2 * Copyright (C) 2012 Samsung Electronics 3 * 4 * This library is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU Library General Public 6 * License as published by the Free Software Foundation; either 7 * version 2 of the License, or (at your option) any later version. 8 * 9 * This library is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * Library General Public License for more details. 13 * 14 * You should have received a copy of the GNU Library General Public License 15 * along with this library; see the file COPYING.LIB. If not, write to 16 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 17 * Boston, MA 02110-1301, USA. 18 */ 19 20#ifndef BatteryManager_h 21#define BatteryManager_h 22 23#if ENABLE(BATTERY_STATUS) 24 25#include "ActiveDOMObject.h" 26#include "BatteryStatus.h" 27#include "EventTarget.h" 28 29namespace WebCore { 30 31class BatteryController; 32class Navigator; 33class ScriptExecutionContext; 34 35class BatteryManager : public ActiveDOMObject, public RefCounted<BatteryManager>, public EventTarget { 36public: 37 virtual ~BatteryManager(); 38 static PassRef<BatteryManager> create(Navigator*); 39 40 // EventTarget implementation. 41 virtual EventTargetInterface eventTargetInterface() const override { return BatteryManagerEventTargetInterfaceType; } 42 virtual ScriptExecutionContext* scriptExecutionContext() const override { return ActiveDOMObject::scriptExecutionContext(); } 43 44 bool charging(); 45 double chargingTime(); 46 double dischargingTime(); 47 double level(); 48 49 DEFINE_ATTRIBUTE_EVENT_LISTENER(chargingchange); 50 DEFINE_ATTRIBUTE_EVENT_LISTENER(chargingtimechange); 51 DEFINE_ATTRIBUTE_EVENT_LISTENER(dischargingtimechange); 52 DEFINE_ATTRIBUTE_EVENT_LISTENER(levelchange); 53 54 void didChangeBatteryStatus(PassRefPtr<Event>, PassRefPtr<BatteryStatus>); 55 void updateBatteryStatus(PassRefPtr<BatteryStatus>); 56 void batteryControllerDestroyed() { m_batteryController = nullptr; } 57 58 using RefCounted<BatteryManager>::ref; 59 using RefCounted<BatteryManager>::deref; 60 61 // ActiveDOMObject implementation. 62 virtual bool canSuspend() const override { return true; } 63 virtual void suspend(ReasonForSuspension) override; 64 virtual void resume() override; 65 virtual void stop() override; 66 67protected: 68 virtual EventTargetData* eventTargetData() override { return &m_eventTargetData; } 69 virtual EventTargetData& ensureEventTargetData() override { return m_eventTargetData; } 70 71private: 72 explicit BatteryManager(Navigator*); 73 74 // EventTarget implementation. 75 virtual void refEventTarget() override { ref(); } 76 virtual void derefEventTarget() override { deref(); } 77 78 BatteryController* m_batteryController; 79 EventTargetData m_eventTargetData; 80 RefPtr<BatteryStatus> m_batteryStatus; 81}; 82 83} 84 85#endif // BATTERY_STATUS 86#endif // BatteryManager_h 87 88