summaryrefslogtreecommitdiffstats
path: root/netwerk/test/unit/test_blob_channelname.js
blob: c1a09272da2ef5fe0eb7dd1d0dae979ec0c1e256 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
/* Any copyright is dedicated to the Public Domain.
   http://creativecommons.org/publicdomain/zero/1.0/ */

add_task(async function channelname() {
  var file = new File(
    [new Blob(["test"], { type: "text/plain" })],
    "test-name"
  );
  var url = URL.createObjectURL(file);
  var channel = NetUtil.newChannel({
    uri: url,
    loadUsingSystemPrincipal: true,
  });

  let inputStream = channel.open();
  ok(inputStream, "Should be able to open channel");
  ok(
    inputStream.QueryInterface(Ci.nsIAsyncInputStream),
    "Stream should support async operations"
  );

  await new Promise(resolve => {
    inputStream.asyncWait(
      () => {
        let available = inputStream.available();
        ok(available, "There should be data to read");
        Assert.equal(
          channel.contentDispositionFilename,
          "test-name",
          "filename matches"
        );
        resolve();
      },
      0,
      0,
      Services.tm.mainThread
    );
  });

  inputStream.close();
  channel.cancel(Cr.NS_ERROR_FAILURE);
});