From 0d784ee7fbea5eb7cc1ebaf14d71aabd4429f41e Mon Sep 17 00:00:00 2001 From: Vinit Nayak Date: Tue, 3 Jan 2023 20:07:27 -0800 Subject: [PATCH] Toggle taskbar button nav assistant availability * New signals coming in from Sysui reflect the toggle in Settings for long pressing on home button to invoke assistant. Fixes: 255909545 Test: Manual + added unit test for TaskbarNavButtonController Change-Id: Ic65a80b0b9697990931b7e89756773fb086cc3bd --- .../com/android/launcher3/taskbar/TaskbarManager.java | 6 ++++++ .../launcher3/taskbar/TaskbarNavButtonController.java | 7 ++++++- .../android/quickstep/TouchInteractionService.java | 4 +++- .../taskbar/TaskbarNavButtonControllerTest.java | 11 ++++++++++- 4 files changed, 25 insertions(+), 3 deletions(-) diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java index 049c672f5b..86e191151a 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java @@ -320,6 +320,12 @@ public class TaskbarManager { } } + public void onLongPressHomeEnabled(boolean assistantLongPressEnabled) { + if (mNavButtonController != null) { + mNavButtonController.setAssistantLongPressEnabled(assistantLongPressEnabled); + } + } + /** * Sets the flag indicating setup UI is visible */ diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarNavButtonController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarNavButtonController.java index a395548f84..5bb958a713 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarNavButtonController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarNavButtonController.java @@ -67,6 +67,7 @@ public class TaskbarNavButtonController implements TaskbarControllers.LoggableTa private long mLastScreenPinLongPress; private boolean mScreenPinned; + private boolean mAssistantLongPressEnabled; @Override public void dumpLogs(String prefix, PrintWriter pw) { @@ -251,6 +252,10 @@ public class TaskbarNavButtonController implements TaskbarControllers.LoggableTa mStatsLogManager = null; } + public void setAssistantLongPressEnabled(boolean assistantLongPressEnabled) { + mAssistantLongPressEnabled = assistantLongPressEnabled; + } + private void logEvent(StatsLogManager.LauncherEvent event) { if (mStatsLogManager == null) { Log.w(TAG, "No stats log manager to log taskbar button event"); @@ -289,7 +294,7 @@ public class TaskbarNavButtonController implements TaskbarControllers.LoggableTa } private void startAssistant() { - if (mScreenPinned) { + if (mScreenPinned || !mAssistantLongPressEnabled) { return; } Bundle args = new Bundle(); diff --git a/quickstep/src/com/android/quickstep/TouchInteractionService.java b/quickstep/src/com/android/quickstep/TouchInteractionService.java index 256569787c..5d17cc77f4 100644 --- a/quickstep/src/com/android/quickstep/TouchInteractionService.java +++ b/quickstep/src/com/android/quickstep/TouchInteractionService.java @@ -216,10 +216,12 @@ public class TouchInteractionService extends Service @BinderThread @Override - public void onAssistantAvailable(boolean available) { + public void onAssistantAvailable(boolean available, boolean longPressHomeEnabled) { MAIN_EXECUTOR.execute(() -> { mDeviceState.setAssistantAvailable(available); TouchInteractionService.this.onAssistantVisibilityChanged(); + executeForTaskbarManager(() -> mTaskbarManager + .onLongPressHomeEnabled(longPressHomeEnabled)); }); } diff --git a/quickstep/tests/src/com/android/launcher3/taskbar/TaskbarNavButtonControllerTest.java b/quickstep/tests/src/com/android/launcher3/taskbar/TaskbarNavButtonControllerTest.java index 4eec319f4a..962261940c 100644 --- a/quickstep/tests/src/com/android/launcher3/taskbar/TaskbarNavButtonControllerTest.java +++ b/quickstep/tests/src/com/android/launcher3/taskbar/TaskbarNavButtonControllerTest.java @@ -18,6 +18,7 @@ import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_S import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.never; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -103,11 +104,19 @@ public class TaskbarNavButtonControllerTest { } @Test - public void testLongPressHome() { + public void testLongPressHome_enabled() { + mNavButtonController.setAssistantLongPressEnabled(true /*assistantLongPressEnabled*/); mNavButtonController.onButtonLongClick(BUTTON_HOME, mockView); verify(mockSystemUiProxy, times(1)).startAssistant(any()); } + @Test + public void testLongPressHome_disabled() { + mNavButtonController.setAssistantLongPressEnabled(false /*assistantLongPressEnabled*/); + mNavButtonController.onButtonLongClick(BUTTON_HOME, mockView); + verify(mockSystemUiProxy, never()).startAssistant(any()); + } + @Test public void testPressHome() { mNavButtonController.onButtonClick(BUTTON_HOME, mockView);