• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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_SEARCH_ENGINE_MANAGER_HANDLER_H_
6 #define CHROME_BROWSER_UI_WEBUI_OPTIONS_SEARCH_ENGINE_MANAGER_HANDLER_H_
7 
8 #include "chrome/browser/ui/search_engines/edit_search_engine_controller.h"
9 #include "chrome/browser/ui/webui/options/options_ui.h"
10 #include "ui/base/models/table_model_observer.h"
11 
12 class KeywordEditorController;
13 
14 namespace extensions {
15 class Extension;
16 }
17 
18 namespace options {
19 
20 class SearchEngineManagerHandler : public OptionsPageUIHandler,
21                                    public ui::TableModelObserver,
22                                    public EditSearchEngineControllerDelegate {
23  public:
24   SearchEngineManagerHandler();
25   virtual ~SearchEngineManagerHandler();
26 
27   // OptionsPageUIHandler implementation.
28   virtual void GetLocalizedValues(
29       base::DictionaryValue* localized_strings) OVERRIDE;
30   virtual void InitializeHandler() OVERRIDE;
31   virtual void InitializePage() OVERRIDE;
32 
33   // ui::TableModelObserver implementation.
34   virtual void OnModelChanged() OVERRIDE;
35   virtual void OnItemsChanged(int start, int length) OVERRIDE;
36   virtual void OnItemsAdded(int start, int length) OVERRIDE;
37   virtual void OnItemsRemoved(int start, int length) OVERRIDE;
38 
39   // EditSearchEngineControllerDelegate implementation.
40   virtual void OnEditedKeyword(TemplateURL* template_url,
41                                const base::string16& title,
42                                const base::string16& keyword,
43                                const std::string& url) OVERRIDE;
44 
45   virtual void RegisterMessages() OVERRIDE;
46 
47  private:
48   scoped_ptr<KeywordEditorController> list_controller_;
49   scoped_ptr<EditSearchEngineController> edit_controller_;
50 
51   // Removes the search engine at the given index. Called from WebUI.
52   void RemoveSearchEngine(const base::ListValue* args);
53 
54   // Sets the search engine at the given index to be default. Called from WebUI.
55   void SetDefaultSearchEngine(const base::ListValue* args);
56 
57   // Starts an edit session for the search engine at the given index. If the
58   // index is -1, starts editing a new search engine instead of an existing one.
59   // Called from WebUI.
60   void EditSearchEngine(const base::ListValue* args);
61 
62   // Validates the given search engine values, and reports the results back
63   // to WebUI. Called from WebUI.
64   void CheckSearchEngineInfoValidity(const base::ListValue* args);
65 
66   // Called when an edit is cancelled.
67   // Called from WebUI.
68   void EditCancelled(const base::ListValue* args);
69 
70   // Called when an edit is finished and should be saved.
71   // Called from WebUI.
72   void EditCompleted(const base::ListValue* args);
73 
74   // Returns a dictionary to pass to WebUI representing the given search engine.
75   base::DictionaryValue* CreateDictionaryForEngine(
76       int index, bool is_default, bool is_extension);
77 
78   // Returns a dictionary to pass to WebUI representing the extension.
79   base::DictionaryValue* CreateDictionaryForExtension(
80       const extensions::Extension& extension);
81 
82   DISALLOW_COPY_AND_ASSIGN(SearchEngineManagerHandler);
83 };
84 
85 }  // namespace options
86 
87 #endif  // CHROME_BROWSER_UI_WEBUI_OPTIONS_SEARCH_ENGINE_MANAGER_HANDLER_H_
88