NetscapePluginUnix.cpp [plain text]
#include "config.h"
#include "NetscapePlugin.h"
#if PLUGIN_ARCHITECTURE(X11) && ENABLE(NETSCAPE_PLUGIN_API)
#include "NetscapePluginX11.h"
#include "WebEvent.h"
#include <WebCore/NotImplemented.h>
#include <WebCore/PlatformDisplay.h>
using namespace WebCore;
namespace WebKit {
void NetscapePlugin::platformPreInitialize()
{
}
bool NetscapePlugin::platformPostInitialize()
{
#if PLATFORM(X11)
if (PlatformDisplay::sharedDisplay().type() == PlatformDisplay::Type::X11) {
m_impl = NetscapePluginX11::create(*this);
if (!m_impl)
return false;
}
#endif
if (!m_impl)
return !m_isWindowed;
m_npWindow.type = m_impl->windowType();
m_npWindow.window = m_impl->window();
m_npWindow.ws_info = m_impl->windowSystemInfo();
callSetWindow();
return true;
}
void NetscapePlugin::platformDestroy()
{
m_impl = nullptr;
}
bool NetscapePlugin::platformInvalidate(const IntRect&)
{
notImplemented();
return false;
}
void NetscapePlugin::platformGeometryDidChange()
{
if (!m_impl)
return;
m_impl->geometryDidChange();
}
void NetscapePlugin::platformVisibilityDidChange()
{
if (!m_isWindowed || !m_impl)
return;
m_impl->visibilityDidChange();
}
void NetscapePlugin::platformPaint(GraphicsContext& context, const IntRect& dirtyRect, bool )
{
if (m_isWindowed || !m_impl)
return;
if (!m_isStarted) {
return;
}
m_impl->paint(context, dirtyRect);
}
bool NetscapePlugin::platformHandleMouseEvent(const WebMouseEvent& event)
{
if (m_isWindowed || !m_impl)
return false;
if ((event.type() == WebEvent::MouseDown || event.type() == WebEvent::MouseUp)
&& event.button() == WebMouseEvent::RightButton
&& quirks().contains(PluginQuirks::IgnoreRightClickInWindowlessMode))
return false;
return m_impl->handleMouseEvent(event);
}
bool NetscapePlugin::platformHandleWheelEvent(const WebWheelEvent& event)
{
if (m_isWindowed || !m_impl)
return false;
return m_impl->handleWheelEvent(event);
}
void NetscapePlugin::platformSetFocus(bool focusIn)
{
if (m_isWindowed || !m_impl)
return;
m_impl->setFocus(focusIn);
}
bool NetscapePlugin::wantsPluginRelativeNPWindowCoordinates()
{
return true;
}
bool NetscapePlugin::platformHandleMouseEnterEvent(const WebMouseEvent& event)
{
if (m_isWindowed || !m_impl)
return false;
return m_impl->handleMouseEnterEvent(event);
}
bool NetscapePlugin::platformHandleMouseLeaveEvent(const WebMouseEvent& event)
{
if (m_isWindowed || !m_impl)
return false;
return m_impl->handleMouseLeaveEvent(event);
}
bool NetscapePlugin::platformHandleKeyboardEvent(const WebKeyboardEvent& event)
{
ASSERT(event.type() == WebEvent::KeyDown || event.type() == WebEvent::KeyUp);
if (m_isWindowed || !m_impl)
return false;
return m_impl->handleKeyboardEvent(event);
}
}
#endif // PLUGIN_ARCHITECTURE(X11) && ENABLE(NETSCAPE_PLUGIN_API)