Index: chrome/browser/speech/chrome_speech_recognition_manager_delegate.cc |
diff --git a/chrome/browser/speech/chrome_speech_recognition_manager_delegate.cc b/chrome/browser/speech/chrome_speech_recognition_manager_delegate.cc |
index 0d4bb3997f65a46dfda7af033c35c6954e59b574..95e3e37fdd916396d7a9f11a38c5ac966c8dee25 100644 |
--- a/chrome/browser/speech/chrome_speech_recognition_manager_delegate.cc |
+++ b/chrome/browser/speech/chrome_speech_recognition_manager_delegate.cc |
@@ -409,7 +409,14 @@ void ChromeSpeechRecognitionManagerDelegate::CheckRenderViewType( |
// click. |
if (view_type == extensions::VIEW_TYPE_TAB_CONTENTS || |
view_type == extensions::VIEW_TYPE_APP_SHELL || |
- view_type == extensions::VIEW_TYPE_VIRTUAL_KEYBOARD) { |
+ view_type == extensions::VIEW_TYPE_VIRTUAL_KEYBOARD || |
+ // Only allow requests through JavaScript API (|js_api| = true). |
+ // Requests originating from html element (|js_api| = false) would want |
+ // to show bubble which isn't quite intuitive from a background page. Also |
+ // see todo above about issues with rendering such bubbles from extension |
+ // popups. |
+ (view_type == extensions::VIEW_TYPE_EXTENSION_BACKGROUND_PAGE && |
+ js_api)) { |
// If it is a tab, we can show the speech input bubble or ask for |
// permission. |