Bug 831780. Only count the broken-image placeholder in the visual overflow, not the scrollable overflow. r=mattwoodrow

This commit is contained in:
Boris Zbarsky 2013-01-17 23:17:41 -05:00
parent c1d2c6fa55
commit 290dde2392
3 changed files with 39 additions and 1 deletions

View File

@ -905,7 +905,12 @@ nsImageFrame::Reflow(nsPresContext* aPresContext,
nsRect altFeedbackSize(0, 0,
nsPresContext::CSSPixelsToAppUnits(ICON_SIZE+2*(ICON_PADDING+ALT_BORDER_WIDTH)),
nsPresContext::CSSPixelsToAppUnits(ICON_SIZE+2*(ICON_PADDING+ALT_BORDER_WIDTH)));
aMetrics.mOverflowAreas.UnionAllWith(altFeedbackSize);
// We include the altFeedbackSize in our visual overflow, but not in our
// scrollable overflow, since it doesn't really need to be scrolled to
// outside the image.
MOZ_STATIC_ASSERT(eOverflowType_LENGTH == 2, "Unknown overflow types?");
nsRect& visualOverflow = aMetrics.VisualOverflow();
visualOverflow.UnionRect(visualOverflow, altFeedbackSize);
}
FinishAndStoreOverflow(&aMetrics);

View File

@ -104,6 +104,7 @@ MOCHITEST_FILES = \
test_bug784410.html \
test_bug785324.html \
test_bug791616.html \
test_bug831780.html \
$(NULL)
MOCHITEST_CHROME_FILES = \

View File

@ -0,0 +1,32 @@
<!-- Important: needs to be in quirks mode for the test to be meaningful -->
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=831780
-->
<head>
<meta charset="utf-8">
<title>Test for Bug 831780</title>
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
</head>
<body>
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=831780">Mozilla Bug 831780</a>
<p id="display" style="width: 1px; height: 1px; overflow: hidden">
<!-- No src so it'll be a broken image, but that only happens in quirks
mode. In standards mode the test would end up timing-dependent -->
<img style="width: 1px; height: 1px">
</p>
<div id="content" style="display: none">
</div>
<pre id="test">
</pre>
<script type="application/javascript">
/** Test for Bug 831780 **/
is($("display").scrollWidth, 1, "scrollWidth should be 1");
is($("display").scrollHeight, 1, "scrollHeight should be 1");
</script>
</body>
</html>