OLD | NEW |
---|---|
(Empty) | |
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 #include "remoting/host/chromoting_param_traits.h" | |
6 | |
7 #include "base/stringprintf.h" | |
8 | |
9 namespace IPC { | |
10 | |
11 // static | |
12 void ParamTraits<webrtc::DesktopVector>::Write(Message* m, | |
13 const webrtc::DesktopVector& p) { | |
14 m->WriteInt(p.x()); | |
15 m->WriteInt(p.y()); | |
16 } | |
17 | |
18 // static | |
19 bool ParamTraits<webrtc::DesktopVector>::Read(const Message* m, | |
20 PickleIterator* iter, | |
21 webrtc::DesktopVector* r) { | |
22 int x, y; | |
23 if (!m->ReadInt(iter, &x) || !m->ReadInt(iter, &y)) | |
24 return false; | |
25 *r = webrtc::DesktopVector(x, y); | |
26 return true; | |
27 } | |
28 | |
29 // static | |
30 void ParamTraits<webrtc::DesktopVector>::Log(const webrtc::DesktopVector& p, | |
31 std::string* l) { | |
32 l->append(base::StringPrintf("webrtc::DesktopVector(%d, %d)", | |
33 p.x(), p.y())); | |
34 } | |
35 | |
36 // static | |
37 void ParamTraits<webrtc::DesktopSize>::Write(Message* m, | |
38 const webrtc::DesktopSize& p) { | |
39 m->WriteInt(p.width()); | |
40 m->WriteInt(p.height()); | |
41 } | |
42 | |
43 // static | |
44 bool ParamTraits<webrtc::DesktopSize>::Read(const Message* m, | |
45 PickleIterator* iter, | |
46 webrtc::DesktopSize* r) { | |
47 int width, height; | |
48 if (!m->ReadInt(iter, &width) || !m->ReadInt(iter, &height)) | |
alexeypa (please no reviews)
2013/05/08 22:24:59
Should this allow negative sizes?
Sergey Ulanov
2013/05/09 18:49:02
webrtc::DesktopSize type doesn't prohibit negative
| |
49 return false; | |
50 *r = webrtc::DesktopSize(width, height); | |
51 return true; | |
52 } | |
53 | |
54 // static | |
55 void ParamTraits<webrtc::DesktopSize>::Log(const webrtc::DesktopSize& p, | |
56 std::string* l) { | |
57 l->append(base::StringPrintf("webrtc::DesktopSize(%d, %d)", | |
58 p.width(), p.height())); | |
59 } | |
60 | |
61 // static | |
62 void ParamTraits<webrtc::DesktopRect>::Write(Message* m, | |
63 const webrtc::DesktopRect& p) { | |
64 m->WriteInt(p.left()); | |
65 m->WriteInt(p.top()); | |
66 m->WriteInt(p.right()); | |
67 m->WriteInt(p.bottom()); | |
68 } | |
69 | |
70 // static | |
71 bool ParamTraits<webrtc::DesktopRect>::Read(const Message* m, | |
72 PickleIterator* iter, | |
73 webrtc::DesktopRect* r) { | |
74 int left, right, top, bottom; | |
75 if (!m->ReadInt(iter, &left) || !m->ReadInt(iter, &top) || | |
76 !m->ReadInt(iter, &right) || !m->ReadInt(iter, &bottom)) { | |
alexeypa (please no reviews)
2013/05/08 22:24:59
It is legal to have |right < left| or |bottom < to
Sergey Ulanov
2013/05/09 18:49:02
Same as with DesktopSize. For rects, left > right
| |
77 return false; | |
78 } | |
79 *r = webrtc::DesktopRect::MakeLTRB(left, top, right, bottom); | |
80 return true; | |
81 } | |
82 | |
83 // static | |
84 void ParamTraits<webrtc::DesktopRect>::Log(const webrtc::DesktopRect& p, | |
85 std::string* l) { | |
86 l->append(base::StringPrintf("webrtc::DesktopRect(%d, %d, %d, %d)", | |
87 p.left(), p.top(), p.right(), p.bottom())); | |
88 } | |
89 | |
90 // static | |
91 void ParamTraits<remoting::ScreenResolution>::Write( | |
92 Message* m, | |
93 const remoting::ScreenResolution& p) { | |
94 ParamTraits<webrtc::DesktopSize>::Write(m, p.dimensions()); | |
95 ParamTraits<webrtc::DesktopVector>::Write(m, p.dpi()); | |
96 } | |
97 | |
98 // static | |
99 bool ParamTraits<remoting::ScreenResolution>::Read( | |
100 const Message* m, | |
101 PickleIterator* iter, | |
102 remoting::ScreenResolution* r) { | |
103 webrtc::DesktopSize size; | |
104 webrtc::DesktopVector dpi; | |
105 if (!ParamTraits<webrtc::DesktopSize>::Read(m, iter, &size) || | |
106 !ParamTraits<webrtc::DesktopVector>::Read(m, iter, &dpi)) { | |
107 return false; | |
108 } | |
109 if (size.width() < 0 || size.height() < 0 || | |
110 dpi.x() < 0 || dpi.y() < 0) { | |
111 return false; | |
112 } | |
113 *r = remoting::ScreenResolution(size, dpi); | |
114 return true; | |
115 } | |
116 | |
117 // static | |
118 void ParamTraits<remoting::ScreenResolution>::Log( | |
119 const remoting::ScreenResolution& p, | |
120 std::string* l) { | |
121 l->append(base::StringPrintf("webrtc::ScreenResolution(%d, %d, %d, %d)", | |
122 p.dimensions().width(), p.dimensions().height(), | |
123 p.dpi().x(), p.dpi().y())); | |
124 } | |
125 | |
126 } // namespace IPC | |
127 | |
OLD | NEW |