Index: chrome/browser/spellchecker/spellcheck_message_filter.cc |
diff --git a/chrome/browser/spellchecker/spellcheck_message_filter.cc b/chrome/browser/spellchecker/spellcheck_message_filter.cc |
deleted file mode 100644 |
index 7f69a5533b284177e122c89de1ce1af353b6f0eb..0000000000000000000000000000000000000000 |
--- a/chrome/browser/spellchecker/spellcheck_message_filter.cc |
+++ /dev/null |
@@ -1,156 +0,0 @@ |
-// Copyright (c) 2012 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/spellchecker/spellcheck_message_filter.h" |
- |
-#include <algorithm> |
-#include <functional> |
- |
-#include "base/bind.h" |
-#include "base/strings/utf_string_conversions.h" |
-#include "chrome/browser/spellchecker/spellcheck_factory.h" |
-#include "chrome/browser/spellchecker/spellcheck_service.h" |
-#include "components/prefs/pref_service.h" |
-#include "components/spellcheck/browser/spellcheck_host_metrics.h" |
-#include "components/spellcheck/browser/spelling_service_client.h" |
-#include "components/spellcheck/common/spellcheck_messages.h" |
-#include "components/spellcheck/spellcheck_build_features.h" |
-#include "content/public/browser/render_process_host.h" |
-#include "net/url_request/url_fetcher.h" |
- |
-using content::BrowserThread; |
- |
-SpellCheckMessageFilter::SpellCheckMessageFilter(int render_process_id) |
- : BrowserMessageFilter(SpellCheckMsgStart), |
- render_process_id_(render_process_id), |
- client_(new SpellingServiceClient) { |
-} |
- |
-void SpellCheckMessageFilter::OverrideThreadForMessage( |
- const IPC::Message& message, BrowserThread::ID* thread) { |
- // IPC messages arrive on IO thread, but spellcheck data lives on UI thread. |
- // The message filter overrides the thread for these messages because they |
- // access spellcheck data. |
- if (message.type() == SpellCheckHostMsg_RequestDictionary::ID || |
- message.type() == SpellCheckHostMsg_NotifyChecked::ID) |
- *thread = BrowserThread::UI; |
-#if !BUILDFLAG(USE_BROWSER_SPELLCHECKER) |
- if (message.type() == SpellCheckHostMsg_CallSpellingService::ID) |
- *thread = BrowserThread::UI; |
-#endif |
-} |
- |
-bool SpellCheckMessageFilter::OnMessageReceived(const IPC::Message& message) { |
- bool handled = true; |
- IPC_BEGIN_MESSAGE_MAP(SpellCheckMessageFilter, message) |
- IPC_MESSAGE_HANDLER(SpellCheckHostMsg_RequestDictionary, |
- OnSpellCheckerRequestDictionary) |
- IPC_MESSAGE_HANDLER(SpellCheckHostMsg_NotifyChecked, |
- OnNotifyChecked) |
-#if !BUILDFLAG(USE_BROWSER_SPELLCHECKER) |
- IPC_MESSAGE_HANDLER(SpellCheckHostMsg_CallSpellingService, |
- OnCallSpellingService) |
-#endif |
- IPC_MESSAGE_UNHANDLED(handled = false) |
- IPC_END_MESSAGE_MAP() |
- return handled; |
-} |
- |
-SpellCheckMessageFilter::~SpellCheckMessageFilter() {} |
- |
-void SpellCheckMessageFilter::OnSpellCheckerRequestDictionary() { |
- content::RenderProcessHost* host = |
- content::RenderProcessHost::FromID(render_process_id_); |
- if (!host) |
- return; // Teardown. |
- // The renderer has requested that we initialize its spellchecker. This should |
- // generally only be called once per session, as after the first call, all |
- // future renderers will be passed the initialization information on startup |
- // (or when the dictionary changes in some way). |
- SpellcheckService* spellcheck_service = |
- SpellcheckServiceFactory::GetForContext(host->GetBrowserContext()); |
- |
- DCHECK(spellcheck_service); |
- // The spellchecker initialization already started and finished; just send |
- // it to the renderer. |
- spellcheck_service->InitForRenderer(host); |
- |
- // TODO(rlp): Ensure that we do not initialize the hunspell dictionary more |
- // than once if we get requests from different renderers. |
-} |
- |
-void SpellCheckMessageFilter::OnNotifyChecked(const base::string16& word, |
- bool misspelled) { |
- SpellcheckService* spellcheck = GetSpellcheckService(); |
- // Spellcheck service may not be available for a renderer process that is |
- // shutting down. |
- if (!spellcheck) |
- return; |
- if (spellcheck->GetMetrics()) |
- spellcheck->GetMetrics()->RecordCheckedWordStats(word, misspelled); |
-} |
- |
-#if !BUILDFLAG(USE_BROWSER_SPELLCHECKER) |
-void SpellCheckMessageFilter::OnCallSpellingService( |
- int route_id, |
- int identifier, |
- const base::string16& text) { |
- DCHECK(!text.empty()); |
- DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
- CallSpellingService(text, route_id, identifier); |
-} |
- |
-void SpellCheckMessageFilter::OnTextCheckComplete( |
- int route_id, |
- int identifier, |
- bool success, |
- const base::string16& text, |
- const std::vector<SpellCheckResult>& results) { |
- SpellcheckService* spellcheck = GetSpellcheckService(); |
- // Spellcheck service may not be available for a renderer process that is |
- // shutting down. |
- if (!spellcheck) |
- return; |
- std::vector<SpellCheckResult> results_copy = results; |
- |
- // Erase custom dictionary words from the spellcheck results and record |
- // in-dictionary feedback. |
- std::vector<SpellCheckResult>::iterator write_iter; |
- std::vector<SpellCheckResult>::iterator iter; |
- std::string text_copy = base::UTF16ToUTF8(text); |
- for (iter = write_iter = results_copy.begin(); |
- iter != results_copy.end(); |
- ++iter) { |
- if (!spellcheck->GetCustomDictionary()->HasWord( |
- text_copy.substr(iter->location, iter->length))) { |
- if (write_iter != iter) |
- *write_iter = *iter; |
- ++write_iter; |
- } |
- } |
- results_copy.erase(write_iter, results_copy.end()); |
- |
- Send(new SpellCheckMsg_RespondSpellingService( |
- route_id, identifier, success, text, results_copy)); |
-} |
- |
-// CallSpellingService always executes the callback OnTextCheckComplete. |
-// (Which, in turn, sends a SpellCheckMsg_RespondSpellingService) |
-void SpellCheckMessageFilter::CallSpellingService(const base::string16& text, |
- int route_id, |
- int identifier) { |
- content::RenderProcessHost* host = |
- content::RenderProcessHost::FromID(render_process_id_); |
- |
- client_->RequestTextCheck( |
- host ? host->GetBrowserContext() : NULL, |
- SpellingServiceClient::SPELLCHECK, text, |
- base::Bind(&SpellCheckMessageFilter::OnTextCheckComplete, |
- base::Unretained(this), route_id, identifier)); |
-} |
-#endif |
- |
-SpellcheckService* SpellCheckMessageFilter::GetSpellcheckService() const { |
- return SpellcheckServiceFactory::GetForRenderProcessId(render_process_id_); |
-} |