Skip to content

Commit 2f4a6af

Browse files
authored
Revert "[flutter_test] Adds method to mock EventChannels" (#124401)
Reverts flutter/flutter#123726 Analysis failures on CI https://ci.chromium.org/ui/p/flutter/builders/prod/Linux%20analyze/12890/overview
1 parent 645cfcd commit 2f4a6af

File tree

5 files changed

+45
-216
lines changed

5 files changed

+45
-216
lines changed

packages/flutter/test/services/platform_channel_test.dart

Lines changed: 45 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -265,50 +265,69 @@ void main() {
265265
});
266266

267267
group('EventChannel', () {
268+
const MessageCodec<dynamic> jsonMessage = JSONMessageCodec();
268269
const MethodCodec jsonMethod = JSONMethodCodec();
269270
const EventChannel channel = EventChannel('ch', jsonMethod);
270-
271+
void emitEvent(ByteData? event) {
272+
TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger.handlePlatformMessage(
273+
'ch',
274+
event,
275+
(ByteData? reply) {},
276+
);
277+
}
271278
test('can receive event stream', () async {
272279
bool canceled = false;
273-
TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger.setMockStreamHandler(
274-
channel,
275-
MockStreamHandler.inline(
276-
onListen: (Object? arguments, MockStreamHandlerEventSink events) {
277-
events.success('${arguments}1');
278-
events.success('${arguments}2');
279-
events.endOfStream();
280-
},
281-
onCancel: (Object? arguments) {
280+
TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger.setMockMessageHandler(
281+
'ch',
282+
(ByteData? message) async {
283+
final Map<dynamic, dynamic> methodCall = jsonMessage.decodeMessage(message) as Map<dynamic, dynamic>;
284+
if (methodCall['method'] == 'listen') {
285+
final String argument = methodCall['args'] as String;
286+
emitEvent(jsonMethod.encodeSuccessEnvelope('${argument}1'));
287+
emitEvent(jsonMethod.encodeSuccessEnvelope('${argument}2'));
288+
emitEvent(null);
289+
return jsonMethod.encodeSuccessEnvelope(null);
290+
} else if (methodCall['method'] == 'cancel') {
282291
canceled = true;
283-
},
284-
),
292+
return jsonMethod.encodeSuccessEnvelope(null);
293+
} else {
294+
fail('Expected listen or cancel');
295+
}
296+
},
285297
);
286-
final List<Object?> events = await channel.receiveBroadcastStream('hello').toList();
298+
final List<dynamic> events = await channel.receiveBroadcastStream('hello').toList();
287299
expect(events, orderedEquals(<String>['hello1', 'hello2']));
288300
await Future<void>.delayed(Duration.zero);
289301
expect(canceled, isTrue);
290302
});
291303

292304
test('can receive error event', () async {
293-
TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger.setMockStreamHandler(
294-
channel,
295-
MockStreamHandler.inline(
296-
onListen: (Object? arguments, MockStreamHandlerEventSink events) {
297-
events.error(code: '404', message: 'Not Found.', details: arguments);
298-
},
299-
),
305+
TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger.setMockMessageHandler(
306+
'ch',
307+
(ByteData? message) async {
308+
final Map<dynamic, dynamic> methodCall = jsonMessage.decodeMessage(message) as Map<dynamic, dynamic>;
309+
if (methodCall['method'] == 'listen') {
310+
final String argument = methodCall['args'] as String;
311+
emitEvent(jsonMethod.encodeErrorEnvelope(code: '404', message: 'Not Found.', details: argument));
312+
return jsonMethod.encodeSuccessEnvelope(null);
313+
} else if (methodCall['method'] == 'cancel') {
314+
return jsonMethod.encodeSuccessEnvelope(null);
315+
} else {
316+
fail('Expected listen or cancel');
317+
}
318+
},
300319
);
301-
final List<Object?> events = <Object?>[];
302-
final List<Object?> errors = <Object?>[];
320+
final List<dynamic> events = <dynamic>[];
321+
final List<dynamic> errors = <dynamic>[];
303322
channel.receiveBroadcastStream('hello').listen(events.add, onError: errors.add);
304323
await Future<void>.delayed(Duration.zero);
305324
expect(events, isEmpty);
306325
expect(errors, hasLength(1));
307326
expect(errors[0], isA<PlatformException>());
308-
final PlatformException? error = errors[0] as PlatformException?;
309-
expect(error?.code, '404');
310-
expect(error?.message, 'Not Found.');
311-
expect(error?.details, 'hello');
327+
final PlatformException error = errors[0] as PlatformException;
328+
expect(error.code, '404');
329+
expect(error.message, 'Not Found.');
330+
expect(error.details, 'hello');
312331
});
313332
});
314333
}

packages/flutter_test/lib/flutter_test.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,6 @@ export 'src/frame_timing_summarizer.dart';
6969
export 'src/goldens.dart';
7070
export 'src/image.dart';
7171
export 'src/matchers.dart';
72-
export 'src/mock_event_channel.dart';
7372
export 'src/nonconst.dart';
7473
export 'src/platform.dart';
7574
export 'src/restoration.dart';

packages/flutter_test/lib/src/mock_event_channel.dart

Lines changed: 0 additions & 79 deletions
This file was deleted.

packages/flutter_test/lib/src/test_default_binary_messenger.dart

Lines changed: 0 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,6 @@ import 'dart:ui' as ui;
88
import 'package:fake_async/fake_async.dart';
99
import 'package:flutter/services.dart';
1010

11-
import 'mock_event_channel.dart';
12-
import 'widget_tester.dart';
13-
1411
/// A function which takes the name of the method channel, it's handler,
1512
/// platform message and asynchronously returns an encoded response.
1613
typedef AllMessagesHandler = Future<ByteData?>? Function(
@@ -200,9 +197,6 @@ class TestDefaultBinaryMessenger extends BinaryMessenger {
200197
///
201198
/// * [setMockMethodCallHandler], which wraps this method but decodes
202199
/// the messages using a [MethodCodec].
203-
///
204-
/// * [setMockStreamHandler], which wraps [setMockMethodCallHandler] to
205-
/// handle [EventChannel] messages.
206200
void setMockMessageHandler(String channel, MessageHandler? handler, [ Object? identity ]) {
207201
if (handler == null) {
208202
_outboundHandlers.remove(channel);
@@ -243,9 +237,6 @@ class TestDefaultBinaryMessenger extends BinaryMessenger {
243237
///
244238
/// * [setMockMethodCallHandler], which is similar but decodes
245239
/// the messages using a [MethodCodec].
246-
///
247-
/// * [setMockStreamHandler], which wraps [setMockMethodCallHandler] to
248-
/// handle [EventChannel] messages.
249240
void setMockDecodedMessageHandler<T>(BasicMessageChannel<T> channel, Future<T> Function(T? message)? handler) {
250241
if (handler == null) {
251242
setMockMessageHandler(channel.name, null);
@@ -311,81 +302,6 @@ class TestDefaultBinaryMessenger extends BinaryMessenger {
311302
}, handler);
312303
}
313304

314-
/// Set a handler for intercepting stream events sent to the
315-
/// platform on the given channel.
316-
///
317-
/// Intercepted method calls are not forwarded to the platform.
318-
///
319-
/// The given handler will replace the currently registered
320-
/// handler for that channel, if any. To stop intercepting messages
321-
/// at all, pass null as the handler.
322-
///
323-
/// Events are decoded using the codec of the channel.
324-
///
325-
/// The handler's stream messages are used as a response, after encoding
326-
/// them using the channel's codec.
327-
///
328-
/// To send an error, pass the error information to the handler's event sink.
329-
///
330-
/// {@macro flutter.flutter_test.TestDefaultBinaryMessenger.handlePlatformMessage.asyncHandlers}
331-
///
332-
/// Registered handlers are cleared after each test.
333-
///
334-
/// See also:
335-
///
336-
/// * [setMockMethodCallHandler], which is the similar method for
337-
/// [MethodChannel].
338-
///
339-
/// * [setMockMessageHandler], which is similar but provides raw
340-
/// access to the underlying bytes.
341-
///
342-
/// * [setMockDecodedMessageHandler], which is similar but decodes
343-
/// the messages using a [MessageCodec].
344-
void setMockStreamHandler(EventChannel channel, MockStreamHandler? handler) {
345-
if (handler == null) {
346-
setMockMessageHandler(channel.name, null);
347-
return;
348-
}
349-
350-
final StreamController<Object?> controller = StreamController<Object?>();
351-
addTearDown(controller.close);
352-
353-
setMockMethodCallHandler(MethodChannel(channel.name, channel.codec), (MethodCall call) async {
354-
switch (call.method) {
355-
case 'listen':
356-
return handler.onListen(call.arguments, MockStreamHandlerEventSink(controller.sink));
357-
case 'cancel':
358-
return handler.onCancel(call.arguments);
359-
default:
360-
throw UnimplementedError('Method ${call.method} not implemented');
361-
}
362-
});
363-
364-
final StreamSubscription<Object?> sub = controller.stream.listen(
365-
(Object? e) => channel.binaryMessenger.handlePlatformMessage(
366-
channel.name,
367-
channel.codec.encodeSuccessEnvelope(e),
368-
null,
369-
),
370-
);
371-
addTearDown(sub.cancel);
372-
sub.onError((Object? e) {
373-
if (e is! PlatformException) {
374-
throw ArgumentError('Stream error must be a PlatformException');
375-
}
376-
channel.binaryMessenger.handlePlatformMessage(
377-
channel.name,
378-
channel.codec.encodeErrorEnvelope(
379-
code: e.code,
380-
message: e.message,
381-
details: e.details,
382-
),
383-
null,
384-
);
385-
});
386-
sub.onDone(() => channel.binaryMessenger.handlePlatformMessage(channel.name, null, null));
387-
}
388-
389305
/// Returns true if the `handler` argument matches the `handler`
390306
/// previously passed to [setMockMessageHandler],
391307
/// [setMockDecodedMessageHandler], or [setMockMethodCallHandler].

packages/flutter_test/test/test_default_binary_messenger_test.dart

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -69,32 +69,6 @@ void main() {
6969
expect(result?.buffer.asUint8List(), Uint8List.fromList(<int>[2, 3, 4]));
7070
});
7171

72-
test('Mock StreamHandler is set correctly', () async {
73-
const EventChannel channel = EventChannel('');
74-
TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger.setMockStreamHandler(
75-
channel,
76-
MockStreamHandler.inline(onListen: (Object? arguments, MockStreamHandlerEventSink events) {
77-
events.success(arguments);
78-
events.error(code: 'code', message: 'message', details: 'details');
79-
events.endOfStream();
80-
})
81-
);
82-
83-
expect(
84-
channel.receiveBroadcastStream('argument'),
85-
emitsInOrder(<Object?>[
86-
'argument',
87-
emitsError(
88-
isA<PlatformException>()
89-
.having((PlatformException e) => e.code, 'code', 'code')
90-
.having((PlatformException e) => e.message, 'message', 'message')
91-
.having((PlatformException e) => e.details, 'details', 'details'),
92-
),
93-
emitsDone,
94-
]),
95-
);
96-
});
97-
9872
testWidgets('Mock AllMessagesHandler is set correctly',
9973
(WidgetTester tester) async {
10074
final TestDefaultBinaryMessenger binaryMessenger =

0 commit comments

Comments
 (0)