| Index: chrome/browser/search_engines/template_url_service.cc
|
| diff --git a/chrome/browser/search_engines/template_url_service.cc b/chrome/browser/search_engines/template_url_service.cc
|
| index 817756c296f27528bf9760a94e42b36057b6b35d..39240eb3940176364484eaecfb4831fe223bb78c 100644
|
| --- a/chrome/browser/search_engines/template_url_service.cc
|
| +++ b/chrome/browser/search_engines/template_url_service.cc
|
| @@ -418,79 +418,6 @@ bool TemplateURLService::LoadDefaultSearchProviderFromPrefs(
|
| }
|
|
|
| // static
|
| -void TemplateURLService::SaveDefaultSearchProviderToPrefs(
|
| - const TemplateURL* t_url, PrefService* prefs) {
|
| - if (!prefs)
|
| - return;
|
| -
|
| - bool enabled = false;
|
| - std::string search_url;
|
| - std::string suggest_url;
|
| - std::string instant_url;
|
| - std::string image_url;
|
| - std::string new_tab_url;
|
| - std::string search_url_post_params;
|
| - std::string suggest_url_post_params;
|
| - std::string instant_url_post_params;
|
| - std::string image_url_post_params;
|
| - std::string icon_url;
|
| - std::string encodings;
|
| - std::string short_name;
|
| - std::string keyword;
|
| - std::string id_string;
|
| - std::string prepopulate_id;
|
| - base::ListValue alternate_urls;
|
| - std::string search_terms_replacement_key;
|
| - if (t_url) {
|
| - DCHECK_EQ(TemplateURL::NORMAL, t_url->GetType());
|
| - enabled = true;
|
| - search_url = t_url->url();
|
| - suggest_url = t_url->suggestions_url();
|
| - instant_url = t_url->instant_url();
|
| - image_url = t_url->image_url();
|
| - new_tab_url = t_url->new_tab_url();
|
| - search_url_post_params = t_url->search_url_post_params();
|
| - suggest_url_post_params = t_url->suggestions_url_post_params();
|
| - instant_url_post_params = t_url->instant_url_post_params();
|
| - image_url_post_params = t_url->image_url_post_params();
|
| - GURL icon_gurl = t_url->favicon_url();
|
| - if (!icon_gurl.is_empty())
|
| - icon_url = icon_gurl.spec();
|
| - encodings = JoinString(t_url->input_encodings(), ';');
|
| - short_name = base::UTF16ToUTF8(t_url->short_name());
|
| - keyword = base::UTF16ToUTF8(t_url->keyword());
|
| - id_string = base::Int64ToString(t_url->id());
|
| - prepopulate_id = base::Int64ToString(t_url->prepopulate_id());
|
| - for (size_t i = 0; i < t_url->alternate_urls().size(); ++i)
|
| - alternate_urls.AppendString(t_url->alternate_urls()[i]);
|
| - search_terms_replacement_key = t_url->search_terms_replacement_key();
|
| - }
|
| - prefs->SetBoolean(prefs::kDefaultSearchProviderEnabled, enabled);
|
| - prefs->SetString(prefs::kDefaultSearchProviderSearchURL, search_url);
|
| - prefs->SetString(prefs::kDefaultSearchProviderSuggestURL, suggest_url);
|
| - prefs->SetString(prefs::kDefaultSearchProviderInstantURL, instant_url);
|
| - prefs->SetString(prefs::kDefaultSearchProviderImageURL, image_url);
|
| - prefs->SetString(prefs::kDefaultSearchProviderNewTabURL, new_tab_url);
|
| - prefs->SetString(prefs::kDefaultSearchProviderSearchURLPostParams,
|
| - search_url_post_params);
|
| - prefs->SetString(prefs::kDefaultSearchProviderSuggestURLPostParams,
|
| - suggest_url_post_params);
|
| - prefs->SetString(prefs::kDefaultSearchProviderInstantURLPostParams,
|
| - instant_url_post_params);
|
| - prefs->SetString(prefs::kDefaultSearchProviderImageURLPostParams,
|
| - image_url_post_params);
|
| - prefs->SetString(prefs::kDefaultSearchProviderIconURL, icon_url);
|
| - prefs->SetString(prefs::kDefaultSearchProviderEncodings, encodings);
|
| - prefs->SetString(prefs::kDefaultSearchProviderName, short_name);
|
| - prefs->SetString(prefs::kDefaultSearchProviderKeyword, keyword);
|
| - prefs->SetString(prefs::kDefaultSearchProviderID, id_string);
|
| - prefs->SetString(prefs::kDefaultSearchProviderPrepopulateID, prepopulate_id);
|
| - prefs->Set(prefs::kDefaultSearchProviderAlternateURLs, alternate_urls);
|
| - prefs->SetString(prefs::kDefaultSearchProviderSearchTermsReplacementKey,
|
| - search_terms_replacement_key);
|
| -}
|
| -
|
| -// static
|
| base::string16 TemplateURLService::GenerateKeyword(const GURL& url) {
|
| DCHECK(url.is_valid());
|
| // Strip "www." off the front of the keyword; otherwise the keyword won't work
|
| @@ -568,6 +495,79 @@ GURL TemplateURLService::GenerateSearchURLUsingTermsData(
|
| search_terms_data, NULL));
|
| }
|
|
|
| +void TemplateURLService::SaveDefaultSearchProviderToPrefs(
|
| + const TemplateURL* t_url,
|
| + PrefService* prefs) const {
|
| + if (!prefs || load_failed_)
|
| + return;
|
| +
|
| + bool enabled = false;
|
| + std::string search_url;
|
| + std::string suggest_url;
|
| + std::string instant_url;
|
| + std::string image_url;
|
| + std::string new_tab_url;
|
| + std::string search_url_post_params;
|
| + std::string suggest_url_post_params;
|
| + std::string instant_url_post_params;
|
| + std::string image_url_post_params;
|
| + std::string icon_url;
|
| + std::string encodings;
|
| + std::string short_name;
|
| + std::string keyword;
|
| + std::string id_string;
|
| + std::string prepopulate_id;
|
| + base::ListValue alternate_urls;
|
| + std::string search_terms_replacement_key;
|
| + if (t_url) {
|
| + DCHECK_EQ(TemplateURL::NORMAL, t_url->GetType());
|
| + enabled = true;
|
| + search_url = t_url->url();
|
| + suggest_url = t_url->suggestions_url();
|
| + instant_url = t_url->instant_url();
|
| + image_url = t_url->image_url();
|
| + new_tab_url = t_url->new_tab_url();
|
| + search_url_post_params = t_url->search_url_post_params();
|
| + suggest_url_post_params = t_url->suggestions_url_post_params();
|
| + instant_url_post_params = t_url->instant_url_post_params();
|
| + image_url_post_params = t_url->image_url_post_params();
|
| + GURL icon_gurl = t_url->favicon_url();
|
| + if (!icon_gurl.is_empty())
|
| + icon_url = icon_gurl.spec();
|
| + encodings = JoinString(t_url->input_encodings(), ';');
|
| + short_name = base::UTF16ToUTF8(t_url->short_name());
|
| + keyword = base::UTF16ToUTF8(t_url->keyword());
|
| + id_string = base::Int64ToString(t_url->id());
|
| + prepopulate_id = base::Int64ToString(t_url->prepopulate_id());
|
| + for (size_t i = 0; i < t_url->alternate_urls().size(); ++i)
|
| + alternate_urls.AppendString(t_url->alternate_urls()[i]);
|
| + search_terms_replacement_key = t_url->search_terms_replacement_key();
|
| + }
|
| + prefs->SetBoolean(prefs::kDefaultSearchProviderEnabled, enabled);
|
| + prefs->SetString(prefs::kDefaultSearchProviderSearchURL, search_url);
|
| + prefs->SetString(prefs::kDefaultSearchProviderSuggestURL, suggest_url);
|
| + prefs->SetString(prefs::kDefaultSearchProviderInstantURL, instant_url);
|
| + prefs->SetString(prefs::kDefaultSearchProviderImageURL, image_url);
|
| + prefs->SetString(prefs::kDefaultSearchProviderNewTabURL, new_tab_url);
|
| + prefs->SetString(prefs::kDefaultSearchProviderSearchURLPostParams,
|
| + search_url_post_params);
|
| + prefs->SetString(prefs::kDefaultSearchProviderSuggestURLPostParams,
|
| + suggest_url_post_params);
|
| + prefs->SetString(prefs::kDefaultSearchProviderInstantURLPostParams,
|
| + instant_url_post_params);
|
| + prefs->SetString(prefs::kDefaultSearchProviderImageURLPostParams,
|
| + image_url_post_params);
|
| + prefs->SetString(prefs::kDefaultSearchProviderIconURL, icon_url);
|
| + prefs->SetString(prefs::kDefaultSearchProviderEncodings, encodings);
|
| + prefs->SetString(prefs::kDefaultSearchProviderName, short_name);
|
| + prefs->SetString(prefs::kDefaultSearchProviderKeyword, keyword);
|
| + prefs->SetString(prefs::kDefaultSearchProviderID, id_string);
|
| + prefs->SetString(prefs::kDefaultSearchProviderPrepopulateID, prepopulate_id);
|
| + prefs->Set(prefs::kDefaultSearchProviderAlternateURLs, alternate_urls);
|
| + prefs->SetString(prefs::kDefaultSearchProviderSearchTermsReplacementKey,
|
| + search_terms_replacement_key);
|
| +}
|
| +
|
| bool TemplateURLService::CanReplaceKeyword(
|
| const base::string16& keyword,
|
| const GURL& url,
|
| @@ -810,8 +810,8 @@ void TemplateURLService::IncrementUsageCount(TemplateURL* url) {
|
| return;
|
| ++url->data_.usage_count;
|
|
|
| - if (service_.get())
|
| - service_.get()->UpdateKeyword(url->data());
|
| + if (service_)
|
| + service_->UpdateKeyword(url->data());
|
| }
|
|
|
| void TemplateURLService::ResetTemplateURL(TemplateURL* url,
|
| @@ -858,10 +858,8 @@ void TemplateURLService::SetUserSelectedDefaultSearchProvider(
|
| }
|
|
|
| TemplateURL* TemplateURLService::GetDefaultSearchProvider() {
|
| - if (loaded_ && !load_failed_)
|
| - return default_search_provider_;
|
| - // We're not loaded, rely on the default search provider stored in prefs.
|
| - return initial_default_search_provider_.get();
|
| + return (loaded_ && !load_failed_) ?
|
| + default_search_provider_ : initial_default_search_provider_.get();
|
| }
|
|
|
| bool TemplateURLService::IsSearchResultsPageFromDefaultSearchProvider(
|
| @@ -972,11 +970,10 @@ void TemplateURLService::Load() {
|
| if (loaded_ || load_handle_)
|
| return;
|
|
|
| - if (!service_.get()) {
|
| + if (!service_)
|
| service_ = WebDataService::FromBrowserContext(profile_);
|
| - }
|
|
|
| - if (service_.get()) {
|
| + if (service_) {
|
| load_handle_ = service_->GetKeywords(this);
|
| } else {
|
| ChangeToLoadedState();
|
| @@ -1003,6 +1000,7 @@ void TemplateURLService::OnWebDataServiceRequestDone(
|
| // Results are null if the database went away or (most likely) wasn't
|
| // loaded.
|
| load_failed_ = true;
|
| + service_ = NULL;
|
| ChangeToLoadedState();
|
| on_loaded_callbacks_.Notify();
|
| return;
|
| @@ -1280,6 +1278,15 @@ syncer::SyncMergeResult TemplateURLService::MergeDataAndStartSyncing(
|
| DCHECK(sync_processor.get());
|
| DCHECK(sync_error_factory.get());
|
| syncer::SyncMergeResult merge_result(type);
|
| +
|
| + // Disable sync if we failed to load.
|
| + if (load_failed_) {
|
| + merge_result.set_error(syncer::SyncError(
|
| + FROM_HERE, syncer::SyncError::DATATYPE_ERROR,
|
| + "Local database load failed.", syncer::SEARCH_ENGINES));
|
| + return merge_result;
|
| + }
|
| +
|
| sync_processor_ = sync_processor.Pass();
|
| sync_error_factory_ = sync_error_factory.Pass();
|
|
|
| @@ -1885,7 +1892,7 @@ bool TemplateURLService::UpdateNoNotify(
|
| if (!existing_turl->sync_guid().empty())
|
| guid_to_template_map_[existing_turl->sync_guid()] = existing_turl;
|
|
|
| - if (service_.get())
|
| + if (service_)
|
| service_->UpdateKeyword(existing_turl->data());
|
|
|
| // Inform sync of the update.
|
| @@ -2174,7 +2181,7 @@ bool TemplateURLService::SetDefaultSearchProviderNoNotify(TemplateURL* url) {
|
| // Don't mark the url as edited, otherwise we won't be able to rev the
|
| // template urls we ship with.
|
| url->data_.show_in_default_list = true;
|
| - if (service_.get() && (url->GetType() == TemplateURL::NORMAL))
|
| + if (service_ && (url->GetType() == TemplateURL::NORMAL))
|
| service_->UpdateKeyword(url->data());
|
|
|
| if (url->url_ref().HasGoogleBaseURLs()) {
|
| @@ -2209,7 +2216,7 @@ bool TemplateURLService::SetDefaultSearchProviderNoNotify(TemplateURL* url) {
|
| }
|
| }
|
|
|
| - if (service_.get())
|
| + if (service_)
|
| service_->SetDefaultSearchProviderID(url ? url->id() : 0);
|
|
|
| // Inform sync the change to the show_in_default_list flag.
|
| @@ -2261,7 +2268,7 @@ bool TemplateURLService::AddNoNotify(TemplateURL* template_url,
|
| if (newly_adding &&
|
| (template_url->GetType() !=
|
| TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION)) {
|
| - if (service_.get())
|
| + if (service_)
|
| service_->AddKeyword(template_url->data());
|
|
|
| // Inform sync of the addition. Note that this will assign a GUID to
|
| @@ -2288,7 +2295,7 @@ void TemplateURLService::RemoveNoNotify(TemplateURL* template_url) {
|
| template_urls_.erase(i);
|
|
|
| if (template_url->GetType() != TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION) {
|
| - if (service_.get())
|
| + if (service_)
|
| service_->RemoveKeyword(template_url->id());
|
|
|
| // Inform sync of the deletion.
|
| @@ -2358,7 +2365,7 @@ void TemplateURLService::RemoveProvidersCreatedByPolicy(
|
| *default_search_provider = NULL;
|
|
|
| i = template_urls->erase(i);
|
| - if (service_.get())
|
| + if (service_)
|
| service_->RemoveKeyword(template_url->id());
|
| delete template_url;
|
| } else {
|
| @@ -2582,7 +2589,7 @@ void TemplateURLService::PatchMissingSyncGUIDs(
|
| (template_url->GetType() !=
|
| TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION)) {
|
| template_url->data_.sync_guid = base::GenerateGUID();
|
| - if (service_.get())
|
| + if (service_)
|
| service_->UpdateKeyword(template_url->data());
|
| }
|
| }
|
|
|