OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 #ifndef CHROME_BROWSER_SEARCH_ENGINES_TEMPLATE_URL_H_ | 5 #ifndef CHROME_BROWSER_SEARCH_ENGINES_TEMPLATE_URL_H_ |
6 #define CHROME_BROWSER_SEARCH_ENGINES_TEMPLATE_URL_H_ | 6 #define CHROME_BROWSER_SEARCH_ENGINES_TEMPLATE_URL_H_ |
7 #pragma once | 7 #pragma once |
8 | 8 |
9 #include <string> | 9 #include <string> |
10 #include <vector> | 10 #include <vector> |
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
128 // {google:baseURL} or {google:baseSuggestURL}. | 128 // {google:baseURL} or {google:baseSuggestURL}. |
129 bool HasGoogleBaseURLs() const; | 129 bool HasGoogleBaseURLs() const; |
130 | 130 |
131 // Returns true if both refs are NULL or have the same values. | 131 // Returns true if both refs are NULL or have the same values. |
132 static bool SameUrlRefs(const TemplateURLRef* ref1, | 132 static bool SameUrlRefs(const TemplateURLRef* ref1, |
133 const TemplateURLRef* ref2); | 133 const TemplateURLRef* ref2); |
134 | 134 |
135 // Collects metrics whether searches through Google are sent with RLZ string. | 135 // Collects metrics whether searches through Google are sent with RLZ string. |
136 void CollectRLZMetrics() const; | 136 void CollectRLZMetrics() const; |
137 | 137 |
| 138 // Sets whether this URL is pre-populated or not. |
| 139 void set_prepopulated(bool prepopulated) { prepopulated_ = prepopulated; } |
| 140 |
138 private: | 141 private: |
139 friend class SearchHostToURLsMapTest; | 142 friend class SearchHostToURLsMapTest; |
140 friend class TemplateURL; | 143 friend class TemplateURL; |
141 friend class TemplateURLServiceTestUtil; | 144 friend class TemplateURLServiceTestUtil; |
142 friend class TemplateURLTest; | 145 friend class TemplateURLTest; |
| 146 FRIEND_TEST_ALL_PREFIXES(TemplateURLTest, SetPrepopulatedAndParse); |
143 FRIEND_TEST_ALL_PREFIXES(TemplateURLTest, ParseParameterKnown); | 147 FRIEND_TEST_ALL_PREFIXES(TemplateURLTest, ParseParameterKnown); |
144 FRIEND_TEST_ALL_PREFIXES(TemplateURLTest, ParseParameterUnknown); | 148 FRIEND_TEST_ALL_PREFIXES(TemplateURLTest, ParseParameterUnknown); |
145 FRIEND_TEST_ALL_PREFIXES(TemplateURLTest, ParseParameterReallyUnknown); | |
146 FRIEND_TEST_ALL_PREFIXES(TemplateURLTest, ParseURLEmpty); | 149 FRIEND_TEST_ALL_PREFIXES(TemplateURLTest, ParseURLEmpty); |
147 FRIEND_TEST_ALL_PREFIXES(TemplateURLTest, ParseURLNoTemplateEnd); | 150 FRIEND_TEST_ALL_PREFIXES(TemplateURLTest, ParseURLNoTemplateEnd); |
148 FRIEND_TEST_ALL_PREFIXES(TemplateURLTest, ParseURLNoKnownParameters); | 151 FRIEND_TEST_ALL_PREFIXES(TemplateURLTest, ParseURLNoKnownParameters); |
149 FRIEND_TEST_ALL_PREFIXES(TemplateURLTest, ParseURLTwoParameters); | 152 FRIEND_TEST_ALL_PREFIXES(TemplateURLTest, ParseURLTwoParameters); |
150 FRIEND_TEST_ALL_PREFIXES(TemplateURLTest, ParseURLNestedParameter); | 153 FRIEND_TEST_ALL_PREFIXES(TemplateURLTest, ParseURLNestedParameter); |
151 | 154 |
152 // Enumeration of the known types. | 155 // Enumeration of the known types. |
153 enum ReplacementType { | 156 enum ReplacementType { |
154 ENCODING, | 157 ENCODING, |
155 GOOGLE_ACCEPTED_SUGGESTION, | 158 GOOGLE_ACCEPTED_SUGGESTION, |
(...skipping 24 matching lines...) Expand all Loading... |
180 // Resets the url. | 183 // Resets the url. |
181 void Set(const std::string& url, int index_offset, int page_offset); | 184 void Set(const std::string& url, int index_offset, int page_offset); |
182 | 185 |
183 // Parses the parameter in url at the specified offset. start/end specify the | 186 // Parses the parameter in url at the specified offset. start/end specify the |
184 // range of the parameter in the url, including the braces. If the parameter | 187 // range of the parameter in the url, including the braces. If the parameter |
185 // is valid, url is updated to reflect the appropriate parameter. If | 188 // is valid, url is updated to reflect the appropriate parameter. If |
186 // the parameter is one of the known parameters an element is added to | 189 // the parameter is one of the known parameters an element is added to |
187 // replacements indicating the type and range of the element. The original | 190 // replacements indicating the type and range of the element. The original |
188 // parameter is erased from the url. | 191 // parameter is erased from the url. |
189 // | 192 // |
190 // If the parameter is not a known parameter, it's not erased and false is | 193 // If the parameter is not a known parameter, false is returned. If this is a |
191 // returned. | 194 // prepopulated URL, the parameter is erased, otherwise it is left alone. |
192 bool ParseParameter(size_t start, | 195 bool ParseParameter(size_t start, |
193 size_t end, | 196 size_t end, |
194 std::string* url, | 197 std::string* url, |
195 Replacements* replacements) const; | 198 Replacements* replacements) const; |
196 | 199 |
197 // Parses the specified url, replacing parameters as necessary. If | 200 // Parses the specified url, replacing parameters as necessary. If |
198 // successful, valid is set to true, and the parsed url is returned. For all | 201 // successful, valid is set to true, and the parsed url is returned. For all |
199 // known parameters that are encountered an entry is added to replacements. | 202 // known parameters that are encountered an entry is added to replacements. |
200 // If there is an error parsing the url, valid is set to false, and an empty | 203 // If there is an error parsing the url, valid is set to false, and an empty |
201 // string is returned. | 204 // string is returned. |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
245 | 248 |
246 // The replaceable parts of url (parsed_url_). These are ordered by index | 249 // The replaceable parts of url (parsed_url_). These are ordered by index |
247 // into the string, and may be empty. | 250 // into the string, and may be empty. |
248 mutable Replacements replacements_; | 251 mutable Replacements replacements_; |
249 | 252 |
250 // Host, path and key of the search term. These are only set if the url | 253 // Host, path and key of the search term. These are only set if the url |
251 // contains one search term. | 254 // contains one search term. |
252 mutable std::string host_; | 255 mutable std::string host_; |
253 mutable std::string path_; | 256 mutable std::string path_; |
254 mutable std::string search_term_key_; | 257 mutable std::string search_term_key_; |
| 258 |
| 259 // Whether the contained URL is a pre-populated URL. |
| 260 bool prepopulated_; |
255 }; | 261 }; |
256 | 262 |
257 // Describes the relevant portions of a single OSD document. | 263 // Describes the relevant portions of a single OSD document. |
258 class TemplateURL { | 264 class TemplateURL { |
259 public: | 265 public: |
260 // Describes a single image reference. Each TemplateURL may have | 266 // Describes a single image reference. Each TemplateURL may have |
261 // any number (including 0) of ImageRefs. | 267 // any number (including 0) of ImageRefs. |
262 // | 268 // |
263 // If a TemplateURL has no images, the favicon for the generated URL | 269 // If a TemplateURL has no images, the favicon for the generated URL |
264 // should be used. | 270 // should be used. |
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
467 } | 473 } |
468 | 474 |
469 void set_logo_id(int logo_id) { logo_id_ = logo_id; } | 475 void set_logo_id(int logo_id) { logo_id_ = logo_id; } |
470 int logo_id() const { return logo_id_; } | 476 int logo_id() const { return logo_id_; } |
471 | 477 |
472 // Returns the unique identifier of this TemplateURL. The unique ID is set | 478 // Returns the unique identifier of this TemplateURL. The unique ID is set |
473 // by the TemplateURLService when the TemplateURL is added to it. | 479 // by the TemplateURLService when the TemplateURL is added to it. |
474 TemplateURLID id() const { return id_; } | 480 TemplateURLID id() const { return id_; } |
475 | 481 |
476 // If this TemplateURL comes from prepopulated data the prepopulate_id is > 0. | 482 // If this TemplateURL comes from prepopulated data the prepopulate_id is > 0. |
477 void set_prepopulate_id(int id) { prepopulate_id_ = id; } | 483 // SetPrepopulateId also sets any TemplateURLRef's prepopulated flag to true |
| 484 // if |id| > 0 and false otherwise. |
| 485 void SetPrepopulateId(int id); |
478 int prepopulate_id() const { return prepopulate_id_; } | 486 int prepopulate_id() const { return prepopulate_id_; } |
479 | 487 |
480 std::string GetExtensionId() const; | 488 std::string GetExtensionId() const; |
481 bool IsExtensionKeyword() const; | 489 bool IsExtensionKeyword() const; |
482 | 490 |
483 private: | 491 private: |
484 friend void MergeEnginesFromPrepopulateData( | 492 friend void MergeEnginesFromPrepopulateData( |
485 PrefService* prefs, | 493 PrefService* prefs, |
486 WebDataService* service, | 494 WebDataService* service, |
487 std::vector<TemplateURL*>* template_urls, | 495 std::vector<TemplateURL*>* template_urls, |
488 const TemplateURL** default_search_provider); | 496 const TemplateURL** default_search_provider); |
489 friend class KeywordTable; | 497 friend class KeywordTable; |
490 friend class KeywordTableTest; | 498 friend class KeywordTableTest; |
491 friend class SearchHostToURLsMap; | 499 friend class SearchHostToURLsMap; |
492 friend class TemplateURLService; | 500 friend class TemplateURLService; |
493 | 501 |
494 // Invalidates cached values on this object and its child TemplateURLRefs. | 502 // Invalidates cached values on this object and its child TemplateURLRefs. |
495 void InvalidateCachedValues() const; | 503 void InvalidateCachedValues() const; |
496 | 504 |
| 505 // Sets all TemplateURLRefs prepopulated flags. |
| 506 void SetTemplateURLRefsPrepopulated(bool prepopulated); |
| 507 |
497 // Unique identifier, used when archived to the database. | 508 // Unique identifier, used when archived to the database. |
498 void set_id(TemplateURLID id) { id_ = id; } | 509 void set_id(TemplateURLID id) { id_ = id; } |
499 | 510 |
500 string16 short_name_; | 511 string16 short_name_; |
501 string16 description_; | 512 string16 description_; |
502 TemplateURLRef suggestions_url_; | 513 TemplateURLRef suggestions_url_; |
503 TemplateURLRef url_; | 514 TemplateURLRef url_; |
504 TemplateURLRef instant_url_; | 515 TemplateURLRef instant_url_; |
505 GURL originating_url_; | 516 GURL originating_url_; |
506 mutable string16 keyword_; | 517 mutable string16 keyword_; |
(...skipping 14 matching lines...) Expand all Loading... |
521 bool created_by_policy_; | 532 bool created_by_policy_; |
522 int usage_count_; | 533 int usage_count_; |
523 SearchEngineType search_engine_type_; | 534 SearchEngineType search_engine_type_; |
524 int logo_id_; | 535 int logo_id_; |
525 int prepopulate_id_; | 536 int prepopulate_id_; |
526 | 537 |
527 // TODO(sky): Add date last parsed OSD file. | 538 // TODO(sky): Add date last parsed OSD file. |
528 }; | 539 }; |
529 | 540 |
530 #endif // CHROME_BROWSER_SEARCH_ENGINES_TEMPLATE_URL_H_ | 541 #endif // CHROME_BROWSER_SEARCH_ENGINES_TEMPLATE_URL_H_ |
OLD | NEW |