Adding in hook for FGS metrics logging in LocationManagerService

Test: manual testing on device
Change-Id: Idb1ef04c41eac58b5f4d297c788bcde2f2f6035e
Bug: b/263304156
This commit is contained in:
Kunal Malhotra
2023-01-25 01:28:35 +00:00
parent 33c3e1511c
commit e46ca414ab

View File

@@ -44,6 +44,7 @@ import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.RequiresPermission;
import android.app.ActivityManager;
import android.app.ActivityManagerInternal;
import android.app.AppOpsManager;
import android.app.PendingIntent;
import android.app.compat.CompatChanges;
@@ -770,6 +771,12 @@ public class LocationManagerService extends ILocationManager.Stub implements
public void registerLocationListener(String provider, LocationRequest request,
ILocationListener listener, String packageName, @Nullable String attributionTag,
String listenerId) {
ActivityManagerInternal managerInternal =
LocalServices.getService(ActivityManagerInternal.class);
if (managerInternal != null) {
managerInternal.logFgsApiBegin(ActivityManager.FOREGROUND_SERVICE_API_TYPE_LOCATION,
Binder.getCallingUid(), Binder.getCallingPid());
}
CallerIdentity identity = CallerIdentity.fromBinder(mContext, packageName, attributionTag,
listenerId);
int permissionLevel = LocationPermissions.getPermissionLevel(mContext, identity.getUid(),
@@ -927,6 +934,12 @@ public class LocationManagerService extends ILocationManager.Stub implements
@Override
public void unregisterLocationListener(ILocationListener listener) {
ActivityManagerInternal managerInternal =
LocalServices.getService(ActivityManagerInternal.class);
if (managerInternal != null) {
managerInternal.logFgsApiEnd(ActivityManager.FOREGROUND_SERVICE_API_TYPE_LOCATION,
Binder.getCallingUid(), Binder.getCallingPid());
}
for (LocationProviderManager manager : mProviderManagers) {
manager.unregisterLocationRequest(listener);
}