Changeset 62964 in webkit


Ignore:
Timestamp:
Jul 9, 2010 10:14:03 AM (14 years ago)
Author:
andersca@apple.com
Message:

Instantiate Netscape plug-ins, pass geometry information to Plugin
https://bugs.webkit.org/show_bug.cgi?id=41960

Reviewed by Simon Fraser.

WebCore:

  • WebCore.exp.in:

Export ScrollView::contentsToWindow.

WebKit2:

  • WebProcess/Plugins/Netscape/NetscapeBrowserFuncs.cpp:

Handle NPNVsupportsCoreGraphicsBool and NPNVsupportsCocoaBool.

  • WebProcess/Plugins/Netscape/NetscapePlugin.cpp:

(WebKit::NetscapePlugin::NetscapePlugin):
Set npp.ndata.

(WebKit::NetscapePlugin::initialize):
Try to instantiate the plug-in by calling NPP_New.

  • WebProcess/Plugins/Netscape/NetscapePlugin.h:

Store the NetscapePluginModule and the NPP struct.

  • WebProcess/Plugins/Netscape/NetscapePluginModule.h:

Add a getter for the NPPluginFuncs vtable.

  • WebProcess/Plugins/PluginView.cpp:

(WebKit::PluginView::frameRectsChanged):
Make sure to call viewGeometryDidChange.

(WebKit::PluginView::setParent):
Ditto.

(WebKit::PluginView::viewGeometryDidChange):
Convert the frame rect to window coordinates and pass it to the plug-in.

  • WebProcess/Plugins/PluginView.h:

Add function declarations.

Location:
trunk
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r62963 r62964  
     12010-07-09  Anders Carlsson  <andersca@apple.com>
     2
     3        Reviewed by Simon Fraser.
     4
     5        Instantiate Netscape plug-ins, pass geometry information to Plugin
     6        https://bugs.webkit.org/show_bug.cgi?id=41960
     7
     8        * WebCore.exp.in:
     9        Export ScrollView::contentsToWindow.
     10
    1112010-07-09  Patrick Gansterer  <paroga@paroga.com>
    212
  • trunk/WebCore/WebCore.exp.in

    r62876 r62964  
    778778__ZNK7WebCore10ScrollView12documentViewEv
    779779__ZNK7WebCore10ScrollView14scrollbarModesERNS_13ScrollbarModeES2_
     780__ZNK7WebCore10ScrollView16contentsToWindowERKNS_7IntRectE
    780781__ZNK7WebCore10ScrollView18visibleContentRectEb
    781782__ZNK7WebCore11CachedImage5imageEv
  • trunk/WebKit2/ChangeLog

    r62959 r62964  
     12010-07-09  Anders Carlsson  <andersca@apple.com>
     2
     3        Reviewed by Simon Fraser.
     4
     5        Instantiate Netscape plug-ins, pass geometry information to Plugin
     6        https://bugs.webkit.org/show_bug.cgi?id=41960
     7
     8        * WebProcess/Plugins/Netscape/NetscapeBrowserFuncs.cpp:
     9        Handle NPNVsupportsCoreGraphicsBool and NPNVsupportsCocoaBool.
     10
     11        * WebProcess/Plugins/Netscape/NetscapePlugin.cpp:
     12        (WebKit::NetscapePlugin::NetscapePlugin):
     13        Set npp.ndata.
     14
     15        (WebKit::NetscapePlugin::initialize):
     16        Try to instantiate the plug-in by calling NPP_New.
     17
     18        * WebProcess/Plugins/Netscape/NetscapePlugin.h:
     19        Store the NetscapePluginModule and the NPP struct.
     20
     21        * WebProcess/Plugins/Netscape/NetscapePluginModule.h:
     22        Add a getter for the NPPluginFuncs vtable.
     23
     24        * WebProcess/Plugins/PluginView.cpp:
     25        (WebKit::PluginView::frameRectsChanged):
     26        Make sure to call viewGeometryDidChange.
     27
     28        (WebKit::PluginView::setParent):
     29        Ditto.
     30
     31        (WebKit::PluginView::viewGeometryDidChange):
     32        Convert the frame rect to window coordinates and pass it to the plug-in.
     33
     34        * WebProcess/Plugins/PluginView.h:
     35        Add function declarations.
     36
    1372010-07-08  Diego Gonzalez  <diegohcg@webkit.org>
    238
  • trunk/WebKit2/WebProcess/Plugins/Netscape/NetscapeBrowserFuncs.cpp

    r62865 r62964  
    203203NPError NPN_GetValue(NPP instance, NPNVariable variable, void *value)
    204204{
    205     notImplemented();
    206     return NPERR_GENERIC_ERROR;
     205    switch (variable) {
     206#if PLATFORM(MAC)
     207        case NPNVsupportsCoreGraphicsBool:
     208            // Always claim to support the Core Graphics drawing model.
     209            *(NPBool *)value = true;
     210            break;
     211
     212        case NPNVsupportsCocoaBool:
     213            // Always claim to support the Cocoa event model.
     214            *(NPBool *)value = true;
     215            break;
     216#endif
     217        default:
     218            notImplemented();
     219            return NPERR_GENERIC_ERROR;
     220    }
     221
     222    return NPERR_NO_ERROR;
    207223}
    208224
  • trunk/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.cpp

    r62869 r62964  
    2626#include "NetscapePlugin.h"
    2727
     28#include <WebCore/IntRect.h>
     29
    2830using namespace WebCore;
    2931
     
    3133
    3234NetscapePlugin::NetscapePlugin(PassRefPtr<NetscapePluginModule> pluginModule)
     35    : m_pluginModule(pluginModule)
    3336{
     37    m_npp.ndata = this;
     38    m_npp.pdata = 0;
    3439}
    3540
     
    4045bool NetscapePlugin::initialize(const KURL&, const Vector<String>& paramNames, const Vector<String>& paramValues, const String& mimeType, bool loadManually)
    4146{
     47    uint16_t mode = loadManually ? NP_FULL : NP_EMBED;
     48   
     49    // FIXME: Pass arguments to NPP_New.
     50    NPError error = m_pluginModule->pluginFuncs().newp(0, &m_npp, mode, 0, 0, 0, 0);
     51    if (error != NPERR_NO_ERROR)
     52        return false;
     53
    4254    return true;
    4355}
  • trunk/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.h

    r62869 r62964  
    4848    virtual void paint(WebCore::GraphicsContext*, const WebCore::IntRect& dirtyRect);
    4949    virtual void geometryDidChange(const WebCore::IntRect& frameRect);
     50   
     51    RefPtr<NetscapePluginModule> m_pluginModule;
     52    NPP_t m_npp;
    5053};
    5154
  • trunk/WebKit2/WebProcess/Plugins/Netscape/NetscapePluginModule.h

    r62854 r62964  
    4141    static PassRefPtr<NetscapePluginModule> create(const WebCore::String& pluginPath);
    4242
     43    const NPPluginFuncs& pluginFuncs() const { return m_pluginFuncs; }
     44
    4345private:
    4446    explicit NetscapePluginModule(const WebCore::String& pluginPath);
  • trunk/WebKit2/WebProcess/Plugins/PluginView.cpp

    r62813 r62964  
    2828#include "Plugin.h"
    2929#include <WebCore/GraphicsContext.h>
     30#include <WebCore/ScrollView.h>
    3031
    3132using namespace WebCore;
     
    6162}
    6263
     64
     65void PluginView::frameRectsChanged()
     66{
     67    Widget::frameRectsChanged();
     68    viewGeometryDidChange();
     69}
     70
     71void PluginView::setParent(ScrollView* scrollView)
     72{
     73    Widget::setParent(scrollView);
     74    viewGeometryDidChange();
     75}
     76
    6377void PluginView::viewGeometryDidChange()
    6478{
    65     m_plugin->geometryDidChange(frameRect());
     79    if (!parent())
     80        return;
     81
     82    IntRect frameRectInWindowCoordinates = parent()->contentsToWindow(frameRect());
     83   
     84    m_plugin->geometryDidChange(frameRectInWindowCoordinates);
    6685}
    6786
  • trunk/WebKit2/WebProcess/Plugins/PluginView.h

    r62886 r62964  
    5151    virtual void paint(WebCore::GraphicsContext*, const WebCore::IntRect&);
    5252    virtual void invalidateRect(const WebCore::IntRect&);
    53    
     53    virtual void frameRectsChanged();
     54    virtual void setParent(WebCore::ScrollView*);
     55
    5456    RefPtr<Plugin> m_plugin;
    5557};
Note: See TracChangeset for help on using the changeset viewer.