1ca78085bb2127559e6f55276a307bfa857018ecaBjorn Bringert/*
2ca78085bb2127559e6f55276a307bfa857018ecaBjorn Bringert * Copyright (C) 2009 The Android Open Source Project
3ca78085bb2127559e6f55276a307bfa857018ecaBjorn Bringert *
4ca78085bb2127559e6f55276a307bfa857018ecaBjorn Bringert * Licensed under the Apache License, Version 2.0 (the "License");
5ca78085bb2127559e6f55276a307bfa857018ecaBjorn Bringert * you may not use this file except in compliance with the License.
6ca78085bb2127559e6f55276a307bfa857018ecaBjorn Bringert * You may obtain a copy of the License at
7ca78085bb2127559e6f55276a307bfa857018ecaBjorn Bringert *
8ca78085bb2127559e6f55276a307bfa857018ecaBjorn Bringert *      http://www.apache.org/licenses/LICENSE-2.0
9ca78085bb2127559e6f55276a307bfa857018ecaBjorn Bringert *
10ca78085bb2127559e6f55276a307bfa857018ecaBjorn Bringert * Unless required by applicable law or agreed to in writing, software
11ca78085bb2127559e6f55276a307bfa857018ecaBjorn Bringert * distributed under the License is distributed on an "AS IS" BASIS,
12ca78085bb2127559e6f55276a307bfa857018ecaBjorn Bringert * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13ca78085bb2127559e6f55276a307bfa857018ecaBjorn Bringert * See the License for the specific language governing permissions and
14ca78085bb2127559e6f55276a307bfa857018ecaBjorn Bringert * limitations under the License.
15ca78085bb2127559e6f55276a307bfa857018ecaBjorn Bringert */
16ca78085bb2127559e6f55276a307bfa857018ecaBjorn Bringert
17ca78085bb2127559e6f55276a307bfa857018ecaBjorn Bringertpackage com.android.quicksearchbox;
18ca78085bb2127559e6f55276a307bfa857018ecaBjorn Bringert
19ca78085bb2127559e6f55276a307bfa857018ecaBjorn Bringert
20ca78085bb2127559e6f55276a307bfa857018ecaBjorn Bringert
21ca78085bb2127559e6f55276a307bfa857018ecaBjorn Bringert/**
22ca78085bb2127559e6f55276a307bfa857018ecaBjorn Bringert * Interface for logging implementations.
23ca78085bb2127559e6f55276a307bfa857018ecaBjorn Bringert */
24ca78085bb2127559e6f55276a307bfa857018ecaBjorn Bringertpublic interface Logger {
25ca78085bb2127559e6f55276a307bfa857018ecaBjorn Bringert
26ca78085bb2127559e6f55276a307bfa857018ecaBjorn Bringert    public static final int SEARCH_METHOD_BUTTON = 0;
27ca78085bb2127559e6f55276a307bfa857018ecaBjorn Bringert    public static final int SEARCH_METHOD_KEYBOARD = 1;
28ca78085bb2127559e6f55276a307bfa857018ecaBjorn Bringert
29c020c1844b0fb3a825e8a6fa6ad96288bc432fbcBjorn Bringert    public static final int SUGGESTION_CLICK_TYPE_LAUNCH = 0;
30c020c1844b0fb3a825e8a6fa6ad96288bc432fbcBjorn Bringert    public static final int SUGGESTION_CLICK_TYPE_REFINE = 1;
31c020c1844b0fb3a825e8a6fa6ad96288bc432fbcBjorn Bringert    public static final int SUGGESTION_CLICK_TYPE_QUICK_CONTACT = 2;
32c020c1844b0fb3a825e8a6fa6ad96288bc432fbcBjorn Bringert
33ca78085bb2127559e6f55276a307bfa857018ecaBjorn Bringert    /**
34ca78085bb2127559e6f55276a307bfa857018ecaBjorn Bringert     * Called when QSB has started.
35ca78085bb2127559e6f55276a307bfa857018ecaBjorn Bringert     *
36ca78085bb2127559e6f55276a307bfa857018ecaBjorn Bringert     * @param latency User-visible start-up latency in milliseconds.
37ca78085bb2127559e6f55276a307bfa857018ecaBjorn Bringert     */
38ecf356c15143ab0583c64682de16d94a57f7dd1cMathew Inwood    void logStart(int onCreateLatency, int latency, String intentSource);
39ca78085bb2127559e6f55276a307bfa857018ecaBjorn Bringert
40ca78085bb2127559e6f55276a307bfa857018ecaBjorn Bringert    /**
41ca78085bb2127559e6f55276a307bfa857018ecaBjorn Bringert     * Called when a suggestion is clicked.
42ca78085bb2127559e6f55276a307bfa857018ecaBjorn Bringert     *
437a0c3a7c6fdabce949b59e0a2c6ec1d44a140c24Mathew Inwood     * @param suggestionId Suggestion ID; 0-based position of the suggestion in the UI if the list
447a0c3a7c6fdabce949b59e0a2c6ec1d44a140c24Mathew Inwood     *      is flat.
45ca78085bb2127559e6f55276a307bfa857018ecaBjorn Bringert     * @param suggestionCursor all the suggestions shown in the UI.
46c020c1844b0fb3a825e8a6fa6ad96288bc432fbcBjorn Bringert     * @param clickType One of the SUGGESTION_CLICK_TYPE constants.
47ca78085bb2127559e6f55276a307bfa857018ecaBjorn Bringert     */
48ecf356c15143ab0583c64682de16d94a57f7dd1cMathew Inwood    void logSuggestionClick(long suggestionId, SuggestionCursor suggestionCursor,  int clickType);
49ca78085bb2127559e6f55276a307bfa857018ecaBjorn Bringert
50ca78085bb2127559e6f55276a307bfa857018ecaBjorn Bringert    /**
51ca78085bb2127559e6f55276a307bfa857018ecaBjorn Bringert     * The user launched a search.
52ca78085bb2127559e6f55276a307bfa857018ecaBjorn Bringert     *
53ca78085bb2127559e6f55276a307bfa857018ecaBjorn Bringert     * @param startMethod One of {@link #SEARCH_METHOD_BUTTON} or {@link #SEARCH_METHOD_KEYBOARD}.
54ca78085bb2127559e6f55276a307bfa857018ecaBjorn Bringert     * @param numChars The number of characters in the query.
55ca78085bb2127559e6f55276a307bfa857018ecaBjorn Bringert     */
56ecf356c15143ab0583c64682de16d94a57f7dd1cMathew Inwood    void logSearch(int startMethod, int numChars);
57ca78085bb2127559e6f55276a307bfa857018ecaBjorn Bringert
58ca78085bb2127559e6f55276a307bfa857018ecaBjorn Bringert    /**
59ca78085bb2127559e6f55276a307bfa857018ecaBjorn Bringert     * The user launched a voice search.
60ca78085bb2127559e6f55276a307bfa857018ecaBjorn Bringert     */
61ecf356c15143ab0583c64682de16d94a57f7dd1cMathew Inwood    void logVoiceSearch();
62ca78085bb2127559e6f55276a307bfa857018ecaBjorn Bringert
63ca78085bb2127559e6f55276a307bfa857018ecaBjorn Bringert    /**
64ca78085bb2127559e6f55276a307bfa857018ecaBjorn Bringert     * The user left QSB without performing any action (click suggestions, search or voice search).
65ca78085bb2127559e6f55276a307bfa857018ecaBjorn Bringert     *
66ca78085bb2127559e6f55276a307bfa857018ecaBjorn Bringert     * @param suggestionCursor all the suggestions shown in the UI when the user left
67fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert     * @param numChars The number of characters in the query typed when the user left.
68ca78085bb2127559e6f55276a307bfa857018ecaBjorn Bringert     */
69fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert    void logExit(SuggestionCursor suggestionCursor, int numChars);
70ca78085bb2127559e6f55276a307bfa857018ecaBjorn Bringert
71f95ce100dcbc77794b79b0187c566bb58b5978d3Bjorn Bringert    /**
72f95ce100dcbc77794b79b0187c566bb58b5978d3Bjorn Bringert     * Logs the latency of a suggestion query to a specific source.
73f95ce100dcbc77794b79b0187c566bb58b5978d3Bjorn Bringert     *
74f95ce100dcbc77794b79b0187c566bb58b5978d3Bjorn Bringert     * @param result The result of the query.
75f95ce100dcbc77794b79b0187c566bb58b5978d3Bjorn Bringert     */
76ecf356c15143ab0583c64682de16d94a57f7dd1cMathew Inwood    void logLatency(SourceResult result);
77ca78085bb2127559e6f55276a307bfa857018ecaBjorn Bringert
78ca78085bb2127559e6f55276a307bfa857018ecaBjorn Bringert}
79