mirror of
https://github.com/servo/servo.git
synced 2025-06-29 11:33:39 +01:00
45 lines
1.3 KiB
JavaScript
45 lines
1.3 KiB
JavaScript
// Helper to access the element, its associated loading promise, and also to
|
|
// resolve the promise.
|
|
class ElementLoadPromise {
|
|
constructor(element_id) {
|
|
this.element_id = element_id;
|
|
this.promise = new Promise((resolve, reject) => {
|
|
this.resolve = resolve
|
|
this.reject = reject
|
|
});
|
|
}
|
|
element() {
|
|
return document.getElementById(this.element_id);
|
|
}
|
|
}
|
|
|
|
// Returns if the image is complete and the lazily loaded image matches the expected image.
|
|
function is_image_fully_loaded(image, expected_image) {
|
|
if (!image.complete || !expected_image.complete) {
|
|
return false;
|
|
}
|
|
|
|
if (image.width != expected_image.width ||
|
|
image.height != expected_image.height) {
|
|
return false;
|
|
}
|
|
|
|
let canvas = document.createElement('canvas');
|
|
canvas.width = image.width;
|
|
canvas.height = image.height;
|
|
let canvasContext = canvas.getContext("2d");
|
|
canvasContext.save();
|
|
canvasContext.drawImage(image, 0, 0);
|
|
let data = canvasContext.getImageData(0, 0, canvas.width, canvas.height).data;
|
|
|
|
canvasContext.restore();
|
|
canvasContext.drawImage(expected_image, 0, 0);
|
|
let expected_data = canvasContext.getImageData(0, 0, canvas.width, canvas.height).data;
|
|
|
|
for (var i = 0; i < data.length; i++) {
|
|
if (data[i] != expected_data[i]) {
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
}
|