15c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block/* 25c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block * Copyright 2012, The Android Open Source Project 35c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block * 45c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block * Redistribution and use in source and binary forms, with or without 55c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block * modification, are permitted provided that the following conditions 65c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block * are met: 75c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block * * Redistributions of source code must retain the above copyright 85c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block * notice, this list of conditions and the following disclaimer. 95c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block * * Redistributions in binary form must reproduce the above copyright 105c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block * notice, this list of conditions and the following disclaimer in the 115c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block * documentation and/or other materials provided with the distribution. 125c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block * 135c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY 145c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 155c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 165c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 175c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 185c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 195c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 205c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 215c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 225c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 235c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 245c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block */ 255c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block 265c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block#include "config.h" 275c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block#include "GeolocationClientAndroid.h" 285c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block 295c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block#include "WebViewCore.h" 305c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block 315c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block#include <Frame.h> 325c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block#include <Page.h> 335c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block 345c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Blockusing WebCore::Geolocation; 355c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Blockusing WebCore::GeolocationClient; 365c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Blockusing WebCore::GeolocationController; 375c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Blockusing WebCore::GeolocationPosition; 385c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block 395c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Blocknamespace android { 405c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block 415c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve BlockGeolocationClientAndroid::GeolocationClientAndroid() : m_webViewCore(0) 425c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block{ 435c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block} 445c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block 455c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve BlockGeolocationClientAndroid::~GeolocationClientAndroid() 465c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block{ 475c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block} 485c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block 495c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Blockvoid GeolocationClientAndroid::geolocationDestroyed() 505c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block{ 515c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block delete this; 525c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block} 535c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block 545c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Blockvoid GeolocationClientAndroid::startUpdating() 555c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block{ 565c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block client()->startUpdating(); 575c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block} 585c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block 595c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Blockvoid GeolocationClientAndroid::stopUpdating() 605c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block{ 615c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block client()->stopUpdating(); 625c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block} 635c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block 645c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Blockvoid GeolocationClientAndroid::setEnableHighAccuracy(bool enableHighAccuracy) 655c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block{ 665c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block client()->setEnableHighAccuracy(enableHighAccuracy); 675c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block} 685c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block 695c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve BlockGeolocationPosition* GeolocationClientAndroid::lastPosition() 705c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block{ 715c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block return client()->lastPosition(); 725c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block} 735c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block 745c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Blockvoid GeolocationClientAndroid::requestPermission(Geolocation* geolocation) 755c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block{ 765c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block client()->requestPermission(geolocation); 775c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block} 785c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block 795c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Blockvoid GeolocationClientAndroid::cancelPermissionRequest(Geolocation* geolocation) 805c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block{ 815c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block client()->cancelPermissionRequest(geolocation); 825c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block} 835c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block 845c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Blockvoid GeolocationClientAndroid::setWebViewCore(WebViewCore* webViewCore) 855c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block{ 865c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block ASSERT(!m_webViewCore); 875c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block m_webViewCore = webViewCore; 885c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block ASSERT(m_webViewCore); 895c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block} 905c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block 915c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve BlockGeolocationClient* GeolocationClientAndroid::client() const 925c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block{ 935c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block return m_webViewCore->geolocationManager()->client(); 945c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block} 955c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block 965c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block} // namespace android 97