Chromium Code Reviews| Index: ios/web/web_state/ui/crw_web_controller.mm |
| diff --git a/ios/web/web_state/ui/crw_web_controller.mm b/ios/web/web_state/ui/crw_web_controller.mm |
| index e8bab8fb211d0ca839a28ad2b77eb79c8a1fd11b..bde610be155997cd62bd66aa329388446b58783a 100644 |
| --- a/ios/web/web_state/ui/crw_web_controller.mm |
| +++ b/ios/web/web_state/ui/crw_web_controller.mm |
| @@ -51,6 +51,7 @@ |
| #include "ios/web/public/web_state/credential.h" |
| #import "ios/web/public/web_state/crw_web_controller_observer.h" |
| #import "ios/web/public/web_state/crw_web_view_scroll_view_proxy.h" |
| +#import "ios/web/public/web_state/error_translation_util.h" |
| #import "ios/web/public/web_state/js/crw_js_injection_manager.h" |
| #import "ios/web/public/web_state/js/crw_js_injection_receiver.h" |
| #import "ios/web/public/web_state/ui/crw_native_content.h" |
| @@ -59,7 +60,6 @@ |
| #include "ios/web/public/web_state/web_state.h" |
| #include "ios/web/web_state/blocked_popup_info.h" |
| #import "ios/web/web_state/crw_web_view_proxy_impl.h" |
| -#import "ios/web/web_state/error_translation_util.h" |
| #include "ios/web/web_state/frame_info.h" |
| #import "ios/web/web_state/js/credential_util.h" |
| #import "ios/web/web_state/js/crw_js_early_script_manager.h" |
| @@ -1423,6 +1423,7 @@ const NSTimeInterval kSnapshotOverlayTransition = 0.5; |
| const GURL currentUrl = [self currentNavigationURL]; |
| BOOL isPost = [self currentPOSTData] != nil; |
| + error = web::NetErrorFromError(error); |
| [self setNativeController:[_nativeProvider controllerForURL:currentUrl |
| withError:error |
| isPost:isPost]]; |
| @@ -2820,9 +2821,6 @@ const NSTimeInterval kSnapshotOverlayTransition = 0.5; |
| } |
| - (void)handleLoadError:(NSError*)error inMainFrame:(BOOL)inMainFrame { |
| - // Attempt to translate iOS errors into their corresponding net errors. |
| - error = web::NetErrorFromError(error); |
| - |
| if ([error code] == NSURLErrorUnsupportedURL) |
| return; |
| // In cases where a Plug-in handles the load do not take any further action. |
| @@ -2884,7 +2882,7 @@ const NSTimeInterval kSnapshotOverlayTransition = 0.5; |
| } |
| } |
| - // Otherwise, handle the error normally. |
| + // Ignore errors that originate from URLs that are opened in external apps. |
| if ([_openedApplicationURL containsObject:errorURL]) |
| return; |
| // Certain frame errors don't have URL information for some reason; for |
| @@ -2909,17 +2907,13 @@ const NSTimeInterval kSnapshotOverlayTransition = 0.5; |
| return; |
| } |
| - // TODO(ios): Audit comments and behavior below regarding error origin. The |
| - // error has been translated and may appear to have originated in the Chrome |
| - // network stack when that is not true (crbug.com/496972) |
| - // Ignore cancelled errors. |
| if ([error code] == NSURLErrorCancelled) { |
| NSError* underlyingError = [userInfo objectForKey:NSUnderlyingErrorKey]; |
| if (underlyingError && [self shouldAbortLoadForCancelledURL:errorGURL]) { |
| DCHECK([underlyingError isKindOfClass:[NSError class]]); |
| - // The Error contains an NSUnderlyingErrorKey so it's being generated |
| - // in the Chrome network stack. Aborting the load in this case. |
| + // NSURLCancelled errors with underlying errors are generated from the |
| + // chrome network stack. Aborting the load in this case. |
| [self abortLoad]; |
| switch ([underlyingError code]) { |
| @@ -2940,6 +2934,9 @@ const NSTimeInterval kSnapshotOverlayTransition = 0.5; |
| NOTREACHED(); |
| } |
| } |
| + // NSURLCancelled errors with no underlying error are generated by the web |
| + // view. Early return in this case, as the web view interally handles |
| + // reattempting this load. |
|
Eugene But (OOO till 7-30)
2015/06/19 00:52:01
Please make sure that LoadState will still be PAGE
kkhorimoto
2015/06/23 20:33:58
Done, although the fix is somewhat speculative. T
|
| return; |
| } |