diff options
Diffstat (limited to 'javascript')
-rw-r--r-- | javascript/jsapi.c | 2 | ||||
-rw-r--r-- | javascript/jsapi.h | 4 | ||||
-rw-r--r-- | javascript/jsapi/document.c | 45 |
3 files changed, 43 insertions, 8 deletions
diff --git a/javascript/jsapi.c b/javascript/jsapi.c index 52321db3f..6ba9427bf 100644 --- a/javascript/jsapi.c +++ b/javascript/jsapi.c @@ -133,7 +133,7 @@ bool js_exec(jscontext *ctx, const char *txt, size_t txtlen) { JSContext *cx = (JSContext *)ctx; - //LOG(("%p \"%s\"",cx ,txt)); + LOG(("%p \"%s\"",cx ,txt)); if (ctx == NULL) { return false; diff --git a/javascript/jsapi.h b/javascript/jsapi.h index ac5ada79c..cf099ccf0 100644 --- a/javascript/jsapi.h +++ b/javascript/jsapi.h @@ -86,8 +86,8 @@ JS_NewCompartmentAndGlobalObject(JSContext *cx, #define JS_StrictPropertyStub JS_PropertyStub #define JSString_to_char(injsstring, outchar, outlen) \ - txt = JS_GetStringBytes(u16_txt); \ - outlen = strlen(txt) + outchar = JS_GetStringBytes(injsstring); \ + outlen = strlen(outchar) #else /* #if JS_VERSION <= 180 */ diff --git a/javascript/jsapi/document.c b/javascript/jsapi/document.c index c73dac721..29ed20c1b 100644 --- a/javascript/jsapi/document.c +++ b/javascript/jsapi/document.c @@ -16,13 +16,13 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -#include "javascript/jsapi.h" +#include <dom/dom.h> -#include "utils/log.h" -static JSFunctionSpec jsfunctions_document[] = { - JS_FS_END -}; +#include "javascript/jsapi.h" +#include "utils/config.h" +#include "render/html_internal.h" +#include "utils/log.h" static JSClass jsclass_document = { @@ -40,6 +40,39 @@ static JSClass jsclass_document = }; +static JSBool JSAPI_NATIVE(write, JSContext *cx, uintN argc, jsval *vp) +{ + JSString* u16_txt; + char *txt; + unsigned long length; + struct html_content *htmlc; + + htmlc = JS_GetInstancePrivate(cx, JS_THIS_OBJECT(cx,vp), &jsclass_document, NULL); + if (htmlc == NULL) + return JS_FALSE; + + if (!JS_ConvertArguments(cx, argc, JSAPI_ARGV(cx, vp), "S", &u16_txt)) + return JS_FALSE; + + JSString_to_char(u16_txt, txt, length); + + LOG(("content %p writing %s",htmlc, txt)); + + dom_hubbub_parser_insert_chunk(htmlc->parser_binding, (uint8_t *)txt, length); + + JSAPI_SET_RVAL(cx, vp, JSVAL_VOID); + + return JS_TRUE; +} + +static JSFunctionSpec jsfunctions_document[] = { + JSAPI_FS(write, 1, 0), + JSAPI_FS_END +}; + + + + JSObject *jsapi_new_document(JSContext *cx, JSObject *parent, void *doc_priv) { JSObject *doc; @@ -56,6 +89,8 @@ JSObject *jsapi_new_document(JSContext *cx, JSObject *parent, void *doc_priv) if (doc == NULL) { return NULL; } + + LOG(("setting content to %p",doc_priv)); /* private pointer to browsing context */ if (!JS_SetPrivate(cx, doc, doc_priv)) return NULL; |