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

Commit 64c801d3 authored by Philip P. Moltmann's avatar Philip P. Moltmann
Browse files

Special case location provider camera accesses and show them as

indicators

Bug: 162547999
Test: Made location provider access camera and saw privacy chip
Change-Id: I5960fdff38b38a0bd8f4d9c9826639cc89a94603
parent 94afe73c
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.systemui.appops;
import android.app.AppOpsManager;
import android.content.Context;
import android.content.pm.PackageManager;
import android.location.LocationManager;
import android.media.AudioManager;
import android.media.AudioRecordingConfiguration;
import android.os.Handler;
@@ -66,6 +67,7 @@ public class AppOpsControllerImpl implements AppOpsController,

    private final AppOpsManager mAppOps;
    private final AudioManager mAudioManager;
    private final LocationManager mLocationManager;
    private H mBGHandler;
    private final List<AppOpsController.Callback> mCallbacks = new ArrayList<>();
    private final ArrayMap<Integer, Set<Callback>> mCallbacksByCode = new ArrayMap<>();
@@ -106,6 +108,7 @@ public class AppOpsControllerImpl implements AppOpsController,
            mCallbacksByCode.put(OPS[i], new ArraySet<>());
        }
        mAudioManager = audioManager;
        mLocationManager = context.getSystemService(LocationManager.class);
        dumpManager.registerDumpable(TAG, this);
    }

@@ -310,6 +313,11 @@ public class AppOpsControllerImpl implements AppOpsController,
            return true;
        }

        if (appOpCode == AppOpsManager.OP_CAMERA && mLocationManager.isProviderPackage(
                packageName)) {
            return true;
        }

        return isUserSensitive(appOpCode, uid, packageName);
    }