diff options
| author | 2024-12-22 20:21:37 -0800 | |
|---|---|---|
| committer | 2024-12-22 20:21:37 -0800 | |
| commit | a6e8e0103318946361b46da2bcd324a0a6b80443 (patch) | |
| tree | 2cb513c87fe6c75b760153cdc338f9a34d406055 | |
| parent | 50119482b81aa4980a3d5e88d18ede9c00084ac8 (diff) | |
| parent | 6320e5e7f148cbba331d4bfb8a47b102238233ff (diff) | |
Merge "[Catalyst] Improve PreferenceBindingTestUtils" into main
| -rw-r--r-- | packages/SettingsLib/Preference/testutils/com/android/settingslib/preference/PreferenceBindingTestUtils.kt | 13 |
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) } |