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 266266 * the real DOM tree and make minimal changes as needed.
267267 */
268268 function RenderNode ( node ) {
269+ this . skip = false ;
269270 this . node = node ;
270271 this . childNodes = [ ] ;
271272 }
278279 } ,
279280
280281 sync : function ( opt_added ) {
282+ if ( this . skip )
283+ return ;
284+
281285 var nodeWrapper = this . node ;
282286 // plain array of RenderNodes
283287 var newChildren = this . childNodes ;
390394
391395 if ( isShadowHost ( node ) ) {
392396 var renderer = getRendererForHost ( node ) ;
397+ renderNode . skip = ! renderer . dirty ;
393398 renderer . render ( renderNode ) ;
394399 } else {
395400 // 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() {
451451 assert . equal ( a . childNodes . length , 2 ) ;
452452 } ) ;
453453
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+
454468} ) ;
You can’t perform that action at this time.
0 commit comments