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 |
+} |