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 "base/auto_reset.h" | 7 #include "base/auto_reset.h" |
8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
9 #include "base/compiler_specific.h" | 9 #include "base/compiler_specific.h" |
10 #include "base/environment.h" | 10 #include "base/environment.h" |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
73 return (url1 != NULL) && (url2 != NULL) && | 73 return (url1 != NULL) && (url2 != NULL) && |
74 (url1->short_name() == url2->short_name()) && | 74 (url1->short_name() == url2->short_name()) && |
75 url1->HasSameKeywordAs(*url2) && | 75 url1->HasSameKeywordAs(*url2) && |
76 (url1->url() == url2->url()) && | 76 (url1->url() == url2->url()) && |
77 (url1->suggestions_url() == url2->suggestions_url()) && | 77 (url1->suggestions_url() == url2->suggestions_url()) && |
78 (url1->instant_url() == url2->instant_url()) && | 78 (url1->instant_url() == url2->instant_url()) && |
79 (url1->favicon_url() == url2->favicon_url()) && | 79 (url1->favicon_url() == url2->favicon_url()) && |
80 (url1->safe_for_autoreplace() == url2->safe_for_autoreplace()) && | 80 (url1->safe_for_autoreplace() == url2->safe_for_autoreplace()) && |
81 (url1->show_in_default_list() == url2->show_in_default_list()) && | 81 (url1->show_in_default_list() == url2->show_in_default_list()) && |
82 (url1->input_encodings() == url2->input_encodings()) && | 82 (url1->input_encodings() == url2->input_encodings()) && |
83 (url1->alternate_urls() == url2->alternate_urls()); | 83 (url1->alternate_urls() == url2->alternate_urls()) && |
| 84 (url1->search_terms_replacement_key() == |
| 85 url2->search_terms_replacement_key()); |
84 } | 86 } |
85 | 87 |
86 const char kFirstPotentialEngineHistogramName[] = | 88 const char kFirstPotentialEngineHistogramName[] = |
87 "Search.FirstPotentialEngineCalled"; | 89 "Search.FirstPotentialEngineCalled"; |
88 | 90 |
89 // Values for an enumerated histogram used to track whenever | 91 // Values for an enumerated histogram used to track whenever |
90 // FirstPotentialDefaultEngine is called, and from where. | 92 // FirstPotentialDefaultEngine is called, and from where. |
91 enum FirstPotentialEngineCaller { | 93 enum FirstPotentialEngineCaller { |
92 FIRST_POTENTIAL_CALLSITE_FIND_NEW_DSP, | 94 FIRST_POTENTIAL_CALLSITE_FIND_NEW_DSP, |
93 FIRST_POTENTIAL_CALLSITE_FIND_NEW_DSP_PROCESSING_SYNC_CHANGES, | 95 FIRST_POTENTIAL_CALLSITE_FIND_NEW_DSP_PROCESSING_SYNC_CHANGES, |
(...skipping 1145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1239 se_specifics->set_date_created(turl.date_created().ToInternalValue()); | 1241 se_specifics->set_date_created(turl.date_created().ToInternalValue()); |
1240 se_specifics->set_input_encodings(JoinString(turl.input_encodings(), ';')); | 1242 se_specifics->set_input_encodings(JoinString(turl.input_encodings(), ';')); |
1241 se_specifics->set_show_in_default_list(turl.show_in_default_list()); | 1243 se_specifics->set_show_in_default_list(turl.show_in_default_list()); |
1242 se_specifics->set_suggestions_url(turl.suggestions_url()); | 1244 se_specifics->set_suggestions_url(turl.suggestions_url()); |
1243 se_specifics->set_prepopulate_id(turl.prepopulate_id()); | 1245 se_specifics->set_prepopulate_id(turl.prepopulate_id()); |
1244 se_specifics->set_instant_url(turl.instant_url()); | 1246 se_specifics->set_instant_url(turl.instant_url()); |
1245 se_specifics->set_last_modified(turl.last_modified().ToInternalValue()); | 1247 se_specifics->set_last_modified(turl.last_modified().ToInternalValue()); |
1246 se_specifics->set_sync_guid(turl.sync_guid()); | 1248 se_specifics->set_sync_guid(turl.sync_guid()); |
1247 for (size_t i = 0; i < turl.alternate_urls().size(); ++i) | 1249 for (size_t i = 0; i < turl.alternate_urls().size(); ++i) |
1248 se_specifics->add_alternate_urls(turl.alternate_urls()[i]); | 1250 se_specifics->add_alternate_urls(turl.alternate_urls()[i]); |
| 1251 se_specifics->set_search_terms_replacement_key( |
| 1252 turl.search_terms_replacement_key()); |
1249 | 1253 |
1250 return syncer::SyncData::CreateLocalData(se_specifics->sync_guid(), | 1254 return syncer::SyncData::CreateLocalData(se_specifics->sync_guid(), |
1251 se_specifics->keyword(), | 1255 se_specifics->keyword(), |
1252 specifics); | 1256 specifics); |
1253 } | 1257 } |
1254 | 1258 |
1255 // static | 1259 // static |
1256 TemplateURL* TemplateURLService::CreateTemplateURLFromTemplateURLAndSyncData( | 1260 TemplateURL* TemplateURLService::CreateTemplateURLFromTemplateURLAndSyncData( |
1257 Profile* profile, | 1261 Profile* profile, |
1258 TemplateURL* existing_turl, | 1262 TemplateURL* existing_turl, |
1259 const syncer::SyncData& sync_data, | 1263 const syncer::SyncData& sync_data, |
1260 syncer::SyncChangeList* change_list) { | 1264 syncer::SyncChangeList* change_list) { |
1261 DCHECK(change_list); | 1265 DCHECK(change_list); |
1262 | 1266 |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1302 // GetSearchProvidersUsingKeywordResult(), since otherwise we'd never correct | 1306 // GetSearchProvidersUsingKeywordResult(), since otherwise we'd never correct |
1303 // local problems for clients which have disabled search engine sync. | 1307 // local problems for clients which have disabled search engine sync. |
1304 bool deduped = DeDupeEncodings(&data.input_encodings); | 1308 bool deduped = DeDupeEncodings(&data.input_encodings); |
1305 data.date_created = base::Time::FromInternalValue(specifics.date_created()); | 1309 data.date_created = base::Time::FromInternalValue(specifics.date_created()); |
1306 data.last_modified = base::Time::FromInternalValue(specifics.last_modified()); | 1310 data.last_modified = base::Time::FromInternalValue(specifics.last_modified()); |
1307 data.prepopulate_id = specifics.prepopulate_id(); | 1311 data.prepopulate_id = specifics.prepopulate_id(); |
1308 data.sync_guid = specifics.sync_guid(); | 1312 data.sync_guid = specifics.sync_guid(); |
1309 data.alternate_urls.clear(); | 1313 data.alternate_urls.clear(); |
1310 for (int i = 0; i < specifics.alternate_urls_size(); ++i) | 1314 for (int i = 0; i < specifics.alternate_urls_size(); ++i) |
1311 data.alternate_urls.push_back(specifics.alternate_urls(i)); | 1315 data.alternate_urls.push_back(specifics.alternate_urls(i)); |
| 1316 data.search_terms_replacement_key = specifics.search_terms_replacement_key(); |
1312 | 1317 |
1313 TemplateURL* turl = new TemplateURL(profile, data); | 1318 TemplateURL* turl = new TemplateURL(profile, data); |
1314 DCHECK(!turl->IsExtensionKeyword()); | 1319 DCHECK(!turl->IsExtensionKeyword()); |
1315 if (reset_keyword || deduped) { | 1320 if (reset_keyword || deduped) { |
1316 if (reset_keyword) | 1321 if (reset_keyword) |
1317 turl->ResetKeywordIfNecessary(true); | 1322 turl->ResetKeywordIfNecessary(true); |
1318 syncer::SyncData sync_data = CreateSyncDataFromTemplateURL(*turl); | 1323 syncer::SyncData sync_data = CreateSyncDataFromTemplateURL(*turl); |
1319 change_list->push_back( | 1324 change_list->push_back( |
1320 syncer::SyncChange(FROM_HERE, | 1325 syncer::SyncChange(FROM_HERE, |
1321 syncer::SyncChange::ACTION_UPDATE, | 1326 syncer::SyncChange::ACTION_UPDATE, |
(...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1565 std::string search_url; | 1570 std::string search_url; |
1566 std::string suggest_url; | 1571 std::string suggest_url; |
1567 std::string instant_url; | 1572 std::string instant_url; |
1568 std::string icon_url; | 1573 std::string icon_url; |
1569 std::string encodings; | 1574 std::string encodings; |
1570 std::string short_name; | 1575 std::string short_name; |
1571 std::string keyword; | 1576 std::string keyword; |
1572 std::string id_string; | 1577 std::string id_string; |
1573 std::string prepopulate_id; | 1578 std::string prepopulate_id; |
1574 ListValue alternate_urls; | 1579 ListValue alternate_urls; |
| 1580 std::string search_terms_replacement_key; |
1575 if (t_url) { | 1581 if (t_url) { |
1576 DCHECK(!t_url->IsExtensionKeyword()); | 1582 DCHECK(!t_url->IsExtensionKeyword()); |
1577 enabled = true; | 1583 enabled = true; |
1578 search_url = t_url->url(); | 1584 search_url = t_url->url(); |
1579 suggest_url = t_url->suggestions_url(); | 1585 suggest_url = t_url->suggestions_url(); |
1580 instant_url = t_url->instant_url(); | 1586 instant_url = t_url->instant_url(); |
1581 GURL icon_gurl = t_url->favicon_url(); | 1587 GURL icon_gurl = t_url->favicon_url(); |
1582 if (!icon_gurl.is_empty()) | 1588 if (!icon_gurl.is_empty()) |
1583 icon_url = icon_gurl.spec(); | 1589 icon_url = icon_gurl.spec(); |
1584 encodings = JoinString(t_url->input_encodings(), ';'); | 1590 encodings = JoinString(t_url->input_encodings(), ';'); |
1585 short_name = UTF16ToUTF8(t_url->short_name()); | 1591 short_name = UTF16ToUTF8(t_url->short_name()); |
1586 keyword = UTF16ToUTF8(t_url->keyword()); | 1592 keyword = UTF16ToUTF8(t_url->keyword()); |
1587 id_string = base::Int64ToString(t_url->id()); | 1593 id_string = base::Int64ToString(t_url->id()); |
1588 prepopulate_id = base::Int64ToString(t_url->prepopulate_id()); | 1594 prepopulate_id = base::Int64ToString(t_url->prepopulate_id()); |
1589 for (size_t i = 0; i < t_url->alternate_urls().size(); ++i) | 1595 for (size_t i = 0; i < t_url->alternate_urls().size(); ++i) |
1590 alternate_urls.AppendString(t_url->alternate_urls()[i]); | 1596 alternate_urls.AppendString(t_url->alternate_urls()[i]); |
| 1597 search_terms_replacement_key = t_url->search_terms_replacement_key(); |
1591 } | 1598 } |
1592 prefs->SetBoolean(prefs::kDefaultSearchProviderEnabled, enabled); | 1599 prefs->SetBoolean(prefs::kDefaultSearchProviderEnabled, enabled); |
1593 prefs->SetString(prefs::kDefaultSearchProviderSearchURL, search_url); | 1600 prefs->SetString(prefs::kDefaultSearchProviderSearchURL, search_url); |
1594 prefs->SetString(prefs::kDefaultSearchProviderSuggestURL, suggest_url); | 1601 prefs->SetString(prefs::kDefaultSearchProviderSuggestURL, suggest_url); |
1595 prefs->SetString(prefs::kDefaultSearchProviderInstantURL, instant_url); | 1602 prefs->SetString(prefs::kDefaultSearchProviderInstantURL, instant_url); |
1596 prefs->SetString(prefs::kDefaultSearchProviderIconURL, icon_url); | 1603 prefs->SetString(prefs::kDefaultSearchProviderIconURL, icon_url); |
1597 prefs->SetString(prefs::kDefaultSearchProviderEncodings, encodings); | 1604 prefs->SetString(prefs::kDefaultSearchProviderEncodings, encodings); |
1598 prefs->SetString(prefs::kDefaultSearchProviderName, short_name); | 1605 prefs->SetString(prefs::kDefaultSearchProviderName, short_name); |
1599 prefs->SetString(prefs::kDefaultSearchProviderKeyword, keyword); | 1606 prefs->SetString(prefs::kDefaultSearchProviderKeyword, keyword); |
1600 prefs->SetString(prefs::kDefaultSearchProviderID, id_string); | 1607 prefs->SetString(prefs::kDefaultSearchProviderID, id_string); |
1601 prefs->SetString(prefs::kDefaultSearchProviderPrepopulateID, prepopulate_id); | 1608 prefs->SetString(prefs::kDefaultSearchProviderPrepopulateID, prepopulate_id); |
1602 prefs->Set(prefs::kDefaultSearchProviderAlternateURLs, alternate_urls); | 1609 prefs->Set(prefs::kDefaultSearchProviderAlternateURLs, alternate_urls); |
| 1610 prefs->SetString(prefs::kDefaultSearchProviderSearchTermsReplacementKey, |
| 1611 search_terms_replacement_key); |
1603 } | 1612 } |
1604 | 1613 |
1605 bool TemplateURLService::LoadDefaultSearchProviderFromPrefs( | 1614 bool TemplateURLService::LoadDefaultSearchProviderFromPrefs( |
1606 scoped_ptr<TemplateURL>* default_provider, | 1615 scoped_ptr<TemplateURL>* default_provider, |
1607 bool* is_managed) { | 1616 bool* is_managed) { |
1608 PrefService* prefs = GetPrefs(); | 1617 PrefService* prefs = GetPrefs(); |
1609 if (!prefs || !prefs->HasPrefPath(prefs::kDefaultSearchProviderSearchURL)) | 1618 if (!prefs || !prefs->HasPrefPath(prefs::kDefaultSearchProviderSearchURL)) |
1610 return false; | 1619 return false; |
1611 | 1620 |
1612 const PrefService::Preference* pref = | 1621 const PrefService::Preference* pref = |
(...skipping 30 matching lines...) Expand all Loading... |
1643 prefs->GetString(prefs::kDefaultSearchProviderInstantURL); | 1652 prefs->GetString(prefs::kDefaultSearchProviderInstantURL); |
1644 std::string icon_url = | 1653 std::string icon_url = |
1645 prefs->GetString(prefs::kDefaultSearchProviderIconURL); | 1654 prefs->GetString(prefs::kDefaultSearchProviderIconURL); |
1646 std::string encodings = | 1655 std::string encodings = |
1647 prefs->GetString(prefs::kDefaultSearchProviderEncodings); | 1656 prefs->GetString(prefs::kDefaultSearchProviderEncodings); |
1648 std::string id_string = prefs->GetString(prefs::kDefaultSearchProviderID); | 1657 std::string id_string = prefs->GetString(prefs::kDefaultSearchProviderID); |
1649 std::string prepopulate_id = | 1658 std::string prepopulate_id = |
1650 prefs->GetString(prefs::kDefaultSearchProviderPrepopulateID); | 1659 prefs->GetString(prefs::kDefaultSearchProviderPrepopulateID); |
1651 const ListValue* alternate_urls = | 1660 const ListValue* alternate_urls = |
1652 prefs->GetList(prefs::kDefaultSearchProviderAlternateURLs); | 1661 prefs->GetList(prefs::kDefaultSearchProviderAlternateURLs); |
| 1662 std::string search_terms_replacement_key = prefs->GetString( |
| 1663 prefs::kDefaultSearchProviderSearchTermsReplacementKey); |
1653 | 1664 |
1654 TemplateURLData data; | 1665 TemplateURLData data; |
1655 data.short_name = name; | 1666 data.short_name = name; |
1656 data.SetKeyword(keyword); | 1667 data.SetKeyword(keyword); |
1657 data.SetURL(search_url); | 1668 data.SetURL(search_url); |
1658 data.suggestions_url = suggest_url; | 1669 data.suggestions_url = suggest_url; |
1659 data.instant_url = instant_url; | 1670 data.instant_url = instant_url; |
1660 data.favicon_url = GURL(icon_url); | 1671 data.favicon_url = GURL(icon_url); |
1661 data.show_in_default_list = true; | 1672 data.show_in_default_list = true; |
1662 data.alternate_urls.clear(); | 1673 data.alternate_urls.clear(); |
1663 for (size_t i = 0; i < alternate_urls->GetSize(); ++i) { | 1674 for (size_t i = 0; i < alternate_urls->GetSize(); ++i) { |
1664 std::string alternate_url; | 1675 std::string alternate_url; |
1665 if (alternate_urls->GetString(i, &alternate_url)) | 1676 if (alternate_urls->GetString(i, &alternate_url)) |
1666 data.alternate_urls.push_back(alternate_url); | 1677 data.alternate_urls.push_back(alternate_url); |
1667 } | 1678 } |
| 1679 data.search_terms_replacement_key = search_terms_replacement_key; |
1668 base::SplitString(encodings, ';', &data.input_encodings); | 1680 base::SplitString(encodings, ';', &data.input_encodings); |
1669 if (!id_string.empty() && !*is_managed) { | 1681 if (!id_string.empty() && !*is_managed) { |
1670 int64 value; | 1682 int64 value; |
1671 base::StringToInt64(id_string, &value); | 1683 base::StringToInt64(id_string, &value); |
1672 data.id = value; | 1684 data.id = value; |
1673 } | 1685 } |
1674 if (!prepopulate_id.empty() && !*is_managed) { | 1686 if (!prepopulate_id.empty() && !*is_managed) { |
1675 int value; | 1687 int value; |
1676 base::StringToInt(prepopulate_id, &value); | 1688 base::StringToInt(prepopulate_id, &value); |
1677 data.prepopulate_id = value; | 1689 data.prepopulate_id = value; |
(...skipping 809 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2487 // TODO(mpcomplete): If we allow editing extension keywords, then those | 2499 // TODO(mpcomplete): If we allow editing extension keywords, then those |
2488 // should be persisted to disk and synced. | 2500 // should be persisted to disk and synced. |
2489 if (template_url->sync_guid().empty() && | 2501 if (template_url->sync_guid().empty() && |
2490 !template_url->IsExtensionKeyword()) { | 2502 !template_url->IsExtensionKeyword()) { |
2491 template_url->data_.sync_guid = base::GenerateGUID(); | 2503 template_url->data_.sync_guid = base::GenerateGUID(); |
2492 if (service_.get()) | 2504 if (service_.get()) |
2493 service_->UpdateKeyword(template_url->data()); | 2505 service_->UpdateKeyword(template_url->data()); |
2494 } | 2506 } |
2495 } | 2507 } |
2496 } | 2508 } |
OLD | NEW |