Bug 22598. r=vidur

git-svn-id: svn://10.0.0.236/trunk@56781 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
av%netscape.com
2000-01-05 01:18:38 +00:00
parent 17bdefdb8b
commit e05d740183
8 changed files with 128 additions and 0 deletions

View File

@@ -51,6 +51,7 @@
#include "nsITimerCallback.h"
#include "nsLayoutAtoms.h"
#include "nsIDocShellTreeItem.h"
#include "nsIDOMElement.h"
// XXX For temporary paint code
#include "nsIStyleContext.h"
@@ -97,6 +98,8 @@ public:
NS_IMETHOD GetAttribute(const char* name, const char* *result);
NS_IMETHOD GetDOMElement(nsIDOMElement* *result);
//nsIPluginTagInfo2 interface
NS_IMETHOD GetTagType(nsPluginTagType *result);
@@ -1662,6 +1665,28 @@ NS_IMETHODIMP nsPluginInstanceOwner::GetAttribute(const char* name, const char*
return NS_ERROR_FAILURE;
}
NS_IMETHODIMP nsPluginInstanceOwner::GetDOMElement(nsIDOMElement* *result)
{
nsresult rv = NS_ERROR_FAILURE;
*result = nsnull;
if (nsnull != mOwner)
{
nsIContent *cont;
mOwner->GetContent(&cont);
if (nsnull != cont)
{
rv = cont->QueryInterface(nsIDOMElement::GetIID(), (void **)result);
NS_RELEASE(cont);
}
}
return rv;
}
NS_IMETHODIMP nsPluginInstanceOwner::GetInstance(nsIPluginInstance *&aInstance)
{
if (nsnull != mInstance)

View File

@@ -51,6 +51,7 @@
#include "nsITimerCallback.h"
#include "nsLayoutAtoms.h"
#include "nsIDocShellTreeItem.h"
#include "nsIDOMElement.h"
// XXX For temporary paint code
#include "nsIStyleContext.h"
@@ -97,6 +98,8 @@ public:
NS_IMETHOD GetAttribute(const char* name, const char* *result);
NS_IMETHOD GetDOMElement(nsIDOMElement* *result);
//nsIPluginTagInfo2 interface
NS_IMETHOD GetTagType(nsPluginTagType *result);
@@ -1662,6 +1665,28 @@ NS_IMETHODIMP nsPluginInstanceOwner::GetAttribute(const char* name, const char*
return NS_ERROR_FAILURE;
}
NS_IMETHODIMP nsPluginInstanceOwner::GetDOMElement(nsIDOMElement* *result)
{
nsresult rv = NS_ERROR_FAILURE;
*result = nsnull;
if (nsnull != mOwner)
{
nsIContent *cont;
mOwner->GetContent(&cont);
if (nsnull != cont)
{
rv = cont->QueryInterface(nsIDOMElement::GetIID(), (void **)result);
NS_RELEASE(cont);
}
}
return rv;
}
NS_IMETHODIMP nsPluginInstanceOwner::GetInstance(nsIPluginInstance *&aInstance)
{
if (nsnull != mInstance)

View File

@@ -41,6 +41,8 @@
#include "nsplugindefs.h"
#include "nsISupports.h"
class nsIDOMElement;
#define NS_IPLUGINTAGINFO_IID \
{ /* 5f1ec1d0-019b-11d2-815b-006008119d7a */ \
0x5f1ec1d0, \
@@ -80,6 +82,18 @@ public:
NS_IMETHOD
GetAttribute(const char* name, const char* *result) = 0;
/**
* Returns the DOM element corresponding to the tag which references
* this plugin in the document.
*
* REMIND: do we need to expose as an nsISupports * to avoid
* introducing runtime dependencies on XPCOM?
*
* @param result - resulting DOM element
* @result - NS_OK if this operation was successful
*/
NS_IMETHOD
GetDOMElement(nsIDOMElement* *result) = 0;
};
////////////////////////////////////////////////////////////////////////////////

View File

@@ -358,6 +358,28 @@ NS_IMETHODIMP nsPluginInstancePeerImpl::GetAttribute(const char* name, const cha
}
}
NS_IMETHODIMP nsPluginInstancePeerImpl::GetDOMElement(nsIDOMElement* *result)
{
if (mOwner == nsnull)
{
*result = nsnull;
return NS_ERROR_FAILURE;
}
nsIPluginTagInfo *tinfo;
nsresult rv;
rv = mOwner->QueryInterface(kIPluginTagInfoIID, (void **)&tinfo);
if (NS_OK == rv)
{
rv = tinfo->GetDOMElement(result);
NS_RELEASE(tinfo);
}
return rv;
}
NS_IMETHODIMP nsPluginInstancePeerImpl::GetTagType(nsPluginTagType *result)
{
if (nsnull != mOwner)

View File

@@ -98,6 +98,9 @@ public:
NS_IMETHOD
GetAttribute(const char* name, const char* *result);
NS_IMETHOD
GetDOMElement(nsIDOMElement* *result);
//nsIPluginTagInfo2 interface
NS_IMETHOD

View File

@@ -358,6 +358,28 @@ NS_IMETHODIMP nsPluginInstancePeerImpl::GetAttribute(const char* name, const cha
}
}
NS_IMETHODIMP nsPluginInstancePeerImpl::GetDOMElement(nsIDOMElement* *result)
{
if (mOwner == nsnull)
{
*result = nsnull;
return NS_ERROR_FAILURE;
}
nsIPluginTagInfo *tinfo;
nsresult rv;
rv = mOwner->QueryInterface(kIPluginTagInfoIID, (void **)&tinfo);
if (NS_OK == rv)
{
rv = tinfo->GetDOMElement(result);
NS_RELEASE(tinfo);
}
return rv;
}
NS_IMETHODIMP nsPluginInstancePeerImpl::GetTagType(nsPluginTagType *result)
{
if (nsnull != mOwner)

View File

@@ -98,6 +98,9 @@ public:
NS_IMETHOD
GetAttribute(const char* name, const char* *result);
NS_IMETHOD
GetDOMElement(nsIDOMElement* *result);
//nsIPluginTagInfo2 interface
NS_IMETHOD

View File

@@ -41,6 +41,8 @@
#include "nsplugindefs.h"
#include "nsISupports.h"
class nsIDOMElement;
#define NS_IPLUGINTAGINFO_IID \
{ /* 5f1ec1d0-019b-11d2-815b-006008119d7a */ \
0x5f1ec1d0, \
@@ -80,6 +82,18 @@ public:
NS_IMETHOD
GetAttribute(const char* name, const char* *result) = 0;
/**
* Returns the DOM element corresponding to the tag which references
* this plugin in the document.
*
* REMIND: do we need to expose as an nsISupports * to avoid
* introducing runtime dependencies on XPCOM?
*
* @param result - resulting DOM element
* @result - NS_OK if this operation was successful
*/
NS_IMETHOD
GetDOMElement(nsIDOMElement* *result) = 0;
};
////////////////////////////////////////////////////////////////////////////////