1d26706538834e0ed58bf28f08d9a2885c0e7efcbBjorn Bringert/*
2d26706538834e0ed58bf28f08d9a2885c0e7efcbBjorn Bringert * Copyright (C) 2010 The Android Open Source Project
3d26706538834e0ed58bf28f08d9a2885c0e7efcbBjorn Bringert *
4d26706538834e0ed58bf28f08d9a2885c0e7efcbBjorn Bringert * Licensed under the Apache License, Version 2.0 (the "License");
5d26706538834e0ed58bf28f08d9a2885c0e7efcbBjorn Bringert * you may not use this file except in compliance with the License.
6d26706538834e0ed58bf28f08d9a2885c0e7efcbBjorn Bringert * You may obtain a copy of the License at
7d26706538834e0ed58bf28f08d9a2885c0e7efcbBjorn Bringert *
8d26706538834e0ed58bf28f08d9a2885c0e7efcbBjorn Bringert *      http://www.apache.org/licenses/LICENSE-2.0
9d26706538834e0ed58bf28f08d9a2885c0e7efcbBjorn Bringert *
10d26706538834e0ed58bf28f08d9a2885c0e7efcbBjorn Bringert * Unless required by applicable law or agreed to in writing, software
11d26706538834e0ed58bf28f08d9a2885c0e7efcbBjorn Bringert * distributed under the License is distributed on an "AS IS" BASIS,
12d26706538834e0ed58bf28f08d9a2885c0e7efcbBjorn Bringert * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13d26706538834e0ed58bf28f08d9a2885c0e7efcbBjorn Bringert * See the License for the specific language governing permissions and
14d26706538834e0ed58bf28f08d9a2885c0e7efcbBjorn Bringert * limitations under the License.
15d26706538834e0ed58bf28f08d9a2885c0e7efcbBjorn Bringert */
16d26706538834e0ed58bf28f08d9a2885c0e7efcbBjorn Bringertpackage com.android.browser.search;
17d26706538834e0ed58bf28f08d9a2885c0e7efcbBjorn Bringert
18d26706538834e0ed58bf28f08d9a2885c0e7efcbBjorn Bringertimport android.content.Context;
19d26706538834e0ed58bf28f08d9a2885c0e7efcbBjorn Bringertimport android.database.Cursor;
20d26706538834e0ed58bf28f08d9a2885c0e7efcbBjorn Bringertimport android.os.Bundle;
21d26706538834e0ed58bf28f08d9a2885c0e7efcbBjorn Bringert
22d26706538834e0ed58bf28f08d9a2885c0e7efcbBjorn Bringert/**
23d26706538834e0ed58bf28f08d9a2885c0e7efcbBjorn Bringert * Interface for search engines.
24d26706538834e0ed58bf28f08d9a2885c0e7efcbBjorn Bringert */
25d26706538834e0ed58bf28f08d9a2885c0e7efcbBjorn Bringertpublic interface SearchEngine {
26d26706538834e0ed58bf28f08d9a2885c0e7efcbBjorn Bringert
27430057dad085f3c3dbc386f127b1f5a10a9851daLeon Scroggins III    // Used if the search engine is Google
28430057dad085f3c3dbc386f127b1f5a10a9851daLeon Scroggins III    static final String GOOGLE = "google";
29430057dad085f3c3dbc386f127b1f5a10a9851daLeon Scroggins III
30d26706538834e0ed58bf28f08d9a2885c0e7efcbBjorn Bringert    /**
31d26706538834e0ed58bf28f08d9a2885c0e7efcbBjorn Bringert     * Gets the unique name of this search engine.
32d26706538834e0ed58bf28f08d9a2885c0e7efcbBjorn Bringert     */
33d26706538834e0ed58bf28f08d9a2885c0e7efcbBjorn Bringert    public String getName();
34d26706538834e0ed58bf28f08d9a2885c0e7efcbBjorn Bringert
35d26706538834e0ed58bf28f08d9a2885c0e7efcbBjorn Bringert    /**
36d26706538834e0ed58bf28f08d9a2885c0e7efcbBjorn Bringert     * Gets the human-readable name of this search engine.
37d26706538834e0ed58bf28f08d9a2885c0e7efcbBjorn Bringert     */
38d26706538834e0ed58bf28f08d9a2885c0e7efcbBjorn Bringert    public CharSequence getLabel();
39d26706538834e0ed58bf28f08d9a2885c0e7efcbBjorn Bringert
40d26706538834e0ed58bf28f08d9a2885c0e7efcbBjorn Bringert    /**
41d26706538834e0ed58bf28f08d9a2885c0e7efcbBjorn Bringert     * Starts a search.
42d26706538834e0ed58bf28f08d9a2885c0e7efcbBjorn Bringert     */
43d26706538834e0ed58bf28f08d9a2885c0e7efcbBjorn Bringert    public void startSearch(Context context, String query, Bundle appData, String extraData);
44d26706538834e0ed58bf28f08d9a2885c0e7efcbBjorn Bringert
45d26706538834e0ed58bf28f08d9a2885c0e7efcbBjorn Bringert    /**
46d26706538834e0ed58bf28f08d9a2885c0e7efcbBjorn Bringert     * Gets search suggestions.
47d26706538834e0ed58bf28f08d9a2885c0e7efcbBjorn Bringert     */
48d26706538834e0ed58bf28f08d9a2885c0e7efcbBjorn Bringert    public Cursor getSuggestions(Context context, String query);
49d26706538834e0ed58bf28f08d9a2885c0e7efcbBjorn Bringert
50d26706538834e0ed58bf28f08d9a2885c0e7efcbBjorn Bringert    /**
51d26706538834e0ed58bf28f08d9a2885c0e7efcbBjorn Bringert     * Checks whether this search engine supports search suggestions.
52d26706538834e0ed58bf28f08d9a2885c0e7efcbBjorn Bringert     */
53d26706538834e0ed58bf28f08d9a2885c0e7efcbBjorn Bringert    public boolean supportsSuggestions();
54d26706538834e0ed58bf28f08d9a2885c0e7efcbBjorn Bringert
55d26706538834e0ed58bf28f08d9a2885c0e7efcbBjorn Bringert    /**
56d26706538834e0ed58bf28f08d9a2885c0e7efcbBjorn Bringert     * Closes this search engine.
57d26706538834e0ed58bf28f08d9a2885c0e7efcbBjorn Bringert     */
58d26706538834e0ed58bf28f08d9a2885c0e7efcbBjorn Bringert    public void close();
59d26706538834e0ed58bf28f08d9a2885c0e7efcbBjorn Bringert
60430057dad085f3c3dbc386f127b1f5a10a9851daLeon Scroggins III    /**
615119edd5744cfc6d3a8ed480a8853586c737bed4Narayan Kamath     * Checks whether this search engine should be sent zero char query.
625119edd5744cfc6d3a8ed480a8853586c737bed4Narayan Kamath     */
635119edd5744cfc6d3a8ed480a8853586c737bed4Narayan Kamath    public boolean wantsEmptyQuery();
64d26706538834e0ed58bf28f08d9a2885c0e7efcbBjorn Bringert}
65