Bug 475193. Only SVG frames should have marker properties. r+sr=roc

--HG--
extra : rebase_source : 51d78172315ec66bf8f5be9bb4afd00ec086b12f
This commit is contained in:
Robert Longson 2009-01-30 20:13:36 +13:00
Родитель b9cce93cc2
Коммит cb69cd98ec
3 изменённых файлов: 32 добавлений и 8 удалений

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

@ -368,14 +368,16 @@ nsSVGEffects::UpdateEffects(nsIFrame *aFrame)
GetEffectProperty(aFrame->GetStyleSVGReset()->mFilter,
aFrame, nsGkAtoms::filter, CreateFilterProperty);
// Set marker properties here to avoid reference loops
const nsStyleSVG *style = aFrame->GetStyleSVG();
GetEffectProperty(style->mMarkerStart, aFrame, nsGkAtoms::marker_start,
CreateMarkerProperty);
GetEffectProperty(style->mMarkerMid, aFrame, nsGkAtoms::marker_mid,
CreateMarkerProperty);
GetEffectProperty(style->mMarkerEnd, aFrame, nsGkAtoms::marker_end,
CreateMarkerProperty);
if (aFrame->IsFrameOfType(nsIFrame::eSVG)) {
// Set marker properties here to avoid reference loops
const nsStyleSVG *style = aFrame->GetStyleSVG();
GetEffectProperty(style->mMarkerStart, aFrame, nsGkAtoms::marker_start,
CreateMarkerProperty);
GetEffectProperty(style->mMarkerMid, aFrame, nsGkAtoms::marker_mid,
CreateMarkerProperty);
GetEffectProperty(style->mMarkerEnd, aFrame, nsGkAtoms::marker_end,
CreateMarkerProperty);
}
}
nsSVGFilterProperty *

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

@ -0,0 +1,21 @@
<!DOCTYPE HTML>
<html><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<style type="text/css">
.p { marker: url('#c'); }
</style>
<script type="text/javascript">
function boom()
{
document.getElementById("a").setAttribute("class", "p");
document.documentElement.offsetHeight;
document.getElementById("b").setAttribute("id", "c");
}
</script>
</head><body onload="boom();"><div class="p" id="a">C</div><div id="c"></div></body></html>

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

@ -61,4 +61,5 @@ load 464374-1.svg
load 466585-1.svg
load 470124-1.svg
load 475181-1.svg
load 475193-1.html
load extref-test-1.xhtml