diff options
author | Android (Google) Code Review <android-gerrit@google.com> | 2009-08-11 08:44:23 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2009-08-11 08:44:23 -0700 |
commit | 97ad1840093def16a278af16f603f3d308b761d7 (patch) | |
tree | 8fd24f2796bda7dd6a5a58e6c6743f7ab579222b /WebCore/platform/android/GeolocationServiceAndroid.h | |
parent | ce300b91859a4830a00c388a600cddef96ed48e1 (diff) | |
parent | 7ada562b9df9b6ff65c5b59a59111b57d861ea72 (diff) | |
download | external_webkit-97ad1840093def16a278af16f603f3d308b761d7.zip external_webkit-97ad1840093def16a278af16f603f3d308b761d7.tar.gz external_webkit-97ad1840093def16a278af16f603f3d308b761d7.tar.bz2 |
Merge change 20596
* changes:
Implements GeolocationService on Android.
Diffstat (limited to 'WebCore/platform/android/GeolocationServiceAndroid.h')
-rw-r--r-- | WebCore/platform/android/GeolocationServiceAndroid.h | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/WebCore/platform/android/GeolocationServiceAndroid.h b/WebCore/platform/android/GeolocationServiceAndroid.h new file mode 100644 index 0000000..90a8864 --- /dev/null +++ b/WebCore/platform/android/GeolocationServiceAndroid.h @@ -0,0 +1,73 @@ +/* + * Copyright (C) 2009 Apple Inc. 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. ``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 + * 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 GeolocationServiceAndroid_h +#define GeolocationServiceAndroid_h + +#include "GeolocationService.h" +#include "Timer.h" +#include <wtf/OwnPtr.h> +#include <wtf/PassRefPtr.h> +#include <wtf/RefPtr.h> + +namespace WebCore { + + // The GeolocationServiceBridge is the bridge to the Java implementation of + // the Geolocation service. It is an implementation detail of + // GeolocationServiceAndroid. + class GeolocationServiceBridge; + + class GeolocationServiceAndroid : public GeolocationService { + public: + static GeolocationService* create(GeolocationServiceClient*); + + GeolocationServiceAndroid(GeolocationServiceClient*); + virtual ~GeolocationServiceAndroid() {}; + + virtual bool startUpdating(PositionOptions*); + virtual void stopUpdating(); + + virtual Geoposition* lastPosition() const { return m_lastPosition.get(); } + virtual PositionError* lastError() const { return m_lastError.get(); } + + // Android-specific + void newPositionAvailable(PassRefPtr<Geoposition>); + void newErrorAvailable(PassRefPtr<PositionError>); + void timerFired(Timer<GeolocationServiceAndroid>* timer); + + private: + static bool isPositionMovement(Geoposition* position1, Geoposition* position2); + static bool isPositionMoreAccurate(Geoposition* position1, Geoposition* position2); + static bool isPositionMoreTimely(Geoposition* position1, Geoposition* position2); + + Timer<GeolocationServiceAndroid> m_timer; + RefPtr<Geoposition> m_lastPosition; + RefPtr<PositionError> m_lastError; + OwnPtr<GeolocationServiceBridge> m_javaBridge; + }; + +} // namespace WebCore + +#endif // GeolocationServiceAndroid_h |