Bug 1496698 - Remove Custom Elements polyfill from Web Payments UI. r=jaws
authorMatthew Noorenberghe <mozilla@noorenberghe.ca>
Fri, 05 Oct 2018 15:37:25 +0000
changeset 495548 d58b6e90927f9dd762717179c547276024a624bc
parent 495547 93395637457196a6e01987dde862bbcb3327b976
child 495565 54cb6a2f028b033ef567f00af2f82f5fb97ab437
child 495566 af465aa90d730fa51fed9e76ba46bffe04ac74a7
push id9984
push userffxbld-merge
push dateMon, 15 Oct 2018 21:07:35 +0000
treeherdermozilla-beta@183d27ea8570 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersjaws
bugs1496698
milestone64.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1496698 - Remove Custom Elements polyfill from Web Payments UI. r=jaws Differential Revision: https://phabricator.services.mozilla.com/D7863
browser/components/payments/res/containers/payment-dialog.js
browser/components/payments/res/vendor/custom-elements.min.js
browser/components/payments/res/vendor/custom-elements.min.js.map
browser/components/payments/test/mochitest/mochitest.ini
browser/components/payments/test/mochitest/test_ObservedPropertiesMixin.html
browser/components/payments/test/mochitest/test_PaymentStateSubscriberMixin.html
browser/components/payments/test/mochitest/test_accepted_cards.html
browser/components/payments/test/mochitest/test_address_form.html
browser/components/payments/test/mochitest/test_address_option.html
browser/components/payments/test/mochitest/test_address_picker.html
browser/components/payments/test/mochitest/test_basic_card_form.html
browser/components/payments/test/mochitest/test_basic_card_option.html
browser/components/payments/test/mochitest/test_completion_error_page.html
browser/components/payments/test/mochitest/test_currency_amount.html
browser/components/payments/test/mochitest/test_labelled_checkbox.html
browser/components/payments/test/mochitest/test_order_details.html
browser/components/payments/test/mochitest/test_payer_address_picker.html
browser/components/payments/test/mochitest/test_payment_details_item.html
browser/components/payments/test/mochitest/test_payment_dialog.html
browser/components/payments/test/mochitest/test_payment_dialog_required_top_level_items.html
browser/components/payments/test/mochitest/test_payment_method_picker.html
browser/components/payments/test/mochitest/test_rich_select.html
browser/components/payments/test/mochitest/test_shipping_option_picker.html
--- a/browser/components/payments/res/containers/payment-dialog.js
+++ b/browser/components/payments/res/containers/payment-dialog.js
@@ -1,14 +1,12 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-import "../vendor/custom-elements.min.js";
-
 import PaymentStateSubscriberMixin from "../mixins/PaymentStateSubscriberMixin.js";
 import paymentRequest from "../paymentRequest.js";
 
 import "../components/currency-amount.js";
 import "../components/payment-request-page.js";
 import "../components/accepted-cards.js";
 import "./address-picker.js";
 import "./address-form.js";
deleted file mode 100644
--- a/browser/components/payments/res/vendor/custom-elements.min.js
+++ /dev/null
@@ -1,37 +0,0 @@
-(function(){
-'use strict';var h=new function(){};var aa=new Set("annotation-xml color-profile font-face font-face-src font-face-uri font-face-format font-face-name missing-glyph".split(" "));function n(b){var a=aa.has(b);b=/^[a-z][.0-9_a-z]*-[\-.0-9_a-z]*$/.test(b);return!a&&b}function p(b){var a=b.isConnected;if(void 0!==a)return a;for(;b&&!(b.__CE_isImportDocument||b instanceof Document);)b=b.parentNode||(window.ShadowRoot&&b instanceof ShadowRoot?b.host:void 0);return!(!b||!(b.__CE_isImportDocument||b instanceof Document))}
-function q(b,a){for(;a&&a!==b&&!a.nextSibling;)a=a.parentNode;return a&&a!==b?a.nextSibling:null}
-function t(b,a,c){c=c?c:new Set;for(var d=b;d;){if(d.nodeType===Node.ELEMENT_NODE){var e=d;a(e);var f=e.localName;if("link"===f&&"import"===e.getAttribute("rel")){d=e.import;if(d instanceof Node&&!c.has(d))for(c.add(d),d=d.firstChild;d;d=d.nextSibling)t(d,a,c);d=q(b,e);continue}else if("template"===f){d=q(b,e);continue}if(e=e.__CE_shadowRoot)for(e=e.firstChild;e;e=e.nextSibling)t(e,a,c)}d=d.firstChild?d.firstChild:q(b,d)}}function u(b,a,c){b[a]=c};function v(){this.a=new Map;this.o=new Map;this.f=[];this.b=!1}function ba(b,a,c){b.a.set(a,c);b.o.set(c.constructor,c)}function w(b,a){b.b=!0;b.f.push(a)}function x(b,a){b.b&&t(a,function(a){return y(b,a)})}function y(b,a){if(b.b&&!a.__CE_patched){a.__CE_patched=!0;for(var c=0;c<b.f.length;c++)b.f[c](a)}}function z(b,a){var c=[];t(a,function(b){return c.push(b)});for(a=0;a<c.length;a++){var d=c[a];1===d.__CE_state?b.connectedCallback(d):A(b,d)}}
-function B(b,a){var c=[];t(a,function(b){return c.push(b)});for(a=0;a<c.length;a++){var d=c[a];1===d.__CE_state&&b.disconnectedCallback(d)}}
-function C(b,a,c){c=c?c:{};var d=c.w||new Set,e=c.s||function(a){return A(b,a)},f=[];t(a,function(a){if("link"===a.localName&&"import"===a.getAttribute("rel")){var c=a.import;c instanceof Node&&"complete"===c.readyState?(c.__CE_isImportDocument=!0,c.__CE_hasRegistry=!0):a.addEventListener("load",function(){var c=a.import;if(!c.__CE_documentLoadHandled){c.__CE_documentLoadHandled=!0;c.__CE_isImportDocument=!0;c.__CE_hasRegistry=!0;var f=new Set(d);f.delete(c);C(b,c,{w:f,s:e})}})}else f.push(a)},d);
-if(b.b)for(a=0;a<f.length;a++)y(b,f[a]);for(a=0;a<f.length;a++)e(f[a])}
-function A(b,a){if(void 0===a.__CE_state){var c=b.a.get(a.localName);if(c){c.constructionStack.push(a);var d=c.constructor;try{try{if(new d!==a)throw Error("The custom element constructor did not produce the element being upgraded.");}finally{c.constructionStack.pop()}}catch(m){throw a.__CE_state=2,m;}a.__CE_state=1;a.__CE_definition=c;if(c.attributeChangedCallback)for(c=c.observedAttributes,d=0;d<c.length;d++){var e=c[d],f=a.getAttribute(e);null!==f&&b.attributeChangedCallback(a,e,null,f,null)}p(a)&&
-b.connectedCallback(a)}}}v.prototype.connectedCallback=function(b){var a=b.__CE_definition;a.connectedCallback&&a.connectedCallback.call(b)};v.prototype.disconnectedCallback=function(b){var a=b.__CE_definition;a.disconnectedCallback&&a.disconnectedCallback.call(b)};v.prototype.attributeChangedCallback=function(b,a,c,d,e){var f=b.__CE_definition;f.attributeChangedCallback&&-1<f.observedAttributes.indexOf(a)&&f.attributeChangedCallback.call(b,a,c,d,e)};function D(b,a){this.c=b;this.a=a;this.b=void 0;C(this.c,this.a);"loading"===this.a.readyState&&(this.b=new MutationObserver(this.f.bind(this)),this.b.observe(this.a,{childList:!0,subtree:!0}))}function E(b){b.b&&b.b.disconnect()}D.prototype.f=function(b){var a=this.a.readyState;"interactive"!==a&&"complete"!==a||E(this);for(a=0;a<b.length;a++)for(var c=b[a].addedNodes,d=0;d<c.length;d++)C(this.c,c[d])};function ca(){var b=this;this.b=this.a=void 0;this.f=new Promise(function(a){b.b=a;b.a&&a(b.a)})}function F(b){if(b.a)throw Error("Already resolved.");b.a=void 0;b.b&&b.b(void 0)};function G(b){this.i=!1;this.c=b;this.m=new Map;this.j=function(b){return b()};this.g=!1;this.l=[];this.u=new D(b,document)}
-G.prototype.define=function(b,a){var c=this;if(!(a instanceof Function))throw new TypeError("Custom element constructors must be functions.");if(!n(b))throw new SyntaxError("The element name '"+b+"' is not valid.");if(this.c.a.get(b))throw Error("A custom element with name '"+b+"' has already been defined.");if(this.i)throw Error("A custom element is already being defined.");this.i=!0;var d,e,f,m,l;try{var g=function(b){var a=k[b];if(void 0!==a&&!(a instanceof Function))throw Error("The '"+b+"' callback must be a function.");
-return a},k=a.prototype;if(!(k instanceof Object))throw new TypeError("The custom element constructor's prototype is not an object.");d=g("connectedCallback");e=g("disconnectedCallback");f=g("adoptedCallback");m=g("attributeChangedCallback");l=a.observedAttributes||[]}catch(r){return}finally{this.i=!1}a={localName:b,constructor:a,connectedCallback:d,disconnectedCallback:e,adoptedCallback:f,attributeChangedCallback:m,observedAttributes:l,constructionStack:[]};ba(this.c,b,a);this.l.push(a);this.g||
-(this.g=!0,this.j(function(){return da(c)}))};function da(b){if(!1!==b.g){b.g=!1;for(var a=b.l,c=[],d=new Map,e=0;e<a.length;e++)d.set(a[e].localName,[]);C(b.c,document,{s:function(a){if(void 0===a.__CE_state){var e=a.localName,f=d.get(e);f?f.push(a):b.c.a.get(e)&&c.push(a)}}});for(e=0;e<c.length;e++)A(b.c,c[e]);for(;0<a.length;){for(var f=a.shift(),e=f.localName,f=d.get(f.localName),m=0;m<f.length;m++)A(b.c,f[m]);(e=b.m.get(e))&&F(e)}}}G.prototype.get=function(b){if(b=this.c.a.get(b))return b.constructor};
-G.prototype.whenDefined=function(b){if(!n(b))return Promise.reject(new SyntaxError("'"+b+"' is not a valid custom element name."));var a=this.m.get(b);if(a)return a.f;a=new ca;this.m.set(b,a);this.c.a.get(b)&&!this.l.some(function(a){return a.localName===b})&&F(a);return a.f};G.prototype.v=function(b){E(this.u);var a=this.j;this.j=function(c){return b(function(){return a(c)})}};window.CustomElementRegistry=G;G.prototype.define=G.prototype.define;G.prototype.get=G.prototype.get;
-G.prototype.whenDefined=G.prototype.whenDefined;G.prototype.polyfillWrapFlushCallback=G.prototype.v;var H=window.Document.prototype.createElement,ea=window.Document.prototype.createElementNS,fa=window.Document.prototype.importNode,ga=window.Document.prototype.prepend,ha=window.Document.prototype.append,ia=window.DocumentFragment.prototype.prepend,ja=window.DocumentFragment.prototype.append,I=window.Node.prototype.cloneNode,J=window.Node.prototype.appendChild,K=window.Node.prototype.insertBefore,L=window.Node.prototype.removeChild,M=window.Node.prototype.replaceChild,N=Object.getOwnPropertyDescriptor(window.Node.prototype,
-"textContent"),O=window.Element.prototype.attachShadow,P=Object.getOwnPropertyDescriptor(window.Element.prototype,"innerHTML"),Q=window.Element.prototype.getAttribute,R=window.Element.prototype.setAttribute,S=window.Element.prototype.removeAttribute,T=window.Element.prototype.getAttributeNS,U=window.Element.prototype.setAttributeNS,ka=window.Element.prototype.removeAttributeNS,la=window.Element.prototype.insertAdjacentElement,ma=window.Element.prototype.prepend,na=window.Element.prototype.append,
-V=window.Element.prototype.before,oa=window.Element.prototype.after,pa=window.Element.prototype.replaceWith,qa=window.Element.prototype.remove,ra=window.HTMLElement,W=Object.getOwnPropertyDescriptor(window.HTMLElement.prototype,"innerHTML"),sa=window.HTMLElement.prototype.insertAdjacentElement;function ta(){var b=X;window.HTMLElement=function(){function a(){var a=this.constructor,d=b.o.get(a);if(!d)throw Error("The custom element being constructed was not registered with `customElements`.");var e=d.constructionStack;if(!e.length)return e=H.call(document,d.localName),Object.setPrototypeOf(e,a.prototype),e.__CE_state=1,e.__CE_definition=d,y(b,e),e;var d=e.length-1,f=e[d];if(f===h)throw Error("The HTMLElement constructor was either called reentrantly for this constructor or called multiple times.");
-e[d]=h;Object.setPrototypeOf(f,a.prototype);y(b,f);return f}a.prototype=ra.prototype;return a}()};function Y(b,a,c){function d(a){return function(d){for(var c=[],e=0;e<arguments.length;++e)c[e-0]=arguments[e];for(var e=[],f=[],k=0;k<c.length;k++){var r=c[k];r instanceof Element&&p(r)&&f.push(r);if(r instanceof DocumentFragment)for(r=r.firstChild;r;r=r.nextSibling)e.push(r);else e.push(r)}a.apply(this,c);for(c=0;c<f.length;c++)B(b,f[c]);if(p(this))for(c=0;c<e.length;c++)f=e[c],f instanceof Element&&z(b,f)}}c.h&&(a.prepend=d(c.h));c.append&&(a.append=d(c.append))};function ua(){var b=X;u(Document.prototype,"createElement",function(a){if(this.__CE_hasRegistry){var c=b.a.get(a);if(c)return new c.constructor}a=H.call(this,a);y(b,a);return a});u(Document.prototype,"importNode",function(a,c){a=fa.call(this,a,c);this.__CE_hasRegistry?C(b,a):x(b,a);return a});u(Document.prototype,"createElementNS",function(a,c){if(this.__CE_hasRegistry&&(null===a||"http://www.w3.org/1999/xhtml"===a)){var d=b.a.get(c);if(d)return new d.constructor}a=ea.call(this,a,c);y(b,a);return a});
-Y(b,Document.prototype,{h:ga,append:ha})};function va(){var b=X;function a(a,d){Object.defineProperty(a,"textContent",{enumerable:d.enumerable,configurable:!0,get:d.get,set:function(a){if(this.nodeType===Node.TEXT_NODE)d.set.call(this,a);else{var c=void 0;if(this.firstChild){var e=this.childNodes,l=e.length;if(0<l&&p(this))for(var c=Array(l),g=0;g<l;g++)c[g]=e[g]}d.set.call(this,a);if(c)for(a=0;a<c.length;a++)B(b,c[a])}}})}u(Node.prototype,"insertBefore",function(a,d){if(a instanceof DocumentFragment){var c=Array.prototype.slice.apply(a.childNodes);
-a=K.call(this,a,d);if(p(this))for(d=0;d<c.length;d++)z(b,c[d]);return a}c=p(a);d=K.call(this,a,d);c&&B(b,a);p(this)&&z(b,a);return d});u(Node.prototype,"appendChild",function(a){if(a instanceof DocumentFragment){var d=Array.prototype.slice.apply(a.childNodes);a=J.call(this,a);if(p(this))for(var c=0;c<d.length;c++)z(b,d[c]);return a}d=p(a);c=J.call(this,a);d&&B(b,a);p(this)&&z(b,a);return c});u(Node.prototype,"cloneNode",function(a){a=I.call(this,a);this.ownerDocument.__CE_hasRegistry?C(b,a):x(b,a);
-return a});u(Node.prototype,"removeChild",function(a){var d=p(a),c=L.call(this,a);d&&B(b,a);return c});u(Node.prototype,"replaceChild",function(a,d){if(a instanceof DocumentFragment){var c=Array.prototype.slice.apply(a.childNodes);a=M.call(this,a,d);if(p(this))for(B(b,d),d=0;d<c.length;d++)z(b,c[d]);return a}var c=p(a),f=M.call(this,a,d),m=p(this);m&&B(b,d);c&&B(b,a);m&&z(b,a);return f});N&&N.get?a(Node.prototype,N):w(b,function(b){a(b,{enumerable:!0,configurable:!0,get:function(){for(var a=[],b=
-0;b<this.childNodes.length;b++)a.push(this.childNodes[b].textContent);return a.join("")},set:function(a){for(;this.firstChild;)L.call(this,this.firstChild);J.call(this,document.createTextNode(a))}})})};function wa(b){var a=Element.prototype;function c(a){return function(d){for(var c=[],e=0;e<arguments.length;++e)c[e-0]=arguments[e];for(var e=[],l=[],g=0;g<c.length;g++){var k=c[g];k instanceof Element&&p(k)&&l.push(k);if(k instanceof DocumentFragment)for(k=k.firstChild;k;k=k.nextSibling)e.push(k);else e.push(k)}a.apply(this,c);for(c=0;c<l.length;c++)B(b,l[c]);if(p(this))for(c=0;c<e.length;c++)l=e[c],l instanceof Element&&z(b,l)}}V&&(a.before=c(V));V&&(a.after=c(oa));pa&&u(a,"replaceWith",function(a){for(var c=
-[],d=0;d<arguments.length;++d)c[d-0]=arguments[d];for(var d=[],m=[],l=0;l<c.length;l++){var g=c[l];g instanceof Element&&p(g)&&m.push(g);if(g instanceof DocumentFragment)for(g=g.firstChild;g;g=g.nextSibling)d.push(g);else d.push(g)}l=p(this);pa.apply(this,c);for(c=0;c<m.length;c++)B(b,m[c]);if(l)for(B(b,this),c=0;c<d.length;c++)m=d[c],m instanceof Element&&z(b,m)});qa&&u(a,"remove",function(){var a=p(this);qa.call(this);a&&B(b,this)})};function xa(){var b=X;function a(a,c){Object.defineProperty(a,"innerHTML",{enumerable:c.enumerable,configurable:!0,get:c.get,set:function(a){var d=this,e=void 0;p(this)&&(e=[],t(this,function(a){a!==d&&e.push(a)}));c.set.call(this,a);if(e)for(var f=0;f<e.length;f++){var k=e[f];1===k.__CE_state&&b.disconnectedCallback(k)}this.ownerDocument.__CE_hasRegistry?C(b,this):x(b,this);return a}})}function c(a,c){u(a,"insertAdjacentElement",function(a,d){var e=p(d);a=c.call(this,a,d);e&&B(b,d);p(a)&&z(b,d);
-return a})}O&&u(Element.prototype,"attachShadow",function(a){return this.__CE_shadowRoot=a=O.call(this,a)});P&&P.get?a(Element.prototype,P):W&&W.get?a(HTMLElement.prototype,W):w(b,function(b){a(b,{enumerable:!0,configurable:!0,get:function(){return I.call(this,!0).innerHTML},set:function(a){var b="template"===this.localName,c=b?this.content:this,d=H.call(document,this.localName);for(d.innerHTML=a;0<c.childNodes.length;)L.call(c,c.childNodes[0]);for(a=b?d.content:d;0<a.childNodes.length;)J.call(c,
-a.childNodes[0])}})});u(Element.prototype,"setAttribute",function(a,c){if(1!==this.__CE_state)return R.call(this,a,c);var d=Q.call(this,a);R.call(this,a,c);c=Q.call(this,a);b.attributeChangedCallback(this,a,d,c,null)});u(Element.prototype,"setAttributeNS",function(a,c,f){if(1!==this.__CE_state)return U.call(this,a,c,f);var d=T.call(this,a,c);U.call(this,a,c,f);f=T.call(this,a,c);b.attributeChangedCallback(this,c,d,f,a)});u(Element.prototype,"removeAttribute",function(a){if(1!==this.__CE_state)return S.call(this,
-a);var c=Q.call(this,a);S.call(this,a);null!==c&&b.attributeChangedCallback(this,a,c,null,null)});u(Element.prototype,"removeAttributeNS",function(a,c){if(1!==this.__CE_state)return ka.call(this,a,c);var d=T.call(this,a,c);ka.call(this,a,c);var e=T.call(this,a,c);d!==e&&b.attributeChangedCallback(this,c,d,e,a)});sa?c(HTMLElement.prototype,sa):la?c(Element.prototype,la):console.warn("Custom Elements: `Element#insertAdjacentElement` was not patched.");Y(b,Element.prototype,{h:ma,append:na});wa(b)};/*
-
- Copyright (c) 2016 The Polymer Project Authors. All rights reserved.
- This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
- The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
- The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
- Code distributed by Google as part of the polymer project is also
- subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
-*/
-var Z=window.customElements;if(!Z||Z.forcePolyfill||"function"!=typeof Z.define||"function"!=typeof Z.get){var X=new v;ta();ua();Y(X,DocumentFragment.prototype,{h:ia,append:ja});va();xa();document.__CE_hasRegistry=!0;var customElements=new G(X);Object.defineProperty(window,"customElements",{configurable:!0,enumerable:!0,value:customElements})};
-}).call(self);
-
-//# sourceMappingURL=custom-elements.min.js.map
deleted file mode 100644
--- a/browser/components/payments/res/vendor/custom-elements.min.js.map
+++ /dev/null
@@ -1,1 +0,0 @@
-{"version":3,"sources":["src/AlreadyConstructedMarker.js","src/Utilities.js","src/CustomElementInternals.js","src/CustomElementState.js","src/DocumentConstructionObserver.js","src/Deferred.js","src/CustomElementRegistry.js","src/Patch/Native.js","src/Patch/HTMLElement.js","src/custom-elements.js","src/Patch/Interface/ParentNode.js","src/Patch/Document.js","src/Patch/Node.js","src/Patch/Interface/ChildNode.js","src/Patch/Element.js","src/Patch/DocumentFragment.js"],"names":["$jscompDefaultExport","AlreadyConstructedMarker","reservedTagList","Set","isValidCustomElementName$$module$$src$Utilities","isValidCustomElementName","localName","reserved","has","validForm","test","isConnected$$module$$src$Utilities","isConnected","node","nativeValue","undefined","current","__CE_isImportDocument","Document","parentNode","window","ShadowRoot","host","nextSiblingOrAncestorSibling$$module$$src$Utilities","nextSiblingOrAncestorSibling","root","start","nextSibling","walkDeepDescendantElements$$module$$src$Utilities","walkDeepDescendantElements","callback","visitedImports","nodeType","Node","ELEMENT_NODE","element","getAttribute","importNode","import","add","child","firstChild","shadowRoot","__CE_shadowRoot","setPropertyUnchecked$$module$$src$Utilities","setPropertyUnchecked","destination","name","value","constructor","CustomElementInternals","_localNameToDefinition","Map","_constructorToDefinition","_patches","_hasPatches","setDefinition","definition","set","addPatch","listener","push","patchTree","patch","__CE_patched","i","length","connectTree","elements","custom","__CE_state","connectedCallback","upgradeElement","disconnectTree","disconnectedCallback","patchAndUpgradeTree","options","upgrade","gatherElements","readyState","__CE_hasRegistry","addEventListener","__CE_documentLoadHandled","clonedVisitedImports","delete","localNameToDefinition","get","constructionStack","result","Error","pop","e","failed","__CE_definition","attributeChangedCallback","observedAttributes","call","oldValue","newValue","namespace","indexOf","DocumentConstructionObserver","internals","doc","_internals","_document","_observer","MutationObserver","_handleMutations","bind","observe","childList","subtree","disconnect","mutations","addedNodes","j","Deferred","_resolve","_value","_promise","Promise","resolve","CustomElementRegistry","_elementDefinitionIsRunning","_whenDefinedDeferred","_flushCallback","this._flushCallback","fn","_flushPending","_pendingDefinitions","_documentConstructionObserver","document","define","Function","TypeError","SyntaxError","adoptedCallback","getCallback","callbackValue","prototype","Object","_flush","pendingDefinitions","elementsWithStableDefinitions","elementsWithPendingDefinitions","pendingElements","shift","pendingUpgradableElements","deferred","whenDefined","reject","prior","some","d","polyfillWrapFlushCallback","outer","inner","flush","Document_createElement","createElement","Document_createElementNS","createElementNS","Document_importNode","Document_prepend","Document_append","DocumentFragment_prepend","DocumentFragment","DocumentFragment_append","Node_cloneNode","cloneNode","Node_appendChild","appendChild","Node_insertBefore","insertBefore","Node_removeChild","removeChild","Node_replaceChild","replaceChild","Node_textContent","getOwnPropertyDescriptor","Element_attachShadow","Element","Element_innerHTML","Element_getAttribute","Element_setAttribute","setAttribute","Element_removeAttribute","removeAttribute","Element_getAttributeNS","getAttributeNS","Element_setAttributeNS","setAttributeNS","Element_removeAttributeNS","removeAttributeNS","Element_insertAdjacentElement","Element_prepend","Element_append","Element_before","Element_after","Element_replaceWith","Element_remove","HTMLElement","HTMLElement_innerHTML","HTMLElement_insertAdjacentElement","$jscompDefaultExport$$module$$src$Patch$HTMLElement","$jscompDefaultExport$$module$$src$Patch$Native.Document_createElement.call","setPrototypeOf","lastIndex","$jscompDefaultExport$$module$$src$Patch$Native.HTMLElement","$jscompDefaultExport$$module$$src$Patch$Interface$ParentNode","builtIn","appendPrependPatch","builtInMethod","flattenedNodes","connectedElements","nodes","apply","prepend","append","$jscompDefaultExport$$module$$src$Patch$Document","deep","clone","$jscompDefaultExport$$module$$src$Patch$Native.Document_importNode.call","NS_HTML","$jscompDefaultExport$$module$$src$Patch$Native.Document_createElementNS.call","$jscompDefaultExport$$module$$src$Patch$Native.Document_prepend","$jscompDefaultExport$$module$$src$Patch$Native.Document_append","$jscompDefaultExport$$module$$src$Patch$Node","patch_textContent","baseDescriptor","defineProperty","enumerable","configurable","assignedValue","TEXT_NODE","removedNodes","childNodes","childNodesLength","Array","refNode","insertedNodes","slice","nativeResult","$jscompDefaultExport$$module$$src$Patch$Native.Node_insertBefore.call","nodeWasConnected","$jscompDefaultExport$$module$$src$Patch$Native.Node_appendChild.call","$jscompDefaultExport$$module$$src$Patch$Native.Node_cloneNode.call","ownerDocument","$jscompDefaultExport$$module$$src$Patch$Native.Node_removeChild.call","nodeToInsert","nodeToRemove","$jscompDefaultExport$$module$$src$Patch$Native.Node_replaceChild.call","nodeToInsertWasConnected","thisIsConnected","$jscompDefaultExport$$module$$src$Patch$Native.Node_textContent","$jscompDefaultExport$$module$$src$Patch$Native.Node_textContent.get","parts","textContent","join","createTextNode","$jscompDefaultExport$$module$$src$Patch$Interface$ChildNode","beforeAfterPatch","$jscompDefaultExport$$module$$src$Patch$Native.Element_before","$jscompDefaultExport$$module$$src$Patch$Native.Element_after","$jscompDefaultExport$$module$$src$Patch$Native.Element_replaceWith","wasConnected","$jscompDefaultExport$$module$$src$Patch$Native.Element_remove","$jscompDefaultExport$$module$$src$Patch$Element","patch_innerHTML","htmlString","removedElements","patch_insertAdjacentElement","baseMethod","where","insertedElement","$jscompDefaultExport$$module$$src$Patch$Native.Element_attachShadow","init","$jscompDefaultExport$$module$$src$Patch$Native.Element_attachShadow.call","$jscompDefaultExport$$module$$src$Patch$Native.Element_innerHTML","$jscompDefaultExport$$module$$src$Patch$Native.Element_innerHTML.get","$jscompDefaultExport$$module$$src$Patch$Native.HTMLElement_innerHTML","$jscompDefaultExport$$module$$src$Patch$Native.HTMLElement_innerHTML.get","innerHTML","isTemplate","content","rawElement","container","$jscompDefaultExport$$module$$src$Patch$Native.Element_setAttribute.call","$jscompDefaultExport$$module$$src$Patch$Native.Element_getAttribute.call","$jscompDefaultExport$$module$$src$Patch$Native.Element_setAttributeNS.call","$jscompDefaultExport$$module$$src$Patch$Native.Element_getAttributeNS.call","$jscompDefaultExport$$module$$src$Patch$Native.Element_removeAttribute.call","$jscompDefaultExport$$module$$src$Patch$Native.Element_removeAttributeNS.call","$jscompDefaultExport$$module$$src$Patch$Native.HTMLElement_insertAdjacentElement","$jscompDefaultExport$$module$$src$Patch$Native.Element_insertAdjacentElement","console","warn","$jscompDefaultExport$$module$$src$Patch$Native.Element_prepend","$jscompDefaultExport$$module$$src$Patch$Native.Element_append","priorCustomElements","$jscompDefaultExport$$module$$src$Patch$Native.DocumentFragment_prepend","$jscompDefaultExport$$module$$src$Patch$Native.DocumentFragment_append","customElements"],"mappings":"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","file":"custom-elements.min.js","sourcesContent":["/**\n * This class exists only to work around Closure's lack of a way to describe\n * singletons. It represents the 'already constructed marker' used in custom\n * element construction stacks.\n *\n * https://html.spec.whatwg.org/#concept-already-constructed-marker\n */\nclass AlreadyConstructedMarker {}\n\nexport default new AlreadyConstructedMarker();\n","const reservedTagList = new Set([\n  'annotation-xml',\n  'color-profile',\n  'font-face',\n  'font-face-src',\n  'font-face-uri',\n  'font-face-format',\n  'font-face-name',\n  'missing-glyph',\n]);\n\n/**\n * @param {string} localName\n * @returns {boolean}\n */\nexport function isValidCustomElementName(localName) {\n  const reserved = reservedTagList.has(localName);\n  const validForm = /^[a-z][.0-9_a-z]*-[\\-.0-9_a-z]*$/.test(localName);\n  return !reserved && validForm;\n}\n\n/**\n * @private\n * @param {!Node} node\n * @return {boolean}\n */\nexport function isConnected(node) {\n  // Use `Node#isConnected`, if defined.\n  const nativeValue = node.isConnected;\n  if (nativeValue !== undefined) {\n    return nativeValue;\n  }\n\n  /** @type {?Node|undefined} */\n  let current = node;\n  while (current && !(current.__CE_isImportDocument || current instanceof Document)) {\n    current = current.parentNode || (window.ShadowRoot && current instanceof ShadowRoot ? current.host : undefined);\n  }\n  return !!(current && (current.__CE_isImportDocument || current instanceof Document));\n}\n\n/**\n * @param {!Node} root\n * @param {!Node} start\n * @return {?Node}\n */\nfunction nextSiblingOrAncestorSibling(root, start) {\n  let node = start;\n  while (node && node !== root && !node.nextSibling) {\n    node = node.parentNode;\n  }\n  return (!node || node === root) ? null : node.nextSibling;\n}\n\n/**\n * @param {!Node} root\n * @param {!Node} start\n * @return {?Node}\n */\nfunction nextNode(root, start) {\n  return start.firstChild ? start.firstChild : nextSiblingOrAncestorSibling(root, start);\n}\n\n/**\n * @param {!Node} root\n * @param {!function(!Element)} callback\n * @param {!Set<Node>=} visitedImports\n */\nexport function walkDeepDescendantElements(root, callback, visitedImports = new Set()) {\n  let node = root;\n  while (node) {\n    if (node.nodeType === Node.ELEMENT_NODE) {\n      const element = /** @type {!Element} */(node);\n\n      callback(element);\n\n      const localName = element.localName;\n      if (localName === 'link' && element.getAttribute('rel') === 'import') {\n        // If this import (polyfilled or not) has it's root node available,\n        // walk it.\n        const importNode = /** @type {!Node} */ (element.import);\n        if (importNode instanceof Node && !visitedImports.has(importNode)) {\n          // Prevent multiple walks of the same import root.\n          visitedImports.add(importNode);\n\n          for (let child = importNode.firstChild; child; child = child.nextSibling) {\n            walkDeepDescendantElements(child, callback, visitedImports);\n          }\n        }\n\n        // Ignore descendants of import links to prevent attempting to walk the\n        // elements created by the HTML Imports polyfill that we just walked\n        // above.\n        node = nextSiblingOrAncestorSibling(root, element);\n        continue;\n      } else if (localName === 'template') {\n        // Ignore descendants of templates. There shouldn't be any descendants\n        // because they will be moved into `.content` during construction in\n        // browsers that support template but, in case they exist and are still\n        // waiting to be moved by a polyfill, they will be ignored.\n        node = nextSiblingOrAncestorSibling(root, element);\n        continue;\n      }\n\n      // Walk shadow roots.\n      const shadowRoot = element.__CE_shadowRoot;\n      if (shadowRoot) {\n        for (let child = shadowRoot.firstChild; child; child = child.nextSibling) {\n          walkDeepDescendantElements(child, callback, visitedImports);\n        }\n      }\n    }\n\n    node = nextNode(root, node);\n  }\n}\n\n/**\n * Used to suppress Closure's \"Modifying the prototype is only allowed if the\n * constructor is in the same scope\" warning without using\n * `@suppress {newCheckTypes, duplicate}` because `newCheckTypes` is too broad.\n *\n * @param {!Object} destination\n * @param {string} name\n * @param {*} value\n */\nexport function setPropertyUnchecked(destination, name, value) {\n  destination[name] = value;\n}\n","import * as Utilities from './Utilities.js';\nimport CEState from './CustomElementState.js';\n\nexport default class CustomElementInternals {\n  constructor() {\n    /** @type {!Map<string, !CustomElementDefinition>} */\n    this._localNameToDefinition = new Map();\n\n    /** @type {!Map<!Function, !CustomElementDefinition>} */\n    this._constructorToDefinition = new Map();\n\n    /** @type {!Array<!function(!Node)>} */\n    this._patches = [];\n\n    /** @type {boolean} */\n    this._hasPatches = false;\n  }\n\n  /**\n   * @param {string} localName\n   * @param {!CustomElementDefinition} definition\n   */\n  setDefinition(localName, definition) {\n    this._localNameToDefinition.set(localName, definition);\n    this._constructorToDefinition.set(definition.constructor, definition);\n  }\n\n  /**\n   * @param {string} localName\n   * @return {!CustomElementDefinition|undefined}\n   */\n  localNameToDefinition(localName) {\n    return this._localNameToDefinition.get(localName);\n  }\n\n  /**\n   * @param {!Function} constructor\n   * @return {!CustomElementDefinition|undefined}\n   */\n  constructorToDefinition(constructor) {\n    return this._constructorToDefinition.get(constructor);\n  }\n\n  /**\n   * @param {!function(!Node)} listener\n   */\n  addPatch(listener) {\n    this._hasPatches = true;\n    this._patches.push(listener);\n  }\n\n  /**\n   * @param {!Node} node\n   */\n  patchTree(node) {\n    if (!this._hasPatches) return;\n\n    Utilities.walkDeepDescendantElements(node, element => this.patch(element));\n  }\n\n  /**\n   * @param {!Node} node\n   */\n  patch(node) {\n    if (!this._hasPatches) return;\n\n    if (node.__CE_patched) return;\n    node.__CE_patched = true;\n\n    for (let i = 0; i < this._patches.length; i++) {\n      this._patches[i](node);\n    }\n  }\n\n  /**\n   * @param {!Node} root\n   */\n  connectTree(root) {\n    const elements = [];\n\n    Utilities.walkDeepDescendantElements(root, element => elements.push(element));\n\n    for (let i = 0; i < elements.length; i++) {\n      const element = elements[i];\n      if (element.__CE_state === CEState.custom) {\n        this.connectedCallback(element);\n      } else {\n        this.upgradeElement(element);\n      }\n    }\n  }\n\n  /**\n   * @param {!Node} root\n   */\n  disconnectTree(root) {\n    const elements = [];\n\n    Utilities.walkDeepDescendantElements(root, element => elements.push(element));\n\n    for (let i = 0; i < elements.length; i++) {\n      const element = elements[i];\n      if (element.__CE_state === CEState.custom) {\n        this.disconnectedCallback(element);\n      }\n    }\n  }\n\n  /**\n   * Upgrades all uncustomized custom elements at and below a root node for\n   * which there is a definition. When custom element reaction callbacks are\n   * assumed to be called synchronously (which, by the current DOM / HTML spec\n   * definitions, they are *not*), callbacks for both elements customized\n   * synchronously by the parser and elements being upgraded occur in the same\n   * relative order.\n   *\n   * NOTE: This function, when used to simulate the construction of a tree that\n   * is already created but not customized (i.e. by the parser), does *not*\n   * prevent the element from reading the 'final' (true) state of the tree. For\n   * example, the element, during truly synchronous parsing / construction would\n   * see that it contains no children as they have not yet been inserted.\n   * However, this function does not modify the tree, the element will\n   * (incorrectly) have children. Additionally, self-modification restrictions\n   * for custom element constructors imposed by the DOM spec are *not* enforced.\n   *\n   *\n   * The following nested list shows the steps extending down from the HTML\n   * spec's parsing section that cause elements to be synchronously created and\n   * upgraded:\n   *\n   * The \"in body\" insertion mode:\n   * https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody\n   * - Switch on token:\n   *   .. other cases ..\n   *   -> Any other start tag\n   *      - [Insert an HTML element](below) for the token.\n   *\n   * Insert an HTML element:\n   * https://html.spec.whatwg.org/multipage/syntax.html#insert-an-html-element\n   * - Insert a foreign element for the token in the HTML namespace:\n   *   https://html.spec.whatwg.org/multipage/syntax.html#insert-a-foreign-element\n   *   - Create an element for a token:\n   *     https://html.spec.whatwg.org/multipage/syntax.html#create-an-element-for-the-token\n   *     - Will execute script flag is true?\n   *       - (Element queue pushed to the custom element reactions stack.)\n   *     - Create an element:\n   *       https://dom.spec.whatwg.org/#concept-create-element\n   *       - Sync CE flag is true?\n   *         - Constructor called.\n   *         - Self-modification restrictions enforced.\n   *       - Sync CE flag is false?\n   *         - (Upgrade reaction enqueued.)\n   *     - Attributes appended to element.\n   *       (`attributeChangedCallback` reactions enqueued.)\n   *     - Will execute script flag is true?\n   *       - (Element queue popped from the custom element reactions stack.\n   *         Reactions in the popped stack are invoked.)\n   *   - (Element queue pushed to the custom element reactions stack.)\n   *   - Insert the element:\n   *     https://dom.spec.whatwg.org/#concept-node-insert\n   *     - Shadow-including descendants are connected. During parsing\n   *       construction, there are no shadow-*excluding* descendants.\n   *       However, the constructor may have validly attached a shadow\n   *       tree to itself and added descendants to that shadow tree.\n   *       (`connectedCallback` reactions enqueued.)\n   *   - (Element queue popped from the custom element reactions stack.\n   *     Reactions in the popped stack are invoked.)\n   *\n   * @param {!Node} root\n   * @param {{\n   *   visitedImports: (!Set<!Node>|undefined),\n   *   upgrade: (!function(!Element)|undefined),\n   * }=} options\n   */\n  patchAndUpgradeTree(root, options = {}) {\n    const visitedImports = options.visitedImports || new Set();\n    const upgrade = options.upgrade || (element => this.upgradeElement(element));\n\n    const elements = [];\n\n    const gatherElements = element => {\n      if (element.localName === 'link' && element.getAttribute('rel') === 'import') {\n        // The HTML Imports polyfill sets a descendant element of the link to\n        // the `import` property, specifically this is *not* a Document.\n        const importNode = /** @type {?Node} */ (element.import);\n\n        if (importNode instanceof Node && importNode.readyState === 'complete') {\n          importNode.__CE_isImportDocument = true;\n\n          // Connected links are associated with the registry.\n          importNode.__CE_hasRegistry = true;\n        } else {\n          // If this link's import root is not available, its contents can't be\n          // walked. Wait for 'load' and walk it when it's ready.\n          element.addEventListener('load', () => {\n            const importNode = /** @type {!Node} */ (element.import);\n\n            if (importNode.__CE_documentLoadHandled) return;\n            importNode.__CE_documentLoadHandled = true;\n\n            importNode.__CE_isImportDocument = true;\n\n            // Connected links are associated with the registry.\n            importNode.__CE_hasRegistry = true;\n\n            // Clone the `visitedImports` set that was populated sync during\n            // the `patchAndUpgradeTree` call that caused this 'load' handler to\n            // be added. Then, remove *this* link's import node so that we can\n            // walk that import again, even if it was partially walked later\n            // during the same `patchAndUpgradeTree` call.\n            const clonedVisitedImports = new Set(visitedImports);\n            clonedVisitedImports.delete(importNode);\n\n            this.patchAndUpgradeTree(importNode, {visitedImports: clonedVisitedImports, upgrade});\n          });\n        }\n      } else {\n        elements.push(element);\n      }\n    };\n\n    // `walkDeepDescendantElements` populates (and internally checks against)\n    // `visitedImports` when traversing a loaded import.\n    Utilities.walkDeepDescendantElements(root, gatherElements, visitedImports);\n\n    if (this._hasPatches) {\n      for (let i = 0; i < elements.length; i++) {\n        this.patch(elements[i]);\n      }\n    }\n\n    for (let i = 0; i < elements.length; i++) {\n      upgrade(elements[i]);\n    }\n  }\n\n  /**\n   * @param {!Element} element\n   */\n  upgradeElement(element) {\n    const currentState = element.__CE_state;\n    if (currentState !== undefined) return;\n\n    const definition = this.localNameToDefinition(element.localName);\n    if (!definition) return;\n\n    definition.constructionStack.push(element);\n\n    const constructor = definition.constructor;\n    try {\n      try {\n        let result = new (constructor)();\n        if (result !== element) {\n          throw new Error('The custom element constructor did not produce the element being upgraded.');\n        }\n      } finally {\n        definition.constructionStack.pop();\n      }\n    } catch (e) {\n      element.__CE_state = CEState.failed;\n      throw e;\n    }\n\n    element.__CE_state = CEState.custom;\n    element.__CE_definition = definition;\n\n    if (definition.attributeChangedCallback) {\n      const observedAttributes = definition.observedAttributes;\n      for (let i = 0; i < observedAttributes.length; i++) {\n        const name = observedAttributes[i];\n        const value = element.getAttribute(name);\n        if (value !== null) {\n          this.attributeChangedCallback(element, name, null, value, null);\n        }\n      }\n    }\n\n    if (Utilities.isConnected(element)) {\n      this.connectedCallback(element);\n    }\n  }\n\n  /**\n   * @param {!Element} element\n   */\n  connectedCallback(element) {\n    const definition = element.__CE_definition;\n    if (definition.connectedCallback) {\n      definition.connectedCallback.call(element);\n    }\n  }\n\n  /**\n   * @param {!Element} element\n   */\n  disconnectedCallback(element) {\n    const definition = element.__CE_definition;\n    if (definition.disconnectedCallback) {\n      definition.disconnectedCallback.call(element);\n    }\n  }\n\n  /**\n   * @param {!Element} element\n   * @param {string} name\n   * @param {?string} oldValue\n   * @param {?string} newValue\n   * @param {?string} namespace\n   */\n  attributeChangedCallback(element, name, oldValue, newValue, namespace) {\n    const definition = element.__CE_definition;\n    if (\n      definition.attributeChangedCallback &&\n      definition.observedAttributes.indexOf(name) > -1\n    ) {\n      definition.attributeChangedCallback.call(element, name, oldValue, newValue, namespace);\n    }\n  }\n}\n","/**\n * @enum {number}\n */\nconst CustomElementState = {\n  custom: 1,\n  failed: 2,\n};\n\nexport default CustomElementState;\n","import CustomElementInternals from './CustomElementInternals.js';\n\nexport default class DocumentConstructionObserver {\n  constructor(internals, doc) {\n    /**\n     * @type {!CustomElementInternals}\n     */\n    this._internals = internals;\n\n    /**\n     * @type {!Document}\n     */\n    this._document = doc;\n\n    /**\n     * @type {MutationObserver|undefined}\n     */\n    this._observer = undefined;\n\n\n    // Simulate tree construction for all currently accessible nodes in the\n    // document.\n    this._internals.patchAndUpgradeTree(this._document);\n\n    if (this._document.readyState === 'loading') {\n      this._observer = new MutationObserver(this._handleMutations.bind(this));\n\n      // Nodes created by the parser are given to the observer *before* the next\n      // task runs. Inline scripts are run in a new task. This means that the\n      // observer will be able to handle the newly parsed nodes before the inline\n      // script is run.\n      this._observer.observe(this._document, {\n        childList: true,\n        subtree: true,\n      });\n    }\n  }\n\n  disconnect() {\n    if (this._observer) {\n      this._observer.disconnect();\n    }\n  }\n\n  /**\n   * @param {!Array<!MutationRecord>} mutations\n   */\n  _handleMutations(mutations) {\n    // Once the document's `readyState` is 'interactive' or 'complete', all new\n    // nodes created within that document will be the result of script and\n    // should be handled by patching.\n    const readyState = this._document.readyState;\n    if (readyState === 'interactive' || readyState === 'complete') {\n      this.disconnect();\n    }\n\n    for (let i = 0; i < mutations.length; i++) {\n      const addedNodes = mutations[i].addedNodes;\n      for (let j = 0; j < addedNodes.length; j++) {\n        const node = addedNodes[j];\n        this._internals.patchAndUpgradeTree(node);\n      }\n    }\n  }\n}\n","/**\n * @template T\n */\nexport default class Deferred {\n  constructor() {\n    /**\n     * @private\n     * @type {T|undefined}\n     */\n    this._value = undefined;\n\n    /**\n     * @private\n     * @type {Function|undefined}\n     */\n    this._resolve = undefined;\n\n    /**\n     * @private\n     * @type {!Promise<T>}\n     */\n    this._promise = new Promise(resolve => {\n      this._resolve = resolve;\n\n      if (this._value) {\n        resolve(this._value);\n      }\n    });\n  }\n\n  /**\n   * @param {T} value\n   */\n  resolve(value) {\n    if (this._value) {\n      throw new Error('Already resolved.');\n    }\n\n    this._value = value;\n\n    if (this._resolve) {\n      this._resolve(value);\n    }\n  }\n\n  /**\n   * @return {!Promise<T>}\n   */\n  toPromise() {\n    return this._promise;\n  }\n}\n","import CustomElementInternals from './CustomElementInternals.js';\nimport DocumentConstructionObserver from './DocumentConstructionObserver.js';\nimport Deferred from './Deferred.js';\nimport * as Utilities from './Utilities.js';\n\n/**\n * @unrestricted\n */\nexport default class CustomElementRegistry {\n\n  /**\n   * @param {!CustomElementInternals} internals\n   */\n  constructor(internals) {\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this._elementDefinitionIsRunning = false;\n\n    /**\n     * @private\n     * @type {!CustomElementInternals}\n     */\n    this._internals = internals;\n\n    /**\n     * @private\n     * @type {!Map<string, !Deferred<undefined>>}\n     */\n    this._whenDefinedDeferred = new Map();\n\n    /**\n     * The default flush callback triggers the document walk synchronously.\n     * @private\n     * @type {!Function}\n     */\n    this._flushCallback = fn => fn();\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this._flushPending = false;\n\n    /**\n     * @private\n     * @type {!Array<!CustomElementDefinition>}\n     */\n    this._pendingDefinitions = [];\n\n    /**\n     * @private\n     * @type {!DocumentConstructionObserver}\n     */\n    this._documentConstructionObserver = new DocumentConstructionObserver(internals, document);\n  }\n\n  /**\n   * @param {string} localName\n   * @param {!Function} constructor\n   */\n  define(localName, constructor) {\n    if (!(constructor instanceof Function)) {\n      throw new TypeError('Custom element constructors must be functions.');\n    }\n\n    if (!Utilities.isValidCustomElementName(localName)) {\n      throw new SyntaxError(`The element name '${localName}' is not valid.`);\n    }\n\n    if (this._internals.localNameToDefinition(localName)) {\n      throw new Error(`A custom element with name '${localName}' has already been defined.`);\n    }\n\n    if (this._elementDefinitionIsRunning) {\n      throw new Error('A custom element is already being defined.');\n    }\n    this._elementDefinitionIsRunning = true;\n\n    let connectedCallback;\n    let disconnectedCallback;\n    let adoptedCallback;\n    let attributeChangedCallback;\n    let observedAttributes;\n    try {\n      /** @type {!Object} */\n      const prototype = constructor.prototype;\n      if (!(prototype instanceof Object)) {\n        throw new TypeError('The custom element constructor\\'s prototype is not an object.');\n      }\n\n      function getCallback(name) {\n        const callbackValue = prototype[name];\n        if (callbackValue !== undefined && !(callbackValue instanceof Function)) {\n          throw new Error(`The '${name}' callback must be a function.`);\n        }\n        return callbackValue;\n      }\n\n      connectedCallback = getCallback('connectedCallback');\n      disconnectedCallback = getCallback('disconnectedCallback');\n      adoptedCallback = getCallback('adoptedCallback');\n      attributeChangedCallback = getCallback('attributeChangedCallback');\n      observedAttributes = constructor['observedAttributes'] || [];\n    } catch (e) {\n      return;\n    } finally {\n      this._elementDefinitionIsRunning = false;\n    }\n\n    const definition = {\n      localName,\n      constructor,\n      connectedCallback,\n      disconnectedCallback,\n      adoptedCallback,\n      attributeChangedCallback,\n      observedAttributes,\n      constructionStack: [],\n    };\n\n    this._internals.setDefinition(localName, definition);\n    this._pendingDefinitions.push(definition);\n\n    // If we've already called the flush callback and it hasn't called back yet,\n    // don't call it again.\n    if (!this._flushPending) {\n      this._flushPending = true;\n      this._flushCallback(() => this._flush());\n    }\n  }\n\n  _flush() {\n    // If no new definitions were defined, don't attempt to flush. This could\n    // happen if a flush callback keeps the function it is given and calls it\n    // multiple times.\n    if (this._flushPending === false) return;\n    this._flushPending = false;\n\n    const pendingDefinitions = this._pendingDefinitions;\n\n    /**\n     * Unupgraded elements with definitions that were defined *before* the last\n     * flush, in document order.\n     * @type {!Array<!Element>}\n     */\n    const elementsWithStableDefinitions = [];\n\n    /**\n     * A map from `localName`s of definitions that were defined *after* the last\n     * flush to unupgraded elements matching that definition, in document order.\n     * @type {!Map<string, !Array<!Element>>}\n     */\n    const elementsWithPendingDefinitions = new Map();\n    for (let i = 0; i < pendingDefinitions.length; i++) {\n      elementsWithPendingDefinitions.set(pendingDefinitions[i].localName, []);\n    }\n\n    this._internals.patchAndUpgradeTree(document, {\n      upgrade: element => {\n        // Ignore the element if it has already upgraded or failed to upgrade.\n        if (element.__CE_state !== undefined) return;\n\n        const localName = element.localName;\n\n        // If there is an applicable pending definition for the element, add the\n        // element to the list of elements to be upgraded with that definition.\n        const pendingElements = elementsWithPendingDefinitions.get(localName);\n        if (pendingElements) {\n          pendingElements.push(element);\n        // If there is *any other* applicable definition for the element, add it\n        // to the list of elements with stable definitions that need to be upgraded.\n        } else if (this._internals.localNameToDefinition(localName)) {\n          elementsWithStableDefinitions.push(element);\n        }\n      },\n    });\n\n    // Upgrade elements with 'stable' definitions first.\n    for (let i = 0; i < elementsWithStableDefinitions.length; i++) {\n      this._internals.upgradeElement(elementsWithStableDefinitions[i]);\n    }\n\n    // Upgrade elements with 'pending' definitions in the order they were defined.\n    while (pendingDefinitions.length > 0) {\n      const definition = pendingDefinitions.shift();\n      const localName = definition.localName;\n\n      // Attempt to upgrade all applicable elements.\n      const pendingUpgradableElements = elementsWithPendingDefinitions.get(definition.localName);\n      for (let i = 0; i < pendingUpgradableElements.length; i++) {\n        this._internals.upgradeElement(pendingUpgradableElements[i]);\n      }\n\n      // Resolve any promises created by `whenDefined` for the definition.\n      const deferred = this._whenDefinedDeferred.get(localName);\n      if (deferred) {\n        deferred.resolve(undefined);\n      }\n    }\n  }\n\n  /**\n   * @param {string} localName\n   * @return {Function|undefined}\n   */\n  get(localName) {\n    const definition = this._internals.localNameToDefinition(localName);\n    if (definition) {\n      return definition.constructor;\n    }\n\n    return undefined;\n  }\n\n  /**\n   * @param {string} localName\n   * @return {!Promise<undefined>}\n   */\n  whenDefined(localName) {\n    if (!Utilities.isValidCustomElementName(localName)) {\n      return Promise.reject(new SyntaxError(`'${localName}' is not a valid custom element name.`));\n    }\n\n    const prior = this._whenDefinedDeferred.get(localName);\n    if (prior) {\n      return prior.toPromise();\n    }\n\n    const deferred = new Deferred();\n    this._whenDefinedDeferred.set(localName, deferred);\n\n    const definition = this._internals.localNameToDefinition(localName);\n    // Resolve immediately only if the given local name has a definition *and*\n    // the full document walk to upgrade elements with that local name has\n    // already happened.\n    if (definition && !this._pendingDefinitions.some(d => d.localName === localName)) {\n      deferred.resolve(undefined);\n    }\n\n    return deferred.toPromise();\n  }\n\n  polyfillWrapFlushCallback(outer) {\n    this._documentConstructionObserver.disconnect();\n    const inner = this._flushCallback;\n    this._flushCallback = flush => outer(() => inner(flush));\n  }\n}\n\n// Closure compiler exports.\nwindow['CustomElementRegistry'] = CustomElementRegistry;\nCustomElementRegistry.prototype['define'] = CustomElementRegistry.prototype.define;\nCustomElementRegistry.prototype['get'] = CustomElementRegistry.prototype.get;\nCustomElementRegistry.prototype['whenDefined'] = CustomElementRegistry.prototype.whenDefined;\nCustomElementRegistry.prototype['polyfillWrapFlushCallback'] = CustomElementRegistry.prototype.polyfillWrapFlushCallback;\n","export default {\n  Document_createElement: window.Document.prototype.createElement,\n  Document_createElementNS: window.Document.prototype.createElementNS,\n  Document_importNode: window.Document.prototype.importNode,\n  Document_prepend: window.Document.prototype['prepend'],\n  Document_append: window.Document.prototype['append'],\n  DocumentFragment_prepend: window.DocumentFragment.prototype['prepend'],\n  DocumentFragment_append: window.DocumentFragment.prototype['append'],\n  Node_cloneNode: window.Node.prototype.cloneNode,\n  Node_appendChild: window.Node.prototype.appendChild,\n  Node_insertBefore: window.Node.prototype.insertBefore,\n  Node_removeChild: window.Node.prototype.removeChild,\n  Node_replaceChild: window.Node.prototype.replaceChild,\n  Node_textContent: Object.getOwnPropertyDescriptor(window.Node.prototype, 'textContent'),\n  Element_attachShadow: window.Element.prototype['attachShadow'],\n  Element_innerHTML: Object.getOwnPropertyDescriptor(window.Element.prototype, 'innerHTML'),\n  Element_getAttribute: window.Element.prototype.getAttribute,\n  Element_setAttribute: window.Element.prototype.setAttribute,\n  Element_removeAttribute: window.Element.prototype.removeAttribute,\n  Element_getAttributeNS: window.Element.prototype.getAttributeNS,\n  Element_setAttributeNS: window.Element.prototype.setAttributeNS,\n  Element_removeAttributeNS: window.Element.prototype.removeAttributeNS,\n  Element_insertAdjacentElement: window.Element.prototype['insertAdjacentElement'],\n  Element_prepend: window.Element.prototype['prepend'],\n  Element_append: window.Element.prototype['append'],\n  Element_before: window.Element.prototype['before'],\n  Element_after: window.Element.prototype['after'],\n  Element_replaceWith: window.Element.prototype['replaceWith'],\n  Element_remove: window.Element.prototype['remove'],\n  HTMLElement: window.HTMLElement,\n  HTMLElement_innerHTML: Object.getOwnPropertyDescriptor(window.HTMLElement.prototype, 'innerHTML'),\n  HTMLElement_insertAdjacentElement: window.HTMLElement.prototype['insertAdjacentElement'],\n};\n","import Native from './Native.js';\nimport CustomElementInternals from '../CustomElementInternals.js';\nimport CEState from '../CustomElementState.js';\nimport AlreadyConstructedMarker from '../AlreadyConstructedMarker.js';\n\n/**\n * @param {!CustomElementInternals} internals\n */\nexport default function(internals) {\n  window['HTMLElement'] = (function() {\n    /**\n     * @type {function(new: HTMLElement): !HTMLElement}\n     */\n    function HTMLElement() {\n      // This should really be `new.target` but `new.target` can't be emulated\n      // in ES5. Assuming the user keeps the default value of the constructor's\n      // prototype's `constructor` property, this is equivalent.\n      /** @type {!Function} */\n      const constructor = this.constructor;\n\n      const definition = internals.constructorToDefinition(constructor);\n      if (!definition) {\n        throw new Error('The custom element being constructed was not registered with `customElements`.');\n      }\n\n      const constructionStack = definition.constructionStack;\n\n      if (constructionStack.length === 0) {\n        const element = Native.Document_createElement.call(document, definition.localName);\n        Object.setPrototypeOf(element, constructor.prototype);\n        element.__CE_state = CEState.custom;\n        element.__CE_definition = definition;\n        internals.patch(element);\n        return element;\n      }\n\n      const lastIndex = constructionStack.length - 1;\n      const element = constructionStack[lastIndex];\n      if (element === AlreadyConstructedMarker) {\n        throw new Error('The HTMLElement constructor was either called reentrantly for this constructor or called multiple times.');\n      }\n      constructionStack[lastIndex] = AlreadyConstructedMarker;\n\n      Object.setPrototypeOf(element, constructor.prototype);\n      internals.patch(/** @type {!HTMLElement} */ (element));\n\n      return element;\n    }\n\n    HTMLElement.prototype = Native.HTMLElement.prototype;\n\n    return HTMLElement;\n  })();\n};\n","/**\n * @license\n * Copyright (c) 2016 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\nimport CustomElementInternals from './CustomElementInternals.js';\nimport CustomElementRegistry from './CustomElementRegistry.js';\n\nimport PatchHTMLElement from './Patch/HTMLElement.js';\nimport PatchDocument from './Patch/Document.js';\nimport PatchDocumentFragment from './Patch/DocumentFragment.js';\nimport PatchNode from './Patch/Node.js';\nimport PatchElement from './Patch/Element.js';\n\nconst priorCustomElements = window['customElements'];\n\nif (!priorCustomElements ||\n     priorCustomElements['forcePolyfill'] ||\n     (typeof priorCustomElements['define'] != 'function') ||\n     (typeof priorCustomElements['get'] != 'function')) {\n  /** @type {!CustomElementInternals} */\n  const internals = new CustomElementInternals();\n\n  PatchHTMLElement(internals);\n  PatchDocument(internals);\n  PatchDocumentFragment(internals);\n  PatchNode(internals);\n  PatchElement(internals);\n\n  // The main document is always associated with the registry.\n  document.__CE_hasRegistry = true;\n\n  /** @type {!CustomElementRegistry} */\n  const customElements = new CustomElementRegistry(internals);\n\n  Object.defineProperty(window, 'customElements', {\n    configurable: true,\n    enumerable: true,\n    value: customElements,\n  });\n}\n","import CustomElementInternals from '../../CustomElementInternals.js';\nimport * as Utilities from '../../Utilities.js';\n\n/**\n * @typedef {{\n *   prepend: !function(...(!Node|string)),\n  *  append: !function(...(!Node|string)),\n * }}\n */\nlet ParentNodeNativeMethods;\n\n/**\n * @param {!CustomElementInternals} internals\n * @param {!Object} destination\n * @param {!ParentNodeNativeMethods} builtIn\n */\nexport default function(internals, destination, builtIn) {\n  /**\n   * @param {!function(...(!Node|string))} builtInMethod\n   * @return {!function(...(!Node|string))}\n   */\n  function appendPrependPatch(builtInMethod) {\n    return function(...nodes) {\n      /**\n       * A copy of `nodes`, with any DocumentFragment replaced by its children.\n       * @type {!Array<!Node>}\n       */\n      const flattenedNodes = [];\n\n      /**\n       * Elements in `nodes` that were connected before this call.\n       * @type {!Array<!Node>}\n       */\n      const connectedElements = [];\n\n      for (var i = 0; i < nodes.length; i++) {\n        const node = nodes[i];\n\n        if (node instanceof Element && Utilities.isConnected(node)) {\n          connectedElements.push(node);\n        }\n\n        if (node instanceof DocumentFragment) {\n          for (let child = node.firstChild; child; child = child.nextSibling) {\n            flattenedNodes.push(child);\n          }\n        } else {\n          flattenedNodes.push(node);\n        }\n      }\n\n      builtInMethod.apply(this, nodes);\n\n      for (let i = 0; i < connectedElements.length; i++) {\n        internals.disconnectTree(connectedElements[i]);\n      }\n\n      if (Utilities.isConnected(this)) {\n        for (let i = 0; i < flattenedNodes.length; i++) {\n          const node = flattenedNodes[i];\n          if (node instanceof Element) {\n            internals.connectTree(node);\n          }\n        }\n      }\n    };\n  }\n\n  if (builtIn.prepend !== undefined) {\n    Utilities.setPropertyUnchecked(destination, 'prepend', appendPrependPatch(builtIn.prepend));\n  }\n\n  if (builtIn.append !== undefined) {\n    Utilities.setPropertyUnchecked(destination, 'append', appendPrependPatch(builtIn.append));\n  }\n};\n","import Native from './Native.js';\nimport CustomElementInternals from '../CustomElementInternals.js';\nimport * as Utilities from '../Utilities.js';\n\nimport PatchParentNode from './Interface/ParentNode.js';\n\n/**\n * @param {!CustomElementInternals} internals\n */\nexport default function(internals) {\n  Utilities.setPropertyUnchecked(Document.prototype, 'createElement',\n    /**\n     * @this {Document}\n     * @param {string} localName\n     * @return {!Element}\n     */\n    function(localName) {\n      // Only create custom elements if this document is associated with the registry.\n      if (this.__CE_hasRegistry) {\n        const definition = internals.localNameToDefinition(localName);\n        if (definition) {\n          return new (definition.constructor)();\n        }\n      }\n\n      const result = /** @type {!Element} */\n        (Native.Document_createElement.call(this, localName));\n      internals.patch(result);\n      return result;\n    });\n\n  Utilities.setPropertyUnchecked(Document.prototype, 'importNode',\n    /**\n     * @this {Document}\n     * @param {!Node} node\n     * @param {boolean=} deep\n     * @return {!Node}\n     */\n    function(node, deep) {\n      const clone = Native.Document_importNode.call(this, node, deep);\n      // Only create custom elements if this document is associated with the registry.\n      if (!this.__CE_hasRegistry) {\n        internals.patchTree(clone);\n      } else {\n        internals.patchAndUpgradeTree(clone);\n      }\n      return clone;\n    });\n\n  const NS_HTML = \"http://www.w3.org/1999/xhtml\";\n\n  Utilities.setPropertyUnchecked(Document.prototype, 'createElementNS',\n    /**\n     * @this {Document}\n     * @param {?string} namespace\n     * @param {string} localName\n     * @return {!Element}\n     */\n    function(namespace, localName) {\n      // Only create custom elements if this document is associated with the registry.\n      if (this.__CE_hasRegistry && (namespace === null || namespace === NS_HTML)) {\n        const definition = internals.localNameToDefinition(localName);\n        if (definition) {\n          return new (definition.constructor)();\n        }\n      }\n\n      const result = /** @type {!Element} */\n        (Native.Document_createElementNS.call(this, namespace, localName));\n      internals.patch(result);\n      return result;\n    });\n\n  PatchParentNode(internals, Document.prototype, {\n    prepend: Native.Document_prepend,\n    append: Native.Document_append,\n  });\n};\n","import Native from './Native.js';\nimport CustomElementInternals from '../CustomElementInternals.js';\nimport * as Utilities from '../Utilities.js';\n\n/**\n * @param {!CustomElementInternals} internals\n */\nexport default function(internals) {\n  // `Node#nodeValue` is implemented on `Attr`.\n  // `Node#textContent` is implemented on `Attr`, `Element`.\n\n  Utilities.setPropertyUnchecked(Node.prototype, 'insertBefore',\n    /**\n     * @this {Node}\n     * @param {!Node} node\n     * @param {?Node} refNode\n     * @return {!Node}\n     */\n    function(node, refNode) {\n      if (node instanceof DocumentFragment) {\n        const insertedNodes = Array.prototype.slice.apply(node.childNodes);\n        const nativeResult = Native.Node_insertBefore.call(this, node, refNode);\n\n        // DocumentFragments can't be connected, so `disconnectTree` will never\n        // need to be called on a DocumentFragment's children after inserting it.\n\n        if (Utilities.isConnected(this)) {\n          for (let i = 0; i < insertedNodes.length; i++) {\n            internals.connectTree(insertedNodes[i]);\n          }\n        }\n\n        return nativeResult;\n      }\n\n      const nodeWasConnected = Utilities.isConnected(node);\n      const nativeResult = Native.Node_insertBefore.call(this, node, refNode);\n\n      if (nodeWasConnected) {\n        internals.disconnectTree(node);\n      }\n\n      if (Utilities.isConnected(this)) {\n        internals.connectTree(node);\n      }\n\n      return nativeResult;\n    });\n\n  Utilities.setPropertyUnchecked(Node.prototype, 'appendChild',\n    /**\n     * @this {Node}\n     * @param {!Node} node\n     * @return {!Node}\n     */\n    function(node) {\n      if (node instanceof DocumentFragment) {\n        const insertedNodes = Array.prototype.slice.apply(node.childNodes);\n        const nativeResult = Native.Node_appendChild.call(this, node);\n\n        // DocumentFragments can't be connected, so `disconnectTree` will never\n        // need to be called on a DocumentFragment's children after inserting it.\n\n        if (Utilities.isConnected(this)) {\n          for (let i = 0; i < insertedNodes.length; i++) {\n            internals.connectTree(insertedNodes[i]);\n          }\n        }\n\n        return nativeResult;\n      }\n\n      const nodeWasConnected = Utilities.isConnected(node);\n      const nativeResult = Native.Node_appendChild.call(this, node);\n\n      if (nodeWasConnected) {\n        internals.disconnectTree(node);\n      }\n\n      if (Utilities.isConnected(this)) {\n        internals.connectTree(node);\n      }\n\n      return nativeResult;\n    });\n\n  Utilities.setPropertyUnchecked(Node.prototype, 'cloneNode',\n    /**\n     * @this {Node}\n     * @param {boolean=} deep\n     * @return {!Node}\n     */\n    function(deep) {\n      const clone = Native.Node_cloneNode.call(this, deep);\n      // Only create custom elements if this element's owner document is\n      // associated with the registry.\n      if (!this.ownerDocument.__CE_hasRegistry) {\n        internals.patchTree(clone);\n      } else {\n        internals.patchAndUpgradeTree(clone);\n      }\n      return clone;\n    });\n\n  Utilities.setPropertyUnchecked(Node.prototype, 'removeChild',\n    /**\n     * @this {Node}\n     * @param {!Node} node\n     * @return {!Node}\n     */\n    function(node) {\n      const nodeWasConnected = Utilities.isConnected(node);\n      const nativeResult = Native.Node_removeChild.call(this, node);\n\n      if (nodeWasConnected) {\n        internals.disconnectTree(node);\n      }\n\n      return nativeResult;\n    });\n\n  Utilities.setPropertyUnchecked(Node.prototype, 'replaceChild',\n    /**\n     * @this {Node}\n     * @param {!Node} nodeToInsert\n     * @param {!Node} nodeToRemove\n     * @return {!Node}\n     */\n    function(nodeToInsert, nodeToRemove) {\n      if (nodeToInsert instanceof DocumentFragment) {\n        const insertedNodes = Array.prototype.slice.apply(nodeToInsert.childNodes);\n        const nativeResult = Native.Node_replaceChild.call(this, nodeToInsert, nodeToRemove);\n\n        // DocumentFragments can't be connected, so `disconnectTree` will never\n        // need to be called on a DocumentFragment's children after inserting it.\n\n        if (Utilities.isConnected(this)) {\n          internals.disconnectTree(nodeToRemove);\n          for (let i = 0; i < insertedNodes.length; i++) {\n            internals.connectTree(insertedNodes[i]);\n          }\n        }\n\n        return nativeResult;\n      }\n\n      const nodeToInsertWasConnected = Utilities.isConnected(nodeToInsert);\n      const nativeResult = Native.Node_replaceChild.call(this, nodeToInsert, nodeToRemove);\n      const thisIsConnected = Utilities.isConnected(this);\n\n      if (thisIsConnected) {\n        internals.disconnectTree(nodeToRemove);\n      }\n\n      if (nodeToInsertWasConnected) {\n        internals.disconnectTree(nodeToInsert);\n      }\n\n      if (thisIsConnected) {\n        internals.connectTree(nodeToInsert);\n      }\n\n      return nativeResult;\n    });\n\n\n  function patch_textContent(destination, baseDescriptor) {\n    Object.defineProperty(destination, 'textContent', {\n      enumerable: baseDescriptor.enumerable,\n      configurable: true,\n      get: baseDescriptor.get,\n      set: /** @this {Node} */ function(assignedValue) {\n        // If this is a text node then there are no nodes to disconnect.\n        if (this.nodeType === Node.TEXT_NODE) {\n          baseDescriptor.set.call(this, assignedValue);\n          return;\n        }\n\n        let removedNodes = undefined;\n        // Checking for `firstChild` is faster than reading `childNodes.length`\n        // to compare with 0.\n        if (this.firstChild) {\n          // Using `childNodes` is faster than `children`, even though we only\n          // care about elements.\n          const childNodes = this.childNodes;\n          const childNodesLength = childNodes.length;\n          if (childNodesLength > 0 && Utilities.isConnected(this)) {\n            // Copying an array by iterating is faster than using slice.\n            removedNodes = new Array(childNodesLength);\n            for (let i = 0; i < childNodesLength; i++) {\n              removedNodes[i] = childNodes[i];\n            }\n          }\n        }\n\n        baseDescriptor.set.call(this, assignedValue);\n\n        if (removedNodes) {\n          for (let i = 0; i < removedNodes.length; i++) {\n            internals.disconnectTree(removedNodes[i]);\n          }\n        }\n      },\n    });\n  }\n\n  if (Native.Node_textContent && Native.Node_textContent.get) {\n    patch_textContent(Node.prototype, Native.Node_textContent);\n  } else {\n    internals.addPatch(function(element) {\n      patch_textContent(element, {\n        enumerable: true,\n        configurable: true,\n        // NOTE: This implementation of the `textContent` getter assumes that\n        // text nodes' `textContent` getter will not be patched.\n        get: /** @this {Node} */ function() {\n          /** @type {!Array<string>} */\n          const parts = [];\n\n          for (let i = 0; i < this.childNodes.length; i++) {\n            parts.push(this.childNodes[i].textContent);\n          }\n\n          return parts.join('');\n        },\n        set: /** @this {Node} */ function(assignedValue) {\n          while (this.firstChild) {\n            Native.Node_removeChild.call(this, this.firstChild);\n          }\n          Native.Node_appendChild.call(this, document.createTextNode(assignedValue));\n        },\n      });\n    });\n  }\n};\n","import CustomElementInternals from '../../CustomElementInternals.js';\nimport * as Utilities from '../../Utilities.js';\n\n/**\n * @typedef {{\n *   before: !function(...(!Node|string)),\n *   after: !function(...(!Node|string)),\n *   replaceWith: !function(...(!Node|string)),\n *   remove: !function(),\n * }}\n */\nlet ChildNodeNativeMethods;\n\n/**\n * @param {!CustomElementInternals} internals\n * @param {!Object} destination\n * @param {!ChildNodeNativeMethods} builtIn\n */\nexport default function(internals, destination, builtIn) {\n  /**\n   * @param {!function(...(!Node|string))} builtInMethod\n   * @return {!function(...(!Node|string))}\n   */\n  function beforeAfterPatch(builtInMethod) {\n    return function(...nodes) {\n      /**\n       * A copy of `nodes`, with any DocumentFragment replaced by its children.\n       * @type {!Array<!Node>}\n       */\n      const flattenedNodes = [];\n\n      /**\n       * Elements in `nodes` that were connected before this call.\n       * @type {!Array<!Node>}\n       */\n      const connectedElements = [];\n\n      for (var i = 0; i < nodes.length; i++) {\n        const node = nodes[i];\n\n        if (node instanceof Element && Utilities.isConnected(node)) {\n          connectedElements.push(node);\n        }\n\n        if (node instanceof DocumentFragment) {\n          for (let child = node.firstChild; child; child = child.nextSibling) {\n            flattenedNodes.push(child);\n          }\n        } else {\n          flattenedNodes.push(node);\n        }\n      }\n\n      builtInMethod.apply(this, nodes);\n\n      for (let i = 0; i < connectedElements.length; i++) {\n        internals.disconnectTree(connectedElements[i]);\n      }\n\n      if (Utilities.isConnected(this)) {\n        for (let i = 0; i < flattenedNodes.length; i++) {\n          const node = flattenedNodes[i];\n          if (node instanceof Element) {\n            internals.connectTree(node);\n          }\n        }\n      }\n    };\n  }\n\n  if (builtIn.before !== undefined) {\n    Utilities.setPropertyUnchecked(destination, 'before', beforeAfterPatch(builtIn.before));\n  }\n\n  if (builtIn.before !== undefined) {\n    Utilities.setPropertyUnchecked(destination, 'after', beforeAfterPatch(builtIn.after));\n  }\n\n  if (builtIn.replaceWith !== undefined) {\n    Utilities.setPropertyUnchecked(destination, 'replaceWith',\n      /**\n       * @param {...(!Node|string)} nodes\n       */\n      function(...nodes) {\n        /**\n         * A copy of `nodes`, with any DocumentFragment replaced by its children.\n         * @type {!Array<!Node>}\n         */\n        const flattenedNodes = [];\n\n        /**\n         * Elements in `nodes` that were connected before this call.\n         * @type {!Array<!Node>}\n         */\n        const connectedElements = [];\n\n        for (var i = 0; i < nodes.length; i++) {\n          const node = nodes[i];\n\n          if (node instanceof Element && Utilities.isConnected(node)) {\n            connectedElements.push(node);\n          }\n\n          if (node instanceof DocumentFragment) {\n            for (let child = node.firstChild; child; child = child.nextSibling) {\n              flattenedNodes.push(child);\n            }\n          } else {\n            flattenedNodes.push(node);\n          }\n        }\n\n        const wasConnected = Utilities.isConnected(this);\n\n        builtIn.replaceWith.apply(this, nodes);\n\n        for (let i = 0; i < connectedElements.length; i++) {\n          internals.disconnectTree(connectedElements[i]);\n        }\n\n        if (wasConnected) {\n          internals.disconnectTree(this);\n          for (let i = 0; i < flattenedNodes.length; i++) {\n            const node = flattenedNodes[i];\n            if (node instanceof Element) {\n              internals.connectTree(node);\n            }\n          }\n        }\n      });\n    }\n\n  if (builtIn.remove !== undefined) {\n    Utilities.setPropertyUnchecked(destination, 'remove',\n      function() {\n        const wasConnected = Utilities.isConnected(this);\n\n        builtIn.remove.call(this);\n\n        if (wasConnected) {\n          internals.disconnectTree(this);\n        }\n      });\n  }\n};\n","import Native from './Native.js';\nimport CustomElementInternals from '../CustomElementInternals.js';\nimport CEState from '../CustomElementState.js';\nimport * as Utilities from '../Utilities.js';\n\nimport PatchParentNode from './Interface/ParentNode.js';\nimport PatchChildNode from './Interface/ChildNode.js';\n\n/**\n * @param {!CustomElementInternals} internals\n */\nexport default function(internals) {\n  if (Native.Element_attachShadow) {\n    Utilities.setPropertyUnchecked(Element.prototype, 'attachShadow',\n      /**\n       * @this {Element}\n       * @param {!{mode: string}} init\n       * @return {ShadowRoot}\n       */\n      function(init) {\n        const shadowRoot = Native.Element_attachShadow.call(this, init);\n        this.__CE_shadowRoot = shadowRoot;\n        return shadowRoot;\n      });\n  }\n\n\n  function patch_innerHTML(destination, baseDescriptor) {\n    Object.defineProperty(destination, 'innerHTML', {\n      enumerable: baseDescriptor.enumerable,\n      configurable: true,\n      get: baseDescriptor.get,\n      set: /** @this {Element} */ function(htmlString) {\n        const isConnected = Utilities.isConnected(this);\n\n        // NOTE: In IE11, when using the native `innerHTML` setter, all nodes\n        // that were previously descendants of the context element have all of\n        // their children removed as part of the set - the entire subtree is\n        // 'disassembled'. This work around walks the subtree *before* using the\n        // native setter.\n        /** @type {!Array<!Element>|undefined} */\n        let removedElements = undefined;\n        if (isConnected) {\n          removedElements = [];\n          Utilities.walkDeepDescendantElements(this, element => {\n            if (element !== this) {\n              removedElements.push(element);\n            }\n          });\n        }\n\n        baseDescriptor.set.call(this, htmlString);\n\n        if (removedElements) {\n          for (let i = 0; i < removedElements.length; i++) {\n            const element = removedElements[i];\n            if (element.__CE_state === CEState.custom) {\n              internals.disconnectedCallback(element);\n            }\n          }\n        }\n\n        // Only create custom elements if this element's owner document is\n        // associated with the registry.\n        if (!this.ownerDocument.__CE_hasRegistry) {\n          internals.patchTree(this);\n        } else {\n          internals.patchAndUpgradeTree(this);\n        }\n        return htmlString;\n      },\n    });\n  }\n\n  if (Native.Element_innerHTML && Native.Element_innerHTML.get) {\n    patch_innerHTML(Element.prototype, Native.Element_innerHTML);\n  } else if (Native.HTMLElement_innerHTML && Native.HTMLElement_innerHTML.get) {\n    patch_innerHTML(HTMLElement.prototype, Native.HTMLElement_innerHTML);\n  } else {\n\n    internals.addPatch(function(element) {\n      patch_innerHTML(element, {\n        enumerable: true,\n        configurable: true,\n        // Implements getting `innerHTML` by performing an unpatched `cloneNode`\n        // of the element and returning the resulting element's `innerHTML`.\n        // TODO: Is this too expensive?\n        get: /** @this {Element} */ function() {\n          return Native.Node_cloneNode.call(this, true).innerHTML;\n        },\n        // Implements setting `innerHTML` by creating an unpatched element,\n        // setting `innerHTML` of that element and replacing the target\n        // element's children with those of the unpatched element.\n        set: /** @this {Element} */ function(assignedValue) {\n          // NOTE: re-route to `content` for `template` elements.\n          // We need to do this because `template.appendChild` does not\n          // route into `template.content`.\n          const isTemplate = (this.localName === 'template');\n          /** @type {!Node} */\n          const content = isTemplate ? (/** @type {!HTMLTemplateElement} */\n            (this)).content : this;\n          /** @type {!Node} */\n          const rawElement = Native.Document_createElement.call(document,\n            this.localName);\n          rawElement.innerHTML = assignedValue;\n\n          while (content.childNodes.length > 0) {\n            Native.Node_removeChild.call(content, content.childNodes[0]);\n          }\n          const container = isTemplate ? rawElement.content : rawElement;\n          while (container.childNodes.length > 0) {\n            Native.Node_appendChild.call(content, container.childNodes[0]);\n          }\n        },\n      });\n    });\n  }\n\n\n  Utilities.setPropertyUnchecked(Element.prototype, 'setAttribute',\n    /**\n     * @this {Element}\n     * @param {string} name\n     * @param {string} newValue\n     */\n    function(name, newValue) {\n      // Fast path for non-custom elements.\n      if (this.__CE_state !== CEState.custom) {\n        return Native.Element_setAttribute.call(this, name, newValue);\n      }\n\n      const oldValue = Native.Element_getAttribute.call(this, name);\n      Native.Element_setAttribute.call(this, name, newValue);\n      newValue = Native.Element_getAttribute.call(this, name);\n      internals.attributeChangedCallback(this, name, oldValue, newValue, null);\n    });\n\n  Utilities.setPropertyUnchecked(Element.prototype, 'setAttributeNS',\n    /**\n     * @this {Element}\n     * @param {?string} namespace\n     * @param {string} name\n     * @param {string} newValue\n     */\n    function(namespace, name, newValue) {\n      // Fast path for non-custom elements.\n      if (this.__CE_state !== CEState.custom) {\n        return Native.Element_setAttributeNS.call(this, namespace, name, newValue);\n      }\n\n      const oldValue = Native.Element_getAttributeNS.call(this, namespace, name);\n      Native.Element_setAttributeNS.call(this, namespace, name, newValue);\n      newValue = Native.Element_getAttributeNS.call(this, namespace, name);\n      internals.attributeChangedCallback(this, name, oldValue, newValue, namespace);\n    });\n\n  Utilities.setPropertyUnchecked(Element.prototype, 'removeAttribute',\n    /**\n     * @this {Element}\n     * @param {string} name\n     */\n    function(name) {\n      // Fast path for non-custom elements.\n      if (this.__CE_state !== CEState.custom) {\n        return Native.Element_removeAttribute.call(this, name);\n      }\n\n      const oldValue = Native.Element_getAttribute.call(this, name);\n      Native.Element_removeAttribute.call(this, name);\n      if (oldValue !== null) {\n        internals.attributeChangedCallback(this, name, oldValue, null, null);\n      }\n    });\n\n  Utilities.setPropertyUnchecked(Element.prototype, 'removeAttributeNS',\n    /**\n     * @this {Element}\n     * @param {?string} namespace\n     * @param {string} name\n     */\n    function(namespace, name) {\n      // Fast path for non-custom elements.\n      if (this.__CE_state !== CEState.custom) {\n        return Native.Element_removeAttributeNS.call(this, namespace, name);\n      }\n\n      const oldValue = Native.Element_getAttributeNS.call(this, namespace, name);\n      Native.Element_removeAttributeNS.call(this, namespace, name);\n      // In older browsers, `Element#getAttributeNS` may return the empty string\n      // instead of null if the attribute does not exist. For details, see;\n      // https://developer.mozilla.org/en-US/docs/Web/API/Element/getAttributeNS#Notes\n      const newValue = Native.Element_getAttributeNS.call(this, namespace, name);\n      if (oldValue !== newValue) {\n        internals.attributeChangedCallback(this, name, oldValue, newValue, namespace);\n      }\n    });\n\n\n  function patch_insertAdjacentElement(destination, baseMethod) {\n    Utilities.setPropertyUnchecked(destination, 'insertAdjacentElement',\n      /**\n       * @this {Element}\n       * @param {string} where\n       * @param {!Element} element\n       * @return {?Element}\n       */\n      function(where, element) {\n        const wasConnected = Utilities.isConnected(element);\n        const insertedElement = /** @type {!Element} */\n          (baseMethod.call(this, where, element));\n\n        if (wasConnected) {\n          internals.disconnectTree(element);\n        }\n\n        if (Utilities.isConnected(insertedElement)) {\n          internals.connectTree(element);\n        }\n        return insertedElement;\n      });\n  }\n\n  if (Native.HTMLElement_insertAdjacentElement) {\n    patch_insertAdjacentElement(HTMLElement.prototype, Native.HTMLElement_insertAdjacentElement);\n  } else if (Native.Element_insertAdjacentElement) {\n    patch_insertAdjacentElement(Element.prototype, Native.Element_insertAdjacentElement);\n  } else {\n    console.warn('Custom Elements: `Element#insertAdjacentElement` was not patched.');\n  }\n\n\n  PatchParentNode(internals, Element.prototype, {\n    prepend: Native.Element_prepend,\n    append: Native.Element_append,\n  });\n\n  PatchChildNode(internals, Element.prototype, {\n    before: Native.Element_before,\n    after: Native.Element_after,\n    replaceWith: Native.Element_replaceWith,\n    remove: Native.Element_remove,\n  });\n};\n","import CustomElementInternals from '../CustomElementInternals.js';\nimport Native from './Native.js';\nimport PatchParentNode from './Interface/ParentNode.js';\n\n/**\n * @param {!CustomElementInternals} internals\n */\nexport default function(internals) {\n  PatchParentNode(internals, DocumentFragment.prototype, {\n    prepend: Native.DocumentFragment_prepend,\n    append: Native.DocumentFragment_append,\n  });\n};\n"]}
\ No newline at end of file
--- a/browser/components/payments/test/mochitest/mochitest.ini
+++ b/browser/components/payments/test/mochitest/mochitest.ini
@@ -1,11 +1,9 @@
 [DEFAULT]
-prefs =
-   dom.webcomponents.customelements.enabled=false
 support-files =
    !/browser/extensions/formautofill/content/editAddress.xhtml
    !/browser/extensions/formautofill/content/editCreditCard.xhtml
    ../../../../../browser/extensions/formautofill/content/autofillEditForms.js
    ../../../../../browser/extensions/formautofill/skin/shared/editDialog-shared.css
    ../../../../../testing/modules/sinon-2.3.2.js
    # paymentRequest.xhtml is needed for `importDialogDependencies` so that the relative paths of
    # formautofill/edit*.xhtml work from the *-form elements in paymentRequest.xhtml.
--- a/browser/components/payments/test/mochitest/test_ObservedPropertiesMixin.html
+++ b/browser/components/payments/test/mochitest/test_ObservedPropertiesMixin.html
@@ -4,17 +4,16 @@
 Test the ObservedPropertiesMixin
 -->
 <head>
   <meta charset="utf-8">
   <title>Test the ObservedPropertiesMixin</title>
   <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
   <script type="application/javascript" src="/tests/SimpleTest/AddTask.js"></script>
   <script src="payments_common.js"></script>
-  <script src="../../res/vendor/custom-elements.min.js"></script>
 
   <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
 </head>
 <body>
   <p id="display">
     <test-element id="el1" one="foo" two-word="bar"></test-element>
   </p>
 <div id="content" style="display: none">
--- a/browser/components/payments/test/mochitest/test_PaymentStateSubscriberMixin.html
+++ b/browser/components/payments/test/mochitest/test_PaymentStateSubscriberMixin.html
@@ -5,17 +5,16 @@ Test the PaymentStateSubscriberMixin
 -->
 <head>
   <meta charset="utf-8">
   <title>Test the PaymentStateSubscriberMixin</title>
   <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
   <script type="application/javascript" src="/tests/SimpleTest/AddTask.js"></script>
   <script src="sinon-2.3.2.js"></script>
   <script src="payments_common.js"></script>
-  <script src="../../res/vendor/custom-elements.min.js"></script>
 
   <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
 </head>
 <body>
   <p id="display">
     <test-element id="el1"></test-element>
   </p>
 <div id="content" style="display: none">
--- a/browser/components/payments/test/mochitest/test_accepted_cards.html
+++ b/browser/components/payments/test/mochitest/test_accepted_cards.html
@@ -6,17 +6,16 @@ Test the accepted-cards element
 <head>
   <meta charset="utf-8">
   <title>Test the accepted-cards element</title>
   <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
   <script type="application/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
   <script type="application/javascript" src="/tests/SimpleTest/AddTask.js"></script>
   <script src="sinon-2.3.2.js"></script>
   <script src="payments_common.js"></script>
-  <script src="../../res/vendor/custom-elements.min.js"></script>
   <script src="../../res/unprivileged-fallbacks.js"></script>
 
   <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
   <link rel="stylesheet" type="text/css" href="../../res/paymentRequest.css"/>
   <link rel="stylesheet" type="text/css" href="../../res/components/accepted-cards.css"/>
 </head>
 <body>
   <p id="display">
--- a/browser/components/payments/test/mochitest/test_address_form.html
+++ b/browser/components/payments/test/mochitest/test_address_form.html
@@ -6,17 +6,16 @@ Test the address-form element
 <head>
   <meta charset="utf-8">
   <title>Test the address-form element</title>
   <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
   <script type="application/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
   <script type="application/javascript" src="/tests/SimpleTest/AddTask.js"></script>
   <script src="sinon-2.3.2.js"></script>
   <script src="payments_common.js"></script>
-  <script src="../../res/vendor/custom-elements.min.js"></script>
   <script src="../../res/unprivileged-fallbacks.js"></script>
   <script src="autofillEditForms.js"></script>
 
   <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
   <link rel="stylesheet" type="text/css" href="../../res/paymentRequest.css"/>
   <link rel="stylesheet" type="text/css" href="editDialog-shared.css"/>
   <link rel="stylesheet" type="text/css" href="../../res/containers/address-form.css"/>
 </head>
--- a/browser/components/payments/test/mochitest/test_address_option.html
+++ b/browser/components/payments/test/mochitest/test_address_option.html
@@ -5,17 +5,16 @@ Test the address-option component
 -->
 <head>
   <meta charset="utf-8">
   <title>Test the address-option component</title>
   <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
   <script type="application/javascript" src="/tests/SimpleTest/AddTask.js"></script>
   <script type="application/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
   <script src="payments_common.js"></script>
-  <script src="../../res/vendor/custom-elements.min.js"></script>
   <script src="../../res/unprivileged-fallbacks.js"></script>
   <script src="autofillEditForms.js"></script>
 
   <link rel="stylesheet" type="text/css" href="../../res/components/rich-select.css"/>
   <link rel="stylesheet" type="text/css" href="../../res/components/address-option.css"/>
   <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
 </head>
 <body>
--- a/browser/components/payments/test/mochitest/test_address_picker.html
+++ b/browser/components/payments/test/mochitest/test_address_picker.html
@@ -5,17 +5,16 @@ Test the address-picker component
 -->
 <head>
   <meta charset="utf-8">
   <title>Test the address-picker component</title>
   <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
   <script type="application/javascript" src="/tests/SimpleTest/AddTask.js"></script>
   <script type="application/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
   <script src="payments_common.js"></script>
-  <script src="../../res/vendor/custom-elements.min.js"></script>
   <script src="../../res/unprivileged-fallbacks.js"></script>
   <script src="autofillEditForms.js"></script>
 
   <link rel="stylesheet" type="text/css" href="../../res/containers/rich-picker.css"/>
   <link rel="stylesheet" type="text/css" href="../../res/components/rich-select.css"/>
   <link rel="stylesheet" type="text/css" href="../../res/components/address-option.css"/>
   <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
 </head>
--- a/browser/components/payments/test/mochitest/test_basic_card_form.html
+++ b/browser/components/payments/test/mochitest/test_basic_card_form.html
@@ -6,17 +6,16 @@ Test the basic-card-form element
 <head>
   <meta charset="utf-8">
   <title>Test the basic-card-form element</title>
   <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
   <script type="application/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
   <script type="application/javascript" src="/tests/SimpleTest/AddTask.js"></script>
   <script src="sinon-2.3.2.js"></script>
   <script src="payments_common.js"></script>
-  <script src="../../res/vendor/custom-elements.min.js"></script>
   <script src="../../res/unprivileged-fallbacks.js"></script>
   <script src="autofillEditForms.js"></script>
 
   <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
   <link rel="stylesheet" type="text/css" href="../../res/paymentRequest.css"/>
   <link rel="stylesheet" type="text/css" href="../../res/components/accepted-cards.css"/>
 </head>
 <body>
--- a/browser/components/payments/test/mochitest/test_basic_card_option.html
+++ b/browser/components/payments/test/mochitest/test_basic_card_option.html
@@ -5,17 +5,16 @@ Test the basic-card-option component
 -->
 <head>
   <meta charset="utf-8">
   <title>Test the basic-card-option component</title>
   <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
   <script type="application/javascript" src="/tests/SimpleTest/AddTask.js"></script>
   <script type="application/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
   <script src="payments_common.js"></script>
-  <script src="../../res/vendor/custom-elements.min.js"></script>
   <script src="../../res/unprivileged-fallbacks.js"></script>
 
   <link rel="stylesheet" type="text/css" href="../../res/components/rich-select.css"/>
   <link rel="stylesheet" type="text/css" href="../../res/components/basic-card-option.css"/>
   <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
 </head>
 <body>
   <p id="display">
--- a/browser/components/payments/test/mochitest/test_completion_error_page.html
+++ b/browser/components/payments/test/mochitest/test_completion_error_page.html
@@ -4,17 +4,16 @@
 Test the completion-error-page component
 -->
 <head>
   <meta charset="utf-8">
   <title>Test the completion-error-page component</title>
   <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
   <script type="application/javascript" src="/tests/SimpleTest/AddTask.js"></script>
   <script src="payments_common.js"></script>
-  <script src="../../res/vendor/custom-elements.min.js"></script>
   <script src="../../res/unprivileged-fallbacks.js"></script>
 
   <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
 </head>
 <body>
   <p id="display">
     <completion-error-page id="completion-timeout-error" class="illustrated"
             data-page-title="Sample Title"
--- a/browser/components/payments/test/mochitest/test_currency_amount.html
+++ b/browser/components/payments/test/mochitest/test_currency_amount.html
@@ -4,17 +4,16 @@
 Test the currency-amount component
 -->
 <head>
   <meta charset="utf-8">
   <title>Test the currency-amount component</title>
   <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
   <script type="application/javascript" src="/tests/SimpleTest/AddTask.js"></script>
   <script src="payments_common.js"></script>
-  <script src="../../res/vendor/custom-elements.min.js"></script>
 
   <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
 </head>
 <body>
   <p id="display">
     <currency-amount id="amount1"></currency-amount>
   </p>
 <div id="content" style="display: none">
--- a/browser/components/payments/test/mochitest/test_labelled_checkbox.html
+++ b/browser/components/payments/test/mochitest/test_labelled_checkbox.html
@@ -4,17 +4,16 @@
 Test the labelled-checkbox component
 -->
 <head>
   <meta charset="utf-8">
   <title>Test the labelled-checkbox component</title>
   <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
   <script type="application/javascript" src="/tests/SimpleTest/AddTask.js"></script>
   <script src="payments_common.js"></script>
-  <script src="../../res/vendor/custom-elements.min.js"></script>
 
   <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
 </head>
 <body>
   <p id="display">
     <labelled-checkbox id="box0"></labelled-checkbox>
     <labelled-checkbox id="box1" label="the label" value="the value"></labelled-checkbox>
   </p>
--- a/browser/components/payments/test/mochitest/test_order_details.html
+++ b/browser/components/payments/test/mochitest/test_order_details.html
@@ -4,17 +4,16 @@
   Test the order-details component
 -->
 <head>
   <meta charset="utf-8">
   <title>Test the order-details component</title>
   <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
   <script type="application/javascript" src="/tests/SimpleTest/AddTask.js"></script>
   <script src="payments_common.js"></script>
-  <script src="../../res/vendor/custom-elements.min.js"></script>
   <script src="../../res/unprivileged-fallbacks.js"></script>
 
   <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
   <link rel="stylesheet" type="text/css" href="../../res/containers/order-details.css"/>
 
   <template id="order-details-template">
     <ul class="main-list"></ul>
     <ul class="footer-items-list"></ul>
--- a/browser/components/payments/test/mochitest/test_payer_address_picker.html
+++ b/browser/components/payments/test/mochitest/test_payer_address_picker.html
@@ -5,17 +5,16 @@ Test the paymentOptions address-picker
 -->
 <head>
   <meta charset="utf-8">
   <title>Test the paymentOptions address-picker</title>
   <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
   <script type="application/javascript" src="/tests/SimpleTest/AddTask.js"></script>
   <script src="payments_common.js"></script>
 
-  <script src="../../res/vendor/custom-elements.min.js"></script>
   <script src="../../res/unprivileged-fallbacks.js"></script>
   <script src="autofillEditForms.js"></script>
 
   <link rel="stylesheet" type="text/css" href="../../res/components/rich-select.css"/>
   <link rel="stylesheet" type="text/css" href="../../res/components/address-option.css"/>
   <link rel="stylesheet" type="text/css" href="../../res/paymentRequest.css"/>
   <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
 </head>
@@ -115,17 +114,19 @@ let DUPED_ADDRESSES = {
 };
 
 let elPicker;
 let elDialog;
 let initialState;
 
 add_task(async function setup_once() {
   registerConsoleFilter(function consoleFilter(msg) {
-    return msg.errorMessage.includes("selectedPayerAddress option a9e830667189 does not exist");
+    return msg.errorMessage &&
+      msg.errorMessage.toString().includes("selectedPayerAddress option a9e830667189 " +
+                                           "does not exist");
   });
 
   let templateFrame = document.getElementById("templateFrame");
   await SimpleTest.promiseFocus(templateFrame.contentWindow);
 
   let displayEl = document.getElementById("display");
   importDialogDependencies(templateFrame, displayEl);
 
@@ -260,16 +261,20 @@ add_task(async function test_filtered_op
   is(closedRichOption.getAttribute("guid"), "a9e830667189", "expected option is visible");
 
   for (let fieldName of ["name", "email"]) {
     let elem = closedRichOption.querySelector(`.${fieldName}`);
     ok(elem, `field ${fieldName} exists`);
     ok(isVisible(elem), `field ${fieldName} is visible`);
   }
 
+  // The selectedPayerAddress (a9e830667189) doesn't have a phone number and
+  // therefore will cause an error.
+  SimpleTest.expectUncaughtException(true);
+
   setPaymentOptions(requestStore, {
     requestPayerPhone: true,
   });
   await asyncElementRendered();
 
   is(elPicker.dropdown.popupBox.children.length, 1, "Check dropdown has 1 addresses");
 
   setPaymentOptions(requestStore, {});
@@ -280,16 +285,20 @@ add_task(async function test_filtered_op
 
 add_task(async function test_no_matches() {
   await setup();
   let requestStore = elPicker.requestStore;
   setPaymentOptions(requestStore, {
     requestPayerPhone: true,
   });
 
+  // The selectedPayerAddress (a9e830667189) doesn't have a phone number and
+  // therefore will cause an error.
+  SimpleTest.expectUncaughtException(true);
+
   requestStore.setState({
     savedAddresses: {
       "2b4dce0fbc1f": {
         "email": "rita@foo.com",
         "guid": "2b4dce0fbc1f",
         "name": "Rita Foo",
       },
       "46b2635a5b26": {
--- a/browser/components/payments/test/mochitest/test_payment_details_item.html
+++ b/browser/components/payments/test/mochitest/test_payment_details_item.html
@@ -4,17 +4,16 @@
 Test the payment-details-item component
 -->
 <head>
   <meta charset="utf-8">
   <title>Test the payment-details-item component</title>
   <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
   <script type="application/javascript" src="/tests/SimpleTest/AddTask.js"></script>
   <script src="payments_common.js"></script>
-  <script src="../../res/vendor/custom-elements.min.js"></script>
 
   <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
 </head>
 <body>
   <p id="display">
     <payment-details-item id="item1"></payment-details-item>
     <payment-details-item id="item2" label="Some item" amount-value="2" amount-currency="USD"></payment-details-item>
   </p>
--- a/browser/components/payments/test/mochitest/test_payment_dialog.html
+++ b/browser/components/payments/test/mochitest/test_payment_dialog.html
@@ -6,17 +6,16 @@ Test the payment-dialog custom element
 <head>
   <meta charset="utf-8">
   <title>Test the payment-dialog element</title>
   <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
   <script type="application/javascript" src="/tests/SimpleTest/AddTask.js"></script>
   <script type="application/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
   <script src="sinon-2.3.2.js"></script>
   <script src="payments_common.js"></script>
-  <script src="../../res/vendor/custom-elements.min.js"></script>
   <script src="../../res/unprivileged-fallbacks.js"></script>
   <script src="autofillEditForms.js"></script>
 
   <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
   <link rel="stylesheet" type="text/css" href="../../res/paymentRequest.css"/>
   <link rel="stylesheet" type="text/css" href="../../res/containers/rich-picker.css"/>
 </head>
 <body>
--- a/browser/components/payments/test/mochitest/test_payment_dialog_required_top_level_items.html
+++ b/browser/components/payments/test/mochitest/test_payment_dialog_required_top_level_items.html
@@ -5,17 +5,16 @@ Test the payment-dialog custom element
 -->
 <head>
   <meta charset="utf-8">
   <title>Test the payment-dialog element</title>
   <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
   <script type="application/javascript" src="/tests/SimpleTest/AddTask.js"></script>
   <script type="application/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
   <script src="payments_common.js"></script>
-  <script src="../../res/vendor/custom-elements.min.js"></script>
   <script src="../../res/unprivileged-fallbacks.js"></script>
   <script src="autofillEditForms.js"></script>
 
   <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
   <link rel="stylesheet" type="text/css" href="../../res/paymentRequest.css"/>
   <link rel="stylesheet" type="text/css" href="../../res/containers/rich-picker.css"/>
 </head>
 <body>
--- a/browser/components/payments/test/mochitest/test_payment_method_picker.html
+++ b/browser/components/payments/test/mochitest/test_payment_method_picker.html
@@ -5,17 +5,16 @@ Test the payment-method-picker component
 -->
 <head>
   <meta charset="utf-8">
   <title>Test the payment-method-picker component</title>
   <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
   <script type="application/javascript" src="/tests/SimpleTest/AddTask.js"></script>
   <script type="application/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
   <script src="payments_common.js"></script>
-  <script src="../../res/vendor/custom-elements.min.js"></script>
   <script src="../../res/unprivileged-fallbacks.js"></script>
 
   <link rel="stylesheet" type="text/css" href="../../res/containers/rich-picker.css"/>
   <link rel="stylesheet" type="text/css" href="../../res/components/rich-select.css"/>
   <link rel="stylesheet" type="text/css" href="../../res/components/basic-card-option.css"/>
   <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
 </head>
 <body>
--- a/browser/components/payments/test/mochitest/test_rich_select.html
+++ b/browser/components/payments/test/mochitest/test_rich_select.html
@@ -5,17 +5,16 @@ Test the rich-select component
 -->
 <head>
   <meta charset="utf-8">
   <title>Test the rich-select component</title>
   <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
   <script type="application/javascript" src="/tests/SimpleTest/AddTask.js"></script>
   <script type="application/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
   <script src="payments_common.js"></script>
-  <script src="../../res/vendor/custom-elements.min.js"></script>
   <script src="../../res/unprivileged-fallbacks.js"></script>
   <script src="autofillEditForms.js"></script>
 
   <link rel="stylesheet" type="text/css" href="../../res/components/rich-select.css"/>
   <link rel="stylesheet" type="text/css" href="../../res/components/address-option.css"/>
   <link rel="stylesheet" type="text/css" href="../../res/components/basic-card-option.css"/>
   <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
 </head>
--- a/browser/components/payments/test/mochitest/test_shipping_option_picker.html
+++ b/browser/components/payments/test/mochitest/test_shipping_option_picker.html
@@ -6,18 +6,16 @@ Test the shipping-option-picker componen
 <head>
   <meta charset="utf-8">
   <title>Test the shipping-option-picker component</title>
   <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
   <script type="application/javascript" src="/tests/SimpleTest/AddTask.js"></script>
   <script type="application/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
   <script src="payments_common.js"></script>
 
-  <script src="../../res/vendor/custom-elements.min.js"></script>
-
   <link rel="stylesheet" type="text/css" href="../../res/components/rich-select.css"/>
   <link rel="stylesheet" type="text/css" href="../../res/components/shipping-option.css"/>
   <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
 </head>
 <body>
   <p id="display">
     <shipping-option-picker id="picker1"></shipping-option-picker>
   </p>