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

Side by Side Diff: chrome/renderer/spellchecker/spellcheck_language.h

Issue 2159283003: [WIP][DO NOT LAND] Componentize spellcheck Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 5 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 unified diff | Download patch
OLDNEW
(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 #ifndef CHROME_RENDERER_SPELLCHECKER_SPELLCHECK_LANGUAGE_H_
6 #define CHROME_RENDERER_SPELLCHECKER_SPELLCHECK_LANGUAGE_H_
7
8 #include <memory>
9 #include <queue>
10 #include <string>
11 #include <vector>
12
13 #include "base/files/file.h"
14 #include "base/macros.h"
15 #include "base/strings/string16.h"
16 #include "chrome/renderer/spellchecker/spellcheck_worditerator.h"
17
18 class SpellingEngine;
19
20 class SpellcheckLanguage {
21 public:
22 enum SpellcheckWordResult {
23 // Denotes that every recognized word is spelled correctly, from the point
24 // of spellchecking to the end of the text.
25 IS_CORRECT,
26 // A sequence of skippable characters, such as punctuation, spaces, or
27 // characters not recognized by the current spellchecking language.
28 IS_SKIPPABLE,
29 // A misspelled word has been found in the text.
30 IS_MISSPELLED
31 };
32
33 SpellcheckLanguage();
34 ~SpellcheckLanguage();
35
36 void Init(base::File file, const std::string& language);
37
38 // Spellcheck a sequence of text.
39 // |text_length| is the length of the text being spellchecked. The |tag|
40 // parameter should either be a unique identifier for the document that the
41 // word came from (if the current platform requires it), or 0.
42 //
43 // - Returns IS_CORRECT if every word from |position_in_text| to the end of
44 // the text is recognized and spelled correctly. Also, returns IS_CORRECT if
45 // the spellchecker failed to initialize.
46 //
47 // - Returns IS_SKIPPABLE if a sequence of skippable characters, such as
48 // punctuation, spaces, or unrecognized characters, is found.
49 // |skip_or_misspelling_start| and |skip_or_misspelling_len| are then set to
50 // the position and the length of the sequence of skippable characters.
51 //
52 // - Returns IS_MISSPELLED if a misspelled word is found.
53 // |skip_or_misspelling_start| and |skip_or_misspelling_len| are then set to
54 // the position and length of the misspelled word. In addition, finds the
55 // suggested words for a given misspelled word and puts them into
56 // |*optional_suggestions|. If optional_suggestions is NULL, suggested words
57 // will not be looked up. Note that doing suggest lookups can be slow.
58 SpellcheckWordResult SpellCheckWord(
59 const base::char16* text_begin,
60 int position_in_text,
61 int text_length,
62 int tag,
63 int* skip_or_misspelling_start,
64 int* skip_or_misspelling_len,
65 std::vector<base::string16>* optional_suggestions);
66
67 // Initialize |spellcheck_| if that hasn't happened yet.
68 bool InitializeIfNeeded();
69
70 // Return true if the underlying spellcheck engine is enabled.
71 bool IsEnabled();
72
73 private:
74 friend class SpellCheckTest;
75
76 // Returns whether or not the given word is a contraction of valid words
77 // (e.g. "word:word").
78 bool IsValidContraction(const base::string16& word, int tag);
79
80 // Represents character attributes used for filtering out characters which
81 // are not supported by this SpellCheck object.
82 SpellcheckCharAttribute character_attributes_;
83
84 // Represents word iterators used in this spellchecker. The |text_iterator_|
85 // splits text provided by WebKit into words, contractions, or concatenated
86 // words. The |contraction_iterator_| splits a concatenated word extracted by
87 // |text_iterator_| into word components so we can treat a concatenated word
88 // consisting only of correct words as a correct word.
89 SpellcheckWordIterator text_iterator_;
90 SpellcheckWordIterator contraction_iterator_;
91
92 // Pointer to a platform-specific spelling engine, if it is in use. This
93 // should only be set if hunspell is not used. (I.e. on OSX, for now)
94 std::unique_ptr<SpellingEngine> platform_spelling_engine_;
95
96 DISALLOW_COPY_AND_ASSIGN(SpellcheckLanguage);
97 };
98
99 #endif // CHROME_RENDERER_SPELLCHECKER_SPELLCHECK_LANGUAGE_H_
OLDNEW
« no previous file with comments | « chrome/renderer/spellchecker/spellcheck.cc ('k') | chrome/renderer/spellchecker/spellcheck_language.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698