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); |
+} |