tor-browser

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

bypass-cache-revalidation.html (1128B)


      1 <!DOCTYPE html>
      2 <title>Cached images can bypass revalidation</title>
      3 <script src="/resources/testharness.js"></script>
      4 <script src="/resources/testharnessreport.js"></script>
      5 <script src="/common/utils.js"></script>
      6 <div id="imageDiv1"></div>
      7 <div id="imageDiv2"></div>
      8 <canvas id="canvas"></canvas>
      9 <script>
     10 
     11 function getImagePixel(image)
     12 {
     13    canvas.getContext("2d").drawImage(image, 0, 0, 10, 10);
     14    return canvas.getContext("2d").getImageData(0, 0, 1, 1).data;
     15 }
     16 
     17 let resolve;
     18 promise_test(async (t) => {
     19   const url = "image.py?id=" + token();
     20 
     21   let promise = new Promise(r => resolve = r);
     22   imageDiv1.innerHTML = `<img src="${url}" onload="resolve()"></img>`;
     23   await promise;
     24 
     25   const url2 = "image.py?id=" + token();
     26   promise = new Promise(r => resolve = r);
     27   imageDiv1.innerHTML = `<img src="${url2}" onload="resolve()"></img>`;
     28   await promise;
     29 
     30   promise = new Promise(r => resolve = r);
     31   imageDiv2.innerHTML = `<img id="image2" src="${url}" onload="resolve()"></img>`;
     32   await promise;
     33 
     34   assert_array_equals(getImagePixel(image2), [0, 255, 0, 255]);
     35 }, "Images can bypass no-cache");
     36 </script>