Index: ppapi/cpp/dev/ime_input_event_dev.cc |
diff --git a/ppapi/cpp/dev/ime_input_event_dev.cc b/ppapi/cpp/dev/ime_input_event_dev.cc |
index 6f920e9e80fc0c4d14a24c7535649ed509f7507f..07377b0e97ac609ee2bc4da2efd4921914ac59bd 100644 |
--- a/ppapi/cpp/dev/ime_input_event_dev.cc |
+++ b/ppapi/cpp/dev/ime_input_event_dev.cc |
@@ -13,8 +13,12 @@ namespace pp { |
namespace { |
-template <> const char* interface_name<PPB_IMEInputEvent_Dev>() { |
- return PPB_IME_INPUT_EVENT_DEV_INTERFACE; |
+template <> const char* interface_name<PPB_IMEInputEvent_Dev_0_2>() { |
+ return PPB_IME_INPUT_EVENT_DEV_INTERFACE_0_2; |
+} |
+ |
+template <> const char* interface_name<PPB_IMEInputEvent_Dev_0_1>() { |
+ return PPB_IME_INPUT_EVENT_DEV_INTERFACE_0_1; |
} |
} // namespace |
@@ -25,51 +29,101 @@ IMEInputEvent_Dev::IMEInputEvent_Dev() : InputEvent() { |
} |
IMEInputEvent_Dev::IMEInputEvent_Dev(const InputEvent& event) : InputEvent() { |
- // Type check the input event before setting it. |
- if (!has_interface<PPB_IMEInputEvent_Dev>()) |
- return; |
- if (get_interface<PPB_IMEInputEvent_Dev>()->IsIMEInputEvent( |
- event.pp_resource())) { |
+ bool is_ime_event = false; |
+ if (has_interface<PPB_IMEInputEvent_Dev_0_2>()) { |
+ if (get_interface<PPB_IMEInputEvent_Dev_0_2>()->IsIMEInputEvent( |
+ event.pp_resource())) { |
+ is_ime_event = true; |
+ } |
+ } else if (has_interface<PPB_IMEInputEvent_Dev_0_1>()) { |
+ if (get_interface<PPB_IMEInputEvent_Dev_0_1>()->IsIMEInputEvent( |
+ event.pp_resource())) { |
+ is_ime_event = true; |
+ } |
+ } |
+ |
+ if (is_ime_event) { |
Module::Get()->core()->AddRefResource(event.pp_resource()); |
PassRefFromConstructor(event.pp_resource()); |
} |
} |
+IMEInputEvent_Dev::IMEInputEvent_Dev( |
+ const InstanceHandle& instance, |
+ PP_InputEvent_Type type, |
+ PP_TimeTicks time_stamp, |
+ Var text, |
+ const std::vector<uint32_t>& segment_offsets, |
+ int32_t target_segment, |
+ const std::pair<uint32_t, uint32_t>& selection) : InputEvent() { |
+ if (!has_interface<PPB_IMEInputEvent_Dev_0_2>()) |
+ return; |
+ uint32_t dummy = 0; |
+ PassRefFromConstructor(get_interface<PPB_IMEInputEvent_Dev_0_2>()->Create( |
+ instance.pp_instance(), type, time_stamp, text.pp_var(), |
+ segment_offsets.empty() ? 0 : segment_offsets.size() - 1, |
+ segment_offsets.empty() ? &dummy : &segment_offsets[0], |
+ target_segment, selection.first, selection.second)); |
+} |
+ |
+ |
Var IMEInputEvent_Dev::GetText() const { |
- if (!has_interface<PPB_IMEInputEvent_Dev>()) |
- return Var(); |
- return Var(PASS_REF, |
- get_interface<PPB_IMEInputEvent_Dev>()->GetText(pp_resource())); |
+ if (has_interface<PPB_IMEInputEvent_Dev_0_2>()) { |
+ return Var(PASS_REF, |
+ get_interface<PPB_IMEInputEvent_Dev_0_2>()->GetText( |
+ pp_resource())); |
+ } else if (has_interface<PPB_IMEInputEvent_Dev_0_1>()) { |
+ return Var(PASS_REF, |
+ get_interface<PPB_IMEInputEvent_Dev_0_1>()->GetText( |
+ pp_resource())); |
+ } |
+ return Var(); |
} |
uint32_t IMEInputEvent_Dev::GetSegmentNumber() const { |
- if (!has_interface<PPB_IMEInputEvent_Dev>()) |
- return 0; |
- return get_interface<PPB_IMEInputEvent_Dev>()->GetSegmentNumber( |
- pp_resource()); |
+ if (has_interface<PPB_IMEInputEvent_Dev_0_2>()) { |
+ return get_interface<PPB_IMEInputEvent_Dev_0_2>()->GetSegmentNumber( |
+ pp_resource()); |
+ } else if (has_interface<PPB_IMEInputEvent_Dev_0_1>()) { |
+ return get_interface<PPB_IMEInputEvent_Dev_0_1>()->GetSegmentNumber( |
+ pp_resource()); |
+ } |
+ return 0; |
} |
uint32_t IMEInputEvent_Dev::GetSegmentOffset(uint32_t index) const { |
- if (!has_interface<PPB_IMEInputEvent_Dev>()) |
- return 0; |
- return get_interface<PPB_IMEInputEvent_Dev>()->GetSegmentOffset(pp_resource(), |
- index); |
+ if (has_interface<PPB_IMEInputEvent_Dev_0_2>()) { |
+ return get_interface<PPB_IMEInputEvent_Dev_0_2>()->GetSegmentOffset( |
+ pp_resource(), index); |
+ } else if (has_interface<PPB_IMEInputEvent_Dev_0_1>()) { |
+ return get_interface<PPB_IMEInputEvent_Dev_0_1>()->GetSegmentOffset( |
+ pp_resource(), index); |
+ } |
+ return 0; |
} |
int32_t IMEInputEvent_Dev::GetTargetSegment() const { |
- if (!has_interface<PPB_IMEInputEvent_Dev>()) |
- return 0; |
- return get_interface<PPB_IMEInputEvent_Dev>()->GetTargetSegment( |
- pp_resource()); |
+ if (has_interface<PPB_IMEInputEvent_Dev_0_2>()) { |
+ return get_interface<PPB_IMEInputEvent_Dev_0_2>()->GetTargetSegment( |
+ pp_resource()); |
+ } else if (has_interface<PPB_IMEInputEvent_Dev_0_1>()) { |
+ return get_interface<PPB_IMEInputEvent_Dev_0_1>()->GetTargetSegment( |
+ pp_resource()); |
+ } |
+ return 0; |
} |
std::pair<uint32_t, uint32_t> IMEInputEvent_Dev::GetSelection() const { |
std::pair<uint32_t, uint32_t> range(0, 0); |
- if (!has_interface<PPB_IMEInputEvent_Dev>()) |
- return range; |
- get_interface<PPB_IMEInputEvent_Dev>()->GetSelection(pp_resource(), |
- &range.first, |
- &range.second); |
+ if (has_interface<PPB_IMEInputEvent_Dev_0_2>()) { |
+ get_interface<PPB_IMEInputEvent_Dev_0_2>()->GetSelection(pp_resource(), |
+ &range.first, |
+ &range.second); |
+ } else if (has_interface<PPB_IMEInputEvent_Dev_0_1>()) { |
+ get_interface<PPB_IMEInputEvent_Dev_0_1>()->GetSelection(pp_resource(), |
+ &range.first, |
+ &range.second); |
+ } |
return range; |
} |