// 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_BROWSER_UI_SEARCH_ENGINES_EDIT_SEARCH_ENGINE_CONTROLLER_H_ #define CHROME_BROWSER_UI_SEARCH_ENGINES_EDIT_SEARCH_ENGINE_CONTROLLER_H_ #include <string> #include "base/strings/string16.h" #include "ui/gfx/native_widget_types.h" class Profile; class TemplateURL; class EditSearchEngineControllerDelegate { public: // Invoked from the EditSearchEngineController when the user accepts the // edits. NOTE: |template_url| is the value supplied to // EditSearchEngineController's constructor, and may be NULL. A NULL value // indicates a new TemplateURL should be created rather than modifying an // existing TemplateURL. virtual void OnEditedKeyword(TemplateURL* template_url, const base::string16& title, const base::string16& keyword, const std::string& url) = 0; protected: virtual ~EditSearchEngineControllerDelegate() {} }; // EditSearchEngineController provides the core platform independent logic // for the Edit Search Engine dialog. class EditSearchEngineController { public: // The |template_url| and/or |edit_keyword_delegate| may be NULL. EditSearchEngineController( TemplateURL* template_url, EditSearchEngineControllerDelegate* edit_keyword_delegate, Profile* profile); ~EditSearchEngineController() {} // Returns true if the value of |title_input| is a valid search engine name. bool IsTitleValid(const base::string16& title_input) const; // Returns true if the value of |url_input| represents a valid search engine // URL. The URL is valid if it contains no search terms and is a valid // url, or if it contains a search term and replacing that search term with a // character results in a valid url. bool IsURLValid(const std::string& url_input) const; // Returns true if the value of |keyword_input| represents a valid keyword. // The keyword is valid if it is non-empty and does not conflict with an // existing entry. NOTE: this is just the keyword, not the title and url. bool IsKeywordValid(const base::string16& keyword_input) const; // Completes the add or edit of a search engine. void AcceptAddOrEdit(const base::string16& title_input, const base::string16& keyword_input, const std::string& url_input); // Deletes an unused TemplateURL, if its add was cancelled and it's not // already owned by the TemplateURLService. void CleanUpCancelledAdd(); // Accessors. const TemplateURL* template_url() const { return template_url_; } const Profile* profile() const { return profile_; } private: // Fixes up and returns the URL the user has input. The returned URL is // suitable for use by TemplateURL. std::string GetFixedUpURL(const std::string& url_input) const; // The TemplateURL we're displaying information for. It may be NULL. If we // have a keyword_editor_view, we assume that this TemplateURL is already in // the TemplateURLService; if not, we assume it isn't. TemplateURL* template_url_; // We may have been created by this, in which case we will call back to it on // success to add/modify the entry. May be NULL. EditSearchEngineControllerDelegate* edit_keyword_delegate_; // Profile whose TemplateURLService we're modifying. Profile* profile_; DISALLOW_COPY_AND_ASSIGN(EditSearchEngineController); }; #endif // CHROME_BROWSER_UI_SEARCH_ENGINES_EDIT_SEARCH_ENGINE_CONTROLLER_H_