Omnibox supports search extra data

 Bug: 3025590
 Fix the omnibox to support passing on SearchManager.EXTRA_SEARCH_DATA
 in searches done from the suggestion adapter.

Change-Id: Ica6462ef27722c3bbcc0508178ce431e87e27e86
diff --git a/src/com/android/browser/SuggestionsAdapter.java b/src/com/android/browser/SuggestionsAdapter.java
index 626283a..d3609b2 100644
--- a/src/com/android/browser/SuggestionsAdapter.java
+++ b/src/com/android/browser/SuggestionsAdapter.java
@@ -73,7 +73,7 @@
 
         public void onSearch(String txt);
 
-        public void onSelect(String txt);
+        public void onSelect(String txt, String extraData);
 
         public void onFilterComplete(int count);
 
@@ -119,7 +119,8 @@
             mListener.onSearch(item.title);
         } else {
             SuggestItem item = (SuggestItem) v.getTag();
-            mListener.onSelect((TextUtils.isEmpty(item.url)? item.title : item.url));
+            mListener.onSelect((TextUtils.isEmpty(item.url)? item.title : item.url),
+                    item.extra);
         }
     }
 
@@ -378,6 +379,7 @@
         String title;
         String url;
         int type;
+        String extra;
 
         public SuggestItem(String text, String u, int t) {
             title = text;
@@ -541,7 +543,10 @@
                 String uri = mCursor.getString(
                         mCursor.getColumnIndex(SearchManager.SUGGEST_COLUMN_INTENT_DATA));
                 int type = (TextUtils.isEmpty(url)) ? TYPE_SUGGEST : TYPE_SUGGEST_URL;
-                return new SuggestItem(title, url, type);
+                SuggestItem item = new SuggestItem(title, url, type);
+                item.extra = mCursor.getString(
+                        mCursor.getColumnIndex(SearchManager.SUGGEST_COLUMN_INTENT_EXTRA_DATA));
+                return item;
             }
             return null;
         }
diff --git a/src/com/android/browser/TitleBarXLarge.java b/src/com/android/browser/TitleBarXLarge.java
index b87ea78..f39c769 100644
--- a/src/com/android/browser/TitleBarXLarge.java
+++ b/src/com/android/browser/TitleBarXLarge.java
@@ -137,7 +137,7 @@
             stopOrRefresh();
         } else if (mGoButton == v) {
             if (!TextUtils.isEmpty(mUrlFocused.getText())) {
-                onAction(mUrlFocused.getText().toString());
+                onAction(mUrlFocused.getText().toString(), null);
             }
         } else if (mClearButton == v) {
             mUrlFocused.setText("");
@@ -154,12 +154,15 @@
     // UrlInputListener implementation
 
     @Override
-    public void onAction(String text) {
+    public void onAction(String text, String extra) {
         mBrowserActivity.getTabControl().getCurrentTopWebView().requestFocus();
         mBrowserActivity.hideFakeTitleBar();
         Intent i = new Intent();
         i.setAction(Intent.ACTION_SEARCH);
         i.putExtra(SearchManager.QUERY, text);
+        if (extra != null) {
+            i.putExtra(SearchManager.EXTRA_DATA_KEY, extra);
+        }
         mBrowserActivity.onNewIntent(i);
         setUrlMode(false);
         setDisplayTitle(text);
diff --git a/src/com/android/browser/UrlInputView.java b/src/com/android/browser/UrlInputView.java
index 18c5fe6..e7fc233 100644
--- a/src/com/android/browser/UrlInputView.java
+++ b/src/com/android/browser/UrlInputView.java
@@ -114,7 +114,7 @@
 
     @Override
     public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
-        finishInput(getText().toString());
+        finishInput(getText().toString(), null);
         return true;
     }
 
@@ -123,7 +123,7 @@
         if (hasFocus) {
             forceIme();
         } else {
-            finishInput(null);
+            finishInput(null, null);
         }
         if (mWrappedFocusListener != null) {
             mWrappedFocusListener.onFocusChange(v, hasFocus);
@@ -138,14 +138,14 @@
         mInputManager.showSoftInput(this, 0);
     }
 
-    private void finishInput(String url) {
+    private void finishInput(String url, String extra) {
         this.dismissDropDown();
         this.setSelection(0,0);
         mInputManager.hideSoftInputFromWindow(getWindowToken(), 0);
         if (url == null) {
             mListener.onDismiss();
         } else {
-            mListener.onAction(url);
+            mListener.onAction(url, extra);
         }
     }
 
@@ -157,15 +157,15 @@
     }
 
     @Override
-    public void onSelect(String url) {
-        finishInput(url);
+    public void onSelect(String url, String extra) {
+        finishInput(url, extra);
     }
 
     @Override
     public boolean onKeyPreIme(int keyCode, KeyEvent evt) {
         if (keyCode == KeyEvent.KEYCODE_BACK) {
             // catch back key in order to do slightly more cleanup than usual
-            finishInput(null);
+            finishInput(null, null);
             return true;
         }
         return super.onKeyPreIme(keyCode, evt);
@@ -175,7 +175,7 @@
 
         public void onDismiss();
 
-        public void onAction(String text);
+        public void onAction(String text, String extra);
 
         public void onEdit(String text);