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

am: f87b98880e

Change-Id: Ia5107c63863d58aa2b4d88dfb54272a811849c0a
This commit is contained in:
Milo Sredkov
2018-05-02 06:06:29 -07:00
committed by android-build-merger
5 changed files with 19 additions and 20 deletions

View File

@@ -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);
}

View File

@@ -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);
}
}

View File

@@ -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);
}

View File

@@ -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() {

View File

@@ -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();