1// Copyright 2012 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// An InternalComponentsFactory implementation designed for real production /
6// normal use.
7
8#ifndef SYNC_INTERNAL_API_PUBLIC_INTERNAL_COMPONENTS_FACTORY_IMPL_H_
9#define SYNC_INTERNAL_API_PUBLIC_INTERNAL_COMPONENTS_FACTORY_IMPL_H_
10
11#include "sync/base/sync_export.h"
12#include "sync/internal_api/public/internal_components_factory.h"
13
14namespace syncer {
15
16class SYNC_EXPORT InternalComponentsFactoryImpl
17    : public InternalComponentsFactory {
18 public:
19  InternalComponentsFactoryImpl(const Switches& switches);
20  virtual ~InternalComponentsFactoryImpl();
21
22  virtual scoped_ptr<SyncScheduler> BuildScheduler(
23      const std::string& name,
24      sessions::SyncSessionContext* context,
25      syncer::CancelationSignal* cancelation_signal) OVERRIDE;
26
27  virtual scoped_ptr<sessions::SyncSessionContext> BuildContext(
28      ServerConnectionManager* connection_manager,
29      syncable::Directory* directory,
30      ExtensionsActivity* extensions_activity,
31      const std::vector<SyncEngineEventListener*>& listeners,
32      sessions::DebugInfoGetter* debug_info_getter,
33      ModelTypeRegistry* model_type_registry,
34      const std::string& invalidator_client_id) OVERRIDE;
35
36  virtual scoped_ptr<syncable::DirectoryBackingStore>
37  BuildDirectoryBackingStore(StorageOption storage,
38                             const std::string& dir_name,
39                             const base::FilePath& backing_filepath) OVERRIDE;
40
41  virtual Switches GetSwitches() const OVERRIDE;
42
43 private:
44  const Switches switches_;
45  DISALLOW_COPY_AND_ASSIGN(InternalComponentsFactoryImpl);
46};
47
48}  // namespace syncer
49
50#endif  // SYNC_INTERNAL_API_PUBLIC_INTERNAL_COMPONENTS_FACTORY_IMPL_H_
51