Merge "Listen to changes in unused threshold" into sc-dev am: f71b630674 am: 79dbb674a9

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/Permission/+/14923257

Change-Id: Ibe43ac0506e552508f457cacfd17ab7662193e1b
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/data/UnusedPackagesLiveData.kt b/PermissionController/src/com/android/permissioncontroller/permission/data/UnusedPackagesLiveData.kt
index 85cbbf9..b97c275 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/data/UnusedPackagesLiveData.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/data/UnusedPackagesLiveData.kt
@@ -17,11 +17,15 @@
 package com.android.permissioncontroller.permission.data
 
 import android.os.UserHandle
+import android.provider.DeviceConfig
+import android.provider.DeviceConfig.NAMESPACE_PERMISSIONS
 import android.util.ArraySet
 import android.util.Log
+import com.android.permissioncontroller.PermissionControllerApplication
 import com.android.permissioncontroller.hibernation.getUnusedThresholdMs
 import com.android.permissioncontroller.hibernation.isHibernationEnabled
 import com.android.permissioncontroller.hibernation.lastTimePackageUsed
+import com.android.permissioncontroller.permission.utils.Utils
 
 /**
  * Gets all unused packages from an existing live data that have not been opened in a few months
@@ -37,8 +41,8 @@
 
     private val LOG_TAG = UnusedPackagesLiveData::class.java.simpleName
 
-    private val unusedThreshold = getUnusedThresholdMs()
-    private val usageStatsLiveData = UsageStatsLiveData[unusedThreshold]
+    private var unusedThreshold = getUnusedThresholdMs()
+    private var usageStatsLiveData = UsageStatsLiveData[unusedThreshold]
 
     init {
         addSource(usageStatsLiveData) {
@@ -50,6 +54,22 @@
         addSource(sourceLiveData) {
             update()
         }
+        DeviceConfig.addOnPropertiesChangedListener(
+            NAMESPACE_PERMISSIONS,
+            PermissionControllerApplication.get().mainExecutor,
+            { properties ->
+                for (key in properties.keyset) {
+                    if (key == Utils.PROPERTY_HIBERNATION_UNUSED_THRESHOLD_MILLIS) {
+                        removeSource(usageStatsLiveData)
+                        unusedThreshold = getUnusedThresholdMs()
+                        usageStatsLiveData = UsageStatsLiveData[unusedThreshold]
+                        addSource(usageStatsLiveData) {
+                            update()
+                        }
+                    }
+                }
+            }
+        )
     }
 
     override fun onUpdate() {