Allowed complete script access to our components. This is WIP and not part of the Seamonkey build.

This commit is contained in:
vidur%netscape.com 2006-04-20 03:36:53 +00:00
Родитель 43354e95a0
Коммит f3d58f2583
4 изменённых файлов: 107 добавлений и 4 удалений

Просмотреть файл

@ -62,7 +62,7 @@ nsDOMSerializer::~nsDOMSerializer()
{
}
NS_IMPL_ISUPPORTS1(nsDOMSerializer, nsIDOMSerializer)
NS_IMPL_ISUPPORTS2(nsDOMSerializer, nsIDOMSerializer, nsISecurityCheckedComponent)
void
nsDOMSerializer::SerializeText(nsIDOMText* aText, nsString& aStr)
@ -668,3 +668,50 @@ nsDOMSerializer::SerializeToStream(nsIDOMNode *root,
return rv;
}
static const char* kAllAccess = "AllAccess";
/* string canCreateWrapper (in nsIIDPtr iid); */
NS_IMETHODIMP
nsDOMSerializer::CanCreateWrapper(const nsIID * iid, char **_retval)
{
if (iid->Equals(NS_GET_IID(nsIDOMSerializer))) {
*_retval = nsCRT::strdup(kAllAccess);
}
return NS_OK;
}
/* string canCallMethod (in nsIIDPtr iid, in wstring methodName); */
NS_IMETHODIMP
nsDOMSerializer::CanCallMethod(const nsIID * iid, const PRUnichar *methodName, char **_retval)
{
if (iid->Equals(NS_GET_IID(nsIDOMSerializer))) {
*_retval = nsCRT::strdup(kAllAccess);
}
return NS_OK;
}
/* string canGetProperty (in nsIIDPtr iid, in wstring propertyName); */
NS_IMETHODIMP
nsDOMSerializer::CanGetProperty(const nsIID * iid, const PRUnichar *propertyName, char **_retval)
{
if (iid->Equals(NS_GET_IID(nsIDOMSerializer))) {
*_retval = nsCRT::strdup(kAllAccess);
}
return NS_OK;
}
/* string canSetProperty (in nsIIDPtr iid, in wstring propertyName); */
NS_IMETHODIMP
nsDOMSerializer::CanSetProperty(const nsIID * iid, const PRUnichar *propertyName, char **_retval)
{
if (iid->Equals(NS_GET_IID(nsIDOMSerializer))) {
*_retval = nsCRT::strdup(kAllAccess);
}
return NS_OK;
}

Просмотреть файл

@ -24,6 +24,7 @@
#define nsDOMSerializer_h__
#include "nsIDOMSerializer.h"
#include "nsISecurityCheckedComponent.h"
#include "nsISupportsUtils.h"
#include "nsCOMPtr.h"
#include "nsVoidArray.h"
@ -37,7 +38,9 @@ class nsIDOMComment;
class nsIDOMProcessingInstruction;
class nsIUnicodeEncoder;
class nsDOMSerializer : public nsIDOMSerializer {
class nsDOMSerializer : public nsIDOMSerializer,
public nsISecurityCheckedComponent
{
public:
nsDOMSerializer();
virtual ~nsDOMSerializer();
@ -50,6 +53,8 @@ public:
nsIOutputStream *stream,
const char *charset);
NS_DECL_NSISECURITYCHECKEDCOMPONENT
protected:
void SerializeText(nsIDOMText* aText, nsString& aStr);
void SerializeCDATASection(nsIDOMCDATASection* aCDATASection, nsString& aStr);

Просмотреть файл

@ -155,7 +155,8 @@ nsXMLHttpRequest::~nsXMLHttpRequest()
{
}
NS_IMPL_ISUPPORTS2(nsXMLHttpRequest, nsIXMLHttpRequest, nsIDOMLoadListener)
NS_IMPL_ISUPPORTS3(nsXMLHttpRequest, nsIXMLHttpRequest, nsIDOMLoadListener,
nsISecurityCheckedComponent)
/* noscript void addEventListener (in string type, in nsIDOMEventListener listener); */
NS_IMETHODIMP
@ -901,3 +902,48 @@ nsXMLHttpRequest::Error(nsIDOMEvent* aEvent)
return NS_OK;
}
static const char* kAllAccess = "AllAccess";
/* string canCreateWrapper (in nsIIDPtr iid); */
NS_IMETHODIMP
nsXMLHttpRequest::CanCreateWrapper(const nsIID * iid, char **_retval)
{
if (iid->Equals(NS_GET_IID(nsIXMLHttpRequest))) {
*_retval = nsCRT::strdup(kAllAccess);
}
return NS_OK;
}
/* string canCallMethod (in nsIIDPtr iid, in wstring methodName); */
NS_IMETHODIMP
nsXMLHttpRequest::CanCallMethod(const nsIID * iid, const PRUnichar *methodName, char **_retval)
{
if (iid->Equals(NS_GET_IID(nsIXMLHttpRequest))) {
*_retval = nsCRT::strdup(kAllAccess);
}
return NS_OK;
}
/* string canGetProperty (in nsIIDPtr iid, in wstring propertyName); */
NS_IMETHODIMP
nsXMLHttpRequest::CanGetProperty(const nsIID * iid, const PRUnichar *propertyName, char **_retval)
{
if (iid->Equals(NS_GET_IID(nsIXMLHttpRequest))) {
*_retval = nsCRT::strdup(kAllAccess);
}
return NS_OK;
}
/* string canSetProperty (in nsIIDPtr iid, in wstring propertyName); */
NS_IMETHODIMP
nsXMLHttpRequest::CanSetProperty(const nsIID * iid, const PRUnichar *propertyName, char **_retval)
{
if (iid->Equals(NS_GET_IID(nsIXMLHttpRequest))) {
*_retval = nsCRT::strdup(kAllAccess);
}
return NS_OK;
}

Просмотреть файл

@ -29,6 +29,7 @@
#include "nsString.h"
#include "nsIDOMLoadListener.h"
#include "nsIDOMDocument.h"
#include "nsISecurityCheckedComponent.h"
#include "nsIURI.h"
#include "nsIHTTPChannel.h"
#include "nsIDocument.h"
@ -36,7 +37,8 @@
#include "jsapi.h"
class nsXMLHttpRequest : public nsIXMLHttpRequest,
public nsIDOMLoadListener
public nsIDOMLoadListener,
public nsISecurityCheckedComponent
{
public:
nsXMLHttpRequest();
@ -56,6 +58,9 @@ public:
virtual nsresult Abort(nsIDOMEvent* aEvent);
virtual nsresult Error(nsIDOMEvent* aEvent);
// nsISecurityCheckedComponent
NS_DECL_NSISECURITYCHECKEDCOMPONENT
protected:
nsresult MakeScriptEventListener(nsISupports* aObject,
nsIDOMEventListener** aListener);