Closed Bug 1534712 Opened 6 years ago Closed 6 years ago

FetchBodyConsumer<Derived>::BeginConsumeBodyMainThread shouldn't make nsLocalFile do main thread I/O

Categories

(Core :: DOM: Networking, defect, P2)

defect

Tracking

()

RESOLVED FIXED
mozilla68
Performance Impact low
Tracking Status
firefox-esr60 --- unaffected
firefox67 --- wontfix
firefox68 --- fixed

People

(Reporter: mayhemer, Assigned: baku)

References

(Regression)

Details

(Keywords: perf:responsiveness, regression, Whiteboard: [fxperf:p2][necko-triaged])

Attachments

(2 files, 2 obsolete files)

+++ This bug was initially created as a clone of Bug #1527712 +++

nsThread::ProcessNextEvent(bool,bool *) [xul.dll]
nsresult mozilla::dom::`anonymous namespace'::BeginConsumeBodyRunnable<mozilla::dom::Response>::Run() [xul.dll]
nsresult mozilla::dom::FetchBodyConsumer<mozilla::dom::EmptyBody>::GetBodyLocalFile(class nsIFile * *) [xul.dll]
nsLocalFile::Exists(bool *) [xul.dll]
nsLocalFile::ResolveAndStat []
nsresult nsLocalFile::ResolveAndStat() [xul.dll]
static nsresult GetFileInfo(const class nsTString<char16_t> & const, struct PRFileInfo64 *) [xul.dll]
GetFileAttributesExW [KERNELBASE.dll]

This is at https://searchfox.org/mozilla-central/rev/01b4b3830ea3cae2e9e431019afa6391b471c6da/dom/fetch/FetchConsumer.cpp#505 and looks like a regression from bug 1482752.


Filing a new bug for this as this should be fixed by that patch author or reviewer.

And I believe the same applies to this stack:

nsThread::ProcessNextEvent(bool,bool *) [xul.dll]
nsresult mozilla::dom::`anonymous namespace'::BeginConsumeBodyRunnable<mozilla::dom::Response>::Run() [xul.dll]
mozilla::dom::FileCreatorHelper::CreateFile(nsIGlobalObject *,nsIFile *,mozilla::dom::ChromeFilePropertyBag const &,bool,mozilla::ErrorResult &) [xul.dll]
static struct already_AddRefed<mozilla::dom::File> mozilla::dom::FileCreatorHelper::CreateFileInternal(class nsPIDOMWindowInner *, class nsIFile *, const struct mozilla::dom::ChromeFilePropertyBag & const, bool, class mozilla::ErrorResult & const) [xul.dll]
static nsresult mozilla::dom::FileCreatorHelper::CreateBlobImpl(class nsIFile *, const class nsTSubstring<char16_t> & const, const class nsTSubstring<char16_t> & const, bool, __int64, bool, bool, class mozilla::dom::BlobImpl * *) [xul.dll]
nsresult mozilla::dom::MultipartBlobImpl::InitializeChromeFile(class nsIFile *, const class nsTSubstring<char16_t> & const, const class nsTSubstring<char16_t> & const, bool, __int64, bool) [xul.dll]
nsLocalFile::Exists(bool *) [xul.dll]
nsLocalFile::ResolveAndStat []
nsresult nsLocalFile::ResolveAndStat() [xul.dll]
static nsresult GetFileInfo(const class nsTString<char16_t> & const, struct PRFileInfo64 *) [xul.dll]
GetFileAttributesExW [KERNELBASE.dll]
No longer blocks: 1534603
Summary: nsFileChannel (called e.g. by fetch) shouldn't do main thread I/O for local files → FetchBodyConsumer<Derived>::BeginConsumeBodyMainThread shouldn't make nsLocalFile do main thread I/O

:twisniewski, can you take a look please?

Flags: needinfo?(twisniewski)

Was this not supposed to be addressed in bug 1527712?

Flags: needinfo?(twisniewski)

(In reply to Thomas Wisniewski [:twisniewski] from comment #3)

Was this not supposed to be addressed in bug 1527712?

AIUI, no. See also last sentence in comment #0. bug 1527712 addressed nsFileChannel::OpenContentStream, not the issues added by 1482752... in any case, I still see calls e.g. at https://searchfox.org/mozilla-central/rev/201450283cddc9e409cec707acb65ba6cf6037b1/dom/fetch/FetchConsumer.cpp#504-518 , so I don't think it was.

Flags: needinfo?(twisniewski)

(In reply to Thomas Wisniewski [:twisniewski] from comment #3)

Was this not supposed to be addressed in bug 1527712?

No. That bug deals with a bit that could be fixed in nsFileChannel.

This bug deals with a case where a code, that has to explicitly run on the main thread, creates a localfile instance and asks for the file existence on disk. this has to loop to a background to do it. this is a problem in FetchBodyConsumer, which I don't know.

Alright, but how do I do these checks off the main thread? Is there an example I could study?

Flags: needinfo?(twisniewski) → needinfo?(honzab.moz)

Dumb question, but are the checks even necessary? Why can't we just error if the file doesn't exist or is a directory when the consumer actually tries to read it? As it is, the file could exist and be a file when these checks return, and the file could have changed by the time the website tells us to use the file/blob...

Yeah, I would first need to understand the bigger picture to suggest an approach here (that's why I filed this bug in this component - because I don't know the code at all).

You can do a simple dispatch to stream transport service and then back to the main thread. See https://searchfox.org/mozilla-central/rev/201450283cddc9e409cec707acb65ba6cf6037b1/netwerk/protocol/file/nsFileChannel.cpp#424-425. TaskQueue is used only because I need it as a target for the promise.

Flags: needinfo?(honzab.moz)

Hmm, actually it might just be fine to forego those specific checks in comment 4, as I don't believe we were doing them up front before my patch anyhow. baku, what do you think?

Flags: needinfo?(amarchesini)

FileCreatorHelper creates a FileBlobImpl on the main-thread and, because of
this, we end up executing I/O operations on that thread, slowing down other
components. With this patch, FileCreatorHelper logic is moved to PBackground.

That the 'type' getter is still called on the main-thread because FileBlobImpl
uses nsIMIMEService which is a non thread-safe component.

Let's split this bug in 2 parts: FileCreatorHelper and FetchConsumer::GetBodyLocalFile. I can work on FileCreatorHelper, and move the file creation on PBackground. The Fetch part can be done as a follow up.

Assignee: nobody → amarchesini
Flags: needinfo?(amarchesini)
Attachment #9058995 - Attachment description: Bug 1534712 - Revemo MultipartBlobImpl::InitializeChromeFile, r=smaug → Bug 1534712 - Remove MultipartBlobImpl::InitializeChromeFile, r=smaug
Attachment #9058963 - Attachment is obsolete: true
Attachment #9058493 - Attachment description: Bug 1534712 - Move FileCreatorHelper to PBackground, r?smaug → Bug 1534712 - Port FileCreatorHelper to PBackground, r?asuth
Attachment #9058995 - Attachment is obsolete: true
Pushed by amarchesini@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/22c00a19e267 Port FileCreatorHelper to PBackground, r=smaug
Backout by aciure@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/bcd124c140a2 Backed out changeset 22c00a19e267 for causing test_bug536567_perwindowpb.html, browser_jsonview_save_json.js, browser_bookmark_backup_export_import.js to perma fail CLOSED TREE

Interesting. This means that at the moment, the current code works just because we don't serialize it parent-to-child and we don't call getters for size and lastModified.

Flags: needinfo?(amarchesini)
Pushed by amarchesini@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/57136f4e7b54 Port FileCreatorHelper to PBackground, r=smaug

Backed out 5 changesets (Bug 1534712, Bug 1545758) for test_ext_webrequest_upload.html failures

Push with failures: https://treeherder.mozilla.org/#/jobs?repo=autoland&fromchange=feb8846c6602b5fb4a2580ee1f9155d2fb509585&searchStr=linux%2Cdebug%2Cmochitests%2Cwithout%2Ce10s%2Ctest-linux32%2Fdebug-mochitest-1proc-15%2Cm-1proc%2815%29&tochange=a8478ef589e070357d07e90ff7c0fec2084c41e9

Backout link: https://hg.mozilla.org/integration/autoland/rev/a8478ef589e070357d07e90ff7c0fec2084c41e9

Failure log: https://treeherder.mozilla.org/logviewer.html#/jobs?job_id=242521854&repo=autoland&lineNumber=6790

[task 2019-04-25T08:34:47.538Z] 08:34:47 INFO - TEST-START | toolkit/components/extensions/test/mochitest/test_ext_webrequest_upload.html
[task 2019-04-25T08:34:47.620Z] 08:34:47 INFO - GECKO(1637) | ++DOMWINDOW == 113 (0xd6c02000) [pid = 1637] [serial = 877] [outer = 0xdb4a8bd0]
[task 2019-04-25T08:34:47.822Z] 08:34:47 INFO - GECKO(1637) | Console message: Warning: attempting to write 11372 bytes to preference extensions.webextensions.uuids. This is bad for general performance and memory usage. Such an amount of data should rather be written to an external file. This preference will not be sent to any content processes.
[task 2019-04-25T08:34:47.863Z] 08:34:47 INFO - GECKO(1637) | ++DOCSHELL 0xd8651000 == 40 [pid = 1637] [id = {1b5ab727-8a27-4c36-b16e-98d91021d82a}]
[task 2019-04-25T08:34:47.865Z] 08:34:47 INFO - GECKO(1637) | ++DOMWINDOW == 114 (0xdbcca010) [pid = 1637] [serial = 878] [outer = (nil)]
[task 2019-04-25T08:34:47.874Z] 08:34:47 INFO - GECKO(1637) | ++DOMWINDOW == 115 (0xda29c800) [pid = 1637] [serial = 879] [outer = 0xdbcca010]
[task 2019-04-25T08:34:47.917Z] 08:34:47 INFO - GECKO(1637) | ++DOMWINDOW == 116 (0xda2a9400) [pid = 1637] [serial = 880] [outer = 0xdbcca010]
[task 2019-04-25T08:34:48.057Z] 08:34:48 INFO - GECKO(1637) | ++DOCSHELL 0xda29d400 == 41 [pid = 1637] [id = {e0851eec-fde0-4b77-b222-abf64e79d788}]
[task 2019-04-25T08:34:48.059Z] 08:34:48 INFO - GECKO(1637) | ++DOMWINDOW == 117 (0xda2f18a0) [pid = 1637] [serial = 881] [outer = (nil)]
[task 2019-04-25T08:34:48.077Z] 08:34:48 INFO - GECKO(1637) | ++DOMWINDOW == 118 (0xda2a0c00) [pid = 1637] [serial = 882] [outer = 0xda2f18a0]
[task 2019-04-25T08:34:48.161Z] 08:34:48 INFO - GECKO(1637) | ++DOMWINDOW == 119 (0xda487c00) [pid = 1637] [serial = 883] [outer = 0xda2f18a0]
[task 2019-04-25T08:34:48.339Z] 08:34:48 INFO - GECKO(1637) | [1637, Socket Thread] WARNING: 'NS_FAILED(rv)', file /builds/worker/workspace/build/src/dom/file/ipc/IPCBlobInputStream.cpp, line 209
[task 2019-04-25T08:34:48.342Z] 08:34:48 INFO - GECKO(1637) | [1637, Socket Thread] WARNING: 'NS_FAILED(rv)', file /builds/worker/workspace/build/src/dom/file/ipc/IPCBlobInputStream.cpp, line 209
[task 2019-04-25T08:34:48.344Z] 08:34:48 INFO - GECKO(1637) | [1637, Socket Thread] WARNING: 'NS_FAILED(rv)', file /builds/worker/workspace/build/src/dom/file/ipc/IPCBlobInputStream.cpp, line 209
[task 2019-04-25T08:34:48.347Z] 08:34:48 INFO - GECKO(1637) | [1637, Socket Thread] WARNING: 'NS_FAILED(rv)', file /builds/worker/workspace/build/src/dom/file/ipc/IPCBlobInputStream.cpp, line 209
[task 2019-04-25T08:34:48.350Z] 08:34:48 INFO - GECKO(1637) | [1637, DOM File] WARNING: NS_ENSURE_SUCCESS(rv, rv) failed with result 0x80470002: file /builds/worker/workspace/build/src/netwerk/base/nsFileStreams.cpp, line 77
[task 2019-04-25T08:34:48.942Z] 08:34:48 INFO - GECKO(1637) | [1637, Socket Thread] WARNING: 'NS_FAILED(rv)', file /builds/worker/workspace/build/src/dom/file/ipc/IPCBlobInputStream.cpp, line 209
...
[task 2019-04-25T08:34:49.495Z] 08:34:49 INFO - GECKO(1637) | runChannelListener@resource://gre/modules/WebRequest.jsm:725:28
[task 2019-04-25T08:34:49.496Z] 08:34:49 INFO - GECKO(1637) | observe@resource://gre/modules/WebRequest.jsm:608:14
[task 2019-04-25T08:34:49.765Z] 08:34:49 INFO - TEST-INFO | started process screentopng
[task 2019-04-25T08:34:50.289Z] 08:34:50 INFO - TEST-INFO | screentopng: exit 0
[task 2019-04-25T08:34:50.289Z] 08:34:50 INFO - Buffered messages logged at 08:34:47
[task 2019-04-25T08:34:50.289Z] 08:34:50 INFO - add_task | Entering test test_setup
[task 2019-04-25T08:34:50.289Z] 08:34:50 INFO - add_task | Leaving test test_setup
[task 2019-04-25T08:34:50.289Z] 08:34:50 INFO - add_task | Entering test test_xhr_forms
[task 2019-04-25T08:34:50.289Z] 08:34:50 INFO - Extension loaded
[task 2019-04-25T08:34:50.289Z] 08:34:50 INFO - Buffered messages logged at 08:34:48
[task 2019-04-25T08:34:50.290Z] 08:34:50 INFO - 629 http://mochi.test:8888/tests/toolkit/components/extensions/test/mochitest/file_WebRequest_page3.html?trigger=form&upload=%7B%22%5C%22special%5C%22+ch%EF%BF%BDrs%22%3A%5B%22sp%EF%BF%BDcial%22%5D%2C%22testFile%22%3A%5B%22testFile.pdf%22%5D%2C%22emptyFile%22%3A%5B%22%22%5D%2C%22textInput1%22%3A%5B%22value1%22%5D%7D&enctype=multipart%2Fform-data
[task 2019-04-25T08:34:50.290Z] 08:34:50 INFO - onBeforeRequest upload: http://mochi.test:8888/tests/toolkit/components/extensions/test/mochitest/file_WebRequest_page3.html?trigger=form&upload=%7B%22%5C%22special%5C%22+ch%EF%BF%BDrs%22%3A%5B%22sp%EF%BF%BDcial%22%5D%2C%22testFile%22%3A%5B%22testFile.pdf%22%5D%2C%22emptyFile%22%3A%5B%22%22%5D%2C%22textInput1%22%3A%5B%22value1%22%5D%7D&enctype=multipart%2Fform-data {"formData":{""special" chrs":["spcial"],"testFile":["testFile.pdf"],"emptyFile":[""],"textInput1":["value1"]}}
[task 2019-04-25T08:34:50.290Z] 08:34:50 INFO - TEST-PASS | toolkit/components/extensions/test/mochitest/test_ext_webrequest_upload.html | Intercepted upload http://mochi.test:8888/tests/toolkit/components/extensions/test/mochitest/file_WebRequest_page3.html?trigger=form&upload=%7B%22%5C%22special%5C%22+ch%EF%BF%BDrs%22%3A%5B%22sp%EF%BF%BDcial%22%5D%2C%22testFile%22%3A%5B%22testFile.pdf%22%5D%2C%22emptyFile%22%3A%5B%22%22%5D%2C%22textInput1%22%3A%5B%22value1%22%5D%7D&enctype=multipart%2Fform-data #629 {""special" chrs":["spcial"],"testFile":["testFile.pdf"],"emptyFile":[""],"textInput1":["value1"]} have a requestBody
[task 2019-04-25T08:34:50.290Z] 08:34:50 INFO - TEST-PASS | toolkit/components/extensions/test/mochitest/test_ext_webrequest_upload.html | Upload http://mochi.test:8888/tests/toolkit/components/extensions/test/mochitest/file_WebRequest_page3.html?trigger=form&upload=%7B%22%5C%22special%5C%22+ch%EF%BF%BDrs%22%3A%5B%22sp%EF%BF%BDcial%22%5D%2C%22testFile%22%3A%5B%22testFile.pdf%22%5D%2C%22emptyFile%22%3A%5B%22%22%5D%2C%22textInput1%22%3A%5B%22value1%22%5D%7D&enctype=multipart%2Fform-data #629 matches form data. - Expected: {""special" chrs":["spcial"],"testFile":["testFile.pdf"],"emptyFile":[""],"textInput1":["value1"]}, Actual: {""special" chrs":["spcial"],"testFile":["testFile.pdf"],"emptyFile":[""],"textInput1":["value1"]}
[task 2019-04-25T08:34:50.293Z] 08:34:50 INFO - onCompleted 629 http://mochi.test:8888/tests/toolkit/components/extensions/test/mochitest/file_WebRequest_page3.html?trigger=form&upload=%7B%22%5C%22special%5C%22+ch%EF%BF%BDrs%22%3A%5B%22sp%EF%BF%BDcial%22%5D%2C%22testFile%22%3A%5B%22testFile.pdf%22%5D%2C%22emptyFile%22%3A%5B%22%22%5D%2C%22textInput1%22%3A%5B%22value1%22%5D%7D&enctype=multipart%2Fform-data
[task 2019-04-25T08:34:50.294Z] 08:34:50 INFO - 630 http://mochi.test:8888/favicon.ico
[task 2019-04-25T08:34:50.296Z] 08:34:50 INFO - onCompleted 630 http://mochi.test:8888/favicon.ico
[task 2019-04-25T08:34:50.297Z] 08:34:50 INFO - Buffered messages logged at 08:34:49
[task 2019-04-25T08:34:50.299Z] 08:34:50 INFO - 631 http://mochi.test:8888/tests/toolkit/components/extensions/test/mochitest/file_WebRequest_page3.html?trigger=form&upload=%7B%22%5C%22special%5C%22+ch%EF%BF%BDrs%22%3A%5B%22sp%EF%BF%BDcial%22%5D%2C%22testFile%22%3A%5B%22testFile.pdf%22%5D%2C%22emptyFile%22%3A%5B%22%22%5D%2C%22textInput1%22%3A%5B%22value1%22%5D%2C%22blobAsFile%22%3A%5B%22blobAsFile.csv%22%5D%2C%22formDataField%22%3A%5B%22some+value%22%5D%7D&enctype=multipart%2Fform-data&xhr=1
[task 2019-04-25T08:34:50.300Z] 08:34:50 INFO - onBeforeRequest upload: http://mochi.test:8888/tests/toolkit/components/extensions/test/mochitest/file_WebRequest_page3.html?trigger=form&upload=%7B%22%5C%22special%5C%22+ch%EF%BF%BDrs%22%3A%5B%22sp%EF%BF%BDcial%22%5D%2C%22testFile%22%3A%5B%22testFile.pdf%22%5D%2C%22emptyFile%22%3A%5B%22%22%5D%2C%22textInput1%22%3A%5B%22value1%22%5D%2C%22blobAsFile%22%3A%5B%22blobAsFile.csv%22%5D%2C%22formDataField%22%3A%5B%22some+value%22%5D%7D&enctype=multipart%2Fform-data&xhr=1 {"formData":{""special" chrs":["spcial"],"testFile":["testFile.pdf"],"emptyFile":[""],"textInput1":["value1"],"blobAsFile":["blobAsFile.csv"],"formDataField":["some value"]}}
[task 2019-04-25T08:34:50.301Z] 08:34:50 INFO - TEST-PASS | toolkit/components/extensions/test/mochitest/test_ext_webrequest_upload.html | Intercepted upload http://mochi.test:8888/tests/toolkit/components/extensions/test/mochitest/file_WebRequest_page3.html?trigger=form&upload=%7B%22%5C%22special%5C%22+ch%EF%BF%BDrs%22%3A%5B%22sp%EF%BF%BDcial%22%5D%2C%22testFile%22%3A%5B%22testFile.pdf%22%5D%2C%22emptyFile%22%3A%5B%22%22%5D%2C%22textInput1%22%3A%5B%22value1%22%5D%2C%22blobAsFile%22%3A%5B%22blobAsFile.csv%22%5D%2C%22formDataField%22%3A%5B%22some+value%22%5D%7D&enctype=multipart%2Fform-data&xhr=1 #631 {""special" chrs":["spcial"],"testFile":["testFile.pdf"],"emptyFile":[""],"textInput1":["value1"],"blobAsFile":["blobAsFile.csv"],"formDataField":["some value"]} have a requestBody
[task 2019-04-25T08:34:50.302Z] 08:34:50 INFO - TEST-PASS | toolkit/components/extensions/test/mochitest/test_ext_webrequest_upload.html | Upload http://mochi.test:8888/tests/toolkit/components/extensions/test/mochitest/file_WebRequest_page3.html?trigger=form&upload=%7B%22%5C%22special%5C%22+ch%EF%BF%BDrs%22%3A%5B%22sp%EF%BF%BDcial%22%5D%2C%22testFile%22%3A%5B%22testFile.pdf%22%5D%2C%22emptyFile%22%3A%5B%22%22%5D%2C%22textInput1%22%3A%5B%22value1%22%5D%2C%22blobAsFile%22%3A%5B%22blobAsFile.csv%22%5D%2C%22formDataField%22%3A%5B%22some+value%22%5D%7D&enctype=multipart%2Fform-data&xhr=1 #631 matches form data. - Expected: {""special" chrs":["spcial"],"testFile":["testFile.pdf"],"emptyFile":[""],"textInput1":["value1"],"blobAsFile":["blobAsFile.csv"],"formDataField":["some value"]}, Actual: {""special" chrs":["spcial"],"testFile":["testFile.pdf"],"emptyFile":[""],"textInput1":["value1"],"blobAsFile":["blobAsFile.csv"],"formDataField":["some value"]}
[task 2019-04-25T08:34:50.304Z] 08:34:50 INFO - onCompleted 631 http://mochi.test:8888/tests/toolkit/components/extensions/test/mochitest/file_WebRequest_page3.html?trigger=form&upload=%7B%22%5C%22special%5C%22+ch%EF%BF%BDrs%22%3A%5B%22sp%EF%BF%BDcial%22%5D%2C%22testFile%22%3A%5B%22testFile.pdf%22%5D%2C%22emptyFile%22%3A%5B%22%22%5D%2C%22textInput1%22%3A%5B%22value1%22%5D%2C%22blobAsFile%22%3A%5B%22blobAsFile.csv%22%5D%2C%22formDataField%22%3A%5B%22some+value%22%5D%7D&enctype=multipart%2Fform-data&xhr=1
[task 2019-04-25T08:34:50.305Z] 08:34:50 INFO - 632 http://mochi.test:8888/tests/toolkit/components/extensions/test/mochitest/file_WebRequest_page3.html?trigger=form&upload=%5B%7B%22file%22%3A%22%3Cfile%3E%22%7D%5D&enctype=multipart%2Fform-data&xhr=1
[task 2019-04-25T08:34:50.306Z] 08:34:50 INFO - onBeforeRequest upload: http://mochi.test:8888/tests/toolkit/components/extensions/test/mochitest/file_WebRequest_page3.html?trigger=form&upload=%5B%7B%22file%22%3A%22%3Cfile%3E%22%7D%5D&enctype=multipart%2Fform-data&xhr=1 {"error":"Component returned failure code: 0x80470002 (NS_BASE_STREAM_CLOSED) [nsIBinaryInputStream.available]"}
[task 2019-04-25T08:34:50.307Z] 08:34:50 INFO - TEST-PASS | toolkit/components/extensions/test/mochitest/test_ext_webrequest_upload.html | Intercepted upload http://mochi.test:8888/tests/toolkit/components/extensions/test/mochitest/file_WebRequest_page3.html?trigger=form&upload=%5B%7B%22file%22%3A%22%3Cfile%3E%22%7D%5D&enctype=multipart%2Fform-data&xhr=1 #632 [{"file":"<file>"}] have a requestBody
[task 2019-04-25T08:34:50.307Z] 08:34:50 INFO - Buffered messages finished
[task 2019-04-25T08:34:50.309Z] 08:34:50 INFO - TEST-UNEXPECTED-FAIL | toolkit/components/extensions/test/mochitest/test_ext_webrequest_upload.html | Upload http://mochi.test:8888/tests/toolkit/components/extensions/test/mochitest/file_WebRequest_page3.html?trigger=form&upload=%5B%7B%22file%22%3A%22%3Cfile%3E%22%7D%5D&enctype=multipart%2Fform-data&xhr=1 #632 matches form data. - Expected: [{"file":"<file>"}], Actual: undefined
[task 2019-04-25T08:34:50.310Z] 08:34:50 INFO - SimpleTest.ok@SimpleTest/SimpleTest.js:275:18
[task 2019-04-25T08:34:50.311Z] 08:34:50 INFO - testHandler@SimpleTest/ExtensionTestUtils.js:59:18

Flags: needinfo?(amarchesini)
Flags: needinfo?(amarchesini)
Pushed by amarchesini@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/dd5b6b3cfb60 Port FileCreatorHelper to PBackground, r=smaug https://hg.mozilla.org/integration/autoland/rev/4419a372fd71 Expose mozIIPCBlobInputStream for WebRequestUpload, r=smaug
Regressions: 1547390
Status: NEW → RESOLVED
Closed: 6 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla68
Regressions: 1519063
No longer blocks: 1482752
Regressed by: 1482752
Has Regression Range: --- → yes
Performance Impact: --- → P3
Whiteboard: [fxperf:p2][qf:p3:responsiveness][necko-triaged] → [fxperf:p2][necko-triaged]
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: