DescriptionMojo Channel: Fix deferred proxy dispatch; support paused channels
This is a twofold change because of some inherent overlap:
1. Fixes deferred proxy dispatch. This means if a message comes in
for an unknown associated interface endpoint, we still dispatch
to the proxy thread, as was the intended behavior. Adds a test
to verify that this actually works now.
2. Adds the ability to create a "paused" Channel, and corresponding
Unpause and Flush operations (which only ChannelMojo supports).
This is used by a follow-up CL to avoid having
RenderProcessHostImpl perform its own message queueing, which it
does to allow certain initialization messages to preempt other
early Sends.
RPHI must not perform its own queueing once the Channel exists:
interface requests and mojom messages must also be queued, but RPHI
only hooks into the IPC::Sender interface. Queueing outside of the
Channel breaks FIFO between early IPC::Messages and early Channel-
associated Mojo IPC.
In order to support both of these changes, the manual serialization
gunk has also been removed from MessagePipeReader (it was only there
to support thread-safe Send, which we've since abandoned.) This is
necessary to ensure that all send logic goes through the same single
queueing mechanism in the ChannelAssociatedGroupController.
Part a series of CLs to enable and demonstrate WebContents associated
interfaces:
1. This CL
2. https://codereview.chromium.org/2309513002
3. https://codereview.chromium.org/2310563002
4. https://codereview.chromium.org/2310583002
BUG=612500
Committed: https://crrev.com/401fb2ccad8315b60f9f6dcbf892e628975cee54
Cr-Commit-Position: refs/heads/master@{#416678}
Patch Set 1 #
Total comments: 6
Patch Set 2 : . #
Dependent Patchsets: Messages
Total messages: 22 (12 generated)
|