Upstream version 5.34.92.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / extensions / api / image_writer_private / write_from_url_operation.h
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_EXTENSIONS_API_IMAGE_WRITER_PRIVATE_WRITE_FROM_URL_OPERATION_H_
6 #define CHROME_BROWSER_EXTENSIONS_API_IMAGE_WRITER_PRIVATE_WRITE_FROM_URL_OPERATION_H_
7
8 #include "base/scoped_observer.h"
9 #include "chrome/browser/extensions/api/image_writer_private/operation.h"
10 #include "content/public/browser/download_interrupt_reasons.h"
11 #include "content/public/browser/download_item.h"
12 #include "url/gurl.h"
13
14 namespace content {
15
16 class RenderViewHost;
17
18 }  // namespace content
19
20 namespace extensions {
21 namespace image_writer {
22
23 class OperationManager;
24
25 // Encapsulates a write of an image accessed via URL.
26 class WriteFromUrlOperation : public Operation,
27                               public content::DownloadItem::Observer {
28  public:
29   WriteFromUrlOperation(base::WeakPtr<OperationManager> manager,
30                         const ExtensionId& extension_id,
31                         content::RenderViewHost* rvh,
32                         GURL url,
33                         const std::string& hash,
34                         bool saveImageAsDownload,
35                         const std::string& storage_unit_id);
36   virtual void Start() OVERRIDE;
37  private:
38   virtual ~WriteFromUrlOperation();
39   void CreateTempFile();
40
41   void DownloadStart();
42   void OnDownloadStarted(content::DownloadItem*,
43                          content::DownloadInterruptReason interrupt_reason);
44   virtual void OnDownloadUpdated(content::DownloadItem* download) OVERRIDE;
45   void DownloadComplete();
46   void DownloadCleanUp();
47
48   void VerifyDownloadStart();
49   void VerifyDownloadRun();
50   void VerifyDownloadCompare(scoped_ptr<std::string> download_hash);
51   void VerifyDownloadComplete();
52
53   // Arguments
54   content::RenderViewHost* rvh_;
55   GURL url_;
56   const std::string hash_;
57   const bool saveImageAsDownload_;
58
59   // Local state
60   scoped_ptr<base::FilePath> tmp_file_;
61   bool download_stopped_;
62   content::DownloadItem* download_;
63   base::FilePath download_path_;
64 };
65
66 } // namespace image_writer
67 } // namespace extensions
68
69 #endif  // CHROME_BROWSER_EXTENSIONS_API_IMAGE_WRITER_PRIVATE_WRITE_FROM_URL_OPERATION_H_