Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / Source / modules / battery / NavigatorBattery.cpp
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 blink {
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 blink