summaryrefslogtreecommitdiff
path: root/javascript
diff options
context:
space:
mode:
authorVincent Sanders <vince@kyllikki.org>2015-10-09 12:54:40 +0100
committerVincent Sanders <vince@kyllikki.org>2015-10-09 12:54:40 +0100
commitb72f7507484c235989c78f42ed6644d7a92ad673 (patch)
tree21fdfae91126fa4be6a13c20567067a2357274e4 /javascript
parentf34a223b9a1fb04f67c67edbe81f38b8adf9f73c (diff)
downloadnetsurf-b72f7507484c235989c78f42ed6644d7a92ad673.tar.gz
netsurf-b72f7507484c235989c78f42ed6644d7a92ad673.tar.bz2
implement cookie reading in js document binding
Diffstat (limited to 'javascript')
-rw-r--r--javascript/duktape/Document.bnd37
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;
+%}