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

Side by Side Diff: chrome/browser/sync_file_system/drive_backend/sync_engine_initializer.cc

Issue 87463002: Only re-enable remote service if the task used the network. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased Created 7 years 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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_file_system/drive_backend/sync_engine_initializer. h" 5 #include "chrome/browser/sync_file_system/drive_backend/sync_engine_initializer. h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/callback.h" 8 #include "base/callback.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "chrome/browser/drive/drive_api_service.h" 10 #include "chrome/browser/drive/drive_api_service.h"
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 if (metadata_database_->HasSyncRoot()) { 132 if (metadata_database_->HasSyncRoot()) {
133 callback.Run(SYNC_STATUS_OK); 133 callback.Run(SYNC_STATUS_OK);
134 return; 134 return;
135 } 135 }
136 136
137 GetAboutResource(callback); 137 GetAboutResource(callback);
138 } 138 }
139 139
140 void SyncEngineInitializer::GetAboutResource( 140 void SyncEngineInitializer::GetAboutResource(
141 const SyncStatusCallback& callback) { 141 const SyncStatusCallback& callback) {
142 set_used_network(true);
142 drive_service_->GetAboutResource( 143 drive_service_->GetAboutResource(
143 base::Bind(&SyncEngineInitializer::DidGetAboutResource, 144 base::Bind(&SyncEngineInitializer::DidGetAboutResource,
144 weak_ptr_factory_.GetWeakPtr(), callback)); 145 weak_ptr_factory_.GetWeakPtr(), callback));
145 } 146 }
146 147
147 void SyncEngineInitializer::DidGetAboutResource( 148 void SyncEngineInitializer::DidGetAboutResource(
148 const SyncStatusCallback& callback, 149 const SyncStatusCallback& callback,
149 google_apis::GDataErrorCode error, 150 google_apis::GDataErrorCode error,
150 scoped_ptr<google_apis::AboutResource> about_resource) { 151 scoped_ptr<google_apis::AboutResource> about_resource) {
151 cancel_callback_.Reset(); 152 cancel_callback_.Reset();
152 if (error != google_apis::HTTP_SUCCESS) { 153 if (error != google_apis::HTTP_SUCCESS) {
153 callback.Run(GDataErrorCodeToSyncStatusCode(error)); 154 callback.Run(GDataErrorCodeToSyncStatusCode(error));
154 return; 155 return;
155 } 156 }
156 157
157 DCHECK(about_resource); 158 DCHECK(about_resource);
158 root_folder_id_ = about_resource->root_folder_id(); 159 root_folder_id_ = about_resource->root_folder_id();
159 largest_change_id_ = about_resource->largest_change_id(); 160 largest_change_id_ = about_resource->largest_change_id();
160 161
161 DCHECK(!root_folder_id_.empty()); 162 DCHECK(!root_folder_id_.empty());
162 FindSyncRoot(callback); 163 FindSyncRoot(callback);
163 } 164 }
164 165
165 void SyncEngineInitializer::FindSyncRoot(const SyncStatusCallback& callback) { 166 void SyncEngineInitializer::FindSyncRoot(const SyncStatusCallback& callback) {
166 if (find_sync_root_retry_count_++ >= kMaxRetry) { 167 if (find_sync_root_retry_count_++ >= kMaxRetry) {
167 callback.Run(SYNC_STATUS_FAILED); 168 callback.Run(SYNC_STATUS_FAILED);
168 return; 169 return;
169 } 170 }
170 171
172 set_used_network(true);
171 cancel_callback_ = drive_service_->SearchByTitle( 173 cancel_callback_ = drive_service_->SearchByTitle(
172 kSyncRootFolderTitle, 174 kSyncRootFolderTitle,
173 std::string(), // parent_folder_id 175 std::string(), // parent_folder_id
174 base::Bind(&SyncEngineInitializer::DidFindSyncRoot, 176 base::Bind(&SyncEngineInitializer::DidFindSyncRoot,
175 weak_ptr_factory_.GetWeakPtr(), 177 weak_ptr_factory_.GetWeakPtr(),
176 callback)); 178 callback));
177 } 179 }
178 180
179 void SyncEngineInitializer::DidFindSyncRoot( 181 void SyncEngineInitializer::DidFindSyncRoot(
180 const SyncStatusCallback& callback, 182 const SyncStatusCallback& callback,
(...skipping 21 matching lines...) Expand all
202 DCHECK(!root_folder_id_.empty()); 204 DCHECK(!root_folder_id_.empty());
203 if (!HasNoParents(*entry) && !HasFolderAsParent(*entry, root_folder_id_)) 205 if (!HasNoParents(*entry) && !HasFolderAsParent(*entry, root_folder_id_))
204 continue; 206 continue;
205 207
206 if (!sync_root_folder_ || LessOnCreationTime(*entry, *sync_root_folder_)) { 208 if (!sync_root_folder_ || LessOnCreationTime(*entry, *sync_root_folder_)) {
207 sync_root_folder_.reset(entry); 209 sync_root_folder_.reset(entry);
208 *itr = NULL; 210 *itr = NULL;
209 } 211 }
210 } 212 }
211 213
214 set_used_network(true);
212 // If there are more results, retrieve them. 215 // If there are more results, retrieve them.
213 if (GetRemainingFileList( 216 if (GetRemainingFileList(
214 &cancel_callback_, 217 &cancel_callback_,
215 drive_service_, *resource_list, 218 drive_service_, *resource_list,
216 base::Bind(&SyncEngineInitializer::DidFindSyncRoot, 219 base::Bind(&SyncEngineInitializer::DidFindSyncRoot,
217 weak_ptr_factory_.GetWeakPtr(), 220 weak_ptr_factory_.GetWeakPtr(),
218 callback))) 221 callback)))
219 return; 222 return;
220 223
221 if (!sync_root_folder_) { 224 if (!sync_root_folder_) {
222 CreateSyncRoot(callback); 225 CreateSyncRoot(callback);
223 return; 226 return;
224 } 227 }
225 228
226 if (!HasNoParents(*sync_root_folder_)) { 229 if (!HasNoParents(*sync_root_folder_)) {
227 DetachSyncRoot(callback); 230 DetachSyncRoot(callback);
228 return; 231 return;
229 } 232 }
230 233
231 ListAppRootFolders(callback); 234 ListAppRootFolders(callback);
232 } 235 }
233 236
234 void SyncEngineInitializer::CreateSyncRoot(const SyncStatusCallback& callback) { 237 void SyncEngineInitializer::CreateSyncRoot(const SyncStatusCallback& callback) {
235 DCHECK(!sync_root_folder_); 238 DCHECK(!sync_root_folder_);
239 set_used_network(true);
236 cancel_callback_ = drive_service_->AddNewDirectory( 240 cancel_callback_ = drive_service_->AddNewDirectory(
237 root_folder_id_, kSyncRootFolderTitle, 241 root_folder_id_, kSyncRootFolderTitle,
238 base::Bind(&SyncEngineInitializer::DidCreateSyncRoot, 242 base::Bind(&SyncEngineInitializer::DidCreateSyncRoot,
239 weak_ptr_factory_.GetWeakPtr(), 243 weak_ptr_factory_.GetWeakPtr(),
240 callback)); 244 callback));
241 } 245 }
242 246
243 void SyncEngineInitializer::DidCreateSyncRoot( 247 void SyncEngineInitializer::DidCreateSyncRoot(
244 const SyncStatusCallback& callback, 248 const SyncStatusCallback& callback,
245 google_apis::GDataErrorCode error, 249 google_apis::GDataErrorCode error,
246 scoped_ptr<google_apis::ResourceEntry> entry) { 250 scoped_ptr<google_apis::ResourceEntry> entry) {
247 DCHECK(!sync_root_folder_); 251 DCHECK(!sync_root_folder_);
248 cancel_callback_.Reset(); 252 cancel_callback_.Reset();
249 if (error != google_apis::HTTP_SUCCESS && 253 if (error != google_apis::HTTP_SUCCESS &&
250 error != google_apis::HTTP_CREATED) { 254 error != google_apis::HTTP_CREATED) {
251 callback.Run(GDataErrorCodeToSyncStatusCode(error)); 255 callback.Run(GDataErrorCodeToSyncStatusCode(error));
252 return; 256 return;
253 } 257 }
254 258
255 FindSyncRoot(callback); 259 FindSyncRoot(callback);
256 } 260 }
257 261
258 void SyncEngineInitializer::DetachSyncRoot(const SyncStatusCallback& callback) { 262 void SyncEngineInitializer::DetachSyncRoot(const SyncStatusCallback& callback) {
259 DCHECK(sync_root_folder_); 263 DCHECK(sync_root_folder_);
264 set_used_network(true);
260 cancel_callback_ = drive_service_->RemoveResourceFromDirectory( 265 cancel_callback_ = drive_service_->RemoveResourceFromDirectory(
261 root_folder_id_, GetID(*sync_root_folder_), 266 root_folder_id_, GetID(*sync_root_folder_),
262 base::Bind(&SyncEngineInitializer::DidDetachSyncRoot, 267 base::Bind(&SyncEngineInitializer::DidDetachSyncRoot,
263 weak_ptr_factory_.GetWeakPtr(), 268 weak_ptr_factory_.GetWeakPtr(),
264 callback)); 269 callback));
265 } 270 }
266 271
267 void SyncEngineInitializer::DidDetachSyncRoot( 272 void SyncEngineInitializer::DidDetachSyncRoot(
268 const SyncStatusCallback& callback, 273 const SyncStatusCallback& callback,
269 google_apis::GDataErrorCode error) { 274 google_apis::GDataErrorCode error) {
270 cancel_callback_.Reset(); 275 cancel_callback_.Reset();
271 if (error != google_apis::HTTP_SUCCESS) { 276 if (error != google_apis::HTTP_SUCCESS) {
272 callback.Run(GDataErrorCodeToSyncStatusCode(error)); 277 callback.Run(GDataErrorCodeToSyncStatusCode(error));
273 return; 278 return;
274 } 279 }
280
275 ListAppRootFolders(callback); 281 ListAppRootFolders(callback);
276 } 282 }
277 283
278 void SyncEngineInitializer::ListAppRootFolders( 284 void SyncEngineInitializer::ListAppRootFolders(
279 const SyncStatusCallback& callback) { 285 const SyncStatusCallback& callback) {
280 DCHECK(sync_root_folder_); 286 DCHECK(sync_root_folder_);
287 set_used_network(true);
281 cancel_callback_ = drive_service_->GetResourceListInDirectory( 288 cancel_callback_ = drive_service_->GetResourceListInDirectory(
282 GetID(*sync_root_folder_), 289 GetID(*sync_root_folder_),
283 base::Bind(&SyncEngineInitializer::DidListAppRootFolders, 290 base::Bind(&SyncEngineInitializer::DidListAppRootFolders,
284 weak_ptr_factory_.GetWeakPtr(), 291 weak_ptr_factory_.GetWeakPtr(),
285 callback)); 292 callback));
286 } 293 }
287 294
288 void SyncEngineInitializer::DidListAppRootFolders( 295 void SyncEngineInitializer::DidListAppRootFolders(
289 const SyncStatusCallback& callback, 296 const SyncStatusCallback& callback,
290 google_apis::GDataErrorCode error, 297 google_apis::GDataErrorCode error,
291 scoped_ptr<google_apis::ResourceList> resource_list) { 298 scoped_ptr<google_apis::ResourceList> resource_list) {
292 cancel_callback_.Reset(); 299 cancel_callback_.Reset();
293 if (error != google_apis::HTTP_SUCCESS) { 300 if (error != google_apis::HTTP_SUCCESS) {
294 callback.Run(GDataErrorCodeToSyncStatusCode(error)); 301 callback.Run(GDataErrorCodeToSyncStatusCode(error));
295 return; 302 return;
296 } 303 }
297 304
298 ScopedVector<google_apis::ResourceEntry>* new_entries = 305 ScopedVector<google_apis::ResourceEntry>* new_entries =
299 resource_list->mutable_entries(); 306 resource_list->mutable_entries();
300 app_root_folders_.insert(app_root_folders_.end(), 307 app_root_folders_.insert(app_root_folders_.end(),
301 new_entries->begin(), new_entries->end()); 308 new_entries->begin(), new_entries->end());
302 new_entries->weak_clear(); 309 new_entries->weak_clear();
303 310
311 set_used_network(true);
304 if (GetRemainingFileList( 312 if (GetRemainingFileList(
305 &cancel_callback_, 313 &cancel_callback_,
306 drive_service_, 314 drive_service_,
307 *resource_list, 315 *resource_list,
308 base::Bind(&SyncEngineInitializer::DidListAppRootFolders, 316 base::Bind(&SyncEngineInitializer::DidListAppRootFolders,
309 weak_ptr_factory_.GetWeakPtr(), callback))) 317 weak_ptr_factory_.GetWeakPtr(), callback)))
310 return; 318 return;
311 319
312 PopulateDatabase(callback); 320 PopulateDatabase(callback);
313 } 321 }
(...skipping 17 matching lines...) Expand all
331 if (status != SYNC_STATUS_OK) { 339 if (status != SYNC_STATUS_OK) {
332 callback.Run(status); 340 callback.Run(status);
333 return; 341 return;
334 } 342 }
335 343
336 callback.Run(SYNC_STATUS_OK); 344 callback.Run(SYNC_STATUS_OK);
337 } 345 }
338 346
339 } // namespace drive_backend 347 } // namespace drive_backend
340 } // namespace sync_file_system 348 } // namespace sync_file_system
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698