OLD | NEW |
| (Empty) |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #include "chrome/renderer/spellchecker/custom_dictionary_engine.h" | |
6 | |
7 #include <stddef.h> | |
8 | |
9 #include "base/strings/utf_string_conversions.h" | |
10 | |
11 CustomDictionaryEngine::CustomDictionaryEngine() { | |
12 } | |
13 | |
14 CustomDictionaryEngine::~CustomDictionaryEngine() { | |
15 } | |
16 | |
17 void CustomDictionaryEngine::Init(const std::set<std::string>& custom_words) { | |
18 dictionary_.clear(); | |
19 | |
20 // SpellingMenuOberver calls UTF16ToUTF8(word) to convert words for storage, | |
21 // synchronization, and use in the custom dictionary engine. Since | |
22 // (UTF8ToUTF16(UTF16ToUTF8(word)) == word) holds, the engine does not need to | |
23 // normalize the strings. | |
24 for (const std::string& word : custom_words) | |
25 dictionary_.insert(base::UTF8ToUTF16(word)); | |
26 } | |
27 | |
28 void CustomDictionaryEngine::OnCustomDictionaryChanged( | |
29 const std::set<std::string>& words_added, | |
30 const std::set<std::string>& words_removed) { | |
31 for (const std::string& word : words_added) | |
32 dictionary_.insert(base::UTF8ToUTF16(word)); | |
33 | |
34 for (const std::string& word : words_removed) | |
35 dictionary_.erase(base::UTF8ToUTF16(word)); | |
36 } | |
37 | |
38 bool CustomDictionaryEngine::SpellCheckWord( | |
39 const base::string16& text, | |
40 int misspelling_start, | |
41 int misspelling_len) { | |
42 // The text to be checked is empty on OSX(async) right now. | |
43 // TODO(groby): Fix as part of async hook-up. (http://crbug.com/178241) | |
44 return | |
45 misspelling_start >= 0 && | |
46 misspelling_len > 0 && | |
47 size_t(misspelling_start + misspelling_len) <= text.length() && | |
48 dictionary_.count(text.substr(misspelling_start, misspelling_len)) > 0; | |
49 } | |
OLD | NEW |