Index: ppapi/shared_impl/ppb_input_event_shared.cc |
diff --git a/ppapi/shared_impl/ppb_input_event_shared.cc b/ppapi/shared_impl/ppb_input_event_shared.cc |
index cdb05653d4efbded24f2688f3a3630f98917950f..7b07de9f502740cef4d2f1d58ee751246d144ef9 100644 |
--- a/ppapi/shared_impl/ppb_input_event_shared.cc |
+++ b/ppapi/shared_impl/ppb_input_event_shared.cc |
@@ -127,4 +127,122 @@ void PPB_InputEvent_Shared::GetIMESelection(uint32_t* start, uint32_t* end) { |
*end = data_.composition_selection_end; |
} |
+//static |
+PP_Resource PPB_InputEvent_Shared::CreateIMEInputEvent( |
+ ResourceObjectType type, |
+ PP_Instance instance, |
+ PP_InputEvent_Type event_type, |
+ PP_TimeTicks time_stamp, |
+ struct PP_Var text, |
+ uint32_t segment_number, |
+ const uint32_t* segment_offsets, |
+ int32_t target_segment, |
+ uint32_t selection_start, |
+ uint32_t selection_end) { |
+ if (event_type != PP_INPUTEVENT_TYPE_IME_COMPOSITION_START && |
+ event_type != PP_INPUTEVENT_TYPE_IME_COMPOSITION_UPDATE && |
+ event_type != PP_INPUTEVENT_TYPE_IME_COMPOSITION_END && |
+ event_type != PP_INPUTEVENT_TYPE_IME_TEXT) |
+ return 0; |
+ |
+ InputEventData data; |
+ data.event_type = event_type; |
+ data.event_time_stamp = time_stamp; |
+ if (text.type == PP_VARTYPE_STRING) { |
+ StringVar* text_str = StringVar::FromPPVar(text); |
+ if (!text_str) |
+ return 0; |
+ data.character_text = text_str->value(); |
+ } |
+ data.composition_target_segment = target_segment; |
+ if (segment_number != 0) { |
+ data.composition_segment_offsets.assign( |
+ &segment_offsets[0], &segment_offsets[segment_number + 1]); |
+ } |
+ data.composition_selection_start = selection_start; |
+ data.composition_selection_end = selection_end; |
+ |
+ return (new PPB_InputEvent_Shared(type, instance, data))->GetReference(); |
+} |
+ |
+//static |
+PP_Resource PPB_InputEvent_Shared::CreateKeyboardInputEvent( |
+ ResourceObjectType type, |
+ PP_Instance instance, |
+ PP_InputEvent_Type event_type, |
+ PP_TimeTicks time_stamp, |
+ uint32_t modifiers, |
+ uint32_t key_code, |
+ struct PP_Var character_text) { |
+ if (event_type != PP_INPUTEVENT_TYPE_RAWKEYDOWN && |
+ event_type != PP_INPUTEVENT_TYPE_KEYDOWN && |
+ event_type != PP_INPUTEVENT_TYPE_KEYUP && |
+ event_type != PP_INPUTEVENT_TYPE_CHAR) |
+ return 0; |
+ |
+ InputEventData data; |
+ data.event_type = event_type; |
+ data.event_time_stamp = time_stamp; |
+ data.event_modifiers = modifiers; |
+ data.key_code = key_code; |
+ if (character_text.type == PP_VARTYPE_STRING) { |
+ StringVar* text_str = StringVar::FromPPVar(character_text); |
+ if (!text_str) |
+ return 0; |
+ data.character_text = text_str->value(); |
+ } |
+ |
+ return (new PPB_InputEvent_Shared(type, instance, data))->GetReference(); |
+} |
+ |
+//static |
+PP_Resource PPB_InputEvent_Shared::CreateMouseInputEvent( |
+ ResourceObjectType type, |
+ PP_Instance instance, |
+ PP_InputEvent_Type event_type, |
+ PP_TimeTicks time_stamp, |
+ uint32_t modifiers, |
+ PP_InputEvent_MouseButton mouse_button, |
+ const PP_Point* mouse_position, |
+ int32_t click_count, |
+ const PP_Point* mouse_movement) { |
+ if (event_type != PP_INPUTEVENT_TYPE_MOUSEDOWN && |
+ event_type != PP_INPUTEVENT_TYPE_MOUSEUP && |
+ event_type != PP_INPUTEVENT_TYPE_MOUSEMOVE && |
+ event_type != PP_INPUTEVENT_TYPE_MOUSEENTER && |
+ event_type != PP_INPUTEVENT_TYPE_MOUSELEAVE) |
+ return 0; |
+ |
+ InputEventData data; |
+ data.event_type = event_type; |
+ data.event_time_stamp = time_stamp; |
+ data.event_modifiers = modifiers; |
+ data.mouse_button = mouse_button; |
+ data.mouse_position = *mouse_position; |
+ data.mouse_click_count = click_count; |
+ data.mouse_movement = *mouse_movement; |
+ |
+ return (new PPB_InputEvent_Shared(type, instance, data))->GetReference(); |
+} |
+ |
+//static |
+PP_Resource PPB_InputEvent_Shared::CreateWheelInputEvent( |
+ ResourceObjectType type, |
+ PP_Instance instance, |
+ PP_TimeTicks time_stamp, |
+ uint32_t modifiers, |
+ const PP_FloatPoint* wheel_delta, |
+ const PP_FloatPoint* wheel_ticks, |
+ PP_Bool scroll_by_page) { |
+ InputEventData data; |
+ data.event_type = PP_INPUTEVENT_TYPE_WHEEL; |
+ data.event_time_stamp = time_stamp; |
+ data.event_modifiers = modifiers; |
+ data.wheel_delta = *wheel_delta; |
+ data.wheel_ticks = *wheel_ticks; |
+ data.wheel_scroll_by_page = PP_ToBool(scroll_by_page); |
+ |
+ return (new PPB_InputEvent_Shared(type, instance, data))->GetReference(); |
+} |
+ |
} // namespace ppapi |