@@ -2046,6 +2046,41 @@ describe('Zone', function() {
20462046 } ) ;
20472047 } ) ;
20482048
2049+ it ( 'should not remove onEventListener when removing capture listener' , function ( ) {
2050+ const button = document . createElement ( 'button' ) ;
2051+ document . body . append ( button ) ;
2052+ const createEvt = ( ) => {
2053+ const evt = document . createEvent ( 'Event' ) ;
2054+ evt . initEvent ( 'click' , true , true ) ;
2055+ return evt ;
2056+ } ;
2057+ let logs : string [ ] = [ ] ;
2058+ const onClickHandler = ( ) => logs . push ( 'onclick' ) ;
2059+ button . onclick = onClickHandler ;
2060+ let evt = createEvt ( ) ;
2061+ button . dispatchEvent ( evt ) ;
2062+ expect ( logs ) . toEqual ( [ 'onclick' ] ) ;
2063+ logs = [ ] ;
2064+ const listener = ( ) => logs . push ( 'click listener' ) ;
2065+ button . addEventListener ( 'click' , listener , { capture : true } ) ;
2066+ evt = createEvt ( ) ;
2067+ button . dispatchEvent ( evt ) ;
2068+ expect ( logs . sort ( ) ) . toEqual ( [ 'onclick' , 'click listener' ] . sort ( ) ) ;
2069+ logs = [ ] ;
2070+ button . removeEventListener ( 'click' , listener , true ) ;
2071+ evt = createEvt ( ) ;
2072+ button . dispatchEvent ( evt ) ;
2073+ expect ( logs ) . toEqual ( [ 'onclick' ] ) ;
2074+ expect ( button . onclick ) . toBe ( onClickHandler ) ;
2075+ button . onclick = null ;
2076+ logs = [ ] ;
2077+ evt = createEvt ( ) ;
2078+ button . dispatchEvent ( evt ) ;
2079+ expect ( logs ) . toEqual ( [ ] ) ;
2080+ expect ( button . onclick ) . toBe ( null ) ;
2081+ document . body . removeChild ( button ) ;
2082+ } ) ;
2083+
20492084 describe ( 'should be able to remove eventListener during eventListener callback' , function ( ) {
20502085 it ( 'should be able to remove eventListener during eventListener callback' , function ( ) {
20512086 let logs : string [ ] = [ ] ;
0 commit comments