• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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.
interfaceName()31     virtual const WTF::AtomicString& interfaceName() const OVERRIDE { return EventTargetNames::BatteryManager; }
executionContext()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.
canSuspend()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