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

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

Issue 2832983003: Revert of GeoLocation: add support for GmsCore location provider (Closed)
Patch Set: 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/LocationProviderGmsCore.java
diff --git a/device/geolocation/android/java/src/org/chromium/device/geolocation/LocationProviderGmsCore.java b/device/geolocation/android/java/src/org/chromium/device/geolocation/LocationProviderGmsCore.java
deleted file mode 100644
index aed6822628075ad7b58ae0f5a21f8b40d6e8299d..0000000000000000000000000000000000000000
--- a/device/geolocation/android/java/src/org/chromium/device/geolocation/LocationProviderGmsCore.java
+++ /dev/null
@@ -1,136 +0,0 @@
-// Copyright 2017 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package org.chromium.device.geolocation;
-
-import android.content.Context;
-import android.location.Location;
-import android.os.Bundle;
-
-import com.google.android.gms.common.ConnectionResult;
-import com.google.android.gms.common.GoogleApiAvailability;
-import com.google.android.gms.common.api.GoogleApiClient;
-import com.google.android.gms.common.api.GoogleApiClient.ConnectionCallbacks;
-import com.google.android.gms.common.api.GoogleApiClient.OnConnectionFailedListener;
-import com.google.android.gms.location.FusedLocationProviderApi;
-import com.google.android.gms.location.LocationListener;
-import com.google.android.gms.location.LocationRequest;
-import com.google.android.gms.location.LocationServices;
-
-import org.chromium.base.Log;
-import org.chromium.base.ThreadUtils;
-
-/**
- * This is a LocationProvider using Google Play Services.
- *
- * https://developers.google.com/android/reference/com/google/android/gms/location/package-summary
- */
-public class LocationProviderGmsCore implements ConnectionCallbacks, OnConnectionFailedListener,
- LocationListener,
- LocationProviderFactory.LocationProvider {
- private static final String TAG = "cr_LocationProvider";
-
- // Values for the LocationRequest's setInterval for normal and high accuracy, respectively.
- private static final long UPDATE_INTERVAL_MS = 1000;
- private static final long UPDATE_INTERVAL_FAST_MS = 500;
-
- private final GoogleApiClient mGoogleApiClient;
- private FusedLocationProviderApi mLocationProviderApi = LocationServices.FusedLocationApi;
-
- private boolean mEnablehighAccuracy;
- private LocationRequest mLocationRequest;
-
- public static boolean isGooglePlayServicesAvailable(Context context) {
- return GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(context)
- == ConnectionResult.SUCCESS;
- }
-
- LocationProviderGmsCore(Context context) {
- Log.i(TAG, "Google Play Services");
- mGoogleApiClient = new GoogleApiClient.Builder(context)
- .addApi(LocationServices.API)
- .addConnectionCallbacks(this)
- .addOnConnectionFailedListener(this)
- .build();
- assert mGoogleApiClient != null;
- }
-
- LocationProviderGmsCore(GoogleApiClient client, FusedLocationProviderApi locationApi) {
- mGoogleApiClient = client;
- mLocationProviderApi = locationApi;
- }
-
- // ConnectionCallbacks implementation
- @Override
- public void onConnected(Bundle connectionHint) {
- ThreadUtils.assertOnUiThread();
-
- mLocationRequest = LocationRequest.create();
- if (mEnablehighAccuracy) {
- mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY)
- .setInterval(UPDATE_INTERVAL_FAST_MS);
- } else {
- mLocationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY)
- .setInterval(UPDATE_INTERVAL_MS);
- }
-
- final Location location = mLocationProviderApi.getLastLocation(mGoogleApiClient);
- if (location != null) {
- LocationProviderAdapter.onNewLocationAvailable(location);
- }
-
- try {
- // Request updates on UI Thread replicating LocationProviderAndroid's behaviour.
- mLocationProviderApi.requestLocationUpdates(
- mGoogleApiClient, mLocationRequest, this, ThreadUtils.getUiThreadLooper());
- } catch (IllegalStateException e) {
- // Happens "If this method is executed in a thread that has not called Looper.prepare()"
- Log.e(TAG, "Unexpected exception " + e);
- assert false;
- }
- }
-
- @Override
- public void onConnectionSuspended(int cause) {}
-
- // OnConnectionFailedListener implementation
- @Override
- public void onConnectionFailed(ConnectionResult result) {
- LocationProviderAdapter.newErrorAvailable(
- "Failed to connect to Google Play Services: " + result.toString());
- }
-
- // LocationProviderFactory.LocationProvider implementation
- @Override
- public void start(boolean enableHighAccuracy) {
- ThreadUtils.assertOnUiThread();
- if (mGoogleApiClient.isConnected()) mGoogleApiClient.disconnect();
-
- mEnablehighAccuracy = enableHighAccuracy;
- mGoogleApiClient.connect(); // Should return via onConnected().
- }
-
- @Override
- public void stop() {
- ThreadUtils.assertOnUiThread();
- if (!mGoogleApiClient.isConnected()) return;
-
- mLocationProviderApi.removeLocationUpdates(mGoogleApiClient, this);
-
- mGoogleApiClient.disconnect();
- }
-
- @Override
- public boolean isRunning() {
- assert ThreadUtils.runningOnUiThread();
- if (mGoogleApiClient == null) return false;
- return mGoogleApiClient.isConnecting() || mGoogleApiClient.isConnected();
- }
-
- // LocationListener implementation
- @Override
- public void onLocationChanged(Location location) {
- LocationProviderAdapter.onNewLocationAvailable(location);
- }
-}

Powered by Google App Engine
This is Rietveld 408576698