Exemplo n.º 1
0
FRAGMENT(JSString, simple) {
  js::Rooted<JSString *> empty(cx, JS_NewStringCopyN(cx, NULL, 0));
  js::Rooted<JSString *> x(cx, JS_NewStringCopyN(cx, "x", 1));
  js::Rooted<JSString *> z(cx, JS_NewStringCopyZ(cx, "z"));

  // I expect this will be a non-inlined string.
  js::Rooted<JSString *> stars(cx, JS_NewStringCopyZ(cx,
                                                     "*************************"
                                                     "*************************"
                                                     "*************************"
                                                     "*************************"));

  // This may well be an inlined string.
  js::Rooted<JSString *> xz(cx, JS_ConcatStrings(cx, x, z));

  // This will probably be a rope.
  js::Rooted<JSString *> doubleStars(cx, JS_ConcatStrings(cx, stars, stars));

  breakpoint();

  (void) empty;
  (void) x;
  (void) z;
  (void) stars;
  (void) xz;
  (void) doubleStars;
}
Exemplo n.º 2
0
FRAGMENT(JSString, simple) {
  AutoSuppressHazardsForTest noanalysis;

  JS::Rooted<JSString*> empty(cx, JS_NewStringCopyN(cx, nullptr, 0));
  JS::Rooted<JSString*> x(cx, JS_NewStringCopyN(cx, "x", 1));
  JS::Rooted<JSString*> z(cx, JS_NewStringCopyZ(cx, "z"));

  // I expect this will be a non-inlined string.
  JS::Rooted<JSString*> stars(cx,
                              JS_NewStringCopyZ(cx,
                                                "*************************"
                                                "*************************"
                                                "*************************"
                                                "*************************"));

  // This may well be an inlined string.
  JS::Rooted<JSString*> xz(cx, JS_ConcatStrings(cx, x, z));

  // This will probably be a rope.
  JS::Rooted<JSString*> doubleStars(cx, JS_ConcatStrings(cx, stars, stars));

  // Ensure we're not confused by typedefs for pointer types.
  JSString* xRaw = x;

  breakpoint();

  use(empty);
  use(x);
  use(z);
  use(stars);
  use(xz);
  use(doubleStars);
  use(xRaw);
}
Exemplo n.º 3
0
static jsval to_javascript_object(JSContext *context, PyObject *value) {
    if (PyString_Check(value)) {
        JSString *obj = JS_NewStringCopyN(context, PyString_AsString(value), PyString_Size(value));
        return STRING_TO_JSVAL(obj);
    } else if (PyUnicode_Check(value)) {
        PyObject *encoded = PyUnicode_AsUTF8String(value);
        JSString *obj = JS_NewStringCopyN(context, PyString_AsString(encoded), PyString_Size(encoded));
        Py_DECREF(encoded);
        return STRING_TO_JSVAL(obj);
    } else if (PyFloat_Check(value)) {
        return DOUBLE_TO_JSVAL(PyFloat_AsDouble(value));
    } else if (PyInt_Check(value)) {
        return INT_TO_JSVAL(PyInt_AsLong(value));
    } else if (PyLong_Check(value)) {
        return INT_TO_JSVAL(PyLong_AsLong(value));
    } else if (PyList_Check(value)) {
        JSObject *obj = JS_NewArrayObject(context, 0, NULL);
        int i;
        for (i = 0; i < PyList_Size(value); i++) {
            jsval item = to_javascript_object(context, PyList_GetItem(value, i));
            JS_SetElement(context, obj, i, &item);
        }
        return OBJECT_TO_JSVAL(obj);
    } else if (PyTuple_Check(value)) {
        JSObject *obj = JS_NewArrayObject(context, 0, NULL);
        int i;
        for (i = 0; i < PyTuple_Size(value); i++) {
            jsval item = to_javascript_object(context, PyTuple_GetItem(value, i));
            JS_SetElement(context, obj, i, &item);
        }
        return OBJECT_TO_JSVAL(obj);
    } else if (PyDict_Check(value)) {
        JSObject *obj = JS_NewObject(context, NULL, NULL, NULL);
        populate_javascript_object(context, obj, value);
        return OBJECT_TO_JSVAL(obj);
    } else if (PyDateTime_Check(value)) {
        JSObject *obj = JS_NewDateObject(context,
            PyDateTime_GET_YEAR(value),
            PyDateTime_GET_MONTH(value) - 1,
            PyDateTime_GET_DAY(value),
            PyDateTime_DATE_GET_HOUR(value),
            PyDateTime_DATE_GET_MINUTE(value),
            PyDateTime_DATE_GET_SECOND(value));
        return OBJECT_TO_JSVAL(obj);
    } else {
        return JSVAL_NULL;
    }
}
Exemplo n.º 4
0
void CStdDeserializer::ScriptString(const char* name, JS::MutableHandleString out)
{
#if BYTE_ORDER != LITTLE_ENDIAN
#error TODO: probably need to convert JS strings from little-endian
#endif

	JSContext* cx = m_ScriptInterface.GetContext();
	JSAutoRequest rq(cx);

	bool isLatin1;
	Bool("isLatin1", isLatin1);
	if (isLatin1)
	{
		std::vector<JS::Latin1Char> str;
		ReadStringLatin1(name, str);

		out.set(JS_NewStringCopyN(cx, (const char*)str.data(), str.size()));
		if (!out)
			throw PSERROR_Deserialize_ScriptError("JS_NewStringCopyN failed");
	}
	else
	{
		utf16string str;
		ReadStringUTF16(name, str);

		out.set(JS_NewUCStringCopyN(cx, (const char16_t*)str.data(), str.length()));
		if (!out)
			throw PSERROR_Deserialize_ScriptError("JS_NewUCStringCopyN failed");
	}
}
Exemplo n.º 5
0
JSBool JsSite::getAttributeNames(JSContext *cx,JSObject *obj,uintN argc,jsval *argv,jsval *rval)
{
	Site *site = (Site*)JS_GetPrivate(cx,obj);

	JSObject *arr = JS_NewArrayObject(cx,0,NULL);
	if ( arr!=NULL )
	{
		int count=0;

		std::map<std::string,std::string> attributes = site->getAttributes();
		std::map<std::string,std::string>::const_iterator iter;
		for ( iter=attributes.begin(); iter!=attributes.end(); iter++ )
		{
			JSString *str = JS_NewStringCopyN(cx,iter->first.c_str(),iter->first.length());
			jsval element = STRING_TO_JSVAL(str);
			if ( JS_SetElement(cx,arr,count,&element)==JS_TRUE ) {
				count++;
			}
		}

		*rval = OBJECT_TO_JSVAL(arr);
	}

	return JS_TRUE;
}
Atob(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
    JSString *str;
    if (!argc)
        return JS_TRUE;

    str = JS_ValueToString(cx, argv[0]);
    if (!str)
        return JS_FALSE;

    size_t base64StrLength = JS_GetStringLength(str);
    char *base64Str = JS_GetStringBytes(str);

    PRUint32 bin_dataLength = (PRUint32)base64StrLength;
    if (base64Str[base64StrLength - 1] == '=') {
        if (base64Str[base64StrLength - 2] == '=')
            bin_dataLength -= 2;
        else  
            --bin_dataLength;
    }
    bin_dataLength = (PRUint32)((PRUint64)bin_dataLength * 3) / 4;

    char *bin_data = PL_Base64Decode(base64Str, base64StrLength, nsnull);
    if (!bin_data)
        return JS_FALSE;

    str = JS_NewStringCopyN(cx, bin_data, bin_dataLength);
    PR_Free(bin_data);
    if (!str)
        return JS_FALSE;

    *rval = STRING_TO_JSVAL(str);
    return JS_TRUE;
}
Btoa(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
    JSString *str;
    if (!argc)
        return JS_TRUE;

    str = JS_ValueToString(cx, argv[0]);
    if (!str)
        return JS_FALSE;

    char *bin_data = JS_GetStringBytes(str);
    size_t bin_dataLength = JS_GetStringLength(str);

    char *base64 = PL_Base64Encode(bin_data, bin_dataLength, nsnull);
    if (!base64)
        return JS_FALSE;

    PRUint32 base64Length = ((bin_dataLength + 2) / 3) * 4;
    str = JS_NewStringCopyN(cx, base64, base64Length);
    PR_Free(base64);
    if (!str)
        return JS_FALSE;

    *rval = STRING_TO_JSVAL(str);
    return JS_TRUE;
}
Exemplo n.º 8
0
bool
Base64Decode(JSContext *cx, HandleValue val, MutableHandleValue out)
{
    MOZ_ASSERT(cx);

    JS::RootedValue root(cx, val);
    xpc_qsACString encodedString(cx, root, &root, false,
                                 xpc_qsACString::eStringify,
                                 xpc_qsACString::eStringify);
    if (!encodedString.IsValid())
        return false;

    nsAutoCString result;
    if (NS_FAILED(mozilla::Base64Decode(encodedString, result))) {
        JS_ReportError(cx, "Failed to decode base64 string!");
        return false;
    }

    JSString *str = JS_NewStringCopyN(cx, result.get(), result.Length());
    if (!str)
        return false;

    out.setString(str);
    return true;
}
Exemplo n.º 9
0
static JSObject *
add_module_property_to_module_scope (JSContext   *cx,
                                     JSObject    *scope,
                                     const gchar *module_id)
{
  JSObject *module;
  jsval value;
  JSString *st;
  JSAutoCompartment ac(cx, scope);

  /* create the 'module' object */
  module = JS_NewObject (cx, NULL, NULL, NULL);
  g_assert (module != NULL);

  /* add 'module' object as property of scope */
  value = OBJECT_TO_JSVAL (module);
  g_assert (JS_SetProperty (cx, scope, "module", &value));

  /* make 'exports' a permanent and read-only property of scope */
  seal_object_property (cx, scope, "module");

  /* add 'id' property to module object */
  st = JS_NewStringCopyN (cx, module_id, strlen (module_id));
  value = STRING_TO_JSVAL (st);
  g_assert (JS_SetProperty (cx, module, "id", &value));

  /* freeze module object */
  JS_FreezeObject (cx, module);

  return module;
}
Exemplo n.º 10
0
static size_t file_callback(void *ptr, size_t size, size_t nmemb, void *data)
{
	register unsigned int realsize = (unsigned int) (size * nmemb);
	struct curl_obj *co = data;
	uintN argc = 0;
	jsval argv[4];


	if (!co) {
		return 0;
	}
	if (co->function) {
		char *ret;
		argv[argc++] = STRING_TO_JSVAL(JS_NewStringCopyN(co->cx, (char *) ptr, realsize));
		if (co->user_data) {
			argv[argc++] = OBJECT_TO_JSVAL(co->user_data);
		}
		JS_ResumeRequest(co->cx, co->saveDepth);
		JS_CallFunction(co->cx, co->obj, co->function, argc, argv, &co->ret);
		co->saveDepth = JS_SuspendRequest(co->cx);

		if ((ret = JS_GetStringBytes(JS_ValueToString(co->cx, co->ret)))) {
			if (!strcmp(ret, "true") || !strcmp(ret, "undefined")) {
				return realsize;
			} else {
				return 0;
			}
		}
	}

	return realsize;
}
Exemplo n.º 11
0
template<> jsval ScriptInterface::ToJSVal<std::string>(JSContext* cx, const std::string& val)
{
	JSString* str = JS_NewStringCopyN(cx, val.c_str(), val.length());
	if (str)
		return STRING_TO_JSVAL(str);
	return JSVAL_VOID;
}
Exemplo n.º 12
0
static JSBool
jsGetParity( JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval )
{
   jsPort_t *port = (jsPort_t *)JS_GetInstancePrivate( cx, obj, &jsSerialPortClass_, NULL );
   if( port )
   {
      struct termios oldTermState;
      tcgetattr(port->getFd(),&oldTermState);
      char const *parity ;
      if( oldTermState.c_cflag & PARENB )
      {
         if( oldTermState.c_cflag & PARODD )
            parity = "O" ;
         else
            parity = "E" ;
      }
      else
         parity = "N" ;
      
      *rval = STRING_TO_JSVAL( JS_NewStringCopyN( cx, parity, 1 ) );
   }
   else
      *rval = JSVAL_FALSE ;

   return JS_TRUE ;
}
JSAddonId*
NewAddonId(JSContext* cx, const nsACString& id)
{
    JS::RootedString str(cx, JS_NewStringCopyN(cx, id.BeginReading(), id.Length()));
    if (!str)
        return nullptr;
    return JS::NewAddonId(cx, str);
}
Exemplo n.º 14
0
JSBool JsSite::getPath(JSContext *cx,JSObject *obj,uintN argc,jsval *argv,jsval *rval)
{
	Site *site = (Site*)JS_GetPrivate(cx,obj);
	JSString *str = JS_NewStringCopyN(cx,site->getPath().c_str(),site->getPath().length());
	*rval = STRING_TO_JSVAL(str);

	return JS_TRUE;
}
Exemplo n.º 15
0
template<> void ScriptInterface::ToJSVal<std::string>(JSContext* cx, JS::MutableHandleValue ret, const std::string& val)
{
	JSAutoRequest rq(cx);
	JS::RootedString str(cx, JS_NewStringCopyN(cx, val.c_str(), val.length()));
	if (str)
		ret.setString(str);
	else
		ret.setUndefined();
}
Exemplo n.º 16
0
// This is a temporary converter used by nsPlacesImportExportService until
// bug 482911 completes its js rewrite.
jsval
livemarkInfoToJSVal(PRInt64 aId,
                    const nsACString& aGUID,
                    const nsAString& aTitle,
                    PRInt64 aParentId,
                    PRInt32 aIndex,
                    nsCOMPtr<nsIURI>& aFeedURI,
                    nsCOMPtr<nsIURI>& aSiteURI)
{
  nsCOMPtr<nsIXPConnect> xpc = mozilla::services::GetXPConnect();
  NS_ENSURE_TRUE(xpc, JSVAL_NULL);

  nsAXPCNativeCallContext *ncc;
  nsresult rv = xpc->GetCurrentNativeCallContext(&ncc);
  NS_ENSURE_SUCCESS(rv, JSVAL_NULL);
  JSContext *cx = nsnull;
  rv = ncc->GetJSContext(&cx);
  NS_ENSURE_SUCCESS(rv, JSVAL_NULL);
  JSObject *obj = JS_NewObject(cx, NULL, NULL, NULL);
  NS_ENSURE_TRUE(obj, JSVAL_NULL); 

  jsval id;
  NS_ENSURE_TRUE(JS_NewNumberValue(cx, double(aId), &id), JSVAL_NULL);

  JSString* guid = JS_NewStringCopyN(cx, PromiseFlatCString(aGUID).get(),
                                     aGUID.Length());
  NS_ENSURE_TRUE(guid, JSVAL_NULL); 

  JSString* title = JS_NewUCStringCopyN(cx, PromiseFlatString(aTitle).get(),
                                        aTitle.Length());
  NS_ENSURE_TRUE(title, JSVAL_NULL); 

  jsval parentId;
  NS_ENSURE_TRUE(JS_NewNumberValue(cx, double(aParentId), &parentId), JSVAL_NULL);

  jsval feedURI;
  rv = nsContentUtils::WrapNative(cx, JS_GetGlobalForScopeChain(cx),
                                  NS_ISUPPORTS_CAST(nsIURI*, aFeedURI), &feedURI);
  NS_ENSURE_SUCCESS(rv, JSVAL_NULL);

  jsval siteURI;
  rv = nsContentUtils::WrapNative(cx, JS_GetGlobalForScopeChain(cx),
                                  NS_ISUPPORTS_CAST(nsIURI*, aSiteURI), &siteURI);
  NS_ENSURE_SUCCESS(rv, JSVAL_NULL);

  if (!JS_DefineProperty(cx, obj, "id", id, NULL, NULL, JSPROP_ENUMERATE) ||
      !JS_DefineProperty(cx, obj, "guid", STRING_TO_JSVAL(guid), NULL, NULL, JSPROP_ENUMERATE) ||
      !JS_DefineProperty(cx, obj, "title", STRING_TO_JSVAL(title), NULL, NULL, JSPROP_ENUMERATE) ||
      !JS_DefineProperty(cx, obj, "parentId", parentId, NULL, NULL, JSPROP_ENUMERATE) ||
      !JS_DefineProperty(cx, obj, "index", INT_TO_JSVAL(aIndex), NULL, NULL, JSPROP_ENUMERATE) ||
      !JS_DefineProperty(cx, obj, "feedURI", feedURI, NULL, NULL, JSPROP_ENUMERATE) ||
      !JS_DefineProperty(cx, obj, "siteURI", siteURI, NULL, NULL, JSPROP_ENUMERATE)) {
    return JSVAL_NULL;
  }
  return OBJECT_TO_JSVAL(obj);
}
Exemplo n.º 17
0
/**
 * The function used as ZOOTranslate from the JavaScript environment.
 * Use the ZOO-Services messages translation function from the Python
 * environment (ZOO-API)
 *
 * @param cx the JavaScript context
 * @param argc the number of parameters
 * @param argv1 the parameter values
 * @return true
 */
JSBool
JSTranslate(JSContext *cx, uintN argc, jsval *argv1)
{
  jsval *argv = JS_ARGV(cx,argv1);
  char *str=JSValToChar(cx,&argv[0]);
  char *tmpValue=_ss(str);
  JS_SET_RVAL(cx, argv1,STRING_TO_JSVAL(JS_NewStringCopyN(cx,tmpValue,strlen(tmpValue))));  
  JS_MaybeGC(cx);
  return JS_TRUE;
}
Exemplo n.º 18
0
static void
CharacterDataHandler(void *userdata, const char *s, int len)
{
    XMLGraphCallback *cb = (XMLGraphCallback *)userdata;
    JSString *str;
    JSContext *cx = cb->cb.cx;

    str = JS_NewStringCopyN(cx, s, len);
    if (!str)
	return;
    JS_DefineProperty(cx, cb->current, "__cdata__", STRING_TO_JSVAL(str),
		      NULL, NULL, 0);
}
Exemplo n.º 19
0
static void
push_path_to_array (JSContext *cx, JSObject *paths, const gchar *path)
{
  jsval val;
  JSString *st;
  guint len;

  JSAutoCompartment ac(cx, paths);
  st = JS_NewStringCopyN (cx, path, strlen (path));
  val = STRING_TO_JSVAL (st);

  JS_GetArrayLength(cx, paths, &len);
  JS_SetElement (cx, paths, len, &val);
}
Exemplo n.º 20
0
static bool
ToJSString(JSContext* aCx, GMPMediaKeyStatus aStatus,
           JS::MutableHandle<JS::Value> aResult)
{
  auto val = uint32_t(ToMediaKeyStatus(aStatus));
  MOZ_ASSERT(val < ArrayLength(MediaKeyStatusValues::strings));
  JSString* str = JS_NewStringCopyN(aCx,
      MediaKeyStatusValues::strings[val].value,
      MediaKeyStatusValues::strings[val].length);
  if (!str) {
    return false;
  }
  aResult.setString(str);
  return true;
}
Exemplo n.º 21
0
static JSBool
jsCurrentURL( JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval )
{
   JSString *jsCurrent = 0 ;

   std::string current ;
   if( currentURL( current ) )
   {
      jsCurrent = JS_NewStringCopyN( cx, current.c_str(), current.size() );
   }
   else
      jsCurrent = JS_NewStringCopyZ( cx, "unknown" );

   *rval = STRING_TO_JSVAL( jsCurrent );
   return JS_TRUE ;
}
static JSBool
XPC_XOW_toString(JSContext *cx, JSObject *obj, uintN argc, jsval *argv,
                 jsval *rval)
{
  obj = GetWrapper(obj);
  if (!obj) {
    return ThrowException(NS_ERROR_UNEXPECTED, cx);
  }

  JSObject *wrappedObj = GetWrappedObject(cx, obj);
  if (!wrappedObj) {
    // Someone's calling toString on our prototype.
    NS_NAMED_LITERAL_CSTRING(protoString, "[object XPCCrossOriginWrapper]");
    JSString *str =
      JS_NewStringCopyN(cx, protoString.get(), protoString.Length());
    if (!str) {
      return JS_FALSE;
    }
    *rval = STRING_TO_JSVAL(str);
    return JS_TRUE;
  }

  XPCCallContext ccx(JS_CALLER, cx);
  if (!ccx.IsValid()) {
    return ThrowException(NS_ERROR_FAILURE, cx);
  }

  nsresult rv = CanAccessWrapper(cx, wrappedObj, nsnull);
  if (rv == NS_ERROR_DOM_PROP_ACCESS_DENIED) {
    nsIScriptSecurityManager *ssm = XPCWrapper::GetSecurityManager();
    if (!ssm) {
      return ThrowException(NS_ERROR_NOT_INITIALIZED, cx);
    }
    rv = ssm->CheckPropertyAccess(cx, wrappedObj,
                                  STOBJ_GET_CLASS(wrappedObj)->name,
                                  GetRTStringByIndex(cx, XPCJSRuntime::IDX_TO_STRING),
                                  nsIXPCSecurityManager::ACCESS_GET_PROPERTY);
  }
  if (NS_FAILED(rv)) {
    return JS_FALSE;
  }

  XPCWrappedNative *wn =
    XPCWrappedNative::GetWrappedNativeOfJSObject(cx, wrappedObj);
  return XPCWrapper::NativeToString(cx, wn, argc, argv, rval, JS_FALSE);
}
CEXPORT JSBool def_timestep_view_get_filterColor(JSContext *cx, JSHandleObject obj, JSHandleId id, JSMutableHandleValue vp) {
	JS_BeginRequest(cx);
	timestep_view *thiz = (timestep_view*)JS_GetPrivate(obj.get());
	if (thiz) {
		
		rgba prop = thiz->filter_color;

char buf[64];
int len = rgba_to_string(&prop, buf);

vp.setString(JS_NewStringCopyN(cx, buf, len));

		
	}
	JS_EndRequest(cx);
	return JS_TRUE;
}
Exemplo n.º 24
0
JSBool S_CCFileUtils::jsfullPathFromRelativePath(JSContext *cx, uint32_t argc, jsval *vp) {
    if (argc == 1) {
        JSString *arg0;
        JS_ConvertArguments(cx, 1, JS_ARGV(cx, vp), "S", &arg0);
        char *narg0 = JS_EncodeString(cx, arg0);
        const char *ret = CCFileUtils::sharedFileUtils()->fullPathFromRelativePath(narg0);
        if (ret == NULL) {
            JS_SET_RVAL(cx, vp, JSVAL_NULL);
            return JS_TRUE;
        }
        JSString *str = JS_NewStringCopyN(cx, ret, strlen(ret));
        JS_SET_RVAL(cx, vp, STRING_TO_JSVAL(str));        
        return JS_TRUE;
    }
    JS_SET_RVAL(cx, vp, JSVAL_TRUE);
    return JS_TRUE;
}
Exemplo n.º 25
0
static JSBool
jsAbsoluteURL( JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval )
{
   if( ( 1 == argc ) && ( JSVAL_IS_STRING( argv[0] ) ) )
   {
      JSString *urlString = JS_ValueToString( cx, argv[0] );
      std::string url( JS_GetStringBytes( urlString ), JS_GetStringLength( urlString ) );
      std::string absolute ;
      if( absoluteURL( url, absolute ) )
         *rval = STRING_TO_JSVAL( JS_NewStringCopyN( cx, absolute.c_str(), absolute.size() ) );
      else
         *rval = JSVAL_FALSE ;
   }
   else
      *rval = JSVAL_FALSE ;
   return JS_TRUE ;
}
Exemplo n.º 26
0
FRAGMENT(GCCellPtr, simple) {
  JS::GCCellPtr nulll(nullptr);

  JS::Rooted<JSObject*> glob(cx, JS::CurrentGlobalOrNull(cx));
  JS::Rooted<JSString*> empty(cx, JS_NewStringCopyN(cx, nullptr, 0));
  JS::Rooted<Symbol*> unique(cx, NewSymbol(cx, nullptr));

  JS::GCCellPtr object(glob.get());
  JS::GCCellPtr string(empty.get());
  JS::GCCellPtr symbol(unique.get());

  breakpoint();

  (void) nulll;
  (void) object;
  (void) string;
  (void) symbol;
}
Exemplo n.º 27
0
nsresult
Dashboard::GetWebSocketConnections()
{
    jsval val;
    JSString* jsstring;
    JSContext* cx = nsContentUtils::GetSafeJSContext();
    JSAutoRequest request(cx);

    JSObject* finalObject = JS_NewObject(cx, nullptr, nullptr, nullptr);
    if (!finalObject)
        return NS_ERROR_OUT_OF_MEMORY;

    CREATE_ARRAY_OBJECT(hostJs);
    CREATE_ARRAY_OBJECT(msgSentJs);
    CREATE_ARRAY_OBJECT(msgRecvJs);
    CREATE_ARRAY_OBJECT(sizeSentJs);
    CREATE_ARRAY_OBJECT(sizeRecvJs);
    CREATE_ARRAY_OBJECT(encryptJs);

    mozilla::MutexAutoLock lock(mWs.lock);
    for (uint32_t i = 0; i < mWs.data.Length(); i++) {
        jsstring = JS_NewStringCopyN(cx, mWs.data[i].mHost.get(), mWs.data[i].mHost.Length());
        SET_ELEMENT(hostJs, STRING_TO_JSVAL, jsstring, i);
        SET_ELEMENT(msgSentJs, INT_TO_JSVAL, mWs.data[i].mMsgSent, i);
        SET_ELEMENT(msgRecvJs, INT_TO_JSVAL, mWs.data[i].mMsgReceived, i);
        SET_ELEMENT(sizeSentJs, DOUBLE_TO_JSVAL, (double) mWs.data[i].mSizeSent, i);
        SET_ELEMENT(sizeRecvJs, DOUBLE_TO_JSVAL, (double) mWs.data[i].mSizeReceived, i);
        SET_ELEMENT(encryptJs, BOOLEAN_TO_JSVAL, mWs.data[i].mEncrypted, i);
    }

    SET_PROPERTY(finalObject, hostJs, hostport);
    SET_PROPERTY(finalObject, msgSentJs, msgsent);
    SET_PROPERTY(finalObject, msgRecvJs, msgreceived);
    SET_PROPERTY(finalObject, sizeSentJs, sentsize);
    SET_PROPERTY(finalObject, sizeRecvJs, receivedsize);
    SET_PROPERTY(finalObject, encryptJs, encrypted);

    val = OBJECT_TO_JSVAL(finalObject);
    mWs.cb->OnDashboardDataAvailable(val);
    mWs.cb = nullptr;

    return NS_OK;
}
Exemplo n.º 28
0
static JSBool convert_symbol_to_js(JohnsonRuntime* runtime, VALUE symbol, jsval* retval)
{
  JSContext * context = johnson_get_current_context(runtime);
  PREPARE_JROOTS(context, 2);

  VALUE to_s = CALL_RUBY_WRAPPER(rb_funcall_0, symbol, rb_intern("to_s"), 0);
  jsval name = STRING_TO_JSVAL(JS_NewStringCopyN(context, StringValuePtr(to_s), (size_t) StringValueLen(to_s)));

  JROOT(name);

  // calls Johnson.symbolize(name) in JS-land. See lib/prelude.js

  jsval nsJohnson;    
  JCHECK(JS_GetProperty(context, runtime->global, "Johnson", &nsJohnson));
  JROOT(nsJohnson);

  JCHECK(JS_CallFunctionName(context, JSVAL_TO_OBJECT(nsJohnson), "symbolize", 1, &name, retval));

  JRETURN;
}
Exemplo n.º 29
0
static JSBool
jsReadln( JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval )
{
   *rval = JSVAL_FALSE ;

   if( 0 == argc )
   {
      if( !lineQueue_.empty() )
      {
         std::string line = lineQueue_.front();
         lineQueue_.pop_front();
         JSString *str = JS_NewStringCopyN( cx, line.c_str(), line.size() );
         *rval = STRING_TO_JSVAL( str );
      }
   }
   else
      JS_ReportError( cx, "usage: tty.readln()" );

   return JS_TRUE ;
}
Exemplo n.º 30
0
JSBool S_CCFileUtils::jsgetFileData(JSContext *cx, uint32_t argc, jsval *vp) {
    if (argc == 2) {
        JSString *arg0;
        JSString *arg1;
        unsigned long len;
        JS_ConvertArguments(cx, 2, JS_ARGV(cx, vp), "SS", &arg0, &arg1);
        char *narg0 = JS_EncodeString(cx, arg0);
        char *narg1 = JS_EncodeString(cx, arg1);
        unsigned char *ret = CCFileUtils::sharedFileUtils()->getFileData(narg0, narg1, &len);
        if (ret == NULL) {
            JS_SET_RVAL(cx, vp, JSVAL_NULL);
            return JS_TRUE;
        }
        JSString *str = JS_NewStringCopyN(cx, (const char *)ret, len);
        JS_SET_RVAL(cx, vp, STRING_TO_JSVAL(str));        
        return JS_TRUE;
    }
    JS_SET_RVAL(cx, vp, JSVAL_TRUE);
    return JS_TRUE;
}