Open Bug 359487 Opened 18 years ago Updated 1 year ago

Investigate appending content in chunks rather than holding off on notifications in the sinks

Categories

(Core :: DOM: Core & HTML, defect, P5)

defect

Tracking

()

People

(Reporter: sicking, Unassigned)

References

(Blocks 2 open bugs)

Details

(Keywords: mobile, perf)

Currently the sinks, or rather then html sink (but probably also the xml sink with bug 18333) holds off notifying about inserted content to save us from constantly reflowing.

The downside with this is that we in a bunch of places have to complicate the code to ensure that the pending notifications are flushed. We also end up in situations like bug 352390 where we run into issues with using content that hasn't been notified about yet.

An alternative solution would be to always notify, but append content in chunks into the main DOM. So we would build orphaned subtrees and then append those subtrees into the main DOM. These subtrees could be appended in exactly the same places where we currently flush pending notifications. This way the exact same notifications would reach the document node and thus the presshell.

The downside with this is that
A) We would spend a bit more time in nsNodeUtils::ContentAppended since
   we would actually do that while building up the orphaned subtree. However 
   profiles have shown that this function is generally very fast. And it's
   possible that we wouldn't need to notify while building the subtree.
B) We'd call BindToTree twice on each node. Once when the node is inserted
   in the subtree, and once when the subtree is inserted in the main document.
   Hopefully this won't be an issue though. Especially since the first
   BindToTree call probably won't do very much given that the node isn't in
   the main document yet.

Adding dependency on 18333 since we should fix both sinks at the same time.
Blocks: 315306
Keywords: mobile, perf
Flags: blocking1.9.2?
Flags: blocking1.9.1?
Not blocking 1.9.1 on this, but wanted for 1.9.2 for sure.
Flags: wanted1.9.2+
Flags: blocking1.9.1?
Flags: blocking1.9.1-
Per recent discussions in email with Stuart, Vlad, Beltzner, Jonas, and myself, we won't be doing anything here for 1.9.2. This will be something we'll revisit for the HTML5 parser once it's farther along.
Flags: blocking1.9.2? → blocking1.9.2-
Assignee: general → nobody
QA Contact: ian → general
https://bugzilla.mozilla.org/show_bug.cgi?id=1472046

Move all DOM bugs that haven’t been updated in more than 3 years and has no one currently assigned to P5.

If you have questions, please contact :mdaly.
Priority: -- → P5
Component: DOM → DOM: Core & HTML
Severity: normal → S3
You need to log in before you can comment on or make changes to this bug.