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

Side by Side Diff: chrome/browser/sync_file_system/drive/local_change_processor_delegate.cc

Issue 15987009: Update chrome/ to use WeakPtr<T>::get() instead of implicit "operator T*" (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 6 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 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/local_change_processor_delegate. h" 5 #include "chrome/browser/sync_file_system/drive/local_change_processor_delegate. 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 "chrome/browser/sync_file_system/drive/api_util.h" 9 #include "chrome/browser/sync_file_system/drive/api_util.h"
10 #include "chrome/browser/sync_file_system/drive_file_sync_service.h" 10 #include "chrome/browser/sync_file_system/drive_file_sync_service.h"
(...skipping 14 matching lines...) Expand all
25 local_change_(local_change), 25 local_change_(local_change),
26 local_path_(local_path), 26 local_path_(local_path),
27 local_metadata_(local_metadata), 27 local_metadata_(local_metadata),
28 has_drive_metadata_(false), 28 has_drive_metadata_(false),
29 has_remote_change_(false), 29 has_remote_change_(false),
30 weak_factory_(this) {} 30 weak_factory_(this) {}
31 31
32 LocalChangeProcessorDelegate::~LocalChangeProcessorDelegate() {} 32 LocalChangeProcessorDelegate::~LocalChangeProcessorDelegate() {}
33 33
34 void LocalChangeProcessorDelegate::Run(const SyncStatusCallback& callback) { 34 void LocalChangeProcessorDelegate::Run(const SyncStatusCallback& callback) {
35 if (!sync_service_) 35 if (!sync_service_.get())
36 return; 36 return;
37 37
38 // TODO(nhiroki): support directory operations (http://crbug.com/161442). 38 // TODO(nhiroki): support directory operations (http://crbug.com/161442).
39 DCHECK(IsSyncFSDirectoryOperationEnabled() || !local_change_.IsDirectory()); 39 DCHECK(IsSyncFSDirectoryOperationEnabled() || !local_change_.IsDirectory());
40 40
41 has_drive_metadata_ = 41 has_drive_metadata_ =
42 metadata_store()->ReadEntry(url_, &drive_metadata_) == SYNC_STATUS_OK; 42 metadata_store()->ReadEntry(url_, &drive_metadata_) == SYNC_STATUS_OK;
43 43
44 if (!has_drive_metadata_) 44 if (!has_drive_metadata_)
45 drive_metadata_.set_md5_checksum(std::string()); 45 drive_metadata_.set_md5_checksum(std::string());
46 46
47 sync_service_->EnsureOriginRootDirectory( 47 sync_service_->EnsureOriginRootDirectory(
48 url_.origin(), 48 url_.origin(),
49 base::Bind(&LocalChangeProcessorDelegate::DidGetOriginRoot, 49 base::Bind(&LocalChangeProcessorDelegate::DidGetOriginRoot,
50 weak_factory_.GetWeakPtr(), 50 weak_factory_.GetWeakPtr(),
51 callback)); 51 callback));
52 } 52 }
53 53
54 void LocalChangeProcessorDelegate::DidGetOriginRoot( 54 void LocalChangeProcessorDelegate::DidGetOriginRoot(
55 const SyncStatusCallback& callback, 55 const SyncStatusCallback& callback,
56 SyncStatusCode status, 56 SyncStatusCode status,
57 const std::string& origin_resource_id) { 57 const std::string& origin_resource_id) {
58 if (!sync_service_) 58 if (!sync_service_.get())
59 return; 59 return;
60 60
61 if (status != SYNC_STATUS_OK) { 61 if (status != SYNC_STATUS_OK) {
62 callback.Run(status); 62 callback.Run(status);
63 return; 63 return;
64 } 64 }
65 65
66 origin_resource_id_ = origin_resource_id; 66 origin_resource_id_ = origin_resource_id;
67 67
68 has_remote_change_ = 68 has_remote_change_ =
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
116 callback.Run(SYNC_STATUS_FAILED); 116 callback.Run(SYNC_STATUS_FAILED);
117 return; 117 return;
118 } 118 }
119 } 119 }
120 NOTREACHED(); 120 NOTREACHED();
121 callback.Run(SYNC_STATUS_FAILED); 121 callback.Run(SYNC_STATUS_FAILED);
122 } 122 }
123 123
124 void LocalChangeProcessorDelegate::UploadNewFile( 124 void LocalChangeProcessorDelegate::UploadNewFile(
125 const SyncStatusCallback& callback) { 125 const SyncStatusCallback& callback) {
126 if (!sync_service_) 126 if (!sync_service_.get())
127 return; 127 return;
128 128
129 api_util()->UploadNewFile( 129 api_util()->UploadNewFile(
130 origin_resource_id_, 130 origin_resource_id_,
131 local_path_, 131 local_path_,
132 DriveFileSyncService::PathToTitle(url_.path()), 132 DriveFileSyncService::PathToTitle(url_.path()),
133 base::Bind(&LocalChangeProcessorDelegate::DidUploadNewFile, 133 base::Bind(&LocalChangeProcessorDelegate::DidUploadNewFile,
134 weak_factory_.GetWeakPtr(), callback)); 134 weak_factory_.GetWeakPtr(), callback));
135 } 135 }
136 136
137 void LocalChangeProcessorDelegate::DidUploadNewFile( 137 void LocalChangeProcessorDelegate::DidUploadNewFile(
138 const SyncStatusCallback& callback, 138 const SyncStatusCallback& callback,
139 google_apis::GDataErrorCode error, 139 google_apis::GDataErrorCode error,
140 const std::string& resource_id, 140 const std::string& resource_id,
141 const std::string& md5) { 141 const std::string& md5) {
142 if (!sync_service_) 142 if (!sync_service_.get())
143 return; 143 return;
144 144
145 switch (error) { 145 switch (error) {
146 case google_apis::HTTP_CREATED: 146 case google_apis::HTTP_CREATED:
147 UpdateMetadata( 147 UpdateMetadata(
148 resource_id, md5, DriveMetadata::RESOURCE_TYPE_FILE, 148 resource_id, md5, DriveMetadata::RESOURCE_TYPE_FILE,
149 base::Bind(&LocalChangeProcessorDelegate::DidApplyLocalChange, 149 base::Bind(&LocalChangeProcessorDelegate::DidApplyLocalChange,
150 weak_factory_.GetWeakPtr(), callback, error)); 150 weak_factory_.GetWeakPtr(), callback, error));
151 sync_service_->NotifyObserversFileStatusChanged( 151 sync_service_->NotifyObserversFileStatusChanged(
152 url_, 152 url_,
153 SYNC_FILE_STATUS_SYNCED, 153 SYNC_FILE_STATUS_SYNCED,
154 SYNC_ACTION_ADDED, 154 SYNC_ACTION_ADDED,
155 SYNC_DIRECTION_LOCAL_TO_REMOTE); 155 SYNC_DIRECTION_LOCAL_TO_REMOTE);
156 return; 156 return;
157 case google_apis::HTTP_CONFLICT: 157 case google_apis::HTTP_CONFLICT:
158 HandleCreationConflict(resource_id, DriveMetadata::RESOURCE_TYPE_FILE, 158 HandleCreationConflict(resource_id, DriveMetadata::RESOURCE_TYPE_FILE,
159 callback); 159 callback);
160 return; 160 return;
161 default: 161 default:
162 callback.Run(GDataErrorCodeToSyncStatusCodeWrapper(error)); 162 callback.Run(GDataErrorCodeToSyncStatusCodeWrapper(error));
163 } 163 }
164 } 164 }
165 165
166 void LocalChangeProcessorDelegate::CreateDirectory( 166 void LocalChangeProcessorDelegate::CreateDirectory(
167 const SyncStatusCallback& callback) { 167 const SyncStatusCallback& callback) {
168 if (!sync_service_) 168 if (!sync_service_.get())
169 return; 169 return;
170 170
171 DCHECK(IsSyncFSDirectoryOperationEnabled()); 171 DCHECK(IsSyncFSDirectoryOperationEnabled());
172 api_util()->CreateDirectory( 172 api_util()->CreateDirectory(
173 origin_resource_id_, 173 origin_resource_id_,
174 DriveFileSyncService::PathToTitle(url_.path()), 174 DriveFileSyncService::PathToTitle(url_.path()),
175 base::Bind(&LocalChangeProcessorDelegate::DidCreateDirectory, 175 base::Bind(&LocalChangeProcessorDelegate::DidCreateDirectory,
176 weak_factory_.GetWeakPtr(), callback)); 176 weak_factory_.GetWeakPtr(), callback));
177 } 177 }
178 178
179 void LocalChangeProcessorDelegate::DidCreateDirectory( 179 void LocalChangeProcessorDelegate::DidCreateDirectory(
180 const SyncStatusCallback& callback, 180 const SyncStatusCallback& callback,
181 google_apis::GDataErrorCode error, 181 google_apis::GDataErrorCode error,
182 const std::string& resource_id) { 182 const std::string& resource_id) {
183 if (!sync_service_) 183 if (!sync_service_.get())
184 return; 184 return;
185 185
186 switch (error) { 186 switch (error) {
187 case google_apis::HTTP_SUCCESS: 187 case google_apis::HTTP_SUCCESS:
188 case google_apis::HTTP_CREATED: { 188 case google_apis::HTTP_CREATED: {
189 UpdateMetadata( 189 UpdateMetadata(
190 resource_id, std::string(), DriveMetadata::RESOURCE_TYPE_FOLDER, 190 resource_id, std::string(), DriveMetadata::RESOURCE_TYPE_FOLDER,
191 base::Bind(&LocalChangeProcessorDelegate::DidApplyLocalChange, 191 base::Bind(&LocalChangeProcessorDelegate::DidApplyLocalChange,
192 weak_factory_.GetWeakPtr(), callback, error)); 192 weak_factory_.GetWeakPtr(), callback, error));
193 sync_service_->NotifyObserversFileStatusChanged( 193 sync_service_->NotifyObserversFileStatusChanged(
194 url_, 194 url_,
195 SYNC_FILE_STATUS_SYNCED, 195 SYNC_FILE_STATUS_SYNCED,
196 SYNC_ACTION_ADDED, 196 SYNC_ACTION_ADDED,
197 SYNC_DIRECTION_LOCAL_TO_REMOTE); 197 SYNC_DIRECTION_LOCAL_TO_REMOTE);
198 return; 198 return;
199 } 199 }
200 200
201 case google_apis::HTTP_CONFLICT: 201 case google_apis::HTTP_CONFLICT:
202 // There were conflicts and a file was left. 202 // There were conflicts and a file was left.
203 // TODO(kinuko): Handle the latter case (http://crbug.com/237090). 203 // TODO(kinuko): Handle the latter case (http://crbug.com/237090).
204 // Fall-through 204 // Fall-through
205 205
206 default: 206 default:
207 callback.Run(GDataErrorCodeToSyncStatusCodeWrapper(error)); 207 callback.Run(GDataErrorCodeToSyncStatusCodeWrapper(error));
208 } 208 }
209 } 209 }
210 210
211 void LocalChangeProcessorDelegate::UploadExistingFile( 211 void LocalChangeProcessorDelegate::UploadExistingFile(
212 const SyncStatusCallback& callback) { 212 const SyncStatusCallback& callback) {
213 if (!sync_service_) 213 if (!sync_service_.get())
214 return; 214 return;
215 215
216 DCHECK(has_drive_metadata_); 216 DCHECK(has_drive_metadata_);
217 api_util()->UploadExistingFile( 217 api_util()->UploadExistingFile(
218 drive_metadata_.resource_id(), 218 drive_metadata_.resource_id(),
219 drive_metadata_.md5_checksum(), 219 drive_metadata_.md5_checksum(),
220 local_path_, 220 local_path_,
221 base::Bind(&LocalChangeProcessorDelegate::DidUploadExistingFile, 221 base::Bind(&LocalChangeProcessorDelegate::DidUploadExistingFile,
222 weak_factory_.GetWeakPtr(), callback)); 222 weak_factory_.GetWeakPtr(), callback));
223 } 223 }
224 224
225 void LocalChangeProcessorDelegate::DidUploadExistingFile( 225 void LocalChangeProcessorDelegate::DidUploadExistingFile(
226 const SyncStatusCallback& callback, 226 const SyncStatusCallback& callback,
227 google_apis::GDataErrorCode error, 227 google_apis::GDataErrorCode error,
228 const std::string& resource_id, 228 const std::string& resource_id,
229 const std::string& md5) { 229 const std::string& md5) {
230 if (!sync_service_) 230 if (!sync_service_.get())
231 return; 231 return;
232 232
233 DCHECK(has_drive_metadata_); 233 DCHECK(has_drive_metadata_);
234 switch (error) { 234 switch (error) {
235 case google_apis::HTTP_SUCCESS: 235 case google_apis::HTTP_SUCCESS:
236 UpdateMetadata( 236 UpdateMetadata(
237 resource_id, md5, DriveMetadata::RESOURCE_TYPE_FILE, 237 resource_id, md5, DriveMetadata::RESOURCE_TYPE_FILE,
238 base::Bind(&LocalChangeProcessorDelegate::DidApplyLocalChange, 238 base::Bind(&LocalChangeProcessorDelegate::DidApplyLocalChange,
239 weak_factory_.GetWeakPtr(), callback, error)); 239 weak_factory_.GetWeakPtr(), callback, error));
240 sync_service_->NotifyObserversFileStatusChanged( 240 sync_service_->NotifyObserversFileStatusChanged(
(...skipping 20 matching lines...) Expand all
261 GDataErrorCodeToSyncStatusCodeWrapper(error); 261 GDataErrorCodeToSyncStatusCodeWrapper(error);
262 DCHECK_NE(SYNC_STATUS_OK, status); 262 DCHECK_NE(SYNC_STATUS_OK, status);
263 callback.Run(status); 263 callback.Run(status);
264 return; 264 return;
265 } 265 }
266 } 266 }
267 } 267 }
268 268
269 void LocalChangeProcessorDelegate::DeleteFile( 269 void LocalChangeProcessorDelegate::DeleteFile(
270 const SyncStatusCallback& callback) { 270 const SyncStatusCallback& callback) {
271 if (!sync_service_) 271 if (!sync_service_.get())
272 return; 272 return;
273 273
274 DCHECK(has_drive_metadata_); 274 DCHECK(has_drive_metadata_);
275 api_util()->DeleteFile( 275 api_util()->DeleteFile(
276 drive_metadata_.resource_id(), 276 drive_metadata_.resource_id(),
277 drive_metadata_.md5_checksum(), 277 drive_metadata_.md5_checksum(),
278 base::Bind(&LocalChangeProcessorDelegate::DidDeleteFile, 278 base::Bind(&LocalChangeProcessorDelegate::DidDeleteFile,
279 weak_factory_.GetWeakPtr(), callback)); 279 weak_factory_.GetWeakPtr(), callback));
280 } 280 }
281 281
282 void LocalChangeProcessorDelegate::DeleteDirectory( 282 void LocalChangeProcessorDelegate::DeleteDirectory(
283 const SyncStatusCallback& callback) { 283 const SyncStatusCallback& callback) {
284 if (!sync_service_) 284 if (!sync_service_.get())
285 return; 285 return;
286 286
287 DCHECK(IsSyncFSDirectoryOperationEnabled()); 287 DCHECK(IsSyncFSDirectoryOperationEnabled());
288 DCHECK(has_drive_metadata_); 288 DCHECK(has_drive_metadata_);
289 // This does not handle recursive directory deletion 289 // This does not handle recursive directory deletion
290 // (which should not happen other than after a restart). 290 // (which should not happen other than after a restart).
291 api_util()->DeleteFile( 291 api_util()->DeleteFile(
292 drive_metadata_.resource_id(), 292 drive_metadata_.resource_id(),
293 std::string(), // empty md5 293 std::string(), // empty md5
294 base::Bind(&LocalChangeProcessorDelegate::DidDeleteFile, 294 base::Bind(&LocalChangeProcessorDelegate::DidDeleteFile,
295 weak_factory_.GetWeakPtr(), callback)); 295 weak_factory_.GetWeakPtr(), callback));
296 } 296 }
297 297
298 void LocalChangeProcessorDelegate::DidDeleteFile( 298 void LocalChangeProcessorDelegate::DidDeleteFile(
299 const SyncStatusCallback& callback, 299 const SyncStatusCallback& callback,
300 google_apis::GDataErrorCode error) { 300 google_apis::GDataErrorCode error) {
301 if (!sync_service_) 301 if (!sync_service_.get())
302 return; 302 return;
303 303
304 DCHECK(has_drive_metadata_); 304 DCHECK(has_drive_metadata_);
305 305
306 switch (error) { 306 switch (error) {
307 // Regardless of whether the deletion has succeeded (HTTP_SUCCESS) or 307 // Regardless of whether the deletion has succeeded (HTTP_SUCCESS) or
308 // has failed with ETag conflict error (HTTP_PRECONDITION or HTTP_CONFLICT) 308 // has failed with ETag conflict error (HTTP_PRECONDITION or HTTP_CONFLICT)
309 // we should just delete the drive_metadata. 309 // we should just delete the drive_metadata.
310 // In the former case the file should be just gone now, and 310 // In the former case the file should be just gone now, and
311 // in the latter case the remote change will be applied in a future 311 // in the latter case the remote change will be applied in a future
(...skipping 19 matching lines...) Expand all
331 GDataErrorCodeToSyncStatusCodeWrapper(error); 331 GDataErrorCodeToSyncStatusCodeWrapper(error);
332 DCHECK_NE(SYNC_STATUS_OK, status); 332 DCHECK_NE(SYNC_STATUS_OK, status);
333 callback.Run(status); 333 callback.Run(status);
334 return; 334 return;
335 } 335 }
336 } 336 }
337 } 337 }
338 338
339 void LocalChangeProcessorDelegate::ResolveToLocal( 339 void LocalChangeProcessorDelegate::ResolveToLocal(
340 const SyncStatusCallback& callback) { 340 const SyncStatusCallback& callback) {
341 if (!sync_service_) 341 if (!sync_service_.get())
342 return; 342 return;
343 343
344 api_util()->DeleteFile( 344 api_util()->DeleteFile(
345 drive_metadata_.resource_id(), 345 drive_metadata_.resource_id(),
346 drive_metadata_.md5_checksum(), 346 drive_metadata_.md5_checksum(),
347 base::Bind( 347 base::Bind(
348 &LocalChangeProcessorDelegate::DidDeleteFileToResolveToLocal, 348 &LocalChangeProcessorDelegate::DidDeleteFileToResolveToLocal,
349 weak_factory_.GetWeakPtr(), callback)); 349 weak_factory_.GetWeakPtr(), callback));
350 } 350 }
351 351
352 void LocalChangeProcessorDelegate::DidDeleteFileToResolveToLocal( 352 void LocalChangeProcessorDelegate::DidDeleteFileToResolveToLocal(
353 const SyncStatusCallback& callback, 353 const SyncStatusCallback& callback,
354 google_apis::GDataErrorCode error) { 354 google_apis::GDataErrorCode error) {
355 if (!sync_service_) 355 if (!sync_service_.get())
356 return; 356 return;
357 357
358 if (error != google_apis::HTTP_SUCCESS && 358 if (error != google_apis::HTTP_SUCCESS &&
359 error != google_apis::HTTP_NOT_FOUND) { 359 error != google_apis::HTTP_NOT_FOUND) {
360 remote_change_handler()->RemoveChangeForURL(url_); 360 remote_change_handler()->RemoveChangeForURL(url_);
361 callback.Run(GDataErrorCodeToSyncStatusCodeWrapper(error)); 361 callback.Run(GDataErrorCodeToSyncStatusCodeWrapper(error));
362 return; 362 return;
363 } 363 }
364 364
365 DCHECK_NE(SYNC_FILE_TYPE_UNKNOWN, local_metadata_.file_type); 365 DCHECK_NE(SYNC_FILE_TYPE_UNKNOWN, local_metadata_.file_type);
366 if (local_metadata_.file_type == SYNC_FILE_TYPE_FILE) { 366 if (local_metadata_.file_type == SYNC_FILE_TYPE_FILE) {
367 UploadNewFile(callback); 367 UploadNewFile(callback);
368 return; 368 return;
369 } 369 }
370 370
371 DCHECK(IsSyncFSDirectoryOperationEnabled()); 371 DCHECK(IsSyncFSDirectoryOperationEnabled());
372 DCHECK_EQ(SYNC_FILE_TYPE_DIRECTORY, local_metadata_.file_type); 372 DCHECK_EQ(SYNC_FILE_TYPE_DIRECTORY, local_metadata_.file_type);
373 CreateDirectory(callback); 373 CreateDirectory(callback);
374 } 374 }
375 375
376 void LocalChangeProcessorDelegate::ResolveToRemote( 376 void LocalChangeProcessorDelegate::ResolveToRemote(
377 const SyncStatusCallback& callback) { 377 const SyncStatusCallback& callback) {
378 if (!sync_service_) 378 if (!sync_service_.get())
379 return; 379 return;
380 380
381 // Mark the file as to-be-fetched. 381 // Mark the file as to-be-fetched.
382 DCHECK(!drive_metadata_.resource_id().empty()); 382 DCHECK(!drive_metadata_.resource_id().empty());
383 383
384 SyncFileType type = remote_change_.change.file_type(); 384 SyncFileType type = remote_change_.change.file_type();
385 SetMetadataToBeFetched( 385 SetMetadataToBeFetched(
386 DriveFileSyncService::SyncFileTypeToDriveMetadataResourceType(type), 386 DriveFileSyncService::SyncFileTypeToDriveMetadataResourceType(type),
387 base::Bind(&LocalChangeProcessorDelegate::DidResolveToRemote, 387 base::Bind(&LocalChangeProcessorDelegate::DidResolveToRemote,
388 weak_factory_.GetWeakPtr(), callback)); 388 weak_factory_.GetWeakPtr(), callback));
389 // The synced notification will be dispatched when the remote file is 389 // The synced notification will be dispatched when the remote file is
390 // downloaded. 390 // downloaded.
391 } 391 }
392 392
393 void LocalChangeProcessorDelegate::DidResolveToRemote( 393 void LocalChangeProcessorDelegate::DidResolveToRemote(
394 const SyncStatusCallback& callback, 394 const SyncStatusCallback& callback,
395 SyncStatusCode status) { 395 SyncStatusCode status) {
396 if (!sync_service_) 396 if (!sync_service_.get())
397 return; 397 return;
398 398
399 DCHECK(has_drive_metadata_); 399 DCHECK(has_drive_metadata_);
400 if (status != SYNC_STATUS_OK) { 400 if (status != SYNC_STATUS_OK) {
401 callback.Run(status); 401 callback.Run(status);
402 return; 402 return;
403 } 403 }
404 404
405 SyncFileType file_type = SYNC_FILE_TYPE_FILE; 405 SyncFileType file_type = SYNC_FILE_TYPE_FILE;
406 if (drive_metadata_.type() == DriveMetadata::RESOURCE_TYPE_FOLDER) 406 if (drive_metadata_.type() == DriveMetadata::RESOURCE_TYPE_FOLDER)
407 file_type = SYNC_FILE_TYPE_DIRECTORY; 407 file_type = SYNC_FILE_TYPE_DIRECTORY;
408 sync_service_->AppendFetchChange( 408 sync_service_->AppendFetchChange(
409 url_.origin(), url_.path(), drive_metadata_.resource_id(), file_type); 409 url_.origin(), url_.path(), drive_metadata_.resource_id(), file_type);
410 callback.Run(status); 410 callback.Run(status);
411 } 411 }
412 412
413 void LocalChangeProcessorDelegate::DidApplyLocalChange( 413 void LocalChangeProcessorDelegate::DidApplyLocalChange(
414 const SyncStatusCallback& callback, 414 const SyncStatusCallback& callback,
415 const google_apis::GDataErrorCode error, 415 const google_apis::GDataErrorCode error,
416 SyncStatusCode status) { 416 SyncStatusCode status) {
417 if (!sync_service_) 417 if (!sync_service_.get())
418 return; 418 return;
419 419
420 if (status == SYNC_STATUS_OK) { 420 if (status == SYNC_STATUS_OK) {
421 remote_change_handler()->RemoveChangeForURL(url_); 421 remote_change_handler()->RemoveChangeForURL(url_);
422 status = GDataErrorCodeToSyncStatusCodeWrapper(error); 422 status = GDataErrorCodeToSyncStatusCodeWrapper(error);
423 } 423 }
424 callback.Run(status); 424 callback.Run(status);
425 } 425 }
426 426
427 void LocalChangeProcessorDelegate::UpdateMetadata( 427 void LocalChangeProcessorDelegate::UpdateMetadata(
428 const std::string& resource_id, 428 const std::string& resource_id,
429 const std::string& md5, 429 const std::string& md5,
430 DriveMetadata::ResourceType type, 430 DriveMetadata::ResourceType type,
431 const SyncStatusCallback& callback) { 431 const SyncStatusCallback& callback) {
432 if (!sync_service_) 432 if (!sync_service_.get())
433 return; 433 return;
434 434
435 drive_metadata_.set_resource_id(resource_id); 435 drive_metadata_.set_resource_id(resource_id);
436 drive_metadata_.set_md5_checksum(md5); 436 drive_metadata_.set_md5_checksum(md5);
437 drive_metadata_.set_conflicted(false); 437 drive_metadata_.set_conflicted(false);
438 drive_metadata_.set_to_be_fetched(false); 438 drive_metadata_.set_to_be_fetched(false);
439 drive_metadata_.set_type(type); 439 drive_metadata_.set_type(type);
440 metadata_store()->UpdateEntry(url_, drive_metadata_, callback); 440 metadata_store()->UpdateEntry(url_, drive_metadata_, callback);
441 } 441 }
442 442
443 void LocalChangeProcessorDelegate::ResetMetadataMD5( 443 void LocalChangeProcessorDelegate::ResetMetadataMD5(
444 const SyncStatusCallback& callback) { 444 const SyncStatusCallback& callback) {
445 if (!sync_service_) 445 if (!sync_service_.get())
446 return; 446 return;
447 447
448 drive_metadata_.set_md5_checksum(std::string()); 448 drive_metadata_.set_md5_checksum(std::string());
449 metadata_store()->UpdateEntry(url_, drive_metadata_, callback); 449 metadata_store()->UpdateEntry(url_, drive_metadata_, callback);
450 } 450 }
451 451
452 void LocalChangeProcessorDelegate::SetMetadataToBeFetched( 452 void LocalChangeProcessorDelegate::SetMetadataToBeFetched(
453 DriveMetadata::ResourceType type, 453 DriveMetadata::ResourceType type,
454 const SyncStatusCallback& callback) { 454 const SyncStatusCallback& callback) {
455 if (!sync_service_) 455 if (!sync_service_.get())
456 return; 456 return;
457 457
458 drive_metadata_.set_md5_checksum(std::string()); 458 drive_metadata_.set_md5_checksum(std::string());
459 drive_metadata_.set_conflicted(false); 459 drive_metadata_.set_conflicted(false);
460 drive_metadata_.set_to_be_fetched(true); 460 drive_metadata_.set_to_be_fetched(true);
461 drive_metadata_.set_type(type); 461 drive_metadata_.set_type(type);
462 metadata_store()->UpdateEntry(url_, drive_metadata_, callback); 462 metadata_store()->UpdateEntry(url_, drive_metadata_, callback);
463 } 463 }
464 464
465 void LocalChangeProcessorDelegate::SetMetadataConflict( 465 void LocalChangeProcessorDelegate::SetMetadataConflict(
466 const SyncStatusCallback& callback) { 466 const SyncStatusCallback& callback) {
467 if (!sync_service_) 467 if (!sync_service_.get())
468 return; 468 return;
469 469
470 drive_metadata_.set_conflicted(true); 470 drive_metadata_.set_conflicted(true);
471 drive_metadata_.set_to_be_fetched(false); 471 drive_metadata_.set_to_be_fetched(false);
472 metadata_store()->UpdateEntry(url_, drive_metadata_, callback); 472 metadata_store()->UpdateEntry(url_, drive_metadata_, callback);
473 } 473 }
474 474
475 void LocalChangeProcessorDelegate::DeleteMetadata( 475 void LocalChangeProcessorDelegate::DeleteMetadata(
476 const SyncStatusCallback& callback) { 476 const SyncStatusCallback& callback) {
477 metadata_store()->DeleteEntry(url_, callback); 477 metadata_store()->DeleteEntry(url_, callback);
478 } 478 }
479 479
480 void LocalChangeProcessorDelegate::HandleCreationConflict( 480 void LocalChangeProcessorDelegate::HandleCreationConflict(
481 const std::string& resource_id, 481 const std::string& resource_id,
482 DriveMetadata::ResourceType type, 482 DriveMetadata::ResourceType type,
483 const SyncStatusCallback& callback) { 483 const SyncStatusCallback& callback) {
484 if (!sync_service_) 484 if (!sync_service_.get())
485 return; 485 return;
486 486
487 // File-file conflict is found. 487 // File-file conflict is found.
488 // Populates a fake drive_metadata and set has_drive_metadata = true. 488 // Populates a fake drive_metadata and set has_drive_metadata = true.
489 // In HandleConflictLocalSync: 489 // In HandleConflictLocalSync:
490 // - If conflict_resolution is manual, we'll change conflicted to true 490 // - If conflict_resolution is manual, we'll change conflicted to true
491 // and save the metadata. 491 // and save the metadata.
492 // - Otherwise we'll save the metadata with empty md5 and will start 492 // - Otherwise we'll save the metadata with empty md5 and will start
493 // over local sync as UploadExistingFile. 493 // over local sync as UploadExistingFile.
494 drive_metadata_.set_resource_id(resource_id); 494 drive_metadata_.set_resource_id(resource_id);
495 drive_metadata_.set_md5_checksum(std::string()); 495 drive_metadata_.set_md5_checksum(std::string());
496 drive_metadata_.set_conflicted(false); 496 drive_metadata_.set_conflicted(false);
497 drive_metadata_.set_to_be_fetched(false); 497 drive_metadata_.set_to_be_fetched(false);
498 drive_metadata_.set_type(type); 498 drive_metadata_.set_type(type);
499 has_drive_metadata_ = true; 499 has_drive_metadata_ = true;
500 HandleConflict(callback); 500 HandleConflict(callback);
501 } 501 }
502 502
503 void LocalChangeProcessorDelegate::HandleConflict( 503 void LocalChangeProcessorDelegate::HandleConflict(
504 const SyncStatusCallback& callback) { 504 const SyncStatusCallback& callback) {
505 if (!sync_service_) 505 if (!sync_service_.get())
506 return; 506 return;
507 507
508 DCHECK(!drive_metadata_.resource_id().empty()); 508 DCHECK(!drive_metadata_.resource_id().empty());
509 api_util()->GetResourceEntry( 509 api_util()->GetResourceEntry(
510 drive_metadata_.resource_id(), 510 drive_metadata_.resource_id(),
511 base::Bind( 511 base::Bind(
512 &LocalChangeProcessorDelegate::DidGetEntryForConflictResolution, 512 &LocalChangeProcessorDelegate::DidGetEntryForConflictResolution,
513 weak_factory_.GetWeakPtr(), callback)); 513 weak_factory_.GetWeakPtr(), callback));
514 } 514 }
515 515
516 void LocalChangeProcessorDelegate::DidGetEntryForConflictResolution( 516 void LocalChangeProcessorDelegate::DidGetEntryForConflictResolution(
517 const SyncStatusCallback& callback, 517 const SyncStatusCallback& callback,
518 google_apis::GDataErrorCode error, 518 google_apis::GDataErrorCode error,
519 scoped_ptr<google_apis::ResourceEntry> entry) { 519 scoped_ptr<google_apis::ResourceEntry> entry) {
520 if (!sync_service_) 520 if (!sync_service_.get())
521 return; 521 return;
522 522
523 SyncFileType local_file_type = local_metadata_.file_type; 523 SyncFileType local_file_type = local_metadata_.file_type;
524 base::Time local_modification_time = local_metadata_.last_modified; 524 base::Time local_modification_time = local_metadata_.last_modified;
525 525
526 SyncFileType remote_file_type; 526 SyncFileType remote_file_type;
527 base::Time remote_modification_time = entry->updated_time(); 527 base::Time remote_modification_time = entry->updated_time();
528 if (entry->is_file()) 528 if (entry->is_file())
529 remote_file_type = SYNC_FILE_TYPE_FILE; 529 remote_file_type = SYNC_FILE_TYPE_FILE;
530 else if (entry->is_folder()) 530 else if (entry->is_folder())
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
610 APIUtilInterface* LocalChangeProcessorDelegate::api_util() { 610 APIUtilInterface* LocalChangeProcessorDelegate::api_util() {
611 return sync_service_->api_util_.get(); 611 return sync_service_->api_util_.get();
612 } 612 }
613 613
614 RemoteChangeHandler* LocalChangeProcessorDelegate::remote_change_handler() { 614 RemoteChangeHandler* LocalChangeProcessorDelegate::remote_change_handler() {
615 return &sync_service_->remote_change_handler_; 615 return &sync_service_->remote_change_handler_;
616 } 616 }
617 617
618 } // namespace drive 618 } // namespace drive
619 } // namespace sync_file_system 619 } // namespace sync_file_system
OLDNEW
« no previous file with comments | « chrome/browser/sync/glue/ui_data_type_controller.cc ('k') | chrome/browser/sync_file_system/drive_file_sync_task_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698