diff options
author | Steve Block <steveblock@google.com> | 2010-04-27 16:31:00 +0100 |
---|---|---|
committer | Steve Block <steveblock@google.com> | 2010-05-11 14:42:12 +0100 |
commit | dcc8cf2e65d1aa555cce12431a16547e66b469ee (patch) | |
tree | 92a8d65cd5383bca9749f5327fb5e440563926e6 /WebCore/plugins/symbian | |
parent | ccac38a6b48843126402088a309597e682f40fe6 (diff) | |
download | external_webkit-dcc8cf2e65d1aa555cce12431a16547e66b469ee.zip external_webkit-dcc8cf2e65d1aa555cce12431a16547e66b469ee.tar.gz external_webkit-dcc8cf2e65d1aa555cce12431a16547e66b469ee.tar.bz2 |
Merge webkit.org at r58033 : Initial merge by git
Change-Id: If006c38561af287c50cd578d251629b51e4d8cd1
Diffstat (limited to 'WebCore/plugins/symbian')
-rw-r--r-- | WebCore/plugins/symbian/PluginContainerSymbian.cpp | 8 | ||||
-rw-r--r-- | WebCore/plugins/symbian/PluginContainerSymbian.h | 7 | ||||
-rw-r--r-- | WebCore/plugins/symbian/PluginPackageSymbian.cpp | 2 | ||||
-rw-r--r-- | WebCore/plugins/symbian/PluginViewSymbian.cpp | 79 |
4 files changed, 35 insertions, 61 deletions
diff --git a/WebCore/plugins/symbian/PluginContainerSymbian.cpp b/WebCore/plugins/symbian/PluginContainerSymbian.cpp index aece0e4..b839870 100644 --- a/WebCore/plugins/symbian/PluginContainerSymbian.cpp +++ b/WebCore/plugins/symbian/PluginContainerSymbian.cpp @@ -32,12 +32,12 @@ using namespace WebCore; -PluginContainerSymbian::PluginContainerSymbian(PluginView* view, QWidget* parent) - : m_parent(parent) +PluginContainerSymbian::PluginContainerSymbian(PluginView* view, QWidget* parent, QGraphicsProxyWidget* proxy) + : QWidget(parent) , m_pluginView(view) + , m_proxy(proxy) , m_hasPendingGeometryChange(false) { - setParent(m_parent); } PluginContainerSymbian::~PluginContainerSymbian() @@ -62,7 +62,7 @@ void PluginContainerSymbian::adjustGeometry() } } -void PluginContainerSymbian::focusInEvent(QFocusEvent* event) +void PluginContainerSymbian::focusInEvent(QFocusEvent*) { if (Page* page = m_pluginView->parentFrame()->page()) page->focusController()->setActive(true); diff --git a/WebCore/plugins/symbian/PluginContainerSymbian.h b/WebCore/plugins/symbian/PluginContainerSymbian.h index fce4a71..fead872 100644 --- a/WebCore/plugins/symbian/PluginContainerSymbian.h +++ b/WebCore/plugins/symbian/PluginContainerSymbian.h @@ -22,6 +22,8 @@ #include <QWidget> +class QGraphicsProxyWidget; + namespace WebCore { class PluginView; @@ -29,18 +31,19 @@ namespace WebCore { class PluginContainerSymbian : public QWidget { Q_OBJECT public: - PluginContainerSymbian(PluginView*, QWidget* parent); + PluginContainerSymbian(PluginView*, QWidget* parent, QGraphicsProxyWidget* proxy = 0); ~PluginContainerSymbian(); void requestGeometry(const QRect&, const QRegion& clip = QRegion()); void adjustGeometry(); + QGraphicsProxyWidget* proxy() { return m_proxy; } protected: virtual void focusInEvent(QFocusEvent*); virtual void focusOutEvent(QFocusEvent*); private: PluginView* m_pluginView; - QWidget* m_parent; + QGraphicsProxyWidget* m_proxy; QRect m_windowRect; QRegion m_clipRegion; bool m_hasPendingGeometryChange; diff --git a/WebCore/plugins/symbian/PluginPackageSymbian.cpp b/WebCore/plugins/symbian/PluginPackageSymbian.cpp index 44f8152..d30f80e 100644 --- a/WebCore/plugins/symbian/PluginPackageSymbian.cpp +++ b/WebCore/plugins/symbian/PluginPackageSymbian.cpp @@ -19,13 +19,13 @@ #include "config.h" #include "PluginPackage.h" -#include "CString.h" #include "MIMETypeRegistry.h" #include "npinterface.h" #include "npruntime_impl.h" #include "PluginDatabase.h" #include "PluginDebug.h" #include <QPluginLoader> +#include <wtf/text/CString.h> namespace WebCore { diff --git a/WebCore/plugins/symbian/PluginViewSymbian.cpp b/WebCore/plugins/symbian/PluginViewSymbian.cpp index 3492868..bae3b7f 100644 --- a/WebCore/plugins/symbian/PluginViewSymbian.cpp +++ b/WebCore/plugins/symbian/PluginViewSymbian.cpp @@ -52,7 +52,9 @@ #include "npfunctions.h" #include "npinterface.h" #include "npruntime_impl.h" +#include "qgraphicswebview.h" #include "runtime_root.h" +#include <QGraphicsProxyWidget> #include <QKeyEvent> #include <QPixmap> #include <QRegion> @@ -85,6 +87,7 @@ void PluginView::updatePluginWidget() IntRect oldClipRect = m_clipRect; m_windowRect = IntRect(frameView->contentsToWindow(frameRect().location()), frameRect().size()); + m_clipRect = windowClipRect(); m_clipRect.move(-m_windowRect.x(), -m_windowRect.y()); if (m_windowRect == oldWindowRect && m_clipRect == oldClipRect) @@ -307,66 +310,27 @@ NPError PluginView::handlePostReadFile(Vector<char>& buffer, uint32 len, const c return NPERR_NO_ERROR; } -NPError PluginView::getValueStatic(NPNVariable variable, void* value) +bool PluginView::platformGetValueStatic(NPNVariable variable, void* value, NPError* result) { - LOG(Plugins, "PluginView::getValueStatic(%s)", prettyNameForNPNVariable(variable).data()); - switch (variable) { case NPNVjavascriptEnabledBool: *static_cast<NPBool*>(value) = true; - return NPERR_NO_ERROR; + *result = NPERR_NO_ERROR; + return true; case NPNVSupportsWindowless: *static_cast<NPBool*>(value) = true; - return NPERR_NO_ERROR; + *result = NPERR_NO_ERROR; + return true; default: - return NPERR_GENERIC_ERROR; + return false; } } -NPError PluginView::getValue(NPNVariable variable, void* value) +bool PluginView::platformGetValue(NPNVariable, void*, NPError*) { - LOG(Plugins, "PluginView::getValue(%s)", prettyNameForNPNVariable(variable).data()); - - switch (variable) { - case NPNVWindowNPObject: { - if (m_isJavaScriptPaused) - return NPERR_GENERIC_ERROR; - - NPObject* windowScriptObject = m_parentFrame->script()->windowScriptNPObject(); - - // Return value is expected to be retained, as described here: <http://www.mozilla.org/projects/plugin/npruntime.html> - if (windowScriptObject) - _NPN_RetainObject(windowScriptObject); - - void** v = (void**)value; - *v = windowScriptObject; - - return NPERR_NO_ERROR; - } - - case NPNVPluginElementNPObject: { - if (m_isJavaScriptPaused) - return NPERR_GENERIC_ERROR; - - NPObject* pluginScriptObject = 0; - - if (m_element->hasTagName(appletTag) || m_element->hasTagName(embedTag) || m_element->hasTagName(objectTag)) - pluginScriptObject = static_cast<HTMLPlugInElement*>(m_element)->getNPObject(); - - // Return value is expected to be retained, as described here: <http://www.mozilla.org/projects/plugin/npruntime.html> - if (pluginScriptObject) - _NPN_RetainObject(pluginScriptObject); - - void** v = (void**)value; - *v = pluginScriptObject; - - return NPERR_NO_ERROR; - } - default: - return getValueStatic(variable, value); - } + return false; } void PluginView::invalidateRect(const IntRect& rect) @@ -426,12 +390,15 @@ bool PluginView::platformStart() if (m_isWindowed) { QWebPageClient* client = m_parentFrame->view()->hostWindow()->platformPageClient(); - // FIXME this will not work for QGraphicsView. - // But we cannot use winId because it will create a window and on S60, - // QWidgets should not create a window. - Q_ASSERT(qobject_cast<QWidget*>(client->pluginParent())); - setPlatformWidget(new PluginContainerSymbian(this, - qobject_cast<QWidget*>(client->pluginParent()))); + QGraphicsProxyWidget* proxy = 0; + if (QGraphicsWebView *webView = qobject_cast<QGraphicsWebView*>(client->pluginParent())) + proxy = new QGraphicsProxyWidget(webView); + + PluginContainerSymbian* container = new PluginContainerSymbian(this, proxy ? 0 : client->ownerWidget(), proxy); + setPlatformWidget(container); + if (proxy) + proxy->setWidget(container); + m_npWindow.type = NPWindowTypeWindow; m_npWindow.window = (void*)platformPluginWidget(); @@ -447,7 +414,11 @@ bool PluginView::platformStart() void PluginView::platformDestroy() { - delete platformPluginWidget(); + QWebPageClient* client = m_parentFrame->view()->hostWindow()->platformPageClient(); + if (client && qobject_cast<QGraphicsWebView*>(client->pluginParent())) + delete static_cast<PluginContainerSymbian*>(platformPluginWidget())->proxy(); + else + delete platformPluginWidget(); } void PluginView::halt() |