summaryrefslogtreecommitdiff
path: root/java/src
diff options
context:
space:
mode:
author Govinda Wasserman <gwasserman@google.com> 2023-03-23 15:21:52 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2023-03-23 15:21:52 +0000
commitd600faec9328df33c867cfb64f0e8aa2c852bc0b (patch)
treea989fdbeab1a2ec9e875ebf6325934017842a087 /java/src
parente8ec1c134a6cbba0ff995a948cddaad0825f5569 (diff)
parent9f90b598713528b5a216c771acee7753ab10d953 (diff)
Merge "Adds a reciever for pin migration data" into udc-dev
Diffstat (limited to 'java/src')
-rw-r--r--java/src/com/android/intentresolver/ChooserPinMigrationReceiver.kt55
1 files changed, 55 insertions, 0 deletions
diff --git a/java/src/com/android/intentresolver/ChooserPinMigrationReceiver.kt b/java/src/com/android/intentresolver/ChooserPinMigrationReceiver.kt
new file mode 100644
index 00000000..a3ba2192
--- /dev/null
+++ b/java/src/com/android/intentresolver/ChooserPinMigrationReceiver.kt
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.intentresolver
+
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import android.content.SharedPreferences
+import android.util.Log
+
+/**
+ * Broadcast receiver for receiving Chooser pin data from the legacy chooser.
+ *
+ * Unions the legacy pins with any existing pins. This receiver is protected by the ADD_CHOOSER_PINS
+ * permission. The receiver is required to have the RECEIVE_CHOOSER_PIN_MIGRATION to receive the
+ * broadcast.
+ */
+class ChooserPinMigrationReceiver(
+ private val pinnedSharedPrefsProvider: (Context) -> SharedPreferences =
+ { context -> ChooserActivity.getPinnedSharedPrefs(context) },
+) : BroadcastReceiver() {
+
+ override fun onReceive(context: Context, intent: Intent) {
+ val bundle = intent.extras ?: return
+ Log.i(TAG, "Starting migration")
+
+ val prefsEditor = pinnedSharedPrefsProvider.invoke(context).edit()
+ bundle.keySet().forEach { key ->
+ if(bundle.getBoolean(key)) {
+ prefsEditor.putBoolean(key, true)
+ }
+ }
+ prefsEditor.apply()
+
+ Log.i(TAG, "Migration complete")
+ }
+
+ companion object {
+ private const val TAG = "ChooserPinMigrationReceiver"
+ }
+} \ No newline at end of file