| Index: third_party/polymer/v1_0/components-chromium/polymer/polymer-micro-extracted.js
|
| diff --git a/third_party/polymer/v1_0/components-chromium/polymer/polymer-micro-extracted.js b/third_party/polymer/v1_0/components-chromium/polymer/polymer-micro-extracted.js
|
| index 889a2349ff0f8b6f25e8d49261a9acb907ad3da5..95d8736d3e630ae8bc6d9e6ad0adafbd686e5ec8 100644
|
| --- a/third_party/polymer/v1_0/components-chromium/polymer/polymer-micro-extracted.js
|
| +++ b/third_party/polymer/v1_0/components-chromium/polymer/polymer-micro-extracted.js
|
| @@ -15,10 +15,11 @@ addEventListener('DOMContentLoaded', resolve);
|
| window.Polymer = {
|
| Settings: function () {
|
| var user = window.Polymer || {};
|
| -location.search.slice(1).split('&').forEach(function (o) {
|
| +var parts = location.search.slice(1).split('&');
|
| +for (var i = 0, o; i < parts.length && (o = parts[i]); i++) {
|
| o = o.split('=');
|
| o[0] && (user[o[0]] = o[1] || true);
|
| -});
|
| +}
|
| var wantShadow = user.dom === 'shadow';
|
| var hasShadow = Boolean(Element.prototype.createShadowRoot);
|
| var nativeShadow = hasShadow && !window.ShadowDOMPolyfill;
|
| @@ -105,15 +106,53 @@ this._callbacks.push(cb);
|
| },
|
| _makeReady: function () {
|
| this._ready = true;
|
| -this._callbacks.forEach(function (cb) {
|
| -cb();
|
| -});
|
| +for (var i = 0; i < this._callbacks.length; i++) {
|
| +this._callbacks[i]();
|
| +}
|
| this._callbacks = [];
|
| },
|
| _catchFirstRender: function () {
|
| requestAnimationFrame(function () {
|
| Polymer.RenderStatus._makeReady();
|
| });
|
| +},
|
| +_afterNextRenderQueue: [],
|
| +_waitingNextRender: false,
|
| +afterNextRender: function (element, fn, args) {
|
| +this._watchNextRender();
|
| +this._afterNextRenderQueue.push([
|
| +element,
|
| +fn,
|
| +args
|
| +]);
|
| +},
|
| +_watchNextRender: function () {
|
| +if (!this._waitingNextRender) {
|
| +this._waitingNextRender = true;
|
| +var fn = function () {
|
| +Polymer.RenderStatus._flushNextRender();
|
| +};
|
| +if (!this._ready) {
|
| +this.whenReady(fn);
|
| +} else {
|
| +requestAnimationFrame(fn);
|
| +}
|
| +}
|
| +},
|
| +_flushNextRender: function () {
|
| +var self = this;
|
| +setTimeout(function () {
|
| +self._flushRenderCallbacks(self._afterNextRenderQueue);
|
| +self._afterNextRenderQueue = [];
|
| +self._waitingNextRender = false;
|
| +});
|
| +},
|
| +_flushRenderCallbacks: function (callbacks) {
|
| +for (var i = 0, h; i < callbacks.length; i++) {
|
| +h = callbacks[i];
|
| +h[1].apply(h[0], h[2] || Polymer.nar);
|
| +}
|
| +;
|
| }
|
| };
|
| if (window.HTMLImports) {
|
| @@ -143,27 +182,33 @@ this._doBehavior('created');
|
| this._initFeatures();
|
| },
|
| attachedCallback: function () {
|
| +var self = this;
|
| Polymer.RenderStatus.whenReady(function () {
|
| -this.isAttached = true;
|
| -this._doBehavior('attached');
|
| -}.bind(this));
|
| +self.isAttached = true;
|
| +self._doBehavior('attached');
|
| +});
|
| },
|
| detachedCallback: function () {
|
| this.isAttached = false;
|
| this._doBehavior('detached');
|
| },
|
| -attributeChangedCallback: function (name) {
|
| +attributeChangedCallback: function (name, oldValue, newValue) {
|
| this._attributeChangedImpl(name);
|
| -this._doBehavior('attributeChanged', arguments);
|
| +this._doBehavior('attributeChanged', [
|
| +name,
|
| +oldValue,
|
| +newValue
|
| +]);
|
| },
|
| _attributeChangedImpl: function (name) {
|
| this._setAttributeToProperty(this, name);
|
| },
|
| extend: function (prototype, api) {
|
| if (prototype && api) {
|
| -Object.getOwnPropertyNames(api).forEach(function (n) {
|
| +var n$ = Object.getOwnPropertyNames(api);
|
| +for (var i = 0, n; i < n$.length && (n = n$[i]); i++) {
|
| this.copyOwnProperty(n, api, prototype);
|
| -}, this);
|
| +}
|
| }
|
| return prototype || api;
|
| },
|
| @@ -241,7 +286,7 @@ import: function (id, selector) {
|
| if (id) {
|
| var m = findModule(id);
|
| if (!m) {
|
| -forceDocumentUpgrade();
|
| +forceDomModulesUpgrade();
|
| m = findModule(id);
|
| }
|
| if (m && selector) {
|
| @@ -253,12 +298,17 @@ return m;
|
| });
|
| var cePolyfill = window.CustomElements && !CustomElements.useNative;
|
| document.registerElement('dom-module', DomModule);
|
| -function forceDocumentUpgrade() {
|
| +function forceDomModulesUpgrade() {
|
| if (cePolyfill) {
|
| var script = document._currentScript || document.currentScript;
|
| var doc = script && script.ownerDocument || document;
|
| -if (doc) {
|
| -CustomElements.upgradeAll(doc);
|
| +var modules = doc.querySelectorAll('dom-module');
|
| +for (var i = modules.length - 1, m; i >= 0 && (m = modules[i]); i--) {
|
| +if (m.__upgraded__) {
|
| +return;
|
| +} else {
|
| +CustomElements.upgrade(m);
|
| +}
|
| }
|
| }
|
| }
|
| @@ -293,7 +343,8 @@ return behaviors;
|
| },
|
| _flattenBehaviorsList: function (behaviors) {
|
| var flat = [];
|
| -behaviors.forEach(function (b) {
|
| +for (var i = 0; i < behaviors.length; i++) {
|
| +var b = behaviors[i];
|
| if (b instanceof Array) {
|
| flat = flat.concat(this._flattenBehaviorsList(b));
|
| } else if (b) {
|
| @@ -301,31 +352,16 @@ flat.push(b);
|
| } else {
|
| this._warn(this._logf('_flattenBehaviorsList', 'behavior is null, check for missing or 404 import'));
|
| }
|
| -}, this);
|
| +}
|
| return flat;
|
| },
|
| _mixinBehavior: function (b) {
|
| -Object.getOwnPropertyNames(b).forEach(function (n) {
|
| -switch (n) {
|
| -case 'hostAttributes':
|
| -case 'registered':
|
| -case 'properties':
|
| -case 'observers':
|
| -case 'listeners':
|
| -case 'created':
|
| -case 'attached':
|
| -case 'detached':
|
| -case 'attributeChanged':
|
| -case 'configure':
|
| -case 'ready':
|
| -break;
|
| -default:
|
| -if (!this.hasOwnProperty(n)) {
|
| +var n$ = Object.getOwnPropertyNames(b);
|
| +for (var i = 0, n; i < n$.length && (n = n$[i]); i++) {
|
| +if (!Polymer.Base._behaviorProperties[n] && !this.hasOwnProperty(n)) {
|
| this.copyOwnProperty(n, b, this);
|
| }
|
| -break;
|
| }
|
| -}, this);
|
| },
|
| _prepBehaviors: function () {
|
| this._prepFlattenedBehaviors(this.behaviors);
|
| @@ -337,9 +373,9 @@ this._prepBehavior(behaviors[i]);
|
| this._prepBehavior(this);
|
| },
|
| _doBehavior: function (name, args) {
|
| -this.behaviors.forEach(function (b) {
|
| -this._invokeBehavior(b, name, args);
|
| -}, this);
|
| +for (var i = 0; i < this.behaviors.length; i++) {
|
| +this._invokeBehavior(this.behaviors[i], name, args);
|
| +}
|
| this._invokeBehavior(this, name, args);
|
| },
|
| _invokeBehavior: function (b, name, args) {
|
| @@ -349,12 +385,24 @@ fn.apply(this, args || Polymer.nar);
|
| }
|
| },
|
| _marshalBehaviors: function () {
|
| -this.behaviors.forEach(function (b) {
|
| -this._marshalBehavior(b);
|
| -}, this);
|
| +for (var i = 0; i < this.behaviors.length; i++) {
|
| +this._marshalBehavior(this.behaviors[i]);
|
| +}
|
| this._marshalBehavior(this);
|
| }
|
| });
|
| +Polymer.Base._behaviorProperties = {
|
| +hostAttributes: true,
|
| +registered: true,
|
| +properties: true,
|
| +observers: true,
|
| +listeners: true,
|
| +created: true,
|
| +attached: true,
|
| +detached: true,
|
| +attributeChanged: true,
|
| +ready: true
|
| +};
|
| Polymer.Base._addFeature({
|
| _getExtendedPrototype: function (tag) {
|
| return this._getExtendedNativePrototype(tag);
|
| @@ -406,9 +454,13 @@ properties: {},
|
| getPropertyInfo: function (property) {
|
| var info = this._getPropertyInfo(property, this.properties);
|
| if (!info) {
|
| -this.behaviors.some(function (b) {
|
| -return info = this._getPropertyInfo(property, b.properties);
|
| -}, this);
|
| +for (var i = 0; i < this.behaviors.length; i++) {
|
| +info = this._getPropertyInfo(property, this.behaviors[i].properties);
|
| +if (info) {
|
| +return info;
|
| +}
|
| +}
|
| +;
|
| }
|
| return info || Polymer.nob;
|
| },
|
| @@ -421,6 +473,40 @@ if (p) {
|
| p.defined = true;
|
| }
|
| return p;
|
| +},
|
| +_prepPropertyInfo: function () {
|
| +this._propertyInfo = {};
|
| +for (var i = 0, p; i < this.behaviors.length; i++) {
|
| +this._addPropertyInfo(this._propertyInfo, this.behaviors[i].properties);
|
| +}
|
| +this._addPropertyInfo(this._propertyInfo, this.properties);
|
| +this._addPropertyInfo(this._propertyInfo, this._propertyEffects);
|
| +},
|
| +_addPropertyInfo: function (target, source) {
|
| +if (source) {
|
| +var t, s;
|
| +for (var i in source) {
|
| +t = target[i];
|
| +s = source[i];
|
| +if (i[0] === '_' && !s.readOnly) {
|
| +continue;
|
| +}
|
| +if (!target[i]) {
|
| +target[i] = {
|
| +type: typeof s === 'function' ? s : s.type,
|
| +readOnly: s.readOnly,
|
| +attribute: Polymer.CaseMap.camelToDashCase(i)
|
| +};
|
| +} else {
|
| +if (!t.type) {
|
| +t.type = s.type;
|
| +}
|
| +if (!t.readOnly) {
|
| +t.readOnly = s.readOnly;
|
| +}
|
| +}
|
| +}
|
| +}
|
| }
|
| });
|
| Polymer.CaseMap = {
|
| @@ -448,21 +534,24 @@ return g[0] + '-' + g[1].toLowerCase();
|
| }
|
| };
|
| Polymer.Base._addFeature({
|
| -_prepAttributes: function () {
|
| -this._aggregatedAttributes = {};
|
| -},
|
| _addHostAttributes: function (attributes) {
|
| +if (!this._aggregatedAttributes) {
|
| +this._aggregatedAttributes = {};
|
| +}
|
| if (attributes) {
|
| this.mixin(this._aggregatedAttributes, attributes);
|
| }
|
| },
|
| _marshalHostAttributes: function () {
|
| +if (this._aggregatedAttributes) {
|
| this._applyAttributes(this, this._aggregatedAttributes);
|
| +}
|
| },
|
| _applyAttributes: function (node, attr$) {
|
| for (var n in attr$) {
|
| if (!this.hasAttribute(n) && n !== 'class') {
|
| -this.serializeValueToAttribute(attr$[n], n, this);
|
| +var v = attr$[n];
|
| +this.serializeValueToAttribute(v, n, this);
|
| }
|
| }
|
| },
|
| @@ -470,29 +559,40 @@ _marshalAttributes: function () {
|
| this._takeAttributesToModel(this);
|
| },
|
| _takeAttributesToModel: function (model) {
|
| -for (var i = 0, l = this.attributes.length; i < l; i++) {
|
| -this._setAttributeToProperty(model, this.attributes[i].name);
|
| +if (this.hasAttributes()) {
|
| +for (var i in this._propertyInfo) {
|
| +var info = this._propertyInfo[i];
|
| +if (this.hasAttribute(info.attribute)) {
|
| +this._setAttributeToProperty(model, info.attribute, i, info);
|
| +}
|
| +}
|
| }
|
| },
|
| -_setAttributeToProperty: function (model, attrName) {
|
| +_setAttributeToProperty: function (model, attribute, property, info) {
|
| if (!this._serializing) {
|
| -var propName = Polymer.CaseMap.dashToCamelCase(attrName);
|
| -var info = this.getPropertyInfo(propName);
|
| -if (info.defined || this._propertyEffects && this._propertyEffects[propName]) {
|
| -var val = this.getAttribute(attrName);
|
| -model[propName] = this.deserialize(val, info.type);
|
| +var property = property || Polymer.CaseMap.dashToCamelCase(attribute);
|
| +info = info || this._propertyInfo && this._propertyInfo[property];
|
| +if (info && !info.readOnly) {
|
| +var v = this.getAttribute(attribute);
|
| +model[property] = this.deserialize(v, info.type);
|
| }
|
| }
|
| },
|
| _serializing: false,
|
| -reflectPropertyToAttribute: function (name) {
|
| +reflectPropertyToAttribute: function (property, attribute, value) {
|
| this._serializing = true;
|
| -this.serializeValueToAttribute(this[name], Polymer.CaseMap.camelToDashCase(name));
|
| +value = value === undefined ? this[property] : value;
|
| +this.serializeValueToAttribute(value, attribute || Polymer.CaseMap.camelToDashCase(property));
|
| this._serializing = false;
|
| },
|
| serializeValueToAttribute: function (value, attribute, node) {
|
| var str = this.serialize(value);
|
| -(node || this)[str === undefined ? 'removeAttribute' : 'setAttribute'](attribute, str);
|
| +node = node || this;
|
| +if (str === undefined) {
|
| +node.removeAttribute(attribute);
|
| +} else {
|
| +node.setAttribute(attribute, str);
|
| +}
|
| },
|
| deserialize: function (value, type) {
|
| switch (type) {
|
| @@ -568,13 +668,13 @@ debouncer.stop();
|
| }
|
| }
|
| });
|
| -Polymer.version = '1.2.1';
|
| +Polymer.version = '1.2.3';
|
| Polymer.Base._addFeature({
|
| _registerFeatures: function () {
|
| this._prepIs();
|
| -this._prepAttributes();
|
| this._prepBehaviors();
|
| this._prepConstructor();
|
| +this._prepPropertyInfo();
|
| },
|
| _prepBehavior: function (b) {
|
| this._addHostAttributes(b.hostAttributes);
|
|
|