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 12class KeywordEditorController; 13 14namespace extensions { 15class Extension; 16} 17 18namespace options { 19 20class 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