| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "webkit/glue/plugins/pepper_event_conversion.h" | 5 #include "webkit/glue/plugins/pepper_event_conversion.h" |
| 6 | 6 |
| 7 #include "base/i18n/char_iterator.h" |
| 7 #include "base/logging.h" | 8 #include "base/logging.h" |
| 8 #include "base/scoped_ptr.h" | 9 #include "base/scoped_ptr.h" |
| 9 #include "third_party/ppapi/c/pp_event.h" | 10 #include "base/string_util.h" |
| 11 #include "base/utf_string_conversions.h" |
| 12 #include "base/utf_string_conversion_utils.h" |
| 13 #include "third_party/ppapi/c/pp_input_event.h" |
| 10 #include "third_party/WebKit/WebKit/chromium/public/WebInputEvent.h" | 14 #include "third_party/WebKit/WebKit/chromium/public/WebInputEvent.h" |
| 11 | 15 |
| 12 using WebKit::WebInputEvent; | 16 using WebKit::WebInputEvent; |
| 13 using WebKit::WebKeyboardEvent; | 17 using WebKit::WebKeyboardEvent; |
| 14 using WebKit::WebMouseEvent; | 18 using WebKit::WebMouseEvent; |
| 15 using WebKit::WebMouseWheelEvent; | 19 using WebKit::WebMouseWheelEvent; |
| 16 | 20 |
| 17 namespace { | 21 namespace { |
| 18 // Anonymous namespace for functions converting WebInputEvent to PP_Event and | 22 |
| 19 // back. | 23 PP_InputEvent_Type ConvertEventTypes(WebInputEvent::Type wetype) { |
| 20 PP_Event_Type ConvertEventTypes(WebInputEvent::Type wetype) { | |
| 21 switch (wetype) { | 24 switch (wetype) { |
| 22 case WebInputEvent::MouseDown: | 25 case WebInputEvent::MouseDown: |
| 23 return PP_EVENT_TYPE_MOUSEDOWN; | 26 return PP_INPUTEVENT_TYPE_MOUSEDOWN; |
| 24 case WebInputEvent::MouseUp: | 27 case WebInputEvent::MouseUp: |
| 25 return PP_EVENT_TYPE_MOUSEUP; | 28 return PP_INPUTEVENT_TYPE_MOUSEUP; |
| 26 case WebInputEvent::MouseMove: | 29 case WebInputEvent::MouseMove: |
| 27 return PP_EVENT_TYPE_MOUSEMOVE; | 30 return PP_INPUTEVENT_TYPE_MOUSEMOVE; |
| 28 case WebInputEvent::MouseEnter: | 31 case WebInputEvent::MouseEnter: |
| 29 return PP_EVENT_TYPE_MOUSEENTER; | 32 return PP_INPUTEVENT_TYPE_MOUSEENTER; |
| 30 case WebInputEvent::MouseLeave: | 33 case WebInputEvent::MouseLeave: |
| 31 return PP_EVENT_TYPE_MOUSELEAVE; | 34 return PP_INPUTEVENT_TYPE_MOUSELEAVE; |
| 32 case WebInputEvent::MouseWheel: | 35 case WebInputEvent::MouseWheel: |
| 33 return PP_EVENT_TYPE_MOUSEWHEEL; | 36 return PP_INPUTEVENT_TYPE_MOUSEWHEEL; |
| 34 case WebInputEvent::RawKeyDown: | 37 case WebInputEvent::RawKeyDown: |
| 35 return PP_EVENT_TYPE_RAWKEYDOWN; | 38 return PP_INPUTEVENT_TYPE_RAWKEYDOWN; |
| 36 case WebInputEvent::KeyDown: | 39 case WebInputEvent::KeyDown: |
| 37 return PP_EVENT_TYPE_KEYDOWN; | 40 return PP_INPUTEVENT_TYPE_KEYDOWN; |
| 38 case WebInputEvent::KeyUp: | 41 case WebInputEvent::KeyUp: |
| 39 return PP_EVENT_TYPE_KEYUP; | 42 return PP_INPUTEVENT_TYPE_KEYUP; |
| 40 case WebInputEvent::Char: | 43 case WebInputEvent::Char: |
| 41 return PP_EVENT_TYPE_CHAR; | 44 return PP_INPUTEVENT_TYPE_CHAR; |
| 42 case WebInputEvent::Undefined: | 45 case WebInputEvent::Undefined: |
| 43 default: | 46 default: |
| 44 return PP_EVENT_TYPE_UNDEFINED; | 47 return PP_INPUTEVENT_TYPE_UNDEFINED; |
| 45 } | 48 } |
| 46 } | 49 } |
| 47 | 50 |
| 48 void BuildKeyEvent(const WebInputEvent* event, PP_Event* pp_event) { | 51 // Generates a PP_InputEvent with the fields common to all events, as well as |
| 49 const WebKeyboardEvent* key_event = | 52 // the event type from the given web event. Event-specific fields will be zero |
| 50 reinterpret_cast<const WebKeyboardEvent*>(event); | 53 // initialized. |
| 51 pp_event->u.key.modifier = key_event->modifiers; | 54 PP_InputEvent GetPPEventWithCommonFieldsAndType( |
| 52 pp_event->u.key.normalizedKeyCode = key_event->windowsKeyCode; | 55 const WebInputEvent& web_event) { |
| 56 PP_InputEvent result; |
| 57 memset(&result, 0, sizeof(PP_InputEvent)); |
| 58 result.type = ConvertEventTypes(web_event.type); |
| 59 result.time_stamp_seconds = web_event.timeStampSeconds; |
| 60 return result; |
| 53 } | 61 } |
| 54 | 62 |
| 55 void BuildCharEvent(const WebInputEvent* event, PP_Event* pp_event) { | 63 void AppendKeyEvent(const WebInputEvent& event, |
| 56 const WebKeyboardEvent* key_event = | 64 std::vector<PP_InputEvent>* pp_events) { |
| 57 reinterpret_cast<const WebKeyboardEvent*>(event); | 65 const WebKeyboardEvent& key_event = |
| 58 pp_event->u.character.modifier = key_event->modifiers; | 66 reinterpret_cast<const WebKeyboardEvent&>(event); |
| 59 // For consistency, check that the sizes of the texts agree. | 67 PP_InputEvent result = GetPPEventWithCommonFieldsAndType(event); |
| 60 DCHECK(sizeof(pp_event->u.character.text) == sizeof(key_event->text)); | 68 result.u.key.modifier = key_event.modifiers; |
| 61 DCHECK(sizeof(pp_event->u.character.unmodifiedText) == | 69 result.u.key.key_code = key_event.windowsKeyCode; |
| 62 sizeof(key_event->unmodifiedText)); | 70 pp_events->push_back(result); |
| 63 for (size_t i = 0; i < WebKeyboardEvent::textLengthCap; ++i) { | 71 } |
| 64 pp_event->u.character.text[i] = key_event->text[i]; | 72 |
| 65 pp_event->u.character.unmodifiedText[i] = key_event->unmodifiedText[i]; | 73 void AppendCharEvent(const WebInputEvent& event, |
| 74 std::vector<PP_InputEvent>* pp_events) { |
| 75 const WebKeyboardEvent& key_event = |
| 76 reinterpret_cast<const WebKeyboardEvent&>(event); |
| 77 |
| 78 // This is a bit complex, the input event will normally just have one 16-bit |
| 79 // character in it, but may be zero or more than one. The text array is |
| 80 // just padded with 0 values for the unused ones, but is not necessarily |
| 81 // null-terminated. |
| 82 // |
| 83 // Here we see how many UTF-16 characters we have. |
| 84 size_t utf16_char_count = 0; |
| 85 while (utf16_char_count < WebKeyboardEvent::textLengthCap && |
| 86 key_event.text[utf16_char_count]) |
| 87 utf16_char_count++; |
| 88 |
| 89 // Make a separate PP_InputEvent for each Unicode character in the input. |
| 90 base::UTF16CharIterator iter(key_event.text, utf16_char_count); |
| 91 while (!iter.end()) { |
| 92 PP_InputEvent result = GetPPEventWithCommonFieldsAndType(event); |
| 93 result.u.character.modifier = key_event.modifiers; |
| 94 |
| 95 std::string utf8_char; |
| 96 base::WriteUnicodeCharacter(iter.get(), &utf8_char); |
| 97 base::strlcpy(result.u.character.text, utf8_char.c_str(), |
| 98 sizeof(result.u.character.text)); |
| 99 |
| 100 pp_events->push_back(result); |
| 66 } | 101 } |
| 67 } | 102 } |
| 68 | 103 |
| 69 void BuildMouseEvent(const WebInputEvent* event, PP_Event* pp_event) { | 104 void AppendMouseEvent(const WebInputEvent& event, |
| 70 const WebMouseEvent* mouse_event = | 105 std::vector<PP_InputEvent>* pp_events) { |
| 71 reinterpret_cast<const WebMouseEvent*>(event); | 106 COMPILE_ASSERT(static_cast<int>(WebMouseEvent::ButtonNone) == |
| 72 pp_event->u.mouse.modifier = mouse_event->modifiers; | 107 static_cast<int>(PP_INPUTEVENT_MOUSEBUTTON_NONE), |
| 73 pp_event->u.mouse.button = mouse_event->button; | 108 MouseNone); |
| 74 pp_event->u.mouse.x = static_cast<float>(mouse_event->x); | 109 COMPILE_ASSERT(static_cast<int>(WebMouseEvent::ButtonLeft) == |
| 75 pp_event->u.mouse.y = static_cast<float>(mouse_event->y); | 110 static_cast<int>(PP_INPUTEVENT_MOUSEBUTTON_LEFT), |
| 76 pp_event->u.mouse.clickCount = mouse_event->clickCount; | 111 MouseLeft); |
| 112 COMPILE_ASSERT(static_cast<int>(WebMouseEvent::ButtonRight) == |
| 113 static_cast<int>(PP_INPUTEVENT_MOUSEBUTTON_RIGHT), |
| 114 MouseRight); |
| 115 COMPILE_ASSERT(static_cast<int>(WebMouseEvent::ButtonMiddle) == |
| 116 static_cast<int>(PP_INPUTEVENT_MOUSEBUTTON_MIDDLE), |
| 117 MouseMiddle); |
| 118 |
| 119 const WebMouseEvent& mouse_event = |
| 120 reinterpret_cast<const WebMouseEvent&>(event); |
| 121 PP_InputEvent result = GetPPEventWithCommonFieldsAndType(event); |
| 122 result.u.mouse.modifier = mouse_event.modifiers; |
| 123 result.u.mouse.button = |
| 124 static_cast<PP_InputEvent_MouseButton>(mouse_event.button); |
| 125 result.u.mouse.x = static_cast<float>(mouse_event.x); |
| 126 result.u.mouse.y = static_cast<float>(mouse_event.y); |
| 127 result.u.mouse.click_count = mouse_event.clickCount; |
| 128 pp_events->push_back(result); |
| 77 } | 129 } |
| 78 | 130 |
| 79 void BuildMouseWheelEvent(const WebInputEvent* event, PP_Event* pp_event) { | 131 void AppendMouseWheelEvent(const WebInputEvent& event, |
| 80 const WebMouseWheelEvent* mouse_wheel_event = | 132 std::vector<PP_InputEvent>* pp_events) { |
| 81 reinterpret_cast<const WebMouseWheelEvent*>(event); | 133 const WebMouseWheelEvent& mouse_wheel_event = |
| 82 pp_event->u.wheel.modifier = mouse_wheel_event->modifiers; | 134 reinterpret_cast<const WebMouseWheelEvent&>(event); |
| 83 pp_event->u.wheel.deltaX = mouse_wheel_event->deltaX; | 135 PP_InputEvent result = GetPPEventWithCommonFieldsAndType(event); |
| 84 pp_event->u.wheel.deltaY = mouse_wheel_event->deltaY; | 136 result.u.wheel.modifier = mouse_wheel_event.modifiers; |
| 85 pp_event->u.wheel.wheelTicksX = mouse_wheel_event->wheelTicksX; | 137 result.u.wheel.delta_x = mouse_wheel_event.deltaX; |
| 86 pp_event->u.wheel.wheelTicksY = mouse_wheel_event->wheelTicksY; | 138 result.u.wheel.delta_y = mouse_wheel_event.deltaY; |
| 87 pp_event->u.wheel.scrollByPage = mouse_wheel_event->scrollByPage; | 139 result.u.wheel.wheel_ticks_x = mouse_wheel_event.wheelTicksX; |
| 140 result.u.wheel.wheel_ticks_y = mouse_wheel_event.wheelTicksY; |
| 141 result.u.wheel.scroll_by_page = !!mouse_wheel_event.scrollByPage; |
| 142 pp_events->push_back(result); |
| 88 } | 143 } |
| 89 | 144 |
| 90 | 145 |
| 91 WebKeyboardEvent* BuildKeyEvent(const PP_Event& event) { | 146 WebKeyboardEvent* BuildKeyEvent(const PP_InputEvent& event) { |
| 92 WebKeyboardEvent* key_event = new WebKeyboardEvent(); | 147 WebKeyboardEvent* key_event = new WebKeyboardEvent(); |
| 93 switch (event.type) { | 148 switch (event.type) { |
| 94 case PP_EVENT_TYPE_RAWKEYDOWN: | 149 case PP_INPUTEVENT_TYPE_RAWKEYDOWN: |
| 95 key_event->type = WebInputEvent::RawKeyDown; | 150 key_event->type = WebInputEvent::RawKeyDown; |
| 96 break; | 151 break; |
| 97 case PP_EVENT_TYPE_KEYDOWN: | 152 case PP_INPUTEVENT_TYPE_KEYDOWN: |
| 98 key_event->type = WebInputEvent::KeyDown; | 153 key_event->type = WebInputEvent::KeyDown; |
| 99 break; | 154 break; |
| 100 case PP_EVENT_TYPE_KEYUP: | 155 case PP_INPUTEVENT_TYPE_KEYUP: |
| 101 key_event->type = WebInputEvent::KeyUp; | 156 key_event->type = WebInputEvent::KeyUp; |
| 102 break; | 157 break; |
| 158 default: |
| 159 NOTREACHED(); |
| 103 } | 160 } |
| 104 key_event->timeStampSeconds = event.time_stamp_seconds; | 161 key_event->timeStampSeconds = event.time_stamp_seconds; |
| 105 key_event->modifiers = event.u.key.modifier; | 162 key_event->modifiers = event.u.key.modifier; |
| 106 key_event->windowsKeyCode = event.u.key.normalizedKeyCode; | 163 key_event->windowsKeyCode = event.u.key.key_code; |
| 107 return key_event; | 164 return key_event; |
| 108 } | 165 } |
| 109 | 166 |
| 110 WebKeyboardEvent* BuildCharEvent(const PP_Event& event) { | 167 WebKeyboardEvent* BuildCharEvent(const PP_InputEvent& event) { |
| 111 WebKeyboardEvent* key_event = new WebKeyboardEvent(); | 168 WebKeyboardEvent* key_event = new WebKeyboardEvent(); |
| 112 key_event->type = WebInputEvent::Char; | 169 key_event->type = WebInputEvent::Char; |
| 113 key_event->timeStampSeconds = event.time_stamp_seconds; | 170 key_event->timeStampSeconds = event.time_stamp_seconds; |
| 114 key_event->modifiers = event.u.character.modifier; | 171 key_event->modifiers = event.u.character.modifier; |
| 115 // For consistency, check that the sizes of the texts agree. | 172 |
| 116 DCHECK(sizeof(event.u.character.text) == sizeof(key_event->text)); | 173 // Make sure to not read beyond the buffer in case some bad code doesn't |
| 117 DCHECK(sizeof(event.u.character.unmodifiedText) == | 174 // NULL-terminate it (this is called from plugins). |
| 118 sizeof(key_event->unmodifiedText)); | 175 size_t text_len = strnlen(event.u.character.text, |
| 119 for (size_t i = 0; i < WebKeyboardEvent::textLengthCap; ++i) { | 176 sizeof(event.u.character.text)); |
| 120 key_event->text[i] = event.u.character.text[i]; | 177 string16 text16 = UTF8ToUTF16(std::string(event.u.character.text, text_len)); |
| 121 key_event->unmodifiedText[i] = event.u.character.unmodifiedText[i]; | 178 |
| 122 } | 179 memset(key_event->text, 0, WebKeyboardEvent::textLengthCap); |
| 180 memset(key_event->unmodifiedText, 0, WebKeyboardEvent::textLengthCap); |
| 181 for (size_t i = 0; |
| 182 i < std::min(WebKeyboardEvent::textLengthCap, text16.size(); |
| 183 ++i) |
| 184 key_event->text[i] = text16[i]; |
| 123 return key_event; | 185 return key_event; |
| 124 } | 186 } |
| 125 | 187 |
| 126 WebMouseEvent* BuildMouseEvent(const PP_Event& event) { | 188 WebMouseEvent* BuildMouseEvent(const PP_InputEvent& event) { |
| 127 WebMouseEvent* mouse_event = new WebMouseEvent(); | 189 WebMouseEvent* mouse_event = new WebMouseEvent(); |
| 128 switch (event.type) { | 190 switch (event.type) { |
| 129 case PP_EVENT_TYPE_MOUSEDOWN: | 191 case PP_INPUTEVENT_TYPE_MOUSEDOWN: |
| 130 mouse_event->type = WebInputEvent::MouseDown; | 192 mouse_event->type = WebInputEvent::MouseDown; |
| 131 break; | 193 break; |
| 132 case PP_EVENT_TYPE_MOUSEUP: | 194 case PP_INPUTEVENT_TYPE_MOUSEUP: |
| 133 mouse_event->type = WebInputEvent::MouseUp; | 195 mouse_event->type = WebInputEvent::MouseUp; |
| 134 break; | 196 break; |
| 135 case PP_EVENT_TYPE_MOUSEMOVE: | 197 case PP_INPUTEVENT_TYPE_MOUSEMOVE: |
| 136 mouse_event->type = WebInputEvent::MouseMove; | 198 mouse_event->type = WebInputEvent::MouseMove; |
| 137 break; | 199 break; |
| 138 case PP_EVENT_TYPE_MOUSEENTER: | 200 case PP_INPUTEVENT_TYPE_MOUSEENTER: |
| 139 mouse_event->type = WebInputEvent::MouseEnter; | 201 mouse_event->type = WebInputEvent::MouseEnter; |
| 140 break; | 202 break; |
| 141 case PP_EVENT_TYPE_MOUSELEAVE: | 203 case PP_INPUTEVENT_TYPE_MOUSELEAVE: |
| 142 mouse_event->type = WebInputEvent::MouseLeave; | 204 mouse_event->type = WebInputEvent::MouseLeave; |
| 143 break; | 205 break; |
| 206 default: |
| 207 NOTREACHED(); |
| 144 } | 208 } |
| 145 mouse_event->timeStampSeconds = event.time_stamp_seconds; | 209 mouse_event->timeStampSeconds = event.time_stamp_seconds; |
| 146 mouse_event->modifiers = event.u.mouse.modifier; | 210 mouse_event->modifiers = event.u.mouse.modifier; |
| 147 mouse_event->button = | 211 mouse_event->button = |
| 148 static_cast<WebMouseEvent::Button>(event.u.mouse.button); | 212 static_cast<WebMouseEvent::Button>(event.u.mouse.button); |
| 149 mouse_event->x = static_cast<int>(event.u.mouse.x); | 213 mouse_event->x = static_cast<int>(event.u.mouse.x); |
| 150 mouse_event->y = static_cast<int>(event.u.mouse.y); | 214 mouse_event->y = static_cast<int>(event.u.mouse.y); |
| 151 mouse_event->clickCount = event.u.mouse.clickCount; | 215 mouse_event->clickCount = event.u.mouse.click_count; |
| 152 return mouse_event; | 216 return mouse_event; |
| 153 } | 217 } |
| 154 | 218 |
| 155 WebMouseWheelEvent* BuildMouseWheelEvent(const PP_Event& event) { | 219 WebMouseWheelEvent* BuildMouseWheelEvent(const PP_InputEvent& event) { |
| 156 WebMouseWheelEvent* mouse_wheel_event = new WebMouseWheelEvent(); | 220 WebMouseWheelEvent* mouse_wheel_event = new WebMouseWheelEvent(); |
| 157 mouse_wheel_event->type = WebInputEvent::MouseWheel; | 221 mouse_wheel_event->type = WebInputEvent::MouseWheel; |
| 158 mouse_wheel_event->timeStampSeconds = event.time_stamp_seconds; | 222 mouse_wheel_event->timeStampSeconds = event.time_stamp_seconds; |
| 159 mouse_wheel_event->modifiers = event.u.wheel.modifier; | 223 mouse_wheel_event->modifiers = event.u.wheel.modifier; |
| 160 mouse_wheel_event->deltaX = event.u.wheel.deltaX; | 224 mouse_wheel_event->deltaX = event.u.wheel.delta_x; |
| 161 mouse_wheel_event->deltaY = event.u.wheel.deltaY; | 225 mouse_wheel_event->deltaY = event.u.wheel.delta_y; |
| 162 mouse_wheel_event->wheelTicksX = event.u.wheel.wheelTicksX; | 226 mouse_wheel_event->wheelTicksX = event.u.wheel.wheel_ticks_x; |
| 163 mouse_wheel_event->wheelTicksY = event.u.wheel.wheelTicksY; | 227 mouse_wheel_event->wheelTicksY = event.u.wheel.wheel_ticks_y; |
| 164 mouse_wheel_event->scrollByPage = event.u.wheel.scrollByPage; | 228 mouse_wheel_event->scrollByPage = event.u.wheel.scroll_by_page; |
| 165 return mouse_wheel_event; | 229 return mouse_wheel_event; |
| 166 } | 230 } |
| 167 | 231 |
| 168 } // namespace | 232 } // namespace |
| 169 | 233 |
| 170 namespace pepper { | 234 namespace pepper { |
| 171 | 235 |
| 172 PP_Event* CreatePP_Event(const WebInputEvent& event) { | 236 void CreatePPEvent(const WebInputEvent& event, |
| 173 scoped_ptr<PP_Event> pp_event(new PP_Event); | 237 std::vector<PP_InputEvent>* pp_events) { |
| 238 pp_events->clear(); |
| 174 | 239 |
| 175 pp_event->type = ConvertEventTypes(event.type); | 240 switch (event.type) { |
| 176 pp_event->size = sizeof(pp_event); | 241 case WebInputEvent::MouseDown: |
| 177 pp_event->time_stamp_seconds = event.timeStampSeconds; | 242 case WebInputEvent::MouseUp: |
| 178 switch (pp_event->type) { | 243 case WebInputEvent::MouseMove: |
| 179 case PP_EVENT_TYPE_UNDEFINED: | 244 case WebInputEvent::MouseEnter: |
| 245 case WebInputEvent::MouseLeave: |
| 246 AppendMouseEvent(event, pp_events); |
| 247 break; |
| 248 case WebInputEvent::MouseWheel: |
| 249 AppendMouseWheelEvent(event, pp_events); |
| 250 break; |
| 251 case WebInputEvent::RawKeyDown: |
| 252 case WebInputEvent::KeyDown: |
| 253 case WebInputEvent::KeyUp: |
| 254 AppendKeyEvent(event, pp_events); |
| 255 break; |
| 256 case WebInputEvent::Char: |
| 257 AppendCharEvent(event, pp_events); |
| 258 break; |
| 259 case WebInputEvent::Undefined: |
| 260 default: |
| 261 break; |
| 262 } |
| 263 } |
| 264 |
| 265 WebInputEvent* CreateWebInputEvent(const PP_InputEvent& event) { |
| 266 scoped_ptr<WebInputEvent> web_input_event; |
| 267 switch (event.type) { |
| 268 case PP_INPUTEVENT_TYPE_UNDEFINED: |
| 180 return NULL; | 269 return NULL; |
| 181 case PP_EVENT_TYPE_MOUSEDOWN: | 270 case PP_INPUTEVENT_TYPE_MOUSEDOWN: |
| 182 case PP_EVENT_TYPE_MOUSEUP: | 271 case PP_INPUTEVENT_TYPE_MOUSEUP: |
| 183 case PP_EVENT_TYPE_MOUSEMOVE: | 272 case PP_INPUTEVENT_TYPE_MOUSEMOVE: |
| 184 case PP_EVENT_TYPE_MOUSEENTER: | 273 case PP_INPUTEVENT_TYPE_MOUSEENTER: |
| 185 case PP_EVENT_TYPE_MOUSELEAVE: | 274 case PP_INPUTEVENT_TYPE_MOUSELEAVE: |
| 186 BuildMouseEvent(&event, pp_event.get()); | 275 web_input_event.reset(BuildMouseEvent(event)); |
| 187 break; | 276 break; |
| 188 case PP_EVENT_TYPE_MOUSEWHEEL: | 277 case PP_INPUTEVENT_TYPE_MOUSEWHEEL: |
| 189 BuildMouseWheelEvent(&event, pp_event.get()); | 278 web_input_event.reset(BuildMouseWheelEvent(event)); |
| 190 break; | 279 break; |
| 191 case PP_EVENT_TYPE_RAWKEYDOWN: | 280 case PP_INPUTEVENT_TYPE_RAWKEYDOWN: |
| 192 case PP_EVENT_TYPE_KEYDOWN: | 281 case PP_INPUTEVENT_TYPE_KEYDOWN: |
| 193 case PP_EVENT_TYPE_KEYUP: | 282 case PP_INPUTEVENT_TYPE_KEYUP: |
| 194 BuildKeyEvent(&event, pp_event.get()); | 283 web_input_event.reset(BuildKeyEvent(event)); |
| 195 break; | 284 break; |
| 196 case PP_EVENT_TYPE_CHAR: | 285 case PP_INPUTEVENT_TYPE_CHAR: |
| 197 BuildCharEvent(&event, pp_event.get()); | 286 web_input_event.reset(BuildCharEvent(event)); |
| 198 break; | 287 break; |
| 199 } | 288 } |
| 200 | 289 |
| 201 return pp_event.release(); | |
| 202 } | |
| 203 | |
| 204 WebInputEvent* CreateWebInputEvent(const PP_Event& event) { | |
| 205 scoped_ptr<WebInputEvent> web_input_event; | |
| 206 switch (event.type) { | |
| 207 case PP_EVENT_TYPE_UNDEFINED: | |
| 208 return NULL; | |
| 209 case PP_EVENT_TYPE_MOUSEDOWN: | |
| 210 case PP_EVENT_TYPE_MOUSEUP: | |
| 211 case PP_EVENT_TYPE_MOUSEMOVE: | |
| 212 case PP_EVENT_TYPE_MOUSEENTER: | |
| 213 case PP_EVENT_TYPE_MOUSELEAVE: | |
| 214 web_input_event.reset(BuildMouseEvent(event)); | |
| 215 break; | |
| 216 case PP_EVENT_TYPE_MOUSEWHEEL: | |
| 217 web_input_event.reset(BuildMouseWheelEvent(event)); | |
| 218 break; | |
| 219 case PP_EVENT_TYPE_RAWKEYDOWN: | |
| 220 case PP_EVENT_TYPE_KEYDOWN: | |
| 221 case PP_EVENT_TYPE_KEYUP: | |
| 222 web_input_event.reset(BuildKeyEvent(event)); | |
| 223 break; | |
| 224 case PP_EVENT_TYPE_CHAR: | |
| 225 web_input_event.reset(BuildCharEvent(event)); | |
| 226 break; | |
| 227 case PP_EVENT_TYPE_FOCUS: | |
| 228 // NOTIMPLEMENTED(); | |
| 229 return NULL; | |
| 230 } | |
| 231 | |
| 232 return web_input_event.release(); | 290 return web_input_event.release(); |
| 233 } | 291 } |
| 234 | 292 |
| 235 } // namespace pepper | 293 } // namespace pepper |
| OLD | NEW |