Title: [90807] trunk/Source/WebCore
- Revision
- 90807
- Author
- [email protected]
- Date
- 2011-07-11 21:54:54 -0700 (Mon, 11 Jul 2011)
Log Message
Reviewed by David Kilzer.
Add NSURLRequest wrapper in ResourceRequest when USE(CFNETWORK) is enabled
https://bugs.webkit.org/show_bug.cgi?id=63276
When USE(CFNETWORK) is enabled on Mac, keep an NSURLRequest object along with the
CFURLRequestRef so that WebKit can continue using the NSURLRequest.
No new tests because no change in functionality and option is not enabled on Mac.
* platform/network/cf/ResourceRequest.h:
(WebCore::ResourceRequest::updateNSURLRequest):
(WebCore::ResourceRequest::ResourceRequest):
* platform/network/cf/ResourceRequestCFNet.cpp:
(WebCore::findCFURLRequestSetContentDispositionEncodingFallbackArrayFunction):
(WebCore::findCFURLRequestCopyContentDispositionEncodingFallbackArrayFunction):
(WebCore::ResourceRequest::doUpdatePlatformRequest):
(WebCore::ResourceRequest::applyWebArchiveHackForMail):
* platform/network/mac/ResourceRequestMac.mm:
(WebCore::ResourceRequest::nsURLRequest):
(WebCore::ResourceRequest::ResourceRequest):
(WebCore::ResourceRequest::updateNSURLRequest):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (90806 => 90807)
--- trunk/Source/WebCore/ChangeLog 2011-07-12 02:51:39 UTC (rev 90806)
+++ trunk/Source/WebCore/ChangeLog 2011-07-12 04:54:54 UTC (rev 90807)
@@ -1,3 +1,28 @@
+2011-06-23 Pratik Solanki <[email protected]>
+
+ Reviewed by David Kilzer.
+
+ Add NSURLRequest wrapper in ResourceRequest when USE(CFNETWORK) is enabled
+ https://bugs.webkit.org/show_bug.cgi?id=63276
+
+ When USE(CFNETWORK) is enabled on Mac, keep an NSURLRequest object along with the
+ CFURLRequestRef so that WebKit can continue using the NSURLRequest.
+
+ No new tests because no change in functionality and option is not enabled on Mac.
+
+ * platform/network/cf/ResourceRequest.h:
+ (WebCore::ResourceRequest::updateNSURLRequest):
+ (WebCore::ResourceRequest::ResourceRequest):
+ * platform/network/cf/ResourceRequestCFNet.cpp:
+ (WebCore::findCFURLRequestSetContentDispositionEncodingFallbackArrayFunction):
+ (WebCore::findCFURLRequestCopyContentDispositionEncodingFallbackArrayFunction):
+ (WebCore::ResourceRequest::doUpdatePlatformRequest):
+ (WebCore::ResourceRequest::applyWebArchiveHackForMail):
+ * platform/network/mac/ResourceRequestMac.mm:
+ (WebCore::ResourceRequest::nsURLRequest):
+ (WebCore::ResourceRequest::ResourceRequest):
+ (WebCore::ResourceRequest::updateNSURLRequest):
+
2011-07-11 Ryosuke Niwa <[email protected]>
positionForPoint is broken when a block is positioned relatively inside the parent
Modified: trunk/Source/WebCore/platform/network/cf/ResourceRequest.h (90806 => 90807)
--- trunk/Source/WebCore/platform/network/cf/ResourceRequest.h 2011-07-12 02:51:39 UTC (rev 90806)
+++ trunk/Source/WebCore/platform/network/cf/ResourceRequest.h 2011-07-12 04:54:54 UTC (rev 90807)
@@ -32,13 +32,13 @@
#include <wtf/RetainPtr.h>
#if USE(CFNETWORK)
typedef const struct _CFURLRequest* CFURLRequestRef;
-#else
+#endif
+
#ifdef __OBJC__
@class NSURLRequest;
#else
class NSURLRequest;
#endif
-#endif
#if USE(CFURLSTORAGESESSIONS) && (defined(BUILDING_ON_SNOW_LEOPARD) || defined(BUILDING_ON_LEOPARD))
typedef struct __CFURLStorageSession* CFURLStorageSessionRef;
@@ -72,18 +72,32 @@
}
#if USE(CFNETWORK)
+#if PLATFORM(MAC)
+ ResourceRequest(NSURLRequest *);
+ void updateNSURLRequest();
+#endif
+
ResourceRequest(CFURLRequestRef cfRequest)
: ResourceRequestBase()
- , m_cfRequest(cfRequest) { }
+ , m_cfRequest(cfRequest)
+ {
+#if PLATFORM(MAC)
+ updateNSURLRequest();
+#endif
+ }
+
CFURLRequestRef cfURLRequest() const;
#else
- ResourceRequest(NSURLRequest* nsRequest)
+ ResourceRequest(NSURLRequest *nsRequest)
: ResourceRequestBase()
, m_nsRequest(nsRequest) { }
+#endif
+
+#if PLATFORM(MAC)
void applyWebArchiveHackForMail();
- NSURLRequest* nsURLRequest() const;
+ NSURLRequest *nsURLRequest() const;
#endif
#if USE(CFURLSTORAGESESSIONS)
@@ -108,7 +122,8 @@
#if USE(CFNETWORK)
RetainPtr<CFURLRequestRef> m_cfRequest;
-#else
+#endif
+#if PLATFORM(MAC)
RetainPtr<NSURLRequest> m_nsRequest;
#endif
Modified: trunk/Source/WebCore/platform/network/cf/ResourceRequestCFNet.cpp (90806 => 90807)
--- trunk/Source/WebCore/platform/network/cf/ResourceRequestCFNet.cpp 2011-07-12 02:51:39 UTC (rev 90806)
+++ trunk/Source/WebCore/platform/network/cf/ResourceRequestCFNet.cpp 2011-07-12 04:54:54 UTC (rev 90807)
@@ -29,14 +29,18 @@
#include "ResourceHandle.h"
#include "ResourceRequest.h"
+#if USE(CFNETWORK)
+#include "FormDataStreamCFNet.h"
+#include <CFNetwork/CFURLRequestPriv.h>
+#endif
+
#if PLATFORM(MAC)
#include "ResourceLoadPriority.h"
#include "WebCoreSystemInterface.h"
+#include <dlfcn.h>
#endif
-#if USE(CFNETWORK)
-#include "FormDataStreamCFNet.h"
-#include <CFNetwork/CFURLRequestPriv.h>
+#if PLATFORM(WIN)
#include <WebKitSystemInterface/WebKitSystemInterface.h>
#endif
@@ -49,6 +53,7 @@
typedef void (*CFURLRequestSetContentDispositionEncodingFallbackArrayFunction)(CFMutableURLRequestRef, CFArrayRef);
typedef CFArrayRef (*CFURLRequestCopyContentDispositionEncodingFallbackArrayFunction)(CFURLRequestRef);
+#if PLATFORM(WIN)
static HMODULE findCFNetworkModule()
{
#ifndef DEBUG_ALL
@@ -67,7 +72,18 @@
{
return reinterpret_cast<CFURLRequestCopyContentDispositionEncodingFallbackArrayFunction>(GetProcAddress(findCFNetworkModule(), "_CFURLRequestCopyContentDispositionEncodingFallbackArray"));
}
+#elif PLATFORM(MAC)
+static CFURLRequestSetContentDispositionEncodingFallbackArrayFunction findCFURLRequestSetContentDispositionEncodingFallbackArrayFunction()
+{
+ return reinterpret_cast<CFURLRequestSetContentDispositionEncodingFallbackArrayFunction>(dlsym(RTLD_DEFAULT, "_CFURLRequestSetContentDispositionEncodingFallbackArray"));
+}
+static CFURLRequestCopyContentDispositionEncodingFallbackArrayFunction findCFURLRequestCopyContentDispositionEncodingFallbackArrayFunction()
+{
+ return reinterpret_cast<CFURLRequestCopyContentDispositionEncodingFallbackArrayFunction>(dlsym(RTLD_DEFAULT, "_CFURLRequestCopyContentDispositionEncodingFallbackArray"));
+}
+#endif
+
static void setContentDispositionEncodingFallbackArray(CFMutableURLRequestRef request, CFArrayRef fallbackArray)
{
static CFURLRequestSetContentDispositionEncodingFallbackArrayFunction function = findCFURLRequestSetContentDispositionEncodingFallbackArrayFunction();
@@ -159,6 +175,9 @@
}
m_cfRequest.adoptCF(cfRequest);
+#if PLATFORM(MAC)
+ updateNSURLRequest();
+#endif
}
void ResourceRequest::doUpdateResourceRequest()
@@ -218,6 +237,14 @@
#endif
+#if PLATFORM(MAC)
+void ResourceRequest::applyWebArchiveHackForMail()
+{
+ // Hack because Mail checks for this property to detect data / archive loads
+ _CFURLRequestSetProtocolProperty(cfURLRequest(), CFSTR("WebDataRequest"), CFSTR(""));
+}
+#endif
+
#endif // USE(CFNETWORK)
bool ResourceRequest::httpPipeliningEnabled()
Modified: trunk/Source/WebCore/platform/network/mac/ResourceRequestMac.mm (90806 => 90807)
--- trunk/Source/WebCore/platform/network/mac/ResourceRequestMac.mm 2011-07-12 02:51:39 UTC (rev 90806)
+++ trunk/Source/WebCore/platform/network/mac/ResourceRequestMac.mm 2011-07-12 04:54:54 UTC (rev 90807)
@@ -26,10 +26,6 @@
#import "config.h"
#import "ResourceRequest.h"
-#if !USE(CFNETWORK)
-
-#import "WebCoreSystemInterface.h"
-
#import "FormDataStreamMac.h"
#import "ResourceRequestCFNet.h"
#import "RuntimeApplicationChecks.h"
@@ -42,6 +38,7 @@
- (NSArray *)contentDispositionEncodingFallbackArray;
+ (void)setDefaultTimeoutInterval:(NSTimeInterval)seconds;
- (CFURLRequestRef)_CFURLRequest;
+- (id)_initWithCFURLRequest:(CFURLRequestRef)request;
@end
@interface NSMutableURLRequest (WebMutableNSURLRequestDetails)
@@ -50,13 +47,30 @@
namespace WebCore {
-NSURLRequest* ResourceRequest::nsURLRequest() const
+NSURLRequest *ResourceRequest::nsURLRequest() const
{
updatePlatformRequest();
return [[m_nsRequest.get() retain] autorelease];
}
+#if USE(CFNETWORK)
+
+ResourceRequest::ResourceRequest(NSURLRequest *nsRequest)
+ : ResourceRequestBase()
+ , m_cfRequest([nsRequest _CFURLRequest])
+ , m_nsRequest(nsRequest)
+{
+}
+
+void ResourceRequest::updateNSURLRequest()
+{
+ if (m_cfRequest)
+ m_nsRequest.adoptNS([[NSURLRequest alloc] _initWithCFURLRequest:m_cfRequest.get()]);
+}
+
+#else
+
void ResourceRequest::doUpdateResourceRequest()
{
m_url = [m_nsRequest.get() URL];
@@ -177,6 +191,8 @@
#endif
+#endif // USE(CFNETWORK)
+
static bool initQuickLookResourceCachingQuirks()
{
if (applicationIsSafari())
@@ -204,4 +220,3 @@
} // namespace WebCore
-#endif // !USE(CFNETWORK)
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes