summaryrefslogtreecommitdiffstats
path: root/toolkit/components/extensions/test/xpcshell/test_ext_webRequest_requestSize.js
blob: 69238fb05797a0a0347082d9b12d3fe2f53df2f4 (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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
"use strict";

const server = createHttpServer();
const gServerUrl = `http://localhost:${server.identity.primaryPort}`;

const EXTENSION_DATA = {
  manifest: {
    name: "Simple extension test",
    version: "1.0",
    manifest_version: 2,
    description: "",

    permissions: ["webRequest", "<all_urls>"],
  },

  async background() {
    browser.test.log("background script running");

    browser.webRequest.onBeforeSendHeaders.addListener(
      async details => {
        browser.test.assertTrue(details.requestSize == 0, "no requestSize");
        browser.test.assertTrue(details.responseSize == 0, "no responseSize");
        browser.test.log(`details.requestSize: ${details.requestSize}`);
        browser.test.log(`details.responseSize: ${details.responseSize}`);
        browser.test.sendMessage("check");
      },
      { urls: ["*://*/*"] }
    );

    browser.webRequest.onCompleted.addListener(
      async details => {
        browser.test.assertTrue(details.requestSize > 100, "have requestSize");
        browser.test.assertTrue(
          details.responseSize > 100,
          "have responseSize"
        );
        browser.test.log(`details.requestSize: ${details.requestSize}`);
        browser.test.log(`details.responseSize: ${details.responseSize}`);
        browser.test.sendMessage("done");
      },
      { urls: ["*://*/*"] }
    );
  },
};

add_task(async function test_request_response_size() {
  let ext = ExtensionTestUtils.loadExtension(EXTENSION_DATA);
  await ext.startup();

  let contentPage = await ExtensionTestUtils.loadContentPage(
    `${gServerUrl}/dummy`
  );
  await ext.awaitMessage("check");
  await ext.awaitMessage("done");
  await contentPage.close();
  await ext.unload();
});