From c7b80c552670814c23cefbc69b699579f8303c27 Mon Sep 17 00:00:00 2001 From: John Mark Bell Date: Mon, 4 Aug 2008 09:13:00 +0000 Subject: Make scripting enable flag configurable svn path=/trunk/hubbub/; revision=4895 --- src/parser.c | 7 +++++++ src/treebuilder/in_body.c | 5 +++-- src/treebuilder/in_head.c | 3 +-- src/treebuilder/internal.h | 2 ++ src/treebuilder/treebuilder.c | 4 ++++ src/treebuilder/treebuilder.h | 3 +++ 6 files changed, 20 insertions(+), 4 deletions(-) (limited to 'src') 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 */ -- cgit v1.2.3