mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-26 14:22:01 +00:00
Bug 874919 - Added a check to DoGetWidth/Height so the width/height properties of getComputedStyle now return correct values on inline SVG elements. r=bz
This commit is contained in:
parent
eb15cf3a79
commit
bba057ef66
@ -3729,7 +3729,10 @@ nsComputedDOMStyle::DoGetHeight()
|
||||
|
||||
const nsStyleDisplay* displayData = StyleDisplay();
|
||||
if (displayData->mDisplay == NS_STYLE_DISPLAY_INLINE &&
|
||||
!(mInnerFrame->IsFrameOfType(nsIFrame::eReplaced))) {
|
||||
!(mInnerFrame->IsFrameOfType(nsIFrame::eReplaced)) &&
|
||||
// An outer SVG frame should behave the same as eReplaced in this case
|
||||
mInnerFrame->GetType() != nsGkAtoms::svgOuterSVGFrame) {
|
||||
|
||||
calcHeight = false;
|
||||
}
|
||||
}
|
||||
@ -3770,7 +3773,10 @@ nsComputedDOMStyle::DoGetWidth()
|
||||
|
||||
const nsStyleDisplay *displayData = StyleDisplay();
|
||||
if (displayData->mDisplay == NS_STYLE_DISPLAY_INLINE &&
|
||||
!(mInnerFrame->IsFrameOfType(nsIFrame::eReplaced))) {
|
||||
!(mInnerFrame->IsFrameOfType(nsIFrame::eReplaced)) &&
|
||||
// An outer SVG frame should behave the same as eReplaced in this case
|
||||
mInnerFrame->GetType() != nsGkAtoms::svgOuterSVGFrame) {
|
||||
|
||||
calcWidth = false;
|
||||
}
|
||||
}
|
||||
|
@ -89,6 +89,7 @@ support-files = file_bug645998-1.css file_bug645998-2.css
|
||||
[test_bug798567.html]
|
||||
[test_bug798843_pref.html]
|
||||
[test_bug829816.html]
|
||||
[test_bug874919.html]
|
||||
support-files = file_bug829816.css
|
||||
[test_bug887741_at-rules_in_declaration_lists.html]
|
||||
[test_bug892929.html]
|
||||
|
55
layout/style/test/test_bug874919.html
Normal file
55
layout/style/test/test_bug874919.html
Normal file
@ -0,0 +1,55 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<!--
|
||||
https://bugzilla.mozilla.org/show_bug.cgi?id=874919
|
||||
-->
|
||||
<head>
|
||||
<title>Test for Bug 874919</title>
|
||||
<script type="text/javascript" src="/MochiKit/MochiKit.js"></script>
|
||||
<script type="text/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=874919">Mozilla Bug 874919</a>
|
||||
<p id="display"></p>
|
||||
<div id="content" style="width: 150px">
|
||||
<svg id="outer_SVG" style="display: inline; width: 100%">
|
||||
<circle cx="120" cy="120" r="120" fill="blue"></circle>
|
||||
<svg id="inner_SVG">
|
||||
<circle id="circle" cx="120" cy="120" r="120" fill="red"></circle>
|
||||
</svg>
|
||||
</svg>
|
||||
</div>
|
||||
<pre id="test">
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
var shouldUseComputed = ["inner_SVG"]
|
||||
var shouldUseUsed = ["outer_SVG"]
|
||||
|
||||
shouldUseUsed.forEach(function(elemId) {
|
||||
|
||||
var style = window.getComputedStyle(document.getElementById(elemId));
|
||||
|
||||
ok(style.width.match(/^\d+px$/),
|
||||
"Inline Outer SVG element's getComputedStyle.width should be used value. ");
|
||||
|
||||
ok(style.height.match(/^\d+px$/),
|
||||
"Inline Outer SVG element's getComputedStyle.height should be used value.");
|
||||
});
|
||||
|
||||
shouldUseComputed.forEach(function(elemId) {
|
||||
var style = window.getComputedStyle(document.getElementById(elemId));
|
||||
|
||||
// Computed value should match either the percentage used, or "auto" in the case of the inner SVG element.
|
||||
ok(style.width.match(/^\d+%$|^auto$/),
|
||||
"Inline inner SVG element's getComputedStyle.width should be computed value. " + style.width);
|
||||
|
||||
ok(style.height.match(/^\d+%$|^auto$/),
|
||||
"Inline inner SVG element's getComputedStyle.height should be computed value. " + style.height);
|
||||
});
|
||||
|
||||
</script>
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in New Issue
Block a user