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

Unified 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: Addressed comments #27 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/download/notification/download_notification_item.h
diff --git a/chrome/browser/download/notification/download_notification_item.h b/chrome/browser/download/notification/download_notification_item.h
index 76fb48b9e5a7e4c9d8b96d5f6850b98f4ec504be..b9fc87b7a367253900eb1dda59a4b8d7f77c390e 100644
--- a/chrome/browser/download/notification/download_notification_item.h
+++ b/chrome/browser/download/notification/download_notification_item.h
@@ -9,11 +9,13 @@
#include "base/strings/string_number_conversions.h"
#include "chrome/browser/download/download_commands.h"
+#include "chrome/browser/image_decoder.h"
#include "chrome/browser/notifications/notification.h"
#include "chrome/browser/notifications/notification_delegate.h"
#include "chrome/browser/notifications/notification_test_util.h"
#include "content/public/browser/download_item.h"
#include "grit/theme_resources.h"
+#include "third_party/skia/include/core/SkBitmap.h"
#include "ui/message_center/message_center.h"
#include "ui/message_center/message_center_observer.h"
@@ -21,7 +23,8 @@ namespace test {
class DownloadNotificationItemTest;
}
-class DownloadNotificationItem : public content::DownloadItem::Observer {
+class DownloadNotificationItem : public content::DownloadItem::Observer,
+ public ImageDecoder::ImageRequest {
public:
class Delegate {
public:
@@ -47,6 +50,14 @@ class DownloadNotificationItem : public content::DownloadItem::Observer {
UPDATE_EXISTING
};
+ enum ImageDecodeStatus {
+ NOT_STARTED,
+ IN_PROGRESS,
+ DONE,
+ FAILED,
+ NOT_IMAGE
+ };
+
class NotificationWatcher : public NotificationDelegate {
public:
explicit NotificationWatcher(DownloadNotificationItem* item);
@@ -76,6 +87,7 @@ class DownloadNotificationItem : public content::DownloadItem::Observer {
// Methods called from NotificationWatcher.
void OnNotificationClick();
void OnNotificationButtonClick(int button_index);
+ void OnNotificationClose(bool by_user);
// DownloadItem::Observer overrides:
void OnDownloadUpdated(content::DownloadItem* item) override;
@@ -86,7 +98,16 @@ class DownloadNotificationItem : public content::DownloadItem::Observer {
void CloseNotificationByUser();
void CloseNotificationByNonUser();
void UpdateNotificationData(NotificationUpdateType type);
- void SetNotificationImage(int resource_id);
+
+ // Set icon of the notification.
+ void SetNotificationIcon(int resource_id);
+
+ // Set preview image of the notification. Must be called on IO thread.
+ void OnImageLoaded(const std::string& image_data);
+
+ // ImageDecoder::ImageRequest overrides:
+ void OnImageDecoded(const SkBitmap& decoded_image) override;
+ void OnDecodeImageFailed() override;
NotificationUIManager* notification_ui_manager() const;
@@ -115,6 +136,11 @@ class DownloadNotificationItem : public content::DownloadItem::Observer {
scoped_ptr<std::vector<DownloadCommands::Command>> button_actions_;
Delegate* const delegate_;
+ // Status of the preview image decode.
+ ImageDecodeStatus image_decode_status_ = NOT_STARTED;
+
+ base::WeakPtrFactory<DownloadNotificationItem> weak_factory_;
+
DISALLOW_COPY_AND_ASSIGN(DownloadNotificationItem);
};

Powered by Google App Engine
This is Rietveld 408576698