WalkLog class Diagnostics

Everything one pass observed. A fresh instance per pass on purpose: two passes over the same tree are two measurements, not one accumulated.

Read off the host's published frame, GlassProxyHandle.frame?.log, for a report or a test. What the pass handed to the engine is named in fellBack; a layer still counted in unhandledLayers or a filter in opacityFoldedIntoFilter is one it drew as it drew it, because the subtree held something the engine must not draw for it (glass, a marker, what the policy took out) or is a backdrop filter, which reads what lies below it.

Constructors

WalkLog()

Properties

addedLayers → List<String>
Reached through addLayer, i.e. content that never goes through a canvas.
final
boundariesCrossed ↔ int
Repaint boundaries the pass walked through instead of compositing.
getter/setter pair
childContextsRequested → List<String>
createChildContext calls, which should be none: every branch that would have asked for one is overridden to stay on this context's canvas.
final
compositedEffectsApplied ↔ int
Opacities and image filters the pass applied — the two effects a repaint boundary carries in updateCompositedLayer, where a direct paint() call cannot see them. Zero here on a tree containing an Opacity means the pass dropped its transparency.
getter/setter pair
errors → List<String>
Nodes whose paint threw. We run foreign code; this is the budget for it.
final
fellBack → List<String>
Subtrees recorded as the engine draws them rather than as the pass did, by the type of the layer handed to the engine: an OpacityLayer over a filter it folds into, a ShaderMaskLayer that paints past its children. Only with a fallback ratio, which the host's pipeline gives; see ProxyWalkContext.fallbackPixelRatio.
final
hashCode → int
The hash code for this object.
no setterinherited
layersMinted ↔ int
Layers this pass had to create because a push* return type is non-nullable and the caller had none to reuse. Each one is parked in somebody else's field, which is a mutation of the live tree even though nothing is lost. The invariant is that this stays at zero.
getter/setter pair
opacityFoldedIntoFilter ↔ int
Colour and image filters flattened while an alpha layer was open above them.
getter/setter pair
proxyRoles → Map<GlassProxyRole, int>
GlassProxy markers the pass actually reached, by role.
final
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
skipped → List<String>
Nodes the policy skipped, by type.
final
substituted → List<String>
Nodes the policy replaced with a placeholder, by type.
final
unhandledLayers → List<String>
Layer types with no canvas equivalent, so their effect is missing from the recording. Named rather than counted: which type it is is the finding.
final
visited ↔ int
Render objects the pass reached.
getter/setter pair

Methods

noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
summary() → Map<String, Object>
Every counter, keyed for a report.
toString() → String
A string representation of this object.
inherited

Operators

operator ==(Object other) → bool
The equality operator.
inherited