| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 #include "ui/message_center/notification_list.h" | 5 #include "ui/message_center/notification_list.h" |
| 6 | 6 |
| 7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
| 8 #include "base/i18n/time_formatting.h" | 8 #include "base/i18n/time_formatting.h" |
| 9 #include "base/strings/stringprintf.h" | 9 #include "base/strings/stringprintf.h" |
| 10 #include "base/strings/utf_string_conversions.h" | 10 #include "base/strings/utf_string_conversions.h" |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 46 std::string AddNotification() { | 46 std::string AddNotification() { |
| 47 return AddNotification(message_center::RichNotificationData()); | 47 return AddNotification(message_center::RichNotificationData()); |
| 48 } | 48 } |
| 49 | 49 |
| 50 // Construct a new notification for testing, but don't add it to the list yet. | 50 // Construct a new notification for testing, but don't add it to the list yet. |
| 51 scoped_ptr<Notification> MakeNotification( | 51 scoped_ptr<Notification> MakeNotification( |
| 52 const message_center::RichNotificationData& optional_fields, | 52 const message_center::RichNotificationData& optional_fields, |
| 53 std::string* id_out) { | 53 std::string* id_out) { |
| 54 *id_out = base::StringPrintf(kIdFormat, counter_); | 54 *id_out = base::StringPrintf(kIdFormat, counter_); |
| 55 scoped_ptr<Notification> notification(new Notification( | 55 scoped_ptr<Notification> notification(new Notification( |
| 56 message_center::NOTIFICATION_TYPE_SIMPLE, | 56 message_center::NOTIFICATION_TYPE_SIMPLE, *id_out, |
| 57 *id_out, | |
| 58 UTF8ToUTF16(base::StringPrintf(kTitleFormat, counter_)), | 57 UTF8ToUTF16(base::StringPrintf(kTitleFormat, counter_)), |
| 59 UTF8ToUTF16(base::StringPrintf(kMessageFormat, counter_)), | 58 UTF8ToUTF16(base::StringPrintf(kMessageFormat, counter_)), gfx::Image(), |
| 60 gfx::Image(), | 59 UTF8ToUTF16(kDisplaySource), GURL(), |
| 61 UTF8ToUTF16(kDisplaySource), | 60 NotifierId(NotifierId::APPLICATION, kExtensionId), optional_fields, |
| 62 NotifierId(NotifierId::APPLICATION, kExtensionId), | |
| 63 optional_fields, | |
| 64 NULL)); | 61 NULL)); |
| 65 return notification.Pass(); | 62 return notification.Pass(); |
| 66 } | 63 } |
| 67 | 64 |
| 68 scoped_ptr<Notification> MakeNotification(std::string* id_out) { | 65 scoped_ptr<Notification> MakeNotification(std::string* id_out) { |
| 69 return MakeNotification(message_center::RichNotificationData(), id_out); | 66 return MakeNotification(message_center::RichNotificationData(), id_out); |
| 70 } | 67 } |
| 71 | 68 |
| 72 // Utility methods of AddNotification. | 69 // Utility methods of AddNotification. |
| 73 std::string AddPriorityNotification(NotificationPriority priority) { | 70 std::string AddPriorityNotification(NotificationPriority priority) { |
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 179 EXPECT_EQ(1u, notification_list()->UnreadCount(blockers())); | 176 EXPECT_EQ(1u, notification_list()->UnreadCount(blockers())); |
| 180 notification_list()->MarkSinglePopupAsDisplayed(id1); | 177 notification_list()->MarkSinglePopupAsDisplayed(id1); |
| 181 EXPECT_EQ(0u, notification_list()->UnreadCount(blockers())); | 178 EXPECT_EQ(0u, notification_list()->UnreadCount(blockers())); |
| 182 } | 179 } |
| 183 | 180 |
| 184 TEST_F(NotificationListTest, UpdateNotification) { | 181 TEST_F(NotificationListTest, UpdateNotification) { |
| 185 std::string id0 = AddNotification(); | 182 std::string id0 = AddNotification(); |
| 186 std::string replaced = id0 + "_replaced"; | 183 std::string replaced = id0 + "_replaced"; |
| 187 EXPECT_EQ(1u, notification_list()->NotificationCount(blockers())); | 184 EXPECT_EQ(1u, notification_list()->NotificationCount(blockers())); |
| 188 scoped_ptr<Notification> notification( | 185 scoped_ptr<Notification> notification( |
| 189 new Notification(message_center::NOTIFICATION_TYPE_SIMPLE, | 186 new Notification(message_center::NOTIFICATION_TYPE_SIMPLE, replaced, |
| 190 replaced, | 187 UTF8ToUTF16("newtitle"), UTF8ToUTF16("newbody"), |
| 191 UTF8ToUTF16("newtitle"), | 188 gfx::Image(), UTF8ToUTF16(kDisplaySource), GURL(), |
| 192 UTF8ToUTF16("newbody"), | |
| 193 gfx::Image(), | |
| 194 UTF8ToUTF16(kDisplaySource), | |
| 195 NotifierId(NotifierId::APPLICATION, kExtensionId), | 189 NotifierId(NotifierId::APPLICATION, kExtensionId), |
| 196 message_center::RichNotificationData(), | 190 message_center::RichNotificationData(), NULL)); |
| 197 NULL)); | |
| 198 notification_list()->UpdateNotificationMessage(id0, notification.Pass()); | 191 notification_list()->UpdateNotificationMessage(id0, notification.Pass()); |
| 199 EXPECT_EQ(1u, notification_list()->NotificationCount(blockers())); | 192 EXPECT_EQ(1u, notification_list()->NotificationCount(blockers())); |
| 200 const NotificationList::Notifications notifications = | 193 const NotificationList::Notifications notifications = |
| 201 notification_list()->GetVisibleNotifications(blockers()); | 194 notification_list()->GetVisibleNotifications(blockers()); |
| 202 EXPECT_EQ(replaced, (*notifications.begin())->id()); | 195 EXPECT_EQ(replaced, (*notifications.begin())->id()); |
| 203 EXPECT_EQ(UTF8ToUTF16("newtitle"), (*notifications.begin())->title()); | 196 EXPECT_EQ(UTF8ToUTF16("newtitle"), (*notifications.begin())->title()); |
| 204 EXPECT_EQ(UTF8ToUTF16("newbody"), (*notifications.begin())->message()); | 197 EXPECT_EQ(UTF8ToUTF16("newbody"), (*notifications.begin())->message()); |
| 205 } | 198 } |
| 206 | 199 |
| 207 TEST_F(NotificationListTest, GetNotificationsByNotifierId) { | 200 TEST_F(NotificationListTest, GetNotificationsByNotifierId) { |
| 208 NotifierId id0(NotifierId::APPLICATION, "ext0"); | 201 NotifierId id0(NotifierId::APPLICATION, "ext0"); |
| 209 NotifierId id1(NotifierId::APPLICATION, "ext1"); | 202 NotifierId id1(NotifierId::APPLICATION, "ext1"); |
| 210 NotifierId id2(GURL("http://example.com")); | 203 NotifierId id2(GURL("http://example.com")); |
| 211 NotifierId id3(NotifierId::SYSTEM_COMPONENT, "system-notifier"); | 204 NotifierId id3(NotifierId::SYSTEM_COMPONENT, "system-notifier"); |
| 212 scoped_ptr<Notification> notification( | 205 scoped_ptr<Notification> notification(new Notification( |
| 213 new Notification(message_center::NOTIFICATION_TYPE_SIMPLE, | 206 message_center::NOTIFICATION_TYPE_SIMPLE, "id0", UTF8ToUTF16("title0"), |
| 214 "id0", | 207 UTF8ToUTF16("message0"), gfx::Image(), UTF8ToUTF16("source0"), GURL(), |
| 215 UTF8ToUTF16("title0"), | 208 id0, message_center::RichNotificationData(), NULL)); |
| 216 UTF8ToUTF16("message0"), | |
| 217 gfx::Image(), | |
| 218 UTF8ToUTF16("source0"), | |
| 219 id0, | |
| 220 message_center::RichNotificationData(), | |
| 221 NULL)); | |
| 222 notification_list()->AddNotification(notification.Pass()); | 209 notification_list()->AddNotification(notification.Pass()); |
| 223 notification.reset(new Notification(message_center::NOTIFICATION_TYPE_SIMPLE, | 210 notification.reset(new Notification( |
| 224 "id1", | 211 message_center::NOTIFICATION_TYPE_SIMPLE, "id1", UTF8ToUTF16("title1"), |
| 225 UTF8ToUTF16("title1"), | 212 UTF8ToUTF16("message1"), gfx::Image(), UTF8ToUTF16("source0"), GURL(), |
| 226 UTF8ToUTF16("message1"), | 213 id0, message_center::RichNotificationData(), NULL)); |
| 227 gfx::Image(), | |
| 228 UTF8ToUTF16("source0"), | |
| 229 id0, | |
| 230 message_center::RichNotificationData(), | |
| 231 NULL)); | |
| 232 notification_list()->AddNotification(notification.Pass()); | 214 notification_list()->AddNotification(notification.Pass()); |
| 233 notification.reset(new Notification(message_center::NOTIFICATION_TYPE_SIMPLE, | 215 notification.reset(new Notification( |
| 234 "id2", | 216 message_center::NOTIFICATION_TYPE_SIMPLE, "id2", UTF8ToUTF16("title1"), |
| 235 UTF8ToUTF16("title1"), | 217 UTF8ToUTF16("message1"), gfx::Image(), UTF8ToUTF16("source1"), GURL(), |
| 236 UTF8ToUTF16("message1"), | 218 id0, message_center::RichNotificationData(), NULL)); |
| 237 gfx::Image(), | |
| 238 UTF8ToUTF16("source1"), | |
| 239 id0, | |
| 240 message_center::RichNotificationData(), | |
| 241 NULL)); | |
| 242 notification_list()->AddNotification(notification.Pass()); | 219 notification_list()->AddNotification(notification.Pass()); |
| 243 notification.reset(new Notification(message_center::NOTIFICATION_TYPE_SIMPLE, | 220 notification.reset(new Notification( |
| 244 "id3", | 221 message_center::NOTIFICATION_TYPE_SIMPLE, "id3", UTF8ToUTF16("title1"), |
| 245 UTF8ToUTF16("title1"), | 222 UTF8ToUTF16("message1"), gfx::Image(), UTF8ToUTF16("source2"), GURL(), |
| 246 UTF8ToUTF16("message1"), | 223 id1, message_center::RichNotificationData(), NULL)); |
| 247 gfx::Image(), | |
| 248 UTF8ToUTF16("source2"), | |
| 249 id1, | |
| 250 message_center::RichNotificationData(), | |
| 251 NULL)); | |
| 252 notification_list()->AddNotification(notification.Pass()); | 224 notification_list()->AddNotification(notification.Pass()); |
| 253 notification.reset(new Notification(message_center::NOTIFICATION_TYPE_SIMPLE, | 225 notification.reset(new Notification( |
| 254 "id4", | 226 message_center::NOTIFICATION_TYPE_SIMPLE, "id4", UTF8ToUTF16("title1"), |
| 255 UTF8ToUTF16("title1"), | 227 UTF8ToUTF16("message1"), gfx::Image(), UTF8ToUTF16("source2"), GURL(), |
| 256 UTF8ToUTF16("message1"), | 228 id2, message_center::RichNotificationData(), NULL)); |
| 257 gfx::Image(), | |
| 258 UTF8ToUTF16("source2"), | |
| 259 id2, | |
| 260 message_center::RichNotificationData(), | |
| 261 NULL)); | |
| 262 notification_list()->AddNotification(notification.Pass()); | 229 notification_list()->AddNotification(notification.Pass()); |
| 263 notification.reset(new Notification(message_center::NOTIFICATION_TYPE_SIMPLE, | 230 notification.reset(new Notification( |
| 264 "id5", | 231 message_center::NOTIFICATION_TYPE_SIMPLE, "id5", UTF8ToUTF16("title1"), |
| 265 UTF8ToUTF16("title1"), | 232 UTF8ToUTF16("message1"), gfx::Image(), UTF8ToUTF16("source2"), GURL(), |
| 266 UTF8ToUTF16("message1"), | 233 id3, message_center::RichNotificationData(), NULL)); |
| 267 gfx::Image(), | |
| 268 UTF8ToUTF16("source2"), | |
| 269 id3, | |
| 270 message_center::RichNotificationData(), | |
| 271 NULL)); | |
| 272 notification_list()->AddNotification(notification.Pass()); | 234 notification_list()->AddNotification(notification.Pass()); |
| 273 | 235 |
| 274 NotificationList::Notifications by_notifier_id = | 236 NotificationList::Notifications by_notifier_id = |
| 275 notification_list()->GetNotificationsByNotifierId(id0); | 237 notification_list()->GetNotificationsByNotifierId(id0); |
| 276 EXPECT_TRUE(IsInNotifications(by_notifier_id, "id0")); | 238 EXPECT_TRUE(IsInNotifications(by_notifier_id, "id0")); |
| 277 EXPECT_TRUE(IsInNotifications(by_notifier_id, "id1")); | 239 EXPECT_TRUE(IsInNotifications(by_notifier_id, "id1")); |
| 278 EXPECT_TRUE(IsInNotifications(by_notifier_id, "id2")); | 240 EXPECT_TRUE(IsInNotifications(by_notifier_id, "id2")); |
| 279 EXPECT_FALSE(IsInNotifications(by_notifier_id, "id3")); | 241 EXPECT_FALSE(IsInNotifications(by_notifier_id, "id3")); |
| 280 EXPECT_FALSE(IsInNotifications(by_notifier_id, "id4")); | 242 EXPECT_FALSE(IsInNotifications(by_notifier_id, "id4")); |
| 281 EXPECT_FALSE(IsInNotifications(by_notifier_id, "id5")); | 243 EXPECT_FALSE(IsInNotifications(by_notifier_id, "id5")); |
| (...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 411 EXPECT_EQ(0u, GetPopupCounts()); | 373 EXPECT_EQ(0u, GetPopupCounts()); |
| 412 } | 374 } |
| 413 | 375 |
| 414 TEST_F(NotificationListTest, PriorityPromotion) { | 376 TEST_F(NotificationListTest, PriorityPromotion) { |
| 415 std::string id0 = AddPriorityNotification(LOW_PRIORITY); | 377 std::string id0 = AddPriorityNotification(LOW_PRIORITY); |
| 416 std::string replaced = id0 + "_replaced"; | 378 std::string replaced = id0 + "_replaced"; |
| 417 EXPECT_EQ(1u, notification_list()->NotificationCount(blockers())); | 379 EXPECT_EQ(1u, notification_list()->NotificationCount(blockers())); |
| 418 EXPECT_EQ(0u, GetPopupCounts()); | 380 EXPECT_EQ(0u, GetPopupCounts()); |
| 419 message_center::RichNotificationData optional; | 381 message_center::RichNotificationData optional; |
| 420 optional.priority = 1; | 382 optional.priority = 1; |
| 421 scoped_ptr<Notification> notification( | 383 scoped_ptr<Notification> notification(new Notification( |
| 422 new Notification(message_center::NOTIFICATION_TYPE_SIMPLE, | 384 message_center::NOTIFICATION_TYPE_SIMPLE, replaced, |
| 423 replaced, | 385 UTF8ToUTF16("newtitle"), UTF8ToUTF16("newbody"), gfx::Image(), |
| 424 UTF8ToUTF16("newtitle"), | 386 UTF8ToUTF16(kDisplaySource), GURL(), |
| 425 UTF8ToUTF16("newbody"), | 387 NotifierId(NotifierId::APPLICATION, kExtensionId), optional, NULL)); |
| 426 gfx::Image(), | |
| 427 UTF8ToUTF16(kDisplaySource), | |
| 428 NotifierId(NotifierId::APPLICATION, kExtensionId), | |
| 429 optional, | |
| 430 NULL)); | |
| 431 notification_list()->UpdateNotificationMessage(id0, notification.Pass()); | 388 notification_list()->UpdateNotificationMessage(id0, notification.Pass()); |
| 432 EXPECT_EQ(1u, notification_list()->NotificationCount(blockers())); | 389 EXPECT_EQ(1u, notification_list()->NotificationCount(blockers())); |
| 433 EXPECT_EQ(1u, GetPopupCounts()); | 390 EXPECT_EQ(1u, GetPopupCounts()); |
| 434 const NotificationList::Notifications notifications = | 391 const NotificationList::Notifications notifications = |
| 435 notification_list()->GetVisibleNotifications(blockers()); | 392 notification_list()->GetVisibleNotifications(blockers()); |
| 436 EXPECT_EQ(replaced, (*notifications.begin())->id()); | 393 EXPECT_EQ(replaced, (*notifications.begin())->id()); |
| 437 EXPECT_EQ(UTF8ToUTF16("newtitle"), (*notifications.begin())->title()); | 394 EXPECT_EQ(UTF8ToUTF16("newtitle"), (*notifications.begin())->title()); |
| 438 EXPECT_EQ(UTF8ToUTF16("newbody"), (*notifications.begin())->message()); | 395 EXPECT_EQ(UTF8ToUTF16("newbody"), (*notifications.begin())->message()); |
| 439 EXPECT_EQ(1, (*notifications.begin())->priority()); | 396 EXPECT_EQ(1, (*notifications.begin())->priority()); |
| 440 } | 397 } |
| 441 | 398 |
| 442 TEST_F(NotificationListTest, PriorityPromotionWithPopups) { | 399 TEST_F(NotificationListTest, PriorityPromotionWithPopups) { |
| 443 std::string id0 = AddPriorityNotification(LOW_PRIORITY); | 400 std::string id0 = AddPriorityNotification(LOW_PRIORITY); |
| 444 std::string id1 = AddPriorityNotification(DEFAULT_PRIORITY); | 401 std::string id1 = AddPriorityNotification(DEFAULT_PRIORITY); |
| 445 EXPECT_EQ(1u, GetPopupCounts()); | 402 EXPECT_EQ(1u, GetPopupCounts()); |
| 446 notification_list()->MarkSinglePopupAsShown(id1, true); | 403 notification_list()->MarkSinglePopupAsShown(id1, true); |
| 447 EXPECT_EQ(0u, GetPopupCounts()); | 404 EXPECT_EQ(0u, GetPopupCounts()); |
| 448 | 405 |
| 449 // id0 promoted to LOW->DEFAULT, it'll appear as toast (popup). | 406 // id0 promoted to LOW->DEFAULT, it'll appear as toast (popup). |
| 450 message_center::RichNotificationData priority; | 407 message_center::RichNotificationData priority; |
| 451 priority.priority = DEFAULT_PRIORITY; | 408 priority.priority = DEFAULT_PRIORITY; |
| 452 scoped_ptr<Notification> notification( | 409 scoped_ptr<Notification> notification(new Notification( |
| 453 new Notification(message_center::NOTIFICATION_TYPE_SIMPLE, | 410 message_center::NOTIFICATION_TYPE_SIMPLE, id0, UTF8ToUTF16("newtitle"), |
| 454 id0, | 411 UTF8ToUTF16("newbody"), gfx::Image(), UTF8ToUTF16(kDisplaySource), GURL(), |
| 455 UTF8ToUTF16("newtitle"), | 412 NotifierId(NotifierId::APPLICATION, kExtensionId), priority, NULL)); |
| 456 UTF8ToUTF16("newbody"), | |
| 457 gfx::Image(), | |
| 458 UTF8ToUTF16(kDisplaySource), | |
| 459 NotifierId(NotifierId::APPLICATION, kExtensionId), | |
| 460 priority, | |
| 461 NULL)); | |
| 462 notification_list()->UpdateNotificationMessage(id0, notification.Pass()); | 413 notification_list()->UpdateNotificationMessage(id0, notification.Pass()); |
| 463 EXPECT_EQ(1u, GetPopupCounts()); | 414 EXPECT_EQ(1u, GetPopupCounts()); |
| 464 notification_list()->MarkSinglePopupAsShown(id0, true); | 415 notification_list()->MarkSinglePopupAsShown(id0, true); |
| 465 EXPECT_EQ(0u, GetPopupCounts()); | 416 EXPECT_EQ(0u, GetPopupCounts()); |
| 466 | 417 |
| 467 // update with no promotion change for id0, it won't appear as a toast. | 418 // update with no promotion change for id0, it won't appear as a toast. |
| 468 notification.reset(new Notification(message_center::NOTIFICATION_TYPE_SIMPLE, | 419 notification.reset(new Notification( |
| 469 id0, | 420 message_center::NOTIFICATION_TYPE_SIMPLE, id0, UTF8ToUTF16("newtitle2"), |
| 470 UTF8ToUTF16("newtitle2"), | 421 UTF8ToUTF16("newbody2"), gfx::Image(), UTF8ToUTF16(kDisplaySource), |
| 471 UTF8ToUTF16("newbody2"), | 422 GURL(), NotifierId(NotifierId::APPLICATION, kExtensionId), priority, |
| 472 gfx::Image(), | 423 NULL)); |
| 473 UTF8ToUTF16(kDisplaySource), | |
| 474 NotifierId(NotifierId::APPLICATION, | |
| 475 kExtensionId), | |
| 476 priority, | |
| 477 NULL)); | |
| 478 notification_list()->UpdateNotificationMessage(id0, notification.Pass()); | 424 notification_list()->UpdateNotificationMessage(id0, notification.Pass()); |
| 479 EXPECT_EQ(0u, GetPopupCounts()); | 425 EXPECT_EQ(0u, GetPopupCounts()); |
| 480 | 426 |
| 481 // id1 promoted to DEFAULT->HIGH, it'll appear as toast (popup). | 427 // id1 promoted to DEFAULT->HIGH, it'll appear as toast (popup). |
| 482 priority.priority = HIGH_PRIORITY; | 428 priority.priority = HIGH_PRIORITY; |
| 483 notification.reset(new Notification(message_center::NOTIFICATION_TYPE_SIMPLE, | 429 notification.reset(new Notification( |
| 484 id1, | 430 message_center::NOTIFICATION_TYPE_SIMPLE, id1, UTF8ToUTF16("newtitle"), |
| 485 UTF8ToUTF16("newtitle"), | 431 UTF8ToUTF16("newbody"), gfx::Image(), UTF8ToUTF16(kDisplaySource), GURL(), |
| 486 UTF8ToUTF16("newbody"), | 432 NotifierId(NotifierId::APPLICATION, kExtensionId), priority, NULL)); |
| 487 gfx::Image(), | |
| 488 UTF8ToUTF16(kDisplaySource), | |
| 489 NotifierId(NotifierId::APPLICATION, | |
| 490 kExtensionId), | |
| 491 priority, | |
| 492 NULL)); | |
| 493 notification_list()->UpdateNotificationMessage(id1, notification.Pass()); | 433 notification_list()->UpdateNotificationMessage(id1, notification.Pass()); |
| 494 EXPECT_EQ(1u, GetPopupCounts()); | 434 EXPECT_EQ(1u, GetPopupCounts()); |
| 495 notification_list()->MarkSinglePopupAsShown(id1, true); | 435 notification_list()->MarkSinglePopupAsShown(id1, true); |
| 496 EXPECT_EQ(0u, GetPopupCounts()); | 436 EXPECT_EQ(0u, GetPopupCounts()); |
| 497 | 437 |
| 498 // id1 promoted to HIGH->MAX, it'll appear as toast again. | 438 // id1 promoted to HIGH->MAX, it'll appear as toast again. |
| 499 priority.priority = MAX_PRIORITY; | 439 priority.priority = MAX_PRIORITY; |
| 500 notification.reset(new Notification(message_center::NOTIFICATION_TYPE_SIMPLE, | 440 notification.reset(new Notification( |
| 501 id1, | 441 message_center::NOTIFICATION_TYPE_SIMPLE, id1, UTF8ToUTF16("newtitle2"), |
| 502 UTF8ToUTF16("newtitle2"), | 442 UTF8ToUTF16("newbody2"), gfx::Image(), UTF8ToUTF16(kDisplaySource), |
| 503 UTF8ToUTF16("newbody2"), | 443 GURL(), NotifierId(NotifierId::APPLICATION, kExtensionId), priority, |
| 504 gfx::Image(), | 444 NULL)); |
| 505 UTF8ToUTF16(kDisplaySource), | |
| 506 NotifierId(NotifierId::APPLICATION, | |
| 507 kExtensionId), | |
| 508 priority, | |
| 509 NULL)); | |
| 510 notification_list()->UpdateNotificationMessage(id1, notification.Pass()); | 445 notification_list()->UpdateNotificationMessage(id1, notification.Pass()); |
| 511 EXPECT_EQ(1u, GetPopupCounts()); | 446 EXPECT_EQ(1u, GetPopupCounts()); |
| 512 notification_list()->MarkSinglePopupAsShown(id1, true); | 447 notification_list()->MarkSinglePopupAsShown(id1, true); |
| 513 EXPECT_EQ(0u, GetPopupCounts()); | 448 EXPECT_EQ(0u, GetPopupCounts()); |
| 514 | 449 |
| 515 // id1 demoted to MAX->DEFAULT, no appearing as toast. | 450 // id1 demoted to MAX->DEFAULT, no appearing as toast. |
| 516 priority.priority = DEFAULT_PRIORITY; | 451 priority.priority = DEFAULT_PRIORITY; |
| 517 notification.reset(new Notification(message_center::NOTIFICATION_TYPE_SIMPLE, | 452 notification.reset(new Notification( |
| 518 id1, | 453 message_center::NOTIFICATION_TYPE_SIMPLE, id1, UTF8ToUTF16("newtitle3"), |
| 519 UTF8ToUTF16("newtitle3"), | 454 UTF8ToUTF16("newbody3"), gfx::Image(), UTF8ToUTF16(kDisplaySource), |
| 520 UTF8ToUTF16("newbody3"), | 455 GURL(), NotifierId(NotifierId::APPLICATION, kExtensionId), priority, |
| 521 gfx::Image(), | 456 NULL)); |
| 522 UTF8ToUTF16(kDisplaySource), | |
| 523 NotifierId(NotifierId::APPLICATION, | |
| 524 kExtensionId), | |
| 525 priority, | |
| 526 NULL)); | |
| 527 notification_list()->UpdateNotificationMessage(id1, notification.Pass()); | 457 notification_list()->UpdateNotificationMessage(id1, notification.Pass()); |
| 528 EXPECT_EQ(0u, GetPopupCounts()); | 458 EXPECT_EQ(0u, GetPopupCounts()); |
| 529 } | 459 } |
| 530 | 460 |
| 531 TEST_F(NotificationListTest, WebNotificationUpdatePromotion) { | 461 TEST_F(NotificationListTest, WebNotificationUpdatePromotion) { |
| 532 std::string notification_id = "replaced-web-notification"; | 462 std::string notification_id = "replaced-web-notification"; |
| 533 scoped_ptr<Notification> original_notification( | 463 scoped_ptr<Notification> original_notification(new Notification( |
| 534 new Notification(message_center::NOTIFICATION_TYPE_SIMPLE, | 464 message_center::NOTIFICATION_TYPE_SIMPLE, notification_id, |
| 535 notification_id, | 465 UTF8ToUTF16("Web Notification"), UTF8ToUTF16("Notification contents"), |
| 536 UTF8ToUTF16("Web Notification"), | 466 gfx::Image(), UTF8ToUTF16(kDisplaySource), GURL(), |
| 537 UTF8ToUTF16("Notification contents"), | 467 NotifierId(GURL("https://example.com/")), |
| 538 gfx::Image(), | 468 message_center::RichNotificationData(), NULL)); |
| 539 UTF8ToUTF16(kDisplaySource), | |
| 540 NotifierId(GURL("https://example.com/")), | |
| 541 message_center::RichNotificationData(), | |
| 542 NULL)); | |
| 543 | 469 |
| 544 EXPECT_EQ(0u, GetPopupCounts()); | 470 EXPECT_EQ(0u, GetPopupCounts()); |
| 545 notification_list()->AddNotification(original_notification.Pass()); | 471 notification_list()->AddNotification(original_notification.Pass()); |
| 546 EXPECT_EQ(1u, GetPopupCounts()); | 472 EXPECT_EQ(1u, GetPopupCounts()); |
| 547 | 473 |
| 548 notification_list()->MarkSinglePopupAsShown(notification_id, true); | 474 notification_list()->MarkSinglePopupAsShown(notification_id, true); |
| 549 EXPECT_EQ(0u, GetPopupCounts()); | 475 EXPECT_EQ(0u, GetPopupCounts()); |
| 550 | 476 |
| 551 scoped_ptr<Notification> replaced_notification( | 477 scoped_ptr<Notification> replaced_notification(new Notification( |
| 552 new Notification(message_center::NOTIFICATION_TYPE_SIMPLE, | 478 message_center::NOTIFICATION_TYPE_SIMPLE, notification_id, |
| 553 notification_id, | 479 UTF8ToUTF16("Web Notification Replacement"), |
| 554 UTF8ToUTF16("Web Notification Replacement"), | 480 UTF8ToUTF16("New notification contents"), gfx::Image(), |
| 555 UTF8ToUTF16("New notification contents"), | 481 UTF8ToUTF16(kDisplaySource), GURL(), |
| 556 gfx::Image(), | 482 NotifierId(GURL("https://example.com/")), |
| 557 UTF8ToUTF16(kDisplaySource), | 483 message_center::RichNotificationData(), NULL)); |
| 558 NotifierId(GURL("https://example.com/")), | |
| 559 message_center::RichNotificationData(), | |
| 560 NULL)); | |
| 561 | 484 |
| 562 // Web Notifications will be re-shown as popups even if their priority didn't | 485 // Web Notifications will be re-shown as popups even if their priority didn't |
| 563 // change, to match the behavior of the Web Notification API. | 486 // change, to match the behavior of the Web Notification API. |
| 564 notification_list()->UpdateNotificationMessage(notification_id, | 487 notification_list()->UpdateNotificationMessage(notification_id, |
| 565 replaced_notification.Pass()); | 488 replaced_notification.Pass()); |
| 566 EXPECT_EQ(1u, GetPopupCounts()); | 489 EXPECT_EQ(1u, GetPopupCounts()); |
| 567 } | 490 } |
| 568 | 491 |
| 569 TEST_F(NotificationListTest, NotificationOrderAndPriority) { | 492 TEST_F(NotificationListTest, NotificationOrderAndPriority) { |
| 570 base::Time now = base::Time::Now(); | 493 base::Time now = base::Time::Now(); |
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 652 EXPECT_TRUE(n1->IsRead()); | 575 EXPECT_TRUE(n1->IsRead()); |
| 653 | 576 |
| 654 notification_list()->MarkSinglePopupAsShown(id1, true); | 577 notification_list()->MarkSinglePopupAsShown(id1, true); |
| 655 | 578 |
| 656 n1 = GetNotification(id1); | 579 n1 = GetNotification(id1); |
| 657 EXPECT_TRUE(n1->shown_as_popup()); | 580 EXPECT_TRUE(n1->shown_as_popup()); |
| 658 EXPECT_TRUE(n1->IsRead()); | 581 EXPECT_TRUE(n1->IsRead()); |
| 659 | 582 |
| 660 const std::string replaced("test-replaced-id"); | 583 const std::string replaced("test-replaced-id"); |
| 661 scoped_ptr<Notification> notification( | 584 scoped_ptr<Notification> notification( |
| 662 new Notification(message_center::NOTIFICATION_TYPE_SIMPLE, | 585 new Notification(message_center::NOTIFICATION_TYPE_SIMPLE, replaced, |
| 663 replaced, | 586 UTF8ToUTF16("newtitle"), UTF8ToUTF16("newbody"), |
| 664 UTF8ToUTF16("newtitle"), | 587 gfx::Image(), UTF8ToUTF16(kDisplaySource), GURL(), |
| 665 UTF8ToUTF16("newbody"), | |
| 666 gfx::Image(), | |
| 667 UTF8ToUTF16(kDisplaySource), | |
| 668 NotifierId(NotifierId::APPLICATION, kExtensionId), | 588 NotifierId(NotifierId::APPLICATION, kExtensionId), |
| 669 message_center::RichNotificationData(), | 589 message_center::RichNotificationData(), NULL)); |
| 670 NULL)); | |
| 671 notification_list()->UpdateNotificationMessage(id1, notification.Pass()); | 590 notification_list()->UpdateNotificationMessage(id1, notification.Pass()); |
| 672 n1 = GetNotification(id1); | 591 n1 = GetNotification(id1); |
| 673 EXPECT_TRUE(n1 == NULL); | 592 EXPECT_TRUE(n1 == NULL); |
| 674 const Notification* nr = GetNotification(replaced); | 593 const Notification* nr = GetNotification(replaced); |
| 675 EXPECT_TRUE(nr->shown_as_popup()); | 594 EXPECT_TRUE(nr->shown_as_popup()); |
| 676 EXPECT_TRUE(nr->IsRead()); | 595 EXPECT_TRUE(nr->IsRead()); |
| 677 } | 596 } |
| 678 | 597 |
| 679 TEST_F(NotificationListTest, QuietMode) { | 598 TEST_F(NotificationListTest, QuietMode) { |
| 680 notification_list()->SetQuietMode(true); | 599 notification_list()->SetQuietMode(true); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 698 EXPECT_EQ(1u, notification_list()->UnreadCount(blockers())); | 617 EXPECT_EQ(1u, notification_list()->UnreadCount(blockers())); |
| 699 | 618 |
| 700 notification_list()->MarkSinglePopupAsDisplayed(id); | 619 notification_list()->MarkSinglePopupAsDisplayed(id); |
| 701 EXPECT_EQ(0u, notification_list()->UnreadCount(blockers())); | 620 EXPECT_EQ(0u, notification_list()->UnreadCount(blockers())); |
| 702 notification_list()->MarkSinglePopupAsShown( | 621 notification_list()->MarkSinglePopupAsShown( |
| 703 id, false /* mark_notification_as_read */); | 622 id, false /* mark_notification_as_read */); |
| 704 EXPECT_EQ(1u, notification_list()->UnreadCount(blockers())); | 623 EXPECT_EQ(1u, notification_list()->UnreadCount(blockers())); |
| 705 | 624 |
| 706 // Updates the notification and verifies unread_count doesn't change. | 625 // Updates the notification and verifies unread_count doesn't change. |
| 707 scoped_ptr<Notification> updated_notification(new Notification( | 626 scoped_ptr<Notification> updated_notification(new Notification( |
| 708 message_center::NOTIFICATION_TYPE_SIMPLE, | 627 message_center::NOTIFICATION_TYPE_SIMPLE, id, UTF8ToUTF16("updated"), |
| 709 id, | 628 UTF8ToUTF16("updated"), gfx::Image(), base::string16(), GURL(), |
| 710 UTF8ToUTF16("updated"), | 629 NotifierId(), RichNotificationData(), NULL)); |
| 711 UTF8ToUTF16("updated"), | |
| 712 gfx::Image(), | |
| 713 base::string16(), | |
| 714 NotifierId(), | |
| 715 RichNotificationData(), | |
| 716 NULL)); | |
| 717 notification_list()->AddNotification(updated_notification.Pass()); | 630 notification_list()->AddNotification(updated_notification.Pass()); |
| 718 EXPECT_EQ(1u, notification_list()->UnreadCount(blockers())); | 631 EXPECT_EQ(1u, notification_list()->UnreadCount(blockers())); |
| 719 } | 632 } |
| 720 | 633 |
| 721 TEST_F(NotificationListTest, TestPushingShownNotification) { | 634 TEST_F(NotificationListTest, TestPushingShownNotification) { |
| 722 // Create a notification and mark it as shown. | 635 // Create a notification and mark it as shown. |
| 723 std::string id1; | 636 std::string id1; |
| 724 scoped_ptr<Notification> notification(MakeNotification(&id1)); | 637 scoped_ptr<Notification> notification(MakeNotification(&id1)); |
| 725 notification->set_shown_as_popup(true); | 638 notification->set_shown_as_popup(true); |
| 726 | 639 |
| 727 // Call PushNotification on this notification. | 640 // Call PushNotification on this notification. |
| 728 notification_list()->PushNotification(notification.Pass()); | 641 notification_list()->PushNotification(notification.Pass()); |
| 729 | 642 |
| 730 // Ensure it is still marked as shown. | 643 // Ensure it is still marked as shown. |
| 731 EXPECT_TRUE(GetNotification(id1)->shown_as_popup()); | 644 EXPECT_TRUE(GetNotification(id1)->shown_as_popup()); |
| 732 } | 645 } |
| 733 | 646 |
| 734 TEST_F(NotificationListTest, TestHasNotificationOfType) { | 647 TEST_F(NotificationListTest, TestHasNotificationOfType) { |
| 735 std::string id = AddNotification(); | 648 std::string id = AddNotification(); |
| 736 | 649 |
| 737 EXPECT_TRUE(notification_list()->HasNotificationOfType( | 650 EXPECT_TRUE(notification_list()->HasNotificationOfType( |
| 738 id, message_center::NOTIFICATION_TYPE_SIMPLE)); | 651 id, message_center::NOTIFICATION_TYPE_SIMPLE)); |
| 739 EXPECT_FALSE(notification_list()->HasNotificationOfType( | 652 EXPECT_FALSE(notification_list()->HasNotificationOfType( |
| 740 id, message_center::NOTIFICATION_TYPE_PROGRESS)); | 653 id, message_center::NOTIFICATION_TYPE_PROGRESS)); |
| 741 | 654 |
| 742 scoped_ptr<Notification> updated_notification(new Notification( | 655 scoped_ptr<Notification> updated_notification(new Notification( |
| 743 message_center::NOTIFICATION_TYPE_PROGRESS, | 656 message_center::NOTIFICATION_TYPE_PROGRESS, id, UTF8ToUTF16("updated"), |
| 744 id, | 657 UTF8ToUTF16("updated"), gfx::Image(), base::string16(), GURL(), |
| 745 UTF8ToUTF16("updated"), | 658 NotifierId(), RichNotificationData(), NULL)); |
| 746 UTF8ToUTF16("updated"), | |
| 747 gfx::Image(), | |
| 748 base::string16(), | |
| 749 NotifierId(), | |
| 750 RichNotificationData(), | |
| 751 NULL)); | |
| 752 notification_list()->AddNotification(updated_notification.Pass()); | 659 notification_list()->AddNotification(updated_notification.Pass()); |
| 753 | 660 |
| 754 EXPECT_FALSE(notification_list()->HasNotificationOfType( | 661 EXPECT_FALSE(notification_list()->HasNotificationOfType( |
| 755 id, message_center::NOTIFICATION_TYPE_SIMPLE)); | 662 id, message_center::NOTIFICATION_TYPE_SIMPLE)); |
| 756 EXPECT_TRUE(notification_list()->HasNotificationOfType( | 663 EXPECT_TRUE(notification_list()->HasNotificationOfType( |
| 757 id, message_center::NOTIFICATION_TYPE_PROGRESS)); | 664 id, message_center::NOTIFICATION_TYPE_PROGRESS)); |
| 758 } | 665 } |
| 759 | 666 |
| 760 } // namespace message_center | 667 } // namespace message_center |
| OLD | NEW |