Chromium Code Reviews| Index: chrome/browser/ui/cocoa/notifications/notification_service_delegate.mm |
| diff --git a/chrome/browser/ui/cocoa/notifications/notification_service_delegate.mm b/chrome/browser/ui/cocoa/notifications/notification_service_delegate.mm |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..eade0ee9579b6bb4799882a1aadacfd741551168 |
| --- /dev/null |
| +++ b/chrome/browser/ui/cocoa/notifications/notification_service_delegate.mm |
| @@ -0,0 +1,60 @@ |
| +// Copyright 2016 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#import <AppKit/AppKit.h> |
|
Robert Sesek
2016/09/29 14:23:05
Do you need AppKit?
Miguel Garcia
2016/10/03 16:07:51
For NSImage
|
| +#import <Foundation/Foundation.h> |
|
Robert Sesek
2016/09/29 14:23:05
Foundation is already included in the .h.
Miguel Garcia
2016/10/03 16:07:51
Done.
|
| + |
| +#import "chrome/browser/ui/cocoa/notifications/notification_service_delegate.h" |
| + |
| +#include "base/mac/scoped_nsobject.h" |
| +#import "chrome/browser/ui/cocoa/notifications/alert_notification_service.h" |
| +#import "chrome/browser/ui/cocoa/notifications/notification_delivery.h" |
| +#import "chrome/browser/ui/cocoa/notifications/notification_response_builder_mac.h" |
| + |
| +@class NSUserNotification; |
|
Robert Sesek
2016/09/29 14:23:05
Remove forward decls.
Miguel Garcia
2016/10/03 16:07:51
Same as before, need to keep NSUserNotificationCen
|
| +@class NSUserNotificationCenter; |
| + |
| +@implementation ServiceDelegate |
| + |
| +@synthesize connection = _connection; |
|
Robert Sesek
2016/09/29 14:23:05
Use trailing underscores for ivar names.
Miguel Garcia
2016/10/03 16:07:51
Done.
|
| + |
| +- (instancetype)init { |
| + if (self = [super init]) { |
| + [[NSUserNotificationCenter defaultUserNotificationCenter] setDelegate:self]; |
| + } |
| + return self; |
| +} |
| + |
|
Robert Sesek
2016/09/29 14:23:05
Should set the NSUserNotificationCenter to nil in
Miguel Garcia
2016/10/03 16:07:51
I assume you mean the delegate? If so done.
|
| +- (BOOL)listener:(NSXPCListener*)listener |
| + shouldAcceptNewConnection:(NSXPCConnection*)newConnection { |
| + newConnection.exportedInterface = |
| + [NSXPCInterface interfaceWithProtocol:@protocol(NotificationDelivery)]; |
| + [newConnection.exportedInterface |
| + setClasses:[NSSet setWithObjects:[NSDictionary class], [NSImage class], |
| + [NSNumber class], [NSString class], |
| + nil] |
| + forSelector:@selector(deliverNotification:) |
| + argumentIndex:0 |
| + ofReply:NO]; |
| + |
| + base::scoped_nsobject<AlertNotificationService> object( |
| + [[AlertNotificationService alloc] init]); |
| + newConnection.exportedObject = object.get(); |
| + newConnection.remoteObjectInterface = |
| + [NSXPCInterface interfaceWithProtocol:@protocol(NotificationReply)]; |
| + _connection = newConnection; |
| + [newConnection resume]; |
| + |
| + return YES; |
| +} |
| + |
| +// NSUserNotification center delegate |
| +- (void)userNotificationCenter:(NSUserNotificationCenter*)center |
| + didActivateNotification:(NSUserNotification*)notification { |
| + NSDictionary* response = |
| + [NotificationResponseBuilder buildDictionary:notification]; |
| + [[_connection remoteObjectProxy] notificationClick:response]; |
| +} |
| + |
| +@end |