blob: 360095e9824a2ffbe1886ed885031f090c5fe676 [file] [log] [blame]
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef BatteryManager_h
#define BatteryManager_h
#include "bindings/v8/ScriptPromise.h"
#include "bindings/v8/ScriptPromiseResolverWithContext.h"
#include "core/dom/ContextLifecycleObserver.h"
#include "core/dom/Document.h"
#include "core/frame/DeviceEventControllerBase.h"
#include "modules/EventTargetModules.h"
#include "platform/heap/Handle.h"
namespace WebCore {
class BatteryStatus;
class BatteryManager FINAL : public RefCountedWillBeRefCountedGarbageCollected<BatteryManager>, public ActiveDOMObject, public DeviceEventControllerBase, public EventTargetWithInlineData {
REFCOUNTED_EVENT_TARGET(BatteryManager);
WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(BatteryManager);
public:
virtual ~BatteryManager();
static PassRefPtrWillBeRawPtr<BatteryManager> create(ExecutionContext*);
// Returns a promise object that will be resolved with this BatteryManager.
ScriptPromise startRequest(ScriptState*);
// EventTarget implementation.
virtual const WTF::AtomicString& interfaceName() const OVERRIDE { return EventTargetNames::BatteryManager; }
virtual ExecutionContext* executionContext() const OVERRIDE { return ContextLifecycleObserver::executionContext(); }
bool charging();
double chargingTime();
double dischargingTime();
double level();
DEFINE_ATTRIBUTE_EVENT_LISTENER(chargingchange);
DEFINE_ATTRIBUTE_EVENT_LISTENER(chargingtimechange);
DEFINE_ATTRIBUTE_EVENT_LISTENER(dischargingtimechange);
DEFINE_ATTRIBUTE_EVENT_LISTENER(levelchange);
// Inherited from DeviceEventControllerBase.
virtual void didUpdateData() OVERRIDE;
virtual void registerWithDispatcher() OVERRIDE;
virtual void unregisterWithDispatcher() OVERRIDE;
virtual bool hasLastData() OVERRIDE;
// ActiveDOMObject implementation.
virtual bool canSuspend() const { return true; }
virtual void suspend() OVERRIDE;
virtual void resume() OVERRIDE;
virtual void stop() OVERRIDE;
virtual void trace(Visitor*) OVERRIDE;
private:
enum State {
NotStarted,
Pending,
Resolved,
};
explicit BatteryManager(ExecutionContext*);
RefPtr<ScriptPromiseResolverWithContext> m_resolver;
RefPtrWillBeMember<BatteryStatus> m_batteryStatus;
State m_state;
};
}
#endif // BatteryManager_h