mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-21 17:25:36 +00:00
0d460e3432
This is split from the previous changeset since if we include dom/ the file size is too large for phabricator to handle. This is an autogenerated commit to handle scripts loading mochitest harness files, in the simple case where the script src is on the same line as the tag. This was generated with https://bug1544322.bmoattachments.org/attachment.cgi?id=9058170 using the `--part 2` argument. Differential Revision: https://phabricator.services.mozilla.com/D27457 --HG-- extra : moz-landing-system : lando
123 lines
2.9 KiB
HTML
123 lines
2.9 KiB
HTML
<!DOCTYPE HTML>
|
|
<html>
|
|
<head>
|
|
<title>Test for windowless plugin invalidation and expose events in clips</title>
|
|
<script src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
|
|
<style>
|
|
div#container {
|
|
position: relative;
|
|
height: 30px;
|
|
background: blue;
|
|
}
|
|
div#clip {
|
|
overflow:hidden;
|
|
position:absolute;
|
|
left: 10.3px;
|
|
top: 9.7px;
|
|
width: 10px;
|
|
height: 0px;
|
|
background: red;
|
|
}
|
|
embed {
|
|
position:absolute;
|
|
}
|
|
embed#paint-waiter {
|
|
top: 0px;
|
|
left: 0px;
|
|
width: 1px;
|
|
height: 0px;
|
|
}
|
|
embed#clipped {
|
|
left: -5.3px;
|
|
top: -4.7px;
|
|
width: 20px;
|
|
height: 20px;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body onload="initialize()">
|
|
|
|
<script type="application/javascript" src="plugin-utils.js"></script>
|
|
<script type="application/javascript">
|
|
SimpleTest.waitForExplicitFinish();
|
|
SimpleTest.requestFlakyTimeout("untriaged");
|
|
setTestPluginEnabledState(SpecialPowers.Ci.nsIPluginTag.STATE_ENABLED);
|
|
|
|
var paint_waiter;
|
|
var clip;
|
|
var clipped;
|
|
|
|
function initialize() {
|
|
paint_waiter = document.getElementById("paint-waiter");
|
|
clip = document.getElementById("clip");
|
|
clipped = document.getElementById("clipped");
|
|
|
|
waitForPaint(show);
|
|
}
|
|
|
|
function show() {
|
|
paintCountIs(clipped, 0, "fully clipped plugin not painted");
|
|
|
|
clip.style.height = "10px";
|
|
|
|
// Capturing an image (as in a reftest) would force a repaint and use
|
|
// different paths for the image surface, so instead check the plugin's
|
|
// paint count.
|
|
waitForPaint(invalidate);
|
|
}
|
|
|
|
function invalidate() {
|
|
paintCountIs(clipped, 1, "partially clipped plugin painted once");
|
|
|
|
clipped.setColor("FF00FF00"); // plugin invalidates
|
|
|
|
waitForPaint(done);
|
|
}
|
|
|
|
function done() {
|
|
paintCountIs(clipped, 2, "painted after invalidate");
|
|
|
|
SimpleTest.finish();
|
|
}
|
|
|
|
function waitForPaint(func) {
|
|
paint_waiter.last_paint_count = paint_waiter.getPaintCount();
|
|
// Ensure the waiter has had a style change, so that this will
|
|
// change its size and cause a paint.
|
|
paint_waiter.style.backgroundColor = paint_waiter.style.backgroundColor == "blue" ? "yellow" : "blue";
|
|
// eslint-disable-next-line no-unused-vars
|
|
var flush = paint_waiter.offsetHeight;
|
|
paint_waiter.style.height = "1px";
|
|
waitForPaintHelper(func);
|
|
}
|
|
|
|
function waitForPaintHelper(func) {
|
|
if (paint_waiter.getPaintCount() != paint_waiter.last_paint_count) {
|
|
// hide the paint waiter
|
|
paint_waiter.style.height = "0px";
|
|
setTimeout(func, 0);
|
|
return;
|
|
}
|
|
setTimeout(function() { waitForPaintHelper(func); }, 1000);
|
|
}
|
|
|
|
</script>
|
|
|
|
<p id="display"></p>
|
|
<div id="container">
|
|
<embed id="paint-waiter" type="application/x-test"/>
|
|
<div id="clip">
|
|
<embed id="clipped" type="application/x-test"
|
|
drawmode="solid" color="FF808080"/>
|
|
</div>
|
|
</div>
|
|
<div id="content" style="display: none">
|
|
|
|
</div>
|
|
<pre id="test">
|
|
</pre>
|
|
|
|
</body>
|
|
</html>
|