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

Side by Side Diff: chrome/browser/search_engines/template_url_service.cc

Issue 343823002: Move GenerateSearchURL() and GenerateKeyword() from TemplateURLService to TemplateURL (Closed) Base URL: http://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 6 years, 6 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
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 #include "chrome/browser/search_engines/template_url_service.h" 5 #include "chrome/browser/search_engines/template_url_service.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/auto_reset.h" 10 #include "base/auto_reset.h"
(...skipping 359 matching lines...) Expand 10 before | Expand all | Expand 10 after
370 } 370 }
371 if (!prepopulate_id.empty() && !*is_managed) { 371 if (!prepopulate_id.empty() && !*is_managed) {
372 int value; 372 int value;
373 base::StringToInt(prepopulate_id, &value); 373 base::StringToInt(prepopulate_id, &value);
374 (*default_provider_data)->prepopulate_id = value; 374 (*default_provider_data)->prepopulate_id = value;
375 } 375 }
376 return true; 376 return true;
377 } 377 }
378 378
379 // static 379 // static
380 base::string16 TemplateURLService::GenerateKeyword(const GURL& url) {
381 DCHECK(url.is_valid());
382 // Strip "www." off the front of the keyword; otherwise the keyword won't work
383 // properly. See http://code.google.com/p/chromium/issues/detail?id=6984 .
384 // Special case: if the host was exactly "www." (not sure this can happen but
385 // perhaps with some weird intranet and custom DNS server?), ensure we at
386 // least don't return the empty string.
387 base::string16 keyword(net::StripWWWFromHost(url));
388 return keyword.empty() ? base::ASCIIToUTF16("www") : keyword;
389 }
390
391 // static
392 base::string16 TemplateURLService::CleanUserInputKeyword( 380 base::string16 TemplateURLService::CleanUserInputKeyword(
393 const base::string16& keyword) { 381 const base::string16& keyword) {
394 // Remove the scheme. 382 // Remove the scheme.
395 base::string16 result(base::i18n::ToLower(keyword)); 383 base::string16 result(base::i18n::ToLower(keyword));
396 base::TrimWhitespace(result, base::TRIM_ALL, &result); 384 base::TrimWhitespace(result, base::TRIM_ALL, &result);
397 url::Component scheme_component; 385 url::Component scheme_component;
398 if (url::ExtractScheme(base::UTF16ToUTF8(keyword).c_str(), 386 if (url::ExtractScheme(base::UTF16ToUTF8(keyword).c_str(),
399 static_cast<int>(keyword.length()), 387 static_cast<int>(keyword.length()),
400 &scheme_component)) { 388 &scheme_component)) {
401 // If the scheme isn't "http" or "https", bail. The user isn't trying to 389 // If the scheme isn't "http" or "https", bail. The user isn't trying to
(...skipping 15 matching lines...) Expand all
417 405
418 // Remove leading "www.". 406 // Remove leading "www.".
419 result = net::StripWWW(result); 407 result = net::StripWWW(result);
420 408
421 // Remove trailing "/". 409 // Remove trailing "/".
422 return (result.length() > 0 && result[result.length() - 1] == '/') ? 410 return (result.length() > 0 && result[result.length() - 1] == '/') ?
423 result.substr(0, result.length() - 1) : result; 411 result.substr(0, result.length() - 1) : result;
424 } 412 }
425 413
426 // static 414 // static
427 GURL TemplateURLService::GenerateSearchURL(
428 const TemplateURL* t_url,
429 const SearchTermsData& search_terms_data) {
430 DCHECK(t_url);
431
432 const TemplateURLRef& search_ref = t_url->url_ref();
433 if (!search_ref.IsValid(search_terms_data))
434 return GURL();
435
436 if (!search_ref.SupportsReplacement(search_terms_data))
437 return GURL(t_url->url());
438
439 // Use something obscure for the search terms argument so that in the rare
440 // case the term replaces the URL it's unlikely another keyword would have the
441 // same url.
442 // TODO(jnd): Add additional parameters to get post data when the search URL
443 // has post parameters.
444 return GURL(search_ref.ReplaceSearchTerms(
445 TemplateURLRef::SearchTermsArgs(
446 base::ASCIIToUTF16("blah.blah.blah.blah.blah")),
447 search_terms_data, NULL));
448 }
449
450 // static
451 void TemplateURLService::SaveDefaultSearchProviderToPrefs( 415 void TemplateURLService::SaveDefaultSearchProviderToPrefs(
452 const TemplateURL* t_url, 416 const TemplateURL* t_url,
453 PrefService* prefs) { 417 PrefService* prefs) {
454 if (!prefs) 418 if (!prefs)
455 return; 419 return;
456 420
457 bool enabled = false; 421 bool enabled = false;
458 std::string search_url; 422 std::string search_url;
459 std::string suggest_url; 423 std::string suggest_url;
460 std::string instant_url; 424 std::string instant_url;
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
601 initial_default_search_provider_.get() : NULL; 565 initial_default_search_provider_.get() : NULL;
602 } 566 }
603 567
604 TemplateURL* TemplateURLService::GetTemplateURLForHost( 568 TemplateURL* TemplateURLService::GetTemplateURLForHost(
605 const std::string& host) { 569 const std::string& host) {
606 if (loaded_) 570 if (loaded_)
607 return provider_map_->GetTemplateURLForHost(host); 571 return provider_map_->GetTemplateURLForHost(host);
608 TemplateURL* initial_dsp = initial_default_search_provider_.get(); 572 TemplateURL* initial_dsp = initial_default_search_provider_.get();
609 if (!initial_dsp) 573 if (!initial_dsp)
610 return NULL; 574 return NULL;
611 return (GenerateSearchURL(initial_dsp, search_terms_data()).host() == host) ? 575 return (initial_dsp->GenerateSearchURL(search_terms_data()).host() == host) ?
612 initial_dsp : NULL; 576 initial_dsp : NULL;
613 } 577 }
614 578
615 bool TemplateURLService::Add(TemplateURL* template_url) { 579 bool TemplateURLService::Add(TemplateURL* template_url) {
616 WebDataService::KeywordBatchModeScoper keyword_scoper(service_.get()); 580 WebDataService::KeywordBatchModeScoper keyword_scoper(service_.get());
617 if (!AddNoNotify(template_url, true)) 581 if (!AddNoNotify(template_url, true))
618 return false; 582 return false;
619 NotifyObservers(); 583 NotifyObservers();
620 return true; 584 return true;
621 } 585 }
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
691 base::Time created_before) { 655 base::Time created_before) {
692 GURL o(origin.GetOrigin()); 656 GURL o(origin.GetOrigin());
693 bool should_notify = false; 657 bool should_notify = false;
694 WebDataService::KeywordBatchModeScoper keyword_scoper(service_.get()); 658 WebDataService::KeywordBatchModeScoper keyword_scoper(service_.get());
695 for (size_t i = 0; i < template_urls_.size();) { 659 for (size_t i = 0; i < template_urls_.size();) {
696 if (template_urls_[i]->date_created() >= created_after && 660 if (template_urls_[i]->date_created() >= created_after &&
697 (created_before.is_null() || 661 (created_before.is_null() ||
698 template_urls_[i]->date_created() < created_before) && 662 template_urls_[i]->date_created() < created_before) &&
699 CanReplace(template_urls_[i]) && 663 CanReplace(template_urls_[i]) &&
700 (o.is_empty() || 664 (o.is_empty() ||
701 GenerateSearchURL(template_urls_[i], 665 template_urls_[i]->GenerateSearchURL(
702 search_terms_data()).GetOrigin() == o)) { 666 search_terms_data()).GetOrigin() == o)) {
703 RemoveNoNotify(template_urls_[i]); 667 RemoveNoNotify(template_urls_[i]);
704 should_notify = true; 668 should_notify = true;
705 } else { 669 } else {
706 ++i; 670 ++i;
707 } 671 }
708 } 672 }
709 if (should_notify) 673 if (should_notify)
710 NotifyObservers(); 674 NotifyObservers();
711 } 675 }
712 676
(...skipping 1554 matching lines...) Expand 10 before | Expand all | Expand 10 after
2267 if (!force) { 2231 if (!force) {
2268 // Already unique. 2232 // Already unique.
2269 if (!GetTemplateURLForKeyword(turl.keyword())) 2233 if (!GetTemplateURLForKeyword(turl.keyword()))
2270 return turl.keyword(); 2234 return turl.keyword();
2271 2235
2272 // First, try to return the generated keyword for the TemplateURL (except 2236 // First, try to return the generated keyword for the TemplateURL (except
2273 // for extensions, as their keywords are not associated with their URLs). 2237 // for extensions, as their keywords are not associated with their URLs).
2274 GURL gurl(turl.url()); 2238 GURL gurl(turl.url());
2275 if (gurl.is_valid() && 2239 if (gurl.is_valid() &&
2276 (turl.GetType() != TemplateURL::OMNIBOX_API_EXTENSION)) { 2240 (turl.GetType() != TemplateURL::OMNIBOX_API_EXTENSION)) {
2277 base::string16 keyword_candidate = GenerateKeyword(gurl); 2241 base::string16 keyword_candidate = TemplateURL::GenerateKeyword(gurl);
2278 if (!GetTemplateURLForKeyword(keyword_candidate)) 2242 if (!GetTemplateURLForKeyword(keyword_candidate))
2279 return keyword_candidate; 2243 return keyword_candidate;
2280 } 2244 }
2281 } 2245 }
2282 2246
2283 // We try to uniquify the keyword by appending a special character to the end. 2247 // We try to uniquify the keyword by appending a special character to the end.
2284 // This is a best-effort approach where we try to preserve the original 2248 // This is a best-effort approach where we try to preserve the original
2285 // keyword and let the user do what they will after our attempt. 2249 // keyword and let the user do what they will after our attempt.
2286 base::string16 keyword_candidate(turl.keyword()); 2250 base::string16 keyword_candidate(turl.keyword());
2287 do { 2251 do {
(...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after
2510 2474
2511 if (most_recently_intalled_default) { 2475 if (most_recently_intalled_default) {
2512 base::AutoReset<DefaultSearchChangeOrigin> change_origin( 2476 base::AutoReset<DefaultSearchChangeOrigin> change_origin(
2513 &dsp_change_origin_, DSP_CHANGE_OVERRIDE_SETTINGS_EXTENSION); 2477 &dsp_change_origin_, DSP_CHANGE_OVERRIDE_SETTINGS_EXTENSION);
2514 default_search_manager_.SetExtensionControlledDefaultSearchEngine( 2478 default_search_manager_.SetExtensionControlledDefaultSearchEngine(
2515 most_recently_intalled_default->data()); 2479 most_recently_intalled_default->data());
2516 } else { 2480 } else {
2517 default_search_manager_.ClearExtensionControlledDefaultSearchEngine(); 2481 default_search_manager_.ClearExtensionControlledDefaultSearchEngine();
2518 } 2482 }
2519 } 2483 }
OLDNEW
« no previous file with comments | « chrome/browser/search_engines/template_url_service.h ('k') | chrome/browser/search_engines/template_url_service_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698