summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Treehugger Robot <android-test-infra-autosubmit@system.gserviceaccount.com> 2024-12-22 20:21:37 -0800
committer Android (Google) Code Review <android-gerrit@google.com> 2024-12-22 20:21:37 -0800
commita6e8e0103318946361b46da2bcd324a0a6b80443 (patch)
tree2cb513c87fe6c75b760153cdc338f9a34d406055
parent50119482b81aa4980a3d5e88d18ede9c00084ac8 (diff)
parent6320e5e7f148cbba331d4bfb8a47b102238233ff (diff)
Merge "[Catalyst] Improve PreferenceBindingTestUtils" into main
-rw-r--r--packages/SettingsLib/Preference/testutils/com/android/settingslib/preference/PreferenceBindingTestUtils.kt13
1 files changed, 11 insertions, 2 deletions
diff --git a/packages/SettingsLib/Preference/testutils/com/android/settingslib/preference/PreferenceBindingTestUtils.kt b/packages/SettingsLib/Preference/testutils/com/android/settingslib/preference/PreferenceBindingTestUtils.kt
index 00bad5203f07..220614bf064f 100644
--- a/packages/SettingsLib/Preference/testutils/com/android/settingslib/preference/PreferenceBindingTestUtils.kt
+++ b/packages/SettingsLib/Preference/testutils/com/android/settingslib/preference/PreferenceBindingTestUtils.kt
@@ -19,18 +19,27 @@ package com.android.settingslib.preference
import android.content.Context
import androidx.annotation.VisibleForTesting
import androidx.preference.Preference
+import androidx.preference.PreferenceScreen
import com.android.settingslib.metadata.PersistentPreference
import com.android.settingslib.metadata.PreferenceMetadata
/** Creates [Preference] widget and binds with metadata. */
+@Suppress("UNCHECKED_CAST")
@VisibleForTesting
-fun <P : Preference> PreferenceMetadata.createAndBindWidget(context: Context): P {
+fun <P : Preference> PreferenceMetadata.createAndBindWidget(
+ context: Context,
+ preferenceScreen: PreferenceScreen? = null,
+): P {
val binding = PreferenceBindingFactory.defaultFactory.getPreferenceBinding(this)!!
return (binding.createWidget(context) as P).also {
if (this is PersistentPreference<*>) {
- storage(context)?.let { keyValueStore ->
+ storage(context).let { keyValueStore ->
it.preferenceDataStore = PreferenceDataStoreAdapter(keyValueStore)
}
+ // Attach preference to preference screen, otherwise `Preference.performClick` does not
+ // interact with underlying datastore
+ (preferenceScreen ?: PreferenceScreenFactory(context).getOrCreatePreferenceScreen())
+ .addPreference(it)
}
binding.bind(it, this)
}