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