From 40ffb6fae1fbf7b4b0303f1d06322993a185b343 Mon Sep 17 00:00:00 2001 From: "beard%netscape.com" Date: Sat, 8 May 1999 16:33:40 +0000 Subject: [PATCH] added GetJSContext() git-svn-id: svn://10.0.0.236/trunk@30824 18797224-902f-48f8-a5cc-f745e15eee43 --- .../base/public/nsIPluginInstancePeer2.h | 10 ++++++++ .../plugin/base/src/nsPluginInstancePeer.cpp | 23 +++++++++++++++++++ .../plugin/base/src/nsPluginInstancePeer.h | 3 +++ .../plugin/nglsrc/nsPluginInstancePeer.cpp | 23 +++++++++++++++++++ .../plugin/nglsrc/nsPluginInstancePeer.h | 3 +++ .../plugin/public/nsIPluginInstancePeer2.h | 10 ++++++++ 6 files changed, 72 insertions(+) diff --git a/mozilla/modules/plugin/base/public/nsIPluginInstancePeer2.h b/mozilla/modules/plugin/base/public/nsIPluginInstancePeer2.h index 0b99ea8eaf0..a27874f5b0c 100644 --- a/mozilla/modules/plugin/base/public/nsIPluginInstancePeer2.h +++ b/mozilla/modules/plugin/base/public/nsIPluginInstancePeer2.h @@ -22,6 +22,7 @@ #include "nsIPluginInstancePeer.h" struct JSObject; +struct JSContext; // {e7d48c00-e1f1-11d2-8360-fbc8abc4ae7c} #define NS_IPLUGININSTANCEPEER2_IID \ @@ -54,6 +55,15 @@ public: */ NS_IMETHOD GetJSThread(PRUint32 *outThreadID) = 0; + + /** + * Get the JavaScript context to this plugin instance. + * + * @param outContext - the resulting JavaScript context + * @result - NS_OK if this operation was successful + */ + NS_IMETHOD + GetJSContext(JSContext* *outContext) = 0; }; //////////////////////////////////////////////////////////////////////////////// diff --git a/mozilla/modules/plugin/base/src/nsPluginInstancePeer.cpp b/mozilla/modules/plugin/base/src/nsPluginInstancePeer.cpp index 207a3f5db2f..c66118a2ff3 100644 --- a/mozilla/modules/plugin/base/src/nsPluginInstancePeer.cpp +++ b/mozilla/modules/plugin/base/src/nsPluginInstancePeer.cpp @@ -803,6 +803,29 @@ NS_IMETHODIMP nsPluginInstancePeerImpl::GetJSThread(PRUint32 *outThreadID) return NS_OK; } +NS_IMETHODIMP nsPluginInstancePeerImpl::GetJSContext(JSContext* *outContext) +{ + *outContext = NULL; + nsresult rv = NS_ERROR_FAILURE; +#if defined(OJI) + nsIDocument* document = nsnull; + if (mOwner->GetDocument(&document) == NS_OK) { + nsIScriptContextOwner* contextOwner = document->GetScriptContextOwner(); + if (nsnull != contextOwner) { + nsIScriptContext* context = nsnull; + if (contextOwner->GetScriptContext(&context) == NS_OK) { + *outContext = (JSContext*) context->GetNativeContext(); + NS_RELEASE(context); + rv = NS_OK; + } + NS_RELEASE(contextOwner); + } + NS_RELEASE(document); + } +#endif + return rv; +} + nsresult nsPluginInstancePeerImpl::Initialize(nsIPluginInstanceOwner *aOwner, const nsMIMEType aMIMEType) { diff --git a/mozilla/modules/plugin/base/src/nsPluginInstancePeer.h b/mozilla/modules/plugin/base/src/nsPluginInstancePeer.h index 13c2627fbf9..c499e5fb038 100644 --- a/mozilla/modules/plugin/base/src/nsPluginInstancePeer.h +++ b/mozilla/modules/plugin/base/src/nsPluginInstancePeer.h @@ -66,6 +66,9 @@ public: NS_IMETHOD GetJSThread(PRUint32 *outThreadID); + NS_IMETHOD + GetJSContext(JSContext* *outContext); + // nsIWindowlessPluginInstancePeer // (Corresponds to NPN_InvalidateRect.) diff --git a/mozilla/modules/plugin/nglsrc/nsPluginInstancePeer.cpp b/mozilla/modules/plugin/nglsrc/nsPluginInstancePeer.cpp index 207a3f5db2f..c66118a2ff3 100644 --- a/mozilla/modules/plugin/nglsrc/nsPluginInstancePeer.cpp +++ b/mozilla/modules/plugin/nglsrc/nsPluginInstancePeer.cpp @@ -803,6 +803,29 @@ NS_IMETHODIMP nsPluginInstancePeerImpl::GetJSThread(PRUint32 *outThreadID) return NS_OK; } +NS_IMETHODIMP nsPluginInstancePeerImpl::GetJSContext(JSContext* *outContext) +{ + *outContext = NULL; + nsresult rv = NS_ERROR_FAILURE; +#if defined(OJI) + nsIDocument* document = nsnull; + if (mOwner->GetDocument(&document) == NS_OK) { + nsIScriptContextOwner* contextOwner = document->GetScriptContextOwner(); + if (nsnull != contextOwner) { + nsIScriptContext* context = nsnull; + if (contextOwner->GetScriptContext(&context) == NS_OK) { + *outContext = (JSContext*) context->GetNativeContext(); + NS_RELEASE(context); + rv = NS_OK; + } + NS_RELEASE(contextOwner); + } + NS_RELEASE(document); + } +#endif + return rv; +} + nsresult nsPluginInstancePeerImpl::Initialize(nsIPluginInstanceOwner *aOwner, const nsMIMEType aMIMEType) { diff --git a/mozilla/modules/plugin/nglsrc/nsPluginInstancePeer.h b/mozilla/modules/plugin/nglsrc/nsPluginInstancePeer.h index 13c2627fbf9..c499e5fb038 100644 --- a/mozilla/modules/plugin/nglsrc/nsPluginInstancePeer.h +++ b/mozilla/modules/plugin/nglsrc/nsPluginInstancePeer.h @@ -66,6 +66,9 @@ public: NS_IMETHOD GetJSThread(PRUint32 *outThreadID); + NS_IMETHOD + GetJSContext(JSContext* *outContext); + // nsIWindowlessPluginInstancePeer // (Corresponds to NPN_InvalidateRect.) diff --git a/mozilla/modules/plugin/public/nsIPluginInstancePeer2.h b/mozilla/modules/plugin/public/nsIPluginInstancePeer2.h index 0b99ea8eaf0..a27874f5b0c 100644 --- a/mozilla/modules/plugin/public/nsIPluginInstancePeer2.h +++ b/mozilla/modules/plugin/public/nsIPluginInstancePeer2.h @@ -22,6 +22,7 @@ #include "nsIPluginInstancePeer.h" struct JSObject; +struct JSContext; // {e7d48c00-e1f1-11d2-8360-fbc8abc4ae7c} #define NS_IPLUGININSTANCEPEER2_IID \ @@ -54,6 +55,15 @@ public: */ NS_IMETHOD GetJSThread(PRUint32 *outThreadID) = 0; + + /** + * Get the JavaScript context to this plugin instance. + * + * @param outContext - the resulting JavaScript context + * @result - NS_OK if this operation was successful + */ + NS_IMETHOD + GetJSContext(JSContext* *outContext) = 0; }; ////////////////////////////////////////////////////////////////////////////////