The allowed effects in WebDragClient::startDrag are hard-coded to be DROPEFFECT_COPY | DROPEFFECT_LINK | DROPEFFECT_MOVE. Instead, the list of allowed drop effects should be determined by the allowed operations of the drag source (i.e. event.dataTransfer.effectsAllowed).
<rdar://problem/5015957>
Created attachment 40674 [details] Patch with manual test case I could not think of a good name for the function draggingSourceOperationMaskToDragCursors in file WebDragClient.cpp. I am open to suggestions. We cannot test this using DRT because DRT looks at the programmatic drop cursor and until bug #24731 is fixed this value is hard-coded to DragOperationCopy. That is, there is a discrepancy in the Windows build between the Windows API-based drop effect and the WebKit drop effect. Because DRT cannot read the screen buffer to determine the cursor, a manual test is needed.
Created attachment 40675 [details] Manual test case (included in patch) For convenience, here is the test case included in the patch.
Comment on attachment 40674 [details] Patch with manual test case Clearing flags on attachment: 40674 Committed r49268: <http://trac.webkit.org/changeset/49268>
All reviewed patches have been landed. Closing bug.