Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(848)

Side by Side Diff: chrome/browser/ui/cocoa/notifications/notification_service_delegate.mm

Issue 2070903002: Add an XPC service to handle alert notifications on mac (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@move_builder_add_response
Patch Set: Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(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])) {
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698