• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2009 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.quicksearchbox;
18 
19 import com.android.quicksearchbox.ui.SuggestionViewFactory;
20 import com.android.quicksearchbox.util.Now;
21 import com.android.quicksearchbox.util.NowOrLater;
22 
23 import android.content.ComponentName;
24 import android.content.Intent;
25 import android.graphics.drawable.Drawable;
26 import android.net.Uri;
27 import android.os.Bundle;
28 
29 /**
30  * Mock implementation of {@link Source}.
31  *
32  */
33 public class MockSource implements Source {
34 
35     public static final MockSource SOURCE_1 = new MockSource("SOURCE_1");
36 
37     public static final MockSource SOURCE_2 = new MockSource("SOURCE_2");
38 
39     public static final MockSource SOURCE_3 = new MockSource("SOURCE_3");
40 
41     public static final MockSource WEB_SOURCE = new MockSource("WEB") {
42         @Override
43         public SuggestionData createSuggestion(String query) {
44             return new SuggestionData(this)
45                     .setText1(query)
46                     .setIntentAction(Intent.ACTION_WEB_SEARCH)
47                     .setSuggestionQuery(query);
48         }
49 
50         @Override
51         public int getMaxShortcuts(Config config) {
52             return config.getMaxShortcutsPerWebSource();
53         }
54     };
55 
56     private final String mName;
57 
58     private final int mVersionCode;
59 
MockSource(String name)60     public MockSource(String name) {
61         this(name, 0);
62     }
63 
MockSource(String name, int versionCode)64     public MockSource(String name, int versionCode) {
65         mName = name;
66         mVersionCode = versionCode;
67     }
68 
getIntentComponent()69     public ComponentName getIntentComponent() {
70         // Not an activity, but no code should treat it as one.
71         return new ComponentName("com.android.quicksearchbox",
72                 getClass().getName() + "." + mName);
73     }
74 
getSuggestUri()75     public String getSuggestUri() {
76         return null;
77     }
78 
getVersionCode()79     public int getVersionCode() {
80         return mVersionCode;
81     }
82 
isVersionCodeCompatible(int version)83     public boolean isVersionCodeCompatible(int version) {
84         return version == mVersionCode;
85     }
86 
getName()87     public String getName() {
88         return getIntentComponent().flattenToShortString();
89     }
90 
getDefaultIntentAction()91     public String getDefaultIntentAction() {
92         return Intent.ACTION_SEARCH;
93     }
94 
getDefaultIntentData()95     public String getDefaultIntentData() {
96         return null;
97     }
98 
99     @Override
getIcon(String drawableId)100     public NowOrLater<Drawable> getIcon(String drawableId) {
101         return new Now<Drawable>(null);
102     }
103 
getIconUri(String drawableId)104     public Uri getIconUri(String drawableId) {
105         return null;
106     }
107 
getLabel()108     public String getLabel() {
109         return "MockSource " + mName;
110     }
111 
getQueryThreshold()112     public int getQueryThreshold() {
113         return 0;
114     }
115 
getHint()116     public CharSequence getHint() {
117         return null;
118     }
119 
getSettingsDescription()120     public String getSettingsDescription() {
121         return "Suggestions from MockSource " + mName;
122     }
123 
getSourceIcon()124     public Drawable getSourceIcon() {
125         return null;
126     }
127 
getSourceIconUri()128     public Uri getSourceIconUri() {
129         return null;
130     }
131 
canRead()132     public boolean canRead() {
133         return true;
134     }
135 
getSuggestions(String query, int queryLimit, boolean onlySource)136     public SourceResult getSuggestions(String query, int queryLimit, boolean onlySource) {
137         if (query.length() == 0) {
138             return null;
139         }
140         ListSuggestionCursor cursor = new ListSuggestionCursor(query);
141         cursor.add(createSuggestion(query + "_1"));
142         cursor.add(createSuggestion(query + "_2"));
143         return new Result(query, cursor);
144     }
145 
createSuggestion(String query)146     public SuggestionData createSuggestion(String query) {
147         Uri data = new Uri.Builder().scheme("content").authority(mName).path(query).build();
148         return new SuggestionData(this)
149                 .setText1(query)
150                 .setIntentAction(Intent.ACTION_VIEW)
151                 .setIntentData(data.toString());
152     }
153 
154     @Override
equals(Object o)155     public boolean equals(Object o) {
156         if (o != null && o.getClass().equals(this.getClass())) {
157             MockSource s = (MockSource) o;
158             return s.mName.equals(mName);
159         }
160         return false;
161     }
162 
163     @Override
hashCode()164     public int hashCode() {
165         return mName.hashCode();
166     }
167 
168     @Override
toString()169     public String toString() {
170         return getName() + ":" + getVersionCode();
171     }
172 
173     private class Result extends SuggestionCursorWrapper implements SourceResult {
174 
Result(String userQuery, SuggestionCursor cursor)175         public Result(String userQuery, SuggestionCursor cursor) {
176             super(userQuery, cursor);
177         }
178 
getSource()179         public Source getSource() {
180             return MockSource.this;
181         }
182 
183     }
184 
refreshShortcut(String shortcutId, String extraData)185     public SuggestionCursor refreshShortcut(String shortcutId, String extraData) {
186         return null;
187     }
188 
isExternal()189     public boolean isExternal() {
190         return false;
191     }
192 
getMaxShortcuts(Config config)193     public int getMaxShortcuts(Config config) {
194         return config.getMaxShortcutsPerNonWebSource();
195     }
196 
queryAfterZeroResults()197     public boolean queryAfterZeroResults() {
198         return false;
199     }
200 
createSearchIntent(String query, Bundle appData)201     public Intent createSearchIntent(String query, Bundle appData) {
202         return null;
203     }
204 
createVoiceSearchIntent(Bundle appData)205     public Intent createVoiceSearchIntent(Bundle appData) {
206         return null;
207     }
208 
voiceSearchEnabled()209     public boolean voiceSearchEnabled() {
210         return false;
211     }
212 
includeInAll()213     public boolean includeInAll() {
214         return true;
215     }
216 
getRoot()217     public Source getRoot() {
218         return this;
219     }
220 
221 }
222