/* This Source Code Form is subject to the terms of the Mozilla Public
* License , v . 2 . 0 . If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#ifndef ACTIVELAYERTRACKER_H_
#define ACTIVELAYERTRACKER_H_
#include "NonCustomCSSPropertyId.h"
class nsIFrame;
class nsIContent;
class nsCSSPropertyIDSet;
class nsDOMCSSDeclaration;
namespace mozilla {
class nsDisplayListBuilder;
/**
* This class receives various notifications about style changes and content
* changes that affect layerization decisions , and implements the heuristics
* that drive those decisions . It manages per - frame state to support those
* heuristics .
*/
class ActiveLayerTracker {
public :
static void Shutdown();
/*
* We track style changes to selected styles :
* eCSSProperty_transform , eCSSProperty_translate ,
* eCSSProperty_rotate , eCSSProperty_scale
* eCSSProperty_offset_path , eCSSProperty_offset_distance ,
* eCSSProperty_offset_rotate , eCSSProperty_offset_anchor ,
* eCSSProperty_offset_position , eCSSProperty_opacity
* and use that information to guess whether style changes are animated .
*/
/**
* Notify aFrame ' s style property as having changed due to a restyle ,
* and therefore possibly wanting an active layer to render that style .
* Any such marking will time out after a short period .
* @ param aProperty the property that has changed
*/
static void NotifyRestyle(nsIFrame* aFrame, NonCustomCSSPropertyId aProperty);
/**
* Notify that a property in the inline style rule of aFrame ' s element
* has been modified .
*/
static void NotifyInlineStyleRuleModified(nsIFrame* aFrame,
NonCustomCSSPropertyId aProperty);
/**
* Notify that a frame needs to be repainted . This is important for layering
* decisions where , say , aFrame ' s transform is updated from JS , but we need
* to repaint aFrame anyway , so we get no benefit from giving it its own
* layer .
*/
static void NotifyNeedsRepaint(nsIFrame* aFrame);
/** Return true if aFrame's transform-like properties are animated. */
static bool IsTransformAnimated(nsIFrame* aFrame);
/**
* Return true if aFrame either has an animated scale now , or is likely to
* have one in the future because it has a CSS animation or transition
* ( which may not be playing right now ) that affects its scale .
*/
static bool IsScaleSubjectToAnimation(nsIFrame* aFrame);
/** Return true if aFrame's opacity property is animated. */
static bool IsOpacityAnimated(nsIFrame* aFrame);
/**
* Transfer the LayerActivity property to the frame ' s content node when the
* frame is about to be destroyed so that layer activity can be tracked
* throughout reframes of an element . Only call this when aFrame is the
* primary frame of aContent .
*/
static void TransferActivityToContent(nsIFrame* aFrame, nsIContent* aContent);
/**
* Transfer the LayerActivity property back to the content node ' s primary
* frame after the frame has been created .
*/
static void TransferActivityToFrame(nsIContent* aContent, nsIFrame* aFrame);
};
}
// namespace mozilla
#endif /* ACTIVELAYERTRACKER_H_ */
Messung V0.5 in Prozent C=99 H=100 G=99
¤ Dauer der Verarbeitung: 0.9 Sekunden
(vorverarbeitet am 2026-09-27)
¤
*© Formatika GbR, Deutschland