Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also .

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also .
base repository: Polymer/polymer
Choose a Base Repository
Polymer/polymer
100000001/polymer
11111000000/biopolymer
Acidburn0zzz/polymer
Artyom4D/polymer
BarkocziRoland/polymer
BasilLade/polymer
BluPerf/polymer
BrianSipple/polymer
BushiNoTamashiiKen/polymer
CNXTEoEorg/polymer
ColleenKeegan/polymer
Durdona/polymer
EmmaGrassi/polymer
GCPBigData/polymer
GeneralElectric/polymer
ISvengali/polymer
Jbossalini/polymer
Kazzje/polymer
ManufactureDistrict/polymer
MedRedha/polymer
Nitansh/polymer
PolymerEl/polymer
RandomStuffs22/polymer
STRML/polymer
Sagar2366/polymer
SaidTayebi/polymer
Satya-AK/polymer
Shipow/polymer
TimvdLippe/polymer
Troland/polymer
Vintharas/polymer
WahsonLeung/polymer
Waseem-Abbas/polymer
Yokubee/polymer
ZheFeng/polymer
aaronteng922/polymer
adam-singer/polymer
adamdbradley/polymer
aizatyahyaa/polymer
alexcheng1982/polymer
alinz/polymer
allmywant/polymer
andylou/polymer
andypham/polymer
anujsrc/polymer
arthurevans/polymer
arv/toolkit
astraadria4ari/polymer
austinvernsonger/polymer
awesome/polymer
bantana/polymer
belm/polymer
beomjae/polymer
betop/polymer
bryansattler/polymer
casualuser/toolkit
cbarbsintokyo/polymer
chenxinshi/polymer
cletusw/polymer
clovisdasilvaneto/polymer-1
cocus-es/polymer
contactlab/polymer
cssgist/polymer
cymen/polymer
d1manson/polymer
davgit/polymer
deepak1556/polymer
dekaralos/polymer
devcrust/polymer
devnaruka/polymer
dewott-technologies/polymer
dmorosinotto/polymer
dontuse/polymer
dshamaeli/polymer
dujuanxian/polymer
edisplay/polymer
ega1979/polymer
empoalp/polymer
en4ce/polymer
exlerdesigns/polymer
feskong/polymer
fjsnogueira/polymer
fnakstad/polymer
gerardoacuna/polymer
girliemac/polymer
happyspace/polymer
henrylee2cn/polymer
hutaoer/polymer
iArnaud/polymer
iLotus/polymer
igutnikdev/polymer
ilyych/polymer
imaginationagents1/polymer
inigo0178/polymer
iulyus/polymer
jacklovepdf/polymer
jamesalley/polymer
jamiepg1/polymer
jaredwilli/polymer
jarvys/polymer
jayvansantos/polymer
jessepinuelas/polymer
jiangshide/polymer
jiazil/polymer
jjpsos/polymer
jmesserly/polymer
joaogbm/polymer
jongrover/polymer
jpaezsa/polymer
just-me-cy/polymer
kanasite/polymer
kelonye/polymer
kotiya/polymer
kublaj/polymer
labriola/polymer
lanphan/polymer
letsila/polymer
lholmquist/polymer
liqingzhu/polymer
lisongx/polymer
lonjoy/polymer
lovefawn/polymer
m4b/polymer
markserbol/polymer
martabel/polymer
mauricionr/polymer
mbleigh/polymer
mcanthony/polymer
mdarif/polymer
miamarti/polymer
michaelhweb/polymer
mimundome/polymer
minhsong/polymer
mis8680/polymer
mixed/polymer
mk199/polymer
mmnmm/polymer
montazze/polymer
naqi324/polymer
naysumyat/polymer
nichealpham/polymer
nvdnkpr/polymer
nxbdi/polymer
onesfreedom/polymer
oscarenas/polymer
parikhutsav/polymer
pranderson/polymer
prasadsambari/polymer
primaapriansyah/toolkit
ptrpovtyu/polymer
rafaelducati/polymer
rakesh-mohanta/polymer
randyamiel/polymer
randylien/polymer
raymonlee/polymer
redfordtsai/polymer
rishitc/polymer
rivkesse/polymer
rjnpnigrhi/polymer
royyu2898/polymer
salvoravida/polymer
sanyaade-teachings/polymer
seasu/polymer
sergiolimajr/polymer
shockwavemk/polymer
simonbaker/polymer
sorvell/toolkit
soulhakr/polymer
srinarasi/polymer
startsomewhere/polymer
svencent/polymer
sxtxixtxcxh/polymer
sylphdesign/polymer
tcorral/polymer
tedyhy/polymer
teruhisa/polymer
thegrowthland/polymer
tibbon/polymer
toolkitchen/toolkit
trevenen/polymer
uapui-dev/polymer
uloga/polymer
unixcrh/polymer
varunjha089/polymer
web-padawan/polymer
woerwin/polymer
xiaozhen1900/polymer
xiaxiazhu/polymer
xtidt/polymer
xuanvu/polymer
xzymol123/polymer
yangjae/polymer
yanguanglan/polymer
yold-io/polymer
yuebin/polymer
yuinchien/toolkit
zhangchunsheng/polymer
zhangjianshe/polymer
zxmLoveLife/polymer
Nothing to show
base: 2283b3632d48
head repository: Polymer/polymer
Choose a Head Repository
Polymer/polymer
100000001/polymer
11111000000/biopolymer
Acidburn0zzz/polymer
Artyom4D/polymer
BarkocziRoland/polymer
BasilLade/polymer
BluPerf/polymer
BrianSipple/polymer
BushiNoTamashiiKen/polymer
CNXTEoEorg/polymer
ColleenKeegan/polymer
Durdona/polymer
EmmaGrassi/polymer
GCPBigData/polymer
GeneralElectric/polymer
ISvengali/polymer
Jbossalini/polymer
Kazzje/polymer
ManufactureDistrict/polymer
MedRedha/polymer
Nitansh/polymer
PolymerEl/polymer
RandomStuffs22/polymer
STRML/polymer
Sagar2366/polymer
SaidTayebi/polymer
Satya-AK/polymer
Shipow/polymer
TimvdLippe/polymer
Troland/polymer
Vintharas/polymer
WahsonLeung/polymer
Waseem-Abbas/polymer
Yokubee/polymer
ZheFeng/polymer
aaronteng922/polymer
adam-singer/polymer
adamdbradley/polymer
aizatyahyaa/polymer
alexcheng1982/polymer
alinz/polymer
allmywant/polymer
andylou/polymer
andypham/polymer
anujsrc/polymer
arthurevans/polymer
arv/toolkit
astraadria4ari/polymer
austinvernsonger/polymer
awesome/polymer
bantana/polymer
belm/polymer
beomjae/polymer
betop/polymer
bryansattler/polymer
casualuser/toolkit
cbarbsintokyo/polymer
chenxinshi/polymer
cletusw/polymer
clovisdasilvaneto/polymer-1
cocus-es/polymer
contactlab/polymer
cssgist/polymer
cymen/polymer
d1manson/polymer
davgit/polymer
deepak1556/polymer
dekaralos/polymer
devcrust/polymer
devnaruka/polymer
dewott-technologies/polymer
dmorosinotto/polymer
dontuse/polymer
dshamaeli/polymer
dujuanxian/polymer
edisplay/polymer
ega1979/polymer
empoalp/polymer
en4ce/polymer
exlerdesigns/polymer
feskong/polymer
fjsnogueira/polymer
fnakstad/polymer
gerardoacuna/polymer
girliemac/polymer
happyspace/polymer
henrylee2cn/polymer
hutaoer/polymer
iArnaud/polymer
iLotus/polymer
igutnikdev/polymer
ilyych/polymer
imaginationagents1/polymer
inigo0178/polymer
iulyus/polymer
jacklovepdf/polymer
jamesalley/polymer
jamiepg1/polymer
jaredwilli/polymer
jarvys/polymer
jayvansantos/polymer
jessepinuelas/polymer
jiangshide/polymer
jiazil/polymer
jjpsos/polymer
jmesserly/polymer
joaogbm/polymer
jongrover/polymer
jpaezsa/polymer
just-me-cy/polymer
kanasite/polymer
kelonye/polymer
kotiya/polymer
kublaj/polymer
labriola/polymer
lanphan/polymer
letsila/polymer
lholmquist/polymer
liqingzhu/polymer
lisongx/polymer
lonjoy/polymer
lovefawn/polymer
m4b/polymer
markserbol/polymer
martabel/polymer
mauricionr/polymer
mbleigh/polymer
mcanthony/polymer
mdarif/polymer
miamarti/polymer
michaelhweb/polymer
mimundome/polymer
minhsong/polymer
mis8680/polymer
mixed/polymer
mk199/polymer
mmnmm/polymer
montazze/polymer
naqi324/polymer
naysumyat/polymer
nichealpham/polymer
nvdnkpr/polymer
nxbdi/polymer
onesfreedom/polymer
oscarenas/polymer
parikhutsav/polymer
pranderson/polymer
prasadsambari/polymer
primaapriansyah/toolkit
ptrpovtyu/polymer
rafaelducati/polymer
rakesh-mohanta/polymer
randyamiel/polymer
randylien/polymer
raymonlee/polymer
redfordtsai/polymer
rishitc/polymer
rivkesse/polymer
rjnpnigrhi/polymer
royyu2898/polymer
salvoravida/polymer
sanyaade-teachings/polymer
seasu/polymer
sergiolimajr/polymer
shockwavemk/polymer
simonbaker/polymer
sorvell/toolkit
soulhakr/polymer
srinarasi/polymer
startsomewhere/polymer
svencent/polymer
sxtxixtxcxh/polymer
sylphdesign/polymer
tcorral/polymer
tedyhy/polymer
teruhisa/polymer
thegrowthland/polymer
tibbon/polymer
toolkitchen/toolkit
trevenen/polymer
uapui-dev/polymer
uloga/polymer
unixcrh/polymer
varunjha089/polymer
web-padawan/polymer
woerwin/polymer
xiaozhen1900/polymer
xiaxiazhu/polymer
xtidt/polymer
xuanvu/polymer
xzymol123/polymer
yangjae/polymer
yanguanglan/polymer
yold-io/polymer
yuebin/polymer
yuinchien/toolkit
zhangchunsheng/polymer
zhangjianshe/polymer
zxmLoveLife/polymer
Nothing to show
compare: 26472ce77afc
  • 2 commits
  • 3 files changed
  • 1 commit comment
  • 1 contributor
Commits on Dec 12, 2014
…stribution to _distributePool; _poolPopulation to _collectPool
Showing with 74 additions and 54 deletions.
  1. +45 −34 src/features/content.html
  2. +27 −18 test/unit/ready-elements.html
  3. +2 −2 test/unit/ready.html
@@ -25,12 +25,6 @@
register: function(prototype) {
var t = prototype._template;
// TODO(sorvell): is qsa is wrong here due to distribution?
// TODO(sjmiles): No element should ever actually stamp a <content> node
// into it's composed tree, so I believe this is actually correct.
// However, I wonder if it's more efficient to capture during annotation
// parsing, since the parse step does a tree walk in any case, and the
// tree is smaller before element expansion.
prototype._useContent = prototype._useContent ||
Boolean(t && t.content.querySelector('content'));
},
@@ -57,12 +51,15 @@
if (!this.contentRoot) {
throw Error('poolContent() must be called before distributeContent()');
}
// NOTE: `contentRoot` is populated only for the first
// distribution. After that dom should be in the composed tree and
// distribution info should not be reset.
// reset distributions
this._resetLightTree(this.contentRoot);
this._resetDistribution(this.contentRoot);
// compute which nodes should be distributed where
// TODO(jmesserly): this is simplified because we assume a single
// ShadowRoot per host and no `<shadow>`.
this._poolDistribution(this.contentRoot, this._poolPopulation());
this._distributePool(this.contentRoot, this._collectPool());
// update the real DOM to be the composed tree
this._composeTree(this);
},
@@ -97,11 +94,29 @@
// still prefixed. Alternatively we could just polyfill it somewhere.
// Note that the arguments are reversed from what you might expect.
elementMatches: function(selector, node) {
if (node === undefined) node = this;
if (node === undefined) {
node = this;
}
return matchesSelector.call(node, selector);
},
_poolPopulation: function() {
// Many of the following methods are all conceptually static, but they are
// included here as "protected" methods to allow overriding.
_resetDistribution: function(node) {
var children = getLightChildren(node);
for (var i = 0; i < children.length; i++) {
var child = children[i];
if (isInsertionPoint(child)) {
child._distributedNodes = [];
} else if (child._destinationInsertionPoints) {
child._destinationInsertionPoints = undefined;
}
this._resetDistribution(child);
}
},
_collectPool: function() {
// Gather the pool of nodes that should be distributed. We will combine
// these with the "content root" to arrive at the composed tree.
var pool = [];
@@ -117,31 +132,17 @@
return pool;
},
// Many of the following methods are all conceptually static, but they are
// included here as "protected" methods to allow overriding.
_resetLightTree: function(node) {
var children = getLightChildren(node);
for (var i = 0; i < children.length; i++) {
var child = children[i];
if (isInsertionPoint(child)) {
child._distributedNodes = [];
} else if (child._destinationInsertionPoints) {
child._destinationInsertionPoints = undefined;
}
this._resetLightTree(child);
}
},
_poolDistribution: function(node, pool) {
if (node.localName == 'content') {
_distributePool: function(node, pool) {
if (isInsertionPoint(node)) {
// distribute nodes from the pool that this selector matches
var content = node;
var anyDistributed = false;
for (var i = 0; i < pool.length; i++) {
var node = pool[i];
// skip nodes that were already used
if (!node) continue;
if (!node) {
continue;
}
// distribute this node if it matches
if (this._matchesContentSelect(node, content)) {
distributeNodeInto(node, content);
@@ -163,7 +164,7 @@
// recursively distribute.
var children = getLightChildren(node);
for (var i = 0; i < children.length; i++) {
this._poolDistribution(children[i], pool);
this._distributePool(children[i], pool);
}
},
@@ -224,12 +225,18 @@
_matchesContentSelect: function(node, contentElement) {
var select = contentElement.getAttribute('select');
// no selector matches all nodes (including text)
if (!select) return true;
if (!select) {
return true;
}
select = select.trim();
// same thing if it had only whitespace
if (!select) return true;
if (!select) {
return true;
}
// selectors can only match Elements
if (!(node instanceof Element)) return false;
if (!(node instanceof Element)) {
return false;
}
// only valid selectors can match:
// TypeSelector
// *
@@ -238,7 +245,11 @@
// AttributeSelector
// negation
var validSelectors = /^(:not\()?[*.#[a-zA-Z_|]/;
if (!validSelectors.test(select)) return false;
if (!validSelectors.test(select)) {
return false;
}
// TODO(sorvell): This try..catch seems unfortunate and will nerf
// performance, can we remove?
try {
return this.elementMatches(select, node);
} catch (ex) {
@@ -6,49 +6,58 @@
}
var readyMixin = {
moniker: function() {
return this.tag + (this.id ? '#' + this.id : '')
},
ready: function() {
readyList.push(this.name);
readyList.push(this.moniker());
}
}
};
</script>

<template>
x-zot
</template>
<script>
Polymer(extend({
name: 'x-zot',
}, readyMixin));
Polymer({
tag: 'x-zot',
mixins: [readyMixin]
});
</script>

<template>
<x-zot></x-zot>
</template>
<script>
Polymer(extend({
name: 'x-bar',
}, readyMixin));
Polymer({
tag: 'x-bar',
mixins: [readyMixin]
});
</script>

<template>
<x-bar></x-bar>
<x-bar></x-bar>
</template>
<script>
Polymer(extend({
name: 'x-foo',
}, readyMixin));
Polymer({
tag: 'x-foo',
mixins: [readyMixin]
});
</script>

<template>
<x-zot id="a">
<x-zot id="b"></x-zot>
<x-zot id="c">
<x-zot id="d"></x-zot>
</x-zot>
</x-zot>
<x-foo></x-foo>
</template>
<script>
Polymer(extend({
name: 'x-ready',
}, readyMixin));
Polymer({
tag: 'x-ready',
mixins: [readyMixin]
});
</script>
@@ -25,14 +25,14 @@
suite('ready', function() {
test('element create in dom calls ready', function() {
assert.deepEqual(readyList, ['x-ready', 'x-foo', 'x-bar', 'x-zot', 'x-bar', 'x-zot']);
assert.deepEqual(readyList, ['x-ready', 'x-zot#a', 'x-zot#b', 'x-zot#c', 'x-zot#d', 'x-foo', 'x-bar', 'x-zot', 'x-bar', 'x-zot']);
});
test('element create + attach calls ready', function() {
clearReadyList();
document.body.appendChild(document.createElement('x-ready'));
CustomElements.takeRecords(document);
assert.deepEqual(readyList, ['x-ready', 'x-foo', 'x-bar', 'x-zot', 'x-bar', 'x-zot']);
assert.deepEqual(readyList, ['x-ready', 'x-zot#a', 'x-zot#b', 'x-zot#c', 'x-zot#d', 'x-foo', 'x-bar', 'x-zot', 'x-bar', 'x-zot']);
});
});

Showing you all comments on commits in this comparison.

@jmesserly

This comment has been minimized.

Copy link
Contributor

jmesserly commented on 26472ce Dec 12, 2014

Nice. LGTM. Love the new names!

Regarding "TODO: this try..catch seems unfortunate" ... yeah, you can totally remove it, IMO. It would only happen if somehow an invalid selector got that far. In a polyfill maybe such strictness is helpful, but I can't see that here. I had a mental note to clean up the try ... catch, I think I forgot when porting the change over. Doh!

You can’t perform that action at this time.