Index: chrome/renderer/spellchecker/spellcheck_language.cc |
diff --git a/chrome/renderer/spellchecker/spellcheck_language.cc b/chrome/renderer/spellchecker/spellcheck_language.cc |
deleted file mode 100644 |
index a1dd4ce06dac92dc20c7f3f515e37a8f0a552692..0000000000000000000000000000000000000000 |
--- a/chrome/renderer/spellchecker/spellcheck_language.cc |
+++ /dev/null |
@@ -1,151 +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/renderer/spellchecker/spellcheck_language.h" |
- |
-#include <utility> |
- |
-#include "base/logging.h" |
-#include "chrome/renderer/spellchecker/spellcheck_worditerator.h" |
-#include "chrome/renderer/spellchecker/spelling_engine.h" |
- |
- |
-SpellcheckLanguage::SpellcheckLanguage() |
- : platform_spelling_engine_(CreateNativeSpellingEngine()) { |
-} |
- |
-SpellcheckLanguage::~SpellcheckLanguage() { |
-} |
- |
-void SpellcheckLanguage::Init(base::File file, const std::string& language) { |
- DCHECK(platform_spelling_engine_.get()); |
- platform_spelling_engine_->Init(std::move(file)); |
- |
- character_attributes_.SetDefaultLanguage(language); |
- text_iterator_.Reset(); |
- contraction_iterator_.Reset(); |
-} |
- |
-bool SpellcheckLanguage::InitializeIfNeeded() { |
- DCHECK(platform_spelling_engine_.get()); |
- return platform_spelling_engine_->InitializeIfNeeded(); |
-} |
- |
-SpellcheckLanguage::SpellcheckWordResult SpellcheckLanguage::SpellCheckWord( |
- const base::char16* text_begin, |
- int position_in_text, |
- int text_length, |
- int tag, |
- int* skip_or_misspelling_start, |
- int* skip_or_misspelling_len, |
- std::vector<base::string16>* optional_suggestions) { |
- int remaining_text_len = text_length - position_in_text; |
- DCHECK(remaining_text_len >= 0); |
- DCHECK(skip_or_misspelling_start && skip_or_misspelling_len) |
- << "Out vars must be given."; |
- |
- // Do nothing if we need to delay initialization. (Rather than blocking, |
- // report the word as correctly spelled.) |
- if (InitializeIfNeeded()) |
- return IS_CORRECT; |
- |
- // Do nothing if spell checking is disabled. |
- if (!platform_spelling_engine_.get() || |
- !platform_spelling_engine_->IsEnabled()) |
- return IS_CORRECT; |
- |
- *skip_or_misspelling_start = 0; |
- *skip_or_misspelling_len = 0; |
- if (remaining_text_len == 0) |
- return IS_CORRECT; // No input means always spelled correctly. |
- |
- base::string16 word; |
- int word_start; |
- int word_length; |
- if (!text_iterator_.IsInitialized() && |
- !text_iterator_.Initialize(&character_attributes_, true)) { |
- // We failed to initialize text_iterator_, return as spelled correctly. |
- VLOG(1) << "Failed to initialize SpellcheckWordIterator"; |
- return IS_CORRECT; |
- } |
- |
- text_iterator_.SetText(text_begin + position_in_text, remaining_text_len); |
- DCHECK(platform_spelling_engine_.get()); |
- for (SpellcheckWordIterator::WordIteratorStatus status = |
- text_iterator_.GetNextWord(&word, &word_start, &word_length); |
- status != SpellcheckWordIterator::IS_END_OF_TEXT; |
- status = text_iterator_.GetNextWord(&word, &word_start, &word_length)) { |
- // Found a character that is not able to be spellchecked so determine how |
- // long the sequence of uncheckable characters is and then return. |
- if (status == SpellcheckWordIterator::IS_SKIPPABLE) { |
- *skip_or_misspelling_start = position_in_text + word_start; |
- while (status == SpellcheckWordIterator::IS_SKIPPABLE) { |
- *skip_or_misspelling_len += word_length; |
- status = text_iterator_.GetNextWord(&word, &word_start, &word_length); |
- } |
- return IS_SKIPPABLE; |
- } |
- |
- // Found a word (or a contraction) that the spellchecker can check the |
- // spelling of. |
- if (platform_spelling_engine_->CheckSpelling(word, tag)) |
- continue; |
- |
- // If the given word is a concatenated word of two or more valid words |
- // (e.g. "hello:hello"), we should treat it as a valid word. |
- if (IsValidContraction(word, tag)) |
- continue; |
- |
- *skip_or_misspelling_start = position_in_text + word_start; |
- *skip_or_misspelling_len = word_length; |
- |
- // Get the list of suggested words. |
- if (optional_suggestions) { |
- platform_spelling_engine_->FillSuggestionList(word, |
- optional_suggestions); |
- } |
- return IS_MISSPELLED; |
- } |
- |
- return IS_CORRECT; |
-} |
- |
-// Returns whether or not the given string is a valid contraction. |
-// This function is a fall-back when the SpellcheckWordIterator class |
-// returns a concatenated word which is not in the selected dictionary |
-// (e.g. "in'n'out") but each word is valid. |
-bool SpellcheckLanguage::IsValidContraction(const base::string16& contraction, |
- int tag) { |
- if (!contraction_iterator_.IsInitialized() && |
- !contraction_iterator_.Initialize(&character_attributes_, false)) { |
- // We failed to initialize the word iterator, return as spelled correctly. |
- VLOG(1) << "Failed to initialize contraction_iterator_"; |
- return true; |
- } |
- |
- contraction_iterator_.SetText(contraction.c_str(), contraction.length()); |
- |
- base::string16 word; |
- int word_start; |
- int word_length; |
- |
- DCHECK(platform_spelling_engine_.get()); |
- for (SpellcheckWordIterator::WordIteratorStatus status = |
- contraction_iterator_.GetNextWord(&word, &word_start, &word_length); |
- status != SpellcheckWordIterator::IS_END_OF_TEXT; |
- status = contraction_iterator_.GetNextWord(&word, &word_start, |
- &word_length)) { |
- if (status == SpellcheckWordIterator::IS_SKIPPABLE) |
- continue; |
- |
- if (!platform_spelling_engine_->CheckSpelling(word, tag)) |
- return false; |
- } |
- return true; |
-} |
- |
-bool SpellcheckLanguage::IsEnabled() { |
- DCHECK(platform_spelling_engine_.get()); |
- return platform_spelling_engine_->IsEnabled(); |
-} |