From f716c342954550d882a81104c154b439f48410fa Mon Sep 17 00:00:00 2001 From: Mihaela Ogrezeanu Date: Fri, 30 Aug 2019 05:43:49 -0700 Subject: [PATCH] Show prev and next data for a SingleComponentSection Summary: The SingleComponentSection doesn't store anything in the data field unless it's set manually by the dev; this adds custom info about the prev and next data so we can use it for debugging Reviewed By: pasqualeanatriello Differential Revision: D17112284 fbshipit-source-id: 55aa49583e3bc7d046661d34841b7c3283972d76 --- .../plugins/sections/ChangesetDebug.java | 50 +++++++++++++++++-- 1 file changed, 46 insertions(+), 4 deletions(-) diff --git a/android/src/main/java/com/facebook/flipper/plugins/sections/ChangesetDebug.java b/android/src/main/java/com/facebook/flipper/plugins/sections/ChangesetDebug.java index 777d88c8c..2f088dde8 100644 --- a/android/src/main/java/com/facebook/flipper/plugins/sections/ChangesetDebug.java +++ b/android/src/main/java/com/facebook/flipper/plugins/sections/ChangesetDebug.java @@ -110,9 +110,9 @@ public class ChangesetDebug implements ChangesetDebugListener { changeData.put("render_infos", ChangesetDebugConfiguration.getRenderInfoNames(change)); - changeData.put("prev_data", getDataNamesFromChange(change.getPrevData())); + changeData.put("prev_data", getPrevDataFromChange(change)); - changeData.put("next_data", getDataNamesFromChange(change.getNextData())); + changeData.put("next_data", getNextDataFromChange(change)); changesets.put(i + "", changeData.build()); } @@ -121,6 +121,40 @@ public class ChangesetDebug implements ChangesetDebugListener { changesetData.put(globalKey, sectionChangesetInfo.build()); } + private static List getPrevDataFromChange(Change change) { + if (change.getPrevData() != null) { + return getDataNamesFromChange(change.getPrevData()); + } + + List data = new ArrayList<>(); + if (change.getRenderInfo() != null) { + data.add(change.getRenderInfo().getDebugInfo("SCS_DATA_INFO_PREV")); + } else if (change.getRenderInfos() != null) { + for (int i = 0; i < change.getRenderInfos().size(); i++) { + data.add(change.getRenderInfos().get(i).getDebugInfo("SCS_DATA_INFO_PREV")); + } + } + + return data; + } + + private static List getNextDataFromChange(Change change) { + if (change.getNextData() != null) { + return getDataNamesFromChange(change.getNextData()); + } + + List data = new ArrayList<>(); + if (change.getRenderInfo() != null) { + data.add(change.getRenderInfo().getDebugInfo("SCS_DATA_INFO_NEXT")); + } else if (change.getRenderInfos() != null) { + for (int i = 0; i < change.getRenderInfos().size(); i++) { + data.add(change.getRenderInfos().get(i).getDebugInfo("SCS_DATA_INFO_NEXT")); + } + } + + return data; + } + private static List getDataNamesFromChange(List data) { final List names = new ArrayList<>(); @@ -307,6 +341,8 @@ public class ChangesetDebug implements ChangesetDebugListener { DataModelChangeInfo dataInfo = new DataModelChangeInfo(); if (change.getNextData() != null) { dataInfo.model = change.getNextData().get(0); + } else { + dataInfo.model = getNextDataFromChange(change); } dataInfo.sectionKey = (String) change.getRenderInfo().getDebugInfo("section_global_key"); @@ -324,6 +360,8 @@ public class ChangesetDebug implements ChangesetDebugListener { DataModelChangeInfo dataInfo = new DataModelChangeInfo(); if (change.getNextData() != null) { dataInfo.model = change.getNextData().get(item); + } else { + dataInfo.model = getNextDataFromChange(change); } dataInfo.operation = Change.INSERT_RANGE; dataInfo.sectionKey = @@ -350,14 +388,18 @@ public class ChangesetDebug implements ChangesetDebugListener { case Change.UPDATE: { int getPosition = getPositionWithChangesApplied(dataInfos, index); - dataInfos.get(getPosition).operation = Change.UPDATE; + DataModelChangeInfo dataInfo = dataInfos.get(getPosition); + dataInfo.operation = Change.UPDATE; + dataInfo.model = getNextDataFromChange(change); break; } case Change.UPDATE_RANGE: { for (int updateIndex = index; updateIndex < index + change.getCount(); updateIndex++) { int getPosition = getPositionWithChangesApplied(dataInfos, updateIndex); - dataInfos.get(getPosition).operation = Change.UPDATE_RANGE; + DataModelChangeInfo dataInfo = dataInfos.get(getPosition); + dataInfo.operation = Change.UPDATE_RANGE; + dataInfo.model = getNextDataFromChange(change); } break; }