My first step was going to be moving WebInputEvent and its friends into platform/. I tried it a few weeks ago but it touched hundreds of files all over the entire src/ tree: https://codereview.chromium.org/1756603004
My next attempt was going to be to move the actual source files but leave "proxy" headers in public/web with a comment saying they shouldn't contain any real code.
If we move them down into platform/ they can also be used in all layers of blink.