root/chrome/browser/sync_file_system/drive_backend_v1/remote_sync_operation_resolver.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


// 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_DRIVE_BACKEND_V1_REMOTE_SYNC_OPERATION_RESOLVER_H_
#define CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_V1_REMOTE_SYNC_OPERATION_RESOLVER_H_

#include "base/gtest_prod_util.h"
#include "chrome/browser/sync_file_system/file_change.h"
#include "chrome/browser/sync_file_system/sync_file_type.h"
#include "chrome/browser/sync_file_system/sync_operation_type.h"

namespace sync_file_system {

class RemoteSyncOperationResolver {
 public:
  static SyncOperationType Resolve(
      const FileChange& remote_file_change,
      const FileChangeList& local_changes,
      SyncFileType local_file_type,
      bool is_conflicting);

 private:
  static SyncOperationType ResolveForAddOrUpdateFile(
      const FileChangeList& local_changes,
      SyncFileType local_file_type);
  static SyncOperationType ResolveForAddOrUpdateFileInConflict(
      const FileChangeList& local_changes,
      SyncFileType local_file_type);
  static SyncOperationType ResolveForAddDirectory(
      const FileChangeList& local_changes,
      SyncFileType local_file_type);
  static SyncOperationType ResolveForAddDirectoryInConflict(
      const FileChangeList& local_changes,
      SyncFileType local_file_type);
  static SyncOperationType ResolveForDeleteFile(
      const FileChangeList& local_changes,
      SyncFileType local_file_type);
  static SyncOperationType ResolveForDeleteFileInConflict(
      const FileChangeList& local_changes,
      SyncFileType local_file_type);
  static SyncOperationType ResolveForDeleteDirectory(
      const FileChangeList& local_changes,
      SyncFileType local_file_type);
  static SyncOperationType ResolveForDeleteDirectoryInConflict(
      const FileChangeList& local_changes,
      SyncFileType local_file_type);

  FRIEND_TEST_ALL_PREFIXES(RemoteSyncOperationResolverTest,
                           ResolveForAddOrUpdateFile);
  FRIEND_TEST_ALL_PREFIXES(RemoteSyncOperationResolverTest,
                           ResolveForAddOrUpdateFileInConflict);
  FRIEND_TEST_ALL_PREFIXES(RemoteSyncOperationResolverTest,
                           ResolveForAddDirectory);
  FRIEND_TEST_ALL_PREFIXES(RemoteSyncOperationResolverTest,
                           ResolveForAddDirectoryInConflict);
  FRIEND_TEST_ALL_PREFIXES(RemoteSyncOperationResolverTest,
                           ResolveForDeleteFile);
  FRIEND_TEST_ALL_PREFIXES(RemoteSyncOperationResolverTest,
                           ResolveForDeleteFileInConflict);
  FRIEND_TEST_ALL_PREFIXES(RemoteSyncOperationResolverTest,
                           ResolveForDeleteDirectory);
  FRIEND_TEST_ALL_PREFIXES(RemoteSyncOperationResolverTest,
                           ResolveForDeleteDirectoryInConflict);
};

}  // namespace sync_file_system

#endif  // CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_V1_REMOTE_SYNC_OPERATION_RESOLVER_H_

/* [<][>][^][v][top][bottom][index][help] */