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

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

Issue 101283002: SyncFS: Fix conflict resolver for multiple parents (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: 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
« no previous file with comments | « no previous file | chrome/browser/sync_file_system/drive_backend/conflict_resolver_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/conflict_resolver.h" 5 #include "chrome/browser/sync_file_system/drive_backend/conflict_resolver.h"
6 6
7 #include "base/callback.h" 7 #include "base/callback.h"
8 #include "base/location.h" 8 #include "base/location.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "chrome/browser/drive/drive_api_util.h" 10 #include "chrome/browser/drive/drive_api_util.h"
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
50 if (!trackers.has_active()) { 50 if (!trackers.has_active()) {
51 NOTREACHED(); 51 NOTREACHED();
52 callback.Run(SYNC_STATUS_FAILED); 52 callback.Run(SYNC_STATUS_FAILED);
53 return; 53 return;
54 } 54 }
55 55
56 DCHECK(trackers.has_active()); 56 DCHECK(trackers.has_active());
57 for (TrackerSet::const_iterator itr = trackers.begin(); 57 for (TrackerSet::const_iterator itr = trackers.begin();
58 itr != trackers.end(); ++itr) { 58 itr != trackers.end(); ++itr) {
59 const FileTracker& tracker = **itr; 59 const FileTracker& tracker = **itr;
60 if (tracker.active())
61 continue;
60 62
61 FileTracker parent_tracker; 63 FileTracker parent_tracker;
62 bool should_success = metadata_database()->FindTrackerByTrackerID( 64 bool should_success = metadata_database()->FindTrackerByTrackerID(
63 tracker.parent_tracker_id(), &parent_tracker); 65 tracker.parent_tracker_id(), &parent_tracker);
64 if (!should_success) { 66 if (!should_success) {
65 NOTREACHED(); 67 NOTREACHED();
66 callback.Run(SYNC_STATUS_FAILED); 68 callback.Run(SYNC_STATUS_FAILED);
67 return; 69 return;
68 } 70 }
69 parents_to_remove_.push_back(parent_tracker.file_id()); 71 parents_to_remove_.push_back(parent_tracker.file_id());
(...skipping 22 matching lines...) Expand all
92 94
93 void ConflictResolver::DetachFromNonPrimaryParents( 95 void ConflictResolver::DetachFromNonPrimaryParents(
94 const SyncStatusCallback& callback) { 96 const SyncStatusCallback& callback) {
95 DCHECK(!parents_to_remove_.empty()); 97 DCHECK(!parents_to_remove_.empty());
96 98
97 // TODO(tzik): Check if ETag match is available for 99 // TODO(tzik): Check if ETag match is available for
98 // RemoteResourceFromDirectory. 100 // RemoteResourceFromDirectory.
99 std::string parent_folder_id = parents_to_remove_.back(); 101 std::string parent_folder_id = parents_to_remove_.back();
100 parents_to_remove_.pop_back(); 102 parents_to_remove_.pop_back();
101 drive_service()->RemoveResourceFromDirectory( 103 drive_service()->RemoveResourceFromDirectory(
102 target_file_id_, parent_folder_id, 104 parent_folder_id, target_file_id_,
103 base::Bind(&ConflictResolver::DidDetachFromParent, 105 base::Bind(&ConflictResolver::DidDetachFromParent,
104 weak_ptr_factory_.GetWeakPtr(), 106 weak_ptr_factory_.GetWeakPtr(),
105 callback)); 107 callback));
106 } 108 }
107 109
108 void ConflictResolver::DidDetachFromParent(const SyncStatusCallback& callback, 110 void ConflictResolver::DidDetachFromParent(const SyncStatusCallback& callback,
109 google_apis::GDataErrorCode error) { 111 google_apis::GDataErrorCode error) {
110 if (error != google_apis::HTTP_SUCCESS) { 112 if (error != google_apis::HTTP_SUCCESS) {
111 callback.Run(GDataErrorCodeToSyncStatusCode(error)); 113 callback.Run(GDataErrorCodeToSyncStatusCode(error));
112 return; 114 return;
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
230 set_used_network(true); 232 set_used_network(true);
231 return sync_context_->GetDriveService(); 233 return sync_context_->GetDriveService();
232 } 234 }
233 235
234 MetadataDatabase* ConflictResolver::metadata_database() { 236 MetadataDatabase* ConflictResolver::metadata_database() {
235 return sync_context_->GetMetadataDatabase(); 237 return sync_context_->GetMetadataDatabase();
236 } 238 }
237 239
238 } // namespace drive_backend 240 } // namespace drive_backend
239 } // namespace sync_file_system 241 } // namespace sync_file_system
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/sync_file_system/drive_backend/conflict_resolver_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698