ELinks 0.18.0
xhr.c File Reference
#include <curl/curl.h>
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include "elinks.h"
#include "cache/cache.h"
#include "document/view.h"
#include "js/ecmascript.h"
#include "js/quickjs/mapa.h"
#include "js/quickjs.h"
#include "js/quickjs/heartbeat.h"
#include "js/quickjs/xhr.h"
#include "main/select.h"
#include "network/connection.h"
#include "protocol/uri.h"
#include "session/session.h"
#include "util/conv.h"
#include "viewer/text/vs.h"
Include dependency graph for xhr.c:

Macros

#define countof(x)   (sizeof(x) / sizeof((x)[0]))
 

Enumerations

enum  { GET = 1 , HEAD = 2 , POST = 3 }
 

Functions

char * normalize (char *value)
 
static bool valid_header (const char *header)
 
static bool forbidden_header (const char *header)
 
static void onload_run (void *data)
 
static void onloadend_run (void *data)
 
static void onreadystatechange_run (void *data)
 
static void ontimeout_run (void *data)
 
static void xhr_finalizer (JSRuntime *rt, JSValue val)
 
static void xhr_mark (JSRuntime *rt, JSValueConst val, JS_MarkFunc *mark_func)
 
static struct Xhrxhr_get (JSContext *ctx, JSValueConst obj)
 
static void x_loading_callback (struct download *download, struct Xhr *x)
 
static JSValue xhr_constructor (JSContext *ctx, JSValueConst new_target, int argc, JSValueConst *argv)
 
static JSValue xhr_event_get (JSContext *ctx, JSValueConst this_val, int magic)
 
static JSValue xhr_event_set (JSContext *ctx, JSValueConst this_val, JSValueConst value, int magic)
 
static JSValue xhr_readystate_get (JSContext *ctx, JSValueConst this_val)
 
static JSValue xhr_response_get (JSContext *ctx, JSValueConst this_val)
 
static JSValue xhr_responsetext_get (JSContext *ctx, JSValueConst this_val)
 
static JSValue xhr_responsetype_get (JSContext *ctx, JSValueConst this_val)
 
static JSValue xhr_responsetype_set (JSContext *ctx, JSValueConst this_val, JSValueConst value)
 
static JSValue xhr_responseurl_get (JSContext *ctx, JSValueConst this_val)
 
static JSValue xhr_status_get (JSContext *ctx, JSValueConst this_val)
 
static JSValue xhr_statustext_get (JSContext *ctx, JSValueConst this_val)
 
static JSValue xhr_timeout_get (JSContext *ctx, JSValueConst this_val)
 
static JSValue xhr_timeout_set (JSContext *ctx, JSValueConst this_val, JSValueConst value)
 
static JSValue xhr_upload_get (JSContext *ctx, JSValueConst this_val)
 
static JSValue xhr_withcredentials_get (JSContext *ctx, JSValueConst this_val)
 
static JSValue xhr_withcredentials_set (JSContext *ctx, JSValueConst this_val, JSValueConst value)
 
static JSValue xhr_abort (JSContext *ctx, JSValueConst this_val, int argc, JSValueConst *argv)
 
static JSValue xhr_addEventListener (JSContext *ctx, JSValueConst this_val, int argc, JSValueConst *argv)
 
static JSValue xhr_removeEventListener (JSContext *ctx, JSValueConst this_val, int argc, JSValueConst *argv)
 
static JSValue xhr_getallresponseheaders (JSContext *ctx, JSValueConst this_val, int argc, JSValueConst *argv)
 
static JSValue xhr_getresponseheader (JSContext *ctx, JSValueConst this_val, int argc, JSValueConst *argv)
 
static JSValue xhr_open (JSContext *ctx, JSValueConst this_val, int argc, JSValueConst *argv)
 
static JSValue xhr_overridemimetype (JSContext *ctx, JSValueConst this_val, int argc, JSValueConst *argv)
 
static size_t write_data (void *ptr, size_t size, size_t nmemb, void *stream)
 
static JSValue xhr_send (JSContext *ctx, JSValueConst this_val, int argc, JSValueConst *argv)
 
static JSValue xhr_setrequestheader (JSContext *ctx, JSValueConst this_val, int argc, JSValueConst *argv)
 
static void JS_NewGlobalCConstructor2 (JSContext *ctx, JSValue func_obj, const char *name, JSValueConst proto)
 
static JSValueConst JS_NewGlobalCConstructor (JSContext *ctx, const char *name, JSCFunction *func, int length, JSValueConst proto)
 
int js_xhr_init (JSContext *ctx)
 

Variables

static JSClassID xhr_class_id
 
static JSClassDef xhr_class
 
static const JSCFunctionListEntry xhr_class_funcs []
 
static const JSCFunctionListEntry xhr_proto_funcs []
 

Macro Definition Documentation

◆ countof

#define countof ( x)    (sizeof(x) / sizeof((x)[0]))

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
GET 
HEAD 
POST 

Function Documentation

◆ forbidden_header()

static bool forbidden_header ( const char * header)
static

◆ JS_NewGlobalCConstructor()

static JSValueConst JS_NewGlobalCConstructor ( JSContext * ctx,
const char * name,
JSCFunction * func,
int length,
JSValueConst proto )
static

◆ JS_NewGlobalCConstructor2()

static void JS_NewGlobalCConstructor2 ( JSContext * ctx,
JSValue func_obj,
const char * name,
JSValueConst proto )
static

◆ js_xhr_init()

int js_xhr_init ( JSContext * ctx)

◆ normalize()

char * normalize ( char * value)

◆ onload_run()

static void onload_run ( void * data)
static

◆ onloadend_run()

static void onloadend_run ( void * data)
static

◆ onreadystatechange_run()

static void onreadystatechange_run ( void * data)
static

◆ ontimeout_run()

static void ontimeout_run ( void * data)
static

◆ valid_header()

static bool valid_header ( const char * header)
static

◆ write_data()

static size_t write_data ( void * ptr,
size_t size,
size_t nmemb,
void * stream )
static

◆ x_loading_callback()

static void x_loading_callback ( struct download * download,
struct Xhr * x )
static

◆ xhr_abort()

static JSValue xhr_abort ( JSContext * ctx,
JSValueConst this_val,
int argc,
JSValueConst * argv )
static

◆ xhr_addEventListener()

static JSValue xhr_addEventListener ( JSContext * ctx,
JSValueConst this_val,
int argc,
JSValueConst * argv )
static

◆ xhr_constructor()

static JSValue xhr_constructor ( JSContext * ctx,
JSValueConst new_target,
int argc,
JSValueConst * argv )
static

◆ xhr_event_get()

static JSValue xhr_event_get ( JSContext * ctx,
JSValueConst this_val,
int magic )
static

◆ xhr_event_set()

static JSValue xhr_event_set ( JSContext * ctx,
JSValueConst this_val,
JSValueConst value,
int magic )
static

◆ xhr_finalizer()

static void xhr_finalizer ( JSRuntime * rt,
JSValue val )
static

◆ xhr_get()

static struct Xhr * xhr_get ( JSContext * ctx,
JSValueConst obj )
static

◆ xhr_getallresponseheaders()

static JSValue xhr_getallresponseheaders ( JSContext * ctx,
JSValueConst this_val,
int argc,
JSValueConst * argv )
static

◆ xhr_getresponseheader()

static JSValue xhr_getresponseheader ( JSContext * ctx,
JSValueConst this_val,
int argc,
JSValueConst * argv )
static

◆ xhr_mark()

static void xhr_mark ( JSRuntime * rt,
JSValueConst val,
JS_MarkFunc * mark_func )
static

◆ xhr_open()

static JSValue xhr_open ( JSContext * ctx,
JSValueConst this_val,
int argc,
JSValueConst * argv )
static

◆ xhr_overridemimetype()

static JSValue xhr_overridemimetype ( JSContext * ctx,
JSValueConst this_val,
int argc,
JSValueConst * argv )
static

◆ xhr_readystate_get()

static JSValue xhr_readystate_get ( JSContext * ctx,
JSValueConst this_val )
static

◆ xhr_removeEventListener()

static JSValue xhr_removeEventListener ( JSContext * ctx,
JSValueConst this_val,
int argc,
JSValueConst * argv )
static

◆ xhr_response_get()

static JSValue xhr_response_get ( JSContext * ctx,
JSValueConst this_val )
static

◆ xhr_responsetext_get()

static JSValue xhr_responsetext_get ( JSContext * ctx,
JSValueConst this_val )
static

◆ xhr_responsetype_get()

static JSValue xhr_responsetype_get ( JSContext * ctx,
JSValueConst this_val )
static

◆ xhr_responsetype_set()

static JSValue xhr_responsetype_set ( JSContext * ctx,
JSValueConst this_val,
JSValueConst value )
static

◆ xhr_responseurl_get()

static JSValue xhr_responseurl_get ( JSContext * ctx,
JSValueConst this_val )
static

◆ xhr_send()

static JSValue xhr_send ( JSContext * ctx,
JSValueConst this_val,
int argc,
JSValueConst * argv )
static

◆ xhr_setrequestheader()

static JSValue xhr_setrequestheader ( JSContext * ctx,
JSValueConst this_val,
int argc,
JSValueConst * argv )
static

◆ xhr_status_get()

static JSValue xhr_status_get ( JSContext * ctx,
JSValueConst this_val )
static

◆ xhr_statustext_get()

static JSValue xhr_statustext_get ( JSContext * ctx,
JSValueConst this_val )
static

◆ xhr_timeout_get()

static JSValue xhr_timeout_get ( JSContext * ctx,
JSValueConst this_val )
static

◆ xhr_timeout_set()

static JSValue xhr_timeout_set ( JSContext * ctx,
JSValueConst this_val,
JSValueConst value )
static

◆ xhr_upload_get()

static JSValue xhr_upload_get ( JSContext * ctx,
JSValueConst this_val )
static

◆ xhr_withcredentials_get()

static JSValue xhr_withcredentials_get ( JSContext * ctx,
JSValueConst this_val )
static

◆ xhr_withcredentials_set()

static JSValue xhr_withcredentials_set ( JSContext * ctx,
JSValueConst this_val,
JSValueConst value )
static

Variable Documentation

◆ xhr_class

JSClassDef xhr_class
static
Initial value:
= {
"XMLHttpRequest",
.finalizer = xhr_finalizer,
.gc_mark = xhr_mark,
}
static void xhr_mark(JSRuntime *rt, JSValueConst val, JS_MarkFunc *mark_func)
Definition xhr.c:341
static void xhr_finalizer(JSRuntime *rt, JSValue val)
Definition xhr.c:302

◆ xhr_class_funcs

const JSCFunctionListEntry xhr_class_funcs[]
static
Initial value:
= {
JS_PROP_INT32_DEF("UNSENT", XHR_RSTATE_UNSENT, JS_PROP_ENUMERABLE),
JS_PROP_INT32_DEF("OPENED", XHR_RSTATE_OPENED, JS_PROP_ENUMERABLE),
JS_PROP_INT32_DEF("HEADERS_RECEIVED", XHR_RSTATE_HEADERS_RECEIVED, JS_PROP_ENUMERABLE),
JS_PROP_INT32_DEF("LOADING", XHR_RSTATE_LOADING, JS_PROP_ENUMERABLE),
JS_PROP_INT32_DEF("DONE", XHR_RSTATE_DONE, JS_PROP_ENUMERABLE),
}
@ XHR_RSTATE_UNSENT
Definition xhr.h:25
@ XHR_RSTATE_OPENED
Definition xhr.h:26
@ XHR_RSTATE_HEADERS_RECEIVED
Definition xhr.h:27
@ XHR_RSTATE_DONE
Definition xhr.h:29
@ XHR_RSTATE_LOADING
Definition xhr.h:28

◆ xhr_class_id

JSClassID xhr_class_id
static

◆ xhr_proto_funcs

const JSCFunctionListEntry xhr_proto_funcs[]
static
Initial value:
= {
JS_CGETSET_MAGIC_DEF("onabort", xhr_event_get, xhr_event_set, XHR_EVENT_ABORT),
JS_CGETSET_MAGIC_DEF("onerror", xhr_event_get, xhr_event_set, XHR_EVENT_ERROR),
JS_CGETSET_MAGIC_DEF("onload", xhr_event_get, xhr_event_set, XHR_EVENT_LOAD),
JS_CGETSET_MAGIC_DEF("onloadend", xhr_event_get, xhr_event_set, XHR_EVENT_LOAD_END),
JS_CGETSET_MAGIC_DEF("onloadstart", xhr_event_get, xhr_event_set, XHR_EVENT_LOAD_START),
JS_CGETSET_MAGIC_DEF("onprogress", xhr_event_get, xhr_event_set, XHR_EVENT_PROGRESS),
JS_CGETSET_MAGIC_DEF("onreadystatechange", xhr_event_get, xhr_event_set, XHR_EVENT_READY_STATE_CHANGED),
JS_CGETSET_MAGIC_DEF("ontimeout", xhr_event_get, xhr_event_set, XHR_EVENT_TIMEOUT),
JS_CGETSET_DEF("readyState", xhr_readystate_get, NULL),
JS_CGETSET_DEF("response", xhr_response_get, NULL),
JS_CGETSET_DEF("responseText", xhr_responsetext_get, NULL),
JS_CGETSET_DEF("responseType", xhr_responsetype_get, xhr_responsetype_set),
JS_CGETSET_DEF("responseURL", xhr_responseurl_get, NULL),
JS_CGETSET_DEF("status", xhr_status_get, NULL),
JS_CGETSET_DEF("statusText", xhr_statustext_get, NULL),
JS_CGETSET_DEF("timeout", xhr_timeout_get, xhr_timeout_set),
JS_CGETSET_DEF("upload", xhr_upload_get, NULL),
JS_CGETSET_DEF("withCredentials", xhr_withcredentials_get, xhr_withcredentials_set),
JS_CFUNC_DEF("abort", 0, xhr_abort),
JS_CFUNC_DEF("addEventListener", 3, xhr_addEventListener),
JS_CFUNC_DEF("getAllResponseHeaders", 0, xhr_getallresponseheaders),
JS_CFUNC_DEF("getResponseHeader", 1, xhr_getresponseheader),
JS_CFUNC_DEF("open", 5, xhr_open),
JS_CFUNC_DEF("overrideMimeType", 1, xhr_overridemimetype),
JS_CFUNC_DEF("removeEventListener", 3, xhr_removeEventListener),
JS_CFUNC_DEF("send", 1, xhr_send),
JS_CFUNC_DEF("setRequestHeader", 2, xhr_setrequestheader),
}
#define NULL
Definition explodename.c:35
static JSValue xhr_response_get(JSContext *ctx, JSValueConst this_val)
Definition xhr.c:534
static JSValue xhr_event_get(JSContext *ctx, JSValueConst this_val, int magic)
Definition xhr.c:478
static JSValue xhr_open(JSContext *ctx, JSValueConst this_val, int argc, JSValueConst *argv)
Definition xhr.c:982
static JSValue xhr_withcredentials_get(JSContext *ctx, JSValueConst this_val)
Definition xhr.c:780
static JSValue xhr_withcredentials_set(JSContext *ctx, JSValueConst this_val, JSValueConst value)
Definition xhr.c:791
static JSValue xhr_getallresponseheaders(JSContext *ctx, JSValueConst this_val, int argc, JSValueConst *argv)
Definition xhr.c:930
static JSValue xhr_responsetext_get(JSContext *ctx, JSValueConst this_val)
Definition xhr.c:575
static JSValue xhr_setrequestheader(JSContext *ctx, JSValueConst this_val, int argc, JSValueConst *argv)
Definition xhr.c:1296
static JSValue xhr_addEventListener(JSContext *ctx, JSValueConst this_val, int argc, JSValueConst *argv)
Definition xhr.c:827
static JSValue xhr_timeout_get(JSContext *ctx, JSValueConst this_val)
Definition xhr.c:723
static JSValue xhr_overridemimetype(JSContext *ctx, JSValueConst this_val, int argc, JSValueConst *argv)
Definition xhr.c:1151
static JSValue xhr_readystate_get(JSContext *ctx, JSValueConst this_val)
Definition xhr.c:517
static JSValue xhr_event_set(JSContext *ctx, JSValueConst this_val, JSValueConst value, int magic)
Definition xhr.c:495
static JSValue xhr_abort(JSContext *ctx, JSValueConst this_val, int argc, JSValueConst *argv)
Definition xhr.c:803
static JSValue xhr_removeEventListener(JSContext *ctx, JSValueConst this_val, int argc, JSValueConst *argv)
Definition xhr.c:879
static JSValue xhr_getresponseheader(JSContext *ctx, JSValueConst this_val, int argc, JSValueConst *argv)
Definition xhr.c:955
static JSValue xhr_timeout_set(JSContext *ctx, JSValueConst this_val, JSValueConst value)
Definition xhr.c:740
static JSValue xhr_statustext_get(JSContext *ctx, JSValueConst this_val)
Definition xhr.c:702
static JSValue xhr_responsetype_get(JSContext *ctx, JSValueConst this_val)
Definition xhr.c:599
static JSValue xhr_responseurl_get(JSContext *ctx, JSValueConst this_val)
Definition xhr.c:668
static JSValue xhr_status_get(JSContext *ctx, JSValueConst this_val)
Definition xhr.c:685
static JSValue xhr_responsetype_set(JSContext *ctx, JSValueConst this_val, JSValueConst value)
Definition xhr.c:627
static JSValue xhr_upload_get(JSContext *ctx, JSValueConst this_val)
Definition xhr.c:768
static JSValue xhr_send(JSContext *ctx, JSValueConst this_val, int argc, JSValueConst *argv)
Definition xhr.c:1182
@ XHR_EVENT_LOAD_END
Definition xhr.h:16
@ XHR_EVENT_PROGRESS
Definition xhr.h:18
@ XHR_EVENT_LOAD_START
Definition xhr.h:17
@ XHR_EVENT_ABORT
Definition xhr.h:13
@ XHR_EVENT_ERROR
Definition xhr.h:14
@ XHR_EVENT_TIMEOUT
Definition xhr.h:20
@ XHR_EVENT_READY_STATE_CHANGED
Definition xhr.h:19
@ XHR_EVENT_LOAD
Definition xhr.h:15