This repository was archived by the owner on Mar 13, 2018. It is now read-only.
File tree 2 files changed +19
-0
lines changed
2 files changed +19
-0
lines changed Original file line number Diff line number Diff line change 266
266
* the real DOM tree and make minimal changes as needed.
267
267
*/
268
268
function RenderNode ( node ) {
269
+ this . skip = false ;
269
270
this . node = node ;
270
271
this . childNodes = [ ] ;
271
272
}
278
279
} ,
279
280
280
281
sync : function ( opt_added ) {
282
+ if ( this . skip )
283
+ return ;
284
+
281
285
var nodeWrapper = this . node ;
282
286
// plain array of RenderNodes
283
287
var newChildren = this . childNodes ;
390
394
391
395
if ( isShadowHost ( node ) ) {
392
396
var renderer = getRendererForHost ( node ) ;
397
+ renderNode . skip = ! renderer . dirty ;
393
398
renderer . render ( renderNode ) ;
394
399
} else {
395
400
// We associate the parent of a content/shadow with the renderer
Original file line number Diff line number Diff line change @@ -451,4 +451,18 @@ suite('Shadow DOM', function() {
451
451
assert . equal ( a . childNodes . length , 2 ) ;
452
452
} ) ;
453
453
454
+ test ( 'nested shadow hosts (issue 245)' , function ( ) {
455
+ var outer = document . createElement ( 'outer' ) ;
456
+ var inner = outer . appendChild ( document . createElement ( 'inner' ) ) ;
457
+
458
+ // Inner first. Order matters.
459
+ var innerShadowRoot = inner . createShadowRoot ( ) ;
460
+ innerShadowRoot . textContent = 'inner' ;
461
+
462
+ var outerShadowRoot = outer . createShadowRoot ( ) ;
463
+ outerShadowRoot . innerHTML = '<content></content>outer' ;
464
+
465
+ assert . equal ( getVisualInnerHtml ( outer ) , '<inner>inner</inner>outer' ) ;
466
+ } ) ;
467
+
454
468
} ) ;
You can’t perform that action at this time.
0 commit comments