1f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch/* 2f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch * Copyright (C) 2010 Google Inc. All rights reserved. 3f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch * 4f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch * Redistribution and use in source and binary forms, with or without 5f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch * modification, are permitted provided that the following conditions 6f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch * are met: 7f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch * 8f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch * 1. Redistributions of source code must retain the above copyright 9f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch * notice, this list of conditions and the following disclaimer. 10f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch * 2. Redistributions in binary form must reproduce the above copyright 11f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch * notice, this list of conditions and the following disclaimer in the 12f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch * documentation and/or other materials provided with the distribution. 13f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch * 14f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY 15f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 16f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 17f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY 18f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 19f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 20f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 21f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 23f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch */ 25f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 26f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch#include "config.h" 27f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch#include "GeolocationClientProxy.h" 28f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 29f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch#include "Geolocation.h" 30f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch#include "GeolocationPosition.h" 31f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch#include "WebGeolocationClient.h" 32f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch#include "WebGeolocationController.h" 33f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch#include "WebGeolocationPermissionRequest.h" 34f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch#include "WebGeolocationPosition.h" 35f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 36f05b935882198ccf7d81675736e3aeb089c5113aBen Murdochnamespace WebKit { 37f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 38f05b935882198ccf7d81675736e3aeb089c5113aBen MurdochGeolocationClientProxy::GeolocationClientProxy(WebGeolocationClient* client) 39f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch : m_client(client) 40f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch{ 41f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch} 42f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 43f05b935882198ccf7d81675736e3aeb089c5113aBen MurdochGeolocationClientProxy::~GeolocationClientProxy() 44f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch{ 45f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch} 46f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 47f05b935882198ccf7d81675736e3aeb089c5113aBen Murdochvoid GeolocationClientProxy::setController(WebCore::GeolocationController* controller) 48f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch{ 49f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch // We support there not being a client, provided we don't do any Geolocation. 50f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch if (m_client) { 51f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch // Ownership of the WebGeolocationController is transferred to the client. 52f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch m_client->setController(new WebGeolocationController(controller)); 53f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch } 54f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch} 55f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 56f05b935882198ccf7d81675736e3aeb089c5113aBen Murdochvoid GeolocationClientProxy::geolocationDestroyed() 57f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch{ 58f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch if (m_client) 59f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch m_client->geolocationDestroyed(); 60f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch} 61f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 62f05b935882198ccf7d81675736e3aeb089c5113aBen Murdochvoid GeolocationClientProxy::startUpdating() 63f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch{ 64f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch m_client->startUpdating(); 65f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch} 66f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 67f05b935882198ccf7d81675736e3aeb089c5113aBen Murdochvoid GeolocationClientProxy::stopUpdating() 68f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch{ 69f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch m_client->stopUpdating(); 70f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch} 71f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 72f05b935882198ccf7d81675736e3aeb089c5113aBen Murdochvoid GeolocationClientProxy::setEnableHighAccuracy(bool highAccuracy) 73f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch{ 74f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch m_client->setEnableHighAccuracy(highAccuracy); 75f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch} 76f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 77f05b935882198ccf7d81675736e3aeb089c5113aBen MurdochWebCore::GeolocationPosition* GeolocationClientProxy::lastPosition() 78f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch{ 79f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch WebGeolocationPosition webPosition; 80f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch if (m_client->lastPosition(webPosition)) 81f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch m_lastPosition = webPosition; 82f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch else 83f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch m_lastPosition.clear(); 84f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 85f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch return m_lastPosition.get(); 86f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch} 87f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 88f05b935882198ccf7d81675736e3aeb089c5113aBen Murdochvoid GeolocationClientProxy::requestPermission(WebCore::Geolocation* geolocation) 89f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch{ 90f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch m_client->requestPermission(WebGeolocationPermissionRequest(geolocation)); 91f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch} 92f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 93f05b935882198ccf7d81675736e3aeb089c5113aBen Murdochvoid GeolocationClientProxy::cancelPermissionRequest(WebCore::Geolocation* geolocation) 94f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch{ 95f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch m_client->cancelPermissionRequest(WebGeolocationPermissionRequest(geolocation)); 96f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch} 97f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 98f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch} 99