Closed
Bug 148810
Opened 22 years ago
Closed 15 years ago
[FIX]Handle content appended, inserted, deleted for pseudo (anonymous) frames.
Categories
(Core :: Layout: Tables, defect, P1)
Core
Layout: Tables
Tracking
()
RESOLVED
FIXED
mozilla1.9.2a1
People
(Reporter: karnaze, Assigned: bzbarsky)
References
(Depends on 1 open bug)
Details
(Keywords: testcase, Whiteboard: [Hixie-P3])
Attachments
(3 files, 2 obsolete files)
2.35 KB,
text/html
|
Details | |
1.11 KB,
text/html
|
Details | |
75.88 KB,
patch
|
bernd_mozilla
:
review+
roc
:
superreview+
|
Details | Diff | Splinter Review |
The existing implementation of constructing pseudo frames (e.g. a cell inserted into a table causes a pseudo row and row group frame to be contstructed) does not work correctly when content is appended or inserted. Also, when content is removed, pseudo frames likely do not get destroyed when they should. This is a meta bug which will result in a fair amount of changes to frame construction and table code.
Reporter | ||
Updated•22 years ago
|
Reporter | ||
Updated•22 years ago
|
Reporter | ||
Comment 1•22 years ago
|
||
Reporter | ||
Comment 2•22 years ago
|
||
I'm attaching this patch so it doesn't get lost. There are more test cases to be developed, pseudo frames need to go away when their last child goes away, the regression tests need to be run (bug 113235-1.html has a problem, and since the child lists have changed, there are probably going to be differences on every file).
Reporter | ||
Updated•22 years ago
|
Whiteboard: WIP PATCH
Target Milestone: mozilla1.0.1 → mozilla1.3alpha
Adding helpwanted keyword per comment 2.
Keywords: helpwanted
Target Milestone: mozilla1.3alpha → Future
Note that the summary doesn't cover all the ramifications of this problem. Content that simply takes time to load or is interrupted by something will exhibit this problem (see attachment 94811 [details] on bug 121142).
Reporter | ||
Comment 5•21 years ago
|
||
mass reassign to default owner
Assignee: karnaze → table
Status: ASSIGNED → NEW
QA Contact: amar → madhur
Target Milestone: Future → ---
Updated•21 years ago
|
Target Milestone: --- → Future
*** Bug 257199 has been marked as a duplicate of this bug. ***
Updated•18 years ago
|
Assignee: layout.tables → nobody
QA Contact: madhur → layout.tables
Blocks: 372649
Comment 8•16 years ago
|
||
marking wanted1.9.1? to get this in the triage queue. If this needs to be blocking1.9.1?, please mark it as so.
Flags: wanted1.9.1?
Priority: P2 → P1
Updated•16 years ago
|
Assignee: nobody → dbaron
Updated•16 years ago
|
Whiteboard: WIP PATCH → [Hixie-P3] WIP PATCH
Comment 9•16 years ago
|
||
Adding my testcase from bug 368932 which might well be a dupe...
Flags: wanted1.9.1? → wanted1.9.1+
I think we can get away here with something much like ReframeContainingBlock, which we use for block-within-inline situations. However, I think both ReframeContainingBlock and this would benefit a lot from the ability to reconstruct all the descendants of a particular frame without rebuilding that frame itself (at least assuming that for the frame in question, GetPrimaryFrameFor(mContent)->GetContentInsertionFrame() == this). This would give us the ability to prevent these reconstruct-something-higher from cascading upwards in a number of cases. (For example, in this case, it would prevent us from ever having to reconstruct stuff that's an ancestor of the primary frame of the content parent, since we could just reconstruct that frame's descendants.)
Blocks: 472870
Assignee | ||
Comment 15•15 years ago
|
||
This fixes this bug for me, as far, as well as the various bugs this blocks. The patch adds some tests, but not nearly exhaustive; I also still need to add tests from this bug and various blocked bugs. The patch depends on the patch in bug 162063.
Assignee: dbaron → bzbarsky
Attachment #86323 -
Attachment is obsolete: true
Attachment #368567 -
Flags: superreview?(roc)
Attachment #368567 -
Flags: review?(bernd_mozilla)
Assignee | ||
Updated•15 years ago
|
Keywords: helpwanted
Summary: Handle content appended, inserted, deleted for pseudo (anonymous) frames. → [FIX]Handle content appended, inserted, deleted for pseudo (anonymous) frames.
Whiteboard: [Hixie-P3] WIP PATCH → [Hixie-P3]
+ nextSibling->GetStyleContext()->GetPseudoType() != + aFrame->GetStyleContext()->GetPseudoType()) { How can aFrame->GetStyleContext()->GetPseudoType() be non-null? Couldn't this just be a check against null?
Comment 17•15 years ago
|
||
is it guaranteed that we do not recreate frames twice inside nsCSSFrameConstructor::MaybeRecreateContainerForFrameRemoval ? I am concerned about the two "adjacent" calls to RecreateFramesForContent
Assignee | ||
Updated•15 years ago
|
Assignee | ||
Comment 18•15 years ago
|
||
> How can aFrame->GetStyleContext()->GetPseudoType() be non-null? Hmm. I guess since we're guaranteed aFrame is the primary frame, that can't happen. Which means this check should just go away. I was trying to limit to the case where we're just removing a pseudo-frame before I changed the way bug 162063 is working. Good catch. > is it guaranteed that we do not recreate frames twice Not sure what you mean. I suspect the answer is "no". > I am concerned about the two "adjacent" calls to RecreateFramesForContent Which ones? Right now we have returns after the RecreateFramesForContent calls, no?
Assignee | ||
Comment 19•15 years ago
|
||
Bernd, see comment 18.
Comment 20•15 years ago
|
||
yep, another question why do you check aFrames pseudo type instead of inflows pseudo type + nextSibling->GetStyleContext()->GetPseudoType() != + aFrame->GetStyleContext()->GetPseudoType()) { or is this moot as outlined in comment #18?
Assignee | ||
Comment 21•15 years ago
|
||
It's moot; that check has been removed. But before that it was just a bad merge against the patch from bug 162063. ;)
Assignee | ||
Comment 22•15 years ago
|
||
And to be clear, I'll post an updated patch soon; I just want to finish writing tests for the bugs depending on this one... Hopefully tomorrow.
Comment 23•15 years ago
|
||
I am not sure that the function name WipeContainingBlock reflects what is going on inside if the pseudo handling is added.
Assignee | ||
Comment 24•15 years ago
|
||
We already have code that does what the pseudo handling does in that function, for what it's worth: the "situation #1" for XUL boxes. Or do I misunderstand the concern?
Comment 25•15 years ago
|
||
No you did understand it perfectly, I always assumed from the function name that this is something special for blocks and the last time I looked at this function (2005) it was more or less like this. I am not insisting on a name change but it seems to me that this function is walking up till it finds a "real" frame which is not necessarily a block. regardless please fix the comment at 10745 10746 // Before we go and append the frames, we must check for two 10747 // special situations. s/two/three/
Assignee | ||
Comment 27•15 years ago
|
||
Attachment #368567 -
Attachment is obsolete: true
Attachment #369372 -
Flags: superreview?(roc)
Attachment #369372 -
Flags: review?(bernd_mozilla)
Attachment #368567 -
Flags: superreview?(roc)
Attachment #368567 -
Flags: review?(bernd_mozilla)
Attachment #369372 -
Flags: superreview?(roc) → superreview+
Attachment #369372 -
Flags: review?(bernd_mozilla) → review+
Assignee | ||
Comment 28•15 years ago
|
||
Pushed http://hg.mozilla.org/mozilla-central/rev/6b3cc966ef52.
Status: NEW → RESOLVED
Closed: 15 years ago
Flags: in-testsuite+
Resolution: --- → FIXED
Assignee | ||
Updated•15 years ago
|
Target Milestone: Future → mozilla1.9.2a1
You need to log in
before you can comment on or make changes to this bug.
Description
•