| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 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 #include "ui/message_center/message_center_impl.h" | 5 #include "ui/message_center/message_center_impl.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/message_loop/message_loop.h" | 8 #include "base/message_loop/message_loop.h" |
| 9 #include "base/run_loop.h" | 9 #include "base/run_loop.h" |
| 10 #include "base/strings/utf_string_conversions.h" | 10 #include "base/strings/utf_string_conversions.h" |
| (...skipping 599 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 610 std::string id("id1"); | 610 std::string id("id1"); |
| 611 std::string id2("id2"); | 611 std::string id2("id2"); |
| 612 NotifierId notifier_id1(NotifierId::APPLICATION, "app1"); | 612 NotifierId notifier_id1(NotifierId::APPLICATION, "app1"); |
| 613 | 613 |
| 614 // First, add and update a notification to ensure updates happen | 614 // First, add and update a notification to ensure updates happen |
| 615 // normally. | 615 // normally. |
| 616 scoped_ptr<Notification> notification(CreateSimpleNotification(id)); | 616 scoped_ptr<Notification> notification(CreateSimpleNotification(id)); |
| 617 message_center()->AddNotification(notification.Pass()); | 617 message_center()->AddNotification(notification.Pass()); |
| 618 notification.reset(CreateSimpleNotification(id2)); | 618 notification.reset(CreateSimpleNotification(id2)); |
| 619 message_center()->UpdateNotification(id, notification.Pass()); | 619 message_center()->UpdateNotification(id, notification.Pass()); |
| 620 EXPECT_TRUE(message_center()->HasNotification(id2)); | 620 EXPECT_TRUE(message_center()->FindVisibleNotificationById(id2)); |
| 621 EXPECT_FALSE(message_center()->HasNotification(id)); | 621 EXPECT_FALSE(message_center()->FindVisibleNotificationById(id)); |
| 622 | 622 |
| 623 // Then open the message center. | 623 // Then open the message center. |
| 624 message_center()->SetVisibility(VISIBILITY_MESSAGE_CENTER); | 624 message_center()->SetVisibility(VISIBILITY_MESSAGE_CENTER); |
| 625 | 625 |
| 626 // Then update a notification; nothing should have happened. | 626 // Then update a notification; nothing should have happened. |
| 627 notification.reset(CreateSimpleNotification(id)); | 627 notification.reset(CreateSimpleNotification(id)); |
| 628 message_center()->UpdateNotification(id2, notification.Pass()); | 628 message_center()->UpdateNotification(id2, notification.Pass()); |
| 629 EXPECT_TRUE(message_center()->HasNotification(id2)); | 629 EXPECT_TRUE(message_center()->FindVisibleNotificationById(id2)); |
| 630 EXPECT_FALSE(message_center()->HasNotification(id)); | 630 EXPECT_FALSE(message_center()->FindVisibleNotificationById(id)); |
| 631 | 631 |
| 632 // Close the message center; then the update should have propagated. | 632 // Close the message center; then the update should have propagated. |
| 633 message_center()->SetVisibility(VISIBILITY_TRANSIENT); | 633 message_center()->SetVisibility(VISIBILITY_TRANSIENT); |
| 634 EXPECT_FALSE(message_center()->HasNotification(id2)); | 634 EXPECT_FALSE(message_center()->FindVisibleNotificationById(id2)); |
| 635 EXPECT_TRUE(message_center()->HasNotification(id)); | 635 EXPECT_TRUE(message_center()->FindVisibleNotificationById(id)); |
| 636 } | 636 } |
| 637 | 637 |
| 638 TEST_F(MessageCenterImplTest, ComplexQueueing) { | 638 TEST_F(MessageCenterImplTest, ComplexQueueing) { |
| 639 std::string ids[5] = {"0", "1", "2", "3", "4p"}; | 639 std::string ids[5] = {"0", "1", "2", "3", "4p"}; |
| 640 NotifierId notifier_id1(NotifierId::APPLICATION, "app1"); | 640 NotifierId notifier_id1(NotifierId::APPLICATION, "app1"); |
| 641 | 641 |
| 642 scoped_ptr<Notification> notification; | 642 scoped_ptr<Notification> notification; |
| 643 // Add some notifications | 643 // Add some notifications |
| 644 int i = 0; | 644 int i = 0; |
| 645 for (; i < 3; i++) { | 645 for (; i < 3; i++) { |
| 646 notification.reset(CreateSimpleNotification(ids[i])); | 646 notification.reset(CreateSimpleNotification(ids[i])); |
| 647 message_center()->AddNotification(notification.Pass()); | 647 message_center()->AddNotification(notification.Pass()); |
| 648 } | 648 } |
| 649 for (i = 0; i < 3; i++) { | 649 for (i = 0; i < 3; i++) { |
| 650 EXPECT_TRUE(message_center()->HasNotification(ids[i])); | 650 EXPECT_TRUE(message_center()->FindVisibleNotificationById(ids[i])); |
| 651 } | 651 } |
| 652 for (; i < 5; i++) { | 652 for (; i < 5; i++) { |
| 653 EXPECT_FALSE(message_center()->HasNotification(ids[i])); | 653 EXPECT_FALSE(message_center()->FindVisibleNotificationById(ids[i])); |
| 654 } | 654 } |
| 655 | 655 |
| 656 notification.reset(CreateNotification(ids[4], NOTIFICATION_TYPE_PROGRESS)); | 656 notification.reset(CreateNotification(ids[4], NOTIFICATION_TYPE_PROGRESS)); |
| 657 message_center()->AddNotification(notification.Pass()); | 657 message_center()->AddNotification(notification.Pass()); |
| 658 | 658 |
| 659 // Now start queueing. | 659 // Now start queueing. |
| 660 // NL: ["0", "1", "2", "4p"] | 660 // NL: ["0", "1", "2", "4p"] |
| 661 message_center()->SetVisibility(VISIBILITY_MESSAGE_CENTER); | 661 message_center()->SetVisibility(VISIBILITY_MESSAGE_CENTER); |
| 662 | 662 |
| 663 // This should update notification "1" to have id "3". | 663 // This should update notification "1" to have id "3". |
| 664 notification.reset(CreateSimpleNotification(ids[3])); | 664 notification.reset(CreateSimpleNotification(ids[3])); |
| 665 message_center()->UpdateNotification(ids[1], notification.Pass()); | 665 message_center()->UpdateNotification(ids[1], notification.Pass()); |
| 666 | 666 |
| 667 notification.reset(CreateSimpleNotification(ids[4])); | 667 notification.reset(CreateSimpleNotification(ids[4])); |
| 668 message_center()->UpdateNotification(ids[4], notification.Pass()); | 668 message_center()->UpdateNotification(ids[4], notification.Pass()); |
| 669 | 669 |
| 670 notification.reset(CreateNotification(ids[4], NOTIFICATION_TYPE_PROGRESS)); | 670 notification.reset(CreateNotification(ids[4], NOTIFICATION_TYPE_PROGRESS)); |
| 671 message_center()->UpdateNotification(ids[4], notification.Pass()); | 671 message_center()->UpdateNotification(ids[4], notification.Pass()); |
| 672 | 672 |
| 673 // This should update notification "3" to a new ID after we go TRANSIENT. | 673 // This should update notification "3" to a new ID after we go TRANSIENT. |
| 674 notification.reset(CreateSimpleNotification("New id")); | 674 notification.reset(CreateSimpleNotification("New id")); |
| 675 message_center()->UpdateNotification(ids[3], notification.Pass()); | 675 message_center()->UpdateNotification(ids[3], notification.Pass()); |
| 676 | 676 |
| 677 // This should create a new "3", that doesn't overwrite the update to 3 | 677 // This should create a new "3", that doesn't overwrite the update to 3 |
| 678 // before. | 678 // before. |
| 679 notification.reset(CreateSimpleNotification(ids[3])); | 679 notification.reset(CreateSimpleNotification(ids[3])); |
| 680 message_center()->AddNotification(notification.Pass()); | 680 message_center()->AddNotification(notification.Pass()); |
| 681 | 681 |
| 682 // The NL should still be the same: ["0", "1", "2", "4p"] | 682 // The NL should still be the same: ["0", "1", "2", "4p"] |
| 683 EXPECT_TRUE(message_center()->HasNotification(ids[0])); | 683 EXPECT_TRUE(message_center()->FindVisibleNotificationById(ids[0])); |
| 684 EXPECT_TRUE(message_center()->HasNotification(ids[1])); | 684 EXPECT_TRUE(message_center()->FindVisibleNotificationById(ids[1])); |
| 685 EXPECT_TRUE(message_center()->HasNotification(ids[2])); | 685 EXPECT_TRUE(message_center()->FindVisibleNotificationById(ids[2])); |
| 686 EXPECT_FALSE(message_center()->HasNotification(ids[3])); | 686 EXPECT_FALSE(message_center()->FindVisibleNotificationById(ids[3])); |
| 687 EXPECT_TRUE(message_center()->HasNotification(ids[4])); | 687 EXPECT_TRUE(message_center()->FindVisibleNotificationById(ids[4])); |
| 688 EXPECT_EQ(message_center()->GetVisibleNotifications().size(), 4u); | 688 EXPECT_EQ(message_center()->GetVisibleNotifications().size(), 4u); |
| 689 message_center()->SetVisibility(VISIBILITY_TRANSIENT); | 689 message_center()->SetVisibility(VISIBILITY_TRANSIENT); |
| 690 | 690 |
| 691 EXPECT_TRUE(message_center()->HasNotification(ids[0])); | 691 EXPECT_TRUE(message_center()->FindVisibleNotificationById(ids[0])); |
| 692 EXPECT_FALSE(message_center()->HasNotification(ids[1])); | 692 EXPECT_FALSE(message_center()->FindVisibleNotificationById(ids[1])); |
| 693 EXPECT_TRUE(message_center()->HasNotification(ids[2])); | 693 EXPECT_TRUE(message_center()->FindVisibleNotificationById(ids[2])); |
| 694 EXPECT_TRUE(message_center()->HasNotification(ids[3])); | 694 EXPECT_TRUE(message_center()->FindVisibleNotificationById(ids[3])); |
| 695 EXPECT_TRUE(message_center()->HasNotification(ids[4])); | 695 EXPECT_TRUE(message_center()->FindVisibleNotificationById(ids[4])); |
| 696 EXPECT_TRUE(message_center()->HasNotification("New id")); | 696 EXPECT_TRUE(message_center()->FindVisibleNotificationById("New id")); |
| 697 EXPECT_EQ(message_center()->GetVisibleNotifications().size(), 5u); | 697 EXPECT_EQ(message_center()->GetVisibleNotifications().size(), 5u); |
| 698 } | 698 } |
| 699 | 699 |
| 700 TEST_F(MessageCenterImplTest, QueuedDirectUpdates) { | 700 TEST_F(MessageCenterImplTest, QueuedDirectUpdates) { |
| 701 std::string id("id1"); | 701 std::string id("id1"); |
| 702 std::string id2("id2"); | 702 std::string id2("id2"); |
| 703 NotifierId notifier_id1(NotifierId::APPLICATION, "app1"); | 703 NotifierId notifier_id1(NotifierId::APPLICATION, "app1"); |
| 704 | 704 |
| 705 gfx::Size original_size(0, 0); | 705 gfx::Size original_size(0, 0); |
| 706 // Open the message center to prevent adding notifications | 706 // Open the message center to prevent adding notifications |
| 707 message_center()->SetVisibility(VISIBILITY_MESSAGE_CENTER); | 707 message_center()->SetVisibility(VISIBILITY_MESSAGE_CENTER); |
| 708 | 708 |
| 709 // Create new notification to be added to the queue; images all have the same | 709 // Create new notification to be added to the queue; images all have the same |
| 710 // original size. | 710 // original size. |
| 711 scoped_ptr<Notification> notification(CreateSimpleNotification(id)); | 711 scoped_ptr<Notification> notification(CreateSimpleNotification(id)); |
| 712 | 712 |
| 713 // Double-check that sizes all match. | 713 // Double-check that sizes all match. |
| 714 const std::vector<ButtonInfo>& original_buttons = notification->buttons(); | 714 const std::vector<ButtonInfo>& original_buttons = notification->buttons(); |
| 715 ASSERT_EQ(2u, original_buttons.size()); | 715 ASSERT_EQ(2u, original_buttons.size()); |
| 716 | 716 |
| 717 EXPECT_EQ(original_size, notification->icon().Size()); | 717 EXPECT_EQ(original_size, notification->icon().Size()); |
| 718 EXPECT_EQ(original_size, notification->image().Size()); | 718 EXPECT_EQ(original_size, notification->image().Size()); |
| 719 EXPECT_EQ(original_size, original_buttons[0].icon.Size()); | 719 EXPECT_EQ(original_size, original_buttons[0].icon.Size()); |
| 720 EXPECT_EQ(original_size, original_buttons[1].icon.Size()); | 720 EXPECT_EQ(original_size, original_buttons[1].icon.Size()); |
| 721 | 721 |
| 722 message_center()->AddNotification(notification.Pass()); | 722 message_center()->AddNotification(notification.Pass()); |
| 723 | 723 |
| 724 // The notification should be in the queue. | 724 // The notification should be in the queue. |
| 725 EXPECT_FALSE(message_center()->HasNotification(id)); | 725 EXPECT_FALSE(message_center()->FindVisibleNotificationById(id)); |
| 726 | 726 |
| 727 // Now try setting the icon to a different size. | 727 // Now try setting the icon to a different size. |
| 728 gfx::Size new_size(16, 16); | 728 gfx::Size new_size(16, 16); |
| 729 EXPECT_NE(original_size, new_size); | 729 EXPECT_NE(original_size, new_size); |
| 730 | 730 |
| 731 gfx::Canvas canvas(new_size, 1.0f, true); | 731 gfx::Canvas canvas(new_size, 1.0f, true); |
| 732 canvas.DrawColor(SK_ColorBLUE); | 732 canvas.DrawColor(SK_ColorBLUE); |
| 733 gfx::Image testImage(gfx::Image(gfx::ImageSkia(canvas.ExtractImageRep()))); | 733 gfx::Image testImage(gfx::Image(gfx::ImageSkia(canvas.ExtractImageRep()))); |
| 734 message_center()->SetNotificationIcon(id, testImage); | 734 message_center()->SetNotificationIcon(id, testImage); |
| 735 message_center()->SetNotificationImage(id, testImage); | 735 message_center()->SetNotificationImage(id, testImage); |
| 736 message_center()->SetNotificationButtonIcon(id, 0, testImage); | 736 message_center()->SetNotificationButtonIcon(id, 0, testImage); |
| 737 message_center()->SetNotificationButtonIcon(id, 1, testImage); | 737 message_center()->SetNotificationButtonIcon(id, 1, testImage); |
| 738 | 738 |
| 739 // The notification should be in the queue. | 739 // The notification should be in the queue. |
| 740 EXPECT_FALSE(message_center()->HasNotification(id)); | 740 EXPECT_FALSE(message_center()->FindVisibleNotificationById(id)); |
| 741 | 741 |
| 742 // Close the message center; then the update should have propagated. | 742 // Close the message center; then the update should have propagated. |
| 743 message_center()->SetVisibility(VISIBILITY_TRANSIENT); | 743 message_center()->SetVisibility(VISIBILITY_TRANSIENT); |
| 744 // The notification should no longer be in the queue. | 744 // The notification should no longer be in the queue. |
| 745 EXPECT_TRUE(message_center()->HasNotification(id)); | 745 EXPECT_TRUE(message_center()->FindVisibleNotificationById(id)); |
| 746 | 746 |
| 747 Notification* mc_notification = | 747 Notification* mc_notification = |
| 748 *(message_center()->GetVisibleNotifications().begin()); | 748 *(message_center()->GetVisibleNotifications().begin()); |
| 749 const std::vector<ButtonInfo>& buttons = mc_notification->buttons(); | 749 const std::vector<ButtonInfo>& buttons = mc_notification->buttons(); |
| 750 ASSERT_EQ(2u, buttons.size()); | 750 ASSERT_EQ(2u, buttons.size()); |
| 751 | 751 |
| 752 EXPECT_EQ(new_size, mc_notification->icon().Size()); | 752 EXPECT_EQ(new_size, mc_notification->icon().Size()); |
| 753 EXPECT_EQ(new_size, mc_notification->image().Size()); | 753 EXPECT_EQ(new_size, mc_notification->image().Size()); |
| 754 EXPECT_EQ(new_size, buttons[0].icon.Size()); | 754 EXPECT_EQ(new_size, buttons[0].icon.Size()); |
| 755 EXPECT_EQ(new_size, buttons[1].icon.Size()); | 755 EXPECT_EQ(new_size, buttons[1].icon.Size()); |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 862 ASSERT_EQ(3u, message_center()->NotificationCount()); | 862 ASSERT_EQ(3u, message_center()->NotificationCount()); |
| 863 | 863 |
| 864 // Now we remove the remaining notifications. | 864 // Now we remove the remaining notifications. |
| 865 notifier_settings_observer()->NotifierEnabledChanged( | 865 notifier_settings_observer()->NotifierEnabledChanged( |
| 866 NotifierId(NotifierId::APPLICATION, "app1"), false); | 866 NotifierId(NotifierId::APPLICATION, "app1"), false); |
| 867 ASSERT_EQ(0u, message_center()->NotificationCount()); | 867 ASSERT_EQ(0u, message_center()->NotificationCount()); |
| 868 } | 868 } |
| 869 | 869 |
| 870 } // namespace internal | 870 } // namespace internal |
| 871 } // namespace message_center | 871 } // namespace message_center |
| OLD | NEW |