OLD | NEW |
---|---|
(Empty) | |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #import <AppKit/AppKit.h> | |
6 | |
7 #import "chrome/browser/ui/cocoa/notifications/notification_service_delegate.h" | |
8 | |
9 #include "base/mac/scoped_nsobject.h" | |
10 #import "chrome/browser/ui/cocoa/notifications/alert_notification_service.h" | |
11 #import "chrome/browser/ui/cocoa/notifications/notification_delivery.h" | |
12 #import "chrome/browser/ui/cocoa/notifications/notification_response_builder_mac .h" | |
13 | |
14 @class NSUserNotificationCenter; | |
15 | |
16 @implementation ServiceDelegate | |
17 | |
18 @synthesize connection = connection_; | |
19 | |
20 - (instancetype)init { | |
21 if (self = [super init]) { | |
Robert Sesek
2016/10/04 16:04:25
nit: two sets of parens is convention to silence a
| |
22 [[NSUserNotificationCenter defaultUserNotificationCenter] setDelegate:self]; | |
23 } | |
24 return self; | |
25 } | |
26 | |
27 - (void)dealloc { | |
28 [[NSUserNotificationCenter defaultUserNotificationCenter] setDelegate:nil]; | |
29 [super dealloc]; | |
30 } | |
31 | |
32 - (BOOL)listener:(NSXPCListener*)listener | |
33 shouldAcceptNewConnection:(NSXPCConnection*)newConnection { | |
34 newConnection.exportedInterface = | |
35 [NSXPCInterface interfaceWithProtocol:@protocol(NotificationDelivery)]; | |
36 [newConnection.exportedInterface | |
37 setClasses:[NSSet setWithObjects:[NSDictionary class], [NSImage class], | |
38 [NSNumber class], [NSString class], | |
39 nil] | |
40 forSelector:@selector(deliverNotification:) | |
41 argumentIndex:0 | |
42 ofReply:NO]; | |
43 | |
44 base::scoped_nsobject<AlertNotificationService> object( | |
45 [[AlertNotificationService alloc] init]); | |
46 newConnection.exportedObject = object.get(); | |
47 newConnection.remoteObjectInterface = | |
48 [NSXPCInterface interfaceWithProtocol:@protocol(NotificationReply)]; | |
49 connection_ = newConnection; | |
50 [newConnection resume]; | |
51 | |
52 return YES; | |
53 } | |
54 | |
55 // NSUserNotification center delegate | |
56 - (void)userNotificationCenter:(NSUserNotificationCenter*)center | |
57 didActivateNotification:(NSUserNotification*)notification { | |
58 NSDictionary* response = | |
59 [NotificationResponseBuilder buildDictionary:notification]; | |
60 [[connection_ remoteObjectProxy] notificationClick:response]; | |
61 } | |
62 | |
63 @end | |
OLD | NEW |