From 0ffafbc2954a8cad34a4b9ec824b4624c31cd6be Mon Sep 17 00:00:00 2001 From: "trop[bot]" <37223003+trop[bot]@users.noreply.github.com> Date: Wed, 25 Sep 2024 13:09:32 -0500 Subject: [PATCH] test: ensure `sender-pid` hint is set in Linux notifications (#43949) test: expect a `sender-pid` hint in Linux notifications. This PR ensures that the `sender-pid` hint is set for new notifications. It also updates the spec to confirm that DBus receives the hint and that it has the correct value. This fixes a spec failure when running libnotify >= 0.7.12 (2022-05-05). Starting with that version, libnotify started injecting `sender-pid` if not provided by the client. So our tests received a slightly different DBus payload depending on what version of libnotify was installed, causing our deep-equals tests to fail. By always providing and testing the `sender-pid` hint, our behavior and tests should be consistent across distros. Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com> Co-authored-by: Charles Kerr --- BUILD.gn | 1 + shell/browser/notifications/linux/libnotify_notification.cc | 5 +++++ spec/api-notification-dbus-spec.ts | 1 + 3 files changed, 7 insertions(+) diff --git a/BUILD.gn b/BUILD.gn index 30eb55b08777..1dff8dcd55b6 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -75,6 +75,7 @@ if (is_linux) { "notify_notification_set_timeout", "notify_notification_set_urgency", "notify_notification_set_hint_string", + "notify_notification_set_hint", "notify_notification_show", "notify_notification_close", ] diff --git a/shell/browser/notifications/linux/libnotify_notification.cc b/shell/browser/notifications/linux/libnotify_notification.cc index 4c8452fad1a8..4b6c6cf89776 100644 --- a/shell/browser/notifications/linux/libnotify_notification.cc +++ b/shell/browser/notifications/linux/libnotify_notification.cc @@ -10,6 +10,7 @@ #include "base/files/file_enumerator.h" #include "base/functional/bind.h" #include "base/logging.h" +#include "base/process/process_handle.h" #include "base/strings/utf_string_conversions.h" #include "shell/browser/notifications/notification_delegate.h" #include "shell/browser/ui/gtk_util.h" @@ -145,6 +146,10 @@ void LibnotifyNotification::Show(const NotificationOptions& options) { notification_, "desktop-entry", desktop_id.c_str()); } + libnotify_loader_.notify_notification_set_hint( + notification_, "sender-pid", + g_variant_new_int64(base::GetCurrentProcId())); + GError* error = nullptr; libnotify_loader_.notify_notification_show(notification_, &error); if (error) { diff --git a/spec/api-notification-dbus-spec.ts b/spec/api-notification-dbus-spec.ts index 26e50e9bf3ae..2246cefb2dea 100644 --- a/spec/api-notification-dbus-spec.ts +++ b/spec/api-notification-dbus-spec.ts @@ -118,6 +118,7 @@ ifdescribe(!skip)('Notification module (dbus)', () => { hints: { append: 'true', 'desktop-entry': appName, + 'sender-pid': process.pid, urgency: 1 } });