Fix for bug 1823. Added a toString method to the location object

This commit is contained in:
vidur%netscape.com 1999-01-06 17:22:34 +00:00
parent 9ceceead01
commit c4c4f8edb2
6 changed files with 52 additions and 3 deletions

View File

@ -61,6 +61,8 @@ public:
NS_IMETHOD Reload(JSContext *cx, jsval *argv, PRUint32 argc)=0;
NS_IMETHOD Replace(const nsString& aUrl)=0;
NS_IMETHOD ToString(nsString& aReturn)=0;
};
@ -83,6 +85,7 @@ public:
NS_IMETHOD SetSearch(const nsString& aSearch); \
NS_IMETHOD Reload(JSContext *cx, jsval *argv, PRUint32 argc); \
NS_IMETHOD Replace(const nsString& aUrl); \
NS_IMETHOD ToString(nsString& aReturn); \
@ -105,6 +108,7 @@ public:
NS_IMETHOD SetSearch(const nsString& aSearch) { return _to##SetSearch(aSearch); } \
NS_IMETHOD Reload(JSContext *cx, jsval *argv, PRUint32 argc) { return _to##Reload(cx, argv, argc); } \
NS_IMETHOD Replace(const nsString& aUrl) { return _to##Replace(aUrl); } \
NS_IMETHOD ToString(nsString& aReturn) { return _to##ToString(aReturn); } \
extern nsresult NS_InitLocationClass(nsIScriptContext *aContext, void **aPrototype);

View File

@ -13,4 +13,6 @@
void reload(/* ... */);
void replace(in wstring url);
};
wstring toString();
};

View File

@ -39,7 +39,7 @@
void resizeBy(in long widthDif, in long heightDif);
void scrollTo(in long xScroll, in long yScroll);
void scrollBy(in long xScrollDif, in long yScrollDif);
void clearTimeout(in long timerID);
void clearInterval(in long timerID);
long setTimeout(/* ... */);
@ -53,4 +53,4 @@
void captureEvent(in wstring type);
void releaseEvent(in wstring type);
};
};

View File

@ -284,6 +284,7 @@ public:
NS_IMETHOD SetSearch(const nsString& aSearch);
NS_IMETHOD Reload(JSContext *cx, jsval *argv, PRUint32 argc);
NS_IMETHOD Replace(const nsString& aUrl);
NS_IMETHOD ToString(nsString& aReturn);
protected:
nsresult SetURL(nsIURL* aURL);

View File

@ -364,6 +364,40 @@ LocationReplace(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rv
}
//
// Native method ToString
//
PR_STATIC_CALLBACK(JSBool)
LocationToString(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
nsIDOMLocation *nativeThis = (nsIDOMLocation*)JS_GetPrivate(cx, obj);
JSBool rBool = JS_FALSE;
nsAutoString nativeRet;
*rval = JSVAL_NULL;
// If there's no private data, this must be the prototype, so ignore
if (nsnull == nativeThis) {
return JS_TRUE;
}
if (argc >= 0) {
if (NS_OK != nativeThis->ToString(nativeRet)) {
return JS_FALSE;
}
nsJSUtils::nsConvertStringToJSVal(nativeRet, cx, rval);
}
else {
JS_ReportError(cx, "Function toString requires 0 parameters");
return JS_FALSE;
}
return JS_TRUE;
}
/***********************************************************************/
//
// class for Location
@ -406,6 +440,7 @@ static JSFunctionSpec LocationMethods[] =
{
{"reload", LocationReload, 0},
{"replace", LocationReplace, 1},
{"toString", LocationToString, 0},
{0}
};

View File

@ -514,3 +514,10 @@ LocationImpl::Replace(const nsString& aUrl)
return NS_OK;
}
NS_IMETHODIMP
LocationImpl::ToString(nsString& aReturn)
{
return GetHref(aReturn);
}