Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5215)

Unified Diff: chrome/browser/notifications/platform_notification_service_impl.cc

Issue 1026853002: Integrate the notification database with the normal code path. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@n-db-ConfirmShow
Patch Set: android part Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..c698e375a8d244e8d18515b67ec6adfee48a5871 100644
--- a/chrome/browser/notifications/platform_notification_service_impl.cc
+++ b/chrome/browser/notifications/platform_notification_service_impl.cc
@@ -36,6 +36,10 @@
#include "extensions/common/permissions/permissions_data.h"
#endif
+#if defined(OS_ANDROID)
+#include "base/strings/string_number_conversions.h"
+#endif
+
using content::BrowserThread;
using message_center::NotifierId;
@@ -59,25 +63,6 @@ PlatformNotificationServiceImpl::PlatformNotificationServiceImpl()
PlatformNotificationServiceImpl::~PlatformNotificationServiceImpl() {}
-void PlatformNotificationServiceImpl::OnPersistentNotificationClick(
- content::BrowserContext* browser_context,
- int64 service_worker_registration_id,
- const std::string& 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,
- origin,
- service_worker_registration_id,
- notification_id,
- notification_data,
- callback);
-}
-
blink::WebNotificationPermission
PlatformNotificationServiceImpl::CheckPermissionOnUIThread(
content::BrowserContext* browser_context,
@@ -218,7 +203,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 +213,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 +230,30 @@ 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);
+#if defined(OS_ANDROID)
+ // TODO(peter): Remove this conversion when the notification ids are being
+ // generated by the caller of this method.
+ std::string textual_persistent_notification_id =
+ base::Int64ToString(persistent_notification_id);
GetNotificationUIManager()->CancelById(
johnme 2015/04/08 17:33:32 Eww eww eww. CancelById takes a delegate_id (rando
Peter Beverloo 2015/04/08 18:57:48 This is a strictly temporary measure which will go
johnme 2015/04/09 10:06:11 Fine. Added a task to the spreadsheet.
- persistent_notification_id, NotificationUIManager::GetProfileID(profile));
+ textual_persistent_notification_id,
+ NotificationUIManager::GetProfileID(profile));
+#else
+ auto iter = persistent_notifications_.find(persistent_notification_id);
+ if (iter == persistent_notifications_.end())
+ return;
+
+ GetNotificationUIManager()->CancelById(
+ iter->second, NotificationUIManager::GetProfileID(profile));
+
+ persistent_notifications_.erase(iter);
+#endif // defined(OS_ANDROID)
}
Notification PlatformNotificationServiceImpl::CreateNotificationFromData(

Powered by Google App Engine
This is Rietveld 408576698