Index: ash/system/tray/tray_details_view_unittest.cc |
diff --git a/ash/system/tray/tray_details_view_unittest.cc b/ash/system/tray/tray_details_view_unittest.cc |
deleted file mode 100644 |
index 4f4e4626c4c464ac18c39bb187ce48661b091251..0000000000000000000000000000000000000000 |
--- a/ash/system/tray/tray_details_view_unittest.cc |
+++ /dev/null |
@@ -1,275 +0,0 @@ |
-// Copyright 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. |
- |
-#include "ash/system/tray/tray_details_view.h" |
- |
-#include "ash/common/system/tray/hover_highlight_view.h" |
-#include "ash/common/system/tray/special_popup_row.h" |
-#include "ash/common/system/tray/system_tray_item.h" |
-#include "ash/common/system/tray/tray_popup_header_button.h" |
-#include "ash/common/system/tray/view_click_listener.h" |
-#include "ash/system/tray/system_tray.h" |
-#include "ash/test/ash_test_base.h" |
-#include "base/run_loop.h" |
-#include "grit/ash_resources.h" |
-#include "grit/ash_strings.h" |
-#include "ui/events/test/event_generator.h" |
-#include "ui/views/controls/button/button.h" |
-#include "ui/views/view.h" |
-#include "ui/views/widget/widget.h" |
- |
-namespace ash { |
-namespace test { |
- |
-namespace { |
- |
-class TestDetailsView : public TrayDetailsView, |
- public ViewClickListener, |
- public views::ButtonListener { |
- public: |
- explicit TestDetailsView(SystemTrayItem* owner) : TrayDetailsView(owner) { |
- // Uses bluetooth label for testing purpose. It can be changed to any |
- // string_id. |
- CreateSpecialRow(IDS_ASH_STATUS_TRAY_BLUETOOTH, this); |
- tray_popup_header_button_ = |
- new TrayPopupHeaderButton(this, IDR_AURA_UBER_TRAY_BLUETOOTH_ENABLED, |
- IDR_AURA_UBER_TRAY_BLUETOOTH_DISABLED, |
- IDR_AURA_UBER_TRAY_BLUETOOTH_ENABLED_HOVER, |
- IDR_AURA_UBER_TRAY_BLUETOOTH_DISABLED_HOVER, |
- IDS_ASH_STATUS_TRAY_BLUETOOTH); |
- footer()->AddButton(tray_popup_header_button_); |
- } |
- |
- ~TestDetailsView() override {} |
- |
- TrayPopupHeaderButton* tray_popup_header_button() { |
- return tray_popup_header_button_; |
- } |
- |
- void FocusFooter() { |
- footer()->content()->RequestFocus(); |
- } |
- |
- // ViewClickListener: |
- void OnViewClicked(views::View* sender) override {} |
- |
- // views::ButtonListener: |
- void ButtonPressed(views::Button* sender, const ui::Event& event) override {} |
- |
- private: |
- TrayPopupHeaderButton* tray_popup_header_button_; |
- |
- DISALLOW_COPY_AND_ASSIGN(TestDetailsView); |
-}; |
- |
-// Trivial item implementation that tracks its views for testing. |
-class TestItem : public SystemTrayItem { |
- public: |
- TestItem() |
- : SystemTrayItem(AshTestBase::GetPrimarySystemTray()), |
- tray_view_(nullptr), |
- default_view_(nullptr), |
- detailed_view_(nullptr) {} |
- |
- // Overridden from SystemTrayItem: |
- views::View* CreateTrayView(LoginStatus status) override { |
- tray_view_ = new views::View; |
- return tray_view_; |
- } |
- views::View* CreateDefaultView(LoginStatus status) override { |
- default_view_ = new views::View; |
- default_view_->SetFocusBehavior(views::View::FocusBehavior::ALWAYS); |
- return default_view_; |
- } |
- views::View* CreateDetailedView(LoginStatus status) override { |
- detailed_view_ = new TestDetailsView(this); |
- return detailed_view_; |
- } |
- void DestroyTrayView() override { tray_view_ = NULL; } |
- void DestroyDefaultView() override { default_view_ = NULL; } |
- void DestroyDetailedView() override { detailed_view_ = NULL; } |
- |
- views::View* tray_view() const { return tray_view_; } |
- views::View* default_view() const { return default_view_; } |
- TestDetailsView* detailed_view() const { return detailed_view_; } |
- |
- private: |
- views::View* tray_view_; |
- views::View* default_view_; |
- TestDetailsView* detailed_view_; |
- |
- DISALLOW_COPY_AND_ASSIGN(TestItem); |
-}; |
- |
-} // namespace |
- |
-class TrayDetailsViewTest : public AshTestBase { |
- public: |
- TrayDetailsViewTest() {} |
- ~TrayDetailsViewTest() override {} |
- |
- HoverHighlightView* CreateAndShowHoverHighlightView() { |
- SystemTray* tray = GetPrimarySystemTray(); |
- TestItem* test_item = new TestItem; |
- tray->AddTrayItem(test_item); |
- tray->ShowDefaultView(BUBBLE_CREATE_NEW); |
- RunAllPendingInMessageLoop(); |
- tray->ShowDetailedView(test_item, 0, true, BUBBLE_USE_EXISTING); |
- RunAllPendingInMessageLoop(); |
- |
- return static_cast<HoverHighlightView*>(test_item->detailed_view()-> |
- footer()->content()); |
- } |
- |
- TrayPopupHeaderButton* CreateAndShowTrayPopupHeaderButton() { |
- SystemTray* tray = GetPrimarySystemTray(); |
- TestItem* test_item = new TestItem; |
- tray->AddTrayItem(test_item); |
- tray->ShowDefaultView(BUBBLE_CREATE_NEW); |
- RunAllPendingInMessageLoop(); |
- tray->ShowDetailedView(test_item, 0, true, BUBBLE_USE_EXISTING); |
- RunAllPendingInMessageLoop(); |
- |
- return test_item->detailed_view()->tray_popup_header_button(); |
- } |
- |
- private: |
- DISALLOW_COPY_AND_ASSIGN(TrayDetailsViewTest); |
-}; |
- |
-TEST_F(TrayDetailsViewTest, TransitionToDefaultViewTest) { |
- SystemTray* tray = GetPrimarySystemTray(); |
- ASSERT_TRUE(tray->GetWidget()); |
- |
- TestItem* test_item_1 = new TestItem; |
- TestItem* test_item_2 = new TestItem; |
- tray->AddTrayItem(test_item_1); |
- tray->AddTrayItem(test_item_2); |
- |
- // Ensure the tray views are created. |
- ASSERT_TRUE(test_item_1->tray_view() != NULL); |
- ASSERT_TRUE(test_item_2->tray_view() != NULL); |
- |
- // Show the default view. |
- tray->ShowDefaultView(BUBBLE_CREATE_NEW); |
- RunAllPendingInMessageLoop(); |
- |
- // Show the detailed view of item 2. |
- tray->ShowDetailedView(test_item_2, 0, true, BUBBLE_USE_EXISTING); |
- EXPECT_TRUE(test_item_2->detailed_view()); |
- RunAllPendingInMessageLoop(); |
- EXPECT_FALSE(test_item_2->default_view()); |
- |
- // Transition back to default view, the default view of item 2 should have |
- // focus. |
- test_item_2->detailed_view()->FocusFooter(); |
- test_item_2->detailed_view()->TransitionToDefaultView(); |
- RunAllPendingInMessageLoop(); |
- |
- EXPECT_TRUE(test_item_2->default_view()); |
- EXPECT_FALSE(test_item_2->detailed_view()); |
- EXPECT_TRUE(test_item_2->default_view()->HasFocus()); |
- |
- // Show the detailed view of item 2 again. |
- tray->ShowDetailedView(test_item_2, 0, true, BUBBLE_USE_EXISTING); |
- EXPECT_TRUE(test_item_2->detailed_view()); |
- RunAllPendingInMessageLoop(); |
- EXPECT_FALSE(test_item_2->default_view()); |
- |
- // Transition back to default view, the default view of item 2 should NOT have |
- // focus. |
- test_item_2->detailed_view()->TransitionToDefaultView(); |
- RunAllPendingInMessageLoop(); |
- |
- EXPECT_TRUE(test_item_2->default_view()); |
- EXPECT_FALSE(test_item_2->detailed_view()); |
- EXPECT_FALSE(test_item_2->default_view()->HasFocus()); |
-} |
- |
-// Tests that HoverHighlightView enters hover state in response to touch. |
-TEST_F(TrayDetailsViewTest, HoverHighlightViewTouchFeedback) { |
- HoverHighlightView* view = CreateAndShowHoverHighlightView(); |
- EXPECT_FALSE(view->hover()); |
- |
- ui::test::EventGenerator& generator = GetEventGenerator(); |
- generator.set_current_location(view->GetBoundsInScreen().CenterPoint()); |
- generator.PressTouch(); |
- EXPECT_TRUE(view->hover()); |
- |
- generator.ReleaseTouch(); |
- EXPECT_FALSE(view->hover()); |
-} |
- |
-// Tests that touch events leaving HoverHighlightView cancel the hover state. |
-TEST_F(TrayDetailsViewTest, HoverHighlightViewTouchFeedbackCancellation) { |
- HoverHighlightView* view = CreateAndShowHoverHighlightView(); |
- EXPECT_FALSE(view->hover()); |
- |
- gfx::Rect view_bounds = view->GetBoundsInScreen(); |
- ui::test::EventGenerator& generator = GetEventGenerator(); |
- generator.set_current_location(view_bounds.CenterPoint()); |
- generator.PressTouch(); |
- EXPECT_TRUE(view->hover()); |
- |
- gfx::Point move_point(view_bounds.x(), view_bounds.CenterPoint().y()); |
- generator.MoveTouch(move_point); |
- EXPECT_FALSE(view->hover()); |
- |
- generator.set_current_location(move_point); |
- generator.ReleaseTouch(); |
- EXPECT_FALSE(view->hover()); |
-} |
- |
-// Tests that TrayPopupHeaderButton renders a background in response to touch. |
-TEST_F(TrayDetailsViewTest, TrayPopupHeaderButtonTouchFeedback) { |
- TrayPopupHeaderButton* button = CreateAndShowTrayPopupHeaderButton(); |
- EXPECT_FALSE(button->background()); |
- |
- ui::test::EventGenerator& generator = GetEventGenerator(); |
- generator.set_current_location(button->GetBoundsInScreen().CenterPoint()); |
- generator.PressTouch(); |
- EXPECT_TRUE(button->background()); |
- |
- generator.ReleaseTouch(); |
- EXPECT_FALSE(button->background()); |
-} |
- |
-// Tests that touch events leaving TrayPopupHeaderButton cancel the touch |
-// feedback background. |
-TEST_F(TrayDetailsViewTest, TrayPopupHeaderButtonTouchFeedbackCancellation) { |
- TrayPopupHeaderButton* button = CreateAndShowTrayPopupHeaderButton(); |
- EXPECT_FALSE(button->background()); |
- |
- gfx::Rect view_bounds = button->GetBoundsInScreen(); |
- ui::test::EventGenerator& generator = GetEventGenerator(); |
- generator.set_current_location(view_bounds.CenterPoint()); |
- generator.PressTouch(); |
- EXPECT_TRUE(button->background()); |
- |
- gfx::Point move_point(view_bounds.x(), view_bounds.CenterPoint().y()); |
- generator.MoveTouch(move_point); |
- EXPECT_FALSE(button->background()); |
- |
- generator.set_current_location(move_point); |
- generator.ReleaseTouch(); |
- EXPECT_FALSE(button->background()); |
-} |
- |
-// Tests that a mouse entering TrayPopupHeaderButton renders a background as |
-// visual feedback. |
-TEST_F(TrayDetailsViewTest, TrayPopupHeaderButtonMouseHoverFeedback) { |
- TrayPopupHeaderButton* button = CreateAndShowTrayPopupHeaderButton(); |
- EXPECT_FALSE(button->background()); |
- |
- ui::test::EventGenerator& generator = GetEventGenerator(); |
- gfx::Rect bounds = button->GetBoundsInScreen(); |
- gfx::Point initial_point(bounds.x() - 1, bounds.y()); |
- generator.set_current_location(initial_point); |
- generator.MoveMouseBy(1, 0); |
- RunAllPendingInMessageLoop(); |
- EXPECT_TRUE(button->background()); |
-} |
- |
-} // namespace test |
-} // namespace ash |