summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/systemui/assist/AssistHandleBehaviorController.java12
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/assist/AssistHandleBehaviorControllerTest.java32
2 files changed, 38 insertions, 6 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/assist/AssistHandleBehaviorController.java b/packages/SystemUI/src/com/android/systemui/assist/AssistHandleBehaviorController.java
index 3707d61da37f..8cd89ddabe72 100644
--- a/packages/SystemUI/src/com/android/systemui/assist/AssistHandleBehaviorController.java
+++ b/packages/SystemUI/src/com/android/systemui/assist/AssistHandleBehaviorController.java
@@ -23,6 +23,7 @@ import android.content.Context;
import android.os.Handler;
import android.os.SystemClock;
import android.util.Log;
+import android.view.accessibility.AccessibilityManager;
import androidx.annotation.Nullable;
@@ -45,6 +46,8 @@ import javax.inject.Named;
import javax.inject.Provider;
import javax.inject.Singleton;
+import dagger.Lazy;
+
/**
* A class for managing Assistant handle logic.
*
@@ -73,6 +76,7 @@ public final class AssistHandleBehaviorController implements AssistHandleCallbac
private final Provider<AssistHandleViewController> mAssistHandleViewController;
private final DeviceConfigHelper mDeviceConfigHelper;
private final Map<AssistHandleBehavior, BehaviorController> mBehaviorMap;
+ private final Lazy<AccessibilityManager> mA11yManager;
private boolean mHandlesShowing = false;
private long mHandlesLastHiddenAt;
@@ -93,6 +97,7 @@ public final class AssistHandleBehaviorController implements AssistHandleCallbac
DeviceConfigHelper deviceConfigHelper,
Map<AssistHandleBehavior, BehaviorController> behaviorMap,
NavigationModeController navigationModeController,
+ Lazy<AccessibilityManager> a11yManager,
DumpManager dumpManager) {
mContext = context;
mAssistUtils = assistUtils;
@@ -100,6 +105,7 @@ public final class AssistHandleBehaviorController implements AssistHandleCallbac
mAssistHandleViewController = assistHandleViewController;
mDeviceConfigHelper = deviceConfigHelper;
mBehaviorMap = behaviorMap;
+ mA11yManager = a11yManager;
mInGesturalMode = QuickStepContract.isGesturalMode(
navigationModeController.addListener(this::handleNavigationModeChange));
@@ -211,9 +217,11 @@ public final class AssistHandleBehaviorController implements AssistHandleCallbac
}
private long getShowAndGoDuration() {
- return mDeviceConfigHelper.getLong(
+ long configuredTime = mDeviceConfigHelper.getLong(
SystemUiDeviceConfigFlags.ASSIST_HANDLES_SHOW_AND_GO_DURATION_MS,
DEFAULT_SHOW_AND_GO_DURATION_MS);
+ return mA11yManager.get().getRecommendedTimeoutMillis(
+ (int) configuredTime, AccessibilityManager.FLAG_CONTENT_ICONS);
}
private String getBehaviorMode() {
@@ -291,7 +299,7 @@ public final class AssistHandleBehaviorController implements AssistHandleCallbac
pw.println(" Phenotype Flags:");
pw.println(" "
- + SystemUiDeviceConfigFlags.ASSIST_HANDLES_SHOW_AND_GO_DURATION_MS
+ + SystemUiDeviceConfigFlags.ASSIST_HANDLES_SHOW_AND_GO_DURATION_MS + "(a11y modded)"
+ "="
+ getShowAndGoDuration());
pw.println(" "
diff --git a/packages/SystemUI/tests/src/com/android/systemui/assist/AssistHandleBehaviorControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/assist/AssistHandleBehaviorControllerTest.java
index 731101cb7329..afcd4414c667 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/assist/AssistHandleBehaviorControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/assist/AssistHandleBehaviorControllerTest.java
@@ -33,6 +33,7 @@ import android.content.ComponentName;
import android.os.Handler;
import android.testing.AndroidTestingRunner;
import android.testing.TestableLooper.RunWithLooper;
+import android.view.accessibility.AccessibilityManager;
import androidx.test.filters.SmallTest;
@@ -40,14 +41,13 @@ import com.android.internal.app.AssistUtils;
import com.android.internal.config.sysui.SystemUiDeviceConfigFlags;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.dump.DumpManager;
-import com.android.systemui.plugins.statusbar.StatusBarStateController;
-import com.android.systemui.recents.OverviewProxyService;
import com.android.systemui.statusbar.phone.NavigationModeController;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
import org.mockito.InOrder;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
@@ -73,15 +73,16 @@ public class AssistHandleBehaviorControllerTest extends SysuiTestCase {
@Mock private AssistHandleBehaviorController.BehaviorController mMockTestBehavior;
@Mock private NavigationModeController mMockNavigationModeController;
@Mock private AssistHandleViewController mMockAssistHandleViewController;
+ @Mock private AccessibilityManager mMockA11yManager;
@Before
public void setup() {
MockitoAnnotations.initMocks(this);
- mDependency.injectMockDependency(StatusBarStateController.class);
- mDependency.injectMockDependency(OverviewProxyService.class);
doAnswer(answerVoid(Runnable::run)).when(mMockHandler).post(any(Runnable.class));
doAnswer(answerVoid(Runnable::run)).when(mMockHandler)
.postDelayed(any(Runnable.class), anyLong());
+ doAnswer(invocation -> invocation.getArgument(0)).when(mMockA11yManager)
+ .getRecommendedTimeoutMillis(anyInt(), anyInt());
Map<AssistHandleBehavior, AssistHandleBehaviorController.BehaviorController> behaviorMap =
new EnumMap<>(AssistHandleBehavior.class);
@@ -99,6 +100,7 @@ public class AssistHandleBehaviorControllerTest extends SysuiTestCase {
mMockDeviceConfigHelper,
behaviorMap,
mMockNavigationModeController,
+ () -> mMockA11yManager,
mock(DumpManager.class));
}
@@ -243,6 +245,28 @@ public class AssistHandleBehaviorControllerTest extends SysuiTestCase {
}
@Test
+ public void showAndGo_usesA11yTimeout() {
+ // Arrange
+ when(mMockAssistUtils.getAssistComponentForUser(anyInt())).thenReturn(COMPONENT_NAME);
+ when(mMockDeviceConfigHelper.getLong(
+ eq(SystemUiDeviceConfigFlags.ASSIST_HANDLES_SHOW_AND_GO_DURATION_MS), anyLong()))
+ .thenReturn(12345L);
+ mAssistHandleBehaviorController.hide();
+ reset(mMockAssistHandleViewController, mMockA11yManager);
+ when(mMockA11yManager.getRecommendedTimeoutMillis(anyInt(), anyInt())).thenReturn(54321);
+ ArgumentCaptor<Long> delay = ArgumentCaptor.forClass(Long.class);
+
+ // Act
+ mAssistHandleBehaviorController.showAndGo();
+
+ // Assert
+ verify(mMockA11yManager).getRecommendedTimeoutMillis(
+ eq(12345), eq(AccessibilityManager.FLAG_CONTENT_ICONS));
+ verify(mMockHandler).postDelayed(any(Runnable.class), delay.capture());
+ assert delay.getValue() == 54321L;
+ }
+
+ @Test
public void showAndGoDelayed_showsThenHidesHandlesWhenHiding() {
// Arrange
when(mMockAssistUtils.getAssistComponentForUser(anyInt())).thenReturn(COMPONENT_NAME);