Changeset 38371 in webkit


Ignore:
Timestamp:
Nov 13, 2008 7:20:43 AM (15 years ago)
Author:
vestbo@webkit.org
Message:

2008-11-12 Tor Arne Vestbø <tavestbo@trolltech.com>

Reviewed by Simon Hausmann.

Inital implementation of PluginPackage and PluginView for Mac NPAPI support in WebCore

Currently only used by QtWebKit. See also:

https://bugs.webkit.org/show_bug.cgi?id=21427

Location:
trunk/WebCore
Files:
2 added
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r38366 r38371  
     12008-11-12  Tor Arne Vestbø  <tavestbo@trolltech.com>
     2
     3        Reviewed by Simon Hausmann.
     4
     5        Inital implementation of PluginPackage and PluginView for Mac NPAPI support in WebCore
     6
     7        Currently only used by QtWebKit. See also:
     8
     9        https://bugs.webkit.org/show_bug.cgi?id=21427
     10
     11        * WebCore.pro:
     12        * platform/qt/TemporaryLinkStubs.cpp:
     13        (PluginView::userAgentStatic):
     14        (PluginView::getValueStatic):
     15        * plugins/PluginView.cpp:
     16        (WebCore::PluginView::handleEvent):
     17        (WebCore::PluginView::setValue):
     18        (WebCore::PluginView::PluginView):
     19        * plugins/PluginView.h:
     20        (WebCore::PluginView::setPlatformPluginWidget):
     21        * plugins/mac/PluginPackageMac.cpp: Added.
     22        (WebCore::PluginPackage::determineQuirks):
     23        (WebCore::readPListFile):
     24        (WebCore::stringListFromResourceId):
     25        (WebCore::PluginPackage::fetchInfo):
     26        (WebCore::PluginPackage::load):
     27        (WebCore::PluginPackage::hash):
     28        (WebCore::PluginPackage::equal):
     29        (WebCore::PluginPackage::compareFileVersion):
     30        * plugins/mac/PluginViewMac.cpp: Added.
     31        (WebCore::nativeWindowFor):
     32        (WebCore::cgHandleFor):
     33        (WebCore::topLevelOffsetFor):
     34        (WebCore::PluginView::init):
     35        (WebCore::PluginView::~PluginView):
     36        (WebCore::PluginView::stop):
     37        (WebCore::PluginView::getValueStatic):
     38        (WebCore::PluginView::getValue):
     39        (WebCore::PluginView::setParent):
     40        (WebCore::PluginView::show):
     41        (WebCore::PluginView::hide):
     42        (WebCore::PluginView::setFocus):
     43        (WebCore::PluginView::setParentVisible):
     44        (WebCore::PluginView::setNPWindowRect):
     45        (WebCore::PluginView::setNPWindowIfNeeded):
     46        (WebCore::PluginView::updatePluginWidget):
     47        (WebCore::PluginView::paint):
     48        (WebCore::PluginView::invalidateRect):
     49        (WebCore::PluginView::invalidateRegion):
     50        (WebCore::PluginView::forceRedraw):
     51        (WebCore::PluginView::handleMouseEvent):
     52        (WebCore::PluginView::handleKeyboardEvent):
     53        (WebCore::PluginView::nullEventTimerFired):
     54        (WebCore::modifiersForEvent):
     55        (WebCore::PluginView::globalMousePosForPlugin):
     56        (WebCore::PluginView::dispatchNPEvent):
     57        (WebCore::PluginView::userAgent):
     58        (WebCore::PluginView::userAgentStatic):
     59        (WebCore::PluginView::handlePostReadFile):
     60
    1612008-11-12  Alexey Proskuryakov  <ap@webkit.org>
    262
  • trunk/WebCore/WebCore.pro

    r38346 r38371  
    7373!contains(DEFINES, ENABLE_SVG_AS_IMAGE=.): DEFINES += ENABLE_SVG_AS_IMAGE=1
    7474!contains(DEFINES, ENABLE_SVG_USE=.): DEFINES += ENABLE_SVG_USE=1
     75
     76# HTML5 media support
    7577contains(QT_CONFIG, phonon):DEFINES += ENABLE_VIDEO=1
    7678else:DEFINES += ENABLE_VIDEO=0
    7779
    78 unix|win32-*:!mac:!embedded:!wince*:!symbian {
     80# Nescape plugins support (NPAPI)
     81unix|win32-*:!embedded:!wince*:!symbian {
    7982    DEFINES += ENABLE_NETSCAPE_PLUGIN_API=1
    80     unix: DEFINES += XP_UNIX
    8183} else {
    8284    DEFINES += ENABLE_NETSCAPE_PLUGIN_API=0
     
    11051107    else: SOURCES += platform/qt/SystemTimeQt.cpp
    11061108
     1109    mac {
     1110        SOURCES += \
     1111            platform/text/cf/StringCF.cpp \
     1112            platform/text/cf/StringImplCF.cpp
     1113    }
     1114
    11071115    win32-* {
    11081116        LIBS += -lgdi32
     
    11271135contains(DEFINES, ENABLE_NETSCAPE_PLUGIN_API=1) {
    11281136
    1129         SOURCES += plugins/npapi.cpp
    1130 
    1131         unix:!mac {
     1137    SOURCES += plugins/npapi.cpp
     1138
     1139    unix {
     1140        mac {
     1141            SOURCES += \
     1142                plugins/mac/PluginPackageMac.cpp \
     1143                plugins/mac/PluginViewMac.cpp
     1144            OBJECTIVE_SOURCES += \
     1145                platform/text/mac/StringImplMac.mm \
     1146                platform/mac/WebCoreNSStringExtras.mm
     1147            INCLUDEPATH += platform/mac
     1148            # Note: XP_MACOSX is defined in npapi.h
     1149        } else {
    11321150            SOURCES += \
    11331151                plugins/qt/PluginPackageQt.cpp \
    11341152                plugins/qt/PluginViewQt.cpp
     1153            DEFINES += XP_UNIX
    11351154        }
    1136 
    1137         win32-* {
    1138             INCLUDEPATH += $$PWD/plugins/win
    1139 
    1140             SOURCES += page/win/PageWin.cpp \
    1141                        plugins/win/PluginDatabaseWin.cpp \
    1142                        plugins/win/PluginPackageWin.cpp \
    1143                        plugins/win/PluginMessageThrottlerWin.cpp \
    1144                        plugins/win/PluginViewWin.cpp
    1145 
    1146             LIBS += \
    1147                 -ladvapi32 \
    1148                 -lgdi32 \
    1149                 -lshell32 \
    1150                 -lshlwapi \
    1151                 -luser32 \
    1152                 -lversion
    1153         }
     1155    }
     1156
     1157    win32-* {
     1158        INCLUDEPATH += $$PWD/plugins/win
     1159
     1160        SOURCES += page/win/PageWin.cpp \
     1161                   plugins/win/PluginDatabaseWin.cpp \
     1162                   plugins/win/PluginPackageWin.cpp \
     1163                   plugins/win/PluginMessageThrottlerWin.cpp \
     1164                   plugins/win/PluginViewWin.cpp
     1165
     1166        LIBS += \
     1167            -ladvapi32 \
     1168            -lgdi32 \
     1169            -lshell32 \
     1170            -lshlwapi \
     1171            -luser32 \
     1172            -lversion
     1173    }
    11541174
    11551175}
  • trunk/WebCore/platform/qt/TemporaryLinkStubs.cpp

    r38224 r38371  
    7575using namespace WebCore;
    7676
    77 #if !defined(Q_WS_X11) && !defined(Q_WS_WIN)
     77#if (!defined(Q_WS_X11) && !defined(Q_WS_WIN) && !defined(Q_WS_MAC32)) || defined(Q_OS_WINCE)
    7878
    7979bool PluginPackage::fetchInfo() { notImplemented(); return false; }
     
    8484void PluginView::setNPWindowRect(const IntRect&) { notImplemented(); }
    8585const char* PluginView::userAgent() { notImplemented(); return 0; }
     86#if ENABLE(NETSCAPE_PLUGIN_API)
     87const char* PluginView::userAgentStatic() { notImplemented(); return 0; }
     88#endif
    8689void PluginView::invalidateRect(NPRect*) { notImplemented(); }
    8790void PluginView::invalidateRect(const IntRect&) { notImplemented(); }
     
    99102NPError PluginView::handlePostReadFile(Vector<char>&, uint32, const char*) { notImplemented(); return NPERR_GENERIC_ERROR; }
    100103NPError PluginView::getValue(NPNVariable, void*) { notImplemented(); return NPERR_GENERIC_ERROR; }
     104#if ENABLE(NETSCAPE_PLUGIN_API)
     105NPError PluginView::getValueStatic(NPNVariable, void*) { return NPERR_GENERIC_ERROR; }
     106#endif
    101107PluginView::~PluginView() {}
    102108#endif
  • trunk/WebCore/plugins/PluginView.cpp

    r38094 r38371  
    420420        m_isTransparent = value;
    421421        return NPERR_NO_ERROR;
     422#if defined(XP_MACOSX)
     423    case NPPVpluginDrawingModel:
     424        return NPERR_NO_ERROR;
     425    case NPPVpluginEventModel:
     426        return NPERR_NO_ERROR;
     427#endif
    422428    default:
    423429        notImplemented();
     
    541547    , m_paramNames(0)
    542548    , m_paramValues(0)
     549#if defined(XP_MACOSX)
     550    , m_isWindowed(false)
     551#else
    543552    , m_isWindowed(true)
     553#endif
    544554    , m_isTransparent(false)
    545555    , m_haveInitialized(false)
     
    555565    , m_isCallingPluginWndProc(false)
    556566#endif
    557 #if PLATFORM(WIN_OS) && PLATFORM(QT)
     567#if (PLATFORM(QT) && PLATFORM(WIN_OS)) || defined(XP_MACOSX)
    558568    , m_window(0)
    559569#endif
  • trunk/WebCore/plugins/PluginView.h

    r37223 r38371  
    264264#endif
    265265
    266 #if PLATFORM(WIN_OS) && PLATFORM(QT)
    267         // Only under Qt on Windows, the plugin widget (HWND) does not match the native widget (QWidget).
    268         PlatformPluginWidget m_window; // for windowed plug-ins
     266#if (PLATFORM(QT) && PLATFORM(WIN_OS)) || defined(XP_MACOSX)
     267        // On Mac OSX and Qt/Windows the plugin does not have its own native widget,
     268        // but is using the containing window as its reference for positioning/painting.
     269        PlatformPluginWidget m_window;
    269270public:
    270271        PlatformPluginWidget platformPluginWidget() const { return m_window; }
     272        void setPlatformPluginWidget(PlatformPluginWidget widget) { m_window = widget; }
    271273#else
    272274public:
     
    276278private:
    277279
     280#if defined(XP_MACOSX)
     281        NP_CGContext m_npCgContext;
     282        OwnPtr<Timer<PluginView> > m_nullEventTimer;
     283
     284        void setNPWindowIfNeeded();
     285        void nullEventTimerFired(Timer<PluginView>*);
     286        Point globalMousePosForPlugin() const;
     287#endif
     288
    278289        mutable IntRect m_clipRect; // The clip rect to apply to a windowed plug-in
    279290        mutable IntRect m_windowRect; // Our window rect.
Note: See TracChangeset for help on using the changeset viewer.