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.
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_
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"
13 namespace sync_file_system {
18 class LocalSyncOperationResolver {
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);
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);
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,
53 FRIEND_TEST_ALL_PREFIXES(LocalSyncOperationResolverTest,
54 ResolveForDeleteInConflict);
57 } // namespace sync_file_system
59 #endif // CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_V1_LOCAL_SYNC_OPERATION_RESOLVER_H_