summaryrefslogtreecommitdiffstats
path: root/chrome/renderer
diff options
context:
space:
mode:
authorrouslan@chromium.org <rouslan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-05-29 00:47:54 +0000
committerrouslan@chromium.org <rouslan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-05-29 00:47:54 +0000
commit6da98fc10000c9eb47b9552ea2b3a6ed9f07eff2 (patch)
treeb80be8edaeae352bcdfe0b15e9cfc70b17531ef6 /chrome/renderer
parent68d56418aaeaf2abf5f69935b7f95f7c6e519048 (diff)
downloadchromium_src-6da98fc10000c9eb47b9552ea2b3a6ed9f07eff2.zip
chromium_src-6da98fc10000c9eb47b9552ea2b3a6ed9f07eff2.tar.gz
chromium_src-6da98fc10000c9eb47b9552ea2b3a6ed9f07eff2.tar.bz2
Add HasWord(string) method to SpellcheckCustomDictionary
This CL adds a method HasWord(string) to SpellcheckCustomDictionary and changes the internal data structure in SpellcheckCustomDictionary from a vector to a set for more efficient querying. Spelling service client will use the new method to send IN_DICTIONARY feedback to spelling service for words that are in user's custom spellcheck dictionary. Spelling service client will use this method in upcoming CLs. This CL also modifies IPC message "SpellCheckMsg_Init" to pass a set instead of a vector of custom dictionary words. The browser sends this message to the renderer to initialize spellcheck. BUG=170514 Review URL: https://chromiumcodereview.appspot.com/15940004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@202722 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer')
-rw-r--r--chrome/renderer/spellchecker/custom_dictionary_engine.cc5
-rw-r--r--chrome/renderer/spellchecker/custom_dictionary_engine.h2
-rw-r--r--chrome/renderer/spellchecker/custom_dictionary_engine_unittest.cc14
-rw-r--r--chrome/renderer/spellchecker/spellcheck.cc4
-rw-r--r--chrome/renderer/spellchecker/spellcheck.h4
-rw-r--r--chrome/renderer/spellchecker/spellcheck_unittest.cc3
6 files changed, 19 insertions, 13 deletions
diff --git a/chrome/renderer/spellchecker/custom_dictionary_engine.cc b/chrome/renderer/spellchecker/custom_dictionary_engine.cc
index 06c4abd..6612729 100644
--- a/chrome/renderer/spellchecker/custom_dictionary_engine.cc
+++ b/chrome/renderer/spellchecker/custom_dictionary_engine.cc
@@ -13,13 +13,12 @@ CustomDictionaryEngine::CustomDictionaryEngine() {
CustomDictionaryEngine::~CustomDictionaryEngine() {
}
-void CustomDictionaryEngine::Init(
- const std::vector<std::string>& custom_words) {
+void CustomDictionaryEngine::Init(const std::set<std::string>& custom_words) {
// SpellingMenuOberver calls UTF16ToUTF8(word) to convert words for storage,
// synchronization, and use in the custom dictionary engine. Since
// (UTF8ToUTF16(UTF16ToUTF8(word)) == word) holds, the engine does not need to
// normalize the strings.
- for (std::vector<std::string>::const_iterator it = custom_words.begin();
+ for (std::set<std::string>::const_iterator it = custom_words.begin();
it != custom_words.end();
++it) {
dictionary_.insert(UTF8ToUTF16(*it));
diff --git a/chrome/renderer/spellchecker/custom_dictionary_engine.h b/chrome/renderer/spellchecker/custom_dictionary_engine.h
index d2dc8ca..db2650f 100644
--- a/chrome/renderer/spellchecker/custom_dictionary_engine.h
+++ b/chrome/renderer/spellchecker/custom_dictionary_engine.h
@@ -20,7 +20,7 @@ class CustomDictionaryEngine {
~CustomDictionaryEngine();
// Initialize the custom dictionary engine.
- void Init(const std::vector<std::string>& words);
+ void Init(const std::set<std::string>& words);
// Spellcheck |text|. Assumes that another spelling engine has set
// |misspelling_start| and |misspelling_len| to indicate a misspelling.
diff --git a/chrome/renderer/spellchecker/custom_dictionary_engine_unittest.cc b/chrome/renderer/spellchecker/custom_dictionary_engine_unittest.cc
index 440d110..3a6ea8a 100644
--- a/chrome/renderer/spellchecker/custom_dictionary_engine_unittest.cc
+++ b/chrome/renderer/spellchecker/custom_dictionary_engine_unittest.cc
@@ -1,15 +1,23 @@
// Copyright (c) 2013 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/renderer/spellchecker/custom_dictionary_engine.h"
+#include "base/strings/utf_string_conversions.h"
+#include "chrome/renderer/spellchecker/custom_dictionary_engine.h"
#include "testing/gtest/include/gtest/gtest.h"
TEST(CustomDictionaryTest, HandlesEmptyWordWithInvalidSubstring) {
CustomDictionaryEngine engine;
- std::vector<std::string> custom_words;
-
+ std::set<std::string> custom_words;
engine.Init(custom_words);
EXPECT_FALSE(engine.SpellCheckWord(string16().c_str(), 15, 23));
}
+TEST(CustomDictionaryTest, Basic) {
+ CustomDictionaryEngine engine;
+ EXPECT_FALSE(engine.SpellCheckWord(ASCIIToUTF16("helllo").c_str(), 0, 6));
+ std::set<std::string> custom_words;
+ custom_words.insert("helllo");
+ engine.Init(custom_words);
+ EXPECT_TRUE(engine.SpellCheckWord(ASCIIToUTF16("helllo").c_str(), 0, 6));
+}
diff --git a/chrome/renderer/spellchecker/spellcheck.cc b/chrome/renderer/spellchecker/spellcheck.cc
index fe3c678..019d0e0 100644
--- a/chrome/renderer/spellchecker/spellcheck.cc
+++ b/chrome/renderer/spellchecker/spellcheck.cc
@@ -130,7 +130,7 @@ bool SpellCheck::OnControlMessageReceived(const IPC::Message& message) {
}
void SpellCheck::OnInit(IPC::PlatformFileForTransit bdict_file,
- const std::vector<std::string>& custom_words,
+ const std::set<std::string>& custom_words,
const std::string& language,
bool auto_spell_correct) {
Init(IPC::PlatformFileForTransitToPlatformFile(bdict_file),
@@ -167,7 +167,7 @@ void SpellCheck::OnRequestDocumentMarkers() {
// TODO(groby): Make sure we always have a spelling engine, even before Init()
// is called.
void SpellCheck::Init(base::PlatformFile file,
- const std::vector<std::string>& custom_words,
+ const std::set<std::string>& custom_words,
const std::string& language) {
spellcheck_.Init(file, language);
custom_dictionary_.Init(custom_words);
diff --git a/chrome/renderer/spellchecker/spellcheck.h b/chrome/renderer/spellchecker/spellcheck.h
index 58032be..c44c698 100644
--- a/chrome/renderer/spellchecker/spellcheck.h
+++ b/chrome/renderer/spellchecker/spellcheck.h
@@ -45,7 +45,7 @@ class SpellCheck : public content::RenderProcessObserver,
// TODO: Try to move that all to SpellcheckLanguage.
void Init(base::PlatformFile file,
- const std::vector<std::string>& custom_words,
+ const std::set<std::string>& custom_words,
const std::string& language);
// If there is no dictionary file, then this requests one from the browser
@@ -119,7 +119,7 @@ class SpellCheck : public content::RenderProcessObserver,
// Message handlers.
void OnInit(IPC::PlatformFileForTransit bdict_file,
- const std::vector<std::string>& custom_words,
+ const std::set<std::string>& custom_words,
const std::string& language,
bool auto_spell_correct);
void OnCustomDictionaryChanged(
diff --git a/chrome/renderer/spellchecker/spellcheck_unittest.cc b/chrome/renderer/spellchecker/spellcheck_unittest.cc
index 9d9be84..cc5b37e 100644
--- a/chrome/renderer/spellchecker/spellcheck_unittest.cc
+++ b/chrome/renderer/spellchecker/spellcheck_unittest.cc
@@ -67,8 +67,7 @@ class SpellCheckTest : public testing::Test {
spell_check_->spellcheck_.platform_spelling_engine_.reset(
new HunspellEngine);
#endif
- spell_check_->Init(
- file, std::vector<std::string>(), language);
+ spell_check_->Init(file, std::set<std::string>(), language);
}
void EnableAutoCorrect(bool enable_autocorrect) {