Figure out what do to with canDrop() with respect to sync vs async

NEW
Unassigned

Status

()

enhancement
P3
normal
2 years ago
8 months ago

People

(Reporter: mak, Unassigned)

Tracking

(Blocks 2 bugs)

Firefox Tracking Flags

(Not tracked)

Details

(Whiteboard: [fxsearch])

Reporter

Description

2 years ago
canDrop is synchronous. It currently checks that we don't drop a container inside itself or a descendant container and to do that it has to walk the container hierarchy by doing main-thread I/O.

Collecting the information on drag start is also not possible, because dragstart is a synchronous operation where we must synchronously fill the dataTransfer (there's some ongoing work to make this async but no ETA).
Reporter

Comment 1

Last year
we could keep an up-to-date bookmarks hierarchy in a memory cache. The main issue would be a synchronous request before the cache has been populated, for which we could retain a synchronous fallback, or throw and let the consumer take the more pessimistic fallback.
See Also: → 1047820
Summary: Figure out what do to with canDrop() → Figure out what do to with canDrop() with respect to sync vs async
You need to log in before you can comment on or make changes to this bug.