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

Commit 74777ccd authored by Nicolas Prévot's avatar Nicolas Prévot Committed by Android (Google) Code Review
Browse files

Merge "Ask the user to unlock the work profile before adding a work account." into nyc-dev

parents 90b71c64 a599c8fd
Loading
Loading
Loading
Loading
+2 −2
Original line number Original line Diff line number Diff line
@@ -88,8 +88,8 @@ public final class ChooseLockSettingsHelper {
     * @return true if one exists and we launched an activity to confirm it
     * @return true if one exists and we launched an activity to confirm it
     * @see Activity#onActivityResult(int, int, android.content.Intent)
     * @see Activity#onActivityResult(int, int, android.content.Intent)
     */
     */
    boolean launchConfirmationActivity(int request, CharSequence title, boolean returnCredentials,
    public boolean launchConfirmationActivity(int request, CharSequence title,
            int userId) {
            boolean returnCredentials, int userId) {
        return launchConfirmationActivity(request, title, null, null,
        return launchConfirmationActivity(request, title, null, null,
                returnCredentials, false, false, 0, Utils.enforceSameOwner(mActivity, userId));
                returnCredentials, false, false, 0, Utils.enforceSameOwner(mActivity, userId));
    }
    }
+33 −12
Original line number Original line Diff line number Diff line
@@ -32,6 +32,7 @@ import android.os.UserManager;
import android.util.Log;
import android.util.Log;
import android.widget.Toast;
import android.widget.Toast;


import com.android.settings.ChooseLockSettingsHelper;
import com.android.settings.R;
import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.Utils;
import com.android.settingslib.RestrictedLockUtils;
import com.android.settingslib.RestrictedLockUtils;
@@ -83,6 +84,7 @@ public class AddAccountSettings extends Activity {


    private static final int CHOOSE_ACCOUNT_REQUEST = 1;
    private static final int CHOOSE_ACCOUNT_REQUEST = 1;
    private static final int ADD_ACCOUNT_REQUEST = 2;
    private static final int ADD_ACCOUNT_REQUEST = 2;
    private static final int UNLOCK_WORK_PROFILE_REQUEST = 3;


    private PendingIntent mPendingIntent;
    private PendingIntent mPendingIntent;


@@ -154,24 +156,27 @@ public class AddAccountSettings extends Activity {
            finish();
            finish();
            return;
            return;
        }
        }
        final String[] authorities =

                getIntent().getStringArrayExtra(AccountPreferenceBase.AUTHORITIES_FILTER_KEY);
        // If the profile is locked, we must ask the user to unlock it first.
        final String[] accountTypes =
        ChooseLockSettingsHelper helper = new ChooseLockSettingsHelper(this);
                getIntent().getStringArrayExtra(AccountPreferenceBase.ACCOUNT_TYPES_FILTER_KEY);
        if (!helper.launchConfirmationActivity(UNLOCK_WORK_PROFILE_REQUEST,
        final Intent intent = new Intent(this, ChooseAccountActivity.class);
                getString(R.string.unlock_set_unlock_launch_picker_title),
        if (authorities != null) {
                false,
            intent.putExtra(AccountPreferenceBase.AUTHORITIES_FILTER_KEY, authorities);
                mUserHandle.getIdentifier())) {
        }
            requestChooseAccount();
        if (accountTypes != null) {
            intent.putExtra(AccountPreferenceBase.ACCOUNT_TYPES_FILTER_KEY, accountTypes);
        }
        }
        intent.putExtra(EXTRA_USER, mUserHandle);
        startActivityForResult(intent, CHOOSE_ACCOUNT_REQUEST);
    }
    }


    @Override
    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        switch (requestCode) {
        switch (requestCode) {
        case UNLOCK_WORK_PROFILE_REQUEST:
            if (resultCode == Activity.RESULT_OK) {
                requestChooseAccount();
            } else {
                finish();
            }
            break;
        case CHOOSE_ACCOUNT_REQUEST:
        case CHOOSE_ACCOUNT_REQUEST:
            if (resultCode == RESULT_CANCELED) {
            if (resultCode == RESULT_CANCELED) {
                if (data != null) {
                if (data != null) {
@@ -202,6 +207,22 @@ public class AddAccountSettings extends Activity {
        if (Log.isLoggable(TAG, Log.VERBOSE)) Log.v(TAG, "saved");
        if (Log.isLoggable(TAG, Log.VERBOSE)) Log.v(TAG, "saved");
    }
    }


    private void requestChooseAccount() {
        final String[] authorities =
                getIntent().getStringArrayExtra(AccountPreferenceBase.AUTHORITIES_FILTER_KEY);
        final String[] accountTypes =
                getIntent().getStringArrayExtra(AccountPreferenceBase.ACCOUNT_TYPES_FILTER_KEY);
        final Intent intent = new Intent(this, ChooseAccountActivity.class);
        if (authorities != null) {
            intent.putExtra(AccountPreferenceBase.AUTHORITIES_FILTER_KEY, authorities);
        }
        if (accountTypes != null) {
            intent.putExtra(AccountPreferenceBase.ACCOUNT_TYPES_FILTER_KEY, accountTypes);
        }
        intent.putExtra(EXTRA_USER, mUserHandle);
        startActivityForResult(intent, CHOOSE_ACCOUNT_REQUEST);
    }

    private void addAccount(String accountType) {
    private void addAccount(String accountType) {
        Bundle addAccountOptions = new Bundle();
        Bundle addAccountOptions = new Bundle();
        /*
        /*