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

Commit f87b9888 authored by Milo Sredkov's avatar Milo Sredkov Committed by Android (Google) Code Review
Browse files

Merge "Keep the notification shade open for smart replies" into pi-dev

parents f0db8fe1 e433e9b5
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -23,7 +23,9 @@ import com.android.keyguard.KeyguardHostView.OnDismissAction;

/** Executes actions that require the screen to be unlocked. */
public interface KeyguardDismissHandler {
    /** Executes an action that requres the screen to be unlocked. */
    void dismissKeyguardThenExecute(
            OnDismissAction action, @Nullable Runnable cancelAction, boolean afterKeyguardGone);
    /**
     * Executes an action that requres the screen to be unlocked, showing the keyguard if
     * necessary. Does not close the notification shade (in case it was open).
     */
    void executeWhenUnlocked(OnDismissAction action);
}
+2 −3
Original line number Diff line number Diff line
@@ -40,14 +40,13 @@ public class KeyguardDismissUtil implements KeyguardDismissHandler {
     * <p>Must be called after {@link #setDismissHandler}.
     */
    @Override
    public void dismissKeyguardThenExecute(
            OnDismissAction action, Runnable cancelAction, boolean afterKeyguardGone) {
    public void executeWhenUnlocked(OnDismissAction action) {
        KeyguardDismissHandler dismissHandler = mDismissHandler;
        if (dismissHandler == null) {
            Log.wtf(TAG, "KeyguardDismissHandler not set.");
            action.onDismiss();
            return;
        }
        dismissHandler.dismissKeyguardThenExecute(action, cancelAction, afterKeyguardGone);
        dismissHandler.executeWhenUnlocked(action);
    }
}
+8 −2
Original line number Diff line number Diff line
@@ -1326,8 +1326,7 @@ public class StatusBar extends SystemUI implements DemoMode,

        mKeyguardViewMediatorCallback = keyguardViewMediator.getViewMediatorCallback();
        mLightBarController.setFingerprintUnlockController(mFingerprintUnlockController);
        Dependency.get(KeyguardDismissUtil.class).setDismissHandler(
                this::dismissKeyguardThenExecute);
        Dependency.get(KeyguardDismissUtil.class).setDismissHandler(this::executeWhenUnlocked);
        Trace.endSection();
    }

@@ -3088,6 +3087,13 @@ public class StatusBar extends SystemUI implements DemoMode,
        }
    }

    private void executeWhenUnlocked(OnDismissAction action) {
        if (mStatusBarKeyguardViewManager.isShowing()) {
            mLeaveOpenOnKeyguardHide = true;
        }
        dismissKeyguardThenExecute(action, null /* cancelAction */, false /* afterKeyguardGone */);
    }

    protected void dismissKeyguardThenExecute(OnDismissAction action, boolean afterKeyguardGone) {
        dismissKeyguardThenExecute(action, null /* cancelRunnable */, afterKeyguardGone);
    }
+1 −2
Original line number Diff line number Diff line
@@ -183,8 +183,7 @@ public class SmartReplyView extends ViewGroup {
        };

        b.setOnClickListener(view -> {
            mKeyguardDismissUtil.dismissKeyguardThenExecute(
                    action, null /* cancelAction */, false /* afterKeyguardGone */);
            mKeyguardDismissUtil.executeWhenUnlocked(action);
        });

        b.setAccessibilityDelegate(new AccessibilityDelegate() {
+3 −10
Original line number Diff line number Diff line
@@ -87,8 +87,7 @@ public class SmartReplyViewTest extends SysuiTestCase {
        MockitoAnnotations.initMocks(this);
        mReceiver = new BlockingQueueIntentReceiver();
        mContext.registerReceiver(mReceiver, new IntentFilter(TEST_ACTION));
        mDependency.get(KeyguardDismissUtil.class).setDismissHandler(
            (action, cancelAction, afterKeyguardGone) -> action.onDismiss());
        mDependency.get(KeyguardDismissUtil.class).setDismissHandler(action -> action.onDismiss());

        mContainer = new View(mContext, null);
        mView = SmartReplyView.inflate(mContext, null);
@@ -130,12 +129,7 @@ public class SmartReplyViewTest extends SysuiTestCase {

    @Test
    public void testSendSmartReply_keyguardCancelled() throws InterruptedException {
        mDependency.get(KeyguardDismissUtil.class).setDismissHandler(
            (action, cancelAction, afterKeyguardGone) -> {
                if (cancelAction != null) {
                    cancelAction.run();
                }
            });
        mDependency.get(KeyguardDismissUtil.class).setDismissHandler(action -> {});
        setRepliesFromRemoteInput(TEST_CHOICES);

        mView.getChildAt(2).performClick();
@@ -146,8 +140,7 @@ public class SmartReplyViewTest extends SysuiTestCase {
    @Test
    public void testSendSmartReply_waitsForKeyguard() throws InterruptedException {
        AtomicReference<OnDismissAction> actionRef = new AtomicReference<>();
        mDependency.get(KeyguardDismissUtil.class).setDismissHandler(
            (action, cancelAction, afterKeyguardGone) -> actionRef.set(action));
        mDependency.get(KeyguardDismissUtil.class).setDismissHandler(actionRef::set);
        setRepliesFromRemoteInput(TEST_CHOICES);

        mView.getChildAt(2).performClick();