diff options
Diffstat (limited to 'chromium/ash/keyboard_overlay/keyboard_overlay_delegate_unittest.cc')
-rw-r--r-- | chromium/ash/keyboard_overlay/keyboard_overlay_delegate_unittest.cc | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/chromium/ash/keyboard_overlay/keyboard_overlay_delegate_unittest.cc b/chromium/ash/keyboard_overlay/keyboard_overlay_delegate_unittest.cc new file mode 100644 index 00000000000..95c048de7ac --- /dev/null +++ b/chromium/ash/keyboard_overlay/keyboard_overlay_delegate_unittest.cc @@ -0,0 +1,68 @@ +// 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. + +#include "ash/keyboard_overlay/keyboard_overlay_delegate.h" + +#include "ash/shelf/shelf_types.h" +#include "ash/shell.h" +#include "ash/test/ash_test_base.h" +#include "base/strings/utf_string_conversions.h" +#include "ui/aura/window.h" +#include "ui/gfx/display.h" +#include "ui/gfx/screen.h" +#include "ui/views/widget/widget.h" + +namespace ash { + +class KeyboardOverlayDelegateTest + : public test::AshTestBase, + public testing::WithParamInterface<ShelfAlignment> { + public: + KeyboardOverlayDelegateTest() : shelf_alignment_(GetParam()) {} + virtual ~KeyboardOverlayDelegateTest() {} + ShelfAlignment shelf_alignment() const { return shelf_alignment_; } + + private: + ShelfAlignment shelf_alignment_; + + DISALLOW_COPY_AND_ASSIGN(KeyboardOverlayDelegateTest); +}; + +// Verifies we can show and close the widget for the overlay dialog. +TEST_P(KeyboardOverlayDelegateTest, ShowAndClose) { + if (!SupportsMultipleDisplays()) + return; + + UpdateDisplay("500x400,300x200"); + ash::Shell* shell = ash::Shell::GetInstance(); + shell->SetShelfAlignment(shelf_alignment(), shell->GetPrimaryRootWindow()); + KeyboardOverlayDelegate delegate(ASCIIToUTF16("Title"), + GURL("chrome://keyboardoverlay/")); + // Showing the dialog creates a widget. + views::Widget* widget = delegate.Show(NULL); + EXPECT_TRUE(widget); + + // The widget is on the primary root window. + EXPECT_EQ(Shell::GetPrimaryRootWindow(), + widget->GetNativeWindow()->GetRootWindow()); + + // The widget is horizontally centered at the bottom of the work area. + gfx::Rect work_area = Shell::GetScreen()->GetPrimaryDisplay().work_area(); + gfx::Rect bounds = widget->GetRestoredBounds(); + EXPECT_EQ(work_area.CenterPoint().x(), bounds.CenterPoint().x()); + EXPECT_EQ(work_area.bottom(), bounds.bottom()); + + // Clean up. + widget->CloseNow(); +} + +// Tests run three times - for all possible values of shelf alignment +INSTANTIATE_TEST_CASE_P(ShelfAlignmentAny, + KeyboardOverlayDelegateTest, + testing::Values(SHELF_ALIGNMENT_BOTTOM, + SHELF_ALIGNMENT_LEFT, + SHELF_ALIGNMENT_RIGHT, + SHELF_ALIGNMENT_TOP)); + +} // namespace ash |