17dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// Copyright 2013 The Chromium Authors. All rights reserved. 2c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// found in the LICENSE file. 4c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 57dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#ifndef CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_LOCAL_SYNC_OPERATION_RESOLVER_H_ 67dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#define CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_LOCAL_SYNC_OPERATION_RESOLVER_H_ 7c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 8c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "base/gtest_prod_util.h" 92385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch#include "chrome/browser/sync_file_system/file_change.h" 102385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch#include "chrome/browser/sync_file_system/sync_file_type.h" 117d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "chrome/browser/sync_file_system/sync_operation_type.h" 12c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 13c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace sync_file_system { 14c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 15c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class DriveMetadata; 16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class FileChange; 17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class LocalSyncOperationResolver { 19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public: 20b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) // |remote_file_change| is non-null when we have a remote change for the file, 21b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) // and |drive_metadata| is also non-null when we have metadata. 227d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) static SyncOperationType Resolve( 23c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const FileChange& local_file_change, 24b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) const FileChange* remote_file_change, 25b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) const DriveMetadata* drive_metadata); 26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private: 287d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) static SyncOperationType ResolveForAddOrUpdateFile( 29b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) const FileChange* remote_file_change, 30c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) SyncFileType remote_file_type_in_metadata); 317d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) static SyncOperationType ResolveForAddOrUpdateFileInConflict( 32b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) const FileChange* remote_file_change); 337d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) static SyncOperationType ResolveForAddDirectory( 34b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) const FileChange* remote_file_change, 35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) SyncFileType remote_file_type_in_metadata); 367d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) static SyncOperationType ResolveForAddDirectoryInConflict(); 377d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) static SyncOperationType ResolveForDelete( 38b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) const FileChange* remote_file_change, 39c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) SyncFileType remote_file_type_in_metadata); 407d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) static SyncOperationType ResolveForDeleteInConflict( 41b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) const FileChange* remote_file_change); 42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 43c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(LocalSyncOperationResolverTest, 44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ResolveForAddOrUpdateFile); 45c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(LocalSyncOperationResolverTest, 46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ResolveForAddOrUpdateFileInConflict); 47c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(LocalSyncOperationResolverTest, 48c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ResolveForAddDirectory); 49c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(LocalSyncOperationResolverTest, 50c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ResolveForAddDirectoryInConflict); 51c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(LocalSyncOperationResolverTest, 52868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ResolveForDelete); 53c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(LocalSyncOperationResolverTest, 54868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ResolveForDeleteInConflict); 55c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}; 56c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 57c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} // namespace sync_file_system 58c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 597dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#endif // CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_LOCAL_SYNC_OPERATION_RESOLVER_H_ 60