Title: [170685] trunk
- Revision
- 170685
- Author
- psola...@apple.com
- Date
- 2014-07-01 17:57:52 -0700 (Tue, 01 Jul 2014)
Log Message
Encode/decode CFURLRequestRefs when USE(CFNETWORK) is enabled
https://bugs.webkit.org/show_bug.cgi?id=134454
<rdar://problem/17510980>
Reviewed by Andreas Kling.
Source/WebKit2:
Use new helper methods to serialize/deserialize CFURLRequestRef directly so we can avoid
creating NSURLRequest.
* Shared/mac/WebCoreArgumentCodersMac.mm:
(IPC::ArgumentCoder<ResourceRequest>::encodePlatformData):
(IPC::ArgumentCoder<ResourceRequest>::decodePlatformData):
WebKitLibraries:
* WebKitSystemInterface.h:
* libWebKitSystemInterfaceMavericks.a:
* libWebKitSystemInterfaceMountainLion.a:
Modified Paths
Diff
Modified: trunk/Source/WebKit2/ChangeLog (170684 => 170685)
--- trunk/Source/WebKit2/ChangeLog 2014-07-02 00:49:13 UTC (rev 170684)
+++ trunk/Source/WebKit2/ChangeLog 2014-07-02 00:57:52 UTC (rev 170685)
@@ -1,3 +1,18 @@
+2014-07-01 Pratik Solanki <psola...@apple.com>
+
+ Encode/decode CFURLRequestRefs when USE(CFNETWORK) is enabled
+ https://bugs.webkit.org/show_bug.cgi?id=134454
+ <rdar://problem/17510980>
+
+ Reviewed by Andreas Kling.
+
+ Use new helper methods to serialize/deserialize CFURLRequestRef directly so we can avoid
+ creating NSURLRequest.
+
+ * Shared/mac/WebCoreArgumentCodersMac.mm:
+ (IPC::ArgumentCoder<ResourceRequest>::encodePlatformData):
+ (IPC::ArgumentCoder<ResourceRequest>::decodePlatformData):
+
2014-07-01 Benjamin Poulain <benja...@webkit.org>
[iOS][WK2] Fix a race between the short tap and long tap highlight
Modified: trunk/Source/WebKit2/Shared/mac/WebCoreArgumentCodersMac.mm (170684 => 170685)
--- trunk/Source/WebKit2/Shared/mac/WebCoreArgumentCodersMac.mm 2014-07-02 00:49:13 UTC (rev 170684)
+++ trunk/Source/WebKit2/Shared/mac/WebCoreArgumentCodersMac.mm 2014-07-02 00:57:52 UTC (rev 170685)
@@ -35,12 +35,45 @@
#import <WebCore/ResourceError.h>
#import <WebCore/ResourceRequest.h>
+#if USE(CFNETWORK)
+#import <CFNetwork/CFURLRequest.h>
+#endif
+
using namespace WebCore;
namespace IPC {
+#if USE(CFNETWORK)
void ArgumentCoder<ResourceRequest>::encodePlatformData(ArgumentEncoder& encoder, const ResourceRequest& resourceRequest)
{
+ RetainPtr<CFURLRequestRef> requestToSerialize = resourceRequest.cfURLRequest(DoNotUpdateHTTPBody);
+
+ bool requestIsPresent = requestToSerialize;
+ encoder << requestIsPresent;
+
+ if (!requestIsPresent)
+ return;
+
+ // We don't send HTTP body over IPC for better performance.
+ // Also, it's not always possible to do, as streams can only be created in process that does networking.
+ RetainPtr<CFDataRef> requestHTTPBody = adoptCF(CFURLRequestCopyHTTPRequestBody(requestToSerialize.get()));
+ RetainPtr<CFReadStreamRef> requestHTTPBodyStream = adoptCF(CFURLRequestCopyHTTPRequestBodyStream(requestToSerialize.get()));
+ if (requestHTTPBody || requestHTTPBodyStream) {
+ CFMutableURLRequestRef mutableRequest = CFURLRequestCreateMutableCopy(0, requestToSerialize.get());
+ requestToSerialize = adoptCF(mutableRequest);
+ CFURLRequestSetHTTPRequestBody(mutableRequest, nil);
+ CFURLRequestSetHTTPRequestBodyStream(mutableRequest, nil);
+ }
+
+ RetainPtr<CFDictionaryRef> dictionary = adoptCF(WKCFURLRequestCreateSerializableRepresentation(requestToSerialize.get(), IPC::tokenNullTypeRef()));
+ IPC::encode(encoder, dictionary.get());
+
+ // The fallback array is part of CFURLRequest, but it is not encoded by WKCFURLRequestCreateSerializableRepresentation.
+ encoder << resourceRequest.responseContentDispositionEncodingFallbackArray();
+}
+#else
+void ArgumentCoder<ResourceRequest>::encodePlatformData(ArgumentEncoder& encoder, const ResourceRequest& resourceRequest)
+{
RetainPtr<NSURLRequest> requestToSerialize = resourceRequest.nsURLRequest(DoNotUpdateHTTPBody);
bool requestIsPresent = requestToSerialize;
@@ -63,6 +96,7 @@
// The fallback array is part of NSURLRequest, but it is not encoded by WKNSURLRequestCreateSerializableRepresentation.
encoder << resourceRequest.responseContentDispositionEncodingFallbackArray();
}
+#endif
bool ArgumentCoder<ResourceRequest>::decodePlatformData(ArgumentDecoder& decoder, ResourceRequest& resourceRequest)
{
@@ -79,11 +113,19 @@
if (!IPC::decode(decoder, dictionary))
return false;
+#if USE(CFNETWORK)
+ RetainPtr<CFURLRequestRef> cfURLRequest = adoptCF(WKCreateCFURLRequestFromSerializableRepresentation(dictionary.get(), IPC::tokenNullTypeRef()));
+ if (!cfURLRequest)
+ return false;
+
+ resourceRequest = ResourceRequest(cfURLRequest.get());
+#else
RetainPtr<NSURLRequest> nsURLRequest = WKNSURLRequestFromSerializableRepresentation(dictionary.get(), IPC::tokenNullTypeRef());
if (!nsURLRequest)
return false;
resourceRequest = ResourceRequest(nsURLRequest.get());
+#endif
Vector<String> responseContentDispositionEncodingFallbackArray;
if (!decoder.decode(responseContentDispositionEncodingFallbackArray))
Modified: trunk/WebKitLibraries/ChangeLog (170684 => 170685)
--- trunk/WebKitLibraries/ChangeLog 2014-07-02 00:49:13 UTC (rev 170684)
+++ trunk/WebKitLibraries/ChangeLog 2014-07-02 00:57:52 UTC (rev 170685)
@@ -1,3 +1,15 @@
+2014-07-01 Pratik Solanki <psola...@apple.com>
+
+ Encode/decode CFURLRequestRefs when USE(CFNETWORK) is enabled
+ https://bugs.webkit.org/show_bug.cgi?id=134454
+ <rdar://problem/17510980>
+
+ Reviewed by Andreas Kling.
+
+ * WebKitSystemInterface.h:
+ * libWebKitSystemInterfaceMavericks.a:
+ * libWebKitSystemInterfaceMountainLion.a:
+
2014-06-25 Laszlo Gombos <l.gom...@samsung.com>
Remove build guard for progress element
Modified: trunk/WebKitLibraries/WebKitSystemInterface.h (170684 => 170685)
--- trunk/WebKitLibraries/WebKitSystemInterface.h 2014-07-02 00:49:13 UTC (rev 170684)
+++ trunk/WebKitLibraries/WebKitSystemInterface.h 2014-07-02 00:57:52 UTC (rev 170685)
@@ -439,6 +439,8 @@
CFDictionaryRef WKNSURLRequestCreateSerializableRepresentation(NSURLRequest *request, CFTypeRef tokenNull);
NSURLRequest *WKNSURLRequestFromSerializableRepresentation(CFDictionaryRef representation, CFTypeRef tokenNull);
+CFDictionaryRef WKCFURLRequestCreateSerializableRepresentation(CFURLRequestRef cfRequest, CFTypeRef tokenNull);
+CFURLRequestRef WKCreateCFURLRequestFromSerializableRepresentation(CFDictionaryRef representation, CFTypeRef tokenNull);
CFDictionaryRef WKNSURLResponseCreateSerializableRepresentation(NSURLResponse *response, CFTypeRef tokenNull);
NSURLResponse *WKNSURLResponseFromSerializableRepresentation(CFDictionaryRef representation, CFTypeRef tokenNull);
Modified: trunk/WebKitLibraries/libWebKitSystemInterfaceMavericks.a
(Binary files differ)
Modified: trunk/WebKitLibraries/libWebKitSystemInterfaceMountainLion.a
(Binary files differ)
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes