1 // Copyright 2014 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 COMPONENTS_SEARCH_ENGINES_TEMPLATE_URL_PARSER_H_ 6 #define COMPONENTS_SEARCH_ENGINES_TEMPLATE_URL_PARSER_H_ 7 8 #include <string> 9 10 #include "base/basictypes.h" 11 12 class SearchTermsData; 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 // Returns NULL if data does not describe a valid TemplateURL, the 33 // URLs referenced do not point to valid http/https resources, or for some 34 // other reason we do not support the described TemplateURL. 35 // |parameter_filter| can be used if you want to filter some parameters out of 36 // the URL. For example, when importing from another browser, we remove any 37 // parameter identifying that browser. If set to NULL, the URL is not 38 // modified. 39 static TemplateURL* Parse(const SearchTermsData& search_terms_data, 40 bool show_in_default_list, 41 const char* data, 42 size_t length, 43 ParameterFilter* parameter_filter); 44 45 private: 46 // No one should create one of these. 47 TemplateURLParser(); 48 49 DISALLOW_COPY_AND_ASSIGN(TemplateURLParser); 50 }; 51 52 #endif // COMPONENTS_SEARCH_ENGINES_TEMPLATE_URL_PARSER_H_ 53