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 #include "config.h" 6 #include "modules/battery/NavigatorBattery.h" 7 8 #include "core/frame/LocalFrame.h" 9 #include "modules/battery/BatteryManager.h" 10 11 namespace WebCore { 12 13 NavigatorBattery::NavigatorBattery() 14 { 15 } 16 17 NavigatorBattery::~NavigatorBattery() 18 { 19 } 20 21 ScriptPromise NavigatorBattery::getBattery(ScriptState* scriptState, Navigator& navigator) 22 { 23 return NavigatorBattery::from(navigator).getBattery(scriptState); 24 } 25 26 ScriptPromise NavigatorBattery::getBattery(ScriptState* scriptState) 27 { 28 if (!m_batteryManager) 29 m_batteryManager = BatteryManager::create(scriptState->executionContext()); 30 31 return m_batteryManager->startRequest(scriptState); 32 } 33 34 const char* NavigatorBattery::supplementName() 35 { 36 return "NavigatorBattery"; 37 } 38 39 NavigatorBattery& NavigatorBattery::from(Navigator& navigator) 40 { 41 NavigatorBattery* supplement = static_cast<NavigatorBattery*>(WillBeHeapSupplement<Navigator>::from(navigator, supplementName())); 42 if (!supplement) { 43 supplement = new NavigatorBattery(); 44 provideTo(navigator, supplementName(), adoptPtrWillBeNoop(supplement)); 45 } 46 return *supplement; 47 } 48 49 void NavigatorBattery::trace(Visitor* visitor) 50 { 51 visitor->trace(m_batteryManager); 52 WillBeHeapSupplement<Navigator>::trace(visitor); 53 } 54 55 } // namespace WebCore 56