Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(42)

Side by Side Diff: chrome/browser/cocoa/download_item_mac.mm

Issue 165295: Add "dangerous download" view on OS X, for now for dmg files. Also fix download item layout. (Closed)
Patch Set: Address comments Created 11 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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 }
OLDNEW
« no previous file with comments | « chrome/browser/cocoa/download_item_mac.h ('k') | chrome/browser/cocoa/download_shelf_controller.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698