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

Side by Side Diff: ui/message_center/cocoa/notification_controller_unittest.mm

Issue 101473003: Do not allow creating dummy notifier id from production, for safety. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix Created 7 years 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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 "ui/message_center/cocoa/notification_controller.h" 5 #import "ui/message_center/cocoa/notification_controller.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/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "base/strings/sys_string_conversions.h" 10 #include "base/strings/sys_string_conversions.h"
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
48 std::string last_removed_id_; 48 std::string last_removed_id_;
49 bool last_removed_by_user_; 49 bool last_removed_by_user_;
50 int remove_count_; 50 int remove_count_;
51 51
52 std::string last_clicked_id_; 52 std::string last_clicked_id_;
53 int last_clicked_index_; 53 int last_clicked_index_;
54 54
55 DISALLOW_COPY_AND_ASSIGN(MockMessageCenter); 55 DISALLOW_COPY_AND_ASSIGN(MockMessageCenter);
56 }; 56 };
57 57
58 } 58 } // namespace
59 59
60 @implementation MCNotificationController (TestingInterface) 60 @implementation MCNotificationController (TestingInterface)
61 - (NSButton*)closeButton { 61 - (NSButton*)closeButton {
62 return closeButton_.get(); 62 return closeButton_.get();
63 } 63 }
64 64
65 - (NSButton*)secondButton { 65 - (NSButton*)secondButton {
66 // The buttons are in Cocoa-y-order, so the 2nd button is first. 66 // The buttons are in Cocoa-y-order, so the 2nd button is first.
67 NSView* view = [[bottomView_ subviews] objectAtIndex:0]; 67 NSView* view = [[bottomView_ subviews] objectAtIndex:0];
68 return base::mac::ObjCCastStrict<NSButton>(view); 68 return base::mac::ObjCCastStrict<NSButton>(view);
(...skipping 17 matching lines...) Expand all
86 86
87 - (NSTextView*)contextMessageView { 87 - (NSTextView*)contextMessageView {
88 return contextMessage_.get(); 88 return contextMessage_.get();
89 } 89 }
90 90
91 - (NSView*)listView { 91 - (NSView*)listView {
92 return listView_.get(); 92 return listView_.get();
93 } 93 }
94 @end 94 @end
95 95
96 namespace message_center {
97
96 class NotificationControllerTest : public ui::CocoaTest { 98 class NotificationControllerTest : public ui::CocoaTest {
97 public: 99 public:
98 NSImage* TestIcon() { 100 NSImage* TestIcon() {
99 return [NSImage imageNamed:NSImageNameUser]; 101 return [NSImage imageNamed:NSImageNameUser];
100 } 102 }
103
104 protected:
105 message_center::NotifierId DummyNotifierId() {
106 return message_center::NotifierId();
107 }
101 }; 108 };
102 109
103 TEST_F(NotificationControllerTest, BasicLayout) { 110 TEST_F(NotificationControllerTest, BasicLayout) {
104 scoped_ptr<message_center::Notification> notification( 111 scoped_ptr<message_center::Notification> notification(
105 new message_center::Notification( 112 new message_center::Notification(
106 message_center::NOTIFICATION_TYPE_SIMPLE, 113 message_center::NOTIFICATION_TYPE_SIMPLE,
107 "", 114 "",
108 ASCIIToUTF16("Added to circles"), 115 ASCIIToUTF16("Added to circles"),
109 ASCIIToUTF16("Jonathan and 5 others"), 116 ASCIIToUTF16("Jonathan and 5 others"),
110 gfx::Image(), 117 gfx::Image(),
111 string16(), 118 string16(),
112 message_center::NotifierId(), 119 DummyNotifierId(),
113 message_center::RichNotificationData(), 120 message_center::RichNotificationData(),
114 NULL)); 121 NULL));
115 notification->set_icon(gfx::Image([TestIcon() retain])); 122 notification->set_icon(gfx::Image([TestIcon() retain]));
116 123
117 base::scoped_nsobject<MCNotificationController> controller( 124 base::scoped_nsobject<MCNotificationController> controller(
118 [[MCNotificationController alloc] initWithNotification:notification.get() 125 [[MCNotificationController alloc] initWithNotification:notification.get()
119 messageCenter:NULL]); 126 messageCenter:NULL]);
120 [controller view]; 127 [controller view];
121 128
122 EXPECT_EQ(TestIcon(), [[controller iconView] image]); 129 EXPECT_EQ(TestIcon(), [[controller iconView] image]);
123 EXPECT_EQ(base::SysNSStringToUTF16([[controller titleView] string]), 130 EXPECT_EQ(base::SysNSStringToUTF16([[controller titleView] string]),
124 notification->title()); 131 notification->title());
125 EXPECT_EQ(base::SysNSStringToUTF16([[controller messageView] string]), 132 EXPECT_EQ(base::SysNSStringToUTF16([[controller messageView] string]),
126 notification->message()); 133 notification->message());
127 EXPECT_EQ(controller.get(), [[controller closeButton] target]); 134 EXPECT_EQ(controller.get(), [[controller closeButton] target]);
128 } 135 }
129 136
130 TEST_F(NotificationControllerTest, OverflowText) { 137 TEST_F(NotificationControllerTest, OverflowText) {
131 scoped_ptr<message_center::Notification> notification( 138 scoped_ptr<message_center::Notification> notification(
132 new message_center::Notification( 139 new message_center::Notification(
133 message_center::NOTIFICATION_TYPE_SIMPLE, 140 message_center::NOTIFICATION_TYPE_SIMPLE,
134 "", 141 "",
135 ASCIIToUTF16("This is a much longer title that should wrap " 142 ASCIIToUTF16("This is a much longer title that should wrap "
136 "multiple lines."), 143 "multiple lines."),
137 ASCIIToUTF16("And even the message is long. This sure is a wordy " 144 ASCIIToUTF16("And even the message is long. This sure is a wordy "
138 "notification. Are you really going to read this " 145 "notification. Are you really going to read this "
139 "entire thing?"), 146 "entire thing?"),
140 gfx::Image(), 147 gfx::Image(),
141 string16(), 148 string16(),
142 message_center::NotifierId(), 149 DummyNotifierId(),
143 message_center::RichNotificationData(), 150 message_center::RichNotificationData(),
144 NULL)); 151 NULL));
145 base::scoped_nsobject<MCNotificationController> controller( 152 base::scoped_nsobject<MCNotificationController> controller(
146 [[MCNotificationController alloc] initWithNotification:notification.get() 153 [[MCNotificationController alloc] initWithNotification:notification.get()
147 messageCenter:NULL]); 154 messageCenter:NULL]);
148 [controller view]; 155 [controller view];
149 156
150 EXPECT_GT(NSHeight([[controller view] frame]), 157 EXPECT_GT(NSHeight([[controller view] frame]),
151 message_center::kNotificationIconSize); 158 message_center::kNotificationIconSize);
152 } 159 }
153 160
154 TEST_F(NotificationControllerTest, Close) { 161 TEST_F(NotificationControllerTest, Close) {
155 scoped_ptr<message_center::Notification> notification( 162 scoped_ptr<message_center::Notification> notification(
156 new message_center::Notification( 163 new message_center::Notification(
157 message_center::NOTIFICATION_TYPE_SIMPLE, 164 message_center::NOTIFICATION_TYPE_SIMPLE,
158 "an_id", 165 "an_id",
159 string16(), 166 string16(),
160 string16(), 167 string16(),
161 gfx::Image(), 168 gfx::Image(),
162 string16(), 169 string16(),
163 message_center::NotifierId(), 170 DummyNotifierId(),
164 message_center::RichNotificationData(), 171 message_center::RichNotificationData(),
165 NULL)); 172 NULL));
166 MockMessageCenter message_center; 173 MockMessageCenter message_center;
167 174
168 base::scoped_nsobject<MCNotificationController> controller( 175 base::scoped_nsobject<MCNotificationController> controller(
169 [[MCNotificationController alloc] initWithNotification:notification.get() 176 [[MCNotificationController alloc] initWithNotification:notification.get()
170 messageCenter:&message_center]); 177 messageCenter:&message_center]);
171 [controller view]; 178 [controller view];
172 179
173 [[controller closeButton] performClick:nil]; 180 [[controller closeButton] performClick:nil];
174 181
175 EXPECT_EQ(1, message_center.remove_count()); 182 EXPECT_EQ(1, message_center.remove_count());
176 EXPECT_EQ("an_id", message_center.last_removed_id()); 183 EXPECT_EQ("an_id", message_center.last_removed_id());
177 EXPECT_TRUE(message_center.last_removed_by_user()); 184 EXPECT_TRUE(message_center.last_removed_by_user());
178 } 185 }
179 186
180 TEST_F(NotificationControllerTest, Update) { 187 TEST_F(NotificationControllerTest, Update) {
181 scoped_ptr<message_center::Notification> notification( 188 scoped_ptr<message_center::Notification> notification(
182 new message_center::Notification( 189 new message_center::Notification(
183 message_center::NOTIFICATION_TYPE_SIMPLE, 190 message_center::NOTIFICATION_TYPE_SIMPLE,
184 "", 191 "",
185 ASCIIToUTF16("A simple title"), 192 ASCIIToUTF16("A simple title"),
186 ASCIIToUTF16("This message isn't too long and should fit in the" 193 ASCIIToUTF16("This message isn't too long and should fit in the"
187 "default bounds."), 194 "default bounds."),
188 gfx::Image(), 195 gfx::Image(),
189 string16(), 196 string16(),
190 message_center::NotifierId(), 197 DummyNotifierId(),
191 message_center::RichNotificationData(), 198 message_center::RichNotificationData(),
192 NULL)); 199 NULL));
193 base::scoped_nsobject<MCNotificationController> controller( 200 base::scoped_nsobject<MCNotificationController> controller(
194 [[MCNotificationController alloc] initWithNotification:notification.get() 201 [[MCNotificationController alloc] initWithNotification:notification.get()
195 messageCenter:NULL]); 202 messageCenter:NULL]);
196 203
197 // Set up the default layout. 204 // Set up the default layout.
198 [controller view]; 205 [controller view];
199 EXPECT_EQ(NSHeight([[controller view] frame]), 206 EXPECT_EQ(NSHeight([[controller view] frame]),
200 message_center::kNotificationIconSize); 207 message_center::kNotificationIconSize);
(...skipping 15 matching lines...) Expand all
216 optional.buttons.push_back(button2); 223 optional.buttons.push_back(button2);
217 224
218 scoped_ptr<message_center::Notification> notification( 225 scoped_ptr<message_center::Notification> notification(
219 new message_center::Notification( 226 new message_center::Notification(
220 message_center::NOTIFICATION_TYPE_BASE_FORMAT, 227 message_center::NOTIFICATION_TYPE_BASE_FORMAT,
221 "an_id", 228 "an_id",
222 string16(), 229 string16(),
223 string16(), 230 string16(),
224 gfx::Image(), 231 gfx::Image(),
225 string16(), 232 string16(),
226 message_center::NotifierId(), 233 DummyNotifierId(),
227 optional, 234 optional,
228 NULL)); 235 NULL));
229 MockMessageCenter message_center; 236 MockMessageCenter message_center;
230 237
231 base::scoped_nsobject<MCNotificationController> controller( 238 base::scoped_nsobject<MCNotificationController> controller(
232 [[MCNotificationController alloc] initWithNotification:notification.get() 239 [[MCNotificationController alloc] initWithNotification:notification.get()
233 messageCenter:&message_center]); 240 messageCenter:&message_center]);
234 [controller view]; 241 [controller view];
235 242
236 [[controller secondButton] performClick:nil]; 243 [[controller secondButton] performClick:nil];
237 244
238 EXPECT_EQ("an_id", message_center.last_clicked_id()); 245 EXPECT_EQ("an_id", message_center.last_clicked_id());
239 EXPECT_EQ(1, message_center.last_clicked_index()); 246 EXPECT_EQ(1, message_center.last_clicked_index());
240 } 247 }
241 248
242 TEST_F(NotificationControllerTest, Image) { 249 TEST_F(NotificationControllerTest, Image) {
243 scoped_ptr<message_center::Notification> notification( 250 scoped_ptr<message_center::Notification> notification(
244 new message_center::Notification( 251 new message_center::Notification(
245 message_center::NOTIFICATION_TYPE_BASE_FORMAT, 252 message_center::NOTIFICATION_TYPE_BASE_FORMAT,
246 "an_id", 253 "an_id",
247 string16(), 254 string16(),
248 string16(), 255 string16(),
249 gfx::Image(), 256 gfx::Image(),
250 string16(), 257 string16(),
251 message_center::NotifierId(), 258 DummyNotifierId(),
252 message_center::RichNotificationData(), 259 message_center::RichNotificationData(),
253 NULL)); 260 NULL));
254 NSImage* image = [NSImage imageNamed:NSImageNameFolder]; 261 NSImage* image = [NSImage imageNamed:NSImageNameFolder];
255 notification->set_image(gfx::Image([image retain])); 262 notification->set_image(gfx::Image([image retain]));
256 263
257 MockMessageCenter message_center; 264 MockMessageCenter message_center;
258 265
259 base::scoped_nsobject<MCNotificationController> controller( 266 base::scoped_nsobject<MCNotificationController> controller(
260 [[MCNotificationController alloc] initWithNotification:notification.get() 267 [[MCNotificationController alloc] initWithNotification:notification.get()
261 messageCenter:&message_center]); 268 messageCenter:&message_center]);
(...skipping 21 matching lines...) Expand all
283 optional.context_message = UTF8ToUTF16("Context Message"); 290 optional.context_message = UTF8ToUTF16("Context Message");
284 291
285 scoped_ptr<message_center::Notification> notification( 292 scoped_ptr<message_center::Notification> notification(
286 new message_center::Notification( 293 new message_center::Notification(
287 message_center::NOTIFICATION_TYPE_BASE_FORMAT, 294 message_center::NOTIFICATION_TYPE_BASE_FORMAT,
288 "an_id", 295 "an_id",
289 UTF8ToUTF16("Notification Title"), 296 UTF8ToUTF16("Notification Title"),
290 UTF8ToUTF16("Notification Message - should be hidden"), 297 UTF8ToUTF16("Notification Message - should be hidden"),
291 gfx::Image(), 298 gfx::Image(),
292 string16(), 299 string16(),
293 message_center::NotifierId(), 300 DummyNotifierId(),
294 optional, 301 optional,
295 NULL)); 302 NULL));
296 303
297 MockMessageCenter message_center; 304 MockMessageCenter message_center;
298 base::scoped_nsobject<MCNotificationController> controller( 305 base::scoped_nsobject<MCNotificationController> controller(
299 [[MCNotificationController alloc] initWithNotification:notification.get() 306 [[MCNotificationController alloc] initWithNotification:notification.get()
300 messageCenter:&message_center]); 307 messageCenter:&message_center]);
301 [controller view]; 308 [controller view];
302 309
303 EXPECT_FALSE([[controller titleView] isHidden]); 310 EXPECT_FALSE([[controller titleView] isHidden]);
304 EXPECT_TRUE([[controller messageView] isHidden]); 311 EXPECT_TRUE([[controller messageView] isHidden]);
305 EXPECT_FALSE([[controller contextMessageView] isHidden]); 312 EXPECT_FALSE([[controller contextMessageView] isHidden]);
306 313
307 EXPECT_EQ(3u, [[[controller listView] subviews] count]); 314 EXPECT_EQ(3u, [[[controller listView] subviews] count]);
308 EXPECT_LT(NSMaxY([[controller listView] frame]), 315 EXPECT_LT(NSMaxY([[controller listView] frame]),
309 NSMinY([[controller titleView] frame])); 316 NSMinY([[controller titleView] frame]));
310 } 317 }
318
319 } // namespace message_center
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698