Make clear announcment for taskbar education.
Test: Manual
Bug: 273393698
Bug: 273408584
Flag: not needed
Change-Id: I6c6eb1e1e1047a2e702592290bf5735e8bfa6ce2
diff --git a/quickstep/res/layout/taskbar_edu_tooltip.xml b/quickstep/res/layout/taskbar_edu_tooltip.xml
index 29f4956..3fcd713 100644
--- a/quickstep/res/layout/taskbar_edu_tooltip.xml
+++ b/quickstep/res/layout/taskbar_edu_tooltip.xml
@@ -21,6 +21,8 @@
android:clipChildren="false"
android:clipToPadding="false"
android:fitsSystemWindows="true"
+ android:focusable="true"
+ android:importantForAccessibility="yes"
android:gravity="center"
android:orientation="vertical">
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarEduTooltipController.kt b/quickstep/src/com/android/launcher3/taskbar/TaskbarEduTooltipController.kt
index bc582e2..e56e258 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarEduTooltipController.kt
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarEduTooltipController.kt
@@ -17,10 +17,13 @@
import android.graphics.PorterDuff.Mode.SRC_ATOP
import android.graphics.PorterDuffColorFilter
+import android.os.Bundle
import android.view.View
import android.view.View.GONE
import android.view.View.VISIBLE
import android.view.ViewGroup
+import android.view.accessibility.AccessibilityEvent
+import android.view.accessibility.AccessibilityNodeInfo
import androidx.annotation.IntDef
import androidx.annotation.LayoutRes
import com.airbnb.lottie.LottieAnimationView
@@ -153,6 +156,7 @@
FLAG_AUTOHIDE_SUSPEND_EDU_OPEN,
true
)
+
tooltip.onCloseCallback = {
this.tooltip = null
controllers.taskbarAutohideSuspendController.updateFlag(
@@ -161,11 +165,47 @@
)
controllers.taskbarStashController.updateAndAnimateTransientTaskbar(true)
}
+ tooltip.accessibilityDelegate = createAccessibilityDelegate()
overlayContext.layoutInflater.inflate(contentResId, tooltip.content, true)
this.tooltip = tooltip
}
+ private fun createAccessibilityDelegate() =
+ object : View.AccessibilityDelegate() {
+ override fun performAccessibilityAction(
+ host: View?,
+ action: Int,
+ args: Bundle?
+ ): Boolean {
+ if (action == R.id.close) {
+ hide()
+ return true
+ }
+ return super.performAccessibilityAction(host, action, args)
+ }
+
+ override fun onPopulateAccessibilityEvent(host: View?, event: AccessibilityEvent?) {
+ super.onPopulateAccessibilityEvent(host, event)
+ if (event?.eventType == AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED) {
+ event.text?.add(host?.context?.getText(R.string.taskbar_edu_a11y_title))
+ }
+ }
+
+ override fun onInitializeAccessibilityNodeInfo(
+ host: View?,
+ info: AccessibilityNodeInfo?
+ ) {
+ super.onInitializeAccessibilityNodeInfo(host, info)
+ info?.addAction(
+ AccessibilityNodeInfo.AccessibilityAction(
+ R.id.close,
+ host?.context?.getText(R.string.taskbar_edu_close)
+ )
+ )
+ }
+ }
+
override fun dumpLogs(prefix: String?, pw: PrintWriter?) {
pw?.println(prefix + "TaskbarEduTooltipController:")
pw?.println("$prefix\tisTooltipEnabled=$isTooltipEnabled")
diff --git a/res/values/id.xml b/res/values/id.xml
index dc81944..7b812de 100644
--- a/res/values/id.xml
+++ b/res/values/id.xml
@@ -28,6 +28,7 @@
<item type="id" name="home" />
<item type="id" name="recent_apps" />
<item type="id" name="back" />
+ <item type="id" name="close"/>
<item type="id" name="ime_switcher" />
<item type="id" name="accessibility_button" />
<item type="id" name="rotate_suggestion" />
@@ -41,4 +42,5 @@
<item type="id" name="saved_floating_widget_foreground" />
<item type="id" name="saved_floating_widget_background" />
+
</resources>