diff options
author | estade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-11-13 01:36:50 +0000 |
---|---|---|
committer | estade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-11-13 01:36:50 +0000 |
commit | 4e1c76f34b910c6e9a832cbac2e2bcce8acc9f52 (patch) | |
tree | c92007614f63d5eee9d1a7c85a5834f9603000fe /chrome/renderer | |
parent | 3c5ed2c5747de75351c18fbf1e969eccc263d1d5 (diff) | |
download | chromium_src-4e1c76f34b910c6e9a832cbac2e2bcce8acc9f52.zip chromium_src-4e1c76f34b910c6e9a832cbac2e2bcce8acc9f52.tar.gz chromium_src-4e1c76f34b910c6e9a832cbac2e2bcce8acc9f52.tar.bz2 |
Use renderer spellchecker for windows.
BUG=25677
Review URL: http://codereview.chromium.org/372075
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@31875 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer')
-rw-r--r-- | chrome/renderer/render_thread.cc | 6 | ||||
-rw-r--r-- | chrome/renderer/render_thread.h | 3 | ||||
-rw-r--r-- | chrome/renderer/render_view.cc | 20 | ||||
-rw-r--r-- | chrome/renderer/spellchecker/spellcheck.cc | 14 | ||||
-rw-r--r-- | chrome/renderer/spellchecker/spellcheck.h | 10 |
5 files changed, 31 insertions, 22 deletions
diff --git a/chrome/renderer/render_thread.cc b/chrome/renderer/render_thread.cc index a165b09..1222d67 100644 --- a/chrome/renderer/render_thread.cc +++ b/chrome/renderer/render_thread.cc @@ -58,6 +58,7 @@ #endif #include "chrome/renderer/user_script_slave.h" #include "ipc/ipc_message.h" +#include "ipc/ipc_platform_file.h" #include "third_party/tcmalloc/tcmalloc/src/google/malloc_extension.h" #include "third_party/WebKit/WebKit/chromium/public/WebCache.h" #include "third_party/WebKit/WebKit/chromium/public/WebColor.h" @@ -660,11 +661,12 @@ void RenderThread::OnPurgePluginListCache(bool reload_pages) { #if defined(SPELLCHECKER_IN_RENDERER) void RenderThread::OnInitSpellChecker( - const base::FileDescriptor& bdict_fd, + IPC::PlatformFileForTransit bdict_file, const std::vector<std::string>& custom_words, const std::string& language, bool auto_spell_correct) { - spellchecker_->Init(bdict_fd, custom_words, language); + spellchecker_->Init(IPC::PlatformFileForTransitToPlatformFile(bdict_file), + custom_words, language); spellchecker_->EnableAutoSpellCorrect(auto_spell_correct); } diff --git a/chrome/renderer/render_thread.h b/chrome/renderer/render_thread.h index d7f15a1..bca3ea6 100644 --- a/chrome/renderer/render_thread.h +++ b/chrome/renderer/render_thread.h @@ -18,6 +18,7 @@ #include "chrome/common/dom_storage_type.h" #include "chrome/renderer/renderer_histogram_snapshots.h" #include "chrome/renderer/visitedlink_slave.h" +#include "ipc/ipc_platform_file.h" class AppCacheDispatcher; class DBMessageFilter; @@ -200,7 +201,7 @@ class RenderThread : public RenderThreadBase, void OnPurgePluginListCache(bool reload_pages); #if defined(SPELLCHECKER_IN_RENDERER) - void OnInitSpellChecker(const base::FileDescriptor& bdict_fd, + void OnInitSpellChecker(IPC::PlatformFileForTransit bdict_file, const std::vector<std::string>& custom_words, const std::string& language, bool auto_spell_correct); diff --git a/chrome/renderer/render_view.cc b/chrome/renderer/render_view.cc index aa8d86d..7541ceb 100644 --- a/chrome/renderer/render_view.cc +++ b/chrome/renderer/render_view.cc @@ -1505,9 +1505,13 @@ void RenderView::spellCheck(const WebString& text, #if defined(SPELLCHECKER_IN_RENDERER) string16 word(text); - RenderThread::current()->spellchecker()->SpellCheckWord( - word.c_str(), word.size(), document_tag_, - &misspelled_offset, &misspelled_length, NULL); + RenderThread* thread = RenderThread::current(); + // Will be NULL during unit tests. + if (thread) { + RenderThread::current()->spellchecker()->SpellCheckWord( + word.c_str(), word.size(), document_tag_, + &misspelled_offset, &misspelled_length, NULL); + } #else Send(new ViewHostMsg_SpellCheck(routing_id_, text, document_tag_, &misspelled_offset, &misspelled_length)); @@ -1520,9 +1524,13 @@ WebString RenderView::autoCorrectWord(const WebKit::WebString& word) { if (command_line.HasSwitch(switches::kExperimentalSpellcheckerFeatures)) { EnsureDocumentTag(); #if defined(SPELLCHECKER_IN_RENDERER) - autocorrect_word = - RenderThread::current()->spellchecker()->GetAutoCorrectionWord( - word, document_tag_); + RenderThread* thread = RenderThread::current(); + // Will be NULL during unit tests. + if (thread) { + autocorrect_word = + RenderThread::current()->spellchecker()->GetAutoCorrectionWord( + word, document_tag_); + } #else Send(new ViewHostMsg_GetAutoCorrectWord( routing_id_, word, document_tag_, &autocorrect_word)); diff --git a/chrome/renderer/spellchecker/spellcheck.cc b/chrome/renderer/spellchecker/spellcheck.cc index a565b08..3b02b54 100644 --- a/chrome/renderer/spellchecker/spellcheck.cc +++ b/chrome/renderer/spellchecker/spellcheck.cc @@ -16,7 +16,8 @@ static const int kMaxSuggestions = 5; using base::TimeTicks; SpellCheck::SpellCheck() - : auto_spell_correct_turned_on_(false), + : file_(base::kInvalidPlatformFileValue), + auto_spell_correct_turned_on_(false), // TODO(estade): initialize this properly. is_using_platform_spelling_engine_(false), initialized_(false) { @@ -26,13 +27,13 @@ SpellCheck::SpellCheck() SpellCheck::~SpellCheck() { } -void SpellCheck::Init(const base::FileDescriptor& fd, +void SpellCheck::Init(base::PlatformFile file, const std::vector<std::string>& custom_words, const std::string language) { initialized_ = true; hunspell_.reset(); bdict_file_.reset(); - fd_ = fd; + file_ = file; character_attributes_.SetDefaultLanguage(language); custom_words_.insert(custom_words_.end(), @@ -57,7 +58,7 @@ bool SpellCheck::SpellCheckWord( return true; // Do nothing if spell checking is disabled. - if (initialized_ && fd_.fd == -1) + if (initialized_ && file_ == base::kInvalidPlatformFileValue) return true; *misspelling_start = 0; @@ -164,7 +165,7 @@ void SpellCheck::InitializeHunspell() { bdict_file_.reset(new file_util::MemoryMappedFile); - if (bdict_file_->Initialize(fd_)) { + if (bdict_file_->Initialize(file_)) { TimeTicks start_time = TimeTicks::Now(); hunspell_.reset( @@ -194,7 +195,8 @@ bool SpellCheck::InitializeIfNeeded() { } // Check if the platform spellchecker is being used. - if (!is_using_platform_spelling_engine_ && fd_.fd != -1) { + if (!is_using_platform_spelling_engine_ && + file_ != base::kInvalidPlatformFileValue) { // If it isn't, init hunspell. InitializeHunspell(); } diff --git a/chrome/renderer/spellchecker/spellcheck.h b/chrome/renderer/spellchecker/spellcheck.h index 3b2e19d..eb3ad82 100644 --- a/chrome/renderer/spellchecker/spellcheck.h +++ b/chrome/renderer/spellchecker/spellcheck.h @@ -10,7 +10,7 @@ #include <vector> #include "app/l10n_util.h" -#include "base/file_descriptor_posix.h" +#include "base/platform_file.h" #include "base/string16.h" #include "base/time.h" #include "chrome/renderer/spellchecker/spellcheck_worditerator.h" @@ -18,10 +18,6 @@ class Hunspell; -namespace base { -class FileDescriptor; -} - namespace file_util { class MemoryMappedFile; } @@ -32,7 +28,7 @@ class SpellCheck { ~SpellCheck(); - void Init(const base::FileDescriptor& bdict_fd, + void Init(base::PlatformFile file, const std::vector<std::string>& custom_words, const std::string language); @@ -101,7 +97,7 @@ class SpellCheck { // The hunspell dictionary in use. scoped_ptr<Hunspell> hunspell_; - base::FileDescriptor fd_; + base::PlatformFile file_; std::vector<std::string> custom_words_; // Represents character attributes used for filtering out characters which |