mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-28 07:13:20 +00:00
Bug 1537708 - Clean up NS_STATE_IS_OUTER_SVG flag in favor of IsSVGOuterSVGFrame r=longsonr
NS_STATE_IS_OUTER_SVG is redundant, we clean it up and use nsIFrame::IsSVGOuterSVGFrame() instead. Differential Revision: https://phabricator.services.mozilla.com/D24330 --HG-- extra : moz-landing-system : lando
This commit is contained in:
parent
90e63da7c3
commit
0a0bd52597
@ -1038,7 +1038,7 @@ static void DoApplyRenderingChangeToTree(nsIFrame* aFrame,
|
|||||||
aFrame->InvalidateFrameSubtree();
|
aFrame->InvalidateFrameSubtree();
|
||||||
if ((aChange & nsChangeHint_UpdateEffects) &&
|
if ((aChange & nsChangeHint_UpdateEffects) &&
|
||||||
aFrame->IsFrameOfType(nsIFrame::eSVG) &&
|
aFrame->IsFrameOfType(nsIFrame::eSVG) &&
|
||||||
!(aFrame->GetStateBits() & NS_STATE_IS_OUTER_SVG)) {
|
!aFrame->IsSVGOuterSVGFrame()) {
|
||||||
// Need to update our overflow rects:
|
// Need to update our overflow rects:
|
||||||
nsSVGUtils::ScheduleReflowSVG(aFrame);
|
nsSVGUtils::ScheduleReflowSVG(aFrame);
|
||||||
}
|
}
|
||||||
@ -1666,7 +1666,7 @@ void RestyleManager::ProcessRestyledFrames(nsStyleChangeList& aChangeList) {
|
|||||||
if ((hint & nsChangeHint_InvalidateRenderingObservers) ||
|
if ((hint & nsChangeHint_InvalidateRenderingObservers) ||
|
||||||
((hint & nsChangeHint_UpdateOpacityLayer) &&
|
((hint & nsChangeHint_UpdateOpacityLayer) &&
|
||||||
frame->IsFrameOfType(nsIFrame::eSVG) &&
|
frame->IsFrameOfType(nsIFrame::eSVG) &&
|
||||||
!(frame->GetStateBits() & NS_STATE_IS_OUTER_SVG))) {
|
!frame->IsSVGOuterSVGFrame())) {
|
||||||
SVGObserverUtils::InvalidateRenderingObservers(frame);
|
SVGObserverUtils::InvalidateRenderingObservers(frame);
|
||||||
frame->SchedulePaint();
|
frame->SchedulePaint();
|
||||||
}
|
}
|
||||||
|
@ -393,10 +393,8 @@ FRAME_STATE_GROUP_NAME(SVG)
|
|||||||
FRAME_STATE_GROUP_CLASS(SVG, nsSVGDisplayableFrame)
|
FRAME_STATE_GROUP_CLASS(SVG, nsSVGDisplayableFrame)
|
||||||
FRAME_STATE_GROUP_CLASS(SVG, nsSVGContainerFrame)
|
FRAME_STATE_GROUP_CLASS(SVG, nsSVGContainerFrame)
|
||||||
|
|
||||||
FRAME_STATE_BIT(SVG, 20, NS_STATE_IS_OUTER_SVG)
|
|
||||||
|
|
||||||
// If this bit is set, we are a <clipPath> element or descendant.
|
// If this bit is set, we are a <clipPath> element or descendant.
|
||||||
FRAME_STATE_BIT(SVG, 21, NS_STATE_SVG_CLIPPATH_CHILD)
|
FRAME_STATE_BIT(SVG, 20, NS_STATE_SVG_CLIPPATH_CHILD)
|
||||||
|
|
||||||
// For SVG text, the NS_FRAME_IS_DIRTY and NS_FRAME_HAS_DIRTY_CHILDREN bits
|
// For SVG text, the NS_FRAME_IS_DIRTY and NS_FRAME_HAS_DIRTY_CHILDREN bits
|
||||||
// indicate that our anonymous block child needs to be reflowed, and that
|
// indicate that our anonymous block child needs to be reflowed, and that
|
||||||
@ -406,7 +404,7 @@ FRAME_STATE_BIT(SVG, 21, NS_STATE_SVG_CLIPPATH_CHILD)
|
|||||||
// mPositioningDirty is used to indicate this latter "things are dirty" case
|
// mPositioningDirty is used to indicate this latter "things are dirty" case
|
||||||
// to allow us to avoid reflowing the anonymous block when it is not
|
// to allow us to avoid reflowing the anonymous block when it is not
|
||||||
// necessary.
|
// necessary.
|
||||||
FRAME_STATE_BIT(SVG, 22, NS_STATE_SVG_POSITIONING_DIRTY)
|
FRAME_STATE_BIT(SVG, 21, NS_STATE_SVG_POSITIONING_DIRTY)
|
||||||
|
|
||||||
// For text, whether the values from x/y/dx/dy attributes have any percentage
|
// For text, whether the values from x/y/dx/dy attributes have any percentage
|
||||||
// values that are used in determining the positions of glyphs. The value will
|
// values that are used in determining the positions of glyphs. The value will
|
||||||
@ -429,14 +427,14 @@ FRAME_STATE_BIT(SVG, 22, NS_STATE_SVG_POSITIONING_DIRTY)
|
|||||||
// determining a completley accurate value for
|
// determining a completley accurate value for
|
||||||
// NS_STATE_SVG_POSITIONING_MAY_USE_PERCENTAGES would require extra work that is
|
// NS_STATE_SVG_POSITIONING_MAY_USE_PERCENTAGES would require extra work that is
|
||||||
// probably not worth it.
|
// probably not worth it.
|
||||||
FRAME_STATE_BIT(SVG, 23, NS_STATE_SVG_POSITIONING_MAY_USE_PERCENTAGES)
|
FRAME_STATE_BIT(SVG, 22, NS_STATE_SVG_POSITIONING_MAY_USE_PERCENTAGES)
|
||||||
|
|
||||||
FRAME_STATE_BIT(SVG, 24, NS_STATE_SVG_TEXT_IN_REFLOW)
|
FRAME_STATE_BIT(SVG, 23, NS_STATE_SVG_TEXT_IN_REFLOW)
|
||||||
|
|
||||||
// Set on SVGTextFrame frames when they need a
|
// Set on SVGTextFrame frames when they need a
|
||||||
// TextNodeCorrespondenceRecorder::RecordCorrespondence call
|
// TextNodeCorrespondenceRecorder::RecordCorrespondence call
|
||||||
// to update the cached nsTextNode indexes that they correspond to.
|
// to update the cached nsTextNode indexes that they correspond to.
|
||||||
FRAME_STATE_BIT(SVG, 25, NS_STATE_SVG_TEXT_CORRESPONDENCE_DIRTY)
|
FRAME_STATE_BIT(SVG, 24, NS_STATE_SVG_TEXT_CORRESPONDENCE_DIRTY)
|
||||||
|
|
||||||
// == Frame state bits that apply to text frames ==============================
|
// == Frame state bits that apply to text frames ==============================
|
||||||
|
|
||||||
|
@ -4015,12 +4015,8 @@ class nsIFrame : public nsQueryFrame {
|
|||||||
* areas, because they're never painted.)
|
* areas, because they're never painted.)
|
||||||
*/
|
*/
|
||||||
bool FrameMaintainsOverflow() const {
|
bool FrameMaintainsOverflow() const {
|
||||||
// The IsSVGElement() check below is necessary, because the
|
|
||||||
// NS_STATE_IS_OUTER_SVG bit has conflict in other frames due to lack
|
|
||||||
// of bits.
|
|
||||||
return !HasAllStateBits(NS_FRAME_SVG_LAYOUT | NS_FRAME_IS_NONDISPLAY) &&
|
return !HasAllStateBits(NS_FRAME_SVG_LAYOUT | NS_FRAME_IS_NONDISPLAY) &&
|
||||||
!(HasAllStateBits(NS_STATE_IS_OUTER_SVG | NS_FRAME_IS_NONDISPLAY) &&
|
!(IsSVGOuterSVGFrame() && HasAnyStateBits(NS_FRAME_IS_NONDISPLAY));
|
||||||
GetContent()->IsSVGElement(nsGkAtoms::svg));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -101,9 +101,8 @@ static void ScheduleReflow(nsIPresShell* aShell, nsIFrame* aFrame) {
|
|||||||
// FrameNeedsReflow again, then.
|
// FrameNeedsReflow again, then.
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (f->GetStateBits() & NS_STATE_IS_OUTER_SVG ||
|
if (f->IsSVGOuterSVGFrame() || !(f->IsFrameOfType(nsIFrame::eSVG) ||
|
||||||
!(f->IsFrameOfType(nsIFrame::eSVG) ||
|
nsSVGUtils::IsInSVGTextSubtree(f))) {
|
||||||
nsSVGUtils::IsInSVGTextSubtree(f))) {
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
f->AddStateBits(NS_FRAME_HAS_DIRTY_CHILDREN);
|
f->AddStateBits(NS_FRAME_HAS_DIRTY_CHILDREN);
|
||||||
|
@ -3051,8 +3051,7 @@ void SVGTextFrame::ScheduleReflowSVGNonDisplayText(
|
|||||||
// reflowed soon anyway. No need to call FrameNeedsReflow again, then.
|
// reflowed soon anyway. No need to call FrameNeedsReflow again, then.
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!f->IsFrameOfType(eSVG) ||
|
if (!f->IsFrameOfType(eSVG) || f->IsSVGOuterSVGFrame()) {
|
||||||
(f->GetStateBits() & NS_STATE_IS_OUTER_SVG)) {
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
f->AddStateBits(NS_FRAME_HAS_DIRTY_CHILDREN);
|
f->AddStateBits(NS_FRAME_HAS_DIRTY_CHILDREN);
|
||||||
|
@ -123,7 +123,7 @@ void nsSVGContainerFrame::ReflowSVGNonDisplayText(nsIFrame* aContainer) {
|
|||||||
void nsSVGDisplayContainerFrame::Init(nsIContent* aContent,
|
void nsSVGDisplayContainerFrame::Init(nsIContent* aContent,
|
||||||
nsContainerFrame* aParent,
|
nsContainerFrame* aParent,
|
||||||
nsIFrame* aPrevInFlow) {
|
nsIFrame* aPrevInFlow) {
|
||||||
if (!(GetStateBits() & NS_STATE_IS_OUTER_SVG)) {
|
if (!IsSVGOuterSVGFrame()) {
|
||||||
AddStateBits(aParent->GetStateBits() & NS_STATE_SVG_CLIPPATH_CHILD);
|
AddStateBits(aParent->GetStateBits() & NS_STATE_SVG_CLIPPATH_CHILD);
|
||||||
}
|
}
|
||||||
nsSVGContainerFrame::Init(aContent, aParent, aPrevInFlow);
|
nsSVGContainerFrame::Init(aContent, aParent, aPrevInFlow);
|
||||||
|
@ -93,7 +93,7 @@ void nsSVGOuterSVGFrame::Init(nsIContent* aContent, nsContainerFrame* aParent,
|
|||||||
NS_ASSERTION(aContent->IsSVGElement(nsGkAtoms::svg),
|
NS_ASSERTION(aContent->IsSVGElement(nsGkAtoms::svg),
|
||||||
"Content is not an SVG 'svg' element!");
|
"Content is not an SVG 'svg' element!");
|
||||||
|
|
||||||
AddStateBits(NS_STATE_IS_OUTER_SVG | NS_FRAME_FONT_INFLATION_CONTAINER |
|
AddStateBits(NS_FRAME_FONT_INFLATION_CONTAINER |
|
||||||
NS_FRAME_FONT_INFLATION_FLOW_ROOT);
|
NS_FRAME_FONT_INFLATION_FLOW_ROOT);
|
||||||
|
|
||||||
// Check for conditional processing attributes here rather than in
|
// Check for conditional processing attributes here rather than in
|
||||||
|
@ -189,13 +189,13 @@ void nsSVGUtils::ScheduleReflowSVG(nsIFrame* aFrame) {
|
|||||||
|
|
||||||
// We must not add dirty bits to the nsSVGOuterSVGFrame or else
|
// We must not add dirty bits to the nsSVGOuterSVGFrame or else
|
||||||
// PresShell::FrameNeedsReflow won't work when we pass it in below.
|
// PresShell::FrameNeedsReflow won't work when we pass it in below.
|
||||||
if (aFrame->GetStateBits() & NS_STATE_IS_OUTER_SVG) {
|
if (aFrame->IsSVGOuterSVGFrame()) {
|
||||||
outerSVGFrame = static_cast<nsSVGOuterSVGFrame*>(aFrame);
|
outerSVGFrame = static_cast<nsSVGOuterSVGFrame*>(aFrame);
|
||||||
} else {
|
} else {
|
||||||
aFrame->AddStateBits(NS_FRAME_IS_DIRTY);
|
aFrame->AddStateBits(NS_FRAME_IS_DIRTY);
|
||||||
|
|
||||||
nsIFrame* f = aFrame->GetParent();
|
nsIFrame* f = aFrame->GetParent();
|
||||||
while (f && !(f->GetStateBits() & NS_STATE_IS_OUTER_SVG)) {
|
while (f && !f->IsSVGOuterSVGFrame()) {
|
||||||
if (f->GetStateBits() &
|
if (f->GetStateBits() &
|
||||||
(NS_FRAME_IS_DIRTY | NS_FRAME_HAS_DIRTY_CHILDREN)) {
|
(NS_FRAME_IS_DIRTY | NS_FRAME_HAS_DIRTY_CHILDREN)) {
|
||||||
return;
|
return;
|
||||||
@ -203,7 +203,7 @@ void nsSVGUtils::ScheduleReflowSVG(nsIFrame* aFrame) {
|
|||||||
f->AddStateBits(NS_FRAME_HAS_DIRTY_CHILDREN);
|
f->AddStateBits(NS_FRAME_HAS_DIRTY_CHILDREN);
|
||||||
f = f->GetParent();
|
f = f->GetParent();
|
||||||
MOZ_ASSERT(f->IsFrameOfType(nsIFrame::eSVG),
|
MOZ_ASSERT(f->IsFrameOfType(nsIFrame::eSVG),
|
||||||
"NS_STATE_IS_OUTER_SVG check above not valid!");
|
"IsSVGOuterSVGFrame check above not valid!");
|
||||||
}
|
}
|
||||||
|
|
||||||
outerSVGFrame = static_cast<nsSVGOuterSVGFrame*>(f);
|
outerSVGFrame = static_cast<nsSVGOuterSVGFrame*>(f);
|
||||||
@ -295,7 +295,7 @@ float nsSVGUtils::UserSpace(const UserSpaceMetrics& aMetrics,
|
|||||||
|
|
||||||
nsSVGOuterSVGFrame* nsSVGUtils::GetOuterSVGFrame(nsIFrame* aFrame) {
|
nsSVGOuterSVGFrame* nsSVGUtils::GetOuterSVGFrame(nsIFrame* aFrame) {
|
||||||
while (aFrame) {
|
while (aFrame) {
|
||||||
if (aFrame->GetStateBits() & NS_STATE_IS_OUTER_SVG) {
|
if (aFrame->IsSVGOuterSVGFrame()) {
|
||||||
return static_cast<nsSVGOuterSVGFrame*>(aFrame);
|
return static_cast<nsSVGOuterSVGFrame*>(aFrame);
|
||||||
}
|
}
|
||||||
aFrame = aFrame->GetParent();
|
aFrame = aFrame->GetParent();
|
||||||
|
Loading…
Reference in New Issue
Block a user