@@ -535,6 +535,61 @@ if (Html5.supportsNativeAudioTracks()) {
535
535
assert . equal ( adds [ 1 ] [ 0 ] , rems [ 1 ] [ 0 ] , 'addtrack event handler removed' ) ;
536
536
assert . equal ( adds [ 2 ] [ 0 ] , rems [ 2 ] [ 0 ] , 'removetrack event handler removed' ) ;
537
537
} ) ;
538
+
539
+ QUnit . test ( 'should use overrideNativeTracks on audio correctly' , function ( assert ) {
540
+ assert . expect ( 8 ) ;
541
+
542
+ const adds = [ ] ;
543
+ const rems = [ ] ;
544
+ const at = {
545
+ length : 0 ,
546
+ addEventListener : ( type , fn ) => {
547
+ adds . push ( { type, fn } ) ;
548
+ } ,
549
+ removeEventListener : ( type , fn ) => {
550
+ rems . push ( { type, fn } ) ;
551
+ }
552
+ } ;
553
+ const vt = {
554
+ length : 0 ,
555
+ addEventListener : ( type , fn ) => null ,
556
+ removeEventListener : ( type , fn ) => null
557
+ } ;
558
+ const el = document . createElement ( 'div' ) ;
559
+
560
+ el . audioTracks = at ;
561
+ el . videoTracks = vt ;
562
+
563
+ const htmlTech = new Html5 ( { el} ) ;
564
+
565
+ assert . equal ( adds . length , 3 ,
566
+ 'should have added change, remove, add listeners' ) ;
567
+ assert . equal ( rems . length , 0 ,
568
+ 'no listeners should be removed' ) ;
569
+
570
+ htmlTech . overrideNativeTracks ( true ) ;
571
+
572
+ assert . equal ( adds . length , 3 ,
573
+ 'should not have added additional listeners' ) ;
574
+ assert . equal ( rems . length , 3 ,
575
+ 'should have removed previous three listeners' ) ;
576
+
577
+ htmlTech . overrideNativeTracks ( true ) ;
578
+
579
+ assert . equal ( adds . length , 3 ,
580
+ 'no state change so do not add listeners' ) ;
581
+ assert . equal ( rems . length , 3 ,
582
+ 'no state change so do not remove listeners' ) ;
583
+
584
+ htmlTech . overrideNativeTracks ( false ) ;
585
+
586
+ assert . equal ( adds . length , 6 ,
587
+ 'should add listeners because native tracks should be proxied' ) ;
588
+ assert . equal ( rems . length , 3 ,
589
+ 'should not remove listeners because there where none added on previous state' ) ;
590
+
591
+ htmlTech . dispose ( ) ;
592
+ } ) ;
538
593
}
539
594
540
595
if ( Html5 . supportsNativeVideoTracks ( ) ) {
@@ -603,6 +658,61 @@ if (Html5.supportsNativeVideoTracks()) {
603
658
assert . equal ( adds [ 1 ] [ 0 ] , rems [ 1 ] [ 0 ] , 'addtrack event handler removed' ) ;
604
659
assert . equal ( adds [ 2 ] [ 0 ] , rems [ 2 ] [ 0 ] , 'removetrack event handler removed' ) ;
605
660
} ) ;
661
+
662
+ QUnit . test ( 'should use overrideNativeTracks on video correctly' , function ( assert ) {
663
+ assert . expect ( 8 ) ;
664
+
665
+ const adds = [ ] ;
666
+ const rems = [ ] ;
667
+ const vt = {
668
+ length : 0 ,
669
+ addEventListener : ( type , fn ) => {
670
+ adds . push ( { type, fn } ) ;
671
+ } ,
672
+ removeEventListener : ( type , fn ) => {
673
+ rems . push ( { type, fn } ) ;
674
+ }
675
+ } ;
676
+ const at = {
677
+ length : 0 ,
678
+ addEventListener : ( type , fn ) => null ,
679
+ removeEventListener : ( type , fn ) => null
680
+ } ;
681
+ const el = document . createElement ( 'div' ) ;
682
+
683
+ el . audioTracks = at ;
684
+ el . videoTracks = vt ;
685
+
686
+ const htmlTech = new Html5 ( { el} ) ;
687
+
688
+ assert . equal ( adds . length , 3 ,
689
+ 'should have added change, remove, add listeners' ) ;
690
+ assert . equal ( rems . length , 0 ,
691
+ 'no listeners should be removed' ) ;
692
+
693
+ htmlTech . overrideNativeTracks ( true ) ;
694
+
695
+ assert . equal ( adds . length , 3 ,
696
+ 'should not have added additional listeners' ) ;
697
+ assert . equal ( rems . length , 3 ,
698
+ 'should have removed previous three listeners' ) ;
699
+
700
+ htmlTech . overrideNativeTracks ( true ) ;
701
+
702
+ assert . equal ( adds . length , 3 ,
703
+ 'no state change so do not add listeners' ) ;
704
+ assert . equal ( rems . length , 3 ,
705
+ 'no state change so do not remove listeners' ) ;
706
+
707
+ htmlTech . overrideNativeTracks ( false ) ;
708
+
709
+ assert . equal ( adds . length , 6 ,
710
+ 'should add listeners because native tracks should be proxied' ) ;
711
+ assert . equal ( rems . length , 3 ,
712
+ 'should not remove listeners because there where none added on previous state' ) ;
713
+
714
+ htmlTech . dispose ( ) ;
715
+ } ) ;
606
716
}
607
717
608
718
QUnit . test ( 'should always return currentSource_ if set' , function ( assert ) {
0 commit comments