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

Side by Side Diff: device/geolocation/android/java/src/org/chromium/device/geolocation/LocationProviderAndroid.java

Issue 2847523002: Android: Remove GetApplicationContext part 4 (Closed)
Patch Set: Rebase and fix build Created 3 years, 7 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 unified diff | Download patch
OLDNEW
1 // Copyright 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.device.geolocation; 5 package org.chromium.device.geolocation;
6 6
7 import android.content.Context; 7 import android.content.Context;
8 import android.location.Criteria; 8 import android.location.Criteria;
9 import android.location.Location; 9 import android.location.Location;
10 import android.location.LocationListener; 10 import android.location.LocationListener;
11 import android.location.LocationManager; 11 import android.location.LocationManager;
12 import android.os.Bundle; 12 import android.os.Bundle;
13 13
14 import org.chromium.base.ContextUtils;
14 import org.chromium.base.Log; 15 import org.chromium.base.Log;
15 import org.chromium.base.ThreadUtils; 16 import org.chromium.base.ThreadUtils;
16 import org.chromium.base.VisibleForTesting; 17 import org.chromium.base.VisibleForTesting;
17 18
18 import java.util.List; 19 import java.util.List;
19 20
20 /** 21 /**
21 * This is a LocationProvider using Android APIs [1]. It is a separate class for clarity 22 * This is a LocationProvider using Android APIs [1]. It is a separate class for clarity
22 * so that it can manage all processing completely on the UI thread. The contain er class 23 * so that it can manage all processing completely on the UI thread. The contain er class
23 * ensures that the start/stop calls into this class are done on the UI thread. 24 * ensures that the start/stop calls into this class are done on the UI thread.
24 * 25 *
25 * [1] https://developer.android.com/reference/android/location/package-summary. html 26 * [1] https://developer.android.com/reference/android/location/package-summary. html
26 */ 27 */
27 public class LocationProviderAndroid 28 public class LocationProviderAndroid
28 implements LocationListener, LocationProviderFactory.LocationProvider { 29 implements LocationListener, LocationProviderFactory.LocationProvider {
29 private static final String TAG = "cr_LocationProvider"; 30 private static final String TAG = "cr_LocationProvider";
30 31
31 private Context mContext;
32 private LocationManager mLocationManager; 32 private LocationManager mLocationManager;
33 private boolean mIsRunning; 33 private boolean mIsRunning;
34 34
35 LocationProviderAndroid(Context context) { 35 LocationProviderAndroid() {}
36 mContext = context;
37 }
38 36
39 @Override 37 @Override
40 public void start(boolean enableHighAccuracy) { 38 public void start(boolean enableHighAccuracy) {
41 ThreadUtils.assertOnUiThread(); 39 ThreadUtils.assertOnUiThread();
42 unregisterFromLocationUpdates(); 40 unregisterFromLocationUpdates();
43 registerForLocationUpdates(enableHighAccuracy); 41 registerForLocationUpdates(enableHighAccuracy);
44 } 42 }
45 43
46 @Override 44 @Override
47 public void stop() { 45 public void stop() {
(...skipping 26 matching lines...) Expand all
74 @Override 72 @Override
75 public void onProviderDisabled(String provider) {} 73 public void onProviderDisabled(String provider) {}
76 74
77 @VisibleForTesting 75 @VisibleForTesting
78 public void setLocationManagerForTesting(LocationManager manager) { 76 public void setLocationManagerForTesting(LocationManager manager) {
79 mLocationManager = manager; 77 mLocationManager = manager;
80 } 78 }
81 79
82 private void createLocationManagerIfNeeded() { 80 private void createLocationManagerIfNeeded() {
83 if (mLocationManager != null) return; 81 if (mLocationManager != null) return;
84 mLocationManager = (LocationManager) mContext.getSystemService(Context.L OCATION_SERVICE); 82 mLocationManager = (LocationManager) ContextUtils.getApplicationContext( ).getSystemService(
83 Context.LOCATION_SERVICE);
85 if (mLocationManager == null) { 84 if (mLocationManager == null) {
86 Log.e(TAG, "Could not get location manager."); 85 Log.e(TAG, "Could not get location manager.");
87 } 86 }
88 } 87 }
89 88
90 /** 89 /**
91 * Registers this object with the location service. 90 * Registers this object with the location service.
92 */ 91 */
93 private void registerForLocationUpdates(boolean enableHighAccuracy) { 92 private void registerForLocationUpdates(boolean enableHighAccuracy) {
94 createLocationManagerIfNeeded(); 93 createLocationManagerIfNeeded();
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
154 /* 153 /*
155 * Checks if the passive location provider is the only provider available 154 * Checks if the passive location provider is the only provider available
156 * in the system. 155 * in the system.
157 */ 156 */
158 private boolean isOnlyPassiveLocationProviderEnabled() { 157 private boolean isOnlyPassiveLocationProviderEnabled() {
159 final List<String> providers = mLocationManager.getProviders(true); 158 final List<String> providers = mLocationManager.getProviders(true);
160 return providers != null && providers.size() == 1 159 return providers != null && providers.size() == 1
161 && providers.get(0).equals(LocationManager.PASSIVE_PROVIDER); 160 && providers.get(0).equals(LocationManager.PASSIVE_PROVIDER);
162 } 161 }
163 } 162 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698