gecko-dev/dom/plugins/test/mochitest/test_painting.html
Brian Grinstead 0d460e3432 Bug 1544322 - Part 2.2 - Remove the [type] attribute for one-liner <script> tags loading files in /tests/SimpleTest/ in dom/ r=bzbarsky
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
2019-04-16 03:53:28 +00:00

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>