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

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

Issue 9749012: [Sync] Have SyncableService's take ownership of their SyncChangeProcessor. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Initial comments Created 8 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 "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/environment.h" 9 #include "base/environment.h"
10 #include "base/i18n/case_conversion.h" 10 #include "base/i18n/case_conversion.h"
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
108 : profile_(profile), 108 : profile_(profile),
109 loaded_(false), 109 loaded_(false),
110 load_failed_(false), 110 load_failed_(false),
111 load_handle_(0), 111 load_handle_(0),
112 default_search_provider_(NULL), 112 default_search_provider_(NULL),
113 is_default_search_managed_(false), 113 is_default_search_managed_(false),
114 next_id_(kInvalidTemplateURLID + 1), 114 next_id_(kInvalidTemplateURLID + 1),
115 time_provider_(&base::Time::Now), 115 time_provider_(&base::Time::Now),
116 models_associated_(false), 116 models_associated_(false),
117 processing_syncer_changes_(false), 117 processing_syncer_changes_(false),
118 sync_processor_(NULL),
119 pending_synced_default_search_(false) { 118 pending_synced_default_search_(false) {
120 DCHECK(profile_); 119 DCHECK(profile_);
121 Init(NULL, 0); 120 Init(NULL, 0);
122 } 121 }
123 122
124 TemplateURLService::TemplateURLService(const Initializer* initializers, 123 TemplateURLService::TemplateURLService(const Initializer* initializers,
125 const int count) 124 const int count)
126 : profile_(NULL), 125 : profile_(NULL),
127 loaded_(false), 126 loaded_(false),
128 load_failed_(false), 127 load_failed_(false),
129 load_handle_(0), 128 load_handle_(0),
130 service_(NULL), 129 service_(NULL),
131 default_search_provider_(NULL), 130 default_search_provider_(NULL),
132 is_default_search_managed_(false), 131 is_default_search_managed_(false),
133 next_id_(kInvalidTemplateURLID + 1), 132 next_id_(kInvalidTemplateURLID + 1),
134 time_provider_(&base::Time::Now), 133 time_provider_(&base::Time::Now),
135 models_associated_(false), 134 models_associated_(false),
136 processing_syncer_changes_(false), 135 processing_syncer_changes_(false),
137 sync_processor_(NULL),
138 pending_synced_default_search_(false) { 136 pending_synced_default_search_(false) {
139 Init(initializers, count); 137 Init(initializers, count);
140 } 138 }
141 139
142 TemplateURLService::~TemplateURLService() { 140 TemplateURLService::~TemplateURLService() {
143 if (load_handle_) { 141 if (load_handle_) {
144 DCHECK(service_.get()); 142 DCHECK(service_.get());
145 service_->CancelRequest(load_handle_); 143 service_->CancelRequest(load_handle_);
146 } 144 }
147 145
(...skipping 665 matching lines...) Expand 10 before | Expand all | Expand 10 after
813 return error; 811 return error;
814 812
815 error = sync_processor_->ProcessSyncChanges(from_here, new_changes); 813 error = sync_processor_->ProcessSyncChanges(from_here, new_changes);
816 814
817 return error; 815 return error;
818 } 816 }
819 817
820 SyncError TemplateURLService::MergeDataAndStartSyncing( 818 SyncError TemplateURLService::MergeDataAndStartSyncing(
821 syncable::ModelType type, 819 syncable::ModelType type,
822 const SyncDataList& initial_sync_data, 820 const SyncDataList& initial_sync_data,
823 SyncChangeProcessor* sync_processor) { 821 scoped_ptr<SyncChangeProcessor> sync_processor) {
824 DCHECK(loaded()); 822 DCHECK(loaded());
825 DCHECK_EQ(type, syncable::SEARCH_ENGINES); 823 DCHECK_EQ(type, syncable::SEARCH_ENGINES);
826 DCHECK(!sync_processor_); 824 DCHECK(!sync_processor_.get());
827 sync_processor_ = sync_processor; 825 DCHECK(sync_processor.get());
826 sync_processor_ = sync_processor.Pass();
828 827
829 // We just started syncing, so set our wait-for-default flag if we are 828 // We just started syncing, so set our wait-for-default flag if we are
830 // expecting a default from Sync. 829 // expecting a default from Sync.
831 if (GetPrefs()) { 830 if (GetPrefs()) {
832 std::string default_guid = GetPrefs()->GetString( 831 std::string default_guid = GetPrefs()->GetString(
833 prefs::kSyncedDefaultSearchProviderGUID); 832 prefs::kSyncedDefaultSearchProviderGUID);
834 const TemplateURL* current_default = GetDefaultSearchProvider(); 833 const TemplateURL* current_default = GetDefaultSearchProvider();
835 834
836 if (!default_guid.empty() && 835 if (!default_guid.empty() &&
837 (!current_default || current_default->sync_guid() != default_guid)) 836 (!current_default || current_default->sync_guid() != default_guid))
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
925 if (error.IsSet()) 924 if (error.IsSet())
926 return error; 925 return error;
927 926
928 models_associated_ = true; 927 models_associated_ = true;
929 return SyncError(); 928 return SyncError();
930 } 929 }
931 930
932 void TemplateURLService::StopSyncing(syncable::ModelType type) { 931 void TemplateURLService::StopSyncing(syncable::ModelType type) {
933 DCHECK_EQ(type, syncable::SEARCH_ENGINES); 932 DCHECK_EQ(type, syncable::SEARCH_ENGINES);
934 models_associated_ = false; 933 models_associated_ = false;
935 sync_processor_ = NULL; 934 sync_processor_.reset();
936 } 935 }
937 936
938 void TemplateURLService::ProcessTemplateURLChange( 937 void TemplateURLService::ProcessTemplateURLChange(
939 const TemplateURL* turl, 938 const TemplateURL* turl,
940 SyncChange::SyncChangeType type) { 939 SyncChange::SyncChangeType type) {
941 DCHECK_NE(type, SyncChange::ACTION_INVALID); 940 DCHECK_NE(type, SyncChange::ACTION_INVALID);
942 DCHECK(turl); 941 DCHECK(turl);
943 942
944 if (!models_associated_) 943 if (!models_associated_)
945 return; // Not syncing. 944 return; // Not syncing.
(...skipping 646 matching lines...) Expand 10 before | Expand all | Expand 10 after
1592 rlz_lib::SET_TO_GOOGLE); 1591 rlz_lib::SET_TO_GOOGLE);
1593 #endif 1592 #endif
1594 } 1593 }
1595 } 1594 }
1596 1595
1597 if (!is_default_search_managed_) { 1596 if (!is_default_search_managed_) {
1598 SaveDefaultSearchProviderToPrefs(url); 1597 SaveDefaultSearchProviderToPrefs(url);
1599 1598
1600 // If we are syncing, we want to set the synced pref that will notify other 1599 // If we are syncing, we want to set the synced pref that will notify other
1601 // instances to change their default to this new search provider. 1600 // instances to change their default to this new search provider.
1602 if (sync_processor_ && url && !url->sync_guid().empty() && GetPrefs()) { 1601 if (sync_processor_.get() && url && !url->sync_guid().empty() &&
1602 GetPrefs()) {
1603 GetPrefs()->SetString(prefs::kSyncedDefaultSearchProviderGUID, 1603 GetPrefs()->SetString(prefs::kSyncedDefaultSearchProviderGUID,
1604 url->sync_guid()); 1604 url->sync_guid());
1605 } 1605 }
1606 } 1606 }
1607 1607
1608 if (service_.get()) 1608 if (service_.get())
1609 service_->SetDefaultSearchProvider(url); 1609 service_->SetDefaultSearchProvider(url);
1610 1610
1611 // Inform sync the change to the show_in_default_list flag. 1611 // Inform sync the change to the show_in_default_list flag.
1612 if (url) 1612 if (url)
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after
1838 // having the same GUID. 1838 // having the same GUID.
1839 ResetTemplateURLGUID(local_turl, sync_turl->sync_guid()); 1839 ResetTemplateURLGUID(local_turl, sync_turl->sync_guid());
1840 SyncData sync_data = CreateSyncDataFromTemplateURL(*local_turl); 1840 SyncData sync_data = CreateSyncDataFromTemplateURL(*local_turl);
1841 change_list->push_back(SyncChange(SyncChange::ACTION_UPDATE, sync_data)); 1841 change_list->push_back(SyncChange(SyncChange::ACTION_UPDATE, sync_data));
1842 } 1842 }
1843 } 1843 }
1844 1844
1845 void TemplateURLService::SetDefaultSearchProviderIfNewlySynced( 1845 void TemplateURLService::SetDefaultSearchProviderIfNewlySynced(
1846 const std::string& guid) { 1846 const std::string& guid) {
1847 // If we're not syncing or if default search is managed by policy, ignore. 1847 // If we're not syncing or if default search is managed by policy, ignore.
1848 if (!sync_processor_ || is_default_search_managed_) 1848 if (!sync_processor_.get() || is_default_search_managed_)
1849 return; 1849 return;
1850 1850
1851 PrefService* prefs = GetPrefs(); 1851 PrefService* prefs = GetPrefs();
1852 if (prefs && pending_synced_default_search_ && 1852 if (prefs && pending_synced_default_search_ &&
1853 prefs->GetString(prefs::kSyncedDefaultSearchProviderGUID) == guid) { 1853 prefs->GetString(prefs::kSyncedDefaultSearchProviderGUID) == guid) {
1854 // Make sure this actually exists. We should not be calling this unless we 1854 // Make sure this actually exists. We should not be calling this unless we
1855 // really just added this TemplateURL. 1855 // really just added this TemplateURL.
1856 const TemplateURL* turl_from_sync = GetTemplateURLForGUID(guid); 1856 const TemplateURL* turl_from_sync = GetTemplateURLForGUID(guid);
1857 DCHECK(turl_from_sync); 1857 DCHECK(turl_from_sync);
1858 SetDefaultSearchProvider(turl_from_sync); 1858 SetDefaultSearchProvider(turl_from_sync);
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
1904 dst->set_input_encodings(input_encodings); 1904 dst->set_input_encodings(input_encodings);
1905 dst->set_show_in_default_list(specifics.show_in_default_list()); 1905 dst->set_show_in_default_list(specifics.show_in_default_list());
1906 dst->SetSuggestionsURL(specifics.suggestions_url(), 0, 0); 1906 dst->SetSuggestionsURL(specifics.suggestions_url(), 0, 0);
1907 dst->SetPrepopulateId(specifics.prepopulate_id()); 1907 dst->SetPrepopulateId(specifics.prepopulate_id());
1908 dst->set_autogenerate_keyword(specifics.autogenerate_keyword()); 1908 dst->set_autogenerate_keyword(specifics.autogenerate_keyword());
1909 dst->SetInstantURL(specifics.instant_url(), 0, 0); 1909 dst->SetInstantURL(specifics.instant_url(), 0, 0);
1910 dst->set_last_modified( 1910 dst->set_last_modified(
1911 base::Time::FromInternalValue(specifics.last_modified())); 1911 base::Time::FromInternalValue(specifics.last_modified()));
1912 dst->set_sync_guid(specifics.sync_guid()); 1912 dst->set_sync_guid(specifics.sync_guid());
1913 } 1913 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698