Closed
Bug 91927
Opened 24 years ago
Closed 22 years ago
P should not contain TABLE (block-level elements) in strict mode
Categories
(Core :: DOM: HTML Parser, defect, P3)
Tracking
()
RESOLVED
FIXED
mozilla1.5alpha
People
(Reporter: harishd, Assigned: MatsPalmgren_bugz)
References
Details
Attachments
(2 files, 3 obsolete files)
|
178 bytes,
text/html
|
Details | |
|
8.28 KB,
patch
|
harishd
:
review+
dbaron
:
superreview+
|
Details | Diff | Splinter Review |
A spin off from bug 91468.
Ex. <p><table></table> should become <p></p><table></table> in strict mode.
Updated•24 years ago
|
Keywords: correctness
Out of time :-( Moving to 0.9.7
Target Milestone: mozilla0.9.6 → mozilla0.9.7
Mass moving bugs to 1.1
Target Milestone: mozilla1.0 → mozilla1.1
*** Bug 109806 has been marked as a duplicate of this bug. ***
Comment 8•23 years ago
|
||
I don't see this bug (lays out properly, what other problem is there?) (moz
1.1alpha). Mark fixed?
[was 1.1alpha]
Target Milestone: mozilla1.1alpha → Future
The duplicate says this is a regression from bug 43678.
Is this TABLE-only, or not? I suspect it may be.
Summary: P should not contain block-level elements in strict mode → P should not contain TABLE (block-level elements) in strict mode
*** Bug 208703 has been marked as a duplicate of this bug. ***
| Assignee | ||
Comment 14•22 years ago
|
||
How about <p><table style="display:inline-table"> - do we still want to close
the <p> in standards mode? If yes, then I have a 3 line patch for CNavDTD.cpp
that fixes this bug.
Comment 15•22 years ago
|
||
Yes; CSS should in no way affect parsing.
| Assignee | ||
Comment 16•22 years ago
|
||
OK, good. I realize now that my first attempt probably isn't general enough
since |CanContain(...)| is called in more places. I'm attaching it anyway if
you want to comment on it.
Instead, I'm now going to add a |nsDTDMode| parameter to |CanContain| which I
think is the right approach.
| Assignee | ||
Comment 17•22 years ago
|
||
This patch removes TABLE from set of tags generally allowed in P (from |gInP|)
and instead dynamically allows it in |nsHTMLElement::CanContain(...)| for
Quirks mode only.
All parser regression tests pass, except "43678.html" - this is because this
file triggers Standards mode and has a <p><table> in it, so this is OK.
All layout/block regression tests pass, except "table/bugs/bug104898.html" -
for the same reason as above.
Attachment #125231 -
Attachment is obsolete: true
| Assignee | ||
Updated•22 years ago
|
Attachment #125252 -
Flags: review?(harishd)
Comment on attachment 125252 [details] [diff] [review]
Patch rev. 2
>-static const TagList gInP={2,{eHTMLTag_span,eHTMLTag_table}}; // added table for bug 43678, removed FORM bug 94269
>+// gInP: nsHTMLElement::CanContain() also allows table in Quirks mode for bug 43678, removed FORM bug 94269
>+static const TagList gInP={2,{eHTMLTag_span}};
This will cause reading past the end of the array, since you didn't change the
length. Is there a bug on making these arrays not have internal lengths, but
instead use NS_ARRAY_LENGTH (a pair of |sizeof|s)?
Also, does eHTMLTag_span mean all phrasal elements, or is SPAN special? (If
the latter, why?)
| Assignee | ||
Comment 19•22 years ago
|
||
Corrected the length argument.
Maybe this answers your question regarding eHTMLTag_span:
Initialize(
// I made span a special% tag again, (instead of inline).
// This fixes the case: <font color="blue"><p><span>text</span>
/*tag*/ eHTMLTag_span,
/*req-parent excl-parent*/ eHTMLTag_unknown,eHTMLTag_unknown,
/*rootnodes,endrootnodes*/ &gRootTags,&gRootTags,
/*autoclose starttags and endtags*/ 0,0,0,0,
/*parent,incl,exclgroups*/ kSpecial,
(kInlineEntity|kSelf|kFlowEntity), kNone,
/*special props, prop-range*/ 0,kDefaultPropRange,
/*special parents,kids,skip*/ 0,0,eHTMLTag_unknown);
Attachment #125252 -
Attachment is obsolete: true
| Assignee | ||
Updated•22 years ago
|
Attachment #125252 -
Flags: review?(harishd)
| Assignee | ||
Updated•22 years ago
|
Attachment #125254 -
Flags: review?(harishd)
Re comment 18: I filed the separate bug as bug 208846.
| Reporter | ||
Comment 21•22 years ago
|
||
Mats: Could you please post a patch integrated with dbaron's patch ( bug 208846 ).
I'll take a look into your Patch rev.3 today.
There's no need to merge until one of the two is checked in -- they really don't
conflict except for the one line.
| Reporter | ||
Comment 23•22 years ago
|
||
Comment on attachment 125254 [details] [diff] [review]
Patch rev. 3
Looks fine. However, to be on the safe side please go thro' the top50-100 sites
and run parser regression test ( rudimentary script but good enough to detect
problems ). Also, make sure to test composer.
With that r=harishd.
Attachment #125254 -
Flags: review?(harishd) → review+
| Reporter | ||
Comment 24•22 years ago
|
||
--> Mats. Since he has done all the work :)
Assignee: harishd → mats.palmgren
Status: ASSIGNED → NEW
| Assignee | ||
Comment 25•22 years ago
|
||
I have updated to the tip so this patch is now merged with David's patch
for bug 208846. There are no other changes since Patch rev. 3.
> harishd wrote in comment 23:
> go thro' the top50-100 sites
I will make a separate comment on this that follows.
> run parser regression test
I did, with good results; see comment 17.
> make sure to test composer
Sorry, I don't know what I'm expected to do here, please explain.
Attachment #125254 -
Attachment is obsolete: true
| Assignee | ||
Updated•22 years ago
|
Attachment #125356 -
Flags: review?(harishd)
| Assignee | ||
Comment 26•22 years ago
|
||
By the "top50-100 sites" I assume you mean those on "Chofmann's list" under
the Debug menu. Here's what I did - I saved that list to a file and then
pulled all those sites using 'wget'. I then ran 'TestParse' on those.
From 219 files that were successfully pulled by 'wget' (28 failed for
some reason and I ignored those), here are the results:
203 were Quirks mode - they passed.
3 were Full Standards mode - they passed.
13 were Almost Standards - 12 passed, 1 had a closed <p> that this patch caused.
The site that had a different parse tree is http://www.planetquake.com/ -
the (one) difference is at the far bottom of the page - the gap between
the last text line "(irc.enterthegame.com #planetquake)" and the
light-brown footer box is going to be 1em less than it is now.
This is because big table that contains all the text is preceeded by a <p>
that will auto-close and thus margin-collapse with itself (no change at
the top) and it's bottom-margin after the table will disappear.
I also went through a few other popular sites manually and saw no difference.
Status: NEW → ASSIGNED
Target Milestone: Future → ---
| Reporter | ||
Comment 27•22 years ago
|
||
> run parser regression test
> I did, with good results; see comment 17.
doh!. Ignore my comment then. :)
> make sure to test composer
> Sorry, I don't know what I'm expected to do here, please explain
Just try to edit any document that contains tables.
>By the "top50-100 sites" I assume you mean those on "Chofmann's list" under
>the Debug menu.
Yes. And thanks for doing the necessary testing. Ship it! ;)
| Reporter | ||
Comment 28•22 years ago
|
||
Comment on attachment 125356 [details] [diff] [review]
Patch rev. 4
Nice job Mats.
r=harishd
Attachment #125356 -
Flags: review?(harishd) → review+
| Assignee | ||
Comment 29•22 years ago
|
||
Thanks. I have now done some testing with Composer as well and the results
are as I would expect them to be. There is no change in behaviour if the
document is in Quirks mode (this seems to be default). In Standards mode
<p> is auto-closed as expected. An example:
I started with the following empty Standards mode document, which is
close to the attached "simple testcase":
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<title>Testcase, bug 91927</title>
<p style="color: red;border:1px solid red;">
text
<table>
<tr>
<td>This should not be red.</td>
</tr>
</table>
I opened it in Composer and just did "Save As". I have default Composer prefs.
Before the patch I see Quirky layout in the Composer window and the saved
result file is:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<title>Testcase, bug 91927</title>
</head>
<body>
<p style="border: 1px solid red; color: red;">text
<table>
<tbody>
<tr>
<td>This should not be red.</td>
</tr>
</tbody>
</table>
</p>
</body>
</html>
After the patch I see Standards mode layout in the Composer window and the
saved result file is:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<title>Testcase, bug 91927</title>
</head>
<body>
<p style="border: 1px solid red; color: red;">text
</p>
<table>
<tbody>
<tr>
<td>This should not be red.</td>
</tr>
</tbody>
</table>
</body>
</html>
IMO, this is the correct behaviour for a Standards mode document.
| Assignee | ||
Comment 30•22 years ago
|
||
I don't have cvs commit rights so you or David have to do this for me.
Attachment #125356 -
Flags: superreview+
Fix checked in to trunk, 2003-06-10 21:24 -0700.
Status: ASSIGNED → RESOLVED
Closed: 22 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla1.5alpha
Comment 32•22 years ago
|
||
*** Bug 211091 has been marked as a duplicate of this bug. ***
You need to log in
before you can comment on or make changes to this bug.
Description
•