Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(761)

Unified Diff: device/geolocation/android/java/src/org/chromium/device/geolocation/LocationProviderFactory.java

Issue 2809813002: GeoLocation: add support for GmsCore location provider (Closed)
Patch Set: reillyg@ nit Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: device/geolocation/android/java/src/org/chromium/device/geolocation/LocationProviderFactory.java
diff --git a/device/geolocation/android/java/src/org/chromium/device/geolocation/LocationProviderFactory.java b/device/geolocation/android/java/src/org/chromium/device/geolocation/LocationProviderFactory.java
index 3ffc36af9dbcdfa4e6d41a423772a568009bad44..956dd679297e04f4ae58e084d74d80b76c608930 100644
--- a/device/geolocation/android/java/src/org/chromium/device/geolocation/LocationProviderFactory.java
+++ b/device/geolocation/android/java/src/org/chromium/device/geolocation/LocationProviderFactory.java
@@ -9,8 +9,7 @@ import android.content.Context;
import org.chromium.base.VisibleForTesting;
/**
- * Factory to create a LocationProvider to allow us to inject
- * a mock for tests.
+ * Factory to create a LocationProvider to allow us to inject a mock for tests.
*/
public class LocationProviderFactory {
private static LocationProviderFactory.LocationProvider sProviderImpl;
@@ -20,8 +19,9 @@ public class LocationProviderFactory {
*/
public interface LocationProvider {
/**
- * Start listening for location updates.
- * @param enableHighAccuracy Whether or not to enable high accuracy location providers.
+ * Start listening for location updates. Calling several times before stop() is interpreted
+ * as restart.
+ * @param enableHighAccuracy Whether or not to enable high accuracy location.
*/
public void start(boolean enableHighAccuracy);
@@ -40,12 +40,15 @@ public class LocationProviderFactory {
@VisibleForTesting
public static void setLocationProviderImpl(LocationProviderFactory.LocationProvider provider) {
- assert sProviderImpl == null;
sProviderImpl = provider;
}
public static LocationProvider create(Context context) {
- if (sProviderImpl == null) {
+ if (sProviderImpl != null) return sProviderImpl;
+
+ if (LocationProviderGmsCore.isGooglePlayServicesAvailable(context)) {
+ sProviderImpl = new LocationProviderGmsCore(context);
sgurun-gerrit only 2017/04/26 22:22:54 instead of doing this, can you set sProviderImpl f
+ } else {
sProviderImpl = new LocationProviderAndroid(context);
}
return sProviderImpl;

Powered by Google App Engine
This is Rietveld 408576698