This repository was archived by the owner on Mar 13, 2018. It is now read-only.
File tree 3 files changed +39
-9
lines changed
3 files changed +39
-9
lines changed Original file line number Diff line number Diff line change 355
355
// 1.3.2.2.1
356
356
destributeNodeInto ( pool [ j ] , shadow ) ;
357
357
}
358
-
359
- } else {
360
- // 1.3.3
361
- this . distributionResolution ( shadowTree ) ;
362
358
}
359
+
360
+ // 1.3.3
361
+ this . distributionResolution ( shadowTree ) ;
363
362
}
364
363
}
364
+
365
365
for ( var child = node . firstChild ; child ; child = child . nextSibling ) {
366
366
this . distributionResolution ( child ) ;
367
367
}
376
376
var content = node ;
377
377
this . updateDependentAttributes ( content . getAttribute ( 'select' ) ) ;
378
378
379
+ var anyDistributed = false ;
380
+
379
381
// 1.1
380
382
for ( var i = 0 ; i < pool . length ; i ++ ) {
381
383
var node = pool [ i ] ;
384
386
if ( matches ( node , content ) ) {
385
387
destributeNodeInto ( node , content ) ;
386
388
pool [ i ] = undefined ;
389
+ anyDistributed = true ;
387
390
}
388
391
}
389
392
390
393
// 1.2
391
394
// Fallback content
392
- var distributedNodes = getDistributedNodes ( content ) ;
393
- if ( distributedNodes && distributedNodes . length === 0 ) {
395
+ if ( ! anyDistributed ) {
394
396
for ( var child = content . firstChild ;
395
397
child ;
396
398
child = child . nextSibling ) {
Original file line number Diff line number Diff line change @@ -49,7 +49,7 @@ htmlSuite('Document', function() {
49
49
50
50
test ( 'getElementsByTagName' , function ( ) {
51
51
var elements = document . getElementsByTagName ( 'body' ) ;
52
- assert . isTrue ( elements instanceof NodeList ) ;
52
+ assert . isTrue ( elements instanceof HTMLCollection ) ;
53
53
assert . equal ( elements . length , 1 ) ;
54
54
assert . isTrue ( elements [ 0 ] instanceof HTMLElement ) ;
55
55
@@ -58,7 +58,7 @@ htmlSuite('Document', function() {
58
58
assert . equal ( doc . body , elements . item ( 0 ) ) ;
59
59
60
60
var elements2 = doc . getElementsByTagName ( 'body' ) ;
61
- assert . isTrue ( elements2 instanceof NodeList ) ;
61
+ assert . isTrue ( elements2 instanceof HTMLCollection ) ;
62
62
assert . equal ( elements2 . length , 1 ) ;
63
63
assert . isTrue ( elements2 [ 0 ] instanceof HTMLElement ) ;
64
64
assert . equal ( doc . body , elements2 [ 0 ] ) ;
Original file line number Diff line number Diff line change @@ -192,7 +192,35 @@ suite('Shadow DOM reprojection', function() {
192
192
193
193
testRender ( ) ;
194
194
testRender ( ) ;
195
+ } ) ;
196
+
197
+ test ( 'Regression 432' , function ( ) {
198
+ // https://github.com/Polymer/ShadowDOM/issues/432
199
+
200
+ var xFoo = document . createElement ( 'x-foo' ) ;
201
+ xFoo . innerHTML = '<div>Hello</div>' ;
202
+ var div = xFoo . firstChild ;
203
+
204
+ var xBarSr = xFoo . createShadowRoot ( ) ;
205
+
206
+ var xFooSr = xFoo . createShadowRoot ( ) ;
207
+ xFooSr . innerHTML = '<x-zot><content></content></x-zot><shadow></shadow>' ;
208
+ var xZot = xFooSr . firstChild ;
209
+ var content = xZot . firstChild ;
210
+ var shadow = xZot . lastChild ;
211
+
212
+ xZotSr = xZot . createShadowRoot ( ) ;
213
+ xZotSr . innerHTML = '<content></content>' ;
214
+ var content2 = xZotSr . firstChild ;
215
+
216
+ xFoo . offsetWidth ;
217
+
218
+ assertArrayEqual ( content . getDistributedNodes ( ) , [ div ] ) ;
219
+ assertArrayEqual ( shadow . getDistributedNodes ( ) , [ div ] ) ;
220
+ assertArrayEqual ( content2 . getDistributedNodes ( ) , [ div ] ) ;
221
+
222
+ assertArrayEqual ( div . getDestinationInsertionPoints ( ) , [ content , content2 ] ) ;
195
223
196
-
224
+ assert . equal ( getVisualInnerHtml ( xFoo ) , '<x-zot><div>Hello</div></x-zot>' ) ;
197
225
} ) ;
198
226
} ) ;
You can’t perform that action at this time.
0 commit comments