Home | History | Annotate | Download | only in attachments
      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 SYNC_API_ATTACHMENTS_ATTACHMENT_DOWNLOADER_H_
      6 #define SYNC_API_ATTACHMENTS_ATTACHMENT_DOWNLOADER_H_
      7 
      8 #include "base/callback.h"
      9 #include "base/memory/scoped_ptr.h"
     10 #include "sync/api/attachments/attachment.h"
     11 #include "sync/base/sync_export.h"
     12 
     13 namespace syncer {
     14 
     15 // AttachmentDownloader is responsible for downloading attachments from server.
     16 class SYNC_EXPORT AttachmentDownloader {
     17  public:
     18   // The result of a DownloadAttachment operation.
     19   enum DownloadResult {
     20     DOWNLOAD_SUCCESS,            // No error, attachment was downloaded
     21                                  // successfully.
     22     DOWNLOAD_UNSPECIFIED_ERROR,  // An unspecified error occurred.
     23   };
     24 
     25   typedef base::Callback<void(const DownloadResult&, scoped_ptr<Attachment>)>
     26       DownloadCallback;
     27 
     28   virtual ~AttachmentDownloader();
     29 
     30   // Download attachment referred by |attachment_id| and invoke |callback| when
     31   // done.
     32   //
     33   // |callback| will receive a DownloadResult code and an Attachment object. If
     34   // DownloadResult is not DOWNLOAD_SUCCESS then attachment pointer is NULL.
     35   virtual void DownloadAttachment(const AttachmentId& attachment_id,
     36                                   const DownloadCallback& callback) = 0;
     37 };
     38 
     39 }  // namespace syncer
     40 
     41 #endif  // SYNC_API_ATTACHMENTS_ATTACHMENT_DOWNLOADER_H_
     42