summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Treehugger Robot <android-test-infra-autosubmit@system.gserviceaccount.com> 2024-11-04 02:05:58 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2024-11-04 02:05:58 +0000
commitd8f1ec24b848bf66d65604cab4015cd49edcbc74 (patch)
tree83dd1a50f80b2b3eb0238ebb9c5af70aa0172671
parentc98601721c27e033ab128a61f705ae2b1b9f8b9a (diff)
parentafda30b22264ccd868303d200a291ab4e0b919a3 (diff)
Merge "[Catalyst] Add binding helper extension for test" into main
-rw-r--r--packages/SettingsLib/Preference/testutils/com/android/settingslib/preference/PreferenceBindingTestUtils.kt37
1 files changed, 37 insertions, 0 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
new file mode 100644
index 000000000000..f3142d031aa9
--- /dev/null
+++ b/packages/SettingsLib/Preference/testutils/com/android/settingslib/preference/PreferenceBindingTestUtils.kt
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2024 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.settingslib.preference
+
+import android.content.Context
+import androidx.annotation.VisibleForTesting
+import androidx.preference.Preference
+import com.android.settingslib.metadata.PersistentPreference
+import com.android.settingslib.metadata.PreferenceMetadata
+
+/** Creates [Preference] widget and binds with metadata. */
+@VisibleForTesting
+fun <P : Preference> PreferenceMetadata.createAndBindWidget(context: Context): P {
+ val binding = DefaultPreferenceBindingFactory.getPreferenceBinding(this)
+ return (binding.createWidget(context) as P).also {
+ if (this is PersistentPreference<*>) {
+ storage(context)?.let { keyValueStore ->
+ it.preferenceDataStore = PreferenceDataStoreAdapter(keyValueStore)
+ }
+ }
+ binding.bind(it, this)
+ }
+}