1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
|
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<title>Permission Element: display style validation</title>
<link
rel="help"
href="https://github.com/WICG/PEPC/blob/main/explainer.md#locking-the-pepc-style"
/>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
<body>
<script>
function createPermissionElementWithStyle(displayValue, type) {
const element = document.createElement("permission");
element.setAttribute("type", type);
element.style.display = displayValue;
document.body.appendChild(element);
return element;
}
const testCases = [
["block", ""],
["inline-block", ""],
["flex", ""],
["inline-flex", ""],
["inline", "style_invalid"],
["contents", "style_invalid"],
["inline-table", "style_invalid"],
["list-item", "style_invalid"],
["ruby", "style_invalid"],
["ruby-text", "style_invalid"],
["table", "style_invalid"],
["table-caption", "style_invalid"],
["table-cell", "style_invalid"],
["table-column", "style_invalid"],
["table-column-group", "style_invalid"],
["table-footer-group", "style_invalid"],
["table-header-group", "style_invalid"],
["table-row", "style_invalid"],
["table-row-group", "style_invalid"],
];
const permissionTypes = ["camera", "microphone", "camera microphone", "geolocation"];
testCases.forEach((testCase, index) =>
testCase.push(permissionTypes[index % permissionTypes.length]),
);
async_test((t) => {
let completedTests = 0;
testCases.forEach(([displayValue, expectedInvalidReason, type]) => {
const element = createPermissionElementWithStyle(displayValue, type);
element.onvalidationstatuschange = t.step_func(() => {
// These two invalid reasons are expected when the permission element was just created.
if (
element.invalidReason == "unsuccessful_registration" ||
element.invalidReason == "intersection_changed"
) {
return;
}
assert_equals(
element.invalidReason,
expectedInvalidReason,
`display: ${displayValue} should be ${expectedInvalidReason === "" ? "valid" : "invalid"}`,
);
element.remove();
if (++completedTests === testCases.length) t.done();
});
});
}, "Permission element display style validation");
</script>
</body>
</html>
|