Chromium Code Reviews| Index: chrome/browser/notifications/platform_notification_service_impl.cc |
| diff --git a/chrome/browser/notifications/platform_notification_service_impl.cc b/chrome/browser/notifications/platform_notification_service_impl.cc |
| index 8b8136942c41f37b3988226f8d5eb8a3a393cb3c..bce7a357724ef76d30282b9300d744d64d232d5b 100644 |
| --- a/chrome/browser/notifications/platform_notification_service_impl.cc |
| +++ b/chrome/browser/notifications/platform_notification_service_impl.cc |
| @@ -61,20 +61,16 @@ PlatformNotificationServiceImpl::~PlatformNotificationServiceImpl() {} |
| void PlatformNotificationServiceImpl::OnPersistentNotificationClick( |
| content::BrowserContext* browser_context, |
| - int64 service_worker_registration_id, |
| - const std::string& notification_id, |
| + int64_t persistent_notification_id, |
| const GURL& origin, |
| - const content::PlatformNotificationData& notification_data, |
| const base::Callback<void(content::PersistentNotificationStatus)>& |
| callback) const { |
| DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| content::NotificationEventDispatcher::GetInstance() |
| ->DispatchNotificationClickEvent( |
| browser_context, |
| + persistent_notification_id, |
| origin, |
| - service_worker_registration_id, |
| - notification_id, |
| - notification_data, |
| callback); |
| } |
| @@ -218,7 +214,7 @@ void PlatformNotificationServiceImpl::DisplayNotification( |
| void PlatformNotificationServiceImpl::DisplayPersistentNotification( |
| content::BrowserContext* browser_context, |
| - int64 service_worker_registration_id, |
| + int64_t persistent_notification_id, |
| const GURL& origin, |
| const SkBitmap& icon, |
| const content::PlatformNotificationData& notification_data) { |
| @@ -228,14 +224,15 @@ void PlatformNotificationServiceImpl::DisplayPersistentNotification( |
| DCHECK(profile); |
| PersistentNotificationDelegate* delegate = new PersistentNotificationDelegate( |
| - browser_context, |
| - service_worker_registration_id, |
| - origin, |
| - notification_data); |
| + browser_context, persistent_notification_id, origin); |
| Notification notification = CreateNotificationFromData( |
| profile, origin, icon, notification_data, delegate); |
| + // TODO(peter): Remove this mapping when we have reliable id generation for |
| + // the message_center::Notification objects. |
| + persistent_notifications_[persistent_notification_id] = notification.id(); |
| + |
| GetNotificationUIManager()->Add(notification, profile); |
| profile->GetHostContentSettingsMap()->UpdateLastUsage( |
| @@ -244,14 +241,24 @@ void PlatformNotificationServiceImpl::DisplayPersistentNotification( |
| void PlatformNotificationServiceImpl::ClosePersistentNotification( |
| content::BrowserContext* browser_context, |
| - const std::string& persistent_notification_id) { |
| + int64_t persistent_notification_id) { |
| DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| Profile* profile = Profile::FromBrowserContext(browser_context); |
| DCHECK(profile); |
| + auto iter = persistent_notifications_.find(persistent_notification_id); |
| + if (iter == persistent_notifications_.end()) { |
| +#if defined(OS_ANDROID) |
| + DLOG(ERROR) << "Implement Android behavior"; |
|
johnme
2015/04/02 17:21:06
Did this use to work before? Would it be hard to k
Peter Beverloo
2015/04/07 17:46:11
This is working now.
|
| +#endif |
| + return; |
| + } |
| + |
| GetNotificationUIManager()->CancelById( |
| - persistent_notification_id, NotificationUIManager::GetProfileID(profile)); |
| + iter->second, NotificationUIManager::GetProfileID(profile)); |
| + |
| + persistent_notifications_.erase(iter); |
| } |
| Notification PlatformNotificationServiceImpl::CreateNotificationFromData( |