| Index: chrome/renderer/mock_keyboard.cc
|
| ===================================================================
|
| --- chrome/renderer/mock_keyboard.cc (revision 0)
|
| +++ chrome/renderer/mock_keyboard.cc (revision 0)
|
| @@ -0,0 +1,47 @@
|
| +// Copyright (c) 2009 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 "chrome/renderer/mock_keyboard.h"
|
| +
|
| +#include "base/logging.h"
|
| +
|
| +MockKeyboard::MockKeyboard()
|
| + : keyboard_layout_(LAYOUT_NULL),
|
| + keyboard_modifiers_(INVALID) {
|
| +}
|
| +
|
| +MockKeyboard::~MockKeyboard() {
|
| +}
|
| +
|
| +int MockKeyboard::GetCharacters(Layout layout,
|
| + int key_code,
|
| + Modifiers modifiers,
|
| + std::wstring* output) {
|
| +#if defined(OS_WIN)
|
| + CHECK(output);
|
| + // Change the keyboard layout only when we have to because it takes a lot of
|
| + // time to load a keyboard-layout driver.
|
| + // When we change the layout, we reset the modifier status to force updating
|
| + // the keyboard status.
|
| + if (layout != keyboard_layout_) {
|
| + if (!driver_.SetLayout(layout))
|
| + return -1;
|
| + keyboard_layout_ = layout;
|
| + keyboard_modifiers_ = INVALID;
|
| + }
|
| +
|
| + // Update the keyboard states.
|
| + if (modifiers != keyboard_modifiers_) {
|
| + if (!driver_.SetModifiers(modifiers))
|
| + return -1;
|
| + keyboard_modifiers_ = modifiers;
|
| + }
|
| +
|
| + // Retrieve Unicode characters associate with the key code.
|
| + return driver_.GetCharacters(key_code, output);
|
| +#else
|
| + NOTIMPLEMENTED();
|
| + return -1;
|
| +#endif
|
| +}
|
|
|