Added document.width/document.height to nsIDOMNSDocument. Bug 961. R: troy

git-svn-id: svn://10.0.0.236/trunk@50007 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
vidur%netscape.com
1999-10-06 20:33:58 +00:00
parent e16887dc96
commit f614c92aba
6 changed files with 98 additions and 2 deletions

View File

@@ -424,6 +424,8 @@ public:
NS_IMETHOD GetStyleSheets(nsIDOMStyleSheetCollection** aStyleSheets);
NS_IMETHOD CreateElementWithNameSpace(const nsString& aTagName, const nsString& aNameSpace, nsIDOMElement** aResult);
NS_IMETHOD CreateRange(nsIDOMRange** aRange);
NS_IMETHOD GetWidth(PRInt32* aWidth);
NS_IMETHOD GetHeight(PRInt32* aHeight);
// nsIDOMXULDocument interface
NS_DECL_IDOMXULDOCUMENT
@@ -2937,6 +2939,19 @@ XULDocumentImpl::CreateRange(nsIDOMRange** aRange)
return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP
XULDocumentImpl::GetWidth(PRInt32* aWidth)
{
NS_NOTYETIMPLEMENTED("write me!");
return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP
XULDocumentImpl::GetHeight(PRInt32* aHeight)
{
NS_NOTYETIMPLEMENTED("write me!");
return NS_ERROR_NOT_IMPLEMENTED;
}
////////////////////////////////////////////////////////////////////////
// nsIDOMXULDocument interface

View File

@@ -36,6 +36,10 @@ class nsIDOMNSDocument : public nsISupports {
public:
static const nsIID& GetIID() { static nsIID iid = NS_IDOMNSDOCUMENT_IID; return iid; }
NS_IMETHOD GetWidth(PRInt32* aWidth)=0;
NS_IMETHOD GetHeight(PRInt32* aHeight)=0;
NS_IMETHOD GetStyleSheets(nsIDOMStyleSheetCollection** aStyleSheets)=0;
NS_IMETHOD CreateElementWithNameSpace(const nsString& aTagName, const nsString& aNameSpace, nsIDOMElement** aReturn)=0;
@@ -45,6 +49,8 @@ public:
#define NS_DECL_IDOMNSDOCUMENT \
NS_IMETHOD GetWidth(PRInt32* aWidth); \
NS_IMETHOD GetHeight(PRInt32* aHeight); \
NS_IMETHOD GetStyleSheets(nsIDOMStyleSheetCollection** aStyleSheets); \
NS_IMETHOD CreateElementWithNameSpace(const nsString& aTagName, const nsString& aNameSpace, nsIDOMElement** aReturn); \
NS_IMETHOD CreateRange(nsIDOMRange** aReturn); \
@@ -52,6 +58,8 @@ public:
#define NS_FORWARD_IDOMNSDOCUMENT(_to) \
NS_IMETHOD GetWidth(PRInt32* aWidth) { return _to GetWidth(aWidth); } \
NS_IMETHOD GetHeight(PRInt32* aHeight) { return _to GetHeight(aHeight); } \
NS_IMETHOD GetStyleSheets(nsIDOMStyleSheetCollection** aStyleSheets) { return _to GetStyleSheets(aStyleSheets); } \
NS_IMETHOD CreateElementWithNameSpace(const nsString& aTagName, const nsString& aNameSpace, nsIDOMElement** aReturn) { return _to CreateElementWithNameSpace(aTagName, aNameSpace, aReturn); } \
NS_IMETHOD CreateRange(nsIDOMRange** aReturn) { return _to CreateRange(aReturn); } \

View File

@@ -26,6 +26,8 @@
/* IID: { 0xa6cf90cd, 0x15b3, 0x11d2, \
{ 0x93, 0x2e, 0x00, 0x80, 0x5f, 0x8a, 0xdd, 0x32} } */
readonly attribute long width;
readonly attribute long height;
readonly attribute StyleSheetCollection styleSheets;
Element createElementWithNameSpace(in DOMString tagName,
in DOMString nameSpace)

View File

@@ -66,7 +66,7 @@ NS_ScriptErrorReporter(JSContext *cx,
if (context) {
nsresult result = context->GetOwner(&owner);
if (NS_SUCCEEDED(result)) {
if (NS_SUCCEEDED(result) && owner) {
const char* error;
if (message) {
error = message;

View File

@@ -88,7 +88,9 @@ enum Document_slots {
DOCUMENT_DOCTYPE = -1,
DOCUMENT_IMPLEMENTATION = -2,
DOCUMENT_DOCUMENTELEMENT = -3,
NSDOCUMENT_STYLESHEETS = -4
NSDOCUMENT_WIDTH = -4,
NSDOCUMENT_HEIGHT = -5,
NSDOCUMENT_STYLESHEETS = -6
};
/***********************************************************************/
@@ -169,6 +171,58 @@ GetDocumentProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
}
break;
}
case NSDOCUMENT_WIDTH:
{
PRBool ok = PR_FALSE;
secMan->CheckScriptAccess(scriptCX, obj, "nsdocument.width", PR_FALSE, &ok);
if (!ok) {
return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR);
}
PRInt32 prop;
nsIDOMNSDocument* b;
if (NS_OK == a->QueryInterface(kINSDocumentIID, (void **)&b)) {
nsresult result = NS_OK;
result = b->GetWidth(&prop);
if(NS_SUCCEEDED(result)) {
*vp = INT_TO_JSVAL(prop);
NS_RELEASE(b);
}
else {
NS_RELEASE(b);
return nsJSUtils::nsReportError(cx, result);
}
}
else {
return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR);
}
break;
}
case NSDOCUMENT_HEIGHT:
{
PRBool ok = PR_FALSE;
secMan->CheckScriptAccess(scriptCX, obj, "nsdocument.height", PR_FALSE, &ok);
if (!ok) {
return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR);
}
PRInt32 prop;
nsIDOMNSDocument* b;
if (NS_OK == a->QueryInterface(kINSDocumentIID, (void **)&b)) {
nsresult result = NS_OK;
result = b->GetHeight(&prop);
if(NS_SUCCEEDED(result)) {
*vp = INT_TO_JSVAL(prop);
NS_RELEASE(b);
}
else {
NS_RELEASE(b);
return nsJSUtils::nsReportError(cx, result);
}
}
else {
return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR);
}
break;
}
case NSDOCUMENT_STYLESHEETS:
{
PRBool ok = PR_FALSE;
@@ -849,6 +903,8 @@ static JSPropertySpec DocumentProperties[] =
{"doctype", DOCUMENT_DOCTYPE, JSPROP_ENUMERATE | JSPROP_READONLY},
{"implementation", DOCUMENT_IMPLEMENTATION, JSPROP_ENUMERATE | JSPROP_READONLY},
{"documentElement", DOCUMENT_DOCUMENTELEMENT, JSPROP_ENUMERATE | JSPROP_READONLY},
{"width", NSDOCUMENT_WIDTH, JSPROP_ENUMERATE | JSPROP_READONLY},
{"height", NSDOCUMENT_HEIGHT, JSPROP_ENUMERATE | JSPROP_READONLY},
{"styleSheets", NSDOCUMENT_STYLESHEETS, JSPROP_ENUMERATE | JSPROP_READONLY},
{0}
};

View File

@@ -424,6 +424,8 @@ public:
NS_IMETHOD GetStyleSheets(nsIDOMStyleSheetCollection** aStyleSheets);
NS_IMETHOD CreateElementWithNameSpace(const nsString& aTagName, const nsString& aNameSpace, nsIDOMElement** aResult);
NS_IMETHOD CreateRange(nsIDOMRange** aRange);
NS_IMETHOD GetWidth(PRInt32* aWidth);
NS_IMETHOD GetHeight(PRInt32* aHeight);
// nsIDOMXULDocument interface
NS_DECL_IDOMXULDOCUMENT
@@ -2937,6 +2939,19 @@ XULDocumentImpl::CreateRange(nsIDOMRange** aRange)
return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP
XULDocumentImpl::GetWidth(PRInt32* aWidth)
{
NS_NOTYETIMPLEMENTED("write me!");
return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP
XULDocumentImpl::GetHeight(PRInt32* aHeight)
{
NS_NOTYETIMPLEMENTED("write me!");
return NS_ERROR_NOT_IMPLEMENTED;
}
////////////////////////////////////////////////////////////////////////
// nsIDOMXULDocument interface