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