573f244234301a4011bad55acb48b226e74a81f4
[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 CertificateInfo;
35 class Color;
36 class Credential;
37 class Cursor;
38 class DatabaseDetails;
39 class FilterOperations;
40 class FloatPoint;
41 class FloatPoint3D;
42 class FloatRect;
43 class FloatSize;
44 class FixedPositionViewportConstraints;
45 class HTTPHeaderMap;
46 class IDBKeyPath;
47 class IntPoint;
48 class IntRect;
49 class IntSize;
50 class KeyframeValueList;
51 class URL;
52 class Notification;
53 class ProtectionSpace;
54 class ResourceError;
55 class ResourceRequest;
56 class ResourceResponse;
57 class StickyPositionViewportConstraints;
58 class TextCheckingRequestData;
59 class TransformationMatrix;
60 class UserStyleSheet;
61 class UserScript;
62 struct CompositionUnderline;
63 struct Cookie;
64 struct DictationAlternative;
65 struct DragSession;
66 struct FileChooserSettings;
67 struct IDBDatabaseMetadata;
68 struct IDBIndexMetadata;
69 struct IDBKeyData;
70 struct IDBObjectStoreMetadata;
71 struct Length;
72 struct GrammarDetail;
73 struct MimeClassInfo;
74 struct PasteboardImage;
75 struct PasteboardWebContent;
76 struct PluginInfo;
77 struct ScrollableAreaParameters;
78 struct TextCheckingResult;
79 struct ViewportAttributes;
80 struct WindowFeatures;
81 }
82
83 #if PLATFORM(MAC)
84 namespace WebCore {
85 struct KeypressCommand;
86 }
87 #endif
88
89 #if PLATFORM(IOS)
90 namespace WebCore {
91 class FloatQuad;
92 class SelectionRect;
93 struct PasteboardImage;
94 struct PasteboardWebContent;
95 struct ViewportArguments;
96 }
97 #endif
98
99 namespace IPC {
100
101 template<> struct ArgumentCoder<WebCore::AffineTransform> {
102     static void encode(ArgumentEncoder&, const WebCore::AffineTransform&);
103     static bool decode(ArgumentDecoder&, WebCore::AffineTransform&);
104 };
105
106 template<> struct ArgumentCoder<WebCore::TransformationMatrix> {
107     static void encode(ArgumentEncoder&, const WebCore::TransformationMatrix&);
108     static bool decode(ArgumentDecoder&, WebCore::TransformationMatrix&);
109 };
110
111 template<> struct ArgumentCoder<WebCore::CertificateInfo> {
112     static void encode(ArgumentEncoder&, const WebCore::CertificateInfo&);
113     static bool decode(ArgumentDecoder&, WebCore::CertificateInfo&);
114 };
115
116 template<> struct ArgumentCoder<WebCore::FloatPoint> {
117     static void encode(ArgumentEncoder&, const WebCore::FloatPoint&);
118     static bool decode(ArgumentDecoder&, WebCore::FloatPoint&);
119 };
120
121 template<> struct ArgumentCoder<WebCore::FloatPoint3D> {
122     static void encode(ArgumentEncoder&, const WebCore::FloatPoint3D&);
123     static bool decode(ArgumentDecoder&, WebCore::FloatPoint3D&);
124 };
125
126 template<> struct ArgumentCoder<WebCore::FloatRect> {
127     static void encode(ArgumentEncoder&, const WebCore::FloatRect&);
128     static bool decode(ArgumentDecoder&, WebCore::FloatRect&);
129 };
130
131 template<> struct ArgumentCoder<WebCore::FloatSize> {
132     static void encode(ArgumentEncoder&, const WebCore::FloatSize&);
133     static bool decode(ArgumentDecoder&, WebCore::FloatSize&);
134 };
135
136 #if PLATFORM(IOS)
137 template<> struct ArgumentCoder<WebCore::FloatQuad> {
138     static void encode(ArgumentEncoder&, const WebCore::FloatQuad&);
139     static bool decode(ArgumentDecoder&, WebCore::FloatQuad&);
140 };
141
142 template<> struct ArgumentCoder<WebCore::ViewportArguments> {
143     static void encode(ArgumentEncoder&, const WebCore::ViewportArguments&);
144     static bool decode(ArgumentDecoder&, WebCore::ViewportArguments&);
145 };
146 #endif // PLATFORM(IOS)
147
148 template<> struct ArgumentCoder<WebCore::IntPoint> {
149     static void encode(ArgumentEncoder&, const WebCore::IntPoint&);
150     static bool decode(ArgumentDecoder&, WebCore::IntPoint&);
151 };
152
153 template<> struct ArgumentCoder<WebCore::IntRect> {
154     static void encode(ArgumentEncoder&, const WebCore::IntRect&);
155     static bool decode(ArgumentDecoder&, WebCore::IntRect&);
156 };
157
158 template<> struct ArgumentCoder<WebCore::IntSize> {
159     static void encode(ArgumentEncoder&, const WebCore::IntSize&);
160     static bool decode(ArgumentDecoder&, WebCore::IntSize&);
161 };
162
163 template<> struct ArgumentCoder<WebCore::Length> {
164     static void encode(ArgumentEncoder&, const WebCore::Length&);
165     static bool decode(ArgumentDecoder&, WebCore::Length&);
166 };
167
168 template<> struct ArgumentCoder<WebCore::ViewportAttributes> {
169     static void encode(ArgumentEncoder&, const WebCore::ViewportAttributes&);
170     static bool decode(ArgumentDecoder&, WebCore::ViewportAttributes&);
171 };
172
173 template<> struct ArgumentCoder<WebCore::MimeClassInfo> {
174     static void encode(ArgumentEncoder&, const WebCore::MimeClassInfo&);
175     static bool decode(ArgumentDecoder&, WebCore::MimeClassInfo&);
176 };
177
178 template<> struct ArgumentCoder<WebCore::PluginInfo> {
179     static void encode(ArgumentEncoder&, const WebCore::PluginInfo&);
180     static bool decode(ArgumentDecoder&, WebCore::PluginInfo&);
181 };
182
183 template<> struct ArgumentCoder<WebCore::HTTPHeaderMap> {
184     static void encode(ArgumentEncoder&, const WebCore::HTTPHeaderMap&);
185     static bool decode(ArgumentDecoder&, WebCore::HTTPHeaderMap&);
186 };
187
188 template<> struct ArgumentCoder<WebCore::AuthenticationChallenge> {
189     static void encode(ArgumentEncoder&, const WebCore::AuthenticationChallenge&);
190     static bool decode(ArgumentDecoder&, WebCore::AuthenticationChallenge&);
191 };
192
193 template<> struct ArgumentCoder<WebCore::ProtectionSpace> {
194     static void encode(ArgumentEncoder&, const WebCore::ProtectionSpace&);
195     static bool decode(ArgumentDecoder&, WebCore::ProtectionSpace&);
196 };
197
198 template<> struct ArgumentCoder<WebCore::Credential> {
199     static void encode(ArgumentEncoder&, const WebCore::Credential&);
200     static bool decode(ArgumentDecoder&, WebCore::Credential&);
201 };
202
203 template<> struct ArgumentCoder<WebCore::Cursor> {
204     static void encode(ArgumentEncoder&, const WebCore::Cursor&);
205     static bool decode(ArgumentDecoder&, WebCore::Cursor&);
206 };
207
208 template<> struct ArgumentCoder<WebCore::ResourceRequest> {
209 #if PLATFORM(MAC)
210     static const bool kShouldSerializeWebCoreData = false;
211 #else
212     static const bool kShouldSerializeWebCoreData = true;
213 #endif
214
215     static void encode(ArgumentEncoder&, const WebCore::ResourceRequest&);
216     static bool decode(ArgumentDecoder&, WebCore::ResourceRequest&);
217     static void encodePlatformData(ArgumentEncoder&, const WebCore::ResourceRequest&);
218     static bool decodePlatformData(ArgumentDecoder&, WebCore::ResourceRequest&);
219 };
220
221 template<> struct ArgumentCoder<WebCore::ResourceResponse> {
222     static void encode(ArgumentEncoder&, const WebCore::ResourceResponse&);
223     static bool decode(ArgumentDecoder&, WebCore::ResourceResponse&);
224     static void encodePlatformData(ArgumentEncoder&, const WebCore::ResourceResponse&);
225     static bool decodePlatformData(ArgumentDecoder&, WebCore::ResourceResponse&);
226 };
227
228 template<> struct ArgumentCoder<WebCore::ResourceError> {
229 #if PLATFORM(MAC)
230     static const bool kShouldSerializeWebCoreData = false;
231 #else
232     static const bool kShouldSerializeWebCoreData = true;
233 #endif
234
235     static void encode(ArgumentEncoder&, const WebCore::ResourceError&);
236     static bool decode(ArgumentDecoder&, WebCore::ResourceError&);
237     static void encodePlatformData(ArgumentEncoder&, const WebCore::ResourceError&);
238     static bool decodePlatformData(ArgumentDecoder&, WebCore::ResourceError&);
239 };
240
241 template<> struct ArgumentCoder<WebCore::WindowFeatures> {
242     static void encode(ArgumentEncoder&, const WebCore::WindowFeatures&);
243     static bool decode(ArgumentDecoder&, WebCore::WindowFeatures&);
244 };
245
246 template<> struct ArgumentCoder<WebCore::Color> {
247     static void encode(ArgumentEncoder&, const WebCore::Color&);
248     static bool decode(ArgumentDecoder&, WebCore::Color&);
249 };
250
251 #if PLATFORM(MAC)
252 template<> struct ArgumentCoder<WebCore::KeypressCommand> {
253     static void encode(ArgumentEncoder&, const WebCore::KeypressCommand&);
254     static bool decode(ArgumentDecoder&, WebCore::KeypressCommand&);
255 };
256 #endif
257
258 #if PLATFORM(IOS)
259 template<> struct ArgumentCoder<WebCore::SelectionRect> {
260     static void encode(ArgumentEncoder&, const WebCore::SelectionRect&);
261     static bool decode(ArgumentDecoder&, WebCore::SelectionRect&);
262 };
263
264 template<> struct ArgumentCoder<WebCore::PasteboardWebContent> {
265     static void encode(ArgumentEncoder&, const WebCore::PasteboardWebContent&);
266     static bool decode(ArgumentDecoder&, WebCore::PasteboardWebContent&);
267 };
268
269 template<> struct ArgumentCoder<WebCore::PasteboardImage> {
270     static void encode(ArgumentEncoder&, const WebCore::PasteboardImage&);
271     static bool decode(ArgumentDecoder&, WebCore::PasteboardImage&);
272 };
273 #endif
274
275 template<> struct ArgumentCoder<WebCore::CompositionUnderline> {
276     static void encode(ArgumentEncoder&, const WebCore::CompositionUnderline&);
277     static bool decode(ArgumentDecoder&, WebCore::CompositionUnderline&);
278 };
279
280 template<> struct ArgumentCoder<WebCore::Cookie> {
281     static void encode(ArgumentEncoder&, const WebCore::Cookie&);
282     static bool decode(ArgumentDecoder&, WebCore::Cookie&);
283 };
284
285 template<> struct ArgumentCoder<WebCore::DatabaseDetails> {
286     static void encode(ArgumentEncoder&, const WebCore::DatabaseDetails&);
287     static bool decode(ArgumentDecoder&, WebCore::DatabaseDetails&);
288 };
289
290 template<> struct ArgumentCoder<WebCore::DictationAlternative> {
291     static void encode(ArgumentEncoder&, const WebCore::DictationAlternative&);
292     static bool decode(ArgumentDecoder&, WebCore::DictationAlternative&);
293 };
294
295 template<> struct ArgumentCoder<WebCore::FileChooserSettings> {
296     static void encode(ArgumentEncoder&, const WebCore::FileChooserSettings&);
297     static bool decode(ArgumentDecoder&, WebCore::FileChooserSettings&);
298 };
299
300 template<> struct ArgumentCoder<WebCore::GrammarDetail> {
301     static void encode(ArgumentEncoder&, const WebCore::GrammarDetail&);
302     static bool decode(ArgumentDecoder&, WebCore::GrammarDetail&);
303 };
304
305 template<> struct ArgumentCoder<WebCore::TextCheckingRequestData> {
306     static void encode(ArgumentEncoder&, const WebCore::TextCheckingRequestData&);
307     static bool decode(ArgumentDecoder&, WebCore::TextCheckingRequestData&);
308 };
309
310 template<> struct ArgumentCoder<WebCore::TextCheckingResult> {
311     static void encode(ArgumentEncoder&, const WebCore::TextCheckingResult&);
312     static bool decode(ArgumentDecoder&, WebCore::TextCheckingResult&);
313 };
314     
315 template<> struct ArgumentCoder<WebCore::DragSession> {
316     static void encode(ArgumentEncoder&, const WebCore::DragSession&);
317     static bool decode(ArgumentDecoder&, WebCore::DragSession&);
318 };
319
320 template<> struct ArgumentCoder<WebCore::URL> {
321     static void encode(ArgumentEncoder&, const WebCore::URL&);
322     static bool decode(ArgumentDecoder&, WebCore::URL&);
323 };
324
325 template<> struct ArgumentCoder<WebCore::UserStyleSheet> {
326     static void encode(ArgumentEncoder&, const WebCore::UserStyleSheet&);
327     static bool decode(ArgumentDecoder&, WebCore::UserStyleSheet&);
328 };
329
330 template<> struct ArgumentCoder<WebCore::UserScript> {
331     static void encode(ArgumentEncoder&, const WebCore::UserScript&);
332     static bool decode(ArgumentDecoder&, WebCore::UserScript&);
333 };
334
335 template<> struct ArgumentCoder<WebCore::ScrollableAreaParameters> {
336     static void encode(ArgumentEncoder&, const WebCore::ScrollableAreaParameters&);
337     static bool decode(ArgumentDecoder&, WebCore::ScrollableAreaParameters&);
338 };
339
340 template<> struct ArgumentCoder<WebCore::FixedPositionViewportConstraints> {
341     static void encode(ArgumentEncoder&, const WebCore::FixedPositionViewportConstraints&);
342     static bool decode(ArgumentDecoder&, WebCore::FixedPositionViewportConstraints&);
343 };
344
345 template<> struct ArgumentCoder<WebCore::StickyPositionViewportConstraints> {
346     static void encode(ArgumentEncoder&, const WebCore::StickyPositionViewportConstraints&);
347     static bool decode(ArgumentDecoder&, WebCore::StickyPositionViewportConstraints&);
348 };
349
350 #if ENABLE(CSS_FILTERS) && !USE(COORDINATED_GRAPHICS)
351 template<> struct ArgumentCoder<WebCore::FilterOperations> {
352     static void encode(ArgumentEncoder&, const WebCore::FilterOperations&);
353     static bool decode(ArgumentDecoder&, WebCore::FilterOperations&);
354 };
355 #endif
356
357 #if ENABLE(INDEXED_DATABASE)
358 template<> struct ArgumentCoder<WebCore::IDBDatabaseMetadata> {
359     static void encode(ArgumentEncoder&, const WebCore::IDBDatabaseMetadata&);
360     static bool decode(ArgumentDecoder&, WebCore::IDBDatabaseMetadata&);
361 };
362
363 template<> struct ArgumentCoder<WebCore::IDBIndexMetadata> {
364     static void encode(ArgumentEncoder&, const WebCore::IDBIndexMetadata&);
365     static bool decode(ArgumentDecoder&, WebCore::IDBIndexMetadata&);
366 };
367
368 template<> struct ArgumentCoder<WebCore::IDBKeyData> {
369     static void encode(ArgumentEncoder&, const WebCore::IDBKeyData&);
370     static bool decode(ArgumentDecoder&, WebCore::IDBKeyData&);
371 };
372
373 template<> struct ArgumentCoder<WebCore::IDBKeyPath> {
374     static void encode(ArgumentEncoder&, const WebCore::IDBKeyPath&);
375     static bool decode(ArgumentDecoder&, WebCore::IDBKeyPath&);
376 };
377
378 template<> struct ArgumentCoder<WebCore::IDBObjectStoreMetadata> {
379     static void encode(ArgumentEncoder&, const WebCore::IDBObjectStoreMetadata&);
380     static bool decode(ArgumentDecoder&, WebCore::IDBObjectStoreMetadata&);
381 };
382 #endif
383
384 } // namespace IPC
385
386 #endif // WebCoreArgumentCoders_h