[devtools] qunit: use new async testing APIs
http://qunitjs.com/cookbook/#asynchronous-callbacks
QUnit keeps track of all the assert.async() objects created inside the
test functions and expects all done() functions to be called. Failure to
do so will result in the test being failed.
Unlike .start and .stop which were internal APIs, assert.async() is
stricter and fails tests if assert methods are used *after* all done()
functions are called (see "test callback execution order").
Related to #5533333.
jQuery.fn.autoResize = function() {
// remove enforced with / height (by CSS and/or HTML attributes)
this.css("width", "auto").css("height", "auto");
this.removeAttr("width").removeAttr("height"); // Remove
// compute image size / max allowed size to fit screen
var imgHSize = this.width();
var maxHSize = $(window).width() - ($(document).width() - imgHSize);
var imgVSize = this.height();
// we don't mind if content in [content]footer moved out of the screen
var maxVSize = $(window).height() - ($(document).height() - imgVSize) + $('#footer').height() + $('#contentfooter').height();
if (maxHSize > 0 && maxVSize > 0) {
// if image don't fit screen, set width or height so that
// browser keep img ratio, ensuring the other dimension will
// also fit the screen
if (imgHSize > maxHSize && ((imgVSize / imgHSize) * maxHSize) <= maxVSize) {
this.css("width", maxHSize);
} else if (imgVSize > maxVSize && ((imgHSize / imgVSize) * maxVSize) <= maxHSize) {
this.css("height", maxVSize);
}
else {
// image already fit in screen, don't scale it up
}
} else {
// can't fit image in, don't do anything
}
};
$(document).ready(function() {
$("img.contentimage").load(function() {$(this).autoResize()});
});