diff --git a/toolkit/components/telemetry/TelemetryPing.js b/toolkit/components/telemetry/TelemetryPing.js index 9f02658b725..2cd116b029a 100644 --- a/toolkit/components/telemetry/TelemetryPing.js +++ b/toolkit/components/telemetry/TelemetryPing.js @@ -676,10 +676,14 @@ TelemetryPing.prototype = { submissionPath: function submissionPath(ping) { let slug; - if (!ping || ping.reason == "test-ping") { + if (!ping) { slug = this._uuid; } else { - slug = ping.slug; + let info = ping.payload.info; + let pathComponents = [ping.slug, info.reason, info.appName, + info.appVersion, info.appUpdateChannel, + info.appBuildID]; + slug = pathComponents.join("/"); } return "/submit/telemetry/" + slug; }, diff --git a/toolkit/components/telemetry/tests/unit/test_TelemetryPing.js b/toolkit/components/telemetry/tests/unit/test_TelemetryPing.js index b98ea2a33b6..a3086dcfdc3 100644 --- a/toolkit/components/telemetry/tests/unit/test_TelemetryPing.js +++ b/toolkit/components/telemetry/tests/unit/test_TelemetryPing.js @@ -198,8 +198,11 @@ function checkPayloadInfo(payload, reason) { function checkPayload(request, reason, successfulPings) { let payload = decodeRequestPayload(request); + // Take off ["","submit","telemetry"]. + let pathComponents = request.path.split("/").slice(3); checkPayloadInfo(payload, reason); + do_check_eq(reason, pathComponents[1]); do_check_eq(request.getHeader("content-type"), "application/json; charset=UTF-8"); do_check_true(payload.simpleMeasurements.uptime >= 0); do_check_true(payload.simpleMeasurements.startupInterrupted === 1);