Chromium Code Reviews| Index: chrome/browser/ui/cocoa/notifications/notification_response_builder_mac_unittest.mm |
| diff --git a/chrome/browser/ui/cocoa/notifications/notification_response_builder_mac_unittest.mm b/chrome/browser/ui/cocoa/notifications/notification_response_builder_mac_unittest.mm |
| index 93896d3c36c0a38976a3874099ec5d90523fa680..3d0e09ac2ac3f3e1d2920c42e6cbc933cbb3fd45 100644 |
| --- a/chrome/browser/ui/cocoa/notifications/notification_response_builder_mac_unittest.mm |
| +++ b/chrome/browser/ui/cocoa/notifications/notification_response_builder_mac_unittest.mm |
| @@ -11,7 +11,36 @@ |
| #include "chrome/browser/ui/cocoa/notifications/notification_response_builder_mac.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| -TEST(NotificationResponseBuilderMacTest, TestNotificationClick) { |
| +@interface TestBuilder : NSObject |
|
Robert Sesek
2016/10/13 16:50:37
Remove this?
|
| ++ (NotificationBuilder*)newTestBuilder; |
| +@end |
| + |
| +@implementation TestBuilder |
| ++ (NotificationBuilder*)newTestBuilder { |
| + NotificationBuilder* builder = |
| + [[NotificationBuilder alloc] initWithCloseLabel:@"Close" |
| + optionsLabel:@"Options" |
| + settingsLabel:@"Settings"]; |
| + [builder setTitle:@"Title"]; |
| + [builder setSubTitle:@"https://www.miguel.com"]; |
| + [builder setContextMessage:@""]; |
| + [builder setTag:@"tag1"]; |
| + [builder setIcon:[NSImage imageNamed:NSImageNameApplicationIcon]]; |
| + [builder setNotificationId:@"notificationId"]; |
| + [builder setProfileId:@"profileId"]; |
| + [builder setIncognito:false]; |
| + [builder setNotificationType:@(NotificationCommon::PERSISTENT)]; |
| + return builder; |
| +} |
| +@end |
| + |
| +class NotificationResponseBuilderMacTest : public testing::Test { |
| + protected: |
| + base::scoped_nsobject<NotificationBuilder> testBuilder(); |
|
Robert Sesek
2016/10/13 16:50:36
naming: TestBuilder() (or maybe even NewTestBuilde
Miguel Garcia
2016/10/14 10:59:06
Done.
|
| +}; |
| + |
| +base::scoped_nsobject<NotificationBuilder> |
| +NotificationResponseBuilderMacTest::testBuilder() { |
|
Robert Sesek
2016/10/13 16:50:37
I generally just inline these into the class decla
Miguel Garcia
2016/10/14 10:59:06
Done.
|
| base::scoped_nsobject<NotificationBuilder> builder( |
| [[NotificationBuilder alloc] initWithCloseLabel:@"Close" |
| optionsLabel:@"Options" |
| @@ -20,15 +49,22 @@ TEST(NotificationResponseBuilderMacTest, TestNotificationClick) { |
| [builder setSubTitle:@"https://www.miguel.com"]; |
| [builder setContextMessage:@""]; |
| [builder setTag:@"tag1"]; |
| - [builder setIcon:[NSImage imageNamed:@"NSApplicationIcon"]]; |
| + [builder setIcon:[NSImage imageNamed:NSImageNameApplicationIcon]]; |
| [builder setNotificationId:@"notificationId"]; |
| [builder setProfileId:@"profileId"]; |
| [builder setIncognito:false]; |
| - [builder |
| - setNotificationType:[NSNumber |
| - numberWithInt:NotificationCommon::PERSISTENT]]; |
| + [builder setNotificationType:@(NotificationCommon::PERSISTENT)]; |
| + return builder; |
| +} |
| +TEST_F(NotificationResponseBuilderMacTest, TestNotificationClick) { |
| + base::scoped_nsobject<NotificationBuilder> builder = testBuilder(); |
| NSUserNotification* notification = [builder buildUserNotification]; |
| + // This will be set by the notification center to indicate the notification |
| + // was clicked. |
| + [notification setValue:@(NSUserNotificationActivationTypeContentsClicked) |
| + forKey:@"_activationType"]; |
|
Robert Sesek
2016/10/13 16:50:36
We may want to pull this out into notification_con
Miguel Garcia
2016/10/14 10:59:06
Happy to consider it in another CL but keep in min
|
| + |
| NSDictionary* response = |
| [NotificationResponseBuilder buildDictionary:notification]; |
| @@ -40,32 +76,14 @@ TEST(NotificationResponseBuilderMacTest, TestNotificationClick) { |
| EXPECT_EQ(-1, buttonIndex.intValue); |
| } |
| -TEST(NotificationResponseBuilderMacTest, TestNotificationSettingsClick) { |
| - base::scoped_nsobject<NotificationBuilder> builder( |
| - [[NotificationBuilder alloc] initWithCloseLabel:@"Close" |
| - optionsLabel:@"Options" |
| - settingsLabel:@"Settings"]); |
| - [builder setTitle:@"Title"]; |
| - [builder setSubTitle:@"https://www.miguel.com"]; |
| - [builder setContextMessage:@""]; |
| - [builder setTag:@"tag1"]; |
| - [builder setIcon:[NSImage imageNamed:@"NSApplicationIcon"]]; |
| - [builder setNotificationId:@"notificationId"]; |
| - [builder setProfileId:@"profileId"]; |
| - [builder setIncognito:false]; |
| - [builder |
| - setNotificationType:[NSNumber |
| - numberWithInt:NotificationCommon::PERSISTENT]]; |
| - |
| +TEST_F(NotificationResponseBuilderMacTest, TestNotificationSettingsClick) { |
| + base::scoped_nsobject<NotificationBuilder> builder = testBuilder(); |
| NSUserNotification* notification = [builder buildUserNotification]; |
| // This will be set by the notification center to indicate the only available |
| // button was clicked. |
| - [notification |
| - setValue: |
| - [NSNumber |
| - numberWithInt:NSUserNotificationActivationTypeActionButtonClicked] |
| - forKey:@"_activationType"]; |
| + [notification setValue:@(NSUserNotificationActivationTypeActionButtonClicked) |
| + forKey:@"_activationType"]; |
| NSDictionary* response = |
| [NotificationResponseBuilder buildDictionary:notification]; |
| @@ -77,33 +95,16 @@ TEST(NotificationResponseBuilderMacTest, TestNotificationSettingsClick) { |
| EXPECT_EQ(-1, buttonIndex.intValue); |
| } |
| -TEST(NotificationResponseBuilderMacTest, TestNotificationOneActionClick) { |
| - base::scoped_nsobject<NotificationBuilder> builder( |
| - [[NotificationBuilder alloc] initWithCloseLabel:@"Close" |
| - optionsLabel:@"Options" |
| - settingsLabel:@"Settings"]); |
| - [builder setTitle:@"Title"]; |
| - [builder setSubTitle:@"https://www.miguel.com"]; |
| - [builder setContextMessage:@""]; |
| +TEST_F(NotificationResponseBuilderMacTest, TestNotificationOneActionClick) { |
| + base::scoped_nsobject<NotificationBuilder> builder = testBuilder(); |
| [builder setButtons:@"Button1" secondaryButton:@""]; |
| - [builder setTag:@"tag1"]; |
| - [builder setIcon:[NSImage imageNamed:@"NSApplicationIcon"]]; |
| - [builder setNotificationId:@"notificationId"]; |
| - [builder setProfileId:@"profileId"]; |
| - [builder setIncognito:false]; |
| - [builder |
| - setNotificationType:[NSNumber |
| - numberWithInt:NotificationCommon::PERSISTENT]]; |
| NSUserNotification* notification = [builder buildUserNotification]; |
| // These values will be set by the notification center to indicate that button |
| // 1 was clicked. |
| - [notification |
| - setValue: |
| - [NSNumber |
| - numberWithInt:NSUserNotificationActivationTypeActionButtonClicked] |
| - forKey:@"_activationType"]; |
| + [notification setValue:@(NSUserNotificationActivationTypeActionButtonClicked) |
| + forKey:@"_activationType"]; |
| [notification setValue:[NSNumber numberWithInt:0] |
| forKey:@"_alternateActionIndex"]; |
| NSDictionary* response = |
| @@ -117,33 +118,16 @@ TEST(NotificationResponseBuilderMacTest, TestNotificationOneActionClick) { |
| EXPECT_EQ(0, buttonIndex.intValue); |
| } |
| -TEST(NotificationResponseBuilderMacTest, TestNotificationTwoActionClick) { |
| - base::scoped_nsobject<NotificationBuilder> builder( |
| - [[NotificationBuilder alloc] initWithCloseLabel:@"Close" |
| - optionsLabel:@"Options" |
| - settingsLabel:@"Settings"]); |
| - [builder setTitle:@"Title"]; |
| - [builder setSubTitle:@"https://www.miguel.com"]; |
| - [builder setContextMessage:@""]; |
| +TEST_F(NotificationResponseBuilderMacTest, TestNotificationTwoActionClick) { |
| + base::scoped_nsobject<NotificationBuilder> builder = testBuilder(); |
| [builder setButtons:@"Button1" secondaryButton:@"Button2"]; |
| - [builder setTag:@"tag1"]; |
| - [builder setIcon:[NSImage imageNamed:@"NSApplicationIcon"]]; |
| - [builder setNotificationId:@"notificationId"]; |
| - [builder setProfileId:@"profileId"]; |
| - [builder setIncognito:false]; |
| - [builder |
| - setNotificationType:[NSNumber |
| - numberWithInt:NotificationCommon::PERSISTENT]]; |
| NSUserNotification* notification = [builder buildUserNotification]; |
| // These values will be set by the notification center to indicate that button |
| // 2 was clicked. |
| - [notification |
| - setValue: |
| - [NSNumber |
| - numberWithInt:NSUserNotificationActivationTypeActionButtonClicked] |
| - forKey:@"_activationType"]; |
| + [notification setValue:@(NSUserNotificationActivationTypeActionButtonClicked) |
| + forKey:@"_activationType"]; |
| [notification setValue:[NSNumber numberWithInt:1] |
| forKey:@"_alternateActionIndex"]; |
| @@ -158,25 +142,10 @@ TEST(NotificationResponseBuilderMacTest, TestNotificationTwoActionClick) { |
| EXPECT_EQ(1, buttonIndex.intValue); |
| } |
| -TEST(NotificationResponseBuilderMacTest, |
| - TestNotificationTwoActionSettingsClick) { |
| - base::scoped_nsobject<NotificationBuilder> builder( |
| - [[NotificationBuilder alloc] initWithCloseLabel:@"Close" |
| - optionsLabel:@"Options" |
| - settingsLabel:@"Settings"]); |
| - [builder setTitle:@"Title"]; |
| - [builder setSubTitle:@"https://www.miguel.com"]; |
| - [builder setContextMessage:@""]; |
| +TEST_F(NotificationResponseBuilderMacTest, |
| + TestNotificationTwoActionSettingsClick) { |
| + base::scoped_nsobject<NotificationBuilder> builder = testBuilder(); |
| [builder setButtons:@"Button1" secondaryButton:@"Button2"]; |
| - [builder setTag:@"tag1"]; |
| - [builder setIcon:[NSImage imageNamed:@"NSApplicationIcon"]]; |
| - [builder setNotificationId:@"notificationId"]; |
| - [builder setProfileId:@"profileId"]; |
| - [builder setIncognito:false]; |
| - [builder |
| - setNotificationType:[NSNumber |
| - numberWithInt:NotificationCommon::PERSISTENT]]; |
| - |
| NSUserNotification* notification = [builder buildUserNotification]; |
| // These values will be set by the notification center to indicate that button |
| @@ -199,3 +168,23 @@ TEST(NotificationResponseBuilderMacTest, |
| EXPECT_EQ(2 /* NOTIFICATION_SETTINGS */, operation.intValue); |
| EXPECT_EQ(-1, buttonIndex.intValue); |
| } |
| + |
| +TEST_F(NotificationResponseBuilderMacTest, TestNotificationClose) { |
| + base::scoped_nsobject<NotificationBuilder> builder = testBuilder(); |
| + NSUserNotification* notification = [builder buildUserNotification]; |
| + |
| + // None is what the NSUserNotification center emits when closing since it |
| + // interprets it as not activated. |
| + [notification setValue:@(NSUserNotificationActivationTypeNone) |
| + forKey:@"_activationType"]; |
| + |
| + NSDictionary* response = |
| + [NotificationResponseBuilder buildDictionary:notification]; |
| + |
| + NSNumber* operation = |
| + [response objectForKey:notification_constants::kNotificationOperation]; |
| + NSNumber* buttonIndex = |
| + [response objectForKey:notification_constants::kNotificationButtonIndex]; |
| + EXPECT_EQ(1 /* NOTIFICATION_CLOSE */, operation.intValue); |
| + EXPECT_EQ(-1, buttonIndex.intValue); |
| +} |