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