Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e46ca414 authored by Kunal Malhotra's avatar Kunal Malhotra
Browse files

Adding in hook for FGS metrics logging in LocationManagerService

Test: manual testing on device
Change-Id: Idb1ef04c41eac58b5f4d297c788bcde2f2f6035e
Bug: b/263304156
parent 33c3e151
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -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);
        }