Replace PassRef with Ref/Ref&& across the board.
[WebKit-https.git] / Source / WebKit2 / UIProcess / efl / BatteryProvider.cpp
1 /*
2  * Copyright (C) 2012 Intel Corporation. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
14  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
15  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
17  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
19  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
21  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
23  * THE POSSIBILITY OF SUCH DAMAGE.
24  */
25
26 #include "config.h"
27 #include "BatteryProvider.h"
28
29 #if ENABLE(BATTERY_STATUS)
30
31 #include "WKAPICast.h"
32 #include "WKBatteryManager.h"
33 #include "WKBatteryStatus.h"
34
35 using namespace WebCore;
36 using namespace WebKit;
37
38 static inline BatteryProvider* toBatteryProvider(const void* clientInfo)
39 {
40     return static_cast<BatteryProvider*>(const_cast<void*>(clientInfo));
41 }
42
43 static void startUpdatingCallback(WKBatteryManagerRef, const void* clientInfo)
44 {
45     toBatteryProvider(clientInfo)->startUpdating();
46 }
47
48 static void stopUpdatingCallback(WKBatteryManagerRef, const void* clientInfo)
49 {
50     toBatteryProvider(clientInfo)->stopUpdating();
51 }
52
53 BatteryProvider::~BatteryProvider()
54 {
55     m_provider.stopUpdating();
56
57     WKBatteryManagerSetProvider(m_batteryManager.get(), 0);
58 }
59
60 Ref<BatteryProvider> BatteryProvider::create(WKContextRef context)
61 {
62     ASSERT(context);
63     return adoptRef(*new BatteryProvider(context));
64 }
65
66 BatteryProvider::BatteryProvider(WKContextRef context)
67     : m_batteryManager(WKContextGetBatteryManager(context))
68     , m_provider(this)
69 {
70     ASSERT(m_batteryManager);
71
72     WKBatteryProviderV0 wkBatteryProvider = {
73         {
74             0, // version
75             this, // clientInfo
76         },
77         startUpdatingCallback,
78         stopUpdatingCallback
79     };
80
81     WKBatteryManagerSetProvider(m_batteryManager.get(), &wkBatteryProvider.base);
82 }
83
84 void BatteryProvider::startUpdating()
85 {
86     m_provider.startUpdating();
87 }
88
89 void BatteryProvider::stopUpdating()
90 {
91     m_provider.stopUpdating();
92 }
93
94 void BatteryProvider::didChangeBatteryStatus(const AtomicString& eventType, PassRefPtr<BatteryStatus> status)
95 {
96     WKRetainPtr<WKBatteryStatusRef> wkBatteryStatus = adoptWK(WKBatteryStatusCreate(status->charging(), status->chargingTime(), status->dischargingTime(), status->level()));
97
98     WKBatteryManagerProviderDidChangeBatteryStatus(m_batteryManager.get(), toAPI(eventType.impl()), wkBatteryStatus.get());
99 }
100 #endif // ENABLE(BATTERY_STATUS)