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

Commit 817446c0 authored by Rubin Xu's avatar Rubin Xu Committed by android-build-merger
Browse files

Merge "Do not show work challenge when profile is turned off." into nyc-dev am: ad9758fb

am: d4b1fa94

* commit 'd4b1fa94':
  Do not show work challenge when profile is turned off.
parents 8e25680d d4b1fa94
Loading
Loading
Loading
Loading
+22 −14
Original line number Diff line number Diff line
@@ -98,15 +98,23 @@ class ActivityStartInterceptor {
        mAInfo = aInfo;
        mResolvedType = resolvedType;
        mInTask = inTask;
        interceptQuietProfileIfNeeded();
        interceptSuspendPackageIfNeed();
        if (interceptSuspendPackageIfNeed()) {
            // Skip the rest of interceptions as the package is suspended by device admin so
            // no user action can undo this.
            return;
        }
        if (interceptQuietProfileIfNeeded()) {
            // If work profile is turned off, skip the work challenge since the profile can only
            // be unlocked when profile's user is running.
            return;
        }
        interceptWorkProfileChallengeIfNeeded();
    }

    private void interceptQuietProfileIfNeeded() {
    private boolean interceptQuietProfileIfNeeded() {
        // Do not intercept if the user has not turned off the profile
        if (!mUserManager.isQuietModeEnabled(UserHandle.of(mUserId))) {
            return;
            return false;
        }
        mIntent = UnlaunchableAppActivity.createInQuietModeDialogIntent(mUserId);
        mCallingPid = mRealCallingPid;
@@ -115,15 +123,15 @@ class ActivityStartInterceptor {

        final UserInfo parent = mUserManager.getProfileParent(mUserId);
        mRInfo = mSupervisor.resolveIntent(mIntent, mResolvedType, parent.id);
        mAInfo = mSupervisor.resolveActivity(mIntent, mRInfo, mStartFlags,
                null /*profilerInfo*/);
        mAInfo = mSupervisor.resolveActivity(mIntent, mRInfo, mStartFlags, null /*profilerInfo*/);
        return true;
    }

    private void interceptSuspendPackageIfNeed() {
    private boolean interceptSuspendPackageIfNeed() {
        // Do not intercept if the admin did not suspend the package
        if (mAInfo == null || mAInfo.applicationInfo == null ||
                (mAInfo.applicationInfo.flags & FLAG_SUSPENDED) == 0) {
            return;
            return false;
        }
        mIntent = UnlaunchableAppActivity.createPackageSuspendedDialogIntent(mAInfo.packageName,
                mUserId);
@@ -137,15 +145,15 @@ class ActivityStartInterceptor {
        } else {
            mRInfo = mSupervisor.resolveIntent(mIntent, mResolvedType, mUserId);
        }
        mAInfo = mSupervisor.resolveActivity(mIntent, mRInfo, mStartFlags,
                null /*profilerInfo*/);
        mAInfo = mSupervisor.resolveActivity(mIntent, mRInfo, mStartFlags, null /*profilerInfo*/);
        return true;
    }

    private void interceptWorkProfileChallengeIfNeeded() {
    private boolean interceptWorkProfileChallengeIfNeeded() {
        final Intent interceptingIntent = interceptWithConfirmCredentialsIfNeeded(mIntent,
                mResolvedType, mAInfo, mCallingPackage, mUserId);
        if (interceptingIntent == null) {
            return;
            return false;
        }
        mIntent = interceptingIntent;
        mCallingPid = mRealCallingPid;
@@ -161,8 +169,8 @@ class ActivityStartInterceptor {

        final UserInfo parent = mUserManager.getProfileParent(mUserId);
        mRInfo = mSupervisor.resolveIntent(mIntent, mResolvedType, parent.id);
        mAInfo = mSupervisor.resolveActivity(mIntent, mRInfo, mStartFlags,
                null /*profilerInfo*/);
        mAInfo = mSupervisor.resolveActivity(mIntent, mRInfo, mStartFlags, null /*profilerInfo*/);
        return true;
    }

    /**
+5 −0
Original line number Diff line number Diff line
@@ -1375,6 +1375,11 @@ final class UserController {
     * intercept activity launches for work apps when the Work Challenge is present.
     */
    boolean shouldConfirmCredentials(int userId) {
        synchronized (mService) {
            if (mStartedUsers.get(userId) == null) {
                return false;
            }
        }
        if (!mLockPatternUtils.isSeparateProfileChallengeEnabled(userId)) {
            return false;
        }