85 lines
2.5 KiB
JavaScript
85 lines
2.5 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
https://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
"use strict";
|
|
|
|
const PROXY_TYPE = "network.proxy.type";
|
|
const proxyService = Ci.nsIProtocolProxyService;
|
|
// The integer pref value for proxy type gets saved to telemetry
|
|
// as a string for better readabillity according to the following map
|
|
const PROXY_TYPES_MAP_REVERSE = new Map([
|
|
[proxyService.PROXYCONFIG_DIRECT, "DIRECT"],
|
|
[proxyService.PROXYCONFIG_MANUAL, "MANUAL"],
|
|
[proxyService.PROXYCONFIG_PAC, "PAC"],
|
|
[proxyService.PROXYCONFIG_WPAD, "WPAD"],
|
|
[proxyService.PROXYCONFIG_SYSTEM, "SYSTEM"],
|
|
]);
|
|
|
|
add_task(async function testProxyTelemetry() {
|
|
// Open settings dialog
|
|
await openPreferencesViaOpenPreferencesAPI("general", { leaveOpen: true });
|
|
const connectionURL =
|
|
"chrome://browser/content/preferences/dialogs/connection.xhtml";
|
|
let dialog = await openAndLoadSubDialog(connectionURL);
|
|
let dialogElement = dialog.document.getElementById("ConnectionsDialog");
|
|
|
|
// Revert the proxy type to what it was before the test was run
|
|
let oldNetworkProxyType = Services.prefs.getIntPref(PROXY_TYPE);
|
|
registerCleanupFunction(function () {
|
|
Services.prefs.setIntPref(PROXY_TYPE, oldNetworkProxyType);
|
|
});
|
|
|
|
let proxyType = dialog.Preferences.get(PROXY_TYPE);
|
|
|
|
setPrefAndCheck(
|
|
dialogElement,
|
|
proxyType,
|
|
proxyService.PROXYCONFIG_DIRECT,
|
|
PROXY_TYPES_MAP_REVERSE.get(proxyService.PROXYCONFIG_DIRECT)
|
|
);
|
|
setPrefAndCheck(
|
|
dialogElement,
|
|
proxyType,
|
|
proxyService.PROXYCONFIG_MANUAL,
|
|
PROXY_TYPES_MAP_REVERSE.get(proxyService.PROXYCONFIG_MANUAL)
|
|
);
|
|
setPrefAndCheck(
|
|
dialogElement,
|
|
proxyType,
|
|
proxyService.PROXYCONFIG_PAC,
|
|
PROXY_TYPES_MAP_REVERSE.get(proxyService.PROXYCONFIG_PAC)
|
|
);
|
|
setPrefAndCheck(
|
|
dialogElement,
|
|
proxyType,
|
|
proxyService.PROXYCONFIG_WPAD,
|
|
PROXY_TYPES_MAP_REVERSE.get(proxyService.PROXYCONFIG_WPAD)
|
|
);
|
|
setPrefAndCheck(
|
|
dialogElement,
|
|
proxyType,
|
|
proxyService.PROXYCONFIG_SYSTEM,
|
|
PROXY_TYPES_MAP_REVERSE.get(proxyService.PROXYCONFIG_SYSTEM)
|
|
);
|
|
setPrefAndCheck(dialogElement, proxyType, 42, "OTHER");
|
|
|
|
gBrowser.removeCurrentTab();
|
|
});
|
|
|
|
function setPrefAndCheck(
|
|
dialogElement,
|
|
proxyType,
|
|
proxyTypePref,
|
|
proxyTypePrefStr
|
|
) {
|
|
Services.fog.testResetFOG();
|
|
|
|
proxyType.value = proxyTypePref;
|
|
dialogElement.acceptDialog();
|
|
let events = Glean.networkProxySettings.proxyTypePreference.testGetValue();
|
|
is(
|
|
events[0].extra.value,
|
|
proxyTypePrefStr,
|
|
`Extra field for '${proxyTypePref}' should be '${proxyTypePrefStr}'.`
|
|
);
|
|
}
|