diff options
17 files changed, 174 insertions, 161 deletions
diff --git a/api/current.txt b/api/current.txt index 5bd9d2b59608..87664994d2cf 100644 --- a/api/current.txt +++ b/api/current.txt @@ -22639,7 +22639,7 @@ package android.location { method public abstract void onLocationChanged(android.location.Location); method public abstract void onProviderDisabled(java.lang.String); method public abstract void onProviderEnabled(java.lang.String); - method public abstract void onStatusChanged(java.lang.String, int, android.os.Bundle); + method public abstract deprecated void onStatusChanged(java.lang.String, int, android.os.Bundle); } public class LocationManager { @@ -22651,7 +22651,7 @@ package android.location { method public void addTestProvider(java.lang.String, boolean, boolean, boolean, boolean, boolean, boolean, boolean, int, int); method public void clearTestProviderEnabled(java.lang.String); method public void clearTestProviderLocation(java.lang.String); - method public void clearTestProviderStatus(java.lang.String); + method public deprecated void clearTestProviderStatus(java.lang.String); method public java.util.List<java.lang.String> getAllProviders(); method public java.lang.String getBestProvider(android.location.Criteria, boolean); method public java.lang.String getGnssHardwareModelName(); @@ -22688,7 +22688,7 @@ package android.location { method public boolean sendExtraCommand(java.lang.String, java.lang.String, android.os.Bundle); method public void setTestProviderEnabled(java.lang.String, boolean); method public void setTestProviderLocation(java.lang.String, android.location.Location); - method public void setTestProviderStatus(java.lang.String, int, android.os.Bundle, long); + method public deprecated void setTestProviderStatus(java.lang.String, int, android.os.Bundle, long); method public void unregisterGnssMeasurementsCallback(android.location.GnssMeasurementsEvent.Callback); method public void unregisterGnssNavigationMessageCallback(android.location.GnssNavigationMessage.Callback); method public void unregisterGnssStatusCallback(android.location.GnssStatus.Callback); @@ -22696,7 +22696,7 @@ package android.location { field public static final java.lang.String KEY_LOCATION_CHANGED = "location"; field public static final java.lang.String KEY_PROVIDER_ENABLED = "providerEnabled"; field public static final java.lang.String KEY_PROXIMITY_ENTERING = "entering"; - field public static final java.lang.String KEY_STATUS_CHANGED = "status"; + field public static final deprecated java.lang.String KEY_STATUS_CHANGED = "status"; field public static final java.lang.String MODE_CHANGED_ACTION = "android.location.MODE_CHANGED"; field public static final java.lang.String NETWORK_PROVIDER = "network"; field public static final java.lang.String PASSIVE_PROVIDER = "passive"; @@ -22715,9 +22715,9 @@ package android.location { method public boolean supportsAltitude(); method public boolean supportsBearing(); method public boolean supportsSpeed(); - field public static final int AVAILABLE = 2; // 0x2 - field public static final int OUT_OF_SERVICE = 0; // 0x0 - field public static final int TEMPORARILY_UNAVAILABLE = 1; // 0x1 + field public static final deprecated int AVAILABLE = 2; // 0x2 + field public static final deprecated int OUT_OF_SERVICE = 0; // 0x0 + field public static final deprecated int TEMPORARILY_UNAVAILABLE = 1; // 0x1 } public abstract interface OnNmeaMessageListener { diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index d579f0ff3681..9f3c37a14583 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -9339,6 +9339,13 @@ public final class Settings { "location_background_throttle_package_whitelist"; /** + * Whether to disable location status callbacks in preparation for deprecation. + * @hide + */ + public static final String LOCATION_DISABLE_STATUS_CALLBACKS = + "location_disable_status_callbacks"; + + /** * Maximum staleness allowed for last location when returned to clients with only foreground * location permissions. * @hide diff --git a/core/tests/coretests/src/android/provider/SettingsBackupTest.java b/core/tests/coretests/src/android/provider/SettingsBackupTest.java index 4802ebea2511..a2ce8b9d7c63 100644 --- a/core/tests/coretests/src/android/provider/SettingsBackupTest.java +++ b/core/tests/coretests/src/android/provider/SettingsBackupTest.java @@ -283,6 +283,7 @@ public class SettingsBackupTest { Settings.Global.LOCATION_BACKGROUND_THROTTLE_INTERVAL_MS, Settings.Global.LOCATION_BACKGROUND_THROTTLE_PROXIMITY_ALERT_INTERVAL_MS, Settings.Global.LOCATION_BACKGROUND_THROTTLE_PACKAGE_WHITELIST, + Settings.Global.LOCATION_DISABLE_STATUS_CALLBACKS, Settings.Global.LOCATION_LAST_LOCATION_MAX_AGE_MILLIS, Settings.Global.LOCATION_GLOBAL_KILL_SWITCH, Settings.Global.LOCATION_SETTINGS_LINK_TO_PERMISSIONS_ENABLED, diff --git a/location/java/android/location/ILocationListener.aidl b/location/java/android/location/ILocationListener.aidl index 7627cf6920c1..180183e77668 100644 --- a/location/java/android/location/ILocationListener.aidl +++ b/location/java/android/location/ILocationListener.aidl @@ -26,7 +26,9 @@ import android.os.Bundle; oneway interface ILocationListener { void onLocationChanged(in Location location); - void onStatusChanged(String provider, int status, in Bundle extras); void onProviderEnabled(String provider); void onProviderDisabled(String provider); + + // --- deprecated --- + void onStatusChanged(String provider, int status, in Bundle extras); } diff --git a/location/java/android/location/ILocationManager.aidl b/location/java/android/location/ILocationManager.aidl index b5d835a90c7b..ff2fad443bcb 100644 --- a/location/java/android/location/ILocationManager.aidl +++ b/location/java/android/location/ILocationManager.aidl @@ -99,9 +99,10 @@ interface ILocationManager void clearTestProviderLocation(String provider, String opPackageName); void setTestProviderEnabled(String provider, boolean enabled, String opPackageName); void clearTestProviderEnabled(String provider, String opPackageName); + + // --- deprecated --- void setTestProviderStatus(String provider, int status, in Bundle extras, long updateTime, String opPackageName); - void clearTestProviderStatus(String provider, String opPackageName); boolean sendExtraCommand(String provider, String command, inout Bundle extras); diff --git a/location/java/android/location/LocationListener.java b/location/java/android/location/LocationListener.java index 88904c824912..aa9dddc03515 100644 --- a/location/java/android/location/LocationListener.java +++ b/location/java/android/location/LocationListener.java @@ -44,29 +44,12 @@ public interface LocationListener { void onLocationChanged(Location location); /** - * Called when the provider status changes. This method is called when - * a provider is unable to fetch a location or if the provider has recently - * become available after a period of unavailability. + * This callback will never be invoked and providers can be considers as always in the + * {@link LocationProvider#AVAILABLE} state. * - * @param provider the name of the location provider associated with this - * update. - * @param status {@link LocationProvider#OUT_OF_SERVICE} if the - * provider is out of service, and this is not expected to change in the - * near future; {@link LocationProvider#TEMPORARILY_UNAVAILABLE} if - * the provider is temporarily unavailable but is expected to be available - * shortly; and {@link LocationProvider#AVAILABLE} if the - * provider is currently available. - * @param extras an optional Bundle which will contain provider specific - * status variables. - * - * <p> A number of common key/value pairs for the extras Bundle are listed - * below. Providers that use any of the keys on this list must - * provide the corresponding value as described below. - * - * <ul> - * <li> satellites - the number of satellites used to derive the fix - * </ul> + * @deprecated This callback will never be invoked. */ + @Deprecated void onStatusChanged(String provider, int status, Bundle extras); /** diff --git a/location/java/android/location/LocationManager.java b/location/java/android/location/LocationManager.java index 02680ab86062..b66ceef29ceb 100644 --- a/location/java/android/location/LocationManager.java +++ b/location/java/android/location/LocationManager.java @@ -146,9 +146,14 @@ public class LocationManager { public static final String KEY_PROXIMITY_ENTERING = "entering"; /** + * This key is no longer in use. + * * Key used for a Bundle extra holding an Integer status value * when a status change is broadcast using a PendingIntent. + * + * @deprecated Status changes are deprecated and no longer broadcast. */ + @Deprecated public static final String KEY_STATUS_CHANGED = "status"; /** @@ -1581,8 +1586,7 @@ public class LocationManager { } /** - * Sets mock status values for the given provider. These values will be used in place - * of any actual values from the provider. + * This method has no effect as provider status has been deprecated and is no longer supported. * * @param provider the provider name * @param status the mock status @@ -1593,7 +1597,10 @@ public class LocationManager { * mock location app op} is not set to {@link android.app.AppOpsManager#MODE_ALLOWED * allowed} for your app. * @throws IllegalArgumentException if no provider with the given name exists + * + * @deprecated This method has no effect. */ + @Deprecated public void setTestProviderStatus(String provider, int status, Bundle extras, long updateTime) { try { mService.setTestProviderStatus(provider, status, extras, updateTime, @@ -1604,21 +1611,19 @@ public class LocationManager { } /** - * Removes any mock status values associated with the given provider. + * This method has no effect as provider status has been deprecated and is no longer supported. * * @param provider the provider name - * * @throws SecurityException if {@link android.app.AppOpsManager#OPSTR_MOCK_LOCATION * mock location app op} is not set to {@link android.app.AppOpsManager#MODE_ALLOWED * allowed} for your app. * @throws IllegalArgumentException if no provider with the given name exists + * + * @deprecated This method has no effect. */ + @Deprecated public void clearTestProviderStatus(String provider) { - try { - mService.clearTestProviderStatus(provider, mContext.getOpPackageName()); - } catch (RemoteException e) { - throw e.rethrowFromSystemServer(); - } + setTestProviderStatus(provider, LocationProvider.AVAILABLE, null, 0L); } // --- GPS-specific support --- diff --git a/location/java/android/location/LocationProvider.java b/location/java/android/location/LocationProvider.java index c4fd0975a3bc..b69a9d79e5b8 100644 --- a/location/java/android/location/LocationProvider.java +++ b/location/java/android/location/LocationProvider.java @@ -34,8 +34,23 @@ import com.android.internal.location.ProviderProperties; * user-specified criteria. */ public class LocationProvider { + + /** + * @deprecated Location provider statuses are no longer supported. + */ + @Deprecated public static final int OUT_OF_SERVICE = 0; + + /** + * @deprecated Location provider statuses are no longer supported. + */ + @Deprecated public static final int TEMPORARILY_UNAVAILABLE = 1; + + /** + * @deprecated Location provider statuses are no longer supported. + */ + @Deprecated public static final int AVAILABLE = 2; /** diff --git a/location/lib/api/current.txt b/location/lib/api/current.txt index 1e69f162fb07..d19559e8cccd 100644 --- a/location/lib/api/current.txt +++ b/location/lib/api/current.txt @@ -11,8 +11,8 @@ package com.android.location.provider { method public abstract void onDisable(); method public void onDump(java.io.FileDescriptor, java.io.PrintWriter, java.lang.String[]); method public abstract void onEnable(); - method public abstract int onGetStatus(android.os.Bundle); - method public abstract long onGetStatusUpdateTime(); + method public deprecated int onGetStatus(android.os.Bundle); + method public deprecated long onGetStatusUpdateTime(); method public boolean onSendExtraCommand(java.lang.String, android.os.Bundle); method public abstract void onSetRequest(com.android.location.provider.ProviderRequestUnbundled, android.os.WorkSource); method public final void reportLocation(android.location.Location); diff --git a/location/lib/java/com/android/location/provider/LocationProviderBase.java b/location/lib/java/com/android/location/provider/LocationProviderBase.java index 30655f5bbf10..d45a4bac8f96 100644 --- a/location/lib/java/com/android/location/provider/LocationProviderBase.java +++ b/location/lib/java/com/android/location/provider/LocationProviderBase.java @@ -16,14 +16,11 @@ package com.android.location.provider; -import java.io.FileDescriptor; -import java.io.FileOutputStream; -import java.io.PrintWriter; - import android.content.Context; import android.location.ILocationManager; import android.location.Location; import android.location.LocationManager; +import android.location.LocationProvider; import android.os.Bundle; import android.os.IBinder; import android.os.RemoteException; @@ -36,6 +33,10 @@ import com.android.internal.location.ProviderProperties; import com.android.internal.location.ProviderRequest; import com.android.internal.util.FastPrintWriter; +import java.io.FileDescriptor; +import java.io.FileOutputStream; +import java.io.PrintWriter; + /** * Base class for location providers implemented as unbundled services. * @@ -173,6 +174,8 @@ public abstract class LocationProviderBase { } /** + * This method will no longer be invoked. + * * Returns a information on the status of this provider. * <p>{@link android.location.LocationProvider#OUT_OF_SERVICE} is returned if the provider is * out of service, and this is not expected to change in the near @@ -183,10 +186,17 @@ public abstract class LocationProviderBase { * * <p>If extras is non-null, additional status information may be * added to it in the form of provider-specific key/value pairs. + * + * @deprecated This method will no longer be invoked. */ - public abstract int onGetStatus(Bundle extras); + @Deprecated + public int onGetStatus(Bundle extras) { + return LocationProvider.AVAILABLE; + } /** + * This method will no longer be invoked. + * * Returns the time at which the status was last updated. It is the * responsibility of the provider to appropriately set this value using * {@link android.os.SystemClock#elapsedRealtime SystemClock.elapsedRealtime()}. @@ -195,8 +205,13 @@ public abstract class LocationProviderBase { * the same status again. * * @return time of last status update in millis since last reboot + * + * @deprecated This method will no longer be invoked. */ - public abstract long onGetStatusUpdateTime(); + @Deprecated + public long onGetStatusUpdateTime() { + return 0; + } /** * Implements addditional location provider specific additional commands. diff --git a/packages/FusedLocation/src/com/android/location/fused/FusedLocationProvider.java b/packages/FusedLocation/src/com/android/location/fused/FusedLocationProvider.java index 56feb4726dd6..87d6e4a137ac 100644 --- a/packages/FusedLocation/src/com/android/location/fused/FusedLocationProvider.java +++ b/packages/FusedLocation/src/com/android/location/fused/FusedLocationProvider.java @@ -16,27 +16,24 @@ package com.android.location.fused; - -import java.io.FileDescriptor; -import java.io.PrintWriter; - -import com.android.location.provider.LocationProviderBase; -import com.android.location.provider.ProviderPropertiesUnbundled; -import com.android.location.provider.ProviderRequestUnbundled; - import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.location.Criteria; -import android.location.LocationProvider; -import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.os.Message; import android.os.UserHandle; import android.os.WorkSource; +import com.android.location.provider.LocationProviderBase; +import com.android.location.provider.ProviderPropertiesUnbundled; +import com.android.location.provider.ProviderRequestUnbundled; + +import java.io.FileDescriptor; +import java.io.PrintWriter; + public class FusedLocationProvider extends LocationProviderBase implements FusionEngine.Callback { private static final String TAG = "FusedLocationProvider"; @@ -48,7 +45,6 @@ public class FusedLocationProvider extends LocationProviderBase implements Fusio private static final int MSG_DISABLE = 2; private static final int MSG_SET_REQUEST = 3; - private final Context mContext; private final FusionEngine mEngine; private static class RequestWrapper { @@ -62,13 +58,12 @@ public class FusedLocationProvider extends LocationProviderBase implements Fusio public FusedLocationProvider(Context context) { super(TAG, PROPERTIES); - mContext = context; mEngine = new FusionEngine(context, Looper.myLooper()); // listen for user change IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(Intent.ACTION_USER_SWITCHED); - mContext.registerReceiverAsUser(new BroadcastReceiver() { + context.registerReceiverAsUser(new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); @@ -122,14 +117,4 @@ public class FusedLocationProvider extends LocationProviderBase implements Fusio // perform synchronously mEngine.dump(fd, pw, args); } - - @Override - public int onGetStatus(Bundle extras) { - return LocationProvider.AVAILABLE; - } - - @Override - public long onGetStatusUpdateTime() { - return 0; - } } diff --git a/services/core/java/com/android/server/LocationManagerService.java b/services/core/java/com/android/server/LocationManagerService.java index 046442a0b3ad..e5275e50e484 100644 --- a/services/core/java/com/android/server/LocationManagerService.java +++ b/services/core/java/com/android/server/LocationManagerService.java @@ -17,6 +17,7 @@ package com.android.server; import static android.content.pm.PackageManager.PERMISSION_GRANTED; +import static android.provider.Settings.Global.LOCATION_DISABLE_STATUS_CALLBACKS; import android.Manifest; import android.annotation.NonNull; @@ -2990,7 +2991,7 @@ public class LocationManagerService extends ILocationManager.Stub { ArrayList<Receiver> deadReceivers = null; ArrayList<UpdateRecord> deadUpdateRecords = null; - // Broadcast location or status to all listeners + // Broadcast location to all listeners for (UpdateRecord r : records) { Receiver receiver = r.mReceiver; boolean receiverDead = false; @@ -3049,14 +3050,19 @@ public class LocationManagerService extends ILocationManager.Stub { } } - long prevStatusUpdateTime = r.mLastStatusBroadcast; - if ((newStatusUpdateTime > prevStatusUpdateTime) && - (prevStatusUpdateTime != 0 || status != LocationProvider.AVAILABLE)) { + // TODO: location provider status callbacks have been disabled and deprecated, and are + // guarded behind this setting now. should be removed completely post-Q + if (Settings.Global.getInt(mContext.getContentResolver(), + LOCATION_DISABLE_STATUS_CALLBACKS, 1) == 0) { + long prevStatusUpdateTime = r.mLastStatusBroadcast; + if ((newStatusUpdateTime > prevStatusUpdateTime) + && (prevStatusUpdateTime != 0 || status != LocationProvider.AVAILABLE)) { - r.mLastStatusBroadcast = newStatusUpdateTime; - if (!receiver.callStatusChangedLocked(provider, status, extras)) { - receiverDead = true; - Slog.w(TAG, "RemoteException calling onStatusChanged on " + receiver); + r.mLastStatusBroadcast = newStatusUpdateTime; + if (!receiver.callStatusChangedLocked(provider, status, extras)) { + receiverDead = true; + Slog.w(TAG, "RemoteException calling onStatusChanged on " + receiver); + } } } @@ -3276,7 +3282,6 @@ public class LocationManagerService extends ILocationManager.Stub { // we don't leave anything dangling. clearTestProviderEnabled(provider, opPackageName); clearTestProviderLocation(provider, opPackageName); - clearTestProviderStatus(provider, opPackageName); MockProvider mockProvider = mMockProviders.remove(provider); if (mockProvider == null) { @@ -3409,21 +3414,6 @@ public class LocationManagerService extends ILocationManager.Stub { } @Override - public void clearTestProviderStatus(String provider, String opPackageName) { - if (!canCallerAccessMockLocation(opPackageName)) { - return; - } - - synchronized (mLock) { - MockProvider mockProvider = mMockProviders.get(provider); - if (mockProvider == null) { - throw new IllegalArgumentException("Provider \"" + provider + "\" unknown"); - } - mockProvider.clearStatus(); - } - } - - @Override public PendingIntent createManageLocationPermissionIntent(String packageName, String permission) { Preconditions.checkNotNull(packageName); diff --git a/services/core/java/com/android/server/location/GnssLocationProvider.java b/services/core/java/com/android/server/location/GnssLocationProvider.java index 9e6e3812df6b..d5e4681a0d90 100644 --- a/services/core/java/com/android/server/location/GnssLocationProvider.java +++ b/services/core/java/com/android/server/location/GnssLocationProvider.java @@ -97,8 +97,8 @@ import java.util.Properties; * * {@hide} */ -public class GnssLocationProvider implements LocationProviderInterface, InjectNtpTimeCallback, - GnssSatelliteBlacklistCallback { +public class GnssLocationProvider extends LocationProviderInterface + implements InjectNtpTimeCallback, GnssSatelliteBlacklistCallback { private static final String TAG = "GnssLocationProvider"; diff --git a/services/core/java/com/android/server/location/LocationProviderInterface.java b/services/core/java/com/android/server/location/LocationProviderInterface.java index 6f0923233e19..678596445fe3 100644 --- a/services/core/java/com/android/server/location/LocationProviderInterface.java +++ b/services/core/java/com/android/server/location/LocationProviderInterface.java @@ -16,33 +16,63 @@ package com.android.server.location; -import java.io.FileDescriptor; -import java.io.PrintWriter; +import android.location.LocationProvider; +import android.os.Bundle; +import android.os.WorkSource; import com.android.internal.location.ProviderProperties; import com.android.internal.location.ProviderRequest; - -import android.os.Bundle; -import android.os.WorkSource; +import java.io.FileDescriptor; +import java.io.PrintWriter; /** * Location Manager's interface for location providers. * @hide */ -public interface LocationProviderInterface { - public String getName(); +public abstract class LocationProviderInterface { + + /** Get name. */ + public abstract String getName(); + + /** Enable. */ + public abstract void enable(); + + /** Disable. */ + public abstract void disable(); + + /** Is enabled. */ + public abstract boolean isEnabled(); + + /** Set request. */ + public abstract void setRequest(ProviderRequest request, WorkSource source); + + /** dump. */ + public abstract void dump(FileDescriptor fd, PrintWriter pw, String[] args); + + /** Get properties. */ + public abstract ProviderProperties getProperties(); - public void enable(); - public void disable(); - public boolean isEnabled(); - public void setRequest(ProviderRequest request, WorkSource source); + /** + * Get status. + * + * @deprecated Will be removed in a future release. + */ + @Deprecated + public int getStatus(Bundle extras) { + return LocationProvider.AVAILABLE; + } - public void dump(FileDescriptor fd, PrintWriter pw, String[] args); + /** + * Get status update time. + * + * @deprecated Will be removed in a future release. + */ + @Deprecated + public long getStatusUpdateTime() { + return 0; + } - // --- deprecated (but still supported) --- - public ProviderProperties getProperties(); - public int getStatus(Bundle extras); - public long getStatusUpdateTime(); - public boolean sendExtraCommand(String command, Bundle extras); + /** Send extra command. */ + public abstract boolean sendExtraCommand(String command, Bundle extras); } diff --git a/services/core/java/com/android/server/location/LocationProviderProxy.java b/services/core/java/com/android/server/location/LocationProviderProxy.java index bb86b4852fd5..b40841467946 100644 --- a/services/core/java/com/android/server/location/LocationProviderProxy.java +++ b/services/core/java/com/android/server/location/LocationProviderProxy.java @@ -41,7 +41,7 @@ import java.io.PrintWriter; /** * Proxy for ILocationProvider implementations. */ -public class LocationProviderProxy implements LocationProviderInterface { +public class LocationProviderProxy extends LocationProviderInterface { private static final String TAG = "LocationProviderProxy"; private static final boolean D = LocationManagerService.D; diff --git a/services/core/java/com/android/server/location/MockProvider.java b/services/core/java/com/android/server/location/MockProvider.java index 857876189c55..145aee3a9e6a 100644 --- a/services/core/java/com/android/server/location/MockProvider.java +++ b/services/core/java/com/android/server/location/MockProvider.java @@ -25,32 +25,32 @@ import android.os.WorkSource; import android.util.Log; import android.util.PrintWriterPrinter; +import com.android.internal.location.ProviderProperties; +import com.android.internal.location.ProviderRequest; import java.io.FileDescriptor; import java.io.PrintWriter; -import com.android.internal.location.ProviderProperties; -import com.android.internal.location.ProviderRequest; - /** * A mock location provider used by LocationManagerService to implement test providers. * * {@hide} */ -public class MockProvider implements LocationProviderInterface { +public class MockProvider extends LocationProviderInterface { private final String mName; private final ProviderProperties mProperties; private final ILocationManager mLocationManager; private final Location mLocation; - private final Bundle mExtras = new Bundle(); - private int mStatus; - private long mStatusUpdateTime; private boolean mHasLocation; - private boolean mHasStatus; private boolean mEnabled; + + private int mStatus; + private long mStatusUpdateTime; + private Bundle mExtras; + private static final String TAG = "MockProvider"; public MockProvider(String name, ILocationManager locationManager, @@ -61,6 +61,10 @@ public class MockProvider implements LocationProviderInterface { mLocationManager = locationManager; mProperties = properties; mLocation = new Location(name); + + mStatus = LocationProvider.AVAILABLE; + mStatusUpdateTime = 0L; + mExtras = null; } @Override @@ -90,13 +94,12 @@ public class MockProvider implements LocationProviderInterface { @Override public int getStatus(Bundle extras) { - if (mHasStatus) { + if (mExtras != null) { extras.clear(); extras.putAll(mExtras); - return mStatus; - } else { - return LocationProvider.AVAILABLE; } + + return mStatus; } @Override @@ -120,19 +123,14 @@ public class MockProvider implements LocationProviderInterface { mHasLocation = false; } + /** + * @deprecated Will be removed in a future release. + */ + @Deprecated public void setStatus(int status, Bundle extras, long updateTime) { mStatus = status; mStatusUpdateTime = updateTime; - mExtras.clear(); - if (extras != null) { - mExtras.putAll(extras); - } - mHasStatus = true; - } - - public void clearStatus() { - mHasStatus = false; - mStatusUpdateTime = 0; + mExtras = extras; } @Override @@ -145,9 +143,6 @@ public class MockProvider implements LocationProviderInterface { pw.println(prefix + "mHasLocation=" + mHasLocation); pw.println(prefix + "mLocation:"); mLocation.dump(new PrintWriterPrinter(pw), prefix + " "); - pw.println(prefix + "mHasStatus=" + mHasStatus); - pw.println(prefix + "mStatus=" + mStatus); - pw.println(prefix + "mStatusUpdateTime=" + mStatusUpdateTime); pw.println(prefix + "mExtras=" + mExtras); } diff --git a/services/core/java/com/android/server/location/PassiveProvider.java b/services/core/java/com/android/server/location/PassiveProvider.java index 71bae07680a3..99c92149fa1b 100644 --- a/services/core/java/com/android/server/location/PassiveProvider.java +++ b/services/core/java/com/android/server/location/PassiveProvider.java @@ -16,22 +16,20 @@ package com.android.server.location; -import java.io.FileDescriptor; -import java.io.PrintWriter; - -import com.android.internal.location.ProviderProperties; -import com.android.internal.location.ProviderRequest; - import android.location.Criteria; import android.location.ILocationManager; import android.location.Location; import android.location.LocationManager; -import android.location.LocationProvider; import android.os.Bundle; import android.os.RemoteException; import android.os.WorkSource; import android.util.Log; +import com.android.internal.location.ProviderProperties; +import com.android.internal.location.ProviderRequest; + +import java.io.FileDescriptor; +import java.io.PrintWriter; /** * A passive location provider reports locations received from other providers @@ -40,7 +38,7 @@ import android.util.Log; * * {@hide} */ -public class PassiveProvider implements LocationProviderInterface { +public class PassiveProvider extends LocationProviderInterface { private static final String TAG = "PassiveProvider"; private static final ProviderProperties PROPERTIES = new ProviderProperties( @@ -78,20 +76,6 @@ public class PassiveProvider implements LocationProviderInterface { } @Override - public int getStatus(Bundle extras) { - if (mReportLocation) { - return LocationProvider.AVAILABLE; - } else { - return LocationProvider.TEMPORARILY_UNAVAILABLE; - } - } - - @Override - public long getStatusUpdateTime() { - return -1; - } - - @Override public void setRequest(ProviderRequest request, WorkSource source) { mReportLocation = request.reportLocation; } |