Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ba90ed49 authored by Karl Rosaen's avatar Karl Rosaen Committed by The Android Open Source Project
Browse files

am a058f02b: progress towards impression and click stats on all sources, plus some internal cleanup

Merge commit 'a058f02b'

* commit 'a058f02b':
  progress towards impression and click stats on all sources, plus some internal cleanup
parents 5fd3dc25 a058f02b
Loading
Loading
Loading
Loading
+24 −28
Original line number Diff line number Diff line
@@ -1202,8 +1202,21 @@ public class SearchDialog extends Dialog implements OnItemClickListener, OnItemS
    protected boolean launchSuggestion(int position, int actionKey, String actionMsg) {
        Cursor c = mSuggestionsAdapter.getCursor();
        if ((c != null) && c.moveToPosition(position)) {
            // let the cursor know which position was clicked
            final Bundle clickResponse = new Bundle(1);
            clickResponse.putInt(SearchManager.RESPOND_EXTRA_POSITION_CLICKED, position);
            final Bundle response = c.respond(clickResponse);

            // the convention is to send a position to select in response to a click (if applicable)
            final int posToSelect = response.getInt(
                    SearchManager.RESPOND_EXTRA_POSITION_SELECTED,
                    SuggestionsAdapter.NO_ITEM_TO_SELECT);
            mSuggestionsAdapter.setListItemToSelect(posToSelect);            

            // launch the intent
            Intent intent = createIntentFromSuggestion(c, actionKey, actionMsg);
            launchIntent(intent);

            return true;
        }
        return false;
@@ -1235,9 +1248,6 @@ public class SearchDialog extends Dialog implements OnItemClickListener, OnItemS
        if (SearchManager.INTENT_ACTION_CHANGE_SEARCH_SOURCE.equals(action)) {
            handleChangeSourceIntent(intent);
            return true;
        } else if (SearchManager.INTENT_ACTION_CURSOR_RESPOND.equals(action)) {
            handleCursorRespondIntent(intent);
            return true;
        }
        return false;
    }
@@ -1269,26 +1279,6 @@ public class SearchDialog extends Dialog implements OnItemClickListener, OnItemS
        setUserQuery(query);
    }

    /**
     * Handles {@link SearchManager#INTENT_ACTION_CURSOR_RESPOND}.
     */
    private void handleCursorRespondIntent(Intent intent) {
        Cursor c = mSuggestionsAdapter.getCursor();
        if (c != null) {
            Bundle response = c.respond(intent.getExtras());
            
            // The SHOW_CORPUS_SELECTORS command to the cursor also returns a value in
            // its bundle, keyed by the same command string, which contains the index
            // of the "More results..." list item, which we use to instruct the
            // AutoCompleteTextView's list to scroll to that item when the item is
            // clicked.
            if (response.containsKey(SuggestionsAdapter.SHOW_CORPUS_SELECTORS)) {
                int indexOfMore = response.getInt(SuggestionsAdapter.SHOW_CORPUS_SELECTORS);
                mSuggestionsAdapter.setListItemToSelect(indexOfMore);
            }
        }
    }
    
    /**
     * Sets the list item selection in the AutoCompleteTextView's ListView.
     */
@@ -1365,6 +1355,12 @@ public class SearchDialog extends Dialog implements OnItemClickListener, OnItemS
        try {
            // use specific action if supplied, or default action if supplied, or fixed default
            String action = getColumnString(c, SearchManager.SUGGEST_COLUMN_INTENT_ACTION);

            // some items are display only, or have effect via the cursor respond click reporting.
            if (SearchManager.INTENT_ACTION_NONE.equals(action)) {
                return null;
            }

            if (action == null) {
                action = mSearchable.getSuggestIntentAction();
            }
+55 −25
Original line number Diff line number Diff line
@@ -1162,10 +1162,44 @@ public class SearchManager
    /**
     * Intent extra data key: This key will be used for the extra populated by the
     * {@link #SUGGEST_COLUMN_INTENT_EXTRA_DATA} column.
     *
     * {@hide}
     */
    public final static String EXTRA_DATA_KEY = "intent_extra_data_key";


    /**
     * Used by the search dialog to ask the global search provider whether there are any pending
     * sources that have yet to respond.  Specifically, the search dialog will call
     * {@link Cursor#respond} with a bundle containing this extra as a key, and expect the same key
     * to be in the response, with a boolean value indicating whether there are pending sources.
     *
     * {@hide}
     */
    public final static String RESPOND_EXTRA_PENDING_SOURCES = "respond_extra_pending_sources";

    /**
     * Used by the search dialog to tell the cursor that supplied suggestions which item was clicked
     * before launching the intent.  The search dialog will call {@link Cursor#respond} with a
     * bundle containing this extra as a key and the position that was clicked as the value.
     *
     * The response bundle will use {@link #RESPOND_EXTRA_POSITION_SELECTED} to return an int value
     * of the index that should be selected, if applicable.
     *
     * {@hide}
     */
    public final static String RESPOND_EXTRA_POSITION_CLICKED = "respond_extra_position_clicked";

    /**
     * Used as a key in the response bundle from a call to {@link Cursor#respond} that sends the
     * position that is clicked.
     *
     * @see #RESPOND_EXTRA_POSITION_CLICKED
     *
     * {@hide}
     */
    public final static String RESPOND_EXTRA_POSITION_SELECTED = "respond_extra_position_selected";

    /**
     * Intent extra data key: Use this key with Intent.ACTION_SEARCH and
     * {@link android.content.Intent#getStringExtra content.Intent.getStringExtra()}
@@ -1364,20 +1398,6 @@ public class SearchManager
    public final static String INTENT_ACTION_CHANGE_SEARCH_SOURCE 
            = "android.search.action.CHANGE_SEARCH_SOURCE";

    /**
     * If a suggestion has this value in {@link #SUGGEST_COLUMN_INTENT_ACTION},
     * the search dialog will call {@link Cursor#respond(Bundle)} when the
     * suggestion is clicked. 
     * 
     * The {@link Bundle} argument will be constructed
     * in the same way as the "extra" bundle included in an Intent constructed 
     * from the suggestion.
     * 
     * @hide Pending API council approval.
     */
    public final static String INTENT_ACTION_CURSOR_RESPOND
            = "android.search.action.CURSOR_RESPOND";
    
    /**
     * Intent action for finding the global search activity.
     * The global search provider should handle this intent.
@@ -1396,6 +1416,14 @@ public class SearchManager
    public final static String INTENT_ACTION_SEARCH_SETTINGS 
            = "android.search.action.SEARCH_SETTINGS";

    /**
     * If a suggestion has this value in {@link #SUGGEST_COLUMN_INTENT_ACTION},
     * the search dialog will take no action.
     *
     * @hide
     */
    public final static String INTENT_ACTION_NONE = "android.search.action.ZILCH";
    
    /**
     * Reference to the shared system search service.
     */
@@ -1506,25 +1534,27 @@ public class SearchManager
    }
    
    /**
     * See {@link #setOnDismissListener} for configuring your activity to monitor search UI state.
     * See {@link SearchManager#setOnDismissListener} for configuring your activity to monitor
     * search UI state.
     */
    public interface OnDismissListener {
        /**
         * This method will be called when the search UI is dismissed. To make use if it, you must
         * implement this method in your activity, and call {@link #setOnDismissListener} to 
         * register it.
         * This method will be called when the search UI is dismissed. To make use of it, you must
         * implement this method in your activity, and call
         * {@link SearchManager#setOnDismissListener} to register it.
         */
        public void onDismiss();
    }
    
    /**
     * See {@link #setOnCancelListener} for configuring your activity to monitor search UI state.
     * See {@link SearchManager#setOnCancelListener} for configuring your activity to monitor
     * search UI state.
     */
    public interface OnCancelListener {
        /**
         * This method will be called when the search UI is canceled. To make use if it, you must
         * implement this method in your activity, and call {@link #setOnCancelListener} to 
         * register it.
         * implement this method in your activity, and call
         * {@link SearchManager#setOnCancelListener} to register it.
         */
        public void onCancel();
    }
+13 −13
Original line number Diff line number Diff line
@@ -77,8 +77,10 @@ class SuggestionsAdapter extends ResourceCursorAdapter {
    // a particular list item should be selected upon the next call to notifyDataSetChanged.
    // This is used to indicate the index of the "More results..." list item so that when
    // the data set changes after a click of "More results...", we can correctly tell the
    // ListView to scroll to the right line item. It gets reset to -1 every time it is consumed.
    private int mListItemToSelect = -1;
    // ListView to scroll to the right line item. It gets reset to NO_ITEM_TO_SELECT every time it
    // is consumed.
    private int mListItemToSelect = NO_ITEM_TO_SELECT;
    static final int NO_ITEM_TO_SELECT = -1;

    public SuggestionsAdapter(Context context, SearchDialog searchDialog, SearchableInfo searchable,
            WeakHashMap<String, Drawable> outsideDrawablesCache, boolean globalSearchMode) {
@@ -146,9 +148,9 @@ class SuggestionsAdapter extends ResourceCursorAdapter {
    public void notifyDataSetChanged() {
        super.notifyDataSetChanged();
        updateWorking();
        if (mListItemToSelect != -1) {
        if (mListItemToSelect != NO_ITEM_TO_SELECT) {
            mSearchDialog.setListSelection(mListItemToSelect);
            mListItemToSelect = -1;
            mListItemToSelect = NO_ITEM_TO_SELECT;
        }
    }
    
@@ -168,12 +170,10 @@ class SuggestionsAdapter extends ResourceCursorAdapter {
        if (!mGlobalSearchMode || mCursor == null) return;
        
        Bundle request = new Bundle();
        request.putString(SearchManager.EXTRA_DATA_KEY, IS_WORKING);
        request.putString(SearchManager.RESPOND_EXTRA_PENDING_SOURCES, "DUMMY");
        Bundle response = mCursor.respond(request);
        if (response.containsKey(IS_WORKING)) {
            boolean isWorking = response.getBoolean(IS_WORKING);
            mSearchDialog.setWorking(isWorking);
        }

        mSearchDialog.setWorking(response.getBoolean(SearchManager.RESPOND_EXTRA_PENDING_SOURCES));
    }

    /**
@@ -408,7 +408,7 @@ class SuggestionsAdapter extends ResourceCursorAdapter {
     */
    public static String getColumnString(Cursor cursor, String columnName) {
        int col = cursor.getColumnIndex(columnName);
        if (col == -1) {
        if (col == NO_ITEM_TO_SELECT) {
            return null;
        }
        return cursor.getString(col);