Skip to content

Commit b9fedac

Browse files
author
James Graham
committed
Select changes with added correctness. Set frameset-ok to False when stray <body> is enountered
--HG-- extra : rebase_source : 58d1d37ccbe80e7906c1be64b4bd8c50685a570e
1 parent 5770d05 commit b9fedac

File tree

2 files changed

+6
-5
lines changed

2 files changed

+6
-5
lines changed

html5lib/html5parser.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1011,6 +1011,7 @@ def startTagBody(self, token):
10111011
or self.tree.openElements[1].name != "body"):
10121012
assert self.parser.innerHTML
10131013
else:
1014+
self.parser.framesetOK = False
10141015
for attr, value in token["data"].iteritems():
10151016
if attr not in self.tree.openElements[1].attributes:
10161017
self.tree.openElements[1].attributes[attr] = value
@@ -2221,7 +2222,7 @@ def startTagSelect(self, token):
22212222

22222223
def startTagInput(self, token):
22232224
self.parser.parseError("unexpected-input-in-select")
2224-
if self.tree.elementInScope("select", variant="select"):
2225+
if not self.tree.elementInScope("select", variant="select"):
22252226
assert self.parser.innerHTML
22262227
self.endTagSelect(impliedTagToken("select"))
22272228
return token

html5lib/treebuilders/_base.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -158,22 +158,22 @@ def elementInScope(self, target, variant=None):
158158
exactNode = hasattr(target, "nameTuple")
159159

160160
listElementsMap = {
161-
None:scopingElements,
161+
None:(scopingElements, False),
162162
"button":(scopingElements | set([(namespaces["html"], "button")]), False),
163163
"list":(scopingElements | set([(namespaces["html"], "ol"),
164164
(namespaces["html"], "ul")]), False),
165165
"table":(set([(namespaces["html"], "html"),
166166
(namespaces["html"], "table")]), False),
167-
"select":(set(["optgroup", "option"]), True)
167+
"select":(set([(namespaces["html"], "optgroup"),
168+
(namespaces["html"], "option")]), True)
168169
}
169170
listElements, invert = listElementsMap[variant]
170171

171172
for node in reversed(self.openElements):
172173
if (node.name == target and not exactNode or
173174
node == target and exactNode):
174175
return True
175-
elif ((not invert and node.nameTuple in listElements) or
176-
(invert and node.nameTuple not in listElements)):
176+
elif (invert ^ (node.nameTuple in listElements)):
177177
return False
178178

179179
assert False # We should never reach this point

0 commit comments

Comments
 (0)