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_BROWSER_UI_WEBUI_OPTIONS_LANGUAGE_DICTIONARY_OVERLAY_HANDLER_H_
6#define CHROME_BROWSER_UI_WEBUI_OPTIONS_LANGUAGE_DICTIONARY_OVERLAY_HANDLER_H_
7
8#include "chrome/browser/spellchecker/spellcheck_custom_dictionary.h"
9#include "chrome/browser/ui/webui/options/options_ui.h"
10
11namespace options {
12
13class LanguageDictionaryOverlayHandler
14    : public OptionsPageUIHandler,
15      public SpellcheckCustomDictionary::Observer {
16 public:
17  LanguageDictionaryOverlayHandler();
18  virtual ~LanguageDictionaryOverlayHandler();
19
20  // Overridden from OptionsPageUIHandler:
21  virtual void GetLocalizedValues(
22      base::DictionaryValue* localized_strings) OVERRIDE;
23  virtual void RegisterMessages() OVERRIDE;
24  virtual void Uninitialize() OVERRIDE;
25
26  // Overridden from SpellcheckCustomDictionary::Observer:
27  virtual void OnCustomDictionaryLoaded() OVERRIDE;
28  virtual void OnCustomDictionaryChanged(
29      const SpellcheckCustomDictionary::Change& dictionary_change) OVERRIDE;
30
31 private:
32  // Sends the dictionary words to WebUI.
33  void ResetDictionaryWords();
34
35  // Refreshes the displayed words. Called from WebUI.
36  void RefreshWords(const base::ListValue* args);
37
38  // Adds a new word to the dictionary. Called from WebUI.
39  void AddWord(const base::ListValue* args);
40
41  // Removes a word from the dictionary. Called from WebUI.
42  void RemoveWord(const base::ListValue* args);
43
44  // Whether the overlay is initialized and ready to show data.
45  bool overlay_initialized_;
46
47  // The custom spelling dictionary. Used for adding, removing, and reading
48  // words in custom dictionary file.
49  SpellcheckCustomDictionary* dictionary_;
50
51  DISALLOW_COPY_AND_ASSIGN(LanguageDictionaryOverlayHandler);
52};
53
54}  // namespace options
55
56#endif  // CHROME_BROWSER_UI_WEBUI_OPTIONS_LANGUAGE_DICTIONARY_OVERLAY_HANDLER_H_
57