Merge "Migrating to new footer button for lockscreen pages."
diff --git a/src/com/android/settings/deviceinfo/firmwareversion/FirmwareVersionPreferenceController.java b/src/com/android/settings/deviceinfo/firmwareversion/FirmwareVersionPreferenceController.java
index 7d12d43..b7b67b7 100644
--- a/src/com/android/settings/deviceinfo/firmwareversion/FirmwareVersionPreferenceController.java
+++ b/src/com/android/settings/deviceinfo/firmwareversion/FirmwareVersionPreferenceController.java
@@ -23,9 +23,12 @@
import androidx.fragment.app.Fragment;
import androidx.preference.Preference;
+import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
+import com.android.settings.slices.Copyable;
-public class FirmwareVersionPreferenceController extends BasePreferenceController {
+public class FirmwareVersionPreferenceController extends BasePreferenceController implements
+ Copyable {
private Fragment mFragment;
@@ -61,4 +64,10 @@
public boolean isSliceable() {
return true;
}
+
+ @Override
+ public void copy() {
+ Copyable.setCopyContent(mContext, getSummary(),
+ mContext.getText(R.string.firmware_version));
+ }
}
diff --git a/src/com/android/settings/slices/Copyable.java b/src/com/android/settings/slices/Copyable.java
index 12159d1..a480063 100644
--- a/src/com/android/settings/slices/Copyable.java
+++ b/src/com/android/settings/slices/Copyable.java
@@ -16,6 +16,15 @@
package com.android.settings.slices;
+import static android.content.Context.CLIPBOARD_SERVICE;
+
+import android.content.ClipData;
+import android.content.ClipboardManager;
+import android.content.Context;
+import android.widget.Toast;
+
+import com.android.settings.R;
+
/**
* Provide the copy ability for preference controller to copy the data to the clipboard.
*/
@@ -25,4 +34,18 @@
* It is highly recommended to show the toast to notify users when implemented this function.
*/
void copy();
+
+ /**
+ * Set the copy content to the clipboard and show the toast.
+ */
+ static void setCopyContent(Context context, CharSequence copyContent,
+ CharSequence messageTitle) {
+ final ClipboardManager clipboard = (ClipboardManager) context.getSystemService(
+ CLIPBOARD_SERVICE);
+ final ClipData clip = ClipData.newPlainText("text", copyContent);
+ clipboard.setPrimaryClip(clip);
+
+ final String toast = context.getString(R.string.copyable_slice_toast, messageTitle);
+ Toast.makeText(context, toast, Toast.LENGTH_SHORT).show();
+ }
}
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/firmwareversion/FirmwareVersionPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/firmwareversion/FirmwareVersionPreferenceControllerTest.java
index fc674f0b..0c74525 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/firmwareversion/FirmwareVersionPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/deviceinfo/firmwareversion/FirmwareVersionPreferenceControllerTest.java
@@ -16,8 +16,11 @@
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 android.os.Build;
@@ -108,6 +111,17 @@
assertThat(mController.isSliceable()).isTrue();
}
+ @Test
+ public void copy_shouldCopyVersionNumberToClipboard() {
+ mController.copy();
+
+ final Context context = RuntimeEnvironment.application;
+ final ClipboardManager clipboard = (ClipboardManager) context.getSystemService(
+ CLIPBOARD_SERVICE);
+ final CharSequence data = clipboard.getPrimaryClip().getItemAt(0).getText();
+ assertThat(data.toString()).isEqualTo(Build.VERSION.RELEASE);
+ }
+
@Implements(FirmwareVersionDialogFragment.class)
public static class ShadowFirmwareVersionDialogFragment {