@@ -36,7 +36,7 @@ void main() {
3636 });
3737 });
3838
39- test ('deprecated drain is sync' , () async {
39+ test ('drain is sync' , () async {
4040 const String channel = 'foo' ;
4141 final ByteData data = _makeByteData ('message' );
4242 final ui.ChannelBuffers buffers = ui.ChannelBuffers ();
@@ -78,7 +78,7 @@ void main() {
7878 expect (didCall, equals (false ));
7979 });
8080
81- test ('empty' , () async {
81+ test ('drain when empty' , () async {
8282 const String channel = 'foo' ;
8383 final ui.ChannelBuffers buffers = ui.ChannelBuffers ();
8484 bool didCall = false ;
@@ -240,4 +240,51 @@ void main() {
240240 '-9' ,
241241 ]);
242242 });
243+
244+ test ('ChannelBuffers.clearListener' , () async {
245+ final List <String > log = < String > [];
246+ final ui.ChannelBuffers buffers = ui.ChannelBuffers ();
247+ final ByteData one = _makeByteData ('one' );
248+ final ByteData two = _makeByteData ('two' );
249+ final ByteData three = _makeByteData ('three' );
250+ final ByteData four = _makeByteData ('four' );
251+ buffers.handleMessage (_makeByteData ('resize\r a\r 10' ));
252+ buffers.push ('a' , one, (ByteData data) { });
253+ buffers.push ('a' , two, (ByteData data) { });
254+ buffers.push ('a' , three, (ByteData data) { });
255+ log.add ('-1' );
256+ buffers.setListener ('a' , (ByteData data, ui.PlatformMessageResponseCallback callback) {
257+ log.add ('a1: ${utf8 .decode (data .buffer .asUint8List ())}' );
258+ });
259+ await null ; // handles one
260+ log.add ('-2' );
261+ buffers.clearListener ('a' );
262+ await null ;
263+ log.add ('-3' );
264+ buffers.setListener ('a' , (ByteData data, ui.PlatformMessageResponseCallback callback) {
265+ log.add ('a2: ${utf8 .decode (data .buffer .asUint8List ())}' );
266+ });
267+ log.add ('-4' );
268+ await null ;
269+ buffers.push ('a' , four, (ByteData data) { });
270+ log.add ('-5' );
271+ await null ;
272+ log.add ('-6' );
273+ await null ;
274+ log.add ('-7' );
275+ await null ;
276+ expect (log, < String > [
277+ '-1' ,
278+ 'a1: one' ,
279+ '-2' ,
280+ '-3' ,
281+ '-4' ,
282+ 'a2: two' ,
283+ '-5' ,
284+ 'a2: three' ,
285+ '-6' ,
286+ 'a2: four' ,
287+ '-7' ,
288+ ]);
289+ });
243290}
0 commit comments