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