Adding accessibility controls

> Adding 'Remove' option to workspace items
> Adding 'Add to workspace' to all apps and widget list items, which
adds the item to the first available space, giving preference to
the current workspace screen
> Adding 'App info' and 'Uninstall' options to appropriate items

Bug: 18482913
Change-Id: Ifab7423af2d9ba502b5a2771b37bb5436b3df937
diff --git a/src/com/android/launcher3/LauncherAppState.java b/src/com/android/launcher3/LauncherAppState.java
index b7c45a3..87e9aae 100644
--- a/src/com/android/launcher3/LauncherAppState.java
+++ b/src/com/android/launcher3/LauncherAppState.java
@@ -32,10 +32,13 @@
 import android.util.DisplayMetrics;
 import android.util.Log;
 import android.view.Display;
+import android.view.View.AccessibilityDelegate;
 import android.view.WindowManager;
+
 import com.android.launcher3.compat.LauncherAppsCompat;
 import com.android.launcher3.compat.PackageInstallerCompat;
 import com.android.launcher3.compat.PackageInstallerCompat.PackageInstallInfo;
+
 import java.lang.ref.WeakReference;
 import java.util.ArrayList;
 
@@ -62,6 +65,7 @@
     private static LauncherAppState INSTANCE;
 
     private DynamicGrid mDynamicGrid;
+    private AccessibilityDelegate mAccessibilityDelegate;
 
     public static LauncherAppState getInstance() {
         if (INSTANCE == null) {
@@ -162,9 +166,15 @@
 
     LauncherModel setLauncher(Launcher launcher) {
         mModel.initialize(launcher);
+        mAccessibilityDelegate = ((launcher != null) && Utilities.isLmpOrAbove()) ?
+            new LauncherAccessibilityDelegate(launcher) : null;
         return mModel;
     }
 
+    AccessibilityDelegate getAccessibilityDelegate() {
+        return mAccessibilityDelegate;
+    }
+
     public IconCache getIconCache() {
         return mIconCache;
     }