Source code
Revision control
Copy as Markdown
Other Tools
Test Info: Warnings
- This test gets skipped with pattern: os == 'linux' && os_version == '18.04' && asan OR os == 'linux' && os_version == '18.04' && tsan OR win11_2009 && asan
- Manifest: browser/components/preferences/tests/browser.toml
/* Any copyright is dedicated to the Public Domain.
"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}'.`
);
}