Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(318)

Side by Side Diff: chrome/browser/autocomplete/keyword_provider.h

Issue 460313002: No chrome dependencies in KeywordProvider (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rename setter Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 // 4 //
5 // This file contains the keyword autocomplete provider. The keyword provider 5 // This file contains the keyword autocomplete provider. The keyword provider
6 // is responsible for remembering/suggesting user "search keyword queries" 6 // is responsible for remembering/suggesting user "search keyword queries"
7 // (e.g. "imdb Godzilla") and then fixing them up into valid URLs. An 7 // (e.g. "imdb Godzilla") and then fixing them up into valid URLs. An
8 // instance of it gets created and managed by the autocomplete controller. 8 // instance of it gets created and managed by the autocomplete controller.
9 // KeywordProvider uses a TemplateURLService to find the set of keywords. 9 // KeywordProvider uses a TemplateURLService to find the set of keywords.
10 10
11 #ifndef CHROME_BROWSER_AUTOCOMPLETE_KEYWORD_PROVIDER_H_ 11 #ifndef CHROME_BROWSER_AUTOCOMPLETE_KEYWORD_PROVIDER_H_
12 #define CHROME_BROWSER_AUTOCOMPLETE_KEYWORD_PROVIDER_H_ 12 #define CHROME_BROWSER_AUTOCOMPLETE_KEYWORD_PROVIDER_H_
13 13
14 #include <string> 14 #include <string>
15 15
16 #include "base/basictypes.h" 16 #include "base/basictypes.h"
17 #include "base/compiler_specific.h" 17 #include "base/compiler_specific.h"
18 #include "base/memory/scoped_ptr.h" 18 #include "base/memory/scoped_ptr.h"
19 #include "chrome/browser/autocomplete/keyword_extensions_delegate.h"
19 #include "components/metrics/proto/omnibox_input_type.pb.h" 20 #include "components/metrics/proto/omnibox_input_type.pb.h"
20 #include "components/omnibox/autocomplete_input.h" 21 #include "components/omnibox/autocomplete_input.h"
21 #include "components/omnibox/autocomplete_provider.h" 22 #include "components/omnibox/autocomplete_provider.h"
22 23
23 class AutocompleteProviderListener; 24 class AutocompleteProviderListener;
24 class KeywordExtensionsDelegate; 25 class KeywordExtensionsDelegate;
25 class Profile;
26 class TemplateURL; 26 class TemplateURL;
27 class TemplateURLService; 27 class TemplateURLService;
28 28
29 // Autocomplete provider for keyword input. 29 // Autocomplete provider for keyword input.
30 // 30 //
31 // After construction, the autocomplete controller repeatedly calls Start() 31 // After construction, the autocomplete controller repeatedly calls Start()
32 // with some user input, each time expecting to receive a small set of the best 32 // with some user input, each time expecting to receive a small set of the best
33 // matches (either synchronously or asynchronously). 33 // matches (either synchronously or asynchronously).
34 // 34 //
35 // To construct these matches, the provider treats user input as a series of 35 // To construct these matches, the provider treats user input as a series of
36 // whitespace-delimited tokens and tries to match the first token as the prefix 36 // whitespace-delimited tokens and tries to match the first token as the prefix
37 // of a known "keyword". A keyword is some string that maps to a search query 37 // of a known "keyword". A keyword is some string that maps to a search query
38 // URL; the rest of the user's input is taken as the input to the query. For 38 // URL; the rest of the user's input is taken as the input to the query. For
39 // example, the keyword "bug" might map to the URL "http://b/issue?id=%s", so 39 // example, the keyword "bug" might map to the URL "http://b/issue?id=%s", so
40 // input like "bug 123" would become "http://b/issue?id=123". 40 // input like "bug 123" would become "http://b/issue?id=123".
41 // 41 //
42 // Because we do prefix matching, user input could match more than one keyword 42 // Because we do prefix matching, user input could match more than one keyword
43 // at once. (Example: the input "f jazz" matches all keywords starting with 43 // at once. (Example: the input "f jazz" matches all keywords starting with
44 // "f".) We return the best matches, up to three. 44 // "f".) We return the best matches, up to three.
45 // 45 //
46 // The resulting matches are shown with content specified by the keyword 46 // The resulting matches are shown with content specified by the keyword
47 // (usually "Search [name] for %s"), description "(Keyword: [keyword])", and 47 // (usually "Search [name] for %s"), description "(Keyword: [keyword])", and
48 // action "[keyword] %s". If the user has typed a (possibly partial) keyword 48 // action "[keyword] %s". If the user has typed a (possibly partial) keyword
49 // but no search terms, the suggested result is shown greyed out, with 49 // but no search terms, the suggested result is shown greyed out, with
50 // "<enter term(s)>" as the substituted input, and does nothing when selected. 50 // "<enter term(s)>" as the substituted input, and does nothing when selected.
51 class KeywordProvider : public AutocompleteProvider { 51 class KeywordProvider : public AutocompleteProvider {
52 public: 52 public:
53 KeywordProvider(AutocompleteProviderListener* listener, Profile* profile);
54 // For testing.
55 KeywordProvider(AutocompleteProviderListener* listener, 53 KeywordProvider(AutocompleteProviderListener* listener,
56 TemplateURLService* model); 54 TemplateURLService* model);
57 55
56 void set_extensions_delegate(
57 scoped_ptr<KeywordExtensionsDelegate> extensions_delegate) {
58 extensions_delegate_ = extensions_delegate.Pass();
59 }
60
58 // Extracts the next whitespace-delimited token from input and returns it. 61 // Extracts the next whitespace-delimited token from input and returns it.
59 // Sets |remaining_input| to everything after the first token (skipping over 62 // Sets |remaining_input| to everything after the first token (skipping over
60 // the first intervening whitespace). 63 // the first intervening whitespace).
61 // If |trim_leading_whitespace| is true then leading whitespace in 64 // If |trim_leading_whitespace| is true then leading whitespace in
62 // |*remaining_input| will be trimmed. 65 // |*remaining_input| will be trimmed.
63 static base::string16 SplitKeywordFromInput(const base::string16& input, 66 static base::string16 SplitKeywordFromInput(const base::string16& input,
64 bool trim_leading_whitespace, 67 bool trim_leading_whitespace,
65 base::string16* remaining_input); 68 base::string16* remaining_input);
66 69
67 // Returns the replacement string from the user input. The replacement 70 // Returns the replacement string from the user input. The replacement
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
134 137
135 // Fills in the "destination_url" and "contents" fields of |match| with the 138 // Fills in the "destination_url" and "contents" fields of |match| with the
136 // provided user input and keyword data. 139 // provided user input and keyword data.
137 void FillInURLAndContents(const base::string16& remaining_input, 140 void FillInURLAndContents(const base::string16& remaining_input,
138 const TemplateURL* element, 141 const TemplateURL* element,
139 AutocompleteMatch* match) const; 142 AutocompleteMatch* match) const;
140 143
141 TemplateURLService* GetTemplateURLService() const; 144 TemplateURLService* GetTemplateURLService() const;
142 145
143 AutocompleteProviderListener* listener_; 146 AutocompleteProviderListener* listener_;
144 Profile* profile_;
145 147
146 // Model for the keywords. This is only non-null when testing, otherwise the 148 // Model for the keywords.
147 // TemplateURLService from the Profile is used.
148 TemplateURLService* model_; 149 TemplateURLService* model_;
149 150
150 // Delegate to handle the extensions-only logic for KeywordProvider. 151 // Delegate to handle the extensions-only logic for KeywordProvider.
151 // NULL when extensions are not enabled. May be NULL for tests. 152 // NULL when extensions are not enabled. May be NULL for tests.
152 scoped_ptr<KeywordExtensionsDelegate> extensions_delegate_; 153 scoped_ptr<KeywordExtensionsDelegate> extensions_delegate_;
153 154
154 DISALLOW_COPY_AND_ASSIGN(KeywordProvider); 155 DISALLOW_COPY_AND_ASSIGN(KeywordProvider);
155 }; 156 };
156 157
157 #endif // CHROME_BROWSER_AUTOCOMPLETE_KEYWORD_PROVIDER_H_ 158 #endif // CHROME_BROWSER_AUTOCOMPLETE_KEYWORD_PROVIDER_H_
OLDNEW
« no previous file with comments | « chrome/browser/autocomplete/keyword_extensions_delegate_impl.cc ('k') | chrome/browser/autocomplete/keyword_provider.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698