From 59ed6ad41366c29087fba7bcda65f1efcad098e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= Date: Wed, 13 Apr 2016 05:31:56 +0200 Subject: [PATCH 1/2] Notification: pass tag to Show method --- brightray/browser/linux/libnotify_notification.cc | 1 + brightray/browser/linux/libnotify_notification.h | 1 + brightray/browser/mac/cocoa_notification.h | 1 + brightray/browser/mac/cocoa_notification.mm | 1 + brightray/browser/notification.h | 1 + brightray/browser/platform_notification_service.cc | 2 +- brightray/browser/win/windows_toast_notification.cc | 1 + brightray/browser/win/windows_toast_notification.h | 1 + 8 files changed, 8 insertions(+), 1 deletion(-) diff --git a/brightray/browser/linux/libnotify_notification.cc b/brightray/browser/linux/libnotify_notification.cc index a903007b52..bd94ef35a6 100644 --- a/brightray/browser/linux/libnotify_notification.cc +++ b/brightray/browser/linux/libnotify_notification.cc @@ -88,6 +88,7 @@ LibnotifyNotification::~LibnotifyNotification() { void LibnotifyNotification::Show(const base::string16& title, const base::string16& body, + const std::string& tag, const GURL& icon_url, const SkBitmap& icon, const bool silent) { diff --git a/brightray/browser/linux/libnotify_notification.h b/brightray/browser/linux/libnotify_notification.h index 17fb427bcf..505816ae35 100644 --- a/brightray/browser/linux/libnotify_notification.h +++ b/brightray/browser/linux/libnotify_notification.h @@ -22,6 +22,7 @@ class LibnotifyNotification : public Notification { // Notification: void Show(const base::string16& title, const base::string16& msg, + const std::string& tag, const GURL& icon_url, const SkBitmap& icon, const bool silent) override; diff --git a/brightray/browser/mac/cocoa_notification.h b/brightray/browser/mac/cocoa_notification.h index 8cefb3a59b..dd7d3cae4b 100644 --- a/brightray/browser/mac/cocoa_notification.h +++ b/brightray/browser/mac/cocoa_notification.h @@ -22,6 +22,7 @@ class CocoaNotification : public Notification { // Notification: void Show(const base::string16& title, const base::string16& msg, + const std::string& tag, const GURL& icon_url, const SkBitmap& icon, const bool silent) override; diff --git a/brightray/browser/mac/cocoa_notification.mm b/brightray/browser/mac/cocoa_notification.mm index fefae39788..febd2af4c9 100644 --- a/brightray/browser/mac/cocoa_notification.mm +++ b/brightray/browser/mac/cocoa_notification.mm @@ -30,6 +30,7 @@ CocoaNotification::~CocoaNotification() { void CocoaNotification::Show(const base::string16& title, const base::string16& body, + const std::string& tag, const GURL& icon_url, const SkBitmap& icon, const bool silent) { diff --git a/brightray/browser/notification.h b/brightray/browser/notification.h index 5f1396c8e3..30ac680d25 100644 --- a/brightray/browser/notification.h +++ b/brightray/browser/notification.h @@ -21,6 +21,7 @@ class Notification { // Shows the notification. virtual void Show(const base::string16& title, const base::string16& msg, + const std::string& tag, const GURL& icon_url, const SkBitmap& icon, const bool silent) = 0; diff --git a/brightray/browser/platform_notification_service.cc b/brightray/browser/platform_notification_service.cc index 7971f28100..146cd968c9 100644 --- a/brightray/browser/platform_notification_service.cc +++ b/brightray/browser/platform_notification_service.cc @@ -37,7 +37,7 @@ void OnWebNotificationAllowed( auto notification = presenter->CreateNotification(adapter.get()); if (notification) { ignore_result(adapter.release()); // it will release itself automatically. - notification->Show(data.title, data.body, data.icon, icon, data.silent); + notification->Show(data.title, data.body, data.tag, data.icon, icon, data.silent); *cancel_callback = base::Bind(&RemoveNotification, notification); } } diff --git a/brightray/browser/win/windows_toast_notification.cc b/brightray/browser/win/windows_toast_notification.cc index a744c88815..401473b9c3 100644 --- a/brightray/browser/win/windows_toast_notification.cc +++ b/brightray/browser/win/windows_toast_notification.cc @@ -84,6 +84,7 @@ WindowsToastNotification::~WindowsToastNotification() { void WindowsToastNotification::Show( const base::string16& title, const base::string16& msg, + const std::string& tag, const GURL& icon_url, const SkBitmap& icon, const bool silent) { diff --git a/brightray/browser/win/windows_toast_notification.h b/brightray/browser/win/windows_toast_notification.h index d5e5f2a82c..c603ce3d79 100644 --- a/brightray/browser/win/windows_toast_notification.h +++ b/brightray/browser/win/windows_toast_notification.h @@ -41,6 +41,7 @@ class WindowsToastNotification : public Notification { // Notification: void Show(const base::string16& title, const base::string16& msg, + const std::string& tag, const GURL& icon_url, const SkBitmap& icon, const bool silent) override; From 1ce34fb8d276037c48da3121291a97d9501cc96b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= Date: Wed, 13 Apr 2016 06:08:35 +0200 Subject: [PATCH 2/2] LibnotifyNotification: add support for notification tag We set the id of the notification if tag is provided. As per the protocol, this should cause the old notification with same ID to be replaced. --- brightray/browser/linux/libnotify_notification.cc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/brightray/browser/linux/libnotify_notification.cc b/brightray/browser/linux/libnotify_notification.cc index bd94ef35a6..37aef60713 100644 --- a/brightray/browser/linux/libnotify_notification.cc +++ b/brightray/browser/linux/libnotify_notification.cc @@ -119,6 +119,11 @@ void LibnotifyNotification::Show(const base::string16& title, g_object_unref(pixbuf); } + if (!tag.empty()) { + GQuark id = g_quark_from_string(tag.c_str()); + g_object_set(G_OBJECT(notification_), "id", id, NULL); + } + GError* error = nullptr; libnotify_loader_.notify_notification_show(notification_, &error); if (error) {