]> Cypherpunks repositories - gostls13.git/commitdiff
html: don't ignore whitespace in or after framesets
authorAndrew Balholm <andybalholm@gmail.com>
Mon, 12 Dec 2011 02:18:01 +0000 (13:18 +1100)
committerNigel Tao <nigeltao@golang.org>
Mon, 12 Dec 2011 02:18:01 +0000 (13:18 +1100)
Pass tests6.dat, test 7:
<frameset></frameset>
foo

| <html>
|   <head>
|   <frameset>
|   "
"

Also pass tests through test 12:
<form><form>

R=nigeltao
CC=golang-dev
https://golang.org/cl/5480061

src/pkg/html/parse.go
src/pkg/html/parse_test.go

index dd2d8165bdb3d732d4998285af62c5d992b37d47..24cb323a59be1b8c2c216e225125c8a2c2023b73 100644 (file)
@@ -1432,6 +1432,18 @@ func inFramesetIM(p *parser) bool {
                        Type: CommentNode,
                        Data: p.tok.Data,
                })
+       case TextToken:
+               // Ignore all text but whitespace.
+               s := strings.Map(func(c rune) rune {
+                       switch c {
+                       case ' ', '\t', '\n', '\f', '\r':
+                               return c
+                       }
+                       return -1
+               }, p.tok.Data)
+               if s != "" {
+                       p.addText(s)
+               }
        case StartTagToken:
                switch p.tok.Data {
                case "html":
@@ -1470,6 +1482,18 @@ func afterFramesetIM(p *parser) bool {
                        Type: CommentNode,
                        Data: p.tok.Data,
                })
+       case TextToken:
+               // Ignore all text but whitespace.
+               s := strings.Map(func(c rune) rune {
+                       switch c {
+                       case ' ', '\t', '\n', '\f', '\r':
+                               return c
+                       }
+                       return -1
+               }, p.tok.Data)
+               if s != "" {
+                       p.addText(s)
+               }
        case StartTagToken:
                switch p.tok.Data {
                case "html":
index 5062a6edcb88f29e63c3cead6df3f44e87a73654..8f8787886cee67bbcd6206184357d6af1276cc79 100644 (file)
@@ -167,7 +167,7 @@ func TestParser(t *testing.T) {
                {"tests3.dat", -1},
                {"tests4.dat", -1},
                {"tests5.dat", -1},
-               {"tests6.dat", 7},
+               {"tests6.dat", 13},
        }
        for _, tf := range testFiles {
                f, err := os.Open("testdata/webkit/" + tf.filename)