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

Commit 72b46d42 authored by Andrew Lee's avatar Andrew Lee
Browse files

Reset keyguard/bouncer on "return to call".

+ Add callback, to be invoked when EmergencyButton is clicked when
inside a call.
+ Route callback to the KeyguardViewMediator, to invoke
resetStateLocked() to reset the bouncer.

Bug: 18977746
Change-Id: I4733ccfb6809c4610184a33a28ba38ecf255231f
parent c37fa833
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -50,8 +50,14 @@ public class EmergencyButton extends Button {
            updateEmergencyCallButton();
        }
    };

    public interface EmergencyButtonCallback {
        public void onEmergencyButtonClickedWhenInCall();
    }

    private LockPatternUtils mLockPatternUtils;
    private PowerManager mPowerManager;
    private EmergencyButtonCallback mEmergencyButtonCallback;

    public EmergencyButton(Context context) {
        this(context, null);
@@ -95,6 +101,9 @@ public class EmergencyButton extends Button {
        mPowerManager.userActivity(SystemClock.uptimeMillis(), true);
        if (mLockPatternUtils.isInCall()) {
            mLockPatternUtils.resumeCall();
            if (mEmergencyButtonCallback != null) {
                mEmergencyButtonCallback.onEmergencyButtonClickedWhenInCall();
            }
        } else {
            final boolean bypassHandler = true;
            KeyguardUpdateMonitor.getInstance(mContext).reportEmergencyCallAction(bypassHandler);
@@ -124,4 +133,7 @@ public class EmergencyButton extends Button {
        mLockPatternUtils.updateEmergencyCallButtonState(this, enabled, false);
    }

    public void setCallback(EmergencyButtonCallback callback) {
        mEmergencyButtonCallback = callback;
    }
}
+8 −1
Original line number Diff line number Diff line
@@ -32,7 +32,7 @@ import com.android.internal.widget.LockPatternUtils;
 * Base class for PIN and password unlock screens.
 */
public abstract class KeyguardAbsKeyInputView extends LinearLayout
        implements KeyguardSecurityView {
        implements KeyguardSecurityView, EmergencyButton.EmergencyButtonCallback {
    protected KeyguardSecurityCallback mCallback;
    protected LockPatternUtils mLockPatternUtils;
    protected SecurityMessageDisplay mSecurityMessageDisplay;
@@ -85,6 +85,13 @@ public abstract class KeyguardAbsKeyInputView extends LinearLayout
        mLockPatternUtils = new LockPatternUtils(mContext);
        mSecurityMessageDisplay = new KeyguardMessageArea.Helper(this);
        mEcaView = findViewById(R.id.keyguard_selector_fade_container);

        EmergencyButton button = (EmergencyButton) findViewById(R.id.emergency_call_button);
        button.setCallback(this);
    }

    public void onEmergencyButtonClickedWhenInCall() {
        mCallback.reset();
    }

    /*
+5 −2
Original line number Diff line number Diff line
@@ -195,6 +195,11 @@ public class KeyguardHostView extends FrameLayout implements SecurityCallback {
        }
    }

    @Override
    public void reset() {
        mViewMediatorCallback.resetKeyguard();
    }

    @Override
    public void onSecurityModeChanged(SecurityMode securityMode, boolean needsInput) {
        if (mViewMediatorCallback != null) {
@@ -427,6 +432,4 @@ public class KeyguardHostView extends FrameLayout implements SecurityCallback {
    public SecurityMode getCurrentSecurityMode() {
        return mSecurityContainer.getCurrentSecurityMode();
    }


}
+9 −1
Original line number Diff line number Diff line
@@ -38,7 +38,8 @@ import com.android.internal.widget.LockPatternView;
import java.util.List;

public class KeyguardPatternView extends LinearLayout implements KeyguardSecurityView,
        AppearAnimationCreator<LockPatternView.CellState> {
        AppearAnimationCreator<LockPatternView.CellState>,
        EmergencyButton.EmergencyButtonCallback {

    private static final String TAG = "SecurityPatternView";
    private static final boolean DEBUG = KeyguardConstants.DEBUG;
@@ -140,6 +141,13 @@ public class KeyguardPatternView extends LinearLayout implements KeyguardSecurit
        mEcaView = findViewById(R.id.keyguard_selector_fade_container);
        mContainer = (ViewGroup) findViewById(R.id.container);
        mHelpMessage = (KeyguardMessageArea) findViewById(R.id.keyguard_message_area);

        EmergencyButton button = (EmergencyButton) findViewById(R.id.emergency_call_button);
        button.setCallback(this);
    }

    public void onEmergencyButtonClickedWhenInCall() {
        mCallback.reset();
    }

    @Override
+4 −0
Original line number Diff line number Diff line
@@ -40,4 +40,8 @@ public interface KeyguardSecurityCallback {
     */
    void reportUnlockAttempt(boolean success);

    /**
     * Resets the keyguard view.
     */
    void reset();
}
Loading