Index: chrome/browser/notifications/notification.cc |
diff --git a/chrome/browser/notifications/notification.cc b/chrome/browser/notifications/notification.cc |
index 3e24b23e2d353f65a2e006e74c50e750bacd42ec..592ca43ec26047f435c558981d540f24e6f23411 100644 |
--- a/chrome/browser/notifications/notification.cc |
+++ b/chrome/browser/notifications/notification.cc |
@@ -4,18 +4,28 @@ |
#include "chrome/browser/notifications/notification.h" |
+#include "base/string_util.h" |
#include "chrome/browser/notifications/desktop_notification_service.h" |
+#include "ui/message_center/message_center_util.h" |
+#include "ui/webui/web_ui_util.h" |
Notification::Notification(const GURL& origin_url, |
const GURL& content_url, |
const string16& display_source, |
const string16& replace_id, |
NotificationDelegate* delegate) |
- : type_(message_center::NOTIFICATION_TYPE_SIMPLE), |
+ : message_center::Notification(message_center::NOTIFICATION_TYPE_SIMPLE, |
+ delegate->id(), |
+ EmptyString16(), |
+ EmptyString16(), |
+ gfx::Image(), |
+ display_source, |
+ origin_url.spec(), |
+ NULL, |
+ delegate), |
origin_url_(origin_url), |
is_html_(true), |
content_url_(content_url), |
- display_source_(display_source), |
replace_id_(replace_id), |
delegate_(delegate) {} |
@@ -27,13 +37,18 @@ Notification::Notification(const GURL& origin_url, |
const string16& display_source, |
const string16& replace_id, |
NotificationDelegate* delegate) |
- : type_(message_center::NOTIFICATION_TYPE_SIMPLE), |
+ : message_center::Notification(message_center::NOTIFICATION_TYPE_SIMPLE, |
+ delegate->id(), |
+ title, |
+ body, |
+ gfx::Image(), |
+ display_source, |
+ origin_url.spec(), |
+ NULL, |
+ delegate), |
origin_url_(origin_url), |
icon_url_(icon_url), |
is_html_(false), |
- title_(title), |
- body_(body), |
- display_source_(display_source), |
replace_id_(replace_id), |
delegate_(delegate) { |
// "Upconvert" the string parameters to a data: URL. |
@@ -51,24 +66,63 @@ Notification::Notification(message_center::NotificationType type, |
const string16& replace_id, |
const DictionaryValue* optional_fields, |
NotificationDelegate* delegate) |
- : type_(type), |
+ : message_center::Notification(type, |
+ delegate->id(), |
+ title, |
+ body, |
+ gfx::Image(), |
+ display_source, |
+ origin_url.spec(), |
+ optional_fields, |
+ delegate), |
origin_url_(origin_url), |
icon_url_(icon_url), |
is_html_(false), |
- title_(title), |
- body_(body), |
- display_source_(display_source), |
replace_id_(replace_id), |
- optional_fields_(NULL), |
delegate_(delegate) { |
if (optional_fields) |
- optional_fields_.reset(optional_fields->DeepCopy()); |
+ ApplyOptionalFields(optional_fields); |
// "Upconvert" the string parameters to a data: URL. Some balloon views |
// require content URL to render anything, so this serves as a backup. |
content_url_ = GURL(DesktopNotificationService::CreateDataUrl( |
icon_url, title, body, dir)); |
} |
+Notification::Notification( |
+ message_center::NotificationType type, |
+ const GURL& origin_url, |
+ const string16& title, |
+ const string16& body, |
+ const gfx::Image& icon, |
+ WebKit::WebTextDirection dir, |
+ const string16& display_source, |
+ const string16& replace_id, |
+ const message_center::RichNotificationData& rich_notification_data, |
+ NotificationDelegate* delegate) |
+ : message_center::Notification(type, |
+ delegate->id(), |
+ title, |
+ body, |
+ icon, |
+ display_source, |
+ origin_url.spec(), |
+ rich_notification_data, |
+ delegate), |
+ origin_url_(origin_url), |
+ is_html_(false), |
+ replace_id_(replace_id), |
+ delegate_(delegate) { |
+ if (!message_center::IsRichNotificationEnabled()) { |
+ // "Upconvert" the string parameters to a data: URL. Some balloon views |
+ // require content URL to render anything, so this serves as a backup. |
+ GURL icon_url; |
+ if (!icon.IsEmpty()) |
+ icon_url_ = GURL(webui::GetBitmapDataUrl(*icon.ToSkBitmap())); |
+ content_url_ = GURL( |
+ DesktopNotificationService::CreateDataUrl(icon_url, title, body, dir)); |
+ } |
+} |
+ |
Notification::Notification(const GURL& origin_url, |
const gfx::Image& icon, |
const string16& title, |
@@ -77,55 +131,60 @@ Notification::Notification(const GURL& origin_url, |
const string16& display_source, |
const string16& replace_id, |
NotificationDelegate* delegate) |
- : type_(message_center::NOTIFICATION_TYPE_SIMPLE), |
+ : message_center::Notification(message_center::NOTIFICATION_TYPE_SIMPLE, |
+ delegate->id(), |
+ title, |
+ body, |
+ icon, |
+ display_source, |
+ origin_url.spec(), |
+ NULL, |
+ delegate), |
origin_url_(origin_url), |
- icon_(icon), |
is_html_(false), |
- title_(title), |
- body_(body), |
- display_source_(display_source), |
replace_id_(replace_id), |
delegate_(delegate) {} |
Notification::Notification(const Notification& notification) |
- : type_(notification.type()), |
+ : message_center::Notification(notification), |
origin_url_(notification.origin_url()), |
- icon_(notification.icon()), |
icon_url_(notification.icon_url()), |
is_html_(notification.is_html()), |
content_url_(notification.content_url()), |
- title_(notification.title()), |
- body_(notification.body()), |
- display_source_(notification.display_source()), |
+ button_one_icon_url_(notification.button_one_icon_url()), |
+ button_two_icon_url_(notification.button_two_icon_url()), |
+ image_url_(notification.image_url()), |
replace_id_(notification.replace_id()), |
- delegate_(notification.delegate()) { |
- if (notification.optional_fields()) |
- optional_fields_.reset(notification.optional_fields()->DeepCopy()); |
-} |
+ delegate_(notification.delegate()) {} |
Notification::~Notification() {} |
Notification& Notification::operator=(const Notification& notification) { |
- type_ = notification.type(); |
+ message_center::Notification::operator=(notification); |
origin_url_ = notification.origin_url(); |
- icon_ = notification.icon_; |
icon_url_ = notification.icon_url(); |
is_html_ = notification.is_html(); |
content_url_ = notification.content_url(); |
- title_ = notification.title(); |
- body_ = notification.body(); |
- display_source_ = notification.display_source(); |
+ button_one_icon_url_ = notification.button_one_icon_url(); |
+ button_two_icon_url_ = notification.button_two_icon_url(); |
+ image_url_ = notification.image_url(); |
replace_id_ = notification.replace_id(); |
- if (notification.optional_fields()) |
- optional_fields_.reset(notification.optional_fields()->DeepCopy()); |
- else |
- optional_fields_.reset(); |
delegate_ = notification.delegate(); |
return *this; |
} |
-void Notification::DisableTimeout() { |
- if (!optional_fields_.get()) |
- optional_fields_.reset(new base::DictionaryValue()); |
- optional_fields_->SetBoolean(message_center::kPrivateNeverTimeoutKey, true); |
+void Notification::ApplyOptionalFields(const DictionaryValue* optional_fields) { |
+ if (!optional_fields) |
+ return; |
+ |
+ string16 url; |
+ if (optional_fields->GetString(message_center::kButtonOneIconUrlKey, &url)) { |
+ button_one_icon_url_ = GURL(url); |
+ } |
+ if (optional_fields->GetString(message_center::kButtonTwoIconUrlKey, &url)) { |
+ button_two_icon_url_ = GURL(url); |
+ } |
+ if (optional_fields->GetString(message_center::kImageUrlKey, &url)) { |
+ image_url_ = GURL(url); |
+ } |
} |