Fix for bug 23066. Added getter/setter for image.lowsrc for compatibility - the DOM defines image.lowSrc (note the case difference). r=pollmann

This commit is contained in:
vidur%netscape.com 2000-01-06 01:15:55 +00:00
parent 29f5443a16
commit 3cc928f744
5 changed files with 61 additions and 2 deletions

View File

@ -36,14 +36,21 @@
class nsIDOMImage : public nsISupports {
public:
static const nsIID& GetIID() { static nsIID iid = NS_IDOMIMAGE_IID; return iid; }
NS_IMETHOD GetLowsrc(nsString& aLowsrc)=0;
NS_IMETHOD SetLowsrc(const nsString& aLowsrc)=0;
};
#define NS_DECL_IDOMIMAGE \
NS_IMETHOD GetLowsrc(nsString& aLowsrc); \
NS_IMETHOD SetLowsrc(const nsString& aLowsrc); \
#define NS_FORWARD_IDOMIMAGE(_to) \
NS_IMETHOD GetLowsrc(nsString& aLowsrc) { return _to GetLowsrc(aLowsrc); } \
NS_IMETHOD SetLowsrc(const nsString& aLowsrc) { return _to SetLowsrc(aLowsrc); } \
#endif // nsIDOMImage_h__

View File

@ -27,4 +27,5 @@
{ 0x93, 0x2e, 0x00, 0x80, 0x5f, 0x8a, 0xdd, 0x32 } } */
void Image();
attribute DOMString lowsrc;
};

View File

@ -599,6 +599,7 @@ enum nsDOMProp {
NS_DOM_PROP_HTMLTITLEELEMENT_TEXT,
NS_DOM_PROP_HTMLULISTELEMENT_COMPACT,
NS_DOM_PROP_HTMLULISTELEMENT_TYPE,
NS_DOM_PROP_IMAGE_LOWSRC,
NS_DOM_PROP_KEYEVENT_ALTKEY,
NS_DOM_PROP_KEYEVENT_CHARCODE,
NS_DOM_PROP_KEYEVENT_CTRLKEY,

View File

@ -320,7 +320,6 @@
"htmldocument.close", \
"htmldocument.cookie", \
"htmldocument.domain", \
"htmldocument.formname", \
"htmldocument.forms", \
"htmldocument.getelementbyid", \
"htmldocument.getelementsbyname", \
@ -599,6 +598,7 @@
"htmltitleelement.text", \
"htmlulistelement.compact", \
"htmlulistelement.type", \
"image.lowsrc", \
"keyevent.altkey", \
"keyevent.charcode", \
"keyevent.ctrlkey", \

View File

@ -63,7 +63,8 @@ enum HTMLImageElement_slots {
HTMLIMAGEELEMENT_LONGDESC = -9,
HTMLIMAGEELEMENT_USEMAP = -10,
HTMLIMAGEELEMENT_VSPACE = -11,
HTMLIMAGEELEMENT_WIDTH = -12
HTMLIMAGEELEMENT_WIDTH = -12,
IMAGE_LOWSRC = -13
};
/***********************************************************************/
@ -304,6 +305,32 @@ GetHTMLImageElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
}
break;
}
case IMAGE_LOWSRC:
{
PRBool ok = PR_FALSE;
secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_IMAGE_LOWSRC, PR_FALSE, &ok);
if (!ok) {
return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR);
}
nsAutoString prop;
nsIDOMImage* b;
if (NS_OK == a->QueryInterface(kIImageIID, (void **)&b)) {
nsresult result = NS_OK;
result = b->GetLowsrc(prop);
if(NS_SUCCEEDED(result)) {
nsJSUtils::nsConvertStringToJSVal(prop, cx, vp);
NS_RELEASE(b);
}
else {
NS_RELEASE(b);
return nsJSUtils::nsReportError(cx, obj, result);
}
}
else {
return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR);
}
break;
}
default:
return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp);
}
@ -507,6 +534,28 @@ SetHTMLImageElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
break;
}
case IMAGE_LOWSRC:
{
PRBool ok = PR_FALSE;
secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_IMAGE_LOWSRC, PR_TRUE, &ok);
if (!ok) {
return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR);
}
nsAutoString prop;
nsJSUtils::nsConvertJSValToString(prop, cx, *vp);
nsIDOMImage *b;
if (NS_OK == a->QueryInterface(kIImageIID, (void **)&b)) {
b->SetLowsrc(prop);
NS_RELEASE(b);
}
else {
return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR);
}
break;
}
default:
return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp);
}
@ -584,6 +633,7 @@ static JSPropertySpec HTMLImageElementProperties[] =
{"useMap", HTMLIMAGEELEMENT_USEMAP, JSPROP_ENUMERATE},
{"vspace", HTMLIMAGEELEMENT_VSPACE, JSPROP_ENUMERATE},
{"width", HTMLIMAGEELEMENT_WIDTH, JSPROP_ENUMERATE},
{"lowsrc", IMAGE_LOWSRC, JSPROP_ENUMERATE},
{0}
};