OLD | NEW |
| (Empty) |
1 // Copyright (c) 2012 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 "ppapi/cpp/dev/ime_input_event_dev.h" | |
6 | |
7 #include "ppapi/cpp/instance.h" | |
8 #include "ppapi/cpp/module.h" | |
9 #include "ppapi/cpp/module_impl.h" | |
10 #include "ppapi/cpp/var.h" | |
11 | |
12 namespace pp { | |
13 | |
14 namespace { | |
15 | |
16 template <> const char* interface_name<PPB_IMEInputEvent_Dev_0_2>() { | |
17 return PPB_IME_INPUT_EVENT_DEV_INTERFACE_0_2; | |
18 } | |
19 | |
20 template <> const char* interface_name<PPB_IMEInputEvent_Dev_0_1>() { | |
21 return PPB_IME_INPUT_EVENT_DEV_INTERFACE_0_1; | |
22 } | |
23 | |
24 } // namespace | |
25 | |
26 // IMEInputEvent_Dev ------------------------------------------------------- | |
27 | |
28 IMEInputEvent_Dev::IMEInputEvent_Dev() : InputEvent() { | |
29 } | |
30 | |
31 IMEInputEvent_Dev::IMEInputEvent_Dev(const InputEvent& event) : InputEvent() { | |
32 bool is_ime_event = false; | |
33 if (has_interface<PPB_IMEInputEvent_Dev_0_2>()) { | |
34 if (get_interface<PPB_IMEInputEvent_Dev_0_2>()->IsIMEInputEvent( | |
35 event.pp_resource())) { | |
36 is_ime_event = true; | |
37 } | |
38 } else if (has_interface<PPB_IMEInputEvent_Dev_0_1>()) { | |
39 if (get_interface<PPB_IMEInputEvent_Dev_0_1>()->IsIMEInputEvent( | |
40 event.pp_resource())) { | |
41 is_ime_event = true; | |
42 } | |
43 } | |
44 | |
45 if (is_ime_event) { | |
46 Module::Get()->core()->AddRefResource(event.pp_resource()); | |
47 PassRefFromConstructor(event.pp_resource()); | |
48 } | |
49 } | |
50 | |
51 IMEInputEvent_Dev::IMEInputEvent_Dev( | |
52 const InstanceHandle& instance, | |
53 PP_InputEvent_Type type, | |
54 PP_TimeTicks time_stamp, | |
55 const Var& text, | |
56 const std::vector<uint32_t>& segment_offsets, | |
57 int32_t target_segment, | |
58 const std::pair<uint32_t, uint32_t>& selection) : InputEvent() { | |
59 if (!has_interface<PPB_IMEInputEvent_Dev_0_2>()) | |
60 return; | |
61 uint32_t dummy = 0; | |
62 PassRefFromConstructor(get_interface<PPB_IMEInputEvent_Dev_0_2>()->Create( | |
63 instance.pp_instance(), type, time_stamp, text.pp_var(), | |
64 segment_offsets.empty() ? 0 : segment_offsets.size() - 1, | |
65 segment_offsets.empty() ? &dummy : &segment_offsets[0], | |
66 target_segment, selection.first, selection.second)); | |
67 } | |
68 | |
69 | |
70 Var IMEInputEvent_Dev::GetText() const { | |
71 if (has_interface<PPB_IMEInputEvent_Dev_0_2>()) { | |
72 return Var(PASS_REF, | |
73 get_interface<PPB_IMEInputEvent_Dev_0_2>()->GetText( | |
74 pp_resource())); | |
75 } else if (has_interface<PPB_IMEInputEvent_Dev_0_1>()) { | |
76 return Var(PASS_REF, | |
77 get_interface<PPB_IMEInputEvent_Dev_0_1>()->GetText( | |
78 pp_resource())); | |
79 } | |
80 return Var(); | |
81 } | |
82 | |
83 uint32_t IMEInputEvent_Dev::GetSegmentNumber() const { | |
84 if (has_interface<PPB_IMEInputEvent_Dev_0_2>()) { | |
85 return get_interface<PPB_IMEInputEvent_Dev_0_2>()->GetSegmentNumber( | |
86 pp_resource()); | |
87 } else if (has_interface<PPB_IMEInputEvent_Dev_0_1>()) { | |
88 return get_interface<PPB_IMEInputEvent_Dev_0_1>()->GetSegmentNumber( | |
89 pp_resource()); | |
90 } | |
91 return 0; | |
92 } | |
93 | |
94 uint32_t IMEInputEvent_Dev::GetSegmentOffset(uint32_t index) const { | |
95 if (has_interface<PPB_IMEInputEvent_Dev_0_2>()) { | |
96 return get_interface<PPB_IMEInputEvent_Dev_0_2>()->GetSegmentOffset( | |
97 pp_resource(), index); | |
98 } else if (has_interface<PPB_IMEInputEvent_Dev_0_1>()) { | |
99 return get_interface<PPB_IMEInputEvent_Dev_0_1>()->GetSegmentOffset( | |
100 pp_resource(), index); | |
101 } | |
102 return 0; | |
103 } | |
104 | |
105 int32_t IMEInputEvent_Dev::GetTargetSegment() const { | |
106 if (has_interface<PPB_IMEInputEvent_Dev_0_2>()) { | |
107 return get_interface<PPB_IMEInputEvent_Dev_0_2>()->GetTargetSegment( | |
108 pp_resource()); | |
109 } else if (has_interface<PPB_IMEInputEvent_Dev_0_1>()) { | |
110 return get_interface<PPB_IMEInputEvent_Dev_0_1>()->GetTargetSegment( | |
111 pp_resource()); | |
112 } | |
113 return 0; | |
114 } | |
115 | |
116 std::pair<uint32_t, uint32_t> IMEInputEvent_Dev::GetSelection() const { | |
117 std::pair<uint32_t, uint32_t> range(0, 0); | |
118 if (has_interface<PPB_IMEInputEvent_Dev_0_2>()) { | |
119 get_interface<PPB_IMEInputEvent_Dev_0_2>()->GetSelection(pp_resource(), | |
120 &range.first, | |
121 &range.second); | |
122 } else if (has_interface<PPB_IMEInputEvent_Dev_0_1>()) { | |
123 get_interface<PPB_IMEInputEvent_Dev_0_1>()->GetSelection(pp_resource(), | |
124 &range.first, | |
125 &range.second); | |
126 } | |
127 return range; | |
128 } | |
129 | |
130 | |
131 } // namespace pp | |
OLD | NEW |