From 7c01ae18c192591d8fe7b9ced20176a16f9d3153 Mon Sep 17 00:00:00 2001 From: "vidur%netscape.com" Date: Thu, 6 Jan 2000 01:15:55 +0000 Subject: [PATCH] Fix for bug 23066. Added getter/setter for image.lowsrc for compatibility - the DOM defines image.lowSrc (note the case difference). r=pollmann git-svn-id: svn://10.0.0.236/trunk@56919 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/dom/public/html/nsIDOMImage.h | 7 +++ .../dom/public/idl/html/HTMLImageElement.idl | 1 + mozilla/dom/public/nsDOMPropEnums.h | 1 + mozilla/dom/public/nsDOMPropNames.h | 2 +- mozilla/dom/src/html/nsJSHTMLImageElement.cpp | 52 ++++++++++++++++++- 5 files changed, 61 insertions(+), 2 deletions(-) diff --git a/mozilla/dom/public/html/nsIDOMImage.h b/mozilla/dom/public/html/nsIDOMImage.h index 6e09e86e389..82b848e43f8 100644 --- a/mozilla/dom/public/html/nsIDOMImage.h +++ b/mozilla/dom/public/html/nsIDOMImage.h @@ -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__ diff --git a/mozilla/dom/public/idl/html/HTMLImageElement.idl b/mozilla/dom/public/idl/html/HTMLImageElement.idl index ff506fe335e..ce168e436ad 100644 --- a/mozilla/dom/public/idl/html/HTMLImageElement.idl +++ b/mozilla/dom/public/idl/html/HTMLImageElement.idl @@ -27,4 +27,5 @@ { 0x93, 0x2e, 0x00, 0x80, 0x5f, 0x8a, 0xdd, 0x32 } } */ void Image(); + attribute DOMString lowsrc; }; diff --git a/mozilla/dom/public/nsDOMPropEnums.h b/mozilla/dom/public/nsDOMPropEnums.h index 8a77f99ec54..bb860d3c2a2 100644 --- a/mozilla/dom/public/nsDOMPropEnums.h +++ b/mozilla/dom/public/nsDOMPropEnums.h @@ -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, diff --git a/mozilla/dom/public/nsDOMPropNames.h b/mozilla/dom/public/nsDOMPropNames.h index 2d0b64def83..5eef396f7a8 100644 --- a/mozilla/dom/public/nsDOMPropNames.h +++ b/mozilla/dom/public/nsDOMPropNames.h @@ -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", \ diff --git a/mozilla/dom/src/html/nsJSHTMLImageElement.cpp b/mozilla/dom/src/html/nsJSHTMLImageElement.cpp index d8c0c563014..009d02bc29f 100644 --- a/mozilla/dom/src/html/nsJSHTMLImageElement.cpp +++ b/mozilla/dom/src/html/nsJSHTMLImageElement.cpp @@ -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} };