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_SEARCH_ENGINES_TEMPLATE_URL_PARSER_H_ 6 #define CHROME_BROWSER_SEARCH_ENGINES_TEMPLATE_URL_PARSER_H_ 7 8 #include <string> 9 10 #include "base/basictypes.h" 11 12 class Profile; 13 class TemplateURL; 14 15 // TemplateURLParser, as the name implies, handling reading of TemplateURLs 16 // from OpenSearch description documents. 17 class TemplateURLParser { 18 public: 19 class ParameterFilter { 20 public: 21 // Invoked for each parameter of the template URL while parsing. If this 22 // methods returns false, the parameter is not included. 23 virtual bool KeepParameter(const std::string& key, 24 const std::string& value) = 0; 25 26 protected: 27 virtual ~ParameterFilter() {} 28 }; 29 30 // Decodes the chunk of data representing a TemplateURL, creates the 31 // TemplateURL, and returns it. The caller owns the returned object. 32 // |profile| should only be non-NULL if this function is called on the UI 33 // thread. Returns NULL if data does not describe a valid TemplateURL, the 34 // URLs referenced do not point to valid http/https resources, or for some 35 // other reason we do not support the described TemplateURL. 36 // |parameter_filter| can be used if you want to filter some parameters out of 37 // the URL. For example, when importing from another browser, we remove any 38 // parameter identifying that browser. If set to NULL, the URL is not 39 // modified. 40 static TemplateURL* Parse(Profile* profile, 41 bool show_in_default_list, 42 const char* data, 43 size_t length, 44 ParameterFilter* parameter_filter); 45 46 private: 47 // No one should create one of these. 48 TemplateURLParser(); 49 50 DISALLOW_COPY_AND_ASSIGN(TemplateURLParser); 51 }; 52 53 #endif // CHROME_BROWSER_SEARCH_ENGINES_TEMPLATE_URL_PARSER_H_ 54