summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Sidwell <andy@entai.co.uk>2008-07-11 13:43:30 +0000
committerAndrew Sidwell <andy@entai.co.uk>2008-07-11 13:43:30 +0000
commit4332ec862291abce4f08dccbacc269e47405148d (patch)
tree02871f23e16e71f5b4cc0e994efd2d3e16303113
parent76cfea6e44fd2ea8334ef3039cb2934127f848d0 (diff)
downloadlibhubbub-4332ec862291abce4f08dccbacc269e47405148d.tar.gz
libhubbub-4332ec862291abce4f08dccbacc269e47405148d.tar.bz2
Fix <script> handling in "after head".
svn path=/trunk/hubbub/; revision=4593
-rw-r--r--src/treebuilder/script_collect.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/treebuilder/script_collect.c b/src/treebuilder/script_collect.c
index 0ec9b12..e55b17c 100644
--- a/src/treebuilder/script_collect.c
+++ b/src/treebuilder/script_collect.c
@@ -93,6 +93,17 @@ bool handle_script_collect_characters(hubbub_treebuilder *treebuilder,
/** \todo insertion point manipulation */
+ /* Scripts in "after head" should be inserted into <head> */
+ /* See 8.2.5.9 The "after head" insertion mode */
+ if (treebuilder->context.collect.mode == AFTER_HEAD) {
+ if (!element_stack_push(treebuilder,
+ HUBBUB_NS_HTML,
+ HEAD,
+ treebuilder->context.head_element)) {
+ /** \todo errors */
+ }
+ }
+
/* Append script node to current node */
success = treebuilder->tree_handler->append_child(
treebuilder->tree_handler->ctx,
@@ -103,6 +114,17 @@ bool handle_script_collect_characters(hubbub_treebuilder *treebuilder,
/** \todo errors */
}
+ if (treebuilder->context.collect.mode == AFTER_HEAD) {
+ hubbub_ns ns;
+ element_type otype;
+ void *node;
+
+ if (!element_stack_pop(treebuilder, &ns, &otype,
+ &node)) {
+ /** \todo errors */
+ }
+ }
+
/** \todo restore insertion point */
treebuilder->tree_handler->unref_node(