vapi-net.js 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. /*******************************************************************************
  2. ηMatrix - a browser extension to black/white list requests.
  3. Copyright (C) 2014-2019 The uMatrix/uBlock Origin authors
  4. Copyright (C) 2019-2022 Alessio Vanni
  5. This program is free software: you can redistribute it and/or modify
  6. it under the terms of the GNU General Public License as published by
  7. the Free Software Foundation, either version 3 of the License, or
  8. (at your option) any later version.
  9. This program is distributed in the hope that it will be useful,
  10. but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  12. GNU General Public License for more details.
  13. You should have received a copy of the GNU General Public License
  14. along with this program. If not, see {http://www.gnu.org/licenses/}.
  15. Home: https://gitlab.com/vannilla/ematrix
  16. uMatrix Home: https://github.com/gorhill/uMatrix
  17. */
  18. 'use strict';
  19. /******************************************************************************/
  20. (function () {
  21. Cu.import('chrome://ematrix/content/lib/PendingRequests.jsm');
  22. vAPI.net = {};
  23. vAPI.net.registerListeners = function () {
  24. this.onBeforeRequest.types = this.onBeforeRequest.types
  25. ? new Set(this.onBeforeRequest.types)
  26. : null;
  27. this.onBeforeSendHeaders.types = this.onBeforeSendHeaders.types
  28. ? new Set(this.onBeforeSendHeaders.types)
  29. : null;
  30. let shouldLoadListenerMessageName = location.host + ':shouldLoad';
  31. let shouldLoadListener = function (e) {
  32. let details = e.data;
  33. let pendingReq =
  34. PendingRequestBuffer.createRequest(details.url);
  35. pendingReq.rawType = details.rawType;
  36. pendingReq.tabId = vAPI.tabs.manager.tabIdFromTarget(e.target);
  37. };
  38. // https://github.com/gorhill/uMatrix/issues/200
  39. // We need this only for Firefox 34 and less: the tab id is derived from
  40. // the origin of the message.
  41. if (!vAPI.modernFirefox) {
  42. vAPI.messaging.globalMessageManager
  43. .addMessageListener(shouldLoadListenerMessageName,
  44. shouldLoadListener);
  45. }
  46. vAPI.httpObserver.register();
  47. vAPI.addCleanUpTask(function () {
  48. if (!vAPI.modernFirefox) {
  49. vAPI.messaging.globalMessageManager
  50. .removeMessageListener(shouldLoadListenerMessageName,
  51. shouldLoadListener);
  52. }
  53. vAPI.httpObserver.unregister();
  54. });
  55. };
  56. })();