diff options
author | shuchen@chromium.org <shuchen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-08-19 15:57:51 +0000 |
---|---|---|
committer | shuchen@chromium.org <shuchen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-08-19 15:57:51 +0000 |
commit | 52cfbef8a1370cd82b968cdff35905a75d2f06c0 (patch) | |
tree | c848339dd22f89c6e61fc35d208fff87a900696c | |
parent | 3564f0e53e0671784271602ec406815010f77b5a (diff) | |
download | chromium_src-52cfbef8a1370cd82b968cdff35905a75d2f06c0.zip chromium_src-52cfbef8a1370cd82b968cdff35905a75d2f06c0.tar.gz chromium_src-52cfbef8a1370cd82b968cdff35905a75d2f06c0.tar.bz2 |
Merge 290506 "Generate correct key string to IME extensions for ..."
> Generate correct key string to IME extensions for media keys.
>
> BUG=402935
> TEST=Verified on linux_chromeos & Pixel.
>
> Review URL: https://codereview.chromium.org/486693003
TBR=shuchen@chromium.org
Review URL: https://codereview.chromium.org/489513003
git-svn-id: svn://svn.chromium.org/chrome/branches/2062/src@290568 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/chromeos/input_method/input_method_engine.cc | 38 | ||||
-rw-r--r-- | chrome/browser/chromeos/input_method/input_method_engine_browsertests.cc | 48 |
2 files changed, 85 insertions, 1 deletions
diff --git a/chrome/browser/chromeos/input_method/input_method_engine.cc b/chrome/browser/chromeos/input_method/input_method_engine.cc index 55a0ac5..10c0aac 100644 --- a/chrome/browser/chromeos/input_method/input_method_engine.cc +++ b/chrome/browser/chromeos/input_method/input_method_engine.cc @@ -77,8 +77,44 @@ std::string GetKeyFromEvent(const ui::KeyEvent& event) { if (code == "Escape") return "Esc"; if (code == "Backspace" || code == "Tab" || - code == "Enter" || code == "CapsLock") + code == "Enter" || code == "CapsLock" || + code == "Power") return code; + // Cases for media keys. + switch (event.key_code()) { + case ui::VKEY_BROWSER_BACK: + case ui::VKEY_F1: + return "HistoryBack"; + case ui::VKEY_BROWSER_FORWARD: + case ui::VKEY_F2: + return "HistoryForward"; + case ui::VKEY_BROWSER_REFRESH: + case ui::VKEY_F3: + return "BrowserRefresh"; + case ui::VKEY_MEDIA_LAUNCH_APP2: + case ui::VKEY_F4: + return "ChromeOSFullscreen"; + case ui::VKEY_MEDIA_LAUNCH_APP1: + case ui::VKEY_F5: + return "ChromeOSSwitchWindow"; + case ui::VKEY_BRIGHTNESS_DOWN: + case ui::VKEY_F6: + return "BrightnessDown"; + case ui::VKEY_BRIGHTNESS_UP: + case ui::VKEY_F7: + return "BrightnessUp"; + case ui::VKEY_VOLUME_MUTE: + case ui::VKEY_F8: + return "AudioVolumeMute"; + case ui::VKEY_VOLUME_DOWN: + case ui::VKEY_F9: + return "AudioVolumeDown"; + case ui::VKEY_VOLUME_UP: + case ui::VKEY_F10: + return "AudioVolumeUp"; + default: + break; + } uint16 ch = 0; // Ctrl+? cases, gets key value for Ctrl is not down. if (event.flags() & ui::EF_CONTROL_DOWN) { diff --git a/chrome/browser/chromeos/input_method/input_method_engine_browsertests.cc b/chrome/browser/chromeos/input_method/input_method_engine_browsertests.cc index 494371f..a169cdb 100644 --- a/chrome/browser/chromeos/input_method/input_method_engine_browsertests.cc +++ b/chrome/browser/chromeos/input_method/input_method_engine_browsertests.cc @@ -5,6 +5,7 @@ #include "ash/ime/input_method_menu_item.h" #include "ash/ime/input_method_menu_manager.h" #include "base/bind_helpers.h" +#include "base/strings/stringprintf.h" #include "base/strings/utf_string_conversions.h" #include "chrome/browser/extensions/extension_browsertest.h" #include "chrome/browser/extensions/extension_test_message_listener.h" @@ -389,6 +390,53 @@ IN_PROC_BROWSER_TEST_P(InputMethodEngineBrowserTest, EXPECT_TRUE(keyevent_listener.was_satisfied()); callback.WaitUntilCalled(); } + // Media keys cases. + const struct { + ui::KeyboardCode keycode; + const char* code; + const char* key; + } kMediaKeyCases[] = { + { ui::VKEY_BROWSER_BACK, "BrowserBack", "HistoryBack" }, + { ui::VKEY_BROWSER_FORWARD, "BrowserForward", "HistoryForward" }, + { ui::VKEY_BROWSER_REFRESH, "BrowserRefresh", "BrowserRefresh" }, + { ui::VKEY_MEDIA_LAUNCH_APP2, "ChromeOSFullscreen", "ChromeOSFullscreen" }, + { ui::VKEY_MEDIA_LAUNCH_APP1, + "ChromeOSSwitchWindow", "ChromeOSSwitchWindow" }, + { ui::VKEY_BRIGHTNESS_DOWN, "BrightnessDown", "BrightnessDown" }, + { ui::VKEY_BRIGHTNESS_UP, "BrightnessUp", "BrightnessUp" }, + { ui::VKEY_VOLUME_MUTE, "VolumeMute", "AudioVolumeMute" }, + { ui::VKEY_VOLUME_DOWN, "VolumeDown", "AudioVolumeDown" }, + { ui::VKEY_VOLUME_UP, "VolumeUp", "AudioVolumeUp" }, + { ui::VKEY_F1, "F1", "HistoryBack" }, + { ui::VKEY_F2, "F2", "HistoryForward" }, + { ui::VKEY_F3, "F3", "BrowserRefresh" }, + { ui::VKEY_F4, "F4", "ChromeOSFullscreen" }, + { ui::VKEY_F5, "F5", "ChromeOSSwitchWindow" }, + { ui::VKEY_F6, "F6", "BrightnessDown" }, + { ui::VKEY_F7, "F7", "BrightnessUp" }, + { ui::VKEY_F8, "F8", "AudioVolumeMute" }, + { ui::VKEY_F9, "F9", "AudioVolumeDown" }, + { ui::VKEY_F10, "F10", "AudioVolumeUp" }, + }; + for (size_t i = 0; i < arraysize(kMediaKeyCases); ++i) { + SCOPED_TRACE(std::string("KeyDown, ") + kMediaKeyCases[i].code); + KeyEventDoneCallback callback(false); + const std::string expected_value = + base::StringPrintf("onKeyEvent::keydown:%s:%s:false:false:false:false", + kMediaKeyCases[i].key, kMediaKeyCases[i].code); + ExtensionTestMessageListener keyevent_listener(expected_value, false); + + ui::KeyEvent key_event(ui::ET_KEY_PRESSED, + kMediaKeyCases[i].keycode, + kMediaKeyCases[i].code, + ui::EF_NONE); + engine_handler->ProcessKeyEvent(key_event, + base::Bind(&KeyEventDoneCallback::Run, + base::Unretained(&callback))); + ASSERT_TRUE(keyevent_listener.WaitUntilSatisfied()); + EXPECT_TRUE(keyevent_listener.was_satisfied()); + callback.WaitUntilCalled(); + } // TODO(nona): Add browser tests for other API as well. { SCOPED_TRACE("commitText test"); |