This repository was archived by the owner on Mar 13, 2018. It is now read-only.
File tree 2 files changed +40
-0
lines changed
2 files changed +40
-0
lines changed Original file line number Diff line number Diff line change 184
184
return df ;
185
185
}
186
186
187
+ function clearChildNodes ( wrapper ) {
188
+ if ( wrapper . firstChild_ !== undefined ) {
189
+ var child = wrapper . firstChild_ ;
190
+ while ( child ) {
191
+ var tmp = child ;
192
+ child = child . nextSibling_ ;
193
+ tmp . parentNode_ = tmp . previousSibling_ = tmp . nextSibling_ = undefined ;
194
+ }
195
+ }
196
+ wrapper . firstChild_ = wrapper . lastChild_ = undefined ;
197
+ }
198
+
187
199
function removeAllChildNodes ( wrapper ) {
188
200
if ( wrapper . invalidateShadowRenderer ( ) ) {
189
201
var childWrapper = wrapper . firstChild ;
325
337
326
338
if ( useNative ) {
327
339
ensureSameOwnerDocument ( this , childWrapper ) ;
340
+ clearChildNodes ( this ) ;
328
341
originalInsertBefore . call ( this . impl , unwrap ( childWrapper ) , refNode ) ;
329
342
} else {
330
343
if ( ! previousNode )
402
415
childWrapper . previousSibling_ = childWrapper . nextSibling_ =
403
416
childWrapper . parentNode_ = undefined ;
404
417
} else {
418
+ clearChildNodes ( this ) ;
405
419
removeChildOriginalHelper ( this . impl , childNode ) ;
406
420
}
407
421
467
481
}
468
482
} else {
469
483
ensureSameOwnerDocument ( this , newChildWrapper ) ;
484
+ clearChildNodes ( this ) ;
470
485
originalReplaceChild . call ( this . impl , unwrap ( newChildWrapper ) ,
471
486
oldChildNode ) ;
472
487
}
559
574
this . appendChild ( textNode ) ;
560
575
}
561
576
} else {
577
+ clearChildNodes ( this ) ;
562
578
this . impl . textContent = textContent ;
563
579
}
564
580
Original file line number Diff line number Diff line change @@ -491,4 +491,28 @@ suite('Shadow DOM', function() {
491
491
assert.equal(count, 0);
492
492
});
493
493
*/
494
+
495
+ test ( 'moving nodes from light to shadow - issue 48' , function ( ) {
496
+ var div = document . createElement ( 'div' ) ;
497
+ div . innerHTML = '<a></a><b></b>' ;
498
+ var a = div . firstChild ;
499
+ var b = div . lastChild ;
500
+
501
+ var sr = div . createShadowRoot ( ) ;
502
+ sr . innerHTML = '<c></c>' ;
503
+ var c = sr . firstChild ;
504
+
505
+ assert . equal ( getVisualInnerHtml ( div ) , '<c></c>' ) ;
506
+
507
+ c . appendChild ( a ) ;
508
+ assert . equal ( getVisualInnerHtml ( div ) , '<c><a></a></c>' ) ;
509
+
510
+ c . textContent = '' ;
511
+ assert . equal ( getVisualInnerHtml ( div ) , '<c></c>' ) ;
512
+
513
+ c . appendChild ( b ) ;
514
+ assert . equal ( getVisualInnerHtml ( div ) , '<c><b></b></c>' ) ;
515
+
516
+ } ) ;
517
+
494
518
} ) ;
You can’t perform that action at this time.
0 commit comments