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