diff options
| author | Soonil Nagarkar <sooniln@google.com> | 2019-01-23 22:47:57 -0800 |
|---|---|---|
| committer | Soonil Nagarkar <sooniln@google.com> | 2019-01-23 22:47:57 -0800 |
| commit | 397ad580d34b14f8c2c80b09a53d78747169961d (patch) | |
| tree | a70cb5bfdcfae26d0a7bf001677d233307ce888b /core/java | |
| parent | 0affe5dad2190fba8093a695d05687440a75d102 (diff) | |
Add whitelist for location settings piercing
Use a whitelist to control which packages may use location piercing
settings on LocationRequest.
Test: Manually
Bug: 118883513
Change-Id: I16e8496c49b6bef016cb7f090969ed97a39e38c2
Diffstat (limited to 'core/java')
| -rw-r--r-- | core/java/android/provider/Settings.java | 8 | ||||
| -rw-r--r-- | core/java/com/android/server/SystemConfig.java | 22 |
2 files changed, 30 insertions, 0 deletions
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index 5dfabfa74ca5..4e278b40c9bf 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -9493,6 +9493,14 @@ public final class Settings { "location_background_throttle_package_whitelist"; /** + * Packages that are whitelisted for ignoring location settings (may retrieve location even + * when user location settings are off), for emergency purposes. + * @hide + */ + public static final String LOCATION_IGNORE_SETTINGS_PACKAGE_WHITELIST = + "location_ignore_settings_package_whitelist"; + + /** * Whether to disable location status callbacks in preparation for deprecation. * @hide */ diff --git a/core/java/com/android/server/SystemConfig.java b/core/java/com/android/server/SystemConfig.java index 841e5b679f5f..3537465db682 100644 --- a/core/java/com/android/server/SystemConfig.java +++ b/core/java/com/android/server/SystemConfig.java @@ -140,6 +140,10 @@ public class SystemConfig { // without throttling, as read from the configuration files. final ArraySet<String> mAllowUnthrottledLocation = new ArraySet<>(); + // These are the packages that are white-listed to be able to retrieve location even when user + // location settings are off, for emergency purposes, as read from the configuration files. + final ArraySet<String> mAllowIgnoreLocationSettings = new ArraySet<>(); + // These are the action strings of broadcasts which are whitelisted to // be delivered anonymously even to apps which target O+. final ArraySet<String> mAllowImplicitBroadcasts = new ArraySet<>(); @@ -255,6 +259,10 @@ public class SystemConfig { return mAllowUnthrottledLocation; } + public ArraySet<String> getAllowIgnoreLocationSettings() { + return mAllowIgnoreLocationSettings; + } + public ArraySet<String> getLinkedApps() { return mLinkedApps; } @@ -682,6 +690,20 @@ public class SystemConfig { } XmlUtils.skipCurrentTag(parser); } break; + case "allow-ignore-location-settings": { + if (allowAll) { + String pkgname = parser.getAttributeValue(null, "package"); + if (pkgname == null) { + Slog.w(TAG, "<" + name + "> without package in " + + permFile + " at " + parser.getPositionDescription()); + } else { + mAllowIgnoreLocationSettings.add(pkgname); + } + } else { + logNotAllowedInPartition(name, permFile, parser); + } + XmlUtils.skipCurrentTag(parser); + } break; case "allow-implicit-broadcast": { if (allowAll) { String action = parser.getAttributeValue(null, "action"); |
