Change search key behavior for Ryu

Change-Id: Idadf1b3a4fa8161e13db5247ccddb47f6efe3c8a
diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java
index 0d96ca6..7aa05df 100644
--- a/services/core/java/com/android/server/policy/PhoneWindowManager.java
+++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java
@@ -118,6 +118,7 @@
 import com.android.internal.statusbar.IStatusBarService;
 import com.android.internal.util.ScreenShapeHelper;
 import com.android.internal.widget.PointerLocationView;
+import com.android.server.am.ActivityStackSupervisor;
 import com.android.server.GestureLauncherService;
 import com.android.server.LocalServices;
 import com.android.server.policy.keyguard.KeyguardServiceDelegate;
@@ -266,6 +267,7 @@
     WindowManagerFuncs mWindowManagerFuncs;
     WindowManagerInternal mWindowManagerInternal;
     PowerManager mPowerManager;
+    ActivityManager mActivityManager;
     ActivityManagerInternal mActivityManagerInternal;
     DreamManagerInternal mDreamManagerInternal;
     PowerManagerInternal mPowerManagerInternal;
@@ -1396,6 +1398,7 @@
         mDeskDockIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
                 | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
 
+        mActivityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
         mPowerManager = (PowerManager)context.getSystemService(Context.POWER_SERVICE);
         mBroadcastWakeLock = mPowerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,
                 "PhoneWindowManager.mBroadcastWakeLock");
@@ -2918,7 +2921,7 @@
             if (down) {
                 mPendingMetaAction = true;
             } else if (mPendingMetaAction) {
-                launchAssistAction(Intent.EXTRA_ASSIST_INPUT_HINT_KEYBOARD, event.getDeviceId());
+                invokeSearchOverlay(event);
             }
             return -1;
         }
@@ -3038,6 +3041,23 @@
         return 0;
     }
 
+    private void invokeSearchOverlay(KeyEvent event) {
+        String intentString = "com.google.android.googlequicksearchbox.TEXT_ASSIST";
+
+        // If we're in GEL, use the GEL search box. Otherwise, use the search overlay.
+        final List<ActivityManager.RecentTaskInfo> tasks =
+                mActivityManager.getRecentTasksForUser(
+                        1, ActivityManager.RECENT_WITH_EXCLUDED, UserHandle.USER_CURRENT_OR_SELF);
+        if (tasks != null && !tasks.isEmpty()) {
+            if (tasks.get(0).stackId == ActivityStackSupervisor.HOME_STACK_ID) {
+                intentString = "android.search.action.GLOBAL_SEARCH";
+            }
+        }
+
+        Intent searchIntent = new Intent(intentString);
+        startActivityAsUser(searchIntent, UserHandle.CURRENT_OR_SELF);
+    }
+
     /** {@inheritDoc} */
     @Override
     public KeyEvent dispatchUnhandledKey(WindowState win, KeyEvent event, int policyFlags) {