Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a91b8051 authored by Jonathan Scott's avatar Jonathan Scott
Browse files

Make getUserProvisioningState work cross-user.

Test: btest a.d.c.ProvisioningTest
Change-Id: Ia271dc184f31c84e4451b18cd858c9c8a923cd35
parent b917306f
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -16,12 +16,14 @@
package android.app.admin;
import static android.Manifest.permission.INTERACT_ACROSS_USERS;
import static android.Manifest.permission.INTERACT_ACROSS_USERS_FULL;
import static android.Manifest.permission.QUERY_ADMIN_POLICY;
import static android.Manifest.permission.SET_TIME;
import static android.Manifest.permission.SET_TIME_ZONE;
import static android.content.Intent.LOCAL_FLAG_FROM_SYSTEM;
import static android.net.NetworkCapabilities.NET_ENTERPRISE_ID_1;
import static android.os.Build.VERSION_CODES.UPSIDE_DOWN_CAKE;
import static com.android.internal.util.function.pooled.PooledLambda.obtainMessage;
@@ -13546,11 +13548,14 @@ public class DevicePolicyManager {
            android.Manifest.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS
    })
    @UserProvisioningState
    @UserHandleAware(
            enabledSinceTargetSdkVersion = UPSIDE_DOWN_CAKE,
            requiresPermissionIfNotCaller = INTERACT_ACROSS_USERS)
    public int getUserProvisioningState() {
        throwIfParentInstance("getUserProvisioningState");
        if (mService != null) {
            try {
                return mService.getUserProvisioningState();
                return mService.getUserProvisioningState(mContext.getUserId());
            } catch (RemoteException e) {
                throw e.rethrowFromSystemServer();
            }
+1 −1
Original line number Diff line number Diff line
@@ -415,7 +415,7 @@ interface IDevicePolicyManager {
    CharSequence getDeviceOwnerOrganizationName();
    CharSequence getOrganizationNameForUser(int userHandle);

    int getUserProvisioningState();
    int getUserProvisioningState(int userHandle);
    void setUserProvisioningState(int state, int userHandle);

    void setAffiliationIds(in ComponentName admin, in List<String> ids);
+6 −5
Original line number Diff line number Diff line
@@ -9290,7 +9290,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
    }
    @Override
    public int getUserProvisioningState() {
    public int getUserProvisioningState(int userHandle) {
        if (!mHasFeature) {
            return DevicePolicyManager.STATE_USER_UNMANAGED;
        }
@@ -9298,10 +9298,11 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
        Preconditions.checkCallAuthorization(canManageUsers(caller)
                || hasCallingOrSelfPermission(permission.MANAGE_PROFILE_AND_DEVICE_OWNERS));
        return getUserProvisioningState(caller.getUserId());
        if (userHandle != caller.getUserId()) {
            Preconditions.checkCallAuthorization(canManageUsers(caller)
                    || hasCallingOrSelfPermission(permission.INTERACT_ACROSS_USERS));
        }
    private int getUserProvisioningState(int userHandle) {
        return getUserData(userHandle).mUserProvisioningState;
    }
@@ -9312,7 +9313,6 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
                    + userId);
            return;
        }
        Preconditions.checkCallAuthorization(
                hasCallingOrSelfPermission(permission.MANAGE_PROFILE_AND_DEVICE_OWNERS));
@@ -19280,6 +19280,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
            mInjector.settingsGlobalPutStringForUser(
                    Settings.Global.DEVICE_DEMO_MODE, Integer.toString(/* value= */ 1), userId);
        }
        setUserProvisioningState(STATE_USER_SETUP_FINALIZED, userId);
    }