browser.webRequest.filterResponseData crashes view-source: pages
Categories
(WebExtensions :: Request Handling, defect)
Tracking
(Not tracked)
People
(Reporter: cman1, Unassigned)
Details
Attachments
(1 file)
652 bytes,
application/vnd.rar
|
Details |
User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0
Steps to reproduce:
- Create simple addon consisting of 2 files
- manifest.json
{
"description": "WebRequests desc",
"manifest_version": 2,
"name": "webRequest - crash",
"version": "1.0",
"permissions": [
"webRequest",
"webRequestBlocking",
"https://www.youtube.com/*"
],
"background": {
"scripts": ["background.js"]
}
}
- background.js (example based on https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest/StreamFilter/ondata)
function listener(details) {
let filter = browser.webRequest.filterResponseData(details.requestId)
let decoder = new TextDecoder("utf-8")
let encoder = new TextEncoder()
let data = []
filter.ondata = event => {data.push(decoder.decode(event.data, {stream: true}))}
filter.onstop = event => {
data.push(decoder.decode())
str = data.join("")
filter.write(encoder.encode(str))
filter.close()
}
}
browser.webRequest.onBeforeRequest.addListener(
listener,
{urls: ["https://www.youtube.com/*"], types: ['main_frame']},
["blocking"]
)
- Enter https://www.youtube.com
- Open "view-source:" (Tools -> For developers -> Source Code)
Actual results:
view-source:https://www.youtube.com will crash.
It can be reproduced with any site - just need to change matches in both files.
Expected results:
Source code should be shown.
Also there seems to be no way to disable "view-source:" listener calls through match patterns (https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Match_patterns) or filtering by details passed to listener function (https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest/onBeforeRequest#details).
Updated•4 years ago
|
Updated•4 years ago
|
Description
•