blob: d020d831494a108c5176658ab8cc7f99a9282da1 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<title>Find text in subframe</title>
<meta name="viewport" content="width=device-width">
<script src="../../../../resources/testharness.js"></script>
<script src="../../../../resources/testharnessreport.js"></script>
<script type="text/javascript">
if (window.internals)
window.internals.settings.setAsyncFrameScrollingEnabled(true);
setup({ "explicit_done": true });
function height(w, id) {
return w.document.getElementById(id).getBoundingClientRect().height;
}
function run() {
if (!window.testRunner || !testRunner.runUIScript)
return;
var findOptions = 1 << 6; // show find indicator
var maxCount = 4;
var node = document.getElementById("scrollable").contentWindow;
test(function() {
assert_equals(node.scrollY, 0);
}, "Initial position of iframe node");
var afterMatch3 = async_test("Position of iframe node after the three first results");
var afterMatch4 = async_test("Position of iframe node after the fourth result");
testRunner.runUIScript(`
uiController.findString("match", ${findOptions}, ${maxCount}); // match
uiController.findString("match", ${findOptions}, ${maxCount}); // match 2
uiController.findString("match", ${findOptions}, ${maxCount}); // match 3
uiController.uiScriptComplete("Done");
`, afterMatch3.step_func_done(function() {
assert_equals(node.scrollY, 0);
testRunner.runUIScript(`
uiController.findString("match", ${findOptions}, ${maxCount}); // match 4
uiController.uiScriptComplete("Done");
`, afterMatch4.step_func_done(function() {
assert_greater_than(node.scrollY, 0);
var expectedScrollY = height(node, "divBefore") + height(node, "match4") / 2 - height(window, "scrollable") / 2;
assert_approx_equals(node.scrollY, expectedScrollY, 2);
}));
}));
done();
}
</script>
<style>
iframe {
border: 1px solid black;
background: gray;
width: 200px;
height: 200px;
}
</style>
</head>
<body>
<p>Use iOS Find UI to search for the text "match". The following iframe node should scroll to show the fourth result at its center.</p>
<p>match 2</p>
<p>match 3</p>
<iframe onload="run()" id="scrollable" srcdoc="<body style='margin: 0'><div id='divBefore' style='height: 300px; background: linear-gradient(135deg, blue, cyan);'></div><div id='match4'>match 4</div><div style='height: 300px; background: linear-gradient(135deg, blue, cyan);'></div></body>"></iframe>
</body>
</html>