OLD | NEW |
---|---|
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 612 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
623 matches->push_back(i->second); | 623 matches->push_back(i->second); |
624 } | 624 } |
625 } | 625 } |
626 | 626 |
627 TemplateURL* TemplateURLService::GetTemplateURLForKeyword( | 627 TemplateURL* TemplateURLService::GetTemplateURLForKeyword( |
628 const base::string16& keyword) { | 628 const base::string16& keyword) { |
629 KeywordToTemplateMap::const_iterator elem( | 629 KeywordToTemplateMap::const_iterator elem( |
630 keyword_to_template_map_.find(keyword)); | 630 keyword_to_template_map_.find(keyword)); |
631 if (elem != keyword_to_template_map_.end()) | 631 if (elem != keyword_to_template_map_.end()) |
632 return elem->second; | 632 return elem->second; |
633 return ((!loaded_ || load_failed_) && | 633 return ((!loaded_ || load_failed_) && |
erikwright (departed)
2014/05/03 01:01:54
Now that we copied initial_default_search_provider
| |
634 initial_default_search_provider_.get() && | 634 initial_default_search_provider_.get() && |
635 (initial_default_search_provider_->keyword() == keyword)) ? | 635 (initial_default_search_provider_->keyword() == keyword)) ? |
636 initial_default_search_provider_.get() : NULL; | 636 initial_default_search_provider_.get() : NULL; |
637 } | 637 } |
638 | 638 |
639 TemplateURL* TemplateURLService::GetTemplateURLForGUID( | 639 TemplateURL* TemplateURLService::GetTemplateURLForGUID( |
640 const std::string& sync_guid) { | 640 const std::string& sync_guid) { |
641 GUIDToTemplateMap::const_iterator elem(guid_to_template_map_.find(sync_guid)); | 641 GUIDToTemplateMap::const_iterator elem(guid_to_template_map_.find(sync_guid)); |
642 if (elem != guid_to_template_map_.end()) | 642 if (elem != guid_to_template_map_.end()) |
643 return elem->second; | 643 return elem->second; |
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
851 SetDefaultSearchProvider(url); | 851 SetDefaultSearchProvider(url); |
852 if (default_search_manager_) { | 852 if (default_search_manager_) { |
853 if (url) | 853 if (url) |
854 default_search_manager_->SetUserSelectedDefaultSearchEngine(url->data()); | 854 default_search_manager_->SetUserSelectedDefaultSearchEngine(url->data()); |
855 else | 855 else |
856 default_search_manager_->ClearUserSelectedDefaultSearchEngine(); | 856 default_search_manager_->ClearUserSelectedDefaultSearchEngine(); |
857 } | 857 } |
858 } | 858 } |
859 | 859 |
860 TemplateURL* TemplateURLService::GetDefaultSearchProvider() { | 860 TemplateURL* TemplateURLService::GetDefaultSearchProvider() { |
861 if (loaded_ && !load_failed_) | 861 if (loaded_ && !load_failed_) |
erikwright (departed)
2014/05/03 01:01:54
Ditto here.
In fact, load_failed_ basically seems
| |
862 return default_search_provider_; | 862 return default_search_provider_; |
863 // We're not loaded, rely on the default search provider stored in prefs. | 863 // We're not loaded, rely on the default search provider stored in prefs. |
864 return initial_default_search_provider_.get(); | 864 return initial_default_search_provider_.get(); |
865 } | 865 } |
866 | 866 |
867 bool TemplateURLService::IsSearchResultsPageFromDefaultSearchProvider( | 867 bool TemplateURLService::IsSearchResultsPageFromDefaultSearchProvider( |
868 const GURL& url) { | 868 const GURL& url) { |
869 TemplateURL* default_provider = GetDefaultSearchProvider(); | 869 TemplateURL* default_provider = GetDefaultSearchProvider(); |
870 return default_provider && default_provider->IsSearchURL(url); | 870 return default_provider && default_provider->IsSearchURL(url); |
871 } | 871 } |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
969 } | 969 } |
970 | 970 |
971 void TemplateURLService::Load() { | 971 void TemplateURLService::Load() { |
972 if (loaded_ || load_handle_) | 972 if (loaded_ || load_handle_) |
973 return; | 973 return; |
974 | 974 |
975 if (!service_.get()) { | 975 if (!service_.get()) { |
976 service_ = WebDataService::FromBrowserContext(profile_); | 976 service_ = WebDataService::FromBrowserContext(profile_); |
977 } | 977 } |
978 | 978 |
979 if (service_.get()) { | 979 if (service_) |
980 load_handle_ = service_->GetKeywords(this); | 980 load_handle_ = service_->GetKeywords(this); |
981 } else { | 981 else |
982 ChangeToLoadedState(); | 982 OnFailedLoad(); |
983 on_loaded_callbacks_.Notify(); | |
984 } | |
985 } | 983 } |
986 | 984 |
987 scoped_ptr<TemplateURLService::Subscription> | 985 scoped_ptr<TemplateURLService::Subscription> |
988 TemplateURLService::RegisterOnLoadedCallback( | 986 TemplateURLService::RegisterOnLoadedCallback( |
989 const base::Closure& callback) { | 987 const base::Closure& callback) { |
990 return loaded_ ? | 988 return loaded_ ? |
991 scoped_ptr<TemplateURLService::Subscription>() : | 989 scoped_ptr<TemplateURLService::Subscription>() : |
992 on_loaded_callbacks_.Add(callback); | 990 on_loaded_callbacks_.Add(callback); |
993 } | 991 } |
994 | 992 |
995 void TemplateURLService::OnWebDataServiceRequestDone( | 993 void TemplateURLService::OnWebDataServiceRequestDone( |
996 WebDataService::Handle h, | 994 WebDataService::Handle h, |
997 const WDTypedResult* result) { | 995 const WDTypedResult* result) { |
998 // Reset the load_handle so that we don't try and cancel the load in | 996 // Reset the load_handle so that we don't try and cancel the load in |
999 // the destructor. | 997 // the destructor. |
1000 load_handle_ = 0; | 998 load_handle_ = 0; |
1001 | 999 |
1002 if (!result) { | 1000 if (!result) { |
1003 // Results are null if the database went away or (most likely) wasn't | 1001 // Results are null if the database went away or (most likely) wasn't |
1004 // loaded. | 1002 // loaded. |
1005 load_failed_ = true; | 1003 load_failed_ = true; |
erikwright (departed)
2014/05/03 01:01:54
Shouldn't this also be set in the '!service_' case
Peter Kasting
2014/05/05 18:46:24
Yes. Moved to OnFailedLoad().
| |
1006 ChangeToLoadedState(); | 1004 OnFailedLoad(); |
1007 on_loaded_callbacks_.Notify(); | |
1008 return; | 1005 return; |
1009 } | 1006 } |
1010 | 1007 |
1011 // initial_default_search_provider_ is only needed before we've finished | 1008 // initial_default_search_provider_ is only needed before we've finished |
1012 // loading. Now that we've loaded we can nuke it. | 1009 // loading. Now that we've loaded we can nuke it. |
1013 initial_default_search_provider_.reset(); | 1010 initial_default_search_provider_.reset(); |
1014 | 1011 |
1015 TemplateURLVector template_urls; | 1012 TemplateURLVector template_urls; |
1016 TemplateURL* default_search_provider = NULL; | 1013 TemplateURL* default_search_provider = NULL; |
1017 int new_resource_keyword_version = 0; | 1014 int new_resource_keyword_version = 0; |
(...skipping 760 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1778 } | 1775 } |
1779 | 1776 |
1780 void TemplateURLService::ChangeToLoadedState() { | 1777 void TemplateURLService::ChangeToLoadedState() { |
1781 DCHECK(!loaded_); | 1778 DCHECK(!loaded_); |
1782 | 1779 |
1783 UIThreadSearchTermsData search_terms_data(profile_); | 1780 UIThreadSearchTermsData search_terms_data(profile_); |
1784 provider_map_->Init(template_urls_, search_terms_data); | 1781 provider_map_->Init(template_urls_, search_terms_data); |
1785 loaded_ = true; | 1782 loaded_ = true; |
1786 } | 1783 } |
1787 | 1784 |
1785 void TemplateURLService::OnFailedLoad() { | |
1786 TemplateURL* default_search_provider = | |
1787 initial_default_search_provider_.release(); | |
1788 AddNoNotify(default_search_provider, true); | |
1789 SetDefaultSearchProviderNoNotify(default_search_provider); | |
1790 ChangeToLoadedState(); | |
1791 on_loaded_callbacks_.Notify(); | |
1792 } | |
1793 | |
1788 void TemplateURLService::ClearDefaultProviderFromPrefs() { | 1794 void TemplateURLService::ClearDefaultProviderFromPrefs() { |
1789 // We overwrite user preferences. If the default search engine is managed, | 1795 // We overwrite user preferences. If the default search engine is managed, |
1790 // there is no effect. | 1796 // there is no effect. |
1791 SaveDefaultSearchProviderToPrefs(NULL, GetPrefs()); | 1797 SaveDefaultSearchProviderToPrefs(NULL, GetPrefs()); |
1792 // Default value for kDefaultSearchProviderEnabled is true. | 1798 // Default value for kDefaultSearchProviderEnabled is true. |
1793 PrefService* prefs = GetPrefs(); | 1799 PrefService* prefs = GetPrefs(); |
1794 if (prefs) | 1800 if (prefs) |
1795 prefs->SetBoolean(prefs::kDefaultSearchProviderEnabled, true); | 1801 prefs->SetBoolean(prefs::kDefaultSearchProviderEnabled, true); |
1796 } | 1802 } |
1797 | 1803 |
(...skipping 956 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2754 new_dse = *i; | 2760 new_dse = *i; |
2755 break; | 2761 break; |
2756 } | 2762 } |
2757 } | 2763 } |
2758 } | 2764 } |
2759 } | 2765 } |
2760 if (!new_dse) | 2766 if (!new_dse) |
2761 new_dse = FindNewDefaultSearchProvider(); | 2767 new_dse = FindNewDefaultSearchProvider(); |
2762 SetDefaultSearchProviderNoNotify(new_dse); | 2768 SetDefaultSearchProviderNoNotify(new_dse); |
2763 } | 2769 } |
OLD | NEW |