tor-browser

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

image-decode.html (4975B)


      1 <!DOCTYPE html>
      2 <meta charset=utf-8>
      3 <meta name="timeout" content="long">
      4 <title>HTMLImageElement.prototype.decode(), basic tests.</title>
      5 <link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
      6 <link rel=help href="https://html.spec.whatwg.org/multipage/embedded-content.html#dom-img-decode">
      7 <script src="/resources/testharness.js"></script>
      8 <script src="/resources/testharnessreport.js"></script>
      9 
     10 <script>
     11 "use strict";
     12 
     13 // src tests
     14 // -------------------
     15 promise_test(function() {
     16  var img = new Image();
     17  img.src = "/images/green.png";
     18  return img.decode().then(function(arg) {
     19    assert_equals(arg, undefined);
     20  });
     21 }, document.title + " Image with PNG src decodes with undefined.");
     22 
     23 promise_test(function() {
     24  var img = new Image();
     25  img.src = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAIAAA" +
     26            "D91JpzAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4QUSEioKsyAgyw" +
     27            "AAABl0RVh0Q29tbWVudABDcmVhdGVkIHdpdGggR0lNUFeBDhcAAAAWSURBVA" +
     28            "jXY9y3bx8DAwPL58+fGRgYACktBRltLfebAAAAAElFTkSuQmCC";
     29  return img.decode().then(function(arg) {
     30    assert_equals(arg, undefined);
     31  });
     32 }, document.title + " Image with PNG data URL src decodes with undefined.");
     33 
     34 promise_test(function() {
     35  var img = new Image();
     36  img.src = "/images/green.svg";
     37  return img.decode().then(function(arg) {
     38    assert_equals(arg, undefined);
     39  });
     40 }, document.title + " Image with SVG src decodes with undefined.");
     41 
     42 promise_test(function(t) {
     43  var img = new Image();
     44  img.src = "/non/existent/path.png";
     45  var promise = img.decode();
     46  return promise_rejects_dom(t, "EncodingError", promise);
     47 }, document.title + " Non-existent src fails decode.");
     48 
     49 promise_test(function(t) {
     50  var inactive_doc = document.implementation.createHTMLDocument();
     51  var img = inactive_doc.createElement("img");
     52  img.src = "/images/green.png";
     53  var promise = img.decode();
     54  return promise_rejects_dom(t, "EncodingError", promise);
     55 }, document.title + " Inactive document fails decode.");
     56 
     57 promise_test(function(t) {
     58  var inactive_doc = document.implementation.createHTMLDocument();
     59  var img = document.createElement("img");
     60  img.src = "/images/green.png";
     61  var promise = img.decode();
     62  inactive_doc.body.appendChild(img);
     63  return promise_rejects_dom(t, "EncodingError", promise);
     64 }, document.title + " Adopted active image into inactive document fails decode.");
     65 
     66 promise_test(function() {
     67  var inactive_doc = document.implementation.createHTMLDocument();
     68  var img = inactive_doc.createElement("img");
     69  img.src = "/images/green.png";
     70  document.body.appendChild(img);
     71  return img.decode().then(function(arg) {
     72    assert_equals(arg, undefined);
     73  });
     74 }, document.title + " Adopted inactive image into active document succeeds.");
     75 
     76 promise_test(function(t) {
     77  var img = new Image();
     78  img.src = "data:image/png;base64,iVBO00PDR0BADBEEF00KGg";
     79  var promise = img.decode();
     80  return promise_rejects_dom(t, "EncodingError", promise);
     81 }, document.title + " Corrupt image in src fails decode.");
     82 
     83 promise_test(function(t) {
     84  var img = new Image();
     85  var promise = img.decode();
     86  return promise_rejects_dom(t, "EncodingError", promise);
     87 }, document.title + " Image (legacy) without src/srcset fails decode.");
     88 
     89 promise_test(function(t) {
     90  var img = document.createElement("img");
     91  var promise = img.decode();
     92  return promise_rejects_dom(t, "EncodingError", promise);
     93 }, document.title + " Image without src/srcset fails decode.");
     94 
     95 promise_test(function() {
     96  var img = new Image();
     97  img.src = "/images/green.png";
     98  var first_promise = img.decode();
     99  var second_promise = img.decode();
    100  assert_not_equals(first_promise, second_promise);
    101  return Promise.all([
    102    first_promise,
    103    second_promise
    104  ]);
    105 }, document.title + " Multiple decodes for images with src succeed.");
    106 
    107 // srcset tests
    108 // -------------------
    109 promise_test(function() {
    110  var img = new Image();
    111  img.srcset = "/images/green.png 100w";
    112  return img.decode().then(function(arg) {
    113    assert_equals(arg, undefined);
    114  });
    115 }, document.title + " Image with PNG srcset decodes with undefined.");
    116 
    117 promise_test(function() {
    118  var img = new Image();
    119  img.srcset = "/images/green.svg 100w";
    120  return img.decode().then(function(arg) {
    121    assert_equals(arg, undefined);
    122  });
    123 }, document.title + " Image with SVG srcset decodes with undefined.");
    124 
    125 promise_test(function(t) {
    126  var img = new Image();
    127  img.srcset = "/non/existent/path.png 100w";
    128  var promise = img.decode();
    129  return promise_rejects_dom(t, "EncodingError", promise);
    130 }, document.title + " Non-existent srcset fails decode.");
    131 
    132 promise_test(function() {
    133  var img = new Image();
    134  img.srcset = "/images/green.png 100w";
    135  var first_promise = img.decode();
    136  var second_promise = img.decode();
    137  assert_not_equals(first_promise, second_promise);
    138  return Promise.all([
    139    first_promise,
    140    second_promise
    141  ]);
    142 }, document.title + " Multiple decodes for images with srcset succeed.");
    143 
    144 </script>