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

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

Issue 2402303002: Implement the ability to close alerts programatically (Closed)
Patch Set: break early if the notification to close is found 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
1 // Copyright 2016 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #import "chrome/browser/ui/cocoa/notifications/alert_notification_service.h" 5 #import "chrome/browser/ui/cocoa/notifications/alert_notification_service.h"
6 6
7 #import "base/mac/scoped_nsobject.h" 7 #import "base/mac/scoped_nsobject.h"
8 #import "chrome/browser/ui/cocoa/notifications/notification_builder_mac.h" 8 #import "chrome/browser/ui/cocoa/notifications/notification_builder_mac.h"
9 #include "chrome/browser/ui/cocoa/notifications/notification_constants_mac.h"
9 10
10 @class NSUserNotificationCenter; 11 @class NSUserNotificationCenter;
11 12
12 @implementation AlertNotificationService 13 @implementation AlertNotificationService
13 14
14 - (void)deliverNotification:(NSDictionary*)notificationData { 15 - (void)deliverNotification:(NSDictionary*)notificationData {
15 base::scoped_nsobject<NotificationBuilder> builder( 16 base::scoped_nsobject<NotificationBuilder> builder(
16 [[NotificationBuilder alloc] initWithDictionary:notificationData]); 17 [[NotificationBuilder alloc] initWithDictionary:notificationData]);
17 18
18 NSUserNotification* toast = [builder buildUserNotification]; 19 NSUserNotification* toast = [builder buildUserNotification];
19 20
20 [[NSUserNotificationCenter defaultUserNotificationCenter] 21 [[NSUserNotificationCenter defaultUserNotificationCenter]
21 deliverNotification:toast]; 22 deliverNotification:toast];
22 } 23 }
23 24
25 - (void)closeNotificationWithId:(NSString*)notificationId
26 withProfileId:(NSString*)profileId {
27 NSUserNotificationCenter* notificationCenter =
28 [NSUserNotificationCenter defaultUserNotificationCenter];
29 for (NSUserNotification* candidate in
30 [notificationCenter deliveredNotifications]) {
31 NSString* candidateId = [candidate.userInfo
32 objectForKey:notification_constants::kNotificationId];
33
34 NSString* candidateProfileId = [candidate.userInfo
35 objectForKey:notification_constants::kNotificationProfileId];
36
37 if ([candidateId isEqualToString:notificationId] &&
38 [profileId isEqualToString:candidateProfileId]) {
39 [notificationCenter removeDeliveredNotification:candidate];
40 break;
41 }
42 }
43 }
44
45 - (void)closeAllNotifications {
46 [[NSUserNotificationCenter defaultUserNotificationCenter]
47 removeAllDeliveredNotifications];
48 }
49
24 @end 50 @end
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698