Bug 1290335: Make ProcessRestyledFrames non static, and tidy up a bit. r=heycam

MozReview-Commit-ID: 4aALVtI5DXT
This commit is contained in:
Emilio Cobos Álvarez 2016-08-02 15:47:19 -07:00
Родитель abbea0a9d6
Коммит 5d8a772fcd
5 изменённых файлов: 20 добавлений и 38 удалений

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

@ -136,17 +136,6 @@ private:
public: public:
// Note: It's the caller's responsibility to make sure to wrap a
// ProcessRestyledFrames call in a view update batch and a script blocker.
// This function does not call ProcessAttachedQueue() on the binding manager.
// If the caller wants that to happen synchronously, it needs to handle that
// itself.
nsresult ProcessRestyledFrames(nsStyleChangeList& aChangeList) {
return base_type::ProcessRestyledFrames(aChangeList,
*PresContext(),
mOverflowChangedTracker);
}
/** /**
* In order to start CSS transitions on elements that are being * In order to start CSS transitions on elements that are being
* reframed, we need to stash their style contexts somewhere during * reframed, we need to stash their style contexts somewhere during

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

@ -755,7 +755,7 @@ DoApplyRenderingChangeToTree(nsIFrame* aFrame,
} }
} }
/* static */ void static void
SyncViewsAndInvalidateDescendants(nsIFrame* aFrame, nsChangeHint aChange) SyncViewsAndInvalidateDescendants(nsIFrame* aFrame, nsChangeHint aChange)
{ {
NS_PRECONDITION(gInApplyRenderingChangeToTree, NS_PRECONDITION(gInApplyRenderingChangeToTree,
@ -795,7 +795,7 @@ SyncViewsAndInvalidateDescendants(nsIFrame* aFrame, nsChangeHint aChange)
} }
} }
void static void
ApplyRenderingChangeToTree(nsIPresShell* aPresShell, ApplyRenderingChangeToTree(nsIPresShell* aPresShell,
nsIFrame* aFrame, nsIFrame* aFrame,
nsChangeHint aChange) nsChangeHint aChange)
@ -955,10 +955,8 @@ RestyleManagerBase::GetNextContinuationWithSameStyle(
return nextContinuation; return nextContinuation;
} }
/* static */ nsresult nsresult
RestyleManagerBase::ProcessRestyledFrames( RestyleManagerBase::ProcessRestyledFrames(nsStyleChangeList& aChangeList)
nsStyleChangeList& aChangeList, nsPresContext& aPresContext,
OverflowChangedTracker& aOverflowChangedTracker)
{ {
NS_ASSERTION(!nsContentUtils::IsSafeToRunScript(), NS_ASSERTION(!nsContentUtils::IsSafeToRunScript(),
"Someone forgot a script blocker"); "Someone forgot a script blocker");
@ -969,8 +967,9 @@ RestyleManagerBase::ProcessRestyledFrames(
PROFILER_LABEL("RestyleManager", "ProcessRestyledFrames", PROFILER_LABEL("RestyleManager", "ProcessRestyledFrames",
js::ProfileEntry::Category::CSS); js::ProfileEntry::Category::CSS);
FramePropertyTable* propTable = aPresContext.PropertyTable(); nsPresContext* presContext = PresContext();
nsCSSFrameConstructor* frameConstructor = aPresContext.FrameConstructor(); FramePropertyTable* propTable = presContext->PropertyTable();
nsCSSFrameConstructor* frameConstructor = presContext->FrameConstructor();
// Make sure to not rebuild quote or counter lists while we're // Make sure to not rebuild quote or counter lists while we're
// processing restyles // processing restyles
@ -1132,7 +1131,7 @@ RestyleManagerBase::ProcessRestyledFrames(
if (hint & (nsChangeHint_RepaintFrame | nsChangeHint_SyncFrameView | if (hint & (nsChangeHint_RepaintFrame | nsChangeHint_SyncFrameView |
nsChangeHint_UpdateOpacityLayer | nsChangeHint_UpdateTransformLayer | nsChangeHint_UpdateOpacityLayer | nsChangeHint_UpdateTransformLayer |
nsChangeHint_ChildrenOnlyTransform | nsChangeHint_SchedulePaint)) { nsChangeHint_ChildrenOnlyTransform | nsChangeHint_SchedulePaint)) {
ApplyRenderingChangeToTree(aPresContext.PresShell(), frame, hint); ApplyRenderingChangeToTree(presContext->PresShell(), frame, hint);
} }
if ((hint & nsChangeHint_RecomputePosition) && !didReflowThisFrame) { if ((hint & nsChangeHint_RecomputePosition) && !didReflowThisFrame) {
ActiveLayerTracker::NotifyOffsetRestyle(frame); ActiveLayerTracker::NotifyOffsetRestyle(frame);
@ -1152,7 +1151,7 @@ RestyleManagerBase::ProcessRestyledFrames(
if (hint & nsChangeHint_UpdateSubtreeOverflow) { if (hint & nsChangeHint_UpdateSubtreeOverflow) {
for (nsIFrame* cont = frame; cont; cont = for (nsIFrame* cont = frame; cont; cont =
nsLayoutUtils::GetNextContinuationOrIBSplitSibling(cont)) { nsLayoutUtils::GetNextContinuationOrIBSplitSibling(cont)) {
AddSubtreeToOverflowTracker(cont, aOverflowChangedTracker); AddSubtreeToOverflowTracker(cont, mOverflowChangedTracker);
} }
// The work we just did in AddSubtreeToOverflowTracker // The work we just did in AddSubtreeToOverflowTracker
// subsumes some of the other hints: // subsumes some of the other hints:
@ -1176,7 +1175,7 @@ RestyleManagerBase::ProcessRestyledFrames(
// updating overflows since that will happen when it's reflowed. // updating overflows since that will happen when it's reflowed.
if (!(childFrame->GetStateBits() & if (!(childFrame->GetStateBits() &
(NS_FRAME_IS_DIRTY | NS_FRAME_HAS_DIRTY_CHILDREN))) { (NS_FRAME_IS_DIRTY | NS_FRAME_HAS_DIRTY_CHILDREN))) {
aOverflowChangedTracker.AddFrame(childFrame, mOverflowChangedTracker.AddFrame(childFrame,
OverflowChangedTracker::CHILDREN_CHANGED); OverflowChangedTracker::CHILDREN_CHANGED);
} }
NS_ASSERTION(!nsLayoutUtils::GetNextContinuationOrIBSplitSibling(childFrame), NS_ASSERTION(!nsLayoutUtils::GetNextContinuationOrIBSplitSibling(childFrame),
@ -1204,7 +1203,7 @@ RestyleManagerBase::ProcessRestyledFrames(
} }
for (nsIFrame* cont = frame; cont; cont = for (nsIFrame* cont = frame; cont; cont =
nsLayoutUtils::GetNextContinuationOrIBSplitSibling(cont)) { nsLayoutUtils::GetNextContinuationOrIBSplitSibling(cont)) {
aOverflowChangedTracker.AddFrame(cont, changeKind); mOverflowChangedTracker.AddFrame(cont, changeKind);
} }
} }
// UpdateParentOverflow hints need to be processed in addition // UpdateParentOverflow hints need to be processed in addition
@ -1216,14 +1215,14 @@ RestyleManagerBase::ProcessRestyledFrames(
"shouldn't get style hints for the root frame"); "shouldn't get style hints for the root frame");
for (nsIFrame* cont = frame; cont; cont = for (nsIFrame* cont = frame; cont; cont =
nsLayoutUtils::GetNextContinuationOrIBSplitSibling(cont)) { nsLayoutUtils::GetNextContinuationOrIBSplitSibling(cont)) {
aOverflowChangedTracker.AddFrame(cont->GetParent(), mOverflowChangedTracker.AddFrame(cont->GetParent(),
OverflowChangedTracker::CHILDREN_CHANGED); OverflowChangedTracker::CHILDREN_CHANGED);
} }
} }
} }
} }
if ((hint & nsChangeHint_UpdateCursor) && !didUpdateCursor) { if ((hint & nsChangeHint_UpdateCursor) && !didUpdateCursor) {
aPresContext.PresShell()->SynthesizeMouseMove(false); presContext->PresShell()->SynthesizeMouseMove(false);
didUpdateCursor = true; didUpdateCursor = true;
} }
} }

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

@ -64,6 +64,13 @@ public:
mOverflowChangedTracker.RemoveFrame(aFrame); mOverflowChangedTracker.RemoveFrame(aFrame);
} }
// Note: It's the caller's responsibility to make sure to wrap a
// ProcessRestyledFrames call in a view update batch and a script blocker.
// This function does not call ProcessAttachedQueue() on the binding manager.
// If the caller wants that to happen synchronously, it needs to handle that
// itself.
nsresult ProcessRestyledFrames(nsStyleChangeList& aChangeList);
protected: protected:
void ContentStateChangedInternal(Element* aElement, void ContentStateChangedInternal(Element* aElement,
EventStates aStateMask, EventStates aStateMask,
@ -126,11 +133,6 @@ protected:
static nsIFrame* static nsIFrame*
GetNextBlockInInlineSibling(FramePropertyTable* aPropTable, nsIFrame* aFrame); GetNextBlockInInlineSibling(FramePropertyTable* aPropTable, nsIFrame* aFrame);
static nsresult
ProcessRestyledFrames(nsStyleChangeList& aChangeList,
nsPresContext& aPresContext,
OverflowChangedTracker& aOverflowChangedTracker);
/** /**
* Get the next continuation or similar ib-split sibling (assuming * Get the next continuation or similar ib-split sibling (assuming
* block/inline alternation), conditionally on it having the same style. * block/inline alternation), conditionally on it having the same style.

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

@ -366,11 +366,4 @@ ServoRestyleManager::SnapshotForElement(Element* aElement)
return mModifiedElements.LookupOrAdd(aElement, aElement); return mModifiedElements.LookupOrAdd(aElement, aElement);
} }
nsresult
ServoRestyleManager::ProcessRestyledFrames(nsStyleChangeList& aChangeList)
{
return base_type::ProcessRestyledFrames(aChangeList, *PresContext(),
mOverflowChangedTracker);
}
} // namespace mozilla } // namespace mozilla

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

@ -74,7 +74,6 @@ public:
} }
nsresult ReparentStyleContext(nsIFrame* aFrame); nsresult ReparentStyleContext(nsIFrame* aFrame);
nsresult ProcessRestyledFrames(nsStyleChangeList& aChangeList);
bool HasPendingRestyles() { return !mModifiedElements.IsEmpty(); } bool HasPendingRestyles() { return !mModifiedElements.IsEmpty(); }