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