Skip to content
This repository was archived by the owner on Jul 22, 2024. It is now read-only.

Commit db2cadb

Browse files
authored
Update search codes (#3283)
1 parent c9f36b7 commit db2cadb

File tree

9 files changed

+67
-239
lines changed

9 files changed

+67
-239
lines changed

app/src/common/shared/org/mozilla/vrbrowser/search/GeolocationLocalizationProvider.java

-6
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,6 @@ public class GeolocationLocalizationProvider implements SearchLocalizationProvid
2323
mRegion = data.getCountryCode();
2424
}
2525

26-
GeolocationLocalizationProvider(@NonNull String countryCode, @NonNull String region) {
27-
mCountry = countryCode;
28-
mLanguage = Locale.getDefault().getLanguage();
29-
mRegion = region;
30-
}
31-
3226
@Nullable
3327
@Override
3428
public SearchLocalization determineRegion(@NonNull Continuation<? super SearchLocalization> continuation) {

app/src/common/shared/org/mozilla/vrbrowser/search/SearchEngineWrapper.java

+5-28
Original file line numberDiff line numberDiff line change
@@ -12,21 +12,17 @@
1212
import androidx.annotation.NonNull;
1313

1414
import org.mozilla.vrbrowser.R;
15-
import org.mozilla.vrbrowser.VRBrowserApplication;
1615
import org.mozilla.vrbrowser.browser.SettingsStore;
17-
import org.mozilla.vrbrowser.browser.engine.EngineProvider;
1816
import org.mozilla.vrbrowser.geolocation.GeolocationData;
19-
import org.mozilla.vrbrowser.search.suggestions.SuggestionsClient;
17+
import org.mozilla.vrbrowser.search.suggestions.SearchSuggestionsCLientKt;
2018
import org.mozilla.vrbrowser.utils.SystemUtils;
2119

2220
import java.util.ArrayList;
23-
import java.util.Arrays;
2421
import java.util.Collections;
2522
import java.util.HashMap;
2623
import java.util.List;
2724
import java.util.Map;
2825
import java.util.concurrent.CompletableFuture;
29-
import java.util.concurrent.Executor;
3026

3127
import kotlinx.coroutines.Dispatchers;
3228
import mozilla.components.browser.search.SearchEngine;
@@ -64,22 +60,14 @@ SearchEngineWrapper get(final @NonNull Context aContext) {
6460
return mSearchEngineWrapperInstance;
6561
}
6662

67-
public interface SuggestionsDelegate {
68-
void OnSuggestions(List<String> aSuggestionsList);
69-
}
70-
7163
private Context mContext;
7264
private SearchEngine mSearchEngine;
73-
private SearchLocalizationProvider mLocalizationProvider;
74-
private SearchEngineManager mSearchEngineManager;
7565
private SearchSuggestionClient mSuggestionsClient;
7666
private SharedPreferences mPrefs;
77-
private Executor mUIThreadExecutor;
7867

7968
private SearchEngineWrapper(@NonNull Context aContext) {
8069
mContext = aContext;
8170
mPrefs = PreferenceManager.getDefaultSharedPreferences(mContext);
82-
mUIThreadExecutor = ((VRBrowserApplication)aContext.getApplicationContext()).getExecutors().mainThread();
8371

8472
setupSearchEngine(aContext, EMPTY);
8573
}
@@ -111,21 +99,9 @@ public String getSearchURL(String aQuery) {
11199
return mSearchEngine.buildSearchUrl(aQuery);
112100
}
113101

114-
private String getSuggestionURL(String aQuery) {
115-
return mSearchEngine.buildSuggestionsURL(aQuery);
116-
}
117-
118102
public CompletableFuture<List<String>> getSuggestions(String aQuery) {
119-
CompletableFuture<List<String>> future = new CompletableFuture<>();
120-
// TODO: Use mSuggestionsClient.getSuggestions when fixed in browser-search.
121-
String query = getSuggestionURL(aQuery);
122-
mUIThreadExecutor.execute(() ->
123-
SuggestionsClient.getSuggestions(
124-
EngineProvider.INSTANCE.getDefaultGeckoWebExecutor(mContext),
125-
mSearchEngine,
126-
query).thenAcceptAsync(future::complete));
127-
128-
return future;
103+
String query = mSearchEngine.buildSuggestionsURL(aQuery);
104+
return SearchSuggestionsCLientKt.getSuggestionsAsync(mSuggestionsClient, query != null ? query : "");
129105
}
130106

131107
public String getResourceURL() {
@@ -157,6 +133,7 @@ private void setupSearchEngine(@NonNull Context aContext, String userPref) {
157133
List<SearchEngineFilter> engineFilterList = new ArrayList<>();
158134

159135
GeolocationData data = GeolocationData.parse(SettingsStore.getInstance(aContext).getGeolocationData());
136+
SearchLocalizationProvider mLocalizationProvider;
160137
if (data == null) {
161138
Log.d(LOGTAG, "Using Locale based search localization provider");
162139
// If we don't have geolocation data we default to the Locale search localization provider
@@ -181,7 +158,7 @@ private void setupSearchEngine(@NonNull Context aContext, String userPref) {
181158
engineFilterList,
182159
Collections.emptyList());
183160

184-
mSearchEngineManager = new SearchEngineManager(Arrays.asList(engineProvider), Dispatchers.getDefault());
161+
SearchEngineManager mSearchEngineManager = new SearchEngineManager(Collections.singletonList(engineProvider), Dispatchers.getDefault());
185162

186163
// If we don't get any result we use the default configuration.
187164
if (mSearchEngineManager.getSearchEngines(aContext).size() == 0) {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package org.mozilla.vrbrowser.search.suggestions
2+
3+
import kotlinx.coroutines.GlobalScope
4+
import kotlinx.coroutines.future.future
5+
import mozilla.components.browser.search.suggestions.SearchSuggestionClient
6+
import java.util.concurrent.CompletableFuture
7+
8+
fun getSuggestionsAsync(client: SearchSuggestionClient, query: String): CompletableFuture<List<String>?> =
9+
GlobalScope.future {
10+
client.getSuggestions(query)
11+
}

app/src/common/shared/org/mozilla/vrbrowser/search/suggestions/SuggestionParser.java

-102
This file was deleted.

app/src/common/shared/org/mozilla/vrbrowser/search/suggestions/SuggestionsClient.java

-69
This file was deleted.

app/src/common/shared/org/mozilla/vrbrowser/search/suggestions/SuggestionsProvider.java

+17-18
Original file line numberDiff line numberDiff line change
@@ -17,38 +17,37 @@
1717
import java.util.List;
1818
import java.util.concurrent.CompletableFuture;
1919
import java.util.concurrent.Executor;
20+
import java.util.function.Supplier;
2021

2122
public class SuggestionsProvider {
2223

2324
private static final String LOGTAG = SuggestionsProvider.class.getSimpleName();
2425

25-
public class DefaultSuggestionsComparator implements Comparator {
26+
public static class DefaultSuggestionsComparator implements Comparator<SuggestionItem> {
2627

27-
public int compare(Object obj1, Object obj2) {
28-
SuggestionItem suggestion1 = (SuggestionItem)obj1;
29-
SuggestionItem suggestion2 = (SuggestionItem)obj2;
30-
if (suggestion1.type == Type.SUGGESTION && suggestion2.type == Type.SUGGESTION) {
28+
public int compare(SuggestionItem obj1, SuggestionItem obj2) {
29+
if (obj1.type == Type.SUGGESTION && obj2.type == Type.SUGGESTION) {
3130
return 0;
3231

33-
} else if (suggestion1.type == suggestion2.type) {
34-
if (suggestion1.type == Type.HISTORY) {
35-
if (suggestion1.score != suggestion2.score) {
36-
return suggestion1.score - suggestion2.score;
32+
} else if (obj1.type == obj2.type) {
33+
if (obj1.type == Type.HISTORY) {
34+
if (obj1.score != obj2.score) {
35+
return obj1.score - obj2.score;
3736
}
3837
}
3938

40-
return suggestion1.url.compareTo(suggestion2.url);
39+
return obj1.url.compareTo(obj2.url);
4140

4241
} else {
43-
return suggestion1.type.ordinal() - suggestion2.type.ordinal();
42+
return obj1.type.ordinal() - obj2.type.ordinal();
4443
}
4544
}
4645
}
4746

4847
private SearchEngineWrapper mSearchEngineWrapper;
4948
private String mText;
5049
private String mFilterText;
51-
private Comparator mComparator;
50+
private Comparator<SuggestionItem> mComparator;
5251
private Executor mUIThreadExecutor;
5352

5453
public SuggestionsProvider(Context context) {
@@ -74,15 +73,15 @@ public void setFilterText(String text) {
7473

7574
public void setText(String text) { mText = text; }
7675

77-
public void setComparator(Comparator comparator) {
76+
public void setComparator(Comparator<SuggestionItem> comparator) {
7877
mComparator = comparator;
7978
}
8079

8180
private CompletableFuture<List<SuggestionItem>> getBookmarkSuggestions(@NonNull List<SuggestionItem> items) {
82-
CompletableFuture future = new CompletableFuture();
81+
CompletableFuture<List<SuggestionItem>> future = new CompletableFuture<>();
8382
SessionStore.get().getBookmarkStore().searchBookmarks(mFilterText, 100).thenAcceptAsync((bookmarks) -> {
8483
bookmarks.stream()
85-
.filter((b) -> !b.getUrl().startsWith("place:") &&
84+
.filter((b) -> b.getUrl() != null && !b.getUrl().startsWith("place:") &&
8685
!b.getUrl().startsWith("about:reader"))
8786
.forEach(b -> items.add(SuggestionItem.create(
8887
b.getTitle(),
@@ -107,7 +106,7 @@ private CompletableFuture<List<SuggestionItem>> getBookmarkSuggestions(@NonNull
107106
}
108107

109108
private CompletableFuture<List<SuggestionItem>> getHistorySuggestions(@NonNull final List<SuggestionItem> items) {
110-
CompletableFuture future = new CompletableFuture();
109+
CompletableFuture<List<SuggestionItem>> future = new CompletableFuture<>();
111110
SessionStore.get().getHistoryStore().getSuggestions(mFilterText, 100).thenAcceptAsync((history) -> {
112111
history.forEach(h -> items.add(SuggestionItem.create(
113112
h.getTitle(),
@@ -132,7 +131,7 @@ private CompletableFuture<List<SuggestionItem>> getHistorySuggestions(@NonNull f
132131
}
133132

134133
private CompletableFuture<List<SuggestionItem>> getSearchEngineSuggestions(@NonNull final List<SuggestionItem> items) {
135-
CompletableFuture future = new CompletableFuture();
134+
CompletableFuture<List<SuggestionItem>> future = new CompletableFuture<>();
136135

137136
// Completion from browser-domains
138137
if (!mText.equals(mFilterText)) {
@@ -182,7 +181,7 @@ private CompletableFuture<List<SuggestionItem>> getSearchEngineSuggestions(@NonN
182181
}
183182

184183
public CompletableFuture<List<SuggestionItem>> getSuggestions() {
185-
return CompletableFuture.supplyAsync(() -> new ArrayList<SuggestionItem>())
184+
return CompletableFuture.supplyAsync((Supplier<ArrayList<SuggestionItem>>) ArrayList::new)
186185
.thenComposeAsync(this::getSearchEngineSuggestions)
187186
.thenComposeAsync(this::getBookmarkSuggestions)
188187
.thenComposeAsync(this::getHistorySuggestions);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<!-- This Source Code Form is subject to the terms of the Mozilla Public
2+
- License, v. 2.0. If a copy of the MPL was not distributed with this
3+
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
4+
5+
<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/">
6+
<ShortName>Google</ShortName>
7+
<InputEncoding>UTF-8</InputEncoding>
8+
<Image width="16" height="16">data:image/png;base64,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</Image>
9+
<Url type="application/x-suggestions+json" method="GET" template="https://www.google.com/complete/search?client=firefox&amp;q={searchTerms}"/>
10+
<Url type="text/html" method="GET" template="https://www.google.com/search">
11+
<Param name="q" value="{searchTerms}"/>
12+
<Param name="ie" value="utf-8"/>
13+
<Param name="oe" value="utf-8"/>
14+
<Param name="client" value="firefox-b-1-o"/>
15+
</Url>
16+
<SearchForm>https://www.google.com</SearchForm>
17+
</SearchPlugin>

0 commit comments

Comments
 (0)