- add sources.
[platform/framework/web/crosswalk.git] / src / content / test / mock_keyboard.cc
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "content/test/mock_keyboard.h"
6
7 #include "base/logging.h"
8
9 namespace content {
10
11 MockKeyboard::MockKeyboard()
12     : keyboard_layout_(LAYOUT_NULL),
13       keyboard_modifiers_(INVALID) {
14 }
15
16 MockKeyboard::~MockKeyboard() {
17 }
18
19 int MockKeyboard::GetCharacters(Layout layout,
20                                 int key_code,
21                                 Modifiers modifiers,
22                                 std::wstring* output) {
23 #if defined(OS_WIN)
24   CHECK(output);
25   // Change the keyboard layout only when we have to because it takes a lot of
26   // time to load a keyboard-layout driver.
27   // When we change the layout, we reset the modifier status to force updating
28   // the keyboard status.
29   if (layout != keyboard_layout_) {
30     if (!driver_.SetLayout(layout))
31       return -1;
32     keyboard_layout_ = layout;
33     keyboard_modifiers_ = INVALID;
34   }
35
36   // Update the keyboard states.
37   if (modifiers != keyboard_modifiers_) {
38     if (!driver_.SetModifiers(modifiers))
39       return -1;
40     keyboard_modifiers_ = modifiers;
41   }
42
43   // Retrieve Unicode characters associate with the key code.
44   return driver_.GetCharacters(key_code, output);
45 #else
46   NOTIMPLEMENTED();
47   return -1;
48 #endif
49 }
50
51 }  // namespace content