blob: 72732cf10930f205f9a53dd2071f520f37de98ea [file] [log] [blame]
// 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.
#ifndef CHROME_BROWSER_UI_COCOA_NOTIFICATIONS_NOTIFICATION_DELIVERY_H_
#define CHROME_BROWSER_UI_COCOA_NOTIFICATIONS_NOTIFICATION_DELIVERY_H_
#import <Foundation/Foundation.h>
#import "chrome/browser/ui/cocoa/notifications/xpc_mach_port.h"
// Collection of protocols used for XPC communication between chrome
// and the alert notification xpc service.
// Protocol for the XPC notification service.
@protocol NotificationDelivery
// Sets the Mach exception handler port to use for the XPCService, and sets
// which notification API to be used. This method must be called first before
// using the other methods in this protocol.
- (void)setUseUNNotification:(BOOL)useUNNotification
machExceptionPort:(CrXPCMachPort*)port;
// |notificationData| is generated using a NofiticationBuilder object.
- (void)deliverNotification:(NSDictionary*)notificationData;
// Closes an alert with the given |notificationId|, |profileId| and |incognito|.
- (void)closeNotificationWithId:(NSString*)notificationId
profileId:(NSString*)profileId
incognito:(BOOL)incognito;
// Closes all the alerts with the given |profileId| and |incognito|.
- (void)closeNotificationsWithProfileId:(NSString*)profileId
incognito:(BOOL)incognito;
// Closes all the alerts being displayed.
- (void)closeAllNotifications;
// Will invoke |reply| with an array of NSString notification IDs for all alerts
// for |profileId| and |incognito| value currently displayed. Note that the IDs
// are scoped to the {profileId, incognito} pair and are not globally unique.
- (void)getDisplayedAlertsForProfileId:(NSString*)profileId
incognito:(BOOL)incognito
reply:(void (^)(NSArray*))reply;
// Will invoke |reply| with an array of NSDictionary identifying all alerts.
// Each entry contains the notificationId, profileId and incognito properties.
- (void)getAllDisplayedAlertsWithReply:(void (^)(NSArray*))reply;
@end
// Response protocol for the XPC notification service to notify Chrome of
// notification interactions.
@protocol NotificationReply
// |notificationResponseData| is generated through a
// NotificationResponseBuilder.
- (void)notificationClick:(NSDictionary*)notificationResponseData;
@end
#endif // CHROME_BROWSER_UI_COCOA_NOTIFICATIONS_NOTIFICATION_DELIVERY_H_