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

Commit 85659069 authored by Adrian Roos's avatar Adrian Roos Committed by Android (Google) Code Review
Browse files

Merge "Show back button while RemoteInput is active on keyguard"

parents d713c9d6 d28ccd7c
Loading
Loading
Loading
Loading
+15 −3
Original line number Diff line number Diff line
@@ -30,11 +30,11 @@ import java.util.ArrayList;
public class RemoteInputController {

    private final ArrayList<WeakReference<NotificationData.Entry>> mRemoteInputs = new ArrayList<>();
    private final StatusBarWindowManager mStatusBarWindowManager;
    private final ArrayList<Callback> mCallbacks = new ArrayList<>(3);
    private final HeadsUpManager mHeadsUpManager;

    public RemoteInputController(StatusBarWindowManager sbwm, HeadsUpManager headsUpManager) {
        mStatusBarWindowManager = sbwm;
        addCallback(sbwm);
        mHeadsUpManager = headsUpManager;
    }

@@ -59,8 +59,12 @@ public class RemoteInputController {
    }

    private void apply(NotificationData.Entry entry) {
        mStatusBarWindowManager.setRemoteInputActive(isRemoteInputActive());
        mHeadsUpManager.setRemoteInputActive(entry, isRemoteInputActive(entry));
        boolean remoteInputActive = isRemoteInputActive();
        int N = mCallbacks.size();
        for (int i = 0; i < N; i++) {
            mCallbacks.get(i).onRemoteInputActive(remoteInputActive);
        }
    }

    /**
@@ -99,4 +103,12 @@ public class RemoteInputController {
    }


    public void addCallback(Callback callback) {
        Preconditions.checkNotNull(callback);
        mCallbacks.add(callback);
    }

    public interface Callback {
        void onRemoteInputActive(boolean active);
    }
}
+1 −0
Original line number Diff line number Diff line
@@ -1086,6 +1086,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
        mKeyguardIndicationController.setStatusBarKeyguardViewManager(
                mStatusBarKeyguardViewManager);
        mFingerprintUnlockController.setStatusBarKeyguardViewManager(mStatusBarKeyguardViewManager);
        mRemoteInputController.addCallback(mStatusBarKeyguardViewManager);
        mKeyguardViewMediatorCallback = keyguardViewMediator.getViewMediatorCallback();
    }

+19 −5
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@ import com.android.internal.widget.LockPatternUtils;
import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.keyguard.ViewMediatorCallback;
import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.RemoteInputController;

import static com.android.keyguard.KeyguardHostView.OnDismissAction;

@@ -40,7 +41,7 @@ import static com.android.keyguard.KeyguardHostView.OnDismissAction;
 * which is in turn, reported to this class by the current
 * {@link com.android.keyguard.KeyguardViewBase}.
 */
public class StatusBarKeyguardViewManager {
public class StatusBarKeyguardViewManager implements RemoteInputController.Callback {

    // When hiding the Keyguard with timing supplied from WindowManager, better be early than late.
    private static final long HIDE_TIMING_CORRECTION_MS = -3 * 16;
@@ -69,12 +70,15 @@ public class StatusBarKeyguardViewManager {
    private KeyguardBouncer mBouncer;
    private boolean mShowing;
    private boolean mOccluded;
    private boolean mRemoteInputActive;

    private boolean mFirstUpdate = true;
    private boolean mLastShowing;
    private boolean mLastOccluded;
    private boolean mLastBouncerShowing;
    private boolean mLastBouncerDismissible;
    private boolean mLastRemoteInputActive;

    private OnDismissAction mAfterKeyguardGoneAction;
    private boolean mDeviceWillWakeUp;
    private boolean mDeferScrimFadeOut;
@@ -199,6 +203,12 @@ public class StatusBarKeyguardViewManager {
        mPhoneStatusBar.onScreenTurnedOn();
    }

    @Override
    public void onRemoteInputActive(boolean active) {
        mRemoteInputActive = active;
        updateStates();
    }

    public void onScreenTurnedOff() {
        mScreenTurnedOn = false;
    }
@@ -429,18 +439,21 @@ public class StatusBarKeyguardViewManager {
        boolean occluded = mOccluded;
        boolean bouncerShowing = mBouncer.isShowing();
        boolean bouncerDismissible = !mBouncer.isFullscreenBouncer();
        boolean remoteInputActive = mRemoteInputActive;

        if ((bouncerDismissible || !showing) != (mLastBouncerDismissible || !mLastShowing)
        if ((bouncerDismissible || !showing || remoteInputActive) !=
                (mLastBouncerDismissible || !mLastShowing || mLastRemoteInputActive)
                || mFirstUpdate) {
            if (bouncerDismissible || !showing) {
            if (bouncerDismissible || !showing || remoteInputActive) {
                mContainer.setSystemUiVisibility(vis & ~View.STATUS_BAR_DISABLE_BACK);
            } else {
                mContainer.setSystemUiVisibility(vis | View.STATUS_BAR_DISABLE_BACK);
            }
        }

        boolean navBarVisible = (!(showing && !occluded) || bouncerShowing);
        boolean lastNavBarVisible = (!(mLastShowing && !mLastOccluded) || mLastBouncerShowing);
        boolean navBarVisible = (!(showing && !occluded) || bouncerShowing || remoteInputActive);
        boolean lastNavBarVisible = (!(mLastShowing && !mLastOccluded) || mLastBouncerShowing
                || mLastRemoteInputActive);
        if (navBarVisible != lastNavBarVisible || mFirstUpdate) {
            if (mPhoneStatusBar.getNavigationBarView() != null) {
                if (navBarVisible) {
@@ -477,6 +490,7 @@ public class StatusBarKeyguardViewManager {
        mLastOccluded = occluded;
        mLastBouncerShowing = bouncerShowing;
        mLastBouncerDismissible = bouncerDismissible;
        mLastRemoteInputActive = remoteInputActive;

        mPhoneStatusBar.onKeyguardViewManagerStatesUpdated();
    }
+4 −2
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@ import android.view.WindowManager;
import com.android.keyguard.R;
import com.android.systemui.keyguard.KeyguardViewMediator;
import com.android.systemui.statusbar.BaseStatusBar;
import com.android.systemui.statusbar.RemoteInputController;
import com.android.systemui.statusbar.StatusBarState;

import java.io.FileDescriptor;
@@ -39,7 +40,7 @@ import java.lang.reflect.Field;
/**
 * Encapsulates all logic for the status bar window state management.
 */
public class StatusBarWindowManager {
public class StatusBarWindowManager implements RemoteInputController.Callback {

    private final Context mContext;
    private final WindowManager mWindowManager;
@@ -292,7 +293,8 @@ public class StatusBarWindowManager {
        apply(mCurrentState);
    }

    public void setRemoteInputActive(boolean remoteInputActive) {
    @Override
    public void onRemoteInputActive(boolean remoteInputActive) {
        mCurrentState.remoteInputActive = remoteInputActive;
        apply(mCurrentState);
    }