| Index: ash/system/tray/system_tray_unittest.cc
|
| diff --git a/ash/system/tray/system_tray_unittest.cc b/ash/system/tray/system_tray_unittest.cc
|
| index 3a6c377c06720a2943a6103725b16f88845f39d6..e80aeae3a4c4042f209da6fffd4a1b12a6ec158e 100644
|
| --- a/ash/system/tray/system_tray_unittest.cc
|
| +++ b/ash/system/tray/system_tray_unittest.cc
|
| @@ -89,6 +89,37 @@ class TestItem : public SystemTrayItem {
|
| views::View* notification_view_;
|
| };
|
|
|
| +// Trivial item implementation that returns NULL from tray/default/detailed view
|
| +// creation methods.
|
| +class TestNoViewItem : public SystemTrayItem {
|
| + public:
|
| + TestNoViewItem() : SystemTrayItem(GetSystemTray()) {}
|
| +
|
| + virtual views::View* CreateTrayView(user::LoginStatus status) OVERRIDE {
|
| + return NULL;
|
| + }
|
| +
|
| + virtual views::View* CreateDefaultView(user::LoginStatus status) OVERRIDE {
|
| + return NULL;
|
| + }
|
| +
|
| + virtual views::View* CreateDetailedView(user::LoginStatus status) OVERRIDE {
|
| + return NULL;
|
| + }
|
| +
|
| + virtual views::View* CreateNotificationView(
|
| + user::LoginStatus status) OVERRIDE {
|
| + return NULL;
|
| + }
|
| +
|
| + virtual void DestroyTrayView() OVERRIDE {}
|
| + virtual void DestroyDefaultView() OVERRIDE {}
|
| + virtual void DestroyDetailedView() OVERRIDE {}
|
| + virtual void DestroyNotificationView() OVERRIDE {}
|
| + virtual void UpdateAfterLoginStatusChange(user::LoginStatus status) OVERRIDE {
|
| + }
|
| +};
|
| +
|
| } // namespace
|
|
|
| typedef AshTestBase SystemTrayTest;
|
| @@ -136,6 +167,18 @@ TEST_F(SystemTrayTest, SystemTrayTestItems) {
|
| ASSERT_TRUE(detailed_item->detailed_view() == NULL);
|
| }
|
|
|
| +TEST_F(SystemTrayTest, SystemTrayNoViewItems) {
|
| + SystemTray* tray = GetSystemTray();
|
| + ASSERT_TRUE(tray->GetWidget());
|
| +
|
| + // Verify that no crashes occur on items lacking some views.
|
| + TestNoViewItem* no_view_item = new TestNoViewItem;
|
| + tray->AddTrayItem(no_view_item);
|
| + tray->ShowDefaultView(BUBBLE_CREATE_NEW);
|
| + tray->ShowDetailedView(no_view_item, 0, false, BUBBLE_USE_EXISTING);
|
| + RunAllPendingInMessageLoop();
|
| +}
|
| +
|
| TEST_F(SystemTrayTest, TrayWidgetAutoResizes) {
|
| SystemTray* tray = GetSystemTray();
|
| ASSERT_TRUE(tray->GetWidget());
|
|
|