Index: ui/message_center/cocoa/tray_view_controller_unittest.mm |
diff --git a/ui/message_center/cocoa/tray_view_controller_unittest.mm b/ui/message_center/cocoa/tray_view_controller_unittest.mm |
deleted file mode 100644 |
index c8ed1573c3fc6c395372d4e6ff02e38da27893e1..0000000000000000000000000000000000000000 |
--- a/ui/message_center/cocoa/tray_view_controller_unittest.mm |
+++ /dev/null |
@@ -1,247 +0,0 @@ |
-// Copyright (c) 2013 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. |
- |
-#import "ui/message_center/cocoa/tray_view_controller.h" |
- |
-#include "base/mac/scoped_nsobject.h" |
-#include "base/message_loop/message_loop.h" |
-#include "base/run_loop.h" |
-#include "base/strings/utf_string_conversions.h" |
-#import "ui/gfx/test/ui_cocoa_test_helper.h" |
-#include "ui/message_center/fake_notifier_settings_provider.h" |
-#include "ui/message_center/message_center.h" |
-#include "ui/message_center/message_center_impl.h" |
-#include "ui/message_center/message_center_style.h" |
-#include "ui/message_center/notification.h" |
-#include "ui/message_center/notifier_settings.h" |
- |
-using base::ASCIIToUTF16; |
- |
-namespace message_center { |
- |
-class TrayViewControllerTest : public ui::CocoaTest { |
- public: |
- TrayViewControllerTest() |
- : center_(NULL) { |
- } |
- |
- void SetUp() override { |
- ui::CocoaTest::SetUp(); |
- message_center::MessageCenter::Initialize(); |
- center_ = message_center::MessageCenter::Get(); |
- center_->DisableTimersForTest(); |
- tray_.reset([[MCTrayViewController alloc] initWithMessageCenter:center_]); |
- [tray_ setAnimationDuration:0.002]; |
- [tray_ setAnimateClearingNextNotificationDelay:0.001]; |
- [tray_ setAnimationEndedCallback:^{ |
- if (nested_run_loop_.get()) |
- nested_run_loop_->Quit(); |
- }]; |
- [tray_ view]; // Create the view. |
- } |
- |
- void TearDown() override { |
- tray_.reset(); |
- message_center::MessageCenter::Shutdown(); |
- ui::CocoaTest::TearDown(); |
- } |
- |
- void WaitForAnimationEnded() { |
- if (![tray_ isAnimating]) |
- return; |
- nested_run_loop_.reset(new base::RunLoop()); |
- nested_run_loop_->Run(); |
- nested_run_loop_.reset(); |
- } |
- |
- protected: |
- message_center::NotifierId DummyNotifierId() { |
- return message_center::NotifierId(); |
- } |
- |
- message_center::MessageCenter* center_; // Weak, global. |
- |
- base::MessageLoopForUI message_loop_; |
- scoped_ptr<base::RunLoop> nested_run_loop_; |
- base::scoped_nsobject<MCTrayViewController> tray_; |
-}; |
- |
-TEST_F(TrayViewControllerTest, AddRemoveOne) { |
- NSScrollView* view = [[tray_ scrollView] documentView]; |
- EXPECT_EQ(0u, [[view subviews] count]); |
- scoped_ptr<message_center::Notification> notification_data; |
- notification_data.reset(new message_center::Notification( |
- message_center::NOTIFICATION_TYPE_SIMPLE, "1", |
- ASCIIToUTF16("First notification"), |
- ASCIIToUTF16("This is a simple test."), gfx::Image(), base::string16(), |
- GURL(), DummyNotifierId(), message_center::RichNotificationData(), NULL)); |
- center_->AddNotification(notification_data.Pass()); |
- [tray_ onMessageCenterTrayChanged]; |
- ASSERT_EQ(1u, [[view subviews] count]); |
- |
- // The view should have padding around it. |
- NSView* notification = [[view subviews] objectAtIndex:0]; |
- NSRect notification_frame = [notification frame]; |
- EXPECT_CGFLOAT_EQ(2 * message_center::kMarginBetweenItems, |
- NSHeight([view frame]) - NSHeight(notification_frame)); |
- EXPECT_CGFLOAT_EQ(2 * message_center::kMarginBetweenItems, |
- NSWidth([view frame]) - NSWidth(notification_frame)); |
- EXPECT_GT(NSHeight([[tray_ view] frame]), |
- NSHeight([[tray_ scrollView] frame])); |
- |
- center_->RemoveNotification("1", true); |
- [tray_ onMessageCenterTrayChanged]; |
- EXPECT_EQ(0u, [[view subviews] count]); |
- // The empty tray is now 100px tall to accommodate |
- // the empty message. |
- EXPECT_CGFLOAT_EQ(message_center::kMinScrollViewHeight, |
- NSHeight([view frame])); |
-} |
- |
-TEST_F(TrayViewControllerTest, AddThreeClearAll) { |
- NSScrollView* view = [[tray_ scrollView] documentView]; |
- EXPECT_EQ(0u, [[view subviews] count]); |
- scoped_ptr<message_center::Notification> notification; |
- notification.reset(new message_center::Notification( |
- message_center::NOTIFICATION_TYPE_SIMPLE, "1", |
- ASCIIToUTF16("First notification"), |
- ASCIIToUTF16("This is a simple test."), gfx::Image(), base::string16(), |
- GURL(), DummyNotifierId(), message_center::RichNotificationData(), NULL)); |
- center_->AddNotification(notification.Pass()); |
- notification.reset(new message_center::Notification( |
- message_center::NOTIFICATION_TYPE_SIMPLE, "2", |
- ASCIIToUTF16("Second notification"), |
- ASCIIToUTF16("This is a simple test."), gfx::Image(), base::string16(), |
- GURL(), DummyNotifierId(), message_center::RichNotificationData(), NULL)); |
- center_->AddNotification(notification.Pass()); |
- notification.reset(new message_center::Notification( |
- message_center::NOTIFICATION_TYPE_SIMPLE, "3", |
- ASCIIToUTF16("Third notification"), |
- ASCIIToUTF16("This is a simple test."), gfx::Image(), base::string16(), |
- GURL(), DummyNotifierId(), message_center::RichNotificationData(), NULL)); |
- center_->AddNotification(notification.Pass()); |
- [tray_ onMessageCenterTrayChanged]; |
- ASSERT_EQ(3u, [[view subviews] count]); |
- |
- [tray_ clearAllNotifications:nil]; |
- WaitForAnimationEnded(); |
- [tray_ onMessageCenterTrayChanged]; |
- |
- EXPECT_EQ(0u, [[view subviews] count]); |
- // The empty tray is now 100px tall to accommodate |
- // the empty message. |
- EXPECT_CGFLOAT_EQ(message_center::kMinScrollViewHeight, |
- NSHeight([view frame])); |
-} |
- |
-TEST_F(TrayViewControllerTest, NoClearAllWhenNoNotifications) { |
- EXPECT_TRUE([tray_ pauseButton]); |
- EXPECT_TRUE([tray_ clearAllButton]); |
- |
- // With no notifications, the clear all button should be hidden. |
- EXPECT_TRUE([[tray_ clearAllButton] isHidden]); |
- EXPECT_LT(NSMinX([[tray_ clearAllButton] frame]), |
- NSMinX([[tray_ pauseButton] frame])); |
- |
- // Add a notification. |
- scoped_ptr<message_center::Notification> notification; |
- notification.reset(new message_center::Notification( |
- message_center::NOTIFICATION_TYPE_SIMPLE, "1", |
- ASCIIToUTF16("First notification"), |
- ASCIIToUTF16("This is a simple test."), gfx::Image(), base::string16(), |
- GURL(), DummyNotifierId(), message_center::RichNotificationData(), NULL)); |
- center_->AddNotification(notification.Pass()); |
- [tray_ onMessageCenterTrayChanged]; |
- |
- // Clear all should now be visible. |
- EXPECT_FALSE([[tray_ clearAllButton] isHidden]); |
- EXPECT_GT(NSMinX([[tray_ clearAllButton] frame]), |
- NSMinX([[tray_ pauseButton] frame])); |
- |
- // Adding a second notification should keep things still visible. |
- notification.reset(new message_center::Notification( |
- message_center::NOTIFICATION_TYPE_SIMPLE, "2", |
- ASCIIToUTF16("Second notification"), |
- ASCIIToUTF16("This is a simple test."), gfx::Image(), base::string16(), |
- GURL(), DummyNotifierId(), message_center::RichNotificationData(), NULL)); |
- center_->AddNotification(notification.Pass()); |
- [tray_ onMessageCenterTrayChanged]; |
- EXPECT_FALSE([[tray_ clearAllButton] isHidden]); |
- EXPECT_GT(NSMinX([[tray_ clearAllButton] frame]), |
- NSMinX([[tray_ pauseButton] frame])); |
- |
- // Clear all notifications. |
- [tray_ clearAllNotifications:nil]; |
- WaitForAnimationEnded(); |
- [tray_ onMessageCenterTrayChanged]; |
- |
- // The button should be hidden again. |
- EXPECT_TRUE([[tray_ clearAllButton] isHidden]); |
- EXPECT_LT(NSMinX([[tray_ clearAllButton] frame]), |
- NSMinX([[tray_ pauseButton] frame])); |
-} |
- |
-namespace { |
- |
-Notifier* NewNotifier(const std::string& id, |
- const std::string& title, |
- bool enabled) { |
- NotifierId notifier_id(NotifierId::APPLICATION, id); |
- return new Notifier(notifier_id, base::UTF8ToUTF16(title), enabled); |
-} |
- |
-} // namespace |
- |
- |
-TEST_F(TrayViewControllerTest, Settings) { |
- std::vector<Notifier*> notifiers; |
- notifiers.push_back(NewNotifier("id", "title", /*enabled=*/true)); |
- notifiers.push_back(NewNotifier("id2", "other title", /*enabled=*/false)); |
- |
- FakeNotifierSettingsProvider provider(notifiers); |
- center_->SetNotifierSettingsProvider(&provider); |
- |
- CGFloat trayHeight = NSHeight([[tray_ view] frame]); |
- EXPECT_EQ(0, provider.closed_called_count()); |
- |
- [tray_ showSettings:nil]; |
- EXPECT_FALSE(center_->IsMessageCenterVisible()); |
- |
- // There are 0 notifications, but 2 notifiers. The settings pane should be |
- // higher than the empty tray bubble. |
- EXPECT_LT(trayHeight, NSHeight([[tray_ view] frame])); |
- |
- [tray_ showMessages:nil]; |
- EXPECT_EQ(1, provider.closed_called_count()); |
- EXPECT_TRUE(center_->IsMessageCenterVisible()); |
- |
- // The tray should be back at its previous height now. |
- EXPECT_EQ(trayHeight, NSHeight([[tray_ view] frame])); |
- |
- // Clean up since this frame owns FakeNotifierSettingsProvider. |
- center_->SetNotifierSettingsProvider(NULL); |
-} |
- |
-TEST_F(TrayViewControllerTest, EmptyCenter) { |
- EXPECT_FALSE([[tray_ emptyDescription] isHidden]); |
- |
- // With no notifications, the divider should be hidden. |
- EXPECT_TRUE([[tray_ divider] isHidden]); |
- EXPECT_TRUE([[tray_ scrollView] isHidden]); |
- |
- scoped_ptr<message_center::Notification> notification; |
- notification.reset(new message_center::Notification( |
- message_center::NOTIFICATION_TYPE_SIMPLE, "1", |
- ASCIIToUTF16("First notification"), |
- ASCIIToUTF16("This is a simple test."), gfx::Image(), base::string16(), |
- GURL(), DummyNotifierId(), message_center::RichNotificationData(), NULL)); |
- center_->AddNotification(notification.Pass()); |
- [tray_ onMessageCenterTrayChanged]; |
- |
- EXPECT_FALSE([[tray_ divider] isHidden]); |
- EXPECT_FALSE([[tray_ scrollView] isHidden]); |
- EXPECT_TRUE([[tray_ emptyDescription] isHidden]); |
-} |
- |
-} // namespace message_center |