Loading packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/common/SettingsPage.kt +4 −2 Original line number Diff line number Diff line Loading @@ -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" Loading Loading @@ -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, ) } Loading packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/util/Parameter.kt +10 −2 Original line number Diff line number Diff line Loading @@ -29,8 +29,16 @@ fun List<NamedNavArgument>.navRoute(): String { } fun List<NamedNavArgument>.navLink(arguments: Bundle? = null): String { return normalizeArgList(arguments).joinToString("") { arg -> "/$arg" } } fun List<NamedNavArgument>.normalizeArgList( arguments: Bundle? = null, eraseRuntimeValues: Boolean = false ): List<String> { val argsArray = mutableListOf<String>() for (navArg in this) { if (eraseRuntimeValues && navArg.isRuntimeParam()) continue if (arguments == null || !arguments.containsKey(navArg.name)) { argsArray.add(UNSET_PARAM_VALUE) continue Loading @@ -44,7 +52,7 @@ fun List<NamedNavArgument>.navLink(arguments: Bundle? = null): String { } } } return argsArray.joinToString("") { arg -> "/$arg" } return argsArray } fun List<NamedNavArgument>.normalize( Loading @@ -55,7 +63,7 @@ fun List<NamedNavArgument>.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 } Loading packages/SettingsLib/Spa/tests/src/com/android/settingslib/spa/framework/common/SettingsPageTest.kt +2 −2 Original line number Diff line number Diff line Loading @@ -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() Loading @@ -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() Loading Loading
packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/common/SettingsPage.kt +4 −2 Original line number Diff line number Diff line Loading @@ -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" Loading Loading @@ -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, ) } Loading
packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/util/Parameter.kt +10 −2 Original line number Diff line number Diff line Loading @@ -29,8 +29,16 @@ fun List<NamedNavArgument>.navRoute(): String { } fun List<NamedNavArgument>.navLink(arguments: Bundle? = null): String { return normalizeArgList(arguments).joinToString("") { arg -> "/$arg" } } fun List<NamedNavArgument>.normalizeArgList( arguments: Bundle? = null, eraseRuntimeValues: Boolean = false ): List<String> { val argsArray = mutableListOf<String>() for (navArg in this) { if (eraseRuntimeValues && navArg.isRuntimeParam()) continue if (arguments == null || !arguments.containsKey(navArg.name)) { argsArray.add(UNSET_PARAM_VALUE) continue Loading @@ -44,7 +52,7 @@ fun List<NamedNavArgument>.navLink(arguments: Bundle? = null): String { } } } return argsArray.joinToString("") { arg -> "/$arg" } return argsArray } fun List<NamedNavArgument>.normalize( Loading @@ -55,7 +63,7 @@ fun List<NamedNavArgument>.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 } Loading
packages/SettingsLib/Spa/tests/src/com/android/settingslib/spa/framework/common/SettingsPageTest.kt +2 −2 Original line number Diff line number Diff line Loading @@ -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() Loading @@ -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() Loading