Reviewed by Geoff.
authortomernic <tomernic@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 25 Apr 2006 21:24:57 +0000 (21:24 +0000)
committertomernic <tomernic@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 25 Apr 2006 21:24:57 +0000 (21:24 +0000)
commit3d7bad61aa29d844512fd4001a152ae6578076d2
treee485742b627cf776271cbc32e9776a3c03317667
parentaaff720236eaa49b3868c1db45385fdf864cf990
    Reviewed by Geoff.

        <rdar://problem/4472037>

        Private extensions to the WebPlugin interface.  A plugin may implement these methods to receive loading callbacks
        for its main resource.  Plug-ins that implement this SPI show better loading progress in the browser, can be saved
        to disk, and are more efficient by avoiding making duplicate GET or POST requests for the plug-in's main resource.

        I want to provide a solid API for plug-in networking, but time constraints require that I first provide this simple
        SPI for internal clients.

        * Plugins/WebPluginViewFactoryPrivate.h:
        Added a new plugin argument, WebPlugInShouldLoadMainResourceKey.  If YES, the plugin is responsible
        for loading its own content.  If NO, the plugin should wait for WebKit to send it the data via the
        new request-sharing SPI.

        * Plugins/WebPluginPrivate.h: Added.
        Request-sharing SPI.  See comments in code.

        * Plugins/WebPluginDocumentView.h:
        Hang onto the plugin view as an ivar so we can call the new resource loading methods on it.
        * Plugins/WebPluginDocumentView.m:
        (-[WebPluginDocumentView dealloc]):
        Release pluginView ivar.
        (-[WebPluginDocumentView setDataSource:]):
        Pass NO for WebPlugInShouldLoadMainResourceKey to indicate to the plugin that it should not
        load its own main resource -- the data will come from WebKit.  This is only necessary for plugin
        documents.  By the time we create the view for a plugin document, we already have fetched some
        of its main resource's data.  Embedded plugins do not have this issue because WebKit is not
        involved in loading their content.
        Call -webPlugInMainResourceDidReceivResponse: on the plugin if necessary.  This lets the plugin
        know how much and what kind of data is going to be received.
        (-[WebPluginDocumentView dataSourceUpdated:]):
        If the plugin implements the new request-sharing SPI, don't cancel the in-progress request.
        (-[WebPluginDocumentView receivedData:withDataSource:]):
        Forward to the plugin via the new request-sharing SPI.
        (-[WebPluginDocumentView receivedError:withDataSource:]):
        ditto
        (-[WebPluginDocumentView finishedLoadingWithDataSource:]):
        ditto

        * Plugins/WebPluginPackage.m:
        Added WebPlugInShouldLoadMainResourceKey, tweaked some style a bit.

        * WebCoreSupport/WebFrameBridge.m:
        (-[WebFrameBridge pluginViewWithPackage:attributeNames:attributeValues:baseURL:]):
        Pass YES for WebPlugInShouldLoadMainResourceKey.  Embedded plugins must load their own data.
        (-[WebFrameBridge viewForPluginWithURL:attributeNames:attributeValues:MIMEType:]):
        ditto

        * WebKit.xcodeproj/project.pbxproj:
        Added WebPluginPrivate.h

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@14060 268f45cc-cd09-0410-ab3c-d52691b4dbfc
WebKit/ChangeLog
WebKit/Plugins/WebPluginDocumentView.h
WebKit/Plugins/WebPluginDocumentView.m
WebKit/Plugins/WebPluginPackage.m
WebKit/Plugins/WebPluginPrivate.h [new file with mode: 0644]
WebKit/Plugins/WebPluginViewFactoryPrivate.h
WebKit/WebCoreSupport/WebFrameBridge.m
WebKit/WebKit.exp
WebKit/WebKit.xcodeproj/project.pbxproj