Merge changes from topic "sv2sec-sc-dev" into sc-mainline-prod
* changes:
[automerge] [sc] RESTRICT AUTOMERGE Add finalizeWorkProfileProvisioning. 2p: b519b549fd
[sc] RESTRICT AUTOMERGE Add finalizeWorkProfileProvisioning.
This commit is contained in:
committed by
Android (Google) Code Review
commit
4bfbca30eb
@@ -19,6 +19,7 @@ package android.app.admin;
|
|||||||
import static com.android.internal.util.function.pooled.PooledLambda.obtainMessage;
|
import static com.android.internal.util.function.pooled.PooledLambda.obtainMessage;
|
||||||
|
|
||||||
import android.Manifest.permission;
|
import android.Manifest.permission;
|
||||||
|
import android.accounts.Account;
|
||||||
import android.annotation.CallbackExecutor;
|
import android.annotation.CallbackExecutor;
|
||||||
import android.annotation.ColorInt;
|
import android.annotation.ColorInt;
|
||||||
import android.annotation.IntDef;
|
import android.annotation.IntDef;
|
||||||
@@ -165,6 +166,27 @@ public class DevicePolicyManager {
|
|||||||
this(context, service, false);
|
this(context, service, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when a managed profile has been provisioned.
|
||||||
|
*
|
||||||
|
* @throws SecurityException if the caller does not hold
|
||||||
|
* {@link android.Manifest.permission#MANAGE_PROFILE_AND_DEVICE_OWNERS}.
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
@RequiresPermission(android.Manifest.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS)
|
||||||
|
public void finalizeWorkProfileProvisioning(
|
||||||
|
@NonNull UserHandle managedProfileUser, @Nullable Account migratedAccount) {
|
||||||
|
Objects.requireNonNull(managedProfileUser, "managedProfileUser can't be null");
|
||||||
|
if (mService == null) {
|
||||||
|
throw new IllegalStateException("Could not find DevicePolicyManagerService");
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
mService.finalizeWorkProfileProvisioning(managedProfileUser, migratedAccount);
|
||||||
|
} catch (RemoteException e) {
|
||||||
|
throw e.rethrowFromSystemServer();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/** @hide */
|
/** @hide */
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
protected DevicePolicyManager(Context context, IDevicePolicyManager service,
|
protected DevicePolicyManager(Context context, IDevicePolicyManager service,
|
||||||
|
|||||||
@@ -17,6 +17,7 @@
|
|||||||
|
|
||||||
package android.app.admin;
|
package android.app.admin;
|
||||||
|
|
||||||
|
import android.accounts.Account;
|
||||||
import android.app.admin.NetworkEvent;
|
import android.app.admin.NetworkEvent;
|
||||||
import android.app.IApplicationThread;
|
import android.app.IApplicationThread;
|
||||||
import android.app.IServiceConnection;
|
import android.app.IServiceConnection;
|
||||||
@@ -97,6 +98,8 @@ interface IDevicePolicyManager {
|
|||||||
int getCurrentFailedPasswordAttempts(int userHandle, boolean parent);
|
int getCurrentFailedPasswordAttempts(int userHandle, boolean parent);
|
||||||
int getProfileWithMinimumFailedPasswordsForWipe(int userHandle, boolean parent);
|
int getProfileWithMinimumFailedPasswordsForWipe(int userHandle, boolean parent);
|
||||||
|
|
||||||
|
void finalizeWorkProfileProvisioning(in UserHandle managedProfileUser, in Account migratedAccount);
|
||||||
|
|
||||||
void setMaximumFailedPasswordsForWipe(in ComponentName admin, int num, boolean parent);
|
void setMaximumFailedPasswordsForWipe(in ComponentName admin, int num, boolean parent);
|
||||||
int getMaximumFailedPasswordsForWipe(in ComponentName admin, int userHandle, boolean parent);
|
int getMaximumFailedPasswordsForWipe(in ComponentName admin, int userHandle, boolean parent);
|
||||||
|
|
||||||
|
|||||||
@@ -99,6 +99,7 @@
|
|||||||
<protected-broadcast android:name="android.intent.action.OVERLAY_PRIORITY_CHANGED" />
|
<protected-broadcast android:name="android.intent.action.OVERLAY_PRIORITY_CHANGED" />
|
||||||
<protected-broadcast android:name="android.intent.action.MY_PACKAGE_SUSPENDED" />
|
<protected-broadcast android:name="android.intent.action.MY_PACKAGE_SUSPENDED" />
|
||||||
<protected-broadcast android:name="android.intent.action.MY_PACKAGE_UNSUSPENDED" />
|
<protected-broadcast android:name="android.intent.action.MY_PACKAGE_UNSUSPENDED" />
|
||||||
|
<protected-broadcast android:name="android.app.action.MANAGED_PROFILE_PROVISIONED" />
|
||||||
|
|
||||||
<protected-broadcast android:name="android.os.action.POWER_SAVE_MODE_CHANGED" />
|
<protected-broadcast android:name="android.os.action.POWER_SAVE_MODE_CHANGED" />
|
||||||
<protected-broadcast android:name="android.os.action.DEVICE_IDLE_MODE_CHANGED" />
|
<protected-broadcast android:name="android.os.action.DEVICE_IDLE_MODE_CHANGED" />
|
||||||
|
|||||||
@@ -15,6 +15,7 @@
|
|||||||
*/
|
*/
|
||||||
package com.android.server.devicepolicy;
|
package com.android.server.devicepolicy;
|
||||||
|
|
||||||
|
import android.accounts.Account;
|
||||||
import android.annotation.NonNull;
|
import android.annotation.NonNull;
|
||||||
import android.annotation.UserIdInt;
|
import android.annotation.UserIdInt;
|
||||||
import android.app.admin.DevicePolicySafetyChecker;
|
import android.app.admin.DevicePolicySafetyChecker;
|
||||||
@@ -58,6 +59,7 @@ abstract class BaseIDevicePolicyManager extends IDevicePolicyManager.Stub {
|
|||||||
* @see {@link SystemService#onUserUnlocking}
|
* @see {@link SystemService#onUserUnlocking}
|
||||||
*/
|
*/
|
||||||
abstract void handleUnlockUser(int userId);
|
abstract void handleUnlockUser(int userId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* To be called by {@link DevicePolicyManagerService#Lifecycle} after a user is being unlocked.
|
* To be called by {@link DevicePolicyManagerService#Lifecycle} after a user is being unlocked.
|
||||||
*
|
*
|
||||||
@@ -133,6 +135,11 @@ abstract class BaseIDevicePolicyManager extends IDevicePolicyManager.Stub {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void finalizeWorkProfileProvisioning(
|
||||||
|
UserHandle managedProfileUser, Account migratedAccount) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public void provisionFullyManagedDevice(
|
public void provisionFullyManagedDevice(
|
||||||
FullyManagedDeviceProvisioningParams provisioningParams, String callerPackage) {
|
FullyManagedDeviceProvisioningParams provisioningParams, String callerPackage) {
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ import static android.app.AppOpsManager.MODE_DEFAULT;
|
|||||||
import static android.app.admin.DeviceAdminReceiver.ACTION_COMPLIANCE_ACKNOWLEDGEMENT_REQUIRED;
|
import static android.app.admin.DeviceAdminReceiver.ACTION_COMPLIANCE_ACKNOWLEDGEMENT_REQUIRED;
|
||||||
import static android.app.admin.DeviceAdminReceiver.EXTRA_TRANSFER_OWNERSHIP_ADMIN_EXTRAS_BUNDLE;
|
import static android.app.admin.DeviceAdminReceiver.EXTRA_TRANSFER_OWNERSHIP_ADMIN_EXTRAS_BUNDLE;
|
||||||
import static android.app.admin.DevicePolicyManager.ACTION_CHECK_POLICY_COMPLIANCE;
|
import static android.app.admin.DevicePolicyManager.ACTION_CHECK_POLICY_COMPLIANCE;
|
||||||
|
import static android.app.admin.DevicePolicyManager.ACTION_MANAGED_PROFILE_PROVISIONED;
|
||||||
import static android.app.admin.DevicePolicyManager.ACTION_PROVISION_MANAGED_DEVICE;
|
import static android.app.admin.DevicePolicyManager.ACTION_PROVISION_MANAGED_DEVICE;
|
||||||
import static android.app.admin.DevicePolicyManager.ACTION_PROVISION_MANAGED_PROFILE;
|
import static android.app.admin.DevicePolicyManager.ACTION_PROVISION_MANAGED_PROFILE;
|
||||||
import static android.app.admin.DevicePolicyManager.ACTION_PROVISION_MANAGED_USER;
|
import static android.app.admin.DevicePolicyManager.ACTION_PROVISION_MANAGED_USER;
|
||||||
@@ -56,6 +57,7 @@ import static android.app.admin.DevicePolicyManager.DELEGATION_PACKAGE_ACCESS;
|
|||||||
import static android.app.admin.DevicePolicyManager.DELEGATION_PERMISSION_GRANT;
|
import static android.app.admin.DevicePolicyManager.DELEGATION_PERMISSION_GRANT;
|
||||||
import static android.app.admin.DevicePolicyManager.DELEGATION_SECURITY_LOGGING;
|
import static android.app.admin.DevicePolicyManager.DELEGATION_SECURITY_LOGGING;
|
||||||
import static android.app.admin.DevicePolicyManager.ENCRYPTION_STATUS_ACTIVE_PER_USER;
|
import static android.app.admin.DevicePolicyManager.ENCRYPTION_STATUS_ACTIVE_PER_USER;
|
||||||
|
import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_ACCOUNT_TO_MIGRATE;
|
||||||
import static android.app.admin.DevicePolicyManager.ID_TYPE_BASE_INFO;
|
import static android.app.admin.DevicePolicyManager.ID_TYPE_BASE_INFO;
|
||||||
import static android.app.admin.DevicePolicyManager.ID_TYPE_IMEI;
|
import static android.app.admin.DevicePolicyManager.ID_TYPE_IMEI;
|
||||||
import static android.app.admin.DevicePolicyManager.ID_TYPE_INDIVIDUAL_ATTESTATION;
|
import static android.app.admin.DevicePolicyManager.ID_TYPE_INDIVIDUAL_ATTESTATION;
|
||||||
@@ -10478,6 +10480,35 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void finalizeWorkProfileProvisioning(UserHandle managedProfileUser,
|
||||||
|
Account migratedAccount) {
|
||||||
|
Preconditions.checkCallAuthorization(
|
||||||
|
hasCallingOrSelfPermission(permission.MANAGE_PROFILE_AND_DEVICE_OWNERS));
|
||||||
|
|
||||||
|
if (!isManagedProfile(managedProfileUser.getIdentifier())) {
|
||||||
|
throw new IllegalStateException("Given user is not a managed profile");
|
||||||
|
}
|
||||||
|
ComponentName profileOwnerComponent =
|
||||||
|
mOwners.getProfileOwnerComponent(managedProfileUser.getIdentifier());
|
||||||
|
if (profileOwnerComponent == null) {
|
||||||
|
throw new IllegalStateException("There is no profile owner on the given profile");
|
||||||
|
}
|
||||||
|
Intent primaryProfileSuccessIntent = new Intent(ACTION_MANAGED_PROFILE_PROVISIONED);
|
||||||
|
primaryProfileSuccessIntent.setPackage(profileOwnerComponent.getPackageName());
|
||||||
|
primaryProfileSuccessIntent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES
|
||||||
|
| Intent.FLAG_RECEIVER_FOREGROUND);
|
||||||
|
primaryProfileSuccessIntent.putExtra(Intent.EXTRA_USER, managedProfileUser);
|
||||||
|
|
||||||
|
if (migratedAccount != null) {
|
||||||
|
primaryProfileSuccessIntent.putExtra(EXTRA_PROVISIONING_ACCOUNT_TO_MIGRATE,
|
||||||
|
migratedAccount);
|
||||||
|
}
|
||||||
|
|
||||||
|
mContext.sendBroadcastAsUser(primaryProfileSuccessIntent,
|
||||||
|
UserHandle.of(getProfileParentId(managedProfileUser.getIdentifier())));
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public UserHandle createAndManageUser(ComponentName admin, String name,
|
public UserHandle createAndManageUser(ComponentName admin, String name,
|
||||||
ComponentName profileOwner, PersistableBundle adminExtras, int flags) {
|
ComponentName profileOwner, PersistableBundle adminExtras, int flags) {
|
||||||
|
|||||||
Reference in New Issue
Block a user