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 3 // found in the LICENSE file. 4 5 #ifndef CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_V1_LOCAL_SYNC_OPERATION_RESOLVER_H_ 6 #define CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_V1_LOCAL_SYNC_OPERATION_RESOLVER_H_ 7 8 #include "base/gtest_prod_util.h" 9 #include "chrome/browser/sync_file_system/file_change.h" 10 #include "chrome/browser/sync_file_system/sync_file_type.h" 11 #include "chrome/browser/sync_file_system/sync_operation_type.h" 12 13 namespace sync_file_system { 14 15 class DriveMetadata; 16 class FileChange; 17 18 class LocalSyncOperationResolver { 19 public: 20 // |remote_file_change| is non-null when we have a remote change for the file, 21 // and |drive_metadata| is also non-null when we have metadata. 22 static SyncOperationType Resolve( 23 const FileChange& local_file_change, 24 const FileChange* remote_file_change, 25 const DriveMetadata* drive_metadata); 26 27 private: 28 static SyncOperationType ResolveForAddOrUpdateFile( 29 const FileChange* remote_file_change, 30 SyncFileType remote_file_type_in_metadata); 31 static SyncOperationType ResolveForAddOrUpdateFileInConflict( 32 const FileChange* remote_file_change); 33 static SyncOperationType ResolveForAddDirectory( 34 const FileChange* remote_file_change, 35 SyncFileType remote_file_type_in_metadata); 36 static SyncOperationType ResolveForAddDirectoryInConflict(); 37 static SyncOperationType ResolveForDelete( 38 const FileChange* remote_file_change, 39 SyncFileType remote_file_type_in_metadata); 40 static SyncOperationType ResolveForDeleteInConflict( 41 const FileChange* remote_file_change); 42 43 FRIEND_TEST_ALL_PREFIXES(LocalSyncOperationResolverTest, 44 ResolveForAddOrUpdateFile); 45 FRIEND_TEST_ALL_PREFIXES(LocalSyncOperationResolverTest, 46 ResolveForAddOrUpdateFileInConflict); 47 FRIEND_TEST_ALL_PREFIXES(LocalSyncOperationResolverTest, 48 ResolveForAddDirectory); 49 FRIEND_TEST_ALL_PREFIXES(LocalSyncOperationResolverTest, 50 ResolveForAddDirectoryInConflict); 51 FRIEND_TEST_ALL_PREFIXES(LocalSyncOperationResolverTest, 52 ResolveForDelete); 53 FRIEND_TEST_ALL_PREFIXES(LocalSyncOperationResolverTest, 54 ResolveForDeleteInConflict); 55 }; 56 57 } // namespace sync_file_system 58 59 #endif // CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_V1_LOCAL_SYNC_OPERATION_RESOLVER_H_ 60