text: // 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 CHROME_RENDERER_SPELLCHECKER_CUSTOM_DICTIONARY_ENGINE_H_
  #define CHROME_RENDERER_SPELLCHECKER_CUSTOM_DICTIONARY_ENGINE_H_
  
  #include <set>
  #include <string>
  #include <vector>
  
  #include "base/strings/string16.h"
  
  // Custom spellcheck dictionary. Words in this dictionary are always correctly
  // spelled. Words that are not in this dictionary may or may not be correctly
  // spelled.
  class CustomDictionaryEngine {
   public:
    CustomDictionaryEngine();
    ~CustomDictionaryEngine();
  
    // Initialize the custom dictionary engine.
    void Init(const std::set<std::string>& words);
  
    // Spellcheck |text|. Assumes that another spelling engine has set
    // |misspelling_start| and |misspelling_len| to indicate a misspelling.
    // Returns true if there are no misspellings, otherwise returns false.
    bool SpellCheckWord(const base::string16& text,
                        int misspelling_start,
                        int misspelling_len);
  
    // Update custom dictionary words.
    void OnCustomDictionaryChanged(
        const std::vector<std::string>& words_added,
        const std::vector<std::string>& words_removed);
  
   private:
    // Correctly spelled words.
    std::set<base::string16> dictionary_;
  
    DISALLOW_COPY_AND_ASSIGN(CustomDictionaryEngine);
  };
  
  #endif  // CHROME_RENDERER_SPELLCHECKER_CUSTOM_DICTIONARY_ENGINE_H_
  