1// Copyright 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef REMOTING_HOST_CHROMOTING_PARAM_TRAITS_H_
6#define REMOTING_HOST_CHROMOTING_PARAM_TRAITS_H_
7
8#include "ipc/ipc_message.h"
9#include "ipc/ipc_param_traits.h"
10#include "remoting/host/screen_resolution.h"
11#include "third_party/webrtc/modules/desktop_capture/desktop_frame.h"
12#include "third_party/webrtc/modules/desktop_capture/desktop_geometry.h"
13#include "third_party/webrtc/modules/desktop_capture/mouse_cursor.h"
14
15namespace IPC {
16
17template <>
18struct ParamTraits<webrtc::DesktopVector> {
19  typedef webrtc::DesktopVector param_type;
20  static void Write(Message* m, const param_type& p);
21  static bool Read(const Message* m, PickleIterator* iter, param_type* r);
22  static void Log(const param_type& p, std::string* l);
23};
24
25template <>
26struct ParamTraits<webrtc::DesktopSize> {
27  typedef webrtc::DesktopSize param_type;
28  static void Write(Message* m, const param_type& p);
29  static bool Read(const Message* m, PickleIterator* iter, param_type* r);
30  static void Log(const param_type& p, std::string* l);
31};
32
33template <>
34struct ParamTraits<webrtc::DesktopRect> {
35  typedef webrtc::DesktopRect param_type;
36  static void Write(Message* m, const param_type& p);
37  static bool Read(const Message* m, PickleIterator* iter, param_type* r);
38  static void Log(const param_type& p, std::string* l);
39};
40
41template <>
42struct ParamTraits<webrtc::MouseCursor> {
43  typedef webrtc::MouseCursor param_type;
44  static void Write(Message* m, const param_type& p);
45  static bool Read(const Message* m, PickleIterator* iter, param_type* r);
46  static void Log(const param_type& p, std::string* l);
47};
48
49template <>
50struct ParamTraits<remoting::ScreenResolution> {
51  typedef remoting::ScreenResolution param_type;
52  static void Write(Message* m, const param_type& p);
53  static bool Read(const Message* m, PickleIterator* iter, param_type* r);
54  static void Log(const param_type& p, std::string* l);
55};
56
57}  // namespace IPC
58
59#endif  // REMOTING_HOST_CHROMOTING_PARAM_TRAITS_H_
60