// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "chrome/browser/notifications/notification.h" #include "chrome/browser/notifications/desktop_notification_service.h" Notification::Notification(const GURL& origin_url, const GURL& content_url, const string16& display_source, const string16& replace_id, NotificationDelegate* delegate) : type_(ui::notifications::NOTIFICATION_TYPE_SIMPLE), origin_url_(origin_url), is_html_(true), content_url_(content_url), display_source_(display_source), replace_id_(replace_id), delegate_(delegate) { } Notification::Notification(const GURL& origin_url, const GURL& icon_url, const string16& title, const string16& body, WebKit::WebTextDirection dir, const string16& display_source, const string16& replace_id, NotificationDelegate* delegate) : type_(ui::notifications::NOTIFICATION_TYPE_SIMPLE), 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. content_url_ = GURL(DesktopNotificationService::CreateDataUrl( icon_url, title, body, dir)); } Notification::Notification(ui::notifications::NotificationType type, const GURL& icon_url, const string16& title, const string16& body, WebKit::WebTextDirection dir, const string16& display_source, const string16& replace_id, const DictionaryValue* optional_fields, NotificationDelegate* delegate) : type_(type), origin_url_(GURL()), 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()); } Notification::Notification(const GURL& origin_url, const gfx::ImageSkia& icon, const string16& title, const string16& body, WebKit::WebTextDirection dir, const string16& display_source, const string16& replace_id, NotificationDelegate* delegate) : type_(ui::notifications::NOTIFICATION_TYPE_SIMPLE), 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()), 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()), replace_id_(notification.replace_id()), delegate_(notification.delegate()) { if (notification.optional_fields()) optional_fields_.reset(notification.optional_fields()->DeepCopy()); } Notification::~Notification() {} Notification& Notification::operator=(const Notification& notification) { type_ = notification.type(); 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(); 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; }