sync_engine_context.h revision a02191e04bc25c4935f804f2c080ae28663d096d
1// Copyright 2013 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_SYNC_ENGINE_CONTEXT_H_
6#define CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_SYNC_ENGINE_CONTEXT_H_
7
8#include "base/basictypes.h"
9#include "base/memory/ref_counted.h"
10#include "base/memory/scoped_ptr.h"
11#include "base/memory/weak_ptr.h"
12
13namespace base {
14class SequencedTaskRunner;
15}
16
17namespace drive {
18class DriveServiceInterface;
19class DriveUploaderInterface;
20}
21
22namespace sync_file_system {
23
24class RemoteChangeProcessor;
25
26namespace drive_backend {
27
28class MetadataDatabase;
29
30class SyncEngineContext {
31 public:
32  SyncEngineContext(
33      drive::DriveServiceInterface* drive_service,
34      drive::DriveUploaderInterface* drive_uploader,
35      base::SequencedTaskRunner* task_runner);
36  ~SyncEngineContext();
37
38  drive::DriveServiceInterface* GetDriveService();
39  drive::DriveUploaderInterface* GetDriveUploader();
40  MetadataDatabase* GetMetadataDatabase();
41  RemoteChangeProcessor* GetRemoteChangeProcessor();
42  base::SequencedTaskRunner* GetBlockingTaskRunner();
43
44  void SetMetadataDatabase(scoped_ptr<MetadataDatabase> metadata_database);
45  void SetRemoteChangeProcessor(RemoteChangeProcessor* remote_change_processor);
46
47  scoped_ptr<MetadataDatabase> PassMetadataDatabase();
48
49 private:
50  drive::DriveServiceInterface* drive_service_;
51  drive::DriveUploaderInterface* drive_uploader_;
52  RemoteChangeProcessor* remote_change_processor_;
53
54  scoped_ptr<MetadataDatabase> metadata_database_;
55  scoped_refptr<base::SequencedTaskRunner> task_runner_;
56
57  DISALLOW_COPY_AND_ASSIGN(SyncEngineContext);
58};
59
60}  // namespace drive_backend
61}  // namespace sync_file_system
62
63#endif  // CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_SYNC_ENGINE_CONTEXT_H_
64