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

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

Issue 2053613002: Make the notification builder more XPC friendly (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: revert unintended change Created 4 years, 6 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
(Empty)
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
3 // found in the LICENSE file.
4
5 #import <AppKit/AppKit.h>
6
7 #include "base/mac/foundation_util.h"
8 #include "base/mac/scoped_nsobject.h"
9 #include "base/strings/sys_string_conversions.h"
10 #include "chrome/browser/notifications/notification_builder_mac.h"
11 #include "testing/gtest/include/gtest/gtest.h"
12
13 TEST(NotificationBuilderMacTest, TestNotificationNoButtons) {
14 base::scoped_nsobject<NotificationBuilder> builder(
15 [[NotificationBuilder alloc] init]);
16 [builder setTitle:@"Title"];
17 [builder setSubTitle:@"https://www.miguel.com"];
18 [builder setContextMessage:@""];
19 [builder setTag:@"tag1"];
20 [builder setIcon:[NSImage imageNamed:@"NSApplicationIcon"]];
21 [builder setNotificationId:@"notificationId"];
22 [builder setProfileId:@"profileId"];
23 [builder setIncognito:false];
24
25 NSUserNotification* notification = [builder buildUserNotification];
26 EXPECT_EQ("Title", base::SysNSStringToUTF8([notification title]));
27 EXPECT_EQ(nullptr, [notification informativeText]);
28 EXPECT_EQ("https://www.miguel.com",
29 base::SysNSStringToUTF8([notification subtitle]));
30 EXPECT_EQ("tag1",
31 base::SysNSStringToUTF8([notification valueForKey:@"identifier"]));
32
33 EXPECT_TRUE([notification hasActionButton]);
34 EXPECT_EQ("Settings",
35 base::SysNSStringToUTF8([notification actionButtonTitle]));
36 EXPECT_EQ("Close", base::SysNSStringToUTF8([notification otherButtonTitle]));
37 }
38
39 TEST(NotificationBuilderMacTest, TestNotificationOneButton) {
40 base::scoped_nsobject<NotificationBuilder> builder(
41 [[NotificationBuilder alloc] init]);
42 [builder setTitle:@"Title"];
43 [builder setSubTitle:@"https://www.miguel.com"];
44 [builder setContextMessage:@"SubTitle"];
45 [builder setButtons:@"Button1" secondaryButton:@""];
46 [builder setNotificationId:@"notificationId"];
47 [builder setProfileId:@"profileId"];
48 [builder setIncognito:false];
49
50 NSUserNotification* notification = [builder buildUserNotification];
51
52 EXPECT_EQ("Title", base::SysNSStringToUTF8([notification title]));
53 EXPECT_EQ("SubTitle",
54 base::SysNSStringToUTF8([notification informativeText]));
55 EXPECT_EQ("https://www.miguel.com",
56 base::SysNSStringToUTF8([notification subtitle]));
57
58 EXPECT_TRUE([notification hasActionButton]);
59
60 EXPECT_EQ("Options",
61 base::SysNSStringToUTF8([notification actionButtonTitle]));
62 EXPECT_EQ("Close", base::SysNSStringToUTF8([notification otherButtonTitle]));
63
64 NSArray* buttons = [notification valueForKey:@"_alternateActionButtonTitles"];
65 ASSERT_EQ(2u, buttons.count);
66 EXPECT_EQ("Button1", base::SysNSStringToUTF8([buttons objectAtIndex:0]));
67 EXPECT_EQ("Settings", base::SysNSStringToUTF8([buttons objectAtIndex:1]));
68 }
69
70 TEST(NotificationBuilderMacTest, TestNotificationTwoButtons) {
71 base::scoped_nsobject<NotificationBuilder> builder(
72 [[NotificationBuilder alloc] init]);
73 [builder setTitle:@"Title"];
74 [builder setSubTitle:@"https://www.miguel.com"];
75 [builder setContextMessage:@"SubTitle"];
76 [builder setButtons:@"Button1" secondaryButton:@"Button2"];
77 [builder setNotificationId:@"notificationId"];
78 [builder setProfileId:@"profileId"];
79 [builder setIncognito:false];
80
81 NSUserNotification* notification = [builder buildUserNotification];
82
83 EXPECT_EQ("Title", base::SysNSStringToUTF8([notification title]));
84 EXPECT_EQ("SubTitle",
85 base::SysNSStringToUTF8([notification informativeText]));
86 EXPECT_EQ("https://www.miguel.com",
87 base::SysNSStringToUTF8([notification subtitle]));
88
89 EXPECT_TRUE([notification hasActionButton]);
90
91 EXPECT_EQ("Options",
92 base::SysNSStringToUTF8([notification actionButtonTitle]));
93 EXPECT_EQ("Close", base::SysNSStringToUTF8([notification otherButtonTitle]));
94
95 NSArray* buttons = [notification valueForKey:@"_alternateActionButtonTitles"];
96 ASSERT_EQ(3u, buttons.count);
97 EXPECT_EQ("Button1", base::SysNSStringToUTF8([buttons objectAtIndex:0]));
98 EXPECT_EQ("Button2", base::SysNSStringToUTF8([buttons objectAtIndex:1]));
99 EXPECT_EQ("Settings", base::SysNSStringToUTF8([buttons objectAtIndex:2]));
100 }
101
102 TEST(NotificationBuilderMacTest, TestUserInfo) {
103 base::scoped_nsobject<NotificationBuilder> builder(
104 [[NotificationBuilder alloc] init]);
105 [builder setTitle:@"Title"];
106 [builder setProfileId:@"Profile1"];
107 [builder setOrigin:@"https://www.miguel.com"];
108 [builder setNotificationId:@"Notification1"];
109 [builder setIncognito:true];
110
111 NSUserNotification* notification = [builder buildUserNotification];
112 EXPECT_EQ("Title", base::SysNSStringToUTF8([notification title]));
113
114 NSDictionary* userInfo = [notification userInfo];
115
116 EXPECT_EQ("https://www.miguel.com",
117 base::SysNSStringToUTF8([userInfo
118 objectForKey:notification_builder::kNotificationOrigin]));
119 EXPECT_EQ("Notification1",
120 base::SysNSStringToUTF8(
121 [userInfo objectForKey:notification_builder::kNotificationId]));
122 EXPECT_EQ("Profile1",
123 base::SysNSStringToUTF8([userInfo
124 objectForKey:notification_builder::kNotificationProfileId]));
125 EXPECT_TRUE([[userInfo
126 objectForKey:notification_builder::kNotificationIncognito] boolValue]);
127 }
128
129 TEST(NotificationBuilderMacTest, TestBuildDictionary) {
130 NSDictionary* notificationData;
131 {
132 base::scoped_nsobject<NotificationBuilder> sourceBuilder(
133 [[NotificationBuilder alloc] init]);
134 [sourceBuilder setTitle:@"Title"];
135 [sourceBuilder setSubTitle:@"https://www.miguel.com"];
136 [sourceBuilder setContextMessage:@"SubTitle"];
137 [sourceBuilder setNotificationId:@"notificationId"];
138 [sourceBuilder setProfileId:@"profileId"];
139 [sourceBuilder setIncognito:false];
140 notificationData = [sourceBuilder buildDictionary];
141 }
142 base::scoped_nsobject<NotificationBuilder> finalBuilder(
143 [[NotificationBuilder alloc] initWithDictionary:notificationData]);
144
145 NSUserNotification* notification = [finalBuilder buildUserNotification];
146
147 EXPECT_EQ("Title", base::SysNSStringToUTF8([notification title]));
148 EXPECT_EQ("SubTitle",
149 base::SysNSStringToUTF8([notification informativeText]));
150 EXPECT_EQ("https://www.miguel.com",
151 base::SysNSStringToUTF8([notification subtitle]));
152 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698