summaryrefslogtreecommitdiffstats
path: root/Source/WebCore/platform/network/mac/ResourceErrorMac.mm
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@digia.com>2012-10-17 16:21:14 +0200
committerSimon Hausmann <simon.hausmann@digia.com>2012-10-17 16:21:14 +0200
commit8995b83bcbfbb68245f779b64e5517627c6cc6ea (patch)
tree17985605dab9263cc2444bd4d45f189e142cca7c /Source/WebCore/platform/network/mac/ResourceErrorMac.mm
parentb9c9652036d5e9f1e29c574f40bc73a35c81ace6 (diff)
Imported WebKit commit cf4f8fc6f19b0629f51860cb2d4b25e139d07e00 (http://svn.webkit.org/repository/webkit/trunk@131592)
New snapshot that includes the build fixes for Mac OS X 10.6 and earlier as well as the previously cherry-picked changes
Diffstat (limited to 'Source/WebCore/platform/network/mac/ResourceErrorMac.mm')
-rw-r--r--Source/WebCore/platform/network/mac/ResourceErrorMac.mm45
1 files changed, 30 insertions, 15 deletions
diff --git a/Source/WebCore/platform/network/mac/ResourceErrorMac.mm b/Source/WebCore/platform/network/mac/ResourceErrorMac.mm
index e83990c3d..df6e9868a 100644
--- a/Source/WebCore/platform/network/mac/ResourceErrorMac.mm
+++ b/Source/WebCore/platform/network/mac/ResourceErrorMac.mm
@@ -37,6 +37,22 @@
namespace WebCore {
+static RetainPtr<NSError> createNSErrorFromResourceErrorBase(const ResourceErrorBase& resourceError)
+{
+ RetainPtr<NSMutableDictionary> userInfo(AdoptNS, [[NSMutableDictionary alloc] init]);
+
+ if (!resourceError.localizedDescription().isEmpty())
+ [userInfo.get() setValue:resourceError.localizedDescription() forKey:NSLocalizedDescriptionKey];
+
+ if (!resourceError.failingURL().isEmpty()) {
+ RetainPtr<NSURL> cocoaURL = adoptNS([[NSURL alloc] initWithString:resourceError.failingURL()]);
+ [userInfo.get() setValue:resourceError.failingURL() forKey:@"NSErrorFailingURLStringKey"];
+ [userInfo.get() setValue:cocoaURL.get() forKey:@"NSErrorFailingURLKey"];
+ }
+
+ return RetainPtr<NSError>(AdoptNS, [[NSError alloc] initWithDomain:resourceError.domain() code:resourceError.errorCode() userInfo:userInfo.get()]);
+}
+
#if USE(CFNETWORK)
ResourceError::ResourceError(NSError *error)
@@ -52,11 +68,18 @@ NSError *ResourceError::nsError() const
ASSERT(!m_platformError);
return nil;
}
- if (!m_platformNSError) {
+
+ if (m_platformNSError)
+ return m_platformNSError.get();
+
+ if (m_platformError) {
CFErrorRef error = m_platformError.get();
RetainPtr<NSDictionary> userInfo(AdoptCF, (NSDictionary *) CFErrorCopyUserInfo(error));
m_platformNSError.adoptNS([[NSError alloc] initWithDomain:(NSString *)CFErrorGetDomain(error) code:CFErrorGetCode(error) userInfo:userInfo.get()]);
+ return m_platformNSError.get();
}
+
+ m_platformNSError = createNSErrorFromResourceErrorBase(*this);
return m_platformNSError.get();
}
@@ -72,6 +95,8 @@ ResourceError::ResourceError(NSError *nsError)
, m_platformError(nsError)
{
m_isNull = !nsError;
+ if (!m_isNull)
+ m_isTimeout = [m_platformError.get() code] == NSURLErrorTimedOut;
}
ResourceError::ResourceError(CFErrorRef cfError)
@@ -79,6 +104,8 @@ ResourceError::ResourceError(CFErrorRef cfError)
, m_platformError((NSError *)cfError)
{
m_isNull = !cfError;
+ if (!m_isNull)
+ m_isTimeout = [m_platformError.get() code] == NSURLErrorTimedOut;
}
void ResourceError::platformLazyInit()
@@ -113,21 +140,9 @@ NSError *ResourceError::nsError() const
ASSERT(!m_platformError);
return nil;
}
-
- if (!m_platformError) {
- RetainPtr<NSMutableDictionary> userInfo(AdoptNS, [[NSMutableDictionary alloc] init]);
- if (!m_localizedDescription.isEmpty())
- [userInfo.get() setValue:m_localizedDescription forKey:NSLocalizedDescriptionKey];
-
- if (!m_failingURL.isEmpty()) {
- RetainPtr<NSURL> cocoaURL = adoptNS([[NSURL alloc] initWithString:m_failingURL]);
- [userInfo.get() setValue:m_failingURL forKey:@"NSErrorFailingURLStringKey"];
- [userInfo.get() setValue:cocoaURL.get() forKey:@"NSErrorFailingURLKey"];
- }
-
- m_platformError.adoptNS([[NSError alloc] initWithDomain:m_domain code:m_errorCode userInfo:userInfo.get()]);
- }
+ if (!m_platformError)
+ m_platformError = createNSErrorFromResourceErrorBase(*this);;
return m_platformError.get();
}