| /* |
| * Copyright (C) 2003, 2004, 2005, 2012 Apple Inc. All rights reserved. |
| * |
| * Redistribution and use in source and binary forms, with or without |
| * modification, are permitted provided that the following conditions |
| * are met: |
| * |
| * 1. Redistributions of source code must retain the above copyright |
| * notice, this list of conditions and the following disclaimer. |
| * 2. Redistributions in binary form must reproduce the above copyright |
| * notice, this list of conditions and the following disclaimer in the |
| * documentation and/or other materials provided with the distribution. |
| * 3. Neither the name of Apple Inc. ("Apple") nor the names of |
| * its contributors may be used to endorse or promote products derived |
| * from this software without specific prior written permission. |
| * |
| * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY |
| * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
| * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
| * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY |
| * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
| * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
| * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND |
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
| * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| */ |
| |
| #import <Foundation/Foundation.h> |
| #import <WebKitLegacy/WebDocument.h> |
| |
| @class NSMutableURLRequest; |
| @class NSURLConnection; |
| @class NSURLRequest; |
| @class NSURLResponse; |
| @class WebArchive; |
| @class WebFrame; |
| @class WebResource; |
| |
| /*! |
| @class WebDataSource |
| @discussion A WebDataSource represents the data associated with a web page. |
| A datasource has a WebDocumentRepresentation which holds an appropriate |
| representation of the data. WebDataSources manage a hierarchy of WebFrames. |
| WebDataSources are typically related to a view by their containing WebFrame. |
| */ |
| @interface WebDataSource : NSObject |
| { |
| @package |
| void *_private; |
| } |
| |
| /*! |
| @method initWithRequest: |
| @abstract The designated initializer for WebDataSource. |
| @param request The request to use in creating a datasource. |
| @result Returns an initialized WebDataSource. |
| */ |
| - (instancetype)initWithRequest:(NSURLRequest *)request; |
| |
| /*! |
| @property data |
| @abstract Returns the raw data associated with the datasource. Returns nil |
| if the datasource hasn't loaded any data. |
| @discussion The data will be incomplete until the datasource has completely loaded. |
| */ |
| @property (nonatomic, readonly, copy) NSData *data; |
| |
| /*! |
| @property representation |
| @abstract The representation associated with this datasource. |
| Returns nil if the datasource hasn't created its representation. |
| @discussion A representation holds a type specific representation |
| of the datasource's data. The representation class is determined by mapping |
| a MIME type to a class. The representation is created once the MIME type |
| of the datasource content has been determined. |
| */ |
| @property (nonatomic, readonly, strong) id<WebDocumentRepresentation> representation; |
| |
| /*! |
| @property webFrame |
| @abstract The frame that represents this data source. |
| */ |
| @property (nonatomic, readonly, strong) WebFrame *webFrame; |
| |
| /*! |
| @property initialRequest |
| @abstract A reference to the original request that created the |
| datasource. This request will be unmodified by WebKit. |
| */ |
| @property (nonatomic, readonly, strong) NSURLRequest *initialRequest; |
| |
| /*! |
| @property request |
| @abstract The request that was used to create this datasource. |
| */ |
| @property (nonatomic, readonly, strong) NSMutableURLRequest *request; |
| |
| /*! |
| @property response |
| @abstract The NSURLResponse for the data source. |
| */ |
| @property (nonatomic, readonly, strong) NSURLResponse *response; |
| |
| /*! |
| @property textEncodingName |
| @abstract Returns either the override encoding, as set on the WebView for this |
| dataSource or the encoding from the response. |
| */ |
| @property (nonatomic, readonly, copy) NSString *textEncodingName; |
| |
| /*! |
| @property isLoading |
| @abstract Returns YES if there are any pending loads. |
| */ |
| @property (nonatomic, getter=isLoading, readonly) BOOL loading; |
| |
| /*! |
| @property pageTitle |
| @abstract The page title or nil. |
| */ |
| @property (nonatomic, readonly, copy) NSString *pageTitle; |
| |
| /*! |
| @property unreachableURL |
| @abstract The unreachableURL for which this dataSource is showing alternate content, or nil. |
| @discussion This will be non-nil only for dataSources created by calls to the |
| WebFrame method loadAlternateHTMLString:baseURL:forUnreachableURL:. |
| */ |
| @property (nonatomic, readonly, strong) NSURL *unreachableURL; |
| |
| /*! |
| @property webArchive |
| @abstract A WebArchive representing the data source, its subresources and child frames. |
| @description This method constructs a WebArchive using the original downloaded data. |
| In the case of HTML, if the current state of the document is preferred, webArchive should be |
| called on the DOM document instead. |
| */ |
| @property (nonatomic, readonly, strong) WebArchive *webArchive; |
| |
| /*! |
| @property mainResource |
| @abstract A WebResource representing the data source. |
| @description This method constructs a WebResource using the original downloaded data. |
| This method can be used to construct a WebArchive in case the archive returned by |
| WebDataSource's webArchive isn't sufficient. |
| */ |
| @property (nonatomic, readonly, strong) WebResource *mainResource; |
| |
| /*! |
| @property subresources |
| @abstract All the subresources associated with the data source. |
| @description The returned array only contains subresources that have fully downloaded. |
| */ |
| @property (nonatomic, readonly, copy) NSArray *subresources; |
| |
| /*! |
| method subresourceForURL: |
| @abstract Returns a subresource for a given URL. |
| @param URL The URL of the subresource. |
| @description Returns non-nil if the data source has fully downloaded a subresource with the given URL. |
| */ |
| - (WebResource *)subresourceForURL:(NSURL *)URL; |
| |
| /*! |
| @method addSubresource: |
| @abstract Adds a subresource to the data source. |
| @param subresource The subresource to be added. |
| @description addSubresource: adds a subresource to the data source's list of subresources. |
| Later, if something causes the data source to load the URL of the subresource, the data source |
| will load the data from the subresource instead of from the network. For example, if one wants to add |
| an image that is already downloaded to a web page, addSubresource: can be called so that the data source |
| uses the downloaded image rather than accessing the network. NOTE: If the data source already has a |
| subresource with the same URL, addSubresource: will replace it. |
| */ |
| - (void)addSubresource:(WebResource *)subresource; |
| |
| @end |