Closed
Bug 142965
Opened 23 years ago
Closed 19 years ago
Elements moved out of tables lose their attributes when they're not valid children of tables
Categories
(Core :: DOM: HTML Parser, defect, P2)
Tracking
()
RESOLVED
FIXED
mozilla1.4alpha
People
(Reporter: bugzilla2, Assigned: mrbkap)
References
()
Details
Attachments
(3 files, 1 obsolete file)
3.22 KB,
text/plain
|
Details | |
284 bytes,
text/html
|
Details | |
2.34 KB,
patch
|
jst
:
review+
brendan
:
superreview+
brendan
:
approval1.8b3+
|
Details | Diff | Splinter Review |
From Bugzilla Helper:
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.0.0+)
Gecko/20020505
BuildID: 2002050508
The page contains a form with a POST method.
When submitted the browser actually sends a GET which of course the script is
not expecting and basically the script is run with no input
Reproducible: Always
Steps to Reproduce:
1. Go to www.edcint.co.nz/1
2. Click the "delete" button (by the way, you just executed a form which used a
POST that actually worked ok)
3. on the next page press the submit button (it doesn't matter what you put in
because the script never gets it) - this page has a form with a post method
4. you get the page that the script outputs when no input was given
Actual Results: cgi is run with no input
in this case the script lives and outputs a message
Expected Results: should have returned some other script generated page
this works in IE
I will attach a packet trace which shows the IP packet that mozilla sends after
you press the submit button
I coulc modify the cgi perl script to get more info if needed
Reporter | ||
Comment 1•23 years ago
|
||
Comment 2•23 years ago
|
||
Comment 3•23 years ago
|
||
The screwed-up markup causes us to not put the form controls inside the <form>
in the content model, so submission happens to the current URL (action="") with
a default action (GET). On the site in question the current url and action url
were the same, hiding this problem...
To parser, ccing jkeiser (I suspect that killing DemoteForm will magically fix
this bug).
Assignee: sgehani → harishd
Status: UNCONFIRMED → NEW
Component: XP Apps → Parser
Ever confirmed: true
QA Contact: paw → moied
Comment 4•23 years ago
|
||
If it does, that would extreme magic. We are seriously messing up the DOM in
this example. It doesn't even look like it has anything to do with DemoteForm()
since in the DOM the input is not demoted to be a sibling of the table.
The resulting content model here is
<p></p>
<h3></h3>
<input/>
<table>
<form></form>
</table>
And it appears we don't put the attributes onto the form at all.
Unfortunately, DemoteForm removal would not do the trick :(. This is something
that happens at the parser end when handling misplaced table content ( yet
another content juggler! ).
Status: NEW → ASSIGNED
Priority: -- → P2
Target Milestone: --- → mozilla1.0.1
I have made a more minimal testcase.
<html><body>
<table>
<p><h3>Test</h3></p>
<form method="POST">
<input type=submit>
</form>
</table>
</body></html>
using DOM Inspector, I see that form's attribute is missing.
so I change to this testcase.
<html><body>
<table>
<p><h3>Test</h3></p>
<form method="POST">
<input type=submit>
</form>
</table>
</body></html>
I can see form's attribute, but the DOM model is still something wrong.
So this bug must be related with handle table token.
This is worse than I imagined ( parser just discards the misplaced form
attribtues! ). Will propose a fix soon.
Since FORM is not a legal child of TABLE do not handle misplaced table tags, in
the misplaced list, on encountering a FORM.
Problem: Because we started handling misplaced table tags on encountering a
FORM we never got the chance to collect FORM attributes from the tokenizer
stack.
Hmmmm, thinking about it I'm not completely convinced that this is "THE" fix.
Will investigate more.
Comment 10•22 years ago
|
||
Did some more testing and found out that the patch does fix few other problems,
such as:
<html>
<body>
<table border="1" width="100px">
<tr>
<p><caption>caption
<td>
cell
</td>
</tr>
</table>
</body>
</html>
So, I'm going to stick with the proposed fix.
FYI: Parser regression test PASSED.
Updated•22 years ago
|
Target Milestone: mozilla1.1beta → mozilla1.2beta
Attachment #90666 -
Flags: superreview?(jst)
Attachment #90666 -
Flags: review?(heikki)
Comment 11•22 years ago
|
||
Comment on attachment 90666 [details] [diff] [review]
patch v1.0
sr=jst
Attachment #90666 -
Flags: superreview?(jst) → superreview+
Comment 12•22 years ago
|
||
This bug not only occurs in Windows 2000 as listed, but also in Mozilla 1.2 for
Linux.
Updated•22 years ago
|
Attachment #90666 -
Flags: review?(heikki) → review+
Comment 13•22 years ago
|
||
Fixed on 12/03/2002.
Status: ASSIGNED → RESOLVED
Closed: 22 years ago
Resolution: --- → FIXED
Comment 14•22 years ago
|
||
I have backed out the patch because of bug 183711.
Reopening.
Status: RESOLVED → REOPENED
Resolution: FIXED → ---
Comment 15•22 years ago
|
||
This fix also seems to have caused crash bug 184043
Comment 16•22 years ago
|
||
This patch turned this bug into a monster. Moving bug to 1.3beta for further
investigation.
Target Milestone: mozilla1.3alpha → mozilla1.3beta
Assignee | ||
Comment 17•20 years ago
|
||
*** Bug 180334 has been marked as a duplicate of this bug. ***
Assignee | ||
Updated•20 years ago
|
Summary: Form contains POST but Mozilla sends GET request → Elements moved out of tables lose their attributes when they're not valid children of tables
Whiteboard: [fix in hand]
Assignee | ||
Comment 18•20 years ago
|
||
So the real problem here is the construct: <table></p><form attribute="value">
The </p> was getting pushed onto the misplaced stack and getting handled when
we reached the <form>. </p> is special, however, and is supposed to be treated
like <p></p>. The way this was done was to push the </p> and the <p> back on
the tokenizer. However, at this point we'd popped the <form> off of the
tokenizer but not its attributes. So the form's attributes would end up
_behind_ the <p></p>, causing them not to be collected.
This patch makes us handle the <p></p> directly when we're in misplaced
content, since the new token will get lost otherwise.
Assignee: harishd → mrbkap
Attachment #90666 -
Attachment is obsolete: true
Status: REOPENED → ASSIGNED
Attachment #183960 -
Flags: review?(jst)
Comment 19•19 years ago
|
||
Comment on attachment 183960 [details] [diff] [review]
alternative approach
r=jst
Attachment #183960 -
Flags: review?(jst) → review+
Assignee | ||
Comment 20•19 years ago
|
||
Comment on attachment 183960 [details] [diff] [review]
alternative approach
Brendan, could you sr?
Attachment #183960 -
Flags: superreview?(brendan)
Comment 21•19 years ago
|
||
Comment on attachment 183960 [details] [diff] [review]
alternative approach
Looks good to me, and ok for 1.8b3 -- right? I'm approving optimistically.
/be
Attachment #183960 -
Flags: superreview?(brendan)
Attachment #183960 -
Flags: superreview+
Attachment #183960 -
Flags: approval1.8b3+
Assignee | ||
Comment 22•19 years ago
|
||
Fix checked in (hopefully for good this time!).
Status: ASSIGNED → RESOLVED
Closed: 22 years ago → 19 years ago
Resolution: --- → FIXED
You need to log in
before you can comment on or make changes to this bug.
Description
•