mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
54 lines
1.5 KiB
Dart
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,
|
|
));
|
|
}
|
|
}
|