// 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 #include #include #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: explicit HunspellEngine( service_manager::LocalInterfaceProvider* embedder_provider); ~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* 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 bdict_file_; // The hunspell dictionary in use. std::unique_ptr 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_; service_manager::LocalInterfaceProvider* embedder_provider_; }; #endif // COMPONENTS_SPELLCHECK_RENDERER_HUNSPELL_ENGINE_H_