diff options
author | Simon Hausmann <simon.hausmann@nokia.com> | 2012-07-11 13:45:28 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@nokia.com> | 2012-07-11 13:45:28 +0200 |
commit | d6a599dbc9d824a462b2b206316e102bf8136446 (patch) | |
tree | ecb257a5e55b2239d74b90fdad62fccd661cf286 /Source/WebKit2/WebProcess/Battery/WebBatteryManager.cpp | |
parent | 3ccc3a85f09a83557b391aae380d3bf5f81a2911 (diff) | |
download | qtwebkit-d6a599dbc9d824a462b2b206316e102bf8136446.tar.gz |
Imported WebKit commit 8ff1f22783a32de82fee915abd55bd1b298f2644 (http://svn.webkit.org/repository/webkit/trunk@122325)
New snapshot that should work with the latest Qt build system changes
Diffstat (limited to 'Source/WebKit2/WebProcess/Battery/WebBatteryManager.cpp')
-rw-r--r-- | Source/WebKit2/WebProcess/Battery/WebBatteryManager.cpp | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/Source/WebKit2/WebProcess/Battery/WebBatteryManager.cpp b/Source/WebKit2/WebProcess/Battery/WebBatteryManager.cpp new file mode 100644 index 000000000..04dec8640 --- /dev/null +++ b/Source/WebKit2/WebProcess/Battery/WebBatteryManager.cpp @@ -0,0 +1,102 @@ +/* + * Copyright (C) 2012 Intel Corporation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "config.h" +#include "WebBatteryManager.h" + +#if ENABLE(BATTERY_STATUS) + +#include "WebBatteryManagerProxyMessages.h" +#include "WebPage.h" +#include "WebProcess.h" +#include <WebCore/BatteryController.h> +#include <WebCore/BatteryStatus.h> +#include <WebCore/Page.h> + +using namespace WebCore; + +namespace WebKit { + +WebBatteryManager::WebBatteryManager(WebProcess* process) + : m_process(process) +{ +} + +WebBatteryManager::~WebBatteryManager() +{ +} + +void WebBatteryManager::didReceiveMessage(CoreIPC::Connection* connection, CoreIPC::MessageID messageID, CoreIPC::ArgumentDecoder* arguments) +{ + didReceiveWebBatteryManagerMessage(connection, messageID, arguments); +} + +void WebBatteryManager::registerWebPage(WebPage* page) +{ + bool wasEmpty = m_pageSet.isEmpty(); + + m_pageSet.add(page); + + if (wasEmpty) + m_process->connection()->send(Messages::WebBatteryManagerProxy::StartUpdating(), 0); +} + +void WebBatteryManager::unregisterWebPage(WebPage* page) +{ + m_pageSet.remove(page); + + if (m_pageSet.isEmpty()) + m_process->connection()->send(Messages::WebBatteryManagerProxy::StopUpdating(), 0); +} + +void WebBatteryManager::didChangeBatteryStatus(const WTF::AtomicString& eventType, const WebBatteryStatus::Data& data) +{ + RefPtr<BatteryStatus> status = BatteryStatus::create(data.isCharging, data.chargingTime, data.dischargingTime, data.level); + + HashSet<WebPage*>::const_iterator it = m_pageSet.begin(); + HashSet<WebPage*>::const_iterator end = m_pageSet.end(); + for (; it != end; ++it) { + WebPage* page = *it; + if (page->corePage()) + BatteryController::from(page->corePage())->didChangeBatteryStatus(eventType, status.get()); + } +} + +void WebBatteryManager::updateBatteryStatus(const WebBatteryStatus::Data& data) +{ + RefPtr<BatteryStatus> status = BatteryStatus::create(data.isCharging, data.chargingTime, data.dischargingTime, data.level); + + HashSet<WebPage*>::const_iterator it = m_pageSet.begin(); + HashSet<WebPage*>::const_iterator end = m_pageSet.end(); + for (; it != end; ++it) { + WebPage* page = *it; + if (page->corePage()) + BatteryController::from(page->corePage())->updateBatteryStatus(status.get()); + } +} + +} // namespace WebKit + +#endif // ENABLE(BATTERY_STATUS) |