Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(133)

Side by Side Diff: remoting/tools/javascript_key_tester/pnacl/remoting_key_tester.cc

Issue 884703006: Handling PNaCl KeyboardInputEvent(s) in the key tester app. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed Jamie's design feedback. Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright (c) 2015 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 <sstream>
6
7 #include "ppapi/cpp/input_event.h"
8 #include "ppapi/cpp/instance.h"
9 #include "ppapi/cpp/module.h"
10 #include "ppapi/cpp/var.h"
11 #include "ppapi/cpp/var_dictionary.h"
12
13 namespace remoting {
14
15 class KeyTesterInstance : public pp::Instance {
16 public:
17 explicit KeyTesterInstance(PP_Instance instance) : pp::Instance(instance) {
18 RequestInputEvents(PP_INPUTEVENT_CLASS_KEYBOARD |
19 PP_INPUTEVENT_CLASS_MOUSE);
Jamie 2015/01/30 23:25:09 Don't need MOUSE for the time being.
Łukasz Anforowicz 2015/01/31 00:44:49 Done.
20 }
21
22 virtual ~KeyTesterInstance() {}
23
24 virtual bool HandleInputEvent(const pp::InputEvent& event) {
25 switch (event.GetType()) {
26 case PP_INPUTEVENT_TYPE_KEYDOWN:
27 case PP_INPUTEVENT_TYPE_KEYUP:
28 case PP_INPUTEVENT_TYPE_CHAR: {
29 HandleKeyboardEvent(pp::KeyboardInputEvent(event));
30 break;
31 }
32 default:
33 break;
34 }
35 return true;
36 }
37
38 private:
39 void HandleKeyboardEvent(const pp::KeyboardInputEvent& event) {
40 pp::VarDictionary out;
41 out.Set("type", EventTypeToString(event.GetType()));
42 out.Set("modifiers", (double)event.GetModifiers());
43 out.Set("keyCode", (double)event.GetKeyCode());
44 out.Set("characterText", event.GetCharacterText());
45 out.Set("code", event.GetCode());
46 PostMessage(out);
47 }
48
49 std::string EventTypeToString(PP_InputEvent_Type t) {
50 switch (t) {
51 case PP_INPUTEVENT_TYPE_UNDEFINED:
52 return "UNDEFINED";
53 case PP_INPUTEVENT_TYPE_MOUSEDOWN:
54 return "MOUSEDOWN";
55 case PP_INPUTEVENT_TYPE_MOUSEUP:
56 return "MOUSEUP";
57 case PP_INPUTEVENT_TYPE_MOUSEMOVE:
58 return "MOUSEMOVE";
59 case PP_INPUTEVENT_TYPE_MOUSEENTER:
60 return "MOUSEENTER";
61 case PP_INPUTEVENT_TYPE_MOUSELEAVE:
62 return "MOUSELEAVE";
63 case PP_INPUTEVENT_TYPE_WHEEL:
64 return "WHEEL";
65 case PP_INPUTEVENT_TYPE_RAWKEYDOWN:
66 return "RAWKEYDOWN";
67 case PP_INPUTEVENT_TYPE_KEYDOWN:
68 return "KEYDOWN";
69 case PP_INPUTEVENT_TYPE_KEYUP:
70 return "KEYUP";
71 case PP_INPUTEVENT_TYPE_CHAR:
72 return "CHAR";
73 case PP_INPUTEVENT_TYPE_CONTEXTMENU:
74 return "CONTEXTMENU";
75 case PP_INPUTEVENT_TYPE_IME_COMPOSITION_START:
76 return "IME_COMPOSITION_START";
77 case PP_INPUTEVENT_TYPE_IME_COMPOSITION_UPDATE:
78 return "IME_COMPOSITION_UPDATE";
79 case PP_INPUTEVENT_TYPE_IME_COMPOSITION_END:
80 return "IME_COMPOSITION_END";
81 case PP_INPUTEVENT_TYPE_IME_TEXT:
82 return "IME_TEXT";
83 case PP_INPUTEVENT_TYPE_TOUCHSTART:
84 return "TOUCHSTART";
85 case PP_INPUTEVENT_TYPE_TOUCHMOVE:
86 return "TOUCHMOVE";
87 case PP_INPUTEVENT_TYPE_TOUCHEND:
88 return "TOUCHEND";
89 case PP_INPUTEVENT_TYPE_TOUCHCANCEL:
90 return "TOUCHCANCEL";
91 default:
92 return "[UNRECOGNIZED]";
93 }
94 }
95 };
96
97 class KeyTesterModule : public pp::Module {
98 public:
99 KeyTesterModule() : pp::Module() {}
100 virtual ~KeyTesterModule() {}
101
102 virtual pp::Instance* CreateInstance(PP_Instance instance) {
103 return new KeyTesterInstance(instance);
104 }
105 };
106
107 } // namespace remoting
108
109 namespace pp {
110
111 Module* CreateModule() {
112 return new remoting::KeyTesterModule();
113 }
114
115 } // namespace pp
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698