diff options
author | John Mark Bell <jmb@netsurf-browser.org> | 2008-08-04 09:13:00 +0000 |
---|---|---|
committer | John Mark Bell <jmb@netsurf-browser.org> | 2008-08-04 09:13:00 +0000 |
commit | c7b80c552670814c23cefbc69b699579f8303c27 (patch) | |
tree | 63fe2e941d886efbc034c422f6aa464293bf1583 /src | |
parent | d60ec588f8e5e4cb97e31e6f8c40c7b9a1c2ba4c (diff) | |
download | libhubbub-c7b80c552670814c23cefbc69b699579f8303c27.tar.gz libhubbub-c7b80c552670814c23cefbc69b699579f8303c27.tar.bz2 |
Make scripting enable flag configurable
svn path=/trunk/hubbub/; revision=4895
Diffstat (limited to 'src')
-rw-r--r-- | src/parser.c | 7 | ||||
-rw-r--r-- | src/treebuilder/in_body.c | 5 | ||||
-rw-r--r-- | src/treebuilder/in_head.c | 3 | ||||
-rw-r--r-- | src/treebuilder/internal.h | 2 | ||||
-rw-r--r-- | src/treebuilder/treebuilder.c | 4 | ||||
-rw-r--r-- | src/treebuilder/treebuilder.h | 3 |
6 files changed, 20 insertions, 4 deletions
diff --git a/src/parser.c b/src/parser.c index 8b8dbc5..88979d5 100644 --- a/src/parser.c +++ b/src/parser.c @@ -155,6 +155,13 @@ hubbub_error hubbub_parser_setopt(hubbub_parser *parser, (hubbub_treebuilder_optparams *) params); } break; + case HUBBUB_PARSER_ENABLE_SCRIPTING: + if (parser->tb != NULL) { + result = hubbub_treebuilder_setopt(parser->tb, + HUBBUB_TREEBUILDER_ENABLE_SCRIPTING, + (hubbub_treebuilder_optparams *) params); + } + break; default: result = HUBBUB_INVALID; } diff --git a/src/treebuilder/in_body.c b/src/treebuilder/in_body.c index 699152e..e1a0a8f 100644 --- a/src/treebuilder/in_body.c +++ b/src/treebuilder/in_body.c @@ -297,7 +297,8 @@ bool process_start_tag(hubbub_treebuilder *treebuilder, process_textarea_in_body(treebuilder, token); } else if (type == IFRAME || type == NOEMBED || type == NOFRAMES || - (false /* scripting */ && type == NOSCRIPT)) { + (treebuilder->context.enable_scripting && + type == NOSCRIPT)) { parse_generic_rcdata(treebuilder, token, false); } else if (type == SELECT) { process_select_in_body(treebuilder, token); @@ -411,7 +412,7 @@ bool process_end_tag(hubbub_treebuilder *treebuilder, type == PARAM || type == SELECT || type == SPACER || type == TABLE || type == TEXTAREA || type == WBR || - (false /* scripting enabled */ && + (treebuilder->context.enable_scripting && type == NOSCRIPT)) { /** \todo parse error */ /* } else if (type == EVENT_SOURCE || type == SECTION || diff --git a/src/treebuilder/in_head.c b/src/treebuilder/in_head.c index 79cfbc8..2df1062 100644 --- a/src/treebuilder/in_head.c +++ b/src/treebuilder/in_head.c @@ -130,8 +130,7 @@ bool handle_in_head(hubbub_treebuilder *treebuilder, } else if (type == NOFRAMES || type == STYLE) { parse_generic_rcdata(treebuilder, token, false); } else if (type == NOSCRIPT) { - /** \todo determine if scripting is enabled */ - if (false /*scripting_is_enabled*/) { + if (treebuilder->context.enable_scripting) { parse_generic_rcdata(treebuilder, token, false); } else { insert_element(treebuilder, &token->data.tag); diff --git a/src/treebuilder/internal.h b/src/treebuilder/internal.h index 5c9eb49..059e177 100644 --- a/src/treebuilder/internal.h +++ b/src/treebuilder/internal.h @@ -82,6 +82,8 @@ typedef struct hubbub_treebuilder_context void *document; /**< Pointer to the document node */ + bool enable_scripting; /**< Whether scripting is enabled */ + struct { insertion_mode mode; /**< Insertion mode to return to */ void *node; /**< Node to attach Text child to */ diff --git a/src/treebuilder/treebuilder.c b/src/treebuilder/treebuilder.c index c6d8f69..95a05b5 100644 --- a/src/treebuilder/treebuilder.c +++ b/src/treebuilder/treebuilder.c @@ -236,6 +236,10 @@ hubbub_error hubbub_treebuilder_setopt(hubbub_treebuilder *treebuilder, case HUBBUB_TREEBUILDER_DOCUMENT_NODE: treebuilder->context.document = params->document_node; break; + case HUBBUB_TREEBUILDER_ENABLE_SCRIPTING: + treebuilder->context.enable_scripting = + params->enable_scripting; + break; } return HUBBUB_OK; diff --git a/src/treebuilder/treebuilder.h b/src/treebuilder/treebuilder.h index 67451b8..c7587a8 100644 --- a/src/treebuilder/treebuilder.h +++ b/src/treebuilder/treebuilder.h @@ -27,6 +27,7 @@ typedef enum hubbub_treebuilder_opttype { HUBBUB_TREEBUILDER_ERROR_HANDLER, HUBBUB_TREEBUILDER_TREE_HANDLER, HUBBUB_TREEBUILDER_DOCUMENT_NODE, + HUBBUB_TREEBUILDER_ENABLE_SCRIPTING, } hubbub_treebuilder_opttype; /** @@ -41,6 +42,8 @@ typedef union hubbub_treebuilder_optparams { hubbub_tree_handler *tree_handler; void *document_node; + + bool enable_scripting; } hubbub_treebuilder_optparams; /* Create a hubbub treebuilder */ |