diff --git a/res/xml/firmware_version.xml b/res/xml/firmware_version.xml index 2914ef1acf3..75336ce86b0 100644 --- a/res/xml/firmware_version.xml +++ b/res/xml/firmware_version.xml @@ -68,6 +68,7 @@ android:title="@string/build_number" android:summary="@string/summary_placeholder" settings:enableCopying="true" + settings:allowDynamicSummaryInSlice="true" settings:controller="com.android.settings.deviceinfo.firmwareversion.SimpleBuildNumberPreferenceController"/> \ No newline at end of file diff --git a/src/com/android/settings/deviceinfo/BuildNumberPreferenceController.java b/src/com/android/settings/deviceinfo/BuildNumberPreferenceController.java index f13af9466cd..855a988a178 100644 --- a/src/com/android/settings/deviceinfo/BuildNumberPreferenceController.java +++ b/src/com/android/settings/deviceinfo/BuildNumberPreferenceController.java @@ -16,12 +16,8 @@ package com.android.settings.deviceinfo; -import static android.content.Context.CLIPBOARD_SERVICE; - import android.app.Activity; import android.app.settings.SettingsEnums; -import android.content.ClipData; -import android.content.ClipboardManager; import android.content.ComponentName; import android.content.Context; import android.content.Intent; @@ -79,11 +75,7 @@ public class BuildNumberPreferenceController extends BasePreferenceController im @Override public CharSequence getSummary() { - try { - return BidiFormatter.getInstance().unicodeWrap(Build.DISPLAY); - } catch (Exception e) { - return mContext.getText(R.string.device_info_default); - } + return BidiFormatter.getInstance().unicodeWrap(Build.DISPLAY); } @Override @@ -99,29 +91,7 @@ public class BuildNumberPreferenceController extends BasePreferenceController im @Override public int getAvailabilityStatus() { - return AVAILABLE; - } - - @Override - public boolean isSliceable() { - return true; - } - - @Override - public boolean isCopyableSlice() { - return true; - } - - @Override - public void copy() { - final ClipboardManager clipboard = (ClipboardManager) mContext.getSystemService( - CLIPBOARD_SERVICE); - final ClipData clip = ClipData.newPlainText("text", getSummary()); - clipboard.setPrimaryClip(clip); - - final String toast = mContext.getString(R.string.copyable_slice_toast, - mContext.getText(R.string.build_number)); - Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show(); + return AVAILABLE_UNSEARCHABLE; } @Override diff --git a/src/com/android/settings/deviceinfo/firmwareversion/SimpleBuildNumberPreferenceController.java b/src/com/android/settings/deviceinfo/firmwareversion/SimpleBuildNumberPreferenceController.java index c7d4459aa24..36f1a43f220 100644 --- a/src/com/android/settings/deviceinfo/firmwareversion/SimpleBuildNumberPreferenceController.java +++ b/src/com/android/settings/deviceinfo/firmwareversion/SimpleBuildNumberPreferenceController.java @@ -16,10 +16,16 @@ package com.android.settings.deviceinfo.firmwareversion; +import static android.content.Context.CLIPBOARD_SERVICE; + +import android.content.ClipData; +import android.content.ClipboardManager; import android.content.Context; import android.os.Build; import android.text.BidiFormatter; +import android.widget.Toast; +import com.android.settings.R; import com.android.settings.core.BasePreferenceController; public class SimpleBuildNumberPreferenceController extends BasePreferenceController { @@ -38,4 +44,26 @@ public class SimpleBuildNumberPreferenceController extends BasePreferenceControl public CharSequence getSummary() { return BidiFormatter.getInstance().unicodeWrap(Build.DISPLAY); } + + @Override + public boolean isSliceable() { + return true; + } + + @Override + public boolean isCopyableSlice() { + return true; + } + + @Override + public void copy() { + final ClipboardManager clipboard = (ClipboardManager) mContext.getSystemService( + CLIPBOARD_SERVICE); + final ClipData clip = ClipData.newPlainText("text", getSummary()); + clipboard.setPrimaryClip(clip); + + final String toast = mContext.getString(R.string.copyable_slice_toast, + mContext.getText(R.string.build_number)); + Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show(); + } } diff --git a/tests/robotests/src/com/android/settings/deviceinfo/BuildNumberPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/BuildNumberPreferenceControllerTest.java index 8fae45c584c..18ddd8a6884 100644 --- a/tests/robotests/src/com/android/settings/deviceinfo/BuildNumberPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/deviceinfo/BuildNumberPreferenceControllerTest.java @@ -16,18 +16,14 @@ package com.android.settings.deviceinfo; -import static android.content.Context.CLIPBOARD_SERVICE; - import static com.google.common.truth.Truth.assertThat; -import static org.mockito.Answers.RETURNS_DEEP_STUBS; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import android.app.Activity; -import android.content.ClipboardManager; import android.content.Context; import android.os.Process; import android.os.UserManager; @@ -35,7 +31,6 @@ import android.provider.Settings; import androidx.lifecycle.LifecycleOwner; import androidx.preference.Preference; -import androidx.preference.PreferenceScreen; import com.android.internal.logging.nano.MetricsProto; import com.android.settings.core.InstrumentedPreferenceFragment; @@ -62,13 +57,8 @@ import org.robolectric.shadows.ShadowUserManager; public class BuildNumberPreferenceControllerTest { private static final String KEY_BUILD_NUMBER = "build_number"; - - @Mock(answer = Answers.RETURNS_DEEP_STUBS) - private Activity mActivity; @Mock(answer = Answers.RETURNS_DEEP_STUBS) private InstrumentedPreferenceFragment mFragment; - @Mock(answer = RETURNS_DEEP_STUBS) - private PreferenceScreen mScreen; private ShadowUserManager mShadowUserManager; @@ -200,14 +190,4 @@ public class BuildNumberPreferenceControllerTest { assertThat(activityResultHandled).isTrue(); assertThat(DevelopmentSettingsEnabler.isDevelopmentSettingsEnabled(mContext)).isTrue(); } - - @Test - public void copy_shouldCopyBuildNumberToClipboard() { - mController.copy(); - - final ClipboardManager clipboard = (ClipboardManager) mContext.getSystemService( - CLIPBOARD_SERVICE); - final CharSequence data = clipboard.getPrimaryClip().getItemAt(0).getText(); - assertThat(data.toString()).isEqualTo(mController.getSummary()); - } } diff --git a/tests/robotests/src/com/android/settings/deviceinfo/firmwareversion/SimpleBuildNumberPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/firmwareversion/SimpleBuildNumberPreferenceControllerTest.java new file mode 100644 index 00000000000..3784f086da9 --- /dev/null +++ b/tests/robotests/src/com/android/settings/deviceinfo/firmwareversion/SimpleBuildNumberPreferenceControllerTest.java @@ -0,0 +1,56 @@ +/* + * Copyright (C) 2019 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 static android.content.Context.CLIPBOARD_SERVICE; + +import static com.google.common.truth.Truth.assertThat; + +import android.content.ClipboardManager; +import android.content.Context; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.MockitoAnnotations; +import org.robolectric.RobolectricTestRunner; +import org.robolectric.RuntimeEnvironment; + +@RunWith(RobolectricTestRunner.class) +public class SimpleBuildNumberPreferenceControllerTest { + + private SimpleBuildNumberPreferenceController mController; + private Context mContext; + + @Before + public void setUp() { + MockitoAnnotations.initMocks(this); + mContext = RuntimeEnvironment.application; + + mController = new SimpleBuildNumberPreferenceController(mContext, "test"); + } + + @Test + public void copy_shouldCopyBuildNumberToClipboard() { + mController.copy(); + + final ClipboardManager clipboard = (ClipboardManager) mContext.getSystemService( + CLIPBOARD_SERVICE); + final CharSequence data = clipboard.getPrimaryClip().getItemAt(0).getText(); + assertThat(data.toString()).isEqualTo(mController.getSummary()); + } +}