Bug 1377497 - Pass the correct writing mode to SizeComputationInput::DisplayInitOffsetsEnter. r=jfkthame

This avoids asserting when the writing mode doesn't correspond to the
one stored (DEBUG-only) in aPercentBasis.

MozReview-Commit-ID: KKqms9X17SS
This commit is contained in:
L. David Baron 2017-07-07 09:20:56 -07:00
Родитель 629ef010df
Коммит d4c979a87f
4 изменённых файлов: 19 добавлений и 10 удалений

Просмотреть файл

@ -2540,7 +2540,7 @@ SizeComputationInput::InitOffsets(WritingMode aWM,
const nsMargin* aPadding,
const nsStyleDisplay* aDisplay)
{
DISPLAY_INIT_OFFSETS(mFrame, this, aPercentBasis, aBorder, aPadding);
DISPLAY_INIT_OFFSETS(mFrame, this, aPercentBasis, aWM, aBorder, aPadding);
// Since we are in reflow, we don't need to store these properties anymore
// unless they are dependent on width, in which case we store the new value.

Просмотреть файл

@ -247,6 +247,7 @@ public:
nsIFrame* aFrame,
SizeComputationInput* aState,
const mozilla::LogicalSize& aPercentBasis,
WritingMode aCBWritingMode,
const nsMargin* aBorder,
const nsMargin* aPadding);
static void DisplayInitOffsetsExit(nsIFrame* aFrame,

Просмотреть файл

@ -10918,8 +10918,9 @@ DR_init_constraints_cookie::~DR_init_constraints_cookie()
DR_init_offsets_cookie::DR_init_offsets_cookie(
nsIFrame* aFrame,
SizeComputationInput* aState,
SizeComputationInput* aState,
const LogicalSize& aPercentBasis,
WritingMode aCBWritingMode,
const nsMargin* aMargin,
const nsMargin* aPadding)
: mFrame(aFrame)
@ -10927,8 +10928,9 @@ DR_init_offsets_cookie::DR_init_offsets_cookie(
{
MOZ_COUNT_CTOR(DR_init_offsets_cookie);
mValue = SizeComputationInput::DisplayInitOffsetsEnter(mFrame, mState,
aPercentBasis,
aMargin, aPadding);
aPercentBasis,
aCBWritingMode,
aMargin, aPadding);
}
DR_init_offsets_cookie::~DR_init_offsets_cookie()
@ -11878,6 +11880,7 @@ ReflowInput::DisplayInitConstraintsExit(nsIFrame* aFrame,
SizeComputationInput::DisplayInitOffsetsEnter(nsIFrame* aFrame,
SizeComputationInput* aState,
const LogicalSize& aPercentBasis,
WritingMode aCBWritingMode,
const nsMargin* aBorder,
const nsMargin* aPadding)
{
@ -11894,9 +11897,10 @@ SizeComputationInput::DisplayInitOffsetsEnter(nsIFrame* aFrame,
char horizPctBasisStr[16];
char vertPctBasisStr[16];
WritingMode wm = aState->GetWritingMode();
DR_state->PrettyUC(aPercentBasis.ISize(wm), horizPctBasisStr, 16);
DR_state->PrettyUC(aPercentBasis.BSize(wm), vertPctBasisStr, 16);
DR_state->PrettyUC(aPercentBasis.ISize(aCBWritingMode),
horizPctBasisStr, 16);
DR_state->PrettyUC(aPercentBasis.BSize(aCBWritingMode),
vertPctBasisStr, 16);
printf("InitOffsets pct_basis=%s,%s", horizPctBasisStr, vertPctBasisStr);
DR_state->PrintMargin("b", aBorder);

Просмотреть файл

@ -865,6 +865,7 @@ public:
struct DR_init_offsets_cookie {
DR_init_offsets_cookie(nsIFrame* aFrame, mozilla::SizeComputationInput* aState,
const mozilla::LogicalSize& aPercentBasis,
mozilla::WritingMode aCBWritingMode,
const nsMargin* aBorder,
const nsMargin* aPadding);
~DR_init_offsets_cookie();
@ -903,8 +904,10 @@ public:
dr_bdr, dr_pad) \
DR_init_constraints_cookie dr_cookie(dr_frame, dr_state, dr_cbw, dr_cbh, \
dr_bdr, dr_pad)
#define DISPLAY_INIT_OFFSETS(dr_frame, dr_state, dr_pb, dr_bdr, dr_pad) \
DR_init_offsets_cookie dr_cookie(dr_frame, dr_state, dr_pb, dr_bdr, dr_pad)
#define DISPLAY_INIT_OFFSETS(dr_frame, dr_state, dr_pb, dr_cbwm, dr_bdr, \
dr_pad) \
DR_init_offsets_cookie dr_cookie(dr_frame, dr_state, dr_pb, dr_cbwm, \
dr_bdr, dr_pad)
#define DISPLAY_INIT_TYPE(dr_frame, dr_result) \
DR_init_type_cookie dr_cookie(dr_frame, dr_result)
@ -921,7 +924,8 @@ public:
#define DISPLAY_INIT_CONSTRAINTS(dr_frame, dr_state, dr_cbw, dr_cbh, \
dr_bdr, dr_pad) \
PR_BEGIN_MACRO PR_END_MACRO
#define DISPLAY_INIT_OFFSETS(dr_frame, dr_state, dr_pb, dr_bdr, dr_pad) \
#define DISPLAY_INIT_OFFSETS(dr_frame, dr_state, dr_pb, dr_cbwm, dr_bdr, \
dr_pad) \
PR_BEGIN_MACRO PR_END_MACRO
#define DISPLAY_INIT_TYPE(dr_frame, dr_result) PR_BEGIN_MACRO PR_END_MACRO