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

Commit 533d486d authored by Nate Myren's avatar Nate Myren Committed by Android (Google) Code Review
Browse files

Merge "Only initialize PermissionUsageHelper lazily or when requested"

parents 916800ae 338cafab
Loading
Loading
Loading
Loading
+25 −6
Original line number Diff line number Diff line
@@ -180,8 +180,6 @@ public final class PermissionManager {
        mPermissionManager = IPermissionManager.Stub.asInterface(ServiceManager.getServiceOrThrow(
                "permissionmgr"));
        mLegacyPermissionManager = context.getSystemService(LegacyPermissionManager.class);
        //TODO ntmyren: there should be a way to only enable the watcher when requested
        mUsageHelper = new PermissionUsageHelper(context);
    }

    /**
@@ -988,6 +986,29 @@ public final class PermissionManager {
        return mSplitPermissionInfos;
    }

    /**
     * Initialize the PermissionUsageHelper, which will register active app op listeners
     *
     * @hide
     */
    public void initializeUsageHelper() {
        if (mUsageHelper == null) {
            mUsageHelper = new PermissionUsageHelper(mContext);
        }
    }

    /**
     * Teardown the PermissionUsageHelper, removing listeners
     *
     * @hide
     */
    public void tearDownUsageHelper() {
        if (mUsageHelper != null) {
            mUsageHelper.tearDown();
            mUsageHelper = null;
        }
    }

    /**
     * @return A list of permission groups currently or recently used by all apps by all users in
     * the current profile group.
@@ -998,7 +1019,7 @@ public final class PermissionManager {
    @NonNull
    @RequiresPermission(Manifest.permission.GET_APP_OPS_STATS)
    public List<PermGroupUsage> getIndicatorAppOpUsageData() {
        return mUsageHelper.getOpUsageData(new AudioManager().isMicrophoneMute());
        return getIndicatorAppOpUsageData(new AudioManager().isMicrophoneMute());
    }

    /**
@@ -1013,9 +1034,7 @@ public final class PermissionManager {
    @RequiresPermission(Manifest.permission.GET_APP_OPS_STATS)
    public List<PermGroupUsage> getIndicatorAppOpUsageData(boolean micMuted) {
        // Lazily initialize the usage helper
        if (mUsageHelper == null) {
            mUsageHelper = new PermissionUsageHelper(mContext);
        }
        initializeUsageHelper();
        return mUsageHelper.getOpUsageData(micMuted);
    }

+5 −0
Original line number Diff line number Diff line
@@ -176,6 +176,11 @@ public class PermissionUsageHelper implements AppOpsManager.OnOpActiveChangedLis
        return mUserContexts.get(user);
    }

    public void tearDown() {
        mAppOpsManager.stopWatchingActive(this);
        mAppOpsManager.stopWatchingStarted(this);
    }

    @Override
    public void onOpActiveChanged(@NonNull String op, int uid, @NonNull String packageName,
            boolean active) {
+5 −1
Original line number Diff line number Diff line
@@ -442,7 +442,11 @@ public class FrameworkServicesModule {
    @Provides
    @Singleton
    static PermissionManager providePermissionManager(Context context) {
        return context.getSystemService(PermissionManager.class);
        PermissionManager pm = context.getSystemService(PermissionManager.class);
        if (pm != null) {
            pm.initializeUsageHelper();
        }
        return pm;
    }

    @Provides