Chromium Code Reviews| 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 |