Add APIs to set Location History package name.
The package name will be used by Permission Controller to properly
handle permissions for location history package.
Bug: 119226131
Test: manually tested on device
Change-Id: I522517272c132a054c44489d16626509cf2b42ee
diff --git a/services/core/java/com/android/server/LocationManagerService.java b/services/core/java/com/android/server/LocationManagerService.java
index 8b992eb..9dbfe5f 100644
--- a/services/core/java/com/android/server/LocationManagerService.java
+++ b/services/core/java/com/android/server/LocationManagerService.java
@@ -22,6 +22,7 @@
import static com.android.internal.util.Preconditions.checkState;
+import android.Manifest;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.app.ActivityManager;
@@ -189,6 +190,8 @@
private LocationBlacklist mBlacklist;
private GnssMeasurementsProvider mGnssMeasurementsProvider;
private GnssNavigationMessageProvider mGnssNavigationMessageProvider;
+ private String mLocationControllerExtraPackage;
+ private boolean mLocationControllerExtraPackageEnabled;
private IGpsGeofenceHardware mGpsGeofenceProxy;
// --- fields below are protected by mLock ---
@@ -2717,6 +2720,39 @@
return null;
}
+ @Override
+ public void setLocationControllerExtraPackage(String packageName) {
+ mContext.enforceCallingPermission(Manifest.permission.LOCATION_HARDWARE,
+ Manifest.permission.LOCATION_HARDWARE + " permission required");
+ synchronized (mLock) {
+ mLocationControllerExtraPackage = packageName;
+ }
+ }
+
+ @Override
+ public String getLocationControllerExtraPackage() {
+ synchronized (mLock) {
+ return mLocationControllerExtraPackage;
+ }
+ }
+
+ @Override
+ public void setLocationControllerExtraPackageEnabled(boolean enabled) {
+ mContext.enforceCallingPermission(Manifest.permission.LOCATION_HARDWARE,
+ Manifest.permission.LOCATION_HARDWARE + " permission required");
+ synchronized (mLock) {
+ mLocationControllerExtraPackageEnabled = enabled;
+ }
+ }
+
+ @Override
+ public boolean isLocationControllerExtraPackageEnabled() {
+ synchronized (mLock) {
+ return mLocationControllerExtraPackageEnabled
+ && (mLocationControllerExtraPackage != null);
+ }
+ }
+
/**
* Returns the current location enabled/disabled status for a user
*
@@ -3492,6 +3528,11 @@
}
}
+ if (mLocationControllerExtraPackage != null) {
+ pw.println(" Location controller extra package: " + mLocationControllerExtraPackage
+ + " enabled: " + mLocationControllerExtraPackageEnabled);
+ }
+
if (!mBackgroundThrottlePackageWhitelist.isEmpty()) {
pw.println(" Throttling Whitelisted Packages:");
for (String packageName : mBackgroundThrottlePackageWhitelist) {