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

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

Issue 12589005: Implement web speech synthesis. (Closed) Base URL: http://git.chromium.org/chromium/src.git@webtts
Patch Set: Created 7 years, 9 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
Index: chrome/browser/speech/tts_message_filter.cc
diff --git a/chrome/browser/spellchecker/spellcheck_message_filter.cc b/chrome/browser/speech/tts_message_filter.cc
similarity index 68%
copy from chrome/browser/spellchecker/spellcheck_message_filter.cc
copy to chrome/browser/speech/tts_message_filter.cc
index dd328a53252f518a8e549ebef23b7548f4911573..7e55151c5cec288ae51f34c88f85d698b6bd44cd 100644
--- a/chrome/browser/spellchecker/spellcheck_message_filter.cc
+++ b/chrome/browser/speech/tts_message_filter.cc
@@ -1,26 +1,18 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Copyright (c) 2013 The Chromium Authors. All rights reserved.
tommi (sloooow) - chröme 2013/03/07 13:04:46 I think that a decision was made to not change the
hans 2013/03/09 14:19:52 something is weird here.. it seems this is a new f
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "chrome/browser/spellchecker/spellcheck_message_filter.h"
+#include "chrome/browser/speech/tts_message_filter.h"
#include "base/bind.h"
-#include "base/prefs/pref_service.h"
#include "chrome/browser/profiles/profile.h"
-#include "chrome/browser/spellchecker/spellcheck_factory.h"
-#include "chrome/browser/spellchecker/spellcheck_host_metrics.h"
-#include "chrome/browser/spellchecker/spellcheck_service.h"
-#include "chrome/browser/spellchecker/spelling_service_client.h"
-#include "chrome/common/pref_names.h"
-#include "chrome/common/spellcheck_messages.h"
+#include "chrome/common/spellcheck_messages.h" /////////////
tommi (sloooow) - chröme 2013/03/07 13:04:46 remove ///////?
#include "content/public/browser/render_process_host.h"
-#include "net/url_request/url_fetcher.h"
using content::BrowserThread;
-SpellCheckMessageFilter::SpellCheckMessageFilter(int render_process_id)
- : render_process_id_(render_process_id),
- client_(new SpellingServiceClient)
+TtsMessageFilter::TtsMessageFilter(int render_process_id)
+ : render_process_id_(render_process_id)
#if !defined(OS_MACOSX)
,
route_id_(0),
@@ -29,7 +21,7 @@ SpellCheckMessageFilter::SpellCheckMessageFilter(int render_process_id)
{
}
-void SpellCheckMessageFilter::OverrideThreadForMessage(
+void TtsMessageFilter::OverrideThreadForMessage(
const IPC::Message& message, BrowserThread::ID* thread) {
if (message.type() == SpellCheckHostMsg_RequestDictionary::ID ||
hans 2013/03/09 14:19:52 what's up with all the SpellCheck stuff here? am I
dmazzoni 2013/03/19 17:30:22 Sorry, my mistake - I switched implementation stra
message.type() == SpellCheckHostMsg_NotifyChecked::ID)
@@ -40,10 +32,10 @@ void SpellCheckMessageFilter::OverrideThreadForMessage(
#endif
}
-bool SpellCheckMessageFilter::OnMessageReceived(const IPC::Message& message,
+bool TtsMessageFilter::OnMessageReceived(const IPC::Message& message,
bool* message_was_ok) {
bool handled = true;
- IPC_BEGIN_MESSAGE_MAP_EX(SpellCheckMessageFilter, message, *message_was_ok)
+ IPC_BEGIN_MESSAGE_MAP_EX(TtsMessageFilter, message, *message_was_ok)
IPC_MESSAGE_HANDLER(SpellCheckHostMsg_RequestDictionary,
hans 2013/03/09 14:19:52 again with the spellcheck.. i'm not sure i underst
OnSpellCheckerRequestDictionary)
IPC_MESSAGE_HANDLER(SpellCheckHostMsg_NotifyChecked,
@@ -57,9 +49,9 @@ bool SpellCheckMessageFilter::OnMessageReceived(const IPC::Message& message,
return handled;
}
-SpellCheckMessageFilter::~SpellCheckMessageFilter() {}
+TtsMessageFilter::~TtsMessageFilter() {}
-void SpellCheckMessageFilter::OnSpellCheckerRequestDictionary() {
+void TtsMessageFilter::OnSpellCheckerRequestDictionary() {
content::RenderProcessHost* host =
content::RenderProcessHost::FromID(render_process_id_);
if (!host)
@@ -81,7 +73,7 @@ void SpellCheckMessageFilter::OnSpellCheckerRequestDictionary() {
// than once if we get requests from different renderers.
}
-void SpellCheckMessageFilter::OnNotifyChecked(const string16& word,
+void TtsMessageFilter::OnNotifyChecked(const string16& word,
bool misspelled) {
content::RenderProcessHost* host =
content::RenderProcessHost::FromID(render_process_id_);
@@ -97,19 +89,28 @@ void SpellCheckMessageFilter::OnNotifyChecked(const string16& word,
}
#if !defined(OS_MACOSX)
-void SpellCheckMessageFilter::OnCallSpellingService(
+void TtsMessageFilter::OnCallSpellingService(
int route_id,
int identifier,
int document_tag,
const string16& text) {
DCHECK(!text.empty());
DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
+ if (!CallSpellingService(route_id, identifier, document_tag, text)) {
+ std::vector<SpellCheckResult> results;
+ Send(new SpellCheckMsg_RespondSpellingService(route_id,
+ identifier,
+ document_tag,
+ false,
+ text,
+ results));
+ return;
+ }
route_id_ = route_id;
identifier_ = identifier;
- CallSpellingService(document_tag, text);
}
-void SpellCheckMessageFilter::OnTextCheckComplete(
+void TtsMessageFilter::OnTextCheckComplete(
int tag,
bool success,
const string16& text,
@@ -120,21 +121,25 @@ void SpellCheckMessageFilter::OnTextCheckComplete(
success,
text,
results));
+ client_.reset();
}
-// CallSpellingService always executes the callback OnTextCheckComplete.
-// (Which, in turn, sends a SpellCheckMsg_RespondSpellingService)
-void SpellCheckMessageFilter::CallSpellingService(int document_tag,
- const string16& text) {
- Profile* profile = NULL;
+bool TtsMessageFilter::CallSpellingService(
+ int route_id,
+ int identifier,
+ int document_tag,
+ const string16& text) {
content::RenderProcessHost* host =
content::RenderProcessHost::FromID(render_process_id_);
- if (host)
- profile = Profile::FromBrowserContext(host->GetBrowserContext());
-
- client_->RequestTextCheck(
+ if (!host)
+ return false;
+ Profile* profile = Profile::FromBrowserContext(host->GetBrowserContext());
tommi (sloooow) - chröme 2013/03/07 13:04:46 I seem to recall FromBrowserContext return NULL in
+ if (!profile->GetPrefs()->GetBoolean(prefs::kSpellCheckUseSpellingService))
+ return false;
+ client_.reset(new SpellingServiceClient);
+ return client_->RequestTextCheck(
profile, SpellingServiceClient::SPELLCHECK, text,
- base::Bind(&SpellCheckMessageFilter::OnTextCheckComplete,
+ base::Bind(&TtsMessageFilter::OnTextCheckComplete,
base::Unretained(this), document_tag));
}
#endif

Powered by Google App Engine
This is Rietveld 408576698