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

Commit 7c861dc6 authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Hide Linux terminal if VM isn't supported" into main am: c8e78dc1 am: bf33cb8c

parents 47d59ab9 bf33cb8c
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -129,6 +129,7 @@ android_library {
    },

    libs: [
        "framework-virtualization.stubs.system",
        "telephony-common",
        "ims-common",
    ],
+8 −1
Original line number Diff line number Diff line
@@ -16,10 +16,13 @@

package com.android.settings.development.linuxterminal;

import static android.system.virtualmachine.VirtualMachineManager.CAPABILITY_NON_PROTECTED_VM;

import android.content.Context;
import android.content.pm.PackageManager;
import android.os.Process;
import android.os.storage.StorageManager;
import android.system.virtualmachine.VirtualMachineManager;
import android.text.TextUtils;
import android.util.DataUnit;

@@ -58,9 +61,13 @@ public class LinuxTerminalPreferenceController extends DeveloperOptionsPreferenc

        StorageManager storageManager =
                Objects.requireNonNull(context.getSystemService(StorageManager.class));
        VirtualMachineManager virtualMachineManager =
                Objects.requireNonNull(context.getSystemService(VirtualMachineManager.class));
        mIsDeviceCapable =
                getTotalMemory() >= MEMORY_MIN_BYTES
                        && storageManager.getPrimaryStorageSize() >= STORAGE_MIN_BYTES;
                        && storageManager.getPrimaryStorageSize() >= STORAGE_MIN_BYTES
                        && ((virtualMachineManager.getCapabilities() & CAPABILITY_NON_PROTECTED_VM)
                                != 0);
    }

    // Avoid lazy initialization because this may be called before displayPreference().
+1 −0
Original line number Diff line number Diff line
@@ -81,6 +81,7 @@ android_robolectric_test {

    libs: [
        "android.test.mock.impl",
        "framework-virtualization.stubs.system",
        "ims-common",
    ],

+22 −4
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@

package com.android.settings.development.linuxterminal;

import static android.system.virtualmachine.VirtualMachineManager.CAPABILITY_NON_PROTECTED_VM;

import static com.android.settings.development.linuxterminal.LinuxTerminalPreferenceController.MEMORY_MIN_BYTES;
import static com.android.settings.development.linuxterminal.LinuxTerminalPreferenceController.STORAGE_MIN_BYTES;
import static com.android.settings.development.linuxterminal.LinuxTerminalPreferenceController.TERMINAL_PACKAGE_NAME_RESID;
@@ -32,6 +34,7 @@ import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.os.storage.StorageManager;
import android.system.virtualmachine.VirtualMachineManager;

import org.junit.Before;
import org.junit.Test;
@@ -43,27 +46,33 @@ import org.robolectric.RobolectricTestRunner;
/** Tests {@link LinuxTerminalPreferenceController} */
@RunWith(RobolectricTestRunner.class)
public class LinuxTerminalPreferenceControllerTest {
    private static final String TERMINAL_PACKAGE_NAME = "com.android.virtualization.terminal";

    @Mock private Context mContext;
    @Mock private PackageManager mPackageManager;
    @Mock private StorageManager mStorageManager;
    @Mock private VirtualMachineManager mVirtualMachineManager;
    @Mock private PackageInfo mPackageInfo;

    private String mTerminalPackageName = "com.android.virtualization.terminal";
    private LinuxTerminalPreferenceController mController;

    @Before
    public void setup() throws Exception {
        MockitoAnnotations.initMocks(this);
        doReturn(mTerminalPackageName).when(mContext).getString(TERMINAL_PACKAGE_NAME_RESID);
        doReturn(TERMINAL_PACKAGE_NAME).when(mContext).getString(TERMINAL_PACKAGE_NAME_RESID);

        doReturn(mPackageManager).when(mContext).getPackageManager();
        doReturn(mPackageInfo)
                .when(mPackageManager)
                .getPackageInfo(eq(mTerminalPackageName), anyInt());
                .getPackageInfo(eq(TERMINAL_PACKAGE_NAME), anyInt());

        doReturn(mStorageManager).when(mContext).getSystemService(StorageManager.class);
        doReturn(STORAGE_MIN_BYTES).when(mStorageManager).getPrimaryStorageSize();

        doReturn(mVirtualMachineManager)
                .when(mContext)
                .getSystemService(VirtualMachineManager.class);
        doReturn(CAPABILITY_NON_PROTECTED_VM).when(mVirtualMachineManager).getCapabilities();
    }

    @Test
@@ -82,6 +91,15 @@ public class LinuxTerminalPreferenceControllerTest {
        assertThat(mController.isAvailable()).isFalse();
    }

    @Test
    public void isAvailable_whenVmNotSupported_returnFalse() {
        doReturn(0).when(mVirtualMachineManager).getCapabilities();

        mController = createController(mContext);

        assertThat(mController.isAvailable()).isFalse();
    }

    @Test
    public void isAvailable_whenPackageExists_returnsTrue() {
        mController = createController(mContext);
@@ -102,7 +120,7 @@ public class LinuxTerminalPreferenceControllerTest {
    public void isAvailable_whenAppDoesNotExist_returnsFalse() throws Exception {
        doThrow(new NameNotFoundException())
                .when(mPackageManager)
                .getPackageInfo(eq(mTerminalPackageName), anyInt());
                .getPackageInfo(eq(TERMINAL_PACKAGE_NAME), anyInt());

        mController = createController(mContext);