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/v8/ScriptPromise.h"
      9 #include "bindings/v8/ScriptPromiseResolverWithContext.h"
     10 #include "core/dom/ContextLifecycleObserver.h"
     11 #include "core/dom/Document.h"
     12 #include "core/frame/DeviceEventControllerBase.h"
     13 #include "modules/EventTargetModules.h"
     14 #include "platform/heap/Handle.h"
     15 
     16 namespace WebCore {
     17 
     18 class BatteryStatus;
     19 
     20 class BatteryManager FINAL : public RefCountedWillBeRefCountedGarbageCollected<BatteryManager>, public ActiveDOMObject, public DeviceEventControllerBase, public EventTargetWithInlineData {
     21     REFCOUNTED_EVENT_TARGET(BatteryManager);
     22     WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(BatteryManager);
     23 public:
     24     virtual ~BatteryManager();
     25     static PassRefPtrWillBeRawPtr<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 DeviceEventControllerBase.
     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 
     56     virtual void trace(Visitor*) OVERRIDE;
     57 
     58 private:
     59     enum State {
     60         NotStarted,
     61         Pending,
     62         Resolved,
     63     };
     64 
     65     explicit BatteryManager(ExecutionContext*);
     66 
     67     RefPtr<ScriptPromiseResolverWithContext> m_resolver;
     68     RefPtrWillBeMember<BatteryStatus> m_batteryStatus;
     69     State m_state;
     70 };
     71 
     72 }
     73 
     74 #endif // BatteryManager_h
     75