| 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 e4c54e7430d9f8d01001fee859ab5e2d69c42799..273dcf2c38e2fb5ecd56b792043bcbfc10911f69 100644 | 
| --- a/chrome/browser/notifications/message_center_notification_manager.cc | 
| +++ b/chrome/browser/notifications/message_center_notification_manager.cc | 
| @@ -139,7 +139,8 @@ void MessageCenterNotificationManager::Add(const Notification& notification, | 
| // route notifications to one of the apps/extensions. | 
| std::string extension_id = GetExtensionTakingOverNotifications(profile); | 
| if (!extension_id.empty()) | 
| -    AddNotificationToAlternateProvider(profile_notification, extension_id); | 
| +    AddNotificationToAlternateProvider(profile_notification->notification(), | 
| +                                       profile, extension_id); | 
|  | 
| message_center_->AddNotification(make_scoped_ptr( | 
| new message_center::Notification(profile_notification->notification()))); | 
| @@ -162,7 +163,8 @@ bool MessageCenterNotificationManager::Update(const Notification& notification, | 
| ProfileNotification* old_notification = (*iter).second; | 
| if (old_notification->notification().tag() == tag && | 
| old_notification->notification().origin_url() == origin_url && | 
| -        old_notification->profile() == profile) { | 
| +        old_notification->profile_id() == | 
| +            NotificationUIManager::GetProfileID(profile)) { | 
| // Changing the type from non-progress to progress does not count towards | 
| // the immediate update allowed in the message center. | 
| std::string old_id = old_notification->notification().id(); | 
| @@ -231,15 +233,12 @@ bool MessageCenterNotificationManager::CancelById( | 
|  | 
| std::set<std::string> | 
| MessageCenterNotificationManager::GetAllIdsByProfileAndSourceOrigin( | 
| -    Profile* profile, | 
| +    ProfileID profile_id, | 
| const GURL& source) { | 
| -  // The profile pointer can be weak, the instance may have been destroyed, so | 
| -  // no profile method should be called inside this function. | 
| - | 
| std::set<std::string> delegate_ids; | 
| for (const auto& pair : profile_notifications_) { | 
| const Notification& notification = pair.second->notification(); | 
| -    if (pair.second->profile() == profile && | 
| +    if (pair.second->profile_id() == profile_id && | 
| notification.origin_url() == source) { | 
| delegate_ids.insert(notification.delegate_id()); | 
| } | 
| @@ -249,13 +248,10 @@ MessageCenterNotificationManager::GetAllIdsByProfileAndSourceOrigin( | 
| } | 
|  | 
| std::set<std::string> MessageCenterNotificationManager::GetAllIdsByProfile( | 
| -    Profile* profile) { | 
| -  // The profile pointer can be weak, the instance may have been destroyed, so | 
| -  // no profile method should be called inside this function. | 
| - | 
| +    ProfileID profile_id) { | 
| std::set<std::string> delegate_ids; | 
| for (const auto& pair : profile_notifications_) { | 
| -    if (pair.second->profile() == profile) | 
| +    if (pair.second->profile_id() == profile_id) | 
| delegate_ids.insert(pair.second->notification().delegate_id()); | 
| } | 
|  | 
| @@ -289,8 +285,7 @@ bool MessageCenterNotificationManager::CancelAllByProfile( | 
| for (NotificationMap::iterator loopiter = profile_notifications_.begin(); | 
| loopiter != profile_notifications_.end(); ) { | 
| NotificationMap::iterator curiter = loopiter++; | 
| -    if (profile_id == NotificationUIManager::GetProfileID( | 
| -            (*curiter).second->profile())) { | 
| +    if (profile_id == (*curiter).second->profile_id()) { | 
| const std::string id = curiter->first; | 
| RemoveProfileNotification(curiter->second); | 
| message_center_->RemoveNotification(id, /* by_user */ false); | 
| @@ -364,18 +359,16 @@ MessageCenterNotificationManager::GetMessageCenterNotificationIdForTest( | 
| // private | 
|  | 
| void MessageCenterNotificationManager::AddNotificationToAlternateProvider( | 
| -    ProfileNotification* profile_notification, | 
| +    const Notification& notification, | 
| +    Profile* profile, | 
| const std::string& extension_id) const { | 
| -  const Notification& notification = profile_notification->notification(); | 
| - | 
| // Convert data from Notification type to NotificationOptions type. | 
| extensions::api::notifications::NotificationOptions options; | 
| NotificationConversionHelper::NotificationToNotificationOptions(notification, | 
| &options); | 
|  | 
| // Send the notification to the alternate provider extension/app. | 
| -  extensions::NotificationProviderEventRouter event_router( | 
| -      profile_notification->profile()); | 
| +  extensions::NotificationProviderEventRouter event_router(profile); | 
| event_router.CreateNotification(extension_id, | 
| notification.notifier_id().id, | 
| notification.delegate_id(), | 
|  |