// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Allows for sharing of IPC param structures between BrowserPlugin code and
// RenderFrame code. All these should be folded directly back into the IPCs in
// frame_messages.h once BrowserPlugin has been fully converted over to use
// the RenderFrame infrastructure.
//
// TODO(ajwong): Remove once BrowserPlugin has been converted to use
// RenderFrames. http://crbug.com/330264

#ifndef CONTENT_COMMON_FRAME_PARAM_MACROS_H_
#define CONTENT_COMMON_FRAME_PARAM_MACROS_H_

#include "cc/output/compositor_frame.h"
#include "cc/output/compositor_frame_ack.h"
#include "content/public/common/common_param_traits.h"
#include "ipc/ipc_message_macros.h"
#include "ui/gfx/ipc/gfx_param_traits.h"

#undef IPC_MESSAGE_EXPORT
#define IPC_MESSAGE_EXPORT CONTENT_EXPORT

IPC_STRUCT_BEGIN(FrameMsg_BuffersSwapped_Params)
  IPC_STRUCT_MEMBER(int, gpu_host_id)
  IPC_STRUCT_MEMBER(int, gpu_route_id)
  IPC_STRUCT_MEMBER(gpu::Mailbox, mailbox)
  IPC_STRUCT_MEMBER(gfx::Size, size)
IPC_STRUCT_END()

IPC_STRUCT_BEGIN(FrameMsg_CompositorFrameSwapped_Params)
  // Specifies which RenderWidget produced the CompositorFrame.
  IPC_STRUCT_MEMBER(int, producing_host_id)
  IPC_STRUCT_MEMBER(int, producing_route_id)

  IPC_STRUCT_MEMBER(cc::CompositorFrame, frame)
  IPC_STRUCT_MEMBER(uint32, output_surface_id)
  IPC_STRUCT_MEMBER(base::SharedMemoryHandle, shared_memory_handle)
IPC_STRUCT_END()

IPC_STRUCT_BEGIN(FrameHostMsg_BuffersSwappedACK_Params)
  IPC_STRUCT_MEMBER(int, gpu_host_id)
  IPC_STRUCT_MEMBER(int, gpu_route_id)
  IPC_STRUCT_MEMBER(gpu::Mailbox, mailbox)
  IPC_STRUCT_MEMBER(uint32, sync_point)
IPC_STRUCT_END()

IPC_STRUCT_BEGIN(FrameHostMsg_CompositorFrameSwappedACK_Params)
  // Specifies which RenderWidget produced the CompositorFrame.
  IPC_STRUCT_MEMBER(int, producing_host_id)
  IPC_STRUCT_MEMBER(int, producing_route_id)

  IPC_STRUCT_MEMBER(uint32, output_surface_id)
  IPC_STRUCT_MEMBER(cc::CompositorFrameAck, ack)
IPC_STRUCT_END()

IPC_STRUCT_BEGIN(FrameHostMsg_ReclaimCompositorResources_Params)
  IPC_STRUCT_MEMBER(int, route_id)
  IPC_STRUCT_MEMBER(uint32, output_surface_id)
  IPC_STRUCT_MEMBER(int, renderer_host_id)
  IPC_STRUCT_MEMBER(cc::CompositorFrameAck, ack)
IPC_STRUCT_END()

#endif  // CONTENT_COMMON_FRAME_PARAM_MACROS_H_
