Merge "use SharedPreferences to save verify results" am: 4b751f130e am: 0c15e8668a am: fecb6a4aa6

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/2110186

Change-Id: I4286d03ff108aec9c33486cf2dc0ada3d24f68ee
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Treehugger Robot
2022-06-27 21:24:31 +00:00
committed by Automerger Merge Worker
3 changed files with 42 additions and 15 deletions

View File

@@ -67,6 +67,10 @@ class DomainVerificationReceiverV1 : BaseDomainVerificationReceiver() {
} }
} }
//clear sp before enqueue unique work since policy is REPLACE
val deContext = context.createDeviceProtectedStorageContext()
val editor = deContext?.getSharedPreferences(packageName, Context.MODE_PRIVATE)?.edit()
editor?.clear()?.apply()
WorkManager.getInstance(context) WorkManager.getInstance(context)
.beginUniqueWork( .beginUniqueWork(
"$PACKAGE_WORK_PREFIX_V1$packageName", "$PACKAGE_WORK_PREFIX_V1$packageName",

View File

@@ -41,10 +41,8 @@ class CollectV1Worker(appContext: Context, params: WorkerParameters) :
Data.Builder() Data.Builder()
.putInt(VERIFICATION_ID_KEY, verificationId) .putInt(VERIFICATION_ID_KEY, verificationId)
.apply { .apply {
if (DEBUG) {
putString(PACKAGE_NAME_KEY, packageName) putString(PACKAGE_NAME_KEY, packageName)
} }
}
.build() .build()
) )
.build() .build()
@@ -52,6 +50,18 @@ class CollectV1Worker(appContext: Context, params: WorkerParameters) :
override suspend fun doWork() = coroutineScope { override suspend fun doWork() = coroutineScope {
if (!AndroidUtils.isReceiverV1Enabled(appContext)) { if (!AndroidUtils.isReceiverV1Enabled(appContext)) {
//clear sp and commit here
val inputData = params.inputData
val packageName = inputData.getString(PACKAGE_NAME_KEY)
val deContext = appContext.createDeviceProtectedStorageContext()
val sp = deContext?.getSharedPreferences(packageName, Context.MODE_PRIVATE)
val editor = sp?.edit()
editor?.clear()?.commit()
//delete sp file
val retOfDel = deContext?.deleteSharedPreferences(packageName)
if (DEBUG) {
Log.d(TAG, "delete sp for $packageName return $retOfDel")
}
return@coroutineScope Result.success() return@coroutineScope Result.success()
} }
@@ -59,7 +69,10 @@ class CollectV1Worker(appContext: Context, params: WorkerParameters) :
val verificationId = inputData.getInt(VERIFICATION_ID_KEY, -1) val verificationId = inputData.getInt(VERIFICATION_ID_KEY, -1)
val successfulHosts = mutableListOf<String>() val successfulHosts = mutableListOf<String>()
val failedHosts = mutableListOf<String>() val failedHosts = mutableListOf<String>()
inputData.keyValueMap.entries.forEach { (key, _) -> val packageName = inputData.getString(PACKAGE_NAME_KEY)
val deContext = appContext.createDeviceProtectedStorageContext()
val sp = deContext?.getSharedPreferences(packageName, Context.MODE_PRIVATE)
sp?.all?.entries?.forEach { (key, _) ->
when { when {
key.startsWith(SingleV1RequestWorker.HOST_SUCCESS_PREFIX) -> key.startsWith(SingleV1RequestWorker.HOST_SUCCESS_PREFIX) ->
successfulHosts += key.removePrefix(SingleV1RequestWorker.HOST_SUCCESS_PREFIX) successfulHosts += key.removePrefix(SingleV1RequestWorker.HOST_SUCCESS_PREFIX)
@@ -69,7 +82,6 @@ class CollectV1Worker(appContext: Context, params: WorkerParameters) :
} }
if (DEBUG) { if (DEBUG) {
val packageName = inputData.getString(PACKAGE_NAME_KEY)
Log.d( Log.d(
TAG, "Domain verification v1 request for $packageName: " + TAG, "Domain verification v1 request for $packageName: " +
"success = $successfulHosts, failed = $failedHosts" "success = $successfulHosts, failed = $failedHosts"
@@ -84,6 +96,15 @@ class CollectV1Worker(appContext: Context, params: WorkerParameters) :
appContext.packageManager.verifyIntentFilter(verificationId, resultCode, failedHosts) appContext.packageManager.verifyIntentFilter(verificationId, resultCode, failedHosts)
//clear sp and commit here
val editor = sp?.edit()
editor?.clear()?.commit()
//delete sp file
val retOfDel = deContext?.deleteSharedPreferences(packageName)
if (DEBUG) {
Log.d(TAG, "delete sp for $packageName return $retOfDel")
}
Result.success() Result.success()
} }
} }

View File

@@ -71,16 +71,18 @@ class SingleV1RequestWorker(appContext: Context, params: WorkerParameters) :
// Coerce failure results into success so that final collection task gets a chance to run // Coerce failure results into success so that final collection task gets a chance to run
when (result) { when (result) {
is Result.Success -> Result.success( is Result.Success -> {
Data.Builder() val deContext = appContext.createDeviceProtectedStorageContext()
.putInt("$HOST_SUCCESS_PREFIX$host", status.value) val sp = deContext?.getSharedPreferences(packageName, Context.MODE_PRIVATE)
.build() sp?.edit()?.putInt("$HOST_SUCCESS_PREFIX$host", status.value)?.apply()
) Result.success()
is Result.Failure -> Result.success( }
Data.Builder() is Result.Failure -> {
.putInt("$HOST_FAILURE_PREFIX$host", status.value) val deContext = appContext.createDeviceProtectedStorageContext()
.build() val sp = deContext?.getSharedPreferences(packageName, Context.MODE_PRIVATE)
) sp?.edit()?.putInt("$HOST_FAILURE_PREFIX$host", status.value)?.apply()
Result.success()
}
else -> result else -> result
} }
} }