143 const auto set_client_msg = R
"(
145 "method": "TextInput.setClient",
150 "name": "TextInputType.multiline",
155 "obscureText": false,
157 "smartDashesType":"1",
158 "smartQuotesType":"1",
159 "enableSuggestions":true,
160 "enableInteractiveSelection":true,
162 "inputAction":"TextInputAction.newline",
163 "textCapitalization":"TextCapitalization.none",
164 "keyboardAppearance":"Brightness.dark",
165 "enableIMEPersonalizedLearning":true,
166 "enableDeltaModel":false
171 auto message = fake_platform_message_response->WithMessage(
173 text_delegate_->HandleFlutterTextInputChannelPlatformMessage(
176 EXPECT_EQ(ime_service_.action_,
177 fuchsia::ui::input::InputMethodAction::NEWLINE);
178 EXPECT_FALSE(ime_service_.IsKeyboardShown());
183 const auto set_client_msg = R
"(
185 "method": "TextInput.show"
188 auto message = fake_platform_message_response->WithMessage(
190 text_delegate_->HandleFlutterTextInputChannelPlatformMessage(
193 EXPECT_TRUE(ime_service_.IsKeyboardShown());
198 const auto set_client_msg = R
"(
200 "method": "TextInput.hide"
203 auto message = fake_platform_message_response->WithMessage(
205 text_delegate_->HandleFlutterTextInputChannelPlatformMessage(
208 EXPECT_FALSE(ime_service_.IsKeyboardShown());
213 fuchsia::ui::input::TextInputState state = {
216 .selection = fuchsia::ui::input::TextSelection{},
217 .composing = fuchsia::ui::input::TextRange{},
219 auto input_event = std::make_unique<fuchsia::ui::input::InputEvent>();
220 ime_service_.client_->DidUpdateState(std::move(state),
221 std::move(input_event));
224 R
"({"method":"TextInputClient.updateEditingState","args":[7,{"text":"Foo","selectionBase":0,"selectionExtent":0,"selectionAffinity":"TextAffinity.upstream","selectionIsDirectional":true,"composingBase":-1,"composingExtent":-1}]})",
230 ime_service_.client_->OnAction(fuchsia::ui::input::InputMethodAction::DONE);
233 R
"({"method":"TextInputClient.performAction","args":[7,"TextInputAction.done"]})",
245 *
key_event.mutable_type() = fuchsia::ui::input3::KeyEventType::PRESSED;
246 *
key_event.mutable_key() = fuchsia::input::Key::A;
247 key_event.mutable_key_meaning()->set_codepoint(
'a');
249 fuchsia::ui::input3::KeyEventStatus status;
250 keyboard_service_.listener_->OnKeyEvent(
251 std::move(
key_event), [&status](fuchsia::ui::input3::KeyEventStatus s) {
252 status = std::move(s);
255 EXPECT_EQ(fuchsia::ui::input3::KeyEventStatus::HANDLED, status);
257 R
"({"type":"keydown","keymap":"fuchsia","hidUsage":458756,"codePoint":97,"modifiers":0})",
265 *
key_event.mutable_type() = fuchsia::ui::input3::KeyEventType::SYNC;
267 fuchsia::ui::input3::KeyEventStatus status;
268 keyboard_service_.listener_->OnKeyEvent(
269 std::move(
key_event), [&status](fuchsia::ui::input3::KeyEventStatus s) {
270 status = std::move(s);
273 EXPECT_EQ(fuchsia::ui::input3::KeyEventStatus::NOT_HANDLED, status);
280 *
key_event.mutable_type() = fuchsia::ui::input3::KeyEventType::CANCEL;
282 fuchsia::ui::input3::KeyEventStatus status;
283 keyboard_service_.listener_->OnKeyEvent(
284 std::move(
key_event), [&status](fuchsia::ui::input3::KeyEventStatus s) {
285 status = std::move(s);
288 EXPECT_EQ(fuchsia::ui::input3::KeyEventStatus::NOT_HANDLED, status);
virtual void GetInputMethodEditor(fuchsia::ui::input::KeyboardType keyboard_type, fuchsia::ui::input::InputMethodAction action, fuchsia::ui::input::TextInputState input_state, fidl::InterfaceHandle< fuchsia::ui::input::InputMethodEditorClient > client, fidl::InterfaceRequest< fuchsia::ui::input::InputMethodEditor > ime)
std::unique_ptr< TextDelegate > text_delegate_
fidl::Binding< fuchsia::ui::input3::Keyboard > keyboard_service_binding_
FakeKeyboardService keyboard_service_
fidl::Binding< fuchsia::ui::input::ImeService > ime_service_binding_
std::unique_ptr< flutter::PlatformMessage > last_message_