Merge "Hide Linux terminal if VM isn't supported" into main am: c8e78dc149
am: bf33cb8c33
Original change: https://android-review.googlesource.com/c/platform/packages/apps/Settings/+/3428339 Change-Id: Ica0388cb13627e2920ab2876ab38c2c070396919 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -129,6 +129,7 @@ android_library {
|
|||||||
},
|
},
|
||||||
|
|
||||||
libs: [
|
libs: [
|
||||||
|
"framework-virtualization.stubs.system",
|
||||||
"telephony-common",
|
"telephony-common",
|
||||||
"ims-common",
|
"ims-common",
|
||||||
],
|
],
|
||||||
|
@@ -16,10 +16,13 @@
|
|||||||
|
|
||||||
package com.android.settings.development.linuxterminal;
|
package com.android.settings.development.linuxterminal;
|
||||||
|
|
||||||
|
import static android.system.virtualmachine.VirtualMachineManager.CAPABILITY_NON_PROTECTED_VM;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
import android.os.Process;
|
import android.os.Process;
|
||||||
import android.os.storage.StorageManager;
|
import android.os.storage.StorageManager;
|
||||||
|
import android.system.virtualmachine.VirtualMachineManager;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.DataUnit;
|
import android.util.DataUnit;
|
||||||
|
|
||||||
@@ -58,9 +61,13 @@ public class LinuxTerminalPreferenceController extends DeveloperOptionsPreferenc
|
|||||||
|
|
||||||
StorageManager storageManager =
|
StorageManager storageManager =
|
||||||
Objects.requireNonNull(context.getSystemService(StorageManager.class));
|
Objects.requireNonNull(context.getSystemService(StorageManager.class));
|
||||||
|
VirtualMachineManager virtualMachineManager =
|
||||||
|
Objects.requireNonNull(context.getSystemService(VirtualMachineManager.class));
|
||||||
mIsDeviceCapable =
|
mIsDeviceCapable =
|
||||||
getTotalMemory() >= MEMORY_MIN_BYTES
|
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().
|
// Avoid lazy initialization because this may be called before displayPreference().
|
||||||
|
@@ -81,6 +81,7 @@ android_robolectric_test {
|
|||||||
|
|
||||||
libs: [
|
libs: [
|
||||||
"android.test.mock.impl",
|
"android.test.mock.impl",
|
||||||
|
"framework-virtualization.stubs.system",
|
||||||
"ims-common",
|
"ims-common",
|
||||||
],
|
],
|
||||||
|
|
||||||
|
@@ -16,6 +16,8 @@
|
|||||||
|
|
||||||
package com.android.settings.development.linuxterminal;
|
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.MEMORY_MIN_BYTES;
|
||||||
import static com.android.settings.development.linuxterminal.LinuxTerminalPreferenceController.STORAGE_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;
|
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;
|
||||||
import android.content.pm.PackageManager.NameNotFoundException;
|
import android.content.pm.PackageManager.NameNotFoundException;
|
||||||
import android.os.storage.StorageManager;
|
import android.os.storage.StorageManager;
|
||||||
|
import android.system.virtualmachine.VirtualMachineManager;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
@@ -43,27 +46,33 @@ import org.robolectric.RobolectricTestRunner;
|
|||||||
/** Tests {@link LinuxTerminalPreferenceController} */
|
/** Tests {@link LinuxTerminalPreferenceController} */
|
||||||
@RunWith(RobolectricTestRunner.class)
|
@RunWith(RobolectricTestRunner.class)
|
||||||
public class LinuxTerminalPreferenceControllerTest {
|
public class LinuxTerminalPreferenceControllerTest {
|
||||||
|
private static final String TERMINAL_PACKAGE_NAME = "com.android.virtualization.terminal";
|
||||||
|
|
||||||
@Mock private Context mContext;
|
@Mock private Context mContext;
|
||||||
@Mock private PackageManager mPackageManager;
|
@Mock private PackageManager mPackageManager;
|
||||||
@Mock private StorageManager mStorageManager;
|
@Mock private StorageManager mStorageManager;
|
||||||
|
@Mock private VirtualMachineManager mVirtualMachineManager;
|
||||||
@Mock private PackageInfo mPackageInfo;
|
@Mock private PackageInfo mPackageInfo;
|
||||||
|
|
||||||
private String mTerminalPackageName = "com.android.virtualization.terminal";
|
|
||||||
private LinuxTerminalPreferenceController mController;
|
private LinuxTerminalPreferenceController mController;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setup() throws Exception {
|
public void setup() throws Exception {
|
||||||
MockitoAnnotations.initMocks(this);
|
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(mPackageManager).when(mContext).getPackageManager();
|
||||||
doReturn(mPackageInfo)
|
doReturn(mPackageInfo)
|
||||||
.when(mPackageManager)
|
.when(mPackageManager)
|
||||||
.getPackageInfo(eq(mTerminalPackageName), anyInt());
|
.getPackageInfo(eq(TERMINAL_PACKAGE_NAME), anyInt());
|
||||||
|
|
||||||
doReturn(mStorageManager).when(mContext).getSystemService(StorageManager.class);
|
doReturn(mStorageManager).when(mContext).getSystemService(StorageManager.class);
|
||||||
doReturn(STORAGE_MIN_BYTES).when(mStorageManager).getPrimaryStorageSize();
|
doReturn(STORAGE_MIN_BYTES).when(mStorageManager).getPrimaryStorageSize();
|
||||||
|
|
||||||
|
doReturn(mVirtualMachineManager)
|
||||||
|
.when(mContext)
|
||||||
|
.getSystemService(VirtualMachineManager.class);
|
||||||
|
doReturn(CAPABILITY_NON_PROTECTED_VM).when(mVirtualMachineManager).getCapabilities();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -82,6 +91,15 @@ public class LinuxTerminalPreferenceControllerTest {
|
|||||||
assertThat(mController.isAvailable()).isFalse();
|
assertThat(mController.isAvailable()).isFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void isAvailable_whenVmNotSupported_returnFalse() {
|
||||||
|
doReturn(0).when(mVirtualMachineManager).getCapabilities();
|
||||||
|
|
||||||
|
mController = createController(mContext);
|
||||||
|
|
||||||
|
assertThat(mController.isAvailable()).isFalse();
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void isAvailable_whenPackageExists_returnsTrue() {
|
public void isAvailable_whenPackageExists_returnsTrue() {
|
||||||
mController = createController(mContext);
|
mController = createController(mContext);
|
||||||
@@ -102,7 +120,7 @@ public class LinuxTerminalPreferenceControllerTest {
|
|||||||
public void isAvailable_whenAppDoesNotExist_returnsFalse() throws Exception {
|
public void isAvailable_whenAppDoesNotExist_returnsFalse() throws Exception {
|
||||||
doThrow(new NameNotFoundException())
|
doThrow(new NameNotFoundException())
|
||||||
.when(mPackageManager)
|
.when(mPackageManager)
|
||||||
.getPackageInfo(eq(mTerminalPackageName), anyInt());
|
.getPackageInfo(eq(TERMINAL_PACKAGE_NAME), anyInt());
|
||||||
|
|
||||||
mController = createController(mContext);
|
mController = createController(mContext);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user