Use AccessibilityManager#getRecommendedTimeoutMillis for Snackbar

Bug: 129806241
Change-Id: I4aabc3ee33560960f3117d82f9873fce60f1278a
diff --git a/src/com/android/launcher3/compat/AccessibilityManagerCompat.java b/src/com/android/launcher3/compat/AccessibilityManagerCompat.java
index 51e914c..b4d0c54 100644
--- a/src/com/android/launcher3/compat/AccessibilityManagerCompat.java
+++ b/src/com/android/launcher3/compat/AccessibilityManagerCompat.java
@@ -106,4 +106,11 @@
         }
         return false;
     }
+
+    public static int getRecommendedTimeoutMillis(Context context, int originalTimeout, int flags) {
+        if (Utilities.ATLEAST_Q) {
+            return getManager(context).getRecommendedTimeoutMillis(originalTimeout, flags);
+        }
+        return originalTimeout;
+    }
 }
diff --git a/src/com/android/launcher3/views/Snackbar.java b/src/com/android/launcher3/views/Snackbar.java
index 04b637b..dc0e2e0 100644
--- a/src/com/android/launcher3/views/Snackbar.java
+++ b/src/com/android/launcher3/views/Snackbar.java
@@ -16,6 +16,9 @@
 
 package com.android.launcher3.views;
 
+import static android.view.accessibility.AccessibilityManager.FLAG_CONTENT_CONTROLS;
+import static android.view.accessibility.AccessibilityManager.FLAG_CONTENT_TEXT;
+
 import android.content.Context;
 import android.content.res.Resources;
 import android.graphics.Rect;
@@ -29,6 +32,7 @@
 import com.android.launcher3.Launcher;
 import com.android.launcher3.R;
 import com.android.launcher3.anim.Interpolators;
+import com.android.launcher3.compat.AccessibilityManagerCompat;
 import com.android.launcher3.dragndrop.DragLayer;
 
 /**
@@ -38,7 +42,7 @@
 
     private static final long SHOW_DURATION_MS = 180;
     private static final long HIDE_DURATION_MS = 180;
-    private static final long TIMEOUT_DURATION_MS = 4000;
+    private static final int TIMEOUT_DURATION_MS = 4000;
 
     private final Launcher mLauncher;
     private Runnable mOnDismissed;
@@ -131,7 +135,9 @@
                 .setDuration(SHOW_DURATION_MS)
                 .setInterpolator(Interpolators.ACCEL_DEACCEL)
                 .start();
-        snackbar.postDelayed(() -> snackbar.close(true), TIMEOUT_DURATION_MS);
+        int timeout = AccessibilityManagerCompat.getRecommendedTimeoutMillis(launcher,
+                TIMEOUT_DURATION_MS, FLAG_CONTENT_TEXT | FLAG_CONTENT_CONTROLS);
+        snackbar.postDelayed(() -> snackbar.close(true), timeout);
     }
 
     @Override