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

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

Issue 1071773003: Remove persistent notifications from the database when they close. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@n-db-Integrate
Patch Set: 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 a68fd7a57bbb1fe0662424f69a697fda92d40b97..78d1523a4b74f8baa7bc70a14267ff953b187456 100644
--- a/chrome/browser/notifications/platform_notification_service_impl.cc
+++ b/chrome/browser/notifications/platform_notification_service_impl.cc
@@ -19,6 +19,8 @@
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/desktop_notification_delegate.h"
#include "content/public/browser/notification_event_dispatcher.h"
+#include "content/public/browser/platform_notification_context.h"
+#include "content/public/browser/storage_partition.h"
#include "content/public/common/platform_notification_data.h"
#include "net/base/net_util.h"
#include "ui/message_center/notifier_settings.h"
@@ -40,11 +42,20 @@
#include "base/strings/string_number_conversions.h"
#endif
+using content::BrowserContext;
using content::BrowserThread;
+using content::PlatformNotificationContext;
using message_center::NotifierId;
namespace {
+// Callback to provide when deleting the data associated with persistent Web
+// Notifications from the notification database.
+void OnPersistentNotificationDataDeleted(bool success) {
+ // TODO(peter): Record UMA for notification deletion requests created by the
+ // PlatformNotificationService.
+}
+
void CancelNotification(const std::string& id, ProfileID profile_id) {
PlatformNotificationServiceImpl::GetInstance()
->GetNotificationUIManager()->CancelById(id, profile_id);
@@ -64,7 +75,7 @@ PlatformNotificationServiceImpl::PlatformNotificationServiceImpl()
PlatformNotificationServiceImpl::~PlatformNotificationServiceImpl() {}
void PlatformNotificationServiceImpl::OnPersistentNotificationClick(
- content::BrowserContext* browser_context,
+ BrowserContext* browser_context,
int64_t persistent_notification_id,
const GURL& origin,
const base::Callback<void(content::PersistentNotificationStatus)>&
@@ -78,9 +89,28 @@ void PlatformNotificationServiceImpl::OnPersistentNotificationClick(
callback);
}
+void PlatformNotificationServiceImpl::OnPersistentNotificationClose(
+ BrowserContext* browser_context,
+ int64_t persistent_notification_id,
+ const GURL& origin) const {
+ DCHECK_CURRENTLY_ON(BrowserThread::UI);
+ PlatformNotificationContext* context =
+ BrowserContext::GetStoragePartitionForSite(browser_context, origin)
+ ->GetPlatformNotificationContext();
+
+ BrowserThread::PostTask(
+ BrowserThread::IO,
+ FROM_HERE,
+ base::Bind(&PlatformNotificationContext::DeleteNotificationData,
+ base::Unretained(context),
johnme 2015/04/10 11:54:39 This doesn't look safe. Possible solution: move th
dewittj 2015/04/10 17:18:30 Other classes hanging off of StoragePartition use
Peter Beverloo 2015/04/20 16:47:20 Done.
+ persistent_notification_id,
+ origin,
+ base::Bind(&OnPersistentNotificationDataDeleted)));
+}
+
blink::WebNotificationPermission
PlatformNotificationServiceImpl::CheckPermissionOnUIThread(
- content::BrowserContext* browser_context,
+ BrowserContext* browser_context,
const GURL& origin,
int render_process_id) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
@@ -190,7 +220,7 @@ PlatformNotificationServiceImpl::CheckPermissionOnIOThread(
}
void PlatformNotificationServiceImpl::DisplayNotification(
- content::BrowserContext* browser_context,
+ BrowserContext* browser_context,
const GURL& origin,
const SkBitmap& icon,
const content::PlatformNotificationData& notification_data,
@@ -217,7 +247,7 @@ void PlatformNotificationServiceImpl::DisplayNotification(
}
void PlatformNotificationServiceImpl::DisplayPersistentNotification(
- content::BrowserContext* browser_context,
+ BrowserContext* browser_context,
int64_t persistent_notification_id,
const GURL& origin,
const SkBitmap& icon,
@@ -244,7 +274,7 @@ void PlatformNotificationServiceImpl::DisplayPersistentNotification(
}
void PlatformNotificationServiceImpl::ClosePersistentNotification(
- content::BrowserContext* browser_context,
+ BrowserContext* browser_context,
int64_t persistent_notification_id) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);

Powered by Google App Engine
This is Rietveld 408576698