Closed Bug 14774 Opened 20 years ago Closed 20 years ago

Too many OnEndDocumentLoad notifications; Composer can't cope with <iframe> tags

Categories

(Core :: DOM: Editor, defect, P1, critical)

defect

Tracking

()

VERIFIED WORKSFORME

People

(Reporter: sfraser_bugs, Assigned: sfraser_bugs)

References

()

Details

(Keywords: testcase, Whiteboard: [TESTCASE])

Attachments

(1 file)

Load the page given in the URL in apprunner, and do 'Edit page'. When bug 14640
is fixed, you'll see that the page continually reloads. We're getting continual
OnEndDocumentLoad notifications; and the loading process never stops.
On a 'normal' page, we're getting 5 OnEndDocumentLoad notifications, instead of
the usual 2, on the editor page.
Assignee: warren → rpotts
Rick should look at this one.
Assignee: rpotts → sfraser
This seems to be a general problem when editing pages with framesets.

As you can see from the stack trace below, the call to
nsEditorShell::PrepareDocumentForEditing(...) ultimately causes a Reflow(...)
which seems to force the HTML frame to load its document *again*.

So, the infinite OnEndDocumentLoad(...) notifications are a byproduct of the
continous loading of the Frameset...

Here is the stack trace:
========================
nsLoadGroup::AddChannel(nsLoadGroup * const 0x03589630, nsIChannel * 0x03588920,
nsISupports * 0x00000000) line 516
nsHTTPChannel::Open() line 567
nsHTTPChannel::AsyncRead(nsHTTPChannel * const 0x03588920, unsigned int
0x00000000, int 0xffffffff, nsISupports * 0x00000000, nsIStreamListener *
0x03588b10) line 250 + 8 bytes
nsDocumentBindInfo::Bind(nsIURI * 0x03589080, nsILoadGroup * 0x03589630,
nsIInputStream * 0x00000000, const unsigned short * 0x00000000) line 1178 + 45
bytes
nsDocLoaderImpl::LoadDocument(nsDocLoaderImpl * const 0x035896a0, nsIURI *
0x03589080, const char * 0x002cbdd4, nsIContentViewerContainer * 0x03589be0,
nsIInputStream * 0x00000000, nsISupports * 0x00000000, nsIStreamObserver *
0x03589df0, unsigned int 0x00000000, const unsigned int 0x00000000, const
unsigned short * 0x00000000) line 541 + 32 bytes
nsWebShell::DoLoadURL(nsIURI * 0x03589080, const char * 0x002cbdd4,
nsIInputStream * 0x00000000, unsigned int 0x00000000, const unsigned int
0x00000000, const unsigned short * 0x00000000) line 2119 + 67 bytes
nsWebShell::LoadURI(nsWebShell * const 0x03589be0, nsIURI * 0x03589080, const
char * 0x002cbdd4, nsIInputStream * 0x00000000, int 0x00000001, unsigned int
0x00000000, const unsigned int 0x00000000, nsISupports * 0x00000000, const
unsigned short * 0x00000000) line 2235 + 32 bytes
nsWebShell::LoadURL(nsWebShell * const 0x03589be0, const unsigned short *
0x03589a30, const char * 0x002cbdd4, nsIInputStream * 0x00000000, int
0x00000001, unsigned int 0x00000000, const unsigned int 0x00000000, nsISupports
* 0x00000000, const unsigned short * 0x00000000) line 2333 + 52 bytes
nsWebShell::LoadURL(nsWebShell * const 0x03589be0, const unsigned short *
0x03589a30, nsIInputStream * 0x00000000, int 0x00000001, unsigned int
0x00000000, const unsigned int 0x00000000, nsISupports * 0x00000000, const
unsigned short * 0x00000000) line 1928
nsHTMLFrameInnerFrame::Reflow(nsHTMLFrameInnerFrame * const 0x03589e84,
nsIPresContext & {...}, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState &
{...}, unsigned int & 0x02e5ee70) line 945 + 46 bytes
nsContainerFrame::ReflowChild(nsIFrame * 0x03589e80, nsIPresContext & {...},
nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int &
0x02e5ee70) line 372 + 28 bytes
nsHTMLFrameOuterFrame::Reflow(nsHTMLFrameOuterFrame * const 0x03589fb4,
nsIPresContext & {...}, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState &
{...}, unsigned int & 0x02e5ee70) line 394
nsContainerFrame::ReflowChild(nsIFrame * 0x03589fb0, nsIPresContext & {...},
nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int &
0x02e5ee70) line 372 + 28 bytes
nsHTMLFramesetFrame::ReflowPlaceChild(nsIFrame * 0x03589fb0, nsIPresContext &
{...}, const nsHTMLReflowState & {...}, nsPoint & {...}, nsSize & {...}, nsPoint
* 0x0012e500) line 782
nsHTMLFramesetFrame::Reflow(nsHTMLFramesetFrame * const 0x0358ef44,
nsIPresContext & {...}, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState &
{...}, unsigned int & 0x00000000) line 1165
nsLineLayout::ReflowFrame(nsIFrame * 0x0358ef40, nsIFrame * * 0x0012f170,
unsigned int & 0x00000000) line 898
nsBlockFrame::ReflowInlineFrame(nsBlockReflowState & {...}, nsLineLayout &
{...}, nsLineBox * 0x0358ee80, nsIFrame * 0x0358ef40, unsigned char *
0x0012e79c) line 3318 + 26 bytes
nsBlockFrame::DoReflowInlineFrames(nsBlockReflowState & {...}, nsLineLayout &
{...}, nsLineBox * 0x0358ee80, int * 0x0012f064, unsigned char * 0x0012ef3c)
line 3208 + 28 bytes
nsBlockFrame::DoReflowInlineFramesAuto(nsBlockReflowState & {...}, nsLineBox *
0x0358ee80, int * 0x0012f064, unsigned char * 0x0012ef3c) line 3155 + 34 bytes
nsBlockFrame::ReflowInlineFrames(nsBlockReflowState & {...}, nsLineBox *
0x0358ee80, int * 0x0012f064) line 3103 + 24 bytes
nsBlockFrame::ReflowLine(nsBlockReflowState & {...}, nsLineBox * 0x0358ee80, int
* 0x0012f064, int 0x00000000) line 2363 + 20 bytes
nsBlockFrame::ReflowDirtyLines(nsBlockReflowState & {...}) line 2112 + 24 bytes
nsBlockFrame::Reflow(nsBlockFrame * const 0x0358bdd4, nsIPresContext & {...},
nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int &
0x00000000) line 1309 + 18 bytes
nsAreaFrame::Reflow(nsAreaFrame * const 0x0358bdd4, nsIPresContext & {...},
nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int &
0x00000000) line 401 + 25 bytes
nsContainerFrame::ReflowChild(nsIFrame * 0x0358bdd0, nsIPresContext & {...},
nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int &
0x00000000) line 372 + 28 bytes
RootFrame::Reflow(RootFrame * const 0x034b24b4, nsIPresContext & {...},
nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int &
0x00000000) line 330
nsContainerFrame::ReflowChild(nsIFrame * 0x034b24b0, nsIPresContext & {...},
nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int &
0x00000000) line 372 + 28 bytes
ViewportFrame::Reflow(ViewportFrame * const 0x034b2c14, nsIPresContext & {...},
nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int &
0x00000000) line 516
nsHTMLReflowCommand::Dispatch(nsHTMLReflowCommand * const 0x0358f1d0,
nsIPresContext & {...}, nsHTMLReflowMetrics & {...}, const nsSize & {...},
nsIRenderingContext & {...}) line 141
PresShell::ProcessReflowCommands(PresShell * const 0x03476ce0) line 1301
PresShell::ExitReflowLock(PresShell * const 0x03476ce0) line 616
PresShell::ReconstructFrames() line 1791
PresShell::StyleSheetAdded(PresShell * const 0x03476ce8, nsIDocument *
0x0342fb50, nsIStyleSheet * 0x035a55b0) line 1799
nsDocument::AddStyleSheet(nsIStyleSheet * 0x035a55b0) line 1340
AddStyleSheetTxn::Do(AddStyleSheetTxn * const 0x0358c740) line 86
nsTransactionItem::Do() line 102 + 18 bytes
nsTransactionManager::BeginTransaction(nsITransaction * 0x0358c740) line 1038 +
11 bytes
nsTransactionManager::Do(nsTransactionManager * const 0x035a4910, nsITransaction
* 0x0358c740) line 134 + 18 bytes
nsEditor::Do(nsEditor * const 0x035a4b00, nsITransaction * 0x0358c740) line 342
+ 30 bytes
nsHTMLEditor::AddStyleSheet(nsHTMLEditor * const 0x035a4b54, nsICSSStyleSheet *
0x035a55b0) line 2679 + 20 bytes
nsHTMLEditor::ReplaceStyleSheet(nsHTMLEditor * const 0x035a4b00,
nsICSSStyleSheet * 0x035a55b0) line 3590 + 20 bytes
nsHTMLEditor::ApplyStyleSheetToPresShellDocument(nsICSSStyleSheet * 0x035a55b0,
void * 0x035a4b00) line 3607 + 19 bytes
nsHTMLEditor::ApplyStyleSheet(nsHTMLEditor * const 0x035a4b54, const nsString &
{...}) line 2752 + 16 bytes
nsHTMLEditorLog::ApplyStyleSheet(nsHTMLEditorLog * const 0x035a4b54, const
nsString & {...}) line 587 + 13 bytes
nsEditorShell::ApplyStyleSheet(nsEditorShell * const 0x03494ee0, const unsigned
short * 0x0012fa4c) line 601 + 39 bytes
nsEditorShell::PrepareDocumentForEditing(nsEditorShell * const 0x03494ee0,
nsIURI * 0x035728b0) line 829
nsEditorShell::OnEndDocumentLoad(nsEditorShell * const 0x03494ee8,
nsIDocumentLoader * 0x035746b0, nsIChannel * 0x03570480, unsigned int
0x00000000, nsIDocumentLoaderObserver * 0x03571ba4) line 3083 + 28 bytes
nsWebShell::OnEndDocumentLoad(nsWebShell * const 0x03571ba4, nsIDocumentLoader *
0x035746b0, nsIChannel * 0x03570480, unsigned int 0x00000000,
nsIDocumentLoaderObserver * 0x03571ba4) line 3439
nsDocLoaderImpl::FireOnEndDocumentLoad(nsDocLoaderImpl * 0x035746b0, nsIChannel
* 0x03570480, unsigned int 0x00000000) line 885
nsDocLoaderImpl::OnStopRequest(nsDocLoaderImpl * const 0x035746b4, nsIChannel *
0x03570480, nsISupports * 0x00000000, unsigned int 0x00000000, const unsigned
short * 0x00000000) line 768
nsLoadGroup::RemoveChannel(nsLoadGroup * const 0x03574640, nsIChannel *
0x03570480, nsISupports * 0x00000000, unsigned int 0x00000000, const unsigned
short * 0x00000000) line 597 + 39 bytes
nsHTTPChannel::ResponseCompleted(nsIChannel * 0x03570890, unsigned int
0x00000000) line 755
nsHTTPResponseListener::OnStopRequest(nsHTTPResponseListener * const 0x0351a2f0,
nsIChannel * 0x03570890, nsISupports * 0x03570480, unsigned int 0x00000000,
const unsigned short * 0x00000000) line 264
nsOnStopRequestEvent::HandleEvent(nsOnStopRequestEvent * const 0x03518a50) line
283
nsStreamListenerEvent::HandlePLEvent(PLEvent * 0x03518a00) line 152 + 12 bytes
PL_HandleEvent(PLEvent * 0x03518a00) line 541 + 10 bytes
PL_ProcessPendingEvents(PLEventQueue * 0x00d0b890) line 500 + 9 bytes
_md_EventReceiverProc(HWND__ * 0x033a036e, unsigned int 0x0000c058, unsigned int
0x00000000, long 0x00d0b890) line 970 + 9 bytes
USER32! 77e71268()
00d0b890()
Target Milestone: M14
setting to M14, this one can wait until after dogfood push
Status: NEW → ASSIGNED
Not sure what status is on this now. A good test is to 'Edit page' on the URL
above.
Bulk move of all Necko (to be deleted component) bugs to new Networking

component.
*** Bug 14640 has been marked as a duplicate of this bug. ***
Seeing as Bug 14640 has been marked as a dupe of this bug, I'm going to reupload 
the testcase I lovingly crafted here. Bug 14640 also has some interesting 
discussion about this problem. In fact, Bug 14640 had all the fields in the 
entry set correctly, including the dependencies. Why was the dupe resolved this 
way round rather than the other?

I wonder if I can claim double for the BugAThon? ;-)

Also, are we supposed to be using Status [TESTCASE] or keyword testcase now?

Gerv
Blocks: 17907, 24854
Severity: normal → critical
Component: Networking → Editor
Keywords: testcase
OS: Mac System 8.5 → All
Priority: P3 → P1
Summary: Too many OnEndDocumentLoad notifcations → Too many OnEndDocumentLoad notifications; Composer can't cope with <iframe> tags
Whiteboard: [TESTCASE]
assigning this to Kin for debugging
Assignee: sfraser → kin
Status: ASSIGNED → NEW
Assigning to sfraser@netscape.com. Moving to M15.
Target Milestone: M14 → M15
Confirmed still a problem in W95 2000021615.

Gerv
Whoops, forgot to assign to sfraser@netscape.com on last entry.
Assignee: kin → sfraser
Cc myself.
Not working in 20000323, but WORKSFORME in 20000324. It's been fixed :-)

Gerv
Status: NEW → RESOLVED
Closed: 20 years ago
Resolution: --- → WORKSFORME
setting sujay as QA contact
QA Contact: tever → sujay
verified in 4/3 build.
Status: RESOLVED → VERIFIED
No longer blocks: 17907
You need to log in before you can comment on or make changes to this bug.