From cc0119cafe9c29bfb42573d65a2012dce8628c76 Mon Sep 17 00:00:00 2001 From: Rupinder Singh Khokhar Date: Sun, 13 Jul 2014 01:31:51 +0530 Subject: Fixed dd/dt/li start tag handler once again. Also fixed resting of insertion mode. Also fixed some things in after_after_frameset state --- src/treebuilder/treebuilder.c | 34 +++++++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 5 deletions(-) (limited to 'src/treebuilder/treebuilder.c') diff --git a/src/treebuilder/treebuilder.c b/src/treebuilder/treebuilder.c index a965c5a..568a589 100644 --- a/src/treebuilder/treebuilder.c +++ b/src/treebuilder/treebuilder.c @@ -966,8 +966,21 @@ void reset_insertion_mode(hubbub_treebuilder *treebuilder) switch (stack[node].type) { case SELECT: + { /* fragment case */ - break; + uint32_t ancestor; + for(ancestor = node - 1; ancestor > 0; ancestor --) { + if(stack[node].type == TEMPLATE) { + break; + } + if(stack[node].type == TABLE) { + treebuilder->context.mode = IN_CELL; + return; + } + } + treebuilder->context.mode = IN_SELECT; + return; + } case TD: case TH: treebuilder->context.mode = IN_CELL; @@ -985,26 +998,37 @@ void reset_insertion_mode(hubbub_treebuilder *treebuilder) return; case COLGROUP: /* fragment case */ - break; + treebuilder->context.mode = IN_COLUMN_GROUP; + return; case TABLE: treebuilder->context.mode = IN_TABLE; return; case HEAD: /* fragment case */ - break; + treebuilder->context.mode = IN_HEAD; + return; case BODY: treebuilder->context.mode = IN_BODY; return; case FRAMESET: /* fragment case */ - break; + treebuilder->context.mode = IN_FRAMESET; + return; case HTML: + { /* fragment case */ - break; + if(treebuilder->context.head_element == NULL) { + treebuilder->context.mode = BEFORE_HEAD; + } else { + treebuilder->context.mode = AFTER_HEAD; + } + } + return; default: break; } } + return; } /** -- cgit v1.2.3