| // Copyright 2018 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "components/exo/notification.h" |
| |
| #include "base/bind.h" |
| #include "base/bind_helpers.h" |
| #include "base/callback.h" |
| #include "components/exo/test/exo_test_base.h" |
| #include "components/exo/test/exo_test_helper.h" |
| #include "ui/message_center/message_center.h" |
| #include "ui/message_center/public/cpp/notification.h" |
| |
| namespace exo { |
| namespace { |
| |
| using NotificationTest = test::ExoTestBase; |
| |
| void Close(int* close_call_count, bool by_user) { |
| (*close_call_count)++; |
| } |
| |
| TEST_F(NotificationTest, CloseCallback) { |
| auto* message_center = message_center::MessageCenter::Get(); |
| |
| // Clear all notifications. |
| message_center->RemoveAllNotifications( |
| false /* by_user */, message_center::MessageCenter::RemoveType::ALL); |
| |
| // Params for test notification. |
| const std::string title = "TEST title"; |
| const std::string message = "TEST message"; |
| const std::string display_source = "TEST display_source"; |
| const std::string notification_id = "exo-notification.test"; |
| const std::string notifier_id = "exo-notification-test"; |
| |
| // For the close callback. |
| int close_call_count = 0; |
| |
| Notification notification( |
| title, message, display_source, notification_id, notifier_id, |
| base::BindRepeating(&Close, base::Unretained(&close_call_count))); |
| |
| EXPECT_EQ(close_call_count, 0); |
| |
| EXPECT_NE(nullptr, |
| message_center->FindVisibleNotificationById(notification_id)); |
| |
| // Closes notification. |
| notification.Close(); |
| |
| EXPECT_EQ(nullptr, |
| message_center->FindVisibleNotificationById(notification_id)); |
| |
| // Expected to be called once |
| EXPECT_EQ(close_call_count, 1); |
| |
| // Clear all notifications. |
| message_center->RemoveAllNotifications( |
| false /* by_user */, message_center::MessageCenter::RemoveType::ALL); |
| } |
| |
| } // namespace |
| } // namespace exo |