Bug 1222783 - Make nsHTMLFramesetFrame::Reflow set firstTime based on what firstTime means. r=roc

I confirmed locally that the new crashtest crashes in the harness
without the patch, and passes in the harness with the patch.

--HG--
extra : transplant_source : %FD%D6%F6%EB%04SQ%E3%8AB%BB%2B%B0%25Ys%0B%F3%D2t
This commit is contained in:
L. David Baron 2015-11-10 13:42:29 +08:00
parent bafbe2d0f0
commit 0f3b361824
3 changed files with 27 additions and 1 deletions

View File

@ -0,0 +1,19 @@
<?xml version="1.0"?>
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<title>Test, bug 1222783</title>
<body>
<div id="container" style="width: 400px">
<div id="float1" style="float: left; height: 50px; width: 50px"></div>
<div id="float2" style="float: left; clear: left; height: 50px; width: 200px"></div>
<frameset cols="50%,50%">
<frame></frame>
<frame></frame>
</frameset>
</div>
</body>
</html>

View File

@ -588,6 +588,7 @@ load 1183431.html
load 1221112-1.html
load 1221112-2.html
load 1221874-1.html
load 1222783.xhtml
load first-letter-638937-1.html
load first-letter-638937-2.html
pref(dom.meta-viewport.enabled,true) test-pref(font.size.inflation.emPerLine,15) asserts(1-100) load font-inflation-762332.html # bug 762332

View File

@ -819,7 +819,13 @@ nsHTMLFramesetFrame::Reflow(nsPresContext* aPresContext,
nscoord height = (aDesiredSize.Height() <= aReflowState.AvailableHeight())
? aDesiredSize.Height() : aReflowState.AvailableHeight();
bool firstTime = (GetStateBits() & NS_FRAME_FIRST_REFLOW) != 0;
// We might be reflowed more than once with NS_FRAME_FIRST_REFLOW;
// that's allowed. (Though it will only happen for misuse of frameset
// that includes it within other content.) So measure firstTime by
// what we care about, which is whether we've processed the data we
// process below if firstTime is true.
MOZ_ASSERT(!mChildFrameborder == !mChildBorderColors);
bool firstTime = !!mChildFrameborder;
// subtract out the width of all of the potential borders. There are
// only borders between <frame>s. There are none on the edges (e.g the