test: ensure `sender-pid` hint is set in Linux notifications (#43928)

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.
This commit is contained in:
Charles Kerr 2024-09-25 06:20:36 -05:00 коммит произвёл GitHub
Родитель 30fbeec036
Коммит 1d3b1284c4
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: B5690EEEBB952194
3 изменённых файлов: 7 добавлений и 0 удалений

Просмотреть файл

@ -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",
]

Просмотреть файл

@ -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) {

Просмотреть файл

@ -124,6 +124,7 @@ ifdescribe(!skip)('Notification module (dbus)', () => {
append: 'true',
image_data: [3, 3, 12, true, 8, 4, Buffer.from([255, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 0, 76, 255, 0, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 38, 255, 255, 0, 0, 0, 255, 0, 0, 0, 0])],
'desktop-entry': appName,
'sender-pid': process.pid,
urgency: 1
}
});