flutter_flutter/packages/flutter/test/widget/mock_text_input.dart
Adam Barth c08ea4eb33 Switch to TextInputPlugin (#6392)
This patch removes uses of keyboard.mojom in favor of the
TextInputPlugin.
2016-10-19 15:53:31 -07:00

54 lines
1.5 KiB
Dart

// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'dart:async';
import 'dart:convert';
import 'dart:typed_data';
import 'package:flutter_test/flutter_test.dart';
import 'package:flutter/services.dart';
const String _kTextInputClientChannel = 'flutter/textinputclient';
class MockTextInput {
void register() {
PlatformMessages.setMockJSONMessageHandler('flutter/textinput', handleJSONMessage);
}
int client = 0;
Map<String, dynamic> editingState;
Future<dynamic> handleJSONMessage(dynamic message) async {
final String method = message['method'];
final List<dynamic> args= message['args'];
switch (method) {
case 'TextInput.setClient':
client = args[0];
break;
case 'TextInput.setEditingState':
editingState = args[0];
break;
}
}
void updateEditingState(TextEditingState state) {
expect(client, isNonZero);
String message = JSON.encode(<String, dynamic>{
'method': 'TextInputClient.updateEditingState',
'args': <dynamic>[client, state.toJSON()],
});
Uint8List encoded = UTF8.encoder.convert(message);
PlatformMessages.handlePlatformMessage(
_kTextInputClientChannel, encoded.buffer.asByteData(), (_) {});
}
void enterText(String text) {
updateEditingState(new TextEditingState(
text: text,
composingBase: 0,
composingExtent: text.length,
));
}
}