Merge "Fix connected apps for headless (was previously always checking allowed apps on user 0)." into udc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
b5c0e6e753
@@ -15735,7 +15735,7 @@ public class DevicePolicyManager {
|
|||||||
throwIfParentInstance("getAllCrossProfilePackages");
|
throwIfParentInstance("getAllCrossProfilePackages");
|
||||||
if (mService != null) {
|
if (mService != null) {
|
||||||
try {
|
try {
|
||||||
return new ArraySet<>(mService.getAllCrossProfilePackages());
|
return new ArraySet<>(mService.getAllCrossProfilePackages(mContext.getUserId()));
|
||||||
} catch (RemoteException e) {
|
} catch (RemoteException e) {
|
||||||
throw e.rethrowFromSystemServer();
|
throw e.rethrowFromSystemServer();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -206,7 +206,7 @@ public abstract class DevicePolicyManagerInternal {
|
|||||||
*
|
*
|
||||||
* @hide
|
* @hide
|
||||||
*/
|
*/
|
||||||
public abstract List<String> getAllCrossProfilePackages();
|
public abstract List<String> getAllCrossProfilePackages(int userId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the default package names set by the OEM that are allowed to communicate
|
* Returns the default package names set by the OEM that are allowed to communicate
|
||||||
|
|||||||
@@ -515,7 +515,7 @@ interface IDevicePolicyManager {
|
|||||||
void setCrossProfilePackages(in ComponentName admin, in List<String> packageNames);
|
void setCrossProfilePackages(in ComponentName admin, in List<String> packageNames);
|
||||||
List<String> getCrossProfilePackages(in ComponentName admin);
|
List<String> getCrossProfilePackages(in ComponentName admin);
|
||||||
|
|
||||||
List<String> getAllCrossProfilePackages();
|
List<String> getAllCrossProfilePackages(int userId);
|
||||||
List<String> getDefaultCrossProfilePackages();
|
List<String> getDefaultCrossProfilePackages();
|
||||||
|
|
||||||
boolean isManagedKiosk();
|
boolean isManagedKiosk();
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
package com.android.server.pm;
|
package com.android.server.pm;
|
||||||
|
|
||||||
import static android.Manifest.permission.CONFIGURE_INTERACT_ACROSS_PROFILES;
|
import static android.Manifest.permission.CONFIGURE_INTERACT_ACROSS_PROFILES;
|
||||||
import static android.Manifest.permission.INTERACT_ACROSS_PROFILES;
|
import static android.Manifest.permission.INTERACT_ACROSS_PROFILES;
|
||||||
import static android.Manifest.permission.INTERACT_ACROSS_USERS;
|
import static android.Manifest.permission.INTERACT_ACROSS_USERS;
|
||||||
@@ -333,9 +334,10 @@ public class CrossProfileAppsServiceImpl extends ICrossProfileApps.Stub {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private boolean isCrossProfilePackageAllowlisted(String packageName) {
|
private boolean isCrossProfilePackageAllowlisted(String packageName) {
|
||||||
|
int userId = mInjector.getCallingUserId();
|
||||||
return mInjector.withCleanCallingIdentity(() ->
|
return mInjector.withCleanCallingIdentity(() ->
|
||||||
mInjector.getDevicePolicyManagerInternal()
|
mInjector.getDevicePolicyManagerInternal()
|
||||||
.getAllCrossProfilePackages().contains(packageName));
|
.getAllCrossProfilePackages(userId).contains(packageName));
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isCrossProfilePackageAllowlistedByDefault(String packageName) {
|
private boolean isCrossProfilePackageAllowlistedByDefault(String packageName) {
|
||||||
|
|||||||
@@ -238,6 +238,7 @@ public class UserRestrictionsUtils {
|
|||||||
UserManager.DISALLOW_CONFIG_DATE_TIME,
|
UserManager.DISALLOW_CONFIG_DATE_TIME,
|
||||||
UserManager.DISALLOW_CONFIG_PRIVATE_DNS,
|
UserManager.DISALLOW_CONFIG_PRIVATE_DNS,
|
||||||
UserManager.DISALLOW_CHANGE_WIFI_STATE,
|
UserManager.DISALLOW_CHANGE_WIFI_STATE,
|
||||||
|
UserManager.DISALLOW_DEBUGGING_FEATURES,
|
||||||
UserManager.DISALLOW_WIFI_TETHERING,
|
UserManager.DISALLOW_WIFI_TETHERING,
|
||||||
UserManager.DISALLOW_WIFI_DIRECT,
|
UserManager.DISALLOW_WIFI_DIRECT,
|
||||||
UserManager.DISALLOW_ADD_WIFI_CONFIG,
|
UserManager.DISALLOW_ADD_WIFI_CONFIG,
|
||||||
|
|||||||
@@ -13393,14 +13393,8 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
|
|||||||
PolicyDefinition<Boolean> policyDefinition =
|
PolicyDefinition<Boolean> policyDefinition =
|
||||||
PolicyDefinition.getPolicyDefinitionForUserRestriction(key);
|
PolicyDefinition.getPolicyDefinitionForUserRestriction(key);
|
||||||
if (enabledFromThisOwner) {
|
if (enabledFromThisOwner) {
|
||||||
// TODO: Remove this special case - replace with breaking change to require
|
|
||||||
// setGlobally to disable ADB
|
|
||||||
if (key.equals(UserManager.DISALLOW_DEBUGGING_FEATURES) && parent) {
|
|
||||||
setGlobalUserRestrictionInternal(admin, key, /* enabled= */ true);
|
|
||||||
} else {
|
|
||||||
setLocalUserRestrictionInternal(
|
setLocalUserRestrictionInternal(
|
||||||
admin, key, /* enabled= */ true, affectedUserId);
|
admin, key, /* enabled= */ true, affectedUserId);
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
// Remove any local and global policy that was set by the admin
|
// Remove any local and global policy that was set by the admin
|
||||||
if (!policyDefinition.isLocalOnlyPolicy()) {
|
if (!policyDefinition.isLocalOnlyPolicy()) {
|
||||||
@@ -13918,7 +13912,6 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
|
|||||||
CallerIdentity caller = getCallerIdentity(who, callerPackage);
|
CallerIdentity caller = getCallerIdentity(who, callerPackage);
|
||||||
final int userId = parent ? getProfileParentId(caller.getUserId()) : caller.getUserId();
|
final int userId = parent ? getProfileParentId(caller.getUserId()) : caller.getUserId();
|
||||||
if (isPolicyEngineForFinanceFlagEnabled()) {
|
if (isPolicyEngineForFinanceFlagEnabled()) {
|
||||||
// TODO: We need to ensure the delegate with DELEGATION_PACKAGE_ACCESS can do this
|
|
||||||
enforcePermission(MANAGE_DEVICE_POLICY_PACKAGE_STATE, caller.getPackageName(), userId);
|
enforcePermission(MANAGE_DEVICE_POLICY_PACKAGE_STATE, caller.getPackageName(), userId);
|
||||||
} else {
|
} else {
|
||||||
Preconditions.checkCallAuthorization((caller.hasAdminComponent()
|
Preconditions.checkCallAuthorization((caller.hasAdminComponent()
|
||||||
@@ -16089,8 +16082,8 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<String> getAllCrossProfilePackages() {
|
public List<String> getAllCrossProfilePackages(int userId) {
|
||||||
return DevicePolicyManagerService.this.getAllCrossProfilePackages();
|
return DevicePolicyManagerService.this.getAllCrossProfilePackages(userId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -20309,7 +20302,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<String> getAllCrossProfilePackages() {
|
public List<String> getAllCrossProfilePackages(int userId) {
|
||||||
if (!mHasFeature) {
|
if (!mHasFeature) {
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
}
|
}
|
||||||
@@ -20321,7 +20314,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
|
|||||||
caller, permission.INTERACT_ACROSS_PROFILES));
|
caller, permission.INTERACT_ACROSS_PROFILES));
|
||||||
|
|
||||||
synchronized (getLockObject()) {
|
synchronized (getLockObject()) {
|
||||||
final List<ActiveAdmin> admins = getProfileOwnerAdminsForCurrentProfileGroup();
|
final List<ActiveAdmin> admins = getProfileOwnerAdminsForProfileGroup(userId);
|
||||||
final List<String> packages = getCrossProfilePackagesForAdmins(admins);
|
final List<String> packages = getCrossProfilePackagesForAdmins(admins);
|
||||||
|
|
||||||
packages.addAll(getDefaultCrossProfilePackages());
|
packages.addAll(getDefaultCrossProfilePackages());
|
||||||
@@ -20350,11 +20343,10 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
|
|||||||
return new ArrayList<>(crossProfilePackages);
|
return new ArrayList<>(crossProfilePackages);
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<ActiveAdmin> getProfileOwnerAdminsForCurrentProfileGroup() {
|
private List<ActiveAdmin> getProfileOwnerAdminsForProfileGroup(int userId) {
|
||||||
synchronized (getLockObject()) {
|
synchronized (getLockObject()) {
|
||||||
final List<ActiveAdmin> admins = new ArrayList<>();
|
final List<ActiveAdmin> admins = new ArrayList<>();
|
||||||
int[] users = mUserManager.getProfileIdsWithDisabled(
|
int[] users = mUserManager.getProfileIdsWithDisabled(userId);
|
||||||
mInjector.userHandleGetCallingUserId());
|
|
||||||
for (int i = 0; i < users.length; i++) {
|
for (int i = 0; i < users.length; i++) {
|
||||||
final ComponentName componentName = getProfileOwnerAsUser(users[i]);
|
final ComponentName componentName = getProfileOwnerAsUser(users[i]);
|
||||||
if (componentName != null) {
|
if (componentName != null) {
|
||||||
|
|||||||
@@ -201,7 +201,7 @@ public class CrossProfileAppsServiceImplRoboTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void mockCrossProfileAppWhitelisted() {
|
private void mockCrossProfileAppWhitelisted() {
|
||||||
when(mDevicePolicyManagerInternal.getAllCrossProfilePackages())
|
when(mDevicePolicyManagerInternal.getAllCrossProfilePackages(anyInt()))
|
||||||
.thenReturn(Lists.newArrayList(CROSS_PROFILE_APP_PACKAGE_NAME));
|
.thenReturn(Lists.newArrayList(CROSS_PROFILE_APP_PACKAGE_NAME));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -662,7 +662,7 @@ public class CrossProfileAppsServiceImplRoboTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void mockCrossProfileAppNotWhitelisted() {
|
private void mockCrossProfileAppNotWhitelisted() {
|
||||||
when(mDevicePolicyManagerInternal.getAllCrossProfilePackages())
|
when(mDevicePolicyManagerInternal.getAllCrossProfilePackages(anyInt()))
|
||||||
.thenReturn(new ArrayList<>());
|
.thenReturn(new ArrayList<>());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user