blob: 43ed76996ba9e5f1684ae4e80b6b6e8c38d37862 [file] [log] [blame]
// 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 "chrome/browser/sync_file_system/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_