Home | History | Annotate | Download | only in battery
      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