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/sync_file_system/drive_file_sync_service.cc

Issue 13929012: SyncFS: Add resource type field into DriveMetadata (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: review fix Created 7 years, 8 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/sync_file_system/drive_file_sync_service.h" 5 #include "chrome/browser/sync_file_system/drive_file_sync_service.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <string> 8 #include <string>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 1120 matching lines...) Expand 10 before | Expand all | Expand 10 after
1131 sync_client_->UploadNewFile( 1131 sync_client_->UploadNewFile(
1132 origin_resource_id, 1132 origin_resource_id,
1133 local_file_path, 1133 local_file_path,
1134 url.path().AsUTF8Unsafe(), 1134 url.path().AsUTF8Unsafe(),
1135 base::Bind(&DriveFileSyncService::DidUploadNewFileForLocalSync, 1135 base::Bind(&DriveFileSyncService::DidUploadNewFileForLocalSync,
1136 AsWeakPtr(), base::Passed(&param))); 1136 AsWeakPtr(), base::Passed(&param)));
1137 return; 1137 return;
1138 } 1138 }
1139 case LOCAL_SYNC_OPERATION_UPDATE: { 1139 case LOCAL_SYNC_OPERATION_UPDATE: {
1140 DCHECK(param->has_drive_metadata); 1140 DCHECK(param->has_drive_metadata);
1141 DCHECK_EQ(DriveMetadata::FILE, param->drive_metadata.type());
kinuko 2013/04/16 12:10:19 It feels slightly weird to have these occasional D
nhiroki 2013/04/17 02:24:51 Okay, recalled them for now.
1141 sync_client_->UploadExistingFile( 1142 sync_client_->UploadExistingFile(
1142 drive_metadata.resource_id(), 1143 drive_metadata.resource_id(),
1143 drive_metadata.md5_checksum(), 1144 drive_metadata.md5_checksum(),
1144 local_file_path, 1145 local_file_path,
1145 base::Bind(&DriveFileSyncService::DidUploadExistingFileForLocalSync, 1146 base::Bind(&DriveFileSyncService::DidUploadExistingFileForLocalSync,
1146 AsWeakPtr(), base::Passed(&param))); 1147 AsWeakPtr(), base::Passed(&param)));
1147 return; 1148 return;
1148 } 1149 }
1149 case LOCAL_SYNC_OPERATION_DELETE: { 1150 case LOCAL_SYNC_OPERATION_DELETE: {
1150 DCHECK(param->has_drive_metadata); 1151 DCHECK(param->has_drive_metadata);
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
1286 google_apis::GDataErrorCode error, 1287 google_apis::GDataErrorCode error,
1287 const std::string& resource_id, 1288 const std::string& resource_id,
1288 const std::string& file_md5) { 1289 const std::string& file_md5) {
1289 DCHECK(param); 1290 DCHECK(param);
1290 const FileSystemURL& url = param->url; 1291 const FileSystemURL& url = param->url;
1291 if (error == google_apis::HTTP_CREATED) { 1292 if (error == google_apis::HTTP_CREATED) {
1292 param->drive_metadata.set_resource_id(resource_id); 1293 param->drive_metadata.set_resource_id(resource_id);
1293 param->drive_metadata.set_md5_checksum(file_md5); 1294 param->drive_metadata.set_md5_checksum(file_md5);
1294 param->drive_metadata.set_conflicted(false); 1295 param->drive_metadata.set_conflicted(false);
1295 param->drive_metadata.set_to_be_fetched(false); 1296 param->drive_metadata.set_to_be_fetched(false);
1297 param->drive_metadata.set_type(DriveMetadata::FILE);
1296 const DriveMetadata& metadata = param->drive_metadata; 1298 const DriveMetadata& metadata = param->drive_metadata;
1297 metadata_store_->UpdateEntry( 1299 metadata_store_->UpdateEntry(
1298 url, metadata, 1300 url, metadata,
1299 base::Bind(&DriveFileSyncService::DidApplyLocalChange, 1301 base::Bind(&DriveFileSyncService::DidApplyLocalChange,
1300 AsWeakPtr(), base::Passed(&param), error)); 1302 AsWeakPtr(), base::Passed(&param), error));
1301 NotifyObserversFileStatusChanged(url, 1303 NotifyObserversFileStatusChanged(url,
1302 SYNC_FILE_STATUS_SYNCED, 1304 SYNC_FILE_STATUS_SYNCED,
1303 SYNC_ACTION_ADDED, 1305 SYNC_ACTION_ADDED,
1304 SYNC_DIRECTION_LOCAL_TO_REMOTE); 1306 SYNC_DIRECTION_LOCAL_TO_REMOTE);
1305 return; 1307 return;
1306 } 1308 }
1307 FinalizeLocalSync(param->token.Pass(), param->callback, 1309 FinalizeLocalSync(param->token.Pass(), param->callback,
1308 GDataErrorCodeToSyncStatusCodeWrapper(error)); 1310 GDataErrorCodeToSyncStatusCodeWrapper(error));
1309 } 1311 }
1310 1312
1311 void DriveFileSyncService::DidUploadExistingFileForLocalSync( 1313 void DriveFileSyncService::DidUploadExistingFileForLocalSync(
1312 scoped_ptr<ApplyLocalChangeParam> param, 1314 scoped_ptr<ApplyLocalChangeParam> param,
1313 google_apis::GDataErrorCode error, 1315 google_apis::GDataErrorCode error,
1314 const std::string& resource_id, 1316 const std::string& resource_id,
1315 const std::string& file_md5) { 1317 const std::string& file_md5) {
1316 DCHECK(param); 1318 DCHECK(param);
1317 DCHECK(param->has_drive_metadata); 1319 DCHECK(param->has_drive_metadata);
1318 const FileSystemURL& url = param->url; 1320 const FileSystemURL& url = param->url;
1319 switch (error) { 1321 switch (error) {
1320 case google_apis::HTTP_SUCCESS: { 1322 case google_apis::HTTP_SUCCESS: {
1321 param->drive_metadata.set_resource_id(resource_id); 1323 param->drive_metadata.set_resource_id(resource_id);
1322 param->drive_metadata.set_md5_checksum(file_md5); 1324 param->drive_metadata.set_md5_checksum(file_md5);
1323 param->drive_metadata.set_conflicted(false); 1325 param->drive_metadata.set_conflicted(false);
1324 param->drive_metadata.set_to_be_fetched(false); 1326 param->drive_metadata.set_to_be_fetched(false);
1327 param->drive_metadata.set_type(DriveMetadata::FILE);
1325 const DriveMetadata& metadata = param->drive_metadata; 1328 const DriveMetadata& metadata = param->drive_metadata;
1326 metadata_store_->UpdateEntry( 1329 metadata_store_->UpdateEntry(
1327 url, metadata, 1330 url, metadata,
1328 base::Bind(&DriveFileSyncService::DidApplyLocalChange, 1331 base::Bind(&DriveFileSyncService::DidApplyLocalChange,
1329 AsWeakPtr(), base::Passed(&param), error)); 1332 AsWeakPtr(), base::Passed(&param), error));
1330 NotifyObserversFileStatusChanged(url, 1333 NotifyObserversFileStatusChanged(url,
1331 SYNC_FILE_STATUS_SYNCED, 1334 SYNC_FILE_STATUS_SYNCED,
1332 SYNC_ACTION_UPDATED, 1335 SYNC_ACTION_UPDATED,
1333 SYNC_DIRECTION_LOCAL_TO_REMOTE); 1336 SYNC_DIRECTION_LOCAL_TO_REMOTE);
1334 return; 1337 return;
(...skipping 742 matching lines...) Expand 10 before | Expand all | Expand 10 after
2077 return false; 2080 return false;
2078 *change = found_path->second; 2081 *change = found_path->second;
2079 return true; 2082 return true;
2080 } 2083 }
2081 2084
2082 void DriveFileSyncService::MarkConflict( 2085 void DriveFileSyncService::MarkConflict(
2083 const fileapi::FileSystemURL& url, 2086 const fileapi::FileSystemURL& url,
2084 DriveMetadata* drive_metadata, 2087 DriveMetadata* drive_metadata,
2085 const SyncStatusCallback& callback) { 2088 const SyncStatusCallback& callback) {
2086 DCHECK(drive_metadata); 2089 DCHECK(drive_metadata);
2090 // For now conflict involving directories should be resolved automatically.
2091 // TODO(nhiroki): support manual conflict handling for directory operations.
2092 // (http://crbug.com/231827)
2093 DCHECK_EQ(DriveMetadata::FILE, drive_metadata->type());
2094
2087 if (drive_metadata->resource_id().empty()) { 2095 if (drive_metadata->resource_id().empty()) {
2088 // If the file does not have valid drive_metadata in the metadata store 2096 // If the file does not have valid drive_metadata in the metadata store
2089 // we must have a pending remote change entry. 2097 // we must have a pending remote change entry.
2090 RemoteChange remote_change; 2098 RemoteChange remote_change;
2091 const bool has_remote_change = 2099 const bool has_remote_change =
2092 GetPendingChangeForFileSystemURL(url, &remote_change); 2100 GetPendingChangeForFileSystemURL(url, &remote_change);
2093 DCHECK(has_remote_change); 2101 DCHECK(has_remote_change);
2094 drive_metadata->set_resource_id(remote_change.resource_id); 2102 drive_metadata->set_resource_id(remote_change.resource_id);
2095 drive_metadata->set_md5_checksum(std::string()); 2103 drive_metadata->set_md5_checksum(std::string());
2096 } 2104 }
(...skipping 357 matching lines...) Expand 10 before | Expand all | Expand 10 after
2454 pending_batch_sync_origins_.insert(origin); 2462 pending_batch_sync_origins_.insert(origin);
2455 } 2463 }
2456 callback.Run(status, resource_id); 2464 callback.Run(status, resource_id);
2457 } 2465 }
2458 2466
2459 std::string DriveFileSyncService::sync_root_resource_id() { 2467 std::string DriveFileSyncService::sync_root_resource_id() {
2460 return metadata_store_->sync_root_directory(); 2468 return metadata_store_->sync_root_directory();
2461 } 2469 }
2462 2470
2463 } // namespace sync_file_system 2471 } // namespace sync_file_system
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698