mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 870110 - Part 1: search changes to support FHR on Android. r=wesj,cpeterson
This commit is contained in:
parent
457b71eb78
commit
43e6b6f3e8
@ -99,8 +99,12 @@ public class AwesomeBar extends GeckoActivity
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSearch(String engine, String text) {
|
||||
openSearchAndFinish(text, engine);
|
||||
public void onSearch(SearchEngine engine, String text) {
|
||||
Intent resultIntent = new Intent();
|
||||
resultIntent.putExtra(URL_KEY, text);
|
||||
resultIntent.putExtra(TARGET_KEY, mTarget);
|
||||
resultIntent.putExtra(SEARCH_KEY, engine.name);
|
||||
finishWithResult(resultIntent);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -379,37 +383,31 @@ public class AwesomeBar extends GeckoActivity
|
||||
final int index = url.indexOf(' ');
|
||||
|
||||
// Check for a keyword if the URL looks like a search query
|
||||
if (StringUtils.isSearchQuery(url, true)) {
|
||||
ThreadUtils.postToBackgroundThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
String keywordUrl = null;
|
||||
String keywordSearch = "";
|
||||
if (index == -1) {
|
||||
keywordUrl = BrowserDB.getUrlForKeyword(getContentResolver(), url);
|
||||
} else {
|
||||
keywordUrl = BrowserDB.getUrlForKeyword(getContentResolver(), url.substring(0, index));
|
||||
keywordSearch = url.substring(index + 1);
|
||||
}
|
||||
if (keywordUrl == null) {
|
||||
openUrlAndFinish(url, "", true);
|
||||
} else {
|
||||
String search = URLEncoder.encode(keywordSearch);
|
||||
openUrlAndFinish(keywordUrl.replace("%s", search), "", true);
|
||||
}
|
||||
}
|
||||
});
|
||||
} else {
|
||||
if (!StringUtils.isSearchQuery(url, true)) {
|
||||
openUrlAndFinish(url, "", true);
|
||||
return;
|
||||
}
|
||||
}
|
||||
ThreadUtils.postToBackgroundThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
final String keyword;
|
||||
final String keywordSearch;
|
||||
|
||||
private void openSearchAndFinish(String url, String engine) {
|
||||
Intent resultIntent = new Intent();
|
||||
resultIntent.putExtra(URL_KEY, url);
|
||||
resultIntent.putExtra(TARGET_KEY, mTarget);
|
||||
resultIntent.putExtra(SEARCH_KEY, engine);
|
||||
finishWithResult(resultIntent);
|
||||
if (index == -1) {
|
||||
keyword = url;
|
||||
keywordSearch = "";
|
||||
} else {
|
||||
keyword = url.substring(0, index);
|
||||
keywordSearch = url.substring(index + 1);
|
||||
}
|
||||
|
||||
final String keywordUrl = BrowserDB.getUrlForKeyword(getContentResolver(), keyword);
|
||||
final String searchUrl = (keywordUrl != null)
|
||||
? keywordUrl.replace("%s", URLEncoder.encode(keywordSearch))
|
||||
: url;
|
||||
openUrlAndFinish(searchUrl, "", true);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -40,7 +40,7 @@ public class AwesomeBarTabs extends TabHost
|
||||
|
||||
public interface OnUrlOpenListener {
|
||||
public void onUrlOpen(String url, String title);
|
||||
public void onSearch(String engine, String text);
|
||||
public void onSearch(SearchEngine engine, String text);
|
||||
public void onEditSuggestion(String suggestion);
|
||||
}
|
||||
|
||||
|
@ -137,6 +137,7 @@ FENNEC_JAVA_FILES = \
|
||||
ProfileMigrator.java \
|
||||
PromptService.java \
|
||||
Restarter.java \
|
||||
SearchEngine.java \
|
||||
sqlite/ByteBufferInputStream.java \
|
||||
sqlite/MatrixBlobCursor.java \
|
||||
sqlite/SQLiteBridge.java \
|
||||
|
29
mobile/android/base/SearchEngine.java
Normal file
29
mobile/android/base/SearchEngine.java
Normal file
@ -0,0 +1,29 @@
|
||||
/* -*- Mode: Java; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*-
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
package org.mozilla.gecko;
|
||||
|
||||
import android.graphics.Bitmap;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class SearchEngine {
|
||||
public String name;
|
||||
public String identifier;
|
||||
public Bitmap icon;
|
||||
public ArrayList<String> suggestions;
|
||||
|
||||
public SearchEngine(String name, String identifier) {
|
||||
this(name, identifier, null);
|
||||
}
|
||||
|
||||
public SearchEngine(String name, String identifier, Bitmap icon) {
|
||||
this.name = name;
|
||||
this.identifier = identifier;
|
||||
this.icon = icon;
|
||||
this.suggestions = new ArrayList<String>();
|
||||
}
|
||||
}
|
||||
|
@ -359,9 +359,9 @@ public class AllPagesTab extends AwesomeBarTab implements GeckoEventListener {
|
||||
}
|
||||
|
||||
private class AwesomeBarSearchEngineItem implements AwesomeBarItem {
|
||||
private String mSearchEngine;
|
||||
private SearchEngine mSearchEngine;
|
||||
|
||||
public AwesomeBarSearchEngineItem(String searchEngine) {
|
||||
public AwesomeBarSearchEngineItem(SearchEngine searchEngine) {
|
||||
mSearchEngine = searchEngine;
|
||||
}
|
||||
|
||||
@ -428,7 +428,7 @@ public class AllPagesTab extends AwesomeBarTab implements GeckoEventListener {
|
||||
}
|
||||
|
||||
// return search engine
|
||||
return new AwesomeBarSearchEngineItem(mSearchEngines.get(engineIndex).name);
|
||||
return new AwesomeBarSearchEngineItem(mSearchEngines.get(engineIndex));
|
||||
}
|
||||
|
||||
private int getEngineIndex(int position) {
|
||||
@ -549,7 +549,7 @@ public class AllPagesTab extends AwesomeBarTab implements GeckoEventListener {
|
||||
if (v != viewHolder.userEnteredView && !StringUtils.isSearchQuery(suggestion, false)) {
|
||||
listener.onUrlOpen(suggestion, null);
|
||||
} else {
|
||||
listener.onSearch(engine.name, suggestion);
|
||||
listener.onSearch(engine, suggestion);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -619,22 +619,6 @@ public class AllPagesTab extends AwesomeBarTab implements GeckoEventListener {
|
||||
}
|
||||
};
|
||||
|
||||
private class SearchEngine {
|
||||
public String name;
|
||||
public Bitmap icon;
|
||||
public ArrayList<String> suggestions;
|
||||
|
||||
public SearchEngine(String name) {
|
||||
this(name, null);
|
||||
}
|
||||
|
||||
public SearchEngine(String name, Bitmap icon) {
|
||||
this.name = name;
|
||||
this.icon = icon;
|
||||
this.suggestions = new ArrayList<String>();
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Sets suggestions associated with the current suggest engine.
|
||||
* If there is no suggest engine, this does nothing.
|
||||
@ -662,11 +646,12 @@ public class AllPagesTab extends AwesomeBarTab implements GeckoEventListener {
|
||||
for (int i = 0; i < engines.length(); i++) {
|
||||
JSONObject engineJSON = engines.getJSONObject(i);
|
||||
String name = engineJSON.getString("name");
|
||||
String identifier = engineJSON.getString("identifier");
|
||||
String iconURI = engineJSON.getString("iconURI");
|
||||
Bitmap icon = BitmapUtils.getBitmapFromDataURI(iconURI);
|
||||
if (name.equals(suggestEngine) && suggestTemplate != null) {
|
||||
// suggest engine should be at the front of the list
|
||||
searchEngines.add(0, new SearchEngine(name, icon));
|
||||
searchEngines.add(0, new SearchEngine(name, identifier, icon));
|
||||
|
||||
// The only time Tabs.getInstance().getSelectedTab() should
|
||||
// be null is when we're restoring after a crash. We should
|
||||
@ -676,7 +661,7 @@ public class AllPagesTab extends AwesomeBarTab implements GeckoEventListener {
|
||||
if (tab == null || !tab.isPrivate())
|
||||
mSuggestClient = new SuggestClient(GeckoApp.mAppContext, suggestTemplate, SUGGESTION_TIMEOUT, SUGGESTION_MAX);
|
||||
} else {
|
||||
searchEngines.add(new SearchEngine(name, icon));
|
||||
searchEngines.add(new SearchEngine(name, identifier, icon));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1311,8 +1311,15 @@ var BrowserApp = {
|
||||
break;
|
||||
|
||||
case "keyword-search":
|
||||
// This assumes the user can only perform a keyword serach on the selected tab.
|
||||
// This assumes that the user can only perform a keyword search on the selected tab.
|
||||
this.selectedTab.userSearch = aData;
|
||||
|
||||
let engine = aSubject.QueryInterface(Ci.nsISearchEngine);
|
||||
sendMessageToJava({
|
||||
type: "Search:Keyword",
|
||||
identifier: engine.identifier,
|
||||
name: engine.name,
|
||||
});
|
||||
break;
|
||||
|
||||
case "Browser:Quit":
|
||||
@ -5895,6 +5902,7 @@ var SearchEngines = {
|
||||
let searchEngines = engineData.map(function (engine) {
|
||||
return {
|
||||
name: engine.name,
|
||||
identifier: engine.identifier,
|
||||
iconURI: (engine.iconURI ? engine.iconURI.spec : null)
|
||||
};
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user