diff --git a/ReactAndroid/src/main/java/com/facebook/debug/holder/NoopPrinter.java b/ReactAndroid/src/main/java/com/facebook/debug/holder/NoopPrinter.java index 4e880e270fbd63..6c31109a78f797 100644 --- a/ReactAndroid/src/main/java/com/facebook/debug/holder/NoopPrinter.java +++ b/ReactAndroid/src/main/java/com/facebook/debug/holder/NoopPrinter.java @@ -16,4 +16,9 @@ public void logMessage(DebugOverlayTag tag, String message, Object... args) {} @Override public void logMessage(DebugOverlayTag tag, String message) {} + + @Override + public boolean shouldDisplayLogMessage(final DebugOverlayTag tag) { + return false; + } } diff --git a/ReactAndroid/src/main/java/com/facebook/debug/holder/Printer.java b/ReactAndroid/src/main/java/com/facebook/debug/holder/Printer.java index 5b78632984a46c..dffe707da1e663 100644 --- a/ReactAndroid/src/main/java/com/facebook/debug/holder/Printer.java +++ b/ReactAndroid/src/main/java/com/facebook/debug/holder/Printer.java @@ -4,10 +4,10 @@ import com.facebook.debug.debugoverlay.model.DebugOverlayTag; -/** Interface to pass data to debugging tools. */ +/** Interface to debugging tool. */ public interface Printer { void logMessage(final DebugOverlayTag tag, final String message, Object... args); - void logMessage(final DebugOverlayTag tag, final String message); + boolean shouldDisplayLogMessage(final DebugOverlayTag tag); } diff --git a/ReactAndroid/src/main/java/com/facebook/debug/tags/ReactDebugOverlayTags.java b/ReactAndroid/src/main/java/com/facebook/debug/tags/ReactDebugOverlayTags.java index dc64128b0cb46c..0c25132c425d19 100644 --- a/ReactAndroid/src/main/java/com/facebook/debug/tags/ReactDebugOverlayTags.java +++ b/ReactAndroid/src/main/java/com/facebook/debug/tags/ReactDebugOverlayTags.java @@ -19,4 +19,9 @@ public class ReactDebugOverlayTags { "Bridge Calls", "JS to Java calls (warning: this is spammy)", Color.MAGENTA); public static final DebugOverlayTag NATIVE_MODULE = new DebugOverlayTag("Native Module", "Native Module init", Color.rgb(0x80, 0x00, 0x80)); + public static final DebugOverlayTag UI_MANAGER = + new DebugOverlayTag( + "UI Manager", + "UI Manager View Operations (requires restart\nwarning: this is spammy)", + Color.CYAN); } diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/BUCK b/ReactAndroid/src/main/java/com/facebook/react/uimanager/BUCK index 301a7e39f94dd2..4936cac57e2dad 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/uimanager/BUCK +++ b/ReactAndroid/src/main/java/com/facebook/react/uimanager/BUCK @@ -20,6 +20,8 @@ android_library( react_native_dep("libraries/fbcore/src/main/java/com/facebook/common/logging:logging"), react_native_dep("third-party/java/infer-annotations:infer-annotations"), react_native_dep("third-party/java/jsr-305:jsr-305"), + react_native_target("java/com/facebook/debug/tags:tags"), + react_native_target("java/com/facebook/debug/holder:holder"), react_native_target("java/com/facebook/react/animation:animation"), react_native_target("java/com/facebook/react/bridge:bridge"), react_native_target("java/com/facebook/react/common:common"), diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java b/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java index 15aa06bf9d1901..3a345dec169de6 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java +++ b/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java @@ -15,6 +15,8 @@ import android.content.ComponentCallbacks2; import android.content.res.Configuration; import com.facebook.common.logging.FLog; +import com.facebook.debug.holder.PrinterHolder; +import com.facebook.debug.tags.ReactDebugOverlayTags; import com.facebook.react.animation.Animation; import com.facebook.react.bridge.Callback; import com.facebook.react.bridge.GuardedRunnable; @@ -83,7 +85,8 @@ public interface CustomEventNamesResolver { protected static final String NAME = "UIManager"; - private static final boolean DEBUG = false; + private static final boolean DEBUG = + PrinterHolder.getPrinter().shouldDisplayLogMessage(ReactDebugOverlayTags.UI_MANAGER); private final EventDispatcher mEventDispatcher; private final Map mModuleConstants; @@ -254,9 +257,10 @@ public void updateNodeSize(int nodeViewTag, int newWidth, int newHeight) { @ReactMethod public void createView(int tag, String className, int rootViewTag, ReadableMap props) { if (DEBUG) { - FLog.d( - ReactConstants.TAG, - "(UIManager.createView) tag: " + tag + ", class: " + className + ", props: " + props); + String message = + "(UIManager.createView) tag: " + tag + ", class: " + className + ", props: " + props; + FLog.d(ReactConstants.TAG, message); + PrinterHolder.getPrinter().logMessage(ReactDebugOverlayTags.UI_MANAGER, message); } mUIImplementation.createView(tag, className, rootViewTag, props); } @@ -264,9 +268,10 @@ public void createView(int tag, String className, int rootViewTag, ReadableMap p @ReactMethod public void updateView(int tag, String className, ReadableMap props) { if (DEBUG) { - FLog.d( - ReactConstants.TAG, - "(UIManager.updateView) tag: " + tag + ", class: " + className + ", props: " + props); + String message = + "(UIManager.updateView) tag: " + tag + ", class: " + className + ", props: " + props; + FLog.d(ReactConstants.TAG, message); + PrinterHolder.getPrinter().logMessage(ReactDebugOverlayTags.UI_MANAGER, message); } mUIImplementation.updateView(tag, className, props); } @@ -291,14 +296,21 @@ public void manageChildren( @Nullable ReadableArray addAtIndices, @Nullable ReadableArray removeFrom) { if (DEBUG) { - FLog.d( - ReactConstants.TAG, - "(UIManager.manageChildren) tag: " + viewTag + - ", moveFrom: " + moveFrom + - ", moveTo: " + moveTo + - ", addTags: " + addChildTags + - ", atIndices: " + addAtIndices + - ", removeFrom: " + removeFrom); + String message = + "(UIManager.manageChildren) tag: " + + viewTag + + ", moveFrom: " + + moveFrom + + ", moveTo: " + + moveTo + + ", addTags: " + + addChildTags + + ", atIndices: " + + addAtIndices + + ", removeFrom: " + + removeFrom; + FLog.d(ReactConstants.TAG, message); + PrinterHolder.getPrinter().logMessage(ReactDebugOverlayTags.UI_MANAGER, message); } mUIImplementation.manageChildren( viewTag, @@ -321,9 +333,9 @@ public void setChildren( int viewTag, ReadableArray childrenTags) { if (DEBUG) { - FLog.d( - ReactConstants.TAG, - "(UIManager.setChildren) tag: " + viewTag + ", children: " + childrenTags); + String message = "(UIManager.setChildren) tag: " + viewTag + ", children: " + childrenTags; + FLog.d(ReactConstants.TAG, message); + PrinterHolder.getPrinter().logMessage(ReactDebugOverlayTags.UI_MANAGER, message); } mUIImplementation.setChildren(viewTag, childrenTags); }