diff --git a/src/com/android/settings/deviceinfo/hardwareinfo/HardwareRevisionPreferenceController.java b/src/com/android/settings/deviceinfo/hardwareinfo/HardwareRevisionPreferenceController.java index f88239061bf..e7f642316bc 100644 --- a/src/com/android/settings/deviceinfo/hardwareinfo/HardwareRevisionPreferenceController.java +++ b/src/com/android/settings/deviceinfo/hardwareinfo/HardwareRevisionPreferenceController.java @@ -21,6 +21,7 @@ import android.os.SystemProperties; import com.android.settings.R; import com.android.settings.core.BasePreferenceController; +import com.android.settings.slices.Sliceable; public class HardwareRevisionPreferenceController extends BasePreferenceController { @@ -44,6 +45,17 @@ public class HardwareRevisionPreferenceController extends BasePreferenceControll return true; } + @Override + public boolean isCopyableSlice() { + return true; + } + + @Override + public void copy() { + Sliceable.setCopyContent(mContext, getSummary(), + mContext.getText(R.string.hardware_revision)); + } + @Override public CharSequence getSummary() { return SystemProperties.get("ro.boot.hardware.revision"); diff --git a/tests/robotests/src/com/android/settings/deviceinfo/hardwareinfo/HardwareRevisionPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/hardwareinfo/HardwareRevisionPreferenceControllerTest.java new file mode 100644 index 00000000000..98ffbd01bbf --- /dev/null +++ b/tests/robotests/src/com/android/settings/deviceinfo/hardwareinfo/HardwareRevisionPreferenceControllerTest.java @@ -0,0 +1,71 @@ +/* + * 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.hardwareinfo; + +import static android.content.Context.CLIPBOARD_SERVICE; + +import static com.google.common.truth.Truth.assertThat; + +import android.content.ClipboardManager; +import android.content.Context; +import android.os.SystemProperties; + +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 HardwareRevisionPreferenceControllerTest { + + private Context mContext; + private HardwareRevisionPreferenceController mController; + + @Before + public void setUp() { + MockitoAnnotations.initMocks(this); + mContext = RuntimeEnvironment.application; + mController = new HardwareRevisionPreferenceController(mContext, + "hardware_info_device_revision"); + } + + @Test + public void isSliceable_shouldBeSliceable() { + assertThat(mController.isSliceable()).isTrue(); + } + + @Test + public void isCopyableSlice_shouldBeCopyableSlice() { + assertThat(mController.isCopyableSlice()).isTrue(); + } + + @Test + public void copy_shouldCopyHardwareRevisionToClipboard() { + final String fakeHardwareVer = "FakeVer1.0"; + SystemProperties.set("ro.boot.hardware.revision", fakeHardwareVer); + + mController.copy(); + + final ClipboardManager clipboard = (ClipboardManager) mContext.getSystemService( + CLIPBOARD_SERVICE); + final CharSequence data = clipboard.getPrimaryClip().getItemAt(0).getText(); + + assertThat(data.toString()).isEqualTo(fakeHardwareVer); + } +} \ No newline at end of file