blob: 57d5833f212ac950fbe0d2fc131b1510ff2d2345 [file] [edit]
<!doctype html>
<script src="../../resources/js-test.js"></script>
<!--
Each frameset starts with frameborder="no" (border off, so the two columns
fill the 300px-wide iframe at 150px each). With border="10" turned back on
the single vertical border between the columns leaves 290px to split, so the
frames become 145px each. We use that 150<->145 difference to observe the
m_frameborder state after a dynamic change.
-->
<iframe id="restored-by-yes" data-assert-off-width="150" data-assert-on-width="145">
<!doctype html>
<frameset rows="*" cols="50,50" frameborder="no" border="10">
<frame src="data:text/html,<body bgcolor=red>">
<frame src="data:text/html,<body bgcolor=blue>">
</frameset>
</iframe>
<iframe id="restored-by-removal" data-assert-off-width="150" data-assert-on-width="145">
<!doctype html>
<frameset rows="*" cols="50,50" frameborder="no" border="10">
<frame src="data:text/html,<body bgcolor=red>">
<frame src="data:text/html,<body bgcolor=blue>">
</frameset>
</iframe>
<script>
description('Tests that the frameset frameborder state updates correctly on dynamic changes: ' +
'changing frameborder="no" to a true value restores the border, and removing the attribute ' +
'restores the default (true) rather than forcing it off.');
function framesetIn(iframe) {
// Can't use srcdoc since that wouldn't synchronously load the content.
iframe.contentDocument.write(iframe.textContent);
iframe.contentDocument.close();
return iframe.contentDocument.querySelector('frameset');
}
var offWidth = '150';
var onWidth = '145';
debug('Changing frameborder="no" to frameborder="yes" restores the border:');
var frameset = framesetIn(document.getElementById('restored-by-yes'));
var frames = frameset.querySelectorAll('frame');
shouldBe('frames[0].offsetWidth', offWidth);
frameset.setAttribute('frameborder', 'yes');
shouldBe('frames[0].offsetWidth', onWidth);
shouldBe('frames[1].offsetWidth', onWidth);
debug('<br>');
debug('Removing the frameborder attribute restores the default (true), not false:');
frameset = framesetIn(document.getElementById('restored-by-removal'));
frames = frameset.querySelectorAll('frame');
shouldBe('frames[0].offsetWidth', offWidth);
frameset.removeAttribute('frameborder');
shouldBe('frames[0].offsetWidth', onWidth);
shouldBe('frames[1].offsetWidth', onWidth);
debug('<br>');
</script>