Attachment #629148: Patch part 3, v2 -- Reuse existing style elements more aggressively for bug #757371

View | Details | Raw Unified | Return to bug 757371
Collapse All | Expand All

(-)a/dom/imptests/failures/editing/conformancetest/test_runtest.html.json (-39 / +7 lines)
Line     Link Here 
 Lines 27-49    Link Here 
27
  "[[\"stylewithcss\",\"true\"],[\"backcolor\",\"#00FFFF\"]] \"<table><tbody><tr data-start=0 data-end=2><td>foo<td>bar<td>baz</table>\" queryCommandValue(\"backcolor\") after":true,
27
  "[[\"stylewithcss\",\"true\"],[\"backcolor\",\"#00FFFF\"]] \"<table><tbody><tr data-start=0 data-end=2><td>foo<td>bar<td>baz</table>\" queryCommandValue(\"backcolor\") after":true,
28
  "[[\"stylewithcss\",\"false\"],[\"backcolor\",\"#00FFFF\"]] \"<table><tbody><tr data-start=0 data-end=2><td>foo<td>bar<td>baz</table>\" queryCommandValue(\"backcolor\") after":true,
28
  "[[\"stylewithcss\",\"false\"],[\"backcolor\",\"#00FFFF\"]] \"<table><tbody><tr data-start=0 data-end=2><td>foo<td>bar<td>baz</table>\" queryCommandValue(\"backcolor\") after":true,
29
  "[[\"stylewithcss\",\"true\"],[\"backcolor\",\"#00FFFF\"]] \"<table><tbody data-start=0 data-end=1><tr><td>foo<td>bar<td>baz</table>\" queryCommandValue(\"backcolor\") after":true,
29
  "[[\"stylewithcss\",\"true\"],[\"backcolor\",\"#00FFFF\"]] \"<table><tbody data-start=0 data-end=1><tr><td>foo<td>bar<td>baz</table>\" queryCommandValue(\"backcolor\") after":true,
30
  "[[\"stylewithcss\",\"false\"],[\"backcolor\",\"#00FFFF\"]] \"<table><tbody data-start=0 data-end=1><tr><td>foo<td>bar<td>baz</table>\" queryCommandValue(\"backcolor\") after":true,
30
  "[[\"stylewithcss\",\"false\"],[\"backcolor\",\"#00FFFF\"]] \"<table><tbody data-start=0 data-end=1><tr><td>foo<td>bar<td>baz</table>\" queryCommandValue(\"backcolor\") after":true,
31
  "[[\"stylewithcss\",\"true\"],[\"backcolor\",\"#00FFFF\"]] \"<table data-start=0 data-end=1><tbody><tr><td>foo<td>bar<td>baz</table>\" queryCommandValue(\"backcolor\") after":true,
31
  "[[\"stylewithcss\",\"true\"],[\"backcolor\",\"#00FFFF\"]] \"<table data-start=0 data-end=1><tbody><tr><td>foo<td>bar<td>baz</table>\" queryCommandValue(\"backcolor\") after":true,
32
  "[[\"stylewithcss\",\"false\"],[\"backcolor\",\"#00FFFF\"]] \"<table data-start=0 data-end=1><tbody><tr><td>foo<td>bar<td>baz</table>\" queryCommandValue(\"backcolor\") after":true,
32
  "[[\"stylewithcss\",\"false\"],[\"backcolor\",\"#00FFFF\"]] \"<table data-start=0 data-end=1><tbody><tr><td>foo<td>bar<td>baz</table>\" queryCommandValue(\"backcolor\") after":true,
33
  "[[\"stylewithcss\",\"true\"],[\"backcolor\",\"#00FFFF\"]] \"{<table><tr><td>foo<td>bar<td>baz</table>}\" queryCommandValue(\"backcolor\") after":true,
33
  "[[\"stylewithcss\",\"true\"],[\"backcolor\",\"#00FFFF\"]] \"{<table><tr><td>foo<td>bar<td>baz</table>}\" queryCommandValue(\"backcolor\") after":true,
34
  "[[\"stylewithcss\",\"false\"],[\"backcolor\",\"#00FFFF\"]] \"{<table><tr><td>foo<td>bar<td>baz</table>}\" queryCommandValue(\"backcolor\") after":true,
34
  "[[\"stylewithcss\",\"false\"],[\"backcolor\",\"#00FFFF\"]] \"{<table><tr><td>foo<td>bar<td>baz</table>}\" queryCommandValue(\"backcolor\") after":true,
35
  "[[\"backcolor\",\"#00FFFF\"]] \"<p style=\\\"background-color: rgb(0, 255, 255)\\\">foo[bar]baz</p>\" compare innerHTML":true,
36
  "[[\"backcolor\",\"#00FFFF\"]] \"<p style=\\\"background-color: rgb(0, 255, 255)\\\">foo[bar]baz</p>\" queryCommandValue(\"backcolor\") before":true,
35
  "[[\"backcolor\",\"#00FFFF\"]] \"<p style=\\\"background-color: rgb(0, 255, 255)\\\">foo[bar]baz</p>\" queryCommandValue(\"backcolor\") before":true,
37
  "[[\"backcolor\",\"#00FFFF\"]] \"<p style=\\\"background-color: rgb(0, 255, 255)\\\">foo[bar]baz</p>\" queryCommandValue(\"backcolor\") after":true,
36
  "[[\"backcolor\",\"#00FFFF\"]] \"<p style=\\\"background-color: rgb(0, 255, 255)\\\">foo[bar]baz</p>\" queryCommandValue(\"backcolor\") after":true,
38
  "[[\"backcolor\",\"#00FFFF\"]] \"<p style=\\\"background-color: #00ffff\\\">foo[bar]baz</p>\" compare innerHTML":true,
39
  "[[\"backcolor\",\"#00FFFF\"]] \"<p style=\\\"background-color: #00ffff\\\">foo[bar]baz</p>\" queryCommandValue(\"backcolor\") before":true,
37
  "[[\"backcolor\",\"#00FFFF\"]] \"<p style=\\\"background-color: #00ffff\\\">foo[bar]baz</p>\" queryCommandValue(\"backcolor\") before":true,
40
  "[[\"backcolor\",\"#00FFFF\"]] \"<p style=\\\"background-color: #00ffff\\\">foo[bar]baz</p>\" queryCommandValue(\"backcolor\") after":true,
38
  "[[\"backcolor\",\"#00FFFF\"]] \"<p style=\\\"background-color: #00ffff\\\">foo[bar]baz</p>\" queryCommandValue(\"backcolor\") after":true,
41
  "[[\"backcolor\",\"#00FFFF\"]] \"<p style=\\\"background-color: aqua\\\">foo[bar]baz</p>\" compare innerHTML":true,
42
  "[[\"backcolor\",\"#00FFFF\"]] \"<p style=\\\"background-color: aqua\\\">foo[bar]baz</p>\" queryCommandValue(\"backcolor\") before":true,
39
  "[[\"backcolor\",\"#00FFFF\"]] \"<p style=\\\"background-color: aqua\\\">foo[bar]baz</p>\" queryCommandValue(\"backcolor\") before":true,
43
  "[[\"backcolor\",\"#00FFFF\"]] \"<p style=\\\"background-color: aqua\\\">foo[bar]baz</p>\" queryCommandValue(\"backcolor\") after":true,
40
  "[[\"backcolor\",\"#00FFFF\"]] \"<p style=\\\"background-color: aqua\\\">foo[bar]baz</p>\" queryCommandValue(\"backcolor\") after":true,
44
  "[[\"stylewithcss\",\"true\"],[\"backcolor\",\"#00FFFF\"]] \"{<p style=\\\"background-color: aqua\\\">foo</p><p>bar</p>}\" compare innerHTML":true,
41
  "[[\"stylewithcss\",\"true\"],[\"backcolor\",\"#00FFFF\"]] \"{<p style=\\\"background-color: aqua\\\">foo</p><p>bar</p>}\" compare innerHTML":true,
45
  "[[\"stylewithcss\",\"true\"],[\"backcolor\",\"#00FFFF\"]] \"{<p style=\\\"background-color: aqua\\\">foo</p><p>bar</p>}\" queryCommandIndeterm(\"backcolor\") before":true,
42
  "[[\"stylewithcss\",\"true\"],[\"backcolor\",\"#00FFFF\"]] \"{<p style=\\\"background-color: aqua\\\">foo</p><p>bar</p>}\" queryCommandIndeterm(\"backcolor\") before":true,
46
  "[[\"stylewithcss\",\"true\"],[\"backcolor\",\"#00FFFF\"]] \"{<p style=\\\"background-color: aqua\\\">foo</p><p>bar</p>}\" queryCommandValue(\"backcolor\") before":true,
43
  "[[\"stylewithcss\",\"true\"],[\"backcolor\",\"#00FFFF\"]] \"{<p style=\\\"background-color: aqua\\\">foo</p><p>bar</p>}\" queryCommandValue(\"backcolor\") before":true,
47
  "[[\"stylewithcss\",\"true\"],[\"backcolor\",\"#00FFFF\"]] \"{<p style=\\\"background-color: aqua\\\">foo</p><p>bar</p>}\" queryCommandValue(\"backcolor\") after":true,
44
  "[[\"stylewithcss\",\"true\"],[\"backcolor\",\"#00FFFF\"]] \"{<p style=\\\"background-color: aqua\\\">foo</p><p>bar</p>}\" queryCommandValue(\"backcolor\") after":true,
48
  "[[\"stylewithcss\",\"false\"],[\"backcolor\",\"#00FFFF\"]] \"{<p style=\\\"background-color: aqua\\\">foo</p><p>bar</p>}\" compare innerHTML":true,
45
  "[[\"stylewithcss\",\"false\"],[\"backcolor\",\"#00FFFF\"]] \"{<p style=\\\"background-color: aqua\\\">foo</p><p>bar</p>}\" compare innerHTML":true,
49
  "[[\"stylewithcss\",\"false\"],[\"backcolor\",\"#00FFFF\"]] \"{<p style=\\\"background-color: aqua\\\">foo</p><p>bar</p>}\" queryCommandIndeterm(\"backcolor\") before":true,
46
  "[[\"stylewithcss\",\"false\"],[\"backcolor\",\"#00FFFF\"]] \"{<p style=\\\"background-color: aqua\\\">foo</p><p>bar</p>}\" queryCommandIndeterm(\"backcolor\") before":true,
 Lines 75-97    Link Here 
75
  "[[\"stylewithcss\",\"true\"],[\"backcolor\",\"#00FFFF\"]] \"<div style=\\\"background-color: aqua\\\"><p style=\\\"background-color: tan\\\">b[ar]</p></div>\" queryCommandValue(\"backcolor\") after":true,
72
  "[[\"stylewithcss\",\"true\"],[\"backcolor\",\"#00FFFF\"]] \"<div style=\\\"background-color: aqua\\\"><p style=\\\"background-color: tan\\\">b[ar]</p></div>\" queryCommandValue(\"backcolor\") after":true,
76
  "[[\"stylewithcss\",\"false\"],[\"backcolor\",\"#00FFFF\"]] \"<div style=\\\"background-color: aqua\\\"><p style=\\\"background-color: tan\\\">b[ar]</p></div>\" queryCommandValue(\"backcolor\") before":true,
73
  "[[\"stylewithcss\",\"false\"],[\"backcolor\",\"#00FFFF\"]] \"<div style=\\\"background-color: aqua\\\"><p style=\\\"background-color: tan\\\">b[ar]</p></div>\" queryCommandValue(\"backcolor\") before":true,
77
  "[[\"stylewithcss\",\"false\"],[\"backcolor\",\"#00FFFF\"]] \"<div style=\\\"background-color: aqua\\\"><p style=\\\"background-color: tan\\\">b[ar]</p></div>\" queryCommandValue(\"backcolor\") after":true,
74
  "[[\"stylewithcss\",\"false\"],[\"backcolor\",\"#00FFFF\"]] \"<div style=\\\"background-color: aqua\\\"><p style=\\\"background-color: tan\\\">b[ar]</p></div>\" queryCommandValue(\"backcolor\") after":true,
78
  "[[\"stylewithcss\",\"true\"],[\"backcolor\",\"#00FFFF\"]] \"<span style=\\\"display: block; background-color: aqua\\\"><span style=\\\"display: block; background-color: tan\\\">b[ar]</span></span>\" queryCommandValue(\"backcolor\") before":true,
75
  "[[\"stylewithcss\",\"true\"],[\"backcolor\",\"#00FFFF\"]] \"<span style=\\\"display: block; background-color: aqua\\\"><span style=\\\"display: block; background-color: tan\\\">b[ar]</span></span>\" queryCommandValue(\"backcolor\") before":true,
79
  "[[\"stylewithcss\",\"true\"],[\"backcolor\",\"#00FFFF\"]] \"<span style=\\\"display: block; background-color: aqua\\\"><span style=\\\"display: block; background-color: tan\\\">b[ar]</span></span>\" queryCommandValue(\"backcolor\") after":true,
76
  "[[\"stylewithcss\",\"true\"],[\"backcolor\",\"#00FFFF\"]] \"<span style=\\\"display: block; background-color: aqua\\\"><span style=\\\"display: block; background-color: tan\\\">b[ar]</span></span>\" queryCommandValue(\"backcolor\") after":true,
80
  "[[\"stylewithcss\",\"false\"],[\"backcolor\",\"#00FFFF\"]] \"<span style=\\\"display: block; background-color: aqua\\\"><span style=\\\"display: block; background-color: tan\\\">b[ar]</span></span>\" queryCommandValue(\"backcolor\") after":true,
77
  "[[\"stylewithcss\",\"false\"],[\"backcolor\",\"#00FFFF\"]] \"<span style=\\\"display: block; background-color: aqua\\\"><span style=\\\"display: block; background-color: tan\\\">b[ar]</span></span>\" queryCommandValue(\"backcolor\") after":true,
81
  "[[\"stylewithcss\",\"true\"],[\"backcolor\",\"#00FFFF\"]] \"fo[o<span style=background-color:tan>b]ar</span>baz\" queryCommandIndeterm(\"backcolor\") before":true,
78
  "[[\"stylewithcss\",\"true\"],[\"backcolor\",\"#00FFFF\"]] \"fo[o<span style=background-color:tan>b]ar</span>baz\" queryCommandIndeterm(\"backcolor\") before":true,
82
  "[[\"stylewithcss\",\"true\"],[\"backcolor\",\"#00FFFF\"]] \"fo[o<span style=background-color:tan>b]ar</span>baz\" queryCommandValue(\"backcolor\") after":true,
79
  "[[\"stylewithcss\",\"true\"],[\"backcolor\",\"#00FFFF\"]] \"fo[o<span style=background-color:tan>b]ar</span>baz\" queryCommandValue(\"backcolor\") after":true,
83
  "[[\"stylewithcss\",\"false\"],[\"backcolor\",\"#00FFFF\"]] \"fo[o<span style=background-color:tan>b]ar</span>baz\" compare innerHTML":true,
84
  "[[\"stylewithcss\",\"false\"],[\"backcolor\",\"#00FFFF\"]] \"fo[o<span style=background-color:tan>b]ar</span>baz\" queryCommandIndeterm(\"backcolor\") before":true,
80
  "[[\"stylewithcss\",\"false\"],[\"backcolor\",\"#00FFFF\"]] \"fo[o<span style=background-color:tan>b]ar</span>baz\" queryCommandIndeterm(\"backcolor\") before":true,
85
  "[[\"stylewithcss\",\"false\"],[\"backcolor\",\"#00FFFF\"]] \"fo[o<span style=background-color:tan>b]ar</span>baz\" queryCommandValue(\"backcolor\") after":true,
81
  "[[\"stylewithcss\",\"false\"],[\"backcolor\",\"#00FFFF\"]] \"fo[o<span style=background-color:tan>b]ar</span>baz\" queryCommandValue(\"backcolor\") after":true,
86
  "[[\"stylewithcss\",\"true\"],[\"backcolor\",\"#00FFFF\"]] \"foo<span style=background-color:tan>ba[r</span>b]az\" queryCommandIndeterm(\"backcolor\") before":true,
82
  "[[\"stylewithcss\",\"true\"],[\"backcolor\",\"#00FFFF\"]] \"foo<span style=background-color:tan>ba[r</span>b]az\" queryCommandIndeterm(\"backcolor\") before":true,
87
  "[[\"stylewithcss\",\"true\"],[\"backcolor\",\"#00FFFF\"]] \"foo<span style=background-color:tan>ba[r</span>b]az\" queryCommandValue(\"backcolor\") before":true,
83
  "[[\"stylewithcss\",\"true\"],[\"backcolor\",\"#00FFFF\"]] \"foo<span style=background-color:tan>ba[r</span>b]az\" queryCommandValue(\"backcolor\") before":true,
88
  "[[\"stylewithcss\",\"true\"],[\"backcolor\",\"#00FFFF\"]] \"foo<span style=background-color:tan>ba[r</span>b]az\" queryCommandValue(\"backcolor\") after":true,
84
  "[[\"stylewithcss\",\"true\"],[\"backcolor\",\"#00FFFF\"]] \"foo<span style=background-color:tan>ba[r</span>b]az\" queryCommandValue(\"backcolor\") after":true,
89
  "[[\"stylewithcss\",\"false\"],[\"backcolor\",\"#00FFFF\"]] \"foo<span style=background-color:tan>ba[r</span>b]az\" compare innerHTML":true,
90
  "[[\"stylewithcss\",\"false\"],[\"backcolor\",\"#00FFFF\"]] \"foo<span style=background-color:tan>ba[r</span>b]az\" queryCommandIndeterm(\"backcolor\") before":true,
85
  "[[\"stylewithcss\",\"false\"],[\"backcolor\",\"#00FFFF\"]] \"foo<span style=background-color:tan>ba[r</span>b]az\" queryCommandIndeterm(\"backcolor\") before":true,
91
  "[[\"stylewithcss\",\"false\"],[\"backcolor\",\"#00FFFF\"]] \"foo<span style=background-color:tan>ba[r</span>b]az\" queryCommandValue(\"backcolor\") after":true,
86
  "[[\"stylewithcss\",\"false\"],[\"backcolor\",\"#00FFFF\"]] \"foo<span style=background-color:tan>ba[r</span>b]az\" queryCommandValue(\"backcolor\") after":true,
92
  "[[\"backcolor\",\"#00FFFF\"]] \"fo[o<span style=background-color:tan>bar</span>b]az\" queryCommandIndeterm(\"backcolor\") before":true,
87
  "[[\"backcolor\",\"#00FFFF\"]] \"fo[o<span style=background-color:tan>bar</span>b]az\" queryCommandIndeterm(\"backcolor\") before":true,
93
  "[[\"backcolor\",\"#00FFFF\"]] \"fo[o<span style=background-color:tan>bar</span>b]az\" queryCommandValue(\"backcolor\") after":true,
88
  "[[\"backcolor\",\"#00FFFF\"]] \"fo[o<span style=background-color:tan>bar</span>b]az\" queryCommandValue(\"backcolor\") after":true,
94
  "[[\"stylewithcss\",\"true\"],[\"backcolor\",\"#00FFFF\"]] \"foo[<span style=background-color:tan>b]ar</span>baz\" queryCommandValue(\"backcolor\") before":true,
89
  "[[\"stylewithcss\",\"true\"],[\"backcolor\",\"#00FFFF\"]] \"foo[<span style=background-color:tan>b]ar</span>baz\" queryCommandValue(\"backcolor\") before":true,
95
  "[[\"stylewithcss\",\"true\"],[\"backcolor\",\"#00FFFF\"]] \"foo[<span style=background-color:tan>b]ar</span>baz\" queryCommandValue(\"backcolor\") after":true,
90
  "[[\"stylewithcss\",\"true\"],[\"backcolor\",\"#00FFFF\"]] \"foo[<span style=background-color:tan>b]ar</span>baz\" queryCommandValue(\"backcolor\") after":true,
96
  "[[\"stylewithcss\",\"false\"],[\"backcolor\",\"#00FFFF\"]] \"foo[<span style=background-color:tan>b]ar</span>baz\" queryCommandValue(\"backcolor\") before":true,
91
  "[[\"stylewithcss\",\"false\"],[\"backcolor\",\"#00FFFF\"]] \"foo[<span style=background-color:tan>b]ar</span>baz\" queryCommandValue(\"backcolor\") before":true,
97
  "[[\"stylewithcss\",\"false\"],[\"backcolor\",\"#00FFFF\"]] \"foo[<span style=background-color:tan>b]ar</span>baz\" queryCommandValue(\"backcolor\") after":true,
92
  "[[\"stylewithcss\",\"false\"],[\"backcolor\",\"#00FFFF\"]] \"foo[<span style=background-color:tan>b]ar</span>baz\" queryCommandValue(\"backcolor\") after":true,
 Lines 109-125    Link Here 
109
  "[[\"stylewithcss\",\"true\"],[\"backcolor\",\"#00FFFF\"]] \"<span style=background-color:tan>fo[o</span><span style=background-color:yellow>b]ar</span>\" queryCommandValue(\"backcolor\") after":true,
104
  "[[\"stylewithcss\",\"true\"],[\"backcolor\",\"#00FFFF\"]] \"<span style=background-color:tan>fo[o</span><span style=background-color:yellow>b]ar</span>\" queryCommandValue(\"backcolor\") after":true,
110
  "[[\"stylewithcss\",\"false\"],[\"backcolor\",\"#00FFFF\"]] \"<span style=background-color:tan>fo[o</span><span style=background-color:yellow>b]ar</span>\" queryCommandIndeterm(\"backcolor\") before":true,
105
  "[[\"stylewithcss\",\"false\"],[\"backcolor\",\"#00FFFF\"]] \"<span style=background-color:tan>fo[o</span><span style=background-color:yellow>b]ar</span>\" queryCommandIndeterm(\"backcolor\") before":true,
111
  "[[\"stylewithcss\",\"false\"],[\"backcolor\",\"#00FFFF\"]] \"<span style=background-color:tan>fo[o</span><span style=background-color:yellow>b]ar</span>\" queryCommandValue(\"backcolor\") after":true,
106
  "[[\"stylewithcss\",\"false\"],[\"backcolor\",\"#00FFFF\"]] \"<span style=background-color:tan>fo[o</span><span style=background-color:yellow>b]ar</span>\" queryCommandValue(\"backcolor\") after":true,
112
  "[[\"stylewithcss\",\"true\"],[\"backcolor\",\"#00FFFF\"]] \"<span style=background-color:tan>fo[o</span><span style=background-color:tan>b]ar</span>\" queryCommandValue(\"backcolor\") before":true,
107
  "[[\"stylewithcss\",\"true\"],[\"backcolor\",\"#00FFFF\"]] \"<span style=background-color:tan>fo[o</span><span style=background-color:tan>b]ar</span>\" queryCommandValue(\"backcolor\") before":true,
113
  "[[\"stylewithcss\",\"true\"],[\"backcolor\",\"#00FFFF\"]] \"<span style=background-color:tan>fo[o</span><span style=background-color:tan>b]ar</span>\" queryCommandValue(\"backcolor\") after":true,
108
  "[[\"stylewithcss\",\"true\"],[\"backcolor\",\"#00FFFF\"]] \"<span style=background-color:tan>fo[o</span><span style=background-color:tan>b]ar</span>\" queryCommandValue(\"backcolor\") after":true,
114
  "[[\"stylewithcss\",\"false\"],[\"backcolor\",\"#00FFFF\"]] \"<span style=background-color:tan>fo[o</span><span style=background-color:tan>b]ar</span>\" queryCommandValue(\"backcolor\") after":true,
109
  "[[\"stylewithcss\",\"false\"],[\"backcolor\",\"#00FFFF\"]] \"<span style=background-color:tan>fo[o</span><span style=background-color:tan>b]ar</span>\" queryCommandValue(\"backcolor\") after":true,
115
  "[[\"stylewithcss\",\"true\"],[\"backcolor\",\"#00FFFF\"]] \"<span style=background-color:tan>fo[o<span style=background-color:transparent>b]ar</span></span>\" queryCommandValue(\"backcolor\") before":true,
110
  "[[\"stylewithcss\",\"true\"],[\"backcolor\",\"#00FFFF\"]] \"<span style=background-color:tan>fo[o<span style=background-color:transparent>b]ar</span></span>\" queryCommandValue(\"backcolor\") before":true,
116
  "[[\"stylewithcss\",\"true\"],[\"backcolor\",\"#00FFFF\"]] \"<span style=background-color:tan>fo[o<span style=background-color:transparent>b]ar</span></span>\" queryCommandValue(\"backcolor\") after":true,
111
  "[[\"stylewithcss\",\"true\"],[\"backcolor\",\"#00FFFF\"]] \"<span style=background-color:tan>fo[o<span style=background-color:transparent>b]ar</span></span>\" queryCommandValue(\"backcolor\") after":true,
117
  "[[\"stylewithcss\",\"false\"],[\"backcolor\",\"#00FFFF\"]] \"<span style=background-color:tan>fo[o<span style=background-color:transparent>b]ar</span></span>\" compare innerHTML":true,
118
  "[[\"stylewithcss\",\"false\"],[\"backcolor\",\"#00FFFF\"]] \"<span style=background-color:tan>fo[o<span style=background-color:transparent>b]ar</span></span>\" queryCommandValue(\"backcolor\") after":true,
112
  "[[\"stylewithcss\",\"false\"],[\"backcolor\",\"#00FFFF\"]] \"<span style=background-color:tan>fo[o<span style=background-color:transparent>b]ar</span></span>\" queryCommandValue(\"backcolor\") after":true,
119
  "[[\"stylewithcss\",\"true\"],[\"bold\",\"\"]] \"<span>[foo</span> <span>bar]</span>\" compare innerHTML":true,
113
  "[[\"stylewithcss\",\"true\"],[\"bold\",\"\"]] \"<span>[foo</span> <span>bar]</span>\" compare innerHTML":true,
120
  "[[\"stylewithcss\",\"true\"],[\"bold\",\"\"]] \"<span>[foo</span> <span>bar]</span>\" queryCommandIndeterm(\"bold\") before":true,
114
  "[[\"stylewithcss\",\"true\"],[\"bold\",\"\"]] \"<span>[foo</span> <span>bar]</span>\" queryCommandIndeterm(\"bold\") before":true,
121
  "[[\"stylewithcss\",\"false\"],[\"bold\",\"\"]] \"<span>[foo</span> <span>bar]</span>\" queryCommandIndeterm(\"bold\") before":true,
115
  "[[\"stylewithcss\",\"false\"],[\"bold\",\"\"]] \"<span>[foo</span> <span>bar]</span>\" queryCommandIndeterm(\"bold\") before":true,
122
  "[[\"stylewithcss\",\"true\"],[\"bold\",\"\"]] \"<p>[foo</p><p> <span>bar</span> </p><p>baz]</p>\" compare innerHTML":true,
116
  "[[\"stylewithcss\",\"true\"],[\"bold\",\"\"]] \"<p>[foo</p><p> <span>bar</span> </p><p>baz]</p>\" compare innerHTML":true,
123
  "[[\"stylewithcss\",\"true\"],[\"bold\",\"\"]] \"<p>[foo</p><p> <span>bar</span> </p><p>baz]</p>\" queryCommandIndeterm(\"bold\") before":true,
117
  "[[\"stylewithcss\",\"true\"],[\"bold\",\"\"]] \"<p>[foo</p><p> <span>bar</span> </p><p>baz]</p>\" queryCommandIndeterm(\"bold\") before":true,
124
  "[[\"stylewithcss\",\"false\"],[\"bold\",\"\"]] \"<p>[foo</p><p> <span>bar</span> </p><p>baz]</p>\" queryCommandIndeterm(\"bold\") before":true,
118
  "[[\"stylewithcss\",\"false\"],[\"bold\",\"\"]] \"<p>[foo</p><p> <span>bar</span> </p><p>baz]</p>\" queryCommandIndeterm(\"bold\") before":true,
125
  "[[\"bold\",\"\"]] \"<span>foo[</span><span>]bar</span>\" queryCommandState(\"bold\") after":true,
119
  "[[\"bold\",\"\"]] \"<span>foo[</span><span>]bar</span>\" queryCommandState(\"bold\") after":true,
 Lines 139-159    Link Here 
139
  "[[\"bold\",\"\"]] \"<span contenteditable=false>fo[o<span contenteditable=true>b]ar</span>baz</span>\": execCommand(\"bold\", false, \"\") return value":true,
133
  "[[\"bold\",\"\"]] \"<span contenteditable=false>fo[o<span contenteditable=true>b]ar</span>baz</span>\": execCommand(\"bold\", false, \"\") return value":true,
140
  "[[\"bold\",\"\"]] \"<span contenteditable=false>fo[<b>o<span contenteditable=true>bar</span>b</b>]az</span>\": execCommand(\"bold\", false, \"\") return value":true,
134
  "[[\"bold\",\"\"]] \"<span contenteditable=false>fo[<b>o<span contenteditable=true>bar</span>b</b>]az</span>\": execCommand(\"bold\", false, \"\") return value":true,
141
  "[[\"stylewithcss\",\"true\"],[\"bold\",\"\"]] \"<table><tbody data-start=0 data-end=1><tr><td>foo<td>bar<td>baz</table>\" queryCommandIndeterm(\"bold\") before":true,
135
  "[[\"stylewithcss\",\"true\"],[\"bold\",\"\"]] \"<table><tbody data-start=0 data-end=1><tr><td>foo<td>bar<td>baz</table>\" queryCommandIndeterm(\"bold\") before":true,
142
  "[[\"stylewithcss\",\"false\"],[\"bold\",\"\"]] \"<table><tbody data-start=0 data-end=1><tr><td>foo<td>bar<td>baz</table>\" queryCommandIndeterm(\"bold\") before":true,
136
  "[[\"stylewithcss\",\"false\"],[\"bold\",\"\"]] \"<table><tbody data-start=0 data-end=1><tr><td>foo<td>bar<td>baz</table>\" queryCommandIndeterm(\"bold\") before":true,
143
  "[[\"stylewithcss\",\"true\"],[\"bold\",\"\"]] \"<table data-start=0 data-end=1><tbody><tr><td>foo<td>bar<td>baz</table>\" queryCommandIndeterm(\"bold\") before":true,
137
  "[[\"stylewithcss\",\"true\"],[\"bold\",\"\"]] \"<table data-start=0 data-end=1><tbody><tr><td>foo<td>bar<td>baz</table>\" queryCommandIndeterm(\"bold\") before":true,
144
  "[[\"stylewithcss\",\"false\"],[\"bold\",\"\"]] \"<table data-start=0 data-end=1><tbody><tr><td>foo<td>bar<td>baz</table>\" queryCommandIndeterm(\"bold\") before":true,
138
  "[[\"stylewithcss\",\"false\"],[\"bold\",\"\"]] \"<table data-start=0 data-end=1><tbody><tr><td>foo<td>bar<td>baz</table>\" queryCommandIndeterm(\"bold\") before":true,
145
  "[[\"stylewithcss\",\"true\"],[\"bold\",\"\"]] \"{<table><tr><td>foo<td>bar<td>baz</table>}\" queryCommandIndeterm(\"bold\") before":true,
139
  "[[\"stylewithcss\",\"true\"],[\"bold\",\"\"]] \"{<table><tr><td>foo<td>bar<td>baz</table>}\" queryCommandIndeterm(\"bold\") before":true,
146
  "[[\"stylewithcss\",\"false\"],[\"bold\",\"\"]] \"{<table><tr><td>foo<td>bar<td>baz</table>}\" queryCommandIndeterm(\"bold\") before":true,
140
  "[[\"stylewithcss\",\"false\"],[\"bold\",\"\"]] \"{<table><tr><td>foo<td>bar<td>baz</table>}\" queryCommandIndeterm(\"bold\") before":true,
147
  "[[\"stylewithcss\",\"true\"],[\"bold\",\"\"]] \"<b>foo</b>[bar]<b>baz</b>\" compare innerHTML":true,
148
  "[[\"stylewithcss\",\"false\"],[\"bold\",\"\"]] \"<b>foo</b>[bar]<b>baz</b>\" compare innerHTML":true,
149
  "[[\"bold\",\"\"]] \"foo<strong>bar</strong>[baz]\" compare innerHTML":true,
150
  "[[\"bold\",\"\"]] \"[foo]<strong>bar</strong>baz\" compare innerHTML":true,
151
  "[[\"bold\",\"\"]] \"<strong>foo</strong>[bar]<strong>baz</strong>\" compare innerHTML":true,
152
  "[[\"bold\",\"\"]] \"<b>foo</b>[bar]<strong>baz</strong>\" compare innerHTML":true,
141
  "[[\"bold\",\"\"]] \"<b>foo</b>[bar]<strong>baz</strong>\" compare innerHTML":true,
153
  "[[\"stylewithcss\",\"true\"],[\"bold\",\"\"]] \"<strong>foo</strong>[bar]<b>baz</b>\" compare innerHTML":true,
142
  "[[\"stylewithcss\",\"true\"],[\"bold\",\"\"]] \"<strong>foo</strong>[bar]<b>baz</b>\" compare innerHTML":true,
154
  "[[\"stylewithcss\",\"false\"],[\"bold\",\"\"]] \"<strong>foo</strong>[bar]<b>baz</b>\" compare innerHTML":true,
143
  "[[\"stylewithcss\",\"false\"],[\"bold\",\"\"]] \"<strong>foo</strong>[bar]<b>baz</b>\" compare innerHTML":true,
155
  "[[\"bold\",\"\"]] \"foo{<b></b>}baz\" compare innerHTML":true,
144
  "[[\"bold\",\"\"]] \"foo{<b></b>}baz\" compare innerHTML":true,
156
  "[[\"bold\",\"\"]] \"foo{<b></b>}baz\" queryCommandState(\"bold\") after":true,
145
  "[[\"bold\",\"\"]] \"foo{<b></b>}baz\" queryCommandState(\"bold\") after":true,
157
  "[[\"bold\",\"\"]] \"foo{<i></i>}baz\" compare innerHTML":true,
146
  "[[\"bold\",\"\"]] \"foo{<i></i>}baz\" compare innerHTML":true,
158
  "[[\"bold\",\"\"]] \"foo{<i></i>}baz\" queryCommandState(\"bold\") after":true,
147
  "[[\"bold\",\"\"]] \"foo{<i></i>}baz\" queryCommandState(\"bold\") after":true,
159
  "[[\"bold\",\"\"]] \"foo{<b><i></i></b>}baz\" compare innerHTML":true,
148
  "[[\"bold\",\"\"]] \"foo{<b><i></i></b>}baz\" compare innerHTML":true,
 Lines 265-313    Link Here 
265
  "[[\"stylewithcss\",\"false\"],[\"bold\",\"\"]] \"[foo<span class=notbold>bar</span>baz]\" compare innerHTML":true,
254
  "[[\"stylewithcss\",\"false\"],[\"bold\",\"\"]] \"[foo<span class=notbold>bar</span>baz]\" compare innerHTML":true,
266
  "[[\"stylewithcss\",\"false\"],[\"bold\",\"\"]] \"[foo<span class=notbold>bar</span>baz]\" queryCommandIndeterm(\"bold\") before":true,
255
  "[[\"stylewithcss\",\"false\"],[\"bold\",\"\"]] \"[foo<span class=notbold>bar</span>baz]\" queryCommandIndeterm(\"bold\") before":true,
267
  "[[\"stylewithcss\",\"false\"],[\"bold\",\"\"]] \"[foo<span class=notbold>bar</span>baz]\" queryCommandIndeterm(\"bold\") after":true,
256
  "[[\"stylewithcss\",\"false\"],[\"bold\",\"\"]] \"[foo<span class=notbold>bar</span>baz]\" queryCommandIndeterm(\"bold\") after":true,
268
  "[[\"stylewithcss\",\"false\"],[\"bold\",\"\"]] \"[foo<span class=notbold>bar</span>baz]\" queryCommandState(\"bold\") after":true,
257
  "[[\"stylewithcss\",\"false\"],[\"bold\",\"\"]] \"[foo<span class=notbold>bar</span>baz]\" queryCommandState(\"bold\") after":true,
269
  "[[\"stylewithcss\",\"true\"],[\"bold\",\"\"]] \"<b><span class=notbold>[foo]</span></b>\" compare innerHTML":true,
258
  "[[\"stylewithcss\",\"true\"],[\"bold\",\"\"]] \"<b><span class=notbold>[foo]</span></b>\" compare innerHTML":true,
270
  "[[\"stylewithcss\",\"true\"],[\"bold\",\"\"]] \"<b><span class=notbold>[foo]</span></b>\" queryCommandState(\"bold\") after":true,
259
  "[[\"stylewithcss\",\"true\"],[\"bold\",\"\"]] \"<b><span class=notbold>[foo]</span></b>\" queryCommandState(\"bold\") after":true,
271
  "[[\"stylewithcss\",\"false\"],[\"bold\",\"\"]] \"<b><span class=notbold>[foo]</span></b>\" compare innerHTML":true,
260
  "[[\"stylewithcss\",\"false\"],[\"bold\",\"\"]] \"<b><span class=notbold>[foo]</span></b>\" compare innerHTML":true,
272
  "[[\"stylewithcss\",\"false\"],[\"bold\",\"\"]] \"<b><span class=notbold>[foo]</span></b>\" queryCommandState(\"bold\") after":true,
261
  "[[\"stylewithcss\",\"false\"],[\"bold\",\"\"]] \"<b><span class=notbold>[foo]</span></b>\" queryCommandState(\"bold\") after":true,
273
  "[[\"stylewithcss\",\"false\"],[\"bold\",\"\"]] \"<b><span class=notbold>foo[bar]baz</span></b>\" compare innerHTML":true,
274
  "[[\"stylewithcss\",\"false\"],[\"bold\",\"\"]] \"<b><span class=notbold>foo[bar]baz</span></b>\" queryCommandState(\"bold\") after":true,
275
  "[[\"stylewithcss\",\"true\"],[\"bold\",\"\"]] \"<p style=\\\"font-weight: bold\\\">foo[bar]baz</p>\" compare innerHTML":true,
262
  "[[\"stylewithcss\",\"true\"],[\"bold\",\"\"]] \"<p style=\\\"font-weight: bold\\\">foo[bar]baz</p>\" compare innerHTML":true,
276
  "[[\"stylewithcss\",\"false\"],[\"bold\",\"\"]] \"<p style=\\\"font-weight: bold\\\">foo[bar]baz</p>\" compare innerHTML":true,
263
  "[[\"stylewithcss\",\"false\"],[\"bold\",\"\"]] \"<p style=\\\"font-weight: bold\\\">foo[bar]baz</p>\" compare innerHTML":true,
277
  "[[\"stylewithcss\",\"false\"],[\"bold\",\"\"]] \"<p style=\\\"font-weight: bold\\\">foo[bar]baz</p>\" queryCommandState(\"bold\") after":true,
264
  "[[\"stylewithcss\",\"false\"],[\"bold\",\"\"]] \"<p style=\\\"font-weight: bold\\\">foo[bar]baz</p>\" queryCommandState(\"bold\") after":true,
278
  "[[\"stylewithcss\",\"true\"],[\"bold\",\"\"]] \"foo[<b>b]ar</b>baz\" compare innerHTML":true,
265
  "[[\"stylewithcss\",\"true\"],[\"bold\",\"\"]] \"foo[<b>b]ar</b>baz\" compare innerHTML":true,
279
  "[[\"stylewithcss\",\"true\"],[\"bold\",\"\"]] \"foo<b>ba[r</b>]baz\" compare innerHTML":true,
266
  "[[\"stylewithcss\",\"true\"],[\"bold\",\"\"]] \"foo<b>ba[r</b>]baz\" compare innerHTML":true,
280
  "[[\"bold\",\"\"]] \"fo[o<span style=font-weight:bold>b]ar</span>baz\" compare innerHTML":true,
281
  "[[\"bold\",\"\"]] \"<span style=font-weight:800>fo[o</span><span style=font-weight:900>b]ar</span>\" compare innerHTML":true,
267
  "[[\"bold\",\"\"]] \"<span style=font-weight:800>fo[o</span><span style=font-weight:900>b]ar</span>\" compare innerHTML":true,
282
  "[[\"bold\",\"\"]] \"<span style=font-weight:800>fo[o</span><span style=font-weight:900>b]ar</span>\" queryCommandState(\"bold\") after":true,
268
  "[[\"bold\",\"\"]] \"<span style=font-weight:800>fo[o</span><span style=font-weight:900>b]ar</span>\" queryCommandState(\"bold\") after":true,
283
  "[[\"stylewithcss\",\"false\"],[\"bold\",\"\"]] \"<span style=font-weight:700>fo[o</span><span style=font-weight:800>b]ar</span>\" compare innerHTML":true,
269
  "[[\"stylewithcss\",\"false\"],[\"bold\",\"\"]] \"<span style=font-weight:700>fo[o</span><span style=font-weight:800>b]ar</span>\" compare innerHTML":true,
284
  "[[\"stylewithcss\",\"false\"],[\"bold\",\"\"]] \"<span style=font-weight:700>fo[o</span><span style=font-weight:800>b]ar</span>\" queryCommandState(\"bold\") after":true,
270
  "[[\"stylewithcss\",\"false\"],[\"bold\",\"\"]] \"<span style=font-weight:700>fo[o</span><span style=font-weight:800>b]ar</span>\" queryCommandState(\"bold\") after":true,
285
  "[[\"stylewithcss\",\"false\"],[\"bold\",\"\"]] \"<span style=font-weight:600>fo[o</span><span style=font-weight:700>b]ar</span>\" compare innerHTML":true,
271
  "[[\"stylewithcss\",\"false\"],[\"bold\",\"\"]] \"<span style=font-weight:600>fo[o</span><span style=font-weight:700>b]ar</span>\" compare innerHTML":true,
286
  "[[\"stylewithcss\",\"false\"],[\"bold\",\"\"]] \"<span style=font-weight:600>fo[o</span><span style=font-weight:700>b]ar</span>\" queryCommandState(\"bold\") after":true,
272
  "[[\"stylewithcss\",\"false\"],[\"bold\",\"\"]] \"<span style=font-weight:600>fo[o</span><span style=font-weight:700>b]ar</span>\" queryCommandState(\"bold\") after":true,
287
  "[[\"stylewithcss\",\"true\"],[\"bold\",\"\"]] \"<span style=font-weight:500>fo[o</span><span style=font-weight:600>b]ar</span>\" compare innerHTML":true,
273
  "[[\"stylewithcss\",\"true\"],[\"bold\",\"\"]] \"<span style=font-weight:500>fo[o</span><span style=font-weight:600>b]ar</span>\" compare innerHTML":true,
288
  "[[\"stylewithcss\",\"true\"],[\"bold\",\"\"]] \"<span style=font-weight:500>fo[o</span><span style=font-weight:600>b]ar</span>\" queryCommandIndeterm(\"bold\") before":true,
274
  "[[\"stylewithcss\",\"true\"],[\"bold\",\"\"]] \"<span style=font-weight:500>fo[o</span><span style=font-weight:600>b]ar</span>\" queryCommandIndeterm(\"bold\") before":true,
289
  "[[\"stylewithcss\",\"true\"],[\"bold\",\"\"]] \"<span style=font-weight:500>fo[o</span><span style=font-weight:600>b]ar</span>\" queryCommandState(\"bold\") before":true,
275
  "[[\"stylewithcss\",\"true\"],[\"bold\",\"\"]] \"<span style=font-weight:500>fo[o</span><span style=font-weight:600>b]ar</span>\" queryCommandState(\"bold\") before":true,
290
  "[[\"stylewithcss\",\"true\"],[\"bold\",\"\"]] \"<span style=font-weight:500>fo[o</span><span style=font-weight:600>b]ar</span>\" queryCommandState(\"bold\") after":true,
276
  "[[\"stylewithcss\",\"true\"],[\"bold\",\"\"]] \"<span style=font-weight:500>fo[o</span><span style=font-weight:600>b]ar</span>\" queryCommandState(\"bold\") after":true,
291
  "[[\"stylewithcss\",\"false\"],[\"bold\",\"\"]] \"<span style=font-weight:500>fo[o</span><span style=font-weight:600>b]ar</span>\" compare innerHTML":true,
277
  "[[\"stylewithcss\",\"false\"],[\"bold\",\"\"]] \"<span style=font-weight:500>fo[o</span><span style=font-weight:600>b]ar</span>\" compare innerHTML":true,
292
  "[[\"stylewithcss\",\"false\"],[\"bold\",\"\"]] \"<span style=font-weight:500>fo[o</span><span style=font-weight:600>b]ar</span>\" queryCommandIndeterm(\"bold\") before":true,
278
  "[[\"stylewithcss\",\"false\"],[\"bold\",\"\"]] \"<span style=font-weight:500>fo[o</span><span style=font-weight:600>b]ar</span>\" queryCommandIndeterm(\"bold\") before":true,
293
  "[[\"stylewithcss\",\"false\"],[\"bold\",\"\"]] \"<span style=font-weight:500>fo[o</span><span style=font-weight:600>b]ar</span>\" queryCommandState(\"bold\") before":true,
279
  "[[\"stylewithcss\",\"false\"],[\"bold\",\"\"]] \"<span style=font-weight:500>fo[o</span><span style=font-weight:600>b]ar</span>\" queryCommandState(\"bold\") before":true,
294
  "[[\"stylewithcss\",\"true\"],[\"bold\",\"\"]] \"<span style=font-weight:400>fo[o</span><span style=font-weight:500>b]ar</span>\" compare innerHTML":true,
280
  "[[\"stylewithcss\",\"true\"],[\"bold\",\"\"]] \"<span style=font-weight:400>fo[o</span><span style=font-weight:500>b]ar</span>\" compare innerHTML":true,
295
  "[[\"stylewithcss\",\"true\"],[\"bold\",\"\"]] \"<span style=font-weight:400>fo[o</span><span style=font-weight:500>b]ar</span>\" queryCommandIndeterm(\"bold\") before":true,
281
  "[[\"stylewithcss\",\"true\"],[\"bold\",\"\"]] \"<span style=font-weight:400>fo[o</span><span style=font-weight:500>b]ar</span>\" queryCommandIndeterm(\"bold\") before":true,
282
  "[[\"stylewithcss\",\"false\"],[\"bold\",\"\"]] \"<span style=font-weight:400>fo[o</span><span style=font-weight:500>b]ar</span>\" compare innerHTML":true,
296
  "[[\"stylewithcss\",\"false\"],[\"bold\",\"\"]] \"<span style=font-weight:400>fo[o</span><span style=font-weight:500>b]ar</span>\" queryCommandIndeterm(\"bold\") before":true,
283
  "[[\"stylewithcss\",\"false\"],[\"bold\",\"\"]] \"<span style=font-weight:400>fo[o</span><span style=font-weight:500>b]ar</span>\" queryCommandIndeterm(\"bold\") before":true,
297
  "[[\"createlink\",\"http://www.google.com/\"]] \"[foo]<a href=http://www.google.com/>bar</a>baz\" compare innerHTML":true,
284
  "[[\"createlink\",\"http://www.google.com/\"]] \"[foo]<a href=http://www.google.com/>bar</a>baz\" compare innerHTML":true,
298
  "[[\"createlink\",\"http://www.google.com/\"]] \"foo<a href=http://www.google.com/>bar</a>[baz]\" compare innerHTML":true,
285
  "[[\"createlink\",\"http://www.google.com/\"]] \"foo<a href=http://www.google.com/>bar</a>[baz]\" compare innerHTML":true,
299
  "[[\"createlink\",\"http://www.google.com/\"]] \"foo<a href=http://www.google.com/>[bar</a>baz]\" compare innerHTML":true,
286
  "[[\"createlink\",\"http://www.google.com/\"]] \"foo<a href=http://www.google.com/>[bar</a>baz]\" compare innerHTML":true,
300
  "[[\"createlink\",\"http://www.google.com/\"]] \"[foo<a href=http://www.google.com/>bar</a>baz]\" compare innerHTML":true,
301
  "[[\"createlink\",\"http://www.google.com/\"]] \"<a href=otherurl>foo[bar]baz</a>\" compare innerHTML":true,
287
  "[[\"createlink\",\"http://www.google.com/\"]] \"<a href=otherurl>foo[bar]baz</a>\" compare innerHTML":true,
302
  "[[\"createlink\",\"http://www.google.com/\"]] \"<a href=otherurl>foo[barbaz</a>}\" compare innerHTML":true,
288
  "[[\"createlink\",\"http://www.google.com/\"]] \"<a href=otherurl>foo[barbaz</a>}\" compare innerHTML":true,
303
  "[[\"createlink\",\"http://www.google.com/\"]] \"{<a href=otherurl>foobar]baz</a>\" compare innerHTML":true,
289
  "[[\"createlink\",\"http://www.google.com/\"]] \"{<a href=otherurl>foobar]baz</a>\" compare innerHTML":true,
304
  "[[\"createlink\",\"http://www.google.com/\"]] \"foo<a href=otherurl>[bar</a>baz]\" compare innerHTML":true,
290
  "[[\"createlink\",\"http://www.google.com/\"]] \"foo<a href=otherurl>[bar</a>baz]\" compare innerHTML":true,
305
  "[[\"createlink\",\"http://www.google.com/\"]] \"[foo<a href=otherurl>bar</a>baz]\" compare innerHTML":true,
306
  "[[\"createlink\",\"http://www.google.com/\"]] \"<a href=otherurl><b>foo[bar]baz</b></a>\" compare innerHTML":true,
291
  "[[\"createlink\",\"http://www.google.com/\"]] \"<a href=otherurl><b>foo[bar]baz</b></a>\" compare innerHTML":true,
307
  "[[\"createlink\",\"http://www.google.com/\"]] \"<a href=otherurl><b>foo[barbaz</b></a>}\" compare innerHTML":true,
292
  "[[\"createlink\",\"http://www.google.com/\"]] \"<a href=otherurl><b>foo[barbaz</b></a>}\" compare innerHTML":true,
308
  "[[\"createlink\",\"http://www.google.com/\"]] \"{<a href=otherurl><b>foobar]baz</b></a>\" compare innerHTML":true,
293
  "[[\"createlink\",\"http://www.google.com/\"]] \"{<a href=otherurl><b>foobar]baz</b></a>\" compare innerHTML":true,
309
  "[[\"createlink\",\"http://www.google.com/\"]] \"<a name=abc>foo[bar]baz</a>\" compare innerHTML":true,
294
  "[[\"createlink\",\"http://www.google.com/\"]] \"<a name=abc>foo[bar]baz</a>\" compare innerHTML":true,
310
  "[[\"createlink\",\"http://www.google.com/\"]] \"<a name=abc><b>foo[bar]baz</b></a>\" compare innerHTML":true,
295
  "[[\"createlink\",\"http://www.google.com/\"]] \"<a name=abc><b>foo[bar]baz</b></a>\" compare innerHTML":true,
311
  "[[\"stylewithcss\",\"true\"],[\"delete\",\"\"]] \"foo<span style=display:none>bar</span>[]baz\" compare innerHTML":true,
296
  "[[\"stylewithcss\",\"true\"],[\"delete\",\"\"]] \"foo<span style=display:none>bar</span>[]baz\" compare innerHTML":true,
312
  "[[\"stylewithcss\",\"false\"],[\"delete\",\"\"]] \"foo<span style=display:none>bar</span>[]baz\" compare innerHTML":true,
297
  "[[\"stylewithcss\",\"false\"],[\"delete\",\"\"]] \"foo<span style=display:none>bar</span>[]baz\" compare innerHTML":true,
313
  "[[\"delete\",\"\"]] \"foo<script>bar</script>[]baz\" compare innerHTML":true,
298
  "[[\"delete\",\"\"]] \"foo<script>bar</script>[]baz\" compare innerHTML":true,
 Lines 1352-1368    Link Here 
1352
  "[[\"stylewithcss\",\"true\"],[\"fontname\",\"sans-serif\"]] \"foo<listing>b[ar</listing>baz]\" compare innerHTML":true,
1337
  "[[\"stylewithcss\",\"true\"],[\"fontname\",\"sans-serif\"]] \"foo<listing>b[ar</listing>baz]\" compare innerHTML":true,
1353
  "[[\"stylewithcss\",\"true\"],[\"fontname\",\"sans-serif\"]] \"foo<listing>b[ar</listing>baz]\" queryCommandIndeterm(\"fontname\") after":true,
1338
  "[[\"stylewithcss\",\"true\"],[\"fontname\",\"sans-serif\"]] \"foo<listing>b[ar</listing>baz]\" queryCommandIndeterm(\"fontname\") after":true,
1354
  "[[\"stylewithcss\",\"true\"],[\"fontname\",\"sans-serif\"]] \"foo<listing>b[ar</listing>baz]\" queryCommandValue(\"fontname\") after":true,
1339
  "[[\"stylewithcss\",\"true\"],[\"fontname\",\"sans-serif\"]] \"foo<listing>b[ar</listing>baz]\" queryCommandValue(\"fontname\") after":true,
1355
  "[[\"stylewithcss\",\"false\"],[\"fontname\",\"sans-serif\"]] \"foo<listing>b[ar</listing>baz]\" compare innerHTML":true,
1340
  "[[\"stylewithcss\",\"false\"],[\"fontname\",\"sans-serif\"]] \"foo<listing>b[ar</listing>baz]\" compare innerHTML":true,
1356
  "[[\"stylewithcss\",\"false\"],[\"fontname\",\"sans-serif\"]] \"foo<listing>b[ar</listing>baz]\" queryCommandIndeterm(\"fontname\") after":true,
1341
  "[[\"stylewithcss\",\"false\"],[\"fontname\",\"sans-serif\"]] \"foo<listing>b[ar</listing>baz]\" queryCommandIndeterm(\"fontname\") after":true,
1357
  "[[\"stylewithcss\",\"false\"],[\"fontname\",\"sans-serif\"]] \"foo<listing>b[ar</listing>baz]\" queryCommandValue(\"fontname\") after":true,
1342
  "[[\"stylewithcss\",\"false\"],[\"fontname\",\"sans-serif\"]] \"foo<listing>b[ar</listing>baz]\" queryCommandValue(\"fontname\") after":true,
1358
  "[[\"stylewithcss\",\"true\"],[\"fontname\",\"sans-serif\"]] \"foo<tt>b[ar</tt>baz]\" compare innerHTML":true,
1343
  "[[\"stylewithcss\",\"true\"],[\"fontname\",\"sans-serif\"]] \"foo<tt>b[ar</tt>baz]\" compare innerHTML":true,
1359
  "[[\"stylewithcss\",\"false\"],[\"fontname\",\"sans-serif\"]] \"foo<tt>b[ar</tt>baz]\" compare innerHTML":true,
1344
  "[[\"stylewithcss\",\"false\"],[\"fontname\",\"sans-serif\"]] \"foo<tt>b[ar</tt>baz]\" compare innerHTML":true,
1360
  "[[\"fontname\",\"sans-serif\"]] \"foo<span style=\\\"font-family: sans-serif\\\">b[a]r</span>baz\" compare innerHTML":true,
1361
  "[[\"stylewithcss\",\"true\"],[\"fontname\",\"sans-serif\"]] \"foo<span style=\\\"font-family: monospace\\\">[bar]</span>baz\" queryCommandValue(\"fontname\") before":true,
1345
  "[[\"stylewithcss\",\"true\"],[\"fontname\",\"sans-serif\"]] \"foo<span style=\\\"font-family: monospace\\\">[bar]</span>baz\" queryCommandValue(\"fontname\") before":true,
1362
  "[[\"stylewithcss\",\"false\"],[\"fontname\",\"sans-serif\"]] \"foo<span style=\\\"font-family: monospace\\\">[bar]</span>baz\" queryCommandValue(\"fontname\") before":true,
1346
  "[[\"stylewithcss\",\"false\"],[\"fontname\",\"sans-serif\"]] \"foo<span style=\\\"font-family: monospace\\\">[bar]</span>baz\" queryCommandValue(\"fontname\") before":true,
1363
  "[[\"stylewithcss\",\"true\"],[\"fontname\",\"sans-serif\"]] \"foo<span style=\\\"font-family: monospace\\\">b[a]r</span>baz\" compare innerHTML":true,
1347
  "[[\"stylewithcss\",\"true\"],[\"fontname\",\"sans-serif\"]] \"foo<span style=\\\"font-family: monospace\\\">b[a]r</span>baz\" compare innerHTML":true,
1364
  "[[\"stylewithcss\",\"true\"],[\"fontname\",\"sans-serif\"]] \"foo<span style=\\\"font-family: monospace\\\">b[a]r</span>baz\" queryCommandValue(\"fontname\") before":true,
1348
  "[[\"stylewithcss\",\"true\"],[\"fontname\",\"sans-serif\"]] \"foo<span style=\\\"font-family: monospace\\\">b[a]r</span>baz\" queryCommandValue(\"fontname\") before":true,
1365
  "[[\"stylewithcss\",\"false\"],[\"fontname\",\"sans-serif\"]] \"foo<span style=\\\"font-family: monospace\\\">b[a]r</span>baz\" queryCommandValue(\"fontname\") before":true,
1349
  "[[\"stylewithcss\",\"false\"],[\"fontname\",\"sans-serif\"]] \"foo<span style=\\\"font-family: monospace\\\">b[a]r</span>baz\" queryCommandValue(\"fontname\") before":true,
1366
  "[[\"fontname\",\"sans-serif\"]] \"foo<tt contenteditable=false>ba[r</tt>b]az\": execCommand(\"fontname\", false, \"sans-serif\") return value":true,
1350
  "[[\"fontname\",\"sans-serif\"]] \"foo<tt contenteditable=false>ba[r</tt>b]az\": execCommand(\"fontname\", false, \"sans-serif\") return value":true,
1367
  "[[\"fontname\",\"sans-serif\"]] \"foo<tt contenteditable=false>ba[r</tt>b]az\" queryCommandValue(\"fontname\") before":true,
1351
  "[[\"fontname\",\"sans-serif\"]] \"foo<tt contenteditable=false>ba[r</tt>b]az\" queryCommandValue(\"fontname\") before":true,
1368
  "[[\"fontname\",\"sans-serif\"]] \"foo<tt contenteditable=false>ba[r</tt>b]az\" queryCommandValue(\"fontname\") after":true,
1352
  "[[\"fontname\",\"sans-serif\"]] \"foo<tt contenteditable=false>ba[r</tt>b]az\" queryCommandValue(\"fontname\") after":true,
 Lines 1531-1546    Link Here 
1531
  "[[\"stylewithcss\",\"true\"],[\"fontsize\",\"4\"]] \"{<table><tr><td>foo<td>bar<td>baz</table>}\" queryCommandValue(\"fontsize\") before":true,
1515
  "[[\"stylewithcss\",\"true\"],[\"fontsize\",\"4\"]] \"{<table><tr><td>foo<td>bar<td>baz</table>}\" queryCommandValue(\"fontsize\") before":true,
1532
  "[[\"stylewithcss\",\"true\"],[\"fontsize\",\"4\"]] \"{<table><tr><td>foo<td>bar<td>baz</table>}\" queryCommandValue(\"fontsize\") after":true,
1516
  "[[\"stylewithcss\",\"true\"],[\"fontsize\",\"4\"]] \"{<table><tr><td>foo<td>bar<td>baz</table>}\" queryCommandValue(\"fontsize\") after":true,
1533
  "[[\"stylewithcss\",\"false\"],[\"fontsize\",\"4\"]] \"{<table><tr><td>foo<td>bar<td>baz</table>}\" queryCommandValue(\"fontsize\") before":true,
1517
  "[[\"stylewithcss\",\"false\"],[\"fontsize\",\"4\"]] \"{<table><tr><td>foo<td>bar<td>baz</table>}\" queryCommandValue(\"fontsize\") before":true,
1534
  "[[\"stylewithcss\",\"true\"],[\"fontsize\",\"4\"]] \"foo<font size=1>[bar]</font>baz\" queryCommandValue(\"fontsize\") after":true,
1518
  "[[\"stylewithcss\",\"true\"],[\"fontsize\",\"4\"]] \"foo<font size=1>[bar]</font>baz\" queryCommandValue(\"fontsize\") after":true,
1535
  "[[\"stylewithcss\",\"true\"],[\"fontsize\",\"4\"]] \"<font size=1>foo[bar]baz</font>\" queryCommandValue(\"fontsize\") after":true,
1519
  "[[\"stylewithcss\",\"true\"],[\"fontsize\",\"4\"]] \"<font size=1>foo[bar]baz</font>\" queryCommandValue(\"fontsize\") after":true,
1536
  "[[\"stylewithcss\",\"true\"],[\"fontsize\",\"4\"]] \"foo<font size=3>[bar]</font>baz\" queryCommandValue(\"fontsize\") after":true,
1520
  "[[\"stylewithcss\",\"true\"],[\"fontsize\",\"4\"]] \"foo<font size=3>[bar]</font>baz\" queryCommandValue(\"fontsize\") after":true,
1537
  "[[\"stylewithcss\",\"true\"],[\"fontsize\",\"4\"]] \"<font size=3>foo[bar]baz</font>\" queryCommandValue(\"fontsize\") after":true,
1521
  "[[\"stylewithcss\",\"true\"],[\"fontsize\",\"4\"]] \"<font size=3>foo[bar]baz</font>\" queryCommandValue(\"fontsize\") after":true,
1538
  "[[\"stylewithcss\",\"true\"],[\"fontsize\",\"4\"]] \"foo<font size=4>[bar]</font>baz\" queryCommandValue(\"fontsize\") after":true,
1522
  "[[\"stylewithcss\",\"true\"],[\"fontsize\",\"4\"]] \"foo<font size=4>[bar]</font>baz\" queryCommandValue(\"fontsize\") after":true,
1523
  "[[\"fontsize\",\"4\"]] \"<font size=4>foo[bar]baz</font>\" compare innerHTML":true,
1539
  "[[\"stylewithcss\",\"true\"],[\"fontsize\",\"4\"]] \"foo<font size=+1>[bar]</font>baz\" queryCommandValue(\"fontsize\") before":true,
1524
  "[[\"stylewithcss\",\"true\"],[\"fontsize\",\"4\"]] \"foo<font size=+1>[bar]</font>baz\" queryCommandValue(\"fontsize\") before":true,
1540
  "[[\"stylewithcss\",\"true\"],[\"fontsize\",\"4\"]] \"foo<font size=+1>[bar]</font>baz\" queryCommandValue(\"fontsize\") after":true,
1525
  "[[\"stylewithcss\",\"true\"],[\"fontsize\",\"4\"]] \"foo<font size=+1>[bar]</font>baz\" queryCommandValue(\"fontsize\") after":true,
1541
  "[[\"stylewithcss\",\"false\"],[\"fontsize\",\"4\"]] \"foo<font size=+1>[bar]</font>baz\" queryCommandValue(\"fontsize\") before":true,
1526
  "[[\"stylewithcss\",\"false\"],[\"fontsize\",\"4\"]] \"foo<font size=+1>[bar]</font>baz\" queryCommandValue(\"fontsize\") before":true,
1542
  "[[\"fontsize\",\"4\"]] \"<font size=+1>foo[bar]baz</font>\" compare innerHTML":true,
1527
  "[[\"fontsize\",\"4\"]] \"<font size=+1>foo[bar]baz</font>\" compare innerHTML":true,
1543
  "[[\"fontsize\",\"4\"]] \"<font size=+1>foo[bar]baz</font>\" queryCommandValue(\"fontsize\") before":true,
1528
  "[[\"fontsize\",\"4\"]] \"<font size=+1>foo[bar]baz</font>\" queryCommandValue(\"fontsize\") before":true,
1544
  "[[\"stylewithcss\",\"true\"],[\"fontsize\",\"4\"]] \"<font size=4>foo<font size=1>b[a]r</font>baz</font>\" compare innerHTML":true,
1529
  "[[\"stylewithcss\",\"true\"],[\"fontsize\",\"4\"]] \"<font size=4>foo<font size=1>b[a]r</font>baz</font>\" compare innerHTML":true,
1545
  "[[\"stylewithcss\",\"true\"],[\"fontsize\",\"4\"]] \"<font size=4>foo<font size=1>b[a]r</font>baz</font>\" queryCommandValue(\"fontsize\") after":true,
1530
  "[[\"stylewithcss\",\"true\"],[\"fontsize\",\"4\"]] \"<font size=4>foo<font size=1>b[a]r</font>baz</font>\" queryCommandValue(\"fontsize\") after":true,
1546
  "[[\"stylewithcss\",\"false\"],[\"fontsize\",\"4\"]] \"<font size=4>foo<font size=1>b[a]r</font>baz</font>\" compare innerHTML":true,
1531
  "[[\"stylewithcss\",\"false\"],[\"fontsize\",\"4\"]] \"<font size=4>foo<font size=1>b[a]r</font>baz</font>\" compare innerHTML":true,
 Lines 1726-1743    Link Here 
1726
  "[[\"stylewithcss\",\"true\"],[\"forecolor\",\"#0000FF\"]] \"<span style=\\\"color: rgb(0, 0, 255)\\\">foo<span style=\\\"color: brown\\\">[bar]</span>baz</span>\" compare innerHTML":true,
1711
  "[[\"stylewithcss\",\"true\"],[\"forecolor\",\"#0000FF\"]] \"<span style=\\\"color: rgb(0, 0, 255)\\\">foo<span style=\\\"color: brown\\\">[bar]</span>baz</span>\" compare innerHTML":true,
1727
  "[[\"stylewithcss\",\"false\"],[\"forecolor\",\"#0000FF\"]] \"<span style=\\\"color: rgb(0, 0, 255)\\\">foo<span style=\\\"color: brown\\\">[bar]</span>baz</span>\" compare innerHTML":true,
1712
  "[[\"stylewithcss\",\"false\"],[\"forecolor\",\"#0000FF\"]] \"<span style=\\\"color: rgb(0, 0, 255)\\\">foo<span style=\\\"color: brown\\\">[bar]</span>baz</span>\" compare innerHTML":true,
1728
  "[[\"stylewithcss\",\"true\"],[\"forecolor\",\"#0000FF\"]] \"<font color=blue>foo<font color=brown>[bar]</font>baz</font>\" compare innerHTML":true,
1713
  "[[\"stylewithcss\",\"true\"],[\"forecolor\",\"#0000FF\"]] \"<font color=blue>foo<font color=brown>[bar]</font>baz</font>\" compare innerHTML":true,
1729
  "[[\"stylewithcss\",\"false\"],[\"forecolor\",\"#0000FF\"]] \"<font color=blue>foo<font color=brown>[bar]</font>baz</font>\" compare innerHTML":true,
1714
  "[[\"stylewithcss\",\"false\"],[\"forecolor\",\"#0000FF\"]] \"<font color=blue>foo<font color=brown>[bar]</font>baz</font>\" compare innerHTML":true,
1730
  "[[\"stylewithcss\",\"true\"],[\"forecolor\",\"#0000FF\"]] \"<span style=\\\"color: rgb(0, 0, 255)\\\">foo<span style=\\\"color: brown\\\">b[ar]</span>baz</span>\" compare innerHTML":true,
1715
  "[[\"stylewithcss\",\"true\"],[\"forecolor\",\"#0000FF\"]] \"<span style=\\\"color: rgb(0, 0, 255)\\\">foo<span style=\\\"color: brown\\\">b[ar]</span>baz</span>\" compare innerHTML":true,
1731
  "[[\"stylewithcss\",\"false\"],[\"forecolor\",\"#0000FF\"]] \"<span style=\\\"color: rgb(0, 0, 255)\\\">foo<span style=\\\"color: brown\\\">b[ar]</span>baz</span>\" compare innerHTML":true,
1716
  "[[\"stylewithcss\",\"false\"],[\"forecolor\",\"#0000FF\"]] \"<span style=\\\"color: rgb(0, 0, 255)\\\">foo<span style=\\\"color: brown\\\">b[ar]</span>baz</span>\" compare innerHTML":true,
1732
  "[[\"stylewithcss\",\"false\"],[\"forecolor\",\"#0000FF\"]] \"foo<span id=purple>ba[r</span>ba]z\" compare innerHTML":true,
1717
  "[[\"stylewithcss\",\"false\"],[\"forecolor\",\"#0000FF\"]] \"foo<span id=purple>ba[r</span>ba]z\" compare innerHTML":true,
1733
  "[[\"stylewithcss\",\"false\"],[\"forecolor\",\"#0000FF\"]] \"<span style=\\\"color: rgb(0, 0, 255)\\\">foo<span id=purple>b[a]r</span>baz</span>\" compare innerHTML":true,
1718
  "[[\"stylewithcss\",\"false\"],[\"forecolor\",\"#0000FF\"]] \"<span style=\\\"color: rgb(0, 0, 255)\\\">foo<span id=purple>b[a]r</span>baz</span>\" compare innerHTML":true,
1734
  "[[\"forecolor\",\"blue\"]] \"<a href=http://www.google.com>foo[bar]baz</a>\" compare innerHTML":true,
1735
  "[[\"forecolor\",\"#0000ff\"]] \"<a href=http://www.google.com>foo[bar]baz</a>\" compare innerHTML":true,
1736
  "[[\"forecolor\",\"rgb(0,0,255)\"]] \"<a href=http://www.google.com>foo[bar]baz</a>\" compare innerHTML":true,
1719
  "[[\"forecolor\",\"rgb(0,0,255)\"]] \"<a href=http://www.google.com>foo[bar]baz</a>\" compare innerHTML":true,
1737
  "[[\"forecolor\",\"rgb(0,0,255)\"]] \"<a href=http://www.google.com>foo[bar]baz</a>\" queryCommandValue(\"forecolor\") after":true,
1720
  "[[\"forecolor\",\"rgb(0,0,255)\"]] \"<a href=http://www.google.com>foo[bar]baz</a>\" queryCommandValue(\"forecolor\") after":true,
1738
  "[[\"stylewithcss\",\"false\"],[\"forecolor\",\"#0000FF\"]] \"<font color=\\\"blue\\\">[foo]</font>\" compare innerHTML":true,
1721
  "[[\"stylewithcss\",\"false\"],[\"forecolor\",\"#0000FF\"]] \"<font color=\\\"blue\\\">[foo]</font>\" compare innerHTML":true,
1739
  "[[\"stylewithcss\",\"false\"],[\"forecolor\",\"#0000FF\"]] \"<font color=\\\"0000ff\\\">[foo]</font>\" compare innerHTML":true,
1722
  "[[\"stylewithcss\",\"false\"],[\"forecolor\",\"#0000FF\"]] \"<font color=\\\"0000ff\\\">[foo]</font>\" compare innerHTML":true,
1740
  "[[\"stylewithcss\",\"false\"],[\"forecolor\",\"#0000FF\"]] \"<font color=\\\"#0000ff\\\">[foo]</font>\" compare innerHTML":true,
1723
  "[[\"stylewithcss\",\"false\"],[\"forecolor\",\"#0000FF\"]] \"<font color=\\\"#0000ff\\\">[foo]</font>\" compare innerHTML":true,
1741
  "[[\"stylewithcss\",\"false\"],[\"forecolor\",\"#0000FF\"]] \"<span style=\\\"color: blue\\\">[foo]</span>\" compare innerHTML":true,
1724
  "[[\"stylewithcss\",\"false\"],[\"forecolor\",\"#0000FF\"]] \"<span style=\\\"color: blue\\\">[foo]</span>\" compare innerHTML":true,
1742
  "[[\"stylewithcss\",\"false\"],[\"forecolor\",\"#0000FF\"]] \"<span style=\\\"color: #0000ff\\\">[foo]</span>\" compare innerHTML":true,
1725
  "[[\"stylewithcss\",\"false\"],[\"forecolor\",\"#0000FF\"]] \"<span style=\\\"color: #0000ff\\\">[foo]</span>\" compare innerHTML":true,
1743
  "[[\"stylewithcss\",\"false\"],[\"forecolor\",\"#0000FF\"]] \"<span style=\\\"color: rgb(0, 0, 255)\\\">[foo]</span>\" compare innerHTML":true,
1726
  "[[\"stylewithcss\",\"false\"],[\"forecolor\",\"#0000FF\"]] \"<span style=\\\"color: rgb(0, 0, 255)\\\">[foo]</span>\" compare innerHTML":true,
 Lines 3765-3787    Link Here 
3765
  "[[\"stylewithcss\",\"true\"],[\"hilitecolor\",\"#00FFFF\"]] \"<table><tbody><tr data-start=0 data-end=2><td>foo<td>bar<td>baz</table>\" queryCommandValue(\"hilitecolor\") after":true,
3748
  "[[\"stylewithcss\",\"true\"],[\"hilitecolor\",\"#00FFFF\"]] \"<table><tbody><tr data-start=0 data-end=2><td>foo<td>bar<td>baz</table>\" queryCommandValue(\"hilitecolor\") after":true,
3766
  "[[\"stylewithcss\",\"false\"],[\"hilitecolor\",\"#00FFFF\"]] \"<table><tbody><tr data-start=0 data-end=2><td>foo<td>bar<td>baz</table>\" queryCommandValue(\"hilitecolor\") after":true,
3749
  "[[\"stylewithcss\",\"false\"],[\"hilitecolor\",\"#00FFFF\"]] \"<table><tbody><tr data-start=0 data-end=2><td>foo<td>bar<td>baz</table>\" queryCommandValue(\"hilitecolor\") after":true,
3767
  "[[\"stylewithcss\",\"true\"],[\"hilitecolor\",\"#00FFFF\"]] \"<table><tbody data-start=0 data-end=1><tr><td>foo<td>bar<td>baz</table>\" queryCommandValue(\"hilitecolor\") after":true,
3750
  "[[\"stylewithcss\",\"true\"],[\"hilitecolor\",\"#00FFFF\"]] \"<table><tbody data-start=0 data-end=1><tr><td>foo<td>bar<td>baz</table>\" queryCommandValue(\"hilitecolor\") after":true,
3768
  "[[\"stylewithcss\",\"false\"],[\"hilitecolor\",\"#00FFFF\"]] \"<table><tbody data-start=0 data-end=1><tr><td>foo<td>bar<td>baz</table>\" queryCommandValue(\"hilitecolor\") after":true,
3751
  "[[\"stylewithcss\",\"false\"],[\"hilitecolor\",\"#00FFFF\"]] \"<table><tbody data-start=0 data-end=1><tr><td>foo<td>bar<td>baz</table>\" queryCommandValue(\"hilitecolor\") after":true,
3769
  "[[\"stylewithcss\",\"true\"],[\"hilitecolor\",\"#00FFFF\"]] \"<table data-start=0 data-end=1><tbody><tr><td>foo<td>bar<td>baz</table>\" queryCommandValue(\"hilitecolor\") after":true,
3752
  "[[\"stylewithcss\",\"true\"],[\"hilitecolor\",\"#00FFFF\"]] \"<table data-start=0 data-end=1><tbody><tr><td>foo<td>bar<td>baz</table>\" queryCommandValue(\"hilitecolor\") after":true,
3770
  "[[\"stylewithcss\",\"false\"],[\"hilitecolor\",\"#00FFFF\"]] \"<table data-start=0 data-end=1><tbody><tr><td>foo<td>bar<td>baz</table>\" queryCommandValue(\"hilitecolor\") after":true,
3753
  "[[\"stylewithcss\",\"false\"],[\"hilitecolor\",\"#00FFFF\"]] \"<table data-start=0 data-end=1><tbody><tr><td>foo<td>bar<td>baz</table>\" queryCommandValue(\"hilitecolor\") after":true,
3771
  "[[\"stylewithcss\",\"true\"],[\"hilitecolor\",\"#00FFFF\"]] \"{<table><tr><td>foo<td>bar<td>baz</table>}\" queryCommandValue(\"hilitecolor\") after":true,
3754
  "[[\"stylewithcss\",\"true\"],[\"hilitecolor\",\"#00FFFF\"]] \"{<table><tr><td>foo<td>bar<td>baz</table>}\" queryCommandValue(\"hilitecolor\") after":true,
3772
  "[[\"stylewithcss\",\"false\"],[\"hilitecolor\",\"#00FFFF\"]] \"{<table><tr><td>foo<td>bar<td>baz</table>}\" queryCommandValue(\"hilitecolor\") after":true,
3755
  "[[\"stylewithcss\",\"false\"],[\"hilitecolor\",\"#00FFFF\"]] \"{<table><tr><td>foo<td>bar<td>baz</table>}\" queryCommandValue(\"hilitecolor\") after":true,
3773
  "[[\"hilitecolor\",\"#00FFFF\"]] \"<p style=\\\"background-color: rgb(0, 255, 255)\\\">foo[bar]baz</p>\" compare innerHTML":true,
3774
  "[[\"hilitecolor\",\"#00FFFF\"]] \"<p style=\\\"background-color: rgb(0, 255, 255)\\\">foo[bar]baz</p>\" queryCommandValue(\"hilitecolor\") before":true,
3756
  "[[\"hilitecolor\",\"#00FFFF\"]] \"<p style=\\\"background-color: rgb(0, 255, 255)\\\">foo[bar]baz</p>\" queryCommandValue(\"hilitecolor\") before":true,
3775
  "[[\"hilitecolor\",\"#00FFFF\"]] \"<p style=\\\"background-color: rgb(0, 255, 255)\\\">foo[bar]baz</p>\" queryCommandValue(\"hilitecolor\") after":true,
3757
  "[[\"hilitecolor\",\"#00FFFF\"]] \"<p style=\\\"background-color: rgb(0, 255, 255)\\\">foo[bar]baz</p>\" queryCommandValue(\"hilitecolor\") after":true,
3776
  "[[\"hilitecolor\",\"#00FFFF\"]] \"<p style=\\\"background-color: #00ffff\\\">foo[bar]baz</p>\" compare innerHTML":true,
3777
  "[[\"hilitecolor\",\"#00FFFF\"]] \"<p style=\\\"background-color: #00ffff\\\">foo[bar]baz</p>\" queryCommandValue(\"hilitecolor\") before":true,
3758
  "[[\"hilitecolor\",\"#00FFFF\"]] \"<p style=\\\"background-color: #00ffff\\\">foo[bar]baz</p>\" queryCommandValue(\"hilitecolor\") before":true,
3778
  "[[\"hilitecolor\",\"#00FFFF\"]] \"<p style=\\\"background-color: #00ffff\\\">foo[bar]baz</p>\" queryCommandValue(\"hilitecolor\") after":true,
3759
  "[[\"hilitecolor\",\"#00FFFF\"]] \"<p style=\\\"background-color: #00ffff\\\">foo[bar]baz</p>\" queryCommandValue(\"hilitecolor\") after":true,
3779
  "[[\"hilitecolor\",\"#00FFFF\"]] \"<p style=\\\"background-color: aqua\\\">foo[bar]baz</p>\" compare innerHTML":true,
3780
  "[[\"hilitecolor\",\"#00FFFF\"]] \"<p style=\\\"background-color: aqua\\\">foo[bar]baz</p>\" queryCommandValue(\"hilitecolor\") before":true,
3760
  "[[\"hilitecolor\",\"#00FFFF\"]] \"<p style=\\\"background-color: aqua\\\">foo[bar]baz</p>\" queryCommandValue(\"hilitecolor\") before":true,
3781
  "[[\"hilitecolor\",\"#00FFFF\"]] \"<p style=\\\"background-color: aqua\\\">foo[bar]baz</p>\" queryCommandValue(\"hilitecolor\") after":true,
3761
  "[[\"hilitecolor\",\"#00FFFF\"]] \"<p style=\\\"background-color: aqua\\\">foo[bar]baz</p>\" queryCommandValue(\"hilitecolor\") after":true,
3782
  "[[\"stylewithcss\",\"true\"],[\"hilitecolor\",\"#00FFFF\"]] \"{<p style=\\\"background-color: aqua\\\">foo</p><p>bar</p>}\" compare innerHTML":true,
3762
  "[[\"stylewithcss\",\"true\"],[\"hilitecolor\",\"#00FFFF\"]] \"{<p style=\\\"background-color: aqua\\\">foo</p><p>bar</p>}\" compare innerHTML":true,
3783
  "[[\"stylewithcss\",\"true\"],[\"hilitecolor\",\"#00FFFF\"]] \"{<p style=\\\"background-color: aqua\\\">foo</p><p>bar</p>}\" queryCommandIndeterm(\"hilitecolor\") before":true,
3763
  "[[\"stylewithcss\",\"true\"],[\"hilitecolor\",\"#00FFFF\"]] \"{<p style=\\\"background-color: aqua\\\">foo</p><p>bar</p>}\" queryCommandIndeterm(\"hilitecolor\") before":true,
3784
  "[[\"stylewithcss\",\"true\"],[\"hilitecolor\",\"#00FFFF\"]] \"{<p style=\\\"background-color: aqua\\\">foo</p><p>bar</p>}\" queryCommandValue(\"hilitecolor\") before":true,
3764
  "[[\"stylewithcss\",\"true\"],[\"hilitecolor\",\"#00FFFF\"]] \"{<p style=\\\"background-color: aqua\\\">foo</p><p>bar</p>}\" queryCommandValue(\"hilitecolor\") before":true,
3785
  "[[\"stylewithcss\",\"true\"],[\"hilitecolor\",\"#00FFFF\"]] \"{<p style=\\\"background-color: aqua\\\">foo</p><p>bar</p>}\" queryCommandValue(\"hilitecolor\") after":true,
3765
  "[[\"stylewithcss\",\"true\"],[\"hilitecolor\",\"#00FFFF\"]] \"{<p style=\\\"background-color: aqua\\\">foo</p><p>bar</p>}\" queryCommandValue(\"hilitecolor\") after":true,
3786
  "[[\"stylewithcss\",\"false\"],[\"hilitecolor\",\"#00FFFF\"]] \"{<p style=\\\"background-color: aqua\\\">foo</p><p>bar</p>}\" compare innerHTML":true,
3766
  "[[\"stylewithcss\",\"false\"],[\"hilitecolor\",\"#00FFFF\"]] \"{<p style=\\\"background-color: aqua\\\">foo</p><p>bar</p>}\" compare innerHTML":true,
3787
  "[[\"stylewithcss\",\"false\"],[\"hilitecolor\",\"#00FFFF\"]] \"{<p style=\\\"background-color: aqua\\\">foo</p><p>bar</p>}\" queryCommandIndeterm(\"hilitecolor\") before":true,
3767
  "[[\"stylewithcss\",\"false\"],[\"hilitecolor\",\"#00FFFF\"]] \"{<p style=\\\"background-color: aqua\\\">foo</p><p>bar</p>}\" queryCommandIndeterm(\"hilitecolor\") before":true,
 Lines 3813-3835    Link Here 
3813
  "[[\"stylewithcss\",\"true\"],[\"hilitecolor\",\"#00FFFF\"]] \"<div style=\\\"background-color: aqua\\\"><p style=\\\"background-color: tan\\\">b[ar]</p></div>\" queryCommandValue(\"hilitecolor\") after":true,
3793
  "[[\"stylewithcss\",\"true\"],[\"hilitecolor\",\"#00FFFF\"]] \"<div style=\\\"background-color: aqua\\\"><p style=\\\"background-color: tan\\\">b[ar]</p></div>\" queryCommandValue(\"hilitecolor\") after":true,
3814
  "[[\"stylewithcss\",\"false\"],[\"hilitecolor\",\"#00FFFF\"]] \"<div style=\\\"background-color: aqua\\\"><p style=\\\"background-color: tan\\\">b[ar]</p></div>\" queryCommandValue(\"hilitecolor\") before":true,
3794
  "[[\"stylewithcss\",\"false\"],[\"hilitecolor\",\"#00FFFF\"]] \"<div style=\\\"background-color: aqua\\\"><p style=\\\"background-color: tan\\\">b[ar]</p></div>\" queryCommandValue(\"hilitecolor\") before":true,
3815
  "[[\"stylewithcss\",\"false\"],[\"hilitecolor\",\"#00FFFF\"]] \"<div style=\\\"background-color: aqua\\\"><p style=\\\"background-color: tan\\\">b[ar]</p></div>\" queryCommandValue(\"hilitecolor\") after":true,
3795
  "[[\"stylewithcss\",\"false\"],[\"hilitecolor\",\"#00FFFF\"]] \"<div style=\\\"background-color: aqua\\\"><p style=\\\"background-color: tan\\\">b[ar]</p></div>\" queryCommandValue(\"hilitecolor\") after":true,
3816
  "[[\"stylewithcss\",\"true\"],[\"hilitecolor\",\"#00FFFF\"]] \"<span style=\\\"display: block; background-color: aqua\\\"><span style=\\\"display: block; background-color: tan\\\">b[ar]</span></span>\" queryCommandValue(\"hilitecolor\") before":true,
3796
  "[[\"stylewithcss\",\"true\"],[\"hilitecolor\",\"#00FFFF\"]] \"<span style=\\\"display: block; background-color: aqua\\\"><span style=\\\"display: block; background-color: tan\\\">b[ar]</span></span>\" queryCommandValue(\"hilitecolor\") before":true,
3817
  "[[\"stylewithcss\",\"true\"],[\"hilitecolor\",\"#00FFFF\"]] \"<span style=\\\"display: block; background-color: aqua\\\"><span style=\\\"display: block; background-color: tan\\\">b[ar]</span></span>\" queryCommandValue(\"hilitecolor\") after":true,
3797
  "[[\"stylewithcss\",\"true\"],[\"hilitecolor\",\"#00FFFF\"]] \"<span style=\\\"display: block; background-color: aqua\\\"><span style=\\\"display: block; background-color: tan\\\">b[ar]</span></span>\" queryCommandValue(\"hilitecolor\") after":true,
3818
  "[[\"stylewithcss\",\"false\"],[\"hilitecolor\",\"#00FFFF\"]] \"<span style=\\\"display: block; background-color: aqua\\\"><span style=\\\"display: block; background-color: tan\\\">b[ar]</span></span>\" queryCommandValue(\"hilitecolor\") after":true,
3798
  "[[\"stylewithcss\",\"false\"],[\"hilitecolor\",\"#00FFFF\"]] \"<span style=\\\"display: block; background-color: aqua\\\"><span style=\\\"display: block; background-color: tan\\\">b[ar]</span></span>\" queryCommandValue(\"hilitecolor\") after":true,
3819
  "[[\"stylewithcss\",\"true\"],[\"hilitecolor\",\"#00FFFF\"]] \"fo[o<span style=background-color:tan>b]ar</span>baz\" queryCommandIndeterm(\"hilitecolor\") before":true,
3799
  "[[\"stylewithcss\",\"true\"],[\"hilitecolor\",\"#00FFFF\"]] \"fo[o<span style=background-color:tan>b]ar</span>baz\" queryCommandIndeterm(\"hilitecolor\") before":true,
3820
  "[[\"stylewithcss\",\"true\"],[\"hilitecolor\",\"#00FFFF\"]] \"fo[o<span style=background-color:tan>b]ar</span>baz\" queryCommandValue(\"hilitecolor\") after":true,
3800
  "[[\"stylewithcss\",\"true\"],[\"hilitecolor\",\"#00FFFF\"]] \"fo[o<span style=background-color:tan>b]ar</span>baz\" queryCommandValue(\"hilitecolor\") after":true,
3821
  "[[\"stylewithcss\",\"false\"],[\"hilitecolor\",\"#00FFFF\"]] \"fo[o<span style=background-color:tan>b]ar</span>baz\" compare innerHTML":true,
3822
  "[[\"stylewithcss\",\"false\"],[\"hilitecolor\",\"#00FFFF\"]] \"fo[o<span style=background-color:tan>b]ar</span>baz\" queryCommandIndeterm(\"hilitecolor\") before":true,
3801
  "[[\"stylewithcss\",\"false\"],[\"hilitecolor\",\"#00FFFF\"]] \"fo[o<span style=background-color:tan>b]ar</span>baz\" queryCommandIndeterm(\"hilitecolor\") before":true,
3823
  "[[\"stylewithcss\",\"false\"],[\"hilitecolor\",\"#00FFFF\"]] \"fo[o<span style=background-color:tan>b]ar</span>baz\" queryCommandValue(\"hilitecolor\") after":true,
3802
  "[[\"stylewithcss\",\"false\"],[\"hilitecolor\",\"#00FFFF\"]] \"fo[o<span style=background-color:tan>b]ar</span>baz\" queryCommandValue(\"hilitecolor\") after":true,
3824
  "[[\"stylewithcss\",\"true\"],[\"hilitecolor\",\"#00FFFF\"]] \"foo<span style=background-color:tan>ba[r</span>b]az\" queryCommandIndeterm(\"hilitecolor\") before":true,
3803
  "[[\"stylewithcss\",\"true\"],[\"hilitecolor\",\"#00FFFF\"]] \"foo<span style=background-color:tan>ba[r</span>b]az\" queryCommandIndeterm(\"hilitecolor\") before":true,
3825
  "[[\"stylewithcss\",\"true\"],[\"hilitecolor\",\"#00FFFF\"]] \"foo<span style=background-color:tan>ba[r</span>b]az\" queryCommandValue(\"hilitecolor\") before":true,
3804
  "[[\"stylewithcss\",\"true\"],[\"hilitecolor\",\"#00FFFF\"]] \"foo<span style=background-color:tan>ba[r</span>b]az\" queryCommandValue(\"hilitecolor\") before":true,
3826
  "[[\"stylewithcss\",\"true\"],[\"hilitecolor\",\"#00FFFF\"]] \"foo<span style=background-color:tan>ba[r</span>b]az\" queryCommandValue(\"hilitecolor\") after":true,
3805
  "[[\"stylewithcss\",\"true\"],[\"hilitecolor\",\"#00FFFF\"]] \"foo<span style=background-color:tan>ba[r</span>b]az\" queryCommandValue(\"hilitecolor\") after":true,
3827
  "[[\"stylewithcss\",\"false\"],[\"hilitecolor\",\"#00FFFF\"]] \"foo<span style=background-color:tan>ba[r</span>b]az\" compare innerHTML":true,
3828
  "[[\"stylewithcss\",\"false\"],[\"hilitecolor\",\"#00FFFF\"]] \"foo<span style=background-color:tan>ba[r</span>b]az\" queryCommandIndeterm(\"hilitecolor\") before":true,
3806
  "[[\"stylewithcss\",\"false\"],[\"hilitecolor\",\"#00FFFF\"]] \"foo<span style=background-color:tan>ba[r</span>b]az\" queryCommandIndeterm(\"hilitecolor\") before":true,
3829
  "[[\"stylewithcss\",\"false\"],[\"hilitecolor\",\"#00FFFF\"]] \"foo<span style=background-color:tan>ba[r</span>b]az\" queryCommandValue(\"hilitecolor\") after":true,
3807
  "[[\"stylewithcss\",\"false\"],[\"hilitecolor\",\"#00FFFF\"]] \"foo<span style=background-color:tan>ba[r</span>b]az\" queryCommandValue(\"hilitecolor\") after":true,
3830
  "[[\"hilitecolor\",\"#00FFFF\"]] \"fo[o<span style=background-color:tan>bar</span>b]az\" queryCommandIndeterm(\"hilitecolor\") before":true,
3808
  "[[\"hilitecolor\",\"#00FFFF\"]] \"fo[o<span style=background-color:tan>bar</span>b]az\" queryCommandIndeterm(\"hilitecolor\") before":true,
3831
  "[[\"hilitecolor\",\"#00FFFF\"]] \"fo[o<span style=background-color:tan>bar</span>b]az\" queryCommandValue(\"hilitecolor\") after":true,
3809
  "[[\"hilitecolor\",\"#00FFFF\"]] \"fo[o<span style=background-color:tan>bar</span>b]az\" queryCommandValue(\"hilitecolor\") after":true,
3832
  "[[\"stylewithcss\",\"true\"],[\"hilitecolor\",\"#00FFFF\"]] \"foo[<span style=background-color:tan>b]ar</span>baz\" queryCommandValue(\"hilitecolor\") before":true,
3810
  "[[\"stylewithcss\",\"true\"],[\"hilitecolor\",\"#00FFFF\"]] \"foo[<span style=background-color:tan>b]ar</span>baz\" queryCommandValue(\"hilitecolor\") before":true,
3833
  "[[\"stylewithcss\",\"true\"],[\"hilitecolor\",\"#00FFFF\"]] \"foo[<span style=background-color:tan>b]ar</span>baz\" queryCommandValue(\"hilitecolor\") after":true,
3811
  "[[\"stylewithcss\",\"true\"],[\"hilitecolor\",\"#00FFFF\"]] \"foo[<span style=background-color:tan>b]ar</span>baz\" queryCommandValue(\"hilitecolor\") after":true,
3834
  "[[\"stylewithcss\",\"false\"],[\"hilitecolor\",\"#00FFFF\"]] \"foo[<span style=background-color:tan>b]ar</span>baz\" queryCommandValue(\"hilitecolor\") before":true,
3812
  "[[\"stylewithcss\",\"false\"],[\"hilitecolor\",\"#00FFFF\"]] \"foo[<span style=background-color:tan>b]ar</span>baz\" queryCommandValue(\"hilitecolor\") before":true,
3835
  "[[\"stylewithcss\",\"false\"],[\"hilitecolor\",\"#00FFFF\"]] \"foo[<span style=background-color:tan>b]ar</span>baz\" queryCommandValue(\"hilitecolor\") after":true,
3813
  "[[\"stylewithcss\",\"false\"],[\"hilitecolor\",\"#00FFFF\"]] \"foo[<span style=background-color:tan>b]ar</span>baz\" queryCommandValue(\"hilitecolor\") after":true,
 Lines 3847-3872    Link Here 
3847
  "[[\"stylewithcss\",\"true\"],[\"hilitecolor\",\"#00FFFF\"]] \"<span style=background-color:tan>fo[o</span><span style=background-color:yellow>b]ar</span>\" queryCommandValue(\"hilitecolor\") after":true,
3825
  "[[\"stylewithcss\",\"true\"],[\"hilitecolor\",\"#00FFFF\"]] \"<span style=background-color:tan>fo[o</span><span style=background-color:yellow>b]ar</span>\" queryCommandValue(\"hilitecolor\") after":true,
3848
  "[[\"stylewithcss\",\"false\"],[\"hilitecolor\",\"#00FFFF\"]] \"<span style=background-color:tan>fo[o</span><span style=background-color:yellow>b]ar</span>\" queryCommandIndeterm(\"hilitecolor\") before":true,
3826
  "[[\"stylewithcss\",\"false\"],[\"hilitecolor\",\"#00FFFF\"]] \"<span style=background-color:tan>fo[o</span><span style=background-color:yellow>b]ar</span>\" queryCommandIndeterm(\"hilitecolor\") before":true,
3849
  "[[\"stylewithcss\",\"false\"],[\"hilitecolor\",\"#00FFFF\"]] \"<span style=background-color:tan>fo[o</span><span style=background-color:yellow>b]ar</span>\" queryCommandValue(\"hilitecolor\") after":true,
3827
  "[[\"stylewithcss\",\"false\"],[\"hilitecolor\",\"#00FFFF\"]] \"<span style=background-color:tan>fo[o</span><span style=background-color:yellow>b]ar</span>\" queryCommandValue(\"hilitecolor\") after":true,
3850
  "[[\"stylewithcss\",\"true\"],[\"hilitecolor\",\"#00FFFF\"]] \"<span style=background-color:tan>fo[o</span><span style=background-color:tan>b]ar</span>\" queryCommandValue(\"hilitecolor\") before":true,
3828
  "[[\"stylewithcss\",\"true\"],[\"hilitecolor\",\"#00FFFF\"]] \"<span style=background-color:tan>fo[o</span><span style=background-color:tan>b]ar</span>\" queryCommandValue(\"hilitecolor\") before":true,
3851
  "[[\"stylewithcss\",\"true\"],[\"hilitecolor\",\"#00FFFF\"]] \"<span style=background-color:tan>fo[o</span><span style=background-color:tan>b]ar</span>\" queryCommandValue(\"hilitecolor\") after":true,
3829
  "[[\"stylewithcss\",\"true\"],[\"hilitecolor\",\"#00FFFF\"]] \"<span style=background-color:tan>fo[o</span><span style=background-color:tan>b]ar</span>\" queryCommandValue(\"hilitecolor\") after":true,
3852
  "[[\"stylewithcss\",\"false\"],[\"hilitecolor\",\"#00FFFF\"]] \"<span style=background-color:tan>fo[o</span><span style=background-color:tan>b]ar</span>\" queryCommandValue(\"hilitecolor\") after":true,
3830
  "[[\"stylewithcss\",\"false\"],[\"hilitecolor\",\"#00FFFF\"]] \"<span style=background-color:tan>fo[o</span><span style=background-color:tan>b]ar</span>\" queryCommandValue(\"hilitecolor\") after":true,
3853
  "[[\"stylewithcss\",\"true\"],[\"hilitecolor\",\"#00FFFF\"]] \"<span style=background-color:tan>fo[o<span style=background-color:transparent>b]ar</span></span>\" queryCommandValue(\"hilitecolor\") before":true,
3831
  "[[\"stylewithcss\",\"true\"],[\"hilitecolor\",\"#00FFFF\"]] \"<span style=background-color:tan>fo[o<span style=background-color:transparent>b]ar</span></span>\" queryCommandValue(\"hilitecolor\") before":true,
3854
  "[[\"stylewithcss\",\"true\"],[\"hilitecolor\",\"#00FFFF\"]] \"<span style=background-color:tan>fo[o<span style=background-color:transparent>b]ar</span></span>\" queryCommandValue(\"hilitecolor\") after":true,
3832
  "[[\"stylewithcss\",\"true\"],[\"hilitecolor\",\"#00FFFF\"]] \"<span style=background-color:tan>fo[o<span style=background-color:transparent>b]ar</span></span>\" queryCommandValue(\"hilitecolor\") after":true,
3855
  "[[\"stylewithcss\",\"false\"],[\"hilitecolor\",\"#00FFFF\"]] \"<span style=background-color:tan>fo[o<span style=background-color:transparent>b]ar</span></span>\" compare innerHTML":true,
3856
  "[[\"stylewithcss\",\"false\"],[\"hilitecolor\",\"#00FFFF\"]] \"<span style=background-color:tan>fo[o<span style=background-color:transparent>b]ar</span></span>\" queryCommandValue(\"hilitecolor\") after":true,
3833
  "[[\"stylewithcss\",\"false\"],[\"hilitecolor\",\"#00FFFF\"]] \"<span style=background-color:tan>fo[o<span style=background-color:transparent>b]ar</span></span>\" queryCommandValue(\"hilitecolor\") after":true,
3857
  "[[\"stylewithcss\",\"false\"],[\"hilitecolor\",\"#00FFFF\"]] \"<font size=6>[foo]</font>\" queryCommandValue(\"hilitecolor\") after":true,
3834
  "[[\"stylewithcss\",\"false\"],[\"hilitecolor\",\"#00FFFF\"]] \"<font size=6>[foo]</font>\" queryCommandValue(\"hilitecolor\") after":true,
3858
  "[[\"stylewithcss\",\"false\"],[\"hilitecolor\",\"#00FFFF\"]] \"<span style=font-size:xx-large>[foo]</span>\" queryCommandValue(\"hilitecolor\") after":true,
3835
  "[[\"stylewithcss\",\"false\"],[\"hilitecolor\",\"#00FFFF\"]] \"<span style=font-size:xx-large>[foo]</span>\" queryCommandValue(\"hilitecolor\") after":true,
3859
  "[[\"stylewithcss\",\"true\"],[\"hilitecolor\",\"#00FFFF\"]] \"<font size=6>foo[bar]baz</font>\" queryCommandValue(\"hilitecolor\") after":true,
3836
  "[[\"stylewithcss\",\"true\"],[\"hilitecolor\",\"#00FFFF\"]] \"<font size=6>foo[bar]baz</font>\" queryCommandValue(\"hilitecolor\") after":true,
3860
  "[[\"stylewithcss\",\"false\"],[\"hilitecolor\",\"#00FFFF\"]] \"<font size=6>foo[bar]baz</font>\" queryCommandValue(\"hilitecolor\") after":true,
3837
  "[[\"stylewithcss\",\"false\"],[\"hilitecolor\",\"#00FFFF\"]] \"<font size=6>foo[bar]baz</font>\" queryCommandValue(\"hilitecolor\") after":true,
3861
  "[[\"stylewithcss\",\"true\"],[\"hilitecolor\",\"#00FFFF\"]] \"<span style=font-size:xx-large>foo[bar]baz</span>\" queryCommandValue(\"hilitecolor\") after":true,
3838
  "[[\"stylewithcss\",\"true\"],[\"hilitecolor\",\"#00FFFF\"]] \"<span style=font-size:xx-large>foo[bar]baz</span>\" queryCommandValue(\"hilitecolor\") after":true,
3862
  "[[\"stylewithcss\",\"false\"],[\"hilitecolor\",\"#00FFFF\"]] \"<span style=font-size:xx-large>foo[bar]baz</span>\" queryCommandValue(\"hilitecolor\") after":true,
3839
  "[[\"stylewithcss\",\"false\"],[\"hilitecolor\",\"#00FFFF\"]] \"<span style=font-size:xx-large>foo[bar]baz</span>\" queryCommandValue(\"hilitecolor\") after":true,
3863
  "[[\"stylewithcss\",\"false\"],[\"hilitecolor\",\"#00FFFF\"]] \"[foo<font size=6>bar</font>baz]\" queryCommandValue(\"hilitecolor\") after":true,
3840
  "[[\"stylewithcss\",\"false\"],[\"hilitecolor\",\"#00FFFF\"]] \"[foo<font size=6>bar</font>baz]\" queryCommandValue(\"hilitecolor\") after":true,
3864
  "[[\"stylewithcss\",\"false\"],[\"hilitecolor\",\"#00FFFF\"]] \"[foo<span style=font-size:xx-large>bar</span>baz]\" compare innerHTML":true,
3865
  "[[\"stylewithcss\",\"false\"],[\"hilitecolor\",\"#00FFFF\"]] \"[foo<span style=font-size:xx-large>bar</span>baz]\" queryCommandValue(\"hilitecolor\") after":true,
3841
  "[[\"stylewithcss\",\"false\"],[\"hilitecolor\",\"#00FFFF\"]] \"[foo<span style=font-size:xx-large>bar</span>baz]\" queryCommandValue(\"hilitecolor\") after":true,
3866
  "[[\"indent\",\"\"]] \"{<p><p> <p>foo</p>}<p>extra\" compare innerHTML":true,
3842
  "[[\"indent\",\"\"]] \"{<p><p> <p>foo</p>}<p>extra\" compare innerHTML":true,
3867
  "[[\"indent\",\"\"]] \"<p>foo<br>{}</p><p>extra\" compare innerHTML":true,
3843
  "[[\"indent\",\"\"]] \"<p>foo<br>{}</p><p>extra\" compare innerHTML":true,
3868
  "[[\"indent\",\"\"]] \"<span>foo<br>{}</span>bar<p>extra\" compare innerHTML":true,
3844
  "[[\"indent\",\"\"]] \"<span>foo<br>{}</span>bar<p>extra\" compare innerHTML":true,
3869
  "[[\"indent\",\"\"]] \"<p>foo</p>{}<p>bar</p>\" compare innerHTML":true,
3845
  "[[\"indent\",\"\"]] \"<p>foo</p>{}<p>bar</p>\" compare innerHTML":true,
3870
  "[[\"indent\",\"\"]] \"foo[bar]<br>baz<p>extra\" compare innerHTML":true,
3846
  "[[\"indent\",\"\"]] \"foo[bar]<br>baz<p>extra\" compare innerHTML":true,
3871
  "[[\"indent\",\"\"]] \"foo[bar]<br><br><br><br>baz<p>extra\" compare innerHTML":true,
3847
  "[[\"indent\",\"\"]] \"foo[bar]<br><br><br><br>baz<p>extra\" compare innerHTML":true,
3872
  "[[\"indent\",\"\"]] \"foobar<br>[ba]z<p>extra\" compare innerHTML":true,
3848
  "[[\"indent\",\"\"]] \"foobar<br>[ba]z<p>extra\" compare innerHTML":true,
 Lines 6703-6738    Link Here 
6703
  "[[\"stylewithcss\",\"true\"],[\"italic\",\"\"]] \"<i>{<p>foo</p><p>bar</p>}<p>baz</p></i>\" compare innerHTML":true,
6679
  "[[\"stylewithcss\",\"true\"],[\"italic\",\"\"]] \"<i>{<p>foo</p><p>bar</p>}<p>baz</p></i>\" compare innerHTML":true,
6704
  "[[\"stylewithcss\",\"false\"],[\"italic\",\"\"]] \"<i>{<p>foo</p><p>bar</p>}<p>baz</p></i>\" compare innerHTML":true,
6680
  "[[\"stylewithcss\",\"false\"],[\"italic\",\"\"]] \"<i>{<p>foo</p><p>bar</p>}<p>baz</p></i>\" compare innerHTML":true,
6705
  "[[\"stylewithcss\",\"true\"],[\"italic\",\"\"]] \"<i><p>foo[<b>bar</b>}</p><p>baz</p></i>\" compare innerHTML":true,
6681
  "[[\"stylewithcss\",\"true\"],[\"italic\",\"\"]] \"<i><p>foo[<b>bar</b>}</p><p>baz</p></i>\" compare innerHTML":true,
6706
  "[[\"stylewithcss\",\"true\"],[\"italic\",\"\"]] \"<i><p>foo[<b>bar</b>}</p><p>baz</p></i>\" queryCommandState(\"italic\") after":true,
6682
  "[[\"stylewithcss\",\"true\"],[\"italic\",\"\"]] \"<i><p>foo[<b>bar</b>}</p><p>baz</p></i>\" queryCommandState(\"italic\") after":true,
6707
  "[[\"stylewithcss\",\"false\"],[\"italic\",\"\"]] \"<i><p>foo[<b>bar</b>}</p><p>baz</p></i>\" compare innerHTML":true,
6683
  "[[\"stylewithcss\",\"false\"],[\"italic\",\"\"]] \"<i><p>foo[<b>bar</b>}</p><p>baz</p></i>\" compare innerHTML":true,
6708
  "[[\"stylewithcss\",\"false\"],[\"italic\",\"\"]] \"<i><p>foo[<b>bar</b>}</p><p>baz</p></i>\" queryCommandState(\"italic\") after":true,
6684
  "[[\"stylewithcss\",\"false\"],[\"italic\",\"\"]] \"<i><p>foo[<b>bar</b>}</p><p>baz</p></i>\" queryCommandState(\"italic\") after":true,
6709
  "[[\"stylewithcss\",\"true\"],[\"italic\",\"\"]] \"foo[<i>b]ar</i>baz\" compare innerHTML":true,
6685
  "[[\"stylewithcss\",\"true\"],[\"italic\",\"\"]] \"foo[<i>b]ar</i>baz\" compare innerHTML":true,
6710
  "[[\"stylewithcss\",\"true\"],[\"italic\",\"\"]] \"foo<i>ba[r</i>]baz\" compare innerHTML":true,
6686
  "[[\"stylewithcss\",\"true\"],[\"italic\",\"\"]] \"foo<i>ba[r</i>]baz\" compare innerHTML":true,
6711
  "[[\"italic\",\"\"]] \"fo[o<span style=font-style:italic>b]ar</span>baz\" compare innerHTML":true,
6712
  "[[\"stylewithcss\",\"true\"],[\"italic\",\"\"]] \"fo[o<span style=font-style:oblique>b]ar</span>baz\" compare innerHTML":true,
6687
  "[[\"stylewithcss\",\"true\"],[\"italic\",\"\"]] \"fo[o<span style=font-style:oblique>b]ar</span>baz\" compare innerHTML":true,
6713
  "[[\"stylewithcss\",\"true\"],[\"italic\",\"\"]] \"fo[o<span style=font-style:oblique>b]ar</span>baz\" queryCommandIndeterm(\"italic\") after":true,
6688
  "[[\"stylewithcss\",\"true\"],[\"italic\",\"\"]] \"fo[o<span style=font-style:oblique>b]ar</span>baz\" queryCommandIndeterm(\"italic\") after":true,
6714
  "[[\"stylewithcss\",\"true\"],[\"italic\",\"\"]] \"fo[o<span style=font-style:oblique>b]ar</span>baz\" queryCommandState(\"italic\") after":true,
6689
  "[[\"stylewithcss\",\"true\"],[\"italic\",\"\"]] \"fo[o<span style=font-style:oblique>b]ar</span>baz\" queryCommandState(\"italic\") after":true,
6690
  "[[\"stylewithcss\",\"false\"],[\"italic\",\"\"]] \"fo[o<span style=font-style:oblique>b]ar</span>baz\" compare innerHTML":true,
6691
  "[[\"stylewithcss\",\"false\"],[\"italic\",\"\"]] \"fo[o<span style=font-style:oblique>b]ar</span>baz\" queryCommandIndeterm(\"italic\") after":true,
6692
  "[[\"stylewithcss\",\"false\"],[\"italic\",\"\"]] \"fo[o<span style=font-style:oblique>b]ar</span>baz\" queryCommandState(\"italic\") after":true,
6715
  "[[\"stylewithcss\",\"true\"],[\"italic\",\"\"]] \"<span style=font-style:italic>fo[o</span><span style=font-style:oblique>b]ar</span>\" compare innerHTML":true,
6693
  "[[\"stylewithcss\",\"true\"],[\"italic\",\"\"]] \"<span style=font-style:italic>fo[o</span><span style=font-style:oblique>b]ar</span>\" compare innerHTML":true,
6716
  "[[\"stylewithcss\",\"true\"],[\"italic\",\"\"]] \"<span style=font-style:italic>fo[o</span><span style=font-style:oblique>b]ar</span>\" queryCommandIndeterm(\"italic\") before":true,
6694
  "[[\"stylewithcss\",\"true\"],[\"italic\",\"\"]] \"<span style=font-style:italic>fo[o</span><span style=font-style:oblique>b]ar</span>\" queryCommandIndeterm(\"italic\") before":true,
6717
  "[[\"stylewithcss\",\"true\"],[\"italic\",\"\"]] \"<span style=font-style:italic>fo[o</span><span style=font-style:oblique>b]ar</span>\" queryCommandState(\"italic\") before":true,
6695
  "[[\"stylewithcss\",\"true\"],[\"italic\",\"\"]] \"<span style=font-style:italic>fo[o</span><span style=font-style:oblique>b]ar</span>\" queryCommandState(\"italic\") before":true,
6718
  "[[\"stylewithcss\",\"true\"],[\"italic\",\"\"]] \"<span style=font-style:italic>fo[o</span><span style=font-style:oblique>b]ar</span>\" queryCommandIndeterm(\"italic\") after":true,
6696
  "[[\"stylewithcss\",\"true\"],[\"italic\",\"\"]] \"<span style=font-style:italic>fo[o</span><span style=font-style:oblique>b]ar</span>\" queryCommandIndeterm(\"italic\") after":true,
6719
  "[[\"stylewithcss\",\"false\"],[\"italic\",\"\"]] \"<span style=font-style:italic>fo[o</span><span style=font-style:oblique>b]ar</span>\" compare innerHTML":true,
6697
  "[[\"stylewithcss\",\"false\"],[\"italic\",\"\"]] \"<span style=font-style:italic>fo[o</span><span style=font-style:oblique>b]ar</span>\" compare innerHTML":true,
6720
  "[[\"stylewithcss\",\"false\"],[\"italic\",\"\"]] \"<span style=font-style:italic>fo[o</span><span style=font-style:oblique>b]ar</span>\" queryCommandIndeterm(\"italic\") before":true,
6698
  "[[\"stylewithcss\",\"false\"],[\"italic\",\"\"]] \"<span style=font-style:italic>fo[o</span><span style=font-style:oblique>b]ar</span>\" queryCommandIndeterm(\"italic\") before":true,
6721
  "[[\"stylewithcss\",\"false\"],[\"italic\",\"\"]] \"<span style=font-style:italic>fo[o</span><span style=font-style:oblique>b]ar</span>\" queryCommandState(\"italic\") before":true,
6699
  "[[\"stylewithcss\",\"false\"],[\"italic\",\"\"]] \"<span style=font-style:italic>fo[o</span><span style=font-style:oblique>b]ar</span>\" queryCommandState(\"italic\") before":true,
6722
  "[[\"stylewithcss\",\"false\"],[\"italic\",\"\"]] \"<span style=font-style:italic>fo[o</span><span style=font-style:oblique>b]ar</span>\" queryCommandState(\"italic\") after":true,
6700
  "[[\"stylewithcss\",\"false\"],[\"italic\",\"\"]] \"<span style=font-style:italic>fo[o</span><span style=font-style:oblique>b]ar</span>\" queryCommandIndeterm(\"italic\") after":true,
6723
  "[[\"stylewithcss\",\"true\"],[\"italic\",\"\"]] \"<span style=font-style:oblique>fo[o</span><span style=font-style:italic>b]ar</span>\" compare innerHTML":true,
6701
  "[[\"stylewithcss\",\"true\"],[\"italic\",\"\"]] \"<span style=font-style:oblique>fo[o</span><span style=font-style:italic>b]ar</span>\" compare innerHTML":true,
6724
  "[[\"stylewithcss\",\"true\"],[\"italic\",\"\"]] \"<span style=font-style:oblique>fo[o</span><span style=font-style:italic>b]ar</span>\" queryCommandIndeterm(\"italic\") before":true,
6702
  "[[\"stylewithcss\",\"true\"],[\"italic\",\"\"]] \"<span style=font-style:oblique>fo[o</span><span style=font-style:italic>b]ar</span>\" queryCommandIndeterm(\"italic\") before":true,
6725
  "[[\"stylewithcss\",\"true\"],[\"italic\",\"\"]] \"<span style=font-style:oblique>fo[o</span><span style=font-style:italic>b]ar</span>\" queryCommandState(\"italic\") before":true,
6703
  "[[\"stylewithcss\",\"true\"],[\"italic\",\"\"]] \"<span style=font-style:oblique>fo[o</span><span style=font-style:italic>b]ar</span>\" queryCommandState(\"italic\") before":true,
6726
  "[[\"stylewithcss\",\"true\"],[\"italic\",\"\"]] \"<span style=font-style:oblique>fo[o</span><span style=font-style:italic>b]ar</span>\" queryCommandIndeterm(\"italic\") after":true,
6704
  "[[\"stylewithcss\",\"true\"],[\"italic\",\"\"]] \"<span style=font-style:oblique>fo[o</span><span style=font-style:italic>b]ar</span>\" queryCommandIndeterm(\"italic\") after":true,
6727
  "[[\"stylewithcss\",\"false\"],[\"italic\",\"\"]] \"<span style=font-style:oblique>fo[o</span><span style=font-style:italic>b]ar</span>\" compare innerHTML":true,
6705
  "[[\"stylewithcss\",\"false\"],[\"italic\",\"\"]] \"<span style=font-style:oblique>fo[o</span><span style=font-style:italic>b]ar</span>\" compare innerHTML":true,
6728
  "[[\"stylewithcss\",\"false\"],[\"italic\",\"\"]] \"<span style=font-style:oblique>fo[o</span><span style=font-style:italic>b]ar</span>\" queryCommandIndeterm(\"italic\") before":true,
6706
  "[[\"stylewithcss\",\"false\"],[\"italic\",\"\"]] \"<span style=font-style:oblique>fo[o</span><span style=font-style:italic>b]ar</span>\" queryCommandIndeterm(\"italic\") before":true,
6729
  "[[\"stylewithcss\",\"false\"],[\"italic\",\"\"]] \"<span style=font-style:oblique>fo[o</span><span style=font-style:italic>b]ar</span>\" queryCommandState(\"italic\") before":true,
6707
  "[[\"stylewithcss\",\"false\"],[\"italic\",\"\"]] \"<span style=font-style:oblique>fo[o</span><span style=font-style:italic>b]ar</span>\" queryCommandState(\"italic\") before":true,
6730
  "[[\"stylewithcss\",\"false\"],[\"italic\",\"\"]] \"<span style=font-style:oblique>fo[o</span><span style=font-style:italic>b]ar</span>\" queryCommandState(\"italic\") after":true,
6708
  "[[\"stylewithcss\",\"false\"],[\"italic\",\"\"]] \"<span style=font-style:oblique>fo[o</span><span style=font-style:italic>b]ar</span>\" queryCommandIndeterm(\"italic\") after":true,
6731
  "[[\"stylewithcss\",\"true\"],[\"italic\",\"\"]] \"<i>fo[o</i><address>b]ar</address>\" compare innerHTML":true,
6709
  "[[\"stylewithcss\",\"true\"],[\"italic\",\"\"]] \"<i>fo[o</i><address>b]ar</address>\" compare innerHTML":true,
6732
  "[[\"stylewithcss\",\"true\"],[\"italic\",\"\"]] \"<i>fo[o</i><address>b]ar</address>\" queryCommandIndeterm(\"italic\") after":true,
6710
  "[[\"stylewithcss\",\"true\"],[\"italic\",\"\"]] \"<i>fo[o</i><address>b]ar</address>\" queryCommandIndeterm(\"italic\") after":true,
6733
  "[[\"stylewithcss\",\"false\"],[\"italic\",\"\"]] \"<i>fo[o</i><address>b]ar</address>\" compare innerHTML":true,
6711
  "[[\"stylewithcss\",\"false\"],[\"italic\",\"\"]] \"<i>fo[o</i><address>b]ar</address>\" compare innerHTML":true,
6734
  "[[\"stylewithcss\",\"false\"],[\"italic\",\"\"]] \"<i>fo[o</i><address>b]ar</address>\" queryCommandIndeterm(\"italic\") after":true,
6712
  "[[\"stylewithcss\",\"false\"],[\"italic\",\"\"]] \"<i>fo[o</i><address>b]ar</address>\" queryCommandIndeterm(\"italic\") after":true,
6735
  "[[\"stylewithcss\",\"true\"],[\"defaultparagraphseparator\",\"div\"],[\"justifycenter\",\"\"]] \"foo[]bar<p>extra\": execCommand(\"defaultparagraphseparator\", false, \"div\") return value":true,
6713
  "[[\"stylewithcss\",\"true\"],[\"defaultparagraphseparator\",\"div\"],[\"justifycenter\",\"\"]] \"foo[]bar<p>extra\": execCommand(\"defaultparagraphseparator\", false, \"div\") return value":true,
6736
  "[[\"stylewithcss\",\"true\"],[\"defaultparagraphseparator\",\"div\"],[\"justifycenter\",\"\"]] \"foo[]bar<p>extra\" queryCommandValue(\"defaultparagraphseparator\") before":true,
6714
  "[[\"stylewithcss\",\"true\"],[\"defaultparagraphseparator\",\"div\"],[\"justifycenter\",\"\"]] \"foo[]bar<p>extra\" queryCommandValue(\"defaultparagraphseparator\") before":true,
6737
  "[[\"stylewithcss\",\"true\"],[\"defaultparagraphseparator\",\"div\"],[\"justifycenter\",\"\"]] \"foo[]bar<p>extra\" queryCommandValue(\"defaultparagraphseparator\") after":true,
6715
  "[[\"stylewithcss\",\"true\"],[\"defaultparagraphseparator\",\"div\"],[\"justifycenter\",\"\"]] \"foo[]bar<p>extra\" queryCommandValue(\"defaultparagraphseparator\") after":true,
6738
  "[[\"stylewithcss\",\"false\"],[\"defaultparagraphseparator\",\"div\"],[\"justifycenter\",\"\"]] \"foo[]bar<p>extra\": execCommand(\"defaultparagraphseparator\", false, \"div\") return value":true,
6716
  "[[\"stylewithcss\",\"false\"],[\"defaultparagraphseparator\",\"div\"],[\"justifycenter\",\"\"]] \"foo[]bar<p>extra\": execCommand(\"defaultparagraphseparator\", false, \"div\") return value":true,
 Lines 10834-10856    Link Here 
10834
  "[[\"stylewithcss\",\"false\"],[\"strikethrough\",\"\"]] \"foo<u style=\\\"text-decoration: overline\\\">b[a]r</u>baz\" compare innerHTML":true,
10812
  "[[\"stylewithcss\",\"false\"],[\"strikethrough\",\"\"]] \"foo<u style=\\\"text-decoration: overline\\\">b[a]r</u>baz\" compare innerHTML":true,
10835
  "[[\"stylewithcss\",\"true\"],[\"strikethrough\",\"\"]] \"<p style=\\\"text-decoration: line-through\\\">foo[bar]baz</p>\" compare innerHTML":true,
10813
  "[[\"stylewithcss\",\"true\"],[\"strikethrough\",\"\"]] \"<p style=\\\"text-decoration: line-through\\\">foo[bar]baz</p>\" compare innerHTML":true,
10836
  "[[\"stylewithcss\",\"true\"],[\"strikethrough\",\"\"]] \"<p style=\\\"text-decoration: line-through\\\">foo[bar]baz</p>\" queryCommandState(\"strikethrough\") after":true,
10814
  "[[\"stylewithcss\",\"true\"],[\"strikethrough\",\"\"]] \"<p style=\\\"text-decoration: line-through\\\">foo[bar]baz</p>\" queryCommandState(\"strikethrough\") after":true,
10837
  "[[\"stylewithcss\",\"false\"],[\"strikethrough\",\"\"]] \"<p style=\\\"text-decoration: line-through\\\">foo[bar]baz</p>\" compare innerHTML":true,
10815
  "[[\"stylewithcss\",\"false\"],[\"strikethrough\",\"\"]] \"<p style=\\\"text-decoration: line-through\\\">foo[bar]baz</p>\" compare innerHTML":true,
10838
  "[[\"stylewithcss\",\"false\"],[\"strikethrough\",\"\"]] \"<p style=\\\"text-decoration: line-through\\\">foo[bar]baz</p>\" queryCommandState(\"strikethrough\") after":true,
10816
  "[[\"stylewithcss\",\"false\"],[\"strikethrough\",\"\"]] \"<p style=\\\"text-decoration: line-through\\\">foo[bar]baz</p>\" queryCommandState(\"strikethrough\") after":true,
10839
  "[[\"stylewithcss\",\"false\"],[\"strikethrough\",\"\"]] \"<p style=\\\"text-decoration: overline\\\">foo[bar]baz</p>\" compare innerHTML":true,
10817
  "[[\"stylewithcss\",\"false\"],[\"strikethrough\",\"\"]] \"<p style=\\\"text-decoration: overline\\\">foo[bar]baz</p>\" compare innerHTML":true,
10840
  "[[\"stylewithcss\",\"false\"],[\"strikethrough\",\"\"]] \"foo<span class=\\\"underline\\\">[bar]</span>baz\" compare innerHTML":true,
10818
  "[[\"stylewithcss\",\"false\"],[\"strikethrough\",\"\"]] \"foo<span class=\\\"underline\\\">[bar]</span>baz\" compare innerHTML":true,
10841
  "[[\"stylewithcss\",\"false\"],[\"strikethrough\",\"\"]] \"foo<span class=\\\"underline\\\">b[a]r</span>baz\" compare innerHTML":true,
10819
  "[[\"stylewithcss\",\"false\"],[\"strikethrough\",\"\"]] \"foo<span class=\\\"underline\\\">b[a]r</span>baz\" compare innerHTML":true,
10842
  "[[\"strikethrough\",\"\"]] \"fo[o<s>b]ar</s>baz\" compare innerHTML":true,
10843
  "[[\"strikethrough\",\"\"]] \"foo<s>ba[r</s>b]az\" compare innerHTML":true,
10844
  "[[\"stylewithcss\",\"true\"],[\"strikethrough\",\"\"]] \"fo[o<s>bar</s>b]az\" compare innerHTML":true,
10820
  "[[\"stylewithcss\",\"true\"],[\"strikethrough\",\"\"]] \"fo[o<s>bar</s>b]az\" compare innerHTML":true,
10845
  "[[\"stylewithcss\",\"false\"],[\"strikethrough\",\"\"]] \"fo[o<s>bar</s>b]az\" compare innerHTML":true,
10821
  "[[\"stylewithcss\",\"false\"],[\"strikethrough\",\"\"]] \"fo[o<s>bar</s>b]az\" compare innerHTML":true,
10846
  "[[\"stylewithcss\",\"true\"],[\"strikethrough\",\"\"]] \"foo[<s>b]ar</s>baz\" compare innerHTML":true,
10822
  "[[\"stylewithcss\",\"true\"],[\"strikethrough\",\"\"]] \"foo[<s>b]ar</s>baz\" compare innerHTML":true,
10847
  "[[\"stylewithcss\",\"true\"],[\"strikethrough\",\"\"]] \"foo<s>ba[r</s>]baz\" compare innerHTML":true,
10823
  "[[\"stylewithcss\",\"true\"],[\"strikethrough\",\"\"]] \"foo<s>ba[r</s>]baz\" compare innerHTML":true,
10848
  "[[\"strikethrough\",\"\"]] \"fo[o<span style=text-decoration:line-through>b]ar</span>baz\" compare innerHTML":true,
10849
  "[[\"stylewithcss\",\"true\"],[\"strikethrough\",\"\"]] \"<strike>fo[o</strike><s>b]ar</s>\" compare innerHTML":true,
10824
  "[[\"stylewithcss\",\"true\"],[\"strikethrough\",\"\"]] \"<strike>fo[o</strike><s>b]ar</s>\" compare innerHTML":true,
10850
  "[[\"stylewithcss\",\"false\"],[\"strikethrough\",\"\"]] \"<strike>fo[o</strike><s>b]ar</s>\" compare innerHTML":true,
10825
  "[[\"stylewithcss\",\"false\"],[\"strikethrough\",\"\"]] \"<strike>fo[o</strike><s>b]ar</s>\" compare innerHTML":true,
10851
  "[[\"stylewithcss\",\"true\"],[\"strikethrough\",\"\"]] \"<s>fo[o</s><del>b]ar</del>\" compare innerHTML":true,
10826
  "[[\"stylewithcss\",\"true\"],[\"strikethrough\",\"\"]] \"<s>fo[o</s><del>b]ar</del>\" compare innerHTML":true,
10852
  "[[\"subscript\",\"\"]] \"<span>foo[</span><span>]bar</span>\" queryCommandState(\"subscript\") after":true,
10827
  "[[\"subscript\",\"\"]] \"<span>foo[</span><span>]bar</span>\" queryCommandState(\"subscript\") after":true,
10853
  "[[\"stylewithcss\",\"true\"],[\"subscript\",\"\"]] \"foo<sup>[bar]</sup>baz\" compare innerHTML":true,
10828
  "[[\"stylewithcss\",\"true\"],[\"subscript\",\"\"]] \"foo<sup>[bar]</sup>baz\" compare innerHTML":true,
10854
  "[[\"stylewithcss\",\"false\"],[\"subscript\",\"\"]] \"foo<sup>[bar]</sup>baz\" compare innerHTML":true,
10829
  "[[\"stylewithcss\",\"false\"],[\"subscript\",\"\"]] \"foo<sup>[bar]</sup>baz\" compare innerHTML":true,
10855
  "[[\"stylewithcss\",\"true\"],[\"subscript\",\"\"]] \"foo<sup>b[a]r</sup>baz\" compare innerHTML":true,
10830
  "[[\"stylewithcss\",\"true\"],[\"subscript\",\"\"]] \"foo<sup>b[a]r</sup>baz\" compare innerHTML":true,
10856
  "[[\"stylewithcss\",\"false\"],[\"subscript\",\"\"]] \"foo<sup>b[a]r</sup>baz\" compare innerHTML":true,
10831
  "[[\"stylewithcss\",\"false\"],[\"subscript\",\"\"]] \"foo<sup>b[a]r</sup>baz\" compare innerHTML":true,
 Lines 10904-10920    Link Here 
10904
  "[[\"stylewithcss\",\"true\"],[\"subscript\",\"\"]] \"foo<sup>b<sub>[a]</sub>r</sup>baz\" compare innerHTML":true,
10879
  "[[\"stylewithcss\",\"true\"],[\"subscript\",\"\"]] \"foo<sup>b<sub>[a]</sub>r</sup>baz\" compare innerHTML":true,
10905
  "[[\"stylewithcss\",\"true\"],[\"subscript\",\"\"]] \"foo<sup>b<sub>[a]</sub>r</sup>baz\" queryCommandIndeterm(\"subscript\") before":true,
10880
  "[[\"stylewithcss\",\"true\"],[\"subscript\",\"\"]] \"foo<sup>b<sub>[a]</sub>r</sup>baz\" queryCommandIndeterm(\"subscript\") before":true,
10906
  "[[\"stylewithcss\",\"true\"],[\"subscript\",\"\"]] \"foo<sup>b<sub>[a]</sub>r</sup>baz\" queryCommandState(\"subscript\") before":true,
10881
  "[[\"stylewithcss\",\"true\"],[\"subscript\",\"\"]] \"foo<sup>b<sub>[a]</sub>r</sup>baz\" queryCommandState(\"subscript\") before":true,
10907
  "[[\"stylewithcss\",\"true\"],[\"subscript\",\"\"]] \"foo<sup>b<sub>[a]</sub>r</sup>baz\" queryCommandState(\"subscript\") after":true,
10882
  "[[\"stylewithcss\",\"true\"],[\"subscript\",\"\"]] \"foo<sup>b<sub>[a]</sub>r</sup>baz\" queryCommandState(\"subscript\") after":true,
10908
  "[[\"stylewithcss\",\"false\"],[\"subscript\",\"\"]] \"foo<sup>b<sub>[a]</sub>r</sup>baz\" compare innerHTML":true,
10883
  "[[\"stylewithcss\",\"false\"],[\"subscript\",\"\"]] \"foo<sup>b<sub>[a]</sub>r</sup>baz\" compare innerHTML":true,
10909
  "[[\"stylewithcss\",\"false\"],[\"subscript\",\"\"]] \"foo<sup>b<sub>[a]</sub>r</sup>baz\" queryCommandIndeterm(\"subscript\") before":true,
10884
  "[[\"stylewithcss\",\"false\"],[\"subscript\",\"\"]] \"foo<sup>b<sub>[a]</sub>r</sup>baz\" queryCommandIndeterm(\"subscript\") before":true,
10910
  "[[\"stylewithcss\",\"false\"],[\"subscript\",\"\"]] \"foo<sup>b<sub>[a]</sub>r</sup>baz\" queryCommandState(\"subscript\") before":true,
10885
  "[[\"stylewithcss\",\"false\"],[\"subscript\",\"\"]] \"foo<sup>b<sub>[a]</sub>r</sup>baz\" queryCommandState(\"subscript\") before":true,
10911
  "[[\"stylewithcss\",\"false\"],[\"subscript\",\"\"]] \"foo<sup>b<sub>[a]</sub>r</sup>baz\" queryCommandState(\"subscript\") after":true,
10886
  "[[\"stylewithcss\",\"false\"],[\"subscript\",\"\"]] \"foo<sup>b<sub>[a]</sub>r</sup>baz\" queryCommandState(\"subscript\") after":true,
10912
  "[[\"subscript\",\"\"]] \"fo[o<sub>b]ar</sub>baz\" compare innerHTML":true,
10913
  "[[\"subscript\",\"\"]] \"<sub>fo[o</sub><sup>b]ar</sup>\" compare innerHTML":true,
10887
  "[[\"subscript\",\"\"]] \"<sub>fo[o</sub><sup>b]ar</sup>\" compare innerHTML":true,
10914
  "[[\"superscript\",\"\"]] \"<span>foo[</span><span>]bar</span>\" queryCommandState(\"superscript\") after":true,
10888
  "[[\"superscript\",\"\"]] \"<span>foo[</span><span>]bar</span>\" queryCommandState(\"superscript\") after":true,
10915
  "[[\"stylewithcss\",\"true\"],[\"superscript\",\"\"]] \"foo<sub>[bar]</sub>baz\" compare innerHTML":true,
10889
  "[[\"stylewithcss\",\"true\"],[\"superscript\",\"\"]] \"foo<sub>[bar]</sub>baz\" compare innerHTML":true,
10916
  "[[\"stylewithcss\",\"false\"],[\"superscript\",\"\"]] \"foo<sub>[bar]</sub>baz\" compare innerHTML":true,
10890
  "[[\"stylewithcss\",\"false\"],[\"superscript\",\"\"]] \"foo<sub>[bar]</sub>baz\" compare innerHTML":true,
10917
  "[[\"stylewithcss\",\"true\"],[\"superscript\",\"\"]] \"foo<sub>b[a]r</sub>baz\" compare innerHTML":true,
10891
  "[[\"stylewithcss\",\"true\"],[\"superscript\",\"\"]] \"foo<sub>b[a]r</sub>baz\" compare innerHTML":true,
10918
  "[[\"stylewithcss\",\"false\"],[\"superscript\",\"\"]] \"foo<sub>b[a]r</sub>baz\" compare innerHTML":true,
10892
  "[[\"stylewithcss\",\"false\"],[\"superscript\",\"\"]] \"foo<sub>b[a]r</sub>baz\" compare innerHTML":true,
10919
  "[[\"stylewithcss\",\"true\"],[\"superscript\",\"\"]] \"foo<sub><sub>[bar]</sub></sub>baz\" compare innerHTML":true,
10893
  "[[\"stylewithcss\",\"true\"],[\"superscript\",\"\"]] \"foo<sub><sub>[bar]</sub></sub>baz\" compare innerHTML":true,
10920
  "[[\"stylewithcss\",\"false\"],[\"superscript\",\"\"]] \"foo<sub><sub>[bar]</sub></sub>baz\" compare innerHTML":true,
10894
  "[[\"stylewithcss\",\"false\"],[\"superscript\",\"\"]] \"foo<sub><sub>[bar]</sub></sub>baz\" compare innerHTML":true,
 Lines 10966-10982    Link Here 
10966
  "[[\"stylewithcss\",\"true\"],[\"superscript\",\"\"]] \"foo<sup>b<sub>[a]</sub>r</sup>baz\" compare innerHTML":true,
10940
  "[[\"stylewithcss\",\"true\"],[\"superscript\",\"\"]] \"foo<sup>b<sub>[a]</sub>r</sup>baz\" compare innerHTML":true,
10967
  "[[\"stylewithcss\",\"true\"],[\"superscript\",\"\"]] \"foo<sup>b<sub>[a]</sub>r</sup>baz\" queryCommandIndeterm(\"superscript\") before":true,
10941
  "[[\"stylewithcss\",\"true\"],[\"superscript\",\"\"]] \"foo<sup>b<sub>[a]</sub>r</sup>baz\" queryCommandIndeterm(\"superscript\") before":true,
10968
  "[[\"stylewithcss\",\"true\"],[\"superscript\",\"\"]] \"foo<sup>b<sub>[a]</sub>r</sup>baz\" queryCommandState(\"superscript\") before":true,
10942
  "[[\"stylewithcss\",\"true\"],[\"superscript\",\"\"]] \"foo<sup>b<sub>[a]</sub>r</sup>baz\" queryCommandState(\"superscript\") before":true,
10969
  "[[\"stylewithcss\",\"true\"],[\"superscript\",\"\"]] \"foo<sup>b<sub>[a]</sub>r</sup>baz\" queryCommandState(\"superscript\") after":true,
10943
  "[[\"stylewithcss\",\"true\"],[\"superscript\",\"\"]] \"foo<sup>b<sub>[a]</sub>r</sup>baz\" queryCommandState(\"superscript\") after":true,
10970
  "[[\"stylewithcss\",\"false\"],[\"superscript\",\"\"]] \"foo<sup>b<sub>[a]</sub>r</sup>baz\" compare innerHTML":true,
10944
  "[[\"stylewithcss\",\"false\"],[\"superscript\",\"\"]] \"foo<sup>b<sub>[a]</sub>r</sup>baz\" compare innerHTML":true,
10971
  "[[\"stylewithcss\",\"false\"],[\"superscript\",\"\"]] \"foo<sup>b<sub>[a]</sub>r</sup>baz\" queryCommandIndeterm(\"superscript\") before":true,
10945
  "[[\"stylewithcss\",\"false\"],[\"superscript\",\"\"]] \"foo<sup>b<sub>[a]</sub>r</sup>baz\" queryCommandIndeterm(\"superscript\") before":true,
10972
  "[[\"stylewithcss\",\"false\"],[\"superscript\",\"\"]] \"foo<sup>b<sub>[a]</sub>r</sup>baz\" queryCommandState(\"superscript\") before":true,
10946
  "[[\"stylewithcss\",\"false\"],[\"superscript\",\"\"]] \"foo<sup>b<sub>[a]</sub>r</sup>baz\" queryCommandState(\"superscript\") before":true,
10973
  "[[\"stylewithcss\",\"false\"],[\"superscript\",\"\"]] \"foo<sup>b<sub>[a]</sub>r</sup>baz\" queryCommandState(\"superscript\") after":true,
10947
  "[[\"stylewithcss\",\"false\"],[\"superscript\",\"\"]] \"foo<sup>b<sub>[a]</sub>r</sup>baz\" queryCommandState(\"superscript\") after":true,
10974
  "[[\"superscript\",\"\"]] \"fo[o<sup>b]ar</sup>baz\" compare innerHTML":true,
10975
  "[[\"superscript\",\"\"]] \"<sup>fo[o</sup><sub>b]ar</sub>\" compare innerHTML":true,
10948
  "[[\"superscript\",\"\"]] \"<sup>fo[o</sup><sub>b]ar</sub>\" compare innerHTML":true,
10976
  "[[\"stylewithcss\",\"true\"],[\"superscript\",\"\"]] \"foo<sup>[bar]<br></sup>\" compare innerHTML":true,
10949
  "[[\"stylewithcss\",\"true\"],[\"superscript\",\"\"]] \"foo<sup>[bar]<br></sup>\" compare innerHTML":true,
10977
  "[[\"stylewithcss\",\"false\"],[\"superscript\",\"\"]] \"foo<sup>[bar]<br></sup>\" compare innerHTML":true,
10950
  "[[\"stylewithcss\",\"false\"],[\"superscript\",\"\"]] \"foo<sup>[bar]<br></sup>\" compare innerHTML":true,
10978
  "[[\"stylewithcss\",\"true\"],[\"underline\",\"\"]] \"<span>[foo</span> <span>bar]</span>\" compare innerHTML":true,
10951
  "[[\"stylewithcss\",\"true\"],[\"underline\",\"\"]] \"<span>[foo</span> <span>bar]</span>\" compare innerHTML":true,
10979
  "[[\"stylewithcss\",\"true\"],[\"underline\",\"\"]] \"<span>[foo</span> <span>bar]</span>\" queryCommandIndeterm(\"underline\") before":true,
10952
  "[[\"stylewithcss\",\"true\"],[\"underline\",\"\"]] \"<span>[foo</span> <span>bar]</span>\" queryCommandIndeterm(\"underline\") before":true,
10980
  "[[\"stylewithcss\",\"false\"],[\"underline\",\"\"]] \"<span>[foo</span> <span>bar]</span>\" queryCommandIndeterm(\"underline\") before":true,
10953
  "[[\"stylewithcss\",\"false\"],[\"underline\",\"\"]] \"<span>[foo</span> <span>bar]</span>\" queryCommandIndeterm(\"underline\") before":true,
10981
  "[[\"stylewithcss\",\"true\"],[\"underline\",\"\"]] \"<p>[foo</p><p> <span>bar</span> </p><p>baz]</p>\" compare innerHTML":true,
10954
  "[[\"stylewithcss\",\"true\"],[\"underline\",\"\"]] \"<p>[foo</p><p> <span>bar</span> </p><p>baz]</p>\" compare innerHTML":true,
10982
  "[[\"stylewithcss\",\"true\"],[\"underline\",\"\"]] \"<p>[foo</p><p> <span>bar</span> </p><p>baz]</p>\" queryCommandIndeterm(\"underline\") before":true,
10955
  "[[\"stylewithcss\",\"true\"],[\"underline\",\"\"]] \"<p>[foo</p><p> <span>bar</span> </p><p>baz]</p>\" queryCommandIndeterm(\"underline\") before":true,
 Lines 11006-11030    Link Here 
11006
  "[[\"stylewithcss\",\"false\"],[\"underline\",\"\"]] \"foo<span style=\\\"text-decoration: underline line-through\\\">b[a]r</span>baz\" queryCommandState(\"underline\") after":true,
10979
  "[[\"stylewithcss\",\"false\"],[\"underline\",\"\"]] \"foo<span style=\\\"text-decoration: underline line-through\\\">b[a]r</span>baz\" queryCommandState(\"underline\") after":true,
11007
  "[[\"stylewithcss\",\"true\"],[\"underline\",\"\"]] \"foo<s style=\\\"text-decoration: underline\\\">[bar]</s>baz\" compare innerHTML":true,
10980
  "[[\"stylewithcss\",\"true\"],[\"underline\",\"\"]] \"foo<s style=\\\"text-decoration: underline\\\">[bar]</s>baz\" compare innerHTML":true,
11008
  "[[\"stylewithcss\",\"false\"],[\"underline\",\"\"]] \"foo<s style=\\\"text-decoration: underline\\\">[bar]</s>baz\" compare innerHTML":true,
10981
  "[[\"stylewithcss\",\"false\"],[\"underline\",\"\"]] \"foo<s style=\\\"text-decoration: underline\\\">[bar]</s>baz\" compare innerHTML":true,
11009
  "[[\"stylewithcss\",\"true\"],[\"underline\",\"\"]] \"foo<s style=\\\"text-decoration: underline\\\">b[a]r</s>baz\" compare innerHTML":true,
10982
  "[[\"stylewithcss\",\"true\"],[\"underline\",\"\"]] \"foo<s style=\\\"text-decoration: underline\\\">b[a]r</s>baz\" compare innerHTML":true,
11010
  "[[\"stylewithcss\",\"false\"],[\"underline\",\"\"]] \"foo<s style=\\\"text-decoration: underline\\\">b[a]r</s>baz\" compare innerHTML":true,
10983
  "[[\"stylewithcss\",\"false\"],[\"underline\",\"\"]] \"foo<s style=\\\"text-decoration: underline\\\">b[a]r</s>baz\" compare innerHTML":true,
11011
  "[[\"stylewithcss\",\"false\"],[\"underline\",\"\"]] \"foo<s style=\\\"text-decoration: underline\\\">b[a]r</s>baz\" queryCommandState(\"underline\") after":true,
10984
  "[[\"stylewithcss\",\"false\"],[\"underline\",\"\"]] \"foo<s style=\\\"text-decoration: underline\\\">b[a]r</s>baz\" queryCommandState(\"underline\") after":true,
11012
  "[[\"stylewithcss\",\"true\"],[\"underline\",\"\"]] \"foo<u style=\\\"text-decoration: line-through\\\">[bar]</u>baz\" compare innerHTML":true,
10985
  "[[\"stylewithcss\",\"true\"],[\"underline\",\"\"]] \"foo<u style=\\\"text-decoration: line-through\\\">[bar]</u>baz\" compare innerHTML":true,
11013
  "[[\"stylewithcss\",\"false\"],[\"underline\",\"\"]] \"foo<u style=\\\"text-decoration: line-through\\\">[bar]</u>baz\" compare innerHTML":true,
10986
  "[[\"stylewithcss\",\"false\"],[\"underline\",\"\"]] \"foo<u style=\\\"text-decoration: line-through\\\">[bar]</u>baz\" compare innerHTML":true,
11014
  "[[\"stylewithcss\",\"false\"],[\"underline\",\"\"]] \"foo<u style=\\\"text-decoration: line-through\\\">b[a]r</u>baz\" compare innerHTML":true,
11015
  "[[\"stylewithcss\",\"false\"],[\"underline\",\"\"]] \"foo<u style=\\\"text-decoration: line-through\\\">b[a]r</u>baz\" queryCommandState(\"underline\") after":true,
11016
  "[[\"stylewithcss\",\"true\"],[\"underline\",\"\"]] \"foo<u style=\\\"text-decoration: overline\\\">[bar]</u>baz\" compare innerHTML":true,
10987
  "[[\"stylewithcss\",\"true\"],[\"underline\",\"\"]] \"foo<u style=\\\"text-decoration: overline\\\">[bar]</u>baz\" compare innerHTML":true,
11017
  "[[\"stylewithcss\",\"false\"],[\"underline\",\"\"]] \"foo<u style=\\\"text-decoration: overline\\\">[bar]</u>baz\" compare innerHTML":true,
10988
  "[[\"stylewithcss\",\"false\"],[\"underline\",\"\"]] \"foo<u style=\\\"text-decoration: overline\\\">[bar]</u>baz\" compare innerHTML":true,
11018
  "[[\"stylewithcss\",\"false\"],[\"underline\",\"\"]] \"foo<u style=\\\"text-decoration: overline\\\">b[a]r</u>baz\" compare innerHTML":true,
11019
  "[[\"stylewithcss\",\"false\"],[\"underline\",\"\"]] \"foo<u style=\\\"text-decoration: overline\\\">b[a]r</u>baz\" queryCommandState(\"underline\") after":true,
11020
  "[[\"stylewithcss\",\"true\"],[\"underline\",\"\"]] \"foo[<u>b]ar</u>baz\" compare innerHTML":true,
10989
  "[[\"stylewithcss\",\"true\"],[\"underline\",\"\"]] \"foo[<u>b]ar</u>baz\" compare innerHTML":true,
11021
  "[[\"stylewithcss\",\"true\"],[\"underline\",\"\"]] \"foo<u>ba[r</u>]baz\" compare innerHTML":true,
10990
  "[[\"stylewithcss\",\"true\"],[\"underline\",\"\"]] \"foo<u>ba[r</u>]baz\" compare innerHTML":true,
11022
  "[[\"underline\",\"\"]] \"fo[o<span style=text-decoration:underline>b]ar</span>baz\" compare innerHTML":true,
11023
  "[[\"stylewithcss\",\"true\"],[\"underline\",\"\"]] \"<ins>fo[o</ins><u>b]ar</u>\" compare innerHTML":true,
10991
  "[[\"stylewithcss\",\"true\"],[\"underline\",\"\"]] \"<ins>fo[o</ins><u>b]ar</u>\" compare innerHTML":true,
11024
  "[[\"stylewithcss\",\"true\"],[\"underline\",\"\"]] \"<u>fo[o</u><ins>b]ar</ins>\" compare innerHTML":true,
10992
  "[[\"stylewithcss\",\"true\"],[\"underline\",\"\"]] \"<u>fo[o</u><ins>b]ar</ins>\" compare innerHTML":true,
11025
  "[[\"unlink\",\"\"]] \"<a href=http://www.google.com/>foo[bar]baz</a>\" compare innerHTML":true,
10993
  "[[\"unlink\",\"\"]] \"<a href=http://www.google.com/>foo[bar]baz</a>\" compare innerHTML":true,
11026
  "[[\"unlink\",\"\"]] \"<a href=http://www.google.com/>foo[barbaz</a>}\" compare innerHTML":true,
10994
  "[[\"unlink\",\"\"]] \"<a href=http://www.google.com/>foo[barbaz</a>}\" compare innerHTML":true,
11027
  "[[\"unlink\",\"\"]] \"{<a href=http://www.google.com/>foobar]baz</a>\" compare innerHTML":true,
10995
  "[[\"unlink\",\"\"]] \"{<a href=http://www.google.com/>foobar]baz</a>\" compare innerHTML":true,
11028
  "[[\"unlink\",\"\"]] \"foo<a href=http://www.google.com/>b[]ar</a>baz\" compare innerHTML":true,
10996
  "[[\"unlink\",\"\"]] \"foo<a href=http://www.google.com/>b[]ar</a>baz\" compare innerHTML":true,
11029
  "[[\"unlink\",\"\"]] \"<a id=foo href=http://www.google.com/>foobar[]baz</a>\" compare innerHTML":true,
10997
  "[[\"unlink\",\"\"]] \"<a id=foo href=http://www.google.com/>foobar[]baz</a>\" compare innerHTML":true,
11030
  "[[\"unlink\",\"\"]] \"<a id=foo href=http://www.google.com/>foo[bar]baz</a>\" compare innerHTML":true,
10998
  "[[\"unlink\",\"\"]] \"<a id=foo href=http://www.google.com/>foo[bar]baz</a>\" compare innerHTML":true,
(-)a/editor/libeditor/base/nsEditor.cpp (+25 lines)
Line     Link Here 
 Lines 1441-1456   nsEditor::SplitNode(nsIDOMNode * aNode, Link Here 
1441
    nsIDOMNode *ptr = *aNewLeftNode;
1441
    nsIDOMNode *ptr = *aNewLeftNode;
1442
    mActionListeners[i]->DidSplitNode(aNode, aOffset, ptr, result);
1442
    mActionListeners[i]->DidSplitNode(aNode, aOffset, ptr, result);
1443
  }
1443
  }
1444
1444
1445
  return result;
1445
  return result;
1446
}
1446
}
1447
1447
1448
1448
1449
nsresult
1450
nsEditor::JoinNodes(nsINode* aNodeToKeep, nsIContent* aNodeToMove)
1451
{
1452
  // We don't really need aNodeToMove's parent to be non-null -- we could just
1453
  // skip adjusting any ranges in aNodeToMove's parent if there is none.  But
1454
  // the current implementation requires it.
1455
  MOZ_ASSERT(aNodeToKeep && aNodeToMove && aNodeToMove->GetNodeParent());
1456
  nsresult res = JoinNodes(aNodeToKeep->AsDOMNode(), aNodeToMove->AsDOMNode(),
1457
                           aNodeToMove->GetNodeParent()->AsDOMNode());
1458
  NS_ASSERTION(NS_SUCCEEDED(res), "JoinNodes failed");
1459
  NS_ENSURE_SUCCESS(res, res);
1460
  return NS_OK;
1461
}
1449
1462
1450
NS_IMETHODIMP
1463
NS_IMETHODIMP
1451
nsEditor::JoinNodes(nsIDOMNode * aLeftNode,
1464
nsEditor::JoinNodes(nsIDOMNode * aLeftNode,
1452
                    nsIDOMNode * aRightNode,
1465
                    nsIDOMNode * aRightNode,
1453
                    nsIDOMNode * aParent)
1466
                    nsIDOMNode * aParent)
1454
{
1467
{
1455
  PRInt32 i, offset;
1468
  PRInt32 i, offset;
1456
  nsAutoRules beginRulesSniffing(this, kOpJoinNode, nsIEditor::ePrevious);
1469
  nsAutoRules beginRulesSniffing(this, kOpJoinNode, nsIEditor::ePrevious);
 Lines 1675-1690   nsEditor::InsertContainerAbove( nsIDOMNo Link Here 
1675
1688
1676
  // put new parent in doc
1689
  // put new parent in doc
1677
  return InsertNode(*outNode, parent, offset);
1690
  return InsertNode(*outNode, parent, offset);
1678
}
1691
}
1679
1692
1680
///////////////////////////////////////////////////////////////////////////
1693
///////////////////////////////////////////////////////////////////////////
1681
// MoveNode:  move aNode to {aParent,aOffset}
1694
// MoveNode:  move aNode to {aParent,aOffset}
1682
nsresult
1695
nsresult
1696
nsEditor::MoveNode(nsIContent* aNode, nsINode* aParent, PRInt32 aOffset)
1697
{
1698
  MOZ_ASSERT(aNode && aParent);
1699
  MOZ_ASSERT(aOffset == -1 || (0 <= aOffset &&
1700
                               aOffset <= (PRInt32)aParent->Length()));
1701
  nsresult res = MoveNode(aNode->AsDOMNode(), aParent->AsDOMNode(), aOffset);
1702
  NS_ASSERTION(NS_SUCCEEDED(res), "MoveNode failed");
1703
  NS_ENSURE_SUCCESS(res, res);
1704
  return NS_OK;
1705
}
1706
1707
nsresult
1683
nsEditor::MoveNode(nsIDOMNode *aNode, nsIDOMNode *aParent, PRInt32 aOffset)
1708
nsEditor::MoveNode(nsIDOMNode *aNode, nsIDOMNode *aParent, PRInt32 aOffset)
1684
{
1709
{
1685
  NS_ENSURE_TRUE(aNode && aParent, NS_ERROR_NULL_POINTER);
1710
  NS_ENSURE_TRUE(aNode && aParent, NS_ERROR_NULL_POINTER);
1686
1711
1687
  nsCOMPtr<nsIDOMNode> oldParent;
1712
  nsCOMPtr<nsIDOMNode> oldParent;
1688
  PRInt32 oldOffset;
1713
  PRInt32 oldOffset;
1689
  nsresult res = GetNodeLocation(aNode, address_of(oldParent), &oldOffset);
1714
  nsresult res = GetNodeLocation(aNode, address_of(oldParent), &oldOffset);
1690
  
1715
  
(-)a/editor/libeditor/base/nsEditor.h (+2 lines)
Line     Link Here 
 Lines 187-202   public: Link Here 
187
187
188
  nsresult RemoveContainer(nsINode* aNode);
188
  nsresult RemoveContainer(nsINode* aNode);
189
  nsresult RemoveContainer(nsIDOMNode *inNode);
189
  nsresult RemoveContainer(nsIDOMNode *inNode);
190
  nsresult InsertContainerAbove(nsIDOMNode *inNode, 
190
  nsresult InsertContainerAbove(nsIDOMNode *inNode, 
191
                                nsCOMPtr<nsIDOMNode> *outNode, 
191
                                nsCOMPtr<nsIDOMNode> *outNode, 
192
                                const nsAString &aNodeType,
192
                                const nsAString &aNodeType,
193
                                const nsAString *aAttribute = nsnull,
193
                                const nsAString *aAttribute = nsnull,
194
                                const nsAString *aValue = nsnull);
194
                                const nsAString *aValue = nsnull);
195
  nsresult JoinNodes(nsINode* aNodeToKeep, nsIContent* aNodeToMove);
196
  nsresult MoveNode(nsIContent* aNode, nsINode* aParent, PRInt32 aOffset);
195
  nsresult MoveNode(nsIDOMNode *aNode, nsIDOMNode *aParent, PRInt32 aOffset);
197
  nsresult MoveNode(nsIDOMNode *aNode, nsIDOMNode *aParent, PRInt32 aOffset);
196
198
197
  /* Method to replace certain CreateElementNS() calls. 
199
  /* Method to replace certain CreateElementNS() calls. 
198
     Arguments:
200
     Arguments:
199
      nsString& aTag          - tag you want
201
      nsString& aTag          - tag you want
200
      nsIContent** aContent   - returned Content that was created with above namespace.
202
      nsIContent** aContent   - returned Content that was created with above namespace.
201
  */
203
  */
202
  nsresult CreateHTMLContent(const nsAString& aTag, nsIContent** aContent);
204
  nsresult CreateHTMLContent(const nsAString& aTag, nsIContent** aContent);
(-)a/editor/libeditor/html/nsHTMLCSSUtils.cpp (-2 / +34 lines)
Line     Link Here 
 Lines 935-952   nsHTMLCSSUtils::GenerateCSSDeclarationsF Link Here 
935
    }
935
    }
936
  }
936
  }
937
  if (equivTable) {
937
  if (equivTable) {
938
    BuildCSSDeclarations(cssPropertyArray, cssValueArray, equivTable,
938
    BuildCSSDeclarations(cssPropertyArray, cssValueArray, equivTable,
939
                         aValue, aGetOrRemoveRequest);
939
                         aValue, aGetOrRemoveRequest);
940
  }
940
  }
941
}
941
}
942
942
943
// Add to aNode the CSS inline style equivalent to HTMLProperty/aAttribute/aValue for the node,
943
// Add to aNode the CSS inline style equivalent to HTMLProperty/aAttribute/
944
// and return in aCount the number of CSS properties set by the call
944
// aValue for the node, and return in aCount the number of CSS properties set
945
// by the call.  The dom::Element version returns aCount instead.
946
PRInt32
947
nsHTMLCSSUtils::SetCSSEquivalentToHTMLStyle(dom::Element* aElement,
948
                                            nsIAtom* aProperty,
949
                                            const nsAString* aAttribute,
950
                                            const nsAString* aValue,
951
                                            bool aSuppressTransaction)
952
{
953
  MOZ_ASSERT(aElement && aProperty);
954
  MOZ_ASSERT_IF(aAttribute, aValue);
955
  PRInt32 count;
956
  // This can only fail if SetCSSProperty fails, which should only happen if
957
  // something is pretty badly wrong.  In this case we assert so that hopefully
958
  // someone will notice, but there's nothing more sensible to do than just
959
  // return the count and carry on.
960
  nsresult res = SetCSSEquivalentToHTMLStyle(aElement->AsDOMNode(),
961
                                             aProperty, aAttribute,
962
                                             aValue, &count,
963
                                             aSuppressTransaction);
964
  NS_ASSERTION(NS_SUCCEEDED(res), "SetCSSEquivalentToHTMLStyle failed");
965
  NS_ENSURE_SUCCESS(res, count);
966
  return count;
967
}
968
945
nsresult
969
nsresult
946
nsHTMLCSSUtils::SetCSSEquivalentToHTMLStyle(nsIDOMNode * aNode,
970
nsHTMLCSSUtils::SetCSSEquivalentToHTMLStyle(nsIDOMNode * aNode,
947
                                            nsIAtom *aHTMLProperty,
971
                                            nsIAtom *aHTMLProperty,
948
                                            const nsAString *aAttribute,
972
                                            const nsAString *aAttribute,
949
                                            const nsAString *aValue,
973
                                            const nsAString *aValue,
950
                                            PRInt32 * aCount,
974
                                            PRInt32 * aCount,
951
                                            bool aSuppressTransaction)
975
                                            bool aSuppressTransaction)
952
{
976
{
 Lines 1267-1282   nsHTMLCSSUtils::IsCSSPrefChecked() Link Here 
1267
{
1291
{
1268
  return mIsCSSPrefChecked ;
1292
  return mIsCSSPrefChecked ;
1269
}
1293
}
1270
1294
1271
// ElementsSameStyle compares two elements and checks if they have the same
1295
// ElementsSameStyle compares two elements and checks if they have the same
1272
// specified CSS declarations in the STYLE attribute 
1296
// specified CSS declarations in the STYLE attribute 
1273
// The answer is always negative if at least one of them carries an ID or a class
1297
// The answer is always negative if at least one of them carries an ID or a class
1274
bool
1298
bool
1299
nsHTMLCSSUtils::ElementsSameStyle(dom::Element* aFirstNode,
1300
                                  dom::Element* aSecondNode)
1301
{
1302
  MOZ_ASSERT(aFirstNode && aSecondNode);
1303
  return ElementsSameStyle(aFirstNode->AsDOMNode(), aSecondNode->AsDOMNode());
1304
}
1305
1306
bool
1275
nsHTMLCSSUtils::ElementsSameStyle(nsIDOMNode *aFirstNode, nsIDOMNode *aSecondNode)
1307
nsHTMLCSSUtils::ElementsSameStyle(nsIDOMNode *aFirstNode, nsIDOMNode *aSecondNode)
1276
{
1308
{
1277
  nsresult res;
1309
  nsresult res;
1278
  nsCOMPtr<nsIDOMElement> firstElement  = do_QueryInterface(aFirstNode);
1310
  nsCOMPtr<nsIDOMElement> firstElement  = do_QueryInterface(aFirstNode);
1279
  nsCOMPtr<nsIDOMElement> secondElement = do_QueryInterface(aSecondNode);
1311
  nsCOMPtr<nsIDOMElement> secondElement = do_QueryInterface(aSecondNode);
1280
1312
1281
  NS_ASSERTION((firstElement && secondElement), "Non element nodes passed to ElementsSameStyle.");
1313
  NS_ASSERTION((firstElement && secondElement), "Non element nodes passed to ElementsSameStyle.");
1282
1314
(-)a/editor/libeditor/html/nsHTMLCSSUtils.h (+10 lines)
Line     Link Here 
 Lines 207-223   public: Link Here 
207
    *
207
    *
208
    * @param aNode          [IN] a DOM node
208
    * @param aNode          [IN] a DOM node
209
    * @param aHTMLProperty  [IN] an atom containing an HTML property
209
    * @param aHTMLProperty  [IN] an atom containing an HTML property
210
    * @param aAttribute     [IN] a pointer to an attribute name or nsnull if irrelevant
210
    * @param aAttribute     [IN] a pointer to an attribute name or nsnull if irrelevant
211
    * @param aValue         [IN] the attribute value
211
    * @param aValue         [IN] the attribute value
212
    * @param aCount         [OUT] the number of CSS properties set by the call
212
    * @param aCount         [OUT] the number of CSS properties set by the call
213
    * @param aSuppressTransaction [IN] a boolean indicating, when true,
213
    * @param aSuppressTransaction [IN] a boolean indicating, when true,
214
    *                                  that no transaction should be recorded
214
    *                                  that no transaction should be recorded
215
    *
216
    * aCount is returned by the dom::Element variant instead of being an out
217
    * parameter.
215
    */
218
    */
219
  PRInt32     SetCSSEquivalentToHTMLStyle(mozilla::dom::Element* aElement,
220
                                          nsIAtom* aProperty,
221
                                          const nsAString* aAttribute,
222
                                          const nsAString* aValue,
223
                                          bool aSuppressTransaction);
216
  nsresult    SetCSSEquivalentToHTMLStyle(nsIDOMNode * aNode,
224
  nsresult    SetCSSEquivalentToHTMLStyle(nsIDOMNode * aNode,
217
                                          nsIAtom * aHTMLProperty,
225
                                          nsIAtom * aHTMLProperty,
218
                                          const nsAString * aAttribute,
226
                                          const nsAString * aAttribute,
219
                                          const nsAString * aValue,
227
                                          const nsAString * aValue,
220
                                          PRInt32 * aCount,
228
                                          PRInt32 * aCount,
221
                                          bool aSuppressTransaction);
229
                                          bool aSuppressTransaction);
222
230
223
  /** removes from the node the CSS inline styles equivalent to the HTML style
231
  /** removes from the node the CSS inline styles equivalent to the HTML style
 Lines 262-277   public: Link Here 
262
  /** ElementsSameStyle compares two elements and checks if they have the same
270
  /** ElementsSameStyle compares two elements and checks if they have the same
263
    * specified CSS declarations in the STYLE attribute 
271
    * specified CSS declarations in the STYLE attribute 
264
    * The answer is always false if at least one of them carries an ID or a class
272
    * The answer is always false if at least one of them carries an ID or a class
265
    *
273
    *
266
    * @return                     true if the two elements are considered to have same styles
274
    * @return                     true if the two elements are considered to have same styles
267
    * @param aFirstNode           [IN] a DOM node
275
    * @param aFirstNode           [IN] a DOM node
268
    * @param aSecondNode          [IN] a DOM node
276
    * @param aSecondNode          [IN] a DOM node
269
    */
277
    */
278
  bool ElementsSameStyle(mozilla::dom::Element* aFirstNode,
279
                         mozilla::dom::Element* aSecondNode);
270
  bool ElementsSameStyle(nsIDOMNode *aFirstNode, nsIDOMNode *aSecondNode);
280
  bool ElementsSameStyle(nsIDOMNode *aFirstNode, nsIDOMNode *aSecondNode);
271
281
272
  /** get the specified inline styles (style attribute) for an element
282
  /** get the specified inline styles (style attribute) for an element
273
    *
283
    *
274
    * @param aElement        [IN] the element node
284
    * @param aElement        [IN] the element node
275
    * @param aCssDecl        [OUT] the CSS declaration corresponding to the style attr
285
    * @param aCssDecl        [OUT] the CSS declaration corresponding to the style attr
276
    * @param aLength         [OUT] the number of declarations in aCssDecl
286
    * @param aLength         [OUT] the number of declarations in aCssDecl
277
    */
287
    */
(-)a/editor/libeditor/html/nsHTMLEditor.h (-3 / +5 lines)
Line     Link Here 
 Lines 666-683   protected: Link Here 
666
  nsresult RemoveStyleInside(nsIDOMNode *aNode, 
666
  nsresult RemoveStyleInside(nsIDOMNode *aNode, 
667
                             nsIAtom *aProperty, 
667
                             nsIAtom *aProperty, 
668
                             const nsAString *aAttribute, 
668
                             const nsAString *aAttribute, 
669
                             const bool aChildrenOnly = false);
669
                             const bool aChildrenOnly = false);
670
  nsresult RemoveInlinePropertyImpl(nsIAtom *aProperty, const nsAString *aAttribute);
670
  nsresult RemoveInlinePropertyImpl(nsIAtom *aProperty, const nsAString *aAttribute);
671
671
672
  bool NodeIsProperty(nsIDOMNode *aNode);
672
  bool NodeIsProperty(nsIDOMNode *aNode);
673
  bool HasAttr(nsIDOMNode *aNode, const nsAString *aAttribute);
673
  bool HasAttr(nsIDOMNode *aNode, const nsAString *aAttribute);
674
  bool HasAttrVal(const nsIContent* aNode, const nsAString* aAttribute,
675
                  const nsAString& aValue);
676
  bool IsAtFrontOfNode(nsIDOMNode *aNode, PRInt32 aOffset);
674
  bool IsAtFrontOfNode(nsIDOMNode *aNode, PRInt32 aOffset);
677
  bool IsAtEndOfNode(nsIDOMNode *aNode, PRInt32 aOffset);
675
  bool IsAtEndOfNode(nsIDOMNode *aNode, PRInt32 aOffset);
678
  bool IsOnlyAttribute(nsIDOMNode *aElement, const nsAString *aAttribute);
676
  bool IsOnlyAttribute(nsIDOMNode *aElement, const nsAString *aAttribute);
679
  bool IsOnlyAttribute(const nsIContent* aElement, const nsAString& aAttribute);
677
  bool IsOnlyAttribute(const nsIContent* aElement, const nsAString& aAttribute);
680
678
681
  nsresult RemoveBlockContainer(nsIDOMNode *inNode);
679
  nsresult RemoveBlockContainer(nsIDOMNode *inNode);
682
  nsIContent* GetPriorHTMLSibling(nsINode* aNode);
680
  nsIContent* GetPriorHTMLSibling(nsINode* aNode);
683
  nsresult GetPriorHTMLSibling(nsIDOMNode *inNode, nsCOMPtr<nsIDOMNode> *outNode);
681
  nsresult GetPriorHTMLSibling(nsIDOMNode *inNode, nsCOMPtr<nsIDOMNode> *outNode);
 Lines 930-946   public: Link Here 
930
928
931
// friends
929
// friends
932
friend class nsHTMLEditRules;
930
friend class nsHTMLEditRules;
933
friend class nsTextEditRules;
931
friend class nsTextEditRules;
934
friend class nsWSRunObject;
932
friend class nsWSRunObject;
935
friend class nsHTMLEditorEventListener;
933
friend class nsHTMLEditorEventListener;
936
934
937
private:
935
private:
938
  // Helper
936
  // Helpers
937
  bool IsSimpleModifiableNode(nsIContent* aContent,
938
                              nsIAtom* aProperty,
939
                              const nsAString* aAttribute,
940
                              const nsAString* aValue);
939
  nsresult SetInlinePropertyOnNodeImpl(nsIContent* aNode,
941
  nsresult SetInlinePropertyOnNodeImpl(nsIContent* aNode,
940
                                       nsIAtom* aProperty,
942
                                       nsIAtom* aProperty,
941
                                       const nsAString* aAttribute,
943
                                       const nsAString* aAttribute,
942
                                       const nsAString* aValue);
944
                                       const nsAString* aValue);
943
945
944
};
946
};
945
#endif //nsHTMLEditor_h__
947
#endif //nsHTMLEditor_h__
946
948
(-)a/editor/libeditor/html/nsHTMLEditorStyle.cpp (-67 / +94 lines)
Line     Link Here 
 Lines 220-235   nsHTMLEditor::SetInlineProperty(nsIAtom Link Here 
220
    // post-process
220
    // post-process
221
    return mRules->DidDoAction(selection, &ruleInfo, res);
221
    return mRules->DidDoAction(selection, &ruleInfo, res);
222
  }
222
  }
223
  return NS_OK;
223
  return NS_OK;
224
}
224
}
225
225
226
226
227
227
228
// Helper function for SetInlinePropertyOn*: is aNode a simple old <b>, <font>,
229
// <span style="">, etc. that we can reuse instead of creating a new one?
230
bool
231
nsHTMLEditor::IsSimpleModifiableNode(nsIContent* aContent,
232
                                     nsIAtom* aProperty,
233
                                     const nsAString* aAttribute,
234
                                     const nsAString* aValue)
235
{
236
  // aContent can be null, in which case we'll return false in a few lines
237
  MOZ_ASSERT(aProperty);
238
  MOZ_ASSERT_IF(aAttribute, aValue);
239
240
  nsCOMPtr<dom::Element> element = do_QueryInterface(aContent);
241
  if (!element) {
242
    return false;
243
  }
244
245
  // First check for <b>, <i>, etc.
246
  if (element->IsHTML(aProperty) && !element->GetAttrCount() &&
247
      (!aAttribute || aAttribute->IsEmpty())) {
248
    return true;
249
  }
250
251
  // Special cases for various equivalencies: <strong>, <em>, <s>
252
  if (!element->GetAttrCount() &&
253
      ((aProperty == nsGkAtoms::b && element->IsHTML(nsGkAtoms::strong)) ||
254
       (aProperty == nsGkAtoms::i && element->IsHTML(nsGkAtoms::em)) ||
255
       (aProperty == nsGkAtoms::strike && element->IsHTML(nsGkAtoms::s)))) {
256
    return true;
257
  }
258
259
  // Now look for things like <font>
260
  if (aAttribute && !aAttribute->IsEmpty()) {
261
    nsCOMPtr<nsIAtom> atom = do_GetAtom(*aAttribute);
262
    MOZ_ASSERT(atom);
263
264
    if (element->IsHTML(aProperty) && IsOnlyAttribute(element, *aAttribute) &&
265
        element->AttrValueIs(kNameSpaceID_None, atom, *aValue, eIgnoreCase)) {
266
      // This is not quite correct, because it excludes cases like
267
      // <font face=000> being the same as <font face=#000000>.
268
      // Property-specific handling is needed (bug 760211).
269
      return true;
270
    }
271
  }
272
273
  // No luck so far.  Now we check for a <span> with a single style=""
274
  // attribute that sets only the style we're looking for, if this type of
275
  // style supports it
276
  if (!mHTMLCSSUtils->IsCSSEditableProperty(element, aProperty,
277
                                            aAttribute, aValue) ||
278
      !element->IsHTML(nsGkAtoms::span) || element->GetAttrCount() != 1 ||
279
      !element->HasAttr(kNameSpaceID_None, nsGkAtoms::style)) {
280
    return false;
281
  }
282
283
  // Some CSS styles are not so simple.  For instance, underline is
284
  // "text-decoration: underline", which decomposes into four different text-*
285
  // properties.  So for now, we just create a span, add the desired style, and
286
  // see if it matches.
287
  nsCOMPtr<nsIContent> newSpan;
288
  nsresult res = CreateHTMLContent(NS_LITERAL_STRING("span"),
289
                                   getter_AddRefs(newSpan));
290
  NS_ASSERTION(NS_SUCCEEDED(res), "CreateHTMLContent failed");
291
  NS_ENSURE_SUCCESS(res, false);
292
  mHTMLCSSUtils->SetCSSEquivalentToHTMLStyle(newSpan->AsElement(), aProperty,
293
                                             aAttribute, aValue,
294
                                             /*suppress transaction*/ true);
295
296
  return mHTMLCSSUtils->ElementsSameStyle(newSpan->AsElement(), element);
297
}
298
299
228
nsresult
300
nsresult
229
nsHTMLEditor::SetInlinePropertyOnTextNode( nsIDOMCharacterData *aTextNode, 
301
nsHTMLEditor::SetInlinePropertyOnTextNode( nsIDOMCharacterData *aTextNode, 
230
                                            PRInt32 aStartOffset,
302
                                            PRInt32 aStartOffset,
231
                                            PRInt32 aEndOffset,
303
                                            PRInt32 aEndOffset,
232
                                            nsIAtom *aProperty, 
304
                                            nsIAtom *aProperty, 
233
                                            const nsAString *aAttribute,
305
                                            const nsAString *aAttribute,
234
                                            const nsAString *aValue)
306
                                            const nsAString *aValue)
235
{
307
{
 Lines 245-262   nsHTMLEditor::SetInlinePropertyOnTextNod Link Here 
245
  
317
  
246
  // don't need to do anything if no characters actually selected
318
  // don't need to do anything if no characters actually selected
247
  if (aStartOffset == aEndOffset) return NS_OK;
319
  if (aStartOffset == aEndOffset) return NS_OK;
248
  
320
  
249
  nsCOMPtr<nsIDOMNode> node = aTextNode;
321
  nsCOMPtr<nsIDOMNode> node = aTextNode;
250
  
322
  
251
  // don't need to do anything if property already set on node
323
  // don't need to do anything if property already set on node
252
  bool bHasProp;
324
  bool bHasProp;
253
  if (IsCSSEnabled() &&
325
  if (mHTMLCSSUtils->IsCSSEditableProperty(node, aProperty,
254
      mHTMLCSSUtils->IsCSSEditableProperty(node, aProperty,
255
                                           aAttribute, aValue)) {
326
                                           aAttribute, aValue)) {
256
    // the HTML styles defined by aProperty/aAttribute has a CSS equivalence
327
    // the HTML styles defined by aProperty/aAttribute has a CSS equivalence
257
    // in this implementation for node; let's check if it carries those css styles
328
    // in this implementation for node; let's check if it carries those css styles
258
    nsAutoString value(*aValue);
329
    nsAutoString value(*aValue);
259
    mHTMLCSSUtils->IsCSSEquivalentToHTMLInlineStyleSet(node, aProperty, aAttribute,
330
    mHTMLCSSUtils->IsCSSEquivalentToHTMLInlineStyleSet(node, aProperty, aAttribute,
260
                                                       bHasProp, value,
331
                                                       bHasProp, value,
261
                                                       COMPUTED_STYLE_TYPE);
332
                                                       COMPUTED_STYLE_TYPE);
262
  } else {
333
  } else {
 Lines 285-310   nsHTMLEditor::SetInlinePropertyOnTextNod Link Here 
285
  }
356
  }
286
357
287
  nsCOMPtr<nsIContent> content = do_QueryInterface(node);
358
  nsCOMPtr<nsIContent> content = do_QueryInterface(node);
288
  NS_ENSURE_STATE(content);
359
  NS_ENSURE_STATE(content);
289
360
290
  if (aAttribute) {
361
  if (aAttribute) {
291
    // look for siblings that are correct type of node
362
    // look for siblings that are correct type of node
292
    nsIContent* sibling = GetPriorHTMLSibling(content);
363
    nsIContent* sibling = GetPriorHTMLSibling(content);
293
    if (sibling && sibling->Tag() == aProperty &&
364
    if (IsSimpleModifiableNode(sibling, aProperty, aAttribute, aValue)) {
294
        HasAttrVal(sibling, aAttribute, *aValue) &&
295
        IsOnlyAttribute(sibling, *aAttribute)) {
296
      // previous sib is already right kind of inline node; slide this over into it
365
      // previous sib is already right kind of inline node; slide this over into it
297
      return MoveNode(node, sibling->AsDOMNode(), -1);
366
      return MoveNode(node, sibling->AsDOMNode(), -1);
298
    }
367
    }
299
    sibling = GetNextHTMLSibling(content);
368
    sibling = GetNextHTMLSibling(content);
300
    if (sibling && sibling->Tag() == aProperty &&
369
    if (IsSimpleModifiableNode(sibling, aProperty, aAttribute, aValue)) {
301
        HasAttrVal(sibling, aAttribute, *aValue) &&
302
        IsOnlyAttribute(sibling, *aAttribute)) {
303
      // following sib is already right kind of inline node; slide this over into it
370
      // following sib is already right kind of inline node; slide this over into it
304
      return MoveNode(node, sibling->AsDOMNode(), 0);
371
      return MoveNode(node, sibling->AsDOMNode(), 0);
305
    }
372
    }
306
  }
373
  }
307
  
374
  
308
  // reparent the node inside inline node with appropriate {attribute,value}
375
  // reparent the node inside inline node with appropriate {attribute,value}
309
  return SetInlinePropertyOnNode(node, aProperty, aAttribute, aValue);
376
  return SetInlinePropertyOnNode(node, aProperty, aAttribute, aValue);
310
}
377
}
 Lines 344-366   nsHTMLEditor::SetInlinePropertyOnNodeImp Link Here 
344
        nsresult rv = SetInlinePropertyOnNode(arrayOfNodes[j], aProperty,
411
        nsresult rv = SetInlinePropertyOnNode(arrayOfNodes[j], aProperty,
345
                                              aAttribute, aValue);
412
                                              aAttribute, aValue);
346
        NS_ENSURE_SUCCESS(rv, rv);
413
        NS_ENSURE_SUCCESS(rv, rv);
347
      }
414
      }
348
    }
415
    }
349
    return NS_OK;
416
    return NS_OK;
350
  }
417
  }
351
418
419
  // First check if there's an adjacent sibling we can put our node into.
420
  nsresult res;
421
  nsCOMPtr<nsIContent> previousSibling = GetPriorHTMLSibling(aNode);
422
  nsCOMPtr<nsIContent> nextSibling = GetNextHTMLSibling(aNode);
423
  if (IsSimpleModifiableNode(previousSibling, aProperty, aAttribute, aValue)) {
424
    res = MoveNode(aNode, previousSibling, -1);
425
    NS_ENSURE_SUCCESS(res, res);
426
    if (IsSimpleModifiableNode(nextSibling, aProperty, aAttribute, aValue)) {
427
      res = JoinNodes(previousSibling, nextSibling);
428
      NS_ENSURE_SUCCESS(res, res);
429
    }
430
    return NS_OK;
431
  }
432
  if (IsSimpleModifiableNode(nextSibling, aProperty, aAttribute, aValue)) {
433
    res = MoveNode(aNode, nextSibling, 0);
434
    NS_ENSURE_SUCCESS(res, res);
435
    return NS_OK;
436
  }
437
352
  bool useCSS = (IsCSSEnabled() &&
438
  bool useCSS = (IsCSSEnabled() &&
353
                 mHTMLCSSUtils->IsCSSEditableProperty(aNode, aProperty,
439
                 mHTMLCSSUtils->IsCSSEditableProperty(aNode, aProperty,
354
                                                      aAttribute, aValue)) ||
440
                                                      aAttribute, aValue)) ||
355
                // bgcolor is always done using CSS
441
                // bgcolor is always done using CSS
356
                aAttribute->EqualsLiteral("bgcolor");
442
                aAttribute->EqualsLiteral("bgcolor");
357
443
358
  nsresult res;
359
  if (useCSS) {
444
  if (useCSS) {
360
    nsCOMPtr<nsIDOMNode> tmp = aNode->AsDOMNode();
445
    nsCOMPtr<nsIDOMNode> tmp = aNode->AsDOMNode();
361
    // We only add style="" to <span>s with no attributes (bug 746515).  If we
446
    // We only add style="" to <span>s with no attributes (bug 746515).  If we
362
    // don't have one, we need to make one.
447
    // don't have one, we need to make one.
363
    if (!aNode->IsElement() || !aNode->AsElement()->IsHTML(nsGkAtoms::span) ||
448
    if (!aNode->IsElement() || !aNode->AsElement()->IsHTML(nsGkAtoms::span) ||
364
        aNode->AsElement()->GetAttrCount()) {
449
        aNode->AsElement()->GetAttrCount()) {
365
      res = InsertContainerAbove(aNode->AsDOMNode(), address_of(tmp),
450
      res = InsertContainerAbove(aNode->AsDOMNode(), address_of(tmp),
366
                                 NS_LITERAL_STRING("span"),
451
                                 NS_LITERAL_STRING("span"),
 Lines 368-434   nsHTMLEditor::SetInlinePropertyOnNodeImp Link Here 
368
      NS_ENSURE_SUCCESS(res, res);
453
      NS_ENSURE_SUCCESS(res, res);
369
    }
454
    }
370
    // Add the CSS styles corresponding to the HTML style request
455
    // Add the CSS styles corresponding to the HTML style request
371
    PRInt32 count;
456
    PRInt32 count;
372
    res = mHTMLCSSUtils->SetCSSEquivalentToHTMLStyle(tmp, aProperty,
457
    res = mHTMLCSSUtils->SetCSSEquivalentToHTMLStyle(tmp, aProperty,
373
                                                     aAttribute, aValue,
458
                                                     aAttribute, aValue,
374
                                                     &count, false);
459
                                                     &count, false);
375
    NS_ENSURE_SUCCESS(res, res);
460
    NS_ENSURE_SUCCESS(res, res);
376
377
    nsCOMPtr<nsIDOMNode> nextSibling, previousSibling;
378
    GetNextHTMLSibling(tmp, address_of(nextSibling));
379
    GetPriorHTMLSibling(tmp, address_of(previousSibling));
380
    if (nextSibling || previousSibling) {
381
      nsCOMPtr<nsIDOMNode> mergeParent;
382
      res = tmp->GetParentNode(getter_AddRefs(mergeParent));
383
      NS_ENSURE_SUCCESS(res, res);
384
      if (previousSibling &&
385
          nsEditor::NodeIsType(previousSibling, nsEditProperty::span) &&
386
          NodesSameType(tmp, previousSibling)) {
387
        res = JoinNodes(previousSibling, tmp, mergeParent);
388
        NS_ENSURE_SUCCESS(res, res);
389
      }
390
      if (nextSibling &&
391
          nsEditor::NodeIsType(nextSibling, nsEditProperty::span) &&
392
          NodesSameType(tmp, nextSibling)) {
393
        res = JoinNodes(tmp, nextSibling, mergeParent);
394
        NS_ENSURE_SUCCESS(res, res);
395
      }
396
    }
397
    return NS_OK;
461
    return NS_OK;
398
  }
462
  }
399
463
400
  // is it already the right kind of node, but with wrong attribute?
464
  // is it already the right kind of node, but with wrong attribute?
401
  if (aNode->Tag() == aProperty) {
465
  if (aNode->Tag() == aProperty) {
402
    // Just set the attribute on it.
466
    // Just set the attribute on it.
403
    nsCOMPtr<nsIDOMElement> elem = do_QueryInterface(aNode);
467
    nsCOMPtr<nsIDOMElement> elem = do_QueryInterface(aNode);
404
    return SetAttribute(elem, *aAttribute, *aValue);
468
    return SetAttribute(elem, *aAttribute, *aValue);
405
  }
469
  }
406
470
407
  // Either put it inside a neighboring node, or make a new one.
408
  // is either of its neighbors the right kind of node?
409
  if (aAttribute) {
410
    nsIContent* priorNode = GetPriorHTMLSibling(aNode);
411
    if (priorNode && priorNode->Tag() == aProperty &&
412
        HasAttrVal(priorNode, aAttribute, *aValue) &&
413
        IsOnlyAttribute(priorNode, *aAttribute)) {
414
      // previous sib is already right kind of inline node; slide this over into it
415
      return MoveNode(aNode->AsDOMNode(), priorNode->AsDOMNode(), -1);
416
    }
417
418
    nsIContent* nextNode = GetNextHTMLSibling(aNode);
419
    if (nextNode && nextNode->Tag() == aProperty &&
420
        HasAttrVal(nextNode, aAttribute, *aValue) &&
421
        IsOnlyAttribute(nextNode, *aAttribute)) {
422
      // following sib is already right kind of inline node; slide this over into it
423
      return MoveNode(aNode->AsDOMNode(), nextNode->AsDOMNode(), 0);
424
    }
425
  }
426
427
  // ok, chuck it in its very own container
471
  // ok, chuck it in its very own container
428
  nsCOMPtr<nsIDOMNode> tmp;
472
  nsCOMPtr<nsIDOMNode> tmp;
429
  return InsertContainerAbove(aNode->AsDOMNode(), address_of(tmp), tag,
473
  return InsertContainerAbove(aNode->AsDOMNode(), address_of(tmp), tag,
430
                              aAttribute, aValue);
474
                              aAttribute, aValue);
431
}
475
}
432
476
433
477
434
nsresult
478
nsresult
 Lines 853-885   bool nsHTMLEditor::HasAttr(nsIDOMNode* a Link Here 
853
897
854
  nsCOMPtr<nsIAtom> atom = do_GetAtom(*aAttribute);
898
  nsCOMPtr<nsIAtom> atom = do_GetAtom(*aAttribute);
855
  NS_ENSURE_TRUE(atom, false);
899
  NS_ENSURE_TRUE(atom, false);
856
900
857
  return element->HasAttr(kNameSpaceID_None, atom);
901
  return element->HasAttr(kNameSpaceID_None, atom);
858
}
902
}
859
903
860
904
861
bool nsHTMLEditor::HasAttrVal(const nsIContent* aNode,
862
                              const nsAString* aAttribute,
863
                              const nsAString& aValue)
864
{
865
  MOZ_ASSERT(aNode);
866
867
  if (!aAttribute || aAttribute->IsEmpty()) {
868
    // everybody has the 'null' attribute
869
    return true;
870
  }
871
872
  nsCOMPtr<nsIAtom> atom = do_GetAtom(*aAttribute);
873
  NS_ENSURE_TRUE(atom, false);
874
875
  return aNode->AttrValueIs(kNameSpaceID_None, atom, aValue, eIgnoreCase);
876
}
877
878
nsresult nsHTMLEditor::PromoteRangeIfStartsOrEndsInNamedAnchor(nsIDOMRange *inRange)
905
nsresult nsHTMLEditor::PromoteRangeIfStartsOrEndsInNamedAnchor(nsIDOMRange *inRange)
879
{
906
{
880
  NS_ENSURE_TRUE(inRange, NS_ERROR_NULL_POINTER);
907
  NS_ENSURE_TRUE(inRange, NS_ERROR_NULL_POINTER);
881
  nsresult res;
908
  nsresult res;
882
  nsCOMPtr<nsIDOMNode> startNode, endNode, parent, tmp;
909
  nsCOMPtr<nsIDOMNode> startNode, endNode, parent, tmp;
883
  PRInt32 startOffset, endOffset, tmpOffset;
910
  PRInt32 startOffset, endOffset, tmpOffset;
884
  
911
  
885
  res = inRange->GetStartContainer(getter_AddRefs(startNode));
912
  res = inRange->GetStartContainer(getter_AddRefs(startNode));

Return to bug 757371