Created attachment 579397 [details]
1. Load http://people.mozilla.com/~nhirata/html_tp/elephants-dream.webm
2. Long press the video and choose "Full Screen" from the context menu.
EXPECTED RESULT: The video should play fullscreen.
ACTUAL RESULT: In a release build, the page will go gray. In a debug build, Fennec dies from fatal assert in nsLayoutUtils::InflationMinFontSizeFor():
// Check that neither this frame nor any of its ancestors are
// currently being reflowed.
// It's ok for box frames (but not arbitrary ancestors of box frames)
// since they set their size before reflow.
###!!! ABORT: must call nsHTMLReflowState& version during reflow: '!(f->GetStateBits() & NS_FRAME_IN_REFLOW)', file /Users/cpeterson/Code/mozilla/birch/layout/base/nsLayoutUtils.cpp, line 4692
* dbaron says:
I presume that the problem is that the nearest XUL frame is in a native anonymous subtree and therefore IsContainerForFontSizeInflation is returning false.
Probably I should:
(1) just change IsContainerForFontSizeInflation for that case
(2) change nsLayoutUtils::InflationMinFontSizeFor(const nsHTMLReflowState&) so that it asserts for this case even when inflation is turned off
Created attachment 581086 [details] [diff] [review]
Comment on attachment 581086 [details] [diff] [review]
>+ // ugly exception, but ok because the child should be
Could we actually assert that? So
(f->GetType() == nsGkAtoms::scrollFrame &&
(probably with a relevant do_QueryFrame on f or something).
It turns out it's actually not true, because the whole thing could be inside native-anonymous content, e.g., inside of an input. And we really need nothing to be a container in that case -- but it's also safe in the is-a-reflow-root case.
I bet I can revise the assertion to incorporate an NS_FRAME_IN_REFLOW check on the parent of the top of the reflow state chain.
*** Bug 713009 has been marked as a duplicate of this bug. ***