| Index: ios/web/web_state/error_translation_util.mm
|
| diff --git a/ios/web/web_state/error_translation_util.mm b/ios/web/web_state/error_translation_util.mm
|
| index 96d862f5ad4bed243a434182297bfb2d7600d57a..9c6cbd00e3a1d971b994af08cd88351d1b903c8c 100644
|
| --- a/ios/web/web_state/error_translation_util.mm
|
| +++ b/ios/web/web_state/error_translation_util.mm
|
| @@ -6,6 +6,7 @@
|
|
|
| #include <CFNetwork/CFNetwork.h>
|
|
|
| +#import "base/ios/ns_error_util.h"
|
| #include "base/mac/scoped_nsobject.h"
|
| #include "net/base/net_errors.h"
|
|
|
| @@ -123,32 +124,26 @@ bool GetNetErrorFromIOSErrorCode(NSInteger ios_error_code,
|
| } // namespace
|
|
|
| NSError* NetErrorFromError(NSError* error) {
|
| - NSError* underlying_error = error.userInfo[NSUnderlyingErrorKey];
|
| - NSString* net_error_domain =
|
| - [NSString stringWithUTF8String:net::kErrorDomain];
|
| + DCHECK(error);
|
| + NSError* underlying_error =
|
| + base::ios::GetFinalUnderlyingErrorFromError(error);
|
| NSError* translated_error = error;
|
| - if (underlying_error) {
|
| - // If |error| already has an underlying error, it should be from the net
|
| - // stack and should already have the correct domain.
|
| - DCHECK([underlying_error.domain isEqualToString:net_error_domain]);
|
| - } else if ([error.domain isEqualToString:NSURLErrorDomain] ||
|
| - [error.domain isEqualToString:static_cast<NSString*>(
|
| - kCFErrorDomainCFNetwork)]) {
|
| + if ([underlying_error.domain isEqualToString:NSURLErrorDomain] ||
|
| + [underlying_error.domain
|
| + isEqualToString:static_cast<NSString*>(kCFErrorDomainCFNetwork)]) {
|
| // Attempt to translate NSURL and CFNetwork error codes into their
|
| // corresponding net error codes.
|
| NSInteger net_error_code = net::OK;
|
| - if (GetNetErrorFromIOSErrorCode(error.code, &net_error_code)) {
|
| - base::scoped_nsobject<NSMutableDictionary> user_info(
|
| - [error.userInfo mutableCopy]);
|
| - [user_info setObject:[NSError errorWithDomain:net_error_domain
|
| + if (GetNetErrorFromIOSErrorCode(underlying_error.code, &net_error_code)) {
|
| + NSString* net_error_domain =
|
| + [NSString stringWithUTF8String:net::kErrorDomain];
|
| + NSError* net_error = [NSError errorWithDomain:net_error_domain
|
| code:net_error_code
|
| - userInfo:nil]
|
| - forKey:NSUnderlyingErrorKey];
|
| - translated_error = [NSError errorWithDomain:error.domain
|
| - code:error.code
|
| - userInfo:user_info];
|
| + userInfo:nil];
|
| + translated_error =
|
| + base::ios::ErrorWithAppendedUnderlyingError(error, net_error);
|
| }
|
| }
|
| return translated_error;
|
| }
|
| -}
|
| +} // namespace web
|
|
|