Unable to select multiple files for HTML Input element
Categories
(Firefox for Android Graveyard :: General, defect, P1)
Tracking
(fennec?, firefox61 fixed)
People
(Reporter: andrew, Assigned: andrei.a.lazar)
References
Details
(Whiteboard: [Leanplum])
Attachments
(3 files)
User Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0 Build ID: 20170323105023 Steps to reproduce: 1. Open any webpage containing a HTML input element with type set to file and the multiple attribute set: https://jsfiddle.net/8e5ueap4/ 2. Click on the input element 3. Select the 'Documents' option 4. Long press (hold) an item to attempt to enable multiple file selection Actual results: Long pressing the item does nothing, and only one file is allowed to be selected. Expected results: Long pressing an item should select it and enable selection mode. As with what happens when using the stock browser on Android.
Comment 1•7 years ago
|
||
Thanks for reporting this! I was able to reproduce this with Samsung Galaxy Note 4 (Android 5.0.1) and Asus ZenPad 8(Android 6.0.1) on all branches. Change the status to new and set the flags accordingly. Note: not reproducible on Chrome.
Updated•7 years ago
|
firefox for android `<input type="file" multiple>` not work sony xpreia x5c android 7.1.1
Comment 3•6 years ago
|
||
I'm also having the same problem. We have a site where the users can send many photos for printing. The users are trying to send many pictures, and can't do it using FF. Our support team has to always say to use Chrome, and it's very embarrassing. Any hopes that this bug will be fixed?
Comment 4•6 years ago
|
||
(In reply to eduardo.gaedke from comment #3) > I'm also having the same problem. > > We have a site where the users can send many photos for printing. > > The users are trying to send many pictures, and can't do it using FF. > Our support team has to always say to use Chrome, and it's very embarrassing. > > Any hopes that this bug will be fixed? please arrange!
Comment 5•6 years ago
|
||
Can this get fixed? It's a big pain point to not be able to select multiple files at once.
Updated•6 years ago
|
[triage] If this is used often, it's critical. However, I'm not sure how often it's used. I think the picture use case above (comment 2) is the major one I can think of.
Comment 9•6 years ago
|
||
One use case for me is, wanting to upload a batch of photos to Google Photos via the web interface. This is currently barely possible since I have to select them one by one instead of choosing all at once.
Updated•6 years ago
|
Assignee | ||
Updated•6 years ago
|
Comment hidden (mozreview-request) |
Assignee | ||
Comment 11•6 years ago
|
||
The extra parameter to the event message which contains a value that indicates if the input element supports multiple files. Also, in android's FilePicker this value is then checked and handled by marking the Intent with a specific flag which indicates if the user should be allowed to pick multiple files. My thoughts are that the accepted file format doesn't exclude the multiple choice.
Comment 12•6 years ago
|
||
mozreview-review |
Comment on attachment 8967762 [details] Bug 1355389 - Added one extra parameter to the message from the emitted event, parameter which indicates if the input element has multiple attribute. https://reviewboard.mozilla.org/r/236468/#review243172 This lgtm: I verified that the multiple selection UI works and is disabled when `multiple` is not present. However, I did not verify that the server will actually receive multiple uploads because setting up a test case will take a little while for me off-hand. Andrei, did you have a chance to test that? To save time if everything is working as expected, I'll land this as is. If the server is unable to receive multiple files, please file a follow up. ::: commit-message-8a94f:1 (Diff revision 1) > +Bug 1355389 - Added one extra parameter to the message from the emitted event, parameter which indicates if the input element has multiple attribute. r?sdaswani nit: This commit message should be more high-level and specific, e.g.: `Bug 1355389: Enable multi-selection for file uplodas.` It's not worth blocking push over though. ::: mobile/android/base/java/org/mozilla/gecko/FilePicker.java:198 (Diff revision 1) > addActivities(intent, intents, baseIntents); > } > } else { > baseIntent = getIntent("*/*"); > + if (isModeOpenMultiple) { > + baseIntent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true); nit: I don't love the code duplication but given how this method is written, it's probably easier to do it this way.
Comment 13•6 years ago
|
||
Pushed by michael.l.comella@gmail.com: https://hg.mozilla.org/integration/autoland/rev/376bf7bbb828 Added one extra parameter to the message from the emitted event, parameter which indicates if the input element has multiple attribute. r=mcomella
Comment 14•6 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/376bf7bbb828
Assignee | ||
Comment 15•6 years ago
|
||
Tested and I can confirm it works as expected.
Comment 16•6 years ago
|
||
read file prop throw error. reproduce: 1. open https://xianqiao.wang/test/firefox-file-upload/ in firefox for andorid 2. click upload 3. choose multiple file
Comment 17•6 years ago
|
||
This does not yet work properly. When more than one file is selected, an exception is thrown. Follow the steps in Comment 16 to reproduce.
Updated•6 years ago
|
Assignee | ||
Comment 18•6 years ago
|
||
Hello Jovan, the work for this ticket is done. The user was not able to select multiple files even when the HTML element (input) contained the multiple attribute. However, this is only a partial fix, because for now, even though you can select multiple files, only the first one is going to be uploaded. The rest of this fix will be found here (https://bugzilla.mozilla.org/show_bug.cgi?id=1456557) as soon as possible. Thank you!
Comment 19•6 years ago
|
||
Hello! Selecting multiple files works properly now; however this bug will be signed as verified after https://bugzilla.mozilla.org/show_bug.cgi?id=1456557 will be fixed as well, since both are part of the same action/behavior.
Assignee | ||
Updated•6 years ago
|
Updated•6 years ago
|
Comment 20•5 years ago
|
||
Hello!
Fixed the problem, not being able to upload multiple files.
The patch against Fennec 71.0a1 requires changes in:
- FilePicker.js
- FilePicker.java
- FilePickerResultHandler.java
Is there anyone here who is able to guide me through the patch submission process?
Or better: to check, correct and submit the patch?
Please forgive me: I have no idea how to contribute properly.
Assignee | ||
Comment 21•5 years ago
|
||
Hello PeterS and thank you for your interest.
You can follow this link in order to setup your environment and be able to publish your patch.
If you manage to publish it to phabricator, you can ask me as a reviewer (AndreiLazar is my tag).
If you have a hard time following the steps from the link, you can contact me on slack (@alazar).
I hope this was useful.
Comment 22•5 years ago
|
||
Updated•5 years ago
|
Assignee | ||
Updated•5 years ago
|
Assignee | ||
Comment 23•5 years ago
|
||
Hello PeterS,
you need to post a build from treeherder which is going to be validated by QA team (see example here and documentation for setting up your treeherder environment) and ESR uplift request (see example here) for this patch in order for your changes to be contained in the next release.
Thank you again for contribution.
Comment 24•5 years ago
|
||
Pushed by csabou@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/f04641fbd147
Filepicker can now handle multiple files r=AndreiLazar
Comment 25•5 years ago
|
||
Backed out changeset f04641fbd147 (Bug 1355389) for linting at /builds/worker/checkouts/gecko/mobile/android/components/FilePicker.js.
Failure log: https://treeherder.mozilla.org/logviewer.html#/jobs?job_id=268387714&repo=autoland&lineNumber=300
[vcs 2019-09-25T16:19:33.390Z] 283282 files updated, 0 files merged, 0 files removed, 0 files unresolved
[vcs 2019-09-25T16:19:33.604Z] updated to f04641fbd14787d57547375aebbfea16abe64f8b
[vcs 2019-09-25T16:19:33.609Z] PERFHERDER_DATA: {"framework": {"name": "vcs"}, "suites": [{"extraOptions": ["m3.xlarge"], "lowerIsBetter": true, "name": "clone", "serverUrl": "us-west-1.hgmointernal.net", "shouldAlert": false, "subtests": [], "value": 166.16022396087646}, {"extraOptions": ["m3.xlarge"], "lowerIsBetter": true, "name": "update", "serverUrl": "us-west-1.hgmointernal.net", "shouldAlert": false, "subtests": [], "value": 110.38971590995789}, {"extraOptions": ["m3.xlarge"], "lowerIsBetter": true, "name": "overall", "serverUrl": "us-west-1.hgmointernal.net", "shouldAlert": false, "subtests": [], "value": 276.7523009777069}, {"extraOptions": ["m3.xlarge"], "lowerIsBetter": true, "name": "overall_clone", "serverUrl": "us-west-1.hgmointernal.net", "shouldAlert": false, "subtests": [], "value": 276.7523009777069}, {"extraOptions": ["m3.xlarge"], "lowerIsBetter": true, "name": "overall_clone_fullcheckout", "serverUrl": "us-west-1.hgmointernal.net", "shouldAlert": false, "subtests": [], "value": 276.7523009777069}]}
[vcs 2019-09-25T16:19:33.904Z] TinderboxPrint:<a href=https://us-west-1.hgmointernal.net/integration/autoland/rev/f04641fbd14787d57547375aebbfea16abe64f8b title='Built from autoland revision f04641fbd14787d57547375aebbfea16abe64f8b'>f04641fbd14787d57547375aebbfea16abe64f8b</a>
[setup 2019-09-25T16:19:33.904Z] GECKO_PATH is /builds/worker/checkouts/gecko
[task 2019-09-25T16:19:33.905Z] executing ['bash', '-cx', './mach lint -l file-perm -f treeherder -f json:/builds/worker/mozlint.json']in /builds/worker/checkouts/gecko
[task 2019-09-25T16:19:33.908Z] + ./mach lint -l file-perm -f treeherder -f json:/builds/worker/mozlint.json
[task 2019-09-25T16:19:34.911Z] New python executable in /builds/worker/checkouts/gecko/obj-x86_64-pc-linux-gnu/_virtualenvs/init/bin/python2.7
[task 2019-09-25T16:19:34.911Z] Also creating executable in /builds/worker/checkouts/gecko/obj-x86_64-pc-linux-gnu/_virtualenvs/init/bin/python
[task 2019-09-25T16:19:36.646Z] Installing setuptools, pip, wheel...done.
[task 2019-09-25T16:19:37.761Z] running build_ext
[task 2019-09-25T16:19:37.761Z] building 'psutil._psutil_linux' extension
[task 2019-09-25T16:19:37.761Z] creating build
[task 2019-09-25T16:19:37.761Z] creating build/temp.linux-x86_64-2.7
[task 2019-09-25T16:19:37.761Z] creating build/temp.linux-x86_64-2.7/psutil
[task 2019-09-25T16:19:37.761Z] x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -DPSUTIL_POSIX=1 -DPSUTIL_VERSION=543 -DPSUTIL_LINUX=1 -I/usr/include/python2.7 -c psutil/_psutil_common.c -o build/temp.linux-x86_64-2.7/psutil/_psutil_common.o
[task 2019-09-25T16:19:37.761Z] x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -DPSUTIL_POSIX=1 -DPSUTIL_VERSION=543 -DPSUTIL_LINUX=1 -I/usr/include/python2.7 -c psutil/_psutil_posix.c -o build/temp.linux-x86_64-2.7/psutil/_psutil_posix.o
[task 2019-09-25T16:19:37.761Z] x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -DPSUTIL_POSIX=1 -DPSUTIL_VERSION=543 -DPSUTIL_LINUX=1 -I/usr/include/python2.7 -c psutil/_psutil_linux.c -o build/temp.linux-x86_64-2.7/psutil/_psutil_linux.o
[task 2019-09-25T16:19:37.761Z] creating build/lib.linux-x86_64-2.7
[task 2019-09-25T16:19:37.761Z] creating build/lib.linux-x86_64-2.7/psutil
[task 2019-09-25T16:19:37.761Z] x86_64-linux-gnu-gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wl,-Bsymbolic-functions -Wl,-z,relro -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security build/temp.linux-x86_64-2.7/psutil/_psutil_common.o build/temp.linux-x86_64-2.7/psutil/_psutil_posix.o build/temp.linux-x86_64-2.7/psutil/_psutil_linux.o -o build/lib.linux-x86_64-2.7/psutil/_psutil_linux.so
[task 2019-09-25T16:19:37.761Z] building 'psutil._psutil_posix' extension
[task 2019-09-25T16:19:37.761Z] x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -DPSUTIL_POSIX=1 -DPSUTIL_VERSION=543 -DPSUTIL_LINUX=1 -I/usr/include/python2.7 -c psutil/_psutil_common.c -o build/temp.linux-x86_64-2.7/psutil/_psutil_common.o
[task 2019-09-25T16:19:37.761Z] x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -DPSUTIL_POSIX=1 -DPSUTIL_VERSION=543 -DPSUTIL_LINUX=1 -I/usr/include/python2.7 -c psutil/_psutil_posix.c -o build/temp.linux-x86_64-2.7/psutil/_psutil_posix.o
[task 2019-09-25T16:19:37.761Z] x86_64-linux-gnu-gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wl,-Bsymbolic-functions -Wl,-z,relro -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security build/temp.linux-x86_64-2.7/psutil/_psutil_common.o build/temp.linux-x86_64-2.7/psutil/_psutil_posix.o -o build/lib.linux-x86_64-2.7/psutil/_psutil_posix.so
[task 2019-09-25T16:19:37.761Z] copying build/lib.linux-x86_64-2.7/psutil/_psutil_linux.so -> psutil
[task 2019-09-25T16:19:37.761Z] copying build/lib.linux-x86_64-2.7/psutil/_psutil_posix.so -> psutil
[task 2019-09-25T16:19:37.761Z]
[task 2019-09-25T16:19:37.761Z] Error processing command. Ignoring because optional. (optional:packages.txt:comm/build/virtualenv_packages.txt)
[task 2019-09-25T16:25:51.247Z] TEST-UNEXPECTED-ERROR | /builds/worker/checkouts/gecko/mobile/android/components/FilePicker.js:0 | Execution permissions on a source file (file-perm)
[taskcluster 2019-09-25 16:25:51.955Z] === Task Finished ===
[taskcluster 2019-09-25 16:25:53.089Z] Unsuccessful task run with exit code: 1 completed in 658.85 seconds
Comment 26•5 years ago
|
||
Hi Andrei Lazar,
thank for your guidance.
I have three problems:
1.) The file permissions in the first patch were wrong. I´ve already fixed this and submitted again. Hope this is the right way.
2.) You mentioned that I have to post a build from treeherder. What are the steps to do? (I don´t have a push-access-account as stated in the documentation link https://mozilla-version-control-tools.readthedocs.io/en/latest/hgmozilla/auth.html).
3.) I understand the purpose of "ESR uplift request". Which steps are necessary?
Assignee | ||
Comment 27•5 years ago
•
|
||
Hello PeterS,
1.) The file permissions in the first patch were wrong. I´ve already fixed this and submitted again. Hope this is the right way.
Which one? The one that I posted?
2.) You mentioned that I have to post a build from treeherder. What are the steps to do? (I don´t have a push-access-account as stated in the documentation link https://mozilla-version-control-tools.readthedocs.io/en/latest/hgmozilla/auth.html).
That's my bad, I forgot you need extra privileges in order to use treeherder.
Stefan, how would you suggest proceeding further?
3.) I understand the purpose of "ESR uplift request". Which steps are necessary?
Filling that form as in the example should be enough, but first you need to get your patch verified by the QA through a signed build (that's why I suggested using treeherder).
The thing is, Fennec is in maintenance mode (from here comes the need for ESR uplift requests) because it's going to be replaced by Fenix very soon, which means your contribution is more needed and would have more value on it (check here), and it's way much easier to contribute. Please consider this.
Updated•5 years ago
|
Comment 28•5 years ago
|
||
This is a new feature. We should be minimizing the amount of change that goes into Firefox for Android as part of Gecko 68. Working on this in Mozilla's Android Components would be a better place for this work, https://mozac.org/contributing/ it is used to build projects like Fenix (Firefox Preview)
Comment 29•5 years ago
|
||
I agree, but at the same time if this patch doesn't introduce any regression I feel this contribution should be welcomed. Furthermore since it's not going to be long lived because of the switch to Fenix. At a first glance the solution looks good but I don't really have much time to look into more detail, good job @PeterS.
Comment 30•5 years ago
|
||
Peter, unfortunately we have decided to not land this patch. The risk of regressions is too big. I am very sorry about this, I know you put a lot of time in this patch.
Updated•3 years ago
|
Description
•