gecko/toolkit/mozapps/extensions/test/browser/browser_bug623950.js

69 lines
2.0 KiB
JavaScript

/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*/
// Tests that the metadata request includes startup time measurements
Components.utils.import("resource://gre/modules/AddonRepository.jsm");
var gManagerWindow;
var gProvider;
function parseParams(aQuery) {
let params = {};
aQuery.split("&").forEach(function(aParam) {
let [key, value] = aParam.split("=");
params[key] = value;
});
return params;
}
function test() {
waitForExplicitFinish();
var gSeenRequest = false;
gProvider = new MockProvider();
gProvider.createAddons([{
id: "test1@tests.mozilla.org",
name: "Test add-on"
}]);
function observe(aSubject, aTopic, aData) {
aSubject.QueryInterface(Ci.nsIChannel);
let url = aSubject.URI.QueryInterface(Ci.nsIURL);
if (url.filePath != "/extensions-dummy/metadata")
return;
info(url.query);
let params = parseParams(url.query);
is(params.appOS, Services.appinfo.OS, "OS should be correct");
is(params.appVersion, Services.appinfo.version, "Version should be correct");
ok(params.tMain >= 0, "Should be a sensible tMain");
ok(params.tFirstPaint >= 0, "Should be a sensible tFirstPaint");
ok(params.tSessionRestored >= 0, "Should be a sensible tSessionRestored");
gSeenRequest = true;
}
// Watch HTTP requests
Services.obs.addObserver(observe, "http-on-modify-request", false);
Services.prefs.setCharPref("extensions.getAddons.get.url",
"http://127.0.0.1:8888/extensions-dummy/metadata?appOS=%OS%&appVersion=%VERSION%&tMain=%TIME_MAIN%&tFirstPaint=%TIME_FIRST_PAINT%&tSessionRestored=%TIME_SESSION_RESTORED%");
registerCleanupFunction(function() {
Services.obs.removeObserver(observe, "http-on-modify-request");
Services.prefs.clearUserPref("extensions.getAddons.get.url");
});
AddonRepository.getAddonsByIDs(["test1@tests.mozilla.org"], {
searchFailed: function() {
ok(gSeenRequest, "Should have seen metadata request");
finish();
}
});
}