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

Side by Side Diff: chrome/browser/download/notification/download_notification_item.h

Issue 1159363002: [Download Notification] Show preview if downloaded file is image (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase & use embedded server Created 5 years, 6 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 #ifndef CHROME_BROWSER_DOWNLOAD_NOTIFICATION_DOWNLOAD_NOTIFICATION_ITEM_H_ 5 #ifndef CHROME_BROWSER_DOWNLOAD_NOTIFICATION_DOWNLOAD_NOTIFICATION_ITEM_H_
6 #define CHROME_BROWSER_DOWNLOAD_NOTIFICATION_DOWNLOAD_NOTIFICATION_ITEM_H_ 6 #define CHROME_BROWSER_DOWNLOAD_NOTIFICATION_DOWNLOAD_NOTIFICATION_ITEM_H_
7 7
8 #include "base/strings/string_number_conversions.h" 8 #include "base/strings/string_number_conversions.h"
9 #include "chrome/browser/download/download_commands.h" 9 #include "chrome/browser/download/download_commands.h"
10 #include "chrome/browser/download/notification/download_notification.h" 10 #include "chrome/browser/download/notification/download_notification.h"
11 #include "chrome/browser/image_decoder.h"
11 #include "chrome/browser/notifications/notification.h" 12 #include "chrome/browser/notifications/notification.h"
12 #include "chrome/browser/notifications/notification_delegate.h" 13 #include "chrome/browser/notifications/notification_delegate.h"
13 #include "chrome/browser/notifications/notification_test_util.h" 14 #include "chrome/browser/notifications/notification_test_util.h"
14 #include "content/public/browser/download_item.h" 15 #include "content/public/browser/download_item.h"
15 #include "grit/theme_resources.h" 16 #include "grit/theme_resources.h"
17 #include "third_party/skia/include/core/SkBitmap.h"
16 #include "ui/message_center/message_center.h" 18 #include "ui/message_center/message_center.h"
17 #include "ui/message_center/message_center_observer.h" 19 #include "ui/message_center/message_center_observer.h"
18 20
19 namespace test { 21 namespace test {
20 class DownloadNotificationItemTest; 22 class DownloadNotificationItemTest;
21 } 23 }
22 24
23 class DownloadNotificationItem : public DownloadNotification { 25 class DownloadNotificationItem : public DownloadNotification,
26 public ImageDecoder::ImageRequest {
24 public: 27 public:
25 DownloadNotificationItem(content::DownloadItem* item, 28 DownloadNotificationItem(content::DownloadItem* item,
26 DownloadNotificationManagerForProfile* manager); 29 DownloadNotificationManagerForProfile* manager);
27 30
28 ~DownloadNotificationItem() override; 31 ~DownloadNotificationItem() override;
29 32
30 // Methods called from NotificationWatcher. 33 // Methods called from NotificationWatcher.
31 void OnDownloadUpdated(content::DownloadItem* item) override; 34 void OnDownloadUpdated(content::DownloadItem* item) override;
32 void OnDownloadRemoved(content::DownloadItem* item) override; 35 void OnDownloadRemoved(content::DownloadItem* item) override;
33 void OnNotificationClose() override; 36 void OnNotificationClose() override;
34 void OnNotificationClick() override; 37 void OnNotificationClick() override;
35 void OnNotificationButtonClick(int button_index) override; 38 void OnNotificationButtonClick(int button_index) override;
36 std::string GetNotificationId() const override; 39 std::string GetNotificationId() const override;
37 40
38 private: 41 private:
39 friend class test::DownloadNotificationItemTest; 42 friend class test::DownloadNotificationItemTest;
40 43
44 enum ImageDecodeStatus { NOT_STARTED, IN_PROGRESS, DONE, FAILED, NOT_IMAGE };
45
41 enum NotificationUpdateType { 46 enum NotificationUpdateType {
42 ADD, 47 ADD,
43 UPDATE, 48 UPDATE,
44 UPDATE_AND_POPUP 49 UPDATE_AND_POPUP
45 }; 50 };
46 51
47 void CloseNotificationByUser(); 52 void CloseNotificationByUser();
48 void CloseNotificationByNonUser(); 53 void CloseNotificationByNonUser();
49 void Update(); 54 void Update();
50 void UpdateNotificationData(NotificationUpdateType type); 55 void UpdateNotificationData(NotificationUpdateType type);
51 void SetNotificationImage(int resource_id); 56
57 // Set icon of the notification.
58 void SetNotificationIcon(int resource_id);
59
60 // Set preview image of the notification. Must be called on IO thread.
61 void OnImageLoaded(const std::string& image_data);
62
63 // ImageDecoder::ImageRequest overrides:
64 void OnImageDecoded(const SkBitmap& decoded_image) override;
65 void OnDecodeImageFailed() override;
52 66
53 // Returns a short one-line status string for the download. 67 // Returns a short one-line status string for the download.
54 base::string16 GetTitle() const; 68 base::string16 GetTitle() const;
55 69
56 // Returns a short one-line status string for a download command. 70 // Returns a short one-line status string for a download command.
57 base::string16 GetCommandLabel(DownloadCommands::Command command) const; 71 base::string16 GetCommandLabel(DownloadCommands::Command command) const;
58 72
59 // Get the warning test to notify a dangerous download. Should only be called 73 // Get the warning test to notify a dangerous download. Should only be called
60 // if IsDangerous() is true. 74 // if IsDangerous() is true.
61 base::string16 GetWarningText() const; 75 base::string16 GetWarningText() const;
(...skipping 10 matching lines...) Expand all
72 // Current vilibility status of the notification. 86 // Current vilibility status of the notification.
73 bool visible_ = false; 87 bool visible_ = false;
74 88
75 int image_resource_id_ = 0; 89 int image_resource_id_ = 0;
76 content::DownloadItem::DownloadState previous_download_state_ = 90 content::DownloadItem::DownloadState previous_download_state_ =
77 content::DownloadItem::MAX_DOWNLOAD_STATE; // As uninitialized state 91 content::DownloadItem::MAX_DOWNLOAD_STATE; // As uninitialized state
78 scoped_ptr<Notification> notification_; 92 scoped_ptr<Notification> notification_;
79 content::DownloadItem* item_; 93 content::DownloadItem* item_;
80 scoped_ptr<std::vector<DownloadCommands::Command>> button_actions_; 94 scoped_ptr<std::vector<DownloadCommands::Command>> button_actions_;
81 95
96 // Status of the preview image decode.
97 ImageDecodeStatus image_decode_status_ = NOT_STARTED;
98
99 base::WeakPtrFactory<DownloadNotificationItem> weak_factory_;
100
82 DISALLOW_COPY_AND_ASSIGN(DownloadNotificationItem); 101 DISALLOW_COPY_AND_ASSIGN(DownloadNotificationItem);
83 }; 102 };
84 103
85 #endif // CHROME_BROWSER_DOWNLOAD_NOTIFICATION_DOWNLOAD_NOTIFICATION_ITEM_H_ 104 #endif // CHROME_BROWSER_DOWNLOAD_NOTIFICATION_DOWNLOAD_NOTIFICATION_ITEM_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698