Home | History | Annotate | Download | only in 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 
     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