• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2011 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_UI_COCOA_DOWNLOAD_DOWNLOAD_ITEM_MAC_H_
6 #define CHROME_BROWSER_UI_COCOA_DOWNLOAD_DOWNLOAD_ITEM_MAC_H_
7 #pragma once
8 
9 #import <Cocoa/Cocoa.h>
10 
11 #include "base/memory/scoped_nsobject.h"
12 #include "base/memory/scoped_ptr.h"
13 #include "chrome/browser/download/download_item.h"
14 #include "chrome/browser/download/download_manager.h"
15 #include "chrome/browser/icon_manager.h"
16 #include "content/browser/cancelable_request.h"
17 
18 class BaseDownloadItemModel;
19 @class DownloadItemController;
20 
21 namespace gfx{
22 class Image;
23 }
24 
25 // A class that bridges the visible mac download items to chromium's download
26 // model. The owning object (DownloadItemController) must explicitly call
27 // |LoadIcon| if it wants to display the icon associated with this download.
28 
29 class DownloadItemMac : DownloadItem::Observer {
30  public:
31   // DownloadItemMac takes ownership of |download_model|.
32   DownloadItemMac(BaseDownloadItemModel* download_model,
33                   DownloadItemController* controller);
34 
35   // Destructor.
36   ~DownloadItemMac();
37 
38   // DownloadItem::Observer implementation
39   virtual void OnDownloadUpdated(DownloadItem* download);
40   virtual void OnDownloadOpened(DownloadItem* download);
41 
download_model()42   BaseDownloadItemModel* download_model() { return download_model_.get(); }
43 
44   // Asynchronous icon loading support.
45   void LoadIcon();
46 
47  private:
48   // Callback for asynchronous icon loading.
49   void OnExtractIconComplete(IconManager::Handle handle,
50                              gfx::Image* icon_bitmap);
51 
52   // The download item model we represent.
53   scoped_ptr<BaseDownloadItemModel> download_model_;
54 
55   // The objective-c controller object.
56   DownloadItemController* item_controller_;  // weak, owns us.
57 
58   // For canceling an in progress icon request.
59   CancelableRequestConsumerT<int, 0> icon_consumer_;
60 
61   // Stores the last known path where the file will be saved.
62   FilePath lastFilePath_;
63 
64   DISALLOW_COPY_AND_ASSIGN(DownloadItemMac);
65 };
66 
67 #endif  // CHROME_BROWSER_UI_COCOA_DOWNLOAD_DOWNLOAD_ITEM_MAC_H_
68