summaryrefslogtreecommitdiffstats
path: root/chrome/renderer
diff options
context:
space:
mode:
authorestade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-11-13 01:36:50 +0000
committerestade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-11-13 01:36:50 +0000
commit4e1c76f34b910c6e9a832cbac2e2bcce8acc9f52 (patch)
treec92007614f63d5eee9d1a7c85a5834f9603000fe /chrome/renderer
parent3c5ed2c5747de75351c18fbf1e969eccc263d1d5 (diff)
downloadchromium_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.cc6
-rw-r--r--chrome/renderer/render_thread.h3
-rw-r--r--chrome/renderer/render_view.cc20
-rw-r--r--chrome/renderer/spellchecker/spellcheck.cc14
-rw-r--r--chrome/renderer/spellchecker/spellcheck.h10
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