Open Bug 369165 Opened 18 years ago Updated 2 years ago

Viewmanager hierarchy can change during a view update batch

Categories

(Core :: Web Painting, defect)

x86
Linux
defect

Tracking

()

People

(Reporter: bzbarsky, Unassigned)

Details

Consider the following code (PresShell::FlushPendingNotifications):

  mViewManager->BeginViewUpdateBatch();

  // Stuff that can change the viewmanager hierarchy

  mViewManager->EndViewUpdateBatch();

The issue is that processing restyles can cause XBL constructors to run, so the viewmanager hierarchy can get rearranged.  At the end of the method, mViewManager may no longer have the same root, so we end up with a "stuck" view update batch....
Flags: blocking1.9?
A testcase here would be nice...
Flags: blocking1.9? → blocking1.9-
My XBL fu is a little weak to write one easily, but the basic idea would be to have a document with a subframe (probably iframe).

In the subframe, we make sure some XBL binding is loaded (so it can be applied sych), then trigger a restyle that applies that binding to a node and immediately flush notifications (e.g. get document.body.offsetWidth).

Then make sure the constructor of the binding removes that iframe from the DOM....

That should kill painting for the parent document.
QA Contact: ian → layout.view-rendering
Component: Layout: View Rendering → Layout: Web Painting
Severity: normal → S3
You need to log in before you can comment on or make changes to this bug.