mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-11-10 05:08:36 +02:00
83 lines
2.7 KiB
JavaScript
83 lines
2.7 KiB
JavaScript
/**
|
|
* Media control check box should change the media control pref, vice versa.
|
|
*/
|
|
const MEDIA_CONTROL_PREF = "media.hardwaremediakeys.enabled";
|
|
|
|
add_task(async function testMediaControlCheckBox() {
|
|
const prefs = await openPreferencesViaOpenPreferencesAPI("paneGeneral", {
|
|
leaveOpen: true,
|
|
});
|
|
is(prefs.selectedPane, "paneGeneral", "General pane was selected");
|
|
|
|
const checkBox = gBrowser.contentDocument.getElementById(
|
|
"mediaControlToggleEnabled"
|
|
);
|
|
ok(checkBox, "check box exists");
|
|
|
|
// The pref is true by default.
|
|
await modifyPrefAndWaitUntilCheckBoxChanges(false);
|
|
await modifyPrefAndWaitUntilCheckBoxChanges(true);
|
|
await toggleCheckBoxAndWaitUntilPrefValueChanges(false);
|
|
await toggleCheckBoxAndWaitUntilPrefValueChanges(true);
|
|
BrowserTestUtils.removeTab(gBrowser.selectedTab);
|
|
});
|
|
|
|
async function modifyPrefAndWaitUntilCheckBoxChanges(isEnabled) {
|
|
info((isEnabled ? "enable" : "disable") + " the pref");
|
|
const checkBox = gBrowser.contentDocument.getElementById(
|
|
"mediaControlToggleEnabled"
|
|
);
|
|
await SpecialPowers.pushPrefEnv({
|
|
set: [[MEDIA_CONTROL_PREF, isEnabled]],
|
|
});
|
|
await TestUtils.waitForCondition(
|
|
_ => checkBox.checked == isEnabled,
|
|
"Waiting for the checkbox gets checked"
|
|
);
|
|
is(checkBox.checked, isEnabled, `check box status is correct`);
|
|
checkAndClearTelemetryProbe(isEnabled);
|
|
}
|
|
|
|
async function toggleCheckBoxAndWaitUntilPrefValueChanges(isChecked) {
|
|
info((isChecked ? "check" : "uncheck") + " the check box");
|
|
const checkBox = gBrowser.contentDocument.getElementById(
|
|
"mediaControlToggleEnabled"
|
|
);
|
|
checkBox.click();
|
|
is(
|
|
Services.prefs.getBoolPref(MEDIA_CONTROL_PREF),
|
|
isChecked,
|
|
"the pref's value is correct"
|
|
);
|
|
checkAndClearTelemetryProbe(isChecked, true /* check UI */);
|
|
}
|
|
|
|
/**
|
|
* These telemetry related variable and method should be removed after the
|
|
* telemetry probe `MEDIA_CONTROL_SETTING_CHANGE` gets expired.
|
|
*/
|
|
const HISTOGRAM_ID = "MEDIA_CONTROL_SETTING_CHANGE";
|
|
const HISTOGRAM_KEYS = {
|
|
EnableFromUI: 0,
|
|
EnableTotal: 1,
|
|
DisableFromUI: 2,
|
|
DisableTotal: 3,
|
|
};
|
|
|
|
function checkAndClearTelemetryProbe(isEnable, checkUI = false) {
|
|
const histogram = Services.telemetry.getHistogramById(HISTOGRAM_ID);
|
|
let keyTotal = isEnable ? "EnableTotal" : "DisableTotal";
|
|
let keyUI = null;
|
|
if (checkUI) {
|
|
keyUI = isEnable ? "EnableFromUI" : "DisableFromUI";
|
|
}
|
|
for (let [key, val] of Object.entries(histogram.snapshot().values)) {
|
|
if (key == HISTOGRAM_KEYS[keyTotal]) {
|
|
ok(val, "Increase the amount for the probe 'changeing total setting'");
|
|
}
|
|
if (keyUI && key == HISTOGRAM_KEYS[keyUI]) {
|
|
ok(val, "Increase the amount for the probe 'changeing setting from UI'");
|
|
}
|
|
}
|
|
histogram.clear();
|
|
}
|