Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(472)

Side by Side Diff: chrome/browser/search_engines/template_url_service.cc

Issue 217613002: Misc. cleanup found while mucking with search engines code: (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 870 matching lines...) Expand 10 before | Expand all | Expand 10 after
881 if (!loaded_) 881 if (!loaded_)
882 visits_to_add_.push_back(*visit_details.ptr()); 882 visits_to_add_.push_back(*visit_details.ptr());
883 else 883 else
884 UpdateKeywordSearchTermsForURL(*visit_details.ptr()); 884 UpdateKeywordSearchTermsForURL(*visit_details.ptr());
885 } else if (type == chrome::NOTIFICATION_DEFAULT_SEARCH_POLICY_CHANGED) { 885 } else if (type == chrome::NOTIFICATION_DEFAULT_SEARCH_POLICY_CHANGED) {
886 // Policy has been updated, so the default search prefs may be different. 886 // Policy has been updated, so the default search prefs may be different.
887 // Reload the default search provider from them. 887 // Reload the default search provider from them.
888 // TODO(pkasting): Rather than communicating via prefs, we should eventually 888 // TODO(pkasting): Rather than communicating via prefs, we should eventually
889 // observe policy changes directly. 889 // observe policy changes directly.
890 UpdateDefaultSearch(); 890 UpdateDefaultSearch();
891 } else if (type == chrome::NOTIFICATION_GOOGLE_URL_UPDATED) { 891 } else {
892 DCHECK_EQ(chrome::NOTIFICATION_GOOGLE_URL_UPDATED, type);
892 if (loaded_) { 893 if (loaded_) {
893 GoogleBaseURLChanged( 894 GoogleBaseURLChanged(
894 content::Details<GoogleURLTracker::UpdatedDetails>(details)->first); 895 content::Details<GoogleURLTracker::UpdatedDetails>(details)->first);
895 } 896 }
896 } else {
897 NOTREACHED();
898 } 897 }
899 } 898 }
900 899
901 void TemplateURLService::Shutdown() { 900 void TemplateURLService::Shutdown() {
902 // This check has to be done at Shutdown() instead of in the dtor to ensure 901 // This check has to be done at Shutdown() instead of in the dtor to ensure
903 // that no clients of WebDataService are holding ptrs to it after the first 902 // that no clients of WebDataService are holding ptrs to it after the first
904 // phase of the KeyedService Shutdown() process. 903 // phase of the KeyedService Shutdown() process.
905 if (load_handle_) { 904 if (load_handle_) {
906 DCHECK(service_.get()); 905 DCHECK(service_.get());
907 service_->CancelRequest(load_handle_); 906 service_->CancelRequest(load_handle_);
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
985 984
986 // Explicitly don't check for conflicts against extension keywords; in this 985 // Explicitly don't check for conflicts against extension keywords; in this
987 // case the functions which modify the keyword map know how to handle the 986 // case the functions which modify the keyword map know how to handle the
988 // conflicts. 987 // conflicts.
989 // TODO(mpcomplete): If we allow editing extension keywords, then those will 988 // TODO(mpcomplete): If we allow editing extension keywords, then those will
990 // need to undergo conflict resolution. 989 // need to undergo conflict resolution.
991 TemplateURL* existing_keyword_turl = 990 TemplateURL* existing_keyword_turl =
992 FindNonExtensionTemplateURLForKeyword(turl->keyword()); 991 FindNonExtensionTemplateURLForKeyword(turl->keyword());
993 if (iter->change_type() == syncer::SyncChange::ACTION_DELETE) { 992 if (iter->change_type() == syncer::SyncChange::ACTION_DELETE) {
994 if (!existing_turl) { 993 if (!existing_turl) {
995 NOTREACHED() << "Unexpected sync change state.";
996 error = sync_error_factory_->CreateAndUploadError( 994 error = sync_error_factory_->CreateAndUploadError(
997 FROM_HERE, 995 FROM_HERE,
998 "ProcessSyncChanges failed on ChangeType ACTION_DELETE"); 996 "ProcessSyncChanges failed on ChangeType ACTION_DELETE");
999 LOG(ERROR) << "Trying to delete a non-existent TemplateURL.";
1000 continue; 997 continue;
1001 } 998 }
1002 if (existing_turl == GetDefaultSearchProvider()) { 999 if (existing_turl == GetDefaultSearchProvider()) {
1003 // The only way Sync can attempt to delete the default search provider 1000 // The only way Sync can attempt to delete the default search provider
1004 // is if we had changed the kSyncedDefaultSearchProviderGUID 1001 // is if we had changed the kSyncedDefaultSearchProviderGUID
1005 // preference, but perhaps it has not yet been received. To avoid 1002 // preference, but perhaps it has not yet been received. To avoid
1006 // situations where this has come in erroneously, we will un-delete 1003 // situations where this has come in erroneously, we will un-delete
1007 // the current default search from the Sync data. If the pref really 1004 // the current default search from the Sync data. If the pref really
1008 // does arrive later, then default search will change to the correct 1005 // does arrive later, then default search will change to the correct
1009 // entry, but we'll have this extra entry sitting around. The result is 1006 // entry, but we'll have this extra entry sitting around. The result is
(...skipping 17 matching lines...) Expand all
1027 syncer::SyncChange::ACTION_ADD, 1024 syncer::SyncChange::ACTION_ADD,
1028 sync_data)); 1025 sync_data));
1029 // Ignore the delete attempt. This means we never end up reseting the 1026 // Ignore the delete attempt. This means we never end up reseting the
1030 // default search provider due to an ACTION_DELETE from sync. 1027 // default search provider due to an ACTION_DELETE from sync.
1031 continue; 1028 continue;
1032 } 1029 }
1033 1030
1034 Remove(existing_turl); 1031 Remove(existing_turl);
1035 } else if (iter->change_type() == syncer::SyncChange::ACTION_ADD) { 1032 } else if (iter->change_type() == syncer::SyncChange::ACTION_ADD) {
1036 if (existing_turl) { 1033 if (existing_turl) {
1037 NOTREACHED() << "Unexpected sync change state.";
1038 error = sync_error_factory_->CreateAndUploadError( 1034 error = sync_error_factory_->CreateAndUploadError(
1039 FROM_HERE, 1035 FROM_HERE,
1040 "ProcessSyncChanges failed on ChangeType ACTION_ADD"); 1036 "ProcessSyncChanges failed on ChangeType ACTION_ADD");
1041 LOG(ERROR) << "Trying to add an existing TemplateURL.";
1042 continue; 1037 continue;
1043 } 1038 }
1044 const std::string guid = turl->sync_guid(); 1039 const std::string guid = turl->sync_guid();
1045 if (existing_keyword_turl) { 1040 if (existing_keyword_turl) {
1046 // Resolve any conflicts so we can safely add the new entry. 1041 // Resolve any conflicts so we can safely add the new entry.
1047 ResolveSyncKeywordConflict(turl.get(), existing_keyword_turl, 1042 ResolveSyncKeywordConflict(turl.get(), existing_keyword_turl,
1048 &new_changes); 1043 &new_changes);
1049 } 1044 }
1050 // Force the local ID to kInvalidTemplateURLID so we can add it. 1045 // Force the local ID to kInvalidTemplateURLID so we can add it.
1051 TemplateURLData data(turl->data()); 1046 TemplateURLData data(turl->data());
1052 data.id = kInvalidTemplateURLID; 1047 data.id = kInvalidTemplateURLID;
1053 Add(new TemplateURL(profile_, data)); 1048 Add(new TemplateURL(profile_, data));
1054 1049
1055 // Possibly set the newly added |turl| as the default search provider. 1050 // Possibly set the newly added |turl| as the default search provider.
1056 SetDefaultSearchProviderIfNewlySynced(guid); 1051 SetDefaultSearchProviderIfNewlySynced(guid);
1057 } else if (iter->change_type() == syncer::SyncChange::ACTION_UPDATE) { 1052 } else if (iter->change_type() == syncer::SyncChange::ACTION_UPDATE) {
1058 if (!existing_turl) { 1053 if (!existing_turl) {
1059 NOTREACHED() << "Unexpected sync change state.";
1060 error = sync_error_factory_->CreateAndUploadError( 1054 error = sync_error_factory_->CreateAndUploadError(
1061 FROM_HERE, 1055 FROM_HERE,
1062 "ProcessSyncChanges failed on ChangeType ACTION_UPDATE"); 1056 "ProcessSyncChanges failed on ChangeType ACTION_UPDATE");
1063 LOG(ERROR) << "Trying to update a non-existent TemplateURL.";
1064 continue; 1057 continue;
1065 } 1058 }
1066 if (existing_keyword_turl && (existing_keyword_turl != existing_turl)) { 1059 if (existing_keyword_turl && (existing_keyword_turl != existing_turl)) {
1067 // Resolve any conflicts with other entries so we can safely update the 1060 // Resolve any conflicts with other entries so we can safely update the
1068 // keyword. 1061 // keyword.
1069 ResolveSyncKeywordConflict(turl.get(), existing_keyword_turl, 1062 ResolveSyncKeywordConflict(turl.get(), existing_keyword_turl,
1070 &new_changes); 1063 &new_changes);
1071 } 1064 }
1072 UIThreadSearchTermsData search_terms_data(existing_turl->profile()); 1065 UIThreadSearchTermsData search_terms_data(existing_turl->profile());
1073 if (UpdateNoNotify(existing_turl, *turl, search_terms_data)) 1066 if (UpdateNoNotify(existing_turl, *turl, search_terms_data))
1074 NotifyObservers(); 1067 NotifyObservers();
1075 } else { 1068 } else {
1076 // We've unexpectedly received an ACTION_INVALID. 1069 // We've unexpectedly received an ACTION_INVALID.
1077 NOTREACHED() << "Unexpected sync change state.";
1078 error = sync_error_factory_->CreateAndUploadError( 1070 error = sync_error_factory_->CreateAndUploadError(
1079 FROM_HERE, 1071 FROM_HERE,
1080 "ProcessSyncChanges received an ACTION_INVALID"); 1072 "ProcessSyncChanges received an ACTION_INVALID");
1081 } 1073 }
1082 } 1074 }
1083 1075
1084 // If something went wrong, we want to prematurely exit to avoid pushing 1076 // If something went wrong, we want to prematurely exit to avoid pushing
1085 // inconsistent data to Sync. We return the last error we received. 1077 // inconsistent data to Sync. We return the last error we received.
1086 if (error.IsSet()) 1078 if (error.IsSet())
1087 return error; 1079 return error;
(...skipping 358 matching lines...) Expand 10 before | Expand all | Expand 10 after
1446 profile_source); 1438 profile_source);
1447 notification_registrar_.Add(this, chrome::NOTIFICATION_GOOGLE_URL_UPDATED, 1439 notification_registrar_.Add(this, chrome::NOTIFICATION_GOOGLE_URL_UPDATED,
1448 profile_source); 1440 profile_source);
1449 pref_change_registrar_.Init(GetPrefs()); 1441 pref_change_registrar_.Init(GetPrefs());
1450 pref_change_registrar_.Add( 1442 pref_change_registrar_.Add(
1451 prefs::kSyncedDefaultSearchProviderGUID, 1443 prefs::kSyncedDefaultSearchProviderGUID,
1452 base::Bind( 1444 base::Bind(
1453 &TemplateURLService::OnSyncedDefaultSearchProviderGUIDChanged, 1445 &TemplateURLService::OnSyncedDefaultSearchProviderGUIDChanged,
1454 base::Unretained(this))); 1446 base::Unretained(this)));
1455 } 1447 }
1456 notification_registrar_.Add(this, 1448 notification_registrar_.Add(
1457 chrome::NOTIFICATION_DEFAULT_SEARCH_POLICY_CHANGED, 1449 this, chrome::NOTIFICATION_DEFAULT_SEARCH_POLICY_CHANGED,
1458 content::NotificationService::AllSources()); 1450 content::NotificationService::AllSources());
1459 1451
1460 if (num_initializers > 0) { 1452 if (num_initializers > 0) {
1461 // This path is only hit by test code and is used to simulate a loaded 1453 // This path is only hit by test code and is used to simulate a loaded
1462 // TemplateURLService. 1454 // TemplateURLService.
1463 ChangeToLoadedState(); 1455 ChangeToLoadedState();
1464 1456
1465 // Add specific initializers, if any. 1457 // Add specific initializers, if any.
1466 for (int i(0); i < num_initializers; ++i) { 1458 for (int i(0); i < num_initializers; ++i) {
1467 DCHECK(initializers[i].keyword); 1459 DCHECK(initializers[i].keyword);
(...skipping 712 matching lines...) Expand 10 before | Expand all | Expand 10 after
2180 // likely to race with the update from the other client, resulting in 2172 // likely to race with the update from the other client, resulting in
2181 // a possibly random default search provider. 2173 // a possibly random default search provider.
2182 if (sync_processor_.get() && url && !url->sync_guid().empty() && 2174 if (sync_processor_.get() && url && !url->sync_guid().empty() &&
2183 GetPrefs() && !processing_syncer_changes_) { 2175 GetPrefs() && !processing_syncer_changes_) {
2184 GetPrefs()->SetString(prefs::kSyncedDefaultSearchProviderGUID, 2176 GetPrefs()->SetString(prefs::kSyncedDefaultSearchProviderGUID,
2185 url->sync_guid()); 2177 url->sync_guid());
2186 } 2178 }
2187 } 2179 }
2188 2180
2189 if (service_.get()) 2181 if (service_.get())
2190 service_->SetDefaultSearchProvider(url); 2182 service_->SetDefaultSearchProviderID(url ? url->id() : 0);
2191 2183
2192 // Inform sync the change to the show_in_default_list flag. 2184 // Inform sync the change to the show_in_default_list flag.
2193 if (url) 2185 if (url)
2194 ProcessTemplateURLChange(FROM_HERE, 2186 ProcessTemplateURLChange(FROM_HERE,
2195 url, 2187 url,
2196 syncer::SyncChange::ACTION_UPDATE); 2188 syncer::SyncChange::ACTION_UPDATE);
2197 return true; 2189 return true;
2198 } 2190 }
2199 2191
2200 bool TemplateURLService::AddNoNotify(TemplateURL* template_url, 2192 bool TemplateURLService::AddNoNotify(TemplateURL* template_url,
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
2245 // template_url and add it to the guid_to_template_map_. 2237 // template_url and add it to the guid_to_template_map_.
2246 ProcessTemplateURLChange(FROM_HERE, 2238 ProcessTemplateURLChange(FROM_HERE,
2247 template_url, 2239 template_url,
2248 syncer::SyncChange::ACTION_ADD); 2240 syncer::SyncChange::ACTION_ADD);
2249 } 2241 }
2250 2242
2251 return true; 2243 return true;
2252 } 2244 }
2253 2245
2254 void TemplateURLService::RemoveNoNotify(TemplateURL* template_url) { 2246 void TemplateURLService::RemoveNoNotify(TemplateURL* template_url) {
2247 DCHECK(template_url != default_search_provider_);
2248
2255 TemplateURLVector::iterator i = 2249 TemplateURLVector::iterator i =
2256 std::find(template_urls_.begin(), template_urls_.end(), template_url); 2250 std::find(template_urls_.begin(), template_urls_.end(), template_url);
2257 if (i == template_urls_.end()) 2251 if (i == template_urls_.end())
2258 return; 2252 return;
2259 2253
2260 if (template_url == default_search_provider_) {
2261 // Should never delete the default search provider.
2262 NOTREACHED();
2263 return;
2264 }
2265
2266 RemoveFromMaps(template_url); 2254 RemoveFromMaps(template_url);
2267 2255
2268 // Remove it from the vector containing all TemplateURLs. 2256 // Remove it from the vector containing all TemplateURLs.
2269 template_urls_.erase(i); 2257 template_urls_.erase(i);
2270 2258
2271 if (template_url->GetType() != TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION) { 2259 if (template_url->GetType() != TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION) {
2272 if (service_.get()) 2260 if (service_.get())
2273 service_->RemoveKeyword(template_url->id()); 2261 service_->RemoveKeyword(template_url->id());
2274 2262
2275 // Inform sync of the deletion. 2263 // Inform sync of the deletion.
(...skipping 459 matching lines...) Expand 10 before | Expand all | Expand 10 after
2735 new_dse = *i; 2723 new_dse = *i;
2736 break; 2724 break;
2737 } 2725 }
2738 } 2726 }
2739 } 2727 }
2740 } 2728 }
2741 if (!new_dse) 2729 if (!new_dse)
2742 new_dse = FindNewDefaultSearchProvider(); 2730 new_dse = FindNewDefaultSearchProvider();
2743 SetDefaultSearchProviderNoNotify(new_dse); 2731 SetDefaultSearchProviderNoNotify(new_dse);
2744 } 2732 }
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/webdata/keyword_table.h » ('j') | chrome/browser/webdata/keyword_table.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698