summaryrefslogtreecommitdiffstats
path: root/chromium/ash/shelf/shelf_tooltip_manager_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/ash/shelf/shelf_tooltip_manager_unittest.cc')
-rw-r--r--chromium/ash/shelf/shelf_tooltip_manager_unittest.cc286
1 files changed, 0 insertions, 286 deletions
diff --git a/chromium/ash/shelf/shelf_tooltip_manager_unittest.cc b/chromium/ash/shelf/shelf_tooltip_manager_unittest.cc
deleted file mode 100644
index 33792ec4c8d..00000000000
--- a/chromium/ash/shelf/shelf_tooltip_manager_unittest.cc
+++ /dev/null
@@ -1,286 +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/shelf/shelf_tooltip_manager.h"
-
-#include "ash/root_window_controller.h"
-#include "ash/shelf/shelf_layout_manager.h"
-#include "ash/shelf/shelf_widget.h"
-#include "ash/shell.h"
-#include "ash/shell_window_ids.h"
-#include "ash/test/ash_test_base.h"
-#include "ash/test/launcher_test_api.h"
-#include "ash/wm/window_util.h"
-#include "base/strings/string16.h"
-#include "base/time/time.h"
-#include "ui/aura/root_window.h"
-#include "ui/events/event.h"
-#include "ui/events/event_constants.h"
-#include "ui/events/event_handler.h"
-#include "ui/events/keycodes/keyboard_codes.h"
-#include "ui/events/test/events_test_utils.h"
-#include "ui/views/widget/widget.h"
-
-namespace {
-
-void SetEventTarget(ui::EventTarget* target,
- ui::Event* event) {
- ui::Event::DispatcherApi dispatch_helper(event);
- dispatch_helper.set_target(target);
-}
-
-}
-
-namespace ash {
-namespace test {
-
-class ShelfTooltipManagerTest : public AshTestBase {
- public:
- ShelfTooltipManagerTest() {}
- virtual ~ShelfTooltipManagerTest() {}
-
- virtual void SetUp() OVERRIDE {
- AshTestBase::SetUp();
- internal::RootWindowController* controller =
- Shell::GetPrimaryRootWindowController();
- tooltip_manager_.reset(new internal::ShelfTooltipManager(
- controller->GetShelfLayoutManager(),
- LauncherTestAPI(controller->shelf()->launcher()).shelf_view()));
- }
-
- virtual void TearDown() OVERRIDE {
- tooltip_manager_.reset();
- AshTestBase::TearDown();
- }
-
- void ShowDelayed() {
- CreateWidget();
- tooltip_manager_->ShowDelayed(dummy_anchor_.get(), base::string16());
- }
-
- void ShowImmediately() {
- CreateWidget();
- tooltip_manager_->ShowImmediately(dummy_anchor_.get(), base::string16());
- }
-
- bool TooltipIsVisible() {
- return tooltip_manager_->IsVisible();
- }
-
- bool IsTimerRunning() {
- return tooltip_manager_->timer_.get() != NULL;
- }
-
- ui::EventHandler* GetEventHandler() {
- return tooltip_manager_.get();
- }
-
- views::Widget* GetTooltipWidget() {
- return tooltip_manager_->widget_;
- }
-
- protected:
- scoped_ptr<views::Widget> widget_;
- scoped_ptr<views::View> dummy_anchor_;
- scoped_ptr<internal::ShelfTooltipManager> tooltip_manager_;
-
- private:
- void CreateWidget() {
- dummy_anchor_.reset(new views::View);
-
- widget_.reset(new views::Widget);
- views::Widget::InitParams params(
- views::Widget::InitParams::TYPE_WINDOW_FRAMELESS);
- params.opacity = views::Widget::InitParams::TRANSLUCENT_WINDOW;
- params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
- params.parent = Shell::GetContainer(
- Shell::GetPrimaryRootWindow(),
- ash::internal::kShellWindowId_ShelfContainer);
-
- widget_->Init(params);
- widget_->SetContentsView(dummy_anchor_.get());
- }
-
- DISALLOW_COPY_AND_ASSIGN(ShelfTooltipManagerTest);
-};
-
-TEST_F(ShelfTooltipManagerTest, ShowingBasics) {
- // ShowDelayed() should just start the timer instead of showing immediately.
- ShowDelayed();
- EXPECT_FALSE(TooltipIsVisible());
- EXPECT_TRUE(IsTimerRunning());
-
- ShowImmediately();
- EXPECT_TRUE(TooltipIsVisible());
- EXPECT_FALSE(IsTimerRunning());
-}
-
-TEST_F(ShelfTooltipManagerTest, HideWhenShelfIsHidden) {
- ShowImmediately();
- ASSERT_TRUE(TooltipIsVisible());
-
- // Create a full-screen window to hide the shelf.
- scoped_ptr<views::Widget> widget(new views::Widget);
- views::Widget::InitParams params(views::Widget::InitParams::TYPE_WINDOW);
- params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
- params.context = CurrentContext();
- widget->Init(params);
- widget->SetFullscreen(true);
- widget->Show();
-
- // Once the shelf is hidden, the tooltip should be invisible.
- ASSERT_EQ(
- SHELF_HIDDEN,
- Shell::GetPrimaryRootWindowController()->
- GetShelfLayoutManager()->visibility_state());
- EXPECT_FALSE(TooltipIsVisible());
-
- // Do not show the view if the shelf is hidden.
- ShowImmediately();
- EXPECT_FALSE(TooltipIsVisible());
-
- // ShowDelayed() doesn't even start the timer for the hidden shelf.
- ShowDelayed();
- EXPECT_FALSE(IsTimerRunning());
-}
-
-TEST_F(ShelfTooltipManagerTest, HideWhenShelfIsAutoHide) {
- // Create a visible window so auto-hide behavior is enforced.
- views::Widget* dummy = new views::Widget;
- views::Widget::InitParams params(views::Widget::InitParams::TYPE_WINDOW);
- params.bounds = gfx::Rect(0, 0, 200, 200);
- params.context = CurrentContext();
- dummy->Init(params);
- dummy->Show();
-
- ShowImmediately();
- ASSERT_TRUE(TooltipIsVisible());
-
- internal::ShelfLayoutManager* shelf =
- Shell::GetPrimaryRootWindowController()->GetShelfLayoutManager();
- shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
- shelf->UpdateAutoHideState();
- ASSERT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->auto_hide_state());
-
- // Tooltip visibility change for auto hide may take time.
- EXPECT_TRUE(TooltipIsVisible());
- RunAllPendingInMessageLoop();
- EXPECT_FALSE(TooltipIsVisible());
-
- // Do not show the view if the shelf is hidden.
- ShowImmediately();
- EXPECT_FALSE(TooltipIsVisible());
-
- // ShowDelayed doesn't even run the timer for the hidden shelf.
- ShowDelayed();
- EXPECT_FALSE(IsTimerRunning());
-}
-
-TEST_F(ShelfTooltipManagerTest, ShouldHideForEvents) {
- ShowImmediately();
- ASSERT_TRUE(TooltipIsVisible());
-
- aura::Window* root_window = Shell::GetInstance()->GetPrimaryRootWindow();
- ui::EventHandler* event_handler = GetEventHandler();
-
- // Should not hide for key events.
- ui::KeyEvent key_event(ui::ET_KEY_PRESSED, ui::VKEY_A, ui::EF_NONE, false);
- SetEventTarget(root_window, &key_event);
- event_handler->OnKeyEvent(&key_event);
- EXPECT_FALSE(key_event.handled());
- EXPECT_TRUE(TooltipIsVisible());
-
- // Should hide for touch events.
- ui::TouchEvent touch_event(
- ui::ET_TOUCH_PRESSED, gfx::Point(), 0, base::TimeDelta());
- SetEventTarget(root_window, &touch_event);
- event_handler->OnTouchEvent(&touch_event);
- EXPECT_FALSE(touch_event.handled());
- EXPECT_FALSE(TooltipIsVisible());
-
- // Shouldn't hide if the touch happens on the tooltip.
- ShowImmediately();
- views::Widget* tooltip_widget = GetTooltipWidget();
- SetEventTarget(tooltip_widget->GetNativeWindow(), &touch_event);
- event_handler->OnTouchEvent(&touch_event);
- EXPECT_FALSE(touch_event.handled());
- EXPECT_TRUE(TooltipIsVisible());
-
- // Should hide for gesture events.
- ui::GestureEvent gesture_event(
- ui::ET_GESTURE_BEGIN, 0, 0, ui::EF_NONE,
- base::TimeDelta::FromMilliseconds(base::Time::Now().ToDoubleT() * 1000),
- ui::GestureEventDetails(ui::ET_GESTURE_BEGIN, 0.0f, 0.0f), 0);
- SetEventTarget(tooltip_widget->GetNativeWindow(), &gesture_event);
- event_handler->OnGestureEvent(&gesture_event);
- EXPECT_FALSE(gesture_event.handled());
- RunAllPendingInMessageLoop();
- EXPECT_FALSE(TooltipIsVisible());
-}
-
-TEST_F(ShelfTooltipManagerTest, HideForMouseMoveEvent) {
- ShowImmediately();
- ASSERT_TRUE(TooltipIsVisible());
-
- aura::Window* root_window = Shell::GetInstance()->GetPrimaryRootWindow();
- ui::EventHandler* event_handler = GetEventHandler();
-
- gfx::Rect tooltip_rect = GetTooltipWidget()->GetNativeWindow()->bounds();
- ASSERT_FALSE(tooltip_rect.IsEmpty());
-
- // Shouldn't hide if the mouse is in the tooltip.
- ui::MouseEvent mouse_event(ui::ET_MOUSE_MOVED, tooltip_rect.CenterPoint(),
- tooltip_rect.CenterPoint(), ui::EF_NONE);
- ui::LocatedEventTestApi test_api(&mouse_event);
-
- SetEventTarget(root_window, &mouse_event);
- event_handler->OnMouseEvent(&mouse_event);
- EXPECT_FALSE(mouse_event.handled());
- EXPECT_TRUE(TooltipIsVisible());
-
- // Should hide if the mouse is out of the tooltip.
- test_api.set_location(tooltip_rect.origin() + gfx::Vector2d(-1, -1));
- event_handler->OnMouseEvent(&mouse_event);
- EXPECT_FALSE(mouse_event.handled());
- RunAllPendingInMessageLoop();
- EXPECT_FALSE(TooltipIsVisible());
-}
-
-// Checks that tooltip is hidden when mouse is pressed in anywhere.
-TEST_F(ShelfTooltipManagerTest, HideForMouseClickEvent) {
- ShowImmediately();
- ASSERT_TRUE(TooltipIsVisible());
-
- aura::Window* root_window = Shell::GetInstance()->GetPrimaryRootWindow();
- ui::EventHandler* event_handler = GetEventHandler();
-
- gfx::Rect tooltip_rect = GetTooltipWidget()->GetNativeWindow()->bounds();
- ASSERT_FALSE(tooltip_rect.IsEmpty());
-
- // Should hide if the mouse is pressed in the tooltip.
- ui::MouseEvent mouse_event(ui::ET_MOUSE_PRESSED, tooltip_rect.CenterPoint(),
- tooltip_rect.CenterPoint(), ui::EF_NONE);
-
- SetEventTarget(root_window, &mouse_event);
- event_handler->OnMouseEvent(&mouse_event);
- EXPECT_FALSE(mouse_event.handled());
- RunAllPendingInMessageLoop();
- EXPECT_FALSE(TooltipIsVisible());
-
- // Should hide if the mouse is pressed outside of the tooltip.
- ShowImmediately();
- ASSERT_TRUE(TooltipIsVisible());
-
- ui::LocatedEventTestApi test_api(&mouse_event);
- test_api.set_location(tooltip_rect.origin() + gfx::Vector2d(-1, -1));
-
- SetEventTarget(root_window, &mouse_event);
- event_handler->OnMouseEvent(&mouse_event);
- EXPECT_FALSE(mouse_event.handled());
- RunAllPendingInMessageLoop();
- EXPECT_FALSE(TooltipIsVisible());
-}
-
-} // namespace test
-} // namespace ash