From 3f1b68384562fe294a1a263214a3fd26ea869bc9 Mon Sep 17 00:00:00 2001 From: Vincent Sanders Date: Sat, 3 Nov 2012 21:37:06 +0000 Subject: implement dom-getElementsByTagName and nodelist and htmlcollection --- javascript/jsapi/nodelist.bnd | 67 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 javascript/jsapi/nodelist.bnd (limited to 'javascript/jsapi/nodelist.bnd') diff --git a/javascript/jsapi/nodelist.bnd b/javascript/jsapi/nodelist.bnd new file mode 100644 index 000000000..710536dcf --- /dev/null +++ b/javascript/jsapi/nodelist.bnd @@ -0,0 +1,67 @@ +/* Binding to generate NodeList interface + * + * The js_libdom (javascript to libdom) binding type is currently the + * only one implemented and this principly describes that binding. + * + * Copyright 2012 Vincent Sanders + * + * This file is part of NetSurf, http://www.netsurf-browser.org/ + * + * Released under the terms of the MIT License, + * http://www.opensource.org/licenses/mit-license + */ + +/* The hdrcomment are added into the geenrated output comment header */ +hdrcomment "Copyright 2012 Vincent Sanders "; +hdrcomment "This file is part of NetSurf, http://www.netsurf-browser.org/"; +hdrcomment "Released under the terms of the MIT License,"; +hdrcomment " http://www.opensource.org/licenses/mit-license"; + +preamble %{ + +#include + +#include "utils/config.h" +#include "utils/log.h" + +#include "javascript/jsapi.h" +#include "javascript/jsapi/binding.h" + +%} + +webidlfile "dom.idl"; + +binding nodelist { + type js_libdom; /* the binding type */ + + interface NodeList; /* The WebIDL interface to generate a binding for */ + + private "dom_nodelist *" nodelist; + private "struct html_content *" htmlc; +} + +getter length %{ + dom_exception err; + + err = dom_nodelist_get_length(private->nodelist, &jsret); + if (err != DOM_NO_ERR) { + return JS_FALSE; + } +%} + +operation item %{ + dom_exception err; + dom_node *domnode; + + err = dom_nodelist_item(private->nodelist, index, &domnode); + if (err != DOM_NO_ERR) { + return JS_FALSE; + } + + if (domnode != NULL) { + jsret = jsapi_new_HTMLElement(cx, NULL, NULL, (dom_element *)domnode, private->htmlc); + } +%} + + + -- cgit v1.2.3