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 15 namespace IPC { 16 17 template <> 18 struct 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 25 template <> 26 struct 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 33 template <> 34 struct 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 41 template <> 42 struct 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 49 template <> 50 struct 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