зеркало из https://github.com/mozilla/gecko-dev.git
added GetJSWindow
This commit is contained in:
Родитель
264deb0f7d
Коммит
f7510c8636
|
@ -27,6 +27,11 @@
|
||||||
#include "nsFileSpec.h"
|
#include "nsFileSpec.h"
|
||||||
#include "nsCOMPtr.h"
|
#include "nsCOMPtr.h"
|
||||||
|
|
||||||
|
#include "nsIDocument.h"
|
||||||
|
#include "nsIScriptContextOwner.h"
|
||||||
|
#include "nsIScriptGlobalObject.h"
|
||||||
|
#include "nsIScriptObjectOwner.h"
|
||||||
|
|
||||||
#ifdef XP_PC
|
#ifdef XP_PC
|
||||||
#include "windows.h"
|
#include "windows.h"
|
||||||
#include "winbase.h"
|
#include "winbase.h"
|
||||||
|
@ -751,6 +756,35 @@ printf("instance peer setwindowsize called\n");
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP nsPluginInstancePeerImpl::GetJSWindow(JSObject* *outJSWindow)
|
||||||
|
{
|
||||||
|
*outJSWindow = NULL;
|
||||||
|
nsresult rv = NS_ERROR_FAILURE;
|
||||||
|
nsIDocument* document = nsnull;
|
||||||
|
if (mOwner->GetDocument(&document) == NS_OK) {
|
||||||
|
nsIScriptContextOwner* contextOwner = document->GetScriptContextOwner();
|
||||||
|
if (nsnull != contextOwner) {
|
||||||
|
nsIScriptGlobalObject *global = nsnull;
|
||||||
|
contextOwner->GetScriptGlobalObject(&global);
|
||||||
|
nsIScriptContext* context = nsnull;
|
||||||
|
contextOwner->GetScriptContext(&context);
|
||||||
|
if (nsnull != global && nsnull != context) {
|
||||||
|
static NS_DEFINE_IID(kIScriptObjectOwnerIID, NS_ISCRIPTOBJECTOWNER_IID);
|
||||||
|
nsIScriptObjectOwner* window = nsnull;
|
||||||
|
if (global->QueryInterface(kIScriptObjectOwnerIID, (void **)&window) == NS_OK) {
|
||||||
|
rv = window->GetScriptObject(context, (void**)outJSWindow);
|
||||||
|
NS_RELEASE(window);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
NS_IF_RELEASE(global);
|
||||||
|
NS_IF_RELEASE(context);
|
||||||
|
NS_RELEASE(contextOwner);
|
||||||
|
}
|
||||||
|
NS_RELEASE(document);
|
||||||
|
}
|
||||||
|
return rv;
|
||||||
|
}
|
||||||
|
|
||||||
nsresult nsPluginInstancePeerImpl :: Initialize(nsIPluginInstanceOwner *aOwner,
|
nsresult nsPluginInstancePeerImpl :: Initialize(nsIPluginInstanceOwner *aOwner,
|
||||||
const nsMIMEType aMIMEType)
|
const nsMIMEType aMIMEType)
|
||||||
{
|
{
|
||||||
|
|
|
@ -58,6 +58,9 @@ public:
|
||||||
NS_IMETHOD
|
NS_IMETHOD
|
||||||
SetWindowSize(PRUint32 width, PRUint32 height);
|
SetWindowSize(PRUint32 width, PRUint32 height);
|
||||||
|
|
||||||
|
NS_IMETHOD
|
||||||
|
GetJSWindow(JSObject* *outJSWindow);
|
||||||
|
|
||||||
// nsIWindowlessPluginInstancePeer
|
// nsIWindowlessPluginInstancePeer
|
||||||
|
|
||||||
// (Corresponds to NPN_InvalidateRect.)
|
// (Corresponds to NPN_InvalidateRect.)
|
||||||
|
|
|
@ -27,6 +27,11 @@
|
||||||
#include "nsFileSpec.h"
|
#include "nsFileSpec.h"
|
||||||
#include "nsCOMPtr.h"
|
#include "nsCOMPtr.h"
|
||||||
|
|
||||||
|
#include "nsIDocument.h"
|
||||||
|
#include "nsIScriptContextOwner.h"
|
||||||
|
#include "nsIScriptGlobalObject.h"
|
||||||
|
#include "nsIScriptObjectOwner.h"
|
||||||
|
|
||||||
#ifdef XP_PC
|
#ifdef XP_PC
|
||||||
#include "windows.h"
|
#include "windows.h"
|
||||||
#include "winbase.h"
|
#include "winbase.h"
|
||||||
|
@ -751,6 +756,35 @@ printf("instance peer setwindowsize called\n");
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP nsPluginInstancePeerImpl::GetJSWindow(JSObject* *outJSWindow)
|
||||||
|
{
|
||||||
|
*outJSWindow = NULL;
|
||||||
|
nsresult rv = NS_ERROR_FAILURE;
|
||||||
|
nsIDocument* document = nsnull;
|
||||||
|
if (mOwner->GetDocument(&document) == NS_OK) {
|
||||||
|
nsIScriptContextOwner* contextOwner = document->GetScriptContextOwner();
|
||||||
|
if (nsnull != contextOwner) {
|
||||||
|
nsIScriptGlobalObject *global = nsnull;
|
||||||
|
contextOwner->GetScriptGlobalObject(&global);
|
||||||
|
nsIScriptContext* context = nsnull;
|
||||||
|
contextOwner->GetScriptContext(&context);
|
||||||
|
if (nsnull != global && nsnull != context) {
|
||||||
|
static NS_DEFINE_IID(kIScriptObjectOwnerIID, NS_ISCRIPTOBJECTOWNER_IID);
|
||||||
|
nsIScriptObjectOwner* window = nsnull;
|
||||||
|
if (global->QueryInterface(kIScriptObjectOwnerIID, (void **)&window) == NS_OK) {
|
||||||
|
rv = window->GetScriptObject(context, (void**)outJSWindow);
|
||||||
|
NS_RELEASE(window);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
NS_IF_RELEASE(global);
|
||||||
|
NS_IF_RELEASE(context);
|
||||||
|
NS_RELEASE(contextOwner);
|
||||||
|
}
|
||||||
|
NS_RELEASE(document);
|
||||||
|
}
|
||||||
|
return rv;
|
||||||
|
}
|
||||||
|
|
||||||
nsresult nsPluginInstancePeerImpl :: Initialize(nsIPluginInstanceOwner *aOwner,
|
nsresult nsPluginInstancePeerImpl :: Initialize(nsIPluginInstanceOwner *aOwner,
|
||||||
const nsMIMEType aMIMEType)
|
const nsMIMEType aMIMEType)
|
||||||
{
|
{
|
||||||
|
|
|
@ -58,6 +58,9 @@ public:
|
||||||
NS_IMETHOD
|
NS_IMETHOD
|
||||||
SetWindowSize(PRUint32 width, PRUint32 height);
|
SetWindowSize(PRUint32 width, PRUint32 height);
|
||||||
|
|
||||||
|
NS_IMETHOD
|
||||||
|
GetJSWindow(JSObject* *outJSWindow);
|
||||||
|
|
||||||
// nsIWindowlessPluginInstancePeer
|
// nsIWindowlessPluginInstancePeer
|
||||||
|
|
||||||
// (Corresponds to NPN_InvalidateRect.)
|
// (Corresponds to NPN_InvalidateRect.)
|
||||||
|
|
Загрузка…
Ссылка в новой задаче