Prevent taskbar icon tooltip from showing on hotseat transition.

Fix: 350512938
Test: TaskbarHoverToolTipControllerTest
Flag: EXEMPT bugfix
Change-Id: Ifc1647834358366b2d98555138edd4ad6286c16e
This commit is contained in:
Pat Manning
2024-07-02 15:39:20 +01:00
parent 58f5d08d7a
commit fc1d2daa63
3 changed files with 24 additions and 0 deletions
@@ -1649,6 +1649,10 @@ public class TaskbarActivityContext extends BaseTaskbarContext {
return mControllers.uiController.canToggleHomeAllApps();
}
boolean isIconAlignedWithHotseat() {
return mControllers.uiController.isIconAlignedWithHotseat();
}
@VisibleForTesting
public TaskbarControllers getControllers() {
return mControllers;
@@ -159,6 +159,10 @@ public class TaskbarHoverToolTipController implements View.OnHoverListener {
if (mHoverView == null || mToolTipText == null) {
return;
}
// Do not show tooltip if taskbar icons are transitioning to hotseat.
if (mActivity.isIconAlignedWithHotseat()) {
return;
}
if (mHoverView instanceof FolderIcon && !((FolderIcon) mHoverView).getIconVisible()) {
return;
}
@@ -87,6 +87,7 @@ public class TaskbarHoverToolTipControllerTest extends TaskbarBaseTestCase {
when(taskbarActivityContext.getDragLayer()).thenReturn(mTaskbarDragLayer);
when(taskbarActivityContext.getMainLooper()).thenReturn(context.getMainLooper());
when(taskbarActivityContext.getDisplay()).thenReturn(mDisplay);
when(taskbarActivityContext.isIconAlignedWithHotseat()).thenReturn(false);
when(mTaskbarDragLayer.getChildCount()).thenReturn(1);
mSpyFolderView = spy(new Folder(new ActivityContextWrapper(context), null));
@@ -243,6 +244,21 @@ public class TaskbarHoverToolTipControllerTest extends TaskbarBaseTestCase {
false);
}
@Test
public void onHover_hoverEnterIconAlignedWithHotseat_noReveal() {
when(mMotionEvent.getAction()).thenReturn(MotionEvent.ACTION_HOVER_ENTER);
when(mMotionEvent.getActionMasked()).thenReturn(MotionEvent.ACTION_HOVER_ENTER);
when(taskbarActivityContext.isIconAlignedWithHotseat()).thenReturn(true);
boolean hoverHandled =
mTaskbarHoverToolTipController.onHover(mHoverBubbleTextView, mMotionEvent);
waitForIdleSync();
assertThat(hoverHandled).isTrue();
verify(taskbarActivityContext).setAutohideSuspendFlag(FLAG_AUTOHIDE_SUSPEND_HOVERING_ICONS,
true);
}
private void waitForIdleSync() {
mTestableLooper.processAllMessages();
}