Changeset 159084 in webkit


Ignore:
Timestamp:
Nov 11, 2013 5:08:50 PM (10 years ago)
Author:
andersca@apple.com
Message:

REGRESSION (r158927): curly-braces-escaping.html is broken on Mac WebKit2
https://bugs.webkit.org/show_bug.cgi?id=124164

Reviewed by Alexey Proskuryakov.

Back out the change to use NSSecureCoding for encoding/decoding NSURLRequest and
NSURLResponse objects; turns out the NSURL encoding/decoding doesn't preserve the raw URL bytes.

  • Shared/mac/WebCoreArgumentCodersMac.mm:

(CoreIPC::encodePlatformData):
(CoreIPC::decodePlatformData):

Location:
trunk/Source/WebKit2
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r159083 r159084  
     12013-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
    1152013-11-11  Ryuan Choi  <ryuan.choi@samsung.com>
    216
  • trunk/Source/WebKit2/Shared/mac/WebCoreArgumentCodersMac.mm

    r158927 r159084  
    4040namespace CoreIPC {
    4141
    42 #if __MAC_OS_X_VERSION_MIN_REQUIRED >= 1090
    43 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 #endif
    68 
    6942void ArgumentCoder<ResourceRequest>::encodePlatformData(ArgumentEncoder& encoder, const ResourceRequest& resourceRequest)
    7043{
     
    8558    }
    8659
    87 #if __MAC_OS_X_VERSION_MIN_REQUIRED >= 1090
    88     archiveAndEncodeObject(encoder, requestToSerialize.get(), @"request");
    89 #else
    9060    RetainPtr<CFDictionaryRef> dictionary = adoptCF(WKNSURLRequestCreateSerializableRepresentation(requestToSerialize.get(), CoreIPC::tokenNullTypeRef()));
    9161    CoreIPC::encode(encoder, dictionary.get());
    92 #endif
    9362
    9463    // The fallback array is part of NSURLRequest, but it is not encoded by WKNSURLRequestCreateSerializableRepresentation.
     
    10776    }
    10877
    109 #if __MAC_OS_X_VERSION_MIN_REQUIRED >= 1090
    110     RetainPtr<NSURLRequest> nsURLRequest;
    111     if (!decodeAndUnarchiveObject(decoder, @"request", nsURLRequest))
    112         return false;
    113 #else
    11478    RetainPtr<CFDictionaryRef> dictionary;
    11579    if (!CoreIPC::decode(decoder, dictionary))
     
    11983    if (!nsURLRequest)
    12084        return false;
    121 #endif
    12285
    12386    resourceRequest = ResourceRequest(nsURLRequest.get());
     
    144107        return;
    145108
    146 #if __MAC_OS_X_VERSION_MIN_REQUIRED >= 1090
    147     archiveAndEncodeObject(encoder, resourceResponse.nsURLResponse(), @"response");
    148 #else
    149109    RetainPtr<CFDictionaryRef> dictionary = adoptCF(WKNSURLResponseCreateSerializableRepresentation(resourceResponse.nsURLResponse(), CoreIPC::tokenNullTypeRef()));
    150110    CoreIPC::encode(encoder, dictionary.get());
    151 #endif
    152111}
    153112
     
    163122    }
    164123
    165 #if __MAC_OS_X_VERSION_MIN_REQUIRED >= 1090
    166     RetainPtr<NSURLResponse> nsURLResponse;
    167     if (!decodeAndUnarchiveObject(decoder, @"response", nsURLResponse))
    168         return false;
    169 #else
    170124    RetainPtr<CFDictionaryRef> dictionary;
    171125    if (!CoreIPC::decode(decoder, dictionary))
     
    173127
    174128    RetainPtr<NSURLResponse> nsURLResponse = WKNSURLResponseFromSerializableRepresentation(dictionary.get(), CoreIPC::tokenNullTypeRef());
    175 #endif
    176129
    177130    if (!nsURLResponse)
Note: See TracChangeset for help on using the changeset viewer.