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 "WebNetworkInfoManagerProxy.h" 28 29#if ENABLE(NETWORK_INFO) 30 31#include "WebContext.h" 32#include "WebNetworkInfo.h" 33#include "WebNetworkInfoManagerMessages.h" 34#include "WebNetworkInfoManagerProxyMessages.h" 35 36namespace WebKit { 37 38const char* WebNetworkInfoManagerProxy::supplementName() 39{ 40 return "WebNetworkInfoManagerProxy"; 41} 42 43PassRefPtr<WebNetworkInfoManagerProxy> WebNetworkInfoManagerProxy::create(WebContext* context) 44{ 45 return adoptRef(new WebNetworkInfoManagerProxy(context)); 46} 47 48WebNetworkInfoManagerProxy::WebNetworkInfoManagerProxy(WebContext* context) 49 : WebContextSupplement(context) 50 , m_isUpdating(false) 51{ 52 WebContextSupplement::context()->addMessageReceiver(Messages::WebNetworkInfoManagerProxy::messageReceiverName(), this); 53} 54 55WebNetworkInfoManagerProxy::~WebNetworkInfoManagerProxy() 56{ 57} 58 59void WebNetworkInfoManagerProxy::initializeProvider(const WKNetworkInfoProvider* provider) 60{ 61 m_provider.initialize(provider); 62} 63 64void WebNetworkInfoManagerProxy::providerDidChangeNetworkInformation(const AtomicString& eventType, WebNetworkInfo* networkInformation) 65{ 66 if (!context()) 67 return; 68 69 context()->sendToAllProcesses(Messages::WebNetworkInfoManager::DidChangeNetworkInformation(eventType, networkInformation->data())); 70} 71 72// WebContextSupplement 73 74void WebNetworkInfoManagerProxy::contextDestroyed() 75{ 76 stopUpdating(); 77} 78 79void WebNetworkInfoManagerProxy::processDidClose(WebProcessProxy*) 80{ 81 stopUpdating(); 82} 83 84void WebNetworkInfoManagerProxy::refWebContextSupplement() 85{ 86 APIObject::ref(); 87} 88 89void WebNetworkInfoManagerProxy::derefWebContextSupplement() 90{ 91 APIObject::deref(); 92} 93 94void WebNetworkInfoManagerProxy::startUpdating() 95{ 96 if (m_isUpdating) 97 return; 98 99 m_provider.startUpdating(this); 100 m_isUpdating = true; 101} 102 103void WebNetworkInfoManagerProxy::stopUpdating() 104{ 105 if (!m_isUpdating) 106 return; 107 108 m_provider.stopUpdating(this); 109 m_isUpdating = false; 110} 111 112void WebNetworkInfoManagerProxy::getBandwidth(double& bandwidth) 113{ 114 bandwidth = m_provider.bandwidth(this); 115} 116 117void WebNetworkInfoManagerProxy::isMetered(bool& isMetered) 118{ 119 isMetered = m_provider.isMetered(this); 120} 121 122} // namespace WebKit 123 124#endif // ENABLE(NETWORK_INFO) 125