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.
6 #include "modules/battery/BatteryManager.h"
8 #include "RuntimeEnabledFeatures.h"
9 #include "core/events/Event.h"
10 #include "modules/battery/BatteryDispatcher.h"
11 #include "modules/battery/BatteryStatus.h"
16 PassRefPtrWillBeRawPtr<BatteryManager> BatteryManager::create(ExecutionContext* context)
18 RefPtrWillBeRawPtr<BatteryManager> batteryManager(adoptRefWillBeRefCountedGarbageCollected(new BatteryManager(context)));
19 batteryManager->suspendIfNeeded();
20 return batteryManager.release();
23 BatteryManager::~BatteryManager()
27 BatteryManager::BatteryManager(ExecutionContext* context)
28 : ActiveDOMObject(context)
29 , DeviceSensorEventController(toDocument(context)->page())
31 m_hasEventListener = true;
35 bool BatteryManager::charging()
37 if (const BatteryStatus* lastData = BatteryDispatcher::instance().getLatestData())
38 return lastData->charging();
43 double BatteryManager::chargingTime()
45 if (const BatteryStatus* lastData = BatteryDispatcher::instance().getLatestData())
46 return lastData->chargingTime();
51 double BatteryManager::dischargingTime()
53 if (const BatteryStatus* lastData = BatteryDispatcher::instance().getLatestData())
54 return lastData->dischargingTime();
56 return std::numeric_limits<double>::infinity();
59 double BatteryManager::level()
61 if (const BatteryStatus* lastData = BatteryDispatcher::instance().getLatestData())
62 return lastData->level();
67 void BatteryManager::didChangeBatteryStatus(PassRefPtrWillBeRawPtr<Event> event)
69 ASSERT(RuntimeEnabledFeatures::batteryStatusEnabled());
74 void BatteryManager::registerWithDispatcher()
76 BatteryDispatcher::instance().addClient(this);
79 void BatteryManager::unregisterWithDispatcher()
81 BatteryDispatcher::instance().removeClient(this);
84 bool BatteryManager::hasLastData()
89 PassRefPtrWillBeRawPtr<Event> BatteryManager::getLastEvent()
91 // Events are dispached via BatteryManager::didChangeBatteryStatus()
95 bool BatteryManager::isNullEvent(Event*)
100 Document* BatteryManager::document()
102 return toDocument(executionContext());
105 void BatteryManager::suspend()
107 m_hasEventListener = false;
111 void BatteryManager::resume()
113 m_hasEventListener = true;
117 void BatteryManager::stop()
119 m_hasEventListener = false;
123 } // namespace WebCore