Ejemplo n.º 1
0
static JSBool SMJS_FUNCTION(widget_message_handler_factory)
{
	char *msg_name;
	u32 i, count;
	SMJS_OBJ
	SMJS_ARGS
	GF_WidgetInterfaceInstance *bifce = (GF_WidgetInterfaceInstance *)SMJS_GET_PRIVATE(c, obj);
	if (!bifce) return JS_FALSE;

	if (!argc) return JS_FALSE;
	if (!JSVAL_IS_STRING(argv[0])) return JS_FALSE;

	msg_name = SMJS_CHARS(c, argv[0]);
	if (!msg_name ) return JS_FALSE;

	SMJS_SET_RVAL( JSVAL_NULL );
	count = gf_list_count(bifce->ifce->messages);
	for (i=0; i<count; i++) {
		GF_WidgetMessage *msg = gf_list_get(bifce->ifce->messages, i);
		if (!strcmp(msg->name, msg_name)) {
			JSObject *an_obj = JS_NewObject(c, &bifce->wid->widget->wm->widgetAnyClass._class, 0, 0);
			SMJS_SET_PRIVATE(c, an_obj, msg);
			JS_DefineProperty(c, an_obj, "msgName", STRING_TO_JSVAL( JS_NewStringCopyZ(c, msg->name) ), 0, 0, JSPROP_READONLY | JSPROP_PERMANENT);
			JS_DefineProperty(c, an_obj, "interfaceHandler", OBJECT_TO_JSVAL( obj ), 0, 0, JSPROP_READONLY | JSPROP_PERMANENT);
			JS_DefineFunction(c, an_obj, "onInvokeReply", widget_call_message_reply_callback, 1, 0);

			if ((argc==2) && JSVAL_IS_OBJECT(argv[1]) && !JSVAL_IS_NULL(argv[1]))
				JS_DefineProperty(c, an_obj, "replyCallback", argv[1], 0, 0, JSPROP_READONLY | JSPROP_PERMANENT);
			
			SMJS_SET_RVAL( OBJECT_TO_JSVAL(an_obj) );
		}
	}
	SMJS_FREE(c, msg_name);
	return JS_TRUE;
}
Ejemplo n.º 2
0
static JSBool SMJS_FUNCTION(widget_get_interfaces)
{
	u32 i, count;
	char *ifce_name;
	JSObject *list;
	jsuint idx;
	jsval v;
	SMJS_OBJ
	SMJS_ARGS
	GF_WidgetInstance *wid = (GF_WidgetInstance *)SMJS_GET_PRIVATE(c, obj);
	if (!wid) return JS_FALSE;

	if (!argc || !JSVAL_IS_STRING(argv[0])) return JS_TRUE;
	ifce_name = SMJS_CHARS(c, argv[0]);

	list = JS_NewArrayObject(c, 0, 0);

	count = gf_list_count(wid->bound_ifces);
	for (i=0; i<count; i++) {
		GF_WidgetInterfaceInstance *ifce = gf_list_get(wid->bound_ifces, i);
		if (strcmp(ifce->ifce->type, ifce_name)) continue;

		widget_interface_js_bind(c, ifce);

		JS_GetArrayLength(c, list, &idx);
		v = OBJECT_TO_JSVAL(ifce->obj);
		JS_SetElement(c, list, idx, &v);
	}
	SMJS_SET_RVAL( OBJECT_TO_JSVAL(list) );
	SMJS_FREE(c, ifce_name);
	return JS_TRUE;
}
Ejemplo n.º 3
0
static JSBool SMJS_FUNCTION(widget_invoke_message)
{
	jsval oval;
	GF_WidgetMessage *msg = NULL;
	SMJS_OBJ
	SMJS_ARGS
	GF_WidgetInterfaceInstance *bifce = (GF_WidgetInterfaceInstance *)SMJS_GET_PRIVATE(c, obj);
	if (!bifce) return JS_FALSE;

	SMJS_SET_RVAL( JSVAL_NULL );

	if (!JSVAL_IS_OBJECT(argv[0])) return JS_FALSE;
	if (JSVAL_IS_NULL(argv[0])) return JS_FALSE;
	msg = (GF_WidgetMessage *)SMJS_GET_PRIVATE(c, JSVAL_TO_OBJECT(argv[0]) );
	if (!msg) return JS_FALSE;

	/*look for JS Callback "invoke" in the widget manager script*/
	if (JS_LookupProperty(c, bifce->ifce->obj, "invoke", &oval)==JS_TRUE) {
		if (JSVAL_IS_OBJECT(oval)) {
			JS_CallFunctionValue(bifce->wid->widget->wm->ctx, bifce->ifce->obj, oval, argc, argv, SMJS_GET_RVAL );
		}
	}

	return JS_TRUE;
}
Ejemplo n.º 4
0
JSBool SMJS_FUNCTION(widget_has_feature)
{
	char *feat_name;
	SMJS_OBJ
	SMJS_ARGS
	GF_WidgetInstance *wid = (GF_WidgetInstance *)SMJS_GET_PRIVATE(c, obj);
	if (!wid) return JS_FALSE;

	if (!argc || !JSVAL_IS_STRING(argv[0])) return JS_TRUE;

	feat_name = SMJS_CHARS(c, argv[0]);
	SMJS_SET_RVAL( BOOLEAN_TO_JSVAL( JS_FALSE ) );

	if (!strcmp(feat_name, "urn:mpeg:systems:mpeg-u:2009")) SMJS_SET_RVAL( BOOLEAN_TO_JSVAL( JS_TRUE ));
	SMJS_FREE(c, feat_name);
	return JS_TRUE;
}
Ejemplo n.º 5
0
static JSBool SMJS_FUNCTION(upnp_action_get_error_code)
{
	NPT_String res;
	SMJS_OBJ
	PLT_Action *action = (PLT_Action *) SMJS_GET_PRIVATE(c, obj);
	if (!action ) return JS_FALSE;
	SMJS_SET_RVAL( INT_TO_JSVAL( action->GetErrorCode() ));
	return JS_TRUE;
}
Ejemplo n.º 6
0
static JSBool SMJS_FUNCTION(upnp_action_get_error)
{
	NPT_String res;
	unsigned int code;
	SMJS_OBJ
	PLT_Action *action = (PLT_Action *) SMJS_GET_PRIVATE(c, obj);
	if (!action ) return JS_FALSE;
	SMJS_SET_RVAL( STRING_TO_JSVAL( JS_NewStringCopyZ(c, action->GetError( &code ) ) ) );
	return JS_TRUE;
}
Ejemplo n.º 7
0
static JSBool SMJS_FUNCTION(upnp_action_get_error_code)
{
	NPT_String res;
	char *arg_name = NULL;
	SMJS_OBJ
	PLT_Action *action = (PLT_Action *) JS_GetPrivate(c, obj);
	if (!action ) return JS_FALSE;
	SMJS_SET_RVAL( INT_TO_JSVAL( action->GetErrorCode() ));
	return JS_TRUE;
}
Ejemplo n.º 8
0
static JSBool SMJS_FUNCTION(upnp_action_get_error)
{
	NPT_String res;
	unsigned int code;
	char *arg_name = NULL;
	SMJS_OBJ
	PLT_Action *action = (PLT_Action *) JS_GetPrivate(c, obj);
	if (!action ) return JS_FALSE;
	SMJS_SET_RVAL( STRING_TO_JSVAL( JS_NewStringCopyZ(c, action->GetError( code ) ) ) );
	return JS_TRUE;
}
Ejemplo n.º 9
0
static JSBool SMJS_FUNCTION(upnp_service_get_scpd)
{
	NPT_String name;
	SMJS_OBJ
	GPAC_ServiceItem *service = (GPAC_ServiceItem *)SMJS_GET_PRIVATE(c, obj);
	if (!service )
		return JS_FALSE;

	service->m_service->GetSCPDXML(name);
	SMJS_SET_RVAL( STRING_TO_JSVAL( JS_NewStringCopyZ(c, name) ) );
	return JS_TRUE;
}
Ejemplo n.º 10
0
static JSBool SMJS_FUNCTION(upnp_service_has_var)
{
	char *name = NULL;
	SMJS_OBJ
	SMJS_ARGS
	GPAC_ServiceItem *service = (GPAC_ServiceItem *)SMJS_GET_PRIVATE(c, obj);
	if (!service || !argc || !JSVAL_IS_STRING(argv[0]) )
		return JS_FALSE;

	name = SMJS_CHARS(c, argv[0]);
	SMJS_SET_RVAL( BOOLEAN_TO_JSVAL( (service->m_service->FindStateVariable(name)==NULL) ? JS_FALSE : JS_TRUE ) );
	SMJS_FREE(c, name);
	return JS_TRUE;
}
Ejemplo n.º 11
0
static JSBool SMJS_FUNCTION(upnp_service_has_action)
{
	PLT_ActionDesc *action;
	char *name = NULL;
	SMJS_OBJ
	SMJS_ARGS
	GPAC_ServiceItem *service = (GPAC_ServiceItem *)SMJS_GET_PRIVATE(c, obj);
	if (!service || !argc || !JSVAL_IS_STRING(argv[0]) )
		return JS_FALSE;

	name = SMJS_CHARS(c, argv[0]);
	action = service->m_service->FindActionDesc(name);
	SMJS_FREE(c, name);

	SMJS_SET_RVAL( BOOLEAN_TO_JSVAL(action ? JS_TRUE : JS_FALSE) );
	if (!action) return JS_TRUE;

	if ((argc==2) && JSVAL_IS_STRING(argv[1])) {
		name = SMJS_CHARS(c, argv[1]);
		if (action->GetArgumentDesc(name) == NULL) SMJS_SET_RVAL( BOOLEAN_TO_JSVAL(JS_FALSE) );
		SMJS_FREE(c, name);
	}
	return JS_TRUE;
}
Ejemplo n.º 12
0
static JSBool SMJS_FUNCTION(upnp_action_get_argument)
{
	char *act_name;
	SMJS_OBJ
	SMJS_ARGS
	GPAC_GenericDevice *device = (GPAC_GenericDevice *)SMJS_GET_PRIVATE(c, obj);
	if (!device || !argc || !JSVAL_IS_STRING(argv[0]) ) return JS_FALSE;

	act_name = SMJS_CHARS(c, argv[0]);
	NPT_String value;

	if (device->act_ref->GetArgumentValue(act_name, value) != NPT_SUCCESS) return JS_FALSE;
	SMJS_SET_RVAL( STRING_TO_JSVAL( JS_NewStringCopyZ(c, value) ));
	SMJS_FREE(c, act_name);
	return JS_TRUE;
}
Ejemplo n.º 13
0
static JSBool SMJS_FUNCTION(upnp_action_get_argument_value)
{
	NPT_String res;
	char *arg_name = NULL;
	SMJS_OBJ
	SMJS_ARGS
	PLT_Action *action = (PLT_Action *) SMJS_GET_PRIVATE(c, obj);
	if (!action || !argc || !JSVAL_IS_STRING(argv[0])) return JS_FALSE;

	arg_name = SMJS_CHARS(c, argv[0]);
	if (!arg_name) return JS_FALSE;

	action->GetArgumentValue(arg_name, res);
	SMJS_SET_RVAL( STRING_TO_JSVAL( JS_NewStringCopyZ(c, res) ));
	SMJS_FREE(c, arg_name);
	return JS_TRUE;
}