From 954883c4f0b82c1d1d520c18012700c735206fe0 Mon Sep 17 00:00:00 2001 From: Bo Duan Date: Wed, 31 Jul 2019 22:38:24 -0700 Subject: [PATCH 1/2] Let TreePopulator use the saved treeProps if context.getTreeProps() is null. --- .../com/facebook/litho/ComponentTree.java | 2 +- .../com/facebook/litho/LogTreePopulator.java | 24 +++++++++++++++---- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/litho-core/src/main/java/com/facebook/litho/ComponentTree.java b/litho-core/src/main/java/com/facebook/litho/ComponentTree.java index 600089dad22..79a2e0abb5f 100644 --- a/litho-core/src/main/java/com/facebook/litho/ComponentTree.java +++ b/litho-core/src/main/java/com/facebook/litho/ComponentTree.java @@ -1774,7 +1774,7 @@ private void calculateLayout( final PerfEvent layoutEvent = logger != null ? LogTreePopulator.populatePerfEventFromLogger( - mContext, logger, logger.newPerformanceEvent(mContext, EVENT_LAYOUT_CALCULATE)) + mContext, treeProps, logger, logger.newPerformanceEvent(mContext, EVENT_LAYOUT_CALCULATE)) : null; if (layoutEvent != null) { diff --git a/litho-core/src/main/java/com/facebook/litho/LogTreePopulator.java b/litho-core/src/main/java/com/facebook/litho/LogTreePopulator.java index c5b41154ec9..f5e3e2c3432 100644 --- a/litho-core/src/main/java/com/facebook/litho/LogTreePopulator.java +++ b/litho-core/src/main/java/com/facebook/litho/LogTreePopulator.java @@ -26,10 +26,26 @@ public final class LogTreePopulator { private LogTreePopulator() {} + /** + * Annotate a log event with the log tag set in the context, and extract the treeprops from a + * given {@link ComponentContext} and convert them into perf event annotations using a {@link + * ComponentsLogger} implementation. + * + * @return Annotated perf event, or null if the resulting event isn't deemed worthy + * of reporting. + */ + @Nullable + @CheckReturnValue + public static PerfEvent populatePerfEventFromLogger( + ComponentContext c, ComponentsLogger logger, @Nullable PerfEvent perfEvent) { + return populatePerfEventFromLogger(c, c.getTreeProps(), logger, perfEvent); + } + /** * Annotate a log event with the log tag set in the context, and extract the treeprops from a - * given {@link ComponentContext} and convert them into perf event annotations using a {@link - * ComponentsLogger} implementation. + * given {@link ComponentContext} or saved treeprops and convert them into perf event annotations + * using a {@link ComponentsLogger} implementation. If the treeprops of the given + * {@link ComponentContext} is null, the saved treeprops will be used. * * @return Annotated perf event, or null if the resulting event isn't deemed worthy * of reporting. @@ -37,7 +53,7 @@ private LogTreePopulator() {} @Nullable @CheckReturnValue public static PerfEvent populatePerfEventFromLogger( - ComponentContext c, ComponentsLogger logger, @Nullable PerfEvent perfEvent) { + ComponentContext c, @Nullable TreeProps savedTreeProps, ComponentsLogger logger, @Nullable PerfEvent perfEvent) { if (perfEvent == null) { return null; } @@ -50,7 +66,7 @@ public static PerfEvent populatePerfEventFromLogger( perfEvent.markerAnnotate(FrameworkLogEvents.PARAM_LOG_TAG, logTag); - @Nullable final TreeProps treeProps = c.getTreeProps(); + @Nullable final TreeProps treeProps = c.getTreeProps() == null ? savedTreeProps : c.getTreeProps(); if (treeProps == null) { return perfEvent; } From e8420ef996f110a8eb3a47d3efec850be98c12aa Mon Sep 17 00:00:00 2001 From: Bo Duan Date: Thu, 1 Aug 2019 07:14:52 -0700 Subject: [PATCH 2/2] address comments --- .../java/com/facebook/litho/LogTreePopulator.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/litho-core/src/main/java/com/facebook/litho/LogTreePopulator.java b/litho-core/src/main/java/com/facebook/litho/LogTreePopulator.java index f5e3e2c3432..f1cac56c3c3 100644 --- a/litho-core/src/main/java/com/facebook/litho/LogTreePopulator.java +++ b/litho-core/src/main/java/com/facebook/litho/LogTreePopulator.java @@ -38,14 +38,14 @@ private LogTreePopulator() {} @CheckReturnValue public static PerfEvent populatePerfEventFromLogger( ComponentContext c, ComponentsLogger logger, @Nullable PerfEvent perfEvent) { - return populatePerfEventFromLogger(c, c.getTreeProps(), logger, perfEvent); + return populatePerfEventFromLogger(c, null, logger, perfEvent); } /** - * Annotate a log event with the log tag set in the context, and extract the treeprops from a - * given {@link ComponentContext} or saved treeprops and convert them into perf event annotations - * using a {@link ComponentsLogger} implementation. If the treeprops of the given - * {@link ComponentContext} is null, the saved treeprops will be used. + * Annotate a log event with the log tag set in the context, and extract the treeprops from saved + * treeprops or a given {@link ComponentContext} and convert them into perf event annotations + * using a {@link ComponentsLogger} implementation. If the saved treeprops is null, the treeprops + * of the given {@link ComponentContext} will be used. * * @return Annotated perf event, or null if the resulting event isn't deemed worthy * of reporting. @@ -66,7 +66,7 @@ public static PerfEvent populatePerfEventFromLogger( perfEvent.markerAnnotate(FrameworkLogEvents.PARAM_LOG_TAG, logTag); - @Nullable final TreeProps treeProps = c.getTreeProps() == null ? savedTreeProps : c.getTreeProps(); + @Nullable final TreeProps treeProps = savedTreeProps == null ? c.getTreeProps() : savedTreeProps; if (treeProps == null) { return perfEvent; }