Skip to content
This repository was archived by the owner on Jul 22, 2024. It is now read-only.

Commit cc6f8a4

Browse files
authored
Merge pull request #187 from delapuente/issue-169-add-opt-out-ga
First telemetry API draft
2 parents 285ab2f + 4872a73 commit cc6f8a4

13 files changed

+156
-11
lines changed

Assets/WebGLTemplates/WebVR/index.html

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,14 @@
1010
<title>%UNITY_CUSTOM_NAME% | %UNITY_WEB_NAME%</title>
1111
<meta name="description" content="%UNITY_CUSTOM_DESCRIPTION%">
1212
<link rel="icon" href="favicon.ico">
13-
<link rel="stylesheet" type="text/css" href="webvr.css">
13+
<link rel="stylesheet" type="text/css" href="styles/webvr.css">
14+
<script src="lib/telemetry.js"></script>
15+
<script>
16+
MozillaResearch.telemetry.start({
17+
analytics: true,
18+
errorLogging: true
19+
});
20+
</script>
1421
<script src="%UNITY_WEBGL_LOADER_URL%"></script>
1522
<script>
1623
/* global UnityLoader */
@@ -76,8 +83,8 @@ <h3>You&rsquo;ll need a <a href="https://webvr.rocks/">WebVR-enabled browser</a>
7683
<button id="entervr" value="Enter VR"></button>
7784
</div>
7885

79-
<script src="gl-matrix-min.js"></script>
80-
<script src="webvr-polyfill.min.js"></script>
86+
<script src="vendor/gl-matrix-min.js"></script>
87+
<script src="vendor/webvr-polyfill.min.js"></script>
8188
<script src="webvr.js"></script>
8289
</body>
8390

Assets/WebGLTemplates/WebVR/lib.meta

Lines changed: 10 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
/* global localStorage, location, Raven */
2+
(function (window) {
3+
'use strict';
4+
5+
if (!('MozillaResearch' in window)) {
6+
window.MozillaResearch = {};
7+
}
8+
9+
if (!('telemetry' in window.MozillaResearch)) {
10+
window.MozillaResearch.telemetry = {};
11+
}
12+
13+
var navigator = window.navigator;
14+
var telemetry = window.MozillaResearch.telemetry;
15+
16+
telemetry.ga = {
17+
create: function (trackingId, cookieDomain, name, fieldsObject) {
18+
window.ga('create', trackingId, cookieDomain, name, fieldsObject);
19+
return function (command) {
20+
if (navigator.doNotTrack === '1') { return; }
21+
var args = Array.prototype.slice.call(arguments);
22+
if (name && command !== 'provide') {
23+
command = name + '.' + command;
24+
args[0] = command;
25+
}
26+
window.ga.apply(undefined, args);
27+
};
28+
}
29+
};
30+
31+
telemetry.start = function (config) {
32+
config = config || {};
33+
if (navigator.doNotTrack === '1') {
34+
return;
35+
}
36+
if (config.errorLogging) {
37+
startErrorLogging();
38+
}
39+
if (config.analytics) {
40+
startAnalytics();
41+
}
42+
};
43+
44+
setupAnalytics();
45+
46+
function setupAnalytics() {
47+
window.ga = window.ga || function () {
48+
(window.ga.q = (window.ga.q || [])).push(arguments)
49+
};
50+
window.ga.l = +(new Date());
51+
52+
if (navigator.doNotTrack === '1') {
53+
return;
54+
}
55+
injectScript('https://www.google-analytics.com/analytics.js', function (err) {
56+
if (err) {
57+
console.warn('Could not load Analytics.js script:', err);
58+
return;
59+
}
60+
});
61+
}
62+
63+
function startErrorLogging() {
64+
injectScript('https://cdn.ravenjs.com/3.22.3/console/raven.min.js', function (err) {
65+
if (err) {
66+
console.warn('Could not load Raven.js script:', err);
67+
return;
68+
}
69+
if (!('Raven' in window)) {
70+
console.warn('Could not find `window.Raven` global');
71+
return;
72+
}
73+
configureRaven();
74+
});
75+
76+
function configureRaven () {
77+
console.log('Raven.js script loaded');
78+
Raven.config('https://[email protected]/294878')
79+
.install();
80+
}
81+
};
82+
83+
function startAnalytics() {
84+
var CURRENT_VERSION = '1.0.1';
85+
var ga = telemetry.ga.create('UA-77033033-6', 'auto', 'mozillaResearch');
86+
ga('set', 'dimension1', CURRENT_VERSION);
87+
ga('send', 'pageview');
88+
}
89+
90+
function injectScript (src, callback) {
91+
var script = document.createElement('script');
92+
script.src = src;
93+
script.crossorigin = 'anonymous';
94+
script.addEventListener('load', function () {
95+
if (callback) {
96+
callback(null, true);
97+
}
98+
});
99+
script.addEventListener('error', function (err) {
100+
if (callback) {
101+
callback(err);
102+
}
103+
});
104+
document.head.appendChild(script);
105+
return script;
106+
}
107+
108+
})(window);

Assets/WebGLTemplates/WebVR/lib/telemetry.js.meta

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets/WebGLTemplates/WebVR/vendor.meta

Lines changed: 10 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets/WebGLTemplates/WebVR/gl-matrix-min.js.meta renamed to Assets/WebGLTemplates/WebVR/vendor/gl-matrix-min.js.meta

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets/WebGLTemplates/WebVR/webvr-polyfill.min.js.map.meta renamed to Assets/WebGLTemplates/WebVR/vendor/webvr-polyfill.min.js.map.meta

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets/WebGLTemplates/WebVR/webvr-polyfill.min.js.meta renamed to Assets/WebGLTemplates/WebVR/vendor/webvr-polyfill.min.js.meta

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets/WebGLTemplates/WebVR/webvr.css

100755100644
File mode changed.

Assets/WebGLTemplates/WebVR/webvr.css.meta

100755100644
Lines changed: 3 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)