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 | |
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')
3 files changed, 207 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) diff --git a/Source/WebKit2/WebProcess/Battery/WebBatteryManager.h b/Source/WebKit2/WebProcess/Battery/WebBatteryManager.h new file mode 100644 index 000000000..509718d42 --- /dev/null +++ b/Source/WebKit2/WebProcess/Battery/WebBatteryManager.h @@ -0,0 +1,75 @@ +/* + * 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. + */ + +#ifndef WebBatteryManager_h +#define WebBatteryManager_h + +#if ENABLE(BATTERY_STATUS) + +#include "MessageID.h" +#include "WebBatteryStatus.h" +#include "WebCoreArgumentCoders.h" +#include <wtf/HashSet.h> +#include <wtf/Noncopyable.h> +#include <wtf/text/AtomicString.h> + +namespace CoreIPC { +class ArgumentDecoder; +class Connection; +} + +namespace WebKit { + +class WebPage; +class WebProcess; + +class WebBatteryManager { + WTF_MAKE_NONCOPYABLE(WebBatteryManager); + +public: + explicit WebBatteryManager(WebProcess*); + ~WebBatteryManager(); + + void registerWebPage(WebPage*); + void unregisterWebPage(WebPage*); + + void didChangeBatteryStatus(const WTF::AtomicString& eventType, const WebBatteryStatus::Data&); + void updateBatteryStatus(const WebBatteryStatus::Data&); + + void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*); + +private: + // Implemented in generated WebBatteryManagerMessageReceiver.cpp + void didReceiveWebBatteryManagerMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*); + + WebProcess* m_process; + HashSet<WebPage*> m_pageSet; +}; + +} // namespace WebKit + +#endif // ENABLE(BATTERY_STATUS) + +#endif // WebBatteryManager_h diff --git a/Source/WebKit2/WebProcess/Battery/WebBatteryManager.messages.in b/Source/WebKit2/WebProcess/Battery/WebBatteryManager.messages.in new file mode 100644 index 000000000..37e73ef66 --- /dev/null +++ b/Source/WebKit2/WebProcess/Battery/WebBatteryManager.messages.in @@ -0,0 +1,30 @@ +# 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. + +#if ENABLE(BATTERY_STATUS) + +messages -> WebBatteryManager { + DidChangeBatteryStatus(AtomicString eventType, WebKit::WebBatteryStatus::Data status); + UpdateBatteryStatus(WebKit::WebBatteryStatus::Data status); +} + +#endif |