diff options
author | Rupinder Singh Khokhar <rsk1coder99@gmail.com> | 2014-07-13 01:31:51 +0530 |
---|---|---|
committer | Rupinder Singh Khokhar <rsk1coder99@gmail.com> | 2014-08-01 21:44:33 +0530 |
commit | cc0119cafe9c29bfb42573d65a2012dce8628c76 (patch) | |
tree | 15d459b3700b357bf3d6c7ea542798d124dc5b90 /src/treebuilder/treebuilder.c | |
parent | 26173b8ca58d8ef19ba4f3d4c61e7e9803204ae5 (diff) | |
download | libhubbub-cc0119cafe9c29bfb42573d65a2012dce8628c76.tar.gz libhubbub-cc0119cafe9c29bfb42573d65a2012dce8628c76.tar.bz2 |
Fixed dd/dt/li start tag handler once again. Also fixed resting of insertion mode. Also fixed some things in after_after_frameset state
Diffstat (limited to 'src/treebuilder/treebuilder.c')
-rw-r--r-- | src/treebuilder/treebuilder.c | 34 |
1 files changed, 29 insertions, 5 deletions
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; } /** |