Merge "Remove wrapper for device policy manager" into pi-dev

This commit is contained in:
TreeHugger Robot
2018-04-02 18:45:53 +00:00
committed by Android (Google) Code Review
33 changed files with 193 additions and 500 deletions

View File

@@ -17,7 +17,6 @@
package com.android.settings;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Matchers.anyString;
@@ -28,6 +27,7 @@ import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.pm.ApplicationInfo;
@@ -48,7 +48,6 @@ import android.widget.EditText;
import android.widget.TextView;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.wrapper.DevicePolicyManagerWrapper;
import org.junit.Before;
import org.junit.Test;
@@ -74,7 +73,7 @@ public class UtilsTest {
@Mock
private ConnectivityManager connectivityManager;
@Mock
private DevicePolicyManagerWrapper mDevicePolicyManager;
private DevicePolicyManager mDevicePolicyManager;
@Mock
private UserManager mUserManager;
@Mock

View File

@@ -50,10 +50,6 @@ import com.android.settings.testutils.shadow.ShadowAccountManager;
import com.android.settings.testutils.shadow.ShadowContentResolver;
import com.android.settings.testutils.shadow.ShadowDevicePolicyManager;
import com.android.settings.testutils.shadow.ShadowUserManager;
import com.android.settings.wrapper.DevicePolicyManagerWrapper;
import java.util.ArrayList;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
@@ -64,12 +60,14 @@ import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
import org.robolectric.shadows.ShadowApplication;
import java.util.ArrayList;
import java.util.List;
@RunWith(SettingsRobolectricTestRunner.class)
@Config(
shadows = {
@Config(shadows = {
ShadowUserManager.class,
ShadowDevicePolicyManager.class
})
})
public class RemoveAccountPreferenceControllerTest {
private static final String KEY_REMOVE_ACCOUNT = "remove_account";
@@ -78,8 +76,6 @@ public class RemoveAccountPreferenceControllerTest {
@Mock(answer = RETURNS_DEEP_STUBS)
private AccountManager mAccountManager;
@Mock
private DevicePolicyManagerWrapper mDevicePolicyManager;
@Mock
private PreferenceFragment mFragment;
@Mock
private PreferenceManager mPreferenceManager;
@@ -105,10 +101,10 @@ public class RemoveAccountPreferenceControllerTest {
when(mFragment.getFragmentManager()).thenReturn(mFragmentManager);
when(mFragmentManager.beginTransaction()).thenReturn(mFragmentTransaction);
when(mAccountManager.getAuthenticatorTypesAsUser(anyInt()))
.thenReturn(new AuthenticatorDescription[0]);
.thenReturn(new AuthenticatorDescription[0]);
when(mAccountManager.getAccountsAsUser(anyInt())).thenReturn(new Account[0]);
mController = new RemoveAccountPreferenceController(RuntimeEnvironment.application,
mFragment, mDevicePolicyManager);
mFragment);
}
@Test
@@ -128,8 +124,8 @@ public class RemoveAccountPreferenceControllerTest {
mController.onClick(null);
verify(mFragmentTransaction).add(
any(RemoveAccountPreferenceController.ConfirmRemoveAccountDialog.class),
eq(TAG_REMOVE_ACCOUNT_DIALOG));
any(RemoveAccountPreferenceController.ConfirmRemoveAccountDialog.class),
eq(TAG_REMOVE_ACCOUNT_DIALOG));
}
@Test
@@ -141,20 +137,20 @@ public class RemoveAccountPreferenceControllerTest {
List<UserManager.EnforcingUser> enforcingUsers = new ArrayList<>();
enforcingUsers.add(new UserManager.EnforcingUser(userId,
UserManager.RESTRICTION_SOURCE_DEVICE_OWNER));
UserManager.RESTRICTION_SOURCE_DEVICE_OWNER));
ComponentName componentName = new ComponentName("test", "test");
// Ensure that RestrictedLockUtils.checkIfRestrictionEnforced doesn't return null.
ShadowUserManager.getShadow().setUserRestrictionSources(
UserManager.DISALLOW_MODIFY_ACCOUNTS,
UserHandle.of(userId),
enforcingUsers);
UserManager.DISALLOW_MODIFY_ACCOUNTS,
UserHandle.of(userId),
enforcingUsers);
ShadowDevicePolicyManager.getShadow().setDeviceOwnerComponentOnAnyUser(componentName);
mController.onClick(null);
verify(mFragmentTransaction, never()).add(
any(RemoveAccountPreferenceController.ConfirmRemoveAccountDialog.class),
eq(TAG_REMOVE_ACCOUNT_DIALOG));
any(RemoveAccountPreferenceController.ConfirmRemoveAccountDialog.class),
eq(TAG_REMOVE_ACCOUNT_DIALOG));
}
@Test
@@ -168,11 +164,11 @@ public class RemoveAccountPreferenceControllerTest {
Account account = new Account("Account11", "com.acct1");
UserHandle userHandle = new UserHandle(10);
RemoveAccountPreferenceController.ConfirmRemoveAccountDialog dialog =
RemoveAccountPreferenceController.ConfirmRemoveAccountDialog.show(
mFragment, account, userHandle);
RemoveAccountPreferenceController.ConfirmRemoveAccountDialog.show(
mFragment, account, userHandle);
dialog.onCreate(new Bundle());
dialog.onClick(null, 0);
verify(mAccountManager).removeAccountAsUser(eq(account), nullable(Activity.class),
nullable(AccountManagerCallback.class), nullable(Handler.class), eq(userHandle));
nullable(AccountManagerCallback.class), nullable(Handler.class), eq(userHandle));
}
}

View File

@@ -37,7 +37,6 @@ import android.os.UserHandle;
import android.os.UserManager;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.wrapper.DevicePolicyManagerWrapper;
import com.android.settings.wrapper.IPackageManagerWrapper;
import com.android.settingslib.wrapper.PackageManagerWrapper;
@@ -84,7 +83,7 @@ public final class AppWithAdminGrantedPermissionsCounterTest {
@Mock
private IPackageManagerWrapper mPackageManagerService;
@Mock
private DevicePolicyManagerWrapper mDevicePolicyManager;
private DevicePolicyManager mDevicePolicyManager;
private int mAppCount = -1;
private ApplicationInfo mApp1;
@@ -214,13 +213,13 @@ public final class AppWithAdminGrantedPermissionsCounterTest {
// * app5 uses install-time permissions. It was installed by the admin but did not request
// any of the permissions. It should not be counted.
when(mPackageManager.getInstalledApplicationsAsUser(PackageManager.GET_DISABLED_COMPONENTS
| PackageManager.GET_DISABLED_UNTIL_USED_COMPONENTS
| PackageManager.MATCH_ANY_USER,
| PackageManager.GET_DISABLED_UNTIL_USED_COMPONENTS
| PackageManager.MATCH_ANY_USER,
MAIN_USER_ID)).thenReturn(Arrays.asList(mApp1, mApp2, mApp3, mApp4, mApp5));
// The second user has one app installed. This app uses run-time permissions. It has been
// granted both permissions by the admin. It should be counted.
when(mPackageManager.getInstalledApplicationsAsUser(PackageManager.GET_DISABLED_COMPONENTS
| PackageManager.GET_DISABLED_UNTIL_USED_COMPONENTS,
| PackageManager.GET_DISABLED_UNTIL_USED_COMPONENTS,
MANAGED_PROFILE_ID)).thenReturn(Arrays.asList(mApp6));
// app3 and app5 were installed by enterprise policy.
@@ -250,7 +249,7 @@ public final class AppWithAdminGrantedPermissionsCounterTest {
}
private class AppWithAdminGrantedPermissionsCounterTestable
extends AppWithAdminGrantedPermissionsCounter {
extends AppWithAdminGrantedPermissionsCounter {
private AppWithAdminGrantedPermissionsCounterTestable(String[] permissions) {
super(mContext, permissions, mPackageManager, mPackageManagerService,
mDevicePolicyManager);

View File

@@ -34,7 +34,6 @@ import android.os.UserHandle;
import android.os.UserManager;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.wrapper.DevicePolicyManagerWrapper;
import com.android.settings.wrapper.IPackageManagerWrapper;
import com.android.settingslib.wrapper.PackageManagerWrapper;
@@ -81,7 +80,7 @@ public final class AppWithAdminGrantedPermissionsListerTest {
@Mock
private IPackageManagerWrapper mPackageManagerService;
@Mock
private DevicePolicyManagerWrapper mDevicePolicyManager;
private DevicePolicyManager mDevicePolicyManager;
private List<UserAppInfo> mAppList = Collections.emptyList();
@@ -109,14 +108,14 @@ public final class AppWithAdminGrantedPermissionsListerTest {
// * app5 uses install-time permissions. It was installed by the admin but did not request
// any of the permissions. It should not be listed.
when(mPackageManager.getInstalledApplicationsAsUser(PackageManager.GET_DISABLED_COMPONENTS
| PackageManager.GET_DISABLED_UNTIL_USED_COMPONENTS
| PackageManager.MATCH_ANY_USER,
| PackageManager.GET_DISABLED_UNTIL_USED_COMPONENTS
| PackageManager.MATCH_ANY_USER,
MAIN_USER_ID)).thenReturn(Arrays.asList(
buildInfo(APP_1_UID, APP_1, 0 /* flags */, Build.VERSION_CODES.M),
buildInfo(APP_2_UID, APP_2, 0 /* flags */, Build.VERSION_CODES.M),
buildInfo(APP_3_UID, APP_3, 0 /* flags */, Build.VERSION_CODES.LOLLIPOP),
buildInfo(APP_4_UID, APP_4, 0 /* flags */, Build.VERSION_CODES.LOLLIPOP),
buildInfo(APP_5_UID, APP_5, 0 /* flags */, Build.VERSION_CODES.LOLLIPOP)));
buildInfo(APP_1_UID, APP_1, 0 /* flags */, Build.VERSION_CODES.M),
buildInfo(APP_2_UID, APP_2, 0 /* flags */, Build.VERSION_CODES.M),
buildInfo(APP_3_UID, APP_3, 0 /* flags */, Build.VERSION_CODES.LOLLIPOP),
buildInfo(APP_4_UID, APP_4, 0 /* flags */, Build.VERSION_CODES.LOLLIPOP),
buildInfo(APP_5_UID, APP_5, 0 /* flags */, Build.VERSION_CODES.LOLLIPOP)));
// Grant run-time permissions as appropriate.
when(mDevicePolicyManager.getPermissionGrantState(null, APP_1, PERMISSION_1))
@@ -164,9 +163,9 @@ public final class AppWithAdminGrantedPermissionsListerTest {
// The second user has one app installed. This app uses run-time permissions. It has been
// granted both permissions by the admin. It should be listed.
when(mPackageManager.getInstalledApplicationsAsUser(PackageManager.GET_DISABLED_COMPONENTS
| PackageManager.GET_DISABLED_UNTIL_USED_COMPONENTS,
| PackageManager.GET_DISABLED_UNTIL_USED_COMPONENTS,
MANAGED_PROFILE_ID)).thenReturn(Arrays.asList(
buildInfo(APP_6_UID, APP_6, 0 /* flags */, Build.VERSION_CODES.M)));
buildInfo(APP_6_UID, APP_6, 0 /* flags */, Build.VERSION_CODES.M)));
// Grant run-time permissions as appropriate.
when(mDevicePolicyManager.getPermissionGrantState(eq(null), eq(APP_6), anyObject()))

View File

@@ -33,7 +33,6 @@ import android.os.UserManager;
import com.android.settings.testutils.ApplicationTestUtils;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.wrapper.DevicePolicyManagerWrapper;
import com.android.settings.wrapper.IPackageManagerWrapper;
import com.android.settingslib.wrapper.PackageManagerWrapper;
@@ -75,7 +74,7 @@ public final class ApplicationFeatureProviderImplTest {
@Mock
private IPackageManagerWrapper mPackageManagerService;
@Mock
private DevicePolicyManagerWrapper mDevicePolicyManager;
private DevicePolicyManager mDevicePolicyManager;
private ApplicationFeatureProvider mProvider;
@@ -258,16 +257,16 @@ public final class ApplicationFeatureProviderImplTest {
new UserInfo(MANAGED_PROFILE_ID, "managed profile", 0)));
when(mPackageManager.getInstalledApplicationsAsUser(PackageManager.GET_DISABLED_COMPONENTS
| PackageManager.GET_DISABLED_UNTIL_USED_COMPONENTS
| PackageManager.MATCH_ANY_USER,
| PackageManager.GET_DISABLED_UNTIL_USED_COMPONENTS
| PackageManager.MATCH_ANY_USER,
MAIN_USER_ID)).thenReturn(Arrays.asList(
ApplicationTestUtils.buildInfo(APP_1_UID, APP_1, 0 /* flags */,
Build.VERSION_CODES.M)));
ApplicationTestUtils.buildInfo(APP_1_UID, APP_1, 0 /* flags */,
Build.VERSION_CODES.M)));
when(mPackageManager.getInstalledApplicationsAsUser(PackageManager.GET_DISABLED_COMPONENTS
| PackageManager.GET_DISABLED_UNTIL_USED_COMPONENTS,
| PackageManager.GET_DISABLED_UNTIL_USED_COMPONENTS,
MANAGED_PROFILE_ID)).thenReturn(Arrays.asList(
ApplicationTestUtils.buildInfo(APP_2_UID, APP_2, 0 /* flags */,
Build.VERSION_CODES.LOLLIPOP)));
ApplicationTestUtils.buildInfo(APP_2_UID, APP_2, 0 /* flags */,
Build.VERSION_CODES.LOLLIPOP)));
}
private ResolveInfo createResolveInfo(String packageName) {

View File

@@ -17,7 +17,6 @@
package com.android.settings.applications.appinfo;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.argThat;
@@ -28,6 +27,7 @@ import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.app.admin.DevicePolicyManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
@@ -47,7 +47,6 @@ import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.widget.ActionButtonPreference;
import com.android.settings.widget.ActionButtonPreferenceTest;
import com.android.settings.wrapper.DevicePolicyManagerWrapper;
import com.android.settingslib.Utils;
import com.android.settingslib.applications.AppUtils;
import com.android.settingslib.applications.ApplicationsState;
@@ -74,7 +73,7 @@ public class AppActionButtonPreferenceControllerTest {
@Mock
private UserManager mUserManager;
@Mock
private DevicePolicyManagerWrapper mDevicePolicyManager;
private DevicePolicyManager mDevicePolicyManager;
@Mock
private AppInfoDashboardFragment mFragment;
@Mock
@@ -108,7 +107,7 @@ public class AppActionButtonPreferenceControllerTest {
@Test
public void getAvailabilityStatus_notInstantApp_shouldReturnAvailable() {
ReflectionHelpers.setStaticField(AppUtils.class, "sInstantAppDataProvider",
(InstantAppDataProvider) (i -> false));
(InstantAppDataProvider) (i -> false));
assertThat(mController.getAvailabilityStatus()).isEqualTo(mController.AVAILABLE);
}
@@ -116,7 +115,7 @@ public class AppActionButtonPreferenceControllerTest {
@Test
public void getAvailabilityStatus_isInstantApp_shouldReturnDisabled() {
ReflectionHelpers.setStaticField(AppUtils.class, "sInstantAppDataProvider",
(InstantAppDataProvider) (i -> true));
(InstantAppDataProvider) (i -> true));
assertThat(mController.getAvailabilityStatus()).isEqualTo(mController.DISABLED_FOR_USER);
}
@@ -220,7 +219,7 @@ public class AppActionButtonPreferenceControllerTest {
@Test
public void checkForceStop_isStateProtected_shouldDisableForceStop() {
ReflectionHelpers.setStaticField(AppUtils.class, "sInstantAppDataProvider",
(InstantAppDataProvider) (i -> false));
(InstantAppDataProvider) (i -> false));
final String packageName = "Package1";
final PackageInfo packageInfo = new PackageInfo();
packageInfo.packageName = packageName;
@@ -228,7 +227,7 @@ public class AppActionButtonPreferenceControllerTest {
appInfo.uid = 42;
appInfo.sourceDir = "source";
final ApplicationsState.AppEntry appEntry = new ApplicationsState.AppEntry(
mContext, appInfo, 0);
mContext, appInfo, 0);
when(mPackageManager.isPackageStateProtected(packageName, 0)).thenReturn(true);
mController.checkForceStop(appEntry, packageInfo);
@@ -278,7 +277,7 @@ public class AppActionButtonPreferenceControllerTest {
mController.checkForceStop(appEntry, packageInfo);
verify(mContext).sendOrderedBroadcastAsUser(argThat(intent-> intent != null
verify(mContext).sendOrderedBroadcastAsUser(argThat(intent -> intent != null
&& intent.getAction().equals(Intent.ACTION_QUERY_PACKAGE_RESTART)),
any(UserHandle.class), nullable(String.class), any(BroadcastReceiver.class),
nullable(Handler.class), anyInt(), nullable(String.class), nullable(Bundle.class));

View File

@@ -17,7 +17,8 @@
package com.android.settings.applications.appinfo;
import static com.android.settings.applications.appinfo.AppInfoDashboardFragment.ARG_PACKAGE_NAME;
import static com.android.settings.applications.appinfo.AppInfoDashboardFragment.UNINSTALL_ALL_USERS_MENU;
import static com.android.settings.applications.appinfo.AppInfoDashboardFragment
.UNINSTALL_ALL_USERS_MENU;
import static com.android.settings.applications.appinfo.AppInfoDashboardFragment.UNINSTALL_UPDATES;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.any;
@@ -31,6 +32,7 @@ import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.app.admin.DevicePolicyManager;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
@@ -45,7 +47,6 @@ import android.view.MenuItem;
import com.android.settings.SettingsActivity;
import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.wrapper.DevicePolicyManagerWrapper;
import com.android.settingslib.applications.AppUtils;
import com.android.settingslib.applications.ApplicationsState.AppEntry;
import com.android.settingslib.applications.instantapps.InstantAppDataProvider;
@@ -75,7 +76,7 @@ public final class AppInfoDashboardFragmentTest {
@Mock
private SettingsActivity mActivity;
@Mock
private DevicePolicyManagerWrapper mDevicePolicyManager;
private DevicePolicyManager mDevicePolicyManager;
@Mock
private PackageManager mPackageManager;
@@ -249,7 +250,7 @@ public final class AppInfoDashboardFragmentTest {
@Test
public void getNumberOfUserWithPackageInstalled_twoUsersInstalled_shouldReturnTwo()
throws PackageManager.NameNotFoundException{
throws PackageManager.NameNotFoundException {
final String packageName = "Package1";
final int userID1 = 1;
final int userID2 = 2;
@@ -273,7 +274,7 @@ public final class AppInfoDashboardFragmentTest {
@Test
public void getNumberOfUserWithPackageInstalled_oneUserInstalled_shouldReturnOne()
throws PackageManager.NameNotFoundException{
throws PackageManager.NameNotFoundException {
final String packageName = "Package1";
final int userID1 = 1;
final int userID2 = 2;
@@ -311,7 +312,7 @@ public final class AppInfoDashboardFragmentTest {
@Test
public void startAppInfoFragment_noCrashOnNullArgs() {
final SettingsPreferenceFragment caller = mock(SettingsPreferenceFragment.class);
final SettingsActivity sa = mock (SettingsActivity.class);
final SettingsActivity sa = mock(SettingsActivity.class);
when(caller.getActivity()).thenReturn(sa);
when(caller.getContext()).thenReturn(sa);
final AppEntry appEntry = mock(AppEntry.class);
@@ -324,7 +325,7 @@ public final class AppInfoDashboardFragmentTest {
@Test
public void startAppInfoFragment_includesNewAndOldArgs() {
final SettingsPreferenceFragment caller = mock(SettingsPreferenceFragment.class);
final SettingsActivity sa = mock (SettingsActivity.class);
final SettingsActivity sa = mock(SettingsActivity.class);
when(caller.getContext()).thenReturn(sa);
final AppEntry appEntry = mock(AppEntry.class);
appEntry.info = mock(ApplicationInfo.class);
@@ -339,10 +340,10 @@ public final class AppInfoDashboardFragmentTest {
verify(caller).startActivityForResult(intent.capture(), any(Integer.class));
assertThat(intent.getValue().getBundleExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS)
.containsKey("test"))
.isTrue();
.containsKey("test"))
.isTrue();
assertThat(intent.getValue().getBundleExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS)
.containsKey(ARG_PACKAGE_NAME))
.isTrue();
.containsKey(ARG_PACKAGE_NAME))
.isTrue();
}
}

View File

@@ -33,7 +33,7 @@ import android.provider.Settings;
import com.android.settings.TimeoutListPreference;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.testutils.shadow.ShadowDevicePolicyManagerWrapper;
import com.android.settings.testutils.shadow.ShadowDevicePolicyManager;
import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
import org.junit.Before;
@@ -50,7 +50,7 @@ import java.util.Collections;
import java.util.List;
@RunWith(SettingsRobolectricTestRunner.class)
@Config(shadows = ShadowDevicePolicyManagerWrapper.class)
@Config(shadows = ShadowDevicePolicyManager.class)
public class TimeoutPreferenceControllerTest {
private static final int TIMEOUT = 30;
@@ -93,7 +93,7 @@ public class TimeoutPreferenceControllerTest {
final int profileUserId = UserHandle.myUserId();
final long timeout = 10000;
when(mUserManager.getProfiles(profileUserId)).thenReturn(Collections.emptyList());
ShadowDevicePolicyManagerWrapper.setMaximumTimeToLock(profileUserId, timeout);
ShadowDevicePolicyManager.getShadow().setMaximumTimeToLock(profileUserId, timeout);
mController.updateState(mPreference);
verify(mPreference).removeUnusableTimeouts(timeout, null);
@@ -104,7 +104,7 @@ public class TimeoutPreferenceControllerTest {
final int profileUserId = UserHandle.myUserId();
final long timeout = 100;
when(mUserManager.getProfiles(profileUserId)).thenReturn(Collections.emptyList());
ShadowDevicePolicyManagerWrapper.setMaximumTimeToLock(profileUserId, timeout);
ShadowDevicePolicyManager.getShadow().setMaximumTimeToLock(profileUserId, timeout);
int userId = UserHandle.myUserId();
List<UserManager.EnforcingUser> enforcingUsers = new ArrayList<>();
@@ -124,8 +124,8 @@ public class TimeoutPreferenceControllerTest {
ArgumentCaptor<EnforcedAdmin> adminCaptor = ArgumentCaptor.forClass(EnforcedAdmin.class);
verify(mPreference, times(2))
.removeUnusableTimeouts(longCaptor.capture(), adminCaptor.capture());
assertEquals(0, (long)longCaptor.getValue());
.removeUnusableTimeouts(longCaptor.capture(), adminCaptor.capture());
assertEquals(0, (long) longCaptor.getValue());
assertTrue(adminCaptor.getValue() != null);
}
}

View File

@@ -94,7 +94,7 @@ public class ActionDisabledByAdminDialogHelperTest {
mHelper.showAdminPolicies(admin, mActivity);
final Intent intent = mActivityShadow.getNextStartedActivity();
assertEquals(intent.getComponent(), new ComponentName(mActivity,
Settings.DeviceAdminSettingsActivity.class.getName()));
Settings.DeviceAdminSettingsActivity.class.getName()));
}
@Test
@@ -139,9 +139,7 @@ public class ActionDisabledByAdminDialogHelperTest {
@Test
public void testSetAdminSupportDetails() {
final DevicePolicyManager dpm = RuntimeEnvironment.application.getSystemService(
DevicePolicyManager.class);
final ShadowDevicePolicyManager dpmShadow = Shadow.extract(dpm);
final ShadowDevicePolicyManager dpmShadow = ShadowDevicePolicyManager.getShadow();
final UserManager userManager = RuntimeEnvironment.application.getSystemService(
UserManager.class);
final ShadowUserManager userManagerShadow = Shadow.extract(userManager);
@@ -165,9 +163,7 @@ public class ActionDisabledByAdminDialogHelperTest {
@Test
public void testSetAdminSupportDetailsNotAdmin() {
final DevicePolicyManager dpm = RuntimeEnvironment.application.getSystemService(
DevicePolicyManager.class);
final ShadowDevicePolicyManager dpmShadow = Shadow.extract(dpm);
final ShadowDevicePolicyManager dpmShadow = ShadowDevicePolicyManager.getShadow();
final UserManager userManager = RuntimeEnvironment.application.getSystemService(
UserManager.class);
final ShadowUserManager userManagerShadow = Shadow.extract(userManager);

View File

@@ -21,6 +21,7 @@ import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.reset;
import static org.mockito.Mockito.when;
import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.pm.ApplicationInfo;
@@ -36,7 +37,6 @@ import android.text.SpannableStringBuilder;
import com.android.settings.R;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.wrapper.ConnectivityManagerWrapper;
import com.android.settings.wrapper.DevicePolicyManagerWrapper;
import com.android.settingslib.wrapper.PackageManagerWrapper;
import org.junit.Before;
@@ -68,7 +68,7 @@ public class EnterprisePrivacyFeatureProviderImplTest {
private List<UserInfo> mProfiles = new ArrayList<>();
private @Mock Context mContext;
private @Mock DevicePolicyManagerWrapper mDevicePolicyManager;
private @Mock DevicePolicyManager mDevicePolicyManager;
private @Mock PackageManagerWrapper mPackageManagerWrapper;
private @Mock PackageManager mPackageManager;
private @Mock UserManager mUserManager;

View File

@@ -34,6 +34,7 @@ import static org.mockito.Mockito.when;
import android.app.ActivityManager;
import android.app.Application;
import android.app.Fragment;
import android.app.admin.DevicePolicyManager;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
@@ -46,7 +47,6 @@ import com.android.settings.SettingsActivity;
import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.widget.ActionButtonPreference;
import com.android.settings.widget.ActionButtonPreferenceTest;
import com.android.settings.wrapper.DevicePolicyManagerWrapper;
import com.android.settingslib.applications.AppUtils;
import com.android.settingslib.applications.ApplicationsState;
import com.android.settingslib.applications.instantapps.InstantAppDataProvider;
@@ -87,7 +87,7 @@ public class AppButtonsPreferenceControllerTest {
@Mock
private PackageManager mPackageManger;
@Mock
private DevicePolicyManagerWrapper mDpm;
private DevicePolicyManager mDpm;
@Mock
private ActivityManager mAm;
@Mock
@@ -367,7 +367,7 @@ public class AppButtonsPreferenceControllerTest {
* {@link ButtonActionDialogFragment.AppButtonsDialogListener}
*/
public static class TestFragment extends Fragment
implements ButtonActionDialogFragment.AppButtonsDialogListener {
implements ButtonActionDialogFragment.AppButtonsDialogListener {
@Override
public void handleDialogClick(int type) {

View File

@@ -38,7 +38,6 @@ import com.android.settings.R;
import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.testutils.shadow.SettingsShadowResources;
import com.android.settings.testutils.shadow.ShadowFragment;
import com.android.settings.wrapper.DevicePolicyManagerWrapper;
import com.android.settingslib.fuelgauge.PowerWhitelistBackend;
import org.junit.Before;
@@ -74,7 +73,7 @@ public class BackgroundActivityPreferenceControllerTest {
@Mock
private DevicePolicyManager mDevicePolicyManager;
@Mock
private DevicePolicyManagerWrapper mDevicePolicyManagerWrapper;
private DevicePolicyManager mDevicePolicyManagerWrapper;
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
private AdvancedPowerUsageDetail mFragment;
@Mock

View File

@@ -34,7 +34,7 @@ import com.android.settings.TimeoutListPreference;
import com.android.settings.security.trustagent.TrustAgentManager;
import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.testutils.shadow.ShadowDevicePolicyManagerWrapper;
import com.android.settings.testutils.shadow.ShadowDevicePolicyManager;
import org.junit.Before;
import org.junit.Test;
@@ -47,7 +47,7 @@ import org.robolectric.annotation.Config;
import java.util.Collections;
@RunWith(SettingsRobolectricTestRunner.class)
@Config(shadows = ShadowDevicePolicyManagerWrapper.class)
@Config(shadows = ShadowDevicePolicyManager.class)
public class LockAfterTimeoutPreferenceControllerTest {
private static final int TEST_USER_ID = 0;
@@ -120,11 +120,11 @@ public class LockAfterTimeoutPreferenceControllerTest {
when(um.getProfiles(userId)).thenReturn(Collections.emptyList());
// Fake list of timeout values.
when(mPreference.getEntries()).thenReturn(new CharSequence[] {"10"} );
when(mPreference.getEntryValues()).thenReturn(new CharSequence[] {"10000"} );
when(mPreference.getEntries()).thenReturn(new CharSequence[] {"10"});
when(mPreference.getEntryValues()).thenReturn(new CharSequence[] {"10000"});
Settings.System.putInt(mContext.getContentResolver(), SCREEN_OFF_TIMEOUT, displayTimeout);
ShadowDevicePolicyManagerWrapper.setMaximumTimeToLock(userId, adminTimeout);
ShadowDevicePolicyManager.getShadow().setMaximumTimeToLock(userId, adminTimeout);
mController.updateState(mPreference);

View File

@@ -2,33 +2,35 @@ package com.android.settings.testutils.shadow;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.UserIdInt;
import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Implementation;
import org.robolectric.annotation.Implements;
import org.robolectric.shadow.api.Shadow;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import org.robolectric.shadow.api.Shadow;
/**
* This shadow if using {@link ShadowDevicePolicyManagerWrapper} is not possible.
*/
@Implements(DevicePolicyManager.class)
public class ShadowDevicePolicyManager extends org.robolectric.shadows.ShadowDevicePolicyManager {
private final Map<Integer, Long> mProfileTimeouts = new HashMap<>();
private Map<Integer, CharSequence> mSupportMessagesMap = new HashMap<>();
private boolean mIsAdminActiveAsUser = false;
ComponentName mDeviceOwnerComponentName;
private int mDeviceOwnerUserId = -1;
public void setShortSupportMessageForUser(ComponentName admin, int userHandle, String message) {
mSupportMessagesMap.put(Objects.hash(admin, userHandle), message);
}
@Implementation
public @Nullable CharSequence getShortSupportMessageForUser(@NonNull ComponentName admin,
public @Nullable
CharSequence getShortSupportMessageForUser(@NonNull ComponentName admin,
int userHandle) {
return mSupportMessagesMap.get(Objects.hash(admin, userHandle));
}
@@ -38,20 +40,39 @@ public class ShadowDevicePolicyManager extends org.robolectric.shadows.ShadowDev
return mIsAdminActiveAsUser;
}
@Implementation
public int getDeviceOwnerUserId() {
return mDeviceOwnerUserId;
}
@Implementation
public long getMaximumTimeToLock(ComponentName admin, @UserIdInt int userHandle) {
return mProfileTimeouts.getOrDefault(userHandle, 0L);
}
@Implementation
public ComponentName getDeviceOwnerComponentOnAnyUser() {
return mDeviceOwnerComponentName;
}
public void setIsAdminActiveAsUser(boolean active) {
mIsAdminActiveAsUser = active;
}
public static ShadowDevicePolicyManager getShadow() {
return (ShadowDevicePolicyManager) Shadow.extract(
RuntimeEnvironment.application.getSystemService(DevicePolicyManager.class));
public void setDeviceOwnerUserId(int id) {
mDeviceOwnerUserId = id;
}
public ComponentName getDeviceOwnerComponentOnAnyUser() {
return mDeviceOwnerComponentName;
public void setMaximumTimeToLock(@UserIdInt int userHandle, Long timeout) {
mProfileTimeouts.put(userHandle, timeout);
}
public void setDeviceOwnerComponentOnAnyUser(ComponentName admin) {
mDeviceOwnerComponentName = admin;
}
public static ShadowDevicePolicyManager getShadow() {
return (ShadowDevicePolicyManager) Shadow.extract(
RuntimeEnvironment.application.getSystemService(DevicePolicyManager.class));
}
}

View File

@@ -1,65 +0,0 @@
/*
* Copyright (C) 2017 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.settings.testutils.shadow;
import android.annotation.UserIdInt;
import android.content.ComponentName;
import com.android.settings.wrapper.DevicePolicyManagerWrapper;
import org.robolectric.annotation.Implementation;
import org.robolectric.annotation.Implements;
import java.util.HashMap;
import java.util.Map;
/**
* Shadow for {@link DevicePolicyManagerWrapper} to allow stubbing hidden methods.
*/
@Implements(DevicePolicyManagerWrapper.class)
public class ShadowDevicePolicyManagerWrapper {
private static ComponentName deviceOComponentName = null;
private static int deviceOwnerUserId = -1;
private static final Map<Integer, Long> profileTimeouts = new HashMap<>();
@Implementation
public ComponentName getDeviceOwnerComponentOnAnyUser() {
return deviceOComponentName;
}
@Implementation
public int getDeviceOwnerUserId() {
return deviceOwnerUserId;
}
@Implementation
public long getMaximumTimeToLock(ComponentName admin, @UserIdInt int userHandle) {
return profileTimeouts.getOrDefault(userHandle, 0L);
}
public static void setDeviceOComponentName(ComponentName deviceOComponentName) {
ShadowDevicePolicyManagerWrapper.deviceOComponentName = deviceOComponentName;
}
public static void setDeviceOwnerUserId(int deviceOwnerUserId) {
ShadowDevicePolicyManagerWrapper.deviceOwnerUserId = deviceOwnerUserId;
}
public static void setMaximumTimeToLock(@UserIdInt int userHandle, Long timeout) {
profileTimeouts.put(userHandle, timeout);
}
}

View File

@@ -63,7 +63,7 @@ import com.android.settings.R;
import com.android.settings.applications.LayoutPreference;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.testutils.shadow.ShadowBidiFormatter;
import com.android.settings.testutils.shadow.ShadowDevicePolicyManagerWrapper;
import com.android.settings.testutils.shadow.ShadowDevicePolicyManager;
import com.android.settings.testutils.shadow.ShadowEntityHeaderController;
import com.android.settings.testutils.shadow.ShadowPackageManagerWrapper;
import com.android.settings.widget.ActionButtonPreference;
@@ -96,10 +96,10 @@ import java.util.stream.Collectors;
@RunWith(SettingsRobolectricTestRunner.class)
@Config(shadows = {
ShadowDevicePolicyManagerWrapper.class,
ShadowEntityHeaderController.class,
ShadowPackageManagerWrapper.class,
ShadowBidiFormatter.class
ShadowDevicePolicyManager.class,
ShadowEntityHeaderController.class,
ShadowPackageManagerWrapper.class,
ShadowBidiFormatter.class
})
public class WifiDetailPreferenceControllerTest {
@@ -372,7 +372,7 @@ public class WifiDetailPreferenceControllerTest {
mController.onPause();
verify(mockConnectivityManager, times(1))
.unregisterNetworkCallback(mCallbackCaptor.getValue());
.unregisterNetworkCallback(mCallbackCaptor.getValue());
}
@Test
@@ -469,16 +469,16 @@ public class WifiDetailPreferenceControllerTest {
@Test
public void dnsServersPref_shouldHaveDetailTextSet() throws UnknownHostException {
mLinkProperties.addDnsServer(InetAddress.getByAddress(new byte[]{8,8,4,4}));
mLinkProperties.addDnsServer(InetAddress.getByAddress(new byte[]{8,8,8,8}));
mLinkProperties.addDnsServer(InetAddress.getByAddress(new byte[] {8, 8, 4, 4}));
mLinkProperties.addDnsServer(InetAddress.getByAddress(new byte[] {8, 8, 8, 8}));
mLinkProperties.addDnsServer(Constants.IPV6_DNS);
displayAndResume();
verify(mockDnsPref).setDetailText(
"8.8.4.4\n" +
"8.8.8.8\n" +
Constants.IPV6_DNS.getHostAddress());
"8.8.8.8\n" +
Constants.IPV6_DNS.getHostAddress());
}
@Test
@@ -591,8 +591,8 @@ public class WifiDetailPreferenceControllerTest {
updateLinkProperties(lp);
inOrder.verify(mockDnsPref).setDetailText(
Constants.IPV6_DNS.getHostAddress() + "\n" +
Constants.IPV4_DNS1.getHostAddress() + "\n" +
Constants.IPV4_DNS2.getHostAddress());
Constants.IPV4_DNS1.getHostAddress() + "\n" +
Constants.IPV4_DNS2.getHostAddress());
inOrder.verify(mockDnsPref).setVisible(true);
}
@@ -693,8 +693,8 @@ public class WifiDetailPreferenceControllerTest {
mockWifiConfig.creatorUid = doUid;
ComponentName doComponent = new ComponentName(doPackage, "some.Class");
ShadowPackageManagerWrapper.setPackageUidAsUser(doPackage, doUserId, doUid);
ShadowDevicePolicyManagerWrapper.setDeviceOComponentName(doComponent);
ShadowDevicePolicyManagerWrapper.setDeviceOwnerUserId(doUserId);
ShadowDevicePolicyManager.getShadow().setDeviceOwnerComponentOnAnyUser(doComponent);
ShadowDevicePolicyManager.getShadow().setDeviceOwnerUserId(doUserId);
Settings.Global.putInt(mContext.getContentResolver(),
Settings.Global.WIFI_DEVICE_OWNER_CONFIGS_LOCKDOWN, 1);
@@ -779,7 +779,7 @@ public class WifiDetailPreferenceControllerTest {
displayAndResume();
List <Preference> addrs = mIpv6AddressCaptor.getAllValues();
List<Preference> addrs = mIpv6AddressCaptor.getAllValues();
String expectedAddresses = String.join("\n",
asString(Constants.IPV6_LINKLOCAL),
@@ -840,6 +840,7 @@ public class WifiDetailPreferenceControllerTest {
verify(mockAccessPoint, times(2)).getLevel();
verify(mockIconInjector, times(1)).getIcon(anyInt());
}
@Test
public void testRefreshRssiViews_shouldUpdateOnLevelChange() {
displayAndResume();