| // Copyright 2014 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 COMPONENTS_SEARCH_ENGINES_TEMPLATE_URL_PARSER_H_ | 
 | #define COMPONENTS_SEARCH_ENGINES_TEMPLATE_URL_PARSER_H_ | 
 |  | 
 | #include <stddef.h> | 
 |  | 
 | #include <memory> | 
 | #include <string> | 
 |  | 
 | #include "base/macros.h" | 
 |  | 
 | class SearchTermsData; | 
 | class TemplateURL; | 
 |  | 
 | // TemplateURLParser, as the name implies, handling reading of TemplateURLs | 
 | // from OpenSearch description documents. | 
 | class TemplateURLParser { | 
 |  public: | 
 |   class ParameterFilter { | 
 |    public: | 
 |     // Invoked for each parameter of the template URL while parsing.  If this | 
 |     // methods returns false, the parameter is not included. | 
 |     virtual bool KeepParameter(const std::string& key, | 
 |                                const std::string& value) = 0; | 
 |  | 
 |    protected: | 
 |     virtual ~ParameterFilter() {} | 
 |   }; | 
 |  | 
 |   // Decodes the chunk of data representing a TemplateURL, creates the | 
 |   // TemplateURL, and returns it.  Returns null if the data does not describe a | 
 |   // valid TemplateURL, the URLs referenced do not point to valid http/https | 
 |   // resources, or for some other reason we do not support the described | 
 |   // TemplateURL.  |parameter_filter| can be used if you want to filter some | 
 |   // parameters out of the URL.  For example, when importing from another | 
 |   // browser, we remove any parameter identifying that browser.  If set to null, | 
 |   // the URL is not modified. | 
 |   static std::unique_ptr<TemplateURL> Parse( | 
 |       const SearchTermsData& search_terms_data, | 
 |       const char* data, | 
 |       size_t length, | 
 |       ParameterFilter* parameter_filter); | 
 |  | 
 |  private: | 
 |   // No one should create one of these. | 
 |   TemplateURLParser(); | 
 |  | 
 |   DISALLOW_COPY_AND_ASSIGN(TemplateURLParser); | 
 | }; | 
 |  | 
 | #endif  // COMPONENTS_SEARCH_ENGINES_TEMPLATE_URL_PARSER_H_ |