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

Unified Diff: chrome/browser/notifications/notification_platform_bridge_linux.h

Issue 2805543005: Linux native notifications: Handle clicks and closes (Closed)
Patch Set: Address peter@'s comments Created 3 years, 8 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/notifications/notification_platform_bridge_linux.h
diff --git a/chrome/browser/notifications/notification_platform_bridge_linux.h b/chrome/browser/notifications/notification_platform_bridge_linux.h
index 18b42142940bb75e6703a68e117a0fdcf7e35307..af0b9ee3629f1967a4fd32e24ccf7598a2391ca0 100644
--- a/chrome/browser/notifications/notification_platform_bridge_linux.h
+++ b/chrome/browser/notifications/notification_platform_bridge_linux.h
@@ -11,6 +11,7 @@
#include "base/macros.h"
#include "chrome/browser/notifications/notification_platform_bridge.h"
+#include "ui/base/glib/glib_signal.h"
#include "ui/base/glib/scoped_gobject.h"
class NotificationPlatformBridgeLinux : public NotificationPlatformBridge {
@@ -40,6 +41,9 @@ class NotificationPlatformBridgeLinux : public NotificationPlatformBridge {
ScopedGObject<GDBusProxy> notification_proxy_;
+ // Used to disconnect from "g-signal" during destruction.
+ gulong proxy_signal_handler_ = 0;
+
// A std::set<std::unique_ptr<T>> doesn't work well because
// eg. std::set::erase(T) would require a std::unique_ptr<T>
// argument, so the data would get double-destructed.
@@ -59,8 +63,25 @@ class NotificationPlatformBridgeLinux : public NotificationPlatformBridge {
// Makes the "CloseNotification" call to D-Bus.
void CloseNow(uint32_t dbus_id);
+ void ForwardNotificationOperation(uint32_t dbus_id,
+ NotificationCommon::Operation operation,
+ int action_index);
+
+ // GSignalReceiver: The function that GLib calls into for
+ // ActionInvoked and NotificationClosed signals.
+ CHROMEG_CALLBACK_3(NotificationPlatformBridgeLinux,
+ void,
+ GSignalReceiver,
+ GDBusProxy*,
+ const char*,
+ const char*,
+ GVariant*);
+
NotificationData* FindNotificationData(const std::string& notification_id,
- const std::string& profile_id);
+ const std::string& profile_id,
+ bool is_incognito);
+
+ NotificationData* FindNotificationData(uint32_t dbus_id);
DISALLOW_COPY_AND_ASSIGN(NotificationPlatformBridgeLinux);
};

Powered by Google App Engine
This is Rietveld 408576698