Closed Bug 1909892 Opened 2 years ago Closed 1 year ago

www.dropbox.com - Unable to upload files

Categories

(Web Compatibility :: Site Reports, defect, P1)

Firefox 130
ARM
Android

Tracking

(Webcompat Priority:P1, Webcompat Score:9, firefox128 wontfix, firefox130 wontfix, firefox138 wontfix, firefox141 verified)

VERIFIED FIXED
Webcompat Priority P1
Webcompat Score 9
Tracking Status
firefox128 --- wontfix
firefox130 --- wontfix
firefox138 --- wontfix
firefox141 --- verified

People

(Reporter: ctanase, Unassigned)

References

()

Details

(Keywords: webcompat:platform-bug, webcompat:site-report, Whiteboard: [webcompat-source:web-bugs][webcompat:sightline])

User Story

platform:android
impact:workflow-broken
configuration:general
affects:all
branch:release
diagnosis-team:webcompat

Attachments

(2 files)

Environment:
Operating system: Android 11
Firefox version: Firefox Mobile 128.0/130

Steps to reproduce:

  1. Go to https://www.dropbox.com
  2. Log into your account.
  3. Tap on "Upload" and then on "File".
  4. Upload any file.
  5. Observe the behavior.

Expected Behavior:
The file gets uploaded.

Actual Behavior:
The file is stuck in queue.

Notes:

  • Reproduces regardless of the status of ETP
  • Reproduces in Firefox Nightly, and Firefox Release
  • Does not reproduce in Chrome

Created from https://github.com/webcompat/web-bugs/issues/139564

Version: unspecified → Firefox 130
Severity: -- → S2
User Story: (updated)
Priority: -- → P1
User Story: (updated)

We get this far and it looks like isWebkitFile is false which causes us to not get much further:

              this.uploadLocalFiles = async() => {
                const t = this.itemsAsList.filter(
                  (
                    t => t.source === s.FileSource.Computer &&
                    !t.isDir &&
                    t.file &&
                    - 1 !== Q.indexOf(t.status)
                  )
                );
                for (const e of t) e.file &&
                s.isWebkitFile(e.file) &&
                (
                  this.scheduler.addFile(e.file, e.destPath, e, e.contentEncryptionInfo),
                  e.status = s.UploadStatus.Queued,
                  e.bytesUploaded = 0,
                  this.updateParentStatus(e)
                );
                this.isStopped = !1,
                this.notifyAll(),
                await this.scheduler.startUploading(),
                this.notifyAll()

isWebkitFile looks something like: e => 'webkitRelativePath' in e

webkitRelativePath is not exposed on Android because:

- name: dom.webkitBlink.dirPicker.enabled
  type: RelaxedAtomicBool
  value: @IS_NOT_ANDROID@
  mirror: always

setting dom.webkitBlink.dirPicker.enabled=true makes uploading work

dom.webkitBlink.dirPicker.enabled has always been disabled on Android: https://hg.mozilla.org/mozilla-central/rev/5785e6e80c66

Smaug, do you know why?

Flags: needinfo?(smaug)

baku might recall. (Was it that there isn't/wasn't a good file picker or what on Android?)

Flags: needinfo?(smaug) → needinfo?(amarchesini)

Baku said he doesn't remember. I'll investigate.

Flags: needinfo?(amarchesini) → needinfo?(smaug)

<input type=file webkitdirectory> is definitely not working on Android when enabled, but it is not really working on mobile Chrome either.
Need to do some more testing.

Flags: needinfo?(smaug)

There's logging under "FilePickerDelegate" which may help:

const { debug, warn } = GeckoViewUtils.initLogging("FilePickerDelegate");

I guess that GeckoView side have to design delegate API (bug 1674428).

Depends on: 1674428
Whiteboard: [webcompat-source:web-bugs] → [webcompat-source:web-bugs][webcompat:sightline]
No longer depends on: 1917946
Webcompat Priority: --- → P1
Webcompat Score: --- → 9

Still broken, sits on "Waiting". Note that bug 1674428 has landed, but did not fix this. Jeff, can you recheck what you found before?

Flags: needinfo?(jmuizelaar)

I confirm it's still an issue on the latest Nightly, the upload remains stuck in queue.

SInce bug 1674428 didn't fix this, can you take another look? Thanks

Flags: needinfo?(m_kato)

Summarizing the history a bit:

  • Per comment 5 - 6, it sounds like the Dropbox JS here only works if dom.webkitBlink.dirPicker.enabled is set to true
  • That pref has always been off-by-default on mobile due to some missing piece there (comment 6, comment 11), and maybe (?) the missing piece was just bug 1674428 (comment 12).
  • We've now fixed bug 1674428. (But the pref is still off-by-default which is the main thing here, and that's why Dropbox still doesn't work.)

Maybe we can enable the pref on Android now (i.e. make it true instead of @IS_NOT_MOBILE@)? Or is there something beyond bug 1674428 that we need to fix before we can enable that pref? Adding ni=smaug since he had looked into what-if-anything was forcing us to keep that pref disabled and had a testcase (comment 8, comment 11).

Flags: needinfo?(smaug)

It looks to me that bug 1887878 is needed to resolve the problem fully, and Makoto is assigned to that.

bug 1674428 added API only, so this has no UX. Actually, I am working on android component to implement directory picker as bug 1887878. When I fix it, I will turn on both prefs in its bug.

Flags: needinfo?(m_kato)
Depends on: 1887878
Flags: needinfo?(jmuizelaar)
Blocks: 1950651

This works now with bug 1887878 fixed

Status: NEW → RESOLVED
Closed: 1 year ago
Resolution: --- → FIXED

Verified as FIXED using RC Build fenix android-arm64-v8a

Tested with:

Browser / Version: Firefox 141.0 Build 2016102626
Operating System: Google Pixel 3 (Android 12) -1080 x 2160 pixels, 18:9 ratio (~443 ppi density)
Operating System: Oppo Find X5 (Android 13) - 1080 x 2400 pixels, 20:9 ratio (~402 ppi density)

Status: RESOLVED → VERIFIED
Attached image rc build 141 works
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: