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

Unified Diff: chrome/browser/ui/cocoa/notifications/notification_response_builder_mac_unittest.mm

Issue 2390153005: Implement support for closing mac native notifications (Closed)
Patch Set: review Created 4 years, 2 months 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 side-by-side diff with in-line comments
Download patch
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);
+}

Powered by Google App Engine
This is Rietveld 408576698