mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-08 04:27:37 +00:00
70 lines
2.1 KiB
JavaScript
70 lines
2.1 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/. */
|
|
|
|
"use strict";
|
|
|
|
this.EXPORTED_SYMBOLS = [
|
|
"UpdateProvider",
|
|
];
|
|
|
|
const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
|
|
|
|
Cu.import("resource://gre/modules/Metrics.jsm", this);
|
|
Cu.import("resource://gre/modules/Task.jsm", this);
|
|
|
|
const DAILY_COUNTER_FIELD = {type: Metrics.Storage.FIELD_DAILY_COUNTER};
|
|
const DAILY_DISCRETE_NUMERIC_FIELD = {type: Metrics.Storage.FIELD_DAILY_DISCRETE_NUMERIC};
|
|
|
|
function UpdateMeasurement1() {
|
|
Metrics.Measurement.call(this);
|
|
}
|
|
|
|
UpdateMeasurement1.prototype = Object.freeze({
|
|
__proto__: Metrics.Measurement.prototype,
|
|
|
|
name: "update",
|
|
version: 1,
|
|
|
|
fields: {
|
|
updateCheckStartCount: DAILY_COUNTER_FIELD,
|
|
updateCheckSuccessCount: DAILY_COUNTER_FIELD,
|
|
updateCheckFailedCount: DAILY_COUNTER_FIELD,
|
|
updateCheckFailedStatuses: DAILY_DISCRETE_NUMERIC_FIELD,
|
|
completeUpdateStartCount: DAILY_COUNTER_FIELD,
|
|
partialUpdateStartCount: DAILY_COUNTER_FIELD,
|
|
completeUpdateSuccessCount: DAILY_COUNTER_FIELD,
|
|
partialUpdateSuccessCount: DAILY_COUNTER_FIELD,
|
|
updateFailedCount: DAILY_COUNTER_FIELD,
|
|
updateFailedStatuses: DAILY_DISCRETE_NUMERIC_FIELD,
|
|
},
|
|
});
|
|
|
|
this.UpdateProvider = function () {
|
|
Metrics.Provider.call(this);
|
|
};
|
|
UpdateProvider.prototype = Object.freeze({
|
|
__proto__: Metrics.Provider.prototype,
|
|
|
|
name: "org.mozilla.update",
|
|
|
|
measurementTypes: [
|
|
UpdateMeasurement1,
|
|
],
|
|
|
|
recordUpdate: function (field, status) {
|
|
let m = this.getMeasurement(UpdateMeasurement1.prototype.name,
|
|
UpdateMeasurement1.prototype.version);
|
|
|
|
return this.enqueueStorageOperation(function recordUpdateFields() {
|
|
return Task.spawn(function recordUpdateFieldsTask() {
|
|
yield m.incrementDailyCounter(field + "Count");
|
|
|
|
if ((field == "updateFailed" || field == "updateCheckFailed") && status) {
|
|
yield m.addDailyDiscreteNumeric(field + "Statuses", status);
|
|
}
|
|
}.bind(this));
|
|
}.bind(this));
|
|
},
|
|
});
|