summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--api/test-current.txt1
-rw-r--r--location/java/android/location/ILocationManager.aidl3
-rw-r--r--location/java/android/location/LocationManager.java12
-rw-r--r--services/core/java/com/android/server/LocationManagerService.java7
4 files changed, 22 insertions, 1 deletions
diff --git a/api/test-current.txt b/api/test-current.txt
index 2cb01ead0788..fecb07a29a7f 100644
--- a/api/test-current.txt
+++ b/api/test-current.txt
@@ -802,6 +802,7 @@ package android.location {
public class LocationManager {
method public String[] getBackgroundThrottlingWhitelist();
+ method public String[] getIgnoreSettingsWhitelist();
method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(android.location.LocationRequest, android.location.LocationListener, android.os.Looper);
method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(android.location.LocationRequest, android.app.PendingIntent);
method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public void setLocationEnabledForUser(boolean, android.os.UserHandle);
diff --git a/location/java/android/location/ILocationManager.aidl b/location/java/android/location/ILocationManager.aidl
index 1aeefb84129f..57a0a725fb41 100644
--- a/location/java/android/location/ILocationManager.aidl
+++ b/location/java/android/location/ILocationManager.aidl
@@ -114,6 +114,7 @@ interface ILocationManager
// for reporting callback completion
void locationCallbackFinished(ILocationListener listener);
- // used by gts tests to verify throttling whitelist
+ // used by gts tests to verify whitelists
String[] getBackgroundThrottlingWhitelist();
+ String[] getIgnoreSettingsWhitelist();
}
diff --git a/location/java/android/location/LocationManager.java b/location/java/android/location/LocationManager.java
index c027fd499033..586ee2a43683 100644
--- a/location/java/android/location/LocationManager.java
+++ b/location/java/android/location/LocationManager.java
@@ -414,6 +414,18 @@ public class LocationManager {
}
/**
+ * @hide
+ */
+ @TestApi
+ public String[] getIgnoreSettingsWhitelist() {
+ try {
+ return mService.getIgnoreSettingsWhitelist();
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
+
+ /**
* @hide - hide this constructor because it has a parameter
* of type ILocationManager, which is a system private class. The
* right way to create an instance of this class is using the
diff --git a/services/core/java/com/android/server/LocationManagerService.java b/services/core/java/com/android/server/LocationManagerService.java
index 9d92ea2b5b45..4dcc9ed4cfa5 100644
--- a/services/core/java/com/android/server/LocationManagerService.java
+++ b/services/core/java/com/android/server/LocationManagerService.java
@@ -2136,6 +2136,13 @@ public class LocationManagerService extends ILocationManager.Stub {
}
}
+ @Override
+ public String[] getIgnoreSettingsWhitelist() {
+ synchronized (mLock) {
+ return mIgnoreSettingsPackageWhitelist.toArray(new String[0]);
+ }
+ }
+
@GuardedBy("mLock")
private boolean isThrottlingExemptLocked(CallerIdentity callerIdentity) {
if (callerIdentity.mUid == Process.SYSTEM_UID) {