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

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: Add OWNERS 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 15 matching lines...) Expand all
26 #include "chrome/browser/google/google_url_tracker_factory.h" 26 #include "chrome/browser/google/google_url_tracker_factory.h"
27 #include "chrome/browser/history/history_service.h" 27 #include "chrome/browser/history/history_service.h"
28 #include "chrome/browser/history/history_service_factory.h" 28 #include "chrome/browser/history/history_service_factory.h"
29 #include "chrome/browser/metrics/rappor/sampling.h" 29 #include "chrome/browser/metrics/rappor/sampling.h"
30 #include "chrome/browser/profiles/profile.h" 30 #include "chrome/browser/profiles/profile.h"
31 #include "chrome/browser/rlz/rlz.h" 31 #include "chrome/browser/rlz/rlz.h"
32 #include "chrome/browser/search_engines/search_host_to_urls_map.h" 32 #include "chrome/browser/search_engines/search_host_to_urls_map.h"
33 #include "chrome/browser/search_engines/template_url_service_observer.h" 33 #include "chrome/browser/search_engines/template_url_service_observer.h"
34 #include "chrome/browser/search_engines/ui_thread_search_terms_data.h" 34 #include "chrome/browser/search_engines/ui_thread_search_terms_data.h"
35 #include "chrome/browser/search_engines/util.h" 35 #include "chrome/browser/search_engines/util.h"
36 #include "chrome/browser/webdata/web_data_service.h" 36 #include "chrome/browser/webdata/web_data_service_factory.h"
37 #include "chrome/common/env_vars.h" 37 #include "chrome/common/env_vars.h"
38 #include "components/search_engines/search_engines_pref_names.h" 38 #include "components/search_engines/search_engines_pref_names.h"
39 #include "components/search_engines/template_url.h" 39 #include "components/search_engines/template_url.h"
40 #include "components/search_engines/template_url_prepopulate_data.h" 40 #include "components/search_engines/template_url_prepopulate_data.h"
41 #include "components/url_fixer/url_fixer.h" 41 #include "components/url_fixer/url_fixer.h"
42 #include "content/public/browser/notification_service.h" 42 #include "content/public/browser/notification_service.h"
43 #include "net/base/net_util.h" 43 #include "net/base/net_util.h"
44 #include "sync/api/sync_change.h" 44 #include "sync/api/sync_change.h"
45 #include "sync/api/sync_error_factory.h" 45 #include "sync/api/sync_error_factory.h"
46 #include "sync/protocol/search_engine_specifics.pb.h" 46 #include "sync/protocol/search_engine_specifics.pb.h"
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
236 } 236 }
237 237
238 TemplateURLService::TemplateURLService(const Initializer* initializers, 238 TemplateURLService::TemplateURLService(const Initializer* initializers,
239 const int count) 239 const int count)
240 : provider_map_(new SearchHostToURLsMap), 240 : provider_map_(new SearchHostToURLsMap),
241 profile_(NULL), 241 profile_(NULL),
242 search_terms_data_(new UIThreadSearchTermsData(NULL)), 242 search_terms_data_(new UIThreadSearchTermsData(NULL)),
243 loaded_(false), 243 loaded_(false),
244 load_failed_(false), 244 load_failed_(false),
245 load_handle_(0), 245 load_handle_(0),
246 service_(NULL),
247 default_search_provider_(NULL), 246 default_search_provider_(NULL),
248 next_id_(kInvalidTemplateURLID + 1), 247 next_id_(kInvalidTemplateURLID + 1),
249 time_provider_(&base::Time::Now), 248 time_provider_(&base::Time::Now),
250 models_associated_(false), 249 models_associated_(false),
251 processing_syncer_changes_(false), 250 processing_syncer_changes_(false),
252 dsp_change_origin_(DSP_CHANGE_OTHER), 251 dsp_change_origin_(DSP_CHANGE_OTHER),
253 default_search_manager_( 252 default_search_manager_(
254 GetPrefs(), 253 GetPrefs(),
255 base::Bind(&TemplateURLService::OnDefaultSearchChange, 254 base::Bind(&TemplateURLService::OnDefaultSearchChange,
256 base::Unretained(this))) { 255 base::Unretained(this))) {
257 Init(initializers, count); 256 Init(initializers, count);
258 } 257 }
259 258
260 TemplateURLService::~TemplateURLService() { 259 TemplateURLService::~TemplateURLService() {
261 // |service_| should be deleted during Shutdown(). 260 // |web_data_service_| should be deleted during Shutdown().
262 DCHECK(!service_); 261 DCHECK(!web_data_service_);
263 STLDeleteElements(&template_urls_); 262 STLDeleteElements(&template_urls_);
264 } 263 }
265 264
266 // static 265 // static
267 bool TemplateURLService::LoadDefaultSearchProviderFromPrefs( 266 bool TemplateURLService::LoadDefaultSearchProviderFromPrefs(
268 PrefService* prefs, 267 PrefService* prefs,
269 scoped_ptr<TemplateURLData>* default_provider_data, 268 scoped_ptr<TemplateURLData>* default_provider_data,
270 bool* is_managed) { 269 bool* is_managed) {
271 if (!prefs || !prefs->HasPrefPath(prefs::kDefaultSearchProviderSearchURL) || 270 if (!prefs || !prefs->HasPrefPath(prefs::kDefaultSearchProviderSearchURL) ||
272 !prefs->HasPrefPath(prefs::kDefaultSearchProviderKeyword)) 271 !prefs->HasPrefPath(prefs::kDefaultSearchProviderKeyword))
(...skipping 281 matching lines...) Expand 10 before | Expand all | Expand 10 after
554 if (loaded_) 553 if (loaded_)
555 return provider_map_->GetTemplateURLForHost(host); 554 return provider_map_->GetTemplateURLForHost(host);
556 TemplateURL* initial_dsp = initial_default_search_provider_.get(); 555 TemplateURL* initial_dsp = initial_default_search_provider_.get();
557 if (!initial_dsp) 556 if (!initial_dsp)
558 return NULL; 557 return NULL;
559 return (initial_dsp->GenerateSearchURL(search_terms_data()).host() == host) ? 558 return (initial_dsp->GenerateSearchURL(search_terms_data()).host() == host) ?
560 initial_dsp : NULL; 559 initial_dsp : NULL;
561 } 560 }
562 561
563 bool TemplateURLService::Add(TemplateURL* template_url) { 562 bool TemplateURLService::Add(TemplateURL* template_url) {
564 WebDataService::KeywordBatchModeScoper keyword_scoper(service_.get()); 563 KeywordWebDataService::KeywordBatchModeScoper keyword_scoper(
Peter Kasting 2014/06/30 22:50:01 Nit: If you rename KeywordBatchModeScoper to Batch
hashimoto 2014/07/01 01:06:50 Sounds good. Done. Also renamed KeywordWebDataSer
564 web_data_service_.get());
565 if (!AddNoNotify(template_url, true)) 565 if (!AddNoNotify(template_url, true))
566 return false; 566 return false;
567 NotifyObservers(); 567 NotifyObservers();
568 return true; 568 return true;
569 } 569 }
570 570
571 void TemplateURLService::AddWithOverrides(TemplateURL* template_url, 571 void TemplateURLService::AddWithOverrides(TemplateURL* template_url,
572 const base::string16& short_name, 572 const base::string16& short_name,
573 const base::string16& keyword, 573 const base::string16& keyword,
574 const std::string& url) { 574 const std::string& url) {
(...skipping 11 matching lines...) Expand all
586 DCHECK(loaded_); 586 DCHECK(loaded_);
587 DCHECK(template_url); 587 DCHECK(template_url);
588 DCHECK_EQ(kInvalidTemplateURLID, template_url->id()); 588 DCHECK_EQ(kInvalidTemplateURLID, template_url->id());
589 DCHECK(info); 589 DCHECK(info);
590 DCHECK_NE(TemplateURL::NORMAL, info->type); 590 DCHECK_NE(TemplateURL::NORMAL, info->type);
591 DCHECK_EQ(info->wants_to_be_default_engine, 591 DCHECK_EQ(info->wants_to_be_default_engine,
592 template_url->show_in_default_list()); 592 template_url->show_in_default_list());
593 DCHECK(!FindTemplateURLForExtension(info->extension_id, info->type)); 593 DCHECK(!FindTemplateURLForExtension(info->extension_id, info->type));
594 template_url->extension_info_.swap(info); 594 template_url->extension_info_.swap(info);
595 595
596 WebDataService::KeywordBatchModeScoper keyword_scoper(service_.get()); 596 KeywordWebDataService::KeywordBatchModeScoper keyword_scoper(
597 web_data_service_.get());
597 if (AddNoNotify(template_url, true)) { 598 if (AddNoNotify(template_url, true)) {
598 if (template_url->extension_info_->wants_to_be_default_engine) 599 if (template_url->extension_info_->wants_to_be_default_engine)
599 UpdateExtensionDefaultSearchEngine(); 600 UpdateExtensionDefaultSearchEngine();
600 NotifyObservers(); 601 NotifyObservers();
601 } 602 }
602 } 603 }
603 604
604 void TemplateURLService::Remove(TemplateURL* template_url) { 605 void TemplateURLService::Remove(TemplateURL* template_url) {
605 RemoveNoNotify(template_url); 606 RemoveNoNotify(template_url);
606 NotifyObservers(); 607 NotifyObservers();
607 } 608 }
608 609
609 void TemplateURLService::RemoveExtensionControlledTURL( 610 void TemplateURLService::RemoveExtensionControlledTURL(
610 const std::string& extension_id, 611 const std::string& extension_id,
611 TemplateURL::Type type) { 612 TemplateURL::Type type) {
612 DCHECK(loaded_); 613 DCHECK(loaded_);
613 TemplateURL* url = FindTemplateURLForExtension(extension_id, type); 614 TemplateURL* url = FindTemplateURLForExtension(extension_id, type);
614 if (!url) 615 if (!url)
615 return; 616 return;
616 // NULL this out so that we can call RemoveNoNotify. 617 // NULL this out so that we can call RemoveNoNotify.
617 // UpdateExtensionDefaultSearchEngine will cause it to be reset. 618 // UpdateExtensionDefaultSearchEngine will cause it to be reset.
618 if (default_search_provider_ == url) 619 if (default_search_provider_ == url)
619 default_search_provider_ = NULL; 620 default_search_provider_ = NULL;
620 WebDataService::KeywordBatchModeScoper keyword_scoper(service_.get()); 621 KeywordWebDataService::KeywordBatchModeScoper keyword_scoper(
622 web_data_service_.get());
621 RemoveNoNotify(url); 623 RemoveNoNotify(url);
622 UpdateExtensionDefaultSearchEngine(); 624 UpdateExtensionDefaultSearchEngine();
623 NotifyObservers(); 625 NotifyObservers();
624 } 626 }
625 627
626 void TemplateURLService::RemoveAutoGeneratedSince(base::Time created_after) { 628 void TemplateURLService::RemoveAutoGeneratedSince(base::Time created_after) {
627 RemoveAutoGeneratedBetween(created_after, base::Time()); 629 RemoveAutoGeneratedBetween(created_after, base::Time());
628 } 630 }
629 631
630 void TemplateURLService::RemoveAutoGeneratedBetween(base::Time created_after, 632 void TemplateURLService::RemoveAutoGeneratedBetween(base::Time created_after,
631 base::Time created_before) { 633 base::Time created_before) {
632 RemoveAutoGeneratedForOriginBetween(GURL(), created_after, created_before); 634 RemoveAutoGeneratedForOriginBetween(GURL(), created_after, created_before);
633 } 635 }
634 636
635 void TemplateURLService::RemoveAutoGeneratedForOriginBetween( 637 void TemplateURLService::RemoveAutoGeneratedForOriginBetween(
636 const GURL& origin, 638 const GURL& origin,
637 base::Time created_after, 639 base::Time created_after,
638 base::Time created_before) { 640 base::Time created_before) {
639 GURL o(origin.GetOrigin()); 641 GURL o(origin.GetOrigin());
640 bool should_notify = false; 642 bool should_notify = false;
641 WebDataService::KeywordBatchModeScoper keyword_scoper(service_.get()); 643 KeywordWebDataService::KeywordBatchModeScoper keyword_scoper(
644 web_data_service_.get());
642 for (size_t i = 0; i < template_urls_.size();) { 645 for (size_t i = 0; i < template_urls_.size();) {
643 if (template_urls_[i]->date_created() >= created_after && 646 if (template_urls_[i]->date_created() >= created_after &&
644 (created_before.is_null() || 647 (created_before.is_null() ||
645 template_urls_[i]->date_created() < created_before) && 648 template_urls_[i]->date_created() < created_before) &&
646 CanReplace(template_urls_[i]) && 649 CanReplace(template_urls_[i]) &&
647 (o.is_empty() || 650 (o.is_empty() ||
648 template_urls_[i]->GenerateSearchURL( 651 template_urls_[i]->GenerateSearchURL(
649 search_terms_data()).GetOrigin() == o)) { 652 search_terms_data()).GetOrigin() == o)) {
650 RemoveNoNotify(template_urls_[i]); 653 RemoveNoNotify(template_urls_[i]);
651 should_notify = true; 654 should_notify = true;
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
686 void TemplateURLService::IncrementUsageCount(TemplateURL* url) { 689 void TemplateURLService::IncrementUsageCount(TemplateURL* url) {
687 DCHECK(url); 690 DCHECK(url);
688 // Extension-controlled search engines are not persisted. 691 // Extension-controlled search engines are not persisted.
689 if (url->GetType() == TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION) 692 if (url->GetType() == TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION)
690 return; 693 return;
691 if (std::find(template_urls_.begin(), template_urls_.end(), url) == 694 if (std::find(template_urls_.begin(), template_urls_.end(), url) ==
692 template_urls_.end()) 695 template_urls_.end())
693 return; 696 return;
694 ++url->data_.usage_count; 697 ++url->data_.usage_count;
695 698
696 if (service_) 699 if (web_data_service_)
697 service_->UpdateKeyword(url->data()); 700 web_data_service_->UpdateKeyword(url->data());
698 } 701 }
699 702
700 void TemplateURLService::ResetTemplateURL(TemplateURL* url, 703 void TemplateURLService::ResetTemplateURL(TemplateURL* url,
701 const base::string16& title, 704 const base::string16& title,
702 const base::string16& keyword, 705 const base::string16& keyword,
703 const std::string& search_url) { 706 const std::string& search_url) {
704 if (ResetTemplateURLNoNotify(url, title, keyword, search_url)) 707 if (ResetTemplateURLNoNotify(url, title, keyword, search_url))
705 NotifyObservers(); 708 NotifyObservers();
706 } 709 }
707 710
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
769 } 772 }
770 773
771 size_t default_search_provider_index = 0; 774 size_t default_search_provider_index = 0;
772 ScopedVector<TemplateURLData> prepopulated_urls = 775 ScopedVector<TemplateURLData> prepopulated_urls =
773 TemplateURLPrepopulateData::GetPrepopulatedEngines( 776 TemplateURLPrepopulateData::GetPrepopulatedEngines(
774 GetPrefs(), &default_search_provider_index); 777 GetPrefs(), &default_search_provider_index);
775 DCHECK(!prepopulated_urls.empty()); 778 DCHECK(!prepopulated_urls.empty());
776 ActionsFromPrepopulateData actions(CreateActionsFromCurrentPrepopulateData( 779 ActionsFromPrepopulateData actions(CreateActionsFromCurrentPrepopulateData(
777 &prepopulated_urls, template_urls_, default_search_provider_)); 780 &prepopulated_urls, template_urls_, default_search_provider_));
778 781
779 WebDataService::KeywordBatchModeScoper keyword_scoper(service_.get()); 782 KeywordWebDataService::KeywordBatchModeScoper keyword_scoper(
783 web_data_service_.get());
780 784
781 // Remove items. 785 // Remove items.
782 for (std::vector<TemplateURL*>::iterator i = actions.removed_engines.begin(); 786 for (std::vector<TemplateURL*>::iterator i = actions.removed_engines.begin();
783 i < actions.removed_engines.end(); ++i) 787 i < actions.removed_engines.end(); ++i)
784 RemoveNoNotify(*i); 788 RemoveNoNotify(*i);
785 789
786 // Edit items. 790 // Edit items.
787 for (EditedEngines::iterator i(actions.edited_engines.begin()); 791 for (EditedEngines::iterator i(actions.edited_engines.begin());
788 i < actions.edited_engines.end(); ++i) { 792 i < actions.edited_engines.end(); ++i) {
789 UIThreadSearchTermsData search_terms_data(profile()); 793 UIThreadSearchTermsData search_terms_data(profile());
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
825 } 829 }
826 830
827 void TemplateURLService::RemoveObserver(TemplateURLServiceObserver* observer) { 831 void TemplateURLService::RemoveObserver(TemplateURLServiceObserver* observer) {
828 model_observers_.RemoveObserver(observer); 832 model_observers_.RemoveObserver(observer);
829 } 833 }
830 834
831 void TemplateURLService::Load() { 835 void TemplateURLService::Load() {
832 if (loaded_ || load_handle_) 836 if (loaded_ || load_handle_)
833 return; 837 return;
834 838
835 if (!service_) 839 if (!web_data_service_) {
836 service_ = WebDataService::FromBrowserContext(profile_); 840 web_data_service_ = WebDataServiceFactory::GetKeywordWebDataForProfile(
841 profile_, Profile::EXPLICIT_ACCESS);
842 }
837 843
838 if (service_) 844 if (web_data_service_)
839 load_handle_ = service_->GetKeywords(this); 845 load_handle_ = web_data_service_->GetKeywords(this);
840 else 846 else
841 ChangeToLoadedState(); 847 ChangeToLoadedState();
842 } 848 }
843 849
844 scoped_ptr<TemplateURLService::Subscription> 850 scoped_ptr<TemplateURLService::Subscription>
845 TemplateURLService::RegisterOnLoadedCallback( 851 TemplateURLService::RegisterOnLoadedCallback(
846 const base::Closure& callback) { 852 const base::Closure& callback) {
847 return loaded_ ? 853 return loaded_ ?
848 scoped_ptr<TemplateURLService::Subscription>() : 854 scoped_ptr<TemplateURLService::Subscription>() :
849 on_loaded_callbacks_.Add(callback); 855 on_loaded_callbacks_.Add(callback);
850 } 856 }
851 857
852 void TemplateURLService::OnWebDataServiceRequestDone( 858 void TemplateURLService::OnWebDataServiceRequestDone(
853 WebDataService::Handle h, 859 KeywordWebDataService::Handle h,
854 const WDTypedResult* result) { 860 const WDTypedResult* result) {
855 // Reset the load_handle so that we don't try and cancel the load in 861 // Reset the load_handle so that we don't try and cancel the load in
856 // the destructor. 862 // the destructor.
857 load_handle_ = 0; 863 load_handle_ = 0;
858 864
859 if (!result) { 865 if (!result) {
860 // Results are null if the database went away or (most likely) wasn't 866 // Results are null if the database went away or (most likely) wasn't
861 // loaded. 867 // loaded.
862 load_failed_ = true; 868 load_failed_ = true;
863 service_ = NULL; 869 web_data_service_ = NULL;
864 ChangeToLoadedState(); 870 ChangeToLoadedState();
865 return; 871 return;
866 } 872 }
867 873
868 TemplateURLVector template_urls; 874 TemplateURLVector template_urls;
869 int new_resource_keyword_version = 0; 875 int new_resource_keyword_version = 0;
870 GetSearchProvidersUsingKeywordResult( 876 GetSearchProvidersUsingKeywordResult(
871 *result, 877 *result,
872 service_.get(), 878 web_data_service_.get(),
873 GetPrefs(), 879 GetPrefs(),
874 &template_urls, 880 &template_urls,
875 (default_search_provider_source_ == DefaultSearchManager::FROM_USER) ? 881 (default_search_provider_source_ == DefaultSearchManager::FROM_USER) ?
876 initial_default_search_provider_.get() : NULL, 882 initial_default_search_provider_.get() : NULL,
877 search_terms_data(), 883 search_terms_data(),
878 &new_resource_keyword_version, 884 &new_resource_keyword_version,
879 &pre_sync_deletes_); 885 &pre_sync_deletes_);
880 886
881 WebDataService::KeywordBatchModeScoper keyword_scoper(service_.get()); 887 KeywordWebDataService::KeywordBatchModeScoper keyword_scoper(
888 web_data_service_.get());
882 889
883 PatchMissingSyncGUIDs(&template_urls); 890 PatchMissingSyncGUIDs(&template_urls);
884 SetTemplateURLs(&template_urls); 891 SetTemplateURLs(&template_urls);
885 892
886 // This initializes provider_map_ which should be done before 893 // This initializes provider_map_ which should be done before
887 // calling UpdateKeywordSearchTermsForURL. 894 // calling UpdateKeywordSearchTermsForURL.
888 // This also calls NotifyObservers. 895 // This also calls NotifyObservers.
889 ChangeToLoadedState(); 896 ChangeToLoadedState();
890 897
891 // Index any visits that occurred before we finished loading. 898 // Index any visits that occurred before we finished loading.
892 for (size_t i = 0; i < visits_to_add_.size(); ++i) 899 for (size_t i = 0; i < visits_to_add_.size(); ++i)
893 UpdateKeywordSearchTermsForURL(visits_to_add_[i]); 900 UpdateKeywordSearchTermsForURL(visits_to_add_[i]);
894 visits_to_add_.clear(); 901 visits_to_add_.clear();
895 902
896 if (new_resource_keyword_version) 903 if (new_resource_keyword_version)
897 service_->SetBuiltinKeywordVersion(new_resource_keyword_version); 904 web_data_service_->SetBuiltinKeywordVersion(new_resource_keyword_version);
898 905
899 if (default_search_provider_) { 906 if (default_search_provider_) {
900 UMA_HISTOGRAM_ENUMERATION( 907 UMA_HISTOGRAM_ENUMERATION(
901 "Search.DefaultSearchProviderType", 908 "Search.DefaultSearchProviderType",
902 TemplateURLPrepopulateData::GetEngineType( 909 TemplateURLPrepopulateData::GetEngineType(
903 *default_search_provider_, search_terms_data()), 910 *default_search_provider_, search_terms_data()),
904 SEARCH_ENGINE_MAX); 911 SEARCH_ENGINE_MAX);
905 rappor::SampleDomainAndRegistryFromHost( 912 rappor::SampleDomainAndRegistryFromHost(
906 "Search.DefaultSearchProvider", 913 "Search.DefaultSearchProvider",
907 default_search_provider_->url_ref().GetHost(search_terms_data())); 914 default_search_provider_->url_ref().GetHost(search_terms_data()));
(...skipping 22 matching lines...) Expand all
930 DCHECK_EQ(type, chrome::NOTIFICATION_HISTORY_URL_VISITED); 937 DCHECK_EQ(type, chrome::NOTIFICATION_HISTORY_URL_VISITED);
931 content::Details<history::URLVisitedDetails> visit_details(details); 938 content::Details<history::URLVisitedDetails> visit_details(details);
932 if (!loaded_) 939 if (!loaded_)
933 visits_to_add_.push_back(*visit_details.ptr()); 940 visits_to_add_.push_back(*visit_details.ptr());
934 else 941 else
935 UpdateKeywordSearchTermsForURL(*visit_details.ptr()); 942 UpdateKeywordSearchTermsForURL(*visit_details.ptr());
936 } 943 }
937 944
938 void TemplateURLService::Shutdown() { 945 void TemplateURLService::Shutdown() {
939 // This check has to be done at Shutdown() instead of in the dtor to ensure 946 // This check has to be done at Shutdown() instead of in the dtor to ensure
940 // that no clients of WebDataService are holding ptrs to it after the first 947 // that no clients of KeywordWebDataService are holding ptrs to it after the
941 // phase of the KeyedService Shutdown() process. 948 // first phase of the KeyedService Shutdown() process.
942 if (load_handle_) { 949 if (load_handle_) {
943 DCHECK(service_.get()); 950 DCHECK(web_data_service_.get());
944 service_->CancelRequest(load_handle_); 951 web_data_service_->CancelRequest(load_handle_);
945 } 952 }
946 service_ = NULL; 953 web_data_service_ = NULL;
947 } 954 }
948 955
949 syncer::SyncDataList TemplateURLService::GetAllSyncData( 956 syncer::SyncDataList TemplateURLService::GetAllSyncData(
950 syncer::ModelType type) const { 957 syncer::ModelType type) const {
951 DCHECK_EQ(syncer::SEARCH_ENGINES, type); 958 DCHECK_EQ(syncer::SEARCH_ENGINES, type);
952 959
953 syncer::SyncDataList current_data; 960 syncer::SyncDataList current_data;
954 for (TemplateURLVector::const_iterator iter = template_urls_.begin(); 961 for (TemplateURLVector::const_iterator iter = template_urls_.begin();
955 iter != template_urls_.end(); ++iter) { 962 iter != template_urls_.end(); ++iter) {
956 // We don't sync keywords managed by policy. 963 // We don't sync keywords managed by policy.
(...skipping 21 matching lines...) Expand all
978 DCHECK(loaded_); 985 DCHECK(loaded_);
979 986
980 base::AutoReset<bool> processing_changes(&processing_syncer_changes_, true); 987 base::AutoReset<bool> processing_changes(&processing_syncer_changes_, true);
981 988
982 // We've started syncing, so set our origin member to the base Sync value. 989 // We've started syncing, so set our origin member to the base Sync value.
983 // As we move through Sync Code, we may set this to increasingly specific 990 // As we move through Sync Code, we may set this to increasingly specific
984 // origins so we can tell what exactly caused a DSP change. 991 // origins so we can tell what exactly caused a DSP change.
985 base::AutoReset<DefaultSearchChangeOrigin> change_origin(&dsp_change_origin_, 992 base::AutoReset<DefaultSearchChangeOrigin> change_origin(&dsp_change_origin_,
986 DSP_CHANGE_SYNC_UNINTENTIONAL); 993 DSP_CHANGE_SYNC_UNINTENTIONAL);
987 994
988 WebDataService::KeywordBatchModeScoper keyword_scoper(service_.get()); 995 KeywordWebDataService::KeywordBatchModeScoper keyword_scoper(
996 web_data_service_.get());
989 997
990 syncer::SyncChangeList new_changes; 998 syncer::SyncChangeList new_changes;
991 syncer::SyncError error; 999 syncer::SyncError error;
992 for (syncer::SyncChangeList::const_iterator iter = change_list.begin(); 1000 for (syncer::SyncChangeList::const_iterator iter = change_list.begin();
993 iter != change_list.end(); ++iter) { 1001 iter != change_list.end(); ++iter) {
994 DCHECK_EQ(syncer::SEARCH_ENGINES, iter->sync_data().GetDataType()); 1002 DCHECK_EQ(syncer::SEARCH_ENGINES, iter->sync_data().GetDataType());
995 1003
996 std::string guid = 1004 std::string guid =
997 iter->sync_data().GetSpecifics().search_engine().sync_guid(); 1005 iter->sync_data().GetSpecifics().search_engine().sync_guid();
998 TemplateURL* existing_turl = GetTemplateURLForGUID(guid); 1006 TemplateURL* existing_turl = GetTemplateURLForGUID(guid);
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
1136 base::AutoReset<DefaultSearchChangeOrigin> change_origin(&dsp_change_origin_, 1144 base::AutoReset<DefaultSearchChangeOrigin> change_origin(&dsp_change_origin_,
1137 DSP_CHANGE_SYNC_UNINTENTIONAL); 1145 DSP_CHANGE_SYNC_UNINTENTIONAL);
1138 1146
1139 syncer::SyncChangeList new_changes; 1147 syncer::SyncChangeList new_changes;
1140 1148
1141 // Build maps of our sync GUIDs to syncer::SyncData. 1149 // Build maps of our sync GUIDs to syncer::SyncData.
1142 SyncDataMap local_data_map = CreateGUIDToSyncDataMap( 1150 SyncDataMap local_data_map = CreateGUIDToSyncDataMap(
1143 GetAllSyncData(syncer::SEARCH_ENGINES)); 1151 GetAllSyncData(syncer::SEARCH_ENGINES));
1144 SyncDataMap sync_data_map = CreateGUIDToSyncDataMap(initial_sync_data); 1152 SyncDataMap sync_data_map = CreateGUIDToSyncDataMap(initial_sync_data);
1145 1153
1146 WebDataService::KeywordBatchModeScoper keyword_scoper(service_.get()); 1154 KeywordWebDataService::KeywordBatchModeScoper keyword_scoper(
1155 web_data_service_.get());
1147 1156
1148 merge_result.set_num_items_before_association(local_data_map.size()); 1157 merge_result.set_num_items_before_association(local_data_map.size());
1149 for (SyncDataMap::const_iterator iter = sync_data_map.begin(); 1158 for (SyncDataMap::const_iterator iter = sync_data_map.begin();
1150 iter != sync_data_map.end(); ++iter) { 1159 iter != sync_data_map.end(); ++iter) {
1151 TemplateURL* local_turl = GetTemplateURLForGUID(iter->first); 1160 TemplateURL* local_turl = GetTemplateURLForGUID(iter->first);
1152 scoped_ptr<TemplateURL> sync_turl( 1161 scoped_ptr<TemplateURL> sync_turl(
1153 CreateTemplateURLFromTemplateURLAndSyncData(profile_, local_turl, 1162 CreateTemplateURLFromTemplateURLAndSyncData(profile_, local_turl,
1154 iter->second, &new_changes)); 1163 iter->second, &new_changes));
1155 if (!sync_turl.get()) 1164 if (!sync_turl.get())
1156 continue; 1165 continue;
(...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after
1468 TemplateURLData* dse = 1477 TemplateURLData* dse =
1469 default_search_manager_.GetDefaultSearchEngine(&source); 1478 default_search_manager_.GetDefaultSearchEngine(&source);
1470 ApplyDefaultSearchChange(dse, source); 1479 ApplyDefaultSearchChange(dse, source);
1471 1480
1472 if (num_initializers > 0) { 1481 if (num_initializers > 0) {
1473 // This path is only hit by test code and is used to simulate a loaded 1482 // This path is only hit by test code and is used to simulate a loaded
1474 // TemplateURLService. 1483 // TemplateURLService.
1475 ChangeToLoadedState(); 1484 ChangeToLoadedState();
1476 1485
1477 // Add specific initializers, if any. 1486 // Add specific initializers, if any.
1478 WebDataService::KeywordBatchModeScoper keyword_scoper(service_.get()); 1487 KeywordWebDataService::KeywordBatchModeScoper keyword_scoper(
1488 web_data_service_.get());
1479 for (int i(0); i < num_initializers; ++i) { 1489 for (int i(0); i < num_initializers; ++i) {
1480 DCHECK(initializers[i].keyword); 1490 DCHECK(initializers[i].keyword);
1481 DCHECK(initializers[i].url); 1491 DCHECK(initializers[i].url);
1482 DCHECK(initializers[i].content); 1492 DCHECK(initializers[i].content);
1483 1493
1484 // TemplateURLService ends up owning the TemplateURL, don't try and free 1494 // TemplateURLService ends up owning the TemplateURL, don't try and free
1485 // it. 1495 // it.
1486 TemplateURLData data; 1496 TemplateURLData data;
1487 data.short_name = base::UTF8ToUTF16(initializers[i].content); 1497 data.short_name = base::UTF8ToUTF16(initializers[i].content);
1488 data.SetKeyword(base::UTF8ToUTF16(initializers[i].keyword)); 1498 data.SetKeyword(base::UTF8ToUTF16(initializers[i].keyword));
(...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after
1716 RemoveNoNotify(existing_keyword_turl); 1726 RemoveNoNotify(existing_keyword_turl);
1717 } else { 1727 } else {
1718 existing_turl->data_.SetKeyword(old_keyword); 1728 existing_turl->data_.SetKeyword(old_keyword);
1719 keyword_to_template_map_[old_keyword] = existing_turl; 1729 keyword_to_template_map_[old_keyword] = existing_turl;
1720 } 1730 }
1721 } 1731 }
1722 } 1732 }
1723 if (!existing_turl->sync_guid().empty()) 1733 if (!existing_turl->sync_guid().empty())
1724 guid_to_template_map_[existing_turl->sync_guid()] = existing_turl; 1734 guid_to_template_map_[existing_turl->sync_guid()] = existing_turl;
1725 1735
1726 if (service_) 1736 if (web_data_service_)
1727 service_->UpdateKeyword(existing_turl->data()); 1737 web_data_service_->UpdateKeyword(existing_turl->data());
1728 1738
1729 // Inform sync of the update. 1739 // Inform sync of the update.
1730 ProcessTemplateURLChange( 1740 ProcessTemplateURLChange(
1731 FROM_HERE, existing_turl, syncer::SyncChange::ACTION_UPDATE); 1741 FROM_HERE, existing_turl, syncer::SyncChange::ACTION_UPDATE);
1732 1742
1733 if (default_search_provider_ == existing_turl && 1743 if (default_search_provider_ == existing_turl &&
1734 default_search_provider_source_ == DefaultSearchManager::FROM_USER) { 1744 default_search_provider_source_ == DefaultSearchManager::FROM_USER) {
1735 default_search_manager_.SetUserSelectedDefaultSearchEngine( 1745 default_search_manager_.SetUserSelectedDefaultSearchEngine(
1736 default_search_provider_->data()); 1746 default_search_provider_->data());
1737 } 1747 }
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
1824 1834
1825 // Synthesize a visit for the keyword. This ensures the url for the keyword is 1835 // Synthesize a visit for the keyword. This ensures the url for the keyword is
1826 // autocompleted even if the user doesn't type the url in directly. 1836 // autocompleted even if the user doesn't type the url in directly.
1827 history->AddPage(url, base::Time::Now(), NULL, 0, GURL(), 1837 history->AddPage(url, base::Time::Now(), NULL, 0, GURL(),
1828 history::RedirectList(), 1838 history::RedirectList(),
1829 content::PAGE_TRANSITION_KEYWORD_GENERATED, 1839 content::PAGE_TRANSITION_KEYWORD_GENERATED,
1830 history::SOURCE_BROWSED, false); 1840 history::SOURCE_BROWSED, false);
1831 } 1841 }
1832 1842
1833 void TemplateURLService::GoogleBaseURLChanged(const GURL& old_base_url) { 1843 void TemplateURLService::GoogleBaseURLChanged(const GURL& old_base_url) {
1834 WebDataService::KeywordBatchModeScoper keyword_scoper(service_.get()); 1844 KeywordWebDataService::KeywordBatchModeScoper keyword_scoper(
1845 web_data_service_.get());
1835 bool something_changed = false; 1846 bool something_changed = false;
1836 for (TemplateURLVector::iterator i(template_urls_.begin()); 1847 for (TemplateURLVector::iterator i(template_urls_.begin());
1837 i != template_urls_.end(); ++i) { 1848 i != template_urls_.end(); ++i) {
1838 TemplateURL* t_url = *i; 1849 TemplateURL* t_url = *i;
1839 if (t_url->HasGoogleBaseURLs(search_terms_data())) { 1850 if (t_url->HasGoogleBaseURLs(search_terms_data())) {
1840 TemplateURL updated_turl(t_url->data()); 1851 TemplateURL updated_turl(t_url->data());
1841 updated_turl.ResetKeywordIfNecessary(search_terms_data(), false); 1852 updated_turl.ResetKeywordIfNecessary(search_terms_data(), false);
1842 KeywordToTemplateMap::const_iterator existing_entry = 1853 KeywordToTemplateMap::const_iterator existing_entry =
1843 keyword_to_template_map_.find(updated_turl.keyword()); 1854 keyword_to_template_map_.find(updated_turl.keyword());
1844 if ((existing_entry != keyword_to_template_map_.end()) && 1855 if ((existing_entry != keyword_to_template_map_.end()) &&
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
1923 // NULL due to policy. We'll never actually get recursion with data == NULL. 1934 // NULL due to policy. We'll never actually get recursion with data == NULL.
1924 if (source == default_search_provider_source_ && data != NULL && 1935 if (source == default_search_provider_source_ && data != NULL &&
1925 TemplateURL::MatchesData(default_search_provider_, data, 1936 TemplateURL::MatchesData(default_search_provider_, data,
1926 search_terms_data())) 1937 search_terms_data()))
1927 return false; 1938 return false;
1928 1939
1929 // This may be deleted later. Use exclusively for pointer comparison to detect 1940 // This may be deleted later. Use exclusively for pointer comparison to detect
1930 // a change. 1941 // a change.
1931 TemplateURL* previous_default_search_engine = default_search_provider_; 1942 TemplateURL* previous_default_search_engine = default_search_provider_;
1932 1943
1933 WebDataService::KeywordBatchModeScoper keyword_scoper(service_.get()); 1944 KeywordWebDataService::KeywordBatchModeScoper keyword_scoper(
1945 web_data_service_.get());
1934 if (default_search_provider_source_ == DefaultSearchManager::FROM_POLICY || 1946 if (default_search_provider_source_ == DefaultSearchManager::FROM_POLICY ||
1935 source == DefaultSearchManager::FROM_POLICY) { 1947 source == DefaultSearchManager::FROM_POLICY) {
1936 // We do this both to remove any no-longer-applicable policy-defined DSE as 1948 // We do this both to remove any no-longer-applicable policy-defined DSE as
1937 // well as to add the new one, if appropriate. 1949 // well as to add the new one, if appropriate.
1938 UpdateProvidersCreatedByPolicy( 1950 UpdateProvidersCreatedByPolicy(
1939 &template_urls_, 1951 &template_urls_,
1940 source == DefaultSearchManager::FROM_POLICY ? data : NULL); 1952 source == DefaultSearchManager::FROM_POLICY ? data : NULL);
1941 } 1953 }
1942 1954
1943 if (!data) { 1955 if (!data) {
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
2058 existing_keyword_turl->short_name(), new_keyword, 2070 existing_keyword_turl->short_name(), new_keyword,
2059 existing_keyword_turl->url()); 2071 existing_keyword_turl->url());
2060 } 2072 }
2061 } 2073 }
2062 template_urls_.push_back(template_url); 2074 template_urls_.push_back(template_url);
2063 AddToMaps(template_url); 2075 AddToMaps(template_url);
2064 2076
2065 if (newly_adding && 2077 if (newly_adding &&
2066 (template_url->GetType() != 2078 (template_url->GetType() !=
2067 TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION)) { 2079 TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION)) {
2068 if (service_) 2080 if (web_data_service_)
2069 service_->AddKeyword(template_url->data()); 2081 web_data_service_->AddKeyword(template_url->data());
2070 2082
2071 // Inform sync of the addition. Note that this will assign a GUID to 2083 // Inform sync of the addition. Note that this will assign a GUID to
2072 // template_url and add it to the guid_to_template_map_. 2084 // template_url and add it to the guid_to_template_map_.
2073 ProcessTemplateURLChange(FROM_HERE, 2085 ProcessTemplateURLChange(FROM_HERE,
2074 template_url, 2086 template_url,
2075 syncer::SyncChange::ACTION_ADD); 2087 syncer::SyncChange::ACTION_ADD);
2076 } 2088 }
2077 2089
2078 return true; 2090 return true;
2079 } 2091 }
2080 2092
2081 void TemplateURLService::RemoveNoNotify(TemplateURL* template_url) { 2093 void TemplateURLService::RemoveNoNotify(TemplateURL* template_url) {
2082 DCHECK(template_url != default_search_provider_); 2094 DCHECK(template_url != default_search_provider_);
2083 2095
2084 TemplateURLVector::iterator i = 2096 TemplateURLVector::iterator i =
2085 std::find(template_urls_.begin(), template_urls_.end(), template_url); 2097 std::find(template_urls_.begin(), template_urls_.end(), template_url);
2086 if (i == template_urls_.end()) 2098 if (i == template_urls_.end())
2087 return; 2099 return;
2088 2100
2089 RemoveFromMaps(template_url); 2101 RemoveFromMaps(template_url);
2090 2102
2091 // Remove it from the vector containing all TemplateURLs. 2103 // Remove it from the vector containing all TemplateURLs.
2092 template_urls_.erase(i); 2104 template_urls_.erase(i);
2093 2105
2094 if (template_url->GetType() != TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION) { 2106 if (template_url->GetType() != TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION) {
2095 if (service_) 2107 if (web_data_service_)
2096 service_->RemoveKeyword(template_url->id()); 2108 web_data_service_->RemoveKeyword(template_url->id());
2097 2109
2098 // Inform sync of the deletion. 2110 // Inform sync of the deletion.
2099 ProcessTemplateURLChange(FROM_HERE, 2111 ProcessTemplateURLChange(FROM_HERE,
2100 template_url, 2112 template_url,
2101 syncer::SyncChange::ACTION_DELETE); 2113 syncer::SyncChange::ACTION_DELETE);
2102 2114
2103 UMA_HISTOGRAM_ENUMERATION(kDeleteSyncedEngineHistogramName, 2115 UMA_HISTOGRAM_ENUMERATION(kDeleteSyncedEngineHistogramName,
2104 DELETE_ENGINE_USER_ACTION, DELETE_ENGINE_MAX); 2116 DELETE_ENGINE_USER_ACTION, DELETE_ENGINE_MAX);
2105 } 2117 }
2106 2118
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
2170 // database and the |default_search_provider|. 2182 // database and the |default_search_provider|.
2171 default_search_provider_ = template_url; 2183 default_search_provider_ = template_url;
2172 // Prevent us from saving any other entries, or creating a new one. 2184 // Prevent us from saving any other entries, or creating a new one.
2173 default_from_prefs = NULL; 2185 default_from_prefs = NULL;
2174 ++i; 2186 ++i;
2175 continue; 2187 continue;
2176 } 2188 }
2177 2189
2178 RemoveFromMaps(template_url); 2190 RemoveFromMaps(template_url);
2179 i = template_urls->erase(i); 2191 i = template_urls->erase(i);
2180 if (service_) 2192 if (web_data_service_)
2181 service_->RemoveKeyword(template_url->id()); 2193 web_data_service_->RemoveKeyword(template_url->id());
2182 delete template_url; 2194 delete template_url;
2183 } else { 2195 } else {
2184 ++i; 2196 ++i;
2185 } 2197 }
2186 } 2198 }
2187 2199
2188 if (default_from_prefs) { 2200 if (default_from_prefs) {
2189 default_search_provider_ = NULL; 2201 default_search_provider_ = NULL;
2190 default_search_provider_source_ = DefaultSearchManager::FROM_POLICY; 2202 default_search_provider_source_ = DefaultSearchManager::FROM_POLICY;
2191 TemplateURLData new_data(*default_from_prefs); 2203 TemplateURLData new_data(*default_from_prefs);
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
2364 TemplateURLVector* template_urls) { 2376 TemplateURLVector* template_urls) {
2365 DCHECK(template_urls); 2377 DCHECK(template_urls);
2366 for (TemplateURLVector::iterator i = template_urls->begin(); 2378 for (TemplateURLVector::iterator i = template_urls->begin();
2367 i != template_urls->end(); ++i) { 2379 i != template_urls->end(); ++i) {
2368 TemplateURL* template_url = *i; 2380 TemplateURL* template_url = *i;
2369 DCHECK(template_url); 2381 DCHECK(template_url);
2370 if (template_url->sync_guid().empty() && 2382 if (template_url->sync_guid().empty() &&
2371 (template_url->GetType() != 2383 (template_url->GetType() !=
2372 TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION)) { 2384 TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION)) {
2373 template_url->data_.sync_guid = base::GenerateGUID(); 2385 template_url->data_.sync_guid = base::GenerateGUID();
2374 if (service_) 2386 if (web_data_service_)
2375 service_->UpdateKeyword(template_url->data()); 2387 web_data_service_->UpdateKeyword(template_url->data());
2376 } 2388 }
2377 } 2389 }
2378 } 2390 }
2379 2391
2380 void TemplateURLService::OnSyncedDefaultSearchProviderGUIDChanged() { 2392 void TemplateURLService::OnSyncedDefaultSearchProviderGUIDChanged() {
2381 base::AutoReset<DefaultSearchChangeOrigin> change_origin( 2393 base::AutoReset<DefaultSearchChangeOrigin> change_origin(
2382 &dsp_change_origin_, DSP_CHANGE_SYNC_PREF); 2394 &dsp_change_origin_, DSP_CHANGE_SYNC_PREF);
2383 2395
2384 std::string new_guid = 2396 std::string new_guid =
2385 GetPrefs()->GetString(prefs::kSyncedDefaultSearchProviderGUID); 2397 GetPrefs()->GetString(prefs::kSyncedDefaultSearchProviderGUID);
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
2444 2456
2445 if (most_recently_intalled_default) { 2457 if (most_recently_intalled_default) {
2446 base::AutoReset<DefaultSearchChangeOrigin> change_origin( 2458 base::AutoReset<DefaultSearchChangeOrigin> change_origin(
2447 &dsp_change_origin_, DSP_CHANGE_OVERRIDE_SETTINGS_EXTENSION); 2459 &dsp_change_origin_, DSP_CHANGE_OVERRIDE_SETTINGS_EXTENSION);
2448 default_search_manager_.SetExtensionControlledDefaultSearchEngine( 2460 default_search_manager_.SetExtensionControlledDefaultSearchEngine(
2449 most_recently_intalled_default->data()); 2461 most_recently_intalled_default->data());
2450 } else { 2462 } else {
2451 default_search_manager_.ClearExtensionControlledDefaultSearchEngine(); 2463 default_search_manager_.ClearExtensionControlledDefaultSearchEngine();
2452 } 2464 }
2453 } 2465 }
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