Report UI Latency timings to Google Analytics Listen to `timing-report` CustomEvents sent from PolyGerrit on document and report latency times to Google Analytics. Also see https://gerrit-review.googlesource.com/83530 Change-Id: Id63778dcc562e2d85c33f9e9d11afc54a888afe1
diff --git a/background.js b/background.js index 72b681d..d936951 100644 --- a/background.js +++ b/background.js
@@ -18,7 +18,8 @@ (function() { var ga = document.createElement('script'); - ga.type = 'text/javascript'; ga.async = true; + ga.type = 'text/javascript'; + ga.async = true; ga.src = 'https://ssl.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); @@ -26,10 +27,13 @@ var RequestType = { NAV: 'nav', + TIMING: 'timing-report', }; -chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) { - if (request.type === RequestType.NAV) { +chrome.runtime.onMessage.addListener(function(request, detail, sendResponse) { + if (request.type === RequestType.TIMING) { + _gaq.push(['_trackTiming', detail.category, detail.name, detail.name]); + } else if (request.type === RequestType.NAV) { _gaq.push(['_trackPageview', request.url]); } }); @@ -141,7 +145,7 @@ chrome.storage.onChanged.addListener(function(changes, namespace) { if (namespace !== 'sync') { return; } - for (key in changes) { + for (var key in changes) { if (key === 'canary') { useCanary = changes[key].newValue; }
diff --git a/content.js b/content.js index 0ad4756..d96f0ae 100644 --- a/content.js +++ b/content.js
@@ -20,5 +20,8 @@ if (isPolyGerrit) { // TODO(andybons): Track actions and integrate with the Gerrit JS API. // PageJS isn't in scope and is a pain to latch on to for navigation events. + document.addEventListener('timing-report', function(e) { + chrome.runtime.sendMessage({type: 'timing-report', detail: e.detail}); + }); } })();
diff --git a/manifest.json b/manifest.json index d2565a8..9fca4ae 100644 --- a/manifest.json +++ b/manifest.json
@@ -2,7 +2,7 @@ "manifest_version": 2, "name": "Gerrit UI Switcher", "description": "Easily switch between the current Gerrit UI and the new PolyGerrit UI", - "version": "0.5.0", + "version": "0.5.1", "background": { "scripts": [ "background.js"