tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

common.js (1324B)


      1 // Helper to access the element, its associated loading promise, and also to
      2 // resolve the promise.
      3 class ElementLoadPromise {
      4  constructor(element_id) {
      5    this.element_id = element_id;
      6    this.promise = new Promise((resolve, reject) => {
      7      this.resolve = resolve
      8      this.reject = reject
      9    });
     10  }
     11  element() {
     12    return document.getElementById(this.element_id);
     13  }
     14 }
     15 
     16 // Returns if the image is complete and the lazily loaded image matches the expected image.
     17 function is_image_fully_loaded(image, expected_image) {
     18  if (!image.complete || !expected_image.complete) {
     19    return false;
     20  }
     21 
     22  if (image.width != expected_image.width ||
     23      image.height != expected_image.height) {
     24    return false;
     25  }
     26 
     27  let canvas = document.createElement('canvas');
     28  canvas.width = image.width;
     29  canvas.height = image.height;
     30  let canvasContext = canvas.getContext("2d");
     31  canvasContext.save();
     32  canvasContext.drawImage(image, 0, 0);
     33  let data = canvasContext.getImageData(0, 0, canvas.width, canvas.height).data;
     34 
     35  canvasContext.restore();
     36  canvasContext.drawImage(expected_image, 0, 0);
     37  let expected_data = canvasContext.getImageData(0, 0, canvas.width, canvas.height).data;
     38 
     39  for (var i = 0; i < data.length; i++) {
     40    if (data[i] != expected_data[i]) {
     41      return false;
     42    }
     43  }
     44  return true;
     45 }