Changeset 159084 in webkit
- Timestamp:
- Nov 11, 2013 5:08:50 PM (10 years ago)
- Location:
- trunk/Source/WebKit2
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r159083 r159084 1 2013-11-11 Anders Carlsson <andersca@apple.com> 2 3 REGRESSION (r158927): curly-braces-escaping.html is broken on Mac WebKit2 4 https://bugs.webkit.org/show_bug.cgi?id=124164 5 6 Reviewed by Alexey Proskuryakov. 7 8 Back out the change to use NSSecureCoding for encoding/decoding NSURLRequest and 9 NSURLResponse objects; turns out the NSURL encoding/decoding doesn't preserve the raw URL bytes. 10 11 * Shared/mac/WebCoreArgumentCodersMac.mm: 12 (CoreIPC::encodePlatformData): 13 (CoreIPC::decodePlatformData): 14 1 15 2013-11-11 Ryuan Choi <ryuan.choi@samsung.com> 2 16 -
trunk/Source/WebKit2/Shared/mac/WebCoreArgumentCodersMac.mm
r158927 r159084 40 40 namespace CoreIPC { 41 41 42 #if __MAC_OS_X_VERSION_MIN_REQUIRED >= 109043 static void archiveAndEncodeObject(ArgumentEncoder& encoder, id object, NSString *key)44 {45 RetainPtr<NSMutableData> data = adoptNS([[NSMutableData alloc] init]);46 RetainPtr<NSKeyedArchiver> archiver = adoptNS([[NSKeyedArchiver alloc] initForWritingWithMutableData:data.get()]);47 48 [archiver setRequiresSecureCoding:YES];49 [archiver.get() encodeObject:object forKey:key];50 [archiver finishEncoding];51 encoder << CoreIPC::DataReference(static_cast<const uint8_t*>([data bytes]), [data length]);52 }53 54 template<typename T>55 static bool decodeAndUnarchiveObject(ArgumentDecoder& decoder, NSString *key, RetainPtr<T>& result)56 {57 CoreIPC::DataReference dataReference;58 if (!decoder.decode(dataReference))59 return false;60 61 RetainPtr<NSData> data = adoptNS([[NSData alloc] initWithBytesNoCopy:const_cast<uint8_t*>(dataReference.data()) length:dataReference.size() freeWhenDone:NO]);62 RetainPtr<NSKeyedUnarchiver> unarchiver = adoptNS([[NSKeyedUnarchiver alloc] initForReadingWithData:data.get()]);63 [unarchiver setRequiresSecureCoding:YES];64 result = [unarchiver decodeObjectOfClass:[T class] forKey:key];65 return true;66 }67 #endif68 69 42 void ArgumentCoder<ResourceRequest>::encodePlatformData(ArgumentEncoder& encoder, const ResourceRequest& resourceRequest) 70 43 { … … 85 58 } 86 59 87 #if __MAC_OS_X_VERSION_MIN_REQUIRED >= 109088 archiveAndEncodeObject(encoder, requestToSerialize.get(), @"request");89 #else90 60 RetainPtr<CFDictionaryRef> dictionary = adoptCF(WKNSURLRequestCreateSerializableRepresentation(requestToSerialize.get(), CoreIPC::tokenNullTypeRef())); 91 61 CoreIPC::encode(encoder, dictionary.get()); 92 #endif93 62 94 63 // The fallback array is part of NSURLRequest, but it is not encoded by WKNSURLRequestCreateSerializableRepresentation. … … 107 76 } 108 77 109 #if __MAC_OS_X_VERSION_MIN_REQUIRED >= 1090110 RetainPtr<NSURLRequest> nsURLRequest;111 if (!decodeAndUnarchiveObject(decoder, @"request", nsURLRequest))112 return false;113 #else114 78 RetainPtr<CFDictionaryRef> dictionary; 115 79 if (!CoreIPC::decode(decoder, dictionary)) … … 119 83 if (!nsURLRequest) 120 84 return false; 121 #endif122 85 123 86 resourceRequest = ResourceRequest(nsURLRequest.get()); … … 144 107 return; 145 108 146 #if __MAC_OS_X_VERSION_MIN_REQUIRED >= 1090147 archiveAndEncodeObject(encoder, resourceResponse.nsURLResponse(), @"response");148 #else149 109 RetainPtr<CFDictionaryRef> dictionary = adoptCF(WKNSURLResponseCreateSerializableRepresentation(resourceResponse.nsURLResponse(), CoreIPC::tokenNullTypeRef())); 150 110 CoreIPC::encode(encoder, dictionary.get()); 151 #endif152 111 } 153 112 … … 163 122 } 164 123 165 #if __MAC_OS_X_VERSION_MIN_REQUIRED >= 1090166 RetainPtr<NSURLResponse> nsURLResponse;167 if (!decodeAndUnarchiveObject(decoder, @"response", nsURLResponse))168 return false;169 #else170 124 RetainPtr<CFDictionaryRef> dictionary; 171 125 if (!CoreIPC::decode(decoder, dictionary)) … … 173 127 174 128 RetainPtr<NSURLResponse> nsURLResponse = WKNSURLResponseFromSerializableRepresentation(dictionary.get(), CoreIPC::tokenNullTypeRef()); 175 #endif176 129 177 130 if (!nsURLResponse)
Note: See TracChangeset
for help on using the changeset viewer.