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 15 namespace blink { 16 17 class BatteryStatus; 18 19 class 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); 23 public: 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 59 private: 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