Message decoding functions should take a MessageDecoder reference
[WebKit-https.git] / Source / WebKit2 / Shared / WebCoreArgumentCoders.h
1 /*
2  * Copyright (C) 2010, 2011 Apple Inc. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
14  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
15  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
17  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
19  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
21  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
23  * THE POSSIBILITY OF SUCH DAMAGE.
24  */
25
26 #ifndef WebCoreArgumentCoders_h
27 #define WebCoreArgumentCoders_h
28
29 #include "ArgumentCoders.h"
30
31 namespace WebCore {
32     class AffineTransform;
33     class AuthenticationChallenge;
34     class Color;
35     class Credential;
36     class Cursor;
37     class DatabaseDetails;
38     class FloatPoint;
39     class FloatRect;
40     class FloatSize;
41     class HTTPHeaderMap;
42     class IntPoint;
43     class IntRect;
44     class IntSize;
45     class KeyframeValueList;
46     class KURL;
47     class Notification;
48     class ProtectionSpace;
49     class ResourceError;
50     class ResourceRequest;
51     class ResourceResponse;
52     class UserStyleSheet;
53     class UserScript;
54     struct CompositionUnderline;
55     struct Cookie;
56     struct DictationAlternative;
57     struct DragSession;
58     struct FileChooserSettings;
59     struct GrammarDetail;
60     struct MimeClassInfo;
61     struct PluginInfo;
62     struct TextCheckingResult;
63     struct ViewportAttributes;
64     struct WindowFeatures;
65 }
66
67 #if PLATFORM(MAC)
68 namespace WebCore {
69     struct KeypressCommand;
70 }
71 #endif
72
73 namespace CoreIPC {
74
75 template<> struct ArgumentCoder<WebCore::AffineTransform> {
76     static void encode(ArgumentEncoder&, const WebCore::AffineTransform&);
77     static bool decode(ArgumentDecoder&, WebCore::AffineTransform&);
78 };
79
80 template<> struct ArgumentCoder<WebCore::FloatPoint> {
81     static void encode(ArgumentEncoder&, const WebCore::FloatPoint&);
82     static bool decode(ArgumentDecoder&, WebCore::FloatPoint&);
83 };
84
85 template<> struct ArgumentCoder<WebCore::FloatRect> {
86     static void encode(ArgumentEncoder&, const WebCore::FloatRect&);
87     static bool decode(ArgumentDecoder&, WebCore::FloatRect&);
88 };
89
90 template<> struct ArgumentCoder<WebCore::FloatSize> {
91     static void encode(ArgumentEncoder&, const WebCore::FloatSize&);
92     static bool decode(ArgumentDecoder&, WebCore::FloatSize&);
93 };
94
95 template<> struct ArgumentCoder<WebCore::IntPoint> {
96     static void encode(ArgumentEncoder&, const WebCore::IntPoint&);
97     static bool decode(ArgumentDecoder&, WebCore::IntPoint&);
98 };
99
100 template<> struct ArgumentCoder<WebCore::IntRect> {
101     static void encode(ArgumentEncoder&, const WebCore::IntRect&);
102     static bool decode(ArgumentDecoder&, WebCore::IntRect&);
103 };
104
105 template<> struct ArgumentCoder<WebCore::IntSize> {
106     static void encode(ArgumentEncoder&, const WebCore::IntSize&);
107     static bool decode(ArgumentDecoder&, WebCore::IntSize&);
108 };
109
110 template<> struct ArgumentCoder<WebCore::ViewportAttributes> {
111     static void encode(ArgumentEncoder&, const WebCore::ViewportAttributes&);
112     static bool decode(ArgumentDecoder&, WebCore::ViewportAttributes&);
113 };
114
115 template<> struct ArgumentCoder<WebCore::MimeClassInfo> {
116     static void encode(ArgumentEncoder&, const WebCore::MimeClassInfo&);
117     static bool decode(ArgumentDecoder&, WebCore::MimeClassInfo&);
118 };
119
120 template<> struct ArgumentCoder<WebCore::PluginInfo> {
121     static void encode(ArgumentEncoder&, const WebCore::PluginInfo&);
122     static bool decode(ArgumentDecoder&, WebCore::PluginInfo&);
123 };
124
125 template<> struct ArgumentCoder<WebCore::HTTPHeaderMap> {
126     static void encode(ArgumentEncoder&, const WebCore::HTTPHeaderMap&);
127     static bool decode(ArgumentDecoder&, WebCore::HTTPHeaderMap&);
128 };
129
130 template<> struct ArgumentCoder<WebCore::AuthenticationChallenge> {
131     static void encode(ArgumentEncoder&, const WebCore::AuthenticationChallenge&);
132     static bool decode(ArgumentDecoder&, WebCore::AuthenticationChallenge&);
133 };
134
135 template<> struct ArgumentCoder<WebCore::ProtectionSpace> {
136     static void encode(ArgumentEncoder&, const WebCore::ProtectionSpace&);
137     static bool decode(ArgumentDecoder&, WebCore::ProtectionSpace&);
138 };
139
140 template<> struct ArgumentCoder<WebCore::Credential> {
141     static void encode(ArgumentEncoder&, const WebCore::Credential&);
142     static bool decode(ArgumentDecoder&, WebCore::Credential&);
143 };
144
145 template<> struct ArgumentCoder<WebCore::Cursor> {
146     static void encode(ArgumentEncoder&, const WebCore::Cursor&);
147     static bool decode(ArgumentDecoder&, WebCore::Cursor&);
148 };
149
150 template<> struct ArgumentCoder<WebCore::ResourceRequest> {
151 #if PLATFORM(MAC)
152     static const bool kShouldSerializeWebCoreData = false;
153 #else
154     static const bool kShouldSerializeWebCoreData = true;
155 #endif
156
157     static void encode(ArgumentEncoder&, const WebCore::ResourceRequest&);
158     static bool decode(ArgumentDecoder&, WebCore::ResourceRequest&);
159     static void encodePlatformData(ArgumentEncoder&, const WebCore::ResourceRequest&);
160     static bool decodePlatformData(ArgumentDecoder&, WebCore::ResourceRequest&);
161 };
162
163 template<> struct ArgumentCoder<WebCore::ResourceResponse> {
164 #if PLATFORM(MAC)
165     static const bool kShouldSerializeWebCoreData = false;
166 #else
167     static const bool kShouldSerializeWebCoreData = true;
168 #endif
169
170     static void encode(ArgumentEncoder&, const WebCore::ResourceResponse&);
171     static bool decode(ArgumentDecoder&, WebCore::ResourceResponse&);
172     static void encodePlatformData(ArgumentEncoder&, const WebCore::ResourceResponse&);
173     static bool decodePlatformData(ArgumentDecoder&, WebCore::ResourceResponse&);
174 };
175
176 template<> struct ArgumentCoder<WebCore::ResourceError> {
177 #if PLATFORM(MAC)
178     static const bool kShouldSerializeWebCoreData = false;
179 #else
180     static const bool kShouldSerializeWebCoreData = true;
181 #endif
182
183     static void encode(ArgumentEncoder&, const WebCore::ResourceError&);
184     static bool decode(ArgumentDecoder&, WebCore::ResourceError&);
185     static void encodePlatformData(ArgumentEncoder&, const WebCore::ResourceError&);
186     static bool decodePlatformData(ArgumentDecoder&, WebCore::ResourceError&);
187 };
188
189 template<> struct ArgumentCoder<WebCore::WindowFeatures> {
190     static void encode(ArgumentEncoder&, const WebCore::WindowFeatures&);
191     static bool decode(ArgumentDecoder&, WebCore::WindowFeatures&);
192 };
193
194 template<> struct ArgumentCoder<WebCore::Color> {
195     static void encode(ArgumentEncoder&, const WebCore::Color&);
196     static bool decode(ArgumentDecoder&, WebCore::Color&);
197 };
198
199 #if PLATFORM(MAC)
200 template<> struct ArgumentCoder<WebCore::KeypressCommand> {
201     static void encode(ArgumentEncoder&, const WebCore::KeypressCommand&);
202     static bool decode(ArgumentDecoder&, WebCore::KeypressCommand&);
203 };
204 #endif
205
206 template<> struct ArgumentCoder<WebCore::CompositionUnderline> {
207     static void encode(ArgumentEncoder&, const WebCore::CompositionUnderline&);
208     static bool decode(ArgumentDecoder&, WebCore::CompositionUnderline&);
209 };
210
211 template<> struct ArgumentCoder<WebCore::Cookie> {
212     static void encode(ArgumentEncoder&, const WebCore::Cookie&);
213     static bool decode(ArgumentDecoder&, WebCore::Cookie&);
214 };
215
216 template<> struct ArgumentCoder<WebCore::DatabaseDetails> {
217     static void encode(ArgumentEncoder&, const WebCore::DatabaseDetails&);
218     static bool decode(ArgumentDecoder&, WebCore::DatabaseDetails&);
219 };
220
221 template<> struct ArgumentCoder<WebCore::DictationAlternative> {
222     static void encode(ArgumentEncoder&, const WebCore::DictationAlternative&);
223     static bool decode(ArgumentDecoder&, WebCore::DictationAlternative&);
224 };
225
226 template<> struct ArgumentCoder<WebCore::FileChooserSettings> {
227     static void encode(ArgumentEncoder&, const WebCore::FileChooserSettings&);
228     static bool decode(ArgumentDecoder&, WebCore::FileChooserSettings&);
229 };
230
231 template<> struct ArgumentCoder<WebCore::GrammarDetail> {
232     static void encode(ArgumentEncoder&, const WebCore::GrammarDetail&);
233     static bool decode(ArgumentDecoder&, WebCore::GrammarDetail&);
234 };
235
236 template<> struct ArgumentCoder<WebCore::TextCheckingResult> {
237     static void encode(ArgumentEncoder&, const WebCore::TextCheckingResult&);
238     static bool decode(ArgumentDecoder&, WebCore::TextCheckingResult&);
239 };
240     
241 template<> struct ArgumentCoder<WebCore::DragSession> {
242     static void encode(ArgumentEncoder&, const WebCore::DragSession&);
243     static bool decode(ArgumentDecoder&, WebCore::DragSession&);
244 };
245
246 template<> struct ArgumentCoder<WebCore::KURL> {
247     static void encode(ArgumentEncoder&, const WebCore::KURL&);
248     static bool decode(ArgumentDecoder&, WebCore::KURL&);
249 };
250
251 template<> struct ArgumentCoder<WebCore::UserStyleSheet> {
252     static void encode(ArgumentEncoder&, const WebCore::UserStyleSheet&);
253     static bool decode(ArgumentDecoder&, WebCore::UserStyleSheet&);
254 };
255
256 template<> struct ArgumentCoder<WebCore::UserScript> {
257     static void encode(ArgumentEncoder&, const WebCore::UserScript&);
258     static bool decode(ArgumentDecoder&, WebCore::UserScript&);
259 };
260
261 } // namespace CoreIPC
262
263 #endif // WebCoreArgumentCoders_h