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