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

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

Issue 2811183009: Linux native notifications: Add desktop-entry hint (Closed)
Patch Set: RemoveFinalExtension 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/notifications/notification_platform_bridge_linux.cc
diff --git a/chrome/browser/notifications/notification_platform_bridge_linux.cc b/chrome/browser/notifications/notification_platform_bridge_linux.cc
index ccfab08eca9e318e1c4486601e4a0fd6a13d7b25..86f51e0477c17c347d08c029e07056f364cfef6a 100644
--- a/chrome/browser/notifications/notification_platform_bridge_linux.cc
+++ b/chrome/browser/notifications/notification_platform_bridge_linux.cc
@@ -11,6 +11,7 @@
#include "base/stl_util.h"
#include "base/strings/nullable_string16.h"
#include "base/strings/string_number_conversions.h"
+#include "base/strings/string_util.h"
#include "base/strings/utf_string_conversions.h"
#include "base/task_scheduler/post_task.h"
#include "chrome/browser/browser_process.h"
@@ -19,6 +20,7 @@
#include "chrome/browser/notifications/notification.h"
#include "chrome/browser/notifications/notification_display_service_factory.h"
#include "chrome/browser/profiles/profile_manager.h"
+#include "chrome/browser/shell_integration_linux.h"
#include "content/public/browser/notification_service.h"
namespace {
@@ -376,10 +378,22 @@ void NotificationPlatformBridgeLinux::NotifyNow(
GVariantBuilder hints_builder;
g_variant_builder_init(&hints_builder, G_VARIANT_TYPE("a{sv}"));
+
g_variant_builder_add(&hints_builder, "{sv}", "urgency",
g_variant_new_byte(NotificationPriorityToFdoUrgency(
notification.priority())));
+ std::unique_ptr<base::Environment> env = base::Environment::Create();
+ base::FilePath desktop_file(
+ shell_integration_linux::GetDesktopName(env.get()));
+ const char kDesktopFileSuffix[] = ".desktop";
+ DCHECK(base::EndsWith(desktop_file.value(), kDesktopFileSuffix,
+ base::CompareCase::SENSITIVE));
Peter Beverloo 2017/04/18 10:14:41 We could hit this DCHECK for non-official builds w
Tom (Use chromium acct) 2017/04/18 18:04:55 No, the FDO desktop entry spec requires the files
+
+ desktop_file = desktop_file.RemoveFinalExtension();
+ g_variant_builder_add(&hints_builder, "{sv}", "desktop-entry",
+ g_variant_new_string(desktop_file.value().c_str()));
+
if (!resource_files->icon_file.empty()) {
g_variant_builder_add(
&hints_builder, "{sv}", "image-path",
@@ -391,9 +405,10 @@ void NotificationPlatformBridgeLinux::NotifyNow(
const std::string title = base::UTF16ToUTF8(notification.title());
const std::string message = base::UTF16ToUTF8(notification.message());
- GVariant* parameters =
- g_variant_new("(susssasa{sv}i)", "", data->dbus_id, "", title.c_str(),
- message.c_str(), &actions_builder, &hints_builder, -1);
+ GVariant* parameters = g_variant_new(
+ "(susssasa{sv}i)", "" /* app_name passed implicitly via desktop-entry */,
+ data->dbus_id, "" /* app_icon passed implicitly via desktop-entry */,
+ title.c_str(), message.c_str(), &actions_builder, &hints_builder, -1);
g_dbus_proxy_call(notification_proxy_, "Notify", parameters,
G_DBUS_CALL_FLAGS_NONE, -1, data->cancellable, callback,
user_data);
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698