| Index: ash/keyboard_overlay/keyboard_overlay_view_unittest.cc
|
| diff --git a/ash/keyboard_overlay/keyboard_overlay_view_unittest.cc b/ash/keyboard_overlay/keyboard_overlay_view_unittest.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..fcb82ce549915701a7b52386cb99b565aa928f6f
|
| --- /dev/null
|
| +++ b/ash/keyboard_overlay/keyboard_overlay_view_unittest.cc
|
| @@ -0,0 +1,76 @@
|
| +// Copyright (c) 2012 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_view.h"
|
| +
|
| +#include <algorithm>
|
| +
|
| +#include "ash/accelerators/accelerator_table.h"
|
| +#include "ash/keyboard_overlay/keyboard_overlay_delegate.h"
|
| +#include "ash/shell.h"
|
| +#include "ash/test/ash_test_base.h"
|
| +#include "ui/web_dialogs/test/test_web_contents_handler.h"
|
| +#include "ui/web_dialogs/test/test_web_dialog_delegate.h"
|
| +
|
| +namespace ash {
|
| +
|
| +typedef test::AshTestBase KeyboardOverlayViewTest;
|
| +
|
| +bool operator==(const KeyboardOverlayView::KeyEventData& lhs,
|
| + const KeyboardOverlayView::KeyEventData& rhs) {
|
| + return (lhs.key_code == rhs.key_code) && (lhs.flags == rhs.flags);
|
| +}
|
| +
|
| +// Verifies that the accelerators that open the keyboard overlay close it.
|
| +TEST_F(KeyboardOverlayViewTest, OpenAcceleratorsClose) {
|
| + KeyboardOverlayView* view = new KeyboardOverlayView(
|
| + Shell::GetInstance()->browser_context(),
|
| + new ui::test::TestWebDialogDelegate(GURL("chrome://keyboardoverlay")),
|
| + new ui::test::TestWebContentsHandler);
|
| + for (size_t i = 0; i < kAcceleratorDataLength; ++i) {
|
| + if (kAcceleratorData[i].action != SHOW_KEYBOARD_OVERLAY)
|
| + continue;
|
| + const AcceleratorData& open_key_data = kAcceleratorData[i];
|
| + ui::KeyEvent open_key(open_key_data.trigger_on_press ?
|
| + ui::ET_KEY_PRESSED : ui::ET_KEY_RELEASED,
|
| + open_key_data.keycode,
|
| + open_key_data.modifiers,
|
| + false);
|
| + EXPECT_TRUE(view->IsCancelingKeyEvent(&open_key));
|
| + }
|
| +}
|
| +
|
| +// Verifies that there are no redunduant keys in the canceling keys.
|
| +TEST_F(KeyboardOverlayViewTest, NoRedundantCancelingKeys) {
|
| + std::vector<KeyboardOverlayView::KeyEventData> open_keys;
|
| + for (size_t i = 0; i < kAcceleratorDataLength; ++i) {
|
| + if (kAcceleratorData[i].action != SHOW_KEYBOARD_OVERLAY)
|
| + continue;
|
| + // Escape is used just for canceling.
|
| + KeyboardOverlayView::KeyEventData open_key = {
|
| + kAcceleratorData[i].keycode,
|
| + kAcceleratorData[i].modifiers,
|
| + };
|
| + open_keys.push_back(open_key);
|
| + }
|
| +
|
| + std::vector<KeyboardOverlayView::KeyEventData> canceling_keys;
|
| + KeyboardOverlayView::GetCancelingKeysForTesting(&canceling_keys);
|
| +
|
| + // Escape is used just for canceling, so exclude it from the comparison with
|
| + // open keys.
|
| + KeyboardOverlayView::KeyEventData escape = { ui::VKEY_ESCAPE, ui::EF_NONE };
|
| + std::vector<KeyboardOverlayView::KeyEventData>::iterator escape_itr =
|
| + std::find(canceling_keys.begin(), canceling_keys.end(), escape);
|
| + canceling_keys.erase(escape_itr);
|
| +
|
| + // Other canceling keys should be same as opening keys.
|
| + EXPECT_EQ(open_keys.size(), canceling_keys.size());
|
| + for (size_t i = 0; i < canceling_keys.size(); ++i) {
|
| + EXPECT_NE(std::find(open_keys.begin(), open_keys.end(), canceling_keys[i]),
|
| + open_keys.end());
|
| + }
|
| +}
|
| +
|
| +} // namespace ash
|
|
|