12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifndef UI_MESSAGE_CENTER_NOTIFICATION_H_ 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define UI_MESSAGE_CENTER_NOTIFICATION_H_ 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <string> 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <vector> 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 117d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "base/strings/string16.h" 12eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/time/time.h" 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/values.h" 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/gfx/image/image.h" 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/message_center/message_center_export.h" 1690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "ui/message_center/notification_delegate.h" 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/message_center/notification_types.h" 18424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)#include "ui/message_center/notifier_settings.h" 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace message_center { 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)struct MESSAGE_CENTER_EXPORT NotificationItem { 235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::string16 title; 245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::string16 message; 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) NotificationItem(const base::string16& title, const base::string16& message); 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)struct MESSAGE_CENTER_EXPORT ButtonInfo { 305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::string16 title; 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) gfx::Image icon; 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ButtonInfo(const base::string16& title); 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 36868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)class MESSAGE_CENTER_EXPORT RichNotificationData { 37868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) public: 38868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) RichNotificationData(); 39868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) RichNotificationData(const RichNotificationData& other); 40868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ~RichNotificationData(); 41868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 42868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) int priority; 43868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) bool never_timeout; 44868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) base::Time timestamp; 455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::string16 context_message; 46868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) gfx::Image image; 475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) gfx::Image small_image; 48868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) std::vector<NotificationItem> items; 49a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch int progress; 50868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) std::vector<ButtonInfo> buttons; 51424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) bool should_make_spoken_feedback_for_popup_updates; 528bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) bool clickable; 53868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)}; 54868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class MESSAGE_CENTER_EXPORT Notification { 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Notification(NotificationType type, 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::string& id, 595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::string16& title, 605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::string16& message, 61868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) const gfx::Image& icon, 625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::string16& display_source, 63424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) const NotifierId& notifier_id, 64868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) const RichNotificationData& optional_fields, 65868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) NotificationDelegate* delegate); 66868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 67868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) Notification(const Notification& other); 68f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual ~Notification(); 702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 71c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Copies the internal on-memory state from |base|, i.e. shown_as_popup, 725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // is_read, and never_timeout. 73c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void CopyState(Notification* base); 74c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) NotificationType type() const { return type_; } 76558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch void set_type(NotificationType type) { type_ = type; } 77558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 78f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // Uniquely identifies a notification in the message center. For 79f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // notification front ends that support multiple profiles, this id should 80f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // identify a unique profile + frontend_notification_id combination. You can 81f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // Use this id against the MessageCenter interface but not the 82f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // NotificationUIManager interface. 832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::string& id() const { return id_; } 84558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::string16& title() const { return title_; } 865d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void set_title(const base::string16& title) { title_ = title; } 87558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 885d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::string16& message() const { return message_; } 895d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void set_message(const base::string16& message) { message_ = message; } 90868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 91868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // A display string for the source of the notification. 925d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::string16& display_source() const { return display_source_; } 93424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 94424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) const NotifierId& notifier_id() const { return notifier_id_; } 952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 96a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void set_profile_id(const std::string& profile_id) { 97a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) notifier_id_.profile_id = profile_id; 98a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) } 99a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 1002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Begin unpacked values from optional_fields. 101868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) int priority() const { return optional_fields_.priority; } 102558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch void set_priority(int priority) { optional_fields_.priority = priority; } 103558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 104868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) base::Time timestamp() const { return optional_fields_.timestamp; } 105558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch void set_timestamp(const base::Time& timestamp) { 106558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch optional_fields_.timestamp = timestamp; 107558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch } 108558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 1095d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::string16& context_message() const { 11058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) return optional_fields_.context_message; 11158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) } 1125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void set_context_message(const base::string16& context_message) { 11358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) optional_fields_.context_message = context_message; 11458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) } 11558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 116868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) const std::vector<NotificationItem>& items() const { 117868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) return optional_fields_.items; 118868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) } 119558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch void set_items(const std::vector<NotificationItem>& items) { 120558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch optional_fields_.items = items; 121558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch } 122558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 123a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch int progress() const { return optional_fields_.progress; } 124558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch void set_progress(int progress) { optional_fields_.progress = progress; } 1252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // End unpacked values. 1262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Images fetched asynchronously. 1282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const gfx::Image& icon() const { return icon_; } 1292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void set_icon(const gfx::Image& icon) { icon_ = icon; } 1302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 131868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) const gfx::Image& image() const { return optional_fields_.image; } 132868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) void set_image(const gfx::Image& image) { optional_fields_.image = image; } 1332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const gfx::Image& small_image() const { return optional_fields_.small_image; } 1355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void set_small_image(const gfx::Image& image) { 1365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) optional_fields_.small_image = image; 1375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 1385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Buttons, with icons fetched asynchronously. 140868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) const std::vector<ButtonInfo>& buttons() const { 141868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) return optional_fields_.buttons; 142868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) } 143f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) void set_buttons(const std::vector<ButtonInfo>& buttons) { 144f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) optional_fields_.buttons = buttons; 145f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) } 146868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) void SetButtonIcon(size_t index, const gfx::Image& icon); 1472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool shown_as_popup() const { return shown_as_popup_; } 1492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void set_shown_as_popup(bool shown_as_popup) { 1502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) shown_as_popup_ = shown_as_popup; 1512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Read status in the message center. 154a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) bool IsRead() const; 1552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void set_is_read(bool read) { is_read_ = read; } 1562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Used to keep the order of notifications with the same timestamp. 1582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // The notification with lesser serial_number is considered 'older'. 1592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) unsigned serial_number() { return serial_number_; } 1602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 161868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // Marks this explicitly to prevent the timeout dismiss of notification. 162868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // This is used by webkit notifications to keep the existing behavior. 163868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) void set_never_timeout(bool never_timeout) { 164868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) optional_fields_.never_timeout = never_timeout; 165868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) } 166c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 167868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) bool never_timeout() const { return optional_fields_.never_timeout; } 1688bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 1698bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) bool clickable() const { return optional_fields_.clickable; } 1708bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) void set_clickable(bool clickable) { 1718bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) optional_fields_.clickable = clickable; 1728bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) } 1738bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 174868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) NotificationDelegate* delegate() const { return delegate_.get(); } 1758bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 176868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) const RichNotificationData& rich_notification_data() const { 177868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) return optional_fields_; 178868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) } 179868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 1807d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // Set the priority to SYSTEM. The system priority user needs to call this 1817d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // method explicitly, to avoid setting it accidentally. 1827d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) void SetSystemPriority(); 1837d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 184868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // Delegate actions. 185868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) void Display() const { delegate()->Display(); } 186868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) void Error() const { delegate()->Error(); } 187868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) bool HasClickedListener() const { return delegate()->HasClickedListener(); } 188868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) void Click() const { delegate()->Click(); } 189868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) void ButtonClick(int index) const { delegate()->ButtonClick(index); } 190868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) void Close(bool by_user) const { delegate()->Close(by_user); } 1912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 192a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // Helper method to create a simple system notification. |click_callback| 1933551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // will be invoked when the notification is clicked. 1943551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) static scoped_ptr<Notification> CreateSystemNotification( 1953551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const std::string& notification_id, 1963551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const base::string16& title, 1973551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const base::string16& message, 1983551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const gfx::Image& icon, 199a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const std::string& system_component_id, 2003551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const base::Closure& click_callback); 2013551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 202868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) protected: 2036d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) Notification& operator=(const Notification& other); 2046d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 205868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // The type of notification we'd like displayed. 2062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) NotificationType type_; 207868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 2082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::string id_; 2095d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::string16 title_; 2105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::string16 message_; 211868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 212868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // Image data for the associated icon, used by Ash when available. 213868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) gfx::Image icon_; 214868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 215868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // The display string for the source of the notification. Could be 216868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // the same as origin_url_, or the name of an extension. 2175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::string16 display_source_; 218868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 219868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) private: 220424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) NotifierId notifier_id_; 2212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) unsigned serial_number_; 222868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) RichNotificationData optional_fields_; 2232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool shown_as_popup_; // True if this has been shown as a popup. 2242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool is_read_; // True if this has been seen in the message center. 2252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 22690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // A proxy object that allows access back to the JavaScript object that 22790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // represents the notification, for firing events. 22890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) scoped_refptr<NotificationDelegate> delegate_; 2292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 2302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace message_center 2322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif // UI_MESSAGE_CENTER_NOTIFICATION_H_ 234