Merge branch 'master' of git://git.netsurf-browser.org/netsurf

This commit is contained in:
Michael Drake 2012-11-04 20:09:18 +00:00
commit 488c4038fb
8 changed files with 108 additions and 77 deletions

View File

@ -621,6 +621,7 @@ $(eval $(foreach SOURCE,$(filter %.m,$(SOURCES)), \
ifneq ($(MAKECMDGOALS),clean)
-include $(sort $(addprefix $(DEPROOT)/,$(DEPFILES)))
-include $(D_JSAPI_BINDING)
endif
# And rules to build the objects themselves...

View File

@ -9,6 +9,7 @@
# ----------------------------------------------------------------------------
S_JSAPI_BINDING:=
D_JSAPI_BINDING:=
JSAPI_BINDING_htmldocument := javascript/jsapi/htmldocument.bnd
JSAPI_BINDING_htmlelement := javascript/jsapi/htmlelement.bnd
@ -25,10 +26,11 @@ JSAPI_BINDING_nodelist := javascript/jsapi/nodelist.bnd
define convert_jsapi_binding
S_JSAPI_BINDING += $(2)
D_JSAPI_BINDING += $(patsubst %.c,%.d,$(2))
$(2): $(1)
$(2): $(1) $(OBJROOT)/created
$$(VQ)echo " GENBIND: $(1)"
$(Q)nsgenbind -I javascript/WebIDL/ -o $(2) $(1)
$(Q)nsgenbind -I javascript/WebIDL/ -d $(patsubst %.c,%.d,$(2)) -o $(2) $(1)
endef
@ -43,7 +45,7 @@ endif
ifeq ($(WANT_JS_SOURCE),YES)
S_JSAPI =
S_JSAPI :=
S_JAVASCRIPT += content.c jsapi.c $(addprefix jsapi/,$(S_JSAPI))

View File

@ -2511,12 +2511,17 @@ node_presentational_hint_width(nscss_select_ctx *ctx,
if (input) {
err = dom_element_get_attribute(node,
corestring_dom_type, &width);
if ((err != DOM_NO_ERR) || (width == NULL)) {
if (err != DOM_NO_ERR) {
return CSS_PROPERTY_NOT_SET;
}
if (dom_string_lwc_isequal(width,
if ((width == NULL) ||
dom_string_lwc_isequal(width,
corestring_lwc_text) ||
dom_string_lwc_isequal(width,
corestring_lwc_search) ||
dom_string_lwc_isequal(width,
corestring_lwc_file) ||
dom_string_lwc_isequal(width,
corestring_lwc_password)) {
hint->data.length.unit = CSS_UNIT_EX;

View File

@ -2,62 +2,6 @@
webidlfile "dom.idl";
operation getElementById %{
dom_string *elementId_dom;
dom_element *element;
dom_exception exc;
exc = dom_string_create((unsigned char*)elementId, elementId_len, &elementId_dom);
if (exc != DOM_NO_ERR) {
return JS_FALSE;
}
exc = dom_document_get_element_by_id(private->node, elementId_dom, &element);
dom_string_unref(elementId_dom);
if (exc != DOM_NO_ERR) {
return JS_FALSE;
}
if (element != NULL) {
jsret = jsapi_new_HTMLElement(cx, NULL, NULL, element, private->htmlc);
}
%}
/* Dom 4 says this should return a htmlcollection, libdom currently
* returns DOM 3 spec of a nodelist
*/
operation getElementsByTagName %{
dom_string *localName_dom;
/* dom_html_collection *collection;*/
dom_nodelist *nodelist;
dom_exception exc;
exc = dom_string_create((uint8_t *)localName, localName_len, &localName_dom);
if (exc != DOM_NO_ERR) {
return JS_FALSE;
}
exc = dom_document_get_elements_by_tag_name(private->node, localName_dom, /*&collection*/&nodelist);
dom_string_unref(localName_dom);
if (exc != DOM_NO_ERR) {
return JS_FALSE;
}
if (/*collection*/nodelist != NULL) {
/*jsret = jsapi_new_HTMLCollection(cx,
NULL,
NULL,
collection,
private->htmlc);*/
jsret = jsapi_new_NodeList(cx,
NULL,
NULL,
nodelist,
private->htmlc);
}
%}
getter textContent %{
dom_exception exc;

View File

@ -13,30 +13,23 @@ preamble %{
#include "utils/config.h"
#include "utils/log.h"
#include "content/urldb.h"
#include "javascript/jsapi.h"
#include "javascript/jsapi/binding.h"
%}
operation write %{
LOG(("content %p parser %p writing %s",
private->htmlc, private->htmlc->parser, text));
if (private->htmlc->parser != NULL) {
dom_hubbub_parser_insert_chunk(private->htmlc->parser, (uint8_t *)text, text_len);
}
%}
binding document {
type js_libdom; /* the binding type */
type js_libdom; /* the binding type */
/* parameters to constructor value stored in private
* context structure.
*/
private "dom_document *" node;
private "struct html_content *" htmlc;
/* parameters to constructor value stored in private
* context structure.
*/
private "dom_document *" node;
private "struct html_content *" htmlc;
interface Document; /* Web IDL interface to generate */
interface Document; /* Web IDL interface to generate */
}
api finalise %{
@ -44,3 +37,76 @@ api finalise %{
dom_node_unref(private->node);
}
%}
getter cookie %{
char *cookie_str;
cookie_str = urldb_get_cookie(llcache_handle_get_url(private->htmlc->base.llcache));
if (cookie_str != NULL) {
jsret = JS_NewStringCopyN(cx, cookie_str, strlen(cookie_str));
free(cookie_str);
}
%}
operation getElementById %{
dom_string *elementId_dom;
dom_element *element;
dom_exception exc;
exc = dom_string_create((unsigned char*)elementId, elementId_len, &elementId_dom);
if (exc != DOM_NO_ERR) {
return JS_FALSE;
}
exc = dom_document_get_element_by_id(private->node, elementId_dom, &element);
dom_string_unref(elementId_dom);
if (exc != DOM_NO_ERR) {
return JS_FALSE;
}
if (element != NULL) {
jsret = jsapi_new_HTMLElement(cx, NULL, NULL, element, private->htmlc);
}
%}
/*
*
* Dom 4 says this should return a htmlcollection, libdom currently
* returns DOM 3 spec of a nodelist
*/
operation getElementsByTagName %{
dom_string *localName_dom;
/* dom_html_collection *collection;*/
dom_nodelist *nodelist;
dom_exception exc;
exc = dom_string_create((uint8_t *)localName, localName_len, &localName_dom);
if (exc != DOM_NO_ERR) {
return JS_FALSE;
}
exc = dom_document_get_elements_by_tag_name(private->node, localName_dom, /*&collection*/&nodelist);
dom_string_unref(localName_dom);
if (exc != DOM_NO_ERR) {
return JS_FALSE;
}
if (/*collection*/nodelist != NULL) {
/*jsret = jsapi_new_HTMLCollection(cx,
NULL,
NULL,
collection,
private->htmlc);*/
jsret = jsapi_new_NodeList(cx,
NULL,
NULL,
nodelist,
private->htmlc);
}
%}
operation write %{
if (private->htmlc->parser != NULL) {
dom_hubbub_parser_insert_chunk(private->htmlc->parser, (uint8_t *)text, text_len);
}
%}

View File

@ -0,0 +1,9 @@
<html>
<head>
<title>Show cookie</title>
</head>
<body>
<h1>Show cookie</h1>
<p><script>document.write(document.cookie);</script>
</body>
</html>

View File

@ -87,6 +87,7 @@ lwc_string *corestring_lwc_rectangle;
lwc_string *corestring_lwc_refresh;
lwc_string *corestring_lwc_reset;
lwc_string *corestring_lwc_right;
lwc_string *corestring_lwc_search;
lwc_string *corestring_lwc_select;
lwc_string *corestring_lwc_src;
lwc_string *corestring_lwc_style;
@ -230,6 +231,7 @@ void corestrings_fini(void)
CSS_LWC_STRING_UNREF(refresh);
CSS_LWC_STRING_UNREF(reset);
CSS_LWC_STRING_UNREF(right);
CSS_LWC_STRING_UNREF(search);
CSS_LWC_STRING_UNREF(select);
CSS_LWC_STRING_UNREF(src);
CSS_LWC_STRING_UNREF(style);
@ -392,6 +394,7 @@ nserror corestrings_init(void)
CSS_LWC_STRING_INTERN(refresh);
CSS_LWC_STRING_INTERN(reset);
CSS_LWC_STRING_INTERN(right);
CSS_LWC_STRING_INTERN(search);
CSS_LWC_STRING_INTERN(select);
CSS_LWC_STRING_INTERN(src);
CSS_LWC_STRING_INTERN(style);

View File

@ -91,6 +91,7 @@ extern lwc_string *corestring_lwc_rectangle;
extern lwc_string *corestring_lwc_refresh;
extern lwc_string *corestring_lwc_reset;
extern lwc_string *corestring_lwc_right;
extern lwc_string *corestring_lwc_search;
extern lwc_string *corestring_lwc_select;
extern lwc_string *corestring_lwc_src;
extern lwc_string *corestring_lwc_style;