Home | History | Annotate | Download | only in Interfaces
      1 /*
      2  * Copyright (C) 2006, 2007, 2008 Apple Inc.  All rights reserved.
      3  *
      4  * Redistribution and use in source and binary forms, with or without
      5  * modification, are permitted provided that the following conditions
      6  * are met:
      7  * 1. Redistributions of source code must retain the above copyright
      8  *    notice, this list of conditions and the following disclaimer.
      9  * 2. Redistributions in binary form must reproduce the above copyright
     10  *    notice, this list of conditions and the following disclaimer in the
     11  *    documentation and/or other materials provided with the distribution.
     12  *
     13  * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
     14  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     16  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
     17  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
     18  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
     19  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
     20  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
     21  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     22  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     23  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     24  */
     25 
     26 #ifndef DO_NO_IMPORTS
     27 import "oaidl.idl";
     28 import "ocidl.idl";
     29 import "IWebMutableURLRequest.idl";
     30 import "IWebURLResponse.idl";
     31 import "IWebResource.idl";
     32 import "IWebArchive.idl";
     33 import "IWebDocument.idl";
     34 import "IWebFrame.idl";
     35 #endif
     36 
     37 interface IWebMutableURLRequest;
     38 interface IWebURLConnection;
     39 interface IWebURLRequest;
     40 interface IWebURLResponse;
     41 interface IWebArchive;
     42 interface IWebDataSourcePrivate;
     43 interface IWebError;
     44 interface IWebFrame;
     45 interface IWebResource;
     46 
     47 interface IWebDocumentRepresentation;
     48 
     49 /*!
     50     @class WebDataSource
     51     @discussion A WebDataSource represents the data associated with a web page.
     52     A datasource has a WebDocumentRepresentation which holds an appropriate
     53     representation of the data.  WebDataSources manage a hierarchy of WebFrames.
     54     WebDataSources are typically related to a view by their containing WebFrame.
     55 */
     56 [
     57     object,
     58     oleautomation,
     59     uuid(5221A975-AE09-4a7b-A4DF-E3B1B5F38A21),
     60     pointer_default(unique)
     61 ]
     62 interface IWebDataSource : IUnknown
     63 {
     64     /*!
     65         @method initWithRequest:
     66         @abstract The designated initializer for WebDataSource.
     67         @param request The request to use in creating a datasource.
     68         @result Returns an initialized WebDataSource.
     69         - (id)initWithRequest:(NSURLRequest *)request;
     70     */
     71     HRESULT initWithRequest([in] IWebURLRequest* request);
     72 
     73     /*!
     74         @method data
     75         @discussion The data will be incomplete until the datasource has completely loaded.
     76         @result Returns the raw data associated with the datasource.  Returns nil
     77         if the datasource hasn't loaded any data.
     78         - (NSData *)data;
     79     */
     80     HRESULT data([out, retval] IStream** stream);
     81 
     82     /*!
     83         @method representation
     84         @discussion A representation holds a type specific representation
     85         of the datasource's data.  The representation class is determined by mapping
     86         a MIME type to a class.  The representation is created once the MIME type
     87         of the datasource content has been determined.
     88         @result Returns the representation associated with this datasource.
     89         Returns nil if the datasource hasn't created it's representation.
     90         - (id <WebDocumentRepresentation>)representation;
     91     */
     92     HRESULT representation([out, retval] IWebDocumentRepresentation** rep);
     93 
     94     /*!
     95         @method webFrame
     96         @result Return the frame that represents this data source.
     97         - (WebFrame *)webFrame;
     98     */
     99     HRESULT webFrame([out, retval] IWebFrame** frame);
    100 
    101     /*!
    102         @method initialRequest
    103         @result Returns a reference to the original request that created the
    104         datasource.  This request will be unmodified by WebKit.
    105         - (NSURLRequest *)initialRequest;
    106     */
    107     HRESULT initialRequest([out, retval] IWebURLRequest** request);
    108 
    109     /*!
    110         @method request
    111         @result Returns the request that was used to create this datasource.
    112         - (NSMutableURLRequest *)request;
    113     */
    114     HRESULT request([out, retval] IWebMutableURLRequest** request);
    115 
    116     /*!
    117         @method response
    118         @result returns the WebResourceResponse for the data source.
    119         - (NSURLResponse *)response;
    120     */
    121     HRESULT response([out, retval] IWebURLResponse** response);
    122 
    123     /*!
    124         @method textEncodingName
    125         @result Returns either the override encoding, as set on the WebView for this
    126         dataSource or the encoding from the response.
    127         - (NSString *)textEncodingName;
    128     */
    129     HRESULT textEncodingName([out, retval] BSTR* name);
    130 
    131     /*!
    132         @method isLoading
    133         @discussion Returns YES if there are any pending loads.
    134         - (BOOL)isLoading;
    135     */
    136     HRESULT isLoading([out, retval] BOOL* loading);
    137 
    138     /*!
    139         @method pageTitle
    140         @result Returns nil or the page title.
    141         - (NSString *)pageTitle;
    142     */
    143     HRESULT pageTitle([out, retval] BSTR* title);
    144 
    145     /*!
    146         @method unreachableURL
    147         @discussion This will be non-nil only for dataSources created by calls to the
    148         WebFrame method loadAlternateHTMLString:baseURL:forUnreachableURL:.
    149         @result returns the unreachableURL for which this dataSource is showing alternate content, or nil
    150         - (NSURL *)unreachableURL;
    151     */
    152     HRESULT unreachableURL([out, retval] BSTR* url);
    153 
    154     /*!
    155         @method webArchive
    156         @result A WebArchive representing the data source, its subresources and child frames.
    157         @description This method constructs a WebArchive using the original downloaded data.
    158         In the case of HTML, if the current state of the document is preferred, webArchive should be
    159         called on the DOM document instead.
    160         - (WebArchive *)webArchive;
    161     */
    162     HRESULT webArchive([out, retval] IWebArchive** archive);
    163 
    164     /*!
    165         @method mainResource
    166         @result A WebResource representing the data source.
    167         @description This method constructs a WebResource using the original downloaded data.
    168         This method can be used to construct a WebArchive in case the archive returned by
    169         WebDataSource's webArchive isn't sufficient.
    170         - (WebResource *)mainResource;
    171     */
    172     HRESULT mainResource([out, retval] IWebResource** resource);
    173 
    174     /*!
    175         @method subresources
    176         @abstract Returns all the subresources associated with the data source.
    177         @description The returned array only contains subresources that have fully downloaded.
    178         - (NSArray *)subresources;
    179     */
    180     HRESULT subresources([out, retval] IEnumVARIANT** enumResources);
    181 
    182     /*!
    183         method subresourceForURL:
    184         @abstract Returns a subresource for a given URL.
    185         @param URL The URL of the subresource.
    186         @description Returns non-nil if the data source has fully downloaded a subresource with the given URL.
    187         - (WebResource *)subresourceForURL:(NSURL *)URL;
    188     */
    189     HRESULT subresourceForURL([in] BSTR url, [out, retval] IWebResource** resource);
    190 
    191     /*!
    192         @method addSubresource:
    193         @abstract Adds a subresource to the data source.
    194         @param subresource The subresource to be added.
    195         @description addSubresource: adds a subresource to the data source's list of subresources.
    196         Later, if something causes the data source to load the URL of the subresource, the data source
    197         will load the data from the subresource instead of from the network. For example, if one wants to add
    198         an image that is already downloaded to a web page, addSubresource: can be called so that the data source
    199         uses the downloaded image rather than accessing the network. NOTE: If the data source already has a
    200         subresource with the same URL, addSubresource: will replace it.
    201         - (void)addSubresource:(WebResource *)subresource;
    202     */
    203     HRESULT addSubresource([in] IWebResource* subresource);
    204 }
    205 
    206 [
    207     object,
    208     oleautomation,
    209     uuid(4B80B7D4-98D7-4a80-AF46-2AF84B2F2E8F),
    210     pointer_default(unique)
    211 ]
    212 interface IWebDataSourcePrivate : IUnknown
    213 {
    214     HRESULT overrideEncoding([out, retval] BSTR* encoding);
    215     HRESULT setOverrideEncoding([in] BSTR encoding);
    216     HRESULT mainDocumentError([out, retval] IWebError** error);
    217     HRESULT setDeferMainResourceDataLoad([in] BOOL flag);
    218 }
    219