]> Cypherpunks repositories - gostls13.git/commitdiff
html: close <option> element when opening <optgroup>
authorAndrew Balholm <andybalholm@gmail.com>
Wed, 26 Oct 2011 22:45:53 +0000 (09:45 +1100)
committerNigel Tao <nigeltao@golang.org>
Wed, 26 Oct 2011 22:45:53 +0000 (09:45 +1100)
Pass tests1.dat, test 34:
<!DOCTYPE html>A<option>B<optgroup>C<select>D</option>E

| <!DOCTYPE html>
| <html>
|   <head>
|   <body>
|     "A"
|     <option>
|       "B"
|     <optgroup>
|       "C"
|       <select>
|         "DE"

Also passes tests 35-48. Test 48 is:
</ COM--MENT >

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

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

index 530942aa8f0904b8445c19917ef428f7925905ce..823f7aad29f5afab4c8aacb5080fcffd6f479ce6 100644 (file)
@@ -594,6 +594,12 @@ func inBodyIM(p *parser) (insertionMode, bool) {
                        }
                        p.popUntil(buttonScopeStopTags, "p")
                        p.addElement("li", p.tok.Attr)
+               case "optgroup", "option":
+                       if p.top().Data == "option" {
+                               p.oe.pop()
+                       }
+                       p.reconstructActiveFormattingElements()
+                       p.addElement(p.tok.Data, p.tok.Attr)
                default:
                        // TODO.
                        p.addElement(p.tok.Data, p.tok.Attr)
index b0ddd9247629b7510290554d7b457056d98f49e2..5022a4f7798f06b034b0e194a8dda6ff72c3048a 100644 (file)
@@ -132,7 +132,7 @@ func TestParser(t *testing.T) {
                rc := make(chan io.Reader)
                go readDat(filename, rc)
                // TODO(nigeltao): Process all test cases, not just a subset.
-               for i := 0; i < 34; i++ {
+               for i := 0; i < 49; i++ {
                        // Parse the #data section.
                        b, err := ioutil.ReadAll(<-rc)
                        if err != nil {