Fixes for changing the search engine.
Provide a default value for the Select search engine preference.
Move the Select search engine preference into advanced settings.
When opening the SearchDialog with a SearchEngine other than
Google, add a flag to hide the voice search icon.
Depends on a change to frameworks/base.
Change-Id: I6da2e582789253b3c5ffac9fe1ad3732f99f28ea
diff --git a/res/xml/browser_preferences.xml b/res/xml/browser_preferences.xml
index fd994e8..501d8c1 100644
--- a/res/xml/browser_preferences.xml
+++ b/res/xml/browser_preferences.xml
@@ -98,20 +98,6 @@
android:hint="@string/http"
android:inputType="textUri|textMultiLine" />
- <!-- Entries and values in this list are set dynamically. -->
- <com.android.browser.search.SearchEnginePreference
- android:key="search_engine"
- android:title="@string/pref_content_search_engine"
- android:summary="@string/pref_content_search_engine_summary"
- android:dialogTitle="@string/pref_content_search_engine" />
-
- <CheckBoxPreference
- android:key="show_search_suggestions"
- android:defaultValue="true"
- android:title="@string/pref_content_show_search_suggestions"
- android:summaryOn="@string/pref_content_show_web_suggestions_summary_on"
- android:summaryOff="@string/pref_content_show_web_suggestions_summary_off" />
-
</PreferenceCategory>
<PreferenceCategory
@@ -206,6 +192,21 @@
<PreferenceCategory
android:title="@string/pref_extras_title">
+ <!-- Entries and values in this list are set dynamically. -->
+ <com.android.browser.search.SearchEnginePreference
+ android:key="search_engine"
+ android:title="@string/pref_content_search_engine"
+ android:defaultValue="google"
+ android:summary="@string/pref_content_search_engine_summary"
+ android:dialogTitle="@string/pref_content_search_engine" />
+
+ <CheckBoxPreference
+ android:key="show_search_suggestions"
+ android:defaultValue="true"
+ android:title="@string/pref_content_show_search_suggestions"
+ android:summaryOn="@string/pref_content_show_web_suggestions_summary_on"
+ android:summaryOff="@string/pref_content_show_web_suggestions_summary_off" />
+
<PreferenceScreen
android:key="website_settings"
android:title="@string/pref_extras_website_settings"
diff --git a/src/com/android/browser/BrowserActivity.java b/src/com/android/browser/BrowserActivity.java
index 6f47788..5583466 100644
--- a/src/com/android/browser/BrowserActivity.java
+++ b/src/com/android/browser/BrowserActivity.java
@@ -1185,6 +1185,12 @@
if (appSearchData == null) {
appSearchData = createGoogleSearchSourceBundle(GOOGLE_SEARCH_SOURCE_TYPE);
}
+
+ SearchEngine searchEngine = mSettings.getSearchEngine();
+ if (searchEngine != null && !searchEngine.supportsVoiceSearch()) {
+ appSearchData.putBoolean(SearchManager.DISABLE_VOICE_SEARCH, true);
+ }
+
super.startSearch(initialQuery, selectInitialQuery, appSearchData, globalSearch);
}
diff --git a/src/com/android/browser/search/DefaultSearchEngine.java b/src/com/android/browser/search/DefaultSearchEngine.java
index 42d274d..c939de7 100644
--- a/src/com/android/browser/search/DefaultSearchEngine.java
+++ b/src/com/android/browser/search/DefaultSearchEngine.java
@@ -67,9 +67,9 @@
String packageName = mSearchable.getSearchActivity().getPackageName();
// Use "google" as name to avoid showing Google twice (app + OpenSearch)
if ("com.google.android.googlequicksearchbox".equals(packageName)) {
- return "google";
+ return SearchEngine.GOOGLE;
} else if ("com.android.quicksearchbox".equals(packageName)) {
- return "google";
+ return SearchEngine.GOOGLE;
} else {
return packageName;
}
@@ -110,6 +110,10 @@
public void close() {
}
+ public boolean supportsVoiceSearch() {
+ return getName().equals(SearchEngine.GOOGLE);
+ }
+
@Override
public String toString() {
return "ActivitySearchEngine{" + mSearchable + "}";
diff --git a/src/com/android/browser/search/OpenSearchSearchEngine.java b/src/com/android/browser/search/OpenSearchSearchEngine.java
index e78a93c..3c1cd5b 100644
--- a/src/com/android/browser/search/OpenSearchSearchEngine.java
+++ b/src/com/android/browser/search/OpenSearchSearchEngine.java
@@ -196,6 +196,10 @@
mHttpClient.close();
}
+ public boolean supportsVoiceSearch() {
+ return getName().equals(SearchEngine.GOOGLE);
+ }
+
private boolean isNetworkConnected(Context context) {
NetworkInfo networkInfo = getActiveNetworkInfo(context);
return networkInfo != null && networkInfo.isConnected();
diff --git a/src/com/android/browser/search/SearchEngine.java b/src/com/android/browser/search/SearchEngine.java
index 3d24d2e..b7e1859 100644
--- a/src/com/android/browser/search/SearchEngine.java
+++ b/src/com/android/browser/search/SearchEngine.java
@@ -24,6 +24,9 @@
*/
public interface SearchEngine {
+ // Used if the search engine is Google
+ static final String GOOGLE = "google";
+
/**
* Gets the unique name of this search engine.
*/
@@ -54,4 +57,8 @@
*/
public void close();
+ /**
+ * Checks whether this search engine supports voice search.
+ */
+ public boolean supportsVoiceSearch();
}