| OLD | NEW |
| 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 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 110 | 110 |
| 111 protected: | 111 protected: |
| 112 message_center::NotifierId DummyNotifierId() { | 112 message_center::NotifierId DummyNotifierId() { |
| 113 return message_center::NotifierId(); | 113 return message_center::NotifierId(); |
| 114 } | 114 } |
| 115 }; | 115 }; |
| 116 | 116 |
| 117 TEST_F(NotificationControllerTest, BasicLayout) { | 117 TEST_F(NotificationControllerTest, BasicLayout) { |
| 118 scoped_ptr<message_center::Notification> notification( | 118 scoped_ptr<message_center::Notification> notification( |
| 119 new message_center::Notification( | 119 new message_center::Notification( |
| 120 message_center::NOTIFICATION_TYPE_SIMPLE, | 120 message_center::NOTIFICATION_TYPE_SIMPLE, "", |
| 121 "", | |
| 122 ASCIIToUTF16("Added to circles"), | 121 ASCIIToUTF16("Added to circles"), |
| 123 ASCIIToUTF16("Jonathan and 5 others"), | 122 ASCIIToUTF16("Jonathan and 5 others"), gfx::Image(), base::string16(), |
| 124 gfx::Image(), | 123 GURL(), DummyNotifierId(), message_center::RichNotificationData(), |
| 125 base::string16(), | |
| 126 DummyNotifierId(), | |
| 127 message_center::RichNotificationData(), | |
| 128 NULL)); | 124 NULL)); |
| 129 gfx::Image testIcon([TestIcon() retain]); | 125 gfx::Image testIcon([TestIcon() retain]); |
| 130 notification->set_icon(testIcon); | 126 notification->set_icon(testIcon); |
| 131 notification->set_small_image(testIcon); | 127 notification->set_small_image(testIcon); |
| 132 | 128 |
| 133 base::scoped_nsobject<MCNotificationController> controller( | 129 base::scoped_nsobject<MCNotificationController> controller( |
| 134 [[MCNotificationController alloc] initWithNotification:notification.get() | 130 [[MCNotificationController alloc] initWithNotification:notification.get() |
| 135 messageCenter:NULL]); | 131 messageCenter:NULL]); |
| 136 [controller view]; | 132 [controller view]; |
| 137 | 133 |
| 138 EXPECT_EQ(TestIcon(), [[controller iconView] image]); | 134 EXPECT_EQ(TestIcon(), [[controller iconView] image]); |
| 139 EXPECT_EQ(TestIcon(), [[controller smallImageView] image]); | 135 EXPECT_EQ(TestIcon(), [[controller smallImageView] image]); |
| 140 EXPECT_EQ(base::SysNSStringToUTF16([[controller titleView] string]), | 136 EXPECT_EQ(base::SysNSStringToUTF16([[controller titleView] string]), |
| 141 notification->title()); | 137 notification->title()); |
| 142 EXPECT_EQ(base::SysNSStringToUTF16([[controller messageView] string]), | 138 EXPECT_EQ(base::SysNSStringToUTF16([[controller messageView] string]), |
| 143 notification->message()); | 139 notification->message()); |
| 144 EXPECT_EQ(controller.get(), [[controller closeButton] target]); | 140 EXPECT_EQ(controller.get(), [[controller closeButton] target]); |
| 145 } | 141 } |
| 146 | 142 |
| 147 TEST_F(NotificationControllerTest, OverflowText) { | 143 TEST_F(NotificationControllerTest, OverflowText) { |
| 148 scoped_ptr<message_center::Notification> notification( | 144 scoped_ptr<message_center::Notification> notification( |
| 149 new message_center::Notification( | 145 new message_center::Notification( |
| 150 message_center::NOTIFICATION_TYPE_SIMPLE, | 146 message_center::NOTIFICATION_TYPE_SIMPLE, "", |
| 151 "", | |
| 152 ASCIIToUTF16("This is a much longer title that should wrap " | 147 ASCIIToUTF16("This is a much longer title that should wrap " |
| 153 "multiple lines."), | 148 "multiple lines."), |
| 154 ASCIIToUTF16("And even the message is long. This sure is a wordy " | 149 ASCIIToUTF16("And even the message is long. This sure is a wordy " |
| 155 "notification. Are you really going to read this " | 150 "notification. Are you really going to read this " |
| 156 "entire thing?"), | 151 "entire thing?"), |
| 157 gfx::Image(), | 152 gfx::Image(), base::string16(), GURL(), DummyNotifierId(), |
| 158 base::string16(), | 153 message_center::RichNotificationData(), NULL)); |
| 159 DummyNotifierId(), | |
| 160 message_center::RichNotificationData(), | |
| 161 NULL)); | |
| 162 base::scoped_nsobject<MCNotificationController> controller( | 154 base::scoped_nsobject<MCNotificationController> controller( |
| 163 [[MCNotificationController alloc] initWithNotification:notification.get() | 155 [[MCNotificationController alloc] initWithNotification:notification.get() |
| 164 messageCenter:NULL]); | 156 messageCenter:NULL]); |
| 165 [controller view]; | 157 [controller view]; |
| 166 | 158 |
| 167 EXPECT_GT(NSHeight([[controller view] frame]), | 159 EXPECT_GT(NSHeight([[controller view] frame]), |
| 168 message_center::kNotificationIconSize); | 160 message_center::kNotificationIconSize); |
| 169 } | 161 } |
| 170 | 162 |
| 171 TEST_F(NotificationControllerTest, Close) { | 163 TEST_F(NotificationControllerTest, Close) { |
| 172 scoped_ptr<message_center::Notification> notification( | 164 scoped_ptr<message_center::Notification> notification( |
| 173 new message_center::Notification( | 165 new message_center::Notification( |
| 174 message_center::NOTIFICATION_TYPE_SIMPLE, | 166 message_center::NOTIFICATION_TYPE_SIMPLE, "an_id", base::string16(), |
| 175 "an_id", | 167 base::string16(), gfx::Image(), base::string16(), GURL(), |
| 176 base::string16(), | 168 DummyNotifierId(), message_center::RichNotificationData(), NULL)); |
| 177 base::string16(), | |
| 178 gfx::Image(), | |
| 179 base::string16(), | |
| 180 DummyNotifierId(), | |
| 181 message_center::RichNotificationData(), | |
| 182 NULL)); | |
| 183 MockMessageCenter message_center; | 169 MockMessageCenter message_center; |
| 184 | 170 |
| 185 base::scoped_nsobject<MCNotificationController> controller( | 171 base::scoped_nsobject<MCNotificationController> controller( |
| 186 [[MCNotificationController alloc] initWithNotification:notification.get() | 172 [[MCNotificationController alloc] initWithNotification:notification.get() |
| 187 messageCenter:&message_center]); | 173 messageCenter:&message_center]); |
| 188 [controller view]; | 174 [controller view]; |
| 189 | 175 |
| 190 [[controller closeButton] performClick:nil]; | 176 [[controller closeButton] performClick:nil]; |
| 191 | 177 |
| 192 EXPECT_EQ(1, message_center.remove_count()); | 178 EXPECT_EQ(1, message_center.remove_count()); |
| 193 EXPECT_EQ("an_id", message_center.last_removed_id()); | 179 EXPECT_EQ("an_id", message_center.last_removed_id()); |
| 194 EXPECT_TRUE(message_center.last_removed_by_user()); | 180 EXPECT_TRUE(message_center.last_removed_by_user()); |
| 195 } | 181 } |
| 196 | 182 |
| 197 TEST_F(NotificationControllerTest, Update) { | 183 TEST_F(NotificationControllerTest, Update) { |
| 198 scoped_ptr<message_center::Notification> notification( | 184 scoped_ptr<message_center::Notification> notification( |
| 199 new message_center::Notification( | 185 new message_center::Notification( |
| 200 message_center::NOTIFICATION_TYPE_SIMPLE, | 186 message_center::NOTIFICATION_TYPE_SIMPLE, "", |
| 201 "", | |
| 202 ASCIIToUTF16("A simple title"), | 187 ASCIIToUTF16("A simple title"), |
| 203 ASCIIToUTF16("This message isn't too long and should fit in the" | 188 ASCIIToUTF16("This message isn't too long and should fit in the" |
| 204 "default bounds."), | 189 "default bounds."), |
| 205 gfx::Image(), | 190 gfx::Image(), base::string16(), GURL(), DummyNotifierId(), |
| 206 base::string16(), | 191 message_center::RichNotificationData(), NULL)); |
| 207 DummyNotifierId(), | |
| 208 message_center::RichNotificationData(), | |
| 209 NULL)); | |
| 210 base::scoped_nsobject<MCNotificationController> controller( | 192 base::scoped_nsobject<MCNotificationController> controller( |
| 211 [[MCNotificationController alloc] initWithNotification:notification.get() | 193 [[MCNotificationController alloc] initWithNotification:notification.get() |
| 212 messageCenter:NULL]); | 194 messageCenter:NULL]); |
| 213 | 195 |
| 214 // Set up the default layout. | 196 // Set up the default layout. |
| 215 [controller view]; | 197 [controller view]; |
| 216 EXPECT_EQ(NSHeight([[controller view] frame]), | 198 EXPECT_EQ(NSHeight([[controller view] frame]), |
| 217 message_center::kNotificationIconSize); | 199 message_center::kNotificationIconSize); |
| 218 EXPECT_FALSE([[controller iconView] image]); | 200 EXPECT_FALSE([[controller iconView] image]); |
| 219 EXPECT_FALSE([[controller smallImageView] image]); | 201 EXPECT_FALSE([[controller smallImageView] image]); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 231 | 213 |
| 232 TEST_F(NotificationControllerTest, Buttons) { | 214 TEST_F(NotificationControllerTest, Buttons) { |
| 233 message_center::RichNotificationData optional; | 215 message_center::RichNotificationData optional; |
| 234 message_center::ButtonInfo button1(UTF8ToUTF16("button1")); | 216 message_center::ButtonInfo button1(UTF8ToUTF16("button1")); |
| 235 optional.buttons.push_back(button1); | 217 optional.buttons.push_back(button1); |
| 236 message_center::ButtonInfo button2(UTF8ToUTF16("button2")); | 218 message_center::ButtonInfo button2(UTF8ToUTF16("button2")); |
| 237 optional.buttons.push_back(button2); | 219 optional.buttons.push_back(button2); |
| 238 | 220 |
| 239 scoped_ptr<message_center::Notification> notification( | 221 scoped_ptr<message_center::Notification> notification( |
| 240 new message_center::Notification( | 222 new message_center::Notification( |
| 241 message_center::NOTIFICATION_TYPE_BASE_FORMAT, | 223 message_center::NOTIFICATION_TYPE_BASE_FORMAT, "an_id", |
| 242 "an_id", | 224 base::string16(), base::string16(), gfx::Image(), base::string16(), |
| 243 base::string16(), | 225 GURL(), DummyNotifierId(), optional, NULL)); |
| 244 base::string16(), | |
| 245 gfx::Image(), | |
| 246 base::string16(), | |
| 247 DummyNotifierId(), | |
| 248 optional, | |
| 249 NULL)); | |
| 250 MockMessageCenter message_center; | 226 MockMessageCenter message_center; |
| 251 | 227 |
| 252 base::scoped_nsobject<MCNotificationController> controller( | 228 base::scoped_nsobject<MCNotificationController> controller( |
| 253 [[MCNotificationController alloc] initWithNotification:notification.get() | 229 [[MCNotificationController alloc] initWithNotification:notification.get() |
| 254 messageCenter:&message_center]); | 230 messageCenter:&message_center]); |
| 255 [controller view]; | 231 [controller view]; |
| 256 | 232 |
| 257 [[controller secondButton] performClick:nil]; | 233 [[controller secondButton] performClick:nil]; |
| 258 | 234 |
| 259 EXPECT_EQ("an_id", message_center.last_clicked_id()); | 235 EXPECT_EQ("an_id", message_center.last_clicked_id()); |
| 260 EXPECT_EQ(1, message_center.last_clicked_index()); | 236 EXPECT_EQ(1, message_center.last_clicked_index()); |
| 261 } | 237 } |
| 262 | 238 |
| 263 TEST_F(NotificationControllerTest, Image) { | 239 TEST_F(NotificationControllerTest, Image) { |
| 264 scoped_ptr<message_center::Notification> notification( | 240 scoped_ptr<message_center::Notification> notification( |
| 265 new message_center::Notification( | 241 new message_center::Notification( |
| 266 message_center::NOTIFICATION_TYPE_BASE_FORMAT, | 242 message_center::NOTIFICATION_TYPE_BASE_FORMAT, "an_id", |
| 267 "an_id", | 243 base::string16(), base::string16(), gfx::Image(), base::string16(), |
| 268 base::string16(), | 244 GURL(), DummyNotifierId(), message_center::RichNotificationData(), |
| 269 base::string16(), | |
| 270 gfx::Image(), | |
| 271 base::string16(), | |
| 272 DummyNotifierId(), | |
| 273 message_center::RichNotificationData(), | |
| 274 NULL)); | 245 NULL)); |
| 275 NSImage* image = [NSImage imageNamed:NSImageNameFolder]; | 246 NSImage* image = [NSImage imageNamed:NSImageNameFolder]; |
| 276 notification->set_image(gfx::Image([image retain])); | 247 notification->set_image(gfx::Image([image retain])); |
| 277 | 248 |
| 278 MockMessageCenter message_center; | 249 MockMessageCenter message_center; |
| 279 | 250 |
| 280 base::scoped_nsobject<MCNotificationController> controller( | 251 base::scoped_nsobject<MCNotificationController> controller( |
| 281 [[MCNotificationController alloc] initWithNotification:notification.get() | 252 [[MCNotificationController alloc] initWithNotification:notification.get() |
| 282 messageCenter:&message_center]); | 253 messageCenter:&message_center]); |
| 283 [controller view]; | 254 [controller view]; |
| (...skipping 15 matching lines...) Expand all Loading... |
| 299 UTF8ToUTF16("second slightly longer message")); | 270 UTF8ToUTF16("second slightly longer message")); |
| 300 optional.items.push_back(item2); | 271 optional.items.push_back(item2); |
| 301 message_center::NotificationItem item3( | 272 message_center::NotificationItem item3( |
| 302 UTF8ToUTF16(""), // Test for empty string. | 273 UTF8ToUTF16(""), // Test for empty string. |
| 303 UTF8ToUTF16(" ")); // Test for string containing only spaces. | 274 UTF8ToUTF16(" ")); // Test for string containing only spaces. |
| 304 optional.items.push_back(item3); | 275 optional.items.push_back(item3); |
| 305 optional.context_message = UTF8ToUTF16("Context Message"); | 276 optional.context_message = UTF8ToUTF16("Context Message"); |
| 306 | 277 |
| 307 scoped_ptr<message_center::Notification> notification( | 278 scoped_ptr<message_center::Notification> notification( |
| 308 new message_center::Notification( | 279 new message_center::Notification( |
| 309 message_center::NOTIFICATION_TYPE_BASE_FORMAT, | 280 message_center::NOTIFICATION_TYPE_BASE_FORMAT, "an_id", |
| 310 "an_id", | |
| 311 UTF8ToUTF16("Notification Title"), | 281 UTF8ToUTF16("Notification Title"), |
| 312 UTF8ToUTF16("Notification Message - should be hidden"), | 282 UTF8ToUTF16("Notification Message - should be hidden"), gfx::Image(), |
| 313 gfx::Image(), | 283 base::string16(), GURL(), DummyNotifierId(), optional, NULL)); |
| 314 base::string16(), | |
| 315 DummyNotifierId(), | |
| 316 optional, | |
| 317 NULL)); | |
| 318 | 284 |
| 319 MockMessageCenter message_center; | 285 MockMessageCenter message_center; |
| 320 base::scoped_nsobject<MCNotificationController> controller( | 286 base::scoped_nsobject<MCNotificationController> controller( |
| 321 [[MCNotificationController alloc] initWithNotification:notification.get() | 287 [[MCNotificationController alloc] initWithNotification:notification.get() |
| 322 messageCenter:&message_center]); | 288 messageCenter:&message_center]); |
| 323 [controller view]; | 289 [controller view]; |
| 324 | 290 |
| 325 EXPECT_FALSE([[controller titleView] isHidden]); | 291 EXPECT_FALSE([[controller titleView] isHidden]); |
| 326 EXPECT_TRUE([[controller messageView] isHidden]); | 292 EXPECT_TRUE([[controller messageView] isHidden]); |
| 327 EXPECT_FALSE([[controller contextMessageView] isHidden]); | 293 EXPECT_FALSE([[controller contextMessageView] isHidden]); |
| 328 | 294 |
| 329 EXPECT_EQ(3u, [[[controller listView] subviews] count]); | 295 EXPECT_EQ(3u, [[[controller listView] subviews] count]); |
| 330 EXPECT_LT(NSMaxY([[controller listView] frame]), | 296 EXPECT_LT(NSMaxY([[controller listView] frame]), |
| 331 NSMinY([[controller titleView] frame])); | 297 NSMinY([[controller titleView] frame])); |
| 332 } | 298 } |
| 333 | 299 |
| 334 TEST_F(NotificationControllerTest, NoMessage) { | 300 TEST_F(NotificationControllerTest, NoMessage) { |
| 335 message_center::RichNotificationData optional; | 301 message_center::RichNotificationData optional; |
| 336 optional.context_message = UTF8ToUTF16("Context Message"); | 302 optional.context_message = UTF8ToUTF16("Context Message"); |
| 337 | 303 |
| 338 scoped_ptr<message_center::Notification> notification( | 304 scoped_ptr<message_center::Notification> notification( |
| 339 new message_center::Notification( | 305 new message_center::Notification( |
| 340 message_center::NOTIFICATION_TYPE_BASE_FORMAT, | 306 message_center::NOTIFICATION_TYPE_BASE_FORMAT, "an_id", |
| 341 "an_id", | 307 UTF8ToUTF16("Notification Title"), UTF8ToUTF16(""), gfx::Image(), |
| 342 UTF8ToUTF16("Notification Title"), | 308 base::string16(), GURL(), DummyNotifierId(), optional, NULL)); |
| 343 UTF8ToUTF16(""), | |
| 344 gfx::Image(), | |
| 345 base::string16(), | |
| 346 DummyNotifierId(), | |
| 347 optional, | |
| 348 NULL)); | |
| 349 | 309 |
| 350 MockMessageCenter message_center; | 310 MockMessageCenter message_center; |
| 351 base::scoped_nsobject<MCNotificationController> controller( | 311 base::scoped_nsobject<MCNotificationController> controller( |
| 352 [[MCNotificationController alloc] initWithNotification:notification.get() | 312 [[MCNotificationController alloc] initWithNotification:notification.get() |
| 353 messageCenter:&message_center]); | 313 messageCenter:&message_center]); |
| 354 [controller view]; | 314 [controller view]; |
| 355 | 315 |
| 356 EXPECT_FALSE([[controller titleView] isHidden]); | 316 EXPECT_FALSE([[controller titleView] isHidden]); |
| 357 EXPECT_TRUE([[controller messageView] isHidden]); | 317 EXPECT_TRUE([[controller messageView] isHidden]); |
| 358 EXPECT_FALSE([[controller contextMessageView] isHidden]); | 318 EXPECT_FALSE([[controller contextMessageView] isHidden]); |
| 359 } | 319 } |
| 360 | 320 |
| 361 TEST_F(NotificationControllerTest, MessageSize) { | 321 TEST_F(NotificationControllerTest, MessageSize) { |
| 362 message_center::RichNotificationData data; | 322 message_center::RichNotificationData data; |
| 363 std::string id("id"); | 323 std::string id("id"); |
| 364 NotifierId notifier_id(NotifierId::APPLICATION, "notifier"); | 324 NotifierId notifier_id(NotifierId::APPLICATION, "notifier"); |
| 365 scoped_ptr<Notification> notification(new Notification( | 325 scoped_ptr<Notification> notification(new Notification( |
| 366 NOTIFICATION_TYPE_BASE_FORMAT, | 326 NOTIFICATION_TYPE_BASE_FORMAT, id, base::UTF8ToUTF16(""), |
| 367 id, | |
| 368 base::UTF8ToUTF16(""), | |
| 369 ASCIIToUTF16("And\neven\nthe\nmessage is long.\nThis sure is wordy"), | 327 ASCIIToUTF16("And\neven\nthe\nmessage is long.\nThis sure is wordy"), |
| 370 gfx::Image(), | 328 gfx::Image(), base::string16() /* display_source */, GURL(), notifier_id, |
| 371 base::string16() /* display_source */, | 329 data, NULL /* delegate */)); |
| 372 notifier_id, | |
| 373 data, | |
| 374 NULL /* delegate */)); | |
| 375 | 330 |
| 376 base::scoped_nsobject<MCNotificationController> controller( | 331 base::scoped_nsobject<MCNotificationController> controller( |
| 377 [[MCNotificationController alloc] initWithNotification:notification.get() | 332 [[MCNotificationController alloc] initWithNotification:notification.get() |
| 378 messageCenter:NULL]); | 333 messageCenter:NULL]); |
| 379 | 334 |
| 380 // Set up the default layout. | 335 // Set up the default layout. |
| 381 [controller view]; | 336 [controller view]; |
| 382 | 337 |
| 383 auto compute_message_lines = ^{ | 338 auto compute_message_lines = ^{ |
| 384 NSString* string = [[[controller messageView] textStorage] string]; | 339 NSString* string = [[[controller messageView] textStorage] string]; |
| (...skipping 30 matching lines...) Expand all Loading... |
| 415 notification->set_title(ASCIIToUTF16("one line")); | 370 notification->set_title(ASCIIToUTF16("one line")); |
| 416 [controller updateNotification:notification.get()]; | 371 [controller updateNotification:notification.get()]; |
| 417 EXPECT_EQ(2u, compute_message_lines()); | 372 EXPECT_EQ(2u, compute_message_lines()); |
| 418 | 373 |
| 419 // Message, image and two line title: 1 lines. | 374 // Message, image and two line title: 1 lines. |
| 420 notification->set_title(ASCIIToUTF16("two\nlines")); | 375 notification->set_title(ASCIIToUTF16("two\nlines")); |
| 421 [controller updateNotification:notification.get()]; | 376 [controller updateNotification:notification.get()]; |
| 422 EXPECT_EQ(1u, compute_message_lines()); | 377 EXPECT_EQ(1u, compute_message_lines()); |
| 423 | 378 |
| 424 // Same as above, but context message takes away from message lines. | 379 // Same as above, but context message takes away from message lines. |
| 425 notification->set_context_message(base::UTF8ToUTF16("foo")); | 380 notification->set_context_message(UTF8ToUTF16("foo")); |
| 426 notification->set_title(ASCIIToUTF16("")); | 381 notification->set_title(ASCIIToUTF16("")); |
| 427 [controller updateNotification:notification.get()]; | 382 [controller updateNotification:notification.get()]; |
| 428 EXPECT_EQ(1u, compute_message_lines()); | 383 EXPECT_EQ(1u, compute_message_lines()); |
| 429 | 384 |
| 430 notification->set_title(ASCIIToUTF16("one line")); | 385 notification->set_title(ASCIIToUTF16("one line")); |
| 431 [controller updateNotification:notification.get()]; | 386 [controller updateNotification:notification.get()]; |
| 432 EXPECT_EQ(1u, compute_message_lines()); | 387 EXPECT_EQ(1u, compute_message_lines()); |
| 433 | 388 |
| 434 notification->set_title(ASCIIToUTF16("two\nlines")); | 389 notification->set_title(ASCIIToUTF16("two\nlines")); |
| 435 [controller updateNotification:notification.get()]; | 390 [controller updateNotification:notification.get()]; |
| 436 EXPECT_EQ(0u, compute_message_lines()); | 391 EXPECT_EQ(0u, compute_message_lines()); |
| 437 } | 392 } |
| 438 | 393 |
| 439 } // namespace message_center | 394 } // namespace message_center |
| OLD | NEW |