Closed Bug 753777 Opened 8 years ago Closed 8 years ago

ringmark's matchMedia test fails because we don't flush to create presContext for newly-created iframe

Categories

(Core :: DOM: CSS Object Model, defect, P4)

defect

Tracking

()

RESOLVED FIXED
mozilla16

People

(Reporter: dbaron, Assigned: dbaron)

References

Details

Attachments

(1 file)

Steps to reproduce:
 1. load http://rng.io/?all and let it run
 2. open Ring 1
 3. open 2D Games
 4. open CSS3 MediaQueries
 5. look at the results

Actual results: second and third tests fail

Expected results: all tests pass

What's happening here is that we're failing this null-check:
http://hg.mozilla.org/mozilla-central/file/6fe7dd2f8f57/dom/base/nsGlobalWindow.cpp#l3817
because presContext is null.

If I add a FlushPendingNotifications(Flush_Layout) call earlier in the method, the tests pass.

The question is whether there's any weaker flush (e.g., flush on the parent) that would be sufficient to ensure that nsGlobalWindow::GetPresContext gives an up-to-date result.
I _think_ that a Flush_Style on the parent should be sufficient if we don't care about having the prescontext size up to date.
Er, I meant to do Flush_Frames and then I did Flush_Layout for some reason.

I think we do need the size up-to-date, though, and I *think* something deeper in the code does a flush to ensure that, though I need to check.
OK.  Worst case, a Flush_Layout on the parent would suffice; nsGlobalWindow even has an EnsureSizeUpToDate helper for that.
nsDOMMediaQueryList actually doesn't have any flushes, but almost certainly needs them
Attached patch patchSplinter Review
Anyway, we should get this in.  comment 4 should be a separate bug.
Attachment #639487 - Flags: review?(bzbarsky)
Comment on attachment 639487 [details] [diff] [review]
patch

r=me
Attachment #639487 - Flags: review?(bzbarsky) → review+
https://hg.mozilla.org/mozilla-central/rev/70995c6989e4
Status: ASSIGNED → RESOLVED
Closed: 8 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.