| Index: chrome/browser/notifications/notification_platform_bridge_mac.mm
 | 
| diff --git a/chrome/browser/notifications/notification_platform_bridge_mac.mm b/chrome/browser/notifications/notification_platform_bridge_mac.mm
 | 
| index e8f9f1cbc6e15ca045b0a9ba15fd7c33a7436917..f708a0bd47c32a8e8c116a12a92cf636e17bcc11 100644
 | 
| --- a/chrome/browser/notifications/notification_platform_bridge_mac.mm
 | 
| +++ b/chrome/browser/notifications/notification_platform_bridge_mac.mm
 | 
| @@ -100,12 +100,6 @@ void DoProcessNotificationResponse(NotificationCommon::Operation operation,
 | 
|  
 | 
|  }  // namespace
 | 
|  
 | 
| -// static
 | 
| -NotificationPlatformBridge* NotificationPlatformBridge::Create() {
 | 
| -  return new NotificationPlatformBridgeMac(
 | 
| -      [NSUserNotificationCenter defaultUserNotificationCenter]);
 | 
| -}
 | 
| -
 | 
|  // A Cocoa class that represents the delegate of NSUserNotificationCenter and
 | 
|  // can forward commands to C++.
 | 
|  @interface NotificationCenterDelegate
 | 
| @@ -114,7 +108,7 @@ NotificationPlatformBridge* NotificationPlatformBridge::Create() {
 | 
|  @end
 | 
|  
 | 
|  // Interface to communicate with the Alert XPC service.
 | 
| -@interface NotificationRemoteDispatcher : NSObject
 | 
| +@interface AlertDispatcherImpl : NSObject<AlertDispatcher>
 | 
|  
 | 
|  // Deliver a notification to the XPC service to be displayed as an alert.
 | 
|  - (void)dispatchNotification:(NSDictionary*)data;
 | 
| @@ -129,18 +123,12 @@ NotificationPlatformBridge* NotificationPlatformBridge::Create() {
 | 
|  @end
 | 
|  
 | 
|  // /////////////////////////////////////////////////////////////////////////////
 | 
| -
 | 
|  NotificationPlatformBridgeMac::NotificationPlatformBridgeMac(
 | 
| -    NSUserNotificationCenter* notification_center)
 | 
| +    NSUserNotificationCenter* notification_center,
 | 
| +    id<AlertDispatcher> alert_dispatcher)
 | 
|      : delegate_([NotificationCenterDelegate alloc]),
 | 
| -      notification_center_(notification_center),
 | 
| -#if BUILDFLAG(ENABLE_XPC_NOTIFICATIONS)
 | 
| -      notification_remote_dispatcher_(
 | 
| -          [[NotificationRemoteDispatcher alloc] init])
 | 
| -#else
 | 
| -      notification_remote_dispatcher_(nullptr)
 | 
| -#endif  // ENABLE_XPC_NOTIFICATIONS
 | 
| -{
 | 
| +      notification_center_([notification_center retain]),
 | 
| +      alert_dispatcher_([alert_dispatcher retain]) {
 | 
|    [notification_center_ setDelegate:delegate_.get()];
 | 
|  }
 | 
|  
 | 
| @@ -150,10 +138,24 @@ NotificationPlatformBridgeMac::~NotificationPlatformBridgeMac() {
 | 
|    // TODO(miguelg) do not remove banners if possible.
 | 
|    [notification_center_ removeAllDeliveredNotifications];
 | 
|  #if BUILDFLAG(ENABLE_XPC_NOTIFICATIONS)
 | 
| -  [notification_remote_dispatcher_ closeAllNotifications];
 | 
| +  [alert_dispatcher_ closeAllNotifications];
 | 
|  #endif  // BUILDFLAG(ENABLE_XPC_NOTIFICATIONS)
 | 
|  }
 | 
|  
 | 
| +// static
 | 
| +NotificationPlatformBridge* NotificationPlatformBridge::Create() {
 | 
| +#if BUILDFLAG(ENABLE_XPC_NOTIFICATIONS)
 | 
| +  base::scoped_nsobject<AlertDispatcherImpl> alert_dispatcher(
 | 
| +      [[AlertDispatcherImpl alloc] init]);
 | 
| +  return new NotificationPlatformBridgeMac(
 | 
| +      [NSUserNotificationCenter defaultUserNotificationCenter],
 | 
| +      alert_dispatcher.get());
 | 
| +#else
 | 
| +  return new NotificationPlatformBridgeMac(
 | 
| +      [NSUserNotificationCenter defaultUserNotificationCenter], nil);
 | 
| +#endif  // ENABLE_XPC_NOTIFICATIONS
 | 
| +}
 | 
| +
 | 
|  void NotificationPlatformBridgeMac::Display(
 | 
|      NotificationCommon::Type notification_type,
 | 
|      const std::string& notification_id,
 | 
| @@ -229,7 +231,7 @@ void NotificationPlatformBridgeMac::Display(
 | 
|    // banners.
 | 
|    if (notification.never_timeout()) {
 | 
|      NSDictionary* dict = [builder buildDictionary];
 | 
| -    [notification_remote_dispatcher_ dispatchNotification:dict];
 | 
| +    [alert_dispatcher_ dispatchNotification:dict];
 | 
|    } else {
 | 
|      NSUserNotification* toast = [builder buildUserNotification];
 | 
|      [notification_center_ deliverNotification:toast];
 | 
| @@ -265,9 +267,8 @@ void NotificationPlatformBridgeMac::Close(const std::string& profile_id,
 | 
|    // If no banner existed with that ID try to see if there is an alert
 | 
|    // in the xpc server.
 | 
|    if (!notification_removed) {
 | 
| -    [notification_remote_dispatcher_
 | 
| -        closeNotificationWithId:candidate_id
 | 
| -                  withProfileId:current_profile_id];
 | 
| +    [alert_dispatcher_ closeNotificationWithId:candidate_id
 | 
| +                                 withProfileId:current_profile_id];
 | 
|    }
 | 
|  #endif  // ENABLE_XPC_NOTIFICATIONS
 | 
|  }
 | 
| @@ -424,7 +425,7 @@ bool NotificationPlatformBridgeMac::VerifyNotificationData(
 | 
|  
 | 
|  @end
 | 
|  
 | 
| -@implementation NotificationRemoteDispatcher {
 | 
| +@implementation AlertDispatcherImpl {
 | 
|    // The connection to the XPC server in charge of delivering alerts.
 | 
|    base::scoped_nsobject<NSXPCConnection> xpcConnection_;
 | 
|  }
 | 
| 
 |