Remove wrapper for device policy manager

Bug: 76167422
Test: robotests
Change-Id: I69dc7341cf1ff408bc24c2a062586cef25b7b918
This commit is contained in:
Fan Zhang
2018-03-30 16:58:28 -07:00
parent 76f24ebbaf
commit aab36de0d6
33 changed files with 193 additions and 500 deletions

View File

@@ -94,7 +94,6 @@ import com.android.internal.app.UnlaunchableAppActivity;
import com.android.internal.util.ArrayUtils;
import com.android.internal.widget.LockPatternUtils;
import com.android.settings.password.ChooseLockSettingsHelper;
import com.android.settings.wrapper.DevicePolicyManagerWrapper;
import java.net.InetAddress;
import java.util.Iterator;
@@ -874,7 +873,7 @@ public final class Utils extends com.android.settingslib.Utils {
* @param packageName package to check about
*/
public static boolean isProfileOrDeviceOwner(UserManager userManager,
DevicePolicyManagerWrapper devicePolicyManager, String packageName) {
DevicePolicyManager devicePolicyManager, String packageName) {
List<UserInfo> userInfos = userManager.getUsers();
if (devicePolicyManager.isDeviceOwnerAppOnAnyUser(packageName)) {
return true;

View File

@@ -25,7 +25,6 @@ import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.Fragment;
import android.app.admin.DevicePolicyManager;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
@@ -37,13 +36,11 @@ import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.logging.nano.MetricsProto;
import com.android.settings.R;
import com.android.settings.applications.LayoutPreference;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
import com.android.settings.wrapper.DevicePolicyManagerWrapper;
import com.android.settingslib.RestrictedLockUtils;
import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
import com.android.settingslib.core.AbstractPreferenceController;
@@ -58,19 +55,10 @@ public class RemoveAccountPreferenceController extends AbstractPreferenceControl
private Account mAccount;
private Fragment mParentFragment;
private UserHandle mUserHandle;
private DevicePolicyManagerWrapper mDpm;
public RemoveAccountPreferenceController(Context context, Fragment parent) {
this(context, parent, new DevicePolicyManagerWrapper(
(DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE)));
}
@VisibleForTesting
RemoveAccountPreferenceController(Context context, Fragment parent,
DevicePolicyManagerWrapper dpm) {
super(context);
mParentFragment = parent;
mDpm = dpm;
}
@Override

View File

@@ -47,7 +47,6 @@ import com.android.settings.applications.manageapplications.ManageApplications;
import com.android.settings.core.SubSettingLauncher;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.wrapper.DevicePolicyManagerWrapper;
import com.android.settingslib.RestrictedLockUtils;
import com.android.settingslib.applications.ApplicationsState;
import com.android.settingslib.applications.ApplicationsState.AppEntry;
@@ -75,7 +74,7 @@ public abstract class AppInfoBase extends SettingsPreferenceFragment
protected String mPackageName;
protected IUsbManager mUsbManager;
protected DevicePolicyManagerWrapper mDpm;
protected DevicePolicyManager mDpm;
protected UserManager mUserManager;
protected PackageManager mPm;
@@ -94,8 +93,7 @@ public abstract class AppInfoBase extends SettingsPreferenceFragment
.getApplicationFeatureProvider(activity);
mState = ApplicationsState.getInstance(activity.getApplication());
mSession = mState.newSession(this, getLifecycle());
mDpm = new DevicePolicyManagerWrapper(
(DevicePolicyManager) activity.getSystemService(Context.DEVICE_POLICY_SERVICE));
mDpm = (DevicePolicyManager) activity.getSystemService(Context.DEVICE_POLICY_SERVICE);
mUserManager = (UserManager) activity.getSystemService(Context.USER_SERVICE);
mPm = activity.getPackageManager();
IBinder b = ServiceManager.getService(Context.USB_SERVICE);
@@ -161,10 +159,10 @@ public abstract class AppInfoBase extends SettingsPreferenceFragment
}
protected void setIntentAndFinish(boolean finish, boolean appChanged) {
if (localLOGV) Log.i(TAG, "appChanged="+appChanged);
if (localLOGV) Log.i(TAG, "appChanged=" + appChanged);
Intent intent = new Intent();
intent.putExtra(ManageApplications.APP_CHG, appChanged);
SettingsActivity sa = (SettingsActivity)getActivity();
SettingsActivity sa = (SettingsActivity) getActivity();
sa.finishPreferencePanel(Activity.RESULT_OK, intent);
mFinishing = true;
}
@@ -176,6 +174,7 @@ public abstract class AppInfoBase extends SettingsPreferenceFragment
}
protected abstract boolean refreshUi();
protected abstract AlertDialog createDialog(int id, int errorCode);
@Override

View File

@@ -22,7 +22,6 @@ import android.os.Build;
import android.os.RemoteException;
import android.os.UserHandle;
import com.android.settings.wrapper.DevicePolicyManagerWrapper;
import com.android.settings.wrapper.IPackageManagerWrapper;
import com.android.settingslib.wrapper.PackageManagerWrapper;
@@ -34,11 +33,11 @@ public abstract class AppWithAdminGrantedPermissionsCounter extends AppCounter {
private final String[] mPermissions;
private final IPackageManagerWrapper mPackageManagerService;
private final DevicePolicyManagerWrapper mDevicePolicyManager;
private final DevicePolicyManager mDevicePolicyManager;
public AppWithAdminGrantedPermissionsCounter(Context context, String[] permissions,
PackageManagerWrapper packageManager, IPackageManagerWrapper packageManagerService,
DevicePolicyManagerWrapper devicePolicyManager) {
DevicePolicyManager devicePolicyManager) {
super(context, packageManager);
mPermissions = permissions;
mPackageManagerService = packageManagerService;
@@ -52,7 +51,7 @@ public abstract class AppWithAdminGrantedPermissionsCounter extends AppCounter {
}
public static boolean includeInCount(String[] permissions,
DevicePolicyManagerWrapper devicePolicyManager, PackageManagerWrapper packageManager,
DevicePolicyManager devicePolicyManager, PackageManagerWrapper packageManager,
IPackageManagerWrapper packageManagerService, ApplicationInfo info) {
if (info.targetSdkVersion >= Build.VERSION_CODES.M) {
// The app uses run-time permissions. Check whether one or more of the permissions were

View File

@@ -16,9 +16,10 @@
package com.android.settings.applications;
import android.app.admin.DevicePolicyManager;
import android.content.pm.ApplicationInfo;
import android.os.UserManager;
import com.android.settings.wrapper.DevicePolicyManagerWrapper;
import com.android.settings.wrapper.IPackageManagerWrapper;
import com.android.settingslib.wrapper.PackageManagerWrapper;
@@ -29,11 +30,11 @@ import com.android.settingslib.wrapper.PackageManagerWrapper;
public abstract class AppWithAdminGrantedPermissionsLister extends AppLister {
private final String[] mPermissions;
private final IPackageManagerWrapper mPackageManagerService;
private final DevicePolicyManagerWrapper mDevicePolicyManager;
private final DevicePolicyManager mDevicePolicyManager;
public AppWithAdminGrantedPermissionsLister(String[] permissions,
PackageManagerWrapper packageManager, IPackageManagerWrapper packageManagerService,
DevicePolicyManagerWrapper devicePolicyManager, UserManager userManager) {
DevicePolicyManager devicePolicyManager, UserManager userManager) {
super(packageManager, userManager);
mPermissions = permissions;
mPackageManagerService = packageManagerService;

View File

@@ -16,6 +16,7 @@
package com.android.settings.applications;
import android.app.admin.DevicePolicyManager;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ComponentInfo;
@@ -26,7 +27,6 @@ import android.os.RemoteException;
import android.os.UserManager;
import android.util.ArraySet;
import com.android.settings.wrapper.DevicePolicyManagerWrapper;
import com.android.settings.wrapper.IPackageManagerWrapper;
import com.android.settingslib.wrapper.PackageManagerWrapper;
@@ -39,11 +39,11 @@ public class ApplicationFeatureProviderImpl implements ApplicationFeatureProvide
private final Context mContext;
private final PackageManagerWrapper mPm;
private final IPackageManagerWrapper mPms;
private final DevicePolicyManagerWrapper mDpm;
private final DevicePolicyManager mDpm;
private final UserManager mUm;
public ApplicationFeatureProviderImpl(Context context, PackageManagerWrapper pm,
IPackageManagerWrapper pms, DevicePolicyManagerWrapper dpm) {
IPackageManagerWrapper pms, DevicePolicyManager dpm) {
mContext = context.getApplicationContext();
mPm = pm;
mPms = pms;
@@ -150,7 +150,7 @@ public class ApplicationFeatureProviderImpl implements ApplicationFeatureProvide
CurrentUserAndManagedProfileAppWithAdminGrantedPermissionsCounter(Context context,
String[] permissions, PackageManagerWrapper packageManager,
IPackageManagerWrapper packageManagerService,
DevicePolicyManagerWrapper devicePolicyManager, NumberOfAppsCallback callback) {
DevicePolicyManager devicePolicyManager, NumberOfAppsCallback callback) {
super(context, permissions, packageManager, packageManagerService, devicePolicyManager);
mCallback = callback;
}
@@ -182,7 +182,7 @@ public class ApplicationFeatureProviderImpl implements ApplicationFeatureProvide
CurrentUserAppWithAdminGrantedPermissionsLister(String[] permissions,
PackageManagerWrapper packageManager, IPackageManagerWrapper packageManagerService,
DevicePolicyManagerWrapper devicePolicyManager, UserManager userManager,
DevicePolicyManager devicePolicyManager, UserManager userManager,
ListOfAppsCallback callback) {
super(permissions, packageManager, packageManagerService, devicePolicyManager,
userManager);

View File

@@ -44,7 +44,6 @@ import com.android.settings.applications.ApplicationFeatureProvider;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.widget.ActionButtonPreference;
import com.android.settings.wrapper.DevicePolicyManagerWrapper;
import com.android.settingslib.RestrictedLockUtils;
import com.android.settingslib.applications.AppUtils;
import com.android.settingslib.applications.ApplicationsState.AppEntry;
@@ -67,7 +66,7 @@ public class AppActionButtonPreferenceController extends BasePreferenceControlle
private final ApplicationFeatureProvider mApplicationFeatureProvider;
private int mUserId;
private DevicePolicyManagerWrapper mDpm;
private DevicePolicyManager mDpm;
private UserManager mUserManager;
private PackageManager mPm;
@@ -112,8 +111,7 @@ public class AppActionButtonPreferenceController extends BasePreferenceControlle
mPm = mContext.getPackageManager();
}
if (mDpm == null) {
mDpm = new DevicePolicyManagerWrapper(
(DevicePolicyManager) mContext.getSystemService(Context.DEVICE_POLICY_SERVICE));
mDpm = (DevicePolicyManager) mContext.getSystemService(Context.DEVICE_POLICY_SERVICE);
}
if (mUserManager == null) {
mUserManager = (UserManager) mContext.getSystemService(Context.USER_SERVICE);
@@ -125,7 +123,7 @@ public class AppActionButtonPreferenceController extends BasePreferenceControlle
final List<ResolveInfo> homeActivities = new ArrayList<ResolveInfo>();
mPm.getHomeActivities(homeActivities);
mHomePackages.clear();
for (int i = 0; i< homeActivities.size(); i++) {
for (int i = 0; i < homeActivities.size(); i++) {
final ResolveInfo ri = homeActivities.get(i);
final String activityPkg = ri.activityInfo.packageName;
mHomePackages.add(activityPkg);
@@ -298,7 +296,7 @@ public class AppActionButtonPreferenceController extends BasePreferenceControlle
} else {
final Intent intent = new Intent(Intent.ACTION_QUERY_PACKAGE_RESTART,
Uri.fromParts("package", appEntry.info.packageName, null));
intent.putExtra(Intent.EXTRA_PACKAGES, new String[] { appEntry.info.packageName });
intent.putExtra(Intent.EXTRA_PACKAGES, new String[] {appEntry.info.packageName});
intent.putExtra(Intent.EXTRA_UID, appEntry.info.uid);
intent.putExtra(Intent.EXTRA_USER_HANDLE, UserHandle.getUserId(appEntry.info.uid));
Log.d(TAG, "Sending broadcast to query restart status for "

View File

@@ -55,7 +55,6 @@ import com.android.settings.applications.manageapplications.ManageApplications;
import com.android.settings.core.SubSettingLauncher;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.wrapper.DevicePolicyManagerWrapper;
import com.android.settingslib.RestrictedLockUtils;
import com.android.settingslib.applications.AppUtils;
import com.android.settingslib.applications.ApplicationsState;
@@ -122,7 +121,7 @@ public class AppInfoDashboardFragment extends DashboardFragment
private int mUserId;
private String mPackageName;
private DevicePolicyManagerWrapper mDpm;
private DevicePolicyManager mDpm;
private UserManager mUserManager;
private PackageManager mPm;
@@ -198,8 +197,7 @@ public class AppInfoDashboardFragment extends DashboardFragment
super.onCreate(icicle);
mFinishing = false;
final Activity activity = getActivity();
mDpm = new DevicePolicyManagerWrapper(
(DevicePolicyManager) activity.getSystemService(Context.DEVICE_POLICY_SERVICE));
mDpm = (DevicePolicyManager) activity.getSystemService(Context.DEVICE_POLICY_SERVICE);
mUserManager = (UserManager) activity.getSystemService(Context.USER_SERVICE);
mPm = activity.getPackageManager();

View File

@@ -15,6 +15,7 @@ package com.android.settings.display;
import static android.provider.Settings.System.SCREEN_OFF_TIMEOUT;
import android.app.admin.DevicePolicyManager;
import android.content.Context;
import android.os.UserHandle;
import android.os.UserManager;
@@ -25,7 +26,6 @@ import android.util.Log;
import com.android.settings.R;
import com.android.settings.TimeoutListPreference;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.wrapper.DevicePolicyManagerWrapper;
import com.android.settingslib.RestrictedLockUtils;
import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
import com.android.settingslib.core.AbstractPreferenceController;
@@ -61,7 +61,8 @@ public class TimeoutPreferenceController extends AbstractPreferenceController im
final long currentTimeout = Settings.System.getLong(mContext.getContentResolver(),
SCREEN_OFF_TIMEOUT, FALLBACK_SCREEN_TIMEOUT_VALUE);
timeoutListPreference.setValue(String.valueOf(currentTimeout));
final DevicePolicyManagerWrapper dpm = DevicePolicyManagerWrapper.from(mContext);
final DevicePolicyManager dpm =
(DevicePolicyManager) mContext.getSystemService(Context.DEVICE_POLICY_SERVICE);
if (dpm != null) {
final RestrictedLockUtils.EnforcedAdmin admin =
RestrictedLockUtils.checkIfMaximumTimeToLockIsSet(mContext);

View File

@@ -16,6 +16,7 @@
package com.android.settings.enterprise;
import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
@@ -32,7 +33,6 @@ import android.view.View;
import com.android.settings.R;
import com.android.settings.vpn2.VpnUtils;
import com.android.settings.wrapper.ConnectivityManagerWrapper;
import com.android.settings.wrapper.DevicePolicyManagerWrapper;
import com.android.settingslib.wrapper.PackageManagerWrapper;
import java.util.Date;
@@ -41,7 +41,7 @@ import java.util.List;
public class EnterprisePrivacyFeatureProviderImpl implements EnterprisePrivacyFeatureProvider {
private final Context mContext;
private final DevicePolicyManagerWrapper mDpm;
private final DevicePolicyManager mDpm;
private final PackageManagerWrapper mPm;
private final UserManager mUm;
private final ConnectivityManagerWrapper mCm;
@@ -49,7 +49,7 @@ public class EnterprisePrivacyFeatureProviderImpl implements EnterprisePrivacyFe
private static final int MY_USER_ID = UserHandle.myUserId();
public EnterprisePrivacyFeatureProviderImpl(Context context, DevicePolicyManagerWrapper dpm,
public EnterprisePrivacyFeatureProviderImpl(Context context, DevicePolicyManager dpm,
PackageManagerWrapper pm, UserManager um, ConnectivityManagerWrapper cm,
Resources resources) {
mContext = context.getApplicationContext();

View File

@@ -54,7 +54,6 @@ import com.android.settings.fuelgauge.anomaly.AnomalyUtils;
import com.android.settings.fuelgauge.batterytip.BatteryTipPreferenceController;
import com.android.settings.fuelgauge.batterytip.tips.BatteryTip;
import com.android.settings.widget.EntityHeaderController;
import com.android.settings.wrapper.DevicePolicyManagerWrapper;
import com.android.settingslib.applications.AppUtils;
import com.android.settingslib.applications.ApplicationsState;
import com.android.settingslib.core.AbstractPreferenceController;
@@ -116,7 +115,7 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements
private AppButtonsPreferenceController mAppButtonsPreferenceController;
private BackgroundActivityPreferenceController mBackgroundActivityPreferenceController;
private DevicePolicyManagerWrapper mDpm;
private DevicePolicyManager mDpm;
private UserManager mUserManager;
private PackageManager mPackageManager;
private List<Anomaly> mAnomalies;
@@ -167,7 +166,8 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements
.launch();
}
private static @UserIdInt int getUserIdToLaunchAdvancePowerUsageDetail(BatterySipper bs) {
private static @UserIdInt
int getUserIdToLaunchAdvancePowerUsageDetail(BatterySipper bs) {
if (bs.drainType == BatterySipper.DrainType.USER) {
return ActivityManager.getCurrentUser();
}
@@ -206,8 +206,7 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements
super.onAttach(activity);
mState = ApplicationsState.getInstance(getActivity().getApplication());
mDpm = new DevicePolicyManagerWrapper(
(DevicePolicyManager) activity.getSystemService(Context.DEVICE_POLICY_SERVICE));
mDpm = (DevicePolicyManager) activity.getSystemService(Context.DEVICE_POLICY_SERVICE);
mUserManager = (UserManager) activity.getSystemService(Context.USER_SERVICE);
mPackageManager = activity.getPackageManager();
mBatteryUtils = BatteryUtils.getInstance(getContext());

View File

@@ -19,6 +19,7 @@ package com.android.settings.fuelgauge;
import android.app.Activity;
import android.app.ActivityManager;
import android.app.Fragment;
import android.app.admin.DevicePolicyManager;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
@@ -50,7 +51,6 @@ import com.android.settings.Utils;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.widget.ActionButtonPreference;
import com.android.settings.wrapper.DevicePolicyManagerWrapper;
import com.android.settingslib.RestrictedLockUtils;
import com.android.settingslib.applications.AppUtils;
import com.android.settingslib.applications.ApplicationsState;
@@ -102,7 +102,7 @@ public class AppButtonsPreferenceController extends AbstractPreferenceController
private final int mRequestRemoveDeviceAdmin;
private ApplicationsState.Session mSession;
private DevicePolicyManagerWrapper mDpm;
private DevicePolicyManager mDpm;
private UserManager mUserManager;
private PackageManager mPm;
private SettingsActivity mActivity;
@@ -118,7 +118,7 @@ public class AppButtonsPreferenceController extends AbstractPreferenceController
public AppButtonsPreferenceController(SettingsActivity activity, Fragment fragment,
Lifecycle lifecycle, String packageName, ApplicationsState state,
DevicePolicyManagerWrapper dpm, UserManager userManager,
DevicePolicyManager dpm, UserManager userManager,
PackageManager packageManager, int requestUninstall, int requestRemoveDeviceAdmin) {
super(activity);
@@ -477,7 +477,7 @@ public class AppButtonsPreferenceController extends AbstractPreferenceController
} else {
Intent intent = new Intent(Intent.ACTION_QUERY_PACKAGE_RESTART,
Uri.fromParts("package", mAppEntry.info.packageName, null));
intent.putExtra(Intent.EXTRA_PACKAGES, new String[]{mAppEntry.info.packageName});
intent.putExtra(Intent.EXTRA_PACKAGES, new String[] {mAppEntry.info.packageName});
intent.putExtra(Intent.EXTRA_UID, mAppEntry.info.uid);
intent.putExtra(Intent.EXTRA_USER_HANDLE, UserHandle.getUserId(mAppEntry.info.uid));
Log.d(TAG, "Sending broadcast to query restart status for "

View File

@@ -30,7 +30,6 @@ import com.android.settings.fuelgauge.batterytip.BatteryTipDialogFragment;
import com.android.settings.fuelgauge.batterytip.tips.BatteryTip;
import com.android.settings.fuelgauge.batterytip.tips.RestrictAppTip;
import com.android.settings.fuelgauge.batterytip.tips.UnrestrictAppTip;
import com.android.settings.wrapper.DevicePolicyManagerWrapper;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.fuelgauge.PowerWhitelistBackend;
@@ -48,7 +47,7 @@ public class BackgroundActivityPreferenceController extends AbstractPreferenceCo
private final UserManager mUserManager;
private final int mUid;
@VisibleForTesting
DevicePolicyManagerWrapper mDpm;
DevicePolicyManager mDpm;
@VisibleForTesting
BatteryUtils mBatteryUtils;
private InstrumentedPreferenceFragment mFragment;
@@ -66,8 +65,7 @@ public class BackgroundActivityPreferenceController extends AbstractPreferenceCo
super(context);
mPowerWhitelistBackend = backend;
mUserManager = (UserManager) context.getSystemService(Context.USER_SERVICE);
mDpm = new DevicePolicyManagerWrapper(
(DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE));
mDpm = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
mAppOpsManager = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
mUid = uid;
mFragment = fragment;

View File

@@ -52,7 +52,6 @@ import com.android.settings.slices.SlicesFeatureProviderImpl;
import com.android.settings.users.UserFeatureProvider;
import com.android.settings.users.UserFeatureProviderImpl;
import com.android.settings.wrapper.ConnectivityManagerWrapper;
import com.android.settings.wrapper.DevicePolicyManagerWrapper;
import com.android.settings.wrapper.IPackageManagerWrapper;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import com.android.settingslib.wrapper.PackageManagerWrapper;
@@ -114,8 +113,8 @@ public class FeatureFactoryImpl extends FeatureFactory {
mApplicationFeatureProvider = new ApplicationFeatureProviderImpl(context,
new PackageManagerWrapper(context.getPackageManager()),
new IPackageManagerWrapper(AppGlobals.getPackageManager()),
new DevicePolicyManagerWrapper((DevicePolicyManager) context
.getSystemService(Context.DEVICE_POLICY_SERVICE)));
(DevicePolicyManager) context
.getSystemService(Context.DEVICE_POLICY_SERVICE));
}
return mApplicationFeatureProvider;
}
@@ -132,8 +131,7 @@ public class FeatureFactoryImpl extends FeatureFactory {
public EnterprisePrivacyFeatureProvider getEnterprisePrivacyFeatureProvider(Context context) {
if (mEnterprisePrivacyFeatureProvider == null) {
mEnterprisePrivacyFeatureProvider = new EnterprisePrivacyFeatureProviderImpl(context,
new DevicePolicyManagerWrapper((DevicePolicyManager) context
.getSystemService(Context.DEVICE_POLICY_SERVICE)),
(DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE),
new PackageManagerWrapper(context.getPackageManager()),
UserManager.get(context),
new ConnectivityManagerWrapper((ConnectivityManager) context

View File

@@ -32,7 +32,6 @@ import com.android.settings.TimeoutListPreference;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.security.trustagent.TrustAgentManager;
import com.android.settings.wrapper.DevicePolicyManagerWrapper;
import com.android.settingslib.RestrictedLockUtils;
import com.android.settingslib.core.AbstractPreferenceController;
@@ -44,14 +43,14 @@ public class LockAfterTimeoutPreferenceController extends AbstractPreferenceCont
private final int mUserId;
private final LockPatternUtils mLockPatternUtils;
private final TrustAgentManager mTrustAgentManager;
private final DevicePolicyManagerWrapper mDPM;
private final DevicePolicyManager mDPM;
public LockAfterTimeoutPreferenceController(Context context, int userId,
LockPatternUtils lockPatternUtils) {
super(context);
mUserId = userId;
mLockPatternUtils = lockPatternUtils;
mDPM = DevicePolicyManagerWrapper.from(context);
mDPM = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
mTrustAgentManager = FeatureFactory.getFactory(context)
.getSecurityFeatureProvider().getTrustAgentManager();
}

View File

@@ -16,6 +16,7 @@
package com.android.settings.wifi;
import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.content.ContentResolver;
import android.content.Context;
@@ -25,7 +26,6 @@ import android.net.wifi.WifiConfiguration;
import android.provider.Settings;
import android.text.TextUtils;
import com.android.settings.wrapper.DevicePolicyManagerWrapper;
import com.android.settingslib.wrapper.PackageManagerWrapper;
public class WifiUtils {
@@ -69,7 +69,8 @@ public class WifiUtils {
return false;
}
final DevicePolicyManagerWrapper dpm = DevicePolicyManagerWrapper.from(context);
final DevicePolicyManager dpm =
(DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
final PackageManagerWrapper pm = new PackageManagerWrapper(context.getPackageManager());
// Check if device has DPM capability. If it has and dpm is still null, then we

View File

@@ -1,229 +0,0 @@
/*
* Copyright (C) 2016 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.wrapper;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.UserIdInt;
import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.os.UserHandle;
import java.util.List;
/**
* This class replicates a subset of the android.app.admin.DevicePolicyManager (DPM). The
* class exists so that we can use a thin wrapper around the DPM in production code and a mock
* in tests. We cannot directly mock or shadow the DPM, because some of the methods we rely on are
* newer than the API version supported by Robolectric.
*/
public class DevicePolicyManagerWrapper {
private final DevicePolicyManager mDpm;
public DevicePolicyManagerWrapper(DevicePolicyManager dpm) {
mDpm = dpm;
}
public static @Nullable DevicePolicyManagerWrapper from(Context context) {
DevicePolicyManager dpm =
(DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
return dpm == null ? null : new DevicePolicyManagerWrapper(dpm);
}
/**
* Calls {@code DevicePolicyManager.getActiveAdminsAsUser()}.
*
* @see DevicePolicyManager#getActiveAdminsAsUser
*/
public @Nullable List<ComponentName> getActiveAdminsAsUser(int userId) {
return mDpm.getActiveAdminsAsUser(userId);
}
/**
* Calls {@code DevicePolicyManager.getMaximumFailedPasswordsForWipe()}.
*
* @see DevicePolicyManager#getMaximumFailedPasswordsForWipe
*/
public int getMaximumFailedPasswordsForWipe(@Nullable ComponentName admin, int userHandle) {
return mDpm.getMaximumFailedPasswordsForWipe(admin, userHandle);
}
/**
* Calls {@code DevicePolicyManager.getDeviceOwnerComponentOnCallingUser()}.
*
* @see DevicePolicyManager#getDeviceOwnerComponentOnCallingUser
*/
public ComponentName getDeviceOwnerComponentOnCallingUser() {
return mDpm.getDeviceOwnerComponentOnCallingUser();
}
/**
* Calls {@code DevicePolicyManager.getDeviceOwnerComponentOnAnyUser()}.
*
* @see DevicePolicyManager#getDeviceOwnerComponentOnAnyUser
*/
public ComponentName getDeviceOwnerComponentOnAnyUser() {
return mDpm.getDeviceOwnerComponentOnAnyUser();
}
/**
* Calls {@code DevicePolicyManager.getProfileOwnerAsUser()}.
*
* @see DevicePolicyManager#getProfileOwnerAsUser
*/
public @Nullable ComponentName getProfileOwnerAsUser(final int userId) {
return mDpm.getProfileOwnerAsUser(userId);
}
/**
* Calls {@code DevicePolicyManager.getDeviceOwnerNameOnAnyUser()}.
*
* @see DevicePolicyManager#getDeviceOwnerNameOnAnyUser
*/
public CharSequence getDeviceOwnerOrganizationName() {
return mDpm.getDeviceOwnerOrganizationName();
}
/**
* Calls {@code DevicePolicyManager.getPermissionGrantState()}.
*
* @see DevicePolicyManager#getPermissionGrantState
*/
public int getPermissionGrantState(@Nullable ComponentName admin, String packageName,
String permission) {
return mDpm.getPermissionGrantState(admin, packageName, permission);
}
/**
* Calls {@code DevicePolicyManager.isSecurityLoggingEnabled()}.
*
* @see DevicePolicyManager#isSecurityLoggingEnabled
*/
public boolean isSecurityLoggingEnabled(@Nullable ComponentName admin) {
return mDpm.isSecurityLoggingEnabled(admin);
}
/**
* Calls {@code DevicePolicyManager.isNetworkLoggingEnabled()}.
*
* @see DevicePolicyManager#isNetworkLoggingEnabled
*/
public boolean isNetworkLoggingEnabled(@Nullable ComponentName admin) {
return mDpm.isNetworkLoggingEnabled(admin);
}
/**
* Calls {@code DevicePolicyManager.getLastSecurityLogRetrievalTime()}.
*
* @see DevicePolicyManager#getLastSecurityLogRetrievalTime
*/
public long getLastSecurityLogRetrievalTime() {
return mDpm.getLastSecurityLogRetrievalTime();
}
/**
* Calls {@code DevicePolicyManager.getLastBugReportRequestTime()}.
*
* @see DevicePolicyManager#getLastBugReportRequestTime
*/
public long getLastBugReportRequestTime() {
return mDpm.getLastBugReportRequestTime();
}
/**
* Calls {@code DevicePolicyManager.getLastNetworkLogRetrievalTime()}.
*
* @see DevicePolicyManager#getLastNetworkLogRetrievalTime
*/
public long getLastNetworkLogRetrievalTime() {
return mDpm.getLastNetworkLogRetrievalTime();
}
/**
* Calls {@code DevicePolicyManager.isCurrentInputMethodSetByOwner()}.
*
* @see DevicePolicyManager#isCurrentInputMethodSetByOwner
*/
public boolean isCurrentInputMethodSetByOwner() {
return mDpm.isCurrentInputMethodSetByOwner();
}
/**
* Calls {@code DevicePolicyManager.getOwnerInstalledCaCerts()}.
*
* @see DevicePolicyManager#getOwnerInstalledCaCerts
*/
public List<String> getOwnerInstalledCaCerts(@NonNull UserHandle user) {
return mDpm.getOwnerInstalledCaCerts(user);
}
/**
* Calls {@code DevicePolicyManager.isDeviceOwnerAppOnAnyUser()}.
*
* @see DevicePolicyManager#isDeviceOwnerAppOnAnyUser
*/
public boolean isDeviceOwnerAppOnAnyUser(String packageName) {
return mDpm.isDeviceOwnerAppOnAnyUser(packageName);
}
/**
* Calls {@code DevicePolicyManager.packageHasActiveAdmins()}.
*
* @see DevicePolicyManager#packageHasActiveAdmins
*/
public boolean packageHasActiveAdmins(String packageName) {
return mDpm.packageHasActiveAdmins(packageName);
}
/**
* Calls {@code DevicePolicyManager.isUninstallInQueue()}.
*
* @see DevicePolicyManager#isUninstallInQueue
*/
public boolean isUninstallInQueue(String packageName) {
return mDpm.isUninstallInQueue(packageName);
}
/**
* Calls {@code DevicePolicyManager.createAdminSupportIntent()}.
*
* @see DevicePolicyManager#createAdminSupportIntent(String)
*/
public Intent createAdminSupportIntent(@NonNull String restriction) {
return mDpm.createAdminSupportIntent(restriction);
}
/**
* Calls {@code DevicePolicyManager#getDeviceOwnerUserId()}.
*
* @see DevicePolicyManager#getDeviceOwnerUserId()
*/
public int getDeviceOwnerUserId() {
return mDpm.getDeviceOwnerUserId();
}
/**
* Calls {@code DevicePolicyManager#getMaximumTimeToLock()}.
*
* @see DevicePolicyManager#getMaximumTimeToLock(ComponentName, int)
*/
public long getMaximumTimeToLock(@Nullable ComponentName admin, @UserIdInt int userHandle) {
return mDpm.getMaximumTimeToLock(admin, userHandle);
}
}

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;
@@ -108,7 +104,7 @@ public class RemoveAccountPreferenceControllerTest {
.thenReturn(new AuthenticatorDescription[0]);
when(mAccountManager.getAccountsAsUser(anyInt())).thenReturn(new Account[0]);
mController = new RemoveAccountPreferenceController(RuntimeEnvironment.application,
mFragment, mDevicePolicyManager);
mFragment);
}
@Test

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;

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();

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;

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
@@ -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);

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<>();
@@ -125,7 +125,7 @@ public class TimeoutPreferenceControllerTest {
verify(mPreference, times(2))
.removeUnusableTimeouts(longCaptor.capture(), adminCaptor.capture());
assertEquals(0, (long)longCaptor.getValue());
assertEquals(0, (long) longCaptor.getValue());
assertTrue(adminCaptor.getValue() != null);
}
}

View File

@@ -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

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 void setDeviceOwnerUserId(int id) {
mDeviceOwnerUserId = id;
}
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));
}
public ComponentName getDeviceOwnerComponentOnAnyUser() {
return mDeviceOwnerComponentName;
}
public void setDeviceOwnerComponentOnAnyUser(ComponentName admin) {
mDeviceOwnerComponentName = admin;
}
}

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,7 +96,7 @@ import java.util.stream.Collectors;
@RunWith(SettingsRobolectricTestRunner.class)
@Config(shadows = {
ShadowDevicePolicyManagerWrapper.class,
ShadowDevicePolicyManager.class,
ShadowEntityHeaderController.class,
ShadowPackageManagerWrapper.class,
ShadowBidiFormatter.class
@@ -469,8 +469,8 @@ 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();
@@ -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();