Backout changesets 1639af64e372, 74ecf0f57a56, 94831690f525, 27eab13d3cf2 (bug 1183431) for Android-specific failure in reftest 1183431-orthogonal-modes-5a.html.

This commit is contained in:
Jonathan Kew 2015-08-06 17:32:20 +01:00
Родитель e7cd019de0
Коммит 17045bb405
37 изменённых файлов: 59 добавлений и 667 удалений

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

@ -1,6 +0,0 @@
<!DOCTYPE>
<html>
<body>
<div style="writing-mode: vertical-lr;"><div style="position: fixed;"></div></div>
</body>
</html>

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

@ -587,4 +587,3 @@ load 1156222.html
load 1157011.html
load 1169420-1.html
load 1169420-2.html
load 1183431.html

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

@ -997,7 +997,7 @@ nsHTMLReflowState::ApplyRelativePositioning(nsIFrame* aFrame,
nsIFrame*
nsHTMLReflowState::GetHypotheticalBoxContainer(nsIFrame* aFrame,
nscoord& aCBIStartEdge,
LogicalSize& aCBSize)
nscoord& aCBISize)
{
aFrame = aFrame->GetContainingBlock();
NS_ASSERTION(aFrame != frame, "How did that happen?");
@ -1021,7 +1021,7 @@ nsHTMLReflowState::GetHypotheticalBoxContainer(nsIFrame* aFrame,
WritingMode stateWM = state->GetWritingMode();
aCBIStartEdge =
state->ComputedLogicalBorderPadding().ConvertTo(wm, stateWM).IStart(wm);
aCBSize = state->ComputedSize(wm);
aCBISize = state->ComputedSize(wm).ISize(wm);
} else {
/* Didn't find a reflow state for aFrame. Just compute the information we
want, on the assumption that aFrame already knows its size. This really
@ -1030,7 +1030,7 @@ nsHTMLReflowState::GetHypotheticalBoxContainer(nsIFrame* aFrame,
"aFrame shouldn't be in reflow; we'll lie if it is");
LogicalMargin borderPadding = aFrame->GetLogicalUsedBorderAndPadding(wm);
aCBIStartEdge = borderPadding.IStart(wm);
aCBSize = aFrame->GetLogicalSize(wm) - borderPadding.Size(wm);
aCBISize = aFrame->ISize(wm) - borderPadding.IStartEnd(wm);
}
return aFrame;
@ -1080,81 +1080,71 @@ GetIntrinsicSizeFor(nsIFrame* aFrame, nsSize& aIntrinsicSize, nsIAtom* aFrameTyp
}
/**
* aInsideBoxSizing returns the part of the padding, border, and margin
* in the aAxis dimension that goes inside the edge given by box-sizing;
* aInsideBoxSizing returns the part of the horizontal padding, border,
* and margin that goes inside the edge given by box-sizing;
* aOutsideBoxSizing returns the rest.
*/
void
nsHTMLReflowState::CalculateBorderPaddingMargin(
LogicalAxis aAxis,
nscoord aContainingBlockSize,
nsHTMLReflowState::CalculateInlineBorderPaddingMargin(
nscoord aContainingBlockISize,
nscoord* aInsideBoxSizing,
nscoord* aOutsideBoxSizing)
{
WritingMode wm = GetWritingMode();
mozilla::css::Side startSide =
wm.PhysicalSide(MakeLogicalSide(aAxis, eLogicalEdgeStart));
mozilla::css::Side endSide =
wm.PhysicalSide(MakeLogicalSide(aAxis, eLogicalEdgeEnd));
mozilla::css::Side inlineStart = wm.PhysicalSide(eLogicalSideIStart);
mozilla::css::Side inlineEnd = wm.PhysicalSide(eLogicalSideIEnd);
nsMargin styleBorder = mStyleBorder->GetComputedBorder();
nscoord borderStartEnd =
styleBorder.Side(startSide) + styleBorder.Side(endSide);
nscoord paddingStartEnd, marginStartEnd;
const LogicalMargin& border =
LogicalMargin(wm, mStyleBorder->GetComputedBorder());
LogicalMargin padding(wm), margin(wm);
// See if the style system can provide us the padding directly
nsMargin stylePadding;
if (mStylePadding->GetPadding(stylePadding)) {
paddingStartEnd =
stylePadding.Side(startSide) + stylePadding.Side(endSide);
padding = LogicalMargin(wm, stylePadding);
} else {
// We have to compute the start and end values
nscoord start, end;
start = nsLayoutUtils::
ComputeCBDependentValue(aContainingBlockSize,
mStylePadding->mPadding.Get(startSide));
end = nsLayoutUtils::
ComputeCBDependentValue(aContainingBlockSize,
mStylePadding->mPadding.Get(endSide));
paddingStartEnd = start + end;
// We have to compute the inline start and end values
padding.IStart(wm) = nsLayoutUtils::
ComputeCBDependentValue(aContainingBlockISize,
mStylePadding->mPadding.Get(inlineStart));
padding.IEnd(wm) = nsLayoutUtils::
ComputeCBDependentValue(aContainingBlockISize,
mStylePadding->mPadding.Get(inlineEnd));
}
// See if the style system can provide us the margin directly
nsMargin styleMargin;
if (mStyleMargin->GetMargin(styleMargin)) {
marginStartEnd =
styleMargin.Side(startSide) + styleMargin.Side(endSide);
margin = LogicalMargin(wm, styleMargin);
} else {
nscoord start, end;
// We have to compute the start and end values
if (eStyleUnit_Auto == mStyleMargin->mMargin.GetUnit(startSide)) {
// We have to compute the left and right values
if (eStyleUnit_Auto == mStyleMargin->mMargin.GetUnit(inlineStart)) {
// XXX FIXME (or does CalculateBlockSideMargins do this?)
start = 0; // just ignore
margin.IStart(wm) = 0; // just ignore
} else {
start = nsLayoutUtils::
ComputeCBDependentValue(aContainingBlockSize,
mStyleMargin->mMargin.Get(startSide));
margin.IStart(wm) = nsLayoutUtils::
ComputeCBDependentValue(aContainingBlockISize,
mStyleMargin->mMargin.Get(inlineStart));
}
if (eStyleUnit_Auto == mStyleMargin->mMargin.GetUnit(endSide)) {
if (eStyleUnit_Auto == mStyleMargin->mMargin.GetUnit(inlineEnd)) {
// XXX FIXME (or does CalculateBlockSideMargins do this?)
end = 0; // just ignore
margin.IEnd(wm) = 0; // just ignore
} else {
end = nsLayoutUtils::
ComputeCBDependentValue(aContainingBlockSize,
mStyleMargin->mMargin.Get(endSide));
margin.IEnd(wm) = nsLayoutUtils::
ComputeCBDependentValue(aContainingBlockISize,
mStyleMargin->mMargin.Get(inlineEnd));
}
marginStartEnd = start + end;
}
nscoord outside = paddingStartEnd + borderStartEnd + marginStartEnd;
nscoord outside =
padding.IStartEnd(wm) + border.IStartEnd(wm) + margin.IStartEnd(wm);
nscoord inside = 0;
switch (mStylePosition->mBoxSizing) {
case NS_STYLE_BOX_SIZING_BORDER:
inside += borderStartEnd;
inside += border.IStartEnd(wm);
// fall through
case NS_STYLE_BOX_SIZING_PADDING:
inside += paddingStartEnd;
inside += padding.IStartEnd(wm);
}
outside -= inside;
*aInsideBoxSizing = inside;
@ -1188,12 +1178,8 @@ static bool AreAllEarlierInFlowFramesEmpty(nsIFrame* aFrame,
// Calculate the hypothetical box that the element would have if it were in
// the flow. The values returned are relative to the padding edge of the
// absolute containing block. The writing-mode of the hypothetical box will
// have the same block direction as the absolute containing block, but may
// differ in inline-bidi direction.
// In the code below, |cbrs->frame| is the absolute containing block, while
// |containingBlock| is the nearest block container of the placeholder frame,
// which may be different from the absolute containing block.
// absolute containing block, in the actual containing block's writing mode.
// cbrs->frame is the actual containing block
void
nsHTMLReflowState::CalculateHypotheticalBox(nsPresContext* aPresContext,
nsIFrame* aPlaceholderFrame,
@ -1206,20 +1192,16 @@ nsHTMLReflowState::CalculateHypotheticalBox(nsPresContext* aPresContext,
// Find the nearest containing block frame to the placeholder frame,
// and its inline-start edge and width.
nscoord blockIStartContentEdge;
// Dummy writing mode for blockContentSize, will be changed as needed by
// GetHypotheticalBoxContainer.
WritingMode cbwm = cbrs->GetWritingMode();
LogicalSize blockContentSize(cbwm);
nscoord blockIStartContentEdge, blockContentISize;
nsIFrame* containingBlock =
GetHypotheticalBoxContainer(aPlaceholderFrame, blockIStartContentEdge,
blockContentSize);
// Now blockContentSize is in containingBlock's writing mode.
blockContentISize);
// If it's a replaced element and it has a 'auto' value for
//'inline size', see if we can get the intrinsic size. This will allow
// us to exactly determine both the inline edges
WritingMode wm = containingBlock->GetWritingMode();
aHypotheticalBox.mWritingMode = wm;
nsStyleCoord styleISize = mStylePosition->ISize(wm);
bool isAutoISize = styleISize.GetUnit() == eStyleUnit_Auto;
@ -1248,8 +1230,7 @@ nsHTMLReflowState::CalculateHypotheticalBox(nsPresContext* aPresContext,
// been in the flow. Note that we ignore any 'auto' and 'inherit'
// values
nscoord insideBoxSizing, outsideBoxSizing;
CalculateBorderPaddingMargin(eLogicalAxisInline,
blockContentSize.ISize(wm),
CalculateInlineBorderPaddingMargin(blockContentISize,
&insideBoxSizing, &outsideBoxSizing);
if (NS_FRAME_IS_REPLACED(mFrameType) && isAutoISize) {
@ -1263,14 +1244,14 @@ nsHTMLReflowState::CalculateHypotheticalBox(nsPresContext* aPresContext,
} else if (isAutoISize) {
// The box inline size is the containing block inline size
boxISize = blockContentSize.ISize(wm);
boxISize = blockContentISize;
knowBoxISize = true;
} else {
// We need to compute it. It's important we do this, because if it's
// percentage based this computed value may be different from the computed
// value calculated using the absolute containing block width
boxISize = ComputeISizeValue(blockContentSize.ISize(wm),
boxISize = ComputeISizeValue(blockContentISize,
insideBoxSizing, outsideBoxSizing,
styleISize) +
insideBoxSizing + outsideBoxSizing;
@ -1282,6 +1263,7 @@ nsHTMLReflowState::CalculateHypotheticalBox(nsPresContext* aPresContext,
// space of its containing block
// XXXbz the placeholder is not fully reflowed yet if our containing block is
// relatively positioned...
WritingMode cbwm = cbrs->GetWritingMode();
nsSize containerSize = containingBlock->GetStateBits() & NS_FRAME_IN_REFLOW
? cbrs->ComputedSizeAsContainerIfConstrained()
: containingBlock->GetSize();
@ -1386,8 +1368,7 @@ nsHTMLReflowState::CalculateHypotheticalBox(nsPresContext* aPresContext,
// We can't compute the inline-end edge because we don't know the desired
// inline-size. So instead use the end content edge of the block parent,
// but remember it's not exact
aHypotheticalBox.mIEnd =
blockIStartContentEdge + blockContentSize.ISize(wm);
aHypotheticalBox.mIEnd = blockIStartContentEdge + blockContentISize;
#ifdef DEBUG
aHypotheticalBox.mIEndIsExact = false;
#endif
@ -1430,7 +1411,9 @@ nsHTMLReflowState::CalculateHypotheticalBox(nsPresContext* aPresContext,
// scroll, and thus avoid the resulting incremental reflow bugs.
cbOffset = containingBlock->GetOffsetTo(cbrs->frame);
}
nsSize cbrsSize = cbrs->ComputedSizeAsContainerIfConstrained();
nsSize cbrsSize =
cbrs->ComputedPhysicalSize() +
cbrs->ComputedLogicalBorderPadding().Size(cbwm).GetPhysicalSize(cbwm);
LogicalPoint logCBOffs(wm, cbOffset, cbrsSize - containerSize);
aHypotheticalBox.mIStart += logCBOffs.I(wm);
aHypotheticalBox.mIEnd += logCBOffs.I(wm);
@ -1445,74 +1428,6 @@ nsHTMLReflowState::CalculateHypotheticalBox(nsPresContext* aPresContext,
aHypotheticalBox.mIStart -= border.IStart(wm);
aHypotheticalBox.mIEnd -= border.IStart(wm);
aHypotheticalBox.mBStart -= border.BStart(wm);
// At this point, we have computed aHypotheticalBox using the writing mode
// of the placeholder's containing block.
if (cbwm.GetBlockDir() != wm.GetBlockDir()) {
// If the block direction we used in calculating aHypotheticalBox does not
// match the absolute containing block's, we need to convert here so that
// aHypotheticalBox is usable in relation to the absolute containing block.
// This requires computing or measuring the abspos frame's block-size,
// which is not otherwise required/used here (as aHypotheticalBox records
// only the block-start coordinate).
// This is similar to the inline-size calculation for a replaced
// inline-level element or a block-level element (above), except that
// 'auto' sizing is handled differently in the block direction for non-
// replaced elements and replaced elements lacking an intrinsic size.
// Determine the total amount of block direction
// border/padding/margin that the element would have had if it had
// been in the flow. Note that we ignore any 'auto' and 'inherit'
// values.
nscoord insideBoxSizing, outsideBoxSizing;
CalculateBorderPaddingMargin(eLogicalAxisBlock,
blockContentSize.BSize(wm),
&insideBoxSizing, &outsideBoxSizing);
nscoord boxBSize;
nsStyleCoord styleBSize = mStylePosition->BSize(wm);
bool isAutoBSize = styleBSize.GetUnit() == eStyleUnit_Auto;
if (isAutoBSize) {
if (NS_FRAME_IS_REPLACED(mFrameType) && knowIntrinsicSize) {
// It's a replaced element with an 'auto' block size so the box
// block size is its intrinsic size plus any border/padding/margin
boxBSize = LogicalSize(wm, intrinsicSize).BSize(wm) +
outsideBoxSizing + insideBoxSizing;
} else {
// XXX Bug 1191801
// Figure out how to get the correct boxBSize here (need to reflow the
// positioned frame?)
boxBSize = 0;
}
} else {
// We need to compute it. It's important we do this, because if it's
// percentage-based this computed value may be different from the
// computed value calculated using the absolute containing block height.
boxBSize = ComputeBSizeValue(blockContentSize.BSize(wm),
insideBoxSizing, styleBSize) +
insideBoxSizing + outsideBoxSizing;
}
LogicalSize boxSize(wm, knowBoxISize ? boxISize : 0, boxBSize);
LogicalPoint origin(wm, aHypotheticalBox.mIStart,
aHypotheticalBox.mBStart);
origin = origin.ConvertTo(cbwm, wm, cbrsSize -
boxSize.GetPhysicalSize(wm));
aHypotheticalBox.mIStart = origin.I(cbwm);
aHypotheticalBox.mIEnd = aHypotheticalBox.mIStart +
boxSize.ConvertTo(cbwm, wm).ISize(cbwm);
#ifdef DEBUG
aHypotheticalBox.mIEndIsExact = false; // it may be fake
#endif
aHypotheticalBox.mBStart = origin.B(cbwm);
aHypotheticalBox.mWritingMode = cbwm;
} else {
aHypotheticalBox.mWritingMode = wm;
}
}
void
@ -1608,6 +1523,8 @@ nsHTMLReflowState::InitAbsoluteConstraints(nsPresContext* aPresContext,
if (bStartIsAuto && bEndIsAuto) {
// Treat 'top' like 'static-position'
NS_ASSERTION(hypotheticalBox.mWritingMode.GetBlockDir() == cbwm.GetBlockDir(),
"block direction mismatch");
offsets.BStart(cbwm) = hypotheticalBox.mBStart;
bStartIsAuto = false;
}

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

@ -909,18 +909,13 @@ protected:
// Returns the nearest containing block or block frame (whether or not
// it is a containing block) for the specified frame. Also returns
// the inline-start edge and logical size of the containing block's
// the inline-start edge and inline size of the containing block's
// content area.
// These are returned in the coordinate space of the containing block.
nsIFrame* GetHypotheticalBoxContainer(nsIFrame* aFrame,
nscoord& aCBIStartEdge,
mozilla::LogicalSize& aCBSize);
nscoord& aCBISize);
// Calculate a "hypothetical box" position where the placeholder frame
// (for a position:fixed/absolute element) would have been placed if it were
// positioned statically. The hypothetical box will have a writing mode with
// the same block direction as the absolute containing block (cbrs->frame),
// though it may differ in inline-bidi direction.
void CalculateHypotheticalBox(nsPresContext* aPresContext,
nsIFrame* aPlaceholderFrame,
const nsHTMLReflowState* cbrs,
@ -937,11 +932,7 @@ protected:
// data members
void ComputeMinMaxValues(const mozilla::LogicalSize& aContainingBlockSize);
// aInsideBoxSizing returns the part of the padding, border, and margin
// in the aAxis dimension that goes inside the edge given by box-sizing;
// aOutsideBoxSizing returns the rest.
void CalculateBorderPaddingMargin(mozilla::LogicalAxis aAxis,
nscoord aContainingBlockSize,
void CalculateInlineBorderPaddingMargin(nscoord aContainingBlockISize,
nscoord* aInsideBoxSizing,
nscoord* aOutsideBoxSizing);

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

@ -1,16 +0,0 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<style>
body>div { margin: 50px 20px; width: 100px; height: 150px; border: 5px solid blue; }
.abc { display: inline-block; border: 2px solid red; inline-size: 30px;
writing-mode: vertical-lr; position: absolute; left: 0; top: 0; }
.test { background: #aaa; position: absolute; left: 0; top: 0; width: 2em; height: 100%; }
.rel { position: relative; }
img { position: absolute; left: 0; top: 34px;
width: 30px; height: 40px; background: green; border: 5px solid yellow; }
</style>
<body>
<div class="rel">
<div class="test"><span class="abc">abc</span><img src=""></div>
</div>

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

@ -1,15 +0,0 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<style>
body>div { margin: 50px 20px; width: 100px; height: 150px; border: 5px solid blue; }
.abc { display: inline-block; border: 2px solid red; inline-size: 30px; }
.test { background: #aaa; width: 2em; }
.vlr { writing-mode: vertical-lr; }
.rel { position: relative; }
img { position: absolute; width: 30px; height: 40px; background: green; border: 5px solid yellow; }
</style>
<body>
<div class="vlr">
<div class="test"><span class="abc">abc</span><img src=""></div>
</div>

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

@ -1,15 +0,0 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<style>
body>div { margin: 50px 20px; width: 100px; height: 150px; border: 5px solid blue; }
.abc { display: inline-block; border: 2px solid red; inline-size: 30px; }
.test { background: #aaa; width: 2em; }
.vlr { writing-mode: vertical-lr; }
.rel { position: relative; }
img { position: absolute; width: 30px; height: 40px; background: green; border: 5px solid yellow; }
</style>
<body>
<div class="vlr rel">
<div class="test"><span class="abc">abc</span><img src=""></div>
</div>

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

@ -1,15 +0,0 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<style>
body>div { margin: 50px 20px; width: 100px; height: 150px; border: 5px solid blue; }
.abc { display: inline-block; border: 2px solid red; inline-size: 30px; }
.test { background: #aaa; width: 2em; }
.vlr { writing-mode: vertical-lr; }
.rel { position: relative; }
img { position: absolute; width: 30px; height: 40px; background: green; border: 5px solid yellow; }
</style>
<body>
<div class="vlr">
<div class="test rel"><span class="abc">abc</span><img src=""></div>
</div>

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

@ -1,16 +0,0 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<style>
body>div { margin: 50px 20px; width: 100px; height: 150px; border: 5px solid blue; }
.abc { display: inline-block; border: 2px solid red; inline-size: 30px;
writing-mode: vertical-lr; position: absolute; left: 0; top: 0; }
.test { background: #aaa; position: absolute; left: 0; top: 0; width: 2em; height: 100%; }
.rel { position: relative; }
img { position: absolute; left: 0; top: 34px;
background: green; border: 5px solid yellow; }
</style>
<body>
<div class="rel">
<div class="test"><span class="abc">abc</span><img src=""></div>
</div>

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

@ -1,15 +0,0 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<style>
body>div { margin: 50px 20px; width: 100px; height: 150px; border: 5px solid blue; }
.abc { display: inline-block; border: 2px solid red; inline-size: 30px; }
.test { background: #aaa; width: 2em; }
.vlr { writing-mode: vertical-lr; }
.rel { position: relative; }
img { position: absolute; background: green; border: 5px solid yellow; }
</style>
<body>
<div class="vlr">
<div class="test"><span class="abc">abc</span><img src=""></div>
</div>

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

@ -1,15 +0,0 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<style>
body>div { margin: 50px 20px; width: 100px; height: 150px; border: 5px solid blue; }
.abc { display: inline-block; border: 2px solid red; inline-size: 30px; }
.test { background: #aaa; width: 2em; }
.vlr { writing-mode: vertical-lr; }
.rel { position: relative; }
img { position: absolute; background: green; border: 5px solid yellow; }
</style>
<body>
<div class="vlr rel">
<div class="test"><span class="abc">abc</span><img src=""></div>
</div>

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

@ -1,15 +0,0 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<style>
body>div { margin: 50px 20px; width: 100px; height: 150px; border: 5px solid blue; }
.abc { display: inline-block; border: 2px solid red; inline-size: 30px; }
.test { background: #aaa; width: 2em; }
.vlr { writing-mode: vertical-lr; }
.rel { position: relative; }
img { position: absolute; background: green; border: 5px solid yellow; }
</style>
<body>
<div class="vlr">
<div class="test rel"><span class="abc">abc</span><img src=""></div>
</div>

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

@ -1,13 +0,0 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<style>
body>div { margin: 50px 20px; width: 120px; height: 150px; border: 5px solid blue; }
.vlr { writing-mode: vertical-lr; }
span { display: inline-block; padding: 5px; block-size: 1.5em; border: 2px solid red; }
p { margin: 0; padding: 2px; border: 2px solid green; inline-size: -moz-fit-content; }
</style>
<body>
<div>
<div class="vlr"><span>abc def</span><p>xyzzy</p></div>
</div>

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

@ -1,14 +0,0 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<style>
body>div { margin: 50px 20px; width: 120px; height: 150px; border: 5px solid blue; }
.vlr { writing-mode: vertical-lr; }
.rel { position: relative; }
span { display: inline-block; padding: 5px; block-size: 1.5em; border: 2px solid red; }
p { position: absolute; margin: 0; padding: 2px; border: 2px solid green; }
</style>
<body>
<div class="vlr">
<div><span>abc def</span><p>xyzzy</p></div>
</div>

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

@ -1,14 +0,0 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<style>
body>div { margin: 50px 20px; width: 120px; height: 150px; border: 5px solid blue; }
.vlr { writing-mode: vertical-lr; }
.rel { position: relative; }
span { display: inline-block; padding: 5px; block-size: 1.5em; border: 2px solid red; }
p { position: absolute; margin: 0; padding: 2px; border: 2px solid green; }
</style>
<body>
<div class="vlr rel">
<div><span>abc def</span><p>xyzzy</p></div>
</div>

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

@ -1,14 +0,0 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<style>
body>div { margin: 50px 20px; width: 120px; height: 150px; border: 5px solid blue; }
.vlr { writing-mode: vertical-lr; }
.rel { position: relative; }
span { display: inline-block; padding: 5px; block-size: 1.5em; border: 2px solid red; }
p { position: absolute; margin: 0; padding: 2px; border: 2px solid green; }
</style>
<body>
<div class="vlr">
<div class="rel"><span>abc def</span><p>xyzzy</p></div>
</div>

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

@ -1,17 +0,0 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<style>
body>div { margin: 50px 20px; width: 100px; height: 150px; border: 5px solid blue; }
.abc { display: inline-block; border: 2px solid red; inline-size: 30px;
position: absolute; right: 0; top: 0; }
.test { writing-mode: vertical-rl; background: #aaa;
position: absolute; right: 0; top: 0; width: 2em; height: 100%; }
.rel { position: relative; }
img { position: absolute; right: 0; top: 34px;
width: 30px; height: 40px; background: green; border: 5px solid yellow; }
</style>
<body>
<div class="rel">
<div class="test"><span class="abc">abc</span><img src=""></div>
</div>

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

@ -1,15 +0,0 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<style>
body>div { margin: 50px 20px; width: 100px; height: 150px; border: 5px solid blue; }
.abc { display: inline-block; border: 2px solid red; inline-size: 30px; }
.test { background: #aaa; width: 2em; }
.vrl { writing-mode: vertical-rl; }
.rel { position: relative; }
img { position: absolute; width: 30px; height: 40px; background: green; border: 5px solid yellow; }
</style>
<body>
<div class="vrl">
<div class="test"><span class="abc">abc</span><img src=""></div>
</div>

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

@ -1,15 +0,0 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<style>
body>div { margin: 50px 20px; width: 100px; height: 150px; border: 5px solid blue; }
.abc { display: inline-block; border: 2px solid red; inline-size: 30px; }
.test { background: #aaa; width: 2em; }
.vrl { writing-mode: vertical-rl; }
.rel { position: relative; }
img { position: absolute; width: 30px; height: 40px; background: green; border: 5px solid yellow; }
</style>
<body>
<div class="vrl rel">
<div class="test"><span class="abc">abc</span><img src=""></div>
</div>

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

@ -1,15 +0,0 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<style>
body>div { margin: 50px 20px; width: 100px; height: 150px; border: 5px solid blue; }
.abc { display: inline-block; border: 2px solid red; inline-size: 30px; }
.test { background: #aaa; width: 2em; }
.vrl { writing-mode: vertical-rl; }
.rel { position: relative; }
img { position: absolute; width: 30px; height: 40px; background: green; border: 5px solid yellow; }
</style>
<body>
<div class="vrl">
<div class="test rel"><span class="abc">abc</span><img src=""></div>
</div>

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

@ -1,17 +0,0 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<style>
body>div { margin: 50px 20px; width: 100px; height: 150px; border: 5px solid blue; }
.abc { display: inline-block; border: 2px solid red; inline-size: 30px;
position: absolute; right: 0; top: 0; }
.test { writing-mode: vertical-rl; background: #aaa;
position: absolute; right: 0; top: 0; width: 2em; height: 100%; }
.rel { position: relative; }
img { position: absolute; right: 0; top: 34px;
background: green; border: 5px solid yellow; }
</style>
<body>
<div class="rel">
<div class="test"><span class="abc">abc</span><img src=""></div>
</div>

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

@ -1,15 +0,0 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<style>
body>div { margin: 50px 20px; width: 100px; height: 150px; border: 5px solid blue; }
.abc { display: inline-block; border: 2px solid red; inline-size: 30px; }
.test { background: #aaa; width: 2em; }
.vrl { writing-mode: vertical-rl; }
.rel { position: relative; }
img { position: absolute; background: green; border: 5px solid yellow; }
</style>
<body>
<div class="vrl">
<div class="test"><span class="abc">abc</span><img src=""></div>
</div>

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

@ -1,15 +0,0 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<style>
body>div { margin: 50px 20px; width: 100px; height: 150px; border: 5px solid blue; }
.abc { display: inline-block; border: 2px solid red; inline-size: 30px; }
.test { background: #aaa; width: 2em; }
.vrl { writing-mode: vertical-rl; }
.rel { position: relative; }
img { position: absolute; background: green; border: 5px solid yellow; }
</style>
<body>
<div class="vrl rel">
<div class="test"><span class="abc">abc</span><img src=""></div>
</div>

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

@ -1,15 +0,0 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<style>
body>div { margin: 50px 20px; width: 100px; height: 150px; border: 5px solid blue; }
.abc { display: inline-block; border: 2px solid red; inline-size: 30px; }
.test { background: #aaa; width: 2em; }
.vrl { writing-mode: vertical-rl; }
.rel { position: relative; }
img { position: absolute; background: green; border: 5px solid yellow; }
</style>
<body>
<div class="vrl">
<div class="test rel"><span class="abc">abc</span><img src=""></div>
</div>

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

@ -1,13 +0,0 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<style>
body>div { margin: 50px 20px; width: 120px; height: 150px; border: 5px solid blue; }
.vrl { writing-mode: vertical-rl; }
span { display: inline-block; padding: 5px; block-size: 1.5em; border: 2px solid red; }
p { margin: 0; padding: 2px; border: 2px solid green; inline-size: -moz-fit-content; }
</style>
<body>
<div class="vrl">
<div><span>abc def</span><p>xyzzy</p></div>
</div>

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

@ -1,14 +0,0 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<style>
body>div { margin: 50px 20px; width: 120px; height: 150px; border: 5px solid blue; }
.vrl { writing-mode: vertical-rl; }
.rel { position: relative; }
span { display: inline-block; padding: 5px; block-size: 1.5em; border: 2px solid red; }
p { position: absolute; margin: 0; padding: 2px; border: 2px solid green; }
</style>
<body>
<div class="vrl">
<div><span>abc def</span><p>xyzzy</p></div>
</div>

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

@ -1,14 +0,0 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<style>
body>div { margin: 50px 20px; width: 120px; height: 150px; border: 5px solid blue; }
.vrl { writing-mode: vertical-rl; }
.rel { position: relative; }
span { display: inline-block; padding: 5px; block-size: 1.5em; border: 2px solid red; }
p { position: absolute; margin: 0; padding: 2px; border: 2px solid green; }
</style>
<body>
<div class="vrl rel">
<div><span>abc def</span><p>xyzzy</p></div>
</div>

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

@ -1,14 +0,0 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<style>
body>div { margin: 50px 20px; width: 120px; height: 150px; border: 5px solid blue; }
.vrl { writing-mode: vertical-rl; }
.rel { position: relative; }
span { display: inline-block; padding: 5px; block-size: 1.5em; border: 2px solid red; }
p { position: absolute; margin: 0; padding: 2px; border: 2px solid green; }
</style>
<body>
<div class="vrl">
<div class="rel"><span>abc def</span><p>xyzzy</p></div>
</div>

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

@ -1,19 +0,0 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<style>
body>div { margin: 50px 20px; width: 400px; height: 500px; border: 5px solid blue; }
.abc { display: inline-block; border: 2px solid red; inline-size: 30px;
writing-mode: vertical-lr; position: absolute; left: 0; top: 0; }
.test { background: #aaa; position: absolute; left: 0; top: 0; width: 2em; height: 100%; }
.rel { position: relative; }
iframe {
position: absolute; left: 0; top: 34px;
background: yellow; border: 5px solid green;
width: 150px; height: 300px; /* XXX Bug 1191855 - this is probably wrong, pending CSSWG clarification */
}
</style>
<body>
<div class="rel">
<div class="test"><span class="abc">abc</span><iframe src="data:text/html,hello"></iframe></div>
</div>

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

@ -1,15 +0,0 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<style>
body>div { margin: 50px 20px; width: 400px; height: 500px; border: 5px solid blue; }
.abc { display: inline-block; border: 2px solid red; inline-size: 30px; }
.test { background: #aaa; width: 2em; }
.vlr { writing-mode: vertical-lr; }
.rel { position: relative; }
iframe { position: absolute; background: yellow; border: 5px solid green; }
</style>
<body>
<div class="vlr">
<div class="test"><span class="abc">abc</span><iframe src="data:text/html,hello"></iframe></div>
</div>

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

@ -1,15 +0,0 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<style>
body>div { margin: 50px 20px; width: 400px; height: 500px; border: 5px solid blue; }
.abc { display: inline-block; border: 2px solid red; inline-size: 30px; }
.test { background: #aaa; width: 2em; }
.vlr { writing-mode: vertical-lr; }
.rel { position: relative; }
iframe { position: absolute; background: yellow; border: 5px solid green; }
</style>
<body>
<div class="vlr rel">
<div class="test"><span class="abc">abc</span><iframe src="data:text/html,hello"></iframe></div>
</div>

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

@ -1,15 +0,0 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<style>
body>div { margin: 50px 20px; width: 400px; height: 500px; border: 5px solid blue; }
.abc { display: inline-block; border: 2px solid red; inline-size: 30px; }
.test { background: #aaa; width: 2em; }
.vlr { writing-mode: vertical-lr; }
.rel { position: relative; }
iframe { position: absolute; background: yellow; border: 5px solid green; }
</style>
<body>
<div class="vlr">
<div class="test rel"><span class="abc">abc</span><iframe src="data:text/html,hello"></iframe></div>
</div>

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

@ -1,19 +0,0 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<style>
body>div { margin: 50px 20px; width: 400px; height: 500px; border: 5px solid blue; }
.abc { display: inline-block; border: 2px solid red; inline-size: 30px;
writing-mode: vertical-rl; position: absolute; right: 0; top: 0; }
.test { background: #aaa; position: absolute; right: 0; top: 0; width: 2em; height: 100%; }
.rel { position: relative; }
iframe {
position: absolute; right: 0; top: 34px;
background: yellow; border: 5px solid green;
width: 150px; height: 300px; /* XXX Bug 1191855 - this is probably wrong, pending CSSWG clarification */
}
</style>
<body>
<div class="rel">
<div class="test"><span class="abc">abc</span><iframe src="data:text/html,hello"></iframe></div>
</div>

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

@ -1,15 +0,0 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<style>
body>div { margin: 50px 20px; width: 400px; height: 500px; border: 5px solid blue; }
.abc { display: inline-block; border: 2px solid red; inline-size: 30px; }
.test { background: #aaa; width: 2em; }
.vrl { writing-mode: vertical-rl; }
.rel { position: relative; }
iframe { position: absolute; background: yellow; border: 5px solid green; }
</style>
<body>
<div class="vrl">
<div class="test"><span class="abc">abc</span><iframe src="data:text/html,hello"></iframe></div>
</div>

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

@ -1,15 +0,0 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<style>
body>div { margin: 50px 20px; width: 400px; height: 500px; border: 5px solid blue; }
.abc { display: inline-block; border: 2px solid red; inline-size: 30px; }
.test { background: #aaa; width: 2em; }
.vrl { writing-mode: vertical-rl; }
.rel { position: relative; }
iframe { position: absolute; background: yellow; border: 5px solid green; }
</style>
<body>
<div class="vrl rel">
<div class="test"><span class="abc">abc</span><iframe src="data:text/html,hello"></iframe></div>
</div>

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

@ -1,15 +0,0 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<style>
body>div { margin: 50px 20px; width: 400px; height: 500px; border: 5px solid blue; }
.abc { display: inline-block; border: 2px solid red; inline-size: 30px; }
.test { background: #aaa; width: 2em; }
.vrl { writing-mode: vertical-rl; }
.rel { position: relative; }
iframe { position: absolute; background: yellow; border: 5px solid green; }
</style>
<body>
<div class="vrl">
<div class="test rel"><span class="abc">abc</span><iframe src="data:text/html,hello"></iframe></div>
</div>

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

@ -99,28 +99,3 @@ fuzzy-if(cocoaWidget,15,5) fuzzy-if(d2d,102,164) == s71-abs-pos-non-replaced-vrl
fuzzy-if(cocoaWidget,15,5) fuzzy-if(d2d,102,164) == s71-abs-pos-non-replaced-vrl-092.xht s71-abs-pos-non-replaced-vrl-092-ref.xht
fuzzy-if(cocoaWidget,15,5) fuzzy-if(d2d,102,164) == s71-abs-pos-non-replaced-vrl-094.xht s71-abs-pos-non-replaced-vrl-094-ref.xht
fuzzy-if(cocoaWidget,15,5) fuzzy-if(d2d,102,164) == s71-abs-pos-non-replaced-vrl-096.xht s71-abs-pos-non-replaced-vrl-096-ref.xht
== 1183431-orthogonal-modes-1a.html 1183431-orthogonal-modes-1-ref.html
== 1183431-orthogonal-modes-1b.html 1183431-orthogonal-modes-1-ref.html
== 1183431-orthogonal-modes-1c.html 1183431-orthogonal-modes-1-ref.html
== 1183431-orthogonal-modes-2a.html 1183431-orthogonal-modes-2-ref.html
== 1183431-orthogonal-modes-2b.html 1183431-orthogonal-modes-2-ref.html
== 1183431-orthogonal-modes-2c.html 1183431-orthogonal-modes-2-ref.html
== 1183431-orthogonal-modes-3a.html 1183431-orthogonal-modes-3-ref.html
== 1183431-orthogonal-modes-3b.html 1183431-orthogonal-modes-3-ref.html
== 1183431-orthogonal-modes-3c.html 1183431-orthogonal-modes-3-ref.html
== 1183431-orthogonal-modes-4a.html 1183431-orthogonal-modes-4-ref.html
== 1183431-orthogonal-modes-4b.html 1183431-orthogonal-modes-4-ref.html
== 1183431-orthogonal-modes-4c.html 1183431-orthogonal-modes-4-ref.html
== 1183431-orthogonal-modes-5a.html 1183431-orthogonal-modes-5-ref.html
== 1183431-orthogonal-modes-5b.html 1183431-orthogonal-modes-5-ref.html
== 1183431-orthogonal-modes-5c.html 1183431-orthogonal-modes-5-ref.html
fails == 1183431-orthogonal-modes-6a.html 1183431-orthogonal-modes-6-ref.html # bug 1191801
== 1183431-orthogonal-modes-6b.html 1183431-orthogonal-modes-6-ref.html
== 1183431-orthogonal-modes-6c.html 1183431-orthogonal-modes-6-ref.html
== 1183431-orthogonal-modes-7a.html 1183431-orthogonal-modes-7-ref.html
== 1183431-orthogonal-modes-7b.html 1183431-orthogonal-modes-7-ref.html
== 1183431-orthogonal-modes-7c.html 1183431-orthogonal-modes-7-ref.html
fails == 1183431-orthogonal-modes-8a.html 1183431-orthogonal-modes-8-ref.html # bug 1191801
== 1183431-orthogonal-modes-8b.html 1183431-orthogonal-modes-8-ref.html
== 1183431-orthogonal-modes-8c.html 1183431-orthogonal-modes-8-ref.html