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

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

Issue 1814923002: Nuke NotificationUIManager from PlatformNotificationServiceImpl (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@profile_manager_load
Patch Set: Rebase Created 4 years, 9 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 542f8b4ecf8e3e7deb1570c172a7823fb87441b8..db4a9620bce2954a9ce64739003574bd2edf808a 100644
--- a/chrome/browser/notifications/platform_notification_service_impl.cc
+++ b/chrome/browser/notifications/platform_notification_service_impl.cc
@@ -16,6 +16,7 @@
#include "chrome/browser/browser_process.h"
#include "chrome/browser/content_settings/host_content_settings_map_factory.h"
#include "chrome/browser/notifications/desktop_notification_profile_util.h"
+#include "chrome/browser/notifications/notification_display_service_factory.h"
#include "chrome/browser/notifications/notification_object_proxy.h"
#include "chrome/browser/notifications/notification_ui_manager.h"
#include "chrome/browser/notifications/persistent_notification_delegate.h"
@@ -89,9 +90,11 @@ void OnCloseEventDispatchComplete(
PERSISTENT_NOTIFICATION_STATUS_MAX);
}
-void CancelNotification(const std::string& id, ProfileID profile_id) {
- PlatformNotificationServiceImpl::GetInstance()
- ->GetNotificationUIManager()->CancelById(id, profile_id);
+void CancelNotification(const std::string& notification_id,
+ std::string profile_id,
+ bool incognito) {
+ // We are going to need to load the profile from the id and call close
+ // NotificationDisplayServiceFactory::GetForProfile(profile)->Close(id);
}
// Callback to run once the profile has been loaded in order to perform a
@@ -143,10 +146,7 @@ PlatformNotificationServiceImpl::GetInstance() {
return base::Singleton<PlatformNotificationServiceImpl>::get();
}
-PlatformNotificationServiceImpl::PlatformNotificationServiceImpl()
- : native_notification_ui_manager_(
- NotificationUIManager::CreateNativeNotificationManager()),
- notification_ui_manager_for_tests_(nullptr) {}
+PlatformNotificationServiceImpl::PlatformNotificationServiceImpl() {}
PlatformNotificationServiceImpl::~PlatformNotificationServiceImpl() {}
@@ -352,13 +352,14 @@ void PlatformNotificationServiceImpl::DisplayNotification(
new NotificationObjectProxy(browser_context, std::move(delegate));
Notification notification = CreateNotificationFromData(
profile, origin, notification_data, notification_resources, proxy);
+ NotificationDisplayServiceFactory::GetForProfile(profile)->Display(
+ notification);
- GetNotificationUIManager()->Add(notification, profile);
if (cancel_callback)
- *cancel_callback =
- base::Bind(&CancelNotification,
- notification.delegate_id(),
- NotificationUIManager::GetProfileID(profile));
+ *cancel_callback = base::Bind(
+ &CancelNotification, notification.delegate_id(),
+ profile->GetPath().BaseName().value(), // This will fail on Windows
+ profile->IsOffTheRecord());
HostContentSettingsMapFactory::GetForProfile(profile)->UpdateLastUsage(
origin, origin, CONTENT_SETTINGS_TYPE_NOTIFICATIONS);
@@ -389,7 +390,9 @@ void PlatformNotificationServiceImpl::DisplayPersistentNotification(
// the message_center::Notification objects.
persistent_notifications_[persistent_notification_id] = notification.id();
- GetNotificationUIManager()->Add(notification, profile);
+ NotificationDisplayServiceFactory::GetForProfile(profile)->Display(
+ notification);
+
content::RecordAction(
base::UserMetricsAction("Notifications.Persistent.Shown"));
@@ -410,23 +413,24 @@ void PlatformNotificationServiceImpl::ClosePersistentNotification(
#if defined(OS_ANDROID)
bool cancel_by_persistent_id = true;
#else
- bool cancel_by_persistent_id = (native_notification_ui_manager_ != nullptr);
+ bool cancel_by_persistent_id =
+ NotificationDisplayServiceFactory::GetForProfile(profile)
+ ->SupportsNotificationCenter();
#endif
if (cancel_by_persistent_id) {
// TODO(peter): Remove this conversion when the notification ids are being
// generated by the caller of this method.
- GetNotificationUIManager()->CancelById(
- base::Int64ToString(persistent_notification_id),
- NotificationUIManager::GetProfileID(profile));
+ NotificationDisplayServiceFactory::GetForProfile(profile)->Close(
+ base::Int64ToString(persistent_notification_id));
}
auto iter = persistent_notifications_.find(persistent_notification_id);
if (iter == persistent_notifications_.end())
return;
- GetNotificationUIManager()->CancelById(
- iter->second, NotificationUIManager::GetProfileID(profile));
+ NotificationDisplayServiceFactory::GetForProfile(profile)->Close(
+ iter->second);
persistent_notifications_.erase(iter);
}
@@ -441,16 +445,9 @@ bool PlatformNotificationServiceImpl::GetDisplayedPersistentNotifications(
if (!profile || profile->AsTestingProfile())
return false; // Tests will not have a message center.
- // There may not be a notification ui manager when another feature erroneously
- // instantiates a storage partition when the browser process is shutting down.
- // TODO(peter): Remove in favor of a DCHECK when crbug.com/546745 is fixed.
- NotificationUIManager* ui_manager = GetNotificationUIManager();
- if (!ui_manager)
- return false;
-
// TODO(peter): Filter for persistent notifications only.
- *displayed_notifications = ui_manager->GetAllIdsByProfile(
- NotificationUIManager::GetProfileID(profile));
+ *displayed_notifications =
+ NotificationDisplayServiceFactory::GetForProfile(profile)->GetDisplayed();
return true;
#else
@@ -512,18 +509,6 @@ Notification PlatformNotificationServiceImpl::CreateNotificationFromData(
return notification;
}
-NotificationUIManager*
-PlatformNotificationServiceImpl::GetNotificationUIManager() const {
- if (notification_ui_manager_for_tests_)
- return notification_ui_manager_for_tests_;
-
- if (native_notification_ui_manager_) {
- return native_notification_ui_manager_.get();
- }
-
- return g_browser_process->notification_ui_manager();
-}
-
void PlatformNotificationServiceImpl::OpenNotificationSettings(
BrowserContext* browser_context) {
#if defined(OS_ANDROID)
@@ -545,11 +530,6 @@ void PlatformNotificationServiceImpl::OpenNotificationSettings(
#endif // defined(OS_ANDROID)
}
-void PlatformNotificationServiceImpl::SetNotificationUIManagerForTesting(
- NotificationUIManager* manager) {
- notification_ui_manager_for_tests_ = manager;
-}
-
base::string16 PlatformNotificationServiceImpl::DisplayNameForContextMessage(
Profile* profile,
const GURL& origin) const {

Powered by Google App Engine
This is Rietveld 408576698