Merge "Extend set user protected packages for multi-user" into sc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
cf5b205e9a
@@ -382,10 +382,10 @@ public abstract class PackageManagerInternal implements PackageSettingsSnapshotP
|
||||
int deviceOwnerUserId, String deviceOwner, SparseArray<String> profileOwners);
|
||||
|
||||
/**
|
||||
* Called by DevicePolicyManagerService to set the package names protected by the device
|
||||
* owner.
|
||||
* Called by Owners to set the package names protected by the device owner.
|
||||
*/
|
||||
public abstract void setDeviceOwnerProtectedPackages(List<String> packageNames);
|
||||
public abstract void setDeviceOwnerProtectedPackages(
|
||||
String deviceOwnerPackageName, List<String> packageNames);
|
||||
|
||||
/**
|
||||
* Returns {@code true} if a given package can't be wiped. Otherwise, returns {@code false}.
|
||||
|
||||
@@ -26514,8 +26514,10 @@ public class PackageManagerService extends IPackageManager.Stub
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setDeviceOwnerProtectedPackages(List<String> packageNames) {
|
||||
mProtectedPackages.setDeviceOwnerProtectedPackages(packageNames);
|
||||
public void setDeviceOwnerProtectedPackages(
|
||||
String deviceOwnerPackageName, List<String> packageNames) {
|
||||
mProtectedPackages.setDeviceOwnerProtectedPackages(
|
||||
deviceOwnerPackageName, packageNames);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -20,14 +20,15 @@ import android.annotation.Nullable;
|
||||
import android.annotation.UserIdInt;
|
||||
import android.content.Context;
|
||||
import android.os.UserHandle;
|
||||
import android.util.ArrayMap;
|
||||
import android.util.ArraySet;
|
||||
import android.util.SparseArray;
|
||||
|
||||
import com.android.internal.R;
|
||||
import com.android.internal.annotations.GuardedBy;
|
||||
import com.android.internal.util.ArrayUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* Manages package names that need special protection.
|
||||
@@ -55,7 +56,7 @@ public class ProtectedPackages {
|
||||
|
||||
@Nullable
|
||||
@GuardedBy("this")
|
||||
private List<String> mDeviceOwnerProtectedPackages;
|
||||
private final ArrayMap<String, Set<String>> mDeviceOwnerProtectedPackages = new ArrayMap<>();
|
||||
|
||||
private final Context mContext;
|
||||
|
||||
@@ -78,8 +79,14 @@ public class ProtectedPackages {
|
||||
: profileOwnerPackages.clone();
|
||||
}
|
||||
|
||||
public synchronized void setDeviceOwnerProtectedPackages(List<String> packageNames) {
|
||||
mDeviceOwnerProtectedPackages = new ArrayList<String>(packageNames);
|
||||
/** Sets the protected packages for the device owner. */
|
||||
public synchronized void setDeviceOwnerProtectedPackages(
|
||||
String deviceOwnerPackageName, List<String> packageNames) {
|
||||
if (packageNames.isEmpty()) {
|
||||
mDeviceOwnerProtectedPackages.remove(deviceOwnerPackageName);
|
||||
} else {
|
||||
mDeviceOwnerProtectedPackages.put(deviceOwnerPackageName, new ArraySet<>(packageNames));
|
||||
}
|
||||
}
|
||||
|
||||
private synchronized boolean hasDeviceOwnerOrProfileOwner(int userId, String packageName) {
|
||||
@@ -118,7 +125,17 @@ public class ProtectedPackages {
|
||||
*/
|
||||
private synchronized boolean isProtectedPackage(String packageName) {
|
||||
return packageName != null && (packageName.equals(mDeviceProvisioningPackage)
|
||||
|| ArrayUtils.contains(mDeviceOwnerProtectedPackages, packageName));
|
||||
|| isDeviceOwnerProtectedPackage(packageName));
|
||||
}
|
||||
|
||||
/** Returns {@code true} if the given package is a protected package set by any device owner. */
|
||||
private synchronized boolean isDeviceOwnerProtectedPackage(String packageName) {
|
||||
for (Set<String> protectedPackages : mDeviceOwnerProtectedPackages.values()) {
|
||||
if (protectedPackages.contains(packageName)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1754,11 +1754,38 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
|
||||
if (userHandle == UserHandle.USER_SYSTEM) {
|
||||
mStateCache.setDeviceProvisioned(policy.mUserSetupComplete);
|
||||
}
|
||||
|
||||
migrateDeviceOwnerProtectedPackagesToOwners(userHandle, policy);
|
||||
}
|
||||
return policy;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Only used by {@link #getUserData(int)} to migrate <b>existing</b> device owner protected
|
||||
* packages that were stored in {@link DevicePolicyData#mUserControlDisabledPackages} to
|
||||
* {@link Owners} because the device owner protected packages are now stored on a per device
|
||||
* owner basis instead of on a per user basis.
|
||||
*
|
||||
* Any calls to {@link #setUserControlDisabledPackages(ComponentName, List)} would now store
|
||||
* the device owner protected packages in {@link Owners} instead of {@link DevicePolicyData}.
|
||||
* @param userHandle The device owner user
|
||||
* @param policy The policy data of the device owner user
|
||||
*/
|
||||
private void migrateDeviceOwnerProtectedPackagesToOwners(
|
||||
int userHandle, DevicePolicyData policy) {
|
||||
ComponentName deviceOwnerComponent = getOwnerComponent(userHandle);
|
||||
if (isDeviceOwner(deviceOwnerComponent, userHandle)
|
||||
&& !policy.mUserControlDisabledPackages.isEmpty()) {
|
||||
mOwners.setDeviceOwnerProtectedPackages(
|
||||
deviceOwnerComponent.getPackageName(),
|
||||
policy.mUserControlDisabledPackages);
|
||||
|
||||
policy.mUserControlDisabledPackages = new ArrayList<>();
|
||||
saveSettingsLocked(userHandle);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates and loads the policy data from xml for data that is shared between
|
||||
* various profiles of a user. In contrast to {@link #getUserData(int)}
|
||||
@@ -2863,7 +2890,6 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
|
||||
updateMaximumTimeToLockLocked(userHandle);
|
||||
updateLockTaskPackagesLocked(policy.mLockTaskPackages, userHandle);
|
||||
updateLockTaskFeaturesLocked(policy.mLockTaskFeatures, userHandle);
|
||||
updateUserControlDisabledPackagesLocked(policy.mUserControlDisabledPackages);
|
||||
if (policy.mStatusBarDisabled) {
|
||||
setStatusBarDisabledInternal(policy.mStatusBarDisabled, userHandle);
|
||||
}
|
||||
@@ -2907,10 +2933,6 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
|
||||
}
|
||||
}
|
||||
|
||||
private void updateUserControlDisabledPackagesLocked(List<String> packages) {
|
||||
mInjector.getPackageManagerInternal().setDeviceOwnerProtectedPackages(packages);
|
||||
}
|
||||
|
||||
private void updateLockTaskFeaturesLocked(int flags, int userId) {
|
||||
long ident = mInjector.binderClearCallingIdentity();
|
||||
try {
|
||||
@@ -8759,7 +8781,6 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
|
||||
updateLockTaskPackagesLocked(policy.mLockTaskPackages, userId);
|
||||
policy.mLockTaskFeatures = DevicePolicyManager.LOCK_TASK_FEATURE_NONE;
|
||||
policy.mUserControlDisabledPackages.clear();
|
||||
updateUserControlDisabledPackagesLocked(policy.mUserControlDisabledPackages);
|
||||
saveSettingsLocked(userId);
|
||||
|
||||
try {
|
||||
@@ -16199,14 +16220,14 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
|
||||
@Override
|
||||
public void setUserControlDisabledPackages(ComponentName who, List<String> packages) {
|
||||
Objects.requireNonNull(who, "ComponentName is null");
|
||||
Preconditions.checkNotNull(packages, "packages is null");
|
||||
Objects.requireNonNull(packages, "packages is null");
|
||||
final CallerIdentity caller = getCallerIdentity(who);
|
||||
Preconditions.checkCallAuthorization(isDeviceOwner(caller));
|
||||
checkCanExecuteOrThrowUnsafe(
|
||||
DevicePolicyManager.OPERATION_SET_USER_CONTROL_DISABLED_PACKAGES);
|
||||
|
||||
synchronized (getLockObject()) {
|
||||
setUserControlDisabledPackagesLocked(caller.getUserId(), packages);
|
||||
mOwners.setDeviceOwnerProtectedPackages(who.getPackageName(), packages);
|
||||
DevicePolicyEventLogger
|
||||
.createEvent(DevicePolicyEnums.SET_USER_CONTROL_DISABLED_PACKAGES)
|
||||
.setAdmin(who)
|
||||
@@ -16215,15 +16236,6 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
|
||||
}
|
||||
}
|
||||
|
||||
private void setUserControlDisabledPackagesLocked(int userHandle, List<String> packages) {
|
||||
final DevicePolicyData policy = getUserData(userHandle);
|
||||
policy.mUserControlDisabledPackages = packages;
|
||||
|
||||
// Store the settings persistently.
|
||||
saveSettingsLocked(userHandle);
|
||||
updateUserControlDisabledPackagesLocked(packages);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getUserControlDisabledPackages(ComponentName who) {
|
||||
Objects.requireNonNull(who, "ComponentName is null");
|
||||
@@ -16232,9 +16244,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
|
||||
Preconditions.checkCallAuthorization(isDeviceOwner(caller));
|
||||
|
||||
synchronized (getLockObject()) {
|
||||
final List<String> packages =
|
||||
getUserData(caller.getUserId()).mUserControlDisabledPackages;
|
||||
return packages == null ? Collections.EMPTY_LIST : packages;
|
||||
return mOwners.getDeviceOwnerProtectedPackages(who.getPackageName());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -62,6 +62,7 @@ import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.time.LocalDate;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
@@ -97,10 +98,13 @@ class Owners {
|
||||
// Holds "context" for device-owner, this must not be show up before device-owner.
|
||||
private static final String TAG_DEVICE_OWNER_CONTEXT = "device-owner-context";
|
||||
private static final String TAG_DEVICE_OWNER_TYPE = "device-owner-type";
|
||||
private static final String TAG_DEVICE_OWNER_PROTECTED_PACKAGES =
|
||||
"device-owner-protected-packages";
|
||||
|
||||
private static final String ATTR_NAME = "name";
|
||||
private static final String ATTR_PACKAGE = "package";
|
||||
private static final String ATTR_COMPONENT_NAME = "component";
|
||||
private static final String ATTR_SIZE = "size";
|
||||
private static final String ATTR_REMOTE_BUGREPORT_URI = "remoteBugreportUri";
|
||||
private static final String ATTR_REMOTE_BUGREPORT_HASH = "remoteBugreportHash";
|
||||
private static final String ATTR_USERID = "userId";
|
||||
@@ -129,6 +133,8 @@ class Owners {
|
||||
// Device owner type for a managed device.
|
||||
private final ArrayMap<String, Integer> mDeviceOwnerTypes = new ArrayMap<>();
|
||||
|
||||
private final ArrayMap<String, List<String>> mDeviceOwnerProtectedPackages = new ArrayMap<>();
|
||||
|
||||
private int mDeviceOwnerUserId = UserHandle.USER_NULL;
|
||||
|
||||
// Internal state for the profile owner packages.
|
||||
@@ -216,6 +222,12 @@ class Owners {
|
||||
pushToActivityTaskManagerLocked();
|
||||
pushToActivityManagerLocked();
|
||||
pushToAppOpsLocked();
|
||||
|
||||
for (ArrayMap.Entry<String, List<String>> entry :
|
||||
mDeviceOwnerProtectedPackages.entrySet()) {
|
||||
mPackageManagerInternal.setDeviceOwnerProtectedPackages(
|
||||
entry.getKey(), entry.getValue());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -343,6 +355,12 @@ class Owners {
|
||||
void clearDeviceOwner() {
|
||||
synchronized (mLock) {
|
||||
mDeviceOwnerTypes.remove(mDeviceOwner.packageName);
|
||||
List<String> protectedPackages =
|
||||
mDeviceOwnerProtectedPackages.remove(mDeviceOwner.packageName);
|
||||
if (protectedPackages != null) {
|
||||
mPackageManagerInternal.setDeviceOwnerProtectedPackages(
|
||||
mDeviceOwner.packageName, new ArrayList<>());
|
||||
}
|
||||
mDeviceOwner = null;
|
||||
mDeviceOwnerUserId = UserHandle.USER_NULL;
|
||||
|
||||
@@ -394,6 +412,12 @@ class Owners {
|
||||
void transferDeviceOwnership(ComponentName target) {
|
||||
synchronized (mLock) {
|
||||
Integer previousDeviceOwnerType = mDeviceOwnerTypes.remove(mDeviceOwner.packageName);
|
||||
List<String> previousProtectedPackages =
|
||||
mDeviceOwnerProtectedPackages.remove(mDeviceOwner.packageName);
|
||||
if (previousProtectedPackages != null) {
|
||||
mPackageManagerInternal.setDeviceOwnerProtectedPackages(
|
||||
mDeviceOwner.packageName, new ArrayList<>());
|
||||
}
|
||||
// We don't set a name because it's not used anyway.
|
||||
// See DevicePolicyManagerService#getDeviceOwnerName
|
||||
mDeviceOwner = new OwnerInfo(null, target,
|
||||
@@ -403,6 +427,10 @@ class Owners {
|
||||
if (previousDeviceOwnerType != null) {
|
||||
mDeviceOwnerTypes.put(mDeviceOwner.packageName, previousDeviceOwnerType);
|
||||
}
|
||||
if (previousProtectedPackages != null) {
|
||||
mDeviceOwnerProtectedPackages.put(
|
||||
mDeviceOwner.packageName, previousProtectedPackages);
|
||||
}
|
||||
pushToPackageManagerLocked();
|
||||
pushToActivityTaskManagerLocked();
|
||||
pushToActivityManagerLocked();
|
||||
@@ -583,7 +611,7 @@ class Owners {
|
||||
}
|
||||
}
|
||||
|
||||
/** Sets the user restrictions migrated flag, and also writes to the file. */
|
||||
/** Sets the user restrictions migrated flag, and also writes to the file. */
|
||||
void setProfileOwnerUserRestrictionsMigrated(int userId) {
|
||||
synchronized (mLock) {
|
||||
OwnerInfo profileOwner = mProfileOwners.get(userId);
|
||||
@@ -594,8 +622,10 @@ class Owners {
|
||||
}
|
||||
}
|
||||
|
||||
/** Sets the indicator that the profile owner manages an organization-owned device,
|
||||
* then write to file. */
|
||||
/**
|
||||
* Sets the indicator that the profile owner manages an organization-owned device,
|
||||
* then write to file.
|
||||
*/
|
||||
void markProfileOwnerOfOrganizationOwnedDevice(int userId) {
|
||||
synchronized (mLock) {
|
||||
OwnerInfo profileOwner = mProfileOwners.get(userId);
|
||||
@@ -640,6 +670,33 @@ class Owners {
|
||||
}
|
||||
}
|
||||
|
||||
void setDeviceOwnerProtectedPackages(String packageName, List<String> protectedPackages) {
|
||||
synchronized (mLock) {
|
||||
if (!hasDeviceOwner()) {
|
||||
Slog.e(TAG,
|
||||
"Attempting to set device owner protected packages when there is no "
|
||||
+ "device owner");
|
||||
return;
|
||||
} else if (!mDeviceOwner.packageName.equals(packageName)) {
|
||||
Slog.e(TAG, "Attempting to set device owner protected packages when the provided "
|
||||
+ "package name " + packageName
|
||||
+ " does not match the device owner package name");
|
||||
return;
|
||||
}
|
||||
|
||||
mDeviceOwnerProtectedPackages.put(packageName, protectedPackages);
|
||||
mPackageManagerInternal.setDeviceOwnerProtectedPackages(packageName, protectedPackages);
|
||||
writeDeviceOwner();
|
||||
}
|
||||
}
|
||||
|
||||
List<String> getDeviceOwnerProtectedPackages(String packageName) {
|
||||
synchronized (mLock) {
|
||||
return mDeviceOwnerProtectedPackages.containsKey(packageName)
|
||||
? mDeviceOwnerProtectedPackages.get(packageName) : Collections.emptyList();
|
||||
}
|
||||
}
|
||||
|
||||
private boolean readLegacyOwnerFileLocked(File file) {
|
||||
if (!file.exists()) {
|
||||
// Already migrated or the device has no owners.
|
||||
@@ -649,8 +706,8 @@ class Owners {
|
||||
InputStream input = new AtomicFile(file).openRead();
|
||||
TypedXmlPullParser parser = Xml.resolvePullParser(input);
|
||||
int type;
|
||||
while ((type=parser.next()) != TypedXmlPullParser.END_DOCUMENT) {
|
||||
if (type!=TypedXmlPullParser.START_TAG) {
|
||||
while ((type = parser.next()) != TypedXmlPullParser.END_DOCUMENT) {
|
||||
if (type != TypedXmlPullParser.START_TAG) {
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -700,7 +757,7 @@ class Owners {
|
||||
}
|
||||
}
|
||||
input.close();
|
||||
} catch (XmlPullParserException|IOException e) {
|
||||
} catch (XmlPullParserException | IOException e) {
|
||||
Slog.e(TAG, "Error parsing device-owner file", e);
|
||||
}
|
||||
return true;
|
||||
@@ -936,6 +993,21 @@ class Owners {
|
||||
}
|
||||
}
|
||||
|
||||
if (!mDeviceOwnerProtectedPackages.isEmpty()) {
|
||||
for (ArrayMap.Entry<String, List<String>> entry :
|
||||
mDeviceOwnerProtectedPackages.entrySet()) {
|
||||
List<String> protectedPackages = entry.getValue();
|
||||
|
||||
out.startTag(null, TAG_DEVICE_OWNER_PROTECTED_PACKAGES);
|
||||
out.attribute(null, ATTR_PACKAGE, entry.getKey());
|
||||
out.attributeInt(null, ATTR_SIZE, protectedPackages.size());
|
||||
for (int i = 0, size = protectedPackages.size(); i < size; i++) {
|
||||
out.attribute(null, ATTR_NAME + i, protectedPackages.get(i));
|
||||
}
|
||||
out.endTag(null, TAG_DEVICE_OWNER_PROTECTED_PACKAGES);
|
||||
}
|
||||
}
|
||||
|
||||
if (mSystemUpdatePolicy != null) {
|
||||
out.startTag(null, TAG_SYSTEM_UPDATE_POLICY);
|
||||
mSystemUpdatePolicy.saveToXml(out);
|
||||
@@ -1002,6 +1074,15 @@ class Owners {
|
||||
DEVICE_OWNER_TYPE_DEFAULT);
|
||||
mDeviceOwnerTypes.put(packageName, deviceOwnerType);
|
||||
break;
|
||||
case TAG_DEVICE_OWNER_PROTECTED_PACKAGES:
|
||||
packageName = parser.getAttributeValue(null, ATTR_PACKAGE);
|
||||
int protectedPackagesSize = parser.getAttributeInt(null, ATTR_SIZE, 0);
|
||||
List<String> protectedPackages = new ArrayList<>();
|
||||
for (int i = 0; i < protectedPackagesSize; i++) {
|
||||
protectedPackages.add(parser.getAttributeValue(null, ATTR_NAME + i));
|
||||
}
|
||||
mDeviceOwnerProtectedPackages.put(packageName, protectedPackages);
|
||||
break;
|
||||
default:
|
||||
Slog.e(TAG, "Unexpected tag: " + tag);
|
||||
return false;
|
||||
|
||||
@@ -6542,29 +6542,26 @@ public class DevicePolicyManagerTest extends DpmTestBase {
|
||||
final List<String> testPackages = new ArrayList<>();
|
||||
testPackages.add("package_1");
|
||||
testPackages.add("package_2");
|
||||
|
||||
mContext.callerPermissions.add(android.Manifest.permission.MANAGE_DEVICE_ADMINS);
|
||||
mServiceContext.permissions.add(permission.MANAGE_DEVICE_ADMINS);
|
||||
setDeviceOwner();
|
||||
|
||||
dpm.setUserControlDisabledPackages(admin1, testPackages);
|
||||
|
||||
verify(getServices().packageManagerInternal).setDeviceOwnerProtectedPackages(testPackages);
|
||||
|
||||
verify(getServices().packageManagerInternal)
|
||||
.setDeviceOwnerProtectedPackages(admin1.getPackageName(), testPackages);
|
||||
assertThat(dpm.getUserControlDisabledPackages(admin1)).isEqualTo(testPackages);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSetUserControlDisabledPackages_failingAsPO() throws Exception {
|
||||
public void testSetUserControlDisabledPackages_failingAsPO() {
|
||||
final List<String> testPackages = new ArrayList<>();
|
||||
testPackages.add("package_1");
|
||||
testPackages.add("package_2");
|
||||
|
||||
mContext.callerPermissions.add(android.Manifest.permission.MANAGE_DEVICE_ADMINS);
|
||||
mServiceContext.permissions.add(permission.MANAGE_DEVICE_ADMINS);
|
||||
setAsProfileOwner(admin1);
|
||||
|
||||
assertExpectException(SecurityException.class, /* messageRegex= */ null,
|
||||
() -> dpm.setUserControlDisabledPackages(admin1, testPackages));
|
||||
|
||||
assertExpectException(SecurityException.class, /* messageRegex= */ null,
|
||||
() -> dpm.getUserControlDisabledPackages(admin1));
|
||||
}
|
||||
|
||||
@@ -21,6 +21,8 @@ import static android.app.admin.DevicePolicyManager.DEVICE_OWNER_TYPE_FINANCED;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.mockito.Mockito.verify;
|
||||
|
||||
import android.content.ComponentName;
|
||||
import android.os.UserHandle;
|
||||
import android.test.suitebuilder.annotation.SmallTest;
|
||||
@@ -29,9 +31,14 @@ import androidx.test.runner.AndroidJUnit4;
|
||||
|
||||
import com.android.server.devicepolicy.DevicePolicyManagerServiceTestable.OwnersTestable;
|
||||
|
||||
import com.google.android.collect.Lists;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Tests for the DeviceOwner object that saves & loads device and policy owner information.
|
||||
*
|
||||
@@ -43,6 +50,9 @@ import org.junit.runner.RunWith;
|
||||
@RunWith(AndroidJUnit4.class)
|
||||
public class OwnersTest extends DpmTestBase {
|
||||
|
||||
private static final List<String> DEVICE_OWNER_PROTECTED_PACKAGES =
|
||||
Lists.newArrayList("package_1", "package_2");
|
||||
|
||||
@Test
|
||||
public void testUpgrade01() throws Exception {
|
||||
getServices().addUsers(10, 11, 20, 21);
|
||||
@@ -71,6 +81,8 @@ public class OwnersTest extends DpmTestBase {
|
||||
assertThat(owners.getDeviceOwnerUserId()).isEqualTo(UserHandle.USER_NULL);
|
||||
assertThat(owners.getDeviceOwnerType(owners.getDeviceOwnerPackageName())).isEqualTo(
|
||||
DEVICE_OWNER_TYPE_DEFAULT);
|
||||
assertThat(owners.getDeviceOwnerProtectedPackages(owners.getDeviceOwnerPackageName()))
|
||||
.isEmpty();
|
||||
assertThat(owners.getSystemUpdatePolicy()).isNull();
|
||||
assertThat(owners.getProfileOwnerKeys()).isEmpty();
|
||||
|
||||
@@ -96,6 +108,8 @@ public class OwnersTest extends DpmTestBase {
|
||||
assertThat(owners.getDeviceOwnerUserId()).isEqualTo(UserHandle.USER_NULL);
|
||||
assertThat(owners.getDeviceOwnerType(owners.getDeviceOwnerPackageName())).isEqualTo(
|
||||
DEVICE_OWNER_TYPE_DEFAULT);
|
||||
assertThat(owners.getDeviceOwnerProtectedPackages(owners.getDeviceOwnerPackageName()))
|
||||
.isEmpty();
|
||||
assertThat(owners.getSystemUpdatePolicy()).isNull();
|
||||
assertThat(owners.getProfileOwnerKeys()).isEmpty();
|
||||
|
||||
@@ -136,6 +150,8 @@ public class OwnersTest extends DpmTestBase {
|
||||
assertThat(owners.getDeviceOwnerUserId()).isEqualTo(UserHandle.USER_SYSTEM);
|
||||
assertThat(owners.getDeviceOwnerType(owners.getDeviceOwnerPackageName())).isEqualTo(
|
||||
DEVICE_OWNER_TYPE_DEFAULT);
|
||||
assertThat(owners.getDeviceOwnerProtectedPackages(owners.getDeviceOwnerPackageName()))
|
||||
.isEmpty();
|
||||
|
||||
assertThat(owners.getSystemUpdatePolicy()).isNull();
|
||||
assertThat(owners.getProfileOwnerKeys()).isEmpty();
|
||||
@@ -158,6 +174,8 @@ public class OwnersTest extends DpmTestBase {
|
||||
assertThat(owners.getDeviceOwnerUserId()).isEqualTo(UserHandle.USER_SYSTEM);
|
||||
assertThat(owners.getDeviceOwnerType(owners.getDeviceOwnerPackageName())).isEqualTo(
|
||||
DEVICE_OWNER_TYPE_DEFAULT);
|
||||
assertThat(owners.getDeviceOwnerProtectedPackages(owners.getDeviceOwnerPackageName()))
|
||||
.isEmpty();
|
||||
|
||||
assertThat(owners.getSystemUpdatePolicy()).isNull();
|
||||
assertThat(owners.getProfileOwnerKeys()).isEmpty();
|
||||
@@ -198,6 +216,8 @@ public class OwnersTest extends DpmTestBase {
|
||||
assertThat(owners.getSystemUpdatePolicy()).isNull();
|
||||
assertThat(owners.getDeviceOwnerType(owners.getDeviceOwnerPackageName())).isEqualTo(
|
||||
DEVICE_OWNER_TYPE_DEFAULT);
|
||||
assertThat(owners.getDeviceOwnerProtectedPackages(owners.getDeviceOwnerPackageName()))
|
||||
.isEmpty();
|
||||
|
||||
assertThat(owners.getProfileOwnerKeys()).hasSize(2);
|
||||
assertThat(owners.getProfileOwnerComponent(10))
|
||||
@@ -228,6 +248,8 @@ public class OwnersTest extends DpmTestBase {
|
||||
assertThat(owners.getSystemUpdatePolicy()).isNull();
|
||||
assertThat(owners.getDeviceOwnerType(owners.getDeviceOwnerPackageName())).isEqualTo(
|
||||
DEVICE_OWNER_TYPE_DEFAULT);
|
||||
assertThat(owners.getDeviceOwnerProtectedPackages(owners.getDeviceOwnerPackageName()))
|
||||
.isEmpty();
|
||||
|
||||
assertThat(owners.getProfileOwnerKeys()).hasSize(2);
|
||||
assertThat(owners.getProfileOwnerComponent(10))
|
||||
@@ -282,6 +304,8 @@ public class OwnersTest extends DpmTestBase {
|
||||
assertThat(owners.getDeviceOwnerUserId()).isEqualTo(UserHandle.USER_SYSTEM);
|
||||
assertThat(owners.getDeviceOwnerType(owners.getDeviceOwnerPackageName())).isEqualTo(
|
||||
DEVICE_OWNER_TYPE_DEFAULT);
|
||||
assertThat(owners.getDeviceOwnerProtectedPackages(owners.getDeviceOwnerPackageName()))
|
||||
.isEmpty();
|
||||
|
||||
assertThat(owners.getSystemUpdatePolicy()).isNotNull();
|
||||
assertThat(owners.getSystemUpdatePolicy().getPolicyType()).isEqualTo(5);
|
||||
@@ -316,6 +340,8 @@ public class OwnersTest extends DpmTestBase {
|
||||
assertThat(owners.getDeviceOwnerUserId()).isEqualTo(UserHandle.USER_SYSTEM);
|
||||
assertThat(owners.getDeviceOwnerType(owners.getDeviceOwnerPackageName())).isEqualTo(
|
||||
DEVICE_OWNER_TYPE_DEFAULT);
|
||||
assertThat(owners.getDeviceOwnerProtectedPackages(owners.getDeviceOwnerPackageName()))
|
||||
.isEmpty();
|
||||
|
||||
assertThat(owners.getSystemUpdatePolicy()).isNotNull();
|
||||
assertThat(owners.getSystemUpdatePolicy().getPolicyType()).isEqualTo(5);
|
||||
@@ -344,6 +370,14 @@ public class OwnersTest extends DpmTestBase {
|
||||
DEVICE_OWNER_TYPE_FINANCED);
|
||||
assertThat(owners.getDeviceOwnerType(owners.getDeviceOwnerPackageName())).isEqualTo(
|
||||
DEVICE_OWNER_TYPE_FINANCED);
|
||||
|
||||
owners.setDeviceOwnerProtectedPackages(
|
||||
owners.getDeviceOwnerPackageName(), DEVICE_OWNER_PROTECTED_PACKAGES);
|
||||
assertThat(owners.getDeviceOwnerProtectedPackages(owners.getDeviceOwnerPackageName()))
|
||||
.isEqualTo(DEVICE_OWNER_PROTECTED_PACKAGES);
|
||||
verify(getServices().packageManagerInternal)
|
||||
.setDeviceOwnerProtectedPackages(
|
||||
owners.getDeviceOwnerPackageName(), DEVICE_OWNER_PROTECTED_PACKAGES);
|
||||
}
|
||||
|
||||
{
|
||||
@@ -353,6 +387,8 @@ public class OwnersTest extends DpmTestBase {
|
||||
assertThat(owners.hasDeviceOwner()).isTrue();
|
||||
assertThat(owners.getDeviceOwnerType(owners.getDeviceOwnerPackageName())).isEqualTo(
|
||||
DEVICE_OWNER_TYPE_FINANCED);
|
||||
assertThat(owners.getDeviceOwnerProtectedPackages(owners.getDeviceOwnerPackageName()))
|
||||
.isEqualTo(DEVICE_OWNER_PROTECTED_PACKAGES);
|
||||
|
||||
assertThat(owners.getDeviceOwnerUserRestrictionsNeedsMigration()).isFalse();
|
||||
assertThat(owners.getProfileOwnerUserRestrictionsNeedsMigration(10)).isTrue();
|
||||
@@ -367,6 +403,14 @@ public class OwnersTest extends DpmTestBase {
|
||||
// The previous device owner type should persist.
|
||||
assertThat(owners.getDeviceOwnerType(owners.getDeviceOwnerPackageName())).isEqualTo(
|
||||
DEVICE_OWNER_TYPE_FINANCED);
|
||||
|
||||
owners.setDeviceOwnerProtectedPackages(
|
||||
owners.getDeviceOwnerPackageName(), new ArrayList<>());
|
||||
assertThat(owners.getDeviceOwnerProtectedPackages(owners.getDeviceOwnerPackageName()))
|
||||
.isEmpty();
|
||||
verify(getServices().packageManagerInternal)
|
||||
.setDeviceOwnerProtectedPackages(
|
||||
owners.getDeviceOwnerPackageName(), new ArrayList<>());
|
||||
}
|
||||
|
||||
{
|
||||
@@ -376,6 +420,8 @@ public class OwnersTest extends DpmTestBase {
|
||||
assertThat(owners.hasDeviceOwner()).isTrue();
|
||||
assertThat(owners.getDeviceOwnerType(owners.getDeviceOwnerPackageName())).isEqualTo(
|
||||
DEVICE_OWNER_TYPE_FINANCED);
|
||||
assertThat(owners.getDeviceOwnerProtectedPackages(owners.getDeviceOwnerPackageName()))
|
||||
.isEmpty();
|
||||
|
||||
assertThat(owners.getDeviceOwnerUserRestrictionsNeedsMigration()).isFalse();
|
||||
assertThat(owners.getProfileOwnerUserRestrictionsNeedsMigration(10)).isTrue();
|
||||
@@ -414,6 +460,8 @@ public class OwnersTest extends DpmTestBase {
|
||||
assertThat(owners.getDeviceOwnerUserId()).isEqualTo(UserHandle.USER_NULL);
|
||||
assertThat(owners.getDeviceOwnerType(owners.getDeviceOwnerPackageName())).isEqualTo(
|
||||
DEVICE_OWNER_TYPE_DEFAULT);
|
||||
assertThat(owners.getDeviceOwnerProtectedPackages(owners.getDeviceOwnerPackageName()))
|
||||
.isEmpty();
|
||||
|
||||
|
||||
assertThat(owners.getSystemUpdatePolicy()).isNull();
|
||||
@@ -435,6 +483,8 @@ public class OwnersTest extends DpmTestBase {
|
||||
assertThat(owners.getDeviceOwnerUserId()).isEqualTo(UserHandle.USER_NULL);
|
||||
assertThat(owners.getDeviceOwnerType(owners.getDeviceOwnerPackageName())).isEqualTo(
|
||||
DEVICE_OWNER_TYPE_DEFAULT);
|
||||
assertThat(owners.getDeviceOwnerProtectedPackages(owners.getDeviceOwnerPackageName()))
|
||||
.isEmpty();
|
||||
|
||||
|
||||
assertThat(owners.getSystemUpdatePolicy()).isNull();
|
||||
@@ -474,6 +524,8 @@ public class OwnersTest extends DpmTestBase {
|
||||
assertThat(owners.getDeviceOwnerUserId()).isEqualTo(UserHandle.USER_NULL);
|
||||
assertThat(owners.getDeviceOwnerType(owners.getDeviceOwnerPackageName())).isEqualTo(
|
||||
DEVICE_OWNER_TYPE_DEFAULT);
|
||||
assertThat(owners.getDeviceOwnerProtectedPackages(owners.getDeviceOwnerPackageName()))
|
||||
.isEmpty();
|
||||
assertThat(owners.getProfileOwnerKeys()).isEmpty();
|
||||
|
||||
assertThat(owners.getSystemUpdatePolicy()).isNotNull();
|
||||
@@ -495,6 +547,8 @@ public class OwnersTest extends DpmTestBase {
|
||||
assertThat(owners.getDeviceOwnerUserId()).isEqualTo(UserHandle.USER_NULL);
|
||||
assertThat(owners.getDeviceOwnerType(owners.getDeviceOwnerPackageName())).isEqualTo(
|
||||
DEVICE_OWNER_TYPE_DEFAULT);
|
||||
assertThat(owners.getDeviceOwnerProtectedPackages(owners.getDeviceOwnerPackageName()))
|
||||
.isEmpty();
|
||||
assertThat(owners.getProfileOwnerKeys()).isEmpty();
|
||||
|
||||
assertThat(owners.getSystemUpdatePolicy()).isNotNull();
|
||||
@@ -525,6 +579,8 @@ public class OwnersTest extends DpmTestBase {
|
||||
assertThat(owners.getDeviceOwnerFile().exists()).isTrue();
|
||||
assertThat(owners.getDeviceOwnerType(owners.getDeviceOwnerPackageName())).isEqualTo(
|
||||
DEVICE_OWNER_TYPE_DEFAULT);
|
||||
assertThat(owners.getDeviceOwnerProtectedPackages(owners.getDeviceOwnerPackageName()))
|
||||
.isEmpty();
|
||||
assertThat(owners.getProfileOwnerFile(10).exists()).isTrue();
|
||||
assertThat(owners.getProfileOwnerFile(11).exists()).isTrue();
|
||||
|
||||
@@ -532,6 +588,13 @@ public class OwnersTest extends DpmTestBase {
|
||||
owners.setDeviceOwnerType(previousDeviceOwnerPackageName, DEVICE_OWNER_TYPE_FINANCED);
|
||||
assertThat(owners.getDeviceOwnerType(previousDeviceOwnerPackageName)).isEqualTo(
|
||||
DEVICE_OWNER_TYPE_FINANCED);
|
||||
owners.setDeviceOwnerProtectedPackages(
|
||||
previousDeviceOwnerPackageName, DEVICE_OWNER_PROTECTED_PACKAGES);
|
||||
assertThat(owners.getDeviceOwnerProtectedPackages(previousDeviceOwnerPackageName))
|
||||
.isEqualTo(DEVICE_OWNER_PROTECTED_PACKAGES);
|
||||
verify(getServices().packageManagerInternal)
|
||||
.setDeviceOwnerProtectedPackages(
|
||||
owners.getDeviceOwnerPackageName(), DEVICE_OWNER_PROTECTED_PACKAGES);
|
||||
|
||||
// Then clear all information and save.
|
||||
owners.clearDeviceOwner();
|
||||
@@ -552,5 +615,10 @@ public class OwnersTest extends DpmTestBase {
|
||||
|
||||
assertThat(owners.getDeviceOwnerType(previousDeviceOwnerPackageName)).isEqualTo(
|
||||
DEVICE_OWNER_TYPE_DEFAULT);
|
||||
assertThat(owners.getDeviceOwnerProtectedPackages(previousDeviceOwnerPackageName))
|
||||
.isEmpty();
|
||||
verify(getServices().packageManagerInternal)
|
||||
.setDeviceOwnerProtectedPackages(
|
||||
previousDeviceOwnerPackageName, new ArrayList<>());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user