From b93ae1f5b35be6e1745975461d5425cac0c07d10 Mon Sep 17 00:00:00 2001 From: Thomas Steur Date: Fri, 31 Jul 2020 16:07:07 +1200 Subject: Remove no longer needed/used heartbeat code (#16253) * Remove no longer needed/used heartbeat code Noticed `heartBeatUp` was actually no longer called since we refactored the heartbeat timer so this code should be possible to be removed * rebuilt piwik.js * Update startOverlaySession.twig --- js/piwik.js | 55 ------------------------------------------- js/piwik.min.js | 72 ++++++++++++++++++++++++++++----------------------------- 2 files changed, 36 insertions(+), 91 deletions(-) (limited to 'js') diff --git a/js/piwik.js b/js/piwik.js index e6db6e4848..309302a7a7 100644 --- a/js/piwik.js +++ b/js/piwik.js @@ -2340,9 +2340,6 @@ if (typeof window.Matomo !== 'object') { // Timestamp of last tracker request sent to Matomo lastTrackerRequestTime = null, - // Handle to the current heart beat timeout - heartBeatTimeout, - // Internal state of the pseudo click handler lastButton, lastTarget, @@ -2804,56 +2801,6 @@ if (typeof window.Matomo !== 'object') { } } - /* - * Sets up the heart beat timeout. - */ - function heartBeatUp(delay) { - if (heartBeatTimeout - || !configHeartBeatDelay - || !configHasConsent - ) { - return; - } - - heartBeatTimeout = setTimeout(function heartBeat() { - heartBeatTimeout = null; - - if (!hadWindowFocusAtLeastOnce) { - // if browser does not support .hasFocus (eg IE5), we assume that the window has focus. - hadWindowFocusAtLeastOnce = (!documentAlias.hasFocus || documentAlias.hasFocus()); - } - - if (!hadWindowFocusAtLeastOnce) { - // only send a ping if the tab actually had focus at least once. For example do not send a ping - // if window was opened via "right click => open in new window" and never had focus see #9504 - heartBeatUp(configHeartBeatDelay); - return; - } - - if (heartBeatPingIfActivityAlias()) { - return; - } - - var now = new Date(), - heartBeatDelay = configHeartBeatDelay - (now.getTime() - lastTrackerRequestTime); - // sanity check - heartBeatDelay = Math.min(configHeartBeatDelay, heartBeatDelay); - heartBeatUp(heartBeatDelay); - }, delay || configHeartBeatDelay); - } - - /* - * Removes the heart beat timeout. - */ - function heartBeatDown() { - if (!heartBeatTimeout) { - return; - } - - clearTimeout(heartBeatTimeout); - heartBeatTimeout = null; - } - function heartBeatOnFocus() { hadWindowFocusAtLeastOnce = true; timeWindowLastFocused = new Date().getTime(); @@ -2871,7 +2818,6 @@ if (typeof window.Matomo !== 'object') { if (hadWindowMinimalFocusToConsiderViewed()) { heartBeatPingIfActivityAlias(); } - heartBeatDown(); } /* @@ -6075,7 +6021,6 @@ if (typeof window.Matomo !== 'object') { * Disable heartbeat if it was previously activated. */ this.disableHeartBeatTimer = function () { - heartBeatDown(); if (configHeartBeatDelay || heartBeatSetUp) { if (windowAlias.removeEventListener) { diff --git a/js/piwik.min.js b/js/piwik.min.js index 0875c5db97..cbedf92418 100644 --- a/js/piwik.min.js +++ b/js/piwik.min.js @@ -29,42 +29,42 @@ ao=ae.findFirstNodeHavingAttribute(ap,this.CONTENT_PIECE_ATTR);if(!ao){ao=ae.fin },buildContentBlock:function(aq){if(!aq){return}var ao=this.findContentName(aq);var ap=this.findContentPiece(aq);var ar=this.findContentTarget(aq);ao=this.trim(ao);ap=this.trim(ap);ar=this.trim(ar);return{name:ao||"Unknown",piece:ap||"Unknown",target:ar||""}},collectContent:function(ar){if(!ar||!ar.length){return[]}var aq=[];var ao,ap;for(ao=0;ao=0){dn=dn.slice(0,dm)}dm=dn.lastIndexOf("/");if(dm!==dn.length-1){dn=dn.slice(0,dm+1)}return dn+dl}function cJ(dn,dl){var dm;dn=String(dn).toLowerCase();dl=String(dl).toLowerCase();if(dn===dl){return true}if(dl.slice(0,1)==="."){if(dn===dl.slice(1)){return true}dm=dn.length-dl.length;if((dm>0)&&(dn.slice(dm)===dl)){return true}}return false}function cm(dl){var dm=document.createElement("a"); -if(dl.indexOf("//")!==0&&dl.indexOf("http")!==0){if(dl.indexOf("*")===0){dl=dl.substr(1)}if(dl.indexOf(".")===0){dl=dl.substr(1)}dl="http://"+dl}dm.href=v.toAbsoluteUrl(dl);if(dm.pathname){return dm.pathname}return""}function a3(dm,dl){if(!aj(dl,"/")){dl="/"+dl}if(!aj(dm,"/")){dm="/"+dm}var dn=(dl==="/"||dl==="/*");if(dn){return true}if(dm===dl){return true}dl=String(dl).toLowerCase();dm=String(dm).toLowerCase();if(Q(dl,"*")){dl=dl.slice(0,-1);dn=(!dl||dl==="/");if(dn){return true}if(dm===dl){return true}return dm.indexOf(dl)===0}if(!Q(dm,"/")){dm+="/"}if(!Q(dl,"/")){dl+="/"}return dm.indexOf(dl)===0}function ar(dq,ds){var dm,dl,dn,dp,dr;for(dm=0;dm0)&&(dp.slice(dn)===dl)){return true}}}return false}function cq(dl,dn){dl=dl.replace("send_image=0","send_image=1"); -var dm=new Image(1,1);dm.onload=function(){E=0;if(typeof dn==="function"){dn({request:dl,trackerUrl:aE,success:true})}};dm.onerror=function(){if(typeof dn==="function"){dn({request:dl,trackerUrl:aE,success:false})}};dm.src=aE+(aE.indexOf("?")<0?"?":"&")+dl}function cG(dl){if(dc==="POST"){return true}return dl&&(dl.length>2000||dl.indexOf('{"requests"')===0)}function aK(){return"object"===typeof g&&"function"===typeof g.sendBeacon&&"function"===typeof Blob}function a6(dq,dt,ds){var dn=aK();if(!dn){return false}var dp={type:"application/x-www-form-urlencoded; charset=UTF-8"};var du=false;var dm=aE;try{var dl=new Blob([dq],dp);if(ds&&!cG(dq)){dl=new Blob([],dp);dm=dm+(dm.indexOf("?")<0?"?":"&")+dq}du=g.sendBeacon(dm,dl)}catch(dr){return false}if(du&&typeof dt==="function"){dt({request:dq,trackerUrl:aE,success:true,isSendBeacon:true})}return du}function c6(dm,dn,dl){if(!J(dl)||null===dl){dl=true}if(l&&a6(dm,dn,dl)){return}setTimeout(function(){if(l&&a6(dm,dn,dl)){return}var dr;try{var dq=S.XMLHttpRequest?new S.XMLHttpRequest():S.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):null; -dq.open("POST",aE,true);dq.onreadystatechange=function(){if(this.readyState===4&&!(this.status>=200&&this.status<300)){var ds=l&&a6(dm,dn,dl);if(!ds&&dl){cq(dm,dn)}else{if(typeof dn==="function"){dn({request:dm,trackerUrl:aE,success:false,xhr:this})}}}else{if(this.readyState===4&&(typeof dn==="function")){dn({request:dm,trackerUrl:aE,success:true,xhr:this})}}};dq.setRequestHeader("Content-Type",cy);dq.withCredentials=true;dq.send(dm)}catch(dp){dr=l&&a6(dm,dn,dl);if(!dr&&dl){cq(dm,dn)}else{if(typeof dn==="function"){dn({request:dm,trackerUrl:aE,success:false})}}}},50)}function ch(dm){var dl=new Date();var dn=dl.getTime()+dm;if(!q||dn>q){q=dn}}function co(dl){if(cd||!a5||!bC){return}cd=setTimeout(function dm(){cd=null;if(!bc){bc=(!G.hasFocus||G.hasFocus())}if(!bc){co(a5);return}if(bS()){return}var dn=new Date(),dp=a5-(dn.getTime()-c0);dp=Math.min(a5,dp);co(dp)},dl||a5)}function bL(){if(!cd){return}clearTimeout(cd);cd=null}function ba(){bc=true;cz=new Date().getTime()}function df(){var dl=new Date().getTime(); -return !cz||(dl-cz)>a5}function az(){if(df()){bS()}bL()}function di(){if(aN||!a5){return}aN=true;an(S,"focus",ba);an(S,"blur",az);ab++;t.addPlugin("HeartBeat"+ab,{unload:function(){if(aN&&df()){bS()}}})}function cE(dq){var dm=new Date();var dl=dm.getTime();c0=dl;if(cD&&dl=dl.length){return[dl]}var dm=0;var dn=dl.length;var dp=[];for(dm;dm=dm&&dl<=(dm+aZ)){return true}}return false}function dj(dl){if(!cP){return"" -}var dq=e(dl,av);if(!dq){return""}dq=String(dq);var dn=new RegExp("^[a-zA-Z0-9]+$");if(dq.length===32&&dn.test(dq)){var dm=dq.substr(16,32);if(c4(dm)){var dp=dq.substr(0,16);return dp}}return""}function cQ(){if(!bP){bP=dj(bO)}var dn=new Date(),dl=Math.round(dn.getTime()/1000),dm=aT("id"),dr=aD(dm),dq,dp;if(dr){dq=dr.split(".");dq.unshift("0");if(bP.length){dq[1]=bP}return dq}if(bP.length){dp=bP}else{if("0"===b6()){dp=""}else{dp=cT()}}dq=["1",dp,dl];return dq}function aY(){var dp=cQ(),dm=dp[0],dn=dp[1],dl=dp[2];return{newVisitor:dm,uuid:dn,createTs:dl}}function aH(){var dp=new Date(),dm=dp.getTime(),dq=aY().createTs;var dl=parseInt(dq,10);var dn=(dl*1000)+cM-dm;return dn}function aM(dl){if(!b7){return}var dn=new Date(),dm=Math.round(dn.getTime()/1000);if(!J(dl)){dl=aY()}var dp=dl.uuid+"."+dl.createTs+".";dg(aT("id"),dp,aH(),bq,cZ,bT)}function bN(){var dl=aD(aT("ref"));if(dl.length){try{dl=S.JSON.parse(dl);if(V(dl)){return dl}}catch(dm){}}return["","",0,""]}function bx(dm){var dl="testvalue"; -dg("test",dl,10000,null,dm);if(aD("test")===dl){b0("test",null,dm);return true}return false}function aF(){var dm=bm;bm=false;var dl,dn;for(dl=0;dl0){dq=parseInt(dq,10);dt(dq)}})}var bD={enabled:true,requests:[],timeout:null,interval:2500,sendRequests:function(){var dl=this.requests;this.requests=[];if(dl.length===1){bG(dl[0],bK)}else{dh(dl,bK)}},canQueue:function(){return !l&&this.enabled},pushMultiple:function(dm){if(!this.canQueue()){dh(dm,bK);return}var dl;for(dl=0;dl0){if(!J(dm)){dm=""}if(!w(dm)){dm=String(dm)}bn[dl]=dm}};this.getCustomDimension=function(dl){dl=parseInt(dl,10);if(dl>0&&Object.prototype.hasOwnProperty.call(bn,dl)){return bn[dl]}};this.deleteCustomDimension=function(dl){dl=parseInt(dl,10); -if(dl>0){delete bn[dl]}};this.setCustomVariable=function(dm,dl,dq,dn){var dp;if(!J(dn)){dn="visit"}if(!J(dl)){return}if(!J(dq)){dq=""}if(dm>0){dl=!w(dl)?String(dl):dl;dq=!w(dq)?String(dq):dq;dp=[dl.slice(0,bu),dq.slice(0,bu)];if(dn==="visit"||dn===2){cH();aQ[dm]=dp}else{if(dn==="page"||dn===3){bX[dm]=dp}else{if(dn==="event"){cn[dm]=dp}}}}};this.getCustomVariable=function(dm,dn){var dl;if(!J(dn)){dn="visit"}if(dn==="page"||dn===3){dl=bX[dm]}else{if(dn==="event"){dl=cn[dm]}else{if(dn==="visit"||dn===2){cH();dl=aQ[dm]}}}if(!J(dl)||(dl&&dl[0]==="")){return false}return dl};this.deleteCustomVariable=function(dl,dm){if(this.getCustomVariable(dl,dm)){this.setCustomVariable(dl,"","",dm)}};this.deleteCustomVariables=function(dl){if(dl==="page"||dl===3){bX={}}else{if(dl==="event"){cn={}}else{if(dl==="visit"||dl===2){aQ={}}}}};this.storeCustomVariablesInCookie=function(){bR=true};this.setLinkTrackingTimer=function(dl){bK=dl};this.getLinkTrackingTimer=function(){return bK};this.setDownloadExtensions=function(dl){if(w(dl)){dl=dl.split("|") -}c8=dl};this.addDownloadExtensions=function(dm){var dl;if(w(dm)){dm=dm.split("|")}for(dl=0;dl1&&ap!=="addTracker"){ak("The method "+ap+' is registered more than once in "_paq" variable. Only the last call has an effect. Please have a look at the multiple Matomo trackers documentation: https://developer.matomo.org/guides/tracking-javascript-guide#multiple-piwik-trackers')}av[ap]++}}}}return au}var C=["addTracker","forgetCookieConsentGiven","requireCookieConsent","disableCookies","setTrackerUrl","setAPIUrl","enableCrossDomainLinking","setCrossDomainLinkingTimeout","setSessionCookieTimeout","setVisitorCookieTimeout","setCookieNamePrefix","setSecureCookie","setCookiePath","setCookieDomain","setDomains","setUserId","setVisitorId","setSiteId","alwaysUseSendBeacon","enableLinkTracking","setCookieConsentGiven","requireConsent","setConsentGiven"]; -function ad(aq,ap){var ao=new P(aq,ap);I.push(ao);_paq=c(_paq,C);for(E=0;E<_paq.length;E++){if(_paq[E]){af(_paq[E])}}_paq=new H();t.trigger("TrackerAdded",[ao]);return ao}an(S,"beforeunload",ai,false);an(S,"message",function(au){if(!au||!au.origin){return}var aw,ar,ap;var ax=d(au.origin);var at=t.getAsyncTrackers();for(ar=0;ar=0){dk=dk.slice(0,dj)}dj=dk.lastIndexOf("/");if(dj!==dk.length-1){dk=dk.slice(0,dj+1)}return dk+di}function cG(dk,di){var dj;dk=String(dk).toLowerCase();di=String(di).toLowerCase();if(dk===di){return true}if(di.slice(0,1)==="."){if(dk===di.slice(1)){return true}dj=dk.length-di.length;if((dj>0)&&(dk.slice(dj)===di)){return true}}return false}function ck(di){var dj=document.createElement("a"); +if(di.indexOf("//")!==0&&di.indexOf("http")!==0){if(di.indexOf("*")===0){di=di.substr(1)}if(di.indexOf(".")===0){di=di.substr(1)}di="http://"+di}dj.href=v.toAbsoluteUrl(di);if(dj.pathname){return dj.pathname}return""}function a3(dj,di){if(!aj(di,"/")){di="/"+di}if(!aj(dj,"/")){dj="/"+dj}var dk=(di==="/"||di==="/*");if(dk){return true}if(dj===di){return true}di=String(di).toLowerCase();dj=String(dj).toLowerCase();if(Q(di,"*")){di=di.slice(0,-1);dk=(!di||di==="/");if(dk){return true}if(dj===di){return true}return dj.indexOf(di)===0}if(!Q(dj,"/")){dj+="/"}if(!Q(di,"/")){di+="/"}return dj.indexOf(di)===0}function ar(dm,dp){var dj,di,dk,dl,dn;for(dj=0;dj0)&&(dl.slice(dk)===di)){return true}}}return false}function cn(di,dk){di=di.replace("send_image=0","send_image=1"); +var dj=new Image(1,1);dj.onload=function(){E=0;if(typeof dk==="function"){dk({request:di,trackerUrl:aE,success:true})}};dj.onerror=function(){if(typeof dk==="function"){dk({request:di,trackerUrl:aE,success:false})}};dj.src=aE+(aE.indexOf("?")<0?"?":"&")+di}function cD(di){if(c9==="POST"){return true}return di&&(di.length>2000||di.indexOf('{"requests"')===0)}function aK(){return"object"===typeof g&&"function"===typeof g.sendBeacon&&"function"===typeof Blob}function a6(dm,dq,dp){var dk=aK();if(!dk){return false}var dl={type:"application/x-www-form-urlencoded; charset=UTF-8"};var dr=false;var dj=aE;try{var di=new Blob([dm],dl);if(dp&&!cD(dm)){di=new Blob([],dl);dj=dj+(dj.indexOf("?")<0?"?":"&")+dm}dr=g.sendBeacon(dj,di)}catch(dn){return false}if(dr&&typeof dq==="function"){dq({request:dm,trackerUrl:aE,success:true,isSendBeacon:true})}return dr}function c3(dj,dk,di){if(!J(di)||null===di){di=true}if(l&&a6(dj,dk,di)){return}setTimeout(function(){if(l&&a6(dj,dk,di)){return}var dn;try{var dm=S.XMLHttpRequest?new S.XMLHttpRequest():S.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):null; +dm.open("POST",aE,true);dm.onreadystatechange=function(){if(this.readyState===4&&!(this.status>=200&&this.status<300)){var dp=l&&a6(dj,dk,di);if(!dp&&di){cn(dj,dk)}else{if(typeof dk==="function"){dk({request:dj,trackerUrl:aE,success:false,xhr:this})}}}else{if(this.readyState===4&&(typeof dk==="function")){dk({request:dj,trackerUrl:aE,success:true,xhr:this})}}};dm.setRequestHeader("Content-Type",cv);dm.withCredentials=true;dm.send(dj)}catch(dl){dn=l&&a6(dj,dk,di);if(!dn&&di){cn(dj,dk)}else{if(typeof dk==="function"){dk({request:dj,trackerUrl:aE,success:false})}}}},50)}function cf(dj){var di=new Date();var dk=di.getTime()+dj;if(!q||dk>q){q=dk}}function ba(){bc=true;cw=new Date().getTime()}function dc(){var di=new Date().getTime();return !cw||(di-cw)>a5}function az(){if(dc()){bR()}}function df(){if(aN||!a5){return}aN=true;an(S,"focus",ba);an(S,"blur",az);ab++;t.addPlugin("HeartBeat"+ab,{unload:function(){if(aN&&dc()){bR()}}})}function cB(dm){var dj=new Date();var di=dj.getTime();cX=di;if(cA&&di=di.length){return[di]}var dj=0;var dk=di.length;var dl=[];for(dj;dj=dj&&di<=(dj+aZ)){return true}}return false}function dg(di){if(!cM){return""}var dm=e(di,av);if(!dm){return""}dm=String(dm);var dk=new RegExp("^[a-zA-Z0-9]+$");if(dm.length===32&&dk.test(dm)){var dj=dm.substr(16,32);if(c1(dj)){var dl=dm.substr(0,16);return dl}}return""}function cN(){if(!bO){bO=dg(bN)}var dk=new Date(),di=Math.round(dk.getTime()/1000),dj=aT("id"),dn=aD(dj),dm,dl; +if(dn){dm=dn.split(".");dm.unshift("0");if(bO.length){dm[1]=bO}return dm}if(bO.length){dl=bO}else{if("0"===b5()){dl=""}else{dl=cQ()}}dm=["1",dl,di];return dm}function aY(){var dl=cN(),dj=dl[0],dk=dl[1],di=dl[2];return{newVisitor:dj,uuid:dk,createTs:di}}function aH(){var dl=new Date(),dj=dl.getTime(),dm=aY().createTs;var di=parseInt(dm,10);var dk=(di*1000)+cJ-dj;return dk}function aM(di){if(!b6){return}var dk=new Date(),dj=Math.round(dk.getTime()/1000);if(!J(di)){di=aY()}var dl=di.uuid+"."+di.createTs+".";dd(aT("id"),dl,aH(),bq,cW,bS)}function bM(){var di=aD(aT("ref"));if(di.length){try{di=S.JSON.parse(di);if(V(di)){return di}}catch(dj){}}return["","",0,""]}function bx(dj){var di="testvalue";dd("test",di,10000,null,dj);if(aD("test")===di){bY("test",null,dj);return true}return false}function aF(){var dj=bm;bm=false;var di,dk;for(di=0;di0){dm=parseInt(dm,10);dq(dm)}})}var bD={enabled:true,requests:[],timeout:null,interval:2500,sendRequests:function(){var di=this.requests;this.requests=[];if(di.length===1){bG(di[0],bK)}else{de(di,bK)}},canQueue:function(){return !l&&this.enabled},pushMultiple:function(dj){if(!this.canQueue()){de(dj,bK);return}var di;for(di=0;di0){if(!J(dj)){dj=""}if(!w(dj)){dj=String(dj)}bn[di]=dj}};this.getCustomDimension=function(di){di=parseInt(di,10);if(di>0&&Object.prototype.hasOwnProperty.call(bn,di)){return bn[di]}};this.deleteCustomDimension=function(di){di=parseInt(di,10);if(di>0){delete bn[di]}};this.setCustomVariable=function(dj,di,dm,dk){var dl;if(!J(dk)){dk="visit"}if(!J(di)){return}if(!J(dm)){dm=""}if(dj>0){di=!w(di)?String(di):di;dm=!w(dm)?String(dm):dm;dl=[di.slice(0,bu),dm.slice(0,bu)];if(dk==="visit"||dk===2){cE();aQ[dj]=dl}else{if(dk==="page"||dk===3){bW[dj]=dl}else{if(dk==="event"){cl[dj]=dl}}}}};this.getCustomVariable=function(dj,dk){var di;if(!J(dk)){dk="visit"}if(dk==="page"||dk===3){di=bW[dj] +}else{if(dk==="event"){di=cl[dj]}else{if(dk==="visit"||dk===2){cE();di=aQ[dj]}}}if(!J(di)||(di&&di[0]==="")){return false}return di};this.deleteCustomVariable=function(di,dj){if(this.getCustomVariable(di,dj)){this.setCustomVariable(di,"","",dj)}};this.deleteCustomVariables=function(di){if(di==="page"||di===3){bW={}}else{if(di==="event"){cl={}}else{if(di==="visit"||di===2){aQ={}}}}};this.storeCustomVariablesInCookie=function(){bQ=true};this.setLinkTrackingTimer=function(di){bK=di};this.getLinkTrackingTimer=function(){return bK};this.setDownloadExtensions=function(di){if(w(di)){di=di.split("|")}c5=di};this.addDownloadExtensions=function(dj){var di;if(w(dj)){dj=dj.split("|")}for(di=0;di1&&ap!=="addTracker"){ak("The method "+ap+' is registered more than once in "_paq" variable. Only the last call has an effect. Please have a look at the multiple Matomo trackers documentation: https://developer.matomo.org/guides/tracking-javascript-guide#multiple-piwik-trackers')}av[ap]++}}}}return au}var C=["addTracker","forgetCookieConsentGiven","requireCookieConsent","disableCookies","setTrackerUrl","setAPIUrl","enableCrossDomainLinking","setCrossDomainLinkingTimeout","setSessionCookieTimeout","setVisitorCookieTimeout","setCookieNamePrefix","setSecureCookie","setCookiePath","setCookieDomain","setDomains","setUserId","setVisitorId","setSiteId","alwaysUseSendBeacon","enableLinkTracking","setCookieConsentGiven","requireConsent","setConsentGiven"];function ad(aq,ap){var ao=new P(aq,ap);I.push(ao); +_paq=c(_paq,C);for(E=0;E<_paq.length;E++){if(_paq[E]){af(_paq[E])}}_paq=new H();t.trigger("TrackerAdded",[ao]);return ao}an(S,"beforeunload",ai,false);an(S,"message",function(au){if(!au||!au.origin){return}var aw,ar,ap;var ax=d(au.origin);var at=t.getAsyncTrackers();for(ar=0;ar