| // Copyright 2014 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 COMPONENTS_SYNC_DRIVER_SYNC_API_COMPONENT_FACTORY_H_ |
| #define COMPONENTS_SYNC_DRIVER_SYNC_API_COMPONENT_FACTORY_H_ |
| |
| #include "base/memory/scoped_ptr.h" |
| #include "base/memory/weak_ptr.h" |
| #include "sync/api/attachments/attachment_service.h" |
| #include "sync/api/syncable_service.h" |
| #include "sync/internal_api/public/base/model_type.h" |
| |
| namespace browser_sync { |
| |
| // This factory provides sync driver code with the model type specific sync/api |
| // service (like SyncableService) implementations. |
| class SyncApiComponentFactory { |
| public: |
| virtual ~SyncApiComponentFactory() {} |
| |
| // Returns a weak pointer to the syncable service specified by |type|. |
| // Weak pointer may be unset if service is already destroyed. |
| // Note: Should only be called from the model type thread. |
| virtual base::WeakPtr<syncer::SyncableService> GetSyncableServiceForType( |
| syncer::ModelType type) = 0; |
| |
| // Creates attachment service. |
| // Note: Should only be called from the model type thread. |
| // |delegate| is optional delegate for AttachmentService to notify about |
| // asynchronous events (AttachmentUploaded). Pass NULL if delegate is not |
| // provided. AttachmentService doesn't take ownership of delegate, the pointer |
| // must be valid throughout AttachmentService lifetime. |
| virtual scoped_ptr<syncer::AttachmentService> CreateAttachmentService( |
| syncer::AttachmentService::Delegate* delegate) = 0; |
| }; |
| |
| } // namespace browser_sync |
| |
| #endif // COMPONENTS_SYNC_DRIVER_SYNC_API_COMPONENT_FACTORY_H_ |