1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef BatteryManager_h 6#define BatteryManager_h 7 8#include "bindings/core/v8/ScriptPromise.h" 9#include "bindings/core/v8/ScriptPromiseResolver.h" 10#include "core/dom/ContextLifecycleObserver.h" 11#include "core/frame/PlatformEventController.h" 12#include "modules/EventTargetModules.h" 13#include "platform/heap/Handle.h" 14 15namespace blink { 16 17class BatteryStatus; 18 19class BatteryManager FINAL : public RefCountedGarbageCollectedWillBeGarbageCollectedFinalized<BatteryManager>, public ActiveDOMObject, public PlatformEventController, public EventTargetWithInlineData { 20 DEFINE_EVENT_TARGET_REFCOUNTING_WILL_BE_REMOVED(RefCountedGarbageCollected<BatteryManager>); 21 DEFINE_WRAPPERTYPEINFO(); 22 WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(BatteryManager); 23public: 24 virtual ~BatteryManager(); 25 static BatteryManager* create(ExecutionContext*); 26 27 // Returns a promise object that will be resolved with this BatteryManager. 28 ScriptPromise startRequest(ScriptState*); 29 30 // EventTarget implementation. 31 virtual const WTF::AtomicString& interfaceName() const OVERRIDE { return EventTargetNames::BatteryManager; } 32 virtual ExecutionContext* executionContext() const OVERRIDE { return ContextLifecycleObserver::executionContext(); } 33 34 bool charging(); 35 double chargingTime(); 36 double dischargingTime(); 37 double level(); 38 39 DEFINE_ATTRIBUTE_EVENT_LISTENER(chargingchange); 40 DEFINE_ATTRIBUTE_EVENT_LISTENER(chargingtimechange); 41 DEFINE_ATTRIBUTE_EVENT_LISTENER(dischargingtimechange); 42 DEFINE_ATTRIBUTE_EVENT_LISTENER(levelchange); 43 44 // Inherited from PlatformEventController. 45 virtual void didUpdateData() OVERRIDE; 46 virtual void registerWithDispatcher() OVERRIDE; 47 virtual void unregisterWithDispatcher() OVERRIDE; 48 virtual bool hasLastData() OVERRIDE; 49 50 // ActiveDOMObject implementation. 51 virtual bool canSuspend() const { return true; } 52 virtual void suspend() OVERRIDE; 53 virtual void resume() OVERRIDE; 54 virtual void stop() OVERRIDE; 55 virtual bool hasPendingActivity() const OVERRIDE; 56 57 virtual void trace(Visitor*) OVERRIDE; 58 59private: 60 enum State { 61 NotStarted, 62 Pending, 63 Resolved, 64 }; 65 66 explicit BatteryManager(ExecutionContext*); 67 68 RefPtr<ScriptPromiseResolver> m_resolver; 69 Member<BatteryStatus> m_batteryStatus; 70 State m_state; 71}; 72 73} // namespace blink 74 75#endif // BatteryManager_h 76