void ResourceError::platformLazyInit() { if (m_dataIsUpToDate) return; if (!m_platformError) return; CFStringRef domain = CFErrorGetDomain(m_platformError.get()); if (domain == kCFErrorDomainMach || domain == kCFErrorDomainCocoa) m_domain ="NSCustomErrorDomain"; else if (domain == kCFErrorDomainCFNetwork) m_domain = "CFURLErrorDomain"; else if (domain == kCFErrorDomainPOSIX) m_domain = "NSPOSIXErrorDomain"; else if (domain == kCFErrorDomainOSStatus) m_domain = "NSOSStatusErrorDomain"; else if (domain == kCFErrorDomainWinSock) m_domain = "kCFErrorDomainWinSock"; else m_domain = domain; m_errorCode = CFErrorGetCode(m_platformError.get()); RetainPtr<CFDictionaryRef> userInfo = adoptCF(CFErrorCopyUserInfo(m_platformError.get())); if (userInfo.get()) { CFStringRef failingURLString = (CFStringRef) CFDictionaryGetValue(userInfo.get(), failingURLStringKey); if (failingURLString) m_failingURL = String(failingURLString); else { CFURLRef failingURL = (CFURLRef) CFDictionaryGetValue(userInfo.get(), failingURLKey); if (failingURL) { RetainPtr<CFURLRef> absoluteURLRef = adoptCF(CFURLCopyAbsoluteURL(failingURL)); if (absoluteURLRef.get()) { // FIXME: CFURLGetString returns a normalized URL which is different from what is actually used by CFNetwork. // We should use CFURLGetBytes instead. failingURLString = CFURLGetString(absoluteURLRef.get()); m_failingURL = String(failingURLString); } } } m_localizedDescription = (CFStringRef) CFDictionaryGetValue(userInfo.get(), kCFErrorLocalizedDescriptionKey); #if PLATFORM(WIN) m_certificate = wkGetSSLPeerCertificateData(userInfo.get()); #endif } m_dataIsUpToDate = true; }
void ResourceError::platformLazyInit() { if (m_dataIsUpToDate) return; if (!m_platformError) return; CFStringRef domain = CFErrorGetDomain(m_platformError.get()); if (domain == kCFErrorDomainMach || domain == kCFErrorDomainCocoa) m_domain ="NSCustomErrorDomain"; else if (domain == kCFErrorDomainCFNetwork) m_domain = "CFURLErrorDomain"; else if (domain == kCFErrorDomainPOSIX) m_domain = "NSPOSIXErrorDomain"; else if (domain == kCFErrorDomainOSStatus) m_domain = "NSOSStatusErrorDomain"; else if (domain == kCFErrorDomainWinSock) m_domain = "kCFErrorDomainWinSock"; m_errorCode = CFErrorGetCode(m_platformError.get()); RetainPtr<CFDictionaryRef> userInfo(AdoptCF, CFErrorCopyUserInfo(m_platformError.get())); if (userInfo.get()) { CFStringRef failingURLString = (CFStringRef) CFDictionaryGetValue(userInfo.get(), failingURLStringKey); if (failingURLString) m_failingURL = String(failingURLString); else { CFURLRef failingURL = (CFURLRef) CFDictionaryGetValue(userInfo.get(), failingURLKey); if (failingURL) { RetainPtr<CFURLRef> absoluteURLRef(AdoptCF, CFURLCopyAbsoluteURL(failingURL)); if (absoluteURLRef.get()) { failingURLString = CFURLGetString(absoluteURLRef.get()); m_failingURL = String(failingURLString); } } } m_localizedDescription = (CFStringRef) CFDictionaryGetValue(userInfo.get(), kCFErrorLocalizedDescriptionKey); #if PLATFORM(WIN) m_certificate = wkGetSSLPeerCertificateData(userInfo.get()); #endif } m_dataIsUpToDate = true; }