summaryrefslogtreecommitdiff
path: root/chromium/ash/keyboard_overlay/keyboard_overlay_delegate_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/ash/keyboard_overlay/keyboard_overlay_delegate_unittest.cc')
-rw-r--r--chromium/ash/keyboard_overlay/keyboard_overlay_delegate_unittest.cc68
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