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

Unified Diff: chrome/browser/extensions/extension_tts_api_chromeos.cc

Issue 3640001: Refactored TTS extension code so that the platform-specific TTS... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years, 2 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/extensions/extension_tts_api.cc ('k') | chrome/browser/extensions/extension_tts_api_gtk.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/extensions/extension_tts_api_chromeos.cc
===================================================================
--- chrome/browser/extensions/extension_tts_api_chromeos.cc (revision 0)
+++ chrome/browser/extensions/extension_tts_api_chromeos.cc (revision 0)
@@ -0,0 +1,122 @@
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/extensions/extension_tts_api.h"
+
+#include "base/singleton.h"
+#include "chrome/browser/chromeos/cros/cros_library.h"
+#include "chrome/browser/chromeos/cros/speech_synthesis_library.h"
+
+namespace util = extension_tts_api_util;
+
+namespace {
+const char kCrosLibraryNotLoadedError[] = "Cros shared library not loaded.";
+};
+
+class ExtensionTtsPlatformImplChromeOs : public ExtensionTtsPlatformImpl {
+ public:
+ virtual bool Speak(
+ const std::string& utterance,
+ const std::string& language,
+ const std::string& gender,
+ double rate,
+ double pitch,
+ double volume);
+
+ virtual bool StopSpeaking();
+
+ virtual bool IsSpeaking();
+
+ // Get the single instance of this class.
+ static ExtensionTtsPlatformImplChromeOs* GetInstance();
+
+ private:
+ ExtensionTtsPlatformImplChromeOs() {}
+ virtual ~ExtensionTtsPlatformImplChromeOs() {}
+
+ friend struct DefaultSingletonTraits<ExtensionTtsPlatformImplChromeOs>;
+
+ DISALLOW_COPY_AND_ASSIGN(ExtensionTtsPlatformImplChromeOs);
+};
+
+// static
+ExtensionTtsPlatformImpl* ExtensionTtsPlatformImpl::GetInstance() {
+ return ExtensionTtsPlatformImplChromeOs::GetInstance();
+}
+
+bool ExtensionTtsPlatformImplChromeOs::Speak(
+ const std::string& utterance,
+ const std::string& language,
+ const std::string& gender,
+ double rate,
+ double pitch,
+ double volume) {
+ chromeos::CrosLibrary* cros_library = chromeos::CrosLibrary::Get();
+ if (!cros_library->EnsureLoaded()) {
+ set_error(kCrosLibraryNotLoadedError);
+ return false;
+ }
+
+ std::string options;
+
+ if (!language.empty()) {
+ util::AppendSpeakOption(
+ std::string(util::kNameKey), language, &options);
+ }
+
+ if (!gender.empty()) {
+ util::AppendSpeakOption(
+ std::string(util::kGenderKey), gender, &options);
+ }
+
+ if (rate >= 0.0) {
+ util::AppendSpeakOption(
+ std::string(util::kRateKey), DoubleToString(rate * 5), &options);
+ }
+
+ if (pitch >= 0.0) {
+ // The TTS service allows a range of 0 to 2 for speech pitch.
+ util::AppendSpeakOption(
+ std::string(util::kPitchKey), DoubleToString(pitch * 2), &options);
+ }
+
+ if (volume >= 0.0) {
+ // The TTS service allows a range of 0 to 5 for speech volume.
+ util::AppendSpeakOption(
+ std::string(util::kVolumeKey), DoubleToString(volume * 5), &options);
+ }
+
+ if (!options.empty()) {
+ cros_library->GetSpeechSynthesisLibrary()->SetSpeakProperties(
+ options.c_str());
+ }
+
+ return cros_library->GetSpeechSynthesisLibrary()->Speak(utterance.c_str());
+}
+
+bool ExtensionTtsPlatformImplChromeOs::StopSpeaking() {
+ if (chromeos::CrosLibrary::Get()->EnsureLoaded()) {
+ return chromeos::CrosLibrary::Get()->GetSpeechSynthesisLibrary()->
+ StopSpeaking();
+ }
+
+ set_error(kCrosLibraryNotLoadedError);
+ return false;
+}
+
+bool ExtensionTtsPlatformImplChromeOs::IsSpeaking() {
+ if (chromeos::CrosLibrary::Get()->EnsureLoaded()) {
+ return chromeos::CrosLibrary::Get()->GetSpeechSynthesisLibrary()->
+ IsSpeaking();
+ }
+
+ set_error(kCrosLibraryNotLoadedError);
+ return false;
+}
+
+// static
+ExtensionTtsPlatformImplChromeOs*
+ExtensionTtsPlatformImplChromeOs::GetInstance() {
+ return Singleton<ExtensionTtsPlatformImplChromeOs>::get();
+}
Property changes on: chrome/browser/extensions/extension_tts_api_chromeos.cc
___________________________________________________________________
Added: svn:eol-style
+ LF
« no previous file with comments | « chrome/browser/extensions/extension_tts_api.cc ('k') | chrome/browser/extensions/extension_tts_api_gtk.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698