Title: [90825] trunk/Source/WebCore
- Revision
- 90825
- Author
- [email protected]
- Date
- 2011-07-12 10:51:16 -0700 (Tue, 12 Jul 2011)
Log Message
Reviewed by David Kilzer.
Add NSURLResponse wrapper in ResourceResponse when USE(CFNETWORK) is enabled
https://bugs.webkit.org/show_bug.cgi?id=63286
When USE(CFNETWORK) is enabled on Mac, keep an NSURLResponse object along with the
CFURLResponseRef so that WebKit can continue using the NSURLResponse.
No new tests because no change in functionality and option is not enabled on Mac.
* platform/network/cf/ResourceResponse.h:
(WebCore::ResourceResponse::ResourceResponse):
* platform/network/mac/ResourceResponseMac.mm:
(WebCore::ResourceResponse::initNSURLResponse):
(WebCore::ResourceResponse::nsURLResponse):
(WebCore::ResourceResponse::ResourceResponse):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (90824 => 90825)
--- trunk/Source/WebCore/ChangeLog 2011-07-12 17:50:59 UTC (rev 90824)
+++ trunk/Source/WebCore/ChangeLog 2011-07-12 17:51:16 UTC (rev 90825)
@@ -1,3 +1,22 @@
+2011-07-12 Pratik Solanki <[email protected]>
+
+ Reviewed by David Kilzer.
+
+ Add NSURLResponse wrapper in ResourceResponse when USE(CFNETWORK) is enabled
+ https://bugs.webkit.org/show_bug.cgi?id=63286
+
+ When USE(CFNETWORK) is enabled on Mac, keep an NSURLResponse object along with the
+ CFURLResponseRef so that WebKit can continue using the NSURLResponse.
+
+ No new tests because no change in functionality and option is not enabled on Mac.
+
+ * platform/network/cf/ResourceResponse.h:
+ (WebCore::ResourceResponse::ResourceResponse):
+ * platform/network/mac/ResourceResponseMac.mm:
+ (WebCore::ResourceResponse::initNSURLResponse):
+ (WebCore::ResourceResponse::nsURLResponse):
+ (WebCore::ResourceResponse::ResourceResponse):
+
2011-07-12 Pavel Podivilov <[email protected]>
Web Inspector: Cancelling an empty edit fails.
@@ -87,7 +106,7 @@
(WebCore::HTMLInputElement::updateCheckedRadioButtons):
(WebCore::HTMLInputElement::setChecked):
-2011-06-23 Pratik Solanki <[email protected]>
+2011-07-11 Pratik Solanki <[email protected]>
Reviewed by David Kilzer.
Modified: trunk/Source/WebCore/platform/network/cf/ResourceResponse.h (90824 => 90825)
--- trunk/Source/WebCore/platform/network/cf/ResourceResponse.h 2011-07-12 17:50:59 UTC (rev 90824)
+++ trunk/Source/WebCore/platform/network/cf/ResourceResponse.h 2011-07-12 17:51:16 UTC (rev 90825)
@@ -31,13 +31,13 @@
#if USE(CFNETWORK)
typedef struct _CFURLResponse* CFURLResponseRef;
-#else
+#endif
+
#ifdef __OBJC__
@class NSURLResponse;
#else
class NSURLResponse;
#endif
-#endif
namespace WebCore {
@@ -55,8 +55,11 @@
{
m_isNull = !cfResponse;
}
+#if PLATFORM(MAC)
+ ResourceResponse(NSURLResponse *);
+#endif
#else
- ResourceResponse(NSURLResponse* nsResponse)
+ ResourceResponse(NSURLResponse *nsResponse)
: m_nsResponse(nsResponse)
, m_initLevel(Uninitialized)
{
@@ -84,7 +87,8 @@
#if USE(CFNETWORK)
CFURLResponseRef cfURLResponse() const;
-#else
+#endif
+#if PLATFORM(MAC)
NSURLResponse *nsURLResponse() const;
#endif
@@ -94,12 +98,16 @@
void platformLazyInit(InitLevel);
PassOwnPtr<CrossThreadResourceResponseData> doPlatformCopyData(PassOwnPtr<CrossThreadResourceResponseData> data) const { return data; }
void doPlatformAdopt(PassOwnPtr<CrossThreadResourceResponseData>) { }
+#if PLATFORM(MAC)
+ void initNSURLResponse() const;
+#endif
static bool platformCompare(const ResourceResponse& a, const ResourceResponse& b);
#if USE(CFNETWORK)
mutable RetainPtr<CFURLResponseRef> m_cfResponse;
-#else
+#endif
+#if PLATFORM(MAC)
mutable RetainPtr<NSURLResponse> m_nsResponse;
#endif
InitLevel m_initLevel;
Modified: trunk/Source/WebCore/platform/network/mac/ResourceResponseMac.mm (90824 => 90825)
--- trunk/Source/WebCore/platform/network/mac/ResourceResponseMac.mm 2011-07-12 17:50:59 UTC (rev 90824)
+++ trunk/Source/WebCore/platform/network/mac/ResourceResponseMac.mm 2011-07-12 17:51:16 UTC (rev 90825)
@@ -26,8 +26,6 @@
#import "config.h"
#import "ResourceResponse.h"
-#if !USE(CFNETWORK)
-
#import "HTTPParsers.h"
#import "WebCoreURLResponse.h"
#import "WebCoreSystemInterface.h"
@@ -36,8 +34,13 @@
#import <limits>
#include <wtf/text/CString.h>
-@interface NSURLResponse (FoundationSecretsWebCoreKnowsAbout)
+using namespace std;
+
+@interface NSURLResponse (WebNSURLResponseDetails)
- (NSTimeInterval)_calculatedExpiration;
+- (id)_initWithCFURLResponse:(CFURLResponseRef)response;
+- (CFURLResponseRef) _CFURLResponse;
++ (id)_responseWithCFURLResponse:(CFURLResponseRef)response;
@end
@@ -48,22 +51,54 @@
};
static const int numCommonHeaderFields = sizeof(commonHeaderFields) / sizeof(AtomicString*);
+void ResourceResponse::initNSURLResponse() const
+{
+ // Work around a mistake in the NSURLResponse class - <rdar://problem/3346574>.
+ // The init function takes an NSInteger, even though the accessor returns a long long.
+ // For values that won't fit in an NSInteger, pass -1 instead.
+ NSInteger expectedContentLength;
+ if (m_expectedContentLength < 0 || m_expectedContentLength > numeric_limits<NSInteger>::max())
+ expectedContentLength = -1;
+ else
+ expectedContentLength = static_cast<NSInteger>(m_expectedContentLength);
+ m_nsResponse.adoptNS([[NSURLResponse alloc] initWithURL:m_url MIMEType:m_mimeType expectedContentLength:expectedContentLength textEncodingName:m_textEncodingName]);
+}
+
+#if USE(CFNETWORK)
+
NSURLResponse *ResourceResponse::nsURLResponse() const
{
- if (!m_nsResponse && !m_isNull) {
- // Work around a mistake in the NSURLResponse class.
- // The init function takes an NSInteger, even though the accessor returns a long long.
- // For values that won't fit in an NSInteger, pass -1 instead.
- NSInteger expectedContentLength;
- if (m_expectedContentLength < 0 || m_expectedContentLength > std::numeric_limits<NSInteger>::max())
- expectedContentLength = -1;
- else
- expectedContentLength = static_cast<NSInteger>(m_expectedContentLength);
- const_cast<ResourceResponse*>(this)->m_nsResponse.adoptNS([[NSURLResponse alloc] initWithURL:m_url MIMEType:m_mimeType expectedContentLength:expectedContentLength textEncodingName:m_textEncodingName]);
+ if (!m_nsResponse && !m_cfResponse && !m_isNull) {
+ initNSURLResponse();
+ m_cfResponse = [m_nsResponse.get() _CFURLResponse];
}
+
+ if (!m_cfResponse)
+ return nil;
+
+ if (!m_nsResponse)
+ m_nsResponse.adoptNS([[NSURLResponse _responseWithCFURLResponse:m_cfResponse.get()] retain]);
+
return m_nsResponse.get();
}
+ResourceResponse::ResourceResponse(NSURLResponse* nsResponse)
+ : m_cfResponse([nsResponse _CFURLResponse])
+ , m_nsResponse(nsResponse)
+ , m_initLevel(Uninitialized)
+{
+ m_isNull = !nsResponse;
+}
+
+#else
+
+NSURLResponse *ResourceResponse::nsURLResponse() const
+{
+ if (!m_nsResponse && !m_isNull)
+ initNSURLResponse();
+ return m_nsResponse.get();
+}
+
void ResourceResponse::platformLazyInit(InitLevel initLevel)
{
if (m_initLevel >= initLevel)
@@ -136,6 +171,7 @@
return a.nsURLResponse() == b.nsURLResponse();
}
+#endif // USE(CFNETWORK)
+
} // namespace WebCore
-#endif // !USE(CFNETWORK)
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes