Handle tri-state location permission.
Use noteOp instead of checkOp as checkOp doesn't consider
background status.
Watch location permission changes caused by background status.
Restrict age of last location for foreground-only apps.
Bug: 80318398
Test: Manual
Change-Id: I3499d4150478b6f501966953f8e4a08169f3557c
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index 00180a8..e341363 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -9032,6 +9032,14 @@
"location_background_throttle_package_whitelist";
/**
+ * Maximum staleness allowed for last location when returned to clients with only foreground
+ * location permissions.
+ * @hide
+ */
+ public static final String LOCATION_LAST_LOCATION_MAX_AGE_MILLIS =
+ "location_last_location_max_age_millis";
+
+ /**
* Whether TV will switch to MHL port when a mobile device is plugged in.
* (0 = false, 1 = true)
* @hide
diff --git a/core/tests/coretests/src/android/provider/SettingsBackupTest.java b/core/tests/coretests/src/android/provider/SettingsBackupTest.java
index b7460ac..07606ea 100644
--- a/core/tests/coretests/src/android/provider/SettingsBackupTest.java
+++ b/core/tests/coretests/src/android/provider/SettingsBackupTest.java
@@ -272,6 +272,7 @@
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_LAST_LOCATION_MAX_AGE_MILLIS,
Settings.Global.LOCATION_GLOBAL_KILL_SWITCH,
Settings.Global.LOCATION_SETTINGS_LINK_TO_PERMISSIONS_ENABLED,
Settings.Global.LOCK_SOUND,