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

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

Issue 2811183009: Linux native notifications: Add desktop-entry hint (Closed)
Patch Set: Rebase 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 4c9a769de133938f97194886fd129d6d6c9fce78..6f7bbbbaaaef1c0569aa0cca0ab062929c33ec6f 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 {
@@ -375,10 +377,21 @@ 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();
+ std::string desktop_file = shell_integration_linux::GetDesktopName(env.get());
+ const char kDesktopFileSuffix[] = ".desktop";
+ DCHECK(base::EndsWith(desktop_file, kDesktopFileSuffix,
+ base::CompareCase::SENSITIVE));
+ desktop_file =
+ desktop_file.substr(0, desktop_file.size() - strlen(kDesktopFileSuffix));
Lei Zhang 2017/04/14 01:23:10 Alternatively, maybe make |desktop_file| a base::F
Tom (Use chromium acct) 2017/04/18 03:46:40 Done.
+ g_variant_builder_add(&hints_builder, "{sv}", "desktop-entry",
+ g_variant_new_string(desktop_file.c_str()));
+
if (!resource_files->icon_file.empty()) {
g_variant_builder_add(
&hints_builder, "{sv}", "image-path",
@@ -390,9 +403,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