Commit a5d30086 authored by Andrew Balholm's avatar Andrew Balholm Committed by Nigel Tao

html: allow whitespace between head and body

Also ignore <head> tag after </head>.

Pass tests6.dat, test 0:
<!doctype html></head> <head>

| <!DOCTYPE html>
| <html>
|   <head>
|   " "
|   <body>

Also pass tests through test 6:
<body>
<div>

R=nigeltao
CC=golang-dev
https://golang.org/cl/5447064
parent 6ea3a268
...@@ -515,7 +515,19 @@ func afterHeadIM(p *parser) bool { ...@@ -515,7 +515,19 @@ func afterHeadIM(p *parser) bool {
implied bool implied bool
) )
switch p.tok.Type { switch p.tok.Type {
case ErrorToken, TextToken: case ErrorToken:
implied = true
framesetOK = true
case TextToken:
s := strings.TrimLeft(p.tok.Data, whitespace)
if len(s) < len(p.tok.Data) {
// Add the initial whitespace to the current node.
p.addText(p.tok.Data[:len(p.tok.Data)-len(s)])
if s == "" {
return true
}
p.tok.Data = s
}
implied = true implied = true
framesetOK = true framesetOK = true
case StartTagToken: case StartTagToken:
...@@ -535,7 +547,8 @@ func afterHeadIM(p *parser) bool { ...@@ -535,7 +547,8 @@ func afterHeadIM(p *parser) bool {
defer p.oe.pop() defer p.oe.pop()
return inHeadIM(p) return inHeadIM(p)
case "head": case "head":
// TODO. // Ignore the token.
return true
default: default:
implied = true implied = true
framesetOK = true framesetOK = true
......
...@@ -167,6 +167,7 @@ func TestParser(t *testing.T) { ...@@ -167,6 +167,7 @@ func TestParser(t *testing.T) {
{"tests3.dat", -1}, {"tests3.dat", -1},
{"tests4.dat", -1}, {"tests4.dat", -1},
{"tests5.dat", -1}, {"tests5.dat", -1},
{"tests6.dat", 7},
} }
for _, tf := range testFiles { for _, tf := range testFiles {
f, err := os.Open("testdata/webkit/" + tf.filename) f, err := os.Open("testdata/webkit/" + tf.filename)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment