summaryrefslogtreecommitdiffstats
path: root/testing/talos/talos/webextensions/dummy/background.js
blob: 1b20f85cfa41e47ffcb9c9e7252ff9a141b0058e (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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

"use strict";

/* eslint-env webextensions */

let skipFilters = false;

browser.webRequest.onBeforeRequest.addListener(
  details => {
    if (details.url.endsWith("/startup_test/tspaint_test.html")) {
      skipFilters = true;
    }
    if (skipFilters || details.url.endsWith("/favicon.ico")) {
      return;
    }

    let filter = browser.webRequest.filterResponseData(details.requestId);

    filter.onstop = event => {
      filter.close();
    };
    filter.ondata = event => {
      filter.write(event.data);
    };
  },
  {
    urls: ["<all_urls>"],
  },
  ["blocking"]
);

browser.webRequest.onBeforeSendHeaders.addListener(
  details => {
    return { requestHeaders: details.requestHeaders };
  },
  { urls: ["https://*/*", "http://*/*"] },
  ["blocking", "requestHeaders"]
);

browser.webRequest.onHeadersReceived.addListener(
  details => {
    return { responseHeaders: details.responseHeaders };
  },
  { urls: ["https://*/*", "http://*/*"] },
  ["blocking", "responseHeaders"]
);

browser.webRequest.onErrorOccurred.addListener(details => {}, {
  urls: ["https://*/*", "http://*/*"],
});

browser.runtime.onMessage.addListener(msg => {
  return Promise.resolve({ code: "10-4", msg });
});

browser.tabs.onUpdated.addListener((tabId, changed, tab) => {
  if (changed.url) {
    browser.pageAction.show(tabId);
  }
  if (changed.title) {
    browser.pageAction.setTitle({ tabId, title: `title: ${tab.title}` });
    browser.pageAction.setIcon({ tabId, path: { 16: "/icon.png" } });

    browser.browserAction.setTitle({ tabId, title: `title: ${tab.title}` });
    browser.browserAction.setIcon({ path: { 16: "/icon.png" } });
  }

  browser.tabs.sendMessage(tabId, { changed, tab }).catch(() => {
    // Ignore tabs that don't have a listener yet.
  });
});

browser.tabs.onActivated.addListener(({ tabId, windowId }) => {
  browser.pageAction.show(tabId);
});

browser.tabs.onCreated.addListener(tab => {
  browser.pageAction.show(tab.id);
});

browser.tabs.onRemoved.addListener((tabId, removeInfo) => {});

browser.tabs.onAttached.addListener((tabId, attachInfo) => {});

browser.tabs.onDetached.addListener((tabId, detachInfo) => {});