This repository was archived by the owner on Mar 13, 2018. It is now read-only.
File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 294294
295295 if ( 'relatedTarget' in event ) {
296296 var originalEvent = unwrap ( event ) ;
297- var relatedTarget = wrap ( originalEvent . relatedTarget ) ;
298-
299- var adjusted = adjustRelatedTarget ( currentTarget , relatedTarget ) ;
300- if ( adjusted === target )
301- return true ;
302-
303- relatedTargetTable . set ( event , adjusted ) ;
297+ // X-Tag sets relatedTarget on a CustomEvent. If they do that there is no
298+ // way to have relatedTarget return the adjusted target but worse is that
299+ // the originalEvent might not have a relatedTarget so we hit an assert
300+ // when we try to wrap it.
301+ if ( originalEvent . relatedTarget ) {
302+ var relatedTarget = wrap ( originalEvent . relatedTarget ) ;
303+
304+ var adjusted = adjustRelatedTarget ( currentTarget , relatedTarget ) ;
305+ if ( adjusted === target )
306+ return true ;
307+
308+ relatedTargetTable . set ( event , adjusted ) ;
309+ }
304310 }
305311
306312 eventPhaseTable . set ( event , phase ) ;
Original file line number Diff line number Diff line change @@ -1277,4 +1277,17 @@ test('retarget order (multiple shadow roots)', function() {
12771277 text . dispatchEvent ( new Event ( 'x' ) ) ;
12781278 } ) ;
12791279
1280+ test ( 'manual relatedTarget' , function ( ) {
1281+ var ce = new CustomEvent ( 'x' ) ;
1282+ ce . relatedTarget = 42 ;
1283+ var count = 0 ;
1284+ document . addEventListener ( 'x' , function f ( e ) {
1285+ count ++ ;
1286+ assert . equal ( e . relatedTarget , 42 ) ;
1287+ document . removeEventListener ( 'x' , f ) ;
1288+ } ) ;
1289+ document . dispatchEvent ( ce ) ;
1290+ assert . equal ( count , 1 ) ;
1291+ } ) ;
1292+
12801293} ) ;
You can’t perform that action at this time.
0 commit comments