summaryrefslogtreecommitdiff
path: root/chromium/components/spellcheck/renderer/hunspell_engine.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/components/spellcheck/renderer/hunspell_engine.h')
-rw-r--r--chromium/components/spellcheck/renderer/hunspell_engine.h63
1 files changed, 63 insertions, 0 deletions
diff --git a/chromium/components/spellcheck/renderer/hunspell_engine.h b/chromium/components/spellcheck/renderer/hunspell_engine.h
new file mode 100644
index 00000000000..02adcee0def
--- /dev/null
+++ b/chromium/components/spellcheck/renderer/hunspell_engine.h
@@ -0,0 +1,63 @@
+// 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.
+
+#ifndef COMPONENTS_SPELLCHECK_RENDERER_HUNSPELL_ENGINE_H_
+#define COMPONENTS_SPELLCHECK_RENDERER_HUNSPELL_ENGINE_H_
+
+#include <memory>
+#include <string>
+#include <vector>
+
+#include "base/strings/string16.h"
+#include "base/strings/utf_string_conversions.h"
+#include "components/spellcheck/common/spellcheck_common.h"
+#include "components/spellcheck/renderer/spelling_engine.h"
+
+class Hunspell;
+
+namespace base {
+class MemoryMappedFile;
+}
+
+class HunspellEngine : public SpellingEngine {
+ public:
+ HunspellEngine();
+ ~HunspellEngine() override;
+
+ void Init(base::File file) override;
+
+ bool InitializeIfNeeded() override;
+ bool IsEnabled() override;
+ bool CheckSpelling(const base::string16& word_to_check, int tag) override;
+ void FillSuggestionList(
+ const base::string16& wrong_word,
+ std::vector<base::string16>* optional_suggestions) override;
+
+ private:
+ // Initializes the Hunspell dictionary, or does nothing if |hunspell_| is
+ // non-null. This blocks.
+ void InitializeHunspell();
+
+ // We memory-map the BDict file.
+ std::unique_ptr<base::MemoryMappedFile> bdict_file_;
+
+ // The hunspell dictionary in use.
+ std::unique_ptr<Hunspell> hunspell_;
+
+ base::File file_;
+
+ // This flag is true if hunspell is enabled.
+ bool hunspell_enabled_;
+
+ // This flag is true if we have been initialized.
+ // The value indicates whether we should request a
+ // dictionary from the browser when the render view asks us to check the
+ // spelling of a word.
+ bool initialized_;
+
+ // This flag is true if we have requested dictionary.
+ bool dictionary_requested_;
+};
+
+#endif // COMPONENTS_SPELLCHECK_RENDERER_HUNSPELL_ENGINE_H_