Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 847c0660 authored by Stanley Wang's avatar Stanley Wang
Browse files

Implement the Copyable interface to FirmwareVersionPreferenceController

Copy the device version number to clipboard for Copyable.

Change-Id: Ibb687be442dd702c1197c7e8295fac5b914a7047
Fixes: 121463656
Test: manual and robotests
parent eb5e435d
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -23,9 +23,12 @@ import android.text.TextUtils;
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 class FirmwareVersionPreferenceController extends BasePreferenceControlle
    public boolean isSliceable() {
        return true;
    }

    @Override
    public void copy() {
        Copyable.setCopyContent(mContext, getSummary(),
                mContext.getText(R.string.firmware_version));
    }
}
+23 −0
Original line number Diff line number Diff line
@@ -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 @@ public interface Copyable {
     * 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();
    }
}
+14 −0
Original line number Diff line number Diff line
@@ -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 @@ public class FirmwareVersionPreferenceControllerTest {
        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 {