blob: 0fcc7f40e94cd0d3794c27039caff840d063f407 [file] [log] [blame]
<!DOCTYPE html>
<meta charset="utf-8">
<link rel="author" title="Mason Freed" href="mailto:masonfreed@chromium.org">
<link rel=help href="https://github.com/MicrosoftEdge/MSEdgeExplainers/blob/main/Popup/explainer.md">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<popup id=p1>This is a popup</popup>
<popup id=p2 open>This is another popup, with an unused "open" attribute</popup>
<script>
test(function() {
assert_true(document.createElement('popup') instanceof HTMLPopupElement);
}, "popup element exists")
const popup1 = document.getElementById('p1');
const popup2 = document.getElementById('p2');
function popupVisible(popup) {
return !!(popup.offsetWidth || popup.offsetHeight || popup.getClientRects().length);
}
test(function(){
assert_false(popup1.open);
assert_false(popup2.open);
}, 'The IDL "open" content attribute must have no effect, and must not be reflected to the WebIDL.');
test(function(){
assert_false(popup1.open);
assert_false(popup1.hasAttribute("open"));
assert_false(popupVisible(popup1));
popup1.open = true; // Should have no effect
assert_false(popup1.open);
assert_false(popupVisible(popup1));
popup1.show();
assert_true(popup1.open);
assert_false(popup1.hasAttribute("open"));
assert_true(popupVisible(popup1));
popup1.open = false; // Should have no effect
assert_true(popup1.open);
popup1.hide();
assert_false(popup1.open);
assert_false(popup1.hasAttribute("open"));
assert_false(popupVisible(popup1));
popup1.setAttribute("open","");
assert_false(popup1.open,'Setting open attribute should not reflect to the WebIDL');
assert_true(popup1.hasAttribute("open"));
assert_false(popupVisible(popup1));
}, "The only visibility control for <popup> is through .show() and .hide().");
</script>