Convert utility process Shell Handler Win IPC to mojo

Shell operations can cause 3rd-party shell extensions to be loaded into
the calling process (browser). The utility process protects the browser
process from potential instability 3rd-party extensions can cause.

The feature is enabled by the IsolateShellOperations feature flag which
is off by default, in which case, Chrome calls the WIN shell operations
(::GetOpenFileName and ::GetSaveFileName) directly.

Change the client interface for these Shell Handler Win IPC to use mojo
and move the receiver in the utility process into the ShellHandler mojo
interface. Make the mojo calls SYNC: the old code used WaitableEvent to
emulate SYNC IPC. Remove that code, use real SYNC calls instead.

Remove last chrome_utility_messages.h IPC, add clean-up TODO (this file
should be renamed param traits now there are no more IPC in it).

Patch is based on an earlier patch by pmonette@ [1], which was reverted
due to gyp DBG build problems (see issue 73098).

[1] https://codereview.chromium.org/2122303002

Bug: 597124, 73098
Cq-Include-Trybots: master.tryserver.chromium.win:win10_chromium_x64_rel_ng
Change-Id: Ia4ef401bbc343428cbdb5fc1db58e64c06c82c93
Reviewed-on: https://chromium-review.googlesource.com/538519
Reviewed-by: Will Harris <wfh@chromium.org>
Reviewed-by: Jochen Eisinger <jochen@chromium.org>
Reviewed-by: Ken Rockot <rockot@chromium.org>
Reviewed-by: Robert Sesek <rsesek@chromium.org>
Reviewed-by: Sam McNally <sammc@chromium.org>
Reviewed-by: Patrick Monette <pmonette@chromium.org>
Commit-Queue: Noel Gordon <noel@chromium.org>
Cr-Commit-Position: refs/heads/master@{#482779}

CrOS-Libchrome-Original-Commit: 8584e4dc5242f4519c333ffd5ebbe671d68373f4
1 file changed
tree: 54d9bd94837eea1b95e7926b590f4740dde9c6bc
  1. base/
  2. build/
  3. components/
  4. dbus/
  5. device/
  6. ipc/
  7. mojo/
  8. testing/
  9. third_party/
  10. ui/