tor-browser

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

test_buffer_mapping_overlapping_views.html (1741B)


      1 <!doctype html>
      2 <html>
      3  <head>
      4    <meta charset="utf-8" />
      5    <script src="/tests/SimpleTest/SimpleTest.js"></script>
      6    <link rel="stylesheet" href="/tests/SimpleTest/test.css" />
      7  </head>
      8  <body>
      9    <script>
     10      ok(
     11        SpecialPowers.getBoolPref("dom.webgpu.enabled"),
     12        "Pref should be enabled."
     13      );
     14 
     15      async function testBody() {
     16        const adapter = await navigator.gpu.requestAdapter();
     17        const device = await adapter.requestDevice();
     18 
     19        let buffer = device.createBuffer({
     20          size: 48,
     21          usage: GPUBufferUsage.MAP_READ,
     22          mappedAtCreation: true,
     23        });
     24        let view1 = buffer.getMappedRange(16, 24);
     25 
     26        function bad_overlap(start, size, complaint) {
     27          SimpleTest.doesThrow(() => {
     28            buffer.getMappedRange(start, size);
     29          }, complaint);
     30        }
     31 
     32        bad_overlap(8, 16, "overlap start of prior");
     33        bad_overlap(32, 16, "overlap end of prior");
     34        bad_overlap(8, 40, "enclose prior");
     35        bad_overlap(24, 8, "enclosed by prior");
     36 
     37        // Not really an overlap, but this checks for a mistake in
     38        // an early revision of the patch that introduces this test.
     39        SimpleTest.doesThrow(() => {
     40          buffer.getMappedRange(64, 8);
     41        }, "offset beyond mapped range");
     42 
     43        // should be fine
     44        ok(
     45          typeof buffer.getMappedRange(0, 16) == "object",
     46          "no overlap before"
     47        );
     48        ok(typeof buffer.getMappedRange(40, 8) == "object", "no overlap after");
     49      }
     50 
     51      SimpleTest.waitForExplicitFinish();
     52      testBody()
     53        .catch(e => ok(false, "Unhandled exception " + e))
     54        .finally(() => SimpleTest.finish());
     55    </script>
     56  </body>
     57 </html>