Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2310)

Unified Diff: chrome/browser/speech/chrome_speech_recognition_manager_delegate.cc

Issue 24292004: Allow webkitSpeechRecognition work from an app's background page. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Sync + add ctor/dtor for test class. Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/apps/speech_recognition_browsertest.cc ('k') | chrome/chrome_tests.gypi » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 7fbfaff40df028ec4058da88f620404cea6bfb3f..101297547eafe91bce6b6d6236e9b9ebdccd0c77 100644
--- a/chrome/browser/speech/chrome_speech_recognition_manager_delegate.cc
+++ b/chrome/browser/speech/chrome_speech_recognition_manager_delegate.cc
@@ -384,21 +384,21 @@ void ChromeSpeechRecognitionManagerDelegate::CheckRenderViewType(
content::RenderViewHost::FromID(render_process_id, render_view_id);
bool allowed = false;
- bool ask_permission = false;
+ bool check_permission = false;
if (!render_view_host) {
if (!js_api) {
// If there is no render view, we cannot show the speech bubble, so this
// is not allowed.
allowed = false;
- ask_permission = false;
+ check_permission = false;
} else {
// This happens for extensions. Manifest should be checked for permission.
allowed = true;
- ask_permission = false;
+ check_permission = false;
}
BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
- base::Bind(callback, ask_permission, allowed));
+ base::Bind(callback, check_permission, allowed));
return;
}
@@ -412,17 +412,25 @@ 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) {
- // If it is a tab, we can show the speech input bubble or ask for
+ 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 check for
+ // permission. For apps, this means manifest would be checked for
// permission.
allowed = true;
if (js_api)
- ask_permission = true;
+ check_permission = true;
}
BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
- base::Bind(callback, ask_permission, allowed));
+ base::Bind(callback, check_permission, allowed));
}
} // namespace speech
« no previous file with comments | « chrome/browser/apps/speech_recognition_browsertest.cc ('k') | chrome/chrome_tests.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698