summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorshuchen@chromium.org <shuchen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-08-19 15:57:51 +0000
committershuchen@chromium.org <shuchen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-08-19 15:57:51 +0000
commit52cfbef8a1370cd82b968cdff35905a75d2f06c0 (patch)
treec848339dd22f89c6e61fc35d208fff87a900696c
parent3564f0e53e0671784271602ec406815010f77b5a (diff)
downloadchromium_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.cc38
-rw-r--r--chrome/browser/chromeos/input_method/input_method_engine_browsertests.cc48
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");