diff options
author | Vincent Sanders <vince@kyllikki.org> | 2015-10-09 12:54:40 +0100 |
---|---|---|
committer | Vincent Sanders <vince@kyllikki.org> | 2015-10-09 12:54:40 +0100 |
commit | b72f7507484c235989c78f42ed6644d7a92ad673 (patch) | |
tree | 21fdfae91126fa4be6a13c20567067a2357274e4 | |
parent | f34a223b9a1fb04f67c67edbe81f38b8adf9f73c (diff) | |
download | netsurf-b72f7507484c235989c78f42ed6644d7a92ad673.tar.gz netsurf-b72f7507484c235989c78f42ed6644d7a92ad673.tar.bz2 |
implement cookie reading in js document binding
-rw-r--r-- | javascript/duktape/Document.bnd | 37 |
1 files changed, 33 insertions, 4 deletions
diff --git a/javascript/duktape/Document.bnd b/javascript/duktape/Document.bnd index 7130511a1..8b39ae414 100644 --- a/javascript/duktape/Document.bnd +++ b/javascript/duktape/Document.bnd @@ -11,9 +11,11 @@ class Document { prologue %{ #include "utils/corestrings.h" -#include "render/html_internal.h" #include "utils/libdom.h" #include "utils/utils.h" + +#include "render/html_internal.h" +#include "content/urldb.h" %}; }; @@ -23,12 +25,16 @@ method Document::write() %{ struct html_content *htmlc; duk_size_t text_len; - for (int i = 0; i < duk_get_top(ctx); ++i) + dom_exception err; + const char *text; + + for (int i = 0; i < duk_get_top(ctx); ++i) { duk_safe_to_string(ctx, i); + } duk_concat(ctx, duk_get_top(ctx)); - const char *text = duk_safe_to_lstring(ctx, 0, &text_len); + text = duk_safe_to_lstring(ctx, 0, &text_len); LOG("Writing %*s", (int)text_len, text); - dom_exception err; + err = dom_node_get_user_data(priv->parent.node, corestring_dom___ns_key_html_content_data, &htmlc); @@ -249,3 +255,26 @@ method Document::getElementsByTagName() dom_nodelist_unref(nodes); return 1; %} + +getter Document::cookie() +%{ + char *cookie_str; + struct html_content *htmlc; + dom_exception err; + + err = dom_node_get_user_data(priv->parent.node, + corestring_dom___ns_key_html_content_data, + &htmlc); + if ((err == DOM_NO_ERR) && (htmlc != NULL)) { + cookie_str = urldb_get_cookie(llcache_handle_get_url(htmlc->base.llcache), false); + if (cookie_str != NULL) { + duk_push_string(ctx, cookie_str); + free(cookie_str); + return 1; + } + } else { + LOG("error getting htmlc. parent node:%p htmlc:%p", + priv->parent.node, htmlc); + } + return 0; +%} |