Hi Alison,
We chatted about this in the CSA sync today. People were generally fine with making drop navigations browser-initiated, but this is going to require some work to implement properly, because we don't want to just pass the URL back from the renderer to the browser. The CL I linked in my previous reply is roughly what I think the Mojo plumbing would need to look like.
The other part of this is preserving our security restrictions. For example, we do not allow non-WebUI pages to navigate to WebUI pages. So for drop navigations, we need to be careful that a web page can't put a URL to "chrome://settings/passwords" in the drag data, and cause us to navigate to WebUI from a non-WebUI page.
Currently, this is handled ad-hoc in several places, and our final safety fallback is the fact that the navigation is (more-or-less) renderer-initiated today; if the renderer tries to initiate a navigation to a URL it shouldn't be able to access, we'll block it then. We need to make sure we don't lose this element of safety when we change things to be browser-initiated, because browser-initiated navigations have far fewer restrictions. As a "bonus", drag and drop can synthesize URLs from text in the drag data–so we need to make sure that dragging and dropping chrome://settings/passwords from a non-WebUI page is also blocked.
A lot of complexity from my previous attempts came from this "bonus" feature; since then, we actually tag the drag data with the initiating origin. Now that we have that, we should have a more robust and safe path towards blocking these types of disallowed navigations reliably.
Daniel