- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / browser / search_engines / template_url_parser.h
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_