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

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

Issue 355573008: Split keyword related parts of WebDataService as KeywordWebDataService (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 years, 5 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 #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 13 matching lines...) Expand all
24 #include "chrome/browser/chrome_notification_types.h" 24 #include "chrome/browser/chrome_notification_types.h"
25 #include "chrome/browser/google/google_url_tracker_factory.h" 25 #include "chrome/browser/google/google_url_tracker_factory.h"
26 #include "chrome/browser/history/history_service.h" 26 #include "chrome/browser/history/history_service.h"
27 #include "chrome/browser/history/history_service_factory.h" 27 #include "chrome/browser/history/history_service_factory.h"
28 #include "chrome/browser/profiles/profile.h" 28 #include "chrome/browser/profiles/profile.h"
29 #include "chrome/browser/rlz/rlz.h" 29 #include "chrome/browser/rlz/rlz.h"
30 #include "chrome/browser/search_engines/search_host_to_urls_map.h" 30 #include "chrome/browser/search_engines/search_host_to_urls_map.h"
31 #include "chrome/browser/search_engines/template_url_service_observer.h" 31 #include "chrome/browser/search_engines/template_url_service_observer.h"
32 #include "chrome/browser/search_engines/ui_thread_search_terms_data.h" 32 #include "chrome/browser/search_engines/ui_thread_search_terms_data.h"
33 #include "chrome/browser/search_engines/util.h" 33 #include "chrome/browser/search_engines/util.h"
34 #include "chrome/browser/webdata/web_data_service.h" 34 #include "chrome/browser/webdata/web_data_service_factory.h"
35 #include "components/rappor/rappor_service.h" 35 #include "components/rappor/rappor_service.h"
36 #include "components/search_engines/search_engines_pref_names.h" 36 #include "components/search_engines/search_engines_pref_names.h"
37 #include "components/search_engines/template_url.h" 37 #include "components/search_engines/template_url.h"
38 #include "components/search_engines/template_url_prepopulate_data.h" 38 #include "components/search_engines/template_url_prepopulate_data.h"
39 #include "components/url_fixer/url_fixer.h" 39 #include "components/url_fixer/url_fixer.h"
40 #include "content/public/browser/notification_details.h" 40 #include "content/public/browser/notification_details.h"
41 #include "content/public/browser/notification_source.h" 41 #include "content/public/browser/notification_source.h"
42 #include "net/base/net_util.h" 42 #include "net/base/net_util.h"
43 #include "net/base/registry_controlled_domains/registry_controlled_domain.h" 43 #include "net/base/registry_controlled_domains/registry_controlled_domain.h"
44 #include "sync/api/sync_change.h" 44 #include "sync/api/sync_change.h"
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
213 TemplateURLService::TemplateURLService(const Initializer* initializers, 213 TemplateURLService::TemplateURLService(const Initializer* initializers,
214 const int count) 214 const int count)
215 : provider_map_(new SearchHostToURLsMap), 215 : provider_map_(new SearchHostToURLsMap),
216 profile_(NULL), 216 profile_(NULL),
217 prefs_(NULL), 217 prefs_(NULL),
218 rappor_service_(NULL), 218 rappor_service_(NULL),
219 search_terms_data_(new UIThreadSearchTermsData(NULL)), 219 search_terms_data_(new UIThreadSearchTermsData(NULL)),
220 loaded_(false), 220 loaded_(false),
221 load_failed_(false), 221 load_failed_(false),
222 load_handle_(0), 222 load_handle_(0),
223 service_(NULL),
224 default_search_provider_(NULL), 223 default_search_provider_(NULL),
225 next_id_(kInvalidTemplateURLID + 1), 224 next_id_(kInvalidTemplateURLID + 1),
226 time_provider_(&base::Time::Now), 225 time_provider_(&base::Time::Now),
227 models_associated_(false), 226 models_associated_(false),
228 processing_syncer_changes_(false), 227 processing_syncer_changes_(false),
229 dsp_change_origin_(DSP_CHANGE_OTHER), 228 dsp_change_origin_(DSP_CHANGE_OTHER),
230 default_search_manager_( 229 default_search_manager_(
231 prefs_, 230 prefs_,
232 base::Bind(&TemplateURLService::OnDefaultSearchChange, 231 base::Bind(&TemplateURLService::OnDefaultSearchChange,
233 base::Unretained(this))) { 232 base::Unretained(this))) {
234 Init(initializers, count); 233 Init(initializers, count);
235 } 234 }
236 235
237 TemplateURLService::~TemplateURLService() { 236 TemplateURLService::~TemplateURLService() {
238 // |service_| should be deleted during Shutdown(). 237 // |web_data_service_| should be deleted during Shutdown().
239 DCHECK(!service_); 238 DCHECK(!web_data_service_);
240 STLDeleteElements(&template_urls_); 239 STLDeleteElements(&template_urls_);
241 } 240 }
242 241
243 // static 242 // static
244 bool TemplateURLService::LoadDefaultSearchProviderFromPrefs( 243 bool TemplateURLService::LoadDefaultSearchProviderFromPrefs(
245 PrefService* prefs, 244 PrefService* prefs,
246 scoped_ptr<TemplateURLData>* default_provider_data, 245 scoped_ptr<TemplateURLData>* default_provider_data,
247 bool* is_managed) { 246 bool* is_managed) {
248 if (!prefs || !prefs->HasPrefPath(prefs::kDefaultSearchProviderSearchURL) || 247 if (!prefs || !prefs->HasPrefPath(prefs::kDefaultSearchProviderSearchURL) ||
249 !prefs->HasPrefPath(prefs::kDefaultSearchProviderKeyword)) 248 !prefs->HasPrefPath(prefs::kDefaultSearchProviderKeyword))
(...skipping 281 matching lines...) Expand 10 before | Expand all | Expand 10 after
531 if (loaded_) 530 if (loaded_)
532 return provider_map_->GetTemplateURLForHost(host); 531 return provider_map_->GetTemplateURLForHost(host);
533 TemplateURL* initial_dsp = initial_default_search_provider_.get(); 532 TemplateURL* initial_dsp = initial_default_search_provider_.get();
534 if (!initial_dsp) 533 if (!initial_dsp)
535 return NULL; 534 return NULL;
536 return (initial_dsp->GenerateSearchURL(search_terms_data()).host() == host) ? 535 return (initial_dsp->GenerateSearchURL(search_terms_data()).host() == host) ?
537 initial_dsp : NULL; 536 initial_dsp : NULL;
538 } 537 }
539 538
540 bool TemplateURLService::Add(TemplateURL* template_url) { 539 bool TemplateURLService::Add(TemplateURL* template_url) {
541 WebDataService::KeywordBatchModeScoper keyword_scoper(service_.get()); 540 KeywordWebDataService::BatchModeScoper scoper(web_data_service_.get());
542 if (!AddNoNotify(template_url, true)) 541 if (!AddNoNotify(template_url, true))
543 return false; 542 return false;
544 NotifyObservers(); 543 NotifyObservers();
545 return true; 544 return true;
546 } 545 }
547 546
548 void TemplateURLService::AddWithOverrides(TemplateURL* template_url, 547 void TemplateURLService::AddWithOverrides(TemplateURL* template_url,
549 const base::string16& short_name, 548 const base::string16& short_name,
550 const base::string16& keyword, 549 const base::string16& keyword,
551 const std::string& url) { 550 const std::string& url) {
(...skipping 11 matching lines...) Expand all
563 DCHECK(loaded_); 562 DCHECK(loaded_);
564 DCHECK(template_url); 563 DCHECK(template_url);
565 DCHECK_EQ(kInvalidTemplateURLID, template_url->id()); 564 DCHECK_EQ(kInvalidTemplateURLID, template_url->id());
566 DCHECK(info); 565 DCHECK(info);
567 DCHECK_NE(TemplateURL::NORMAL, info->type); 566 DCHECK_NE(TemplateURL::NORMAL, info->type);
568 DCHECK_EQ(info->wants_to_be_default_engine, 567 DCHECK_EQ(info->wants_to_be_default_engine,
569 template_url->show_in_default_list()); 568 template_url->show_in_default_list());
570 DCHECK(!FindTemplateURLForExtension(info->extension_id, info->type)); 569 DCHECK(!FindTemplateURLForExtension(info->extension_id, info->type));
571 template_url->extension_info_.swap(info); 570 template_url->extension_info_.swap(info);
572 571
573 WebDataService::KeywordBatchModeScoper keyword_scoper(service_.get()); 572 KeywordWebDataService::BatchModeScoper scoper(web_data_service_.get());
574 if (AddNoNotify(template_url, true)) { 573 if (AddNoNotify(template_url, true)) {
575 if (template_url->extension_info_->wants_to_be_default_engine) 574 if (template_url->extension_info_->wants_to_be_default_engine)
576 UpdateExtensionDefaultSearchEngine(); 575 UpdateExtensionDefaultSearchEngine();
577 NotifyObservers(); 576 NotifyObservers();
578 } 577 }
579 } 578 }
580 579
581 void TemplateURLService::Remove(TemplateURL* template_url) { 580 void TemplateURLService::Remove(TemplateURL* template_url) {
582 RemoveNoNotify(template_url); 581 RemoveNoNotify(template_url);
583 NotifyObservers(); 582 NotifyObservers();
584 } 583 }
585 584
586 void TemplateURLService::RemoveExtensionControlledTURL( 585 void TemplateURLService::RemoveExtensionControlledTURL(
587 const std::string& extension_id, 586 const std::string& extension_id,
588 TemplateURL::Type type) { 587 TemplateURL::Type type) {
589 DCHECK(loaded_); 588 DCHECK(loaded_);
590 TemplateURL* url = FindTemplateURLForExtension(extension_id, type); 589 TemplateURL* url = FindTemplateURLForExtension(extension_id, type);
591 if (!url) 590 if (!url)
592 return; 591 return;
593 // NULL this out so that we can call RemoveNoNotify. 592 // NULL this out so that we can call RemoveNoNotify.
594 // UpdateExtensionDefaultSearchEngine will cause it to be reset. 593 // UpdateExtensionDefaultSearchEngine will cause it to be reset.
595 if (default_search_provider_ == url) 594 if (default_search_provider_ == url)
596 default_search_provider_ = NULL; 595 default_search_provider_ = NULL;
597 WebDataService::KeywordBatchModeScoper keyword_scoper(service_.get()); 596 KeywordWebDataService::BatchModeScoper scoper(web_data_service_.get());
598 RemoveNoNotify(url); 597 RemoveNoNotify(url);
599 UpdateExtensionDefaultSearchEngine(); 598 UpdateExtensionDefaultSearchEngine();
600 NotifyObservers(); 599 NotifyObservers();
601 } 600 }
602 601
603 void TemplateURLService::RemoveAutoGeneratedSince(base::Time created_after) { 602 void TemplateURLService::RemoveAutoGeneratedSince(base::Time created_after) {
604 RemoveAutoGeneratedBetween(created_after, base::Time()); 603 RemoveAutoGeneratedBetween(created_after, base::Time());
605 } 604 }
606 605
607 void TemplateURLService::RemoveAutoGeneratedBetween(base::Time created_after, 606 void TemplateURLService::RemoveAutoGeneratedBetween(base::Time created_after,
608 base::Time created_before) { 607 base::Time created_before) {
609 RemoveAutoGeneratedForOriginBetween(GURL(), created_after, created_before); 608 RemoveAutoGeneratedForOriginBetween(GURL(), created_after, created_before);
610 } 609 }
611 610
612 void TemplateURLService::RemoveAutoGeneratedForOriginBetween( 611 void TemplateURLService::RemoveAutoGeneratedForOriginBetween(
613 const GURL& origin, 612 const GURL& origin,
614 base::Time created_after, 613 base::Time created_after,
615 base::Time created_before) { 614 base::Time created_before) {
616 GURL o(origin.GetOrigin()); 615 GURL o(origin.GetOrigin());
617 bool should_notify = false; 616 bool should_notify = false;
618 WebDataService::KeywordBatchModeScoper keyword_scoper(service_.get()); 617 KeywordWebDataService::BatchModeScoper scoper(web_data_service_.get());
619 for (size_t i = 0; i < template_urls_.size();) { 618 for (size_t i = 0; i < template_urls_.size();) {
620 if (template_urls_[i]->date_created() >= created_after && 619 if (template_urls_[i]->date_created() >= created_after &&
621 (created_before.is_null() || 620 (created_before.is_null() ||
622 template_urls_[i]->date_created() < created_before) && 621 template_urls_[i]->date_created() < created_before) &&
623 CanReplace(template_urls_[i]) && 622 CanReplace(template_urls_[i]) &&
624 (o.is_empty() || 623 (o.is_empty() ||
625 template_urls_[i]->GenerateSearchURL( 624 template_urls_[i]->GenerateSearchURL(
626 search_terms_data()).GetOrigin() == o)) { 625 search_terms_data()).GetOrigin() == o)) {
627 RemoveNoNotify(template_urls_[i]); 626 RemoveNoNotify(template_urls_[i]);
628 should_notify = true; 627 should_notify = true;
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
663 void TemplateURLService::IncrementUsageCount(TemplateURL* url) { 662 void TemplateURLService::IncrementUsageCount(TemplateURL* url) {
664 DCHECK(url); 663 DCHECK(url);
665 // Extension-controlled search engines are not persisted. 664 // Extension-controlled search engines are not persisted.
666 if (url->GetType() == TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION) 665 if (url->GetType() == TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION)
667 return; 666 return;
668 if (std::find(template_urls_.begin(), template_urls_.end(), url) == 667 if (std::find(template_urls_.begin(), template_urls_.end(), url) ==
669 template_urls_.end()) 668 template_urls_.end())
670 return; 669 return;
671 ++url->data_.usage_count; 670 ++url->data_.usage_count;
672 671
673 if (service_) 672 if (web_data_service_)
674 service_->UpdateKeyword(url->data()); 673 web_data_service_->UpdateKeyword(url->data());
675 } 674 }
676 675
677 void TemplateURLService::ResetTemplateURL(TemplateURL* url, 676 void TemplateURLService::ResetTemplateURL(TemplateURL* url,
678 const base::string16& title, 677 const base::string16& title,
679 const base::string16& keyword, 678 const base::string16& keyword,
680 const std::string& search_url) { 679 const std::string& search_url) {
681 if (ResetTemplateURLNoNotify(url, title, keyword, search_url)) 680 if (ResetTemplateURLNoNotify(url, title, keyword, search_url))
682 NotifyObservers(); 681 NotifyObservers();
683 } 682 }
684 683
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
746 } 745 }
747 746
748 size_t default_search_provider_index = 0; 747 size_t default_search_provider_index = 0;
749 ScopedVector<TemplateURLData> prepopulated_urls = 748 ScopedVector<TemplateURLData> prepopulated_urls =
750 TemplateURLPrepopulateData::GetPrepopulatedEngines( 749 TemplateURLPrepopulateData::GetPrepopulatedEngines(
751 prefs_, &default_search_provider_index); 750 prefs_, &default_search_provider_index);
752 DCHECK(!prepopulated_urls.empty()); 751 DCHECK(!prepopulated_urls.empty());
753 ActionsFromPrepopulateData actions(CreateActionsFromCurrentPrepopulateData( 752 ActionsFromPrepopulateData actions(CreateActionsFromCurrentPrepopulateData(
754 &prepopulated_urls, template_urls_, default_search_provider_)); 753 &prepopulated_urls, template_urls_, default_search_provider_));
755 754
756 WebDataService::KeywordBatchModeScoper keyword_scoper(service_.get()); 755 KeywordWebDataService::BatchModeScoper scoper(web_data_service_.get());
757 756
758 // Remove items. 757 // Remove items.
759 for (std::vector<TemplateURL*>::iterator i = actions.removed_engines.begin(); 758 for (std::vector<TemplateURL*>::iterator i = actions.removed_engines.begin();
760 i < actions.removed_engines.end(); ++i) 759 i < actions.removed_engines.end(); ++i)
761 RemoveNoNotify(*i); 760 RemoveNoNotify(*i);
762 761
763 // Edit items. 762 // Edit items.
764 for (EditedEngines::iterator i(actions.edited_engines.begin()); 763 for (EditedEngines::iterator i(actions.edited_engines.begin());
765 i < actions.edited_engines.end(); ++i) { 764 i < actions.edited_engines.end(); ++i) {
766 TemplateURL new_values(i->second); 765 TemplateURL new_values(i->second);
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
801 } 800 }
802 801
803 void TemplateURLService::RemoveObserver(TemplateURLServiceObserver* observer) { 802 void TemplateURLService::RemoveObserver(TemplateURLServiceObserver* observer) {
804 model_observers_.RemoveObserver(observer); 803 model_observers_.RemoveObserver(observer);
805 } 804 }
806 805
807 void TemplateURLService::Load() { 806 void TemplateURLService::Load() {
808 if (loaded_ || load_handle_) 807 if (loaded_ || load_handle_)
809 return; 808 return;
810 809
811 if (!service_) 810 if (!web_data_service_) {
812 service_ = WebDataService::FromBrowserContext(profile_); 811 web_data_service_ = WebDataServiceFactory::GetKeywordWebDataForProfile(
812 profile_, Profile::EXPLICIT_ACCESS);
813 }
813 814
814 if (service_) 815 if (web_data_service_)
815 load_handle_ = service_->GetKeywords(this); 816 load_handle_ = web_data_service_->GetKeywords(this);
816 else 817 else
817 ChangeToLoadedState(); 818 ChangeToLoadedState();
818 } 819 }
819 820
820 scoped_ptr<TemplateURLService::Subscription> 821 scoped_ptr<TemplateURLService::Subscription>
821 TemplateURLService::RegisterOnLoadedCallback( 822 TemplateURLService::RegisterOnLoadedCallback(
822 const base::Closure& callback) { 823 const base::Closure& callback) {
823 return loaded_ ? 824 return loaded_ ?
824 scoped_ptr<TemplateURLService::Subscription>() : 825 scoped_ptr<TemplateURLService::Subscription>() :
825 on_loaded_callbacks_.Add(callback); 826 on_loaded_callbacks_.Add(callback);
826 } 827 }
827 828
828 void TemplateURLService::OnWebDataServiceRequestDone( 829 void TemplateURLService::OnWebDataServiceRequestDone(
829 WebDataService::Handle h, 830 KeywordWebDataService::Handle h,
830 const WDTypedResult* result) { 831 const WDTypedResult* result) {
831 // Reset the load_handle so that we don't try and cancel the load in 832 // Reset the load_handle so that we don't try and cancel the load in
832 // the destructor. 833 // the destructor.
833 load_handle_ = 0; 834 load_handle_ = 0;
834 835
835 if (!result) { 836 if (!result) {
836 // Results are null if the database went away or (most likely) wasn't 837 // Results are null if the database went away or (most likely) wasn't
837 // loaded. 838 // loaded.
838 load_failed_ = true; 839 load_failed_ = true;
839 service_ = NULL; 840 web_data_service_ = NULL;
840 ChangeToLoadedState(); 841 ChangeToLoadedState();
841 return; 842 return;
842 } 843 }
843 844
844 TemplateURLVector template_urls; 845 TemplateURLVector template_urls;
845 int new_resource_keyword_version = 0; 846 int new_resource_keyword_version = 0;
846 GetSearchProvidersUsingKeywordResult( 847 GetSearchProvidersUsingKeywordResult(
847 *result, 848 *result,
848 service_.get(), 849 web_data_service_.get(),
849 prefs_, 850 prefs_,
850 &template_urls, 851 &template_urls,
851 (default_search_provider_source_ == DefaultSearchManager::FROM_USER) ? 852 (default_search_provider_source_ == DefaultSearchManager::FROM_USER) ?
852 initial_default_search_provider_.get() : NULL, 853 initial_default_search_provider_.get() : NULL,
853 search_terms_data(), 854 search_terms_data(),
854 &new_resource_keyword_version, 855 &new_resource_keyword_version,
855 &pre_sync_deletes_); 856 &pre_sync_deletes_);
856 857
857 WebDataService::KeywordBatchModeScoper keyword_scoper(service_.get()); 858 KeywordWebDataService::BatchModeScoper scoper(web_data_service_.get());
858 859
859 PatchMissingSyncGUIDs(&template_urls); 860 PatchMissingSyncGUIDs(&template_urls);
860 SetTemplateURLs(&template_urls); 861 SetTemplateURLs(&template_urls);
861 862
862 // This initializes provider_map_ which should be done before 863 // This initializes provider_map_ which should be done before
863 // calling UpdateKeywordSearchTermsForURL. 864 // calling UpdateKeywordSearchTermsForURL.
864 // This also calls NotifyObservers. 865 // This also calls NotifyObservers.
865 ChangeToLoadedState(); 866 ChangeToLoadedState();
866 867
867 // Index any visits that occurred before we finished loading. 868 // Index any visits that occurred before we finished loading.
868 for (size_t i = 0; i < visits_to_add_.size(); ++i) 869 for (size_t i = 0; i < visits_to_add_.size(); ++i)
869 UpdateKeywordSearchTermsForURL(visits_to_add_[i]); 870 UpdateKeywordSearchTermsForURL(visits_to_add_[i]);
870 visits_to_add_.clear(); 871 visits_to_add_.clear();
871 872
872 if (new_resource_keyword_version) 873 if (new_resource_keyword_version)
873 service_->SetBuiltinKeywordVersion(new_resource_keyword_version); 874 web_data_service_->SetBuiltinKeywordVersion(new_resource_keyword_version);
874 875
875 if (default_search_provider_) { 876 if (default_search_provider_) {
876 UMA_HISTOGRAM_ENUMERATION( 877 UMA_HISTOGRAM_ENUMERATION(
877 "Search.DefaultSearchProviderType", 878 "Search.DefaultSearchProviderType",
878 TemplateURLPrepopulateData::GetEngineType( 879 TemplateURLPrepopulateData::GetEngineType(
879 *default_search_provider_, search_terms_data()), 880 *default_search_provider_, search_terms_data()),
880 SEARCH_ENGINE_MAX); 881 SEARCH_ENGINE_MAX);
881 882
882 if (rappor_service_) { 883 if (rappor_service_) {
883 rappor_service_->RecordSample( 884 rappor_service_->RecordSample(
(...skipping 28 matching lines...) Expand all
912 DCHECK_EQ(type, chrome::NOTIFICATION_HISTORY_URL_VISITED); 913 DCHECK_EQ(type, chrome::NOTIFICATION_HISTORY_URL_VISITED);
913 content::Details<history::URLVisitedDetails> visit_details(details); 914 content::Details<history::URLVisitedDetails> visit_details(details);
914 if (!loaded_) 915 if (!loaded_)
915 visits_to_add_.push_back(*visit_details.ptr()); 916 visits_to_add_.push_back(*visit_details.ptr());
916 else 917 else
917 UpdateKeywordSearchTermsForURL(*visit_details.ptr()); 918 UpdateKeywordSearchTermsForURL(*visit_details.ptr());
918 } 919 }
919 920
920 void TemplateURLService::Shutdown() { 921 void TemplateURLService::Shutdown() {
921 // This check has to be done at Shutdown() instead of in the dtor to ensure 922 // This check has to be done at Shutdown() instead of in the dtor to ensure
922 // that no clients of WebDataService are holding ptrs to it after the first 923 // that no clients of KeywordWebDataService are holding ptrs to it after the
923 // phase of the KeyedService Shutdown() process. 924 // first phase of the KeyedService Shutdown() process.
924 if (load_handle_) { 925 if (load_handle_) {
925 DCHECK(service_.get()); 926 DCHECK(web_data_service_.get());
926 service_->CancelRequest(load_handle_); 927 web_data_service_->CancelRequest(load_handle_);
927 } 928 }
928 service_ = NULL; 929 web_data_service_ = NULL;
929 } 930 }
930 931
931 syncer::SyncDataList TemplateURLService::GetAllSyncData( 932 syncer::SyncDataList TemplateURLService::GetAllSyncData(
932 syncer::ModelType type) const { 933 syncer::ModelType type) const {
933 DCHECK_EQ(syncer::SEARCH_ENGINES, type); 934 DCHECK_EQ(syncer::SEARCH_ENGINES, type);
934 935
935 syncer::SyncDataList current_data; 936 syncer::SyncDataList current_data;
936 for (TemplateURLVector::const_iterator iter = template_urls_.begin(); 937 for (TemplateURLVector::const_iterator iter = template_urls_.begin();
937 iter != template_urls_.end(); ++iter) { 938 iter != template_urls_.end(); ++iter) {
938 // We don't sync keywords managed by policy. 939 // We don't sync keywords managed by policy.
(...skipping 21 matching lines...) Expand all
960 DCHECK(loaded_); 961 DCHECK(loaded_);
961 962
962 base::AutoReset<bool> processing_changes(&processing_syncer_changes_, true); 963 base::AutoReset<bool> processing_changes(&processing_syncer_changes_, true);
963 964
964 // We've started syncing, so set our origin member to the base Sync value. 965 // We've started syncing, so set our origin member to the base Sync value.
965 // As we move through Sync Code, we may set this to increasingly specific 966 // As we move through Sync Code, we may set this to increasingly specific
966 // origins so we can tell what exactly caused a DSP change. 967 // origins so we can tell what exactly caused a DSP change.
967 base::AutoReset<DefaultSearchChangeOrigin> change_origin(&dsp_change_origin_, 968 base::AutoReset<DefaultSearchChangeOrigin> change_origin(&dsp_change_origin_,
968 DSP_CHANGE_SYNC_UNINTENTIONAL); 969 DSP_CHANGE_SYNC_UNINTENTIONAL);
969 970
970 WebDataService::KeywordBatchModeScoper keyword_scoper(service_.get()); 971 KeywordWebDataService::BatchModeScoper scoper(web_data_service_.get());
971 972
972 syncer::SyncChangeList new_changes; 973 syncer::SyncChangeList new_changes;
973 syncer::SyncError error; 974 syncer::SyncError error;
974 for (syncer::SyncChangeList::const_iterator iter = change_list.begin(); 975 for (syncer::SyncChangeList::const_iterator iter = change_list.begin();
975 iter != change_list.end(); ++iter) { 976 iter != change_list.end(); ++iter) {
976 DCHECK_EQ(syncer::SEARCH_ENGINES, iter->sync_data().GetDataType()); 977 DCHECK_EQ(syncer::SEARCH_ENGINES, iter->sync_data().GetDataType());
977 978
978 std::string guid = 979 std::string guid =
979 iter->sync_data().GetSpecifics().search_engine().sync_guid(); 980 iter->sync_data().GetSpecifics().search_engine().sync_guid();
980 TemplateURL* existing_turl = GetTemplateURLForGUID(guid); 981 TemplateURL* existing_turl = GetTemplateURLForGUID(guid);
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
1119 base::AutoReset<DefaultSearchChangeOrigin> change_origin(&dsp_change_origin_, 1120 base::AutoReset<DefaultSearchChangeOrigin> change_origin(&dsp_change_origin_,
1120 DSP_CHANGE_SYNC_UNINTENTIONAL); 1121 DSP_CHANGE_SYNC_UNINTENTIONAL);
1121 1122
1122 syncer::SyncChangeList new_changes; 1123 syncer::SyncChangeList new_changes;
1123 1124
1124 // Build maps of our sync GUIDs to syncer::SyncData. 1125 // Build maps of our sync GUIDs to syncer::SyncData.
1125 SyncDataMap local_data_map = CreateGUIDToSyncDataMap( 1126 SyncDataMap local_data_map = CreateGUIDToSyncDataMap(
1126 GetAllSyncData(syncer::SEARCH_ENGINES)); 1127 GetAllSyncData(syncer::SEARCH_ENGINES));
1127 SyncDataMap sync_data_map = CreateGUIDToSyncDataMap(initial_sync_data); 1128 SyncDataMap sync_data_map = CreateGUIDToSyncDataMap(initial_sync_data);
1128 1129
1129 WebDataService::KeywordBatchModeScoper keyword_scoper(service_.get()); 1130 KeywordWebDataService::BatchModeScoper scoper(web_data_service_.get());
1130 1131
1131 merge_result.set_num_items_before_association(local_data_map.size()); 1132 merge_result.set_num_items_before_association(local_data_map.size());
1132 for (SyncDataMap::const_iterator iter = sync_data_map.begin(); 1133 for (SyncDataMap::const_iterator iter = sync_data_map.begin();
1133 iter != sync_data_map.end(); ++iter) { 1134 iter != sync_data_map.end(); ++iter) {
1134 TemplateURL* local_turl = GetTemplateURLForGUID(iter->first); 1135 TemplateURL* local_turl = GetTemplateURLForGUID(iter->first);
1135 scoped_ptr<TemplateURL> sync_turl( 1136 scoped_ptr<TemplateURL> sync_turl(
1136 CreateTemplateURLFromTemplateURLAndSyncData( 1137 CreateTemplateURLFromTemplateURLAndSyncData(
1137 prefs_, search_terms_data(), local_turl, iter->second, 1138 prefs_, search_terms_data(), local_turl, iter->second,
1138 &new_changes)); 1139 &new_changes));
1139 if (!sync_turl.get()) 1140 if (!sync_turl.get())
(...skipping 312 matching lines...) Expand 10 before | Expand all | Expand 10 after
1452 TemplateURLData* dse = 1453 TemplateURLData* dse =
1453 default_search_manager_.GetDefaultSearchEngine(&source); 1454 default_search_manager_.GetDefaultSearchEngine(&source);
1454 ApplyDefaultSearchChange(dse, source); 1455 ApplyDefaultSearchChange(dse, source);
1455 1456
1456 if (num_initializers > 0) { 1457 if (num_initializers > 0) {
1457 // This path is only hit by test code and is used to simulate a loaded 1458 // This path is only hit by test code and is used to simulate a loaded
1458 // TemplateURLService. 1459 // TemplateURLService.
1459 ChangeToLoadedState(); 1460 ChangeToLoadedState();
1460 1461
1461 // Add specific initializers, if any. 1462 // Add specific initializers, if any.
1462 WebDataService::KeywordBatchModeScoper keyword_scoper(service_.get()); 1463 KeywordWebDataService::BatchModeScoper scoper(web_data_service_.get());
1463 for (int i(0); i < num_initializers; ++i) { 1464 for (int i(0); i < num_initializers; ++i) {
1464 DCHECK(initializers[i].keyword); 1465 DCHECK(initializers[i].keyword);
1465 DCHECK(initializers[i].url); 1466 DCHECK(initializers[i].url);
1466 DCHECK(initializers[i].content); 1467 DCHECK(initializers[i].content);
1467 1468
1468 // TemplateURLService ends up owning the TemplateURL, don't try and free 1469 // TemplateURLService ends up owning the TemplateURL, don't try and free
1469 // it. 1470 // it.
1470 TemplateURLData data; 1471 TemplateURLData data;
1471 data.short_name = base::UTF8ToUTF16(initializers[i].content); 1472 data.short_name = base::UTF8ToUTF16(initializers[i].content);
1472 data.SetKeyword(base::UTF8ToUTF16(initializers[i].keyword)); 1473 data.SetKeyword(base::UTF8ToUTF16(initializers[i].keyword));
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after
1691 RemoveNoNotify(existing_keyword_turl); 1692 RemoveNoNotify(existing_keyword_turl);
1692 } else { 1693 } else {
1693 existing_turl->data_.SetKeyword(old_keyword); 1694 existing_turl->data_.SetKeyword(old_keyword);
1694 keyword_to_template_map_[old_keyword] = existing_turl; 1695 keyword_to_template_map_[old_keyword] = existing_turl;
1695 } 1696 }
1696 } 1697 }
1697 } 1698 }
1698 if (!existing_turl->sync_guid().empty()) 1699 if (!existing_turl->sync_guid().empty())
1699 guid_to_template_map_[existing_turl->sync_guid()] = existing_turl; 1700 guid_to_template_map_[existing_turl->sync_guid()] = existing_turl;
1700 1701
1701 if (service_) 1702 if (web_data_service_)
1702 service_->UpdateKeyword(existing_turl->data()); 1703 web_data_service_->UpdateKeyword(existing_turl->data());
1703 1704
1704 // Inform sync of the update. 1705 // Inform sync of the update.
1705 ProcessTemplateURLChange( 1706 ProcessTemplateURLChange(
1706 FROM_HERE, existing_turl, syncer::SyncChange::ACTION_UPDATE); 1707 FROM_HERE, existing_turl, syncer::SyncChange::ACTION_UPDATE);
1707 1708
1708 if (default_search_provider_ == existing_turl && 1709 if (default_search_provider_ == existing_turl &&
1709 default_search_provider_source_ == DefaultSearchManager::FROM_USER) { 1710 default_search_provider_source_ == DefaultSearchManager::FROM_USER) {
1710 default_search_manager_.SetUserSelectedDefaultSearchEngine( 1711 default_search_manager_.SetUserSelectedDefaultSearchEngine(
1711 default_search_provider_->data()); 1712 default_search_provider_->data());
1712 } 1713 }
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
1795 1796
1796 // Synthesize a visit for the keyword. This ensures the url for the keyword is 1797 // Synthesize a visit for the keyword. This ensures the url for the keyword is
1797 // autocompleted even if the user doesn't type the url in directly. 1798 // autocompleted even if the user doesn't type the url in directly.
1798 history->AddPage(url, base::Time::Now(), NULL, 0, GURL(), 1799 history->AddPage(url, base::Time::Now(), NULL, 0, GURL(),
1799 history::RedirectList(), 1800 history::RedirectList(),
1800 content::PAGE_TRANSITION_KEYWORD_GENERATED, 1801 content::PAGE_TRANSITION_KEYWORD_GENERATED,
1801 history::SOURCE_BROWSED, false); 1802 history::SOURCE_BROWSED, false);
1802 } 1803 }
1803 1804
1804 void TemplateURLService::GoogleBaseURLChanged() { 1805 void TemplateURLService::GoogleBaseURLChanged() {
1805 WebDataService::KeywordBatchModeScoper keyword_scoper(service_.get()); 1806 KeywordWebDataService::BatchModeScoper scoper(web_data_service_.get());
1806 bool something_changed = false; 1807 bool something_changed = false;
1807 for (TemplateURLVector::iterator i(template_urls_.begin()); 1808 for (TemplateURLVector::iterator i(template_urls_.begin());
1808 i != template_urls_.end(); ++i) { 1809 i != template_urls_.end(); ++i) {
1809 TemplateURL* t_url = *i; 1810 TemplateURL* t_url = *i;
1810 if (t_url->HasGoogleBaseURLs(search_terms_data())) { 1811 if (t_url->HasGoogleBaseURLs(search_terms_data())) {
1811 TemplateURL updated_turl(t_url->data()); 1812 TemplateURL updated_turl(t_url->data());
1812 updated_turl.ResetKeywordIfNecessary(search_terms_data(), false); 1813 updated_turl.ResetKeywordIfNecessary(search_terms_data(), false);
1813 KeywordToTemplateMap::const_iterator existing_entry = 1814 KeywordToTemplateMap::const_iterator existing_entry =
1814 keyword_to_template_map_.find(updated_turl.keyword()); 1815 keyword_to_template_map_.find(updated_turl.keyword());
1815 if ((existing_entry != keyword_to_template_map_.end()) && 1816 if ((existing_entry != keyword_to_template_map_.end()) &&
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
1892 // NULL due to policy. We'll never actually get recursion with data == NULL. 1893 // NULL due to policy. We'll never actually get recursion with data == NULL.
1893 if (source == default_search_provider_source_ && data != NULL && 1894 if (source == default_search_provider_source_ && data != NULL &&
1894 TemplateURL::MatchesData(default_search_provider_, data, 1895 TemplateURL::MatchesData(default_search_provider_, data,
1895 search_terms_data())) 1896 search_terms_data()))
1896 return false; 1897 return false;
1897 1898
1898 // This may be deleted later. Use exclusively for pointer comparison to detect 1899 // This may be deleted later. Use exclusively for pointer comparison to detect
1899 // a change. 1900 // a change.
1900 TemplateURL* previous_default_search_engine = default_search_provider_; 1901 TemplateURL* previous_default_search_engine = default_search_provider_;
1901 1902
1902 WebDataService::KeywordBatchModeScoper keyword_scoper(service_.get()); 1903 KeywordWebDataService::BatchModeScoper scoper(web_data_service_.get());
1903 if (default_search_provider_source_ == DefaultSearchManager::FROM_POLICY || 1904 if (default_search_provider_source_ == DefaultSearchManager::FROM_POLICY ||
1904 source == DefaultSearchManager::FROM_POLICY) { 1905 source == DefaultSearchManager::FROM_POLICY) {
1905 // We do this both to remove any no-longer-applicable policy-defined DSE as 1906 // We do this both to remove any no-longer-applicable policy-defined DSE as
1906 // well as to add the new one, if appropriate. 1907 // well as to add the new one, if appropriate.
1907 UpdateProvidersCreatedByPolicy( 1908 UpdateProvidersCreatedByPolicy(
1908 &template_urls_, 1909 &template_urls_,
1909 source == DefaultSearchManager::FROM_POLICY ? data : NULL); 1910 source == DefaultSearchManager::FROM_POLICY ? data : NULL);
1910 } 1911 }
1911 1912
1912 if (!data) { 1913 if (!data) {
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
2022 existing_keyword_turl->short_name(), new_keyword, 2023 existing_keyword_turl->short_name(), new_keyword,
2023 existing_keyword_turl->url()); 2024 existing_keyword_turl->url());
2024 } 2025 }
2025 } 2026 }
2026 template_urls_.push_back(template_url); 2027 template_urls_.push_back(template_url);
2027 AddToMaps(template_url); 2028 AddToMaps(template_url);
2028 2029
2029 if (newly_adding && 2030 if (newly_adding &&
2030 (template_url->GetType() != 2031 (template_url->GetType() !=
2031 TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION)) { 2032 TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION)) {
2032 if (service_) 2033 if (web_data_service_)
2033 service_->AddKeyword(template_url->data()); 2034 web_data_service_->AddKeyword(template_url->data());
2034 2035
2035 // Inform sync of the addition. Note that this will assign a GUID to 2036 // Inform sync of the addition. Note that this will assign a GUID to
2036 // template_url and add it to the guid_to_template_map_. 2037 // template_url and add it to the guid_to_template_map_.
2037 ProcessTemplateURLChange(FROM_HERE, 2038 ProcessTemplateURLChange(FROM_HERE,
2038 template_url, 2039 template_url,
2039 syncer::SyncChange::ACTION_ADD); 2040 syncer::SyncChange::ACTION_ADD);
2040 } 2041 }
2041 2042
2042 return true; 2043 return true;
2043 } 2044 }
2044 2045
2045 void TemplateURLService::RemoveNoNotify(TemplateURL* template_url) { 2046 void TemplateURLService::RemoveNoNotify(TemplateURL* template_url) {
2046 DCHECK(template_url != default_search_provider_); 2047 DCHECK(template_url != default_search_provider_);
2047 2048
2048 TemplateURLVector::iterator i = 2049 TemplateURLVector::iterator i =
2049 std::find(template_urls_.begin(), template_urls_.end(), template_url); 2050 std::find(template_urls_.begin(), template_urls_.end(), template_url);
2050 if (i == template_urls_.end()) 2051 if (i == template_urls_.end())
2051 return; 2052 return;
2052 2053
2053 RemoveFromMaps(template_url); 2054 RemoveFromMaps(template_url);
2054 2055
2055 // Remove it from the vector containing all TemplateURLs. 2056 // Remove it from the vector containing all TemplateURLs.
2056 template_urls_.erase(i); 2057 template_urls_.erase(i);
2057 2058
2058 if (template_url->GetType() != TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION) { 2059 if (template_url->GetType() != TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION) {
2059 if (service_) 2060 if (web_data_service_)
2060 service_->RemoveKeyword(template_url->id()); 2061 web_data_service_->RemoveKeyword(template_url->id());
2061 2062
2062 // Inform sync of the deletion. 2063 // Inform sync of the deletion.
2063 ProcessTemplateURLChange(FROM_HERE, 2064 ProcessTemplateURLChange(FROM_HERE,
2064 template_url, 2065 template_url,
2065 syncer::SyncChange::ACTION_DELETE); 2066 syncer::SyncChange::ACTION_DELETE);
2066 2067
2067 UMA_HISTOGRAM_ENUMERATION(kDeleteSyncedEngineHistogramName, 2068 UMA_HISTOGRAM_ENUMERATION(kDeleteSyncedEngineHistogramName,
2068 DELETE_ENGINE_USER_ACTION, DELETE_ENGINE_MAX); 2069 DELETE_ENGINE_USER_ACTION, DELETE_ENGINE_MAX);
2069 } 2070 }
2070 2071
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
2132 // database and the |default_search_provider|. 2133 // database and the |default_search_provider|.
2133 default_search_provider_ = template_url; 2134 default_search_provider_ = template_url;
2134 // Prevent us from saving any other entries, or creating a new one. 2135 // Prevent us from saving any other entries, or creating a new one.
2135 default_from_prefs = NULL; 2136 default_from_prefs = NULL;
2136 ++i; 2137 ++i;
2137 continue; 2138 continue;
2138 } 2139 }
2139 2140
2140 RemoveFromMaps(template_url); 2141 RemoveFromMaps(template_url);
2141 i = template_urls->erase(i); 2142 i = template_urls->erase(i);
2142 if (service_) 2143 if (web_data_service_)
2143 service_->RemoveKeyword(template_url->id()); 2144 web_data_service_->RemoveKeyword(template_url->id());
2144 delete template_url; 2145 delete template_url;
2145 } else { 2146 } else {
2146 ++i; 2147 ++i;
2147 } 2148 }
2148 } 2149 }
2149 2150
2150 if (default_from_prefs) { 2151 if (default_from_prefs) {
2151 default_search_provider_ = NULL; 2152 default_search_provider_ = NULL;
2152 default_search_provider_source_ = DefaultSearchManager::FROM_POLICY; 2153 default_search_provider_source_ = DefaultSearchManager::FROM_POLICY;
2153 TemplateURLData new_data(*default_from_prefs); 2154 TemplateURLData new_data(*default_from_prefs);
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
2325 TemplateURLVector* template_urls) { 2326 TemplateURLVector* template_urls) {
2326 DCHECK(template_urls); 2327 DCHECK(template_urls);
2327 for (TemplateURLVector::iterator i = template_urls->begin(); 2328 for (TemplateURLVector::iterator i = template_urls->begin();
2328 i != template_urls->end(); ++i) { 2329 i != template_urls->end(); ++i) {
2329 TemplateURL* template_url = *i; 2330 TemplateURL* template_url = *i;
2330 DCHECK(template_url); 2331 DCHECK(template_url);
2331 if (template_url->sync_guid().empty() && 2332 if (template_url->sync_guid().empty() &&
2332 (template_url->GetType() != 2333 (template_url->GetType() !=
2333 TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION)) { 2334 TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION)) {
2334 template_url->data_.sync_guid = base::GenerateGUID(); 2335 template_url->data_.sync_guid = base::GenerateGUID();
2335 if (service_) 2336 if (web_data_service_)
2336 service_->UpdateKeyword(template_url->data()); 2337 web_data_service_->UpdateKeyword(template_url->data());
2337 } 2338 }
2338 } 2339 }
2339 } 2340 }
2340 2341
2341 void TemplateURLService::OnSyncedDefaultSearchProviderGUIDChanged() { 2342 void TemplateURLService::OnSyncedDefaultSearchProviderGUIDChanged() {
2342 base::AutoReset<DefaultSearchChangeOrigin> change_origin( 2343 base::AutoReset<DefaultSearchChangeOrigin> change_origin(
2343 &dsp_change_origin_, DSP_CHANGE_SYNC_PREF); 2344 &dsp_change_origin_, DSP_CHANGE_SYNC_PREF);
2344 2345
2345 std::string new_guid = 2346 std::string new_guid =
2346 prefs_->GetString(prefs::kSyncedDefaultSearchProviderGUID); 2347 prefs_->GetString(prefs::kSyncedDefaultSearchProviderGUID);
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
2405 2406
2406 if (most_recently_intalled_default) { 2407 if (most_recently_intalled_default) {
2407 base::AutoReset<DefaultSearchChangeOrigin> change_origin( 2408 base::AutoReset<DefaultSearchChangeOrigin> change_origin(
2408 &dsp_change_origin_, DSP_CHANGE_OVERRIDE_SETTINGS_EXTENSION); 2409 &dsp_change_origin_, DSP_CHANGE_OVERRIDE_SETTINGS_EXTENSION);
2409 default_search_manager_.SetExtensionControlledDefaultSearchEngine( 2410 default_search_manager_.SetExtensionControlledDefaultSearchEngine(
2410 most_recently_intalled_default->data()); 2411 most_recently_intalled_default->data());
2411 } else { 2412 } else {
2412 default_search_manager_.ClearExtensionControlledDefaultSearchEngine(); 2413 default_search_manager_.ClearExtensionControlledDefaultSearchEngine();
2413 } 2414 }
2414 } 2415 }
OLDNEW
« no previous file with comments | « chrome/browser/search_engines/template_url_service.h ('k') | chrome/browser/search_engines/template_url_service_test_util.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698