| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "components/search_engines/template_url_service.h" | 5 #include "components/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 413 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 424 TemplateURL* initial_dsp = initial_default_search_provider_.get(); | 424 TemplateURL* initial_dsp = initial_default_search_provider_.get(); |
| 425 return (initial_dsp && | 425 return (initial_dsp && |
| 426 (initial_dsp->GenerateSearchURL(search_terms_data()).host_piece() == | 426 (initial_dsp->GenerateSearchURL(search_terms_data()).host_piece() == |
| 427 host)) | 427 host)) |
| 428 ? initial_dsp | 428 ? initial_dsp |
| 429 : nullptr; | 429 : nullptr; |
| 430 } | 430 } |
| 431 | 431 |
| 432 TemplateURL* TemplateURLService::Add( | 432 TemplateURL* TemplateURLService::Add( |
| 433 std::unique_ptr<TemplateURL> template_url) { | 433 std::unique_ptr<TemplateURL> template_url) { |
| 434 DCHECK(template_url); |
| 435 DCHECK( |
| 436 !IsCreatedByExtension(template_url.get()) || |
| 437 (!FindTemplateURLForExtension(template_url->extension_info_->extension_id, |
| 438 template_url->type()) && |
| 439 template_url->id() == kInvalidTemplateURLID)); |
| 440 |
| 434 KeywordWebDataService::BatchModeScoper scoper(web_data_service_.get()); | 441 KeywordWebDataService::BatchModeScoper scoper(web_data_service_.get()); |
| 435 TemplateURL* template_url_ptr = AddNoNotify(std::move(template_url), true); | 442 TemplateURL* template_url_ptr = AddNoNotify(std::move(template_url), true); |
| 436 if (template_url_ptr) | 443 if (template_url_ptr) |
| 437 NotifyObservers(); | 444 NotifyObservers(); |
| 438 return template_url_ptr; | 445 return template_url_ptr; |
| 439 } | 446 } |
| 440 | 447 |
| 441 TemplateURL* TemplateURLService::AddWithOverrides( | 448 TemplateURL* TemplateURLService::AddWithOverrides( |
| 442 std::unique_ptr<TemplateURL> template_url, | 449 std::unique_ptr<TemplateURL> template_url, |
| 443 const base::string16& short_name, | 450 const base::string16& short_name, |
| 444 const base::string16& keyword, | 451 const base::string16& keyword, |
| 445 const std::string& url) { | 452 const std::string& url) { |
| 446 DCHECK(!short_name.empty()); | 453 DCHECK(!short_name.empty()); |
| 447 DCHECK(!keyword.empty()); | 454 DCHECK(!keyword.empty()); |
| 448 DCHECK(!url.empty()); | 455 DCHECK(!url.empty()); |
| 449 template_url->data_.SetShortName(short_name); | 456 template_url->data_.SetShortName(short_name); |
| 450 template_url->data_.SetKeyword(keyword); | 457 template_url->data_.SetKeyword(keyword); |
| 451 template_url->SetURL(url); | 458 template_url->SetURL(url); |
| 452 return Add(std::move(template_url)); | 459 return Add(std::move(template_url)); |
| 453 } | 460 } |
| 454 | 461 |
| 455 TemplateURL* TemplateURLService::AddExtensionControlledTURL( | |
| 456 std::unique_ptr<TemplateURL> template_url, | |
| 457 std::unique_ptr<TemplateURL::AssociatedExtensionInfo> info) { | |
| 458 DCHECK(template_url); | |
| 459 DCHECK_EQ(kInvalidTemplateURLID, template_url->id()); | |
| 460 DCHECK(info); | |
| 461 DCHECK_NE(TemplateURL::NORMAL, template_url->type()); | |
| 462 DCHECK( | |
| 463 !FindTemplateURLForExtension(info->extension_id, template_url->type())); | |
| 464 | |
| 465 template_url->extension_info_.swap(info); | |
| 466 | |
| 467 return Add(std::move(template_url)); | |
| 468 } | |
| 469 | |
| 470 void TemplateURLService::Remove(TemplateURL* template_url) { | 462 void TemplateURLService::Remove(TemplateURL* template_url) { |
| 471 RemoveNoNotify(template_url); | 463 RemoveNoNotify(template_url); |
| 472 NotifyObservers(); | 464 NotifyObservers(); |
| 473 } | 465 } |
| 474 | 466 |
| 475 void TemplateURLService::RemoveExtensionControlledTURL( | 467 void TemplateURLService::RemoveExtensionControlledTURL( |
| 476 const std::string& extension_id, | 468 const std::string& extension_id, |
| 477 TemplateURL::Type type) { | 469 TemplateURL::Type type) { |
| 478 TemplateURL* url = FindTemplateURLForExtension(extension_id, type); | 470 TemplateURL* url = FindTemplateURLForExtension(extension_id, type); |
| 479 if (!url) | 471 if (!url) |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 527 DCHECK(loaded_); | 519 DCHECK(loaded_); |
| 528 | 520 |
| 529 if (FindTemplateURLForExtension(extension_id, | 521 if (FindTemplateURLForExtension(extension_id, |
| 530 TemplateURL::OMNIBOX_API_EXTENSION)) | 522 TemplateURL::OMNIBOX_API_EXTENSION)) |
| 531 return; | 523 return; |
| 532 | 524 |
| 533 TemplateURLData data; | 525 TemplateURLData data; |
| 534 data.SetShortName(base::UTF8ToUTF16(extension_name)); | 526 data.SetShortName(base::UTF8ToUTF16(extension_name)); |
| 535 data.SetKeyword(base::UTF8ToUTF16(keyword)); | 527 data.SetKeyword(base::UTF8ToUTF16(keyword)); |
| 536 data.SetURL(template_url_string); | 528 data.SetURL(template_url_string); |
| 537 std::unique_ptr<TemplateURL::AssociatedExtensionInfo> info( | 529 Add(base::MakeUnique<TemplateURL>(data, TemplateURL::OMNIBOX_API_EXTENSION, |
| 538 new TemplateURL::AssociatedExtensionInfo(extension_id)); | 530 extension_id, extension_install_time, |
| 539 info->install_time = extension_install_time; | 531 false)); |
| 540 AddExtensionControlledTURL( | |
| 541 base::MakeUnique<TemplateURL>(data, TemplateURL::OMNIBOX_API_EXTENSION), | |
| 542 std::move(info)); | |
| 543 } | 532 } |
| 544 | 533 |
| 545 TemplateURLService::TemplateURLVector TemplateURLService::GetTemplateURLs() { | 534 TemplateURLService::TemplateURLVector TemplateURLService::GetTemplateURLs() { |
| 546 TemplateURLVector result; | 535 TemplateURLVector result; |
| 547 for (const auto& turl : template_urls_) | 536 for (const auto& turl : template_urls_) |
| 548 result.push_back(turl.get()); | 537 result.push_back(turl.get()); |
| 549 return result; | 538 return result; |
| 550 } | 539 } |
| 551 | 540 |
| 552 void TemplateURLService::IncrementUsageCount(TemplateURL* url) { | 541 void TemplateURLService::IncrementUsageCount(TemplateURL* url) { |
| (...skipping 1419 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1972 update_data.SetKeyword(default_search_provider_->keyword()); | 1961 update_data.SetKeyword(default_search_provider_->keyword()); |
| 1973 update_data.SetShortName(default_search_provider_->short_name()); | 1962 update_data.SetShortName(default_search_provider_->short_name()); |
| 1974 } | 1963 } |
| 1975 UpdateNoNotify(default_search_provider_, TemplateURL(update_data)); | 1964 UpdateNoNotify(default_search_provider_, TemplateURL(update_data)); |
| 1976 } else { | 1965 } else { |
| 1977 // Normally the prepopulated fallback should be present in | 1966 // Normally the prepopulated fallback should be present in |
| 1978 // |template_urls_|, but in a few cases it might not be: | 1967 // |template_urls_|, but in a few cases it might not be: |
| 1979 // (1) Tests that initialize the TemplateURLService in peculiar ways. | 1968 // (1) Tests that initialize the TemplateURLService in peculiar ways. |
| 1980 // (2) If the user deleted the pre-populated default and we subsequently | 1969 // (2) If the user deleted the pre-populated default and we subsequently |
| 1981 // lost their user-selected value. | 1970 // lost their user-selected value. |
| 1982 std::unique_ptr<TemplateURL> new_dse_ptr = | 1971 default_search_provider_ = |
| 1983 base::MakeUnique<TemplateURL>(*data); | 1972 AddNoNotify(base::MakeUnique<TemplateURL>(*data), true); |
| 1984 TemplateURL* new_dse = new_dse_ptr.get(); | |
| 1985 if (AddNoNotify(std::move(new_dse_ptr), true)) | |
| 1986 default_search_provider_ = new_dse; | |
| 1987 } | 1973 } |
| 1988 } else if (source == DefaultSearchManager::FROM_USER) { | 1974 } else if (source == DefaultSearchManager::FROM_USER) { |
| 1989 default_search_provider_ = GetTemplateURLForGUID(data->sync_guid); | 1975 default_search_provider_ = GetTemplateURLForGUID(data->sync_guid); |
| 1990 if (!default_search_provider_ && data->prepopulate_id) { | 1976 if (!default_search_provider_ && data->prepopulate_id) { |
| 1991 default_search_provider_ = | 1977 default_search_provider_ = |
| 1992 FindPrepopulatedTemplateURL(data->prepopulate_id); | 1978 FindPrepopulatedTemplateURL(data->prepopulate_id); |
| 1993 } | 1979 } |
| 1994 TemplateURLData new_data(*data); | 1980 TemplateURLData new_data(*data); |
| 1995 if (default_search_provider_) { | 1981 if (default_search_provider_) { |
| 1996 UpdateNoNotify(default_search_provider_, TemplateURL(new_data)); | 1982 UpdateNoNotify(default_search_provider_, TemplateURL(new_data)); |
| 1997 } else { | 1983 } else { |
| 1998 new_data.id = kInvalidTemplateURLID; | 1984 new_data.id = kInvalidTemplateURLID; |
| 1999 std::unique_ptr<TemplateURL> new_dse_ptr = | 1985 default_search_provider_ = |
| 2000 base::MakeUnique<TemplateURL>(new_data); | 1986 AddNoNotify(base::MakeUnique<TemplateURL>(new_data), true); |
| 2001 TemplateURL* new_dse = new_dse_ptr.get(); | |
| 2002 if (AddNoNotify(std::move(new_dse_ptr), true)) | |
| 2003 default_search_provider_ = new_dse; | |
| 2004 } | 1987 } |
| 2005 if (default_search_provider_ && prefs_) { | 1988 if (default_search_provider_ && prefs_) { |
| 2006 prefs_->SetString(prefs::kSyncedDefaultSearchProviderGUID, | 1989 prefs_->SetString(prefs::kSyncedDefaultSearchProviderGUID, |
| 2007 default_search_provider_->sync_guid()); | 1990 default_search_provider_->sync_guid()); |
| 2008 } | 1991 } |
| 2009 } | 1992 } |
| 2010 | 1993 |
| 2011 bool changed = default_search_provider_ != previous_default_search_engine; | 1994 bool changed = default_search_provider_ != previous_default_search_engine; |
| 2012 if (changed) | 1995 if (changed) |
| 2013 RequestGoogleURLTrackerServerCheckIfNecessary(); | 1996 RequestGoogleURLTrackerServerCheckIfNecessary(); |
| (...skipping 466 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2480 if (!IsCreatedByExtension(template_url.get())) { | 2463 if (!IsCreatedByExtension(template_url.get())) { |
| 2481 if (keyword_to_template_url.find(template_url->keyword()) != | 2464 if (keyword_to_template_url.find(template_url->keyword()) != |
| 2482 keyword_to_template_url.end()) { | 2465 keyword_to_template_url.end()) { |
| 2483 return true; | 2466 return true; |
| 2484 } | 2467 } |
| 2485 keyword_to_template_url[template_url->keyword()] = template_url.get(); | 2468 keyword_to_template_url[template_url->keyword()] = template_url.get(); |
| 2486 } | 2469 } |
| 2487 } | 2470 } |
| 2488 return false; | 2471 return false; |
| 2489 } | 2472 } |
| OLD | NEW |