1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 2 /* vim: set ts=8 sts=2 et sw=2 tw=80: */ 3 /* This Source Code Form is subject to the terms of the Mozilla Public 4 * License, v. 2.0. If a copy of the MPL was not distributed with this 5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 6 7 #include "Geolocation.h" 8 #include "GeolocationPosition.h" 9 #include "AndroidLocationProvider.h" 10 #include "mozilla/java/GeckoAppShellWrappers.h" 11 12 using namespace mozilla; 13 14 extern nsIGeolocationUpdate* gLocationCallback; 15 NS_IMPL_ISUPPORTS(AndroidLocationProvider,nsIGeolocationProvider)16NS_IMPL_ISUPPORTS(AndroidLocationProvider, nsIGeolocationProvider) 17 18 AndroidLocationProvider::AndroidLocationProvider() {} 19 ~AndroidLocationProvider()20AndroidLocationProvider::~AndroidLocationProvider() { 21 NS_IF_RELEASE(gLocationCallback); 22 } 23 24 NS_IMETHODIMP Startup()25AndroidLocationProvider::Startup() { 26 if (java::GeckoAppShell::EnableLocation(true)) { 27 return NS_OK; 28 } 29 return NS_ERROR_FAILURE; 30 } 31 32 NS_IMETHODIMP Watch(nsIGeolocationUpdate * aCallback)33AndroidLocationProvider::Watch(nsIGeolocationUpdate* aCallback) { 34 NS_IF_RELEASE(gLocationCallback); 35 gLocationCallback = aCallback; 36 NS_IF_ADDREF(gLocationCallback); 37 return NS_OK; 38 } 39 40 NS_IMETHODIMP Shutdown()41AndroidLocationProvider::Shutdown() { 42 if (java::GeckoAppShell::EnableLocation(false)) { 43 return NS_OK; 44 } 45 return NS_ERROR_FAILURE; 46 } 47 48 NS_IMETHODIMP SetHighAccuracy(bool enable)49AndroidLocationProvider::SetHighAccuracy(bool enable) { 50 java::GeckoAppShell::EnableLocationHighAccuracy(enable); 51 return NS_OK; 52 } 53