|
Lines 32-37
Source/WebKit/Shared/cf/ArgumentCodersCF.cpp_sec1
|
| 32 |
#include "DataReference.h" |
32 |
#include "DataReference.h" |
| 33 |
#include "Decoder.h" |
33 |
#include "Decoder.h" |
| 34 |
#include "Encoder.h" |
34 |
#include "Encoder.h" |
|
|
35 |
#include "StreamConnectionEncoder.h" |
| 36 |
#include <CoreGraphics/CoreGraphics.h> |
| 35 |
#include <wtf/EnumTraits.h> |
37 |
#include <wtf/EnumTraits.h> |
| 36 |
#include <wtf/HashSet.h> |
38 |
#include <wtf/HashSet.h> |
| 37 |
#include <wtf/ProcessPrivilege.h> |
39 |
#include <wtf/ProcessPrivilege.h> |
|
Lines 72-77
enum class CFType : uint8_t {
Source/WebKit/Shared/cf/ArgumentCodersCF.cpp_sec2
|
| 72 |
#if HAVE(SEC_TRUST_SERIALIZATION) |
74 |
#if HAVE(SEC_TRUST_SERIALIZATION) |
| 73 |
SecTrust, |
75 |
SecTrust, |
| 74 |
#endif |
76 |
#endif |
|
|
77 |
CGColorSpace, |
| 75 |
Nullptr, |
78 |
Nullptr, |
| 76 |
Unknown, |
79 |
Unknown, |
| 77 |
}; |
80 |
}; |
|
Lines 102-107
static CFType typeFromCFTypeRef(CFTypeRe
Source/WebKit/Shared/cf/ArgumentCodersCF.cpp_sec3
|
| 102 |
return CFType::CFString; |
105 |
return CFType::CFString; |
| 103 |
if (typeID == CFURLGetTypeID()) |
106 |
if (typeID == CFURLGetTypeID()) |
| 104 |
return CFType::CFURL; |
107 |
return CFType::CFURL; |
|
|
108 |
if (typeID == CGColorSpaceGetTypeID()) |
| 109 |
return CFType::CGColorSpace; |
| 105 |
if (typeID == SecCertificateGetTypeID()) |
110 |
if (typeID == SecCertificateGetTypeID()) |
| 106 |
return CFType::SecCertificate; |
111 |
return CFType::SecCertificate; |
| 107 |
#if HAVE(SEC_KEYCHAIN) |
112 |
#if HAVE(SEC_KEYCHAIN) |
|
Lines 121-174
static CFType typeFromCFTypeRef(CFTypeRe
Source/WebKit/Shared/cf/ArgumentCodersCF.cpp_sec4
|
| 121 |
return CFType::Unknown; |
126 |
return CFType::Unknown; |
| 122 |
} |
127 |
} |
| 123 |
|
128 |
|
| 124 |
void encode(Encoder& encoder, CFTypeRef typeRef) |
129 |
|
|
|
130 |
template<typename Encoder> |
| 131 |
void ArgumentCoder<CFTypeRef>::encode(Encoder& encoder, CFTypeRef typeRef) |
| 125 |
{ |
132 |
{ |
| 126 |
CFType type = typeFromCFTypeRef(typeRef); |
133 |
auto type = typeFromCFTypeRef(typeRef); |
| 127 |
encoder << type; |
134 |
encoder << type; |
| 128 |
|
135 |
|
| 129 |
switch (type) { |
136 |
switch (type) { |
| 130 |
case CFType::CFArray: |
137 |
case CFType::CFArray: |
| 131 |
encode(encoder, static_cast<CFArrayRef>(typeRef)); |
138 |
encoder << static_cast<CFArrayRef>(typeRef); |
| 132 |
return; |
139 |
return; |
| 133 |
case CFType::CFBoolean: |
140 |
case CFType::CFBoolean: |
| 134 |
encode(encoder, static_cast<CFBooleanRef>(typeRef)); |
141 |
encoder << static_cast<CFBooleanRef>(typeRef); |
| 135 |
return; |
142 |
return; |
| 136 |
case CFType::CFData: |
143 |
case CFType::CFData: |
| 137 |
encode(encoder, static_cast<CFDataRef>(typeRef)); |
144 |
encoder << static_cast<CFDataRef>(typeRef); |
| 138 |
return; |
145 |
return; |
| 139 |
case CFType::CFDate: |
146 |
case CFType::CFDate: |
| 140 |
encode(encoder, static_cast<CFDateRef>(typeRef)); |
147 |
encoder << static_cast<CFDateRef>(typeRef); |
| 141 |
return; |
148 |
return; |
| 142 |
case CFType::CFDictionary: |
149 |
case CFType::CFDictionary: |
| 143 |
encode(encoder, static_cast<CFDictionaryRef>(typeRef)); |
150 |
encoder << static_cast<CFDictionaryRef>(typeRef); |
| 144 |
return; |
151 |
return; |
| 145 |
case CFType::CFNull: |
152 |
case CFType::CFNull: |
| 146 |
return; |
153 |
return; |
| 147 |
case CFType::CFNumber: |
154 |
case CFType::CFNumber: |
| 148 |
encode(encoder, static_cast<CFNumberRef>(typeRef)); |
155 |
encoder << static_cast<CFNumberRef>(typeRef); |
| 149 |
return; |
156 |
return; |
| 150 |
case CFType::CFString: |
157 |
case CFType::CFString: |
| 151 |
encode(encoder, static_cast<CFStringRef>(typeRef)); |
158 |
encoder << static_cast<CFStringRef>(typeRef); |
| 152 |
return; |
159 |
return; |
| 153 |
case CFType::CFURL: |
160 |
case CFType::CFURL: |
| 154 |
encode(encoder, static_cast<CFURLRef>(typeRef)); |
161 |
encoder << static_cast<CFURLRef>(typeRef); |
|
|
162 |
return; |
| 163 |
case CFType::CGColorSpace: |
| 164 |
encoder << static_cast<CGColorSpaceRef>(const_cast<void*>(typeRef)); |
| 155 |
return; |
165 |
return; |
| 156 |
case CFType::SecCertificate: |
166 |
case CFType::SecCertificate: |
| 157 |
encode(encoder, static_cast<SecCertificateRef>(const_cast<void*>(typeRef))); |
167 |
encoder << static_cast<SecCertificateRef>(const_cast<void*>(typeRef)); |
| 158 |
return; |
168 |
return; |
| 159 |
#if HAVE(SEC_KEYCHAIN) |
169 |
#if HAVE(SEC_KEYCHAIN) |
| 160 |
case CFType::SecKeychainItem: |
170 |
case CFType::SecKeychainItem: |
| 161 |
encode(encoder, static_cast<SecKeychainItemRef>(const_cast<void*>(typeRef))); |
171 |
encoder << static_cast<SecKeychainItemRef>(const_cast<void*>(typeRef)); |
| 162 |
return; |
172 |
return; |
| 163 |
#endif |
173 |
#endif |
| 164 |
#if HAVE(SEC_ACCESS_CONTROL) |
174 |
#if HAVE(SEC_ACCESS_CONTROL) |
| 165 |
case CFType::SecAccessControl: |
175 |
case CFType::SecAccessControl: |
| 166 |
encode(encoder, static_cast<SecAccessControlRef>(const_cast<void*>(typeRef))); |
176 |
encoder << static_cast<SecAccessControlRef>(const_cast<void*>(typeRef)); |
| 167 |
return; |
177 |
return; |
| 168 |
#endif |
178 |
#endif |
| 169 |
#if HAVE(SEC_TRUST_SERIALIZATION) |
179 |
#if HAVE(SEC_TRUST_SERIALIZATION) |
| 170 |
case CFType::SecTrust: |
180 |
case CFType::SecTrust: |
| 171 |
encode(encoder, static_cast<SecTrustRef>(const_cast<void*>(typeRef))); |
181 |
encoder << static_cast<SecTrustRef>(const_cast<void*>(typeRef)); |
| 172 |
return; |
182 |
return; |
| 173 |
#endif |
183 |
#endif |
| 174 |
case CFType::Nullptr: |
184 |
case CFType::Nullptr: |
|
Lines 180-225
void encode(Encoder& encoder, CFTypeRef
Source/WebKit/Shared/cf/ArgumentCodersCF.cpp_sec5
|
| 180 |
ASSERT_NOT_REACHED(); |
190 |
ASSERT_NOT_REACHED(); |
| 181 |
} |
191 |
} |
| 182 |
|
192 |
|
| 183 |
bool decode(Decoder& decoder, RetainPtr<CFTypeRef>& result) |
193 |
template void ArgumentCoder<CFTypeRef>::encode<Encoder>(Encoder&, CFTypeRef); |
|
|
194 |
template void ArgumentCoder<CFTypeRef>::encode<StreamConnectionEncoder>(StreamConnectionEncoder&, CFTypeRef); |
| 195 |
|
| 196 |
bool ArgumentCoder<RetainPtr<CFTypeRef>>::decode(Decoder& decoder, RetainPtr<CFTypeRef>& result) |
| 184 |
{ |
197 |
{ |
| 185 |
CFType type; |
198 |
Optional<CFType> type; |
| 186 |
if (!decoder.decode(type)) |
199 |
decoder >> type; |
|
|
200 |
if (!type) |
| 187 |
return false; |
201 |
return false; |
| 188 |
|
202 |
|
| 189 |
switch (type) { |
203 |
switch (*type) { |
| 190 |
case CFType::CFArray: { |
204 |
case CFType::CFArray: { |
| 191 |
RetainPtr<CFArrayRef> array; |
205 |
RetainPtr<CFArrayRef> array; |
| 192 |
if (!decode(decoder, array)) |
206 |
if (!decoder.decode(array)) |
| 193 |
return false; |
207 |
return false; |
| 194 |
result = adoptCF(array.leakRef()); |
208 |
result = WTFMove(array); |
| 195 |
return true; |
209 |
return true; |
| 196 |
} |
210 |
} |
| 197 |
case CFType::CFBoolean: { |
211 |
case CFType::CFBoolean: { |
| 198 |
RetainPtr<CFBooleanRef> boolean; |
212 |
RetainPtr<CFBooleanRef> boolean; |
| 199 |
if (!decode(decoder, boolean)) |
213 |
if (!decoder.decode(boolean)) |
| 200 |
return false; |
214 |
return false; |
| 201 |
result = adoptCF(boolean.leakRef()); |
215 |
result = WTFMove(boolean); |
| 202 |
return true; |
216 |
return true; |
| 203 |
} |
217 |
} |
| 204 |
case CFType::CFData: { |
218 |
case CFType::CFData: { |
| 205 |
RetainPtr<CFDataRef> data; |
219 |
RetainPtr<CFDataRef> data; |
| 206 |
if (!decode(decoder, data)) |
220 |
if (!decoder.decode(data)) |
| 207 |
return false; |
221 |
return false; |
| 208 |
result = adoptCF(data.leakRef()); |
222 |
result = WTFMove(data); |
| 209 |
return true; |
223 |
return true; |
| 210 |
} |
224 |
} |
| 211 |
case CFType::CFDate: { |
225 |
case CFType::CFDate: { |
| 212 |
RetainPtr<CFDateRef> date; |
226 |
RetainPtr<CFDateRef> date; |
| 213 |
if (!decode(decoder, date)) |
227 |
if (!decoder.decode(date)) |
| 214 |
return false; |
228 |
return false; |
| 215 |
result = adoptCF(date.leakRef()); |
229 |
result = WTFMove(date); |
| 216 |
return true; |
230 |
return true; |
| 217 |
} |
231 |
} |
| 218 |
case CFType::CFDictionary: { |
232 |
case CFType::CFDictionary: { |
| 219 |
RetainPtr<CFDictionaryRef> dictionary; |
233 |
RetainPtr<CFDictionaryRef> dictionary; |
| 220 |
if (!decode(decoder, dictionary)) |
234 |
if (!decoder.decode(dictionary)) |
| 221 |
return false; |
235 |
return false; |
| 222 |
result = adoptCF(dictionary.leakRef()); |
236 |
result = WTFMove(dictionary); |
| 223 |
return true; |
237 |
return true; |
| 224 |
} |
238 |
} |
| 225 |
case CFType::CFNull: |
239 |
case CFType::CFNull: |
|
Lines 227-282
bool decode(Decoder& decoder, RetainPtr<
Source/WebKit/Shared/cf/ArgumentCodersCF.cpp_sec6
|
| 227 |
return true; |
241 |
return true; |
| 228 |
case CFType::CFNumber: { |
242 |
case CFType::CFNumber: { |
| 229 |
RetainPtr<CFNumberRef> number; |
243 |
RetainPtr<CFNumberRef> number; |
| 230 |
if (!decode(decoder, number)) |
244 |
if (!decoder.decode(number)) |
| 231 |
return false; |
245 |
return false; |
| 232 |
result = adoptCF(number.leakRef()); |
246 |
result = WTFMove(number); |
| 233 |
return true; |
247 |
return true; |
| 234 |
} |
248 |
} |
| 235 |
case CFType::CFString: { |
249 |
case CFType::CFString: { |
| 236 |
RetainPtr<CFStringRef> string; |
250 |
RetainPtr<CFStringRef> string; |
| 237 |
if (!decode(decoder, string)) |
251 |
if (!decoder.decode(string)) |
| 238 |
return false; |
252 |
return false; |
| 239 |
result = adoptCF(string.leakRef()); |
253 |
result = WTFMove(string); |
| 240 |
return true; |
254 |
return true; |
| 241 |
} |
255 |
} |
| 242 |
case CFType::CFURL: { |
256 |
case CFType::CFURL: { |
| 243 |
RetainPtr<CFURLRef> url; |
257 |
RetainPtr<CFURLRef> url; |
| 244 |
if (!decode(decoder, url)) |
258 |
if (!decoder.decode(url)) |
|
|
259 |
return false; |
| 260 |
result = WTFMove(url); |
| 261 |
return true; |
| 262 |
} |
| 263 |
case CFType::CGColorSpace: { |
| 264 |
RetainPtr<CGColorSpaceRef> colorSpace; |
| 265 |
if (!decoder.decode(colorSpace)) |
| 245 |
return false; |
266 |
return false; |
| 246 |
result = adoptCF(url.leakRef()); |
267 |
result = WTFMove(colorSpace); |
| 247 |
return true; |
268 |
return true; |
| 248 |
} |
269 |
} |
| 249 |
case CFType::SecCertificate: { |
270 |
case CFType::SecCertificate: { |
| 250 |
RetainPtr<SecCertificateRef> certificate; |
271 |
RetainPtr<SecCertificateRef> certificate; |
| 251 |
if (!decode(decoder, certificate)) |
272 |
if (!decoder.decode(certificate)) |
| 252 |
return false; |
273 |
return false; |
| 253 |
result = adoptCF(certificate.leakRef()); |
274 |
result = WTFMove(certificate); |
| 254 |
return true; |
275 |
return true; |
| 255 |
} |
276 |
} |
| 256 |
#if HAVE(SEC_KEYCHAIN) |
277 |
#if HAVE(SEC_KEYCHAIN) |
| 257 |
case CFType::SecKeychainItem: { |
278 |
case CFType::SecKeychainItem: { |
| 258 |
RetainPtr<SecKeychainItemRef> keychainItem; |
279 |
RetainPtr<SecKeychainItemRef> keychainItem; |
| 259 |
if (!decode(decoder, keychainItem)) |
280 |
if (!decoder.decode(keychainItem)) |
| 260 |
return false; |
281 |
return false; |
| 261 |
result = adoptCF(keychainItem.leakRef()); |
282 |
result = WTFMove(keychainItem); |
| 262 |
return true; |
283 |
return true; |
| 263 |
} |
284 |
} |
| 264 |
#endif |
285 |
#endif |
| 265 |
#if HAVE(SEC_ACCESS_CONTROL) |
286 |
#if HAVE(SEC_ACCESS_CONTROL) |
| 266 |
case CFType::SecAccessControl: { |
287 |
case CFType::SecAccessControl: { |
| 267 |
RetainPtr<SecAccessControlRef> accessControl; |
288 |
RetainPtr<SecAccessControlRef> accessControl; |
| 268 |
if (!decode(decoder, accessControl)) |
289 |
if (!decoder.decode(accessControl)) |
| 269 |
return false; |
290 |
return false; |
| 270 |
result = adoptCF(accessControl.leakRef()); |
291 |
result = WTFMove(accessControl); |
| 271 |
return true; |
292 |
return true; |
| 272 |
} |
293 |
} |
| 273 |
#endif |
294 |
#endif |
| 274 |
#if HAVE(SEC_TRUST_SERIALIZATION) |
295 |
#if HAVE(SEC_TRUST_SERIALIZATION) |
| 275 |
case CFType::SecTrust: { |
296 |
case CFType::SecTrust: { |
| 276 |
RetainPtr<SecTrustRef> trust; |
297 |
RetainPtr<SecTrustRef> trust; |
| 277 |
if (!decode(decoder, trust)) |
298 |
if (!decoder.decode(trust)) |
| 278 |
return false; |
299 |
return false; |
| 279 |
result = adoptCF(trust.leakRef()); |
300 |
result = WTFMove(trust); |
| 280 |
return true; |
301 |
return true; |
| 281 |
} |
302 |
} |
| 282 |
#endif |
303 |
#endif |
|
Lines 291-297
bool decode(Decoder& decoder, RetainPtr<
Source/WebKit/Shared/cf/ArgumentCodersCF.cpp_sec7
|
| 291 |
return false; |
312 |
return false; |
| 292 |
} |
313 |
} |
| 293 |
|
314 |
|
| 294 |
void encode(Encoder& encoder, CFArrayRef array) |
315 |
template<typename Encoder> |
|
|
316 |
void ArgumentCoder<CFArrayRef>::encode(Encoder& encoder, CFArrayRef array) |
| 295 |
{ |
317 |
{ |
| 296 |
if (!array) { |
318 |
if (!array) { |
| 297 |
encoder << true; |
319 |
encoder << true; |
|
Lines 318-328
void encode(Encoder& encoder, CFArrayRef
Source/WebKit/Shared/cf/ArgumentCodersCF.cpp_sec8
|
| 318 |
for (CFIndex i = 0; i < size; ++i) { |
340 |
for (CFIndex i = 0; i < size; ++i) { |
| 319 |
if (invalidIndicies.contains(i)) |
341 |
if (invalidIndicies.contains(i)) |
| 320 |
continue; |
342 |
continue; |
| 321 |
encode(encoder, values[i]); |
343 |
encoder << values[i]; |
| 322 |
} |
344 |
} |
| 323 |
} |
345 |
} |
| 324 |
|
346 |
|
| 325 |
bool decode(Decoder& decoder, RetainPtr<CFArrayRef>& result) |
347 |
template void ArgumentCoder<CFArrayRef>::encode<Encoder>(Encoder&, CFArrayRef); |
|
|
348 |
template void ArgumentCoder<CFArrayRef>::encode<StreamConnectionEncoder>(StreamConnectionEncoder&, CFArrayRef); |
| 349 |
|
| 350 |
bool ArgumentCoder<RetainPtr<CFArrayRef>>::decode(Decoder& decoder, RetainPtr<CFArrayRef>& result) |
| 326 |
{ |
351 |
{ |
| 327 |
bool isNull = false; |
352 |
bool isNull = false; |
| 328 |
if (!decoder.decode(isNull)) |
353 |
if (!decoder.decode(isNull)) |
|
Lines 341-347
bool decode(Decoder& decoder, RetainPtr<
Source/WebKit/Shared/cf/ArgumentCodersCF.cpp_sec9
|
| 341 |
|
366 |
|
| 342 |
for (size_t i = 0; i < size; ++i) { |
367 |
for (size_t i = 0; i < size; ++i) { |
| 343 |
RetainPtr<CFTypeRef> element; |
368 |
RetainPtr<CFTypeRef> element; |
| 344 |
if (!decode(decoder, element)) |
369 |
if (!decoder.decode(element)) |
| 345 |
return false; |
370 |
return false; |
| 346 |
|
371 |
|
| 347 |
if (!element) |
372 |
if (!element) |
|
Lines 354-365
bool decode(Decoder& decoder, RetainPtr<
Source/WebKit/Shared/cf/ArgumentCodersCF.cpp_sec10
|
| 354 |
return true; |
379 |
return true; |
| 355 |
} |
380 |
} |
| 356 |
|
381 |
|
| 357 |
void encode(Encoder& encoder, CFBooleanRef boolean) |
382 |
template<typename Encoder> |
|
|
383 |
void ArgumentCoder<CFBooleanRef>::encode(Encoder& encoder, CFBooleanRef boolean) |
| 358 |
{ |
384 |
{ |
| 359 |
encoder << static_cast<bool>(CFBooleanGetValue(boolean)); |
385 |
encoder << static_cast<bool>(CFBooleanGetValue(boolean)); |
| 360 |
} |
386 |
} |
| 361 |
|
387 |
|
| 362 |
bool decode(Decoder& decoder, RetainPtr<CFBooleanRef>& result) |
388 |
template void ArgumentCoder<CFBooleanRef>::encode<Encoder>(Encoder&, CFBooleanRef); |
|
|
389 |
template void ArgumentCoder<CFBooleanRef>::encode<StreamConnectionEncoder>(StreamConnectionEncoder&, CFBooleanRef); |
| 390 |
|
| 391 |
bool ArgumentCoder<RetainPtr<CFBooleanRef>>::decode(Decoder& decoder, RetainPtr<CFBooleanRef>& result) |
| 363 |
{ |
392 |
{ |
| 364 |
bool boolean; |
393 |
bool boolean; |
| 365 |
if (!decoder.decode(boolean)) |
394 |
if (!decoder.decode(boolean)) |
|
Lines 369-383
bool decode(Decoder& decoder, RetainPtr<
Source/WebKit/Shared/cf/ArgumentCodersCF.cpp_sec11
|
| 369 |
return true; |
398 |
return true; |
| 370 |
} |
399 |
} |
| 371 |
|
400 |
|
| 372 |
void encode(Encoder& encoder, CFDataRef data) |
401 |
template<typename Encoder> |
|
|
402 |
void ArgumentCoder<CFDataRef>::encode(Encoder& encoder, CFDataRef data) |
| 373 |
{ |
403 |
{ |
| 374 |
CFIndex length = CFDataGetLength(data); |
404 |
encoder << IPC::DataReference(CFDataGetBytePtr(data), CFDataGetLength(data)); |
| 375 |
const UInt8* bytePtr = CFDataGetBytePtr(data); |
|
|
| 376 |
|
| 377 |
encoder << IPC::DataReference(bytePtr, length); |
| 378 |
} |
405 |
} |
| 379 |
|
406 |
|
| 380 |
bool decode(Decoder& decoder, RetainPtr<CFDataRef>& result) |
407 |
template void ArgumentCoder<CFDataRef>::encode<Encoder>(Encoder&, CFDataRef); |
|
|
408 |
template void ArgumentCoder<CFDataRef>::encode<StreamConnectionEncoder>(StreamConnectionEncoder&, CFDataRef); |
| 409 |
|
| 410 |
bool ArgumentCoder<RetainPtr<CFDataRef>>::decode(Decoder& decoder, RetainPtr<CFDataRef>& result) |
| 381 |
{ |
411 |
{ |
| 382 |
IPC::DataReference dataReference; |
412 |
IPC::DataReference dataReference; |
| 383 |
if (!decoder.decode(dataReference)) |
413 |
if (!decoder.decode(dataReference)) |
|
Lines 387-398
bool decode(Decoder& decoder, RetainPtr<
Source/WebKit/Shared/cf/ArgumentCodersCF.cpp_sec12
|
| 387 |
return true; |
417 |
return true; |
| 388 |
} |
418 |
} |
| 389 |
|
419 |
|
| 390 |
void encode(Encoder& encoder, CFDateRef date) |
420 |
template<typename Encoder> |
|
|
421 |
void ArgumentCoder<CFDateRef>::encode(Encoder& encoder, CFDateRef date) |
| 391 |
{ |
422 |
{ |
| 392 |
encoder << static_cast<double>(CFDateGetAbsoluteTime(date)); |
423 |
encoder << static_cast<double>(CFDateGetAbsoluteTime(date)); |
| 393 |
} |
424 |
} |
| 394 |
|
425 |
|
| 395 |
bool decode(Decoder& decoder, RetainPtr<CFDateRef>& result) |
426 |
template void ArgumentCoder<CFDateRef>::encode<Encoder>(Encoder&, CFDateRef); |
|
|
427 |
template void ArgumentCoder<CFDateRef>::encode<StreamConnectionEncoder>(StreamConnectionEncoder&, CFDateRef); |
| 428 |
|
| 429 |
bool ArgumentCoder<RetainPtr<CFDateRef>>::decode(Decoder& decoder, RetainPtr<CFDateRef>& result) |
| 396 |
{ |
430 |
{ |
| 397 |
double absoluteTime; |
431 |
double absoluteTime; |
| 398 |
if (!decoder.decode(absoluteTime)) |
432 |
if (!decoder.decode(absoluteTime)) |
|
Lines 402-408
bool decode(Decoder& decoder, RetainPtr<
Source/WebKit/Shared/cf/ArgumentCodersCF.cpp_sec13
|
| 402 |
return true; |
436 |
return true; |
| 403 |
} |
437 |
} |
| 404 |
|
438 |
|
| 405 |
void encode(Encoder& encoder, CFDictionaryRef dictionary) |
439 |
template<typename Encoder> |
|
|
440 |
void ArgumentCoder<CFDictionaryRef>::encode(Encoder& encoder, CFDictionaryRef dictionary) |
| 406 |
{ |
441 |
{ |
| 407 |
if (!dictionary) { |
442 |
if (!dictionary) { |
| 408 |
encoder << true; |
443 |
encoder << true; |
|
Lines 435-446
void encode(Encoder& encoder, CFDictiona
Source/WebKit/Shared/cf/ArgumentCodersCF.cpp_sec14
|
| 435 |
if (invalidKeys.contains(keys[i])) |
470 |
if (invalidKeys.contains(keys[i])) |
| 436 |
continue; |
471 |
continue; |
| 437 |
|
472 |
|
| 438 |
encode(encoder, keys[i]); |
473 |
encoder << keys[i] << values[i]; |
| 439 |
encode(encoder, values[i]); |
|
|
| 440 |
} |
474 |
} |
| 441 |
} |
475 |
} |
| 442 |
|
476 |
|
| 443 |
bool decode(Decoder& decoder, RetainPtr<CFDictionaryRef>& result) |
477 |
template void ArgumentCoder<CFDictionaryRef>::encode<Encoder>(Encoder&, CFDictionaryRef); |
|
|
478 |
template void ArgumentCoder<CFDictionaryRef>::encode<StreamConnectionEncoder>(StreamConnectionEncoder&, CFDictionaryRef); |
| 479 |
|
| 480 |
bool ArgumentCoder<RetainPtr<CFDictionaryRef>>::decode(Decoder& decoder, RetainPtr<CFDictionaryRef>& result) |
| 444 |
{ |
481 |
{ |
| 445 |
bool isNull = false; |
482 |
bool isNull = false; |
| 446 |
if (!decoder.decode(isNull)) |
483 |
if (!decoder.decode(isNull)) |
|
Lines 458-478
bool decode(Decoder& decoder, RetainPtr<
Source/WebKit/Shared/cf/ArgumentCodersCF.cpp_sec15
|
| 458 |
RetainPtr<CFMutableDictionaryRef> dictionary = adoptCF(CFDictionaryCreateMutable(0, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks)); |
495 |
RetainPtr<CFMutableDictionaryRef> dictionary = adoptCF(CFDictionaryCreateMutable(0, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks)); |
| 459 |
for (uint64_t i = 0; i < size; ++i) { |
496 |
for (uint64_t i = 0; i < size; ++i) { |
| 460 |
RetainPtr<CFTypeRef> key; |
497 |
RetainPtr<CFTypeRef> key; |
| 461 |
if (!decode(decoder, key) || !key) |
498 |
if (!decoder.decode(key) || !key) |
| 462 |
return false; |
499 |
return false; |
| 463 |
|
500 |
|
| 464 |
RetainPtr<CFTypeRef> value; |
501 |
RetainPtr<CFTypeRef> value; |
| 465 |
if (!decode(decoder, value) || !value) |
502 |
if (!decoder.decode(value) || !value) |
| 466 |
return false; |
503 |
return false; |
| 467 |
|
504 |
|
| 468 |
CFDictionarySetValue(dictionary.get(), key.get(), value.get()); |
505 |
CFDictionarySetValue(dictionary.get(), key.get(), value.get()); |
| 469 |
} |
506 |
} |
| 470 |
|
507 |
|
| 471 |
result = adoptCF(dictionary.leakRef()); |
508 |
result = WTFMove(dictionary); |
| 472 |
return true; |
509 |
return true; |
| 473 |
} |
510 |
} |
| 474 |
|
511 |
|
| 475 |
void encode(Encoder& encoder, CFNumberRef number) |
512 |
template<typename Encoder> |
|
|
513 |
void ArgumentCoder<CFNumberRef>::encode(Encoder& encoder, CFNumberRef number) |
| 476 |
{ |
514 |
{ |
| 477 |
CFNumberType numberType = CFNumberGetType(number); |
515 |
CFNumberType numberType = CFNumberGetType(number); |
| 478 |
|
516 |
|
|
Lines 480-489
void encode(Encoder& encoder, CFNumberRe
Source/WebKit/Shared/cf/ArgumentCodersCF.cpp_sec16
|
| 480 |
bool result = CFNumberGetValue(number, numberType, buffer.data()); |
518 |
bool result = CFNumberGetValue(number, numberType, buffer.data()); |
| 481 |
ASSERT_UNUSED(result, result); |
519 |
ASSERT_UNUSED(result, result); |
| 482 |
|
520 |
|
| 483 |
encoder << static_cast<uint8_t>(numberType); |
521 |
encoder << static_cast<uint8_t>(numberType) << IPC::DataReference(buffer); |
| 484 |
encoder << IPC::DataReference(buffer); |
|
|
| 485 |
} |
522 |
} |
| 486 |
|
523 |
|
|
|
524 |
template void ArgumentCoder<CFNumberRef>::encode<Encoder>(Encoder&, CFNumberRef); |
| 525 |
template void ArgumentCoder<CFNumberRef>::encode<StreamConnectionEncoder>(StreamConnectionEncoder&, CFNumberRef); |
| 526 |
|
| 487 |
static size_t sizeForNumberType(CFNumberType numberType) |
527 |
static size_t sizeForNumberType(CFNumberType numberType) |
| 488 |
{ |
528 |
{ |
| 489 |
switch (numberType) { |
529 |
switch (numberType) { |
|
Lines 524-530
static size_t sizeForNumberType(CFNumber
Source/WebKit/Shared/cf/ArgumentCodersCF.cpp_sec17
|
| 524 |
return 0; |
564 |
return 0; |
| 525 |
} |
565 |
} |
| 526 |
|
566 |
|
| 527 |
bool decode(Decoder& decoder, RetainPtr<CFNumberRef>& result) |
567 |
bool ArgumentCoder<RetainPtr<CFNumberRef>>::decode(Decoder& decoder, RetainPtr<CFNumberRef>& result) |
| 528 |
{ |
568 |
{ |
| 529 |
Optional<uint8_t> numberTypeFromIPC; |
569 |
Optional<uint8_t> numberTypeFromIPC; |
| 530 |
decoder >> numberTypeFromIPC; |
570 |
decoder >> numberTypeFromIPC; |
|
Lines 546-552
bool decode(Decoder& decoder, RetainPtr<
Source/WebKit/Shared/cf/ArgumentCodersCF.cpp_sec18
|
| 546 |
return true; |
586 |
return true; |
| 547 |
} |
587 |
} |
| 548 |
|
588 |
|
| 549 |
void encode(Encoder& encoder, CFStringRef string) |
589 |
template<typename Encoder> |
|
|
590 |
void ArgumentCoder<CFStringRef>::encode(Encoder& encoder, CFStringRef string) |
| 550 |
{ |
591 |
{ |
| 551 |
CFIndex length = CFStringGetLength(string); |
592 |
CFIndex length = CFStringGetLength(string); |
| 552 |
CFStringEncoding encoding = CFStringGetFastestEncoding(string); |
593 |
CFStringEncoding encoding = CFStringGetFastestEncoding(string); |
|
Lines 561-571
void encode(Encoder& encoder, CFStringRe
Source/WebKit/Shared/cf/ArgumentCodersCF.cpp_sec19
|
| 561 |
numConvertedBytes = CFStringGetBytes(string, range, encoding, 0, false, buffer.data(), buffer.size(), &bufferLength); |
602 |
numConvertedBytes = CFStringGetBytes(string, range, encoding, 0, false, buffer.data(), buffer.size(), &bufferLength); |
| 562 |
ASSERT(numConvertedBytes == length); |
603 |
ASSERT(numConvertedBytes == length); |
| 563 |
|
604 |
|
| 564 |
encoder << static_cast<uint32_t>(encoding); |
605 |
encoder << static_cast<uint32_t>(encoding) << IPC::DataReference(buffer); |
| 565 |
encoder << IPC::DataReference(buffer); |
|
|
| 566 |
} |
606 |
} |
| 567 |
|
607 |
|
| 568 |
bool decode(Decoder& decoder, RetainPtr<CFStringRef>& result) |
608 |
template void ArgumentCoder<CFStringRef>::encode<Encoder>(Encoder&, CFStringRef); |
|
|
609 |
template void ArgumentCoder<CFStringRef>::encode<StreamConnectionEncoder>(StreamConnectionEncoder&, CFStringRef); |
| 610 |
|
| 611 |
bool ArgumentCoder<RetainPtr<CFStringRef>>::decode(Decoder& decoder, RetainPtr<CFStringRef>& result) |
| 569 |
{ |
612 |
{ |
| 570 |
Optional<uint32_t> encodingFromIPC; |
613 |
Optional<uint32_t> encodingFromIPC; |
| 571 |
decoder >> encodingFromIPC; |
614 |
decoder >> encodingFromIPC; |
|
Lines 588-614
bool decode(Decoder& decoder, RetainPtr<
Source/WebKit/Shared/cf/ArgumentCodersCF.cpp_sec20
|
| 588 |
return true; |
631 |
return true; |
| 589 |
} |
632 |
} |
| 590 |
|
633 |
|
| 591 |
void encode(Encoder& encoder, CFURLRef url) |
634 |
template<typename Encoder> |
|
|
635 |
void ArgumentCoder<CFURLRef>::encode(Encoder& encoder, CFURLRef url) |
| 592 |
{ |
636 |
{ |
| 593 |
CFURLRef baseURL = CFURLGetBaseURL(url); |
637 |
CFURLRef baseURL = CFURLGetBaseURL(url); |
| 594 |
encoder << static_cast<bool>(baseURL); |
638 |
encoder << static_cast<bool>(baseURL); |
| 595 |
if (baseURL) |
639 |
if (baseURL) |
| 596 |
encode(encoder, baseURL); |
640 |
encoder << baseURL; |
| 597 |
|
641 |
|
| 598 |
WTF::URLCharBuffer urlBytes; |
642 |
WTF::URLCharBuffer urlBytes; |
| 599 |
WTF::getURLBytes(url, urlBytes); |
643 |
WTF::getURLBytes(url, urlBytes); |
| 600 |
IPC::DataReference dataReference(reinterpret_cast<const uint8_t*>(urlBytes.data()), urlBytes.size()); |
644 |
encoder << IPC::DataReference(reinterpret_cast<const uint8_t*>(urlBytes.data()), urlBytes.size()); |
| 601 |
encoder << dataReference; |
|
|
| 602 |
} |
645 |
} |
| 603 |
|
646 |
|
| 604 |
bool decode(Decoder& decoder, RetainPtr<CFURLRef>& result) |
647 |
template void ArgumentCoder<CFURLRef>::encode<Encoder>(Encoder&, CFURLRef); |
|
|
648 |
template void ArgumentCoder<CFURLRef>::encode<StreamConnectionEncoder>(StreamConnectionEncoder&, CFURLRef); |
| 649 |
|
| 650 |
bool ArgumentCoder<RetainPtr<CFURLRef>>::decode(Decoder& decoder, RetainPtr<CFURLRef>& result) |
| 605 |
{ |
651 |
{ |
| 606 |
RetainPtr<CFURLRef> baseURL; |
652 |
RetainPtr<CFURLRef> baseURL; |
| 607 |
bool hasBaseURL; |
653 |
bool hasBaseURL; |
| 608 |
if (!decoder.decode(hasBaseURL)) |
654 |
if (!decoder.decode(hasBaseURL)) |
| 609 |
return false; |
655 |
return false; |
| 610 |
if (hasBaseURL) { |
656 |
if (hasBaseURL) { |
| 611 |
if (!decode(decoder, baseURL)) |
657 |
if (!decoder.decode(baseURL)) |
| 612 |
return false; |
658 |
return false; |
| 613 |
} |
659 |
} |
| 614 |
|
660 |
|
|
Lines 631-646
bool decode(Decoder& decoder, RetainPtr<
Source/WebKit/Shared/cf/ArgumentCodersCF.cpp_sec21
|
| 631 |
return result; |
677 |
return result; |
| 632 |
} |
678 |
} |
| 633 |
|
679 |
|
| 634 |
void encode(Encoder& encoder, SecCertificateRef certificate) |
680 |
enum class CGColorSpaceEncodingScheme { Name, PropertyList }; |
|
|
681 |
|
| 682 |
template<typename Encoder> |
| 683 |
void ArgumentCoder<CGColorSpaceRef>::encode(Encoder& encoder, CGColorSpaceRef colorSpace) |
| 684 |
{ |
| 685 |
if (auto name = CGColorSpaceGetName(colorSpace)) { |
| 686 |
encoder << CGColorSpaceEncodingScheme::Name << name; |
| 687 |
return; |
| 688 |
} |
| 689 |
|
| 690 |
encoder << CGColorSpaceEncodingScheme::PropertyList << adoptCF(CGColorSpaceCopyPropertyList(colorSpace)) |
| 691 |
} |
| 692 |
|
| 693 |
template void ArgumentCoder<CGColorSpaceRef>::encode<Encoder>(Encoder&, CGColorSpaceRef); |
| 694 |
template void ArgumentCoder<CGColorSpaceRef>::encode<StreamConnectionEncoder>(StreamConnectionEncoder&, CGColorSpaceRef); |
| 695 |
|
| 696 |
bool ArgumentCoder<RetainPtr<CGColorSpaceRef>>::decode(Decoder& decoder, RetainPtr<CGColorSpaceRef>& result) |
| 697 |
{ |
| 698 |
CGColorSpaceEncodingScheme encodingScheme; |
| 699 |
if (!decoder.decode(encodingScheme)) |
| 700 |
return false; |
| 701 |
|
| 702 |
switch (encodingScheme) { |
| 703 |
case CGColorSpaceEncodingScheme::Name: { |
| 704 |
RetainPtr<CFStringRef> name; |
| 705 |
if (!decoder.decode(name)) |
| 706 |
return false; |
| 707 |
|
| 708 |
auto colorSpace = adoptCF(CGColorSpaceCreateWithName(name.get())); |
| 709 |
if (!colorSpace) |
| 710 |
return false; |
| 711 |
|
| 712 |
result = WTFMove(colorSpace); |
| 713 |
return true; |
| 714 |
} |
| 715 |
case CGColorSpaceEncodingScheme::PropertyList: { |
| 716 |
RetainPtr<CFTypeRef> propertyList; |
| 717 |
if (!decoder.decode(propertyList)) |
| 718 |
return false; |
| 719 |
|
| 720 |
auto colorSpace = adoptCF(CGColorSpaceCreateWithPropertyList(propertyList.get())); |
| 721 |
if (!colorSpace) |
| 722 |
return false; |
| 723 |
|
| 724 |
result = WTFMove(colorSpace); |
| 725 |
return true; |
| 726 |
} |
| 727 |
} |
| 728 |
|
| 729 |
ASSERT_NOT_REACHED(); |
| 730 |
return false; |
| 731 |
} |
| 732 |
|
| 733 |
|
| 734 |
template<typename Encoder> |
| 735 |
void ArgumentCoder<SecCertificateRef>::encode(Encoder& encoder, SecCertificateRef certificate) |
| 635 |
{ |
736 |
{ |
| 636 |
RetainPtr<CFDataRef> data = adoptCF(SecCertificateCopyData(certificate)); |
737 |
auto data = adoptCF(SecCertificateCopyData(certificate)); |
| 637 |
encode(encoder, data.get()); |
738 |
encoder << data; |
| 638 |
} |
739 |
} |
| 639 |
|
740 |
|
| 640 |
bool decode(Decoder& decoder, RetainPtr<SecCertificateRef>& result) |
741 |
template void ArgumentCoder<SecCertificateRef>::encode<Encoder>(Encoder&, SecCertificateRef); |
|
|
742 |
template void ArgumentCoder<SecCertificateRef>::encode<StreamConnectionEncoder>(StreamConnectionEncoder&, SecCertificateRef); |
| 743 |
|
| 744 |
bool ArgumentCoder<RetainPtr<SecCertificateRef>>::decode(Decoder& decoder, RetainPtr<SecCertificateRef>& result) |
| 641 |
{ |
745 |
{ |
| 642 |
RetainPtr<CFDataRef> data; |
746 |
RetainPtr<CFDataRef> data; |
| 643 |
if (!decode(decoder, data)) |
747 |
if (!decoder.decode(data)) |
| 644 |
return false; |
748 |
return false; |
| 645 |
|
749 |
|
| 646 |
result = adoptCF(SecCertificateCreateWithData(0, data.get())); |
750 |
result = adoptCF(SecCertificateCreateWithData(0, data.get())); |
|
Lines 648-670
bool decode(Decoder& decoder, RetainPtr<
Source/WebKit/Shared/cf/ArgumentCodersCF.cpp_sec22
|
| 648 |
} |
752 |
} |
| 649 |
|
753 |
|
| 650 |
#if HAVE(SEC_KEYCHAIN) |
754 |
#if HAVE(SEC_KEYCHAIN) |
| 651 |
void encode(Encoder& encoder, SecKeychainItemRef keychainItem) |
755 |
template<typename Encoder> |
|
|
756 |
void ArgumentCoder<SecKeychainItemRef>::encode(Encoder& encoder, SecKeychainItemRef keychainItem) |
| 652 |
{ |
757 |
{ |
| 653 |
RELEASE_ASSERT(hasProcessPrivilege(ProcessPrivilege::CanAccessCredentials)); |
758 |
RELEASE_ASSERT(hasProcessPrivilege(ProcessPrivilege::CanAccessCredentials)); |
| 654 |
|
759 |
|
| 655 |
CFDataRef data; |
760 |
CFDataRef data; |
| 656 |
if (SecKeychainItemCreatePersistentReference(keychainItem, &data) == errSecSuccess) { |
761 |
if (SecKeychainItemCreatePersistentReference(keychainItem, &data) == errSecSuccess) { |
| 657 |
encode(encoder, data); |
762 |
encoder << data; |
| 658 |
CFRelease(data); |
763 |
CFRelease(data); |
| 659 |
} |
764 |
} |
| 660 |
} |
765 |
} |
| 661 |
|
766 |
|
| 662 |
bool decode(Decoder& decoder, RetainPtr<SecKeychainItemRef>& result) |
767 |
template void ArgumentCoder<SecKeychainItemRef>::encode<Encoder>(Encoder&, SecKeychainItemRef); |
|
|
768 |
template void ArgumentCoder<SecKeychainItemRef>::encode<StreamConnectionEncoder>(StreamConnectionEncoder&, SecKeychainItemRef); |
| 769 |
|
| 770 |
bool ArgumentCoder<RetainPtr<SecKeychainItemRef>>::decode(Decoder& decoder, RetainPtr<SecKeychainItemRef>& result) |
| 663 |
{ |
771 |
{ |
| 664 |
RELEASE_ASSERT(hasProcessPrivilege(ProcessPrivilege::CanAccessCredentials)); |
772 |
RELEASE_ASSERT(hasProcessPrivilege(ProcessPrivilege::CanAccessCredentials)); |
| 665 |
|
773 |
|
| 666 |
RetainPtr<CFDataRef> data; |
774 |
RetainPtr<CFDataRef> data; |
| 667 |
if (!IPC::decode(decoder, data)) |
775 |
if (!decoder.decode(data)) |
| 668 |
return false; |
776 |
return false; |
| 669 |
|
777 |
|
| 670 |
CFDataRef dref = data.get(); |
778 |
CFDataRef dref = data.get(); |
|
Lines 682-698
bool decode(Decoder& decoder, RetainPtr<
Source/WebKit/Shared/cf/ArgumentCodersCF.cpp_sec23
|
| 682 |
#endif |
790 |
#endif |
| 683 |
|
791 |
|
| 684 |
#if HAVE(SEC_ACCESS_CONTROL) |
792 |
#if HAVE(SEC_ACCESS_CONTROL) |
| 685 |
void encode(Encoder& encoder, SecAccessControlRef accessControl) |
793 |
template<typename Encoder> |
|
|
794 |
void ArgumentCoder<SecAccessControlRef>::encode(Encoder& encoder, SecAccessControlRef accessControl) |
| 686 |
{ |
795 |
{ |
| 687 |
RetainPtr<CFDataRef> data = adoptCF(SecAccessControlCopyData(accessControl)); |
796 |
auto data = adoptCF(SecAccessControlCopyData(accessControl)); |
| 688 |
if (data) |
797 |
if (data) |
| 689 |
encode(encoder, data.get()); |
798 |
encoder << data; |
| 690 |
} |
799 |
} |
| 691 |
|
800 |
|
| 692 |
bool decode(Decoder& decoder, RetainPtr<SecAccessControlRef>& result) |
801 |
template void ArgumentCoder<SecAccessControlRef>::encode<Encoder>(Encoder&, SecAccessControlRef); |
|
|
802 |
template void ArgumentCoder<SecAccessControlRef>::encode<StreamConnectionEncoder>(StreamConnectionEncoder&, SecAccessControlRef); |
| 803 |
|
| 804 |
bool ArgumentCoder<RetainPtr<SecAccessControlRef>>::decode(Decoder& decoder, RetainPtr<SecAccessControlRef>& result) |
| 693 |
{ |
805 |
{ |
| 694 |
RetainPtr<CFDataRef> data; |
806 |
RetainPtr<CFDataRef> data; |
| 695 |
if (!decode(decoder, data)) |
807 |
if (!decoder.decode(data)) |
| 696 |
return false; |
808 |
return false; |
| 697 |
|
809 |
|
| 698 |
result = adoptCF(SecAccessControlCreateFromData(kCFAllocatorDefault, data.get(), nullptr)); |
810 |
result = adoptCF(SecAccessControlCreateFromData(kCFAllocatorDefault, data.get(), nullptr)); |
|
Lines 704-710
bool decode(Decoder& decoder, RetainPtr<
Source/WebKit/Shared/cf/ArgumentCodersCF.cpp_sec24
|
| 704 |
#endif |
816 |
#endif |
| 705 |
|
817 |
|
| 706 |
#if HAVE(SEC_TRUST_SERIALIZATION) |
818 |
#if HAVE(SEC_TRUST_SERIALIZATION) |
| 707 |
void encode(Encoder& encoder, SecTrustRef trust) |
819 |
template<typename Encoder> |
|
|
820 |
void ArgumentCoder<SecTrustRef>::encode(Encoder& encoder, SecTrustRef trust) |
| 708 |
{ |
821 |
{ |
| 709 |
auto data = adoptCF(SecTrustSerialize(trust, nullptr)); |
822 |
auto data = adoptCF(SecTrustSerialize(trust, nullptr)); |
| 710 |
if (!data) { |
823 |
if (!data) { |
|
Lines 712-722
void encode(Encoder& encoder, SecTrustRe
Source/WebKit/Shared/cf/ArgumentCodersCF.cpp_sec25
|
| 712 |
return; |
825 |
return; |
| 713 |
} |
826 |
} |
| 714 |
|
827 |
|
| 715 |
encoder << true; |
828 |
encoder << true << data; |
| 716 |
IPC::encode(encoder, data.get()); |
|
|
| 717 |
} |
829 |
} |
| 718 |
|
830 |
|
| 719 |
bool decode(Decoder& decoder, RetainPtr<SecTrustRef>& result) |
831 |
template void ArgumentCoder<SecTrustRef>::encode<Encoder>(Encoder&, SecTrustRef); |
|
|
832 |
template void ArgumentCoder<SecTrustRef>::encode<StreamConnectionEncoder>(StreamConnectionEncoder&, SecTrustRef); |
| 833 |
|
| 834 |
bool ArgumentCoder<RetainPtr<SecTrustRef>>::decode(Decoder& decoder, RetainPtr<SecTrustRef>& result) |
| 720 |
{ |
835 |
{ |
| 721 |
bool hasTrust; |
836 |
bool hasTrust; |
| 722 |
if (!decoder.decode(hasTrust)) |
837 |
if (!decoder.decode(hasTrust)) |
|
Lines 726-732
bool decode(Decoder& decoder, RetainPtr<
Source/WebKit/Shared/cf/ArgumentCodersCF.cpp_sec26
|
| 726 |
return true; |
841 |
return true; |
| 727 |
|
842 |
|
| 728 |
RetainPtr<CFDataRef> trustData; |
843 |
RetainPtr<CFDataRef> trustData; |
| 729 |
if (!IPC::decode(decoder, trustData)) |
844 |
if (!decoder.decode(trustData)) |
| 730 |
return false; |
845 |
return false; |
| 731 |
|
846 |
|
| 732 |
auto trust = adoptCF(SecTrustDeserialize(trustData.get(), nullptr)); |
847 |
auto trust = adoptCF(SecTrustDeserialize(trustData.get(), nullptr)); |
|
Lines 744-771
namespace WTF {
Source/WebKit/Shared/cf/ArgumentCodersCF.cpp_sec27
|
| 744 |
|
859 |
|
| 745 |
template<> struct EnumTraits<IPC::CFType> { |
860 |
template<> struct EnumTraits<IPC::CFType> { |
| 746 |
using values = EnumValues< |
861 |
using values = EnumValues< |
| 747 |
IPC::CFType, |
862 |
IPC::CFType, |
| 748 |
IPC::CFType::CFArray, |
863 |
IPC::CFType::CFArray, |
| 749 |
IPC::CFType::CFBoolean, |
864 |
IPC::CFType::CFBoolean, |
| 750 |
IPC::CFType::CFData, |
865 |
IPC::CFType::CFData, |
| 751 |
IPC::CFType::CFDate, |
866 |
IPC::CFType::CFDate, |
| 752 |
IPC::CFType::CFDictionary, |
867 |
IPC::CFType::CFDictionary, |
| 753 |
IPC::CFType::CFNull, |
868 |
IPC::CFType::CFNull, |
| 754 |
IPC::CFType::CFNumber, |
869 |
IPC::CFType::CFNumber, |
| 755 |
IPC::CFType::CFString, |
870 |
IPC::CFType::CFString, |
| 756 |
IPC::CFType::CFURL, |
871 |
IPC::CFType::CFURL, |
| 757 |
IPC::CFType::SecCertificate, |
872 |
IPC::CFType::SecCertificate, |
| 758 |
#if HAVE(SEC_KEYCHAIN) |
873 |
#if HAVE(SEC_KEYCHAIN) |
| 759 |
IPC::CFType::SecKeychainItem, |
874 |
IPC::CFType::SecKeychainItem, |
| 760 |
#endif |
875 |
#endif |
| 761 |
#if HAVE(SEC_ACCESS_CONTROL) |
876 |
#if HAVE(SEC_ACCESS_CONTROL) |
| 762 |
IPC::CFType::SecAccessControl, |
877 |
IPC::CFType::SecAccessControl, |
| 763 |
#endif |
878 |
#endif |
| 764 |
#if HAVE(SEC_TRUST_SERIALIZATION) |
879 |
#if HAVE(SEC_TRUST_SERIALIZATION) |
| 765 |
IPC::CFType::SecTrust, |
880 |
IPC::CFType::SecTrust, |
| 766 |
#endif |
881 |
#endif |
| 767 |
IPC::CFType::Nullptr, |
882 |
IPC::CFType::CGColorSpace, |
| 768 |
IPC::CFType::Unknown |
883 |
IPC::CFType::Nullptr, |
|
|
884 |
IPC::CFType::Unknown |
| 885 |
>; |
| 886 |
}; |
| 887 |
|
| 888 |
template<> struct EnumTraits<IPC::CGColorSpaceEncodingScheme> { |
| 889 |
using values = EnumValues< |
| 890 |
IPC::CGColorSpaceEncodingScheme, |
| 891 |
IPC::CGColorSpaceEncodingScheme::Name, |
| 892 |
IPC::CGColorSpaceEncodingScheme::PropertyList |
| 769 |
>; |
893 |
>; |
| 770 |
}; |
894 |
}; |
| 771 |
|
895 |
|