diff options
-rw-r--r-- | src/com/android/browser/BrowserSettings.java | 8 | ||||
-rw-r--r-- | src/com/android/browser/Tab.java | 16 |
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 |