menu_controller_interactive_uitest.cc revision 6e8cce623b6e4fe0c9e4af605d675dd9d0338c38
1a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch// Copyright 2014 The Chromium Authors. All rights reserved. 2a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch// found in the LICENSE file. 45f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 5a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#include "base/strings/utf_string_conversions.h" 6a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#include "chrome/browser/ui/views/menu_test_base.h" 7a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#include "ui/views/controls/menu/menu_item_view.h" 8a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#include "ui/views/controls/menu/submenu_view.h" 9010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 10a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochtemplate<ui::KeyboardCode KEYCODE, int EXPECTED_COMMAND> 11a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochclass MenuControllerMnemonicTest : public MenuTestBase { 12010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) public: 13a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch MenuControllerMnemonicTest() { 14a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch } 15a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 16a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch virtual ~MenuControllerMnemonicTest() { 17a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch } 18a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 19a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch // MenuTestBase overrides: 20a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch virtual void BuildMenu(views::MenuItemView* menu) OVERRIDE { 21a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch ASSERT_NE(ui::VKEY_DIVIDE, '/'); 22a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch menu->AppendMenuItemWithLabel(1, base::ASCIIToUTF16("One&/")); 23a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch menu->AppendMenuItemWithLabel(2, base::ASCIIToUTF16("Two")); 24a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch } 25a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 26a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch virtual void DoTestWithMenuOpen() { 27a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch ASSERT_TRUE(menu()->GetSubmenu()->IsShowing()); 28a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch KeyPress(KEYCODE, 29a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch CreateEventTask(this, &MenuControllerMnemonicTest::Step2)); 30a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch } 31a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 32a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch void Step2() { 33a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch ASSERT_EQ(EXPECTED_COMMAND, last_command()); 34a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch if (EXPECTED_COMMAND == 0) { 35a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch KeyPress(ui::VKEY_ESCAPE, 36a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch CreateEventTask(this, &MenuControllerMnemonicTest::Step3)); 37a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch } else { 38a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch ASSERT_FALSE(menu()->GetSubmenu()->IsShowing()); 39a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch Done(); 40a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch } 41a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch } 42a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 43a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch void Step3() { 44a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch ASSERT_FALSE(menu()->GetSubmenu()->IsShowing()); 45a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch Done(); 46a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch } 47a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 48a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch private: 49a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch DISALLOW_COPY_AND_ASSIGN(MenuControllerMnemonicTest); 50a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch}; 51a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 52a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch// Pressing the mnemonic for a menu item should execute the command for that 53a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch// menu item. 54a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochtypedef MenuControllerMnemonicTest<ui::VKEY_DIVIDE,1> 55a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch MenuControllerMnemonicTestMnemonicMatch; 56a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 57a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#if defined(USE_OZONE) 58a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch// ozone bringup - http://crbug.com/401304 59a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#define MAYBE_MnemonicMatch DISABLED_MnemonicMatch 60a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#else 61a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#define MAYBE_MnemonicMatch MnemonicMatch 62a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#endif 63a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 64a02191e04bc25c4935f804f2c080ae28663d096dBen MurdochVIEW_TEST(MenuControllerMnemonicTestMnemonicMatch, MAYBE_MnemonicMatch); 65a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 66a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch// Pressing a key which matches the first letter of the menu item's title 67a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch// should execute the command for that menu item. 68a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochtypedef MenuControllerMnemonicTest<ui::VKEY_T,2> 69a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch MenuControllerMnemonicTestTitleMatch; 70a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 71a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#if defined(USE_OZONE) 72a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch// ozone bringup - http://crbug.com/401304 73a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#define MAYBE_TitleMatch DISABLED_TitleMatch 74a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#else 75a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#define MAYBE_TitleMatch TitleMatch 76a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#endif 77a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 78a02191e04bc25c4935f804f2c080ae28663d096dBen MurdochVIEW_TEST(MenuControllerMnemonicTestTitleMatch, MAYBE_TitleMatch); 79a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 80a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch// Pressing an arbitrary key should not execute any commands. 81a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochtypedef MenuControllerMnemonicTest<ui::VKEY_A,0> 82a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch MenuControllerMnemonicTestNoMatch; 83a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 84a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#if defined(USE_OZONE) 85a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch// ozone bringup - http://crbug.com/401304 86a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#define MAYBE_NoMatch DISABLED_NoMatch 87a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#else 88a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#define MAYBE_NoMatch NoMatch 89a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#endif 90a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 91VIEW_TEST(MenuControllerMnemonicTestNoMatch, MAYBE_NoMatch); 92