| Index: chrome/browser/search_engines/template_url_service.cc
|
| ===================================================================
|
| --- chrome/browser/search_engines/template_url_service.cc (revision 132909)
|
| +++ chrome/browser/search_engines/template_url_service.cc (working copy)
|
| @@ -325,6 +325,12 @@
|
| NotifyObservers();
|
| }
|
|
|
| +void TemplateURLService::AddAndSetProfile(TemplateURL* template_url,
|
| + Profile* profile) {
|
| + template_url->profile_ = profile;
|
| + Add(template_url);
|
| +}
|
| +
|
| void TemplateURLService::AddWithOverrides(const TemplateURL* template_url,
|
| const string16& short_name,
|
| const string16& keyword,
|
| @@ -394,7 +400,7 @@
|
| // ID, as well as forcing the TemplateURL to be treated as a search keyword.
|
| data.SetURL(std::string(chrome::kExtensionScheme) + "://" +
|
| extension->id() + "/?q={searchTerms}");
|
| - Add(new TemplateURL(data));
|
| + Add(new TemplateURL(profile_, data));
|
| }
|
| }
|
|
|
| @@ -455,7 +461,7 @@
|
| }
|
| data.safe_for_autoreplace = false;
|
| data.last_modified = time_provider_();
|
| - TemplateURL new_url(data);
|
| + TemplateURL new_url(const_cast<TemplateURL*>(url)->profile(), data);
|
| UpdateNoNotify(url, new_url);
|
| NotifyObservers();
|
| }
|
| @@ -487,7 +493,7 @@
|
| const TemplateURL* TemplateURLService::FindNewDefaultSearchProvider() {
|
| // See if the prepopulated default still exists.
|
| scoped_ptr<TemplateURL> prepopulated_default(
|
| - TemplateURLPrepopulateData::GetPrepopulatedDefaultSearch(GetPrefs()));
|
| + TemplateURLPrepopulateData::GetPrepopulatedDefaultSearch(profile_));
|
| for (TemplateURLVector::iterator i = template_urls_.begin();
|
| i != template_urls_.end(); ++i) {
|
| if ((*i)->prepopulate_id() == prepopulated_default->prepopulate_id())
|
| @@ -549,7 +555,7 @@
|
| std::vector<TemplateURL*> template_urls;
|
| const TemplateURL* default_search_provider = NULL;
|
| int new_resource_keyword_version = 0;
|
| - GetSearchProvidersUsingKeywordResult(*result, service_.get(), GetPrefs(),
|
| + GetSearchProvidersUsingKeywordResult(*result, service_.get(), profile_,
|
| &template_urls, &default_search_provider, &new_resource_keyword_version);
|
|
|
| bool database_specified_a_default = (default_search_provider != NULL);
|
| @@ -568,7 +574,7 @@
|
| // No check is required if the default search is managed.
|
| // |DidDefaultSearchProviderChange| must always be called because it will
|
| // take care of the unowned backup default search provider instance.
|
| - if (DidDefaultSearchProviderChange(*result,
|
| + if (DidDefaultSearchProviderChange(*result, profile_,
|
| &backup_default_search_provider) &&
|
| !is_default_search_managed_) {
|
| hijacked_default_search_provider = default_search_provider;
|
| @@ -597,7 +603,7 @@
|
| TemplateURLData data(default_from_prefs->data());
|
| data.created_by_policy = true;
|
| data.id = kInvalidTemplateURLID;
|
| - TemplateURL* managed_default = new TemplateURL(data);
|
| + TemplateURL* managed_default = new TemplateURL(profile_, data);
|
| AddNoNotify(managed_default, true);
|
| default_search_provider = managed_default;
|
| }
|
| @@ -617,7 +623,7 @@
|
| default_search_provider == NULL) {
|
| for (std::vector<TemplateURL*>::const_iterator i = template_urls.begin();
|
| i != template_urls.end(); ++i) {
|
| - if (!(*i)->IsExtensionKeyword()) {
|
| + if (!(*i)->IsExtensionKeyword() && (*i)->SupportsReplacement()) {
|
| default_search_provider = *i;
|
| break;
|
| }
|
| @@ -791,7 +797,7 @@
|
| iter->sync_data().GetSpecifics().search_engine().sync_guid();
|
| const TemplateURL* existing_turl = GetTemplateURLForGUID(guid);
|
| scoped_ptr<TemplateURL> turl(CreateTemplateURLFromTemplateURLAndSyncData(
|
| - existing_turl, iter->sync_data(), &new_changes));
|
| + profile_, existing_turl, iter->sync_data(), &new_changes));
|
| if (!turl.get())
|
| continue;
|
|
|
| @@ -820,7 +826,7 @@
|
| // Force the local ID to kInvalidTemplateURLID so we can add it.
|
| TemplateURLData data(turl->data());
|
| data.id = kInvalidTemplateURLID;
|
| - Add(new TemplateURL(data));
|
| + Add(new TemplateURL(profile_, data));
|
|
|
| // Possibly set the newly added |turl| as the default search provider.
|
| SetDefaultSearchProviderIfNewlySynced(guid);
|
| @@ -891,8 +897,8 @@
|
| iter != sync_data_map.end(); ++iter) {
|
| const TemplateURL* local_turl = GetTemplateURLForGUID(iter->first);
|
| scoped_ptr<TemplateURL> sync_turl(
|
| - CreateTemplateURLFromTemplateURLAndSyncData(local_turl, iter->second,
|
| - &new_changes));
|
| + CreateTemplateURLFromTemplateURLAndSyncData(profile_, local_turl,
|
| + iter->second, &new_changes));
|
| if (!sync_turl.get())
|
| continue;
|
|
|
| @@ -937,7 +943,7 @@
|
| // Force the local ID to kInvalidTemplateURLID so we can add it.
|
| TemplateURLData data(sync_turl->data());
|
| data.id = kInvalidTemplateURLID;
|
| - Add(new TemplateURL(data));
|
| + Add(new TemplateURL(profile_, data));
|
|
|
| // Possibly set the newly added |turl| as the default search provider.
|
| SetDefaultSearchProviderIfNewlySynced(guid);
|
| @@ -1024,9 +1030,12 @@
|
|
|
| // static
|
| TemplateURL* TemplateURLService::CreateTemplateURLFromTemplateURLAndSyncData(
|
| + Profile* profile,
|
| const TemplateURL* existing_turl,
|
| const SyncData& sync_data,
|
| SyncChangeList* change_list) {
|
| + DCHECK(change_list);
|
| +
|
| sync_pb::SearchEngineSpecifics specifics =
|
| sync_data.GetSpecifics().search_engine();
|
|
|
| @@ -1059,7 +1068,7 @@
|
| data.usage_count = existing_turl->usage_count();
|
| }
|
|
|
| - TemplateURL* turl = new TemplateURL(data);
|
| + TemplateURL* turl = new TemplateURL(profile, data);
|
| DCHECK(!turl->IsExtensionKeyword());
|
| return turl;
|
| }
|
| @@ -1127,7 +1136,7 @@
|
| data.short_name = UTF8ToUTF16(initializers[i].content);
|
| data.SetKeyword(UTF8ToUTF16(initializers[i].keyword));
|
| data.SetURL(osd_url);
|
| - AddNoNotify(new TemplateURL(data), true);
|
| + AddNoNotify(new TemplateURL(profile_, data), true);
|
| }
|
| }
|
|
|
| @@ -1344,7 +1353,7 @@
|
| base::StringToInt(prepopulate_id, &value);
|
| data.prepopulate_id = value;
|
| }
|
| - default_provider->reset(new TemplateURL(data));
|
| + default_provider->reset(new TemplateURL(profile_, data));
|
| DCHECK(!(*default_provider)->IsExtensionKeyword());
|
| return true;
|
| }
|
| @@ -1567,7 +1576,7 @@
|
| // Prefs does not specify, so rely on the prepopulated engines. This
|
| // should happen only the first time Chrome is started.
|
| initial_default_search_provider_.reset(
|
| - TemplateURLPrepopulateData::GetPrepopulatedDefaultSearch(GetPrefs()));
|
| + TemplateURLPrepopulateData::GetPrepopulatedDefaultSearch(profile_));
|
| is_default_search_managed_ = false;
|
| }
|
| return;
|
| @@ -1604,14 +1613,14 @@
|
| } else if (default_search_provider_) {
|
| TemplateURLData data(new_default_from_prefs->data());
|
| data.created_by_policy = true;
|
| - TemplateURL new_values(data);
|
| + TemplateURL new_values(profile_, data);
|
| UpdateNoNotify(default_search_provider_, new_values);
|
| } else {
|
| TemplateURL* new_template = NULL;
|
| if (new_default_from_prefs.get()) {
|
| TemplateURLData data(new_default_from_prefs->data());
|
| data.created_by_policy = true;
|
| - new_template = new TemplateURL(data);
|
| + new_template = new TemplateURL(profile_, data);
|
| AddNoNotify(new_template, true);
|
| }
|
| SetDefaultSearchProviderNoNotify(new_template);
|
| @@ -1624,7 +1633,7 @@
|
| if (new_default_from_prefs.get()) {
|
| TemplateURLData data(new_default_from_prefs->data());
|
| data.created_by_policy = true;
|
| - new_template = new TemplateURL(data);
|
| + new_template = new TemplateURL(profile_, data);
|
| AddNoNotify(new_template, true);
|
| }
|
| SetDefaultSearchProviderNoNotify(new_template);
|
| @@ -1834,7 +1843,7 @@
|
|
|
| TemplateURLData data(url->data());
|
| data.sync_guid = guid;
|
| - TemplateURL new_url(data);
|
| + TemplateURL new_url(const_cast<TemplateURL*>(url)->profile(), data);
|
| UpdateNoNotify(url, new_url);
|
| }
|
|
|
| @@ -1888,7 +1897,8 @@
|
| string16 new_keyword = UniquifyKeyword(*existing_turl);
|
| TemplateURLData data(existing_turl->data());
|
| data.SetKeyword(new_keyword);
|
| - TemplateURL new_turl(data);
|
| + TemplateURL new_turl(const_cast<TemplateURL*>(existing_turl)->profile(),
|
| + data);
|
| UpdateNoNotify(existing_turl, new_turl);
|
| NotifyObservers();
|
| }
|
|
|