| OLD | NEW |
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/cocoa/download_item_mac.h" | 5 #include "chrome/browser/cocoa/download_item_mac.h" |
| 6 | 6 |
| 7 #include "chrome/browser/browser_process.h" | 7 #include "chrome/browser/browser_process.h" |
| 8 #import "chrome/browser/cocoa/download_item_controller.h" | 8 #import "chrome/browser/cocoa/download_item_controller.h" |
| 9 #include "chrome/browser/download/download_item_model.h" | 9 #include "chrome/browser/download/download_item_model.h" |
| 10 #include "skia/ext/skia_utils_mac.h" | 10 #include "skia/ext/skia_utils_mac.h" |
| 11 | 11 |
| 12 // DownloadItemMac ------------------------------------------------------------- | 12 // DownloadItemMac ------------------------------------------------------------- |
| 13 | 13 |
| 14 DownloadItemMac::DownloadItemMac(BaseDownloadItemModel* download_model, | 14 DownloadItemMac::DownloadItemMac(BaseDownloadItemModel* download_model, |
| 15 DownloadItemController* controller) | 15 DownloadItemController* controller) |
| 16 : download_model_(download_model), item_controller_(controller) { | 16 : download_model_(download_model), item_controller_(controller) { |
| 17 download_model_->download()->AddObserver(this); | 17 download_model_->download()->AddObserver(this); |
| 18 } | 18 } |
| 19 | 19 |
| 20 DownloadItemMac::~DownloadItemMac() { | 20 DownloadItemMac::~DownloadItemMac() { |
| 21 download_model_->download()->RemoveObserver(this); | 21 download_model_->download()->RemoveObserver(this); |
| 22 icon_consumer_.CancelAllRequests(); | 22 icon_consumer_.CancelAllRequests(); |
| 23 } | 23 } |
| 24 | 24 |
| 25 void DownloadItemMac::OnDownloadUpdated(DownloadItem* download) { | 25 void DownloadItemMac::OnDownloadUpdated(DownloadItem* download) { |
| 26 DCHECK_EQ(download, download_model_->download()); | 26 DCHECK_EQ(download, download_model_->download()); |
| 27 | 27 |
| 28 if ([item_controller_ isDangerousMode] && |
| 29 download->safety_state() == DownloadItem::DANGEROUS_BUT_VALIDATED) { |
| 30 // We have been approved. |
| 31 [item_controller_ clearDangerousMode]; |
| 32 } |
| 33 |
| 34 if (download->full_path() != lastFilePath_) { |
| 35 // Turns out the file path is "unconfirmed %d.download" for dangerous |
| 36 // downloads. When the download is confirmed, the file is renamed on |
| 37 // another thread, so reload the icon if the download filename changes. |
| 38 LoadIcon(); |
| 39 lastFilePath_ = download->full_path(); |
| 40 } |
| 41 |
| 28 switch (download_model_->download()->state()) { | 42 switch (download_model_->download()->state()) { |
| 29 case DownloadItem::REMOVING: | 43 case DownloadItem::REMOVING: |
| 30 [item_controller_ remove]; // We're deleted now! | 44 [item_controller_ remove]; // We're deleted now! |
| 31 break; | 45 break; |
| 32 case DownloadItem::IN_PROGRESS: | 46 case DownloadItem::IN_PROGRESS: |
| 33 case DownloadItem::CANCELLED: | 47 case DownloadItem::CANCELLED: |
| 34 case DownloadItem::COMPLETE: | 48 case DownloadItem::COMPLETE: |
| 35 [item_controller_ setStateFromDownload:download_model_.get()]; | 49 [item_controller_ setStateFromDownload:download_model_.get()]; |
| 36 break; | 50 break; |
| 37 default: | 51 default: |
| 38 NOTREACHED(); | 52 NOTREACHED(); |
| 39 } | 53 } |
| 40 } | 54 } |
| 41 | 55 |
| 42 void DownloadItemMac::LoadIcon() { | 56 void DownloadItemMac::LoadIcon() { |
| 43 IconManager* icon_manager = g_browser_process->icon_manager(); | 57 IconManager* icon_manager = g_browser_process->icon_manager(); |
| 44 if (!icon_manager) { | 58 if (!icon_manager) { |
| 45 NOTREACHED(); | 59 NOTREACHED(); |
| 46 return; | 60 return; |
| 47 } | 61 } |
| 48 | 62 |
| (...skipping 13 matching lines...) Expand all Loading... |
| 62 } | 76 } |
| 63 | 77 |
| 64 void DownloadItemMac::OnExtractIconComplete(IconManager::Handle handle, | 78 void DownloadItemMac::OnExtractIconComplete(IconManager::Handle handle, |
| 65 SkBitmap* icon_bitmap) { | 79 SkBitmap* icon_bitmap) { |
| 66 if (!icon_bitmap) | 80 if (!icon_bitmap) |
| 67 return; | 81 return; |
| 68 | 82 |
| 69 NSImage* icon = gfx::SkBitmapToNSImage(*icon_bitmap); | 83 NSImage* icon = gfx::SkBitmapToNSImage(*icon_bitmap); |
| 70 [item_controller_ setIcon:icon]; | 84 [item_controller_ setIcon:icon]; |
| 71 } | 85 } |
| OLD | NEW |