From 322de3ad05488b03ed1ac2842fa95154042eda7f Mon Sep 17 00:00:00 2001 From: Evan Severson Date: Tue, 11 Feb 2020 11:28:31 -0800 Subject: [PATCH] Add debug logging for one-time permissions There are some test failures that aren't reproducible. It would be nice to know if this feature is behaving correctly on the system server side. Test: Manual Bug: 143896762 Change-Id: Ida083c74330ce7d0411be022599ec9dfbaeb30a5 --- .../OneTimePermissionUserManager.java | 27 +++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/pm/permission/OneTimePermissionUserManager.java b/services/core/java/com/android/server/pm/permission/OneTimePermissionUserManager.java index b809951947d90..976ce1f3dde0d 100644 --- a/services/core/java/com/android/server/pm/permission/OneTimePermissionUserManager.java +++ b/services/core/java/com/android/server/pm/permission/OneTimePermissionUserManager.java @@ -36,6 +36,8 @@ public class OneTimePermissionUserManager { private static final String LOG_TAG = OneTimePermissionUserManager.class.getSimpleName(); + private static final boolean DEBUG = true; + private final @NonNull Context mContext; private final @NonNull ActivityManager mActivityManager; private final @NonNull AlarmManager mAlarmManager; @@ -156,6 +158,14 @@ public class OneTimePermissionUserManager { private PackageInactivityListener(int uid, @NonNull String packageName, long timeout, int importanceToResetTimer, int importanceToKeepSessionAlive) { + + if (DEBUG) { + Log.d(LOG_TAG, + "Start tracking " + packageName + ". uid=" + uid + " timeout=" + timeout + + " importanceToResetTimer=" + importanceToResetTimer + + " importanceToKeepSessionAlive=" + importanceToKeepSessionAlive); + } + mUid = uid; mPackageName = packageName; mTimeout = timeout; @@ -182,6 +192,12 @@ public class OneTimePermissionUserManager { if (uid != mUid) { return; } + + + if (DEBUG) { + Log.d(LOG_TAG, "Importance changed for " + mPackageName + " (" + mUid + ")." + + " importance=" + importance); + } synchronized (mInnerLock) { if (importance > IMPORTANCE_CACHED) { onPackageInactiveLocked(); @@ -257,8 +273,15 @@ public class OneTimePermissionUserManager { mIsFinished = true; cancelAlarmLocked(); mContext.getMainThreadHandler().post( - () -> mPermissionControllerManager.notifyOneTimePermissionSessionTimeout( - mPackageName)); + () -> { + if (DEBUG) { + Log.d(LOG_TAG, "One time session expired for " + + mPackageName + " (" + mUid + ")."); + } + + mPermissionControllerManager.notifyOneTimePermissionSessionTimeout( + mPackageName); + }); mActivityManager.removeOnUidImportanceListener(mStartTimerListener); mActivityManager.removeOnUidImportanceListener(mSessionKillableListener); mActivityManager.removeOnUidImportanceListener(mGoneListener);