// Copyright 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_BROWSER_SYNC_FILE_SYSTEM_CONFLICT_RESOLUTION_RESOLVER_H_ #define CHROME_BROWSER_SYNC_FILE_SYSTEM_CONFLICT_RESOLUTION_RESOLVER_H_ #include "chrome/browser/sync_file_system/conflict_resolution_policy.h" #include "webkit/browser/fileapi/syncable/sync_file_type.h" namespace base { class Time; } namespace sync_file_system { enum ConflictResolution { CONFLICT_RESOLUTION_UNKNOWN, CONFLICT_RESOLUTION_MARK_CONFLICT, CONFLICT_RESOLUTION_LOCAL_WIN, CONFLICT_RESOLUTION_REMOTE_WIN, }; class ConflictResolutionResolver { public: explicit ConflictResolutionResolver(ConflictResolutionPolicy policy); ~ConflictResolutionResolver(); // Determine the ConflictResolution. // This may return CONFLICT_RESOLUTION_UNKNOWN if NULL |remote_update_time| // is given. // It is invalid to give NULL |local_update_time|. ConflictResolution Resolve( SyncFileType local_file_type, const base::Time& local_update_time, SyncFileType remote_file_type, const base::Time& remote_update_time); ConflictResolutionPolicy policy() const { return policy_; } void set_policy(ConflictResolutionPolicy policy) { policy_ = policy; } private: ConflictResolutionPolicy policy_; }; } // namespace sync_file_system #endif // CHROME_BROWSER_SYNC_FILE_SYSTEM_CONFLICT_RESOLUTION_RESOLVER_H_