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

Side by Side Diff: chrome/browser/sync/backend_migrator.cc

Issue 7497014: Revert 94128 - [Sync] Refactor sync datatype error handling. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 years, 4 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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/sync/backend_migrator.h" 5 #include "chrome/browser/sync/backend_migrator.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/string_number_conversions.h" 9 #include "base/string_number_conversions.h"
10 #include "chrome/browser/sync/profile_sync_service.h" 10 #include "chrome/browser/sync/profile_sync_service.h"
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
114 manager_->Configure(full_set, sync_api::CONFIGURE_REASON_MIGRATION); 114 manager_->Configure(full_set, sync_api::CONFIGURE_REASON_MIGRATION);
115 } 115 }
116 116
117 void BackendMigrator::Observe(int type, 117 void BackendMigrator::Observe(int type,
118 const NotificationSource& source, 118 const NotificationSource& source,
119 const NotificationDetails& details) { 119 const NotificationDetails& details) {
120 DCHECK_EQ(chrome::NOTIFICATION_SYNC_CONFIGURE_DONE, type); 120 DCHECK_EQ(chrome::NOTIFICATION_SYNC_CONFIGURE_DONE, type);
121 if (state_ == IDLE) 121 if (state_ == IDLE)
122 return; 122 return;
123 123
124 const DataTypeManager::ConfigureResult* result = 124 DataTypeManager::ConfigureResultWithErrorLocation* result =
125 Details<DataTypeManager::ConfigureResult>(details).ptr(); 125 Details<DataTypeManager::ConfigureResultWithErrorLocation>(
126 details).ptr();
126 127
127 ModelTypeSet intersection; 128 ModelTypeSet intersection;
128 std::set_intersection(result->requested_types.begin(), 129 std::set_intersection(result->requested_types.begin(),
129 result->requested_types.end(), to_migrate_.begin(), to_migrate_.end(), 130 result->requested_types.end(), to_migrate_.begin(), to_migrate_.end(),
130 std::inserter(intersection, intersection.end())); 131 std::inserter(intersection, intersection.end()));
131 132
132 // The intersection check is to determine if our disable request was 133 // The intersection check is to determine if our disable request was
133 // interrupted by a user changing preferred types. May still need to purge. 134 // interrupted by a user changing preferred types. May still need to purge.
134 // It's pretty wild if we're in WAITING_FOR_PURGE here, because it would mean 135 // It's pretty wild if we're in WAITING_FOR_PURGE here, because it would mean
135 // that after our disable-config finished but before the purge, another config 136 // that after our disable-config finished but before the purge, another config
136 // was posted externally _and completed_, which means somehow the nudge to 137 // was posted externally _and completed_, which means somehow the nudge to
137 // purge was dropped, yet nudges are reliable. 138 // purge was dropped, yet nudges are reliable.
138 if (state_ == WAITING_TO_START || state_ == WAITING_FOR_PURGE || 139 if (state_ == WAITING_TO_START || state_ == WAITING_FOR_PURGE ||
139 (state_ == DISABLING_TYPES && !intersection.empty())) { 140 (state_ == DISABLING_TYPES && !intersection.empty())) {
140 state_ = WAITING_TO_START; 141 state_ = WAITING_TO_START;
141 restart_migration_ = false; 142 restart_migration_ = false;
142 VLOG(1) << "BackendMigrator::Observe posting MigrateTypes."; 143 VLOG(1) << "BackendMigrator::Observe posting MigrateTypes.";
143 if (!BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, 144 if (!BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
144 method_factory_.NewRunnableMethod(&BackendMigrator::MigrateTypes, 145 method_factory_.NewRunnableMethod(&BackendMigrator::MigrateTypes,
145 to_migrate_))) { 146 to_migrate_))) {
146 // Unittests need this. 147 // Unittests need this.
147 // TODO(tim): Clean this up. 148 // TODO(tim): Clean this up.
148 MigrateTypes(to_migrate_); 149 MigrateTypes(to_migrate_);
149 } 150 }
150 return; 151 return;
151 } 152 }
152 153
153 if (result->status != DataTypeManager::OK) { 154 if (result->result != DataTypeManager::OK) {
154 // If this fails, and we're disabling types, a type may or may not be 155 // If this fails, and we're disabling types, a type may or may not be
155 // disabled until the user restarts the browser. If this wasn't an abort, 156 // disabled until the user restarts the browser. If this wasn't an abort,
156 // any failure will be reported as an unrecoverable error to the UI. If it 157 // any failure will be reported as an unrecoverable error to the UI. If it
157 // was an abort, then typically things are shutting down anyway. There isn't 158 // was an abort, then typically things are shutting down anyway. There isn't
158 // much we can do in any case besides wait until a restart to try again. 159 // much we can do in any case besides wait until a restart to try again.
159 // The server will send down MIGRATION_DONE again for types needing 160 // The server will send down MIGRATION_DONE again for types needing
160 // migration as the type will still be enabled on restart. 161 // migration as the type will still be enabled on restart.
161 LOG(WARNING) << "Unable to migrate, configuration failed!"; 162 LOG(WARNING) << "Unable to migrate, configuration failed!";
162 state_ = IDLE; 163 state_ = IDLE;
163 to_migrate_.clear(); 164 to_migrate_.clear();
(...skipping 13 matching lines...) Expand all
177 VLOG(1) << "BackendMigrator: Migration complete for: " << ss.str(); 178 VLOG(1) << "BackendMigrator: Migration complete for: " << ss.str();
178 to_migrate_.clear(); 179 to_migrate_.clear();
179 } 180 }
180 } 181 }
181 182
182 BackendMigrator::State BackendMigrator::state() const { 183 BackendMigrator::State BackendMigrator::state() const {
183 return state_; 184 return state_;
184 } 185 }
185 186
186 }; // namespace browser_sync 187 }; // namespace browser_sync
OLDNEW
« no previous file with comments | « chrome/browser/sync/api/syncable_service_mock.h ('k') | chrome/browser/sync/backend_migrator_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698