Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1437)

Unified Diff: chrome/renderer/spellchecker/spellcheck_language.cc

Issue 2198143002: Componentize spellcheck [3]: move renderer/ files to component. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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();
-}
« no previous file with comments | « chrome/renderer/spellchecker/spellcheck_language.h ('k') | chrome/renderer/spellchecker/spellcheck_multilingual_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698