<!DOCTYPE html>
<html>
<head>
<title>Test that overflow-x: hidden with a small viewport doesn't clip the controls when in a scrollable iframe</title>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script src="../media-controls.js"></script>
</head>
<style>
body {
overflow-x: hidden;
padding: 0;
margin: 0;
}
.frame {
width: 800px;
position: absolute;
right: 0;
}
</style>
<body>
<iframe id="scrollableFrame" class="frame" frameBorder="0"></iframe>
<iframe id="noScrollFrame" class="frame" frameBorder="0" scrolling="no"></iframe>
</body>
<script>
test(_ => {
const expectedScrollableWidth = [
"400px",
"800px",
"1200px",
];
const expectedNoScrollWidth = [
"400px",
"800px",
"800px",
];
let scrollableDoc = document.getElementById('scrollableFrame').contentWindow.document;
let noScrollDoc = document.getElementById('noScrollFrame').contentWindow.document;
addVideos(scrollableDoc);
addVideos(noScrollDoc);
checkPanelWidths(scrollableDoc, expectedScrollableWidth);
checkPanelWidths(noScrollDoc, expectedNoScrollWidth);
function addVideos(iframedoc) {
iframedoc.open();
iframedoc.write('<style>body { margin: 0 }</style>');
iframedoc.write('<video controls width=400></video>');
iframedoc.write('<video controls width=800></video>');
iframedoc.write('<video controls width=1200></video>');
iframedoc.close();
let videos = iframedoc.querySelectorAll('video');
for (let i=0; i < videos.length; ++i) {
videos[i].src = 'content/test.ogv';
}
}
function checkPanelWidths(iframedoc, expectedWidths) {
let videos = iframedoc.querySelectorAll('video');
for (let i=0; i < videos.length; ++i) {
let controls = mediaControlsButton(videos[i], 'panel');
assert_equals(getComputedStyle(controls).width, expectedWidths[i]);
}
}
});
</script>
</html>