Unverified Commit d5c5ac62 authored by Matt Carroll's avatar Matt Carroll Committed by GitHub

Revert "Add handling of 'TextInput.clearClient' message from platform to...

Revert "Add handling of 'TextInput.clearClient' message from platform to framework (#35054). (#35100)" (#39523)

This reverts commit 324fe201.
parent fc05c373
......@@ -632,7 +632,7 @@ abstract class TextInputClient {
/// See also:
///
/// * [TextInput.attach]
class TextInputConnection with ChangeNotifier {
class TextInputConnection {
TextInputConnection._(this._client)
: assert(_client != null),
_id = _nextId++;
......@@ -667,19 +667,12 @@ class TextInputConnection with ChangeNotifier {
void close() {
if (attached) {
SystemChannels.textInput.invokeMethod<void>('TextInput.clearClient');
_onConnectionClosed();
_clientHandler._scheduleHide();
_clientHandler
.._currentConnection = null
.._scheduleHide();
}
assert(!attached);
}
/// Clear out the current text input connection.
///
/// Call this method when the current text input connection has cleared.
void _onConnectionClosed() {
_clientHandler._currentConnection = null;
notifyListeners();
}
}
TextInputAction _toTextInputAction(String action) {
......@@ -760,9 +753,6 @@ class _TextInputClientHandler {
case 'TextInputClient.updateFloatingCursor':
_currentConnection._client.updateFloatingCursor(_toTextPoint(_toTextCursorAction(args[1]), args[2]));
break;
case 'TextInputClient.onConnectionClosed':
_currentConnection._onConnectionClosed();
break;
default:
throw MissingPluginException();
}
......
......@@ -88,44 +88,5 @@ void main() {
expect(signed.hashCode == signedDecimal.hashCode, false);
expect(decimal.hashCode == signedDecimal.hashCode, false);
});
test('The framework TextInputConnection closes when the platform loses its input connection', () async {
// Assemble a TextInputConnection so we can verify its change in state.
final TextInputClient client = NoOpTextInputClient();
const TextInputConfiguration configuration = TextInputConfiguration();
final TextInputConnection textInputConnection = TextInput.attach(client, configuration);
// Verify that TextInputConnection think its attached to a client. This is
// an intermediate verification of expected state.
expect(textInputConnection.attached, true);
// Pretend that the platform has lost its input connection.
final ByteData messageBytes = const JSONMessageCodec().encodeMessage(
<String, dynamic>{
'args': <dynamic>[1],
'method': 'TextInputClient.onConnectionClosed',
}
);
ServicesBinding.instance.defaultBinaryMessenger.handlePlatformMessage(
'flutter/textinput',
messageBytes,
(ByteData _) {},
);
// Verify that textInputConnection no longer think its attached to an input
// connection. This is the critical verification of this test.
expect(textInputConnection.attached, false);
});
});
}
class NoOpTextInputClient extends TextInputClient {
@override
void performAction(TextInputAction action) {}
@override
void updateEditingValue(TextEditingValue value) {}
@override
void updateFloatingCursor(RawFloatingCursorPoint point) {}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment