add baseline start and baseline end events

Summary: Adds Baseline start and end events to be handled later for instrumentation

Reviewed By: davidaurelio

Differential Revision: D16048790

fbshipit-source-id: 8409dbb633168753a7bf8fab20bc6551d113ddd6
This commit is contained in:
Sidharth Guglani
2019-07-10 08:43:41 -07:00
committed by Facebook Github Bot
parent eeae39d707
commit 0f250490d4
3 changed files with 11 additions and 0 deletions

View File

@@ -300,6 +300,9 @@ void EventTest::listen(const YGNode& node, Event::Type type, Event::Data data) {
case Event::MeasureCallbackStart:
case Event::MeasureCallbackEnd:
break;
case Event::NodeBaselineStart:
case Event::NodeBaselineEnd:
break;
}
}

View File

@@ -997,12 +997,18 @@ static inline YGAlign YGNodeAlignItem(const YGNode* node, const YGNode* child) {
static float YGBaseline(const YGNodeRef node, void* layoutContext) {
if (node->hasBaselineFunc()) {
Event::publish<Event::NodeBaselineStart>(node);
const float baseline = marker::MarkerSection<YGMarkerBaselineFn>::wrap(
node,
&YGNode::baseline,
node->getLayout().measuredDimensions[YGDimensionWidth],
node->getLayout().measuredDimensions[YGDimensionHeight],
layoutContext);
Event::publish<Event::NodeBaselineEnd>(node);
YGAssertWithNode(
node,
!YGFloatIsUndefined(baseline),

View File

@@ -33,6 +33,8 @@ struct Event {
LayoutPassEnd,
MeasureCallbackStart,
MeasureCallbackEnd,
NodeBaselineStart,
NodeBaselineEnd,
};
class Data;
using Subscriber = void(const YGNode&, Type, Data);