From c612c615449b8645976429ad1c0661a4f6e56115 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Gregorczyk?= Date: Sat, 12 Nov 2016 14:29:40 -0800 Subject: [PATCH] Make UnpackingJSBundleLoader.prepare a public API. Reviewed By: brosenfeld Differential Revision: D4161585 fbshipit-source-id: b3b835610d11e043d2406cccff2da27f07878acc --- .../react/cxxbridge/UnpackingJSBundleLoader.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/UnpackingJSBundleLoader.java b/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/UnpackingJSBundleLoader.java index a70f82ada..dd593d010 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/UnpackingJSBundleLoader.java +++ b/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/UnpackingJSBundleLoader.java @@ -72,6 +72,11 @@ public class UnpackingJSBundleLoader extends JSBundleLoader { private final boolean mFinishOnBackgroundThread; private final @Nullable Runnable mOnUnpackedCallback; + /** + * True if prepare was called. + */ + private boolean mPrepared; + /** * Synchronizes unpacking within this process. */ @@ -96,13 +101,20 @@ public class UnpackingJSBundleLoader extends JSBundleLoader { mFinishOnBackgroundThread = builder.finishOnBackgroundThread; mOnUnpackedCallback = builder.callback; mFileLocker = null; + mPrepared = false; } /** * Checks if any file needs to be extracted again, and if so, clears the destination * directory and unpacks everything again. + * + * This method does not do anything if called for the second time */ - /* package */ void prepare() { + public synchronized void prepare() { + if (mPrepared) { + return; + } + ReactMarker.logMarker(ReactMarkerConstants.UNPACKER_CHECK_START); boolean unpacked = false; @@ -131,6 +143,8 @@ public class UnpackingJSBundleLoader extends JSBundleLoader { } ReactMarker.logMarker(ReactMarkerConstants.UNPACKER_CHECK_END); + + mPrepared = true; } private boolean prepareLocked() throws IOException {