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

Issue 692138 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Feb 2017
Cc:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Bug



Sign in to add a comment

Remove //cc/ipc:struct_traits

Project Member Reported by samans@chromium.org, Feb 14 2017

Issue description

Currently in //cc/ipc we group all of the struct traits into a single target called "struct_traits" and every mojo interface depends on the whole "struct_traits" target in its typemap. This is wrong because it prevents the struct traits of one interface to depend on another interface. For example, Foo struct might need to have a BarPtr but because of the way dependencies are set up this is impossible to do at the moment since a dependency cycle will be created (interfaces -> struct traits -> interfaces). The correct way of handling this can be found here: https://cs.chromium.org/chromium/src/mojo/common/values.typemap Every typemap needs to include a list of its struct traits and depend on them only.
 

Comment 1 by samans@chromium.org, Feb 14 2017

Cc: danakj@chromium.org fsam...@chromium.org roc...@chromium.org
Owner: samans@chromium.org
Status: Started (was: Untriaged)
Project Member

Comment 2 by bugdroid1@chromium.org, Feb 15 2017

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

commit 30e53545ee2155ee423a8c18d7895da50ac24305
Author: samans <samans@chromium.org>
Date: Wed Feb 15 01:24:32 2017

Remove //cc/ipc:struct_traits

Sometimes we need the struct traits of one interface to depend on another
interface. For example, it could be that Foo has a BarPtr and therefore
we need to include bar.mojom.h in the struct traits of Foo. However,
currently we group all the struct traits into a source_set called
struct_traits and :interfaces depends on :struct_traits (see the
dependencies in the typemaps). If foo_struct_traits needs to include
bar.mojom.h, this creates a dependency from :struct_traits to :interfaces
and we would have a cycle. This CL gets rid of :struct_traits and now
all struct traits are listed in the typemaps.

TBR=vmpstr@chromium.org

BUG= 692138 
CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_trusty_blink_rel

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

[modify] https://crrev.com/30e53545ee2155ee423a8c18d7895da50ac24305/cc/ipc/BUILD.gn
[modify] https://crrev.com/30e53545ee2155ee423a8c18d7895da50ac24305/cc/ipc/compositor_frame.typemap
[modify] https://crrev.com/30e53545ee2155ee423a8c18d7895da50ac24305/cc/ipc/compositor_frame_for_blink.typemap
[modify] https://crrev.com/30e53545ee2155ee423a8c18d7895da50ac24305/cc/ipc/compositor_frame_metadata.typemap
[modify] https://crrev.com/30e53545ee2155ee423a8c18d7895da50ac24305/cc/ipc/copy_output_request.typemap
[modify] https://crrev.com/30e53545ee2155ee423a8c18d7895da50ac24305/cc/ipc/copy_output_result.typemap
[modify] https://crrev.com/30e53545ee2155ee423a8c18d7895da50ac24305/cc/ipc/filter_operation.typemap
[modify] https://crrev.com/30e53545ee2155ee423a8c18d7895da50ac24305/cc/ipc/filter_operations.typemap
[modify] https://crrev.com/30e53545ee2155ee423a8c18d7895da50ac24305/cc/ipc/frame_sink_id.typemap
[modify] https://crrev.com/30e53545ee2155ee423a8c18d7895da50ac24305/cc/ipc/local_surface_id.typemap
[modify] https://crrev.com/30e53545ee2155ee423a8c18d7895da50ac24305/cc/ipc/render_pass.typemap
[modify] https://crrev.com/30e53545ee2155ee423a8c18d7895da50ac24305/cc/ipc/selection.typemap
[modify] https://crrev.com/30e53545ee2155ee423a8c18d7895da50ac24305/cc/ipc/shared_quad_state.typemap
[modify] https://crrev.com/30e53545ee2155ee423a8c18d7895da50ac24305/cc/ipc/surface_id.typemap
[modify] https://crrev.com/30e53545ee2155ee423a8c18d7895da50ac24305/cc/ipc/surface_info.typemap
[modify] https://crrev.com/30e53545ee2155ee423a8c18d7895da50ac24305/cc/ipc/surface_reference.typemap
[modify] https://crrev.com/30e53545ee2155ee423a8c18d7895da50ac24305/cc/ipc/texture_mailbox.typemap
[modify] https://crrev.com/30e53545ee2155ee423a8c18d7895da50ac24305/cc/ipc/transferable_resource.typemap

Comment 3 by samans@chromium.org, Feb 15 2017

Status: Fixed (was: Started)

Sign in to add a comment