| Index: ios/chrome/browser/ui/static_content/static_html_view_controller.h
|
| diff --git a/ios/chrome/browser/ui/static_content/static_html_view_controller.h b/ios/chrome/browser/ui/static_content/static_html_view_controller.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..e1f9b186f55a01146b17ce646c28a5e2dace40fc
|
| --- /dev/null
|
| +++ b/ios/chrome/browser/ui/static_content/static_html_view_controller.h
|
| @@ -0,0 +1,123 @@
|
| +// 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.
|
| +
|
| +#ifndef IOS_CHROME_BROWSER_UI_STATIC_CONTENT_STATIC_HTML_VIEW_CONTROLLER_H_
|
| +#define IOS_CHROME_BROWSER_UI_STATIC_CONTENT_STATIC_HTML_VIEW_CONTROLLER_H_
|
| +
|
| +#import <UIKit/UIKit.h>
|
| +#import <WebKit/WebKit.h>
|
| +
|
| +#import "ios/chrome/browser/ui/url_loader.h"
|
| +#import "ios/web/public/block_types.h"
|
| +
|
| +@protocol CRWNativeContentDelegate;
|
| +
|
| +namespace web {
|
| +class BrowserState;
|
| +struct Referrer;
|
| +}
|
| +
|
| +// Callback for the HtmlGenerator protocol.
|
| +typedef void (^HtmlCallback)(NSString*);
|
| +
|
| +// An object that can generate HTML to be displayed.
|
| +@protocol HtmlGenerator<NSObject>
|
| +// Generates the HTML to be displayed. This is called on the main thread. If
|
| +// heavy work must be done, it should be done asynchronously.
|
| +- (void)generateHtml:(HtmlCallback)callback;
|
| +@end
|
| +
|
| +// HtmlGenerator that get HTML from a IDR_ id.
|
| +@interface IdrHtmlGenerator : NSObject<HtmlGenerator> {
|
| + @private
|
| + // The IDR_ constant.
|
| + int resourceId_;
|
| + // The encoding of the resource.
|
| + NSStringEncoding encoding_;
|
| +}
|
| +
|
| +// Init with the IDR_ constant that point to a UTF8 string.
|
| +- (id)initWithResourceId:(int)resourceId;
|
| +
|
| +// Init with the IDR_ constant that point to a string with the given encoding.
|
| +- (id)initWithResourceId:(int)resourceId encoding:(NSStringEncoding)encoding;
|
| +
|
| +@end
|
| +
|
| +// Displays html pages either located in the application bundle, the application
|
| +// data directory, or obtained by a |HtmlGenerator|.
|
| +@interface StaticHtmlViewController : NSObject
|
| +
|
| +// The web view that is displaying the content. It is lazily created.
|
| +@property(nonatomic, readonly) WKWebView* webView;
|
| +
|
| +// Returns the web controller scrollview.
|
| +- (UIScrollView*)scrollView;
|
| +
|
| +// Initialization method. |resource| is the location of the static page to
|
| +// display, relative to the root of the application bundle. |browserState| is
|
| +// the user browser state to use for loading resources and must not be null.
|
| +- (instancetype)initWithResource:(NSString*)resource
|
| + browserState:(web::BrowserState*)browserState;
|
| +
|
| +// Initialization method. |generator| will produce the html to display. Its
|
| +// generation method will be called each time reload is called. |browserState|
|
| +// is the user browser state to use for loading resources and must not be null.
|
| +- (instancetype)initWithGenerator:(id<HtmlGenerator>)generator
|
| + browserState:(web::BrowserState*)browserState;
|
| +
|
| +// Initialization method. |fileURL| is the location of the page in the
|
| +// application data directory. |resourcesRoot| is the root directory where the
|
| +// page pointed by |fileURL| can find its resources. Web view will get read
|
| +// access to the |resourcesRoot| directory. |fileURL| must be contained in
|
| +// |resourcesRoot|. |browserState| is the user browser state to use for
|
| +// loading resources and must not be null.
|
| +- (instancetype)initWithFileURL:(const GURL&)fileURL
|
| + allowingReadAccessToURL:(const GURL&)resourcesRoot
|
| + browserState:(web::BrowserState*)browserState;
|
| +
|
| +// Set the |loader| to use to allow navigation to external URL. The |referrer|
|
| +// is the URL that will be used as referrer for those navigations.
|
| +- (void)setLoader:(id<UrlLoader>)loader referrer:(const web::Referrer&)referrer;
|
| +
|
| +// Asynchronously executes the supplied JavaScript. Calls |completionHandler|
|
| +// with results of the execution. If the controller cannot execute JS at the
|
| +// moment, |completionHandler| is called with an NSError. The
|
| +// |completionHandler| can be nil.
|
| +- (void)executeJavaScript:(NSString*)script
|
| + completionHandler:(web::JavaScriptResultBlock)completionHandler;
|
| +
|
| +// The web page title. Will return nil if not available.
|
| +- (NSString*)title;
|
| +
|
| +// Reload the content of the web page.
|
| +- (void)reload;
|
| +
|
| +// Causes the page to start loading immediately if there is a pending load;
|
| +// normally if the web view has been paged out for memory reasons, loads are
|
| +// started lazily the next time the view is displayed. This can be called to
|
| +// bypass the lazy behavior. This is equivalent to calling -webView, but should
|
| +// be used when deliberately pre-triggering a load without displaying.
|
| +- (void)triggerPendingLoad;
|
| +
|
| +// Called when memory is low. Release anything (such as views) that can be
|
| +// easily re-created to free up RAM.
|
| +- (void)handleLowMemory;
|
| +
|
| +// Returns YES if there is currently a live view in the tab (e.g., the view
|
| +// hasn't been discarded due to low memory).
|
| +// NOTE: This should be used for metrics-gathering only; for any other purpose
|
| +// callers should not know or care whether the view is live.
|
| +- (BOOL)isViewAlive;
|
| +
|
| +// Set a |CRWNativeContentDelegate| that will be notified each time the title of
|
| +// the page changes.
|
| +- (void)setDelegate:(id<CRWNativeContentDelegate>)delegate;
|
| +
|
| +// Enables or disables the scrolling in the native view.
|
| +- (void)setScrollEnabled:(BOOL)enabled;
|
| +
|
| +@end
|
| +
|
| +#endif // IOS_CHROME_BROWSER_UI_STATIC_CONTENT_STATIC_HTML_VIEW_CONTROLLER_H_
|
|
|