Merge "Add device/profile app check in background check" into oc-mr1-dev
This commit is contained in:
@@ -107,6 +107,7 @@ import com.android.internal.app.UnlaunchableAppActivity;
|
|||||||
import com.android.internal.util.ArrayUtils;
|
import com.android.internal.util.ArrayUtils;
|
||||||
import com.android.internal.util.UserIcons;
|
import com.android.internal.util.UserIcons;
|
||||||
import com.android.internal.widget.LockPatternUtils;
|
import com.android.internal.widget.LockPatternUtils;
|
||||||
|
import com.android.settings.enterprise.DevicePolicyManagerWrapper;
|
||||||
import com.android.settings.password.FingerprintManagerWrapper;
|
import com.android.settings.password.FingerprintManagerWrapper;
|
||||||
import com.android.settings.password.IFingerprintManager;
|
import com.android.settings.password.IFingerprintManager;
|
||||||
|
|
||||||
@@ -1279,6 +1280,28 @@ public final class Utils extends com.android.settingslib.Utils {
|
|||||||
return isVolumeValid(volume) ? volume : null;
|
return isVolumeValid(volume) ? volume : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return {@code true} if the supplied package is device owner or profile owner of at
|
||||||
|
* least one user.
|
||||||
|
* @param userManager used to get profile owner app for each user
|
||||||
|
* @param devicePolicyManager used to check whether it is device owner app
|
||||||
|
* @param packageName package to check about
|
||||||
|
*/
|
||||||
|
public static boolean isProfileOrDeviceOwner(UserManager userManager,
|
||||||
|
DevicePolicyManagerWrapper devicePolicyManager, String packageName) {
|
||||||
|
List<UserInfo> userInfos = userManager.getUsers();
|
||||||
|
if (devicePolicyManager.isDeviceOwnerAppOnAnyUser(packageName)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
for (int i = 0, size = userInfos.size(); i < size; i++) {
|
||||||
|
ComponentName cn = devicePolicyManager.getProfileOwnerAsUser(userInfos.get(i).id);
|
||||||
|
if (cn != null && cn.getPackageName().equals(packageName)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the resource id to represent the install status for an app
|
* Return the resource id to represent the install status for an app
|
||||||
*/
|
*/
|
||||||
|
@@ -43,6 +43,8 @@ import com.android.settings.SettingsActivity;
|
|||||||
import com.android.settings.SettingsPreferenceFragment;
|
import com.android.settings.SettingsPreferenceFragment;
|
||||||
import com.android.settings.Utils;
|
import com.android.settings.Utils;
|
||||||
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
|
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
|
||||||
|
import com.android.settings.enterprise.DevicePolicyManagerWrapper;
|
||||||
|
import com.android.settings.enterprise.DevicePolicyManagerWrapperImpl;
|
||||||
import com.android.settings.overlay.FeatureFactory;
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
import com.android.settingslib.RestrictedLockUtils;
|
import com.android.settingslib.RestrictedLockUtils;
|
||||||
import com.android.settingslib.applications.ApplicationsState;
|
import com.android.settingslib.applications.ApplicationsState;
|
||||||
@@ -73,7 +75,7 @@ public abstract class AppInfoBase extends SettingsPreferenceFragment
|
|||||||
protected String mPackageName;
|
protected String mPackageName;
|
||||||
|
|
||||||
protected IUsbManager mUsbManager;
|
protected IUsbManager mUsbManager;
|
||||||
protected DevicePolicyManager mDpm;
|
protected DevicePolicyManagerWrapper mDpm;
|
||||||
protected UserManager mUserManager;
|
protected UserManager mUserManager;
|
||||||
protected PackageManager mPm;
|
protected PackageManager mPm;
|
||||||
|
|
||||||
@@ -92,7 +94,8 @@ public abstract class AppInfoBase extends SettingsPreferenceFragment
|
|||||||
.getApplicationFeatureProvider(activity);
|
.getApplicationFeatureProvider(activity);
|
||||||
mState = ApplicationsState.getInstance(activity.getApplication());
|
mState = ApplicationsState.getInstance(activity.getApplication());
|
||||||
mSession = mState.newSession(this);
|
mSession = mState.newSession(this);
|
||||||
mDpm = (DevicePolicyManager) activity.getSystemService(Context.DEVICE_POLICY_SERVICE);
|
mDpm = new DevicePolicyManagerWrapperImpl(
|
||||||
|
(DevicePolicyManager) activity.getSystemService(Context.DEVICE_POLICY_SERVICE));
|
||||||
mUserManager = (UserManager) activity.getSystemService(Context.USER_SERVICE);
|
mUserManager = (UserManager) activity.getSystemService(Context.USER_SERVICE);
|
||||||
mPm = activity.getPackageManager();
|
mPm = activity.getPackageManager();
|
||||||
IBinder b = ServiceManager.getService(Context.USB_SERVICE);
|
IBinder b = ServiceManager.getService(Context.USB_SERVICE);
|
||||||
|
@@ -274,7 +274,7 @@ public class InstalledAppDetails extends AppInfoBase
|
|||||||
// We don't allow uninstalling DO/PO on *any* users, because if it's a system app,
|
// We don't allow uninstalling DO/PO on *any* users, because if it's a system app,
|
||||||
// "uninstall" is actually "downgrade to the system version + disable", and "downgrade"
|
// "uninstall" is actually "downgrade to the system version + disable", and "downgrade"
|
||||||
// will clear data on all users.
|
// will clear data on all users.
|
||||||
if (isProfileOrDeviceOwner(mPackageInfo.packageName)) {
|
if (Utils.isProfileOrDeviceOwner(mUserManager, mDpm, mPackageInfo.packageName)) {
|
||||||
enabled = false;
|
enabled = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -349,23 +349,6 @@ public class InstalledAppDetails extends AppInfoBase
|
|||||||
return enabled;
|
return enabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Returns if the supplied package is device owner or profile owner of at least one user */
|
|
||||||
private boolean isProfileOrDeviceOwner(String packageName) {
|
|
||||||
List<UserInfo> userInfos = mUserManager.getUsers();
|
|
||||||
DevicePolicyManager dpm = (DevicePolicyManager)
|
|
||||||
getContext().getSystemService(Context.DEVICE_POLICY_SERVICE);
|
|
||||||
if (dpm.isDeviceOwnerAppOnAnyUser(packageName)) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
for (UserInfo userInfo : userInfos) {
|
|
||||||
ComponentName cn = dpm.getProfileOwnerAsUser(userInfo.id);
|
|
||||||
if (cn != null && cn.getPackageName().equals(packageName)) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Called when the activity is first created. */
|
/** Called when the activity is first created. */
|
||||||
@Override
|
@Override
|
||||||
public void onCreate(Bundle icicle) {
|
public void onCreate(Bundle icicle) {
|
||||||
|
@@ -381,7 +381,7 @@ public class AppButtonsPreferenceController extends AbstractPreferenceController
|
|||||||
// We don't allow uninstalling DO/PO on *any* users, because if it's a system app,
|
// We don't allow uninstalling DO/PO on *any* users, because if it's a system app,
|
||||||
// "uninstall" is actually "downgrade to the system version + disable", and "downgrade"
|
// "uninstall" is actually "downgrade to the system version + disable", and "downgrade"
|
||||||
// will clear data on all users.
|
// will clear data on all users.
|
||||||
if (isProfileOrDeviceOwner(mPackageInfo.packageName)) {
|
if (Utils.isProfileOrDeviceOwner(mUserManager, mDpm, mPackageInfo.packageName)) {
|
||||||
enabled = false;
|
enabled = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -581,21 +581,6 @@ public class AppButtonsPreferenceController extends AbstractPreferenceController
|
|||||||
|| (mUserManager.isSplitSystemUser() && userCount == 2);
|
|| (mUserManager.isSplitSystemUser() && userCount == 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Returns if the supplied package is device owner or profile owner of at least one user */
|
|
||||||
private boolean isProfileOrDeviceOwner(String packageName) {
|
|
||||||
List<UserInfo> userInfos = mUserManager.getUsers();
|
|
||||||
if (mDpm.isDeviceOwnerAppOnAnyUser(packageName)) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
for (int i = 0, size = userInfos.size(); i < size; i++) {
|
|
||||||
ComponentName cn = mDpm.getProfileOwnerAsUser(userInfos.get(i).id);
|
|
||||||
if (cn != null && cn.getPackageName().equals(packageName)) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
private final BroadcastReceiver mCheckKillProcessesReceiver = new BroadcastReceiver() {
|
private final BroadcastReceiver mCheckKillProcessesReceiver = new BroadcastReceiver() {
|
||||||
@Override
|
@Override
|
||||||
public void onReceive(Context context, Intent intent) {
|
public void onReceive(Context context, Intent intent) {
|
||||||
|
@@ -15,17 +15,22 @@
|
|||||||
package com.android.settings.fuelgauge;
|
package com.android.settings.fuelgauge;
|
||||||
|
|
||||||
import android.app.AppOpsManager;
|
import android.app.AppOpsManager;
|
||||||
|
import android.app.admin.DevicePolicyManager;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.pm.ApplicationInfo;
|
import android.content.pm.ApplicationInfo;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
|
import android.os.UserManager;
|
||||||
import android.support.annotation.VisibleForTesting;
|
import android.support.annotation.VisibleForTesting;
|
||||||
import android.support.v14.preference.SwitchPreference;
|
import android.support.v14.preference.SwitchPreference;
|
||||||
import android.support.v7.preference.Preference;
|
import android.support.v7.preference.Preference;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
|
import com.android.settings.Utils;
|
||||||
import com.android.settings.core.PreferenceControllerMixin;
|
import com.android.settings.core.PreferenceControllerMixin;
|
||||||
|
import com.android.settings.enterprise.DevicePolicyManagerWrapper;
|
||||||
|
import com.android.settings.enterprise.DevicePolicyManagerWrapperImpl;
|
||||||
import com.android.settingslib.core.AbstractPreferenceController;
|
import com.android.settingslib.core.AbstractPreferenceController;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -39,14 +44,20 @@ public class BackgroundActivityPreferenceController extends AbstractPreferenceCo
|
|||||||
|
|
||||||
private final PackageManager mPackageManager;
|
private final PackageManager mPackageManager;
|
||||||
private final AppOpsManager mAppOpsManager;
|
private final AppOpsManager mAppOpsManager;
|
||||||
|
private final UserManager mUserManager;
|
||||||
private final String[] mPackages;
|
private final String[] mPackages;
|
||||||
private final int mUid;
|
private final int mUid;
|
||||||
|
@VisibleForTesting
|
||||||
|
DevicePolicyManagerWrapper mDpm;
|
||||||
|
|
||||||
private String mTargetPackage;
|
private String mTargetPackage;
|
||||||
|
|
||||||
public BackgroundActivityPreferenceController(Context context, int uid) {
|
public BackgroundActivityPreferenceController(Context context, int uid) {
|
||||||
super(context);
|
super(context);
|
||||||
mPackageManager = context.getPackageManager();
|
mPackageManager = context.getPackageManager();
|
||||||
|
mUserManager = (UserManager) context.getSystemService(Context.USER_SERVICE);
|
||||||
|
mDpm = new DevicePolicyManagerWrapperImpl(
|
||||||
|
(DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE));
|
||||||
mAppOpsManager = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
|
mAppOpsManager = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
|
||||||
mUid = uid;
|
mUid = uid;
|
||||||
mPackages = mPackageManager.getPackagesForUid(mUid);
|
mPackages = mPackageManager.getPackagesForUid(mUid);
|
||||||
@@ -56,12 +67,15 @@ public class BackgroundActivityPreferenceController extends AbstractPreferenceCo
|
|||||||
public void updateState(Preference preference) {
|
public void updateState(Preference preference) {
|
||||||
final int mode = mAppOpsManager
|
final int mode = mAppOpsManager
|
||||||
.checkOpNoThrow(AppOpsManager.OP_RUN_IN_BACKGROUND, mUid, mTargetPackage);
|
.checkOpNoThrow(AppOpsManager.OP_RUN_IN_BACKGROUND, mUid, mTargetPackage);
|
||||||
if (mode == AppOpsManager.MODE_ERRORED) {
|
// Set checked or not before we may set it disabled
|
||||||
preference.setEnabled(false);
|
if (mode != AppOpsManager.MODE_ERRORED) {
|
||||||
} else {
|
|
||||||
final boolean checked = mode != AppOpsManager.MODE_IGNORED;
|
final boolean checked = mode != AppOpsManager.MODE_IGNORED;
|
||||||
((SwitchPreference) preference).setChecked(checked);
|
((SwitchPreference) preference).setChecked(checked);
|
||||||
}
|
}
|
||||||
|
if (mode == AppOpsManager.MODE_ERRORED
|
||||||
|
|| Utils.isProfileOrDeviceOwner(mUserManager, mDpm, mTargetPackage)) {
|
||||||
|
preference.setEnabled(false);
|
||||||
|
}
|
||||||
|
|
||||||
updateSummary(preference);
|
updateSummary(preference);
|
||||||
}
|
}
|
||||||
|
@@ -8,14 +8,17 @@ import static org.mockito.Mockito.mock;
|
|||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
|
import android.content.ComponentName;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.pm.ApplicationInfo;
|
import android.content.pm.ApplicationInfo;
|
||||||
|
import android.content.pm.UserInfo;
|
||||||
import android.net.ConnectivityManager;
|
import android.net.ConnectivityManager;
|
||||||
import android.net.LinkAddress;
|
import android.net.LinkAddress;
|
||||||
import android.net.LinkProperties;
|
import android.net.LinkProperties;
|
||||||
import android.net.Network;
|
import android.net.Network;
|
||||||
import android.net.wifi.WifiManager;
|
import android.net.wifi.WifiManager;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.os.UserManager;
|
||||||
import android.os.storage.DiskInfo;
|
import android.os.storage.DiskInfo;
|
||||||
import android.os.storage.StorageManager;
|
import android.os.storage.StorageManager;
|
||||||
import android.os.storage.VolumeInfo;
|
import android.os.storage.VolumeInfo;
|
||||||
@@ -23,6 +26,7 @@ import android.text.SpannableStringBuilder;
|
|||||||
import android.text.format.DateUtils;
|
import android.text.format.DateUtils;
|
||||||
import android.text.style.TtsSpan;
|
import android.text.style.TtsSpan;
|
||||||
|
|
||||||
|
import com.android.settings.enterprise.DevicePolicyManagerWrapper;
|
||||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
@@ -34,12 +38,15 @@ import org.robolectric.RuntimeEnvironment;
|
|||||||
import org.robolectric.annotation.Config;
|
import org.robolectric.annotation.Config;
|
||||||
|
|
||||||
import java.net.InetAddress;
|
import java.net.InetAddress;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@RunWith(SettingsRobolectricTestRunner.class)
|
@RunWith(SettingsRobolectricTestRunner.class)
|
||||||
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
|
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
|
||||||
public class UtilsTest {
|
public class UtilsTest {
|
||||||
|
|
||||||
private static final String TIME_DESCRIPTION = "1 day 20 hours 30 minutes";
|
private static final String TIME_DESCRIPTION = "1 day 20 hours 30 minutes";
|
||||||
|
private static final String PACKAGE_NAME = "com.android.app";
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
@Mock
|
@Mock
|
||||||
private WifiManager wifiManager;
|
private WifiManager wifiManager;
|
||||||
@@ -47,6 +54,10 @@ public class UtilsTest {
|
|||||||
private Network network;
|
private Network network;
|
||||||
@Mock
|
@Mock
|
||||||
private ConnectivityManager connectivityManager;
|
private ConnectivityManager connectivityManager;
|
||||||
|
@Mock
|
||||||
|
private DevicePolicyManagerWrapper mDevicePolicyManager;
|
||||||
|
@Mock
|
||||||
|
private UserManager mUserManager;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
@@ -194,4 +205,25 @@ public class UtilsTest {
|
|||||||
|
|
||||||
assertThat(Utils.getInstallationStatus(info)).isEqualTo(R.string.disabled);
|
assertThat(Utils.getInstallationStatus(info)).isEqualTo(R.string.disabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testIsProfileOrDeviceOwner_deviceOwnerApp_returnTrue() {
|
||||||
|
when(mDevicePolicyManager.isDeviceOwnerAppOnAnyUser(PACKAGE_NAME)).thenReturn(true);
|
||||||
|
|
||||||
|
assertThat(Utils.isProfileOrDeviceOwner(mUserManager, mDevicePolicyManager,
|
||||||
|
PACKAGE_NAME)).isTrue();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testIsProfileOrDeviceOwner_profileOwnerApp_returnTrue() {
|
||||||
|
final List<UserInfo> userInfos = new ArrayList<>();
|
||||||
|
userInfos.add(new UserInfo());
|
||||||
|
|
||||||
|
when(mUserManager.getUsers()).thenReturn(userInfos);
|
||||||
|
when(mDevicePolicyManager.getProfileOwnerAsUser(userInfos.get(0).id)).thenReturn(
|
||||||
|
new ComponentName(PACKAGE_NAME, ""));
|
||||||
|
|
||||||
|
assertThat(Utils.isProfileOrDeviceOwner(mUserManager, mDevicePolicyManager,
|
||||||
|
PACKAGE_NAME)).isTrue();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -45,6 +45,7 @@ import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
|||||||
import com.android.settings.TestConfig;
|
import com.android.settings.TestConfig;
|
||||||
import com.android.settings.applications.instantapps.InstantAppButtonsController;
|
import com.android.settings.applications.instantapps.InstantAppButtonsController;
|
||||||
import com.android.settings.applications.instantapps.InstantAppButtonsController.ShowDialogDelegate;
|
import com.android.settings.applications.instantapps.InstantAppButtonsController.ShowDialogDelegate;
|
||||||
|
import com.android.settings.enterprise.DevicePolicyManagerWrapper;
|
||||||
import com.android.settings.fuelgauge.BatteryUtils;
|
import com.android.settings.fuelgauge.BatteryUtils;
|
||||||
import com.android.settings.testutils.FakeFeatureFactory;
|
import com.android.settings.testutils.FakeFeatureFactory;
|
||||||
import com.android.settingslib.Utils;
|
import com.android.settingslib.Utils;
|
||||||
@@ -103,7 +104,7 @@ public final class InstalledAppDetailsTest {
|
|||||||
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
|
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
|
||||||
private SettingsActivity mActivity;
|
private SettingsActivity mActivity;
|
||||||
@Mock
|
@Mock
|
||||||
private DevicePolicyManager mDevicePolicyManager;
|
private DevicePolicyManagerWrapper mDevicePolicyManager;
|
||||||
@Mock
|
@Mock
|
||||||
private BatterySipper mBatterySipper;
|
private BatterySipper mBatterySipper;
|
||||||
@Mock
|
@Mock
|
||||||
|
@@ -17,14 +17,17 @@
|
|||||||
package com.android.settings.fuelgauge;
|
package com.android.settings.fuelgauge;
|
||||||
|
|
||||||
import android.app.AppOpsManager;
|
import android.app.AppOpsManager;
|
||||||
|
import android.app.admin.DevicePolicyManager;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.pm.ApplicationInfo;
|
import android.content.pm.ApplicationInfo;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
|
import android.os.UserManager;
|
||||||
import android.support.v14.preference.SwitchPreference;
|
import android.support.v14.preference.SwitchPreference;
|
||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.TestConfig;
|
import com.android.settings.TestConfig;
|
||||||
|
import com.android.settings.enterprise.DevicePolicyManagerWrapper;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
@@ -62,6 +65,12 @@ public class BackgroundActivityPreferenceControllerTest {
|
|||||||
private ApplicationInfo mHighApplicationInfo;
|
private ApplicationInfo mHighApplicationInfo;
|
||||||
@Mock
|
@Mock
|
||||||
private ApplicationInfo mLowApplicationInfo;
|
private ApplicationInfo mLowApplicationInfo;
|
||||||
|
@Mock
|
||||||
|
private UserManager mUserManager;
|
||||||
|
@Mock
|
||||||
|
private DevicePolicyManager mDevicePolicyManager;
|
||||||
|
@Mock
|
||||||
|
private DevicePolicyManagerWrapper mDevicePolicyManagerWrapper;
|
||||||
private BackgroundActivityPreferenceController mController;
|
private BackgroundActivityPreferenceController mController;
|
||||||
private SwitchPreference mPreference;
|
private SwitchPreference mPreference;
|
||||||
private Context mShadowContext;
|
private Context mShadowContext;
|
||||||
@@ -73,6 +82,9 @@ public class BackgroundActivityPreferenceControllerTest {
|
|||||||
mShadowContext = RuntimeEnvironment.application;
|
mShadowContext = RuntimeEnvironment.application;
|
||||||
when(mContext.getPackageManager()).thenReturn(mPackageManager);
|
when(mContext.getPackageManager()).thenReturn(mPackageManager);
|
||||||
when(mContext.getSystemService(Context.APP_OPS_SERVICE)).thenReturn(mAppOpsManager);
|
when(mContext.getSystemService(Context.APP_OPS_SERVICE)).thenReturn(mAppOpsManager);
|
||||||
|
when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager);
|
||||||
|
when(mContext.getSystemService(Context.DEVICE_POLICY_SERVICE)).thenReturn(
|
||||||
|
mDevicePolicyManager);
|
||||||
when(mPackageManager.getPackagesForUid(UID_NORMAL)).thenReturn(PACKAGES_NORMAL);
|
when(mPackageManager.getPackagesForUid(UID_NORMAL)).thenReturn(PACKAGES_NORMAL);
|
||||||
when(mPackageManager.getPackagesForUid(UID_SPECIAL)).thenReturn(PACKAGES_SPECIAL);
|
when(mPackageManager.getPackagesForUid(UID_SPECIAL)).thenReturn(PACKAGES_SPECIAL);
|
||||||
|
|
||||||
@@ -86,6 +98,7 @@ public class BackgroundActivityPreferenceControllerTest {
|
|||||||
mPreference = new SwitchPreference(mShadowContext);
|
mPreference = new SwitchPreference(mShadowContext);
|
||||||
mController = spy(new BackgroundActivityPreferenceController(mContext, UID_NORMAL));
|
mController = spy(new BackgroundActivityPreferenceController(mContext, UID_NORMAL));
|
||||||
mController.isAvailable();
|
mController.isAvailable();
|
||||||
|
mController.mDpm = mDevicePolicyManagerWrapper;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -181,6 +194,7 @@ public class BackgroundActivityPreferenceControllerTest {
|
|||||||
@Test
|
@Test
|
||||||
public void testMultiplePackages_ReturnStatusForTargetPackage() {
|
public void testMultiplePackages_ReturnStatusForTargetPackage() {
|
||||||
mController = new BackgroundActivityPreferenceController(mContext, UID_SPECIAL);
|
mController = new BackgroundActivityPreferenceController(mContext, UID_SPECIAL);
|
||||||
|
mController.mDpm = mDevicePolicyManagerWrapper;
|
||||||
when(mAppOpsManager
|
when(mAppOpsManager
|
||||||
.checkOpNoThrow(AppOpsManager.OP_RUN_IN_BACKGROUND, UID_SPECIAL, LOW_SDK_PACKAGE))
|
.checkOpNoThrow(AppOpsManager.OP_RUN_IN_BACKGROUND, UID_SPECIAL, LOW_SDK_PACKAGE))
|
||||||
.thenReturn(AppOpsManager.MODE_ALLOWED);
|
.thenReturn(AppOpsManager.MODE_ALLOWED);
|
||||||
|
Reference in New Issue
Block a user