diff --git a/dom/system/gonk/GonkGPSGeolocationProvider.cpp b/dom/system/gonk/GonkGPSGeolocationProvider.cpp index c215623fc54b..1383e35d28d2 100644 --- a/dom/system/gonk/GonkGPSGeolocationProvider.cpp +++ b/dom/system/gonk/GonkGPSGeolocationProvider.cpp @@ -18,19 +18,21 @@ #include #include "GonkGPSGeolocationProvider.h" -#include "SystemWorkerManager.h" #include "mozilla/Preferences.h" #include "nsGeoPosition.h" #include "nsIInterfaceRequestorUtils.h" #include "nsINetworkManager.h" -#include "nsIRadioInterfaceLayer.h" -#include "nsIDOMIccInfo.h" -#include "nsIDOMMobileConnection.h" #include "nsJSUtils.h" #include "nsServiceManagerUtils.h" #include "nsThreadUtils.h" #include "nsContentUtils.h" +#ifdef MOZ_B2G_RIL +#include "nsIDOMIccInfo.h" +#include "nsIDOMMobileConnection.h" +#include "nsIRadioInterfaceLayer.h" +#endif + #ifdef AGPS_TYPE_INVALID #define AGPS_HAVE_DUAL_APN #endif @@ -44,10 +46,15 @@ static const int kDefaultPeriod = 1000; // ms // While most methods of GonkGPSGeolocationProvider should only be // called from main thread, we deliberately put the Init and ShutdownGPS // methods off main thread to avoid blocking. +#ifdef MOZ_B2G_RIL NS_IMPL_ISUPPORTS3(GonkGPSGeolocationProvider, nsIGeolocationProvider, nsIRILDataCallback, nsISettingsServiceCallback) +#else +NS_IMPL_ISUPPORTS1(GonkGPSGeolocationProvider, + nsIGeolocationProvider) +#endif /* static */ GonkGPSGeolocationProvider* GonkGPSGeolocationProvider::sSingleton = nullptr; GpsCallbacks GonkGPSGeolocationProvider::mCallbacks = { @@ -65,6 +72,7 @@ GpsCallbacks GonkGPSGeolocationProvider::mCallbacks = { #endif }; +#ifdef MOZ_B2G_RIL AGpsCallbacks GonkGPSGeolocationProvider::mAGPSCallbacks = { AGPSStatusCallback, @@ -77,6 +85,7 @@ GonkGPSGeolocationProvider::mAGPSRILCallbacks = { AGPSRILRefLocCallback, CreateThreadCallback, }; +#endif // MOZ_B2G_RIL void GonkGPSGeolocationProvider::LocationCallback(GpsLocation* location) @@ -146,8 +155,10 @@ GonkGPSGeolocationProvider::SetCapabilitiesCallback(uint32_t capabilities) GonkGPSGeolocationProvider::GetSingleton(); provider->mSupportsScheduling = mCapabilities & GPS_CAPABILITY_SCHEDULING; +#ifdef MOZ_B2G_RIL provider->mSupportsMSB = mCapabilities & GPS_CAPABILITY_MSB; provider->mSupportsMSA = mCapabilities & GPS_CAPABILITY_MSA; +#endif provider->mSupportsSingleShot = mCapabilities & GPS_CAPABILITY_SINGLE_SHOT; #ifdef GPS_CAPABILITY_ON_DEMAND_TIME provider->mSupportsTimeInjection = mCapabilities & GPS_CAPABILITY_ON_DEMAND_TIME; @@ -196,6 +207,7 @@ GonkGPSGeolocationProvider::RequestUtcTimeCallback() { } +#ifdef MOZ_B2G_RIL void GonkGPSGeolocationProvider::AGPSStatusCallback(AGpsStatus* status) { @@ -267,12 +279,15 @@ GonkGPSGeolocationProvider::AGPSRILRefLocCallback(uint32_t flags) NS_DispatchToMainThread(new RequestRefLocEvent()); } } +#endif // MOZ_B2G_RIL GonkGPSGeolocationProvider::GonkGPSGeolocationProvider() : mStarted(false) , mSupportsScheduling(false) +#ifdef MOZ_B2G_RIL , mSupportsMSB(false) , mSupportsMSA(false) +#endif , mSupportsSingleShot(false) , mSupportsTimeInjection(false) , mGpsInterface(nullptr) @@ -320,6 +335,7 @@ GonkGPSGeolocationProvider::GetGPSInterface() return result; } +#ifdef MOZ_B2G_RIL int32_t GonkGPSGeolocationProvider::GetDataConnectionState() { @@ -507,6 +523,7 @@ GonkGPSGeolocationProvider::SetReferenceLocation() } } } +#endif // MOZ_B2G_RIL void GonkGPSGeolocationProvider::Init() @@ -523,6 +540,7 @@ GonkGPSGeolocationProvider::Init() return; } +#ifdef MOZ_B2G_RIL mAGpsInterface = static_cast(mGpsInterface->get_extension(AGPS_INTERFACE)); if (mAGpsInterface) { @@ -534,6 +552,7 @@ GonkGPSGeolocationProvider::Init() if (mAGpsRilInterface) { mAGpsRilInterface->init(&mAGPSRILCallbacks); } +#endif NS_DispatchToMainThread(NS_NewRunnableMethod(this, &GonkGPSGeolocationProvider::StartGPS)); } @@ -546,19 +565,23 @@ GonkGPSGeolocationProvider::StartGPS() int32_t update = Preferences::GetInt("geo.default.update", kDefaultPeriod); +#ifdef MOZ_B2G_RIL if (mSupportsMSA || mSupportsMSB) { SetupAGPS(); } +#endif int positionMode = GPS_POSITION_MODE_STANDALONE; bool singleShot = false; +#ifdef MOZ_B2G_RIL // XXX: If we know this is a single shot request, use MSA can be faster. if (singleShot && mSupportsMSA) { positionMode = GPS_POSITION_MODE_MS_ASSISTED; } else if (mSupportsMSB) { positionMode = GPS_POSITION_MODE_MS_BASED; } +#endif if (!mSupportsScheduling) { update = kDefaultPeriod; } @@ -574,6 +597,7 @@ GonkGPSGeolocationProvider::StartGPS() mGpsInterface->start(); } +#ifdef MOZ_B2G_RIL void GonkGPSGeolocationProvider::SetupAGPS() { @@ -599,9 +623,8 @@ GonkGPSGeolocationProvider::SetupAGPS() mRadioInterface->RegisterDataCallCallback(this); } } - - return; } +#endif // MOZ_B2G_RIL NS_IMETHODIMP GonkGPSGeolocationProvider::Startup() @@ -643,9 +666,11 @@ GonkGPSGeolocationProvider::Shutdown() } mStarted = false; +#ifdef MOZ_B2G_RIL if (mRadioInterface) { mRadioInterface->UnregisterDataCallCallback(this); } +#endif mInitThread->Dispatch(NS_NewRunnableMethod(this, &GonkGPSGeolocationProvider::ShutdownGPS), NS_DISPATCH_NORMAL); @@ -670,6 +695,7 @@ GonkGPSGeolocationProvider::SetHighAccuracy(bool) return NS_OK; } +#ifdef MOZ_B2G_RIL /** nsIRILDataCallback interface **/ NS_IMETHODIMP @@ -721,3 +747,4 @@ GonkGPSGeolocationProvider::HandleError(const nsAString& aErrorMessage) { return NS_OK; } +#endif // MOZ_B2G_RIL diff --git a/dom/system/gonk/GonkGPSGeolocationProvider.h b/dom/system/gonk/GonkGPSGeolocationProvider.h index 66f27da8cea4..cc59d8a064e0 100644 --- a/dom/system/gonk/GonkGPSGeolocationProvider.h +++ b/dom/system/gonk/GonkGPSGeolocationProvider.h @@ -20,9 +20,10 @@ #include // for GpsInterface #include "nsCOMPtr.h" #include "nsIGeolocationProvider.h" +#ifdef MOZ_B2G_RIL #include "nsIRadioInterfaceLayer.h" -#include "nsString.h" #include "nsISettingsService.h" +#endif class nsIThread; @@ -33,14 +34,18 @@ class nsIThread; "@mozilla.org/gonk-gps-geolocation-provider;1" class GonkGPSGeolocationProvider : public nsIGeolocationProvider +#ifdef MOZ_B2G_RIL , public nsIRILDataCallback , public nsISettingsServiceCallback +#endif { public: NS_DECL_THREADSAFE_ISUPPORTS NS_DECL_NSIGEOLOCATIONPROVIDER +#ifdef MOZ_B2G_RIL NS_DECL_NSIRILDATACALLBACK NS_DECL_NSISETTINGSSERVICECALLBACK +#endif static already_AddRefed GetSingleton(); @@ -61,25 +66,31 @@ private: static void ReleaseWakelockCallback(); static pthread_t CreateThreadCallback(const char* name, void (*start)(void*), void* arg); static void RequestUtcTimeCallback(); +#ifdef MOZ_B2G_RIL static void AGPSStatusCallback(AGpsStatus* status); static void AGPSRILSetIDCallback(uint32_t flags); static void AGPSRILRefLocCallback(uint32_t flags); +#endif static GpsCallbacks mCallbacks; +#ifdef MOZ_B2G_RIL static AGpsCallbacks mAGPSCallbacks; static AGpsRilCallbacks mAGPSRILCallbacks; +#endif - int32_t GetDataConnectionState(); - void SetAGpsDataConn(nsAString& aApn); - void RequestSettingValue(char* aKey); void Init(); - void SetupAGPS(); void StartGPS(); void ShutdownGPS(); +#ifdef MOZ_B2G_RIL + void SetupAGPS(); + int32_t GetDataConnectionState(); + void SetAGpsDataConn(nsAString& aApn); void RequestDataConnection(); void ReleaseDataConnection(); + void RequestSettingValue(char* aKey); void RequestSetID(uint32_t flags); void SetReferenceLocation(); +#endif const GpsInterface* GetGPSInterface(); @@ -88,17 +99,21 @@ private: bool mStarted; bool mSupportsScheduling; +#ifdef MOZ_B2G_RIL bool mSupportsMSB; bool mSupportsMSA; +#endif bool mSupportsSingleShot; bool mSupportsTimeInjection; const GpsInterface* mGpsInterface; +#ifdef MOZ_B2G_RIL const AGpsInterface* mAGpsInterface; const AGpsRilInterface* mAGpsRilInterface; + nsCOMPtr mRadioInterface; +#endif nsCOMPtr mLocationCallback; nsCOMPtr mInitThread; - nsCOMPtr mRadioInterface; }; #endif /* GonkGPSGeolocationProvider_h */