| OLD | NEW | 
|    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 <AppKit/AppKit.h> |    5 #import <AppKit/AppKit.h> | 
|    6 #import <objc/runtime.h> |    6 #import <objc/runtime.h> | 
|    7  |    7  | 
|    8 #include "base/bind.h" |    8 #include "base/bind.h" | 
|    9 #include "base/mac/scoped_nsobject.h" |    9 #include "base/mac/scoped_nsobject.h" | 
|   10 #include "base/run_loop.h" |   10 #include "base/run_loop.h" | 
| (...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  197   // If however the origin is not present the response should be fine. |  197   // If however the origin is not present the response should be fine. | 
|  198   [response removeObjectForKey:notification_constants::kNotificationOrigin]; |  198   [response removeObjectForKey:notification_constants::kNotificationOrigin]; | 
|  199   EXPECT_TRUE(NotificationPlatformBridgeMac::VerifyNotificationData(response)); |  199   EXPECT_TRUE(NotificationPlatformBridgeMac::VerifyNotificationData(response)); | 
|  200 } |  200 } | 
|  201  |  201  | 
|  202 TEST_F(NotificationPlatformBridgeMacTest, TestDisplayNoButtons) { |  202 TEST_F(NotificationPlatformBridgeMacTest, TestDisplayNoButtons) { | 
|  203   std::unique_ptr<Notification> notification = |  203   std::unique_ptr<Notification> notification = | 
|  204       CreateBanner("Title", "Context", "https://gmail.com", nullptr, nullptr); |  204       CreateBanner("Title", "Context", "https://gmail.com", nullptr, nullptr); | 
|  205  |  205  | 
|  206   std::unique_ptr<NotificationPlatformBridgeMac> bridge( |  206   std::unique_ptr<NotificationPlatformBridgeMac> bridge( | 
|  207       new NotificationPlatformBridgeMac(notification_center(), nil)); |  207       new NotificationPlatformBridgeMac(notification_center(), | 
 |  208                                         alert_dispatcher())); | 
|  208   bridge->Display(NotificationCommon::PERSISTENT, "notification_id", |  209   bridge->Display(NotificationCommon::PERSISTENT, "notification_id", | 
|  209                   "profile_id", false, *notification); |  210                   "profile_id", false, *notification); | 
|  210   NSArray* notifications = [notification_center() deliveredNotifications]; |  211   NSArray* notifications = [notification_center() deliveredNotifications]; | 
|  211  |  212  | 
|  212   EXPECT_EQ(1u, [notifications count]); |  213   EXPECT_EQ(1u, [notifications count]); | 
|  213  |  214  | 
|  214   NSUserNotification* delivered_notification = [notifications objectAtIndex:0]; |  215   NSUserNotification* delivered_notification = [notifications objectAtIndex:0]; | 
|  215   EXPECT_NSEQ(@"Title", [delivered_notification title]); |  216   EXPECT_NSEQ(@"Title", [delivered_notification title]); | 
|  216   EXPECT_NSEQ(@"Context", [delivered_notification informativeText]); |  217   EXPECT_NSEQ(@"Context", [delivered_notification informativeText]); | 
|  217   EXPECT_NSEQ(@"https://gmail.com", [delivered_notification subtitle]); |  218   EXPECT_NSEQ(@"https://gmail.com", [delivered_notification subtitle]); | 
|  218   EXPECT_NSEQ(@"Close", [delivered_notification otherButtonTitle]); |  219   EXPECT_NSEQ(@"Close", [delivered_notification otherButtonTitle]); | 
|  219   EXPECT_NSEQ(@"Settings", [delivered_notification actionButtonTitle]); |  220   EXPECT_NSEQ(@"Settings", [delivered_notification actionButtonTitle]); | 
|  220 } |  221 } | 
|  221  |  222  | 
|  222 TEST_F(NotificationPlatformBridgeMacTest, TestDisplayOneButton) { |  223 TEST_F(NotificationPlatformBridgeMacTest, TestDisplayOneButton) { | 
|  223   std::unique_ptr<Notification> notification = CreateBanner( |  224   std::unique_ptr<Notification> notification = CreateBanner( | 
|  224       "Title", "Context", "https://gmail.com", "Button 1", nullptr); |  225       "Title", "Context", "https://gmail.com", "Button 1", nullptr); | 
|  225  |  226  | 
|  226   std::unique_ptr<NotificationPlatformBridgeMac> bridge( |  227   std::unique_ptr<NotificationPlatformBridgeMac> bridge( | 
|  227       new NotificationPlatformBridgeMac(notification_center(), nil)); |  228       new NotificationPlatformBridgeMac(notification_center(), | 
 |  229                                         alert_dispatcher())); | 
|  228   bridge->Display(NotificationCommon::PERSISTENT, "notification_id", |  230   bridge->Display(NotificationCommon::PERSISTENT, "notification_id", | 
|  229                   "profile_id", false, *notification); |  231                   "profile_id", false, *notification); | 
|  230  |  232  | 
|  231   NSArray* notifications = [notification_center() deliveredNotifications]; |  233   NSArray* notifications = [notification_center() deliveredNotifications]; | 
|  232   EXPECT_EQ(1u, [notifications count]); |  234   EXPECT_EQ(1u, [notifications count]); | 
|  233   NSUserNotification* delivered_notification = [notifications objectAtIndex:0]; |  235   NSUserNotification* delivered_notification = [notifications objectAtIndex:0]; | 
|  234   EXPECT_NSEQ(@"Title", [delivered_notification title]); |  236   EXPECT_NSEQ(@"Title", [delivered_notification title]); | 
|  235   EXPECT_NSEQ(@"Context", [delivered_notification informativeText]); |  237   EXPECT_NSEQ(@"Context", [delivered_notification informativeText]); | 
|  236   EXPECT_NSEQ(@"https://gmail.com", [delivered_notification subtitle]); |  238   EXPECT_NSEQ(@"https://gmail.com", [delivered_notification subtitle]); | 
|  237   EXPECT_NSEQ(@"Close", [delivered_notification otherButtonTitle]); |  239   EXPECT_NSEQ(@"Close", [delivered_notification otherButtonTitle]); | 
|  238   EXPECT_NSEQ(@"More", [delivered_notification actionButtonTitle]); |  240   EXPECT_NSEQ(@"More", [delivered_notification actionButtonTitle]); | 
|  239 } |  241 } | 
|  240  |  242  | 
|  241 TEST_F(NotificationPlatformBridgeMacTest, TestCloseNotification) { |  243 TEST_F(NotificationPlatformBridgeMacTest, TestCloseNotification) { | 
|  242   std::unique_ptr<Notification> notification = CreateBanner( |  244   std::unique_ptr<Notification> notification = CreateBanner( | 
|  243       "Title", "Context", "https://gmail.com", "Button 1", nullptr); |  245       "Title", "Context", "https://gmail.com", "Button 1", nullptr); | 
|  244  |  246  | 
|  245   std::unique_ptr<NotificationPlatformBridgeMac> bridge( |  247   std::unique_ptr<NotificationPlatformBridgeMac> bridge( | 
|  246       new NotificationPlatformBridgeMac(notification_center(), nil)); |  248       new NotificationPlatformBridgeMac(notification_center(), | 
 |  249                                         alert_dispatcher())); | 
|  247   EXPECT_EQ(0u, [[notification_center() deliveredNotifications] count]); |  250   EXPECT_EQ(0u, [[notification_center() deliveredNotifications] count]); | 
|  248   bridge->Display(NotificationCommon::PERSISTENT, "notification_id", |  251   bridge->Display(NotificationCommon::PERSISTENT, "notification_id", | 
|  249                   "profile_id", false, *notification); |  252                   "profile_id", false, *notification); | 
|  250   EXPECT_EQ(1u, [[notification_center() deliveredNotifications] count]); |  253   EXPECT_EQ(1u, [[notification_center() deliveredNotifications] count]); | 
|  251  |  254  | 
|  252   bridge->Close("profile_id", "notification_id"); |  255   bridge->Close("profile_id", "notification_id"); | 
|  253   EXPECT_EQ(0u, [[notification_center() deliveredNotifications] count]); |  256   EXPECT_EQ(0u, [[notification_center() deliveredNotifications] count]); | 
|  254 } |  257 } | 
|  255  |  258  | 
|  256 TEST_F(NotificationPlatformBridgeMacTest, TestCloseNonExistingNotification) { |  259 TEST_F(NotificationPlatformBridgeMacTest, TestCloseNonExistingNotification) { | 
|  257   std::unique_ptr<Notification> notification = CreateBanner( |  260   std::unique_ptr<Notification> notification = CreateBanner( | 
|  258       "Title", "Context", "https://gmail.com", "Button 1", nullptr); |  261       "Title", "Context", "https://gmail.com", "Button 1", nullptr); | 
|  259  |  262  | 
|  260   std::unique_ptr<NotificationPlatformBridgeMac> bridge( |  263   std::unique_ptr<NotificationPlatformBridgeMac> bridge( | 
|  261       new NotificationPlatformBridgeMac(notification_center(), nil)); |  264       new NotificationPlatformBridgeMac(notification_center(), | 
 |  265                                         alert_dispatcher())); | 
|  262   EXPECT_EQ(0u, [[notification_center() deliveredNotifications] count]); |  266   EXPECT_EQ(0u, [[notification_center() deliveredNotifications] count]); | 
|  263   bridge->Display(NotificationCommon::PERSISTENT, "notification_id", |  267   bridge->Display(NotificationCommon::PERSISTENT, "notification_id", | 
|  264                   "profile_id", false, *notification); |  268                   "profile_id", false, *notification); | 
|  265   EXPECT_EQ(1u, [[notification_center() deliveredNotifications] count]); |  269   EXPECT_EQ(1u, [[notification_center() deliveredNotifications] count]); | 
|  266  |  270  | 
|  267   bridge->Close("profile_id_does_not_exist", "notification_id"); |  271   bridge->Close("profile_id_does_not_exist", "notification_id"); | 
|  268   EXPECT_EQ(1u, [[notification_center() deliveredNotifications] count]); |  272   EXPECT_EQ(1u, [[notification_center() deliveredNotifications] count]); | 
|  269 } |  273 } | 
|  270  |  274  | 
|  271 TEST_F(NotificationPlatformBridgeMacTest, TestGetDisplayed) { |  275 TEST_F(NotificationPlatformBridgeMacTest, TestGetDisplayed) { | 
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  303       base::Bind(&StoreNotificationCount, ¬ification_count)); |  307       base::Bind(&StoreNotificationCount, ¬ification_count)); | 
|  304   base::RunLoop().RunUntilIdle(); |  308   base::RunLoop().RunUntilIdle(); | 
|  305   EXPECT_EQ(0, notification_count); |  309   EXPECT_EQ(0, notification_count); | 
|  306 } |  310 } | 
|  307  |  311  | 
|  308 TEST_F(NotificationPlatformBridgeMacTest, TestQuitRemovesNotifications) { |  312 TEST_F(NotificationPlatformBridgeMacTest, TestQuitRemovesNotifications) { | 
|  309   std::unique_ptr<Notification> notification = CreateBanner( |  313   std::unique_ptr<Notification> notification = CreateBanner( | 
|  310       "Title", "Context", "https://gmail.com", "Button 1", nullptr); |  314       "Title", "Context", "https://gmail.com", "Button 1", nullptr); | 
|  311   { |  315   { | 
|  312     std::unique_ptr<NotificationPlatformBridgeMac> bridge( |  316     std::unique_ptr<NotificationPlatformBridgeMac> bridge( | 
|  313         new NotificationPlatformBridgeMac(notification_center(), nil)); |  317         new NotificationPlatformBridgeMac(notification_center(), | 
 |  318                                           alert_dispatcher())); | 
|  314     EXPECT_EQ(0u, [[notification_center() deliveredNotifications] count]); |  319     EXPECT_EQ(0u, [[notification_center() deliveredNotifications] count]); | 
|  315     bridge->Display(NotificationCommon::PERSISTENT, "notification_id", |  320     bridge->Display(NotificationCommon::PERSISTENT, "notification_id", | 
|  316                     "profile_id", false, *notification); |  321                     "profile_id", false, *notification); | 
|  317     EXPECT_EQ(1u, [[notification_center() deliveredNotifications] count]); |  322     EXPECT_EQ(1u, [[notification_center() deliveredNotifications] count]); | 
|  318   } |  323   } | 
|  319  |  324  | 
|  320   // The destructor of the bridge should close all notifications. |  325   // The destructor of the bridge should close all notifications. | 
|  321   EXPECT_EQ(0u, [[notification_center() deliveredNotifications] count]); |  326   EXPECT_EQ(0u, [[notification_center() deliveredNotifications] count]); | 
|  322 } |  327 } | 
|  323  |  328  | 
|  324 // TODO(miguelg) There is some duplication between these tests and the ones |  | 
|  325 // Above. Once the flag is removed most tests can be merged. |  | 
|  326 #if BUILDFLAG(ENABLE_XPC_NOTIFICATIONS) |  | 
|  327 TEST_F(NotificationPlatformBridgeMacTest, TestDisplayAlert) { |  329 TEST_F(NotificationPlatformBridgeMacTest, TestDisplayAlert) { | 
|  328   std::unique_ptr<Notification> alert = |  330   std::unique_ptr<Notification> alert = | 
|  329       CreateAlert("Title", "Context", "https://gmail.com", "Button 1", nullptr); |  331       CreateAlert("Title", "Context", "https://gmail.com", "Button 1", nullptr); | 
|  330   std::unique_ptr<NotificationPlatformBridgeMac> bridge( |  332   std::unique_ptr<NotificationPlatformBridgeMac> bridge( | 
|  331       new NotificationPlatformBridgeMac(notification_center(), |  333       new NotificationPlatformBridgeMac(notification_center(), | 
|  332                                         alert_dispatcher())); |  334                                         alert_dispatcher())); | 
|  333   bridge->Display(NotificationCommon::PERSISTENT, "notification_id", |  335   bridge->Display(NotificationCommon::PERSISTENT, "notification_id", | 
|  334                   "profile_id", false, *alert); |  336                   "profile_id", false, *alert); | 
|  335   EXPECT_EQ(0u, [[notification_center() deliveredNotifications] count]); |  337   EXPECT_EQ(0u, [[notification_center() deliveredNotifications] count]); | 
|  336   EXPECT_EQ(1u, [[alert_dispatcher() alerts] count]); |  338   EXPECT_EQ(1u, [[alert_dispatcher() alerts] count]); | 
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  383     bridge->Display(NotificationCommon::PERSISTENT, "notification_id2", |  385     bridge->Display(NotificationCommon::PERSISTENT, "notification_id2", | 
|  384                     "profile_id", false, *alert); |  386                     "profile_id", false, *alert); | 
|  385     EXPECT_EQ(1u, [[notification_center() deliveredNotifications] count]); |  387     EXPECT_EQ(1u, [[notification_center() deliveredNotifications] count]); | 
|  386     EXPECT_EQ(1u, [[alert_dispatcher() alerts] count]); |  388     EXPECT_EQ(1u, [[alert_dispatcher() alerts] count]); | 
|  387   } |  389   } | 
|  388  |  390  | 
|  389   // The destructor of the bridge should close all notifications. |  391   // The destructor of the bridge should close all notifications. | 
|  390   EXPECT_EQ(0u, [[notification_center() deliveredNotifications] count]); |  392   EXPECT_EQ(0u, [[notification_center() deliveredNotifications] count]); | 
|  391   EXPECT_EQ(0u, [[alert_dispatcher() alerts] count]); |  393   EXPECT_EQ(0u, [[alert_dispatcher() alerts] count]); | 
|  392 } |  394 } | 
|  393  |  | 
|  394 #endif |  | 
| OLD | NEW |