Backed out changeset 27db7bf978be (bug 1417473) Backed out changeset a365a5a59ad1 (bug 1417473) Backed out changeset 443747e39abe (bug 1417473)
86 lines
2.6 KiB
JavaScript
86 lines
2.6 KiB
JavaScript
/* 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/. */
|
|
|
|
if (typeof Mozilla == "undefined") {
|
|
var Mozilla = {};
|
|
}
|
|
|
|
(function($) {
|
|
"use strict";
|
|
|
|
var _canUpload = false;
|
|
|
|
if (typeof Mozilla.ContentTelemetry == "undefined") {
|
|
/**
|
|
* Library that exposes an event-based Web API for communicating with the
|
|
* desktop browser chrome. It can be used for recording Telemetry data from
|
|
* authorized web content pages.
|
|
*
|
|
* <p>For security/privacy reasons `Mozilla.ContentTelemetry` will only work
|
|
* on a list of allowed secure origins. The list of allowed origins can be
|
|
* found in
|
|
* {@link https://dxr.mozilla.org/mozilla-central/source/browser/app/permissions|
|
|
* browser/app/permissions}.</p>
|
|
*
|
|
* @since 59
|
|
* @namespace
|
|
*/
|
|
Mozilla.ContentTelemetry = {};
|
|
}
|
|
|
|
function _sendMessageToChrome(name, data) {
|
|
var event = new CustomEvent("mozTelemetry", {
|
|
bubbles: true,
|
|
detail: {
|
|
name,
|
|
data: data || {}
|
|
}
|
|
});
|
|
|
|
document.dispatchEvent(event);
|
|
}
|
|
|
|
/**
|
|
* This internal function is used to register the policy handler. This is
|
|
* needed by pages that do not want to use Telemetry but still need to
|
|
* respect user Privacy choices.
|
|
*/
|
|
function _registerInternalPolicyHandler() {
|
|
// Register the handler that will update the policy boolean.
|
|
function policyChangeHandler(updatedPref) {
|
|
if (!("detail" in updatedPref) ||
|
|
!("canUpload" in updatedPref.detail) ||
|
|
typeof updatedPref.detail.canUpload != "boolean") {
|
|
return;
|
|
}
|
|
_canUpload = updatedPref.detail.canUpload;
|
|
}
|
|
document.addEventListener("mozTelemetryPolicyChange", policyChangeHandler);
|
|
|
|
// Make sure the chrome is initialized.
|
|
_sendMessageToChrome("init");
|
|
}
|
|
|
|
Mozilla.ContentTelemetry.canUpload = function() {
|
|
return _canUpload;
|
|
};
|
|
|
|
Mozilla.ContentTelemetry.registerEvents = function(category, eventData) {
|
|
_sendMessageToChrome("registerEvents", { category, eventData });
|
|
};
|
|
|
|
Mozilla.ContentTelemetry.recordEvent = function(category, method, object, value, extra) {
|
|
_sendMessageToChrome("recordEvent", { category, method, object, value, extra });
|
|
};
|
|
|
|
// Register the policy handler so that |canUpload| is always up to date.
|
|
_registerInternalPolicyHandler();
|
|
})();
|
|
|
|
// Make this library Require-able.
|
|
/* eslint-env commonjs */
|
|
if (typeof module !== "undefined" && module.exports) {
|
|
module.exports = Mozilla.ContentTelemetry;
|
|
}
|