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.
5 #ifndef CHROME_RENDERER_SPELLCHECKER_SPELLCHECK_LANGUAGE_H_
6 #define CHROME_RENDERER_SPELLCHECKER_SPELLCHECK_LANGUAGE_H_
12 #include "base/files/file.h"
13 #include "base/memory/scoped_ptr.h"
14 #include "base/strings/string16.h"
15 #include "chrome/renderer/spellchecker/spellcheck_worditerator.h"
19 class SpellcheckLanguage
{
22 ~SpellcheckLanguage();
24 void Init(base::File file
, const std::string
& language
);
27 // Returns true if spelled correctly, false otherwise.
28 // If the spellchecker failed to initialize, always returns true.
29 // TODO(groby): This is not true in the multilingual case any more!
30 // The |tag| parameter should either be a unique identifier for the document
31 // that the word came from (if the current platform requires it), or 0.
32 // In addition, finds the suggested words for a given word
33 // and puts them into |*optional_suggestions|.
34 // If the word is spelled correctly, the vector is empty.
35 // If optional_suggestions is NULL, suggested words will not be looked up.
36 // Note that doing suggest lookups can be slow.
37 bool SpellCheckWord(const base::char16
* in_word
,
40 int* misspelling_start
,
42 std::vector
<base::string16
>* optional_suggestions
);
44 // Initialize |spellcheck_| if that hasn't happened yet.
45 bool InitializeIfNeeded();
47 // Return true if the underlying spellcheck engine is enabled.
51 friend class SpellCheckTest
;
53 // Returns whether or not the given word is a contraction of valid words
54 // (e.g. "word:word").
55 bool IsValidContraction(const base::string16
& word
, int tag
);
57 // Represents character attributes used for filtering out characters which
58 // are not supported by this SpellCheck object.
59 SpellcheckCharAttribute character_attributes_
;
61 // Represents word iterators used in this spellchecker. The |text_iterator_|
62 // splits text provided by WebKit into words, contractions, or concatenated
63 // words. The |contraction_iterator_| splits a concatenated word extracted by
64 // |text_iterator_| into word components so we can treat a concatenated word
65 // consisting only of correct words as a correct word.
66 SpellcheckWordIterator text_iterator_
;
67 SpellcheckWordIterator contraction_iterator_
;
69 // Pointer to a platform-specific spelling engine, if it is in use. This
70 // should only be set if hunspell is not used. (I.e. on OSX, for now)
71 scoped_ptr
<SpellingEngine
> platform_spelling_engine_
;
73 DISALLOW_COPY_AND_ASSIGN(SpellcheckLanguage
);
76 #endif // CHROME_RENDERER_SPELLCHECKER_SPELLCHECK_LANGUAGE_H_