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

Commit c942581f authored by Milo Sredkov's avatar Milo Sredkov Committed by android-build-merger
Browse files

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

am: 1a4c81a8

Change-Id: I440362c6bfd5492db76a70f6509a12fd94431fa2
parents c12e69a3 1a4c81a8
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();