63 lines
2 KiB
JavaScript
63 lines
2 KiB
JavaScript
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
"use strict";
|
|
|
|
add_task(async function test() {
|
|
info(
|
|
"Test that features that are disabled on the platform are disabled in about:profiling."
|
|
);
|
|
|
|
const supportedFeatures = Services.profiler.GetFeatures();
|
|
const allFeatures = Services.profiler.GetAllFeatures();
|
|
const unsupportedFeatures = allFeatures.filter(
|
|
feature => !supportedFeatures.includes(feature)
|
|
);
|
|
|
|
if (unsupportedFeatures.length === 0) {
|
|
ok(true, "This platform has no unsupported features. Skip this test.");
|
|
return;
|
|
}
|
|
|
|
await withAboutProfiling(async document => {
|
|
{
|
|
info("Find and click a supported feature to toggle it.");
|
|
const [firstSupportedFeature] = supportedFeatures;
|
|
const checkbox = getFeatureCheckbox(document, firstSupportedFeature);
|
|
const initialValue = checkbox.checked;
|
|
info("Click the supported checkbox.");
|
|
checkbox.click();
|
|
is(
|
|
initialValue,
|
|
!checkbox.checked,
|
|
"A supported feature can be toggled."
|
|
);
|
|
checkbox.click();
|
|
}
|
|
|
|
{
|
|
info("Find and click an unsupported feature, it should be disabled.");
|
|
const [firstUnsupportedFeature] = unsupportedFeatures;
|
|
const checkbox = getFeatureCheckbox(document, firstUnsupportedFeature);
|
|
is(checkbox.checked, false, "The unsupported feature is not checked.");
|
|
|
|
info("Click the unsupported checkbox.");
|
|
checkbox.click();
|
|
is(checkbox.checked, false, "After clicking it, it's still not checked.");
|
|
}
|
|
});
|
|
});
|
|
|
|
/**
|
|
* @param {HTMLDocument} document
|
|
* @param {string} feature
|
|
* @return {HTMLElement}
|
|
*/
|
|
function getFeatureCheckbox(document, feature) {
|
|
const element = document.querySelector(`input[value="${feature}"]`);
|
|
if (!element) {
|
|
throw new Error("Could not find the checkbox for the feature: " + feature);
|
|
}
|
|
return element;
|
|
}
|