summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/com/android/browser/BrowserSettings.java8
-rw-r--r--src/com/android/browser/Tab.java16
2 files changed, 20 insertions, 4 deletions
diff --git a/src/com/android/browser/BrowserSettings.java b/src/com/android/browser/BrowserSettings.java
index 6263eb3..92b4cac 100644
--- a/src/com/android/browser/BrowserSettings.java
+++ b/src/com/android/browser/BrowserSettings.java
@@ -305,6 +305,14 @@ class BrowserSettings extends Observable {
String searchEngineName = p.getString(PREF_SEARCH_ENGINE, null);
if (searchEngine == null || !searchEngine.getName().equals(searchEngineName)) {
if (searchEngine != null) {
+ if (searchEngine.supportsVoiceSearch()) {
+ // One or more tabs could have been in voice search mode.
+ // Clear it, since the new SearchEngine may not support
+ // it, or may handle it differently.
+ for (int i = 0; i < mTabControl.getTabCount(); i++) {
+ mTabControl.getTab(i).revertVoiceSearchMode();
+ }
+ }
searchEngine.close();
}
searchEngine = SearchEngines.get(ctx, searchEngineName);
diff --git a/src/com/android/browser/Tab.java b/src/com/android/browser/Tab.java
index 2dac050..1700961 100644
--- a/src/com/android/browser/Tab.java
+++ b/src/com/android/browser/Tab.java
@@ -165,6 +165,17 @@ class Tab {
*/
private VoiceSearchData mVoiceSearchData;
/**
+ * Remove voice search mode from this tab.
+ */
+ public void revertVoiceSearchMode() {
+ if (mVoiceSearchData != null) {
+ mVoiceSearchData = null;
+ if (mInForeground) {
+ mActivity.revertVoiceTitleBar();
+ }
+ }
+ }
+ /**
* Return whether the tab is in voice search mode.
*/
public boolean isInVoiceSearchMode() {
@@ -457,10 +468,7 @@ class Tab {
i.putExtra(LoggingEvents.EXTRA_FLUSH, true);
mActivity.sendBroadcast(i);
}
- mVoiceSearchData = null;
- if (mInForeground) {
- mActivity.revertVoiceTitleBar();
- }
+ revertVoiceSearchMode();
}
// We've started to load a new page. If there was a pending message