From e40183795c1a4aff1f5720007f11e2ccca907df5 Mon Sep 17 00:00:00 2001 From: Vinit Nayak Date: Tue, 3 Jan 2023 20:05:17 -0800 Subject: [PATCH] Pass button nav long press assistant availability to Launcher * Currently we're passing in assistantAvailability, but that's specific to gesture nav. For button nav even if assistant isn't available, we show the UI to encourage user to sign in to enable assistant * Separate signals used for button vs gesture nav Bug: 255909545 Test: Existing tests pass, updated/added test in launcher Change-Id: Id8fba0d07826ff1013a078f81512d44d3d88a1ab --- .../systemui/shared/recents/IOverviewProxy.aidl | 3 ++- .../systemui/navigationbar/NavBarHelper.java | 11 ++++++----- .../systemui/navigationbar/NavigationBar.java | 13 ++++++++----- .../systemui/navigationbar/TaskbarDelegate.java | 11 +++++++---- .../systemui/navigationbar/NavBarHelperTest.java | 12 ++++++------ 5 files changed, 29 insertions(+), 21 deletions(-) diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/IOverviewProxy.aidl b/packages/SystemUI/shared/src/com/android/systemui/shared/recents/IOverviewProxy.aidl index abefeba9c4174..a71fb5611bd9c 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/IOverviewProxy.aidl +++ b/packages/SystemUI/shared/src/com/android/systemui/shared/recents/IOverviewProxy.aidl @@ -46,8 +46,9 @@ oneway interface IOverviewProxy { /** * Sent when device assistant changes its default assistant whether it is available or not. + * @param longPressHomeEnabled if 3-button nav assistant can be invoked or not */ - void onAssistantAvailable(boolean available) = 13; + void onAssistantAvailable(boolean available, boolean longPressHomeEnabled) = 13; /** * Sent when the assistant changes how visible it is to the user. diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/NavBarHelper.java b/packages/SystemUI/src/com/android/systemui/navigationbar/NavBarHelper.java index 2c0745bf0f0df..a92203ca74faa 100644 --- a/packages/SystemUI/src/com/android/systemui/navigationbar/NavBarHelper.java +++ b/packages/SystemUI/src/com/android/systemui/navigationbar/NavBarHelper.java @@ -185,7 +185,7 @@ public final class NavBarHelper implements public void registerNavTaskStateUpdater(NavbarTaskbarStateUpdater listener) { mA11yEventListeners.add(listener); listener.updateAccessibilityServicesState(); - listener.updateAssistantAvailable(mAssistantAvailable); + listener.updateAssistantAvailable(mAssistantAvailable, mLongPressHomeEnabled); } public void removeNavTaskStateUpdater(NavbarTaskbarStateUpdater listener) { @@ -198,9 +198,10 @@ public final class NavBarHelper implements } } - private void dispatchAssistantEventUpdate(boolean assistantAvailable) { + private void dispatchAssistantEventUpdate(boolean assistantAvailable, + boolean longPressHomeEnabled) { for (NavbarTaskbarStateUpdater listener : mA11yEventListeners) { - listener.updateAssistantAvailable(assistantAvailable); + listener.updateAssistantAvailable(assistantAvailable, longPressHomeEnabled); } } @@ -311,7 +312,7 @@ public final class NavBarHelper implements mAssistantAvailable = assistantAvailableForUser && mAssistantTouchGestureEnabled && QuickStepContract.isGesturalMode(mNavBarMode); - dispatchAssistantEventUpdate(mAssistantAvailable); + dispatchAssistantEventUpdate(mAssistantAvailable, mLongPressHomeEnabled); } public boolean getLongPressHomeEnabled() { @@ -366,7 +367,7 @@ public final class NavBarHelper implements */ public interface NavbarTaskbarStateUpdater { void updateAccessibilityServicesState(); - void updateAssistantAvailable(boolean available); + void updateAssistantAvailable(boolean available, boolean longPressHomeEnabled); } /** Data class to help Taskbar/Navbar initiate state correctly when switching between the two.*/ diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBar.java b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBar.java index bdb67adae007f..5b306c98912df 100644 --- a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBar.java +++ b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBar.java @@ -335,15 +335,16 @@ public class NavigationBar extends ViewController implements } @Override - public void updateAssistantAvailable(boolean available) { + public void updateAssistantAvailable(boolean available, + boolean longPressHomeEnabled) { // TODO(b/198002034): Content observers currently can still be called back after // being unregistered, and in this case we can ignore the change if the nav bar // has been destroyed already if (mView == null) { return; } - mLongPressHomeEnabled = mNavBarHelper.getLongPressHomeEnabled(); - updateAssistantEntrypoints(available); + mLongPressHomeEnabled = longPressHomeEnabled; + updateAssistantEntrypoints(available, longPressHomeEnabled); } }; @@ -1485,10 +1486,12 @@ public class NavigationBar extends ViewController implements .commitUpdate(mDisplayId); } - private void updateAssistantEntrypoints(boolean assistantAvailable) { + private void updateAssistantEntrypoints(boolean assistantAvailable, + boolean longPressHomeEnabled) { if (mOverviewProxyService.getProxy() != null) { try { - mOverviewProxyService.getProxy().onAssistantAvailable(assistantAvailable); + mOverviewProxyService.getProxy().onAssistantAvailable(assistantAvailable, + longPressHomeEnabled); } catch (RemoteException e) { Log.w(TAG, "Unable to send assistant availability data to launcher"); } diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/TaskbarDelegate.java b/packages/SystemUI/src/com/android/systemui/navigationbar/TaskbarDelegate.java index 3dec5138de956..5e26e6050eaaa 100644 --- a/packages/SystemUI/src/com/android/systemui/navigationbar/TaskbarDelegate.java +++ b/packages/SystemUI/src/com/android/systemui/navigationbar/TaskbarDelegate.java @@ -112,8 +112,9 @@ public class TaskbarDelegate implements CommandQueue.Callbacks, } @Override - public void updateAssistantAvailable(boolean available) { - updateAssistantAvailability(available); + public void updateAssistantAvailable(boolean available, + boolean longPressHomeEnabled) { + updateAssistantAvailability(available, longPressHomeEnabled); } }; private int mDisabledFlags; @@ -309,13 +310,15 @@ public class TaskbarDelegate implements CommandQueue.Callbacks, return (mSysUiState.getFlags() & View.STATUS_BAR_DISABLE_RECENT) == 0; } - private void updateAssistantAvailability(boolean assistantAvailable) { + private void updateAssistantAvailability(boolean assistantAvailable, + boolean longPressHomeEnabled) { if (mOverviewProxyService.getProxy() == null) { return; } try { - mOverviewProxyService.getProxy().onAssistantAvailable(assistantAvailable); + mOverviewProxyService.getProxy().onAssistantAvailable(assistantAvailable, + longPressHomeEnabled); } catch (RemoteException e) { Log.e(TAG, "onAssistantAvailable() failed, available: " + assistantAvailable, e); } diff --git a/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavBarHelperTest.java b/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavBarHelperTest.java index 1865ef64c5d51..ce6a98c9e1626 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavBarHelperTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavBarHelperTest.java @@ -146,7 +146,7 @@ public class NavBarHelperTest extends SysuiTestCase { verify(mNavbarTaskbarStateUpdater, times(1)) .updateAccessibilityServicesState(); verify(mNavbarTaskbarStateUpdater, times(1)) - .updateAssistantAvailable(anyBoolean()); + .updateAssistantAvailable(anyBoolean(), anyBoolean()); } @Test @@ -160,14 +160,14 @@ public class NavBarHelperTest extends SysuiTestCase { verify(mNavbarTaskbarStateUpdater, times(1)) .updateAccessibilityServicesState(); verify(mNavbarTaskbarStateUpdater, times(1)) - .updateAssistantAvailable(anyBoolean()); + .updateAssistantAvailable(anyBoolean(), anyBoolean()); mNavBarHelper.onConnectionChanged(true); // assert no more callbacks fired verify(mNavbarTaskbarStateUpdater, times(1)) .updateAccessibilityServicesState(); verify(mNavbarTaskbarStateUpdater, times(2)) - .updateAssistantAvailable(anyBoolean()); + .updateAssistantAvailable(anyBoolean(), anyBoolean()); } @Test @@ -180,7 +180,7 @@ public class NavBarHelperTest extends SysuiTestCase { verify(mNavbarTaskbarStateUpdater, times(2)) .updateAccessibilityServicesState(); verify(mNavbarTaskbarStateUpdater, times(1)) - .updateAssistantAvailable(anyBoolean()); + .updateAssistantAvailable(anyBoolean(), anyBoolean()); } @Test @@ -193,7 +193,7 @@ public class NavBarHelperTest extends SysuiTestCase { verify(mNavbarTaskbarStateUpdater, times(1)) .updateAccessibilityServicesState(); verify(mNavbarTaskbarStateUpdater, times(2)) - .updateAssistantAvailable(anyBoolean()); + .updateAssistantAvailable(anyBoolean(), anyBoolean()); } @Test @@ -212,7 +212,7 @@ public class NavBarHelperTest extends SysuiTestCase { verify(mNavbarTaskbarStateUpdater, times(1)) .updateAccessibilityServicesState(); verify(mNavbarTaskbarStateUpdater, times(1)) - .updateAssistantAvailable(anyBoolean()); + .updateAssistantAvailable(anyBoolean(), anyBoolean()); } @Test