Fix DPM.ACTION_SET_NEW_PASSWORD
Problem: SetNewPasswordActivity is the new entrance for ACTION_SET_NEW_PASSWORD. And it starts ChooseLockGeneric with the fingerprint extras. ChooseLockGeneric infers which user is starting it and determine which user is setting password. However, it now always think that it is current user as it is always SetNewPasswordActivity in current user starting it. Solution: Resolve the user id in SetNewPasswordActivity and forward it to ChooseLockGeneric. SetNewPasswordActivity needs to know the user id anyway in order to have the fingerprint checking in the correct user id. Test: 1. make RunSettingsRoboTests 2. Manual Test a. Start SET_NEW_PASSWORD intent in user 0, set password. User 0 password is set. b. Start SET_NEW_PASSWORD intent in work profile, set password. work profile password is set. c. SET_PROFILE_PARENT_NEW_PASSWORD is always setting parent password. d. If fingerprint is disabled, both intent should not show fingerprint option e. DO sync auth flow with google.com account, fingerprint option is shown. Change-Id: I2f73d01ab11e91b337beb90c05bbcb857dfd40dc Fix: 32959373
This commit is contained in:
@@ -16,23 +16,26 @@
|
||||
|
||||
package com.android.settings.password;
|
||||
|
||||
import android.annotation.Nullable;
|
||||
import static android.app.admin.DevicePolicyManager.ACTION_SET_NEW_PARENT_PROFILE_PASSWORD;
|
||||
import static android.app.admin.DevicePolicyManager.ACTION_SET_NEW_PASSWORD;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.admin.DevicePolicyManager;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
|
||||
import com.android.settings.ChooseLockGeneric;
|
||||
import com.android.settings.SetupChooseLockGeneric;
|
||||
import com.android.settings.Utils;
|
||||
|
||||
|
||||
/**
|
||||
* Trampolines {@link DevicePolicyManager#ACTION_SET_NEW_PASSWORD} and
|
||||
* {@link DevicePolicyManager#ACTION_SET_NEW_PARENT_PROFILE_PASSWORD} intent to the appropriate UI
|
||||
* activity for handling set new password.
|
||||
*/
|
||||
public class SetNewPasswordActivity extends Activity implements SetNewPasswordController.Ui {
|
||||
private static final String TAG = "SetNewPasswordActivity";
|
||||
private String mNewPasswordAction;
|
||||
private SetNewPasswordController mSetNewPasswordController;
|
||||
|
||||
@@ -41,19 +44,23 @@ public class SetNewPasswordActivity extends Activity implements SetNewPasswordCo
|
||||
super.onCreate(savedState);
|
||||
|
||||
mNewPasswordAction = getIntent().getAction();
|
||||
mSetNewPasswordController = new SetNewPasswordController(this, this);
|
||||
if (!ACTION_SET_NEW_PASSWORD.equals(mNewPasswordAction)
|
||||
&& !ACTION_SET_NEW_PARENT_PROFILE_PASSWORD.equals(mNewPasswordAction)) {
|
||||
Log.e(TAG, "Unexpected action to launch this activity");
|
||||
finish();
|
||||
return;
|
||||
}
|
||||
mSetNewPasswordController = SetNewPasswordController.create(this, this, getIntent());
|
||||
mSetNewPasswordController.dispatchSetNewPasswordIntent();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void launchChooseLock(@Nullable Bundle chooseLockFingerprintExtras) {
|
||||
public void launchChooseLock(Bundle chooseLockFingerprintExtras) {
|
||||
final boolean isInSetupWizard = !Utils.isDeviceProvisioned(this);
|
||||
Intent intent = isInSetupWizard ? new Intent(this, SetupChooseLockGeneric.class)
|
||||
: new Intent(this, ChooseLockGeneric.class);
|
||||
intent.setAction(mNewPasswordAction);
|
||||
if (chooseLockFingerprintExtras != null) {
|
||||
intent.putExtras(chooseLockFingerprintExtras);
|
||||
}
|
||||
intent.putExtras(chooseLockFingerprintExtras);
|
||||
startActivity(intent);
|
||||
finish();
|
||||
}
|
||||
|
Reference in New Issue
Block a user