[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc
andersca at apple.com
andersca at apple.com
Wed Dec 22 15:34:54 UTC 2010
The following commit has been merged in the debian/experimental branch:
commit 48eb36721db6ac77dca9c7c7b85643bc8101e0e7
Author: andersca at apple.com <andersca at apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Mon Nov 8 19:26:56 2010 +0000
NPN_Evaluate doesn't work with out-of-process plugins in WebKit2
https://bugs.webkit.org/show_bug.cgi?id=49193
Reviewed by Adam Roben.
WebKit2:
* PluginProcess/PluginControllerProxy.cpp:
(WebKit::PluginControllerProxy::evaluate):
Send an Evaluate message.
* WebProcess/Plugins/PluginProxy.cpp:
(WebKit::PluginProxy::evaluate):
Call Evaluate on the plug-in proxy.
* WebProcess/Plugins/PluginProxy.h:
* WebProcess/Plugins/PluginProxy.messages.in:
Add Evaluate message.
LayoutTests:
Remove now passing tests.
* platform/mac-wk2/Skipped:
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@71551 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index 6547e5b..8c710a8 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -1,5 +1,16 @@
2010-11-08 Anders Carlsson <andersca at apple.com>
+ Reviewed by Adam Roben.
+
+ NPN_Evaluate doesn't work with out-of-process plugins in WebKit2
+ https://bugs.webkit.org/show_bug.cgi?id=49193
+
+ Remove now passing tests.
+
+ * platform/mac-wk2/Skipped:
+
+2010-11-08 Anders Carlsson <andersca at apple.com>
+
Reviewed by John Sullivan.
Correctly convert NPObjectProxy to NPVariantData
diff --git a/LayoutTests/platform/mac-wk2/Skipped b/LayoutTests/platform/mac-wk2/Skipped
index ec3dd1b..67e32f2 100644
--- a/LayoutTests/platform/mac-wk2/Skipped
+++ b/LayoutTests/platform/mac-wk2/Skipped
@@ -1714,32 +1714,19 @@ http/tests/plugins/geturlnotify-from-npp-destroystream.html
http/tests/plugins/interrupted-get-url.html
http/tests/plugins/local-geturl-from-remote.html
http/tests/plugins/npapi-response-headers.html
-plugins/destroy-during-npp-new.html
-plugins/destroy-stream-twice.html
-plugins/embed-inside-object.html
-plugins/get-javascript-url.html
plugins/get-url-with-iframe-target.html
-plugins/geturl-replace-query.html
-plugins/inner-html-display-none.html
-plugins/instance-available-before-stylesheets-loaded-object.html
-plugins/instance-available-before-stylesheets-loaded.html
-plugins/netscape-plugin-map-data-to-src.html
plugins/netscape-plugin-setwindow-size.html
-plugins/override-node-method.html
+plugins/nested-plugin-objects.html
plugins/pass-different-npp-struct.html
plugins/plugin-remove-subframe.html
plugins/reentrant-update-widget-positions.html
plugins/reloadplugins-no-pages.html
-plugins/return-error-from-new-stream-doesnt-invoke-destroy-stream.html
plugins/return-negative-one-from-write.html
plugins/set-status.html
plugins/update-widgets-crash.html
plugins/window-open.html
-plugins/npruntime/evaluate.html
plugins/npruntime/identifier-conversion.html
-plugins/npruntime/invoke-browserfuncs.html
plugins/npruntime/invoke-default.html
-plugins/npruntime/npruntime.html
plugins/npruntime/plugin-scriptable-object-invoke-default.html
########################################
diff --git a/WebKit2/ChangeLog b/WebKit2/ChangeLog
index cf6e397..4d1b9ec 100644
--- a/WebKit2/ChangeLog
+++ b/WebKit2/ChangeLog
@@ -1,5 +1,24 @@
2010-11-08 Anders Carlsson <andersca at apple.com>
+ Reviewed by Adam Roben.
+
+ NPN_Evaluate doesn't work with out-of-process plugins in WebKit2
+ https://bugs.webkit.org/show_bug.cgi?id=49193
+
+ * PluginProcess/PluginControllerProxy.cpp:
+ (WebKit::PluginControllerProxy::evaluate):
+ Send an Evaluate message.
+
+ * WebProcess/Plugins/PluginProxy.cpp:
+ (WebKit::PluginProxy::evaluate):
+ Call Evaluate on the plug-in proxy.
+
+ * WebProcess/Plugins/PluginProxy.h:
+ * WebProcess/Plugins/PluginProxy.messages.in:
+ Add Evaluate message.
+
+2010-11-08 Anders Carlsson <andersca at apple.com>
+
Reviewed by John Sullivan.
Correctly convert NPObjectProxy to NPVariantData
diff --git a/WebKit2/PluginProcess/PluginControllerProxy.cpp b/WebKit2/PluginProcess/PluginControllerProxy.cpp
index 0ac6483..4107483 100644
--- a/WebKit2/PluginProcess/PluginControllerProxy.cpp
+++ b/WebKit2/PluginProcess/PluginControllerProxy.cpp
@@ -29,8 +29,10 @@
#include "BackingStore.h"
#include "DataReference.h"
+#include "NPObjectProxy.h"
#include "NPRemoteObjectMap.h"
#include "NPRuntimeUtilities.h"
+#include "NPVariantData.h"
#include "NetscapePlugin.h"
#include "NotImplemented.h"
#include "PluginProcess.h"
@@ -191,10 +193,25 @@ NPObject* PluginControllerProxy::pluginElementNPObject()
return m_connection->npRemoteObjectMap()->createNPObjectProxy(pluginElementNPObjectID);
}
-bool PluginControllerProxy::evaluate(NPObject*, const String& scriptString, NPVariant* result, bool allowPopups)
+bool PluginControllerProxy::evaluate(NPObject* npObject, const String& scriptString, NPVariant* result, bool allowPopups)
{
- notImplemented();
- return false;
+ NPVariant npObjectAsNPVariant;
+ OBJECT_TO_NPVARIANT(npObject, npObjectAsNPVariant);
+
+ // Send the NPObject over as an NPVariantData.
+ NPVariantData npObjectAsNPVariantData = m_connection->npRemoteObjectMap()->npVariantToNPVariantData(npObjectAsNPVariant);
+
+ bool returnValue = false;
+ NPVariantData resultData;
+
+ if (!m_connection->connection()->sendSync(Messages::PluginProxy::Evaluate(npObjectAsNPVariantData, scriptString, allowPopups), Messages::PluginProxy::Evaluate::Reply(returnValue, resultData), m_pluginInstanceID))
+ return false;
+
+ if (!returnValue)
+ return false;
+
+ *result = m_connection->npRemoteObjectMap()->npVariantDataToNPVariant(resultData);
+ return true;
}
void PluginControllerProxy::setStatusbarText(const WTF::String&)
diff --git a/WebKit2/WebProcess/Plugins/PluginProxy.cpp b/WebKit2/WebProcess/Plugins/PluginProxy.cpp
index e77310d..345b3c8 100644
--- a/WebKit2/WebProcess/Plugins/PluginProxy.cpp
+++ b/WebKit2/WebProcess/Plugins/PluginProxy.cpp
@@ -31,6 +31,7 @@
#include "DataReference.h"
#include "NPRemoteObjectMap.h"
#include "NPRuntimeUtilities.h"
+#include "NPVariantData.h"
#include "NotImplemented.h"
#include "PluginController.h"
#include "PluginControllerProxyMessages.h"
@@ -379,6 +380,25 @@ void PluginProxy::getPluginElementNPObject(uint64_t& pluginElementNPObjectID)
releaseNPObject(pluginElementNPObject);
}
+void PluginProxy::evaluate(const NPVariantData& npObjectAsVariantData, const String& scriptString, bool allowPopups, bool& returnValue, NPVariantData& resultData)
+{
+ NPVariant npObjectAsVariant = m_connection->npRemoteObjectMap()->npVariantDataToNPVariant(npObjectAsVariantData);
+ ASSERT(NPVARIANT_IS_OBJECT(npObjectAsVariant));
+
+ NPVariant result;
+ returnValue = m_pluginController->evaluate(NPVARIANT_TO_OBJECT(npObjectAsVariant), scriptString, &result, allowPopups);
+ if (!returnValue)
+ return;
+
+ // Convert the NPVariant to an NPVariantData.
+ resultData = m_connection->npRemoteObjectMap()->npVariantToNPVariantData(result);
+
+ // And release the result.
+ releaseNPVariantValue(&result);
+
+ releaseNPVariantValue(&npObjectAsVariant);
+}
+
void PluginProxy::update(const IntRect& paintedRect)
{
if (paintedRect == m_frameRect)
diff --git a/WebKit2/WebProcess/Plugins/PluginProxy.h b/WebKit2/WebProcess/Plugins/PluginProxy.h
index 059eafe..4657fe0 100644
--- a/WebKit2/WebProcess/Plugins/PluginProxy.h
+++ b/WebKit2/WebProcess/Plugins/PluginProxy.h
@@ -47,6 +47,7 @@ namespace WebCore {
namespace WebKit {
class BackingStore;
+class NPVariantData;
class PluginProcessConnection;
class PluginProxy : public Plugin {
@@ -110,6 +111,7 @@ private:
void setCookiesForURL(const String& urlString, const String& cookieString);
void getWindowScriptNPObject(uint64_t& windowScriptNPObjectID);
void getPluginElementNPObject(uint64_t& pluginElementNPObjectID);
+ void evaluate(const NPVariantData& npObjectAsVariantData, const String& scriptString, bool allowPopups, bool& returnValue, NPVariantData& resultData);
RefPtr<PluginProcessConnection> m_connection;
uint64_t m_pluginInstanceID;
diff --git a/WebKit2/WebProcess/Plugins/PluginProxy.messages.in b/WebKit2/WebProcess/Plugins/PluginProxy.messages.in
index 7bf8573..44e92b7 100644
--- a/WebKit2/WebProcess/Plugins/PluginProxy.messages.in
+++ b/WebKit2/WebProcess/Plugins/PluginProxy.messages.in
@@ -44,6 +44,8 @@ messages -> PluginProxy {
# Gets a reference to the plug-in element NPObject.
GetPluginElementNPObject() -> (uint64_t pluginElementNPObjectID)
+ # Evaluates the given JavaScript string.
+ Evaluate(WebKit::NPVariantData npObjectAsVariantData, WTF::String scriptString, bool allowPopups) -> (bool returnValue, WebKit::NPVariantData resultData)
}
#endif
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list