Add temporary logs to HibernationSettingsStateLiveData

Test: manual
Bug: 206455664
Change-Id: I04da87dee95fc0d4c820161574526efab3eafaa6
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/data/HibernationSettingStateLiveData.kt b/PermissionController/src/com/android/permissioncontroller/permission/data/HibernationSettingStateLiveData.kt
index 1868687..bb27e42 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/data/HibernationSettingStateLiveData.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/data/HibernationSettingStateLiveData.kt
@@ -21,7 +21,9 @@
 import android.app.Application
 import android.content.pm.PackageManager.FLAG_PERMISSION_GRANTED_BY_DEFAULT
 import android.content.pm.PackageManager.FLAG_PERMISSION_GRANTED_BY_ROLE
+import android.os.Handler
 import android.os.UserHandle
+import android.util.Log
 import com.android.permissioncontroller.PermissionControllerApplication
 import com.android.permissioncontroller.permission.data.PackagePermissionsLiveData.Companion.NON_RUNTIME_NORMAL_PERMS
 import com.android.permissioncontroller.permission.model.livedatatypes.HibernationSettingState
@@ -52,6 +54,13 @@
     private val exemptServicesLiveData = ExemptServicesLiveData[user]
     private val appOpsManager = app.getSystemService(AppOpsManager::class.java)!!
 
+    // TODO 206455664: remove these once issue is identified
+    private val LOG_TAG = "HibernationSettingStateLiveData"
+    private val DELAY_MS = 3000L
+    private var gotPermLiveDatas: Boolean = false
+    private var gotPastIsUserExempt: Boolean = false
+    private var gotPastIsSystemExempt: Boolean = false
+
     init {
         addSource(packagePermsLiveData) {
             update()
@@ -65,6 +74,9 @@
         addSource(HibernationEnabledLiveData) {
             update()
         }
+        Handler(app.mainLooper).postDelayed({
+            logState()
+        }, DELAY_MS)
     }
 
     override suspend fun loadDataAndPostValue(job: Job) {
@@ -82,14 +94,17 @@
 
         val getLiveData = { groupName: String -> PermStateLiveData[packageName, groupName, user] }
         setSourcesToDifference(groups, permStateLiveDatas, getLiveData)
+        gotPermLiveDatas = true
 
         if (!permStateLiveDatas.all { it.value.isInitialized }) {
             return
         }
 
         val canHibernate = !isPackageHibernationExemptByUser(app, packageLiveData.value!!)
+        gotPastIsUserExempt = true
         val revocableGroups = mutableListOf<String>()
         if (!isPackageHibernationExemptBySystem(packageLiveData.value!!, user)) {
+            gotPastIsSystemExempt = true
             permStateLiveDatas.forEach { (groupName, liveData) ->
                 val default = liveData.value?.any { (_, permState) ->
                     permState.permFlags and (FLAG_PERMISSION_GRANTED_BY_DEFAULT or
@@ -100,6 +115,7 @@
                 }
             }
         }
+        gotPastIsSystemExempt = true
 
         postValue(HibernationSettingState(isHibernationJobEnabled(), canHibernate, revocableGroups))
     }
@@ -119,6 +135,25 @@
         super.onInactive()
         appOpsManager.stopWatchingMode(this)
     }
+
+    // TODO 206455664: remove these once issue is identified
+    private fun logState() {
+        if (!isStale) {
+            return
+        }
+        Log.i(LOG_TAG, "overall state: isStale:$isStale, isInitialized:$isInitialized, " +
+                "value:$value, got perm LiveDatas:$gotPermLiveDatas, " +
+                "got isUserExempt$gotPastIsUserExempt, got isSystemExempt$gotPastIsSystemExempt")
+        Log.i(LOG_TAG, "packagePermsLivedata isStale:${packagePermsLiveData.isStale}, " +
+                "isInitialized:${packagePermsLiveData.isInitialized}")
+        Log.i(LOG_TAG, "ExemptServicesLiveData isStale:${exemptServicesLiveData.isStale}, " +
+                "isInitialized:${exemptServicesLiveData.isInitialized}")
+        Log.i(LOG_TAG, "HibernationEnabledLivedata value:${HibernationEnabledLiveData.value}")
+        for ((group, liveData) in permStateLiveDatas) {
+            Log.i(LOG_TAG, "permStateLivedata $group isStale:${liveData.isStale}, " +
+                    "isInitialized:${liveData.isInitialized}")
+        }
+    }
     /**
      * Repository for HibernationSettingStateLiveDatas.
      * <p> Key value is a pair of string package name and UserHandle, value is its corresponding