зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1290335: Make ProcessRestyledFrames non static, and tidy up a bit. r=heycam
MozReview-Commit-ID: 4aALVtI5DXT
This commit is contained in:
Родитель
abbea0a9d6
Коммит
5d8a772fcd
|
@ -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(); }
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче