New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 619202 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
please use my google.com address
Closed: Aug 2016
Cc:
EstimatedDays: ----
NextAction: ----
OS: Windows
Pri: 2
Type: Bug

Blocked on:
issue 630414

Blocking:
issue 612500
issue 609607



Sign in to add a comment

Create service registry between renderer main thread and browser IO thread

Project Member Reported by jam@chromium.org, Jun 10 2016

Issue description

More background in https://docs.google.com/document/d/1iN5cz-zCqN09eWxk6w84ioGifOO4f7PMS33S-cYi-zw/edit

The summary is we want to be able to make mojo calls from RenderFrameImpl to the IO thread that maintain order with chrome IPCs. This might also include talking to a service registry to get an interface ptr to a newly created interface (on the browser IO thread). We need the interface request to not hop through the UI thread. This is because the interface will be associated with ChannelMojo (to keep order with chrome IPCs going to the IO thread). If the interface request goes to a different thread, until it's bound we would stop dispatching chrome IPCs on the IO thread which would be a performance problem.

Ken said he'll look into this as part of converting view/host chrome IPCs to mojo.
 

Comment 1 by jam@chromium.org, Jun 13 2016

Ken: do you have an ETA on when you'll have a chance to get to this? Depending on that, we could add something temporarily (possibly like solution 1 from doc) in the meantime so we can unblock the parent bug?

Comment 2 by roc...@chromium.org, Jun 13 2016

Starting on it today. I would expect it to take up to a week to get right and get landed.

Comment 3 by roc...@chromium.org, Jun 14 2016

Blocking: 612500

Comment 4 by jam@chromium.org, Jun 14 2016

Great, thanks

Project Member

Comment 5 by bugdroid1@chromium.org, Jul 20 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/a34707ca8e2548fcc804ffaa9571adcba2d024a8

commit a34707ca8e2548fcc804ffaa9571adcba2d024a8
Author: rockot <rockot@chromium.org>
Date: Wed Jul 20 04:28:32 2016

Plumb explicit IPC task runner through to IPC::Channel creation

In preparation for a follow-up CL, IPC::ChannelMojo needs to
know which TaskRunner it will be used from despite being constructed
on some arbitray other thread (for e.g. ChannelProxy).

This CL plumbs through an IPC TaskRunner to various Channel
instantiation sites to avoid lots of noise in the other CL.

There are no behavioral changes introduced here.

BUG=612500, 619202 

Review-Url: https://codereview.chromium.org/2159293002
Cr-Commit-Position: refs/heads/master@{#406486}

[modify] https://crrev.com/a34707ca8e2548fcc804ffaa9571adcba2d024a8/content/browser/renderer_host/render_process_host_impl.cc
[modify] https://crrev.com/a34707ca8e2548fcc804ffaa9571adcba2d024a8/content/child/child_thread_impl.cc
[modify] https://crrev.com/a34707ca8e2548fcc804ffaa9571adcba2d024a8/content/test/render_thread_impl_browser_test_ipc_helper.cc
[modify] https://crrev.com/a34707ca8e2548fcc804ffaa9571adcba2d024a8/ipc/ipc_channel.h
[modify] https://crrev.com/a34707ca8e2548fcc804ffaa9571adcba2d024a8/ipc/ipc_channel_common.cc
[modify] https://crrev.com/a34707ca8e2548fcc804ffaa9571adcba2d024a8/ipc/ipc_channel_factory.cc
[modify] https://crrev.com/a34707ca8e2548fcc804ffaa9571adcba2d024a8/ipc/ipc_channel_factory.h
[modify] https://crrev.com/a34707ca8e2548fcc804ffaa9571adcba2d024a8/ipc/ipc_channel_mojo.cc
[modify] https://crrev.com/a34707ca8e2548fcc804ffaa9571adcba2d024a8/ipc/ipc_channel_mojo.h
[modify] https://crrev.com/a34707ca8e2548fcc804ffaa9571adcba2d024a8/ipc/ipc_channel_mojo_unittest.cc
[modify] https://crrev.com/a34707ca8e2548fcc804ffaa9571adcba2d024a8/ipc/ipc_channel_proxy.cc
[modify] https://crrev.com/a34707ca8e2548fcc804ffaa9571adcba2d024a8/ipc/ipc_channel_proxy_unittest.cc
[modify] https://crrev.com/a34707ca8e2548fcc804ffaa9571adcba2d024a8/ipc/ipc_channel_unittest.cc
[modify] https://crrev.com/a34707ca8e2548fcc804ffaa9571adcba2d024a8/ipc/ipc_fuzzing_tests.cc
[modify] https://crrev.com/a34707ca8e2548fcc804ffaa9571adcba2d024a8/ipc/ipc_mojo_perftest.cc
[modify] https://crrev.com/a34707ca8e2548fcc804ffaa9571adcba2d024a8/ipc/ipc_perftest_support.cc
[modify] https://crrev.com/a34707ca8e2548fcc804ffaa9571adcba2d024a8/ipc/ipc_send_fds_test.cc
[modify] https://crrev.com/a34707ca8e2548fcc804ffaa9571adcba2d024a8/ipc/ipc_test_base.cc
[modify] https://crrev.com/a34707ca8e2548fcc804ffaa9571adcba2d024a8/ipc/ipc_test_base.h
[modify] https://crrev.com/a34707ca8e2548fcc804ffaa9571adcba2d024a8/ipc/sync_socket_unittest.cc
[modify] https://crrev.com/a34707ca8e2548fcc804ffaa9571adcba2d024a8/tools/ipc_fuzzer/message_replay/replay_process.cc

Project Member

Comment 6 by bugdroid1@chromium.org, Jul 21 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/e1037f997da9e1d44ca3b09d4ff32f0465673091

commit e1037f997da9e1d44ca3b09d4ff32f0465673091
Author: rockot <rockot@chromium.org>
Date: Thu Jul 21 00:13:20 2016

Support early associated interface binding on ChannelMojo

Changes the associated bindings implementation for ChannelMojo
such that remote interfaces can be acquired immediately upon
ChannelMojo construction rather than having to wait for connection
on the IO thread.

Simplifies the Channel bootstrapping process, removing a round-trip
Init message (and in fact the entire IPC::mojom::Boostrap interface)
since there's no need to actually exchange associated interface handles
over the pipe. Instead both sides can assume the other will use a fixed,
reserved endpoint ID for their IPC::mojom::Channel interface.

This also removes the restriction that associated interfaces must be
added to a Channel after Init. Instead the same constraints apply as
with AddFilter: an associated interface, like a filter, may be added
at any time as long as either Init hasn't been called OR the remote
process hasn't been launched.

The result of this CL is that any place it's safe to AddFilter,
it's also safe to AddAssociatedInterface; and any place it's safe to
Send, it's also safe to GetRemoteAssociatedInterface and begin using
any such remote interface immediately.

Remote interface requests as well as all messages to remote interfaces
retain FIFO with respect to any Send calls on the same thread. Local
interface request dispatch as well as all messages on locally bound
associated interfaces retain FIFO with respect to any OnMessageReceived
calls on the same thread.

BUG=612500, 619202 

Review-Url: https://codereview.chromium.org/2163633003
Cr-Commit-Position: refs/heads/master@{#406720}

[modify] https://crrev.com/e1037f997da9e1d44ca3b09d4ff32f0465673091/ipc/ipc.mojom
[modify] https://crrev.com/e1037f997da9e1d44ca3b09d4ff32f0465673091/ipc/ipc_channel.h
[modify] https://crrev.com/e1037f997da9e1d44ca3b09d4ff32f0465673091/ipc/ipc_channel_mojo.cc
[modify] https://crrev.com/e1037f997da9e1d44ca3b09d4ff32f0465673091/ipc/ipc_channel_mojo.h
[modify] https://crrev.com/e1037f997da9e1d44ca3b09d4ff32f0465673091/ipc/ipc_channel_mojo_unittest.cc
[modify] https://crrev.com/e1037f997da9e1d44ca3b09d4ff32f0465673091/ipc/ipc_channel_proxy.cc
[modify] https://crrev.com/e1037f997da9e1d44ca3b09d4ff32f0465673091/ipc/ipc_channel_proxy.h
[modify] https://crrev.com/e1037f997da9e1d44ca3b09d4ff32f0465673091/ipc/ipc_message_pipe_reader.cc
[modify] https://crrev.com/e1037f997da9e1d44ca3b09d4ff32f0465673091/ipc/ipc_message_pipe_reader.h
[modify] https://crrev.com/e1037f997da9e1d44ca3b09d4ff32f0465673091/ipc/ipc_mojo_bootstrap.cc
[modify] https://crrev.com/e1037f997da9e1d44ca3b09d4ff32f0465673091/ipc/ipc_mojo_bootstrap.h
[modify] https://crrev.com/e1037f997da9e1d44ca3b09d4ff32f0465673091/ipc/ipc_mojo_bootstrap_unittest.cc
[modify] https://crrev.com/e1037f997da9e1d44ca3b09d4ff32f0465673091/mojo/public/cpp/bindings/lib/interface_endpoint_client.cc

Project Member

Comment 7 by bugdroid1@chromium.org, Jul 21 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/f192a075bcd935672ec1db5de7308a96bfd34685

commit f192a075bcd935672ec1db5de7308a96bfd34685
Author: rockot <rockot@chromium.org>
Date: Thu Jul 21 01:33:51 2016

Revert of Support early associated interface binding on ChannelMojo (patchset #5 id:80001 of https://codereview.chromium.org/2163633003/ )

Reason for revert:
Lots of browser_tests failures.

https://build.chromium.org/p/tryserver.chromium.linux/builders/linux_chromium_rel_ng/builds/266272

Original issue's description:
> Support early associated interface binding on ChannelMojo
>
> Changes the associated bindings implementation for ChannelMojo
> such that remote interfaces can be acquired immediately upon
> ChannelMojo construction rather than having to wait for connection
> on the IO thread.
>
> Simplifies the Channel bootstrapping process, removing a round-trip
> Init message (and in fact the entire IPC::mojom::Boostrap interface)
> since there's no need to actually exchange associated interface handles
> over the pipe. Instead both sides can assume the other will use a fixed,
> reserved endpoint ID for their IPC::mojom::Channel interface.
>
> This also removes the restriction that associated interfaces must be
> added to a Channel after Init. Instead the same constraints apply as
> with AddFilter: an associated interface, like a filter, may be added
> at any time as long as either Init hasn't been called OR the remote
> process hasn't been launched.
>
> The result of this CL is that any place it's safe to AddFilter,
> it's also safe to AddAssociatedInterface; and any place it's safe to
> Send, it's also safe to GetRemoteAssociatedInterface and begin using
> any such remote interface immediately.
>
> Remote interface requests as well as all messages to remote interfaces
> retain FIFO with respect to any Send calls on the same thread. Local
> interface request dispatch as well as all messages on locally bound
> associated interfaces retain FIFO with respect to any OnMessageReceived
> calls on the same thread.
>
> BUG=612500, 619202 
>
> Committed: https://crrev.com/e1037f997da9e1d44ca3b09d4ff32f0465673091
> Cr-Commit-Position: refs/heads/master@{#406720}

TBR=yzshen@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=612500, 619202 

Review-Url: https://codereview.chromium.org/2167973002
Cr-Commit-Position: refs/heads/master@{#406739}

[modify] https://crrev.com/f192a075bcd935672ec1db5de7308a96bfd34685/ipc/ipc.mojom
[modify] https://crrev.com/f192a075bcd935672ec1db5de7308a96bfd34685/ipc/ipc_channel.h
[modify] https://crrev.com/f192a075bcd935672ec1db5de7308a96bfd34685/ipc/ipc_channel_mojo.cc
[modify] https://crrev.com/f192a075bcd935672ec1db5de7308a96bfd34685/ipc/ipc_channel_mojo.h
[modify] https://crrev.com/f192a075bcd935672ec1db5de7308a96bfd34685/ipc/ipc_channel_mojo_unittest.cc
[modify] https://crrev.com/f192a075bcd935672ec1db5de7308a96bfd34685/ipc/ipc_channel_proxy.cc
[modify] https://crrev.com/f192a075bcd935672ec1db5de7308a96bfd34685/ipc/ipc_channel_proxy.h
[modify] https://crrev.com/f192a075bcd935672ec1db5de7308a96bfd34685/ipc/ipc_message_pipe_reader.cc
[modify] https://crrev.com/f192a075bcd935672ec1db5de7308a96bfd34685/ipc/ipc_message_pipe_reader.h
[modify] https://crrev.com/f192a075bcd935672ec1db5de7308a96bfd34685/ipc/ipc_mojo_bootstrap.cc
[modify] https://crrev.com/f192a075bcd935672ec1db5de7308a96bfd34685/ipc/ipc_mojo_bootstrap.h
[modify] https://crrev.com/f192a075bcd935672ec1db5de7308a96bfd34685/ipc/ipc_mojo_bootstrap_unittest.cc
[modify] https://crrev.com/f192a075bcd935672ec1db5de7308a96bfd34685/mojo/public/cpp/bindings/lib/interface_endpoint_client.cc

Comment 8 by kbr@chromium.org, Jul 22 2016

Blockedon: 630414
Project Member

Comment 9 by bugdroid1@chromium.org, Jul 22 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/508da24622f957a01b076ccd058bfdccc79068a4

commit 508da24622f957a01b076ccd058bfdccc79068a4
Author: rockot <rockot@chromium.org>
Date: Fri Jul 22 03:53:59 2016

Support early associated interface binding on ChannelMojo

Changes the associated bindings implementation for ChannelMojo
such that remote interfaces can be acquired immediately upon
ChannelMojo construction rather than having to wait for connection
on the IO thread.

Simplifies the Channel bootstrapping process, removing a round-trip
Init message (and in fact the entire IPC::mojom::Boostrap interface)
since there's no need to actually exchange associated interface handles
over the pipe. Instead both sides can assume the other will use a fixed,
reserved endpoint ID for their IPC::mojom::Channel interface.

This also removes the restriction that associated interfaces must be
added to a Channel after Init. Instead the same constraints apply as
with AddFilter: an associated interface, like a filter, may be added
at any time as long as either Init hasn't been called OR the remote
process hasn't been launched.

The result of this CL is that any place it's safe to AddFilter,
it's also safe to AddAssociatedInterface; and any place it's safe to
Send, it's also safe to GetRemoteAssociatedInterface and begin using
any such remote interface immediately.

Remote interface requests as well as all messages to remote interfaces
retain FIFO with respect to any Send calls on the same thread. Local
interface request dispatch as well as all messages on locally bound
associated interfaces retain FIFO with respect to any OnMessageReceived
calls on the same thread.

BUG=612500, 619202 

Committed: https://crrev.com/e1037f997da9e1d44ca3b09d4ff32f0465673091
Review-Url: https://codereview.chromium.org/2163633003
Cr-Original-Commit-Position: refs/heads/master@{#406720}
Cr-Commit-Position: refs/heads/master@{#407050}

[modify] https://crrev.com/508da24622f957a01b076ccd058bfdccc79068a4/ipc/ipc.mojom
[modify] https://crrev.com/508da24622f957a01b076ccd058bfdccc79068a4/ipc/ipc_channel.h
[modify] https://crrev.com/508da24622f957a01b076ccd058bfdccc79068a4/ipc/ipc_channel_mojo.cc
[modify] https://crrev.com/508da24622f957a01b076ccd058bfdccc79068a4/ipc/ipc_channel_mojo.h
[modify] https://crrev.com/508da24622f957a01b076ccd058bfdccc79068a4/ipc/ipc_channel_mojo_unittest.cc
[modify] https://crrev.com/508da24622f957a01b076ccd058bfdccc79068a4/ipc/ipc_channel_proxy.cc
[modify] https://crrev.com/508da24622f957a01b076ccd058bfdccc79068a4/ipc/ipc_channel_proxy.h
[modify] https://crrev.com/508da24622f957a01b076ccd058bfdccc79068a4/ipc/ipc_message_pipe_reader.cc
[modify] https://crrev.com/508da24622f957a01b076ccd058bfdccc79068a4/ipc/ipc_message_pipe_reader.h
[modify] https://crrev.com/508da24622f957a01b076ccd058bfdccc79068a4/ipc/ipc_mojo_bootstrap.cc
[modify] https://crrev.com/508da24622f957a01b076ccd058bfdccc79068a4/ipc/ipc_mojo_bootstrap.h
[modify] https://crrev.com/508da24622f957a01b076ccd058bfdccc79068a4/ipc/ipc_mojo_bootstrap_unittest.cc
[modify] https://crrev.com/508da24622f957a01b076ccd058bfdccc79068a4/mojo/public/cpp/bindings/lib/interface_endpoint_client.cc

Project Member

Comment 10 by bugdroid1@chromium.org, Jul 22 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/5507feebdcc7216f8e390aca33ab28afbe349a97

commit 5507feebdcc7216f8e390aca33ab28afbe349a97
Author: msramek <msramek@chromium.org>
Date: Fri Jul 22 10:06:21 2016

Revert of Support early associated interface binding on ChannelMojo (patchset #7 id:120001 of https://codereview.chromium.org/2163633003/ )

Reason for revert:
Probable cause of failures on Mac ASan. See  crbug.com/630564  for more details.

Original issue's description:
> Support early associated interface binding on ChannelMojo
>
> Changes the associated bindings implementation for ChannelMojo
> such that remote interfaces can be acquired immediately upon
> ChannelMojo construction rather than having to wait for connection
> on the IO thread.
>
> Simplifies the Channel bootstrapping process, removing a round-trip
> Init message (and in fact the entire IPC::mojom::Boostrap interface)
> since there's no need to actually exchange associated interface handles
> over the pipe. Instead both sides can assume the other will use a fixed,
> reserved endpoint ID for their IPC::mojom::Channel interface.
>
> This also removes the restriction that associated interfaces must be
> added to a Channel after Init. Instead the same constraints apply as
> with AddFilter: an associated interface, like a filter, may be added
> at any time as long as either Init hasn't been called OR the remote
> process hasn't been launched.
>
> The result of this CL is that any place it's safe to AddFilter,
> it's also safe to AddAssociatedInterface; and any place it's safe to
> Send, it's also safe to GetRemoteAssociatedInterface and begin using
> any such remote interface immediately.
>
> Remote interface requests as well as all messages to remote interfaces
> retain FIFO with respect to any Send calls on the same thread. Local
> interface request dispatch as well as all messages on locally bound
> associated interfaces retain FIFO with respect to any OnMessageReceived
> calls on the same thread.
>
> BUG=612500, 619202 
>
> Committed: https://crrev.com/e1037f997da9e1d44ca3b09d4ff32f0465673091
> Committed: https://crrev.com/508da24622f957a01b076ccd058bfdccc79068a4
> Cr-Original-Commit-Position: refs/heads/master@{#406720}
> Cr-Commit-Position: refs/heads/master@{#407050}

TBR=yzshen@chromium.org,rockot@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=612500, 619202 

Review-Url: https://codereview.chromium.org/2173753002
Cr-Commit-Position: refs/heads/master@{#407120}

[modify] https://crrev.com/5507feebdcc7216f8e390aca33ab28afbe349a97/ipc/ipc.mojom
[modify] https://crrev.com/5507feebdcc7216f8e390aca33ab28afbe349a97/ipc/ipc_channel.h
[modify] https://crrev.com/5507feebdcc7216f8e390aca33ab28afbe349a97/ipc/ipc_channel_mojo.cc
[modify] https://crrev.com/5507feebdcc7216f8e390aca33ab28afbe349a97/ipc/ipc_channel_mojo.h
[modify] https://crrev.com/5507feebdcc7216f8e390aca33ab28afbe349a97/ipc/ipc_channel_mojo_unittest.cc
[modify] https://crrev.com/5507feebdcc7216f8e390aca33ab28afbe349a97/ipc/ipc_channel_proxy.cc
[modify] https://crrev.com/5507feebdcc7216f8e390aca33ab28afbe349a97/ipc/ipc_channel_proxy.h
[modify] https://crrev.com/5507feebdcc7216f8e390aca33ab28afbe349a97/ipc/ipc_message_pipe_reader.cc
[modify] https://crrev.com/5507feebdcc7216f8e390aca33ab28afbe349a97/ipc/ipc_message_pipe_reader.h
[modify] https://crrev.com/5507feebdcc7216f8e390aca33ab28afbe349a97/ipc/ipc_mojo_bootstrap.cc
[modify] https://crrev.com/5507feebdcc7216f8e390aca33ab28afbe349a97/ipc/ipc_mojo_bootstrap.h
[modify] https://crrev.com/5507feebdcc7216f8e390aca33ab28afbe349a97/ipc/ipc_mojo_bootstrap_unittest.cc
[modify] https://crrev.com/5507feebdcc7216f8e390aca33ab28afbe349a97/mojo/public/cpp/bindings/lib/interface_endpoint_client.cc

Project Member

Comment 11 by bugdroid1@chromium.org, Jul 22 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/0e4de5f9a519c6cd206448a10eccc7a535e3db64

commit 0e4de5f9a519c6cd206448a10eccc7a535e3db64
Author: rockot <rockot@chromium.org>
Date: Fri Jul 22 21:18:07 2016

Support early associated interface binding on ChannelMojo

Changes the associated bindings implementation for ChannelMojo
such that remote interfaces can be acquired immediately upon
ChannelMojo construction rather than having to wait for connection
on the IO thread.

Simplifies the Channel bootstrapping process, removing a round-trip
Init message (and in fact the entire IPC::mojom::Boostrap interface)
since there's no need to actually exchange associated interface handles
over the pipe. Instead both sides can assume the other will use a fixed,
reserved endpoint ID for their IPC::mojom::Channel interface.

This also removes the restriction that associated interfaces must be
added to a Channel after Init. Instead the same constraints apply as
with AddFilter: an associated interface, like a filter, may be added
at any time as long as either Init hasn't been called OR the remote
process hasn't been launched.

The result of this CL is that any place it's safe to AddFilter,
it's also safe to AddAssociatedInterface; and any place it's safe to
Send, it's also safe to GetRemoteAssociatedInterface and begin using
any such remote interface immediately.

Remote interface requests as well as all messages to remote interfaces
retain FIFO with respect to any Send calls on the same thread. Local
interface request dispatch as well as all messages on locally bound
associated interfaces retain FIFO with respect to any OnMessageReceived
calls on the same thread.

BUG=612500, 619202 

Committed: https://crrev.com/e1037f997da9e1d44ca3b09d4ff32f0465673091
Committed: https://crrev.com/508da24622f957a01b076ccd058bfdccc79068a4
Review-Url: https://codereview.chromium.org/2163633003
Cr-Original-Original-Commit-Position: refs/heads/master@{#406720}
Cr-Original-Commit-Position: refs/heads/master@{#407050}
Cr-Commit-Position: refs/heads/master@{#407264}

[modify] https://crrev.com/0e4de5f9a519c6cd206448a10eccc7a535e3db64/ipc/ipc.mojom
[modify] https://crrev.com/0e4de5f9a519c6cd206448a10eccc7a535e3db64/ipc/ipc_channel.h
[modify] https://crrev.com/0e4de5f9a519c6cd206448a10eccc7a535e3db64/ipc/ipc_channel_mojo.cc
[modify] https://crrev.com/0e4de5f9a519c6cd206448a10eccc7a535e3db64/ipc/ipc_channel_mojo.h
[modify] https://crrev.com/0e4de5f9a519c6cd206448a10eccc7a535e3db64/ipc/ipc_channel_mojo_unittest.cc
[modify] https://crrev.com/0e4de5f9a519c6cd206448a10eccc7a535e3db64/ipc/ipc_channel_proxy.cc
[modify] https://crrev.com/0e4de5f9a519c6cd206448a10eccc7a535e3db64/ipc/ipc_channel_proxy.h
[modify] https://crrev.com/0e4de5f9a519c6cd206448a10eccc7a535e3db64/ipc/ipc_message_pipe_reader.cc
[modify] https://crrev.com/0e4de5f9a519c6cd206448a10eccc7a535e3db64/ipc/ipc_message_pipe_reader.h
[modify] https://crrev.com/0e4de5f9a519c6cd206448a10eccc7a535e3db64/ipc/ipc_mojo_bootstrap.cc
[modify] https://crrev.com/0e4de5f9a519c6cd206448a10eccc7a535e3db64/ipc/ipc_mojo_bootstrap.h
[modify] https://crrev.com/0e4de5f9a519c6cd206448a10eccc7a535e3db64/ipc/ipc_mojo_bootstrap_unittest.cc
[modify] https://crrev.com/0e4de5f9a519c6cd206448a10eccc7a535e3db64/mojo/public/cpp/bindings/lib/interface_endpoint_client.cc

Project Member

Comment 12 by bugdroid1@chromium.org, Jul 26 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/a32ca4b3ff6690d5b164313cd541e7908b8b8499

commit a32ca4b3ff6690d5b164313cd541e7908b8b8499
Author: rockot <rockot@chromium.org>
Date: Tue Jul 26 00:12:03 2016

Adds BrowserAssociatedInterface

BrowserAssociatedInterface can be implemented in conjunction with
BrowserMessageFilter in order to provide browser-side Mojo bindings
which dispatch on the IO thread and maintain FIFO with respect
to legacy IPC messages on the same channel.

BUG=612500, 619202 
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_site_isolation

Review-Url: https://codereview.chromium.org/2164783005
Cr-Commit-Position: refs/heads/master@{#407644}

[add] https://crrev.com/a32ca4b3ff6690d5b164313cd541e7908b8b8499/content/browser/browser_associated_interface_unittest.cc
[modify] https://crrev.com/a32ca4b3ff6690d5b164313cd541e7908b8b8499/content/browser/renderer_host/render_process_host_impl.cc
[modify] https://crrev.com/a32ca4b3ff6690d5b164313cd541e7908b8b8499/content/content_browser.gypi
[modify] https://crrev.com/a32ca4b3ff6690d5b164313cd541e7908b8b8499/content/content_tests.gypi
[add] https://crrev.com/a32ca4b3ff6690d5b164313cd541e7908b8b8499/content/public/browser/browser_associated_interface.h
[modify] https://crrev.com/a32ca4b3ff6690d5b164313cd541e7908b8b8499/content/public/browser/browser_message_filter.cc
[modify] https://crrev.com/a32ca4b3ff6690d5b164313cd541e7908b8b8499/content/public/browser/browser_message_filter.h
[modify] https://crrev.com/a32ca4b3ff6690d5b164313cd541e7908b8b8499/content/test/BUILD.gn
[modify] https://crrev.com/a32ca4b3ff6690d5b164313cd541e7908b8b8499/content/test/OWNERS
[add] https://crrev.com/a32ca4b3ff6690d5b164313cd541e7908b8b8499/content/test/test_browser_associated_interfaces.mojom

Status: Fixed (was: Assigned)
For the common case, i.e. interfaces which don't need to be associated with the IPC::Channel, connections between the browser and child processes now have an InterfaceRegistry which lives on the IO thread. This was added in r405885, and Ben made it easier to use in r409395.

Channel-associated interfaces also support binding immediately on the IO thread.

Given this support, I'm calling the bug fixed.

Sign in to add a comment