0

Mojo C++ bindings: change the first template parameter of StructTraits and UnionTraits.

Previously the type is the auto-generated struct/union type. This CL changes it to the corresponding DataView type.

The reason of doing this? The DataView type is shared by the chromium and blink variants of generated bindings, while the generated struct/union type is not. By changing StructTraits/UnionTraits to be specialized by the DataView type, users will be able to use the same StructTraits specialization in both variants.

BUG=632061
CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_precise_blink_rel

Review-Url: https://codereview.chromium.org/2253293002
Cr-Commit-Position: refs/heads/master@{#413931}
This commit is contained in:
yzshen
2016-08-23 18:44:12 -07:00
committed by Commit bot
parent 94267418aa
commit 1764bb9640
81 changed files with 316 additions and 263 deletions
cc/ipc
chrome/browser/media/router/mojo
components
content/common/bluetooth
device
bluetooth
generic_sensor
gpu/ipc/common
media/mojo/common
mojo
services
skia/public/interfaces
third_party/WebKit/Source/platform/mojo
ui
url/mojo

@ -11,7 +11,7 @@
namespace mojo { namespace mojo {
template <> template <>
struct StructTraits<cc::mojom::BeginFrameArgs, cc::BeginFrameArgs> { struct StructTraits<cc::mojom::BeginFrameArgsDataView, cc::BeginFrameArgs> {
static base::TimeTicks frame_time(const cc::BeginFrameArgs& args) { static base::TimeTicks frame_time(const cc::BeginFrameArgs& args) {
return args.frame_time; return args.frame_time;
} }

@ -11,7 +11,7 @@
namespace mojo { namespace mojo {
// static // static
bool StructTraits<cc::mojom::CompositorFrameMetadata, bool StructTraits<cc::mojom::CompositorFrameMetadataDataView,
cc::CompositorFrameMetadata>:: cc::CompositorFrameMetadata>::
Read(cc::mojom::CompositorFrameMetadataDataView data, Read(cc::mojom::CompositorFrameMetadataDataView data,
cc::CompositorFrameMetadata* out) { cc::CompositorFrameMetadata* out) {

@ -11,7 +11,7 @@
namespace mojo { namespace mojo {
template <> template <>
struct StructTraits<cc::mojom::CompositorFrameMetadata, struct StructTraits<cc::mojom::CompositorFrameMetadataDataView,
cc::CompositorFrameMetadata> { cc::CompositorFrameMetadata> {
static float device_scale_factor( static float device_scale_factor(
const cc::CompositorFrameMetadata& metadata) { const cc::CompositorFrameMetadata& metadata) {

@ -10,9 +10,10 @@
namespace mojo { namespace mojo {
// static // static
bool StructTraits<cc::mojom::CompositorFrame, cc::CompositorFrame>::Read( bool StructTraits<cc::mojom::CompositorFrameDataView,
cc::mojom::CompositorFrameDataView data, cc::CompositorFrame>::Read(cc::mojom::CompositorFrameDataView
cc::CompositorFrame* out) { data,
cc::CompositorFrame* out) {
if (!data.ReadMetadata(&out->metadata)) if (!data.ReadMetadata(&out->metadata))
return false; return false;

@ -11,7 +11,7 @@
namespace mojo { namespace mojo {
template <> template <>
struct StructTraits<cc::mojom::CompositorFrame, cc::CompositorFrame> { struct StructTraits<cc::mojom::CompositorFrameDataView, cc::CompositorFrame> {
static const cc::CompositorFrameMetadata& metadata( static const cc::CompositorFrameMetadata& metadata(
const cc::CompositorFrame& input) { const cc::CompositorFrame& input) {
return input.metadata; return input.metadata;

@ -95,7 +95,7 @@ cc::FilterOperation::FilterType MojoFilterTypeToCC(
using FilterOperationMatrix = CArray<float>; using FilterOperationMatrix = CArray<float>;
template <> template <>
struct StructTraits<cc::mojom::FilterOperation, cc::FilterOperation> { struct StructTraits<cc::mojom::FilterOperationDataView, cc::FilterOperation> {
static cc::mojom::FilterType type(const cc::FilterOperation& op) { static cc::mojom::FilterType type(const cc::FilterOperation& op) {
return CCFilterTypeToMojo(op.type()); return CCFilterTypeToMojo(op.type());
} }

@ -11,7 +11,7 @@
namespace mojo { namespace mojo {
template <> template <>
struct StructTraits<cc::mojom::FilterOperations, cc::FilterOperations> { struct StructTraits<cc::mojom::FilterOperationsDataView, cc::FilterOperations> {
static const std::vector<cc::FilterOperation>& operations( static const std::vector<cc::FilterOperation>& operations(
const cc::FilterOperations& operations) { const cc::FilterOperations& operations) {
return operations.operations(); return operations.operations();

@ -50,7 +50,7 @@ cc::DrawQuad* AllocateAndConstruct(
} }
// static // static
bool StructTraits<cc::mojom::DebugBorderQuadState, cc::DrawQuad>::Read( bool StructTraits<cc::mojom::DebugBorderQuadStateDataView, cc::DrawQuad>::Read(
cc::mojom::DebugBorderQuadStateDataView data, cc::mojom::DebugBorderQuadStateDataView data,
cc::DrawQuad* out) { cc::DrawQuad* out) {
cc::DebugBorderDrawQuad* quad = static_cast<cc::DebugBorderDrawQuad*>(out); cc::DebugBorderDrawQuad* quad = static_cast<cc::DebugBorderDrawQuad*>(out);
@ -60,7 +60,7 @@ bool StructTraits<cc::mojom::DebugBorderQuadState, cc::DrawQuad>::Read(
} }
// static // static
bool StructTraits<cc::mojom::RenderPassQuadState, cc::DrawQuad>::Read( bool StructTraits<cc::mojom::RenderPassQuadStateDataView, cc::DrawQuad>::Read(
cc::mojom::RenderPassQuadStateDataView data, cc::mojom::RenderPassQuadStateDataView data,
cc::DrawQuad* out) { cc::DrawQuad* out) {
cc::RenderPassDrawQuad* quad = static_cast<cc::RenderPassDrawQuad*>(out); cc::RenderPassDrawQuad* quad = static_cast<cc::RenderPassDrawQuad*>(out);
@ -76,7 +76,7 @@ bool StructTraits<cc::mojom::RenderPassQuadState, cc::DrawQuad>::Read(
} }
// static // static
bool StructTraits<cc::mojom::SolidColorQuadState, cc::DrawQuad>::Read( bool StructTraits<cc::mojom::SolidColorQuadStateDataView, cc::DrawQuad>::Read(
cc::mojom::SolidColorQuadStateDataView data, cc::mojom::SolidColorQuadStateDataView data,
cc::DrawQuad* out) { cc::DrawQuad* out) {
cc::SolidColorDrawQuad* quad = static_cast<cc::SolidColorDrawQuad*>(out); cc::SolidColorDrawQuad* quad = static_cast<cc::SolidColorDrawQuad*>(out);
@ -86,7 +86,7 @@ bool StructTraits<cc::mojom::SolidColorQuadState, cc::DrawQuad>::Read(
} }
// static // static
bool StructTraits<cc::mojom::StreamVideoQuadState, cc::DrawQuad>::Read( bool StructTraits<cc::mojom::StreamVideoQuadStateDataView, cc::DrawQuad>::Read(
cc::mojom::StreamVideoQuadStateDataView data, cc::mojom::StreamVideoQuadStateDataView data,
cc::DrawQuad* out) { cc::DrawQuad* out) {
cc::StreamVideoDrawQuad* quad = static_cast<cc::StreamVideoDrawQuad*>(out); cc::StreamVideoDrawQuad* quad = static_cast<cc::StreamVideoDrawQuad*>(out);
@ -100,7 +100,7 @@ bool StructTraits<cc::mojom::StreamVideoQuadState, cc::DrawQuad>::Read(
} }
// static // static
bool StructTraits<cc::mojom::SurfaceQuadState, cc::DrawQuad>::Read( bool StructTraits<cc::mojom::SurfaceQuadStateDataView, cc::DrawQuad>::Read(
cc::mojom::SurfaceQuadStateDataView data, cc::mojom::SurfaceQuadStateDataView data,
cc::DrawQuad* out) { cc::DrawQuad* out) {
cc::SurfaceDrawQuad* quad = static_cast<cc::SurfaceDrawQuad*>(out); cc::SurfaceDrawQuad* quad = static_cast<cc::SurfaceDrawQuad*>(out);
@ -108,7 +108,7 @@ bool StructTraits<cc::mojom::SurfaceQuadState, cc::DrawQuad>::Read(
} }
// static // static
bool StructTraits<cc::mojom::TextureQuadState, cc::DrawQuad>::Read( bool StructTraits<cc::mojom::TextureQuadStateDataView, cc::DrawQuad>::Read(
cc::mojom::TextureQuadStateDataView data, cc::mojom::TextureQuadStateDataView data,
cc::DrawQuad* out) { cc::DrawQuad* out) {
cc::TextureDrawQuad* quad = static_cast<cc::TextureDrawQuad*>(out); cc::TextureDrawQuad* quad = static_cast<cc::TextureDrawQuad*>(out);
@ -132,7 +132,7 @@ bool StructTraits<cc::mojom::TextureQuadState, cc::DrawQuad>::Read(
} }
// static // static
bool StructTraits<cc::mojom::TileQuadState, cc::DrawQuad>::Read( bool StructTraits<cc::mojom::TileQuadStateDataView, cc::DrawQuad>::Read(
cc::mojom::TileQuadStateDataView data, cc::mojom::TileQuadStateDataView data,
cc::DrawQuad* out) { cc::DrawQuad* out) {
cc::TileDrawQuad* quad = static_cast<cc::TileDrawQuad*>(out); cc::TileDrawQuad* quad = static_cast<cc::TileDrawQuad*>(out);
@ -182,7 +182,7 @@ bool EnumTraits<cc::mojom::YUVColorSpace, cc::YUVVideoDrawQuad::ColorSpace>::
} }
// static // static
bool StructTraits<cc::mojom::YUVVideoQuadState, cc::DrawQuad>::Read( bool StructTraits<cc::mojom::YUVVideoQuadStateDataView, cc::DrawQuad>::Read(
cc::mojom::YUVVideoQuadStateDataView data, cc::mojom::YUVVideoQuadStateDataView data,
cc::DrawQuad* out) { cc::DrawQuad* out) {
cc::YUVVideoDrawQuad* quad = static_cast<cc::YUVVideoDrawQuad*>(out); cc::YUVVideoDrawQuad* quad = static_cast<cc::YUVVideoDrawQuad*>(out);
@ -218,7 +218,7 @@ bool StructTraits<cc::mojom::YUVVideoQuadState, cc::DrawQuad>::Read(
} }
// static // static
bool StructTraits<cc::mojom::DrawQuad, cc::DrawQuad>::Read( bool StructTraits<cc::mojom::DrawQuadDataView, cc::DrawQuad>::Read(
cc::mojom::DrawQuadDataView data, cc::mojom::DrawQuadDataView data,
cc::DrawQuad* out) { cc::DrawQuad* out) {
if (!data.ReadRect(&out->rect) || !data.ReadOpaqueRect(&out->opaque_rect) || if (!data.ReadRect(&out->rect) || !data.ReadOpaqueRect(&out->opaque_rect) ||

@ -29,7 +29,7 @@ cc::DrawQuad* AllocateAndConstruct(
cc::QuadList* list); cc::QuadList* list);
template <> template <>
struct UnionTraits<cc::mojom::DrawQuadState, cc::DrawQuad> { struct UnionTraits<cc::mojom::DrawQuadStateDataView, cc::DrawQuad> {
static cc::mojom::DrawQuadState::DataView::Tag GetTag( static cc::mojom::DrawQuadState::DataView::Tag GetTag(
const cc::DrawQuad& quad) { const cc::DrawQuad& quad) {
switch (quad.material) { switch (quad.material) {
@ -115,7 +115,7 @@ struct UnionTraits<cc::mojom::DrawQuadState, cc::DrawQuad> {
}; };
template <> template <>
struct StructTraits<cc::mojom::DebugBorderQuadState, cc::DrawQuad> { struct StructTraits<cc::mojom::DebugBorderQuadStateDataView, cc::DrawQuad> {
static uint32_t color(const cc::DrawQuad& input) { static uint32_t color(const cc::DrawQuad& input) {
const cc::DebugBorderDrawQuad* quad = const cc::DebugBorderDrawQuad* quad =
cc::DebugBorderDrawQuad::MaterialCast(&input); cc::DebugBorderDrawQuad::MaterialCast(&input);
@ -133,7 +133,7 @@ struct StructTraits<cc::mojom::DebugBorderQuadState, cc::DrawQuad> {
}; };
template <> template <>
struct StructTraits<cc::mojom::RenderPassQuadState, cc::DrawQuad> { struct StructTraits<cc::mojom::RenderPassQuadStateDataView, cc::DrawQuad> {
static const cc::RenderPassId& render_pass_id(const cc::DrawQuad& input) { static const cc::RenderPassId& render_pass_id(const cc::DrawQuad& input) {
const cc::RenderPassDrawQuad* quad = const cc::RenderPassDrawQuad* quad =
cc::RenderPassDrawQuad::MaterialCast(&input); cc::RenderPassDrawQuad::MaterialCast(&input);
@ -182,7 +182,7 @@ struct StructTraits<cc::mojom::RenderPassQuadState, cc::DrawQuad> {
}; };
template <> template <>
struct StructTraits<cc::mojom::SolidColorQuadState, cc::DrawQuad> { struct StructTraits<cc::mojom::SolidColorQuadStateDataView, cc::DrawQuad> {
static uint32_t color(const cc::DrawQuad& input) { static uint32_t color(const cc::DrawQuad& input) {
const cc::SolidColorDrawQuad* quad = const cc::SolidColorDrawQuad* quad =
cc::SolidColorDrawQuad::MaterialCast(&input); cc::SolidColorDrawQuad::MaterialCast(&input);
@ -200,7 +200,7 @@ struct StructTraits<cc::mojom::SolidColorQuadState, cc::DrawQuad> {
}; };
template <> template <>
struct StructTraits<cc::mojom::StreamVideoQuadState, cc::DrawQuad> { struct StructTraits<cc::mojom::StreamVideoQuadStateDataView, cc::DrawQuad> {
static uint32_t resource_id(const cc::DrawQuad& input) { static uint32_t resource_id(const cc::DrawQuad& input) {
const cc::StreamVideoDrawQuad* quad = const cc::StreamVideoDrawQuad* quad =
cc::StreamVideoDrawQuad::MaterialCast(&input); cc::StreamVideoDrawQuad::MaterialCast(&input);
@ -225,7 +225,7 @@ struct StructTraits<cc::mojom::StreamVideoQuadState, cc::DrawQuad> {
}; };
template <> template <>
struct StructTraits<cc::mojom::SurfaceQuadState, cc::DrawQuad> { struct StructTraits<cc::mojom::SurfaceQuadStateDataView, cc::DrawQuad> {
static const cc::SurfaceId& surface(const cc::DrawQuad& input) { static const cc::SurfaceId& surface(const cc::DrawQuad& input) {
const cc::SurfaceDrawQuad* quad = cc::SurfaceDrawQuad::MaterialCast(&input); const cc::SurfaceDrawQuad* quad = cc::SurfaceDrawQuad::MaterialCast(&input);
return quad->surface_id; return quad->surface_id;
@ -235,7 +235,7 @@ struct StructTraits<cc::mojom::SurfaceQuadState, cc::DrawQuad> {
}; };
template <> template <>
struct StructTraits<cc::mojom::TextureQuadState, cc::DrawQuad> { struct StructTraits<cc::mojom::TextureQuadStateDataView, cc::DrawQuad> {
static uint32_t resource_id(const cc::DrawQuad& input) { static uint32_t resource_id(const cc::DrawQuad& input) {
const cc::TextureDrawQuad* quad = cc::TextureDrawQuad::MaterialCast(&input); const cc::TextureDrawQuad* quad = cc::TextureDrawQuad::MaterialCast(&input);
return quad->resource_id(); return quad->resource_id();
@ -285,7 +285,7 @@ struct StructTraits<cc::mojom::TextureQuadState, cc::DrawQuad> {
}; };
template <> template <>
struct StructTraits<cc::mojom::TileQuadState, cc::DrawQuad> { struct StructTraits<cc::mojom::TileQuadStateDataView, cc::DrawQuad> {
static const gfx::RectF& tex_coord_rect(const cc::DrawQuad& input) { static const gfx::RectF& tex_coord_rect(const cc::DrawQuad& input) {
const cc::TileDrawQuad* quad = cc::TileDrawQuad::MaterialCast(&input); const cc::TileDrawQuad* quad = cc::TileDrawQuad::MaterialCast(&input);
return quad->tex_coord_rect; return quad->tex_coord_rect;
@ -323,7 +323,7 @@ struct EnumTraits<cc::mojom::YUVColorSpace, cc::YUVVideoDrawQuad::ColorSpace> {
}; };
template <> template <>
struct StructTraits<cc::mojom::YUVVideoQuadState, cc::DrawQuad> { struct StructTraits<cc::mojom::YUVVideoQuadStateDataView, cc::DrawQuad> {
static const gfx::RectF& ya_tex_coord_rect(const cc::DrawQuad& input) { static const gfx::RectF& ya_tex_coord_rect(const cc::DrawQuad& input) {
const cc::YUVVideoDrawQuad* quad = const cc::YUVVideoDrawQuad* quad =
cc::YUVVideoDrawQuad::MaterialCast(&input); cc::YUVVideoDrawQuad::MaterialCast(&input);
@ -407,7 +407,7 @@ struct DrawQuadWithSharedQuadState {
}; };
template <> template <>
struct StructTraits<cc::mojom::DrawQuad, DrawQuadWithSharedQuadState> { struct StructTraits<cc::mojom::DrawQuadDataView, DrawQuadWithSharedQuadState> {
static const gfx::Rect& rect(const DrawQuadWithSharedQuadState& input) { static const gfx::Rect& rect(const DrawQuadWithSharedQuadState& input) {
return input.quad->rect; return input.quad->rect;
} }
@ -438,7 +438,7 @@ struct StructTraits<cc::mojom::DrawQuad, DrawQuadWithSharedQuadState> {
// This StructTraits is only used for deserialization within RenderPasses. // This StructTraits is only used for deserialization within RenderPasses.
template <> template <>
struct StructTraits<cc::mojom::DrawQuad, cc::DrawQuad> { struct StructTraits<cc::mojom::DrawQuadDataView, cc::DrawQuad> {
static bool Read(cc::mojom::DrawQuadDataView data, cc::DrawQuad* out); static bool Read(cc::mojom::DrawQuadDataView data, cc::DrawQuad* out);
}; };

@ -11,7 +11,7 @@
namespace mojo { namespace mojo {
template <> template <>
struct StructTraits<cc::mojom::RenderPassId, cc::RenderPassId> { struct StructTraits<cc::mojom::RenderPassIdDataView, cc::RenderPassId> {
static int layer_id(const cc::RenderPassId& id) { return id.layer_id; } static int layer_id(const cc::RenderPassId& id) { return id.layer_id; }
static uint32_t index(const cc::RenderPassId& id) { return id.index; } static uint32_t index(const cc::RenderPassId& id) { return id.index; }

@ -10,9 +10,10 @@
namespace mojo { namespace mojo {
// static // static
bool StructTraits<cc::mojom::RenderPass, std::unique_ptr<cc::RenderPass>>::Read( bool StructTraits<cc::mojom::RenderPassDataView,
cc::mojom::RenderPassDataView data, std::unique_ptr<cc::RenderPass>>::
std::unique_ptr<cc::RenderPass>* out) { Read(cc::mojom::RenderPassDataView data,
std::unique_ptr<cc::RenderPass>* out) {
*out = cc::RenderPass::Create(); *out = cc::RenderPass::Create();
if (!data.ReadId(&(*out)->id) || !data.ReadOutputRect(&(*out)->output_rect) || if (!data.ReadId(&(*out)->id) || !data.ReadOutputRect(&(*out)->output_rect) ||
!data.ReadDamageRect(&(*out)->damage_rect) || !data.ReadDamageRect(&(*out)->damage_rect) ||

@ -14,7 +14,8 @@
namespace mojo { namespace mojo {
template <> template <>
struct StructTraits<cc::mojom::RenderPass, std::unique_ptr<cc::RenderPass>> { struct StructTraits<cc::mojom::RenderPassDataView,
std::unique_ptr<cc::RenderPass>> {
static const cc::RenderPassId& id( static const cc::RenderPassId& id(
const std::unique_ptr<cc::RenderPass>& input) { const std::unique_ptr<cc::RenderPass>& input) {
return input->id; return input->id;

@ -11,7 +11,7 @@
namespace mojo { namespace mojo {
template <> template <>
struct StructTraits<cc::mojom::ReturnedResource, cc::ReturnedResource> { struct StructTraits<cc::mojom::ReturnedResourceDataView, cc::ReturnedResource> {
static uint32_t id(const cc::ReturnedResource& resource) { static uint32_t id(const cc::ReturnedResource& resource) {
return resource.id; return resource.id;
} }

@ -11,7 +11,8 @@
namespace mojo { namespace mojo {
template <> template <>
struct StructTraits<cc::mojom::Selection, cc::Selection<gfx::SelectionBound>> { struct StructTraits<cc::mojom::SelectionDataView,
cc::Selection<gfx::SelectionBound>> {
static const gfx::SelectionBound& start( static const gfx::SelectionBound& start(
const cc::Selection<gfx::SelectionBound>& selection) { const cc::Selection<gfx::SelectionBound>& selection) {
return selection.start; return selection.start;

@ -15,7 +15,7 @@ struct OptSharedQuadState {
}; };
template <> template <>
struct StructTraits<cc::mojom::SharedQuadState, OptSharedQuadState> { struct StructTraits<cc::mojom::SharedQuadStateDataView, OptSharedQuadState> {
static bool IsNull(const OptSharedQuadState& input) { return !input.sqs; } static bool IsNull(const OptSharedQuadState& input) { return !input.sqs; }
static void SetToNull(OptSharedQuadState* output) { output->sqs = nullptr; } static void SetToNull(OptSharedQuadState* output) { output->sqs = nullptr; }
@ -56,7 +56,7 @@ struct StructTraits<cc::mojom::SharedQuadState, OptSharedQuadState> {
}; };
template <> template <>
struct StructTraits<cc::mojom::SharedQuadState, cc::SharedQuadState> { struct StructTraits<cc::mojom::SharedQuadStateDataView, cc::SharedQuadState> {
static const gfx::Transform& quad_to_target_transform( static const gfx::Transform& quad_to_target_transform(
const cc::SharedQuadState& sqs) { const cc::SharedQuadState& sqs) {
return sqs.quad_to_target_transform; return sqs.quad_to_target_transform;

@ -9,9 +9,9 @@
namespace mojo { namespace mojo {
// This template is fully specialized as cc::mojom::SurfaceId and // This template is fully specialized as cc::mojom::SurfaceIdDataView and
// as cc::mojom::blink::SurfaceId, in generated .mojom.h and .mojom-blink.h // as cc::mojom::blink::SurfaceIdDataView, in generated .mojom.h and
// respectively. // .mojom-blink.h respectively.
template <typename T> template <typename T>
struct StructTraits<T, cc::SurfaceId> { struct StructTraits<T, cc::SurfaceId> {
static uint32_t client_id(const cc::SurfaceId& id) { return id.client_id(); } static uint32_t client_id(const cc::SurfaceId& id) { return id.client_id(); }
@ -20,7 +20,7 @@ struct StructTraits<T, cc::SurfaceId> {
static uint64_t nonce(const cc::SurfaceId& id) { return id.nonce(); } static uint64_t nonce(const cc::SurfaceId& id) { return id.nonce(); }
static bool Read(typename T::DataView data, cc::SurfaceId* out) { static bool Read(T data, cc::SurfaceId* out) {
*out = cc::SurfaceId(data.client_id(), data.local_id(), data.nonce()); *out = cc::SurfaceId(data.client_id(), data.local_id(), data.nonce());
return true; return true;
} }

@ -9,8 +9,8 @@
namespace mojo { namespace mojo {
// This template is fully specialized as cc::mojom::SurfaceSequence and // This template is fully specialized as cc::mojom::SurfaceSequenceDataView and
// as cc::mojom::blink::SurfaceSequence, in generated .mojom.h and // as cc::mojom::blink::SurfaceSequenceDataView, in generated .mojom.h and
// .mojom-blink.h respectively. // .mojom-blink.h respectively.
template <typename T> template <typename T>
struct StructTraits<T, cc::SurfaceSequence> { struct StructTraits<T, cc::SurfaceSequence> {
@ -22,7 +22,7 @@ struct StructTraits<T, cc::SurfaceSequence> {
return id.sequence; return id.sequence;
} }
static bool Read(typename T::DataView data, cc::SurfaceSequence* out) { static bool Read(T data, cc::SurfaceSequence* out) {
*out = cc::SurfaceSequence(data.client_id(), data.sequence()); *out = cc::SurfaceSequence(data.client_id(), data.sequence());
return true; return true;
} }

@ -11,7 +11,8 @@
namespace mojo { namespace mojo {
// static // static
bool StructTraits<cc::mojom::TransferableResource, cc::TransferableResource>:: bool StructTraits<cc::mojom::TransferableResourceDataView,
cc::TransferableResource>::
Read(cc::mojom::TransferableResourceDataView data, Read(cc::mojom::TransferableResourceDataView data,
cc::TransferableResource* out) { cc::TransferableResource* out) {
if (!data.ReadSize(&out->size) || if (!data.ReadSize(&out->size) ||

@ -11,7 +11,8 @@
namespace mojo { namespace mojo {
template <> template <>
struct StructTraits<cc::mojom::TransferableResource, cc::TransferableResource> { struct StructTraits<cc::mojom::TransferableResourceDataView,
cc::TransferableResource> {
static uint32_t id(const cc::TransferableResource& resource) { static uint32_t id(const cc::TransferableResource& resource) {
return resource.id; return resource.id;
} }

@ -12,7 +12,7 @@
namespace mojo { namespace mojo {
template <> template <>
struct StructTraits<media_router::mojom::RouteMessage, struct StructTraits<media_router::mojom::RouteMessageDataView,
media_router::RouteMessage> { media_router::RouteMessage> {
static media_router::mojom::RouteMessage::Type type( static media_router::mojom::RouteMessage::Type type(
const media_router::RouteMessage& msg) { const media_router::RouteMessage& msg) {

@ -1,2 +1,5 @@
per-file *.mojom=set noparent per-file *.mojom=set noparent
per-file *.mojom=file://ipc/SECURITY_OWNERS per-file *.mojom=file://ipc/SECURITY_OWNERS
per-file *_struct_traits*.*=set noparent
per-file *_struct_traits*.*=file://ipc/SECURITY_OWNERS

@ -6,8 +6,9 @@
namespace mojo { namespace mojo {
bool StructTraits<arc::mojom::ScreenRect, gfx::Rect>::Read( bool StructTraits<arc::mojom::ScreenRectDataView, gfx::Rect>::Read(
arc::mojom::ScreenRectDataView data, gfx::Rect* out) { arc::mojom::ScreenRectDataView data,
gfx::Rect* out) {
if (data.right() < data.left() || data.bottom() < data.top()) if (data.right() < data.left() || data.bottom() < data.top())
return false; return false;

@ -11,7 +11,7 @@
namespace mojo { namespace mojo {
template <> template <>
struct StructTraits<arc::mojom::ScreenRect, gfx::Rect> { struct StructTraits<arc::mojom::ScreenRectDataView, gfx::Rect> {
static int32_t left(const gfx::Rect& p) { return p.x(); } static int32_t left(const gfx::Rect& p) { return p.x(); }
static int32_t top(const gfx::Rect& p) { return p.y(); } static int32_t top(const gfx::Rect& p) { return p.y(); }
static int32_t right(const gfx::Rect& p) { return p.right(); } static int32_t right(const gfx::Rect& p) { return p.right(); }

@ -329,7 +329,7 @@ bool EnumTraits<mojom::PasswordFormFieldPredictionType,
} }
// static // static
bool StructTraits<mojom::FormFieldData, FormFieldData>::Read( bool StructTraits<mojom::FormFieldDataDataView, FormFieldData>::Read(
mojom::FormFieldDataDataView data, mojom::FormFieldDataDataView data,
FormFieldData* out) { FormFieldData* out) {
if (!data.ReadLabel(&out->label)) if (!data.ReadLabel(&out->label))
@ -376,8 +376,9 @@ bool StructTraits<mojom::FormFieldData, FormFieldData>::Read(
} }
// static // static
bool StructTraits<mojom::FormData, FormData>::Read(mojom::FormDataDataView data, bool StructTraits<mojom::FormDataDataView, FormData>::Read(
FormData* out) { mojom::FormDataDataView data,
FormData* out) {
if (!data.ReadName(&out->name)) if (!data.ReadName(&out->name))
return false; return false;
if (!data.ReadOrigin(&out->origin)) if (!data.ReadOrigin(&out->origin))
@ -395,7 +396,8 @@ bool StructTraits<mojom::FormData, FormData>::Read(mojom::FormDataDataView data,
} }
// static // static
bool StructTraits<mojom::FormFieldDataPredictions, FormFieldDataPredictions>:: bool StructTraits<mojom::FormFieldDataPredictionsDataView,
FormFieldDataPredictions>::
Read(mojom::FormFieldDataPredictionsDataView data, Read(mojom::FormFieldDataPredictionsDataView data,
FormFieldDataPredictions* out) { FormFieldDataPredictions* out) {
if (!data.ReadField(&out->field)) if (!data.ReadField(&out->field))
@ -415,9 +417,10 @@ bool StructTraits<mojom::FormFieldDataPredictions, FormFieldDataPredictions>::
} }
// static // static
bool StructTraits<mojom::FormDataPredictions, FormDataPredictions>::Read( bool StructTraits<mojom::FormDataPredictionsDataView,
mojom::FormDataPredictionsDataView data, FormDataPredictions>::Read(mojom::FormDataPredictionsDataView
FormDataPredictions* out) { data,
FormDataPredictions* out) {
if (!data.ReadData(&out->data)) if (!data.ReadData(&out->data))
return false; return false;
if (!data.ReadSignature(&out->signature)) if (!data.ReadSignature(&out->signature))
@ -429,7 +432,7 @@ bool StructTraits<mojom::FormDataPredictions, FormDataPredictions>::Read(
} }
// static // static
bool StructTraits<mojom::PasswordAndRealm, PasswordAndRealm>::Read( bool StructTraits<mojom::PasswordAndRealmDataView, PasswordAndRealm>::Read(
mojom::PasswordAndRealmDataView data, mojom::PasswordAndRealmDataView data,
PasswordAndRealm* out) { PasswordAndRealm* out) {
if (!data.ReadPassword(&out->password)) if (!data.ReadPassword(&out->password))
@ -441,9 +444,10 @@ bool StructTraits<mojom::PasswordAndRealm, PasswordAndRealm>::Read(
} }
// static // static
bool StructTraits<mojom::UsernamesCollectionKey, UsernamesCollectionKey>::Read( bool StructTraits<
mojom::UsernamesCollectionKeyDataView data, mojom::UsernamesCollectionKeyDataView,
UsernamesCollectionKey* out) { UsernamesCollectionKey>::Read(mojom::UsernamesCollectionKeyDataView data,
UsernamesCollectionKey* out) {
if (!data.ReadUsername(&out->username)) if (!data.ReadUsername(&out->username))
return false; return false;
if (!data.ReadPassword(&out->password)) if (!data.ReadPassword(&out->password))
@ -455,7 +459,7 @@ bool StructTraits<mojom::UsernamesCollectionKey, UsernamesCollectionKey>::Read(
} }
// static // static
void* StructTraits<mojom::PasswordFormFillData, PasswordFormFillData>:: void* StructTraits<mojom::PasswordFormFillDataDataView, PasswordFormFillData>::
SetUpContext(const PasswordFormFillData& r) { SetUpContext(const PasswordFormFillData& r) {
// Extracts keys vector and values vector from the map, saves them as a pair. // Extracts keys vector and values vector from the map, saves them as a pair.
auto* pair = new UsernamesCollectionKeysValuesPair(); auto* pair = new UsernamesCollectionKeysValuesPair();
@ -468,15 +472,14 @@ void* StructTraits<mojom::PasswordFormFillData, PasswordFormFillData>::
} }
// static // static
void StructTraits<mojom::PasswordFormFillData, PasswordFormFillData>:: void StructTraits<mojom::PasswordFormFillDataDataView, PasswordFormFillData>::
TearDownContext(const PasswordFormFillData& r, void* context) { TearDownContext(const PasswordFormFillData& r, void* context) {
delete static_cast<UsernamesCollectionKeysValuesPair*>(context); delete static_cast<UsernamesCollectionKeysValuesPair*>(context);
} }
// static // static
bool StructTraits<mojom::PasswordFormFillData, PasswordFormFillData>::Read( bool StructTraits<mojom::PasswordFormFillDataDataView, PasswordFormFillData>::
mojom::PasswordFormFillDataDataView data, Read(mojom::PasswordFormFillDataDataView data, PasswordFormFillData* out) {
PasswordFormFillData* out) {
if (!data.ReadName(&out->name) || !data.ReadOrigin(&out->origin) || if (!data.ReadName(&out->name) || !data.ReadOrigin(&out->origin) ||
!data.ReadAction(&out->action) || !data.ReadAction(&out->action) ||
!data.ReadUsernameField(&out->username_field) || !data.ReadUsernameField(&out->username_field) ||
@ -506,7 +509,7 @@ bool StructTraits<mojom::PasswordFormFillData, PasswordFormFillData>::Read(
} }
// static // static
bool StructTraits<mojom::PasswordFormGenerationData, bool StructTraits<mojom::PasswordFormGenerationDataDataView,
PasswordFormGenerationData>:: PasswordFormGenerationData>::
Read(mojom::PasswordFormGenerationDataDataView data, Read(mojom::PasswordFormGenerationDataDataView data,
PasswordFormGenerationData* out) { PasswordFormGenerationData* out) {
@ -518,7 +521,7 @@ bool StructTraits<mojom::PasswordFormGenerationData,
} }
// static // static
bool StructTraits<mojom::PasswordForm, PasswordForm>::Read( bool StructTraits<mojom::PasswordFormDataView, PasswordForm>::Read(
mojom::PasswordFormDataView data, mojom::PasswordFormDataView data,
PasswordForm* out) { PasswordForm* out) {
if (!data.ReadScheme(&out->scheme) || if (!data.ReadScheme(&out->scheme) ||
@ -581,7 +584,7 @@ bool StructTraits<mojom::PasswordForm, PasswordForm>::Read(
} }
// static // static
void* StructTraits<mojom::PasswordFormFieldPredictionMap, void* StructTraits<mojom::PasswordFormFieldPredictionMapDataView,
PasswordFormFieldPredictionMap>:: PasswordFormFieldPredictionMap>::
SetUpContext(const PasswordFormFieldPredictionMap& r) { SetUpContext(const PasswordFormFieldPredictionMap& r) {
// Extracts keys vector and values vector from the map, saves them as a pair. // Extracts keys vector and values vector from the map, saves them as a pair.
@ -595,14 +598,14 @@ void* StructTraits<mojom::PasswordFormFieldPredictionMap,
} }
// static // static
void StructTraits<mojom::PasswordFormFieldPredictionMap, void StructTraits<mojom::PasswordFormFieldPredictionMapDataView,
PasswordFormFieldPredictionMap>:: PasswordFormFieldPredictionMap>::
TearDownContext(const PasswordFormFieldPredictionMap& r, void* context) { TearDownContext(const PasswordFormFieldPredictionMap& r, void* context) {
delete static_cast<KeysValuesPair*>(context); delete static_cast<KeysValuesPair*>(context);
} }
// static // static
bool StructTraits<mojom::PasswordFormFieldPredictionMap, bool StructTraits<mojom::PasswordFormFieldPredictionMapDataView,
PasswordFormFieldPredictionMap>:: PasswordFormFieldPredictionMap>::
Read(mojom::PasswordFormFieldPredictionMapDataView data, Read(mojom::PasswordFormFieldPredictionMapDataView data,
PasswordFormFieldPredictionMap* out) { PasswordFormFieldPredictionMap* out) {
@ -623,7 +626,7 @@ bool StructTraits<mojom::PasswordFormFieldPredictionMap,
} }
// static // static
void* StructTraits<mojom::FormsPredictionsMap, void* StructTraits<mojom::FormsPredictionsMapDataView,
FormsPredictionsMap>::SetUpContext(const FormsPredictionsMap& FormsPredictionsMap>::SetUpContext(const FormsPredictionsMap&
r) { r) {
// Extracts keys vector and values vector from the map, saves them as a pair. // Extracts keys vector and values vector from the map, saves them as a pair.
@ -637,15 +640,16 @@ void* StructTraits<mojom::FormsPredictionsMap,
} }
// static // static
void StructTraits<mojom::FormsPredictionsMap, FormsPredictionsMap>:: void StructTraits<mojom::FormsPredictionsMapDataView, FormsPredictionsMap>::
TearDownContext(const FormsPredictionsMap& r, void* context) { TearDownContext(const FormsPredictionsMap& r, void* context) {
delete static_cast<KeysValuesPair*>(context); delete static_cast<KeysValuesPair*>(context);
} }
// static // static
bool StructTraits<mojom::FormsPredictionsMap, FormsPredictionsMap>::Read( bool StructTraits<mojom::FormsPredictionsMapDataView,
mojom::FormsPredictionsMapDataView data, FormsPredictionsMap>::Read(mojom::FormsPredictionsMapDataView
FormsPredictionsMap* out) { data,
FormsPredictionsMap* out) {
// Combines keys vector and values vector to the map. // Combines keys vector and values vector to the map.
std::vector<FormData> keys; std::vector<FormData> keys;
if (!data.ReadKeys(&keys)) if (!data.ReadKeys(&keys))

@ -93,7 +93,8 @@ struct EnumTraits<autofill::mojom::PasswordFormFieldPredictionType,
}; };
template <> template <>
struct StructTraits<autofill::mojom::FormFieldData, autofill::FormFieldData> { struct StructTraits<autofill::mojom::FormFieldDataDataView,
autofill::FormFieldData> {
static const base::string16& label(const autofill::FormFieldData& r) { static const base::string16& label(const autofill::FormFieldData& r) {
return r.label; return r.label;
} }
@ -174,7 +175,7 @@ struct StructTraits<autofill::mojom::FormFieldData, autofill::FormFieldData> {
}; };
template <> template <>
struct StructTraits<autofill::mojom::FormData, autofill::FormData> { struct StructTraits<autofill::mojom::FormDataDataView, autofill::FormData> {
static const base::string16& name(const autofill::FormData& r) { static const base::string16& name(const autofill::FormData& r) {
return r.name; return r.name;
} }
@ -199,7 +200,7 @@ struct StructTraits<autofill::mojom::FormData, autofill::FormData> {
}; };
template <> template <>
struct StructTraits<autofill::mojom::FormFieldDataPredictions, struct StructTraits<autofill::mojom::FormFieldDataPredictionsDataView,
autofill::FormFieldDataPredictions> { autofill::FormFieldDataPredictions> {
static const autofill::FormFieldData& field( static const autofill::FormFieldData& field(
const autofill::FormFieldDataPredictions& r) { const autofill::FormFieldDataPredictions& r) {
@ -236,7 +237,7 @@ struct StructTraits<autofill::mojom::FormFieldDataPredictions,
}; };
template <> template <>
struct StructTraits<autofill::mojom::FormDataPredictions, struct StructTraits<autofill::mojom::FormDataPredictionsDataView,
autofill::FormDataPredictions> { autofill::FormDataPredictions> {
static const autofill::FormData& data( static const autofill::FormData& data(
const autofill::FormDataPredictions& r) { const autofill::FormDataPredictions& r) {
@ -257,7 +258,7 @@ struct StructTraits<autofill::mojom::FormDataPredictions,
}; };
template <> template <>
struct StructTraits<autofill::mojom::PasswordAndRealm, struct StructTraits<autofill::mojom::PasswordAndRealmDataView,
autofill::PasswordAndRealm> { autofill::PasswordAndRealm> {
static const base::string16& password(const autofill::PasswordAndRealm& r) { static const base::string16& password(const autofill::PasswordAndRealm& r) {
return r.password; return r.password;
@ -272,7 +273,7 @@ struct StructTraits<autofill::mojom::PasswordAndRealm,
}; };
template <> template <>
struct StructTraits<autofill::mojom::UsernamesCollectionKey, struct StructTraits<autofill::mojom::UsernamesCollectionKeyDataView,
autofill::UsernamesCollectionKey> { autofill::UsernamesCollectionKey> {
static const base::string16& username( static const base::string16& username(
const autofill::UsernamesCollectionKey& r) { const autofill::UsernamesCollectionKey& r) {
@ -293,7 +294,7 @@ struct StructTraits<autofill::mojom::UsernamesCollectionKey,
}; };
template <> template <>
struct StructTraits<autofill::mojom::PasswordFormFillData, struct StructTraits<autofill::mojom::PasswordFormFillDataDataView,
autofill::PasswordFormFillData> { autofill::PasswordFormFillData> {
using UsernamesCollectionKeysValuesPair = using UsernamesCollectionKeysValuesPair =
std::pair<std::vector<autofill::UsernamesCollectionKey>, std::pair<std::vector<autofill::UsernamesCollectionKey>,
@ -362,7 +363,7 @@ struct StructTraits<autofill::mojom::PasswordFormFillData,
}; };
template <> template <>
struct StructTraits<autofill::mojom::PasswordFormGenerationData, struct StructTraits<autofill::mojom::PasswordFormGenerationDataDataView,
autofill::PasswordFormGenerationData> { autofill::PasswordFormGenerationData> {
static const base::string16& name( static const base::string16& name(
const autofill::PasswordFormGenerationData& r) { const autofill::PasswordFormGenerationData& r) {
@ -383,7 +384,8 @@ struct StructTraits<autofill::mojom::PasswordFormGenerationData,
}; };
template <> template <>
struct StructTraits<autofill::mojom::PasswordForm, autofill::PasswordForm> { struct StructTraits<autofill::mojom::PasswordFormDataView,
autofill::PasswordForm> {
static autofill::PasswordForm::Scheme scheme( static autofill::PasswordForm::Scheme scheme(
const autofill::PasswordForm& r) { const autofill::PasswordForm& r) {
return r.scheme; return r.scheme;
@ -533,7 +535,7 @@ struct StructTraits<autofill::mojom::PasswordForm, autofill::PasswordForm> {
}; };
template <> template <>
struct StructTraits<autofill::mojom::PasswordFormFieldPredictionMap, struct StructTraits<autofill::mojom::PasswordFormFieldPredictionMapDataView,
autofill::PasswordFormFieldPredictionMap> { autofill::PasswordFormFieldPredictionMap> {
using KeysValuesPair = using KeysValuesPair =
std::pair<std::vector<autofill::FormFieldData>, std::pair<std::vector<autofill::FormFieldData>,
@ -561,7 +563,7 @@ struct StructTraits<autofill::mojom::PasswordFormFieldPredictionMap,
}; };
template <> template <>
struct StructTraits<autofill::mojom::FormsPredictionsMap, struct StructTraits<autofill::mojom::FormsPredictionsMapDataView,
autofill::FormsPredictionsMap> { autofill::FormsPredictionsMap> {
using KeysValuesPair = using KeysValuesPair =
std::pair<std::vector<autofill::FormData>, std::pair<std::vector<autofill::FormData>,

@ -17,7 +17,7 @@
namespace mojo { namespace mojo {
template <> template <>
struct StructTraits<metrics::mojom::CallStackModule, struct StructTraits<metrics::mojom::CallStackModuleDataView,
base::StackSamplingProfiler::Module> { base::StackSamplingProfiler::Module> {
static uint64_t base_address( static uint64_t base_address(
const base::StackSamplingProfiler::Module& module) { const base::StackSamplingProfiler::Module& module) {
@ -50,7 +50,7 @@ struct StructTraits<metrics::mojom::CallStackModule,
}; };
template <> template <>
struct StructTraits<metrics::mojom::CallStackFrame, struct StructTraits<metrics::mojom::CallStackFrameDataView,
base::StackSamplingProfiler::Frame> { base::StackSamplingProfiler::Frame> {
static uint64_t instruction_pointer( static uint64_t instruction_pointer(
const base::StackSamplingProfiler::Frame& frame) { const base::StackSamplingProfiler::Frame& frame) {
@ -80,7 +80,7 @@ struct StructTraits<metrics::mojom::CallStackFrame,
}; };
template <> template <>
struct StructTraits<metrics::mojom::CallStackProfile, struct StructTraits<metrics::mojom::CallStackProfileDataView,
base::StackSamplingProfiler::CallStackProfile> { base::StackSamplingProfiler::CallStackProfile> {
static const std::vector<base::StackSamplingProfiler::Module>& modules( static const std::vector<base::StackSamplingProfiler::Module>& modules(
const base::StackSamplingProfiler::CallStackProfile& profile) { const base::StackSamplingProfiler::CallStackProfile& profile) {

@ -49,7 +49,7 @@ bool EnumTraits<mojom::CredentialType, CredentialType>::FromMojom(
} }
// static // static
bool StructTraits<mojom::CredentialInfo, CredentialInfo>::Read( bool StructTraits<mojom::CredentialInfoDataView, CredentialInfo>::Read(
mojom::CredentialInfoDataView data, mojom::CredentialInfoDataView data,
CredentialInfo* out) { CredentialInfo* out) {
if (data.ReadType(&out->type) && data.ReadId(&out->id) && if (data.ReadType(&out->type) && data.ReadId(&out->id) &&

@ -22,7 +22,7 @@ struct EnumTraits<password_manager::mojom::CredentialType,
}; };
template <> template <>
struct StructTraits<password_manager::mojom::CredentialInfo, struct StructTraits<password_manager::mojom::CredentialInfoDataView,
password_manager::CredentialInfo> { password_manager::CredentialInfo> {
static password_manager::CredentialType type( static password_manager::CredentialType type(
const password_manager::CredentialInfo& r) { const password_manager::CredentialInfo& r) {

@ -92,7 +92,8 @@ bool EnumTraits<mojom::TranslateError, TranslateErrors::Type>::FromMojom(
} }
// static // static
bool StructTraits<mojom::LanguageDetectionDetails, LanguageDetectionDetails>:: bool StructTraits<mojom::LanguageDetectionDetailsDataView,
LanguageDetectionDetails>::
Read(mojom::LanguageDetectionDetailsDataView data, Read(mojom::LanguageDetectionDetailsDataView data,
LanguageDetectionDetails* out) { LanguageDetectionDetails* out) {
if (!data.ReadTime(&out->time)) if (!data.ReadTime(&out->time))

@ -24,7 +24,7 @@ struct EnumTraits<translate::mojom::TranslateError,
}; };
template <> template <>
struct StructTraits<translate::mojom::LanguageDetectionDetails, struct StructTraits<translate::mojom::LanguageDetectionDetailsDataView,
translate::LanguageDetectionDetails> { translate::LanguageDetectionDetails> {
static const base::Time& time(const translate::LanguageDetectionDetails& r) { static const base::Time& time(const translate::LanguageDetectionDetails& r) {
return r.time; return r.time;

@ -13,7 +13,7 @@
namespace mojo { namespace mojo {
template <> template <>
struct StructTraits<blink::mojom::WebBluetoothDeviceId, struct StructTraits<blink::mojom::WebBluetoothDeviceIdDataView,
content::WebBluetoothDeviceId> { content::WebBluetoothDeviceId> {
static const std::string& device_id( static const std::string& device_id(
const content::WebBluetoothDeviceId& device_id) { const content::WebBluetoothDeviceId& device_id) {

@ -13,7 +13,8 @@
namespace mojo { namespace mojo {
template <> template <>
struct StructTraits<device::mojom::BluetoothUUID, device::BluetoothUUID> { struct StructTraits<device::mojom::BluetoothUUIDDataView,
device::BluetoothUUID> {
static const std::string& uuid(const device::BluetoothUUID& uuid) { static const std::string& uuid(const device::BluetoothUUID& uuid) {
return uuid.canonical_value(); return uuid.canonical_value();
} }

@ -7,7 +7,7 @@
namespace mojo { namespace mojo {
// static // static
bool StructTraits<device::mojom::SensorConfiguration, bool StructTraits<device::mojom::SensorConfigurationDataView,
device::PlatformSensorConfiguration>:: device::PlatformSensorConfiguration>::
Read(device::mojom::SensorConfigurationDataView data, Read(device::mojom::SensorConfigurationDataView data,
device::PlatformSensorConfiguration* out) { device::PlatformSensorConfiguration* out) {

@ -11,7 +11,7 @@
namespace mojo { namespace mojo {
template <> template <>
struct StructTraits<device::mojom::SensorConfiguration, struct StructTraits<device::mojom::SensorConfigurationDataView,
device::PlatformSensorConfiguration> { device::PlatformSensorConfiguration> {
static double frequency(const device::PlatformSensorConfiguration& input) { static double frequency(const device::PlatformSensorConfiguration& input) {
return input.frequency(); return input.frequency();

@ -7,7 +7,7 @@
namespace mojo { namespace mojo {
// static // static
bool StructTraits<gpu::mojom::DxDiagNode, gpu::DxDiagNode>::Read( bool StructTraits<gpu::mojom::DxDiagNodeDataView, gpu::DxDiagNode>::Read(
gpu::mojom::DxDiagNodeDataView data, gpu::mojom::DxDiagNodeDataView data,
gpu::DxDiagNode* out) { gpu::DxDiagNode* out) {
return data.ReadValues(&out->values) && data.ReadChildren(&out->children); return data.ReadValues(&out->values) && data.ReadChildren(&out->children);

@ -10,7 +10,7 @@
namespace mojo { namespace mojo {
template <> template <>
struct StructTraits<gpu::mojom::DxDiagNode, gpu::DxDiagNode> { struct StructTraits<gpu::mojom::DxDiagNodeDataView, gpu::DxDiagNode> {
static bool Read(gpu::mojom::DxDiagNodeDataView data, gpu::DxDiagNode* out); static bool Read(gpu::mojom::DxDiagNodeDataView data, gpu::DxDiagNode* out);
static const std::map<std::string, std::string>& values( static const std::map<std::string, std::string>& values(

@ -10,7 +10,7 @@
namespace mojo { namespace mojo {
// static // static
bool StructTraits<gpu::mojom::GpuDevice, gpu::GPUInfo::GPUDevice>::Read( bool StructTraits<gpu::mojom::GpuDeviceDataView, gpu::GPUInfo::GPUDevice>::Read(
gpu::mojom::GpuDeviceDataView data, gpu::mojom::GpuDeviceDataView data,
gpu::GPUInfo::GPUDevice* out) { gpu::GPUInfo::GPUDevice* out) {
out->vendor_id = data.vendor_id(); out->vendor_id = data.vendor_id();
@ -182,7 +182,7 @@ bool EnumTraits<gpu::mojom::VideoCodecProfile, gpu::VideoCodecProfile>::
} }
// static // static
bool StructTraits<gpu::mojom::VideoDecodeAcceleratorSupportedProfile, bool StructTraits<gpu::mojom::VideoDecodeAcceleratorSupportedProfileDataView,
gpu::VideoDecodeAcceleratorSupportedProfile>:: gpu::VideoDecodeAcceleratorSupportedProfile>::
Read(gpu::mojom::VideoDecodeAcceleratorSupportedProfileDataView data, Read(gpu::mojom::VideoDecodeAcceleratorSupportedProfileDataView data,
gpu::VideoDecodeAcceleratorSupportedProfile* out) { gpu::VideoDecodeAcceleratorSupportedProfile* out) {
@ -193,7 +193,7 @@ bool StructTraits<gpu::mojom::VideoDecodeAcceleratorSupportedProfile,
} }
// static // static
bool StructTraits<gpu::mojom::VideoDecodeAcceleratorCapabilities, bool StructTraits<gpu::mojom::VideoDecodeAcceleratorCapabilitiesDataView,
gpu::VideoDecodeAcceleratorCapabilities>:: gpu::VideoDecodeAcceleratorCapabilities>::
Read(gpu::mojom::VideoDecodeAcceleratorCapabilitiesDataView data, Read(gpu::mojom::VideoDecodeAcceleratorCapabilitiesDataView data,
gpu::VideoDecodeAcceleratorCapabilities* out) { gpu::VideoDecodeAcceleratorCapabilities* out) {
@ -202,7 +202,7 @@ bool StructTraits<gpu::mojom::VideoDecodeAcceleratorCapabilities,
} }
// static // static
bool StructTraits<gpu::mojom::VideoEncodeAcceleratorSupportedProfile, bool StructTraits<gpu::mojom::VideoEncodeAcceleratorSupportedProfileDataView,
gpu::VideoEncodeAcceleratorSupportedProfile>:: gpu::VideoEncodeAcceleratorSupportedProfile>::
Read(gpu::mojom::VideoEncodeAcceleratorSupportedProfileDataView data, Read(gpu::mojom::VideoEncodeAcceleratorSupportedProfileDataView data,
gpu::VideoEncodeAcceleratorSupportedProfile* out) { gpu::VideoEncodeAcceleratorSupportedProfile* out) {
@ -212,7 +212,7 @@ bool StructTraits<gpu::mojom::VideoEncodeAcceleratorSupportedProfile,
data.ReadMaxResolution(&out->max_resolution); data.ReadMaxResolution(&out->max_resolution);
} }
bool StructTraits<gpu::mojom::GpuInfo, gpu::GPUInfo>::Read( bool StructTraits<gpu::mojom::GpuInfoDataView, gpu::GPUInfo>::Read(
gpu::mojom::GpuInfoDataView data, gpu::mojom::GpuInfoDataView data,
gpu::GPUInfo* out) { gpu::GPUInfo* out) {
out->optimus = data.optimus(); out->optimus = data.optimus();

@ -15,7 +15,7 @@
namespace mojo { namespace mojo {
template <> template <>
struct StructTraits<gpu::mojom::GpuDevice, gpu::GPUInfo::GPUDevice> { struct StructTraits<gpu::mojom::GpuDeviceDataView, gpu::GPUInfo::GPUDevice> {
static bool Read(gpu::mojom::GpuDeviceDataView data, static bool Read(gpu::mojom::GpuDeviceDataView data,
gpu::GPUInfo::GPUDevice* out); gpu::GPUInfo::GPUDevice* out);
@ -60,7 +60,7 @@ struct EnumTraits<gpu::mojom::VideoCodecProfile, gpu::VideoCodecProfile> {
}; };
template <> template <>
struct StructTraits<gpu::mojom::VideoDecodeAcceleratorSupportedProfile, struct StructTraits<gpu::mojom::VideoDecodeAcceleratorSupportedProfileDataView,
gpu::VideoDecodeAcceleratorSupportedProfile> { gpu::VideoDecodeAcceleratorSupportedProfile> {
static bool Read( static bool Read(
gpu::mojom::VideoDecodeAcceleratorSupportedProfileDataView data, gpu::mojom::VideoDecodeAcceleratorSupportedProfileDataView data,
@ -88,7 +88,7 @@ struct StructTraits<gpu::mojom::VideoDecodeAcceleratorSupportedProfile,
}; };
template <> template <>
struct StructTraits<gpu::mojom::VideoDecodeAcceleratorCapabilities, struct StructTraits<gpu::mojom::VideoDecodeAcceleratorCapabilitiesDataView,
gpu::VideoDecodeAcceleratorCapabilities> { gpu::VideoDecodeAcceleratorCapabilities> {
static bool Read(gpu::mojom::VideoDecodeAcceleratorCapabilitiesDataView data, static bool Read(gpu::mojom::VideoDecodeAcceleratorCapabilitiesDataView data,
gpu::VideoDecodeAcceleratorCapabilities* out); gpu::VideoDecodeAcceleratorCapabilities* out);
@ -99,7 +99,7 @@ struct StructTraits<gpu::mojom::VideoDecodeAcceleratorCapabilities,
}; };
template <> template <>
struct StructTraits<gpu::mojom::VideoEncodeAcceleratorSupportedProfile, struct StructTraits<gpu::mojom::VideoEncodeAcceleratorSupportedProfileDataView,
gpu::VideoEncodeAcceleratorSupportedProfile> { gpu::VideoEncodeAcceleratorSupportedProfile> {
static bool Read( static bool Read(
gpu::mojom::VideoEncodeAcceleratorSupportedProfileDataView data, gpu::mojom::VideoEncodeAcceleratorSupportedProfileDataView data,
@ -127,7 +127,7 @@ struct StructTraits<gpu::mojom::VideoEncodeAcceleratorSupportedProfile,
}; };
template <> template <>
struct StructTraits<gpu::mojom::GpuInfo, gpu::GPUInfo> { struct StructTraits<gpu::mojom::GpuInfoDataView, gpu::GPUInfo> {
static bool Read(gpu::mojom::GpuInfoDataView data, gpu::GPUInfo* out); static bool Read(gpu::mojom::GpuInfoDataView data, gpu::GPUInfo* out);
static base::TimeDelta initialization_time(const gpu::GPUInfo& input) { static base::TimeDelta initialization_time(const gpu::GPUInfo& input) {

@ -11,7 +11,7 @@
namespace mojo { namespace mojo {
template <> template <>
struct StructTraits<gpu::mojom::MailboxHolder, gpu::MailboxHolder> { struct StructTraits<gpu::mojom::MailboxHolderDataView, gpu::MailboxHolder> {
static const gpu::Mailbox& mailbox(const gpu::MailboxHolder& holder) { static const gpu::Mailbox& mailbox(const gpu::MailboxHolder& holder) {
return holder.mailbox; return holder.mailbox;
} }

@ -7,14 +7,14 @@
namespace mojo { namespace mojo {
// static // static
MailboxName StructTraits<gpu::mojom::Mailbox, gpu::Mailbox>::name( MailboxName StructTraits<gpu::mojom::MailboxDataView, gpu::Mailbox>::name(
const gpu::Mailbox& mailbox) { const gpu::Mailbox& mailbox) {
return {GL_MAILBOX_SIZE_CHROMIUM, GL_MAILBOX_SIZE_CHROMIUM, return {GL_MAILBOX_SIZE_CHROMIUM, GL_MAILBOX_SIZE_CHROMIUM,
const_cast<int8_t*>(&mailbox.name[0])}; const_cast<int8_t*>(&mailbox.name[0])};
} }
// static // static
bool StructTraits<gpu::mojom::Mailbox, gpu::Mailbox>::Read( bool StructTraits<gpu::mojom::MailboxDataView, gpu::Mailbox>::Read(
gpu::mojom::MailboxDataView data, gpu::mojom::MailboxDataView data,
gpu::Mailbox* out) { gpu::Mailbox* out) {
MailboxName mailbox_name = {0, GL_MAILBOX_SIZE_CHROMIUM, &out->name[0]}; MailboxName mailbox_name = {0, GL_MAILBOX_SIZE_CHROMIUM, &out->name[0]};

@ -16,7 +16,7 @@ namespace mojo {
using MailboxName = CArray<int8_t>; using MailboxName = CArray<int8_t>;
template <> template <>
struct StructTraits<gpu::mojom::Mailbox, gpu::Mailbox> { struct StructTraits<gpu::mojom::MailboxDataView, gpu::Mailbox> {
static MailboxName name(const gpu::Mailbox& mailbox); static MailboxName name(const gpu::Mailbox& mailbox);
static bool Read(gpu::mojom::MailboxDataView data, gpu::Mailbox* out); static bool Read(gpu::mojom::MailboxDataView data, gpu::Mailbox* out);
}; };

@ -11,7 +11,7 @@
namespace mojo { namespace mojo {
template <> template <>
struct StructTraits<gpu::mojom::SyncToken, gpu::SyncToken> { struct StructTraits<gpu::mojom::SyncTokenDataView, gpu::SyncToken> {
static bool verified_flush(const gpu::SyncToken& token) { static bool verified_flush(const gpu::SyncToken& token) {
return token.verified_flush(); return token.verified_flush();
} }

@ -11,7 +11,7 @@
namespace mojo { namespace mojo {
template <> template <>
struct StructTraits<media::mojom::PipelineStatistics, struct StructTraits<media::mojom::PipelineStatisticsDataView,
media::PipelineStatistics> { media::PipelineStatistics> {
static uint64_t audio_bytes_decoded(const media::PipelineStatistics& input) { static uint64_t audio_bytes_decoded(const media::PipelineStatistics& input) {
return input.audio_bytes_decoded; return input.audio_bytes_decoded;
@ -46,4 +46,4 @@ struct StructTraits<media::mojom::PipelineStatistics,
} // namespace mojo } // namespace mojo
#endif // MEDIA_MOJO_COMMON_PIPELINE_STATISTICS_STRUCT_TRAITS_H_ #endif // MEDIA_MOJO_COMMON_PIPELINE_STATISTICS_STRUCT_TRAITS_H_

@ -12,13 +12,13 @@ namespace mojo {
// static // static
const std::vector<uint32_t>& const std::vector<uint32_t>&
StructTraits<mojo::common::mojom::Version, base::Version>::components( StructTraits<mojo::common::mojom::VersionDataView, base::Version>::components(
const base::Version& version) { const base::Version& version) {
return version.components(); return version.components();
} }
// static // static
bool StructTraits<mojo::common::mojom::Version, base::Version>::Read( bool StructTraits<mojo::common::mojom::VersionDataView, base::Version>::Read(
mojo::common::mojom::VersionDataView data, mojo::common::mojom::VersionDataView data,
base::Version* out) { base::Version* out) {
std::vector<uint32_t> components; std::vector<uint32_t> components;

@ -14,7 +14,7 @@ class Version;
namespace mojo { namespace mojo {
template <> template <>
struct StructTraits<mojo::common::mojom::Version, base::Version> { struct StructTraits<mojo::common::mojom::VersionDataView, base::Version> {
static bool IsNull(const base::Version& version) { static bool IsNull(const base::Version& version) {
return !version.IsValid(); return !version.IsValid();
} }

@ -8,7 +8,11 @@
namespace mojo { namespace mojo {
// This must be specialized for any type |T| to be serialized/deserialized as // This must be specialized for any type |T| to be serialized/deserialized as
// a mojom struct of type |MojomType|. // a mojom struct. |DataViewType| is the corresponding data view type of the
// mojom struct. For example, if the mojom struct is example.Foo,
// |DataViewType| will be example::FooDataView, which can also be referred to by
// example::Foo::DataView (in chromium) and example::blink::Foo::DataView (in
// blink).
// //
// Each specialization needs to implement a few things: // Each specialization needs to implement a few things:
// 1. Static getters for each field in the Mojom type. These should be // 1. Static getters for each field in the Mojom type. These should be
@ -20,19 +24,22 @@ namespace mojo {
// from |input|. // from |input|.
// //
// Serializable form of a field: // Serializable form of a field:
// Value or reference of the same type used in |MojomType|, or the // Value or reference of the same type used in the generated stuct
// following alternatives: // wrapper type, or the following alternatives:
// - string: // - string:
// Value or reference of any type that has a StringTraits defined. // Value or reference of any type that has a StringTraits defined.
// Supported by default: base::StringPiece, std::string. // Supported by default: base::StringPiece, std::string, mojo::String,
// WTF::String (in blink).
// //
// - array: // - array:
// Value or reference of any type that has an ArrayTraits defined. // Value or reference of any type that has an ArrayTraits defined.
// Supported by default: std::vector, WTF::Vector (in blink), CArray. // Supported by default: std::vector, CArray, mojo::Array, WTF::Vector
// (in blink), mojo::WTFArray (in blink).
// //
// - map: // - map:
// Value or reference of any type that has a MapTraits defined. // Value or reference of any type that has a MapTraits defined.
// Supported by default: std::map. // Supported by default: std::map, std::unordered_map, mojo::Map,
// WTF::HashMap (in blink), mojo::WTFMap (in blink).
// //
// - struct: // - struct:
// Value or reference of any type that has a StructTraits defined. // Value or reference of any type that has a StructTraits defined.
@ -40,6 +47,10 @@ namespace mojo {
// - enum: // - enum:
// Value of any type that has an EnumTraits defined. // Value of any type that has an EnumTraits defined.
// //
// For any nullable string/struct/array/map/union field you could also
// return value or reference of base::Optional<T>/WTF::Optional<T>, if T
// has the right *Traits defined.
//
// During serialization, getters for string/struct/array/map/union fields // During serialization, getters for string/struct/array/map/union fields
// are called twice (one for size calculation and one for actual // are called twice (one for size calculation and one for actual
// serialization). If you want to return a value (as opposed to a // serialization). If you want to return a value (as opposed to a
@ -49,14 +60,13 @@ namespace mojo {
// Getters for fields of other types are called once. // Getters for fields of other types are called once.
// //
// 2. A static Read() method to set the contents of a |T| instance from a // 2. A static Read() method to set the contents of a |T| instance from a
// |MojomType|DataView (e.g., if |MojomType| is test::Example, the data // DataViewType.
// view will be test::ExampleDataView).
// //
// static bool Read(|MojomType|DataView data, T* output); // static bool Read(DataViewType data, T* output);
// //
// The generated |MojomType|DataView type provides a convenient, // The generated DataViewType provides a convenient, inexpensive view of a
// inexpensive view of a serialized struct's field data. The caller // serialized struct's field data. The caller guarantees that
// guarantees that |!data.is_null()|. // |!data.is_null()|.
// //
// Returning false indicates invalid incoming data and causes the message // Returning false indicates invalid incoming data and causes the message
// pipe receiving it to be disconnected. Therefore, you can do custom // pipe receiving it to be disconnected. Therefore, you can do custom
@ -112,9 +122,12 @@ namespace mojo {
// reference/value to the Mojo bindings for serialization: // reference/value to the Mojo bindings for serialization:
// - if T is used in the "type_mappings" section of a typemap config file, // - if T is used in the "type_mappings" section of a typemap config file,
// you need to declare it as pass-by-value: // you need to declare it as pass-by-value:
// type_mappings = [ "MojomType=T(pass_by_value)" ] // type_mappings = [ "MojomType=T(move_only)" ]
// - if another type U's StructTraits has a getter for T, it needs to return // or
// non-const reference/value. // type_mappings = [ "MojomType=T(copyable_pass_by_value)" ]
//
// - if another type U's StructTraits/UnionTraits has a getter for T, it
// needs to return non-const reference/value.
// //
// EXAMPLE: // EXAMPLE:
// //
@ -129,7 +142,7 @@ namespace mojo {
// //
// StructTraits for Foo: // StructTraits for Foo:
// template <> // template <>
// struct StructTraits<Foo, CustomFoo> { // struct StructTraits<FooDataView, CustomFoo> {
// // Optional methods dealing with null: // // Optional methods dealing with null:
// static bool IsNull(const CustomFoo& input); // static bool IsNull(const CustomFoo& input);
// static void SetToNull(CustomFoo* output); // static void SetToNull(CustomFoo* output);
@ -145,7 +158,7 @@ namespace mojo {
// static bool Read(FooDataView data, CustomFoo* output); // static bool Read(FooDataView data, CustomFoo* output);
// }; // };
// //
template <typename MojomType, typename T> template <typename DataViewType, typename T>
struct StructTraits; struct StructTraits;
} // namespace mojo } // namespace mojo

@ -12,7 +12,7 @@
namespace mojo { namespace mojo {
template <> template <>
struct StructTraits<test::blink::TypemappedRect, test::RectBlink> { struct StructTraits<test::blink::TypemappedRectDataView, test::RectBlink> {
static int x(const test::RectBlink& r) { return r.x(); } static int x(const test::RectBlink& r) { return r.x(); }
static int y(const test::RectBlink& r) { return r.y(); } static int y(const test::RectBlink& r) { return r.y(); }
static int width(const test::RectBlink& r) { return r.width(); } static int width(const test::RectBlink& r) { return r.width(); }

@ -12,7 +12,7 @@
namespace mojo { namespace mojo {
template <> template <>
struct StructTraits<test::TypemappedRect, test::RectChromium> { struct StructTraits<test::TypemappedRectDataView, test::RectChromium> {
static int x(const test::RectChromium& r) { return r.x(); } static int x(const test::RectChromium& r) { return r.x(); }
static int y(const test::RectChromium& r) { return r.y(); } static int y(const test::RectChromium& r) { return r.y(); }
static int width(const test::RectChromium& r) { return r.width(); } static int width(const test::RectChromium& r) { return r.width(); }

@ -14,7 +14,7 @@ struct Context {
} // namespace } // namespace
// static // static
void* StructTraits<test::NestedStructWithTraits, void* StructTraits<test::NestedStructWithTraitsDataView,
test::NestedStructWithTraitsImpl>:: test::NestedStructWithTraitsImpl>::
SetUpContext(const test::NestedStructWithTraitsImpl& input) { SetUpContext(const test::NestedStructWithTraitsImpl& input) {
Context* context = new Context; Context* context = new Context;
@ -23,7 +23,7 @@ void* StructTraits<test::NestedStructWithTraits,
} }
// static // static
void StructTraits<test::NestedStructWithTraits, void StructTraits<test::NestedStructWithTraitsDataView,
test::NestedStructWithTraitsImpl>:: test::NestedStructWithTraitsImpl>::
TearDownContext(const test::NestedStructWithTraitsImpl& input, TearDownContext(const test::NestedStructWithTraitsImpl& input,
void* context) { void* context) {
@ -33,7 +33,7 @@ void StructTraits<test::NestedStructWithTraits,
} }
// static // static
int32_t StructTraits<test::NestedStructWithTraits, int32_t StructTraits<test::NestedStructWithTraitsDataView,
test::NestedStructWithTraitsImpl>:: test::NestedStructWithTraitsImpl>::
value(const test::NestedStructWithTraitsImpl& input, void* context) { value(const test::NestedStructWithTraitsImpl& input, void* context) {
Context* context_obj = static_cast<Context*>(context); Context* context_obj = static_cast<Context*>(context);
@ -42,7 +42,7 @@ int32_t StructTraits<test::NestedStructWithTraits,
} }
// static // static
bool StructTraits<test::NestedStructWithTraits, bool StructTraits<test::NestedStructWithTraitsDataView,
test::NestedStructWithTraitsImpl>:: test::NestedStructWithTraitsImpl>::
Read(test::NestedStructWithTraits::DataView data, Read(test::NestedStructWithTraits::DataView data,
test::NestedStructWithTraitsImpl* output) { test::NestedStructWithTraitsImpl* output) {
@ -80,9 +80,9 @@ bool EnumTraits<test::EnumWithTraits, test::EnumWithTraitsImpl>::FromMojom(
} }
// static // static
bool StructTraits<test::StructWithTraits, test::StructWithTraitsImpl>::Read( bool StructTraits<test::StructWithTraitsDataView, test::StructWithTraitsImpl>::
test::StructWithTraits::DataView data, Read(test::StructWithTraits::DataView data,
test::StructWithTraitsImpl* out) { test::StructWithTraitsImpl* out) {
test::EnumWithTraitsImpl f_enum; test::EnumWithTraitsImpl f_enum;
if (!data.ReadFEnum(&f_enum)) if (!data.ReadFEnum(&f_enum))
return false; return false;
@ -126,7 +126,7 @@ bool StructTraits<test::StructWithTraits, test::StructWithTraitsImpl>::Read(
} }
// static // static
bool StructTraits<test::MoveOnlyStructWithTraits, bool StructTraits<test::MoveOnlyStructWithTraitsDataView,
test::MoveOnlyStructWithTraitsImpl>:: test::MoveOnlyStructWithTraitsImpl>::
Read(test::MoveOnlyStructWithTraits::DataView data, Read(test::MoveOnlyStructWithTraits::DataView data,
test::MoveOnlyStructWithTraitsImpl* out) { test::MoveOnlyStructWithTraitsImpl* out) {

@ -18,7 +18,7 @@
namespace mojo { namespace mojo {
template <> template <>
struct StructTraits<test::NestedStructWithTraits, struct StructTraits<test::NestedStructWithTraitsDataView,
test::NestedStructWithTraitsImpl> { test::NestedStructWithTraitsImpl> {
static void* SetUpContext(const test::NestedStructWithTraitsImpl& input); static void* SetUpContext(const test::NestedStructWithTraitsImpl& input);
static void TearDownContext(const test::NestedStructWithTraitsImpl& input, static void TearDownContext(const test::NestedStructWithTraitsImpl& input,
@ -27,7 +27,7 @@ struct StructTraits<test::NestedStructWithTraits,
static int32_t value(const test::NestedStructWithTraitsImpl& input, static int32_t value(const test::NestedStructWithTraitsImpl& input,
void* context); void* context);
static bool Read(test::NestedStructWithTraits::DataView data, static bool Read(test::NestedStructWithTraitsDataView data,
test::NestedStructWithTraitsImpl* output); test::NestedStructWithTraitsImpl* output);
}; };
@ -39,9 +39,10 @@ struct EnumTraits<test::EnumWithTraits, test::EnumWithTraitsImpl> {
}; };
template <> template <>
struct StructTraits<test::StructWithTraits, test::StructWithTraitsImpl> { struct StructTraits<test::StructWithTraitsDataView,
test::StructWithTraitsImpl> {
// Deserialization to test::StructTraitsImpl. // Deserialization to test::StructTraitsImpl.
static bool Read(test::StructWithTraits::DataView data, static bool Read(test::StructWithTraitsDataView data,
test::StructWithTraitsImpl* out); test::StructWithTraitsImpl* out);
// Fields in test::StructWithTraits. // Fields in test::StructWithTraits.
@ -98,10 +99,10 @@ struct StructTraits<test::StructWithTraits, test::StructWithTraitsImpl> {
}; };
template <> template <>
struct StructTraits<test::TrivialStructWithTraits, struct StructTraits<test::TrivialStructWithTraitsDataView,
test::TrivialStructWithTraitsImpl> { test::TrivialStructWithTraitsImpl> {
// Deserialization to test::TrivialStructTraitsImpl. // Deserialization to test::TrivialStructTraitsImpl.
static bool Read(test::TrivialStructWithTraits::DataView data, static bool Read(test::TrivialStructWithTraitsDataView data,
test::TrivialStructWithTraitsImpl* out) { test::TrivialStructWithTraitsImpl* out) {
out->value = data.value(); out->value = data.value();
return true; return true;
@ -115,10 +116,10 @@ struct StructTraits<test::TrivialStructWithTraits,
}; };
template <> template <>
struct StructTraits<test::MoveOnlyStructWithTraits, struct StructTraits<test::MoveOnlyStructWithTraitsDataView,
test::MoveOnlyStructWithTraitsImpl> { test::MoveOnlyStructWithTraitsImpl> {
// Deserialization to test::MoveOnlyStructTraitsImpl. // Deserialization to test::MoveOnlyStructTraitsImpl.
static bool Read(test::MoveOnlyStructWithTraits::DataView data, static bool Read(test::MoveOnlyStructWithTraitsDataView data,
test::MoveOnlyStructWithTraitsImpl* out); test::MoveOnlyStructWithTraitsImpl* out);
// Fields in test::MoveOnlyStructWithTraits. // Fields in test::MoveOnlyStructWithTraits.
@ -129,13 +130,14 @@ struct StructTraits<test::MoveOnlyStructWithTraits,
}; };
template <> template <>
struct StructTraits<test::StructWithTraitsForUniquePtr, std::unique_ptr<int>> { struct StructTraits<test::StructWithTraitsForUniquePtrDataView,
std::unique_ptr<int>> {
static bool IsNull(const std::unique_ptr<int>& data) { return !data; } static bool IsNull(const std::unique_ptr<int>& data) { return !data; }
static void SetToNull(std::unique_ptr<int>* data) { data->reset(); } static void SetToNull(std::unique_ptr<int>* data) { data->reset(); }
static int f_int32(const std::unique_ptr<int>& data) { return *data; } static int f_int32(const std::unique_ptr<int>& data) { return *data; }
static bool Read(test::StructWithTraitsForUniquePtr::DataView data, static bool Read(test::StructWithTraitsForUniquePtrDataView data,
std::unique_ptr<int>* out) { std::unique_ptr<int>* out) {
out->reset(new int(data.f_int32())); out->reset(new int(data.f_int32()));
return true; return true;
@ -143,7 +145,7 @@ struct StructTraits<test::StructWithTraitsForUniquePtr, std::unique_ptr<int>> {
}; };
template <> template <>
struct UnionTraits<test::UnionWithTraits, struct UnionTraits<test::UnionWithTraitsDataView,
std::unique_ptr<test::UnionWithTraitsBase>> { std::unique_ptr<test::UnionWithTraitsBase>> {
static bool IsNull(const std::unique_ptr<test::UnionWithTraitsBase>& data) { static bool IsNull(const std::unique_ptr<test::UnionWithTraitsBase>& data) {
return !data; return !data;
@ -152,12 +154,12 @@ struct UnionTraits<test::UnionWithTraits,
data->reset(); data->reset();
} }
static test::UnionWithTraits::DataView::Tag GetTag( static test::UnionWithTraitsDataView::Tag GetTag(
const std::unique_ptr<test::UnionWithTraitsBase>& data) { const std::unique_ptr<test::UnionWithTraitsBase>& data) {
if (data->type() == test::UnionWithTraitsBase::Type::INT32) if (data->type() == test::UnionWithTraitsBase::Type::INT32)
return test::UnionWithTraits::DataView::Tag::F_INT32; return test::UnionWithTraitsDataView::Tag::F_INT32;
return test::UnionWithTraits::DataView::Tag::F_STRUCT; return test::UnionWithTraitsDataView::Tag::F_STRUCT;
} }
static int32_t f_int32( static int32_t f_int32(
@ -170,14 +172,14 @@ struct UnionTraits<test::UnionWithTraits,
return static_cast<test::UnionWithTraitsStruct*>(data.get())->get_struct(); return static_cast<test::UnionWithTraitsStruct*>(data.get())->get_struct();
} }
static bool Read(test::UnionWithTraits::DataView data, static bool Read(test::UnionWithTraitsDataView data,
std::unique_ptr<test::UnionWithTraitsBase>* out) { std::unique_ptr<test::UnionWithTraitsBase>* out) {
switch (data.tag()) { switch (data.tag()) {
case test::UnionWithTraits::DataView::Tag::F_INT32: { case test::UnionWithTraitsDataView::Tag::F_INT32: {
out->reset(new test::UnionWithTraitsInt32(data.f_int32())); out->reset(new test::UnionWithTraitsInt32(data.f_int32()));
return true; return true;
} }
case test::UnionWithTraits::DataView::Tag::F_STRUCT: { case test::UnionWithTraitsDataView::Tag::F_STRUCT: {
auto* struct_object = new test::UnionWithTraitsStruct(); auto* struct_object = new test::UnionWithTraitsStruct();
out->reset(struct_object); out->reset(struct_object);
return data.ReadFStruct(&struct_object->get_mutable_struct()); return data.ReadFStruct(&struct_object->get_mutable_struct());

@ -8,7 +8,11 @@
namespace mojo { namespace mojo {
// This must be specialized for any type |T| to be serialized/deserialized as // This must be specialized for any type |T| to be serialized/deserialized as
// a mojom union of type |MojomType|. // a mojom union. |DataViewType| is the corresponding data view type of the
// mojom union. For example, if the mojom union is example.Foo, |DataViewType|
// will be example::FooDataView, which can also be referred to by
// example::Foo::DataView (in chromium) and example::blink::Foo::DataView (in
// blink).
// //
// Similar to StructTraits, each specialization of UnionTraits implements the // Similar to StructTraits, each specialization of UnionTraits implements the
// following methods: // following methods:
@ -22,12 +26,12 @@ namespace mojo {
// 5. A static GetTag() method indicating which field is the current active // 5. A static GetTag() method indicating which field is the current active
// field for serialization: // field for serialization:
// //
// static |MojomType|DataView::Tag GetTag(const T& input); // static DataViewType::Tag GetTag(const T& input);
// //
// During serialization, only the field getter corresponding to this tag // During serialization, only the field getter corresponding to this tag
// will be called. // will be called.
// //
template <typename MojomType, typename T> template <typename DataViewType, typename T>
struct UnionTraits; struct UnionTraits;
} // namespace mojo } // namespace mojo

@ -84,10 +84,10 @@ class {{struct.name}}DataView {
} }
{%- else %} {%- else %}
{{kind|cpp_wrapper_type}} {{name}}() const { {{kind|cpp_field_type}} {{name}}() const {
{%- if pf.min_version != 0 %} {%- if pf.min_version != 0 %}
if (data_->header_.version < {{pf.min_version}}) if (data_->header_.version < {{pf.min_version}})
return {{kind|cpp_wrapper_type}}{}; return {{kind|cpp_field_type}}{};
{%- endif %} {%- endif %}
return data_->{{name}}; return data_->{{name}};
} }

@ -3,7 +3,7 @@
{%- set data_type = struct|get_qualified_name_for_kind(internal=True) %} {%- set data_type = struct|get_qualified_name_for_kind(internal=True) %}
template <> template <>
struct {{export_attribute}} StructTraits<{{mojom_type}}, {{mojom_type}}Ptr> { struct {{export_attribute}} StructTraits<{{mojom_type}}::DataView, {{mojom_type}}Ptr> {
static bool IsNull(const {{mojom_type}}Ptr& input) { return !input; } static bool IsNull(const {{mojom_type}}Ptr& input) { return !input; }
static void SetToNull({{mojom_type}}Ptr* output) { output->reset(); } static void SetToNull({{mojom_type}}Ptr* output) { output->reset(); }
@ -23,7 +23,7 @@ struct {{export_attribute}} StructTraits<{{mojom_type}}, {{mojom_type}}Ptr> {
{%- endif %} {%- endif %}
{%- endfor %} {%- endfor %}
static bool Read({{mojom_type}}DataView input, {{mojom_type}}Ptr* output); static bool Read({{mojom_type}}::DataView input, {{mojom_type}}Ptr* output);
}; };
namespace internal { namespace internal {
@ -31,7 +31,7 @@ namespace internal {
template <typename MaybeConstUserType> template <typename MaybeConstUserType>
struct Serializer<{{mojom_type}}Ptr, MaybeConstUserType> { struct Serializer<{{mojom_type}}Ptr, MaybeConstUserType> {
using UserType = typename std::remove_const<MaybeConstUserType>::type; using UserType = typename std::remove_const<MaybeConstUserType>::type;
using Traits = StructTraits<{{mojom_type}}, UserType>; using Traits = StructTraits<{{mojom_type}}::DataView, UserType>;
static size_t PrepareToSerialize(MaybeConstUserType& input, static size_t PrepareToSerialize(MaybeConstUserType& input,
SerializationContext* context) { SerializationContext* context) {
@ -73,7 +73,7 @@ struct Serializer<{{mojom_type}}Ptr, MaybeConstUserType> {
if (!input) if (!input)
return CallSetToNullIfExists<Traits>(output); return CallSetToNullIfExists<Traits>(output);
{{mojom_type}}DataView data_view(input, context); {{mojom_type}}::DataView data_view(input, context);
return Traits::Read(data_view, output); return Traits::Read(data_view, output);
} }
}; };

@ -2,8 +2,8 @@
{%- set mojom_type = struct|get_qualified_name_for_kind %} {%- set mojom_type = struct|get_qualified_name_for_kind %}
// static // static
bool StructTraits<{{mojom_type}}, {{mojom_type}}Ptr>::Read( bool StructTraits<{{mojom_type}}::DataView, {{mojom_type}}Ptr>::Read(
{{mojom_type}}DataView input, {{mojom_type}}::DataView input,
{{mojom_type}}Ptr* output) { {{mojom_type}}Ptr* output) {
bool success = true; bool success = true;
{{mojom_type}}Ptr result({{mojom_type}}::New()); {{mojom_type}}Ptr result({{mojom_type}}::New());

@ -2,7 +2,8 @@
{%- set data_type = union|get_qualified_name_for_kind(internal=True) %} {%- set data_type = union|get_qualified_name_for_kind(internal=True) %}
template <> template <>
struct {{export_attribute}} UnionTraits<{{mojom_type}}, {{mojom_type}}Ptr> { struct {{export_attribute}} UnionTraits<{{mojom_type}}::DataView,
{{mojom_type}}Ptr> {
static bool IsNull(const {{mojom_type}}Ptr& input) { return !input; } static bool IsNull(const {{mojom_type}}Ptr& input) { return !input; }
static void SetToNull({{mojom_type}}Ptr* output) { output->reset(); } static void SetToNull({{mojom_type}}Ptr* output) { output->reset(); }
@ -26,7 +27,7 @@ struct {{export_attribute}} UnionTraits<{{mojom_type}}, {{mojom_type}}Ptr> {
{%- endif %} {%- endif %}
{%- endfor %} {%- endfor %}
static bool Read({{mojom_type}}DataView input, {{mojom_type}}Ptr* output); static bool Read({{mojom_type}}::DataView input, {{mojom_type}}Ptr* output);
}; };
namespace internal { namespace internal {
@ -34,7 +35,7 @@ namespace internal {
template <typename MaybeConstUserType> template <typename MaybeConstUserType>
struct Serializer<{{mojom_type}}Ptr, MaybeConstUserType> { struct Serializer<{{mojom_type}}Ptr, MaybeConstUserType> {
using UserType = typename std::remove_const<MaybeConstUserType>::type; using UserType = typename std::remove_const<MaybeConstUserType>::type;
using Traits = UnionTraits<{{mojom_type}}, UserType>; using Traits = UnionTraits<{{mojom_type}}::DataView, UserType>;
static size_t PrepareToSerialize(MaybeConstUserType& input, static size_t PrepareToSerialize(MaybeConstUserType& input,
bool inlined, bool inlined,
@ -161,7 +162,7 @@ struct Serializer<{{mojom_type}}Ptr, MaybeConstUserType> {
if (!input || input->is_null()) if (!input || input->is_null())
return CallSetToNullIfExists<Traits>(output); return CallSetToNullIfExists<Traits>(output);
{{mojom_type}}DataView data_view(input, context); {{mojom_type}}::DataView data_view(input, context);
return Traits::Read(data_view, output); return Traits::Read(data_view, output);
} }
}; };

@ -1,8 +1,8 @@
{%- set mojom_type = union|get_qualified_name_for_kind %} {%- set mojom_type = union|get_qualified_name_for_kind %}
// static // static
bool UnionTraits<{{mojom_type}}, {{mojom_type}}Ptr>::Read( bool UnionTraits<{{mojom_type}}::DataView, {{mojom_type}}Ptr>::Read(
{{mojom_type}}DataView input, {{mojom_type}}::DataView input,
{{mojom_type}}Ptr* output) { {{mojom_type}}Ptr* output) {
*output = {{mojom_type}}::New(); *output = {{mojom_type}}::New();
{{mojom_type}}Ptr& result = *output; {{mojom_type}}Ptr& result = *output;

@ -11,7 +11,8 @@
namespace mojo { namespace mojo {
template <> template <>
struct StructTraits<shell::mojom::CapabilityRequest, shell::CapabilityRequest> { struct StructTraits<shell::mojom::CapabilityRequest::DataView,
shell::CapabilityRequest> {
static const shell::Classes& classes( static const shell::Classes& classes(
const shell::CapabilityRequest& request) { const shell::CapabilityRequest& request) {
return request.classes; return request.classes;
@ -44,7 +45,8 @@ struct StructTraits<shell::mojom::CapabilityRequest, shell::CapabilityRequest> {
}; };
template <> template <>
struct StructTraits<shell::mojom::CapabilitySpec, shell::CapabilitySpec> { struct StructTraits<shell::mojom::CapabilitySpec::DataView,
shell::CapabilitySpec> {
static const std::map<shell::Class, shell::Interfaces>& provided( static const std::map<shell::Class, shell::Interfaces>& provided(
const shell::CapabilitySpec& spec) { const shell::CapabilitySpec& spec) {
return spec.provided; return spec.provided;

@ -11,7 +11,7 @@
namespace mojo { namespace mojo {
template <> template <>
struct StructTraits<shell::mojom::Identity, shell::Identity> { struct StructTraits<shell::mojom::IdentityDataView, shell::Identity> {
static const std::string& name(const shell::Identity& identity) { static const std::string& name(const shell::Identity& identity) {
return identity.name(); return identity.name();
} }

@ -79,7 +79,7 @@ bool EnumTraits<display::mojom::TouchSupport, display::Display::TouchSupport>::
return display::Display::TOUCH_SUPPORT_UNKNOWN; return display::Display::TOUCH_SUPPORT_UNKNOWN;
} }
bool StructTraits<display::mojom::Display, display::Display>::Read( bool StructTraits<display::mojom::DisplayDataView, display::Display>::Read(
display::mojom::DisplayDataView data, display::mojom::DisplayDataView data,
display::Display* out) { display::Display* out) {
out->set_id(data.id()); out->set_id(data.id());

@ -27,7 +27,7 @@ struct EnumTraits<display::mojom::TouchSupport,
}; };
template <> template <>
struct StructTraits<display::mojom::Display, display::Display> { struct StructTraits<display::mojom::DisplayDataView, display::Display> {
static int64_t id(const display::Display& display) { return display.id(); } static int64_t id(const display::Display& display) { return display.id(); }
static const gfx::Rect& bounds(const display::Display& display) { static const gfx::Rect& bounds(const display::Display& display) {

@ -13,7 +13,7 @@
namespace mojo { namespace mojo {
template <> template <>
struct StructTraits<skia::mojom::BitmapArray, std::vector<SkBitmap>> { struct StructTraits<skia::mojom::BitmapArrayDataView, std::vector<SkBitmap>> {
static const std::vector<SkBitmap>& bitmaps( static const std::vector<SkBitmap>& bitmaps(
const std::vector<SkBitmap>& bitmaps) { const std::vector<SkBitmap>& bitmaps) {
return bitmaps; return bitmaps;
@ -27,4 +27,4 @@ struct StructTraits<skia::mojom::BitmapArray, std::vector<SkBitmap>> {
} // namespace mojo } // namespace mojo
#endif // SKIA_PUBLIC_INTERFACES_BITMAP_ARRAY_STRUCT_TRAITS_H_ #endif // SKIA_PUBLIC_INTERFACES_BITMAP_ARRAY_STRUCT_TRAITS_H_

@ -107,52 +107,56 @@ skia::mojom::ColorProfileType SkColorSpaceToMojo(SkColorSpace* cs) {
} // namespace } // namespace
// static // static
bool StructTraits<skia::mojom::Bitmap, SkBitmap>::IsNull(const SkBitmap& b) { bool StructTraits<skia::mojom::BitmapDataView, SkBitmap>::IsNull(
const SkBitmap& b) {
return b.isNull(); return b.isNull();
} }
// static // static
void StructTraits<skia::mojom::Bitmap, SkBitmap>::SetToNull(SkBitmap* b) { void StructTraits<skia::mojom::BitmapDataView, SkBitmap>::SetToNull(
SkBitmap* b) {
b->reset(); b->reset();
} }
// static // static
skia::mojom::ColorType StructTraits<skia::mojom::Bitmap, SkBitmap>::color_type( skia::mojom::ColorType StructTraits<skia::mojom::BitmapDataView,
const SkBitmap& b) { SkBitmap>::color_type(const SkBitmap& b) {
return SkColorTypeToMojo(b.colorType()); return SkColorTypeToMojo(b.colorType());
} }
// static // static
skia::mojom::AlphaType StructTraits<skia::mojom::Bitmap, SkBitmap>::alpha_type( skia::mojom::AlphaType StructTraits<skia::mojom::BitmapDataView,
const SkBitmap& b) { SkBitmap>::alpha_type(const SkBitmap& b) {
return SkAlphaTypeToMojo(b.alphaType()); return SkAlphaTypeToMojo(b.alphaType());
} }
// static // static
skia::mojom::ColorProfileType skia::mojom::ColorProfileType
StructTraits<skia::mojom::Bitmap, SkBitmap>::profile_type(const SkBitmap& b) { StructTraits<skia::mojom::BitmapDataView, SkBitmap>::profile_type(
const SkBitmap& b) {
return SkColorSpaceToMojo(b.colorSpace()); return SkColorSpaceToMojo(b.colorSpace());
} }
// static // static
uint32_t StructTraits<skia::mojom::Bitmap, SkBitmap>::width(const SkBitmap& b) { uint32_t StructTraits<skia::mojom::BitmapDataView, SkBitmap>::width(
const SkBitmap& b) {
return b.width() < 0 ? 0 : static_cast<uint32_t>(b.width()); return b.width() < 0 ? 0 : static_cast<uint32_t>(b.width());
} }
// static // static
uint32_t StructTraits<skia::mojom::Bitmap, SkBitmap>::height( uint32_t StructTraits<skia::mojom::BitmapDataView, SkBitmap>::height(
const SkBitmap& b) { const SkBitmap& b) {
return b.height() < 0 ? 0 : static_cast<uint32_t>(b.height()); return b.height() < 0 ? 0 : static_cast<uint32_t>(b.height());
} }
// static // static
BitmapBuffer StructTraits<skia::mojom::Bitmap, SkBitmap>::pixel_data( BitmapBuffer StructTraits<skia::mojom::BitmapDataView, SkBitmap>::pixel_data(
const SkBitmap& b) { const SkBitmap& b) {
return {b.getSize(), b.getSize(), static_cast<uint8_t*>(b.getPixels())}; return {b.getSize(), b.getSize(), static_cast<uint8_t*>(b.getPixels())};
} }
// static // static
bool StructTraits<skia::mojom::Bitmap, SkBitmap>::Read( bool StructTraits<skia::mojom::BitmapDataView, SkBitmap>::Read(
skia::mojom::BitmapDataView data, skia::mojom::BitmapDataView data,
SkBitmap* b) { SkBitmap* b) {
// TODO: Ensure width and height are reasonable, eg. <= kMaxBitmapSize? // TODO: Ensure width and height are reasonable, eg. <= kMaxBitmapSize?
@ -186,14 +190,14 @@ bool StructTraits<skia::mojom::Bitmap, SkBitmap>::Read(
} }
// static // static
void* StructTraits<skia::mojom::Bitmap, SkBitmap>::SetUpContext( void* StructTraits<skia::mojom::BitmapDataView, SkBitmap>::SetUpContext(
const SkBitmap& b) { const SkBitmap& b) {
b.lockPixels(); b.lockPixels();
return nullptr; return nullptr;
} }
// static // static
void StructTraits<skia::mojom::Bitmap, SkBitmap>::TearDownContext( void StructTraits<skia::mojom::BitmapDataView, SkBitmap>::TearDownContext(
const SkBitmap& b, const SkBitmap& b,
void* context) { void* context) {
b.unlockPixels(); b.unlockPixels();

@ -16,7 +16,7 @@ using BitmapBuffer = CArray<uint8_t>;
// Struct traits to use SkBitmap for skia::mojom::Bitmap in Chrome C++ code. // Struct traits to use SkBitmap for skia::mojom::Bitmap in Chrome C++ code.
template <> template <>
struct StructTraits<skia::mojom::Bitmap, SkBitmap> { struct StructTraits<skia::mojom::BitmapDataView, SkBitmap> {
static bool IsNull(const SkBitmap& b); static bool IsNull(const SkBitmap& b);
static void SetToNull(SkBitmap* b); static void SetToNull(SkBitmap* b);
static skia::mojom::ColorType color_type(const SkBitmap& b); static skia::mojom::ColorType color_type(const SkBitmap& b);

@ -31,7 +31,7 @@ struct ArrayTraits<ImageFilterBuffer> {
}; };
template <> template <>
struct StructTraits<skia::mojom::ImageFilter, sk_sp<SkImageFilter>> { struct StructTraits<skia::mojom::ImageFilterDataView, sk_sp<SkImageFilter>> {
static ImageFilterBuffer data(const sk_sp<SkImageFilter>& filter) { static ImageFilterBuffer data(const sk_sp<SkImageFilter>& filter) {
ImageFilterBuffer buffer; ImageFilterBuffer buffer;
buffer.data = sk_sp<SkData>(SkValidatingSerializeFlattenable(filter.get())); buffer.data = sk_sp<SkData>(SkValidatingSerializeFlattenable(filter.get()));

@ -13,7 +13,7 @@
namespace mojo { namespace mojo {
template <> template <>
struct StructTraits<url::mojom::blink::Url, ::blink::KURL> { struct StructTraits<url::mojom::blink::Url::DataView, ::blink::KURL> {
static WTF::String url(const ::blink::KURL& blinkUrl) static WTF::String url(const ::blink::KURL& blinkUrl)
{ {
if (!blinkUrl.isValid() || blinkUrl.getString().length() > url::kMaxURLChars) { if (!blinkUrl.isValid() || blinkUrl.getString().length() > url::kMaxURLChars) {
@ -22,7 +22,7 @@ struct StructTraits<url::mojom::blink::Url, ::blink::KURL> {
return blinkUrl.getString(); return blinkUrl.getString();
} }
static bool Read(url::mojom::blink::UrlDataView data, ::blink::KURL* out) static bool Read(url::mojom::blink::Url::DataView data, ::blink::KURL* out)
{ {
WTF::String urlString; WTF::String urlString;
if (!data.ReadUrl(&urlString)) if (!data.ReadUrl(&urlString))

@ -12,7 +12,7 @@
namespace mojo { namespace mojo {
template <> template <>
struct StructTraits<url::mojom::blink::Origin, RefPtr<::blink::SecurityOrigin>> { struct StructTraits<url::mojom::blink::Origin::DataView, RefPtr<::blink::SecurityOrigin>> {
static WTF::String scheme(const RefPtr<::blink::SecurityOrigin>& origin) static WTF::String scheme(const RefPtr<::blink::SecurityOrigin>& origin)
{ {
return origin->protocol(); return origin->protocol();
@ -29,7 +29,7 @@ struct StructTraits<url::mojom::blink::Origin, RefPtr<::blink::SecurityOrigin>>
{ {
return origin->isUnique(); return origin->isUnique();
} }
static bool Read(url::mojom::blink::OriginDataView data, RefPtr<::blink::SecurityOrigin>* out) static bool Read(url::mojom::blink::Origin::DataView data, RefPtr<::blink::SecurityOrigin>* out)
{ {
if (data.unique()) { if (data.unique()) {
*out = ::blink::SecurityOrigin::createUnique(); *out = ::blink::SecurityOrigin::createUnique();

@ -19,7 +19,7 @@ namespace display {
#if !defined(OS_IOS) #if !defined(OS_IOS)
namespace mojom { namespace mojom {
class Display; class DisplayDataView;
} }
#endif #endif
@ -186,7 +186,8 @@ class DISPLAY_EXPORT Display final {
int depth_per_component_; int depth_per_component_;
#if !defined(OS_IOS) #if !defined(OS_IOS)
friend struct mojo::StructTraits<display::mojom::Display, display::Display>; friend struct mojo::StructTraits<display::mojom::DisplayDataView,
display::Display>;
#endif #endif
}; };

@ -44,7 +44,7 @@ bool EnumTraits<ui::mojom::InputDeviceType, ui::InputDeviceType>::FromMojom(
return true; return true;
} }
bool StructTraits<ui::mojom::InputDevice, ui::InputDevice>::Read( bool StructTraits<ui::mojom::InputDeviceDataView, ui::InputDevice>::Read(
ui::mojom::InputDeviceDataView data, ui::mojom::InputDeviceDataView data,
ui::InputDevice* out) { ui::InputDevice* out) {
out->id = data.id(); out->id = data.id();
@ -96,9 +96,9 @@ bool EnumTraits<ui::mojom::StylusState, ui::StylusState>::FromMojom(
return true; return true;
} }
bool StructTraits<ui::mojom::TouchscreenDevice, ui::TouchscreenDevice>::Read( bool StructTraits<ui::mojom::TouchscreenDeviceDataView, ui::TouchscreenDevice>::
ui::mojom::TouchscreenDeviceDataView data, Read(ui::mojom::TouchscreenDeviceDataView data,
ui::TouchscreenDevice* out) { ui::TouchscreenDevice* out) {
if (!data.ReadInputDevice(static_cast<ui::InputDevice*>(out))) if (!data.ReadInputDevice(static_cast<ui::InputDevice*>(out)))
return false; return false;

@ -23,7 +23,7 @@ struct EnumTraits<ui::mojom::InputDeviceType, ui::InputDeviceType> {
}; };
template <> template <>
struct StructTraits<ui::mojom::InputDevice, ui::InputDevice> { struct StructTraits<ui::mojom::InputDeviceDataView, ui::InputDevice> {
static int32_t id(const ui::InputDevice& device) { return device.id; } static int32_t id(const ui::InputDevice& device) { return device.id; }
static ui::InputDeviceType type(const ui::InputDevice& device) { static ui::InputDeviceType type(const ui::InputDevice& device) {
@ -56,7 +56,8 @@ struct EnumTraits<ui::mojom::StylusState, ui::StylusState> {
}; };
template <> template <>
struct StructTraits<ui::mojom::TouchscreenDevice, ui::TouchscreenDevice> { struct StructTraits<ui::mojom::TouchscreenDeviceDataView,
ui::TouchscreenDevice> {
static const ui::InputDevice& input_device( static const ui::InputDevice& input_device(
const ui::TouchscreenDevice& device) { const ui::TouchscreenDevice& device) {
return static_cast<const ui::InputDevice&>(device); return static_cast<const ui::InputDevice&>(device);

@ -27,7 +27,7 @@ namespace ui {
#if !defined(OS_IOS) #if !defined(OS_IOS)
namespace mojom { namespace mojom {
class LatencyInfo; class LatencyInfoDataView;
} }
#endif #endif
@ -238,7 +238,8 @@ class EVENTS_BASE_EXPORT LatencyInfo {
#if !defined(OS_IOS) #if !defined(OS_IOS)
friend struct IPC::ParamTraits<ui::LatencyInfo>; friend struct IPC::ParamTraits<ui::LatencyInfo>;
friend struct mojo::StructTraits<ui::mojom::LatencyInfo, ui::LatencyInfo>; friend struct mojo::StructTraits<ui::mojom::LatencyInfoDataView,
ui::LatencyInfo>;
#endif #endif
}; };

@ -1,2 +1,5 @@
per-file *.mojom=set noparent per-file *.mojom=set noparent
per-file *.mojom=file://ipc/SECURITY_OWNERS per-file *.mojom=file://ipc/SECURITY_OWNERS
per-file *_struct_traits*.*=set noparent
per-file *_struct_traits*.*=file://ipc/SECURITY_OWNERS

@ -118,22 +118,24 @@ static_assert(ui::mojom::kEventFlagForwardMouseButton ==
static_cast<int32_t>(ui::EF_FORWARD_MOUSE_BUTTON), static_cast<int32_t>(ui::EF_FORWARD_MOUSE_BUTTON),
"EVENT_FLAGS must match"); "EVENT_FLAGS must match");
ui::mojom::EventType StructTraits<ui::mojom::Event, EventUniquePtr>::action( ui::mojom::EventType
StructTraits<ui::mojom::EventDataView, EventUniquePtr>::action(
const EventUniquePtr& event) { const EventUniquePtr& event) {
return UIEventTypeToMojo(event->type()); return UIEventTypeToMojo(event->type());
} }
int32_t StructTraits<ui::mojom::Event, EventUniquePtr>::flags( int32_t StructTraits<ui::mojom::EventDataView, EventUniquePtr>::flags(
const EventUniquePtr& event) { const EventUniquePtr& event) {
return event->flags(); return event->flags();
} }
int64_t StructTraits<ui::mojom::Event, EventUniquePtr>::time_stamp( int64_t StructTraits<ui::mojom::EventDataView, EventUniquePtr>::time_stamp(
const EventUniquePtr& event) { const EventUniquePtr& event) {
return event->time_stamp().ToInternalValue(); return event->time_stamp().ToInternalValue();
} }
ui::mojom::KeyDataPtr StructTraits<ui::mojom::Event, EventUniquePtr>::key_data( ui::mojom::KeyDataPtr
StructTraits<ui::mojom::EventDataView, EventUniquePtr>::key_data(
const EventUniquePtr& event) { const EventUniquePtr& event) {
if (!event->IsKeyEvent()) if (!event->IsKeyEvent())
return nullptr; return nullptr;
@ -154,7 +156,7 @@ ui::mojom::KeyDataPtr StructTraits<ui::mojom::Event, EventUniquePtr>::key_data(
} }
ui::mojom::PointerDataPtr ui::mojom::PointerDataPtr
StructTraits<ui::mojom::Event, EventUniquePtr>::pointer_data( StructTraits<ui::mojom::EventDataView, EventUniquePtr>::pointer_data(
const EventUniquePtr& event) { const EventUniquePtr& event) {
if (!event->IsPointerEvent() && !event->IsMouseWheelEvent()) if (!event->IsPointerEvent() && !event->IsMouseWheelEvent())
return nullptr; return nullptr;
@ -232,7 +234,7 @@ StructTraits<ui::mojom::Event, EventUniquePtr>::pointer_data(
return pointer_data; return pointer_data;
} }
bool StructTraits<ui::mojom::Event, EventUniquePtr>::Read( bool StructTraits<ui::mojom::EventDataView, EventUniquePtr>::Read(
ui::mojom::EventDataView event, ui::mojom::EventDataView event,
EventUniquePtr* out) { EventUniquePtr* out) {
switch (event.action()) { switch (event.action()) {

@ -16,7 +16,7 @@ namespace mojo {
using EventUniquePtr = std::unique_ptr<ui::Event>; using EventUniquePtr = std::unique_ptr<ui::Event>;
template <> template <>
struct StructTraits<ui::mojom::Event, EventUniquePtr> { struct StructTraits<ui::mojom::EventDataView, EventUniquePtr> {
static ui::mojom::EventType action(const EventUniquePtr& event); static ui::mojom::EventType action(const EventUniquePtr& event);
static int32_t flags(const EventUniquePtr& event); static int32_t flags(const EventUniquePtr& event);
static int64_t time_stamp(const EventUniquePtr& event); static int64_t time_stamp(const EventUniquePtr& event);

@ -179,28 +179,28 @@ ui::LatencyComponentType MojoLatencyComponentTypeToUI(
} // namespace } // namespace
// static // static
int64_t int64_t StructTraits<ui::mojom::LatencyComponentDataView,
StructTraits<ui::mojom::LatencyComponent, ui::LatencyInfo::LatencyComponent>:: ui::LatencyInfo::LatencyComponent>::
sequence_number(const ui::LatencyInfo::LatencyComponent& component) { sequence_number(const ui::LatencyInfo::LatencyComponent& component) {
return component.sequence_number; return component.sequence_number;
} }
// static // static
base::TimeTicks base::TimeTicks StructTraits<ui::mojom::LatencyComponentDataView,
StructTraits<ui::mojom::LatencyComponent, ui::LatencyInfo::LatencyComponent>:: ui::LatencyInfo::LatencyComponent>::
event_time(const ui::LatencyInfo::LatencyComponent& component) { event_time(const ui::LatencyInfo::LatencyComponent& component) {
return component.event_time; return component.event_time;
} }
// static // static
uint32_t uint32_t StructTraits<ui::mojom::LatencyComponentDataView,
StructTraits<ui::mojom::LatencyComponent, ui::LatencyInfo::LatencyComponent>:: ui::LatencyInfo::LatencyComponent>::
event_count(const ui::LatencyInfo::LatencyComponent& component) { event_count(const ui::LatencyInfo::LatencyComponent& component) {
return component.event_count; return component.event_count;
} }
// static // static
bool StructTraits<ui::mojom::LatencyComponent, bool StructTraits<ui::mojom::LatencyComponentDataView,
ui::LatencyInfo::LatencyComponent>:: ui::LatencyInfo::LatencyComponent>::
Read(ui::mojom::LatencyComponentDataView data, Read(ui::mojom::LatencyComponentDataView data,
ui::LatencyInfo::LatencyComponent* out) { ui::LatencyInfo::LatencyComponent* out) {
@ -213,21 +213,21 @@ bool StructTraits<ui::mojom::LatencyComponent,
// static // static
ui::mojom::LatencyComponentType ui::mojom::LatencyComponentType
StructTraits<ui::mojom::LatencyComponentId, StructTraits<ui::mojom::LatencyComponentIdDataView,
std::pair<ui::LatencyComponentType, int64_t>>:: std::pair<ui::LatencyComponentType, int64_t>>::
type(const std::pair<ui::LatencyComponentType, int64_t>& id) { type(const std::pair<ui::LatencyComponentType, int64_t>& id) {
return UILatencyComponentTypeToMojo(id.first); return UILatencyComponentTypeToMojo(id.first);
} }
// static // static
int64_t StructTraits<ui::mojom::LatencyComponentId, int64_t StructTraits<ui::mojom::LatencyComponentIdDataView,
std::pair<ui::LatencyComponentType, int64_t>>:: std::pair<ui::LatencyComponentType, int64_t>>::
id(const std::pair<ui::LatencyComponentType, int64_t>& id) { id(const std::pair<ui::LatencyComponentType, int64_t>& id) {
return id.second; return id.second;
} }
// static // static
bool StructTraits<ui::mojom::LatencyComponentId, bool StructTraits<ui::mojom::LatencyComponentIdDataView,
std::pair<ui::LatencyComponentType, int64_t>>:: std::pair<ui::LatencyComponentType, int64_t>>::
Read(ui::mojom::LatencyComponentIdDataView data, Read(ui::mojom::LatencyComponentIdDataView data,
std::pair<ui::LatencyComponentType, int64_t>* out) { std::pair<ui::LatencyComponentType, int64_t>* out) {
@ -238,39 +238,39 @@ bool StructTraits<ui::mojom::LatencyComponentId,
// static // static
const std::string& const std::string&
StructTraits<ui::mojom::LatencyInfo, ui::LatencyInfo>::trace_name( StructTraits<ui::mojom::LatencyInfoDataView, ui::LatencyInfo>::trace_name(
const ui::LatencyInfo& info) { const ui::LatencyInfo& info) {
return info.trace_name_; return info.trace_name_;
} }
const ui::LatencyInfo::LatencyMap& const ui::LatencyInfo::LatencyMap&
StructTraits<ui::mojom::LatencyInfo, ui::LatencyInfo>::latency_components( StructTraits<ui::mojom::LatencyInfoDataView,
const ui::LatencyInfo& info) { ui::LatencyInfo>::latency_components(const ui::LatencyInfo& info) {
return info.latency_components(); return info.latency_components();
} }
InputCoordinateArray InputCoordinateArray
StructTraits<ui::mojom::LatencyInfo, ui::LatencyInfo>::input_coordinates( StructTraits<ui::mojom::LatencyInfoDataView,
const ui::LatencyInfo& info) { ui::LatencyInfo>::input_coordinates(const ui::LatencyInfo& info) {
return {info.input_coordinates_size_, ui::LatencyInfo::kMaxInputCoordinates, return {info.input_coordinates_size_, ui::LatencyInfo::kMaxInputCoordinates,
const_cast<gfx::PointF*>(info.input_coordinates_)}; const_cast<gfx::PointF*>(info.input_coordinates_)};
} }
int64_t StructTraits<ui::mojom::LatencyInfo, ui::LatencyInfo>::trace_id( int64_t StructTraits<ui::mojom::LatencyInfoDataView, ui::LatencyInfo>::trace_id(
const ui::LatencyInfo& info) { const ui::LatencyInfo& info) {
return info.trace_id(); return info.trace_id();
} }
bool StructTraits<ui::mojom::LatencyInfo, ui::LatencyInfo>::coalesced( bool StructTraits<ui::mojom::LatencyInfoDataView, ui::LatencyInfo>::coalesced(
const ui::LatencyInfo& info) { const ui::LatencyInfo& info) {
return info.coalesced(); return info.coalesced();
} }
bool StructTraits<ui::mojom::LatencyInfo, ui::LatencyInfo>::terminated( bool StructTraits<ui::mojom::LatencyInfoDataView, ui::LatencyInfo>::terminated(
const ui::LatencyInfo& info) { const ui::LatencyInfo& info) {
return info.terminated(); return info.terminated();
} }
bool StructTraits<ui::mojom::LatencyInfo, ui::LatencyInfo>::Read( bool StructTraits<ui::mojom::LatencyInfoDataView, ui::LatencyInfo>::Read(
ui::mojom::LatencyInfoDataView data, ui::mojom::LatencyInfoDataView data,
ui::LatencyInfo* out) { ui::LatencyInfo* out) {
if (!data.ReadTraceName(&out->trace_name_)) if (!data.ReadTraceName(&out->trace_name_))

@ -38,7 +38,7 @@ struct ArrayTraits<ui::LatencyInfo::LatencyMap> {
}; };
template <> template <>
struct StructTraits<ui::mojom::LatencyComponent, struct StructTraits<ui::mojom::LatencyComponentDataView,
ui::LatencyInfo::LatencyComponent> { ui::LatencyInfo::LatencyComponent> {
static int64_t sequence_number( static int64_t sequence_number(
const ui::LatencyInfo::LatencyComponent& component); const ui::LatencyInfo::LatencyComponent& component);
@ -51,7 +51,7 @@ struct StructTraits<ui::mojom::LatencyComponent,
}; };
template <> template <>
struct StructTraits<ui::mojom::LatencyComponentPair, struct StructTraits<ui::mojom::LatencyComponentPairDataView,
ui::LatencyInfo::LatencyMap::value_type> { ui::LatencyInfo::LatencyMap::value_type> {
static const std::pair<ui::LatencyComponentType, int64_t>& key( static const std::pair<ui::LatencyComponentType, int64_t>& key(
const ui::LatencyInfo::LatencyMap::value_type& input) { const ui::LatencyInfo::LatencyMap::value_type& input) {
@ -67,7 +67,7 @@ struct StructTraits<ui::mojom::LatencyComponentPair,
}; };
template <> template <>
struct StructTraits<ui::mojom::LatencyComponentId, struct StructTraits<ui::mojom::LatencyComponentIdDataView,
std::pair<ui::LatencyComponentType, int64_t>> { std::pair<ui::LatencyComponentType, int64_t>> {
static ui::mojom::LatencyComponentType type( static ui::mojom::LatencyComponentType type(
const std::pair<ui::LatencyComponentType, int64_t>& id); const std::pair<ui::LatencyComponentType, int64_t>& id);
@ -77,7 +77,7 @@ struct StructTraits<ui::mojom::LatencyComponentId,
}; };
template <> template <>
struct StructTraits<ui::mojom::LatencyInfo, ui::LatencyInfo> { struct StructTraits<ui::mojom::LatencyInfoDataView, ui::LatencyInfo> {
static const std::string& trace_name(const ui::LatencyInfo& info); static const std::string& trace_name(const ui::LatencyInfo& info);
static const ui::LatencyInfo::LatencyMap& latency_components( static const ui::LatencyInfo::LatencyMap& latency_components(
const ui::LatencyInfo& info); const ui::LatencyInfo& info);

@ -20,7 +20,7 @@
namespace mojo { namespace mojo {
template <> template <>
struct StructTraits<gfx::mojom::Insets, gfx::Insets> { struct StructTraits<gfx::mojom::InsetsDataView, gfx::Insets> {
static int top(const gfx::Insets& p) { return p.top(); } static int top(const gfx::Insets& p) { return p.top(); }
static int left(const gfx::Insets& p) { return p.left(); } static int left(const gfx::Insets& p) { return p.left(); }
static int bottom(const gfx::Insets& p) { return p.bottom(); } static int bottom(const gfx::Insets& p) { return p.bottom(); }
@ -32,7 +32,7 @@ struct StructTraits<gfx::mojom::Insets, gfx::Insets> {
}; };
template <> template <>
struct StructTraits<gfx::mojom::InsetsF, gfx::InsetsF> { struct StructTraits<gfx::mojom::InsetsFDataView, gfx::InsetsF> {
static float top(const gfx::InsetsF& p) { return p.top(); } static float top(const gfx::InsetsF& p) { return p.top(); }
static float left(const gfx::InsetsF& p) { return p.left(); } static float left(const gfx::InsetsF& p) { return p.left(); }
static float bottom(const gfx::InsetsF& p) { return p.bottom(); } static float bottom(const gfx::InsetsF& p) { return p.bottom(); }
@ -44,7 +44,7 @@ struct StructTraits<gfx::mojom::InsetsF, gfx::InsetsF> {
}; };
template <> template <>
struct StructTraits<gfx::mojom::Point, gfx::Point> { struct StructTraits<gfx::mojom::PointDataView, gfx::Point> {
static int x(const gfx::Point& p) { return p.x(); } static int x(const gfx::Point& p) { return p.x(); }
static int y(const gfx::Point& p) { return p.y(); } static int y(const gfx::Point& p) { return p.y(); }
static bool Read(gfx::mojom::PointDataView data, gfx::Point* out) { static bool Read(gfx::mojom::PointDataView data, gfx::Point* out) {
@ -54,7 +54,7 @@ struct StructTraits<gfx::mojom::Point, gfx::Point> {
}; };
template <> template <>
struct StructTraits<gfx::mojom::PointF, gfx::PointF> { struct StructTraits<gfx::mojom::PointFDataView, gfx::PointF> {
static float x(const gfx::PointF& p) { return p.x(); } static float x(const gfx::PointF& p) { return p.x(); }
static float y(const gfx::PointF& p) { return p.y(); } static float y(const gfx::PointF& p) { return p.y(); }
static bool Read(gfx::mojom::PointFDataView data, gfx::PointF* out) { static bool Read(gfx::mojom::PointFDataView data, gfx::PointF* out) {
@ -64,7 +64,7 @@ struct StructTraits<gfx::mojom::PointF, gfx::PointF> {
}; };
template <> template <>
struct StructTraits<gfx::mojom::Rect, gfx::Rect> { struct StructTraits<gfx::mojom::RectDataView, gfx::Rect> {
static int x(const gfx::Rect& p) { return p.x(); } static int x(const gfx::Rect& p) { return p.x(); }
static int y(const gfx::Rect& p) { return p.y(); } static int y(const gfx::Rect& p) { return p.y(); }
static int width(const gfx::Rect& p) { return p.width(); } static int width(const gfx::Rect& p) { return p.width(); }
@ -79,7 +79,7 @@ struct StructTraits<gfx::mojom::Rect, gfx::Rect> {
}; };
template <> template <>
struct StructTraits<gfx::mojom::RectF, gfx::RectF> { struct StructTraits<gfx::mojom::RectFDataView, gfx::RectF> {
static float x(const gfx::RectF& p) { return p.x(); } static float x(const gfx::RectF& p) { return p.x(); }
static float y(const gfx::RectF& p) { return p.y(); } static float y(const gfx::RectF& p) { return p.y(); }
static float width(const gfx::RectF& p) { return p.width(); } static float width(const gfx::RectF& p) { return p.width(); }
@ -94,7 +94,7 @@ struct StructTraits<gfx::mojom::RectF, gfx::RectF> {
}; };
template <> template <>
struct StructTraits<gfx::mojom::Size, gfx::Size> { struct StructTraits<gfx::mojom::SizeDataView, gfx::Size> {
static int width(const gfx::Size& p) { return p.width(); } static int width(const gfx::Size& p) { return p.width(); }
static int height(const gfx::Size& p) { return p.height(); } static int height(const gfx::Size& p) { return p.height(); }
static bool Read(gfx::mojom::SizeDataView data, gfx::Size* out) { static bool Read(gfx::mojom::SizeDataView data, gfx::Size* out) {
@ -107,7 +107,7 @@ struct StructTraits<gfx::mojom::Size, gfx::Size> {
}; };
template <> template <>
struct StructTraits<gfx::mojom::SizeF, gfx::SizeF> { struct StructTraits<gfx::mojom::SizeFDataView, gfx::SizeF> {
static float width(const gfx::SizeF& p) { return p.width(); } static float width(const gfx::SizeF& p) { return p.width(); }
static float height(const gfx::SizeF& p) { return p.height(); } static float height(const gfx::SizeF& p) { return p.height(); }
static bool Read(gfx::mojom::SizeFDataView data, gfx::SizeF* out) { static bool Read(gfx::mojom::SizeFDataView data, gfx::SizeF* out) {
@ -120,7 +120,7 @@ struct StructTraits<gfx::mojom::SizeF, gfx::SizeF> {
}; };
template <> template <>
struct StructTraits<gfx::mojom::Vector2d, gfx::Vector2d> { struct StructTraits<gfx::mojom::Vector2dDataView, gfx::Vector2d> {
static int x(const gfx::Vector2d& v) { return v.x(); } static int x(const gfx::Vector2d& v) { return v.x(); }
static int y(const gfx::Vector2d& v) { return v.y(); } static int y(const gfx::Vector2d& v) { return v.y(); }
static bool Read(gfx::mojom::Vector2dDataView data, gfx::Vector2d* out) { static bool Read(gfx::mojom::Vector2dDataView data, gfx::Vector2d* out) {
@ -131,7 +131,7 @@ struct StructTraits<gfx::mojom::Vector2d, gfx::Vector2d> {
}; };
template <> template <>
struct StructTraits<gfx::mojom::Vector2dF, gfx::Vector2dF> { struct StructTraits<gfx::mojom::Vector2dFDataView, gfx::Vector2dF> {
static float x(const gfx::Vector2dF& v) { return v.x(); } static float x(const gfx::Vector2dF& v) { return v.x(); }
static float y(const gfx::Vector2dF& v) { return v.y(); } static float y(const gfx::Vector2dF& v) { return v.y(); }
static bool Read(gfx::mojom::Vector2dFDataView data, gfx::Vector2dF* out) { static bool Read(gfx::mojom::Vector2dFDataView data, gfx::Vector2dF* out) {

@ -11,7 +11,8 @@
namespace mojo { namespace mojo {
template <> template <>
struct StructTraits<gfx::mojom::AcceleratedWidget, gfx::AcceleratedWidget> { struct StructTraits<gfx::mojom::AcceleratedWidgetDataView,
gfx::AcceleratedWidget> {
static uint64_t widget(const gfx::AcceleratedWidget& widget) { static uint64_t widget(const gfx::AcceleratedWidget& widget) {
#if defined(OS_WIN) || defined(USE_OZONE) || defined(USE_X11) #if defined(OS_WIN) || defined(USE_OZONE) || defined(USE_X11)
#if defined(OS_WIN) #if defined(OS_WIN)

@ -47,7 +47,7 @@ gfx::SelectionBound::Type MojoSelectionBoundTypeToGfx(
} }
template <> template <>
struct StructTraits<gfx::mojom::SelectionBound, gfx::SelectionBound> { struct StructTraits<gfx::mojom::SelectionBoundDataView, gfx::SelectionBound> {
static gfx::mojom::SelectionBoundType type(const gfx::SelectionBound& input) { static gfx::mojom::SelectionBoundType type(const gfx::SelectionBound& input) {
return GfxSelectionBoundTypeToMojo(input.type()); return GfxSelectionBoundTypeToMojo(input.type());
} }

@ -26,7 +26,7 @@ struct ArrayTraits<SkMatrix44> {
}; };
template <> template <>
struct StructTraits<gfx::mojom::Transform, gfx::Transform> { struct StructTraits<gfx::mojom::TransformDataView, gfx::Transform> {
static const SkMatrix44& matrix(const gfx::Transform& transform) { static const SkMatrix44& matrix(const gfx::Transform& transform) {
return transform.matrix(); return transform.matrix();
} }

@ -12,7 +12,7 @@
namespace mojo { namespace mojo {
template <> template <>
struct StructTraits<url::mojom::Origin, url::Origin> { struct StructTraits<url::mojom::OriginDataView, url::Origin> {
static const std::string& scheme(const url::Origin& r) { return r.scheme(); } static const std::string& scheme(const url::Origin& r) { return r.scheme(); }
static const std::string& host(const url::Origin& r) { return r.host(); } static const std::string& host(const url::Origin& r) { return r.host(); }
static uint16_t port(const url::Origin& r) { static uint16_t port(const url::Origin& r) {

@ -13,7 +13,7 @@
namespace mojo { namespace mojo {
template <> template <>
struct StructTraits<url::mojom::Url, GURL> { struct StructTraits<url::mojom::UrlDataView, GURL> {
static base::StringPiece url(const GURL& r) { static base::StringPiece url(const GURL& r) {
if (r.possibly_invalid_spec().length() > url::kMaxURLChars || if (r.possibly_invalid_spec().length() > url::kMaxURLChars ||
!r.is_valid()) { !r.is_valid()) {