remote_change_processor_wrapper.h revision 03b57e008b61dfcb1fbad3aea950ae0e001748b0
1// Copyright 2014 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.
4
5#ifndef CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_REMOTE_CHANGE_PROCESSOR_WRAPPER_H_
6#define CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_REMOTE_CHANGE_PROCESSOR_WRAPPER_H_
7
8#include "base/memory/weak_ptr.h"
9#include "base/sequence_checker.h"
10#include "chrome/browser/sync_file_system/remote_change_processor.h"
11
12namespace sync_file_system {
13namespace drive_backend {
14
15// This class wraps a part of RemoteChangeProcessor class to support weak
16// pointer.  Each method wraps corresponding name method of
17// RemoteChangeProcessor.  See comments in remote_change_processor.h
18// for details.
19class RemoteChangeProcessorWrapper
20    : public base::SupportsWeakPtr<RemoteChangeProcessorWrapper> {
21 public:
22  explicit RemoteChangeProcessorWrapper(
23      RemoteChangeProcessor* remote_change_processor);
24
25  void PrepareForProcessRemoteChange(
26      const storage::FileSystemURL& url,
27      const RemoteChangeProcessor::PrepareChangeCallback& callback);
28
29  void ApplyRemoteChange(const FileChange& change,
30                         const base::FilePath& local_path,
31                         const storage::FileSystemURL& url,
32                         const SyncStatusCallback& callback);
33
34  void FinalizeRemoteSync(const storage::FileSystemURL& url,
35                          bool clear_local_changes,
36                          const base::Closure& completion_callback);
37
38  void RecordFakeLocalChange(const storage::FileSystemURL& url,
39                             const FileChange& change,
40                             const SyncStatusCallback& callback);
41
42 private:
43  RemoteChangeProcessor* remote_change_processor_;
44  base::SequenceChecker sequence_checker_;
45
46  DISALLOW_COPY_AND_ASSIGN(RemoteChangeProcessorWrapper);
47};
48
49}  // namespace drive_backend
50}  // namespace sync_file_system
51
52#endif  // CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_REMOTE_CHANGE_PROCESSOR_WRAPPER_H_
53