Index: chrome/browser/notifications/message_center_notification_manager.cc |
diff --git a/chrome/browser/notifications/message_center_notification_manager.cc b/chrome/browser/notifications/message_center_notification_manager.cc |
index d1e92c65feff1c995512147ac402992486ff3591..9ec6b775ffa284ffdb6cc2cc3435d703cec19c5d 100644 |
--- a/chrome/browser/notifications/message_center_notification_manager.cc |
+++ b/chrome/browser/notifications/message_center_notification_manager.cc |
@@ -9,7 +9,6 @@ |
#include "base/logging.h" |
#include "base/memory/ptr_util.h" |
-#include "base/stl_util.h" |
#include "base/strings/stringprintf.h" |
#include "build/build_config.h" |
#include "chrome/browser/extensions/api/notification_provider/notification_provider_api.h" |
@@ -76,11 +75,9 @@ MessageCenterNotificationManager::MessageCenterNotificationManager( |
} |
MessageCenterNotificationManager::~MessageCenterNotificationManager() { |
- message_center_->SetNotifierSettingsProvider(NULL); |
+ message_center_->SetNotifierSettingsProvider(nullptr); |
message_center_->RemoveObserver(this); |
- base::STLDeleteContainerPairSecondPointers(profile_notifications_.begin(), |
- profile_notifications_.end()); |
profile_notifications_.clear(); |
} |
@@ -92,8 +89,9 @@ void MessageCenterNotificationManager::Add(const Notification& notification, |
if (Update(notification, profile)) |
return; |
- ProfileNotification* profile_notification = |
- new ProfileNotification(profile, notification); |
+ std::unique_ptr<ProfileNotification> profile_notification_ptr = |
+ base::MakeUnique<ProfileNotification>(profile, notification); |
+ ProfileNotification* profile_notification = profile_notification_ptr.get(); |
ExtensionWelcomeNotificationFactory::GetForBrowserContext(profile)-> |
ShowWelcomeNotificationIfNecessary(profile_notification->notification()); |
@@ -102,7 +100,7 @@ void MessageCenterNotificationManager::Add(const Notification& notification, |
// via the notification within a ProfileNotification object or the profile ID |
// will not be correctly set for ChromeOS. |
// Takes ownership of profile_notification. |
- AddProfileNotification(profile_notification); |
+ AddProfileNotification(std::move(profile_notification_ptr)); |
// TODO(liyanhou): Change the logic to only send notifications to one party. |
// Currently, if there is an app with notificationProvider permission, |
@@ -134,9 +132,9 @@ bool MessageCenterNotificationManager::Update(const Notification& notification, |
// Since tag is provided by arbitrary JS, we need to use origin_url |
// (which is an app url in case of app/extension) to scope the tags |
// in the given profile. |
- for (NotificationMap::iterator iter = profile_notifications_.begin(); |
+ for (auto iter = profile_notifications_.begin(); |
iter != profile_notifications_.end(); ++iter) { |
- ProfileNotification* old_notification = (*iter).second; |
+ ProfileNotification* old_notification = (*iter).second.get(); |
if (old_notification->notification().tag() == tag && |
old_notification->notification().origin_url() == origin_url && |
old_notification->profile_id() == |
@@ -147,14 +145,13 @@ bool MessageCenterNotificationManager::Update(const Notification& notification, |
// Add/remove notification in the local list but just update the same |
// one in MessageCenter. |
- ProfileNotification* new_notification = |
- new ProfileNotification(profile, notification); |
+ std::unique_ptr<ProfileNotification> new_notification = |
+ base::MakeUnique<ProfileNotification>(profile, notification); |
+ const Notification& notification = new_notification->notification(); |
// Delete the old one after the new one is created to ensure we don't run |
// out of KeepAlives. |
- delete old_notification; |
profile_notifications_.erase(old_id); |
- profile_notifications_[new_notification->notification().id()] = |
- new_notification; |
+ profile_notifications_[notification.id()] = std::move(new_notification); |
// TODO(liyanhou): Add routing updated notifications to alternative |
// providers. |
@@ -168,8 +165,7 @@ bool MessageCenterNotificationManager::Update(const Notification& notification, |
// center via the notification within a ProfileNotification object or the |
// profile ID will not be correctly set for ChromeOS. |
message_center_->UpdateNotification( |
- old_id, base::MakeUnique<message_center::Notification>( |
- new_notification->notification())); |
+ old_id, base::MakeUnique<message_center::Notification>(notification)); |
return true; |
} |
@@ -185,10 +181,9 @@ const Notification* MessageCenterNotificationManager::FindById( |
std::string profile_notification_id = |
ProfileNotification::GetProfileNotificationId(delegate_id, profile_id); |
- NotificationMap::const_iterator iter = |
- profile_notifications_.find(profile_notification_id); |
+ auto iter = profile_notifications_.find(profile_notification_id); |
if (iter == profile_notifications_.end()) |
- return NULL; |
+ return nullptr; |
return &(iter->second->notification()); |
} |
@@ -202,12 +197,11 @@ bool MessageCenterNotificationManager::CancelById( |
ProfileNotification::GetProfileNotificationId(delegate_id, profile_id); |
// See if this ID hasn't been shown yet. |
// If it has been shown, remove it. |
- NotificationMap::iterator iter = |
- profile_notifications_.find(profile_notification_id); |
+ auto iter = profile_notifications_.find(profile_notification_id); |
if (iter == profile_notifications_.end()) |
return false; |
- RemoveProfileNotification(iter->second); |
+ RemoveProfileNotification(iter->second.get()); |
message_center_->RemoveNotification(profile_notification_id, |
/* by_user */ false); |
return true; |
@@ -246,12 +240,12 @@ bool MessageCenterNotificationManager::CancelAllBySourceOrigin( |
// because there may be multiple notifications from the same source. |
bool removed = false; |
- for (NotificationMap::iterator loopiter = profile_notifications_.begin(); |
- loopiter != profile_notifications_.end(); ) { |
- NotificationMap::iterator curiter = loopiter++; |
+ for (auto loopiter = profile_notifications_.begin(); |
+ loopiter != profile_notifications_.end();) { |
+ auto curiter = loopiter++; |
if ((*curiter).second->notification().origin_url() == source) { |
const std::string id = curiter->first; |
- RemoveProfileNotification(curiter->second); |
+ RemoveProfileNotification(curiter->second.get()); |
message_center_->RemoveNotification(id, /* by_user */ false); |
removed = true; |
} |
@@ -264,12 +258,12 @@ bool MessageCenterNotificationManager::CancelAllByProfile( |
// Same pattern as CancelAllBySourceOrigin. |
bool removed = false; |
- for (NotificationMap::iterator loopiter = profile_notifications_.begin(); |
- loopiter != profile_notifications_.end(); ) { |
- NotificationMap::iterator curiter = loopiter++; |
+ for (auto loopiter = profile_notifications_.begin(); |
+ loopiter != profile_notifications_.end();) { |
+ auto curiter = loopiter++; |
if (profile_id == (*curiter).second->profile_id()) { |
const std::string id = curiter->first; |
- RemoveProfileNotification(curiter->second); |
+ RemoveProfileNotification(curiter->second.get()); |
message_center_->RemoveNotification(id, /* by_user */ false); |
removed = true; |
} |
@@ -287,9 +281,9 @@ void MessageCenterNotificationManager::CancelAll() { |
void MessageCenterNotificationManager::OnNotificationRemoved( |
const std::string& id, |
bool by_user) { |
- NotificationMap::const_iterator iter = profile_notifications_.find(id); |
+ auto iter = profile_notifications_.find(id); |
if (iter != profile_notifications_.end()) |
- RemoveProfileNotification(iter->second); |
+ RemoveProfileNotification(iter->second.get()); |
} |
void MessageCenterNotificationManager::OnCenterVisibilityChanged( |
@@ -348,28 +342,27 @@ void MessageCenterNotificationManager::AddNotificationToAlternateProvider( |
} |
void MessageCenterNotificationManager::AddProfileNotification( |
- ProfileNotification* profile_notification) { |
+ std::unique_ptr<ProfileNotification> profile_notification) { |
const Notification& notification = profile_notification->notification(); |
std::string id = notification.id(); |
// Notification ids should be unique. |
DCHECK(profile_notifications_.find(id) == profile_notifications_.end()); |
- profile_notifications_[id] = profile_notification; |
+ profile_notifications_[id] = std::move(profile_notification); |
} |
void MessageCenterNotificationManager::RemoveProfileNotification( |
ProfileNotification* profile_notification) { |
std::string id = profile_notification->notification().id(); |
profile_notifications_.erase(id); |
- delete profile_notification; |
Nico
2016/09/22 15:56:11
I found this one confusing. RemoveProfileNotificat
Avi (use Gerrit)
2016/09/22 19:17:17
Done.
|
} |
ProfileNotification* MessageCenterNotificationManager::FindProfileNotification( |
const std::string& id) const { |
- NotificationMap::const_iterator iter = profile_notifications_.find(id); |
+ auto iter = profile_notifications_.find(id); |
if (iter == profile_notifications_.end()) |
- return NULL; |
+ return nullptr; |
- return (*iter).second; |
+ return (*iter).second.get(); |
} |
std::string |