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

Side by Side Diff: chrome/browser/ui/cocoa/notifications/notification_builder_mac_unittest.mm

Issue 2799343003: Add support for native extension notifications (Closed)
Patch Set: Remove dependent CL to land standalone Created 3 years, 8 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 unified diff | Download patch
OLDNEW
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 6
7 #include "base/mac/foundation_util.h" 7 #include "base/mac/foundation_util.h"
8 #include "base/mac/scoped_nsobject.h" 8 #include "base/mac/scoped_nsobject.h"
9 #include "base/strings/sys_string_conversions.h" 9 #include "base/strings/sys_string_conversions.h"
10 #include "chrome/browser/notifications/notification_common.h" 10 #include "chrome/browser/notifications/notification_common.h"
11 #include "chrome/browser/ui/cocoa/notifications/notification_builder_mac.h" 11 #include "chrome/browser/ui/cocoa/notifications/notification_builder_mac.h"
12 #include "chrome/browser/ui/cocoa/notifications/notification_constants_mac.h" 12 #include "chrome/browser/ui/cocoa/notifications/notification_constants_mac.h"
13 #include "testing/gtest/include/gtest/gtest.h" 13 #include "testing/gtest/include/gtest/gtest.h"
14 14
15 TEST(NotificationBuilderMacTest, TestNotificationNoButtons) { 15 TEST(NotificationBuilderMacTest, TestNotificationNoButtons) {
16 base::scoped_nsobject<NotificationBuilder> builder( 16 base::scoped_nsobject<NotificationBuilder> builder(
17 [[NotificationBuilder alloc] initWithCloseLabel:@"Close" 17 [[NotificationBuilder alloc] initWithCloseLabel:@"Close"
18 optionsLabel:@"Options" 18 optionsLabel:@"Options"
19 settingsLabel:@"Settings"]); 19 settingsLabel:@"Settings"]);
20 [builder setTitle:@"Title"]; 20 [builder setTitle:@"Title"];
21 [builder setSubTitle:@"https://www.miguel.com"]; 21 [builder setSubTitle:@"https://www.miguel.com"];
22 [builder setContextMessage:@""]; 22 [builder setContextMessage:@""];
23 [builder setTag:@"tag1"]; 23 [builder setTag:@"tag1"];
24 [builder setIcon:[NSImage imageNamed:@"NSApplicationIcon"]]; 24 [builder setIcon:[NSImage imageNamed:@"NSApplicationIcon"]];
25 [builder setNotificationId:@"notificationId"]; 25 [builder setNotificationId:@"notificationId"];
26 [builder setProfileId:@"profileId"]; 26 [builder setProfileId:@"profileId"];
27 [builder setIncognito:false]; 27 [builder setIncognito:false];
28 [builder setNotificationType: 28 [builder setNotificationType:
29 [NSNumber numberWithInt:NotificationCommon::NON_PERSISTENT]]; 29 [NSNumber numberWithInt:NotificationCommon::NON_PERSISTENT]];
30 [builder setShowSettingsButton:true];
30 31
31 NSUserNotification* notification = [builder buildUserNotification]; 32 NSUserNotification* notification = [builder buildUserNotification];
32 EXPECT_EQ("Title", base::SysNSStringToUTF8([notification title])); 33 EXPECT_EQ("Title", base::SysNSStringToUTF8([notification title]));
33 EXPECT_EQ(nullptr, [notification informativeText]); 34 EXPECT_EQ(nullptr, [notification informativeText]);
34 EXPECT_EQ("https://www.miguel.com", 35 EXPECT_EQ("https://www.miguel.com",
35 base::SysNSStringToUTF8([notification subtitle])); 36 base::SysNSStringToUTF8([notification subtitle]));
36 EXPECT_EQ("tag1", 37 EXPECT_EQ("tag1",
37 base::SysNSStringToUTF8([notification valueForKey:@"identifier"])); 38 base::SysNSStringToUTF8([notification valueForKey:@"identifier"]));
38 39
39 EXPECT_TRUE([notification hasActionButton]); 40 EXPECT_TRUE([notification hasActionButton]);
(...skipping 10 matching lines...) Expand all
50 [builder setTitle:@"Title"]; 51 [builder setTitle:@"Title"];
51 [builder setSubTitle:@"https://www.miguel.com"]; 52 [builder setSubTitle:@"https://www.miguel.com"];
52 [builder setContextMessage:@"SubTitle"]; 53 [builder setContextMessage:@"SubTitle"];
53 [builder setButtons:@"Button1" secondaryButton:@""]; 54 [builder setButtons:@"Button1" secondaryButton:@""];
54 [builder setNotificationId:@"notificationId"]; 55 [builder setNotificationId:@"notificationId"];
55 [builder setProfileId:@"profileId"]; 56 [builder setProfileId:@"profileId"];
56 [builder setIncognito:false]; 57 [builder setIncognito:false];
57 [builder 58 [builder
58 setNotificationType:[NSNumber 59 setNotificationType:[NSNumber
59 numberWithInt:NotificationCommon::PERSISTENT]]; 60 numberWithInt:NotificationCommon::PERSISTENT]];
61 [builder setShowSettingsButton:true];
60 62
61 NSUserNotification* notification = [builder buildUserNotification]; 63 NSUserNotification* notification = [builder buildUserNotification];
62 64
63 EXPECT_EQ("Title", base::SysNSStringToUTF8([notification title])); 65 EXPECT_EQ("Title", base::SysNSStringToUTF8([notification title]));
64 EXPECT_EQ("SubTitle", 66 EXPECT_EQ("SubTitle",
65 base::SysNSStringToUTF8([notification informativeText])); 67 base::SysNSStringToUTF8([notification informativeText]));
66 EXPECT_EQ("https://www.miguel.com", 68 EXPECT_EQ("https://www.miguel.com",
67 base::SysNSStringToUTF8([notification subtitle])); 69 base::SysNSStringToUTF8([notification subtitle]));
68 70
69 EXPECT_TRUE([notification hasActionButton]); 71 EXPECT_TRUE([notification hasActionButton]);
(...skipping 16 matching lines...) Expand all
86 [builder setTitle:@"Title"]; 88 [builder setTitle:@"Title"];
87 [builder setSubTitle:@"https://www.miguel.com"]; 89 [builder setSubTitle:@"https://www.miguel.com"];
88 [builder setContextMessage:@"SubTitle"]; 90 [builder setContextMessage:@"SubTitle"];
89 [builder setButtons:@"Button1" secondaryButton:@"Button2"]; 91 [builder setButtons:@"Button1" secondaryButton:@"Button2"];
90 [builder setNotificationId:@"notificationId"]; 92 [builder setNotificationId:@"notificationId"];
91 [builder setProfileId:@"profileId"]; 93 [builder setProfileId:@"profileId"];
92 [builder setIncognito:false]; 94 [builder setIncognito:false];
93 [builder 95 [builder
94 setNotificationType:[NSNumber 96 setNotificationType:[NSNumber
95 numberWithInt:NotificationCommon::PERSISTENT]]; 97 numberWithInt:NotificationCommon::PERSISTENT]];
98 [builder setShowSettingsButton:true];
96 99
97 NSUserNotification* notification = [builder buildUserNotification]; 100 NSUserNotification* notification = [builder buildUserNotification];
98 101
99 EXPECT_EQ("Title", base::SysNSStringToUTF8([notification title])); 102 EXPECT_EQ("Title", base::SysNSStringToUTF8([notification title]));
100 EXPECT_EQ("SubTitle", 103 EXPECT_EQ("SubTitle",
101 base::SysNSStringToUTF8([notification informativeText])); 104 base::SysNSStringToUTF8([notification informativeText]));
102 EXPECT_EQ("https://www.miguel.com", 105 EXPECT_EQ("https://www.miguel.com",
103 base::SysNSStringToUTF8([notification subtitle])); 106 base::SysNSStringToUTF8([notification subtitle]));
104 107
105 EXPECT_TRUE([notification hasActionButton]); 108 EXPECT_TRUE([notification hasActionButton]);
106 109
107 EXPECT_EQ("Options", 110 EXPECT_EQ("Options",
108 base::SysNSStringToUTF8([notification actionButtonTitle])); 111 base::SysNSStringToUTF8([notification actionButtonTitle]));
109 EXPECT_EQ("Close", base::SysNSStringToUTF8([notification otherButtonTitle])); 112 EXPECT_EQ("Close", base::SysNSStringToUTF8([notification otherButtonTitle]));
110 113
111 NSArray* buttons = [notification valueForKey:@"_alternateActionButtonTitles"]; 114 NSArray* buttons = [notification valueForKey:@"_alternateActionButtonTitles"];
112 ASSERT_EQ(3u, buttons.count); 115 ASSERT_EQ(3u, buttons.count);
113 EXPECT_EQ("Button1", base::SysNSStringToUTF8([buttons objectAtIndex:0])); 116 EXPECT_EQ("Button1", base::SysNSStringToUTF8([buttons objectAtIndex:0]));
114 EXPECT_EQ("Button2", base::SysNSStringToUTF8([buttons objectAtIndex:1])); 117 EXPECT_EQ("Button2", base::SysNSStringToUTF8([buttons objectAtIndex:1]));
115 EXPECT_EQ("Settings", base::SysNSStringToUTF8([buttons objectAtIndex:2])); 118 EXPECT_EQ("Settings", base::SysNSStringToUTF8([buttons objectAtIndex:2]));
116 } 119 }
117 120
121 TEST(NotificationBuilderMacTest, TestNotificationExtensionNoButtons) {
122 base::scoped_nsobject<NotificationBuilder> builder(
123 [[NotificationBuilder alloc] initWithCloseLabel:@"Close"
124 optionsLabel:@"Options"
125 settingsLabel:@"Settings"]);
126 [builder setTitle:@"Title"];
127 [builder setSubTitle:@"https://www.miguel.com"];
128 [builder setContextMessage:@"SubTitle"];
129 [builder setNotificationId:@"notificationId"];
130 [builder setProfileId:@"profileId"];
131 [builder setIncognito:false];
132 [builder
133 setNotificationType:[NSNumber
134 numberWithInt:NotificationCommon::EXTENSION]];
135 [builder setShowSettingsButton:false];
136
137 NSUserNotification* notification = [builder buildUserNotification];
138
139 EXPECT_FALSE(notification.hasActionButton);
140 EXPECT_EQ("Close", base::SysNSStringToUTF8([notification otherButtonTitle]));
141 }
142
143 TEST(NotificationBuilderMacTest, TestNotificationExtensionButtons) {
144 base::scoped_nsobject<NotificationBuilder> builder(
145 [[NotificationBuilder alloc] initWithCloseLabel:@"Close"
146 optionsLabel:@"Options"
147 settingsLabel:@"Settings"]);
148 [builder setTitle:@"Title"];
149 [builder setSubTitle:@"https://www.miguel.com"];
150 [builder setContextMessage:@"SubTitle"];
151 [builder setButtons:@"Button1" secondaryButton:@"Button2"];
152 [builder setNotificationId:@"notificationId"];
153 [builder setProfileId:@"profileId"];
154 [builder setIncognito:false];
155 [builder
156 setNotificationType:[NSNumber
157 numberWithInt:NotificationCommon::EXTENSION]];
158 [builder setShowSettingsButton:false];
159
160 NSUserNotification* notification = [builder buildUserNotification];
161
162 NSArray* buttons = [notification valueForKey:@"_alternateActionButtonTitles"];
163
164 // No settings button
165 ASSERT_EQ(2u, buttons.count);
166 EXPECT_EQ("Button1", base::SysNSStringToUTF8([buttons objectAtIndex:0]));
167 EXPECT_EQ("Button2", base::SysNSStringToUTF8([buttons objectAtIndex:1]));
168 }
169
118 TEST(NotificationBuilderMacTest, TestUserInfo) { 170 TEST(NotificationBuilderMacTest, TestUserInfo) {
119 base::scoped_nsobject<NotificationBuilder> builder( 171 base::scoped_nsobject<NotificationBuilder> builder(
120 [[NotificationBuilder alloc] initWithCloseLabel:@"Close" 172 [[NotificationBuilder alloc] initWithCloseLabel:@"Close"
121 optionsLabel:@"Options" 173 optionsLabel:@"Options"
122 settingsLabel:@"Settings"]); 174 settingsLabel:@"Settings"]);
123 [builder setTitle:@"Title"]; 175 [builder setTitle:@"Title"];
124 [builder setProfileId:@"Profile1"]; 176 [builder setProfileId:@"Profile1"];
125 [builder setOrigin:@"https://www.miguel.com"]; 177 [builder setOrigin:@"https://www.miguel.com"];
126 [builder setNotificationId:@"Notification1"]; 178 [builder setNotificationId:@"Notification1"];
127 [builder setIncognito:true]; 179 [builder setIncognito:true];
128 [builder 180 [builder
129 setNotificationType:[NSNumber 181 setNotificationType:[NSNumber
130 numberWithInt:NotificationCommon::PERSISTENT]]; 182 numberWithInt:NotificationCommon::PERSISTENT]];
183 [builder setShowSettingsButton:true];
131 184
132 NSUserNotification* notification = [builder buildUserNotification]; 185 NSUserNotification* notification = [builder buildUserNotification];
133 EXPECT_EQ("Title", base::SysNSStringToUTF8([notification title])); 186 EXPECT_EQ("Title", base::SysNSStringToUTF8([notification title]));
134 187
135 NSDictionary* userInfo = [notification userInfo]; 188 NSDictionary* userInfo = [notification userInfo];
136 189
137 EXPECT_EQ("https://www.miguel.com", 190 EXPECT_EQ("https://www.miguel.com",
138 base::SysNSStringToUTF8([userInfo 191 base::SysNSStringToUTF8([userInfo
139 objectForKey:notification_constants::kNotificationOrigin])); 192 objectForKey:notification_constants::kNotificationOrigin]));
140 EXPECT_EQ("Notification1", 193 EXPECT_EQ("Notification1",
(...skipping 15 matching lines...) Expand all
156 settingsLabel:@"Settings"]); 209 settingsLabel:@"Settings"]);
157 [sourceBuilder setTitle:@"Title"]; 210 [sourceBuilder setTitle:@"Title"];
158 [sourceBuilder setSubTitle:@"https://www.miguel.com"]; 211 [sourceBuilder setSubTitle:@"https://www.miguel.com"];
159 [sourceBuilder setContextMessage:@"SubTitle"]; 212 [sourceBuilder setContextMessage:@"SubTitle"];
160 [sourceBuilder setNotificationId:@"notificationId"]; 213 [sourceBuilder setNotificationId:@"notificationId"];
161 [sourceBuilder setProfileId:@"profileId"]; 214 [sourceBuilder setProfileId:@"profileId"];
162 [sourceBuilder setIncognito:false]; 215 [sourceBuilder setIncognito:false];
163 [sourceBuilder 216 [sourceBuilder
164 setNotificationType: 217 setNotificationType:
165 [NSNumber numberWithInt:NotificationCommon::NON_PERSISTENT]]; 218 [NSNumber numberWithInt:NotificationCommon::NON_PERSISTENT]];
219 [sourceBuilder setShowSettingsButton:true];
166 220
167 notificationData = [sourceBuilder buildDictionary]; 221 notificationData = [sourceBuilder buildDictionary];
168 } 222 }
169 base::scoped_nsobject<NotificationBuilder> finalBuilder( 223 base::scoped_nsobject<NotificationBuilder> finalBuilder(
170 [[NotificationBuilder alloc] initWithDictionary:notificationData]); 224 [[NotificationBuilder alloc] initWithDictionary:notificationData]);
171 225
172 NSUserNotification* notification = [finalBuilder buildUserNotification]; 226 NSUserNotification* notification = [finalBuilder buildUserNotification];
173 227
174 EXPECT_EQ("Title", base::SysNSStringToUTF8([notification title])); 228 EXPECT_EQ("Title", base::SysNSStringToUTF8([notification title]));
175 EXPECT_EQ("SubTitle", 229 EXPECT_EQ("SubTitle",
176 base::SysNSStringToUTF8([notification informativeText])); 230 base::SysNSStringToUTF8([notification informativeText]));
177 EXPECT_EQ("https://www.miguel.com", 231 EXPECT_EQ("https://www.miguel.com",
178 base::SysNSStringToUTF8([notification subtitle])); 232 base::SysNSStringToUTF8([notification subtitle]));
179 } 233 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698