Loading toolkit/components/extensions/test/mochitest/test_ext_webrequest_upload.html +11 −2 Changes for toolkit/components/extensions/test/mochitest/test_ext_webrequest_upload.html: 11 added lines, 2 removed lines. Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ enctype="multipart/form-data" > <input type="text" name="textInput2" value="value2"> <input type="text" name="__proto__" value="regression test for bug 2061470"> <input type="file" name="testFile"> <input type="file" name="emptyFile"> </form> Loading Loading @@ -161,11 +162,19 @@ add_task(async function test_xhr_forms() { } let action = new URL(form.action); let formData = new FormData(form); let webRequestFD = {}; let updateActionURL = () => { let webRequestFD = {}; for (let name of formData.keys()) { webRequestFD[name] = name in uploads ? [uploads[name].fileName] : formData.getAll(name); if (Object.hasOwn(webRequestFD, name)) { // Ignore duplicate keys; formData.getAll already read all values. continue; } const value = Object.hasOwn(uploads, name) ? [uploads[name].fileName] : formData.getAll(name); // Cannot use webRequestFD[name] = value, because for "__proto__" as // name, that would trigger the Object.prototype.__proto__ setter // instead of defining a data property. Object.defineProperty(webRequestFD, name, { value, enumerable: true }); } action.searchParams.set("upload", JSON.stringify(webRequestFD)); action.searchParams.set("enctype", form.enctype); Loading toolkit/components/extensions/webrequest/WebRequestUpload.sys.mjs +1 −17 Changes for toolkit/components/extensions/webrequest/WebRequestUpload.sys.mjs: 1 added line, 17 removed lines. Original line number Diff line number Diff line Loading @@ -117,22 +117,6 @@ class Headers extends Map { } } /** * Creates a new Object with a corresponding property for every * key-value pair in the given Map. * * @param {Map} map * The map to convert. * @returns {object} */ function mapToObject(map) { let result = {}; for (let [key, value] of map) { result[key] = value; } return result; } /** * Rewinds the given seekable input stream to its beginning, and catches * any resulting errors. Loading Loading @@ -446,7 +430,7 @@ function createFormData(stream, channel, lenient) { try { let formData = parseFormData(stream, channel, lenient); if (formData) { return mapToObject(formData); return Object.fromEntries(formData); } } catch (e) { Cu.reportError(e); Loading Loading
toolkit/components/extensions/test/mochitest/test_ext_webrequest_upload.html +11 −2 Changes for toolkit/components/extensions/test/mochitest/test_ext_webrequest_upload.html: 11 added lines, 2 removed lines. Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ enctype="multipart/form-data" > <input type="text" name="textInput2" value="value2"> <input type="text" name="__proto__" value="regression test for bug 2061470"> <input type="file" name="testFile"> <input type="file" name="emptyFile"> </form> Loading Loading @@ -161,11 +162,19 @@ add_task(async function test_xhr_forms() { } let action = new URL(form.action); let formData = new FormData(form); let webRequestFD = {}; let updateActionURL = () => { let webRequestFD = {}; for (let name of formData.keys()) { webRequestFD[name] = name in uploads ? [uploads[name].fileName] : formData.getAll(name); if (Object.hasOwn(webRequestFD, name)) { // Ignore duplicate keys; formData.getAll already read all values. continue; } const value = Object.hasOwn(uploads, name) ? [uploads[name].fileName] : formData.getAll(name); // Cannot use webRequestFD[name] = value, because for "__proto__" as // name, that would trigger the Object.prototype.__proto__ setter // instead of defining a data property. Object.defineProperty(webRequestFD, name, { value, enumerable: true }); } action.searchParams.set("upload", JSON.stringify(webRequestFD)); action.searchParams.set("enctype", form.enctype); Loading
toolkit/components/extensions/webrequest/WebRequestUpload.sys.mjs +1 −17 Changes for toolkit/components/extensions/webrequest/WebRequestUpload.sys.mjs: 1 added line, 17 removed lines. Original line number Diff line number Diff line Loading @@ -117,22 +117,6 @@ class Headers extends Map { } } /** * Creates a new Object with a corresponding property for every * key-value pair in the given Map. * * @param {Map} map * The map to convert. * @returns {object} */ function mapToObject(map) { let result = {}; for (let [key, value] of map) { result[key] = value; } return result; } /** * Rewinds the given seekable input stream to its beginning, and catches * any resulting errors. Loading Loading @@ -446,7 +430,7 @@ function createFormData(stream, channel, lenient) { try { let formData = parseFormData(stream, channel, lenient); if (formData) { return mapToObject(formData); return Object.fromEntries(formData); } } catch (e) { Cu.reportError(e); Loading