Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / Source / modules / battery / BatteryManager.h
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     static BatteryManager* create(ExecutionContext*);
25     virtual ~BatteryManager();
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