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

Side by Side Diff: chrome/browser/notifications/notification_platform_bridge_mac.h

Issue 2479143003: Add tests for the XPC client. (Closed)
Patch Set: rename alert_dispatcher.h to alert_dispatcher_mac.h and add it to the BUILD.gn file Created 4 years 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 #ifndef CHROME_BROWSER_NOTIFICATIONS_NOTIFICATION_PLATFORM_BRIDGE_MAC_H_ 5 #ifndef CHROME_BROWSER_NOTIFICATIONS_NOTIFICATION_PLATFORM_BRIDGE_MAC_H_
6 #define CHROME_BROWSER_NOTIFICATIONS_NOTIFICATION_PLATFORM_BRIDGE_MAC_H_ 6 #define CHROME_BROWSER_NOTIFICATIONS_NOTIFICATION_PLATFORM_BRIDGE_MAC_H_
7 7
8 #include <set> 8 #include <set>
9 #include <string> 9 #include <string>
10 10
11 #include "base/compiler_specific.h" 11 #include "base/compiler_specific.h"
12 #include "base/mac/scoped_nsobject.h" 12 #include "base/mac/scoped_nsobject.h"
13 #include "base/macros.h" 13 #include "base/macros.h"
14 #include "chrome/browser/notifications/alert_dispatcher_mac.h"
14 #include "chrome/browser/notifications/notification_common.h" 15 #include "chrome/browser/notifications/notification_common.h"
15 #include "chrome/browser/notifications/notification_platform_bridge.h" 16 #include "chrome/browser/notifications/notification_platform_bridge.h"
16 17
17 class Notification; 18 class Notification;
18 @class NotificationCenterDelegate; 19 @class NotificationCenterDelegate;
19 @class NotificationRemoteDispatcher;
20 @class NSDictionary; 20 @class NSDictionary;
21 @class NSUserNotificationCenter; 21 @class NSUserNotificationCenter;
22 @class NSXPCConnection; 22 @class NSXPCConnection;
23 class PrefService; 23 class PrefService;
24 24
25 // This class is an implementation of NotificationPlatformBridge that will 25 // This class is an implementation of NotificationPlatformBridge that will
26 // send platform notifications to the the MacOSX notification center. 26 // send platform notifications to the the MacOSX notification center.
27 class NotificationPlatformBridgeMac : public NotificationPlatformBridge { 27 class NotificationPlatformBridgeMac : public NotificationPlatformBridge {
28 public: 28 public:
29 explicit NotificationPlatformBridgeMac( 29 NotificationPlatformBridgeMac(NSUserNotificationCenter* notification_center,
30 NSUserNotificationCenter* notification_center); 30 id<AlertDispatcher> alert_dispatcher);
31
31 ~NotificationPlatformBridgeMac() override; 32 ~NotificationPlatformBridgeMac() override;
32 33
33 // NotificationPlatformBridge implementation. 34 // NotificationPlatformBridge implementation.
34 void Display(NotificationCommon::Type notification_type, 35 void Display(NotificationCommon::Type notification_type,
35 const std::string& notification_id, 36 const std::string& notification_id,
36 const std::string& profile_id, 37 const std::string& profile_id,
37 bool incognito, 38 bool incognito,
38 const Notification& notification) override; 39 const Notification& notification) override;
40
39 void Close(const std::string& profile_id, 41 void Close(const std::string& profile_id,
40 const std::string& notification_id) override; 42 const std::string& notification_id) override;
41 bool GetDisplayed(const std::string& profile_id, 43 bool GetDisplayed(const std::string& profile_id,
42 bool incognito, 44 bool incognito,
43 std::set<std::string>* notifications) const override; 45 std::set<std::string>* notifications) const override;
44 46
45 // Processes a notification response generated from a user action 47 // Processes a notification response generated from a user action
46 // (click close, etc.). 48 // (click close, etc.).
47 static void ProcessNotificationResponse(NSDictionary* response); 49 static void ProcessNotificationResponse(NSDictionary* response);
48 50
49 // Validates contents of the |response| dictionary as received from the system 51 // Validates contents of the |response| dictionary as received from the system
50 // when a notification gets activated. 52 // when a notification gets activated.
51 static bool VerifyNotificationData(NSDictionary* response) WARN_UNUSED_RESULT; 53 static bool VerifyNotificationData(NSDictionary* response) WARN_UNUSED_RESULT;
52 54
53 private: 55 private:
54 // Cocoa class that receives callbacks from the NSUserNotificationCenter. 56 // Cocoa class that receives callbacks from the NSUserNotificationCenter.
55 base::scoped_nsobject<NotificationCenterDelegate> delegate_; 57 base::scoped_nsobject<NotificationCenterDelegate> delegate_;
56 58
57 // The notification center to use for local banner notifications, 59 // The notification center to use for local banner notifications,
58 // this can be overriden in tests. 60 // this can be overriden in tests.
59 NSUserNotificationCenter* notification_center_; 61 base::scoped_nsobject<NSUserNotificationCenter> notification_center_;
60 62
61 // The object in charge of dispatching remote notifications. 63 // The object in charge of dispatching remote notifications.
62 base::scoped_nsobject<NotificationRemoteDispatcher> 64 base::scoped_nsprotocol<id<AlertDispatcher>> alert_dispatcher_;
63 notification_remote_dispatcher_;
64 65
65 DISALLOW_COPY_AND_ASSIGN(NotificationPlatformBridgeMac); 66 DISALLOW_COPY_AND_ASSIGN(NotificationPlatformBridgeMac);
66 }; 67 };
67 68
68 #endif // CHROME_BROWSER_NOTIFICATIONS_NOTIFICATION_PLATFORM_BRIDGE_MAC_H_ 69 #endif // CHROME_BROWSER_NOTIFICATIONS_NOTIFICATION_PLATFORM_BRIDGE_MAC_H_
OLDNEW
« no previous file with comments | « chrome/browser/notifications/alert_dispatcher_mac.h ('k') | chrome/browser/notifications/notification_platform_bridge_mac.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698