Chromium Code Reviews| Index: ui/events/test/keyboard_layout_win.cc |
| diff --git a/ui/events/test/keyboard_layout_win.cc b/ui/events/test/keyboard_layout_win.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..f6870874128491f64c4a5bcd9e9918a2dc30c41b |
| --- /dev/null |
| +++ b/ui/events/test/keyboard_layout_win.cc |
| @@ -0,0 +1,50 @@ |
| +// Copyright 2016 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 "ui/events/test/keyboard_layout.h" |
| + |
| +#include "base/logging.h" |
| + |
| +namespace ui { |
| + |
| +// |LoadKeyboardLayout()| ensures the locale to be loaded into the system |
| +// (Similar to temporarily adding a locale in Control Panel), otherwise |
| +// |ToUnicodeEx()| will fall-back to the default locale. |
| +// See MSDN LoadKeyboardLayout(): |
| +// https://msdn.microsoft.com/en-us/library/windows/desktop/ms646305(v=vs.85).aspx |
| +// And language constants and strings: |
| +// https://msdn.microsoft.com/en-us/library/windows/desktop/dd318693(v=vs.85).aspx |
| +PlatformKeyboardLayout GetPlatformKeyboardLayout(KeyboardLayout layout) { |
| + switch (layout) { |
| + case KEYBOARD_LAYOUT_ENGLISH_US: |
| + return LoadKeyboardLayout(L"00000409", KLF_ACTIVATE); |
| + case KEYBOARD_LAYOUT_FRENCH: |
| + return LoadKeyboardLayout(L"0000040c", KLF_ACTIVATE); |
| + case KEYBOARD_LAYOUT_GERMAN: |
| + return LoadKeyboardLayout(L"00000407", KLF_ACTIVATE); |
| + case KEYBOARD_LAYOUT_GREEK: |
| + return LoadKeyboardLayout(L"00000408", KLF_ACTIVATE); |
| + case KEYBOARD_LAYOUT_JAPANESE: |
| + return LoadKeyboardLayout(L"00000411", KLF_ACTIVATE); |
| + case KEYBOARD_LAYOUT_KOREAN: |
| + return LoadKeyboardLayout(L"00000412", KLF_ACTIVATE); |
|
Wez
2016/09/13 20:03:16
We no longer care about DrMemory failures?
Tomasz Moniuszko
2016/09/14 13:56:06
Peter Kasting suggested this change here: https://
Wez
2016/09/16 00:57:18
Peter's approach seems reasonable, but let's comme
|
| + case KEYBOARD_LAYOUT_RUSSIAN: |
| + return LoadKeyboardLayout(L"00000419", KLF_ACTIVATE); |
| + default: |
|
Wez
2016/09/13 20:03:16
You're handling all 7 possibilities; do you need a
Tomasz Moniuszko
2016/09/14 13:56:06
I'll move NOTREACHED() outside of switch statement
Wez
2016/09/16 00:57:18
Acknowledged.
|
| + NOTREACHED(); |
| + return 0; |
| + } |
| +} |
| + |
| +PlatformKeyboardLayout ScopedKeyboardLayout::GetActiveLayout() { |
| + return GetKeyboardLayout(0); |
| +} |
| + |
| +void ScopedKeyboardLayout::ActivateLayout(PlatformKeyboardLayout layout) { |
| + DCHECK(layout); |
| + HKL result = ActivateKeyboardLayout(layout, 0); |
| + DCHECK(!!result); |
| +} |
| + |
| +} // namespace ui |