Update Action Not Allowed Dialog text for a financed device
Bug: 173826319 Bug: 158157476 Test: Used a test device that is registered via ZT Test: m RunSettingsRoboTests ROBOTEST_FILTER=ActionDisabledByAdminDialogHelperTest Change-Id: Iefeb0b653764952e409dfd862d9cc54c4f5e7fc9
This commit is contained in:
@@ -16,6 +16,8 @@
|
||||
|
||||
package com.android.settings.enterprise;
|
||||
|
||||
import static android.app.admin.DevicePolicyManager.DEVICE_OWNER_TYPE_FINANCED;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertNull;
|
||||
@@ -34,8 +36,10 @@ import android.content.pm.UserInfo;
|
||||
import android.os.Process;
|
||||
import android.os.UserHandle;
|
||||
import android.os.UserManager;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.FrameLayout;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
@@ -104,12 +108,24 @@ public class ActionDisabledByAdminDialogHelperTest {
|
||||
Settings.DeviceAdminSettingsActivity.class.getName()));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSetAdminSupportIconForFinancedDevice_adminSupportIconIsGone() {
|
||||
final ShadowDevicePolicyManager dpmShadow = ShadowDevicePolicyManager.getShadow();
|
||||
final ViewGroup view = new FrameLayout(mActivity);
|
||||
final ImageView supportIconImageView = createAdminSupportIconImageView(view, mActivity);
|
||||
final ComponentName component = new ComponentName("some.package.name",
|
||||
"some.package.name.SomeClass");
|
||||
setupFinancedDevice(dpmShadow);
|
||||
|
||||
mHelper.setAdminSupportIcon(view, component, 123);
|
||||
|
||||
assertEquals(View.GONE, supportIconImageView.getVisibility());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSetAdminSupportTitle() {
|
||||
final ViewGroup view = new FrameLayout(mActivity);
|
||||
final TextView textView = new TextView(mActivity);
|
||||
textView.setId(R.id.admin_support_dialog_title);
|
||||
view.addView(textView);
|
||||
final TextView textView = createAdminSupportDialogTitleTextView(view, mActivity);
|
||||
|
||||
mHelper.setAdminSupportTitle(view, UserManager.DISALLOW_ADJUST_VOLUME);
|
||||
assertEquals(Shadows.shadowOf(textView).innerText(),
|
||||
@@ -144,6 +160,19 @@ public class ActionDisabledByAdminDialogHelperTest {
|
||||
mActivity.getString(R.string.disabled_by_policy_title));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSetAdminSupportTitleForFinancedDevice() {
|
||||
final ShadowDevicePolicyManager dpmShadow = ShadowDevicePolicyManager.getShadow();
|
||||
final ViewGroup view = new FrameLayout(mActivity);
|
||||
final TextView textView = createAdminSupportDialogTitleTextView(view, mActivity);
|
||||
setupFinancedDevice(dpmShadow);
|
||||
|
||||
mHelper.setAdminSupportTitle(view, null);
|
||||
|
||||
assertEquals(Shadows.shadowOf(textView).innerText(),
|
||||
mActivity.getString(R.string.disabled_by_policy_title_financed_device));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSetAdminSupportDetails() {
|
||||
final ShadowDevicePolicyManager dpmShadow = ShadowDevicePolicyManager.getShadow();
|
||||
@@ -154,17 +183,13 @@ public class ActionDisabledByAdminDialogHelperTest {
|
||||
final ComponentName component = new ComponentName("some.package.name",
|
||||
"some.package.name.SomeClass");
|
||||
final EnforcedAdmin admin = new EnforcedAdmin(component, UserHandle.of(123));
|
||||
final TextView textView = new TextView(mActivity);
|
||||
|
||||
textView.setId(R.id.admin_support_msg);
|
||||
view.addView(textView);
|
||||
final TextView textView = createAdminSupportTextView(view, mActivity);
|
||||
dpmShadow.setShortSupportMessageForUser(component, 123, "some message");
|
||||
dpmShadow.setIsAdminActiveAsUser(true);
|
||||
userManagerShadow.addProfile(new UserInfo(123, null, 0));
|
||||
userManagerShadow.addUserProfile(new UserHandle(123));
|
||||
ShadowProcess.setUid(Process.SYSTEM_UID);
|
||||
createShadowWorkProfile(userManagerShadow);
|
||||
|
||||
mHelper.setAdminSupportDetails(mActivity, view, admin);
|
||||
|
||||
assertNotNull(admin.component);
|
||||
assertEquals("some message", Shadows.shadowOf(textView).innerText());
|
||||
}
|
||||
@@ -175,16 +200,40 @@ public class ActionDisabledByAdminDialogHelperTest {
|
||||
final UserManager userManager = RuntimeEnvironment.application.getSystemService(
|
||||
UserManager.class);
|
||||
final ShadowUserManager userManagerShadow = Shadow.extract(userManager);
|
||||
final ViewGroup view = new FrameLayout(mActivity);
|
||||
final ComponentName component = new ComponentName("some.package.name",
|
||||
"some.package.name.SomeClass");
|
||||
final EnforcedAdmin admin = new EnforcedAdmin(component, UserHandle.of(123));
|
||||
|
||||
final TextView textView = createAdminSupportTextView(view, mActivity);
|
||||
dpmShadow.setShortSupportMessageForUser(component, 123, "some message");
|
||||
dpmShadow.setIsAdminActiveAsUser(false);
|
||||
userManagerShadow.addProfile(new UserInfo(123, null, 0));
|
||||
|
||||
mHelper.setAdminSupportDetails(mActivity, null, admin);
|
||||
mHelper.setAdminSupportDetails(mActivity, textView, admin);
|
||||
|
||||
assertNull(admin.component);
|
||||
assertEquals(mActivity.getString(R.string.default_admin_support_msg),
|
||||
Shadows.shadowOf(textView).innerText());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSetAdminSupportDetailsForFinancedDevice_shortSupportMessageIsNull() {
|
||||
final ShadowDevicePolicyManager dpmShadow = ShadowDevicePolicyManager.getShadow();
|
||||
final UserManager userManager = RuntimeEnvironment.application.getSystemService(
|
||||
UserManager.class);
|
||||
final ShadowUserManager userManagerShadow = Shadow.extract(userManager);
|
||||
final ViewGroup view = new FrameLayout(mActivity);
|
||||
final ComponentName component = new ComponentName("some.package.name",
|
||||
"some.package.name.SomeClass");
|
||||
final EnforcedAdmin admin = new EnforcedAdmin(component, UserHandle.of(123));
|
||||
final TextView textView = createAdminSupportTextView(view, mActivity);
|
||||
setupFinancedDevice(dpmShadow);
|
||||
createShadowWorkProfile(userManagerShadow);
|
||||
|
||||
mHelper.setAdminSupportDetails(mActivity, view, admin);
|
||||
|
||||
assertNotNull(admin.component);
|
||||
assertEquals("", Shadows.shadowOf(textView).innerText());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -210,4 +259,44 @@ public class ActionDisabledByAdminDialogHelperTest {
|
||||
mHelper.maybeSetLearnMoreButton(builder);
|
||||
verify(builder, never()).setNeutralButton(anyInt(), any());
|
||||
}
|
||||
|
||||
private static ImageView createAdminSupportIconImageView(final ViewGroup view,
|
||||
final Activity activity) {
|
||||
final ImageView supportIconView = new ImageView(activity);
|
||||
supportIconView.setId(R.id.admin_support_icon);
|
||||
view.addView(supportIconView);
|
||||
return supportIconView;
|
||||
}
|
||||
|
||||
private static TextView createAdminSupportDialogTitleTextView(final ViewGroup view,
|
||||
final Activity activity) {
|
||||
final TextView textView = new TextView(activity);
|
||||
textView.setId(R.id.admin_support_dialog_title);
|
||||
view.addView(textView);
|
||||
return textView;
|
||||
}
|
||||
|
||||
private static TextView createAdminSupportTextView(final ViewGroup view,
|
||||
final Activity activity) {
|
||||
final TextView textView = new TextView(activity);
|
||||
textView.setId(R.id.admin_support_msg);
|
||||
view.addView(textView);
|
||||
return textView;
|
||||
}
|
||||
|
||||
private static void createShadowWorkProfile(final ShadowUserManager userManagerShadow) {
|
||||
userManagerShadow.addProfile(new UserInfo(123, null, 0));
|
||||
userManagerShadow.addUserProfile(new UserHandle(123));
|
||||
ShadowProcess.setUid(Process.SYSTEM_UID);
|
||||
}
|
||||
|
||||
private static void setupFinancedDevice(final ShadowDevicePolicyManager dpmShadow) {
|
||||
final ComponentName component = new ComponentName("some.package.name",
|
||||
"some.package.name.SomeClass");
|
||||
dpmShadow.setDeviceOwner(component);
|
||||
dpmShadow.setDeviceOwnerComponentOnAnyUser(component);
|
||||
dpmShadow.setDeviceOwnerType(component, DEVICE_OWNER_TYPE_FINANCED);
|
||||
dpmShadow.setShortSupportMessageForUser(component, 123, null);
|
||||
dpmShadow.setIsAdminActiveAsUser(true);
|
||||
}
|
||||
}
|
||||
|
@@ -1,11 +1,13 @@
|
||||
package com.android.settings.testutils.shadow;
|
||||
|
||||
import static android.app.admin.DevicePolicyManager.DEVICE_OWNER_TYPE_DEFAULT;
|
||||
import static android.app.admin.DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED;
|
||||
|
||||
import android.annotation.NonNull;
|
||||
import android.annotation.Nullable;
|
||||
import android.annotation.UserIdInt;
|
||||
import android.app.admin.DevicePolicyManager;
|
||||
import android.app.admin.DevicePolicyManager.DeviceOwnerType;
|
||||
import android.app.admin.PasswordMetrics;
|
||||
import android.app.admin.PasswordPolicy;
|
||||
import android.content.ComponentName;
|
||||
@@ -23,6 +25,7 @@ import java.util.Objects;
|
||||
public class ShadowDevicePolicyManager extends org.robolectric.shadows.ShadowDevicePolicyManager {
|
||||
|
||||
private final Map<Integer, Long> mProfileTimeouts = new HashMap<>();
|
||||
private final Map<String, Integer> mDeviceOwnerTypes = new HashMap<>();
|
||||
private Map<Integer, CharSequence> mSupportMessagesMap = new HashMap<>();
|
||||
private boolean mIsAdminActiveAsUser = false;
|
||||
private ComponentName mDeviceOwnerComponentName;
|
||||
@@ -77,6 +80,16 @@ public class ShadowDevicePolicyManager extends org.robolectric.shadows.ShadowDev
|
||||
mDeviceOwnerComponentName = admin;
|
||||
}
|
||||
|
||||
public void setDeviceOwnerType(@NonNull ComponentName admin,
|
||||
@DeviceOwnerType int deviceOwnerType) {
|
||||
mDeviceOwnerTypes.put(admin.getPackageName(), deviceOwnerType);
|
||||
}
|
||||
|
||||
@DeviceOwnerType
|
||||
public int getDeviceOwnerType(@NonNull ComponentName admin) {
|
||||
return mDeviceOwnerTypes.getOrDefault(admin.getPackageName(), DEVICE_OWNER_TYPE_DEFAULT);
|
||||
}
|
||||
|
||||
@Implementation
|
||||
public PasswordMetrics getPasswordMinimumMetrics(int userHandle) {
|
||||
PasswordPolicy policy = new PasswordPolicy();
|
||||
|
Reference in New Issue
Block a user