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_geometry.h"
12
13namespace IPC {
14
15template <>
16struct ParamTraits<webrtc::DesktopVector> {
17  typedef webrtc::DesktopVector param_type;
18  static void Write(Message* m, const param_type& p);
19  static bool Read(const Message* m, PickleIterator* iter, param_type* r);
20  static void Log(const param_type& p, std::string* l);
21};
22
23template <>
24struct ParamTraits<webrtc::DesktopSize> {
25  typedef webrtc::DesktopSize param_type;
26  static void Write(Message* m, const param_type& p);
27  static bool Read(const Message* m, PickleIterator* iter, param_type* r);
28  static void Log(const param_type& p, std::string* l);
29};
30
31template <>
32struct ParamTraits<webrtc::DesktopRect> {
33  typedef webrtc::DesktopRect param_type;
34  static void Write(Message* m, const param_type& p);
35  static bool Read(const Message* m, PickleIterator* iter, param_type* r);
36  static void Log(const param_type& p, std::string* l);
37};
38
39template <>
40struct ParamTraits<remoting::ScreenResolution> {
41  typedef remoting::ScreenResolution param_type;
42  static void Write(Message* m, const param_type& p);
43  static bool Read(const Message* m, PickleIterator* iter, param_type* r);
44  static void Log(const param_type& p, std::string* l);
45};
46
47}  // namespace IPC
48
49#endif  // REMOTING_HOST_CHROMOTING_PARAM_TRAITS_H_
50