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