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

Commit bfc455c7 authored by Brian Lee's avatar Brian Lee Committed by Android (Google) Code Review
Browse files

Merge "Fix NPE encountered after setting LSKF for remote lockscreen validation" into main

parents f12caf55 ea250995
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -87,6 +87,7 @@ public abstract class ConfirmDeviceCredentialBaseFragment extends InstrumentedFr

    protected static final String FRAGMENT_TAG_REMOTE_LOCKSCREEN_VALIDATION =
            "remote_lockscreen_validation";
    protected static final String FRAGMENT_TAG_SAVE_AND_FINISH = "save_and_finish_worker";

    protected boolean mReturnCredentials = false;
    protected boolean mReturnGatekeeperPassword = false;
@@ -113,6 +114,7 @@ public abstract class ConfirmDeviceCredentialBaseFragment extends InstrumentedFr
    /** Credential saved so the credential can be set for device if remote validation passes */
    @Nullable protected RemoteLockscreenValidationClient mRemoteLockscreenValidationClient;
    protected RemoteLockscreenValidationFragment mRemoteLockscreenValidationFragment;
    @Nullable protected SaveAndFinishWorker mSaveAndFinishWorker;

    private boolean isInternalActivity() {
        return (getActivity() instanceof ConfirmLockPassword.InternalActivity)
@@ -176,6 +178,9 @@ public abstract class ConfirmDeviceCredentialBaseFragment extends InstrumentedFr
                getFragmentManager().beginTransaction().add(mRemoteLockscreenValidationFragment,
                        FRAGMENT_TAG_REMOTE_LOCKSCREEN_VALIDATION).commit();
            }

            mSaveAndFinishWorker = (SaveAndFinishWorker) getFragmentManager()
                    .findFragmentByTag(FRAGMENT_TAG_SAVE_AND_FINISH);
        }

        // Only take this argument into account if it belongs to the current profile.
+18 −8
Original line number Diff line number Diff line
@@ -426,6 +426,9 @@ public class ConfirmLockPassword extends ConfirmDeviceCredentialBaseActivity {
            if (mRemoteLockscreenValidationFragment != null) {
                mRemoteLockscreenValidationFragment.setListener(null, /* handler= */ null);
            }
            if (mSaveAndFinishWorker != null) {
                mSaveAndFinishWorker.setListener(null);
            }
        }

        @Override
@@ -447,9 +450,13 @@ public class ConfirmLockPassword extends ConfirmDeviceCredentialBaseActivity {
                        mLockPatternUtils.getCurrentFailedPasswordAttempts(mEffectiveUserId));
            }
            mCredentialCheckResultTracker.setListener(this);

            if (mRemoteLockscreenValidationFragment != null) {
                mRemoteLockscreenValidationFragment.setListener(this, mHandler);
            }
            if (mSaveAndFinishWorker != null) {
                mSaveAndFinishWorker.setListener(this);
            }
        }

        @Override
@@ -642,14 +649,17 @@ public class ConfirmLockPassword extends ConfirmDeviceCredentialBaseActivity {
                    if (mCheckBox.isChecked() && mRemoteLockscreenValidationFragment
                            .getLockscreenCredential() != null) {
                        Log.i(TAG, "Setting device screen lock to the other device's screen lock.");
                        SaveAndFinishWorker saveAndFinishWorker = new SaveAndFinishWorker();
                        getFragmentManager().beginTransaction().add(saveAndFinishWorker, null)
                        if (mSaveAndFinishWorker == null) {
                            mSaveAndFinishWorker = new SaveAndFinishWorker();
                            getFragmentManager().beginTransaction().add(mSaveAndFinishWorker,
                                            FRAGMENT_TAG_SAVE_AND_FINISH)
                                    .commit();
                            getFragmentManager().executePendingTransactions();
                        saveAndFinishWorker
                            mSaveAndFinishWorker
                                    .setListener(this)
                                    .setRequestGatekeeperPasswordHandle(true);
                        saveAndFinishWorker.start(
                        }
                        mSaveAndFinishWorker.start(
                                mLockPatternUtils,
                                mRemoteLockscreenValidationFragment.getLockscreenCredential(),
                                /* currentCredential= */ null,
+18 −8
Original line number Diff line number Diff line
@@ -263,6 +263,9 @@ public class ConfirmLockPattern extends ConfirmDeviceCredentialBaseActivity {
            if (mRemoteLockscreenValidationFragment != null) {
                mRemoteLockscreenValidationFragment.setListener(null, /* handler= */ null);
            }
            if (mSaveAndFinishWorker != null) {
                mSaveAndFinishWorker.setListener(null);
            }
        }

        @Override
@@ -285,12 +288,16 @@ public class ConfirmLockPattern extends ConfirmDeviceCredentialBaseActivity {
                updateStage(Stage.NeedToUnlock);
            }
            mCredentialCheckResultTracker.setListener(this);

            if (mRemoteLockscreenValidationFragment != null) {
                mRemoteLockscreenValidationFragment.setListener(this, mHandler);
                if (mRemoteLockscreenValidationFragment.isRemoteValidationInProgress()) {
                    mLockPatternView.setEnabled(false);
                }
            }
            if (mSaveAndFinishWorker != null) {
                mSaveAndFinishWorker.setListener(this);
            }
        }

        @Override
@@ -641,14 +648,17 @@ public class ConfirmLockPattern extends ConfirmDeviceCredentialBaseActivity {
                    if (mCheckBox.isChecked() && mRemoteLockscreenValidationFragment
                            .getLockscreenCredential() != null) {
                        Log.i(TAG, "Setting device screen lock to the other device's screen lock.");
                        SaveAndFinishWorker saveAndFinishWorker = new SaveAndFinishWorker();
                        getFragmentManager().beginTransaction().add(saveAndFinishWorker, null)
                        if (mSaveAndFinishWorker == null) {
                            mSaveAndFinishWorker = new SaveAndFinishWorker();
                            getFragmentManager().beginTransaction().add(mSaveAndFinishWorker,
                                            FRAGMENT_TAG_SAVE_AND_FINISH)
                                    .commit();
                            getFragmentManager().executePendingTransactions();
                        saveAndFinishWorker
                            mSaveAndFinishWorker
                                    .setListener(this)
                                    .setRequestGatekeeperPasswordHandle(true);
                        saveAndFinishWorker.start(
                        }
                        mSaveAndFinishWorker.start(
                                mLockPatternUtils,
                                mRemoteLockscreenValidationFragment.getLockscreenCredential(),
                                /* currentCredential= */ null,
+3 −2
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import android.util.Log;
import android.util.Pair;
import android.widget.Toast;

import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
import androidx.fragment.app.Fragment;

@@ -40,7 +41,7 @@ import com.android.settings.safetycenter.LockScreenSafetySource;
public class SaveAndFinishWorker extends Fragment {
    private static final String TAG = "SaveAndFinishWorker";

    private Listener mListener;
    @Nullable private Listener mListener;
    private boolean mFinished;
    private Intent mResultData;

@@ -62,7 +63,7 @@ public class SaveAndFinishWorker extends Fragment {
        setRetainInstance(true);
    }

    public SaveAndFinishWorker setListener(Listener listener) {
    public SaveAndFinishWorker setListener(@Nullable Listener listener) {
        if (mListener == listener) {
            return this;
        }