Added accessibility support for the home/all app togle in Launcher2

bug:3307225

1. Added code to fire accessibility events on transition to all apps
   and to home and to appropriately populate the generated
   accessibility event depending on the context in which it is fired.

Change-Id: Icd1ceb3b2556b6f416829d58b4ac7df42d61936c
diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java
index 83f13aa..1ec326b 100644
--- a/src/com/android/launcher2/Launcher.java
+++ b/src/com/android/launcher2/Launcher.java
@@ -88,6 +88,7 @@
 import android.view.ViewGroup;
 import android.view.WindowManager;
 import android.view.View.OnLongClickListener;
+import android.view.accessibility.AccessibilityEvent;
 import android.view.inputmethod.InputMethodManager;
 import android.widget.Advanceable;
 import android.widget.EditText;
@@ -416,6 +417,21 @@
         }
     }
 
+    @Override
+    public boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event) {
+        super.dispatchPopulateAccessibilityEvent(event);
+
+        // we want to take over text population so it is context dependent
+        event.getText().clear();
+        if (mState == State.ALL_APPS) {
+            event.getText().add(getString(R.string.all_apps_button_label));
+        } else if (mState == State.WORKSPACE) {
+            event.getText().add(getString(R.string.all_apps_home_button_label));
+        }
+
+        return true;
+    }
+
     private void checkForLocaleChange() {
         if (sLocaleConfiguration == null) {
             new AsyncTask<Void, Void, LocaleConfiguration>() {
@@ -2878,8 +2894,10 @@
 
         // Change the state *after* we've called all the transition code
         mState = State.ALL_APPS;
-    }
 
+        // send an accessibility event to announce the context change
+        getWindow().getDecorView().sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_SELECTED);
+    }
 
     void showWorkspace(boolean animated) {
         showWorkspace(animated, null);
@@ -2901,6 +2919,9 @@
 
         // Change the state *after* we've called all the transition code
         mState = State.WORKSPACE;
+
+        // send an accessibility event to announce the context change
+        getWindow().getDecorView().sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_SELECTED);
     }
 
     void enterSpringLoadedDragMode(CellLayout layout) {