| // Copyright 2012 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #import "ios/chrome/browser/web/error_page_content.h" |
| |
| #include <memory> |
| |
| #import "ios/chrome/browser/web/error_page_generator.h" |
| #include "ios/web/public/referrer.h" |
| #include "ui/base/page_transition_types.h" |
| #include "url/gurl.h" |
| |
| #if !defined(__has_feature) || !__has_feature(objc_arc) |
| #error "This file requires ARC support." |
| #endif |
| |
| @implementation ErrorPageContent |
| |
| #pragma mark - |
| #pragma mark CRWNativeContent methods |
| |
| // Override StaticHtmlNativeContent method to always force error pages to |
| // try loading the URL again, because the error might have been fixed. |
| - (void)reload { |
| // Because we don't have the original page transition at this point, just |
| // use PAGE_TRANSITION_TYPED. We can revisit if this causes problems. |
| [super loadURL:[self url] |
| referrer:web::Referrer() |
| transition:ui::PAGE_TRANSITION_TYPED |
| rendererInitiated:YES]; |
| } |
| |
| - (id)initWithLoader:(id<UrlLoader>)loader |
| browserState:(web::BrowserState*)browserState |
| url:(const GURL&)url |
| error:(NSError*)error |
| isPost:(BOOL)isPost |
| isIncognito:(BOOL)isIncognito { |
| ErrorPageGenerator* generator = |
| [[ErrorPageGenerator alloc] initWithError:error |
| isPost:isPost |
| isIncognito:isIncognito]; |
| |
| StaticHtmlViewController* HTMLViewController = |
| [[StaticHtmlViewController alloc] initWithGenerator:generator |
| browserState:browserState]; |
| return [super initWithLoader:loader |
| staticHTMLViewController:HTMLViewController |
| URL:url]; |
| } |
| |
| @end |