From fc4a3f2626bd1069f25c2434487b0a72748c61fd Mon Sep 17 00:00:00 2001 From: Zekan Qian Date: Wed, 1 Feb 2023 16:24:23 +0800 Subject: [PATCH] Add arguments in displayName of page. Bug: 244122804 Test: unit-test & local build gallery Change-Id: Ic370f271ddbb5316ec4a061ebc07a1f7d5a3cc92 --- .../settingslib/spa/framework/common/SettingsPage.kt | 6 ++++-- .../settingslib/spa/framework/util/Parameter.kt | 12 ++++++++++-- .../spa/framework/common/SettingsPageTest.kt | 4 ++-- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/common/SettingsPage.kt b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/common/SettingsPage.kt index 8bbeb628b3de9..94cfcc2519d20 100644 --- a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/common/SettingsPage.kt +++ b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/common/SettingsPage.kt @@ -22,6 +22,7 @@ import androidx.navigation.NamedNavArgument import com.android.settingslib.spa.framework.util.isRuntimeParam import com.android.settingslib.spa.framework.util.navLink import com.android.settingslib.spa.framework.util.normalize +import com.android.settingslib.spa.framework.util.normalizeArgList private const val NULL_PAGE_NAME = "NULL" @@ -114,9 +115,10 @@ data class SettingsPage( fun SettingsPageProvider.createSettingsPage(arguments: Bundle? = null): SettingsPage { return SettingsPage.create( name = name, - displayName = displayName, + displayName = displayName + parameter.normalizeArgList(arguments, eraseRuntimeValues = true) + .joinToString("") { arg -> "/$arg" }, parameter = parameter, - arguments = arguments + arguments = arguments, ) } diff --git a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/util/Parameter.kt b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/util/Parameter.kt index be303f09fb75d..f0eeb13f9d1af 100644 --- a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/util/Parameter.kt +++ b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/util/Parameter.kt @@ -29,8 +29,16 @@ fun List.navRoute(): String { } fun List.navLink(arguments: Bundle? = null): String { + return normalizeArgList(arguments).joinToString("") { arg -> "/$arg" } +} + +fun List.normalizeArgList( + arguments: Bundle? = null, + eraseRuntimeValues: Boolean = false +): List { val argsArray = mutableListOf() for (navArg in this) { + if (eraseRuntimeValues && navArg.isRuntimeParam()) continue if (arguments == null || !arguments.containsKey(navArg.name)) { argsArray.add(UNSET_PARAM_VALUE) continue @@ -44,7 +52,7 @@ fun List.navLink(arguments: Bundle? = null): String { } } } - return argsArray.joinToString("") { arg -> "/$arg" } + return argsArray } fun List.normalize( @@ -55,7 +63,7 @@ fun List.normalize( val normArgs = Bundle() for (navArg in this) { // Erase value of runtime parameters. - if (navArg.isRuntimeParam() && eraseRuntimeValues) { + if (eraseRuntimeValues && navArg.isRuntimeParam()) { normArgs.putString(navArg.name, null) continue } diff --git a/packages/SettingsLib/Spa/tests/src/com/android/settingslib/spa/framework/common/SettingsPageTest.kt b/packages/SettingsLib/Spa/tests/src/com/android/settingslib/spa/framework/common/SettingsPageTest.kt index 1f5de2d972453..7fa1e26e66e5a 100644 --- a/packages/SettingsLib/Spa/tests/src/com/android/settingslib/spa/framework/common/SettingsPageTest.kt +++ b/packages/SettingsLib/Spa/tests/src/com/android/settingslib/spa/framework/common/SettingsPageTest.kt @@ -75,7 +75,7 @@ class SettingsPageTest { ) ) assertThat(page.sppName).isEqualTo("SppWithParam") - assertThat(page.displayName).isEqualTo("SppWithParam") + assertThat(page.displayName).isEqualTo("SppWithParam/myStr/10") assertThat(page.buildRoute()).isEqualTo("SppWithParam/myStr/10") assertThat(page.isCreateBy("SppWithParam")).isTrue() assertThat(page.hasRuntimeParam()).isFalse() @@ -100,7 +100,7 @@ class SettingsPageTest { ) ) assertThat(page.sppName).isEqualTo("SppWithRtParam") - assertThat(page.displayName).isEqualTo("SppWithRtParam") + assertThat(page.displayName).isEqualTo("SppWithRtParam/myStr/10") assertThat(page.buildRoute()).isEqualTo("SppWithRtParam/myStr/10/rtStr") assertThat(page.isCreateBy("SppWithRtParam")).isTrue() assertThat(page.hasRuntimeParam()).isTrue()