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

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

Issue 8386074: Add a tray notification UI for speech input recording in the extension API. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fixing one missing include for moving the API. Created 9 years, 1 month 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
Index: chrome/browser/speech/extension_speech_input_manager.cc
diff --git a/chrome/browser/extensions/speech_input/extension_speech_input_manager.cc b/chrome/browser/speech/extension_speech_input_manager.cc
similarity index 92%
rename from chrome/browser/extensions/speech_input/extension_speech_input_manager.cc
rename to chrome/browser/speech/extension_speech_input_manager.cc
index b8c6bf520686d37818b07b7c2e14781955cb29c5..6460657733ae838cc61d9febcefc285846d2c310 100644
--- a/chrome/browser/extensions/speech_input/extension_speech_input_manager.cc
+++ b/chrome/browser/speech/extension_speech_input_manager.cc
@@ -2,20 +2,24 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "chrome/browser/extensions/speech_input/extension_speech_input_manager.h"
+#include "chrome/browser/speech/extension_speech_input_manager.h"
#include "base/bind.h"
#include "base/json/json_writer.h"
#include "base/utf_string_conversions.h"
#include "base/values.h"
#include "chrome/browser/extensions/extension_event_router.h"
-#include "chrome/browser/extensions/speech_input/extension_speech_input_api_constants.h"
+#include "chrome/browser/extensions/extension_service.h"
+#include "chrome/browser/prefs/pref_service.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/profiles/profile_dependency_manager.h"
#include "chrome/browser/profiles/profile_keyed_service.h"
#include "chrome/browser/profiles/profile_keyed_service_factory.h"
+#include "chrome/browser/speech/extension_speech_input_api_constants.h"
+#include "chrome/browser/speech/extension_speech_input_notification_ui.h"
#include "chrome/common/chrome_notification_types.h"
#include "chrome/common/extensions/extension.h"
+#include "chrome/common/pref_names.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/notification_service.h"
@@ -118,7 +122,8 @@ ExtensionSpeechInterface::~ExtensionSpeechInterface() {
ExtensionSpeechInputManager::ExtensionSpeechInputManager(Profile* profile)
: profile_(profile),
state_(kIdle),
- speech_interface_(NULL) {
+ speech_interface_(NULL),
+ notification_(profile) {
registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_UNLOADED,
content::Source<Profile>(profile_));
}
@@ -157,6 +162,7 @@ void ExtensionSpeechInputManager::ShutdownOnUIThread() {
base::AutoLock auto_lock(state_lock_);
DCHECK(state_ != kShutdown);
if (state_ != kIdle) {
+ notification_.Hide();
BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
base::Bind(&ExtensionSpeechInputManager::ForceStopOnIOThread, this));
}
@@ -273,6 +279,20 @@ void ExtensionSpeechInputManager::DidStartReceivingAudioOnUIThread() {
VLOG(1) << "State changed to recording";
state_ = kRecording;
+ const Extension* extension = profile_->GetExtensionService()->
+ GetExtensionById(extension_id_in_use_, true);
+ DCHECK(extension);
+
+ bool show_notification = !profile_->GetPrefs()->GetBoolean(
+ prefs::kSpeechInputTrayNotificationShown);
+
+ notification_.Show(extension, show_notification);
+
+ if (show_notification) {
+ profile_->GetPrefs()->SetBoolean(
+ prefs::kSpeechInputTrayNotificationShown, true);
+ }
+
VLOG(1) << "Sending start notification";
content::NotificationService::current()->Notify(
chrome::NOTIFICATION_EXTENSION_SPEECH_INPUT_RECORDING_STARTED,
@@ -402,6 +422,9 @@ void ExtensionSpeechInputManager::DispatchError(
if (state_ == kShutdown)
return;
+ if (state_ == kRecording)
+ notification_.Hide();
+
extension_id = extension_id_in_use_;
ResetToIdleState();
@@ -606,9 +629,27 @@ void ExtensionSpeechInputManager::StopSucceededOnUIThread() {
std::string extension_id = extension_id_in_use_;
ResetToIdleState();
+ notification_.Hide();
+
content::NotificationService::current()->Notify(
chrome::NOTIFICATION_EXTENSION_SPEECH_INPUT_RECORDING_STOPPED,
// Guarded by the state_ == kShutdown check.
content::Source<Profile>(profile_),
content::Details<std::string>(&extension_id));
}
+
+void ExtensionSpeechInputManager::SetInputVolume(int caller_id,
+ float volume,
+ float noise_volume) {
+ DCHECK_EQ(caller_id, kSpeechCallerId);
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
+ BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
+ base::Bind(&ExtensionSpeechInputManager::SetInputVolumeOnUIThread,
+ this, volume));
+}
+
+void ExtensionSpeechInputManager::SetInputVolumeOnUIThread(
+ float volume) {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+ notification_.SetVUMeterVolume(volume);
+}

Powered by Google App Engine
This is Rietveld 408576698