| Index: pkg/web_components/lib/platform.concat.js
|
| diff --git a/pkg/web_components/lib/platform.concat.js b/pkg/web_components/lib/platform.concat.js
|
| index 9481eee0be7c3190376eb21a565fd7d11cdd3646..68b593d8b5c85d4d4a269cfe1ef246007fbe0745 100644
|
| --- a/pkg/web_components/lib/platform.concat.js
|
| +++ b/pkg/web_components/lib/platform.concat.js
|
| @@ -407,8 +407,9 @@ if (typeof WeakMap === 'undefined') {
|
| if (privateToken !== constructorIsPrivate)
|
| throw Error('Use Path.get to retrieve path objects');
|
|
|
| - if (parts.length)
|
| - Array.prototype.push.apply(this, parts.slice());
|
| + for (var i = 0; i < parts.length; i++) {
|
| + this.push(String(parts[i]));
|
| + }
|
|
|
| if (hasEval && this.length) {
|
| this.getValueFrom = this.compiledGetValueFromFn();
|
| @@ -894,7 +895,7 @@ if (typeof WeakMap === 'undefined') {
|
|
|
| var runningMicrotaskCheckpoint = false;
|
|
|
| - var hasDebugForceFullDelivery = hasObserve && (function() {
|
| + var hasDebugForceFullDelivery = hasObserve && hasEval && (function() {
|
| try {
|
| eval('%RunMicrotasks()');
|
| return true;
|
| @@ -5454,7 +5455,6 @@ window.ShadowDOMPolyfill = {};
|
| var registerWrapper = scope.registerWrapper;
|
| var wrapHTMLCollection = scope.wrapHTMLCollection;
|
| var unwrap = scope.unwrap;
|
| - var wrap = scope.wrap;
|
|
|
| var OriginalHTMLFormElement = window.HTMLFormElement;
|
|
|
| @@ -6692,6 +6692,9 @@ window.ShadowDOMPolyfill = {};
|
| invalidate: function() {
|
| if (!this.dirty) {
|
| this.dirty = true;
|
| + var parentRenderer = this.parentRenderer;
|
| + if (parentRenderer)
|
| + parentRenderer.invalidate();
|
| pendingDirtyRenderers.push(this);
|
| if (renderTimer)
|
| return;
|
| @@ -7605,9 +7608,35 @@ window.ShadowDOMPolyfill = {};
|
| var OriginalDataTransferSetDragImage =
|
| OriginalDataTransfer.prototype.setDragImage;
|
|
|
| - OriginalDataTransfer.prototype.setDragImage = function(image, x, y) {
|
| - OriginalDataTransferSetDragImage.call(this, unwrap(image), x, y);
|
| - };
|
| + if (OriginalDataTransferSetDragImage) {
|
| + OriginalDataTransfer.prototype.setDragImage = function(image, x, y) {
|
| + OriginalDataTransferSetDragImage.call(this, unwrap(image), x, y);
|
| + };
|
| + }
|
| +
|
| +})(window.ShadowDOMPolyfill);
|
| +
|
| +/**
|
| + * Copyright 2014 The Polymer Authors. All rights reserved.
|
| + * Use of this source code is goverened by a BSD-style
|
| + * license that can be found in the LICENSE file.
|
| + */
|
| +
|
| +(function(scope) {
|
| + 'use strict';
|
| +
|
| + var registerWrapper = scope.registerWrapper;
|
| + var unwrap = scope.unwrap;
|
| +
|
| + var OriginalFormData = window.FormData;
|
| +
|
| + function FormData(formElement) {
|
| + this.impl = new OriginalFormData(formElement && unwrap(formElement));
|
| + }
|
| +
|
| + registerWrapper(OriginalFormData, FormData, new OriginalFormData());
|
| +
|
| + scope.wrappers.FormData = FormData;
|
|
|
| })(window.ShadowDOMPolyfill);
|
|
|
| @@ -8113,7 +8142,7 @@ var ShadowCSS = {
|
| cssText = this.insertPolyfillHostInCssText(cssText);
|
| cssText = this.convertColonHost(cssText);
|
| cssText = this.convertColonHostContext(cssText);
|
| - cssText = this.convertCombinators(cssText);
|
| + cssText = this.convertShadowDOMSelectors(cssText);
|
| if (scopeSelector) {
|
| var self = this, cssText;
|
| withCssRules(cssText, function(rules) {
|
| @@ -8206,11 +8235,12 @@ var ShadowCSS = {
|
| return host + part.replace(polyfillHost, '') + suffix;
|
| },
|
| /*
|
| - * Convert ^ and ^^ combinators by replacing with space.
|
| + * Convert combinators like ::shadow and pseudo-elements like ::content
|
| + * by replacing with space.
|
| */
|
| - convertCombinators: function(cssText) {
|
| - for (var i=0; i < combinatorsRe.length; i++) {
|
| - cssText = cssText.replace(combinatorsRe[i], ' ');
|
| + convertShadowDOMSelectors: function(cssText) {
|
| + for (var i=0; i < shadowDOMSelectorsRe.length; i++) {
|
| + cssText = cssText.replace(shadowDOMSelectorsRe[i], ' ');
|
| }
|
| return cssText;
|
| },
|
| @@ -8365,13 +8395,13 @@ var selectorRe = /([^{]*)({[\s\S]*?})/gim,
|
| cssCommentRe = /\/\*[^*]*\*+([^/*][^*]*\*+)*\//gim,
|
| // TODO(sorvell): remove either content or comment
|
| cssCommentNextSelectorRe = /\/\*\s*@polyfill ([^*]*\*+([^/*][^*]*\*+)*\/)([^{]*?){/gim,
|
| - cssContentNextSelectorRe = /polyfill-next-selector[^}]*content\:[\s]*'([^']*)'[^}]*}([^{]*?){/gim,
|
| + cssContentNextSelectorRe = /polyfill-next-selector[^}]*content\:[\s]*['|"]([^'"]*)['|"][^}]*}([^{]*?){/gim,
|
| // TODO(sorvell): remove either content or comment
|
| cssCommentRuleRe = /\/\*\s@polyfill-rule([^*]*\*+([^/*][^*]*\*+)*)\//gim,
|
| - cssContentRuleRe = /(polyfill-rule)[^}]*(content\:[\s]*'([^']*)'[^;]*;)[^}]*}/gim,
|
| + cssContentRuleRe = /(polyfill-rule)[^}]*(content\:[\s]*['|"]([^'"]*)['|"][^;]*;)[^}]*}/gim,
|
| // TODO(sorvell): remove either content or comment
|
| cssCommentUnscopedRuleRe = /\/\*\s@polyfill-unscoped-rule([^*]*\*+([^/*][^*]*\*+)*)\//gim,
|
| - cssContentUnscopedRuleRe = /(polyfill-unscoped-rule)[^}]*(content\:[\s]*'([^']*)'[^;]*;)[^}]*}/gim,
|
| + cssContentUnscopedRuleRe = /(polyfill-unscoped-rule)[^}]*(content\:[\s]*['|"]([^'"]*)['|"][^;]*;)[^}]*}/gim,
|
| cssPseudoRe = /::(x-[^\s{,(]*)/gim,
|
| cssPartRe = /::part\(([^)]*)\)/gim,
|
| // note: :host pre-processed to -shadowcsshost.
|
| @@ -8390,13 +8420,14 @@ var selectorRe = /([^{]*)({[\s\S]*?})/gim,
|
| polyfillHostNoCombinator = polyfillHost + '-no-combinator',
|
| polyfillHostRe = new RegExp(polyfillHost, 'gim'),
|
| polyfillHostContextRe = new RegExp(polyfillHostContext, 'gim'),
|
| - combinatorsRe = [
|
| + shadowDOMSelectorsRe = [
|
| /\^\^/g,
|
| /\^/g,
|
| /\/shadow\//g,
|
| /\/shadow-deep\//g,
|
| /::shadow/g,
|
| - /\/deep\//g
|
| + /\/deep\//g,
|
| + /::content/g
|
| ];
|
|
|
| function stylesToCssText(styles, preserveComments) {
|
| @@ -10858,15 +10889,16 @@ function nodeIsImport(elt) {
|
| }
|
|
|
| function generateScriptDataUrl(script) {
|
| - var scriptContent = generateScriptContent(script), b64;
|
| + var scriptContent = generateScriptContent(script);
|
| + var b64 = 'data:text/javascript';
|
| + // base64 may be smaller, but does not handle unicode characters
|
| + // attempt base64 first, fall back to escaped text
|
| try {
|
| - b64 = btoa(scriptContent);
|
| + b64 += (';base64,' + btoa(scriptContent));
|
| } catch(e) {
|
| - b64 = btoa(unescape(encodeURIComponent(scriptContent)));
|
| - console.warn('Script contained non-latin characters that were forced ' +
|
| - 'to latin. Some characters may be wrong.', script);
|
| + b64 += (';charset=utf-8,' + encodeURIComponent(scriptContent));
|
| }
|
| - return 'data:text/javascript;base64,' + b64;
|
| + return b64;
|
| }
|
|
|
| function generateScriptContent(script) {
|
| @@ -11224,10 +11256,13 @@ if (useNative) {
|
| scope.hasNative = hasNative;
|
| scope.useNative = useNative;
|
| scope.importer = importer;
|
| -scope.whenImportsReady = whenImportsReady;
|
| scope.IMPORT_LINK_TYPE = IMPORT_LINK_TYPE;
|
| scope.isImportLoaded = isImportLoaded;
|
| scope.importLoader = importLoader;
|
| +scope.whenReady = whenImportsReady;
|
| +
|
| +// deprecated
|
| +scope.whenImportsReady = whenImportsReady;
|
|
|
| })(window.HTMLImports);
|
|
|
|
|