1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef CHROME_BROWSER_NOTIFICATIONS_NOTIFICATION_H_
6 #define CHROME_BROWSER_NOTIFICATIONS_NOTIFICATION_H_
10 #include "base/basictypes.h"
11 #include "base/memory/scoped_ptr.h"
12 #include "base/strings/string16.h"
13 #include "base/values.h"
14 #include "chrome/browser/notifications/notification_delegate.h"
15 #include "ui/message_center/notification.h"
16 #include "ui/message_center/notification_types.h"
23 // Representation of a notification to be shown to the user.
24 class Notification
: public message_center::Notification
{
26 Notification(const GURL
& origin_url
,
27 const base::string16
& title
,
28 const base::string16
& body
,
29 const gfx::Image
& icon
,
30 const base::string16
& display_source
,
31 const std::string
& tag
,
32 NotificationDelegate
* delegate
);
35 message_center::NotificationType type
,
36 const GURL
& origin_url
,
37 const base::string16
& title
,
38 const base::string16
& body
,
39 const gfx::Image
& icon
,
40 const message_center::NotifierId
& notifier_id
,
41 const base::string16
& display_source
,
42 const std::string
& tag
,
43 const message_center::RichNotificationData
& rich_notification_data
,
44 NotificationDelegate
* delegate
);
46 Notification(const std::string
& id
, const Notification
& notification
);
48 Notification(const Notification
& notification
);
49 ~Notification() override
;
50 Notification
& operator=(const Notification
& notification
);
52 // The origin URL of the script which requested the notification.
53 const GURL
& origin_url() const { return origin_url_
; }
55 // A unique identifier used to update (replace) or remove a notification.
56 const std::string
& tag() const { return tag_
; }
58 // Id of the delegate embedded inside this instance.
59 std::string
delegate_id() const { return delegate()->id(); }
61 NotificationDelegate
* delegate() const { return delegate_
.get(); }
64 // The Origin of the page/worker which created this notification.
67 // The user-supplied tag for the notification.
70 // A proxy object that allows access back to the JavaScript object that
71 // represents the notification, for firing events.
72 scoped_refptr
<NotificationDelegate
> delegate_
;
75 #endif // CHROME_BROWSER_NOTIFICATIONS_NOTIFICATION_H_