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.
5 #ifndef BatteryManager_h
6 #define BatteryManager_h
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"
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);
24 static BatteryManager* create(ExecutionContext*);
25 virtual ~BatteryManager();
27 // Returns a promise object that will be resolved with this BatteryManager.
28 ScriptPromise startRequest(ScriptState*);
30 // EventTarget implementation.
31 virtual const WTF::AtomicString& interfaceName() const override { return EventTargetNames::BatteryManager; }
32 virtual ExecutionContext* executionContext() const override { return ContextLifecycleObserver::executionContext(); }
35 double chargingTime();
36 double dischargingTime();
39 DEFINE_ATTRIBUTE_EVENT_LISTENER(chargingchange);
40 DEFINE_ATTRIBUTE_EVENT_LISTENER(chargingtimechange);
41 DEFINE_ATTRIBUTE_EVENT_LISTENER(dischargingtimechange);
42 DEFINE_ATTRIBUTE_EVENT_LISTENER(levelchange);
44 // Inherited from PlatformEventController.
45 virtual void didUpdateData() override;
46 virtual void registerWithDispatcher() override;
47 virtual void unregisterWithDispatcher() override;
48 virtual bool hasLastData() override;
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;
57 virtual void trace(Visitor*) override;
66 explicit BatteryManager(ExecutionContext*);
68 RefPtr<ScriptPromiseResolver> m_resolver;
69 Member<BatteryStatus> m_batteryStatus;
75 #endif // BatteryManager_h