From 64f394a99b2260b8f044fa12381de1a6ac38aa63 Mon Sep 17 00:00:00 2001 From: Charles Dick Date: Tue, 10 Jan 2017 07:03:30 -0800 Subject: [PATCH] RN trigger heap capture from js1 Differential Revision: D4397603 fbshipit-source-id: 566cfad9ce47bcc8cddb9219ed9f6a427ce19f84 --- .../react/devsupport/DevServerHelper.java | 9 +++++++-- .../devsupport/DevSupportManagerImpl.java | 20 ++++++++++++++++--- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevServerHelper.java b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevServerHelper.java index 011a4d3249d..0daf8e9c73c 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevServerHelper.java +++ b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevServerHelper.java @@ -83,6 +83,7 @@ public class DevServerHelper { public interface PackagerCommandListener { void onPackagerReloadCommand(); + void onCaptureHeapCommand(); } public interface PackagerStatusCallback { @@ -123,8 +124,12 @@ public class DevServerHelper { new JSPackagerWebSocketClient.JSPackagerCallback() { @Override public void onMessage(String target, String action) { - if (commandListener != null && "bridge".equals(target) && "reload".equals(action)) { - commandListener.onPackagerReloadCommand(); + if (commandListener != null && "bridge".equals(target)) { + if ("reload".equals(action)) { + commandListener.onPackagerReloadCommand(); + } else if ("captureHeap".equals(action)) { + commandListener.onCaptureHeapCommand(); + } } } }); diff --git a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerImpl.java b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerImpl.java index c7288d5f0e9..d8091f7f58b 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerImpl.java +++ b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerImpl.java @@ -417,9 +417,7 @@ public class DevSupportManagerImpl implements DevSupportManager, PackagerCommand new DevOptionHandler() { @Override public void onOptionSelected() { - JSCHeapCapture.captureHeap( - mApplicationContext.getCacheDir().getPath(), - JSCHeapUpload.captureCallback(mDevServerHelper.getHeapCaptureUploadUrl())); + handleCaptureHeap(); } }); options.put( @@ -691,6 +689,22 @@ public class DevSupportManagerImpl implements DevSupportManager, PackagerCommand }); } + @Override + public void onCaptureHeapCommand() { + UiThreadUtil.runOnUiThread(new Runnable() { + @Override + public void run() { + handleCaptureHeap(); + } + }); + } + + private void handleCaptureHeap() { + JSCHeapCapture.captureHeap( + mApplicationContext.getCacheDir().getPath(), + JSCHeapUpload.captureCallback(mDevServerHelper.getHeapCaptureUploadUrl())); + } + private void updateLastErrorInfo( final String message, final StackFrame[] stack,