mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-14 13:55:43 +00:00
Backed out changeset f205194a4128
This commit is contained in:
parent
7a49c258b1
commit
bb5fdff668
@ -367,8 +367,39 @@ nsDOMWorkerFunctions::AtoB(JSContext* aCx,
|
||||
return JS_FALSE;
|
||||
}
|
||||
|
||||
return nsXPConnect::Base64Decode(aCx, JS_ARGV(aCx, aVp)[0],
|
||||
&JS_RVAL(aCx, aVp));
|
||||
JSString* str = JS_ValueToString(aCx, JS_ARGV(aCx, aVp)[0]);
|
||||
if (!str) {
|
||||
NS_ASSERTION(JS_IsExceptionPending(aCx), "Need to set an exception!");
|
||||
return JS_FALSE;
|
||||
}
|
||||
|
||||
size_t len = JS_GetStringEncodingLength(aCx, str);
|
||||
if (len == size_t(-1))
|
||||
return JS_FALSE;
|
||||
|
||||
JSUint32 alloc_len = (len + 1) * sizeof(char);
|
||||
char *buffer = static_cast<char *>(nsMemory::Alloc(alloc_len));
|
||||
if (!buffer)
|
||||
return JS_FALSE;
|
||||
|
||||
JS_EncodeStringToBuffer(str, buffer, len);
|
||||
buffer[len] = '\0';
|
||||
|
||||
nsDependentCString string(buffer, len);
|
||||
nsCAutoString result;
|
||||
|
||||
if (NS_FAILED(nsXPConnect::Base64Decode(string, result))) {
|
||||
JS_ReportError(aCx, "Failed to decode base64 string!");
|
||||
return JS_FALSE;
|
||||
}
|
||||
|
||||
str = JS_NewStringCopyN(aCx, result.get(), result.Length());
|
||||
if (!str) {
|
||||
return JS_FALSE;
|
||||
}
|
||||
|
||||
JS_SET_RVAL(aCx, aVp, STRING_TO_JSVAL(str));
|
||||
return JS_TRUE;
|
||||
}
|
||||
|
||||
JSBool
|
||||
@ -388,8 +419,39 @@ nsDOMWorkerFunctions::BtoA(JSContext* aCx,
|
||||
return JS_FALSE;
|
||||
}
|
||||
|
||||
return nsXPConnect::Base64Encode(aCx, JS_ARGV(aCx, aVp)[0],
|
||||
&JS_RVAL(aCx, aVp));
|
||||
JSString* str = JS_ValueToString(aCx, JS_ARGV(aCx, aVp)[0]);
|
||||
if (!str) {
|
||||
NS_ASSERTION(JS_IsExceptionPending(aCx), "Need to set an exception!");
|
||||
return JS_FALSE;
|
||||
}
|
||||
|
||||
size_t len = JS_GetStringEncodingLength(aCx, str);
|
||||
if (len == size_t(-1))
|
||||
return JS_FALSE;
|
||||
|
||||
JSUint32 alloc_len = (len + 1) * sizeof(char);
|
||||
char *buffer = static_cast<char *>(nsMemory::Alloc(alloc_len));
|
||||
if (!buffer)
|
||||
return JS_FALSE;
|
||||
|
||||
JS_EncodeStringToBuffer(str, buffer, len);
|
||||
buffer[len] = '\0';
|
||||
|
||||
nsDependentCString string(buffer, len);
|
||||
nsCAutoString result;
|
||||
|
||||
if (NS_FAILED(nsXPConnect::Base64Encode(string, result))) {
|
||||
JS_ReportError(aCx, "Failed to encode base64 data!");
|
||||
return JS_FALSE;
|
||||
}
|
||||
|
||||
str = JS_NewStringCopyN(aCx, result.get(), result.Length());
|
||||
if (!str) {
|
||||
return JS_FALSE;
|
||||
}
|
||||
|
||||
JS_SET_RVAL(aCx, aVp, STRING_TO_JSVAL(str));
|
||||
return JS_TRUE;
|
||||
}
|
||||
|
||||
JSBool
|
||||
|
@ -1,4 +1,7 @@
|
||||
var data = [ -1, 0, 1, 1.5, null, undefined, true, false ];
|
||||
var data = [ -1, 0, 1, 1.5, undefined, true, false ];
|
||||
|
||||
// XXXbent window.atob treats |null| as the empty string, whereas worker.atob
|
||||
// and the js component loader treat it as the string 'null'. Meh.
|
||||
|
||||
var str = "";
|
||||
for (var i = 0; i < 30; i++) {
|
||||
|
@ -221,7 +221,36 @@ Atob(JSContext *cx, uintN argc, jsval *vp)
|
||||
if (!argc)
|
||||
return JS_TRUE;
|
||||
|
||||
return nsXPConnect::Base64Decode(cx, JS_ARGV(cx, vp)[0], &JS_RVAL(cx, vp));
|
||||
JSString *str = JS_ValueToString(cx, JS_ARGV(cx, vp)[0]);
|
||||
if (!str)
|
||||
return JS_FALSE;
|
||||
|
||||
size_t len = JS_GetStringEncodingLength(cx, str);
|
||||
if (len == size_t(-1))
|
||||
return JS_FALSE;
|
||||
|
||||
JSUint32 alloc_len = (len + 1) * sizeof(char);
|
||||
char *buffer = static_cast<char *>(nsMemory::Alloc(alloc_len));
|
||||
if (!buffer)
|
||||
return JS_FALSE;
|
||||
|
||||
JS_EncodeStringToBuffer(str, buffer, len);
|
||||
buffer[len] = '\0';
|
||||
|
||||
nsDependentCString string(buffer, JS_GetStringLength(str));
|
||||
nsCAutoString result;
|
||||
|
||||
if (NS_FAILED(nsXPConnect::Base64Decode(string, result))) {
|
||||
JS_ReportError(cx, "Failed to decode base64 string!");
|
||||
return JS_FALSE;
|
||||
}
|
||||
|
||||
str = JS_NewStringCopyN(cx, result.get(), result.Length());
|
||||
if (!str)
|
||||
return JS_FALSE;
|
||||
|
||||
JS_SET_RVAL(cx, vp, STRING_TO_JSVAL(str));
|
||||
return JS_TRUE;
|
||||
}
|
||||
|
||||
static JSBool
|
||||
@ -230,7 +259,36 @@ Btoa(JSContext *cx, uintN argc, jsval *vp)
|
||||
if (!argc)
|
||||
return JS_TRUE;
|
||||
|
||||
return nsXPConnect::Base64Encode(cx, JS_ARGV(cx, vp)[0], &JS_RVAL(cx, vp));
|
||||
JSString *str = JS_ValueToString(cx, JS_ARGV(cx, vp)[0]);
|
||||
if (!str)
|
||||
return JS_FALSE;
|
||||
|
||||
size_t len = JS_GetStringEncodingLength(cx, str);
|
||||
if (len == size_t(-1))
|
||||
return JS_FALSE;
|
||||
|
||||
JSUint32 alloc_len = (len + 1) * sizeof(char);
|
||||
char *buffer = static_cast<char *>(nsMemory::Alloc(alloc_len));
|
||||
if (!buffer)
|
||||
return JS_FALSE;
|
||||
|
||||
JS_EncodeStringToBuffer(str, buffer, len);
|
||||
buffer[len] = '\0';
|
||||
|
||||
nsDependentCString data(buffer, len);
|
||||
nsCAutoString result;
|
||||
|
||||
if (NS_FAILED(nsXPConnect::Base64Encode(data, result))) {
|
||||
JS_ReportError(cx, "Failed to encode base64 data!");
|
||||
return JS_FALSE;
|
||||
}
|
||||
|
||||
str = JS_NewStringCopyN(cx, result.get(), result.Length());
|
||||
if (!str)
|
||||
return JS_FALSE;
|
||||
|
||||
JS_SET_RVAL(cx, vp, STRING_TO_JSVAL(str));
|
||||
return JS_TRUE;
|
||||
}
|
||||
|
||||
static JSFunctionSpec gGlobalFun[] = {
|
||||
|
@ -64,8 +64,6 @@
|
||||
|
||||
#include "jsdIDebuggerService.h"
|
||||
|
||||
#include "xpcquickstubs.h"
|
||||
|
||||
NS_IMPL_THREADSAFE_ISUPPORTS6(nsXPConnect,
|
||||
nsIXPConnect,
|
||||
nsISupportsWeakReference,
|
||||
@ -2617,7 +2615,8 @@ nsXPConnect::GetCaller(JSContext **aJSContext, JSObject **aObj)
|
||||
|
||||
// static
|
||||
nsresult
|
||||
nsXPConnect::Base64Encode(const nsACString &aBinaryData, nsACString &aString)
|
||||
nsXPConnect::Base64Encode(const nsACString &aBinaryData,
|
||||
nsACString &aString)
|
||||
{
|
||||
// Check for overflow.
|
||||
if(aBinaryData.Length() > (PR_UINT32_MAX / 4) * 3)
|
||||
@ -2646,7 +2645,8 @@ nsXPConnect::Base64Encode(const nsACString &aBinaryData, nsACString &aString)
|
||||
|
||||
// static
|
||||
nsresult
|
||||
nsXPConnect::Base64Encode(const nsAString &aString, nsAString &aBinaryData)
|
||||
nsXPConnect::Base64Encode(const nsAString &aString,
|
||||
nsAString &aBinaryData)
|
||||
{
|
||||
NS_LossyConvertUTF16toASCII string(aString);
|
||||
nsCAutoString binaryData;
|
||||
@ -2660,37 +2660,10 @@ nsXPConnect::Base64Encode(const nsAString &aString, nsAString &aBinaryData)
|
||||
return rv;
|
||||
}
|
||||
|
||||
// static
|
||||
JSBool
|
||||
nsXPConnect::Base64Encode(JSContext *cx, jsval val, jsval *out)
|
||||
{
|
||||
NS_ASSERTION(cx, "Null context!");
|
||||
NS_ASSERTION(out, "Null jsval pointer!");
|
||||
|
||||
jsval root = val;
|
||||
xpc_qsACString encodedString(cx, root, &root, xpc_qsACString::eNull,
|
||||
xpc_qsACString::eStringify);
|
||||
if(!encodedString.IsValid())
|
||||
return JS_FALSE;
|
||||
|
||||
nsCAutoString result;
|
||||
if(NS_FAILED(nsXPConnect::Base64Encode(encodedString, result)))
|
||||
{
|
||||
JS_ReportError(cx, "Failed to encode base64 data!");
|
||||
return JS_FALSE;
|
||||
}
|
||||
|
||||
JSString *str = JS_NewStringCopyN(cx, result.get(), result.Length());
|
||||
if (!str)
|
||||
return JS_FALSE;
|
||||
|
||||
*out = STRING_TO_JSVAL(str);
|
||||
return JS_TRUE;
|
||||
}
|
||||
|
||||
// static
|
||||
nsresult
|
||||
nsXPConnect::Base64Decode(const nsACString &aString, nsACString &aBinaryData)
|
||||
nsXPConnect::Base64Decode(const nsACString &aString,
|
||||
nsACString &aBinaryData)
|
||||
{
|
||||
// Check for overflow.
|
||||
if(aString.Length() > PR_UINT32_MAX / 3)
|
||||
@ -2727,7 +2700,8 @@ nsXPConnect::Base64Decode(const nsACString &aString, nsACString &aBinaryData)
|
||||
|
||||
// static
|
||||
nsresult
|
||||
nsXPConnect::Base64Decode(const nsAString &aBinaryData, nsAString &aString)
|
||||
nsXPConnect::Base64Decode(const nsAString &aBinaryData,
|
||||
nsAString &aString)
|
||||
{
|
||||
NS_LossyConvertUTF16toASCII binaryData(aBinaryData);
|
||||
nsCAutoString string;
|
||||
@ -2741,34 +2715,6 @@ nsXPConnect::Base64Decode(const nsAString &aBinaryData, nsAString &aString)
|
||||
return rv;
|
||||
}
|
||||
|
||||
// static
|
||||
JSBool
|
||||
nsXPConnect::Base64Decode(JSContext *cx, jsval val, jsval *out)
|
||||
{
|
||||
NS_ASSERTION(cx, "Null context!");
|
||||
NS_ASSERTION(out, "Null jsval pointer!");
|
||||
|
||||
jsval root = val;
|
||||
xpc_qsACString encodedString(cx, root, &root, xpc_qsACString::eNull,
|
||||
xpc_qsACString::eNull);
|
||||
if(!encodedString.IsValid())
|
||||
return JS_FALSE;
|
||||
|
||||
nsCAutoString result;
|
||||
if(NS_FAILED(nsXPConnect::Base64Decode(encodedString, result)))
|
||||
{
|
||||
JS_ReportError(cx, "Failed to decode base64 string!");
|
||||
return JS_FALSE;
|
||||
}
|
||||
|
||||
JSString *str = JS_NewStringCopyN(cx, result.get(), result.Length());
|
||||
if(!str)
|
||||
return JS_FALSE;
|
||||
|
||||
*out = STRING_TO_JSVAL(str);
|
||||
return JS_TRUE;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsXPConnect::SetDebugModeWhenPossible(PRBool mode)
|
||||
{
|
||||
|
@ -570,18 +570,12 @@ public:
|
||||
static nsresult Base64Encode(const nsAString &aString,
|
||||
nsAString &aBinaryData);
|
||||
|
||||
// If this returns JS_FALSE then an exception will be set on cx.
|
||||
static JSBool Base64Encode(JSContext *cx, jsval val, jsval *out);
|
||||
|
||||
static nsresult Base64Decode(const nsACString &aBinaryData,
|
||||
nsACString &aString);
|
||||
|
||||
static nsresult Base64Decode(const nsAString &aBinaryData,
|
||||
nsAString &aString);
|
||||
|
||||
// If this returns JS_FALSE then an exception will be set on cx.
|
||||
static JSBool Base64Decode(JSContext *cx, jsval val, jsval *out);
|
||||
|
||||
// nsCycleCollectionParticipant
|
||||
NS_IMETHOD RootAndUnlinkJSObjects(void *p);
|
||||
NS_IMETHOD Unlink(void *p);
|
||||
|
@ -709,14 +709,11 @@ xpc_qsDOMString::xpc_qsDOMString(JSContext *cx, jsval v, jsval *pval,
|
||||
mValid = JS_TRUE;
|
||||
}
|
||||
|
||||
xpc_qsACString::xpc_qsACString(JSContext *cx, jsval v, jsval *pval,
|
||||
StringificationBehavior nullBehavior,
|
||||
StringificationBehavior undefinedBehavior)
|
||||
xpc_qsACString::xpc_qsACString(JSContext *cx, jsval v, jsval *pval)
|
||||
{
|
||||
typedef implementation_type::char_traits traits;
|
||||
// From the T_CSTRING case in XPCConvert::JSData2Native.
|
||||
JSString *s = InitOrStringify<traits>(cx, v, pval, nullBehavior,
|
||||
undefinedBehavior);
|
||||
JSString *s = InitOrStringify<traits>(cx, v, pval, eNull, eNull);
|
||||
if (!s)
|
||||
return;
|
||||
|
||||
|
@ -439,9 +439,7 @@ public:
|
||||
class xpc_qsACString : public xpc_qsBasicString<nsACString, nsCString>
|
||||
{
|
||||
public:
|
||||
xpc_qsACString(JSContext *cx, jsval v, jsval *pval,
|
||||
StringificationBehavior nullBehavior = eNull,
|
||||
StringificationBehavior undefinedBehavior = eNull);
|
||||
xpc_qsACString(JSContext *cx, jsval v, jsval *pval);
|
||||
};
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user