download_item_mac.h revision 5d1f7b1de12d16ceb2c938c56701a3e8bfa558f7
1// Copyright (c) 2012 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
8#import <Cocoa/Cocoa.h>
9
10#include "base/task/cancelable_task_tracker.h"
11#include "chrome/browser/download/download_item_model.h"
12#include "chrome/browser/icon_manager.h"
13#include "content/public/browser/download_item.h"
14#include "content/public/browser/download_manager.h"
15
16@class DownloadItemController;
17
18namespace gfx{
19class Image;
20}
21
22// A class that bridges the visible mac download items to chromium's download
23// model. The owning object (DownloadItemController) must explicitly call
24// |LoadIcon| if it wants to display the icon associated with this download.
25
26class DownloadItemMac : content::DownloadItem::Observer {
27 public:
28  DownloadItemMac(content::DownloadItem* download,
29                  DownloadItemController* controller);
30
31  // Destructor.
32  virtual ~DownloadItemMac();
33
34  // content::DownloadItem::Observer implementation
35  virtual void OnDownloadUpdated(content::DownloadItem* download) OVERRIDE;
36  virtual void OnDownloadOpened(content::DownloadItem* download) OVERRIDE;
37  virtual void OnDownloadDestroyed(content::DownloadItem* download) OVERRIDE;
38
39  DownloadItemModel* download_model() { return &download_model_; }
40
41  // Asynchronous icon loading support.
42  void LoadIcon();
43
44 private:
45  // Callback for asynchronous icon loading.
46  void OnExtractIconComplete(gfx::Image* icon_bitmap);
47
48  // The download item model we represent.
49  DownloadItemModel download_model_;
50
51  // The objective-c controller object.
52  DownloadItemController* item_controller_;  // weak, owns us.
53
54  // For canceling an in progress icon request.
55  base::CancelableTaskTracker cancelable_task_tracker_;
56
57  // Stores the last known path where the file will be saved.
58  base::FilePath lastFilePath_;
59
60  DISALLOW_COPY_AND_ASSIGN(DownloadItemMac);
61};
62
63#endif  // CHROME_BROWSER_UI_COCOA_DOWNLOAD_DOWNLOAD_ITEM_MAC_H_
64