-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathhelper-iframe.html
More file actions
30 lines (28 loc) · 7.34 KB
/
Copy pathhelper-iframe.html
File metadata and controls
30 lines (28 loc) · 7.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<!doctype html>
<html>
<!-- AMP Web Push Helper IFrame -->
<head>
<meta charset="utf-8">
<script>(function(){var f,g=function(a){return"undefined"!=typeof window&&window===a?a:"undefined"!=typeof global&&null!=global?global:a}(this);function h(a,b){b=void 0===b?"":b;try{return decodeURIComponent(a)}catch(c){return b}};var m=/(?:^[#?]?|&)([^=&]+)(?:=([^&]*))?/g;self.log=self.log||{user:null,dev:null,userForEmbed:null};var n=self.log;function p(a){this.K=a;this.l=Object.create(null)}p.prototype.get=function(a){if(this.l[a])return this.l[a].access=Date.now(),this.l[a].payload};p.prototype.put=function(a,b){var c=this;this.l[a]={payload:b,access:Date.now()};var d=Object.keys(this.l);if(d.length>this.K){if(n.dev)a=n.dev;else throw Error("failed to call initLogConstructor");a.warn("lru-cache","Trimming template cache");d.sort(function(a,b){return c.l[b].access-c.l[a].access});delete this.l[d[d.length-1]]}};(function(a){return a||{}})({c:!0,v:!0,a:!0,ad:!0});var q,r;
function u(a){var b;q||(q=self.document.createElement("a"),r=self.UrlCache||(self.UrlCache=new p(100)));var c=r.get(a);if(c)return c;var d=q;d.href=a;d.protocol||(d.href=d.href);var e={href:d.href,protocol:d.protocol,host:d.host,hostname:d.hostname,port:"0"==d.port?"":d.port,pathname:d.pathname,search:d.search,hash:d.hash,origin:null};"/"!==e.pathname[0]&&(e.pathname="/"+e.pathname);if("http:"==e.protocol&&80==e.port||"https:"==e.protocol&&443==e.port)e.port="",e.host=e.hostname;e.origin=d.origin&&
"null"!=d.origin?d.origin:"data:"!=e.protocol&&e.host?e.protocol+"//"+e.host:e.href;var k=e,l=k;if(b)return l;r.put(a,l);return l};function v(a){a||(a={debug:!1,windowContext:window});this.w={};this.m={};this.H=a.debug;this.A=this.L=this.M=!1;this.B=this.F=this.G=this.j=this.D=null;this.h=a.windowContext||window}f=v.prototype;
f.listen=function(a){var b=this;return(new Promise(function(c,d){b.A?d(Error("Already connected.")):b.M?d(Error("Already listening for connections.")):Array.isArray(a)?(b.G=b.U.bind(b,a,c,d),b.h.addEventListener("message",b.G)):d(Error("allowedOrigins should be a string array of allowed origins to accept messages from. Got:",a))})).then(function(){b.send(v.Topics.CONNECT_HANDSHAKE,null);b.A=!0})};
f.U=function(a,b,c,d){var e=d.data,k=d,l=k.ports;a:{for(var k=u(k.origin).origin,t=0;t<a.length;t++)if(u(a[t]).origin===k){a=!0;break a}a=!1}a&&e&&e.topic===v.Topics.CONNECT_HANDSHAKE&&(this.h.removeEventListener("message",this.G),this.j=l[0],this.B=this.I.bind(this),this.j.addEventListener("message",this.B,!1),this.j.start(),b())};
f.connect=function(a,b){var c=this;return new Promise(function(d,e){a||e(Error("Provide a valid Window context to connect to."));b||e(Error("Provide an expected origin for the remote Window or provide the wildcard *."));c.A?e(Error("Already connected.")):c.L?e(Error("Already connecting.")):(c.D=new MessageChannel,c.j=c.D.port1,c.F=c.T.bind(c,c.j,b,d),c.j.addEventListener("message",c.F),c.j.start(),a.postMessage({topic:v.Topics.CONNECT_HANDSHAKE},"*"===b?"*":u(b).origin,[c.D.port2]))})};
f.T=function(a,b,c){this.A=!0;a.removeEventListener("message",this.F);this.B=this.I.bind(this);a.addEventListener("message",this.B,!1);c()};f.I=function(a){a=a.data;if(this.w[a.id]&&a.isReply){var b=this.w[a.id];delete this.w[a.id];var c=b.promiseResolver;b.message=a.data;c([a.data,this.J.bind(this,a.id,b.topic)])}else{var d=this.m[a.topic];if(d)for(var e=0;e<d.length;e++)(0,d[e])(a.data,this.J.bind(this,a.id,a.topic))}};f.on=function(a,b){this.m[a]?this.m[a].push(b):this.m[a]=[b]};
f.off=function(a,b){if(b){var c=this.m[a].indexOf(b);-1!==c&&this.m[a].splice(c,1)}else this.m[a]&&delete this.m[a]};f.J=function(a,b,c){var d=this,e={id:a,topic:b,data:c,isReply:!0};this.j.postMessage(e);return new Promise(function(a){d.w[e.id]={message:c,topic:b,promiseResolver:a}})};f.send=function(a,b){var c=this,d={id:crypto.getRandomValues(new Uint8Array(10)).join(""),topic:a,data:b};this.j.postMessage(d);return new Promise(function(e){c.w[d.id]={message:b,topic:a,promiseResolver:e}})};
g.Object.defineProperties(v,{Topics:{configurable:!0,enumerable:!0,get:function(){return{CONNECT_HANDSHAKE:"topic-connect-handshake",NOTIFICATION_PERMISSION_STATE:"topic-notification-permission-state",SERVICE_WORKER_STATE:"topic-service-worker-state",SERVICE_WORKER_REGISTRATION:"topic-service-worker-registration",SERVICE_WORKER_QUERY:"topic-service-worker-query",STORAGE_GET:"topic-storage-get"}}}});function w(a){this.H=a&&a.debug;this.h=a.windowContext||window;this.o=new v({debug:this.H,windowContext:this.h});this.C={}}function x(a,b){var c=!0,d=null;a({success:c,error:c?void 0:d,result:c?b:void 0})}f=w.prototype;f.N=function(a,b){if(a&&a.isQueryTopicSupported){var c=!1,d;for(d in v.Topics)a.isQueryTopicSupported===v.Topics[d]&&(c=!0);x(b,c)}else x(b,Notification.permission)};
f.S=function(a,b){var c=null;try{if(a&&a.key&&this.h.localStorage)c=this.h.localStorage.getItem(a.key);else{if(!n.user)throw Error("failed to call initLogConstructor");n.user.warn("amp-web-push","LocalStorage retrieval failed.")}}catch(d){}x(b,c)};
f.R=function(a,b){var c={isControllingFrame:!!this.h.navigator.serviceWorker.controller,url:this.h.navigator.serviceWorker.controller?this.h.navigator.serviceWorker.controller.scriptURL:null,state:this.h.navigator.serviceWorker.controller?this.h.navigator.serviceWorker.controller.state:null};x(b,c)};
f.P=function(a,b){if(!a||!a.workerUrl||!a.registrationOptions)throw Error("Expected arguments workerUrl and registrationOptions in message, got:",a);this.h.navigator.serviceWorker.register(a.workerUrl,a.registrationOptions).then(function(){x(b,null)}).catch(function(a){x(b,a?a.message||a.toString():null)})};f.messageServiceWorker=function(a){this.h.navigator.serviceWorker.controller.postMessage({command:a.topic,payload:a.payload})};
f.O=function(a,b){var c=this;if(!a||!a.topic)throw Error("Expected argument topic in message, got:",a);(new Promise(function(b){c.C[a.topic]=b;c.waitUntilWorkerControlsPage().then(function(){c.messageServiceWorker(a)})})).then(function(d){delete c.C[a.topic];return x(b,d)})};
function y(a){a=a.h.location.search;var b=Object.create(null);if(a)for(var c;c=m.exec(a);){var d=h(c[1],c[1]);c=c[2]?h(c[2],c[2]):"";b[d]=c}var e=b;if(!e.parentOrigin)throw Error("Expecting parentOrigin URL query parameter.");return e.parentOrigin}f.V=function(a){a=a.data;var b=a.command;a=a.payload;var c=this.C[b];"function"===typeof c&&c(a)};function z(a){return a.h.navigator.serviceWorker&&a.h.navigator.serviceWorker.controller&&"activated"===a.h.navigator.serviceWorker.controller.state}
f.waitUntilWorkerControlsPage=function(){var a=this;return new Promise(function(b){z(a)?b():a.h.navigator.serviceWorker.addEventListener("controllerchange",function(){z(a)?b():a.h.navigator.serviceWorker.controller.addEventListener("statechange",function(){z(a)&&b()})})})};
f.run=function(a){var b=this;this.o.on(v.Topics.NOTIFICATION_PERMISSION_STATE,this.N.bind(this));this.o.on(v.Topics.SERVICE_WORKER_STATE,this.R.bind(this));this.o.on(v.Topics.SERVICE_WORKER_REGISTRATION,this.P.bind(this));this.o.on(v.Topics.SERVICE_WORKER_QUERY,this.O.bind(this));this.o.on(v.Topics.STORAGE_GET,this.S.bind(this));this.waitUntilWorkerControlsPage().then(function(){b.h.navigator.serviceWorker.addEventListener("message",b.V.bind(b))});this.o.listen([a||y(this)])};
window._ampWebPushHelperFrame=new w({debug:!1});window._ampWebPushHelperFrame.run();})();
//# sourceMappingURL=amp-web-push-helper-frame.js.map
</script>
</head>
<body>
</body>
</html>