diff --git a/src/com/android/settings/deviceinfo/firmwareversion/FirmwareVersionScreen.kt b/src/com/android/settings/deviceinfo/firmwareversion/FirmwareVersionScreen.kt index 401cd16c03e..0908f9eaa85 100644 --- a/src/com/android/settings/deviceinfo/firmwareversion/FirmwareVersionScreen.kt +++ b/src/com/android/settings/deviceinfo/firmwareversion/FirmwareVersionScreen.kt @@ -52,7 +52,7 @@ class FirmwareVersionScreen : PreferenceScreenCreator, PreferenceSummaryProvider +PreferenceWidget("module_version", R.string.module_version) +BasebandVersionPreference() +KernelVersionPreference() - +PreferenceWidget("os_build_number", R.string.build_number) + +SimpleBuildNumberPreference() } private class PreferenceWidget(override val key: String, override val title: Int) : diff --git a/src/com/android/settings/deviceinfo/firmwareversion/SimpleBuildNumberPreference.kt b/src/com/android/settings/deviceinfo/firmwareversion/SimpleBuildNumberPreference.kt new file mode 100644 index 00000000000..62cc2f985e7 --- /dev/null +++ b/src/com/android/settings/deviceinfo/firmwareversion/SimpleBuildNumberPreference.kt @@ -0,0 +1,52 @@ +/* + * 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.settings.deviceinfo.firmwareversion + +import android.content.Context +import android.os.Build +import android.text.BidiFormatter +import android.view.View.LAYOUT_DIRECTION_RTL +import androidx.preference.Preference +import com.android.settings.R +import com.android.settingslib.metadata.PreferenceMetadata +import com.android.settingslib.metadata.PreferenceSummaryProvider +import com.android.settingslib.preference.PreferenceBinding + +// LINT.IfChange +class SimpleBuildNumberPreference : + PreferenceMetadata, PreferenceSummaryProvider, PreferenceBinding { + + override val key: String + get() = "os_build_number" + + override val title: Int + get() = R.string.build_number + + override fun isIndexable(context: Context) = false + + override fun getSummary(context: Context): CharSequence? { + val isRtl = context.resources.configuration.layoutDirection == LAYOUT_DIRECTION_RTL + return BidiFormatter.getInstance(isRtl).unicodeWrap(Build.DISPLAY) + } + + override fun bind(preference: Preference, metadata: PreferenceMetadata) { + super.bind(preference, metadata) + preference.isSelectable = false + preference.isCopyingEnabled = true + } +} +// LINT.ThenChange(SimpleBuildNumberPreferenceController.java) diff --git a/src/com/android/settings/deviceinfo/firmwareversion/SimpleBuildNumberPreferenceController.java b/src/com/android/settings/deviceinfo/firmwareversion/SimpleBuildNumberPreferenceController.java index 53f5ff9aa9d..11988f7002e 100644 --- a/src/com/android/settings/deviceinfo/firmwareversion/SimpleBuildNumberPreferenceController.java +++ b/src/com/android/settings/deviceinfo/firmwareversion/SimpleBuildNumberPreferenceController.java @@ -22,6 +22,7 @@ import android.text.BidiFormatter; import com.android.settings.core.BasePreferenceController; +// LINT.IfChange public class SimpleBuildNumberPreferenceController extends BasePreferenceController { public SimpleBuildNumberPreferenceController(Context context, @@ -39,3 +40,4 @@ public class SimpleBuildNumberPreferenceController extends BasePreferenceControl return BidiFormatter.getInstance().unicodeWrap(Build.DISPLAY); } } +// LINT.ThenChange(SimpleBuildNumberPreference.kt) diff --git a/tests/robotests/src/com/android/settings/deviceinfo/firmwareversion/SimpleBuildNumberPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/firmwareversion/SimpleBuildNumberPreferenceControllerTest.java index 3f050db6ab4..4b7dfc5f749 100644 --- a/tests/robotests/src/com/android/settings/deviceinfo/firmwareversion/SimpleBuildNumberPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/deviceinfo/firmwareversion/SimpleBuildNumberPreferenceControllerTest.java @@ -29,6 +29,7 @@ import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; +// LINT.IfChange @RunWith(RobolectricTestRunner.class) public class SimpleBuildNumberPreferenceControllerTest { @@ -48,3 +49,4 @@ public class SimpleBuildNumberPreferenceControllerTest { assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE_UNSEARCHABLE); } } +// LINT.ThenChange(SimpleBuildNumberPreferenceTest.kt) diff --git a/tests/robotests/src/com/android/settings/deviceinfo/firmwareversion/SimpleBuildNumberPreferenceTest.kt b/tests/robotests/src/com/android/settings/deviceinfo/firmwareversion/SimpleBuildNumberPreferenceTest.kt new file mode 100644 index 00000000000..9c9dd710b14 --- /dev/null +++ b/tests/robotests/src/com/android/settings/deviceinfo/firmwareversion/SimpleBuildNumberPreferenceTest.kt @@ -0,0 +1,55 @@ +/* + * 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.settings.deviceinfo.firmwareversion + +import android.content.Context +import android.os.Build +import android.text.BidiFormatter +import androidx.test.core.app.ApplicationProvider +import com.google.common.truth.Truth.assertThat +import java.util.Locale +import org.junit.Test +import org.junit.runner.RunWith +import org.robolectric.RobolectricTestRunner + +// LINT.IfChange +@RunWith(RobolectricTestRunner::class) +class SimpleBuildNumberPreferenceTest { + private val context: Context = ApplicationProvider.getApplicationContext() + + private val simpleBuildNumberPreference = SimpleBuildNumberPreference() + + @Test + fun isIndexable() { + assertThat(simpleBuildNumberPreference.isIndexable(context)).isFalse() + } + + @Test + fun getSummary_ltr() { + context.resources.configuration.setLayoutDirection(Locale.ENGLISH) + assertThat(simpleBuildNumberPreference.getSummary(context)) + .isEqualTo(BidiFormatter.getInstance(false).unicodeWrap(Build.DISPLAY)) + } + + @Test + fun getSummary_rtl() { + context.resources.configuration.setLayoutDirection(Locale("ar")) + assertThat(simpleBuildNumberPreference.getSummary(context)) + .isEqualTo(BidiFormatter.getInstance(true).unicodeWrap(Build.DISPLAY)) + } +} +// LINT.ThenChange(SimpleBuildNumberPreferenceControllerTest.java)