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

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

Issue 2876603004: Linux native notifications: Add attribution (Closed)
Patch Set: Address peter and yoshiki's comments Created 3 years, 7 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.cc
diff --git a/chrome/browser/notifications/notification_platform_bridge_linux.cc b/chrome/browser/notifications/notification_platform_bridge_linux.cc
index a5b8c3a971459e21c342758b7859a4c95fe71dc4..77f73a92b8cd647fe0f5e13482f05937d028e243 100644
--- a/chrome/browser/notifications/notification_platform_bridge_linux.cc
+++ b/chrome/browser/notifications/notification_platform_bridge_linux.cc
@@ -31,6 +31,7 @@
#include "chrome/browser/profiles/profile_manager.h"
#include "chrome/browser/shell_integration_linux.h"
#include "chrome/grit/generated_resources.h"
+#include "components/url_formatter/elide_url.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/notification_service.h"
#include "dbus/bus.h"
@@ -127,6 +128,12 @@ gfx::Image DeepCopyImage(const gfx::Image& image) {
return gfx::Image(*image_skia);
}
+void EscapeBodyText(std::string* text) {
+ base::ReplaceSubstringsAfterOffset(text, 0, "&", "&");
+ base::ReplaceSubstringsAfterOffset(text, 0, "<", "&lt;");
+ base::ReplaceSubstringsAfterOffset(text, 0, ">", "&gt;");
+}
+
int NotificationPriorityToFdoUrgency(int priority) {
enum FdoUrgency {
LOW = 0,
@@ -151,6 +158,7 @@ int NotificationPriorityToFdoUrgency(int priority) {
// the image does not need to be resized, or the image is empty,
// returns |image| directly.
gfx::Image ResizeImageToFdoMaxSize(const gfx::Image& image) {
+ DCHECK(!content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
if (image.IsEmpty())
return image;
int width = image.Width();
@@ -534,12 +542,31 @@ class NotificationPlatformBridgeLinuxImpl
if (base::ContainsKey(capabilities_, kCapabilityBody)) {
const bool body_markup =
base::ContainsKey(capabilities_, kCapabilityBodyMarkup);
+
+ if (notification->UseOriginAsContextMessage()) {
+ std::string url_display_text =
+ base::UTF16ToUTF8(url_formatter::FormatUrlForSecurityDisplay(
+ notification->origin_url(),
+ url_formatter::SchemeDisplay::OMIT_HTTP_AND_HTTPS));
+ std::string spec = notification->origin_url().spec();
Lei Zhang 2017/05/15 22:19:59 Do we know if the origin URL is guaranteed to be v
Peter Beverloo 2017/05/15 22:43:26 Yes. UseOriginAsContextMessage() verifies this.
+ if (base::ContainsKey(capabilities_, kCapabilityBodyHyperlinks)) {
+ body << "<a href=\"" << spec << "\">" << url_display_text << "</a>";
+ } else {
+ body << url_display_text;
+ }
+ } else if (!notification->context_message().empty()) {
+ std::string context =
+ base::UTF16ToUTF8(notification->context_message());
+ if (body_markup)
+ EscapeBodyText(&context);
Peter Beverloo 2017/05/15 22:43:26 Is it possible for |body_markup| to be FALSE but k
Tom (Use chromium acct) 2017/05/16 04:43:34 no. body-hyperlinks => body-markup
+ body << context;
+ }
+
std::string message = base::UTF16ToUTF8(notification->message());
- if (body_markup) {
- base::ReplaceSubstringsAfterOffset(&message, 0, "&", "&amp;");
- base::ReplaceSubstringsAfterOffset(&message, 0, "<", "&lt;");
- base::ReplaceSubstringsAfterOffset(&message, 0, ">", "&gt;");
- }
+ if (body_markup)
+ EscapeBodyText(&message);
+ if (body.size())
+ body << "\n";
body << message;
if (notification->type() == message_center::NOTIFICATION_TYPE_MULTIPLE) {

Powered by Google App Engine
This is Rietveld 408576698