// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef IOS_WEB_NAVIGATION_CRW_ERROR_PAGE_HELPER_H_
#define IOS_WEB_NAVIGATION_CRW_ERROR_PAGE_HELPER_H_
#import <Foundation/Foundation.h>
class GURL;
// Class used to create an Error Page, constructing all the information needed
// based on the initial error.
@interface CRWErrorPageHelper : NSObject
// Failed URL of the failed navigation.
@property(nonatomic, strong, readonly) NSURL* failedNavigationURL;
// The error page file to be loaded as a new page.
@property(nonatomic, strong, readonly) NSURL* errorPageFileURL;
- (instancetype)initWithError:(NSError*)error NS_DESIGNATED_INITIALIZER;
- (instancetype)init NS_UNAVAILABLE;
// Returns the failed URL if `URL` is an error page URL, otherwise empty URL.
+ (GURL)failedNavigationURLFromErrorPageFileURL:(const GURL&)URL;
// Returns whether `URL` is an error page URL.
+ (BOOL)isErrorPageFileURL:(const GURL&)URL;
// Returns a JavaScript script that can be injected to replace the content of
// the page with `HTML`. It can also contains a script to automatically reload
// the page when it is shown if `addAutomaticReload` is true.
- (NSString*)scriptForInjectingHTML:(NSString*)HTML
addAutomaticReload:(BOOL)addAutomaticReload;
// Returns YES if `URL` is a file URL for this error page.
- (BOOL)isErrorPageFileURLForFailedNavigationURL:(NSURL*)URL;
@end
#endif // IOS_WEB_NAVIGATION_CRW_ERROR_PAGE_HELPER_H_