From 14a8e577d7c1730e9663c19381d6f3ed54c9b688 Mon Sep 17 00:00:00 2001 From: Kevin Leung Date: Fri, 13 Jan 2017 17:42:15 +0800 Subject: [PATCH 0001/1101] Support videos in Android CameraRoll.getPhotos --- .../modules/camera/CameraRollManager.java | 37 +++++++++++++++---- 1 file changed, 29 insertions(+), 8 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/modules/camera/CameraRollManager.java b/ReactAndroid/src/main/java/com/facebook/react/modules/camera/CameraRollManager.java index 6216f10380d9..7a9bcd794c5b 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/modules/camera/CameraRollManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/modules/camera/CameraRollManager.java @@ -32,6 +32,7 @@ import android.provider.MediaStore; import android.provider.MediaStore.Images; import android.text.TextUtils; +import android.util.Log; import com.facebook.common.logging.FLog; import com.facebook.react.bridge.GuardedAsyncTask; @@ -77,7 +78,8 @@ public class CameraRollManager extends ReactContextBaseJavaModule { Images.Media.WIDTH, Images.Media.HEIGHT, Images.Media.LONGITUDE, - Images.Media.LATITUDE + Images.Media.LATITUDE, + MediaStore.MediaColumns.DATA }; } else { PROJECTION = new String[] { @@ -86,7 +88,8 @@ public class CameraRollManager extends ReactContextBaseJavaModule { Images.Media.BUCKET_DISPLAY_NAME, Images.Media.DATE_TAKEN, Images.Media.LONGITUDE, - Images.Media.LATITUDE + Images.Media.LATITUDE, + MediaStore.MediaColumns.DATA }; } } @@ -226,6 +229,7 @@ public void getPhotos(final ReadableMap params, final Promise promise) { int first = params.getInt("first"); String after = params.hasKey("after") ? params.getString("after") : null; String groupName = params.hasKey("groupName") ? params.getString("groupName") : null; + String assetType = params.hasKey("assetType") ? params.getString("assetType") : "Photos"; ReadableArray mimeTypes = params.hasKey("mimeTypes") ? params.getArray("mimeTypes") : null; @@ -238,6 +242,7 @@ public void getPhotos(final ReadableMap params, final Promise promise) { first, after, groupName, + assetType, mimeTypes, promise) .executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); @@ -248,6 +253,7 @@ private static class GetPhotosTask extends GuardedAsyncTask { private final int mFirst; private final @Nullable String mAfter; private final @Nullable String mGroupName; + private final @Nullable String mAssetType; private final @Nullable ReadableArray mMimeTypes; private final Promise mPromise; @@ -256,6 +262,7 @@ private GetPhotosTask( int first, @Nullable String after, @Nullable String groupName, + @Nullable String assetType, @Nullable ReadableArray mimeTypes, Promise promise) { super(context); @@ -263,6 +270,7 @@ private GetPhotosTask( mFirst = first; mAfter = after; mGroupName = groupName; + mAssetType = assetType; mMimeTypes = mimeTypes; mPromise = promise; } @@ -279,6 +287,19 @@ protected void doInBackgroundGuarded(Void... params) { selection.append(" AND " + SELECTION_BUCKET); selectionArgs.add(mGroupName); } + if (!TextUtils.isEmpty(mAssetType)) { + if(mAssetType.equals("Videos")) { + selection.append(" AND " + MediaStore.Files.FileColumns.MEDIA_TYPE + " = " + + MediaStore.Files.FileColumns.MEDIA_TYPE_VIDEO); + } else if(mAssetType.equals("Photos")) { + selection.append(" AND " + MediaStore.Files.FileColumns.MEDIA_TYPE + " = " + + MediaStore.Files.FileColumns.MEDIA_TYPE_IMAGE); + } else { + selection.append(" AND " + MediaStore.Files.FileColumns.MEDIA_TYPE + " IN (" + + MediaStore.Files.FileColumns.MEDIA_TYPE_VIDEO + "," + + MediaStore.Files.FileColumns.MEDIA_TYPE_IMAGE + ")"); + } + } if (mMimeTypes != null && mMimeTypes.size() > 0) { selection.append(" AND " + Images.Media.MIME_TYPE + " IN ("); for (int i = 0; i < mMimeTypes.size(); i++) { @@ -294,7 +315,7 @@ protected void doInBackgroundGuarded(Void... params) { // an SQLite DB and forwards parameters to it without doing any parsing / validation. try { Cursor photos = resolver.query( - Images.Media.EXTERNAL_CONTENT_URI, + MediaStore.Files.getContentUri("external"), PROJECTION, selection.toString(), selectionArgs.toArray(new String[selectionArgs.size()]), @@ -347,12 +368,13 @@ private static void putEdges( int heightIndex = IS_JELLY_BEAN_OR_LATER ? photos.getColumnIndex(Images.Media.HEIGHT) : -1; int longitudeIndex = photos.getColumnIndex(Images.Media.LONGITUDE); int latitudeIndex = photos.getColumnIndex(Images.Media.LATITUDE); + int dataIndex = photos.getColumnIndex(MediaStore.MediaColumns.DATA); for (int i = 0; i < limit && !photos.isAfterLast(); i++) { WritableMap edge = new WritableNativeMap(); WritableMap node = new WritableNativeMap(); boolean imageInfoSuccess = - putImageInfo(resolver, photos, node, idIndex, widthIndex, heightIndex); + putImageInfo(resolver, photos, node, idIndex, widthIndex, heightIndex, dataIndex); if (imageInfoSuccess) { putBasicNodeInfo(photos, node, mimeTypeIndex, groupNameIndex, dateTakenIndex); putLocationInfo(photos, node, longitudeIndex, latitudeIndex); @@ -386,11 +408,10 @@ private static boolean putImageInfo( WritableMap node, int idIndex, int widthIndex, - int heightIndex) { + int heightIndex, + int dataIndex) { WritableMap image = new WritableNativeMap(); - Uri photoUri = Uri.withAppendedPath( - Images.Media.EXTERNAL_CONTENT_URI, - photos.getString(idIndex)); + Uri photoUri = Uri.parse("file://" + photos.getString(dataIndex)); image.putString("uri", photoUri.toString()); float width = -1; float height = -1; From 16c6d1f4947760c5e22759aa538efb5126033af3 Mon Sep 17 00:00:00 2001 From: Kevin Leung Date: Fri, 13 Jan 2017 17:45:15 +0800 Subject: [PATCH 0002/1101] Remove unused import --- .../com/facebook/react/modules/camera/CameraRollManager.java | 1 - 1 file changed, 1 deletion(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/modules/camera/CameraRollManager.java b/ReactAndroid/src/main/java/com/facebook/react/modules/camera/CameraRollManager.java index 7a9bcd794c5b..5d24346a22fe 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/modules/camera/CameraRollManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/modules/camera/CameraRollManager.java @@ -32,7 +32,6 @@ import android.provider.MediaStore; import android.provider.MediaStore.Images; import android.text.TextUtils; -import android.util.Log; import com.facebook.common.logging.FLog; import com.facebook.react.bridge.GuardedAsyncTask; From 5ba0955bfb5c4a45824748243e8d8cd61be98299 Mon Sep 17 00:00:00 2001 From: Kesha Antonov Date: Sun, 30 Apr 2017 10:46:37 +0300 Subject: [PATCH 0003/1101] android: CameraRoll. Refactored + added validation --- .../modules/camera/CameraRollManager.java | 132 ++++++++++-------- 1 file changed, 73 insertions(+), 59 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/modules/camera/CameraRollManager.java b/ReactAndroid/src/main/java/com/facebook/react/modules/camera/CameraRollManager.java index b4a1ccf0f115..c882fe6a506a 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/modules/camera/CameraRollManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/modules/camera/CameraRollManager.java @@ -53,7 +53,7 @@ // TODO #6015104: rename to something less iOSish /** - * {@link NativeModule} that allows JS to interact with the photos on the device (i.e. + * {@link NativeModule} that allows JS to interact with the photos and videos on the device (i.e. * {@link MediaStore.Images}). */ @ReactModule(name = CameraRollManager.NAME) @@ -64,6 +64,12 @@ public class CameraRollManager extends ReactContextBaseJavaModule { private static final String ERROR_UNABLE_TO_LOAD = "E_UNABLE_TO_LOAD"; private static final String ERROR_UNABLE_TO_LOAD_PERMISSION = "E_UNABLE_TO_LOAD_PERMISSION"; private static final String ERROR_UNABLE_TO_SAVE = "E_UNABLE_TO_SAVE"; + private static final String ERROR_UNABLE_TO_FILTER = "E_UNABLE_TO_FILTER"; + + private static final String ASSET_TYPE_PHOTOS = "Photos"; + private static final String ASSET_TYPE_VIDEOS = "Videos"; + private static final String ASSET_TYPE_ALL = "All"; + public static final boolean IS_JELLY_BEAN_OR_LATER = Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN; @@ -224,7 +230,7 @@ public void getPhotos(final ReadableMap params, final Promise promise) { int first = params.getInt("first"); String after = params.hasKey("after") ? params.getString("after") : null; String groupName = params.hasKey("groupName") ? params.getString("groupName") : null; - String assetType = params.hasKey("assetType") ? params.getString("assetType") : "Photos"; + String assetType = params.hasKey("assetType") ? params.getString("assetType") : ASSET_TYPE_PHOTOS; ReadableArray mimeTypes = params.hasKey("mimeTypes") ? params.getArray("mimeTypes") : null; @@ -232,7 +238,7 @@ public void getPhotos(final ReadableMap params, final Promise promise) { throw new JSApplicationIllegalArgumentException("groupTypes is not supported on Android"); } - new GetPhotosTask( + new GetMediasTask( getReactApplicationContext(), first, after, @@ -243,21 +249,21 @@ public void getPhotos(final ReadableMap params, final Promise promise) { .executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); } - private static class GetPhotosTask extends GuardedAsyncTask { + private static class GetMediasTask extends GuardedAsyncTask { private final Context mContext; private final int mFirst; private final @Nullable String mAfter; private final @Nullable String mGroupName; - private final @Nullable String mAssetType; + private final String mAssetType; private final @Nullable ReadableArray mMimeTypes; private final Promise mPromise; - private GetPhotosTask( + private GetMediasTask( ReactContext context, int first, @Nullable String after, @Nullable String groupName, - @Nullable String assetType, + String assetType, @Nullable ReadableArray mimeTypes, Promise promise) { super(context); @@ -282,19 +288,27 @@ protected void doInBackgroundGuarded(Void... params) { selection.append(" AND " + SELECTION_BUCKET); selectionArgs.add(mGroupName); } - if (!TextUtils.isEmpty(mAssetType)) { - if(mAssetType.equals("Videos")) { - selection.append(" AND " + MediaStore.Files.FileColumns.MEDIA_TYPE + " = " - + MediaStore.Files.FileColumns.MEDIA_TYPE_VIDEO); - } else if(mAssetType.equals("Photos")) { - selection.append(" AND " + MediaStore.Files.FileColumns.MEDIA_TYPE + " = " - + MediaStore.Files.FileColumns.MEDIA_TYPE_IMAGE); - } else { - selection.append(" AND " + MediaStore.Files.FileColumns.MEDIA_TYPE + " IN (" - + MediaStore.Files.FileColumns.MEDIA_TYPE_VIDEO + "," - + MediaStore.Files.FileColumns.MEDIA_TYPE_IMAGE + ")"); - } + + if (mAssetType.equals( ASSET_TYPE_PHOTOS )) { + selection.append(" AND " + MediaStore.Files.FileColumns.MEDIA_TYPE + " = " + + MediaStore.Files.FileColumns.MEDIA_TYPE_IMAGE); + } else if (mAssetType.equals( ASSET_TYPE_VIDEOS )) { + selection.append(" AND " + MediaStore.Files.FileColumns.MEDIA_TYPE + " = " + + MediaStore.Files.FileColumns.MEDIA_TYPE_VIDEO); + } else if (mAssetType.equals( ASSET_TYPE_ALL )) { + selection.append(" AND " + MediaStore.Files.FileColumns.MEDIA_TYPE + " IN (" + + MediaStore.Files.FileColumns.MEDIA_TYPE_VIDEO + "," + + MediaStore.Files.FileColumns.MEDIA_TYPE_IMAGE + ")"); + } else { + mPromise.reject( + ERROR_UNABLE_TO_FILTER, + "Invalid filter option: '" + mAssetType + "'. Expected one of '" + + ASSET_TYPE_PHOTOS + "', '" + ASSET_TYPE_VIDEOS + "' or '" + ASSET_TYPE_ALL + "'." + ); + return; } + + if (mMimeTypes != null && mMimeTypes.size() > 0) { selection.append(" AND " + Images.Media.MIME_TYPE + " IN ("); for (int i = 0; i < mMimeTypes.size(); i++) { @@ -309,70 +323,70 @@ protected void doInBackgroundGuarded(Void... params) { // setting a limit at all), but it works because this specific ContentProvider is backed by // an SQLite DB and forwards parameters to it without doing any parsing / validation. try { - Cursor photos = resolver.query( + Cursor medias = resolver.query( MediaStore.Files.getContentUri("external"), PROJECTION, selection.toString(), selectionArgs.toArray(new String[selectionArgs.size()]), Images.Media.DATE_TAKEN + " DESC, " + Images.Media.DATE_MODIFIED + " DESC LIMIT " + (mFirst + 1)); // set LIMIT to first + 1 so that we know how to populate page_info - if (photos == null) { - mPromise.reject(ERROR_UNABLE_TO_LOAD, "Could not get photos"); + if (medias == null) { + mPromise.reject(ERROR_UNABLE_TO_LOAD, "Could not get medias"); } else { try { - putEdges(resolver, photos, response, mFirst); - putPageInfo(photos, response, mFirst); + putEdges(resolver, medias, response, mFirst); + putPageInfo(medias, response, mFirst); } finally { - photos.close(); + medias.close(); mPromise.resolve(response); } } } catch (SecurityException e) { mPromise.reject( ERROR_UNABLE_TO_LOAD_PERMISSION, - "Could not get photos: need READ_EXTERNAL_STORAGE permission", + "Could not get medias: need READ_EXTERNAL_STORAGE permission", e); } } } - private static void putPageInfo(Cursor photos, WritableMap response, int limit) { + private static void putPageInfo(Cursor medias, WritableMap response, int limit) { WritableMap pageInfo = new WritableNativeMap(); - pageInfo.putBoolean("has_next_page", limit < photos.getCount()); - if (limit < photos.getCount()) { - photos.moveToPosition(limit - 1); + pageInfo.putBoolean("has_next_page", limit < medias.getCount()); + if (limit < medias.getCount()) { + medias.moveToPosition(limit - 1); pageInfo.putString( "end_cursor", - photos.getString(photos.getColumnIndex(Images.Media.DATE_TAKEN))); + medias.getString(medias.getColumnIndex(Images.Media.DATE_TAKEN))); } response.putMap("page_info", pageInfo); } private static void putEdges( ContentResolver resolver, - Cursor photos, + Cursor medias, WritableMap response, int limit) { WritableArray edges = new WritableNativeArray(); - photos.moveToFirst(); - int idIndex = photos.getColumnIndex(Images.Media._ID); - int mimeTypeIndex = photos.getColumnIndex(Images.Media.MIME_TYPE); - int groupNameIndex = photos.getColumnIndex(Images.Media.BUCKET_DISPLAY_NAME); - int dateTakenIndex = photos.getColumnIndex(Images.Media.DATE_TAKEN); - int widthIndex = IS_JELLY_BEAN_OR_LATER ? photos.getColumnIndex(Images.Media.WIDTH) : -1; - int heightIndex = IS_JELLY_BEAN_OR_LATER ? photos.getColumnIndex(Images.Media.HEIGHT) : -1; - int longitudeIndex = photos.getColumnIndex(Images.Media.LONGITUDE); - int latitudeIndex = photos.getColumnIndex(Images.Media.LATITUDE); - int dataIndex = photos.getColumnIndex(MediaStore.MediaColumns.DATA); - - for (int i = 0; i < limit && !photos.isAfterLast(); i++) { + medias.moveToFirst(); + int idIndex = medias.getColumnIndex(Images.Media._ID); + int mimeTypeIndex = medias.getColumnIndex(Images.Media.MIME_TYPE); + int groupNameIndex = medias.getColumnIndex(Images.Media.BUCKET_DISPLAY_NAME); + int dateTakenIndex = medias.getColumnIndex(Images.Media.DATE_TAKEN); + int widthIndex = IS_JELLY_BEAN_OR_LATER ? medias.getColumnIndex(Images.Media.WIDTH) : -1; + int heightIndex = IS_JELLY_BEAN_OR_LATER ? medias.getColumnIndex(Images.Media.HEIGHT) : -1; + int longitudeIndex = medias.getColumnIndex(Images.Media.LONGITUDE); + int latitudeIndex = medias.getColumnIndex(Images.Media.LATITUDE); + int dataIndex = medias.getColumnIndex(MediaStore.MediaColumns.DATA); + + for (int i = 0; i < limit && !medias.isAfterLast(); i++) { WritableMap edge = new WritableNativeMap(); WritableMap node = new WritableNativeMap(); boolean imageInfoSuccess = - putImageInfo(resolver, photos, node, idIndex, widthIndex, heightIndex, dataIndex); + putImageInfo(resolver, medias, node, idIndex, widthIndex, heightIndex, dataIndex); if (imageInfoSuccess) { - putBasicNodeInfo(photos, node, mimeTypeIndex, groupNameIndex, dateTakenIndex); - putLocationInfo(photos, node, longitudeIndex, latitudeIndex); + putBasicNodeInfo(medias, node, mimeTypeIndex, groupNameIndex, dateTakenIndex); + putLocationInfo(medias, node, longitudeIndex, latitudeIndex); edge.putMap("node", node); edges.pushMap(edge); @@ -381,38 +395,38 @@ private static void putEdges( // decrement i in order to correctly reach the limit, if the cursor has enough rows i--; } - photos.moveToNext(); + medias.moveToNext(); } response.putArray("edges", edges); } private static void putBasicNodeInfo( - Cursor photos, + Cursor medias, WritableMap node, int mimeTypeIndex, int groupNameIndex, int dateTakenIndex) { - node.putString("type", photos.getString(mimeTypeIndex)); - node.putString("group_name", photos.getString(groupNameIndex)); - node.putDouble("timestamp", photos.getLong(dateTakenIndex) / 1000d); + node.putString("type", medias.getString(mimeTypeIndex)); + node.putString("group_name", medias.getString(groupNameIndex)); + node.putDouble("timestamp", medias.getLong(dateTakenIndex) / 1000d); } private static boolean putImageInfo( ContentResolver resolver, - Cursor photos, + Cursor medias, WritableMap node, int idIndex, int widthIndex, int heightIndex, int dataIndex) { WritableMap image = new WritableNativeMap(); - Uri photoUri = Uri.parse("file://" + photos.getString(dataIndex)); + Uri photoUri = Uri.parse("file://" + medias.getString(dataIndex)); image.putString("uri", photoUri.toString()); float width = -1; float height = -1; if (IS_JELLY_BEAN_OR_LATER) { - width = photos.getInt(widthIndex); - height = photos.getInt(heightIndex); + width = medias.getInt(widthIndex); + height = medias.getInt(heightIndex); } if (width <= 0 || height <= 0) { try { @@ -438,12 +452,12 @@ private static boolean putImageInfo( } private static void putLocationInfo( - Cursor photos, + Cursor medias, WritableMap node, int longitudeIndex, int latitudeIndex) { - double longitude = photos.getDouble(longitudeIndex); - double latitude = photos.getDouble(latitudeIndex); + double longitude = medias.getDouble(longitudeIndex); + double latitude = medias.getDouble(latitudeIndex); if (longitude > 0 || latitude > 0) { WritableMap location = new WritableNativeMap(); location.putDouble("longitude", longitude); From 1bfdb9912465d0c69665163233039525e95ef213 Mon Sep 17 00:00:00 2001 From: Kesha Antonov Date: Mon, 1 May 2017 10:33:15 +0300 Subject: [PATCH 0004/1101] use parent class MediaStore.MediaColumns to get width and height instead of Images --- .../react/modules/camera/CameraRollManager.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/modules/camera/CameraRollManager.java b/ReactAndroid/src/main/java/com/facebook/react/modules/camera/CameraRollManager.java index c882fe6a506a..7b5bbbb75646 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/modules/camera/CameraRollManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/modules/camera/CameraRollManager.java @@ -31,6 +31,7 @@ import android.os.Environment; import android.provider.MediaStore; import android.provider.MediaStore.Images; +import android.provider.MediaStore.MediaColumns; import android.text.TextUtils; import com.facebook.common.logging.FLog; @@ -82,8 +83,8 @@ public class CameraRollManager extends ReactContextBaseJavaModule { Images.Media.MIME_TYPE, Images.Media.BUCKET_DISPLAY_NAME, Images.Media.DATE_TAKEN, - Images.Media.WIDTH, - Images.Media.HEIGHT, + MediaStore.MediaColumns.WIDTH, + MediaStore.MediaColumns.HEIGHT, Images.Media.LONGITUDE, Images.Media.LATITUDE, MediaStore.MediaColumns.DATA @@ -373,8 +374,8 @@ private static void putEdges( int mimeTypeIndex = medias.getColumnIndex(Images.Media.MIME_TYPE); int groupNameIndex = medias.getColumnIndex(Images.Media.BUCKET_DISPLAY_NAME); int dateTakenIndex = medias.getColumnIndex(Images.Media.DATE_TAKEN); - int widthIndex = IS_JELLY_BEAN_OR_LATER ? medias.getColumnIndex(Images.Media.WIDTH) : -1; - int heightIndex = IS_JELLY_BEAN_OR_LATER ? medias.getColumnIndex(Images.Media.HEIGHT) : -1; + int widthIndex = IS_JELLY_BEAN_OR_LATER ? medias.getColumnIndex(MediaStore.MediaColumns.WIDTH) : -1; + int heightIndex = IS_JELLY_BEAN_OR_LATER ? medias.getColumnIndex(MediaStore.MediaColumns.HEIGHT) : -1; int longitudeIndex = medias.getColumnIndex(Images.Media.LONGITUDE); int latitudeIndex = medias.getColumnIndex(Images.Media.LATITUDE); int dataIndex = medias.getColumnIndex(MediaStore.MediaColumns.DATA); @@ -428,6 +429,7 @@ private static boolean putImageInfo( width = medias.getInt(widthIndex); height = medias.getInt(heightIndex); } + if (width <= 0 || height <= 0) { try { AssetFileDescriptor photoDescriptor = resolver.openAssetFileDescriptor(photoUri, "r"); @@ -448,6 +450,7 @@ private static boolean putImageInfo( image.putDouble("width", width); image.putDouble("height", height); node.putMap("image", image); + return true; } From 82c4b9f0b756ad05416d800668c5dd3e08358d5e Mon Sep 17 00:00:00 2001 From: Aaron Chiu Date: Fri, 5 May 2017 16:40:46 -0700 Subject: [PATCH 0005/1101] bump up priority of RN threads during startup Reviewed By: shergin, yungsters Differential Revision: D5002320 fbshipit-source-id: 8467370940d3742266b3bf319e9a38ae22eab98e --- .../facebook/react/ReactInstanceManager.java | 22 ++++++++++++- .../bridge/queue/MessageQueueThreadImpl.java | 32 ++----------------- .../bridge/queue/MessageQueueThreadSpec.java | 3 +- 3 files changed, 24 insertions(+), 33 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java b/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java index 84c7675aba04..6fde30b39882 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java @@ -742,7 +742,7 @@ private void runCreateReactContextOnNewThread(final ReactContextInitParams initP @Override public void run() { try { - Process.setThreadPriority(Process.THREAD_PRIORITY_DEFAULT); + Process.setThreadPriority(Process.THREAD_PRIORITY_DISPLAY); final ReactApplicationContext reactApplicationContext = createReactContext( initParams.getJsExecutorFactory().create(), initParams.getJsBundleLoader()); @@ -827,6 +827,26 @@ private void setupReactContext(ReactApplicationContext reactContext) { } Systrace.endSection(TRACE_TAG_REACT_JAVA_BRIDGE); ReactMarker.logMarker(SETUP_REACT_CONTEXT_END); + mCurrentReactContext.runOnJSQueueThread(new Runnable() { + @Override + public void run() { + Process.setThreadPriority(Process.THREAD_PRIORITY_DEFAULT); + } + }); + mCurrentReactContext.runOnNativeModulesQueueThread(new Runnable() { + @Override + public void run() { + Process.setThreadPriority(Process.THREAD_PRIORITY_DEFAULT); + } + }); + if (mUseSeparateUIBackgroundThread) { + mCurrentReactContext.runOnUiBackgroundQueueThread(new Runnable() { + @Override + public void run() { + Process.setThreadPriority(Process.THREAD_PRIORITY_DEFAULT); + } + }); + } } private void attachMeasuredRootViewToInstance( diff --git a/ReactAndroid/src/main/java/com/facebook/react/bridge/queue/MessageQueueThreadImpl.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/queue/MessageQueueThreadImpl.java index 041a2d8cc260..653d90dec8ac 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/bridge/queue/MessageQueueThreadImpl.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/queue/MessageQueueThreadImpl.java @@ -142,8 +142,6 @@ public static MessageQueueThreadImpl create( switch (spec.getThreadType()) { case MAIN_UI: return createForMainThread(spec.getName(), exceptionHandler); - case BACKGROUND_UI: - return startUIBackgroundThread(spec.getName(), spec.getStackSize(), exceptionHandler); case NEW_BACKGROUND: return startNewBackgroundThread(spec.getName(), spec.getStackSize(), exceptionHandler); default: @@ -177,29 +175,6 @@ public void run() { return mqt; } - public static MessageQueueThreadImpl startUIBackgroundThread( - final String name, - long stackSize, - QueueThreadExceptionHandler exceptionHandler) { - return startNewBackgroundThread(name, stackSize, exceptionHandler, true); - } - - public static MessageQueueThreadImpl startNewBackgroundThread( - final String name, - QueueThreadExceptionHandler exceptionHandler) { - return startNewBackgroundThread( - name, - MessageQueueThreadSpec.DEFAULT_STACK_SIZE_BYTES, - exceptionHandler); - } - - public static MessageQueueThreadImpl startNewBackgroundThread( - final String name, - long stackSize, - QueueThreadExceptionHandler exceptionHandler) { - return startNewBackgroundThread(name, stackSize, exceptionHandler, false); - } - /** * Creates and starts a new MessageQueueThreadImpl encapsulating a new Thread with a new Looper * running on it. Give it a name for easier debugging and optionally a suggested stack size. @@ -208,17 +183,14 @@ public static MessageQueueThreadImpl startNewBackgroundThread( private static MessageQueueThreadImpl startNewBackgroundThread( final String name, long stackSize, - QueueThreadExceptionHandler exceptionHandler, - final boolean forUIManagerModule) { + QueueThreadExceptionHandler exceptionHandler) { final SimpleSettableFuture looperFuture = new SimpleSettableFuture<>(); final SimpleSettableFuture mqtFuture = new SimpleSettableFuture<>(); Thread bgThread = new Thread(null, new Runnable() { @Override public void run() { - Process.setThreadPriority(forUIManagerModule ? - Process.THREAD_PRIORITY_DEFAULT + Process.THREAD_PRIORITY_MORE_FAVORABLE : - Process.THREAD_PRIORITY_DEFAULT); + Process.setThreadPriority(Process.THREAD_PRIORITY_DISPLAY); Looper.prepare(); looperFuture.set(Looper.myLooper()); diff --git a/ReactAndroid/src/main/java/com/facebook/react/bridge/queue/MessageQueueThreadSpec.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/queue/MessageQueueThreadSpec.java index f99c18e01845..800371c9c854 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/bridge/queue/MessageQueueThreadSpec.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/queue/MessageQueueThreadSpec.java @@ -22,12 +22,11 @@ public class MessageQueueThreadSpec { protected static enum ThreadType { MAIN_UI, - BACKGROUND_UI, NEW_BACKGROUND, } public static MessageQueueThreadSpec newUIBackgroundTreadSpec(String name) { - return new MessageQueueThreadSpec(ThreadType.BACKGROUND_UI, name); + return new MessageQueueThreadSpec(ThreadType.NEW_BACKGROUND, name); } public static MessageQueueThreadSpec newBackgroundThreadSpec(String name) { From 4a80dceac7e35b669301c7aa8180dcd0348f4e93 Mon Sep 17 00:00:00 2001 From: Eric Vicenti Date: Fri, 5 May 2017 20:50:47 -0700 Subject: [PATCH 0006/1101] Re-license and rename UIExplorer integration test app as RNTester Reviewed By: yungsters Differential Revision: D4950085 fbshipit-source-id: 44574b5d0ef0d2ad5dfc714309b18dc69cbad9ff --- .buckconfig | 2 +- Examples/.eslintrc | 5 - Examples/UIExplorer/UIExplorer/AppDelegate.h | 24 -- .../FlexibleSizeExampleView.h | 21 - .../UpdatePropertiesExampleView.h | 21 - Examples/UIExplorer/UIExplorer/main.m | 23 -- .../RCTConvert_YGValueTests.m | 45 --- .../app/src/main/res/values/strings.xml | 3 - Examples/UIExplorer/js/ExampleTypes.js | 39 -- Examples/UIExplorer/js/ImageEditingExample.js | 331 ---------------- Examples/UIExplorer/js/UIExplorerActions.js | 71 ---- .../js/UIExplorerExampleContainer.js | 65 ---- .../js/UIExplorerNavigationReducer.js | 69 ---- Examples/UIExplorer/js/URIActionMap.js | 64 --- Examples/UIExplorer/js/createExamplePage.js | 44 --- IntegrationTests/IntegrationTestsApp.js | 2 +- IntegrationTests/SyncMethodTest.js | 6 +- LICENSE-examples | 9 - Libraries/Experimental/IncrementalExample.js | 15 +- Libraries/Interaction/PanResponder.js | 2 +- Libraries/Text/TextUpdateTest.js | 15 +- README.md | 4 +- {Examples/UIExplorer => RNTester}/README.md | 14 +- .../RNTester-tvOS}/Info.plist | 0 .../RNTester.xcodeproj}/project.pbxproj | 364 +++++++++--------- .../xcschemes/RNTester-tvOS.xcscheme | 38 +- .../xcshareddata/xcschemes/RNTester.xcscheme | 56 +-- RNTester/RNTester/AppDelegate.h | 20 + .../RNTester}/AppDelegate.m | 20 +- .../RNTester}/Base.lproj/LaunchScreen.xib | 2 +- .../AppIcon.appiconset/Contents.json | 0 .../AppIcon.appiconset/Icon-40@2x.png | Bin .../AppIcon.appiconset/Icon-40@3x.png | Bin .../AppIcon.appiconset/Icon-60@2x.png | Bin .../AppIcon.appiconset/Icon-60@3x.png | Bin .../AppIcon.appiconset/Icon-Small@2x.png | Bin .../AppIcon.appiconset/Icon-Small@3x.png | Bin .../RNTester}/Images.xcassets/Contents.json | 0 .../NavBarButtonPlus.imageset/Contents.json | 0 .../NavBarButtonPlus@3x.png | Bin .../story-background.imageset/Contents.json | 0 .../story-background@2x.png | Bin .../tabnav_list.imageset/Contents.json | 0 .../tabnav_list.imageset/tabnav_list@3x.png | Bin .../Contents.json | 0 .../tabnav_notification@3x.png | Bin .../tabnav_settings.imageset/Contents.json | 0 .../tabnav_settings@3x.png | Bin .../RNTester}/Info.plist | 2 +- .../FlexibleSizeExampleView.h | 17 + .../FlexibleSizeExampleView.m | 14 +- .../UpdatePropertiesExampleView.h | 17 + .../UpdatePropertiesExampleView.m | 14 +- .../RNTesterBundle}/ImageInBundle.png | Bin .../RNTester/RNTesterBundle}/Info.plist | 0 .../OtherImages.xcassets/Contents.json | 0 .../Contents.json | 0 .../react-logo.png | Bin .../RNTester}/legacy_image@2x.png | Bin RNTester/RNTester/main.m | 19 + .../RNTesterIntegrationTests}/Info.plist | 0 .../RCTLoggingTests.m | 14 +- .../RCTRootViewIntegrationTests.m | 1 + .../RCTUIManagerScenarioTests.m | 14 +- .../RNTesterIntegrationTests.m | 4 +- .../RNTesterSnapshotTests.m | 20 +- .../RNTesterTestModule.m | 6 +- .../testImageSnapshotTest_1@2x.png | Bin .../testImageSnapshotTest_1_tvOS.png | Bin .../testSimpleSnapshotTest_1@2x.png | Bin .../testSimpleSnapshotTest_1_tvOS.png | Bin .../testLayoutExample_1-iOS10@2x.png | Bin .../testLayoutExample_1-iOS10_tvOS.png | Bin .../testLayoutExample_1@2x.png | Bin .../testLayoutExample_1_tvOS.png | Bin .../testScrollViewExample_1-iOS10@2x.png | Bin .../testScrollViewExample_1-iOS10_tvOS.png | Bin .../testScrollViewExample_1@2x.png | Bin .../testScrollViewExample_1_tvOS.png | Bin .../testSliderExample_1-iOS10@2x.png | Bin .../testSliderExample_1@2x.png | Bin .../testSwitchExample_1-iOS10@2x.png | Bin .../testSwitchExample_1@2x.png | Bin .../testTabBarExample_1-iOS10@2x.png | Bin .../testTabBarExample_1-iOS10_tvOS.png | Bin .../testTabBarExample_1@2x.png | Bin .../testTabBarExample_1_tvOS.png | Bin .../testTextExample_1-iOS10@2x.png | Bin .../testTextExample_1-iOS10_tvOS.png | Bin .../testTextExample_1@2x.png | Bin .../testTextExample_1_tvOS.png | Bin .../testViewExample_1-iOS10@2x.png | Bin .../testViewExample_1-iOS10_tvOS.png | Bin .../testViewExample_1@2x.png | Bin .../testViewExample_1_tvOS.png | Bin .../RNTesterIntegrationTests}/blue_square.png | Bin .../RNTesterIntegrationTests}/red_square.png | Bin .../RNTesterLegacy.xcodeproj}/project.pbxproj | 364 +++++++++--------- .../xcschemes/RNTester-tvOS.xcscheme | 44 +-- .../xcshareddata/xcschemes/RNTester.xcscheme | 56 +-- .../RNTesterUnitTests}/Info.plist | 0 .../NSNotificationCenter+OCMAdditions.h | 0 .../RNTesterUnitTests}/OCMock/OCMArg.h | 0 .../RNTesterUnitTests}/OCMock/OCMConstraint.h | 0 .../RNTesterUnitTests}/OCMock/OCMLocation.h | 0 .../RNTesterUnitTests}/OCMock/OCMMacroState.h | 0 .../RNTesterUnitTests}/OCMock/OCMRecorder.h | 0 .../OCMock/OCMStubRecorder.h | 0 .../RNTesterUnitTests}/OCMock/OCMock.h | 0 .../RNTesterUnitTests}/OCMock/OCMockObject.h | 0 .../RNTesterUnitTests}/RCTAllocationTests.m | 14 +- .../RCTAnimationUtilsTests.m | 14 +- .../RNTesterUnitTests}/RCTBridgeTests.m | 16 +- .../RCTBundleURLProviderTests.m | 14 +- .../RCTComponentPropsTests.m | 16 +- .../RCTConvert_NSURLTests.m | 14 +- .../RCTConvert_YGValueTests.m | 41 ++ .../RNTesterUnitTests}/RCTDevMenuTests.m | 16 +- .../RCTEventDispatcherTests.m | 14 +- .../RNTesterUnitTests}/RCTFontTests.m | 14 +- .../RNTesterUnitTests}/RCTGzipTests.m | 14 +- .../RCTImageLoaderHelpers.h | 14 +- .../RCTImageLoaderHelpers.m | 14 +- .../RNTesterUnitTests}/RCTImageLoaderTests.m | 16 +- .../RNTesterUnitTests}/RCTImageUtilTests.m | 14 +- .../RNTesterUnitTests}/RCTJSCExecutorTests.m | 14 +- .../RNTesterUnitTests}/RCTJSONTests.m | 14 +- .../RCTMethodArgumentTests.m | 14 +- .../RCTModuleInitNotificationRaceTests.m | 16 +- .../RNTesterUnitTests}/RCTModuleInitTests.m | 16 +- .../RNTesterUnitTests}/RCTModuleMethodTests.m | 14 +- .../RCTMultipartStreamReaderTests.m | 14 +- .../RCTNativeAnimatedNodesManagerTests.m | 14 +- .../RNTesterUnitTests}/RCTShadowViewTests.m | 14 +- .../RNTesterUnitTests}/RCTUIManagerTests.m | 14 +- .../RNTesterUnitTests}/RCTURLUtilsTests.m | 14 +- .../RCTUnicodeDecodeTests.m | 14 +- .../RNTesterUnitTestsBundle.js | 2 +- .../RNTesterUnitTests}/libOCMock.a | Bin .../UIExplorer => RNTester}/android/app/BUCK | 4 +- .../android/app/build.gradle | 4 +- .../android/app/gradle.properties | 0 .../android/app/proguard-rules.pro | 0 .../android/app/react.gradle | 0 .../android/app/src/main/AndroidManifest.xml | 8 +- .../app/src/main/assets/fonts/notoserif.ttf | Bin .../assets/fonts/notoserif_bold_italic.ttf | Bin .../react/uiapp/RNTesterActivity.java | 26 +- .../react/uiapp/RNTesterApplication.java | 20 +- .../res/drawable/ic_create_black_48dp.png | Bin .../main/res/drawable/ic_menu_black_24dp.png | Bin .../res/drawable/ic_settings_black_48dp.png | Bin .../src/main/res/drawable/launcher_icon.png | Bin .../src/main/res/drawable/legacy_image.png | Bin .../app/src/main/res/layout/activity_main.xml | 2 +- .../app/src/main/res/values/strings.xml | 3 + .../app/src/main/res/values/styles.xml | 0 .../js/AccessibilityAndroidExample.android.js | 50 +-- .../js/AccessibilityIOSExample.js | 14 +- .../js/ActionSheetIOSExample.js | 14 +- .../js/ActivityIndicatorExample.js | 14 +- .../js/AdSupportIOSExample.js | 14 +- .../js/AlertExample.js | 20 +- .../js/AlertIOSExample.js | 14 +- .../js/AnimatedExample.js | 28 +- .../js/AnimatedGratuitousApp/AnExApp.js | 14 +- .../js/AnimatedGratuitousApp/AnExBobble.js | 14 +- .../js/AnimatedGratuitousApp/AnExChained.js | 14 +- .../js/AnimatedGratuitousApp/AnExScroll.js | 14 +- .../js/AnimatedGratuitousApp/AnExSet.js | 14 +- .../js/AnimatedGratuitousApp/AnExSlides.md | 0 .../js/AnimatedGratuitousApp/AnExTilt.js | 14 +- .../js/AnimatedGratuitousApp/trees.jpg | Bin .../js/AppStateExample.js | 14 +- .../js/AssetScaledImageExample.js | 14 +- .../js/AsyncStorageExample.js | 14 +- .../js/BorderExample.js | 13 +- .../js/BoxShadowExample.js | 13 +- .../js/ButtonExample.js | 14 +- .../js/CameraRollExample.js | 14 +- .../js/CameraRollView.js | 16 +- .../js/ClipboardExample.js | 14 +- .../js/DatePickerAndroidExample.js | 53 +-- .../js/DatePickerIOSExample.js | 14 +- RNTester/js/ExampleTypes.js | 27 ++ .../js/FlatListExample.js | 20 +- .../js/GeolocationExample.js | 15 +- .../js/ImageCapInsetsExample.js | 14 +- RNTester/js/ImageEditingExample.js | 11 + .../js/ImageExample.js | 18 +- .../js/KeyboardAvoidingViewExample.js | 12 +- .../js/LayoutAnimationExample.js | 14 +- .../js/LayoutEventsExample.js | 14 +- .../js/LayoutExample.js | 38 +- .../js/LinkingExample.js | 19 +- .../js/ListExampleShared.js | 14 +- .../js/ListViewExample.js | 20 +- .../js/ListViewGridLayoutExample.js | 14 +- .../js/ListViewPagingExample.js | 14 +- .../js/ModalExample.js | 14 +- .../js/MultiColumnExample.js | 20 +- .../js/NativeAnimationsExample.js | 20 +- .../js/NavigatorIOSColorsExample.js | 13 +- .../js/NavigatorIOSExample.js | 14 +- .../js/NetInfoExample.js | 14 +- .../js/OrientationChangeExample.js | 14 +- .../js/PanResponderExample.js | 14 +- .../js/PermissionsExampleAndroid.android.js | 14 +- .../js/PickerExample.js | 46 +-- .../js/PickerIOSExample.js | 14 +- .../js/PointerEventsExample.js | 14 +- .../js/ProgressBarAndroidExample.android.js | 38 +- .../js/ProgressViewIOSExample.js | 14 +- .../js/PushNotificationIOSExample.js | 14 +- .../js/RCTRootViewIOSExample.js | 18 +- RNTester/js/RNTesterActions.js | 59 +++ .../js/RNTesterApp.android.js | 62 ++- .../js/RNTesterApp.ios.js | 66 ++-- .../js/RNTesterBlock.js | 20 +- .../js/RNTesterButton.js | 20 +- RNTester/js/RNTesterExampleContainer.js | 53 +++ .../js/RNTesterExampleList.js | 44 +-- .../js/RNTesterList.android.js | 26 +- .../js/RNTesterList.ios.js | 26 +- RNTester/js/RNTesterNavigationReducer.js | 57 +++ .../js/RNTesterPage.js | 24 +- .../js/RNTesterSettingSwitchRow.js | 10 +- .../js/RNTesterStatePersister.js | 26 +- .../js/RNTesterTitle.js | 20 +- .../UIExplorer => RNTester}/js/RTLExample.js | 51 +-- .../js/RefreshControlExample.js | 14 +- .../js/RootViewSizeFlexibilityExampleApp.js | 14 +- .../js/ScrollViewExample.js | 14 +- .../js/ScrollViewSimpleExample.js | 14 +- .../js/SectionListExample.js | 20 +- .../js/SegmentedControlIOSExample.js | 14 +- .../js/SetPropertiesExampleApp.js | 14 +- .../js/ShareExample.js | 15 +- .../js/SliderExample.js | 14 +- .../js/SnapshotExample.js | 14 +- .../js/StatusBarExample.js | 14 +- .../js/SwipeableListViewExample.js | 20 +- .../js/SwitchExample.js | 14 +- .../js/TabBarIOSExample.js | 14 +- .../js/TextExample.android.js | 130 +++---- .../js/TextExample.ios.js | 14 +- .../js/TextInputExample.android.js | 14 +- .../js/TextInputExample.ios.js | 14 +- .../js/Thumbnails/bandaged.png | Bin .../js/Thumbnails/call.png | Bin .../js/Thumbnails/dislike.png | Bin .../js/Thumbnails/fist.png | Bin .../js/Thumbnails/flowers.png | Bin .../js/Thumbnails/heart.png | Bin .../js/Thumbnails/like.png | Bin .../js/Thumbnails/liking.png | Bin .../js/Thumbnails/party.png | Bin .../js/Thumbnails/poke.png | Bin .../js/Thumbnails/superlike.png | Bin .../js/Thumbnails/victory.png | Bin .../js/TimePickerAndroidExample.js | 33 +- .../js/TimerExample.js | 44 +-- .../js/ToastAndroidExample.android.js | 42 +- .../js/ToolbarAndroidExample.android.js | 50 +-- .../js/TouchableExample.js | 14 +- .../js/TransformExample.js | 13 +- .../js/TransparentHitTestExample.js | 0 RNTester/js/URIActionMap.js | 52 +++ .../js/VibrationExample.js | 14 +- .../js/VibrationIOSExample.js | 14 +- .../UIExplorer => RNTester}/js/ViewExample.js | 14 +- .../js/ViewPagerAndroidExample.android.js | 14 +- .../js/WebSocketExample.js | 18 +- .../js/WebViewExample.js | 14 +- .../UIExplorer => RNTester}/js/XHRExample.js | 14 +- .../js/XHRExampleBinaryUpload.js | 14 +- .../js/XHRExampleCookies.js | 14 +- .../js/XHRExampleDownload.js | 14 +- .../js/XHRExampleFetch.js | 14 +- .../js/XHRExampleFormData.js | 14 +- .../js/XHRExampleHeaders.js | 14 +- .../js/XHRExampleOnTimeOut.js | 14 +- .../UIExplorer => RNTester}/js/bunny.png | Bin RNTester/js/createExamplePage.js | 32 ++ .../UIExplorer => RNTester}/js/flux@3x.png | Bin {Examples/UIExplorer => RNTester}/js/hawk.png | Bin .../js/helloworld.html | 0 .../js/http_test_server.js | 16 +- .../js/messagingtest.html | 0 .../UIExplorer => RNTester}/js/relay@3x.png | Bin .../js/slider-left.png | Bin .../js/slider-left@2x.png | Bin .../js/slider-right.png | Bin .../js/slider-right@2x.png | Bin .../UIExplorer => RNTester}/js/slider.png | Bin .../UIExplorer => RNTester}/js/slider@2x.png | Bin .../js/uie_comment_highlighted@2x.png | Bin .../js/uie_comment_normal@2x.png | Bin .../js/uie_thumb_big.png | Bin .../js/uie_thumb_normal@2x.png | Bin .../js/uie_thumb_selected@2x.png | Bin .../js/websocket_test_server.js | 15 +- package.json | 2 +- runXcodeTests.sh | 4 +- scripts/objc-test-ios.sh | 6 +- scripts/objc-test-tvos.sh | 6 +- scripts/objc-test.sh | 16 +- scripts/test-manual-e2e.sh | 10 +- settings.gradle | 2 +- website/src/react-native/support.js | 2 +- 310 files changed, 1594 insertions(+), 3400 deletions(-) delete mode 100644 Examples/.eslintrc delete mode 100644 Examples/UIExplorer/UIExplorer/AppDelegate.h delete mode 100644 Examples/UIExplorer/UIExplorer/NativeExampleViews/FlexibleSizeExampleView.h delete mode 100644 Examples/UIExplorer/UIExplorer/NativeExampleViews/UpdatePropertiesExampleView.h delete mode 100644 Examples/UIExplorer/UIExplorer/main.m delete mode 100644 Examples/UIExplorer/UIExplorerUnitTests/RCTConvert_YGValueTests.m delete mode 100644 Examples/UIExplorer/android/app/src/main/res/values/strings.xml delete mode 100644 Examples/UIExplorer/js/ExampleTypes.js delete mode 100644 Examples/UIExplorer/js/ImageEditingExample.js delete mode 100644 Examples/UIExplorer/js/UIExplorerActions.js delete mode 100644 Examples/UIExplorer/js/UIExplorerExampleContainer.js delete mode 100644 Examples/UIExplorer/js/UIExplorerNavigationReducer.js delete mode 100644 Examples/UIExplorer/js/URIActionMap.js delete mode 100644 Examples/UIExplorer/js/createExamplePage.js delete mode 100644 LICENSE-examples rename {Examples/UIExplorer => RNTester}/README.md (84%) rename {Examples/UIExplorer/UIExplorer-tvOS => RNTester/RNTester-tvOS}/Info.plist (100%) rename {Examples/UIExplorer/UIExplorer.xcodeproj => RNTester/RNTester.xcodeproj}/project.pbxproj (86%) rename Examples/UIExplorer/UIExplorer.xcodeproj/xcshareddata/xcschemes/UIExplorer-tvOS.xcscheme => RNTester/RNTester.xcodeproj/xcshareddata/xcschemes/RNTester-tvOS.xcscheme (77%) rename Examples/UIExplorer/UIExplorer.xcodeproj/xcshareddata/xcschemes/UIExplorer.xcscheme => RNTester/RNTester.xcodeproj/xcshareddata/xcschemes/RNTester.xcscheme (75%) create mode 100644 RNTester/RNTester/AppDelegate.h rename {Examples/UIExplorer/UIExplorer => RNTester/RNTester}/AppDelegate.m (82%) rename {Examples/UIExplorer/UIExplorer => RNTester/RNTester}/Base.lproj/LaunchScreen.xib (93%) rename {Examples/UIExplorer/UIExplorer => RNTester/RNTester}/Images.xcassets/AppIcon.appiconset/Contents.json (100%) rename {Examples/UIExplorer/UIExplorer => RNTester/RNTester}/Images.xcassets/AppIcon.appiconset/Icon-40@2x.png (100%) rename {Examples/UIExplorer/UIExplorer => RNTester/RNTester}/Images.xcassets/AppIcon.appiconset/Icon-40@3x.png (100%) rename {Examples/UIExplorer/UIExplorer => RNTester/RNTester}/Images.xcassets/AppIcon.appiconset/Icon-60@2x.png (100%) rename {Examples/UIExplorer/UIExplorer => RNTester/RNTester}/Images.xcassets/AppIcon.appiconset/Icon-60@3x.png (100%) rename {Examples/UIExplorer/UIExplorer => RNTester/RNTester}/Images.xcassets/AppIcon.appiconset/Icon-Small@2x.png (100%) rename {Examples/UIExplorer/UIExplorer => RNTester/RNTester}/Images.xcassets/AppIcon.appiconset/Icon-Small@3x.png (100%) rename {Examples/UIExplorer/UIExplorer => RNTester/RNTester}/Images.xcassets/Contents.json (100%) rename {Examples/UIExplorer/UIExplorer => RNTester/RNTester}/Images.xcassets/NavBarButtonPlus.imageset/Contents.json (100%) rename {Examples/UIExplorer/UIExplorer => RNTester/RNTester}/Images.xcassets/NavBarButtonPlus.imageset/NavBarButtonPlus@3x.png (100%) rename {Examples/UIExplorer/UIExplorer => RNTester/RNTester}/Images.xcassets/story-background.imageset/Contents.json (100%) rename {Examples/UIExplorer/UIExplorer => RNTester/RNTester}/Images.xcassets/story-background.imageset/story-background@2x.png (100%) rename {Examples/UIExplorer/UIExplorer => RNTester/RNTester}/Images.xcassets/tabnav_list.imageset/Contents.json (100%) rename {Examples/UIExplorer/UIExplorer => RNTester/RNTester}/Images.xcassets/tabnav_list.imageset/tabnav_list@3x.png (100%) rename {Examples/UIExplorer/UIExplorer => RNTester/RNTester}/Images.xcassets/tabnav_notification.imageset/Contents.json (100%) rename {Examples/UIExplorer/UIExplorer => RNTester/RNTester}/Images.xcassets/tabnav_notification.imageset/tabnav_notification@3x.png (100%) rename {Examples/UIExplorer/UIExplorer => RNTester/RNTester}/Images.xcassets/tabnav_settings.imageset/Contents.json (100%) rename {Examples/UIExplorer/UIExplorer => RNTester/RNTester}/Images.xcassets/tabnav_settings.imageset/tabnav_settings@3x.png (100%) rename {Examples/UIExplorer/UIExplorer => RNTester/RNTester}/Info.plist (98%) create mode 100644 RNTester/RNTester/NativeExampleViews/FlexibleSizeExampleView.h rename {Examples/UIExplorer/UIExplorer => RNTester/RNTester}/NativeExampleViews/FlexibleSizeExampleView.m (82%) create mode 100644 RNTester/RNTester/NativeExampleViews/UpdatePropertiesExampleView.h rename {Examples/UIExplorer/UIExplorer => RNTester/RNTester}/NativeExampleViews/UpdatePropertiesExampleView.m (77%) rename {Examples/UIExplorer/UIExplorer/UIExplorerBundle => RNTester/RNTester/RNTesterBundle}/ImageInBundle.png (100%) rename {Examples/UIExplorer/UIExplorer/UIExplorerBundle => RNTester/RNTester/RNTesterBundle}/Info.plist (100%) rename {Examples/UIExplorer/UIExplorer/UIExplorerBundle => RNTester/RNTester/RNTesterBundle}/OtherImages.xcassets/Contents.json (100%) rename {Examples/UIExplorer/UIExplorer/UIExplorerBundle => RNTester/RNTester/RNTesterBundle}/OtherImages.xcassets/ImageInAssetCatalog.imageset/Contents.json (100%) rename {Examples/UIExplorer/UIExplorer/UIExplorerBundle => RNTester/RNTester/RNTesterBundle}/OtherImages.xcassets/ImageInAssetCatalog.imageset/react-logo.png (100%) rename {Examples/UIExplorer/UIExplorer => RNTester/RNTester}/legacy_image@2x.png (100%) create mode 100644 RNTester/RNTester/main.m rename {Examples/UIExplorer/UIExplorerIntegrationTests => RNTester/RNTesterIntegrationTests}/Info.plist (100%) rename {Examples/UIExplorer/UIExplorerIntegrationTests => RNTester/RNTesterIntegrationTests}/RCTLoggingTests.m (86%) rename {Examples/UIExplorer/UIExplorerIntegrationTests => RNTester/RNTesterIntegrationTests}/RCTRootViewIntegrationTests.m (99%) rename {Examples/UIExplorer/UIExplorerIntegrationTests => RNTester/RNTesterIntegrationTests}/RCTUIManagerScenarioTests.m (91%) rename Examples/UIExplorer/UIExplorerIntegrationTests/UIExplorerIntegrationTests.m => RNTester/RNTesterIntegrationTests/RNTesterIntegrationTests.m (95%) rename Examples/UIExplorer/UIExplorerIntegrationTests/UIExplorerSnapshotTests.m => RNTester/RNTesterIntegrationTests/RNTesterSnapshotTests.m (53%) rename Examples/UIExplorer/UIExplorerIntegrationTests/UIExplorerTestModule.m => RNTester/RNTesterIntegrationTests/RNTesterTestModule.m (80%) rename {Examples/UIExplorer/UIExplorerIntegrationTests => RNTester/RNTesterIntegrationTests}/ReferenceImages/IntegrationTests-IntegrationTestsApp/testImageSnapshotTest_1@2x.png (100%) rename {Examples/UIExplorer/UIExplorerIntegrationTests => RNTester/RNTesterIntegrationTests}/ReferenceImages/IntegrationTests-IntegrationTestsApp/testImageSnapshotTest_1_tvOS.png (100%) rename {Examples/UIExplorer/UIExplorerIntegrationTests => RNTester/RNTesterIntegrationTests}/ReferenceImages/IntegrationTests-IntegrationTestsApp/testSimpleSnapshotTest_1@2x.png (100%) rename {Examples/UIExplorer/UIExplorerIntegrationTests => RNTester/RNTesterIntegrationTests}/ReferenceImages/IntegrationTests-IntegrationTestsApp/testSimpleSnapshotTest_1_tvOS.png (100%) rename {Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-js-UIExplorerApp.ios => RNTester/RNTesterIntegrationTests/ReferenceImages/RNTester-js-RNTesterApp.ios}/testLayoutExample_1-iOS10@2x.png (100%) rename {Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-js-UIExplorerApp.ios => RNTester/RNTesterIntegrationTests/ReferenceImages/RNTester-js-RNTesterApp.ios}/testLayoutExample_1-iOS10_tvOS.png (100%) rename {Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-js-UIExplorerApp.ios => RNTester/RNTesterIntegrationTests/ReferenceImages/RNTester-js-RNTesterApp.ios}/testLayoutExample_1@2x.png (100%) rename {Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-js-UIExplorerApp.ios => RNTester/RNTesterIntegrationTests/ReferenceImages/RNTester-js-RNTesterApp.ios}/testLayoutExample_1_tvOS.png (100%) rename {Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-js-UIExplorerApp.ios => RNTester/RNTesterIntegrationTests/ReferenceImages/RNTester-js-RNTesterApp.ios}/testScrollViewExample_1-iOS10@2x.png (100%) rename {Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-js-UIExplorerApp.ios => RNTester/RNTesterIntegrationTests/ReferenceImages/RNTester-js-RNTesterApp.ios}/testScrollViewExample_1-iOS10_tvOS.png (100%) rename {Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-js-UIExplorerApp.ios => RNTester/RNTesterIntegrationTests/ReferenceImages/RNTester-js-RNTesterApp.ios}/testScrollViewExample_1@2x.png (100%) rename {Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-js-UIExplorerApp.ios => RNTester/RNTesterIntegrationTests/ReferenceImages/RNTester-js-RNTesterApp.ios}/testScrollViewExample_1_tvOS.png (100%) rename {Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-js-UIExplorerApp.ios => RNTester/RNTesterIntegrationTests/ReferenceImages/RNTester-js-RNTesterApp.ios}/testSliderExample_1-iOS10@2x.png (100%) rename {Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-js-UIExplorerApp.ios => RNTester/RNTesterIntegrationTests/ReferenceImages/RNTester-js-RNTesterApp.ios}/testSliderExample_1@2x.png (100%) rename {Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-js-UIExplorerApp.ios => RNTester/RNTesterIntegrationTests/ReferenceImages/RNTester-js-RNTesterApp.ios}/testSwitchExample_1-iOS10@2x.png (100%) rename {Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-js-UIExplorerApp.ios => RNTester/RNTesterIntegrationTests/ReferenceImages/RNTester-js-RNTesterApp.ios}/testSwitchExample_1@2x.png (100%) rename {Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-js-UIExplorerApp.ios => RNTester/RNTesterIntegrationTests/ReferenceImages/RNTester-js-RNTesterApp.ios}/testTabBarExample_1-iOS10@2x.png (100%) rename {Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-js-UIExplorerApp.ios => RNTester/RNTesterIntegrationTests/ReferenceImages/RNTester-js-RNTesterApp.ios}/testTabBarExample_1-iOS10_tvOS.png (100%) rename {Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-js-UIExplorerApp.ios => RNTester/RNTesterIntegrationTests/ReferenceImages/RNTester-js-RNTesterApp.ios}/testTabBarExample_1@2x.png (100%) rename {Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-js-UIExplorerApp.ios => RNTester/RNTesterIntegrationTests/ReferenceImages/RNTester-js-RNTesterApp.ios}/testTabBarExample_1_tvOS.png (100%) rename {Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-js-UIExplorerApp.ios => RNTester/RNTesterIntegrationTests/ReferenceImages/RNTester-js-RNTesterApp.ios}/testTextExample_1-iOS10@2x.png (100%) rename {Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-js-UIExplorerApp.ios => RNTester/RNTesterIntegrationTests/ReferenceImages/RNTester-js-RNTesterApp.ios}/testTextExample_1-iOS10_tvOS.png (100%) rename {Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-js-UIExplorerApp.ios => RNTester/RNTesterIntegrationTests/ReferenceImages/RNTester-js-RNTesterApp.ios}/testTextExample_1@2x.png (100%) rename {Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-js-UIExplorerApp.ios => RNTester/RNTesterIntegrationTests/ReferenceImages/RNTester-js-RNTesterApp.ios}/testTextExample_1_tvOS.png (100%) rename {Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-js-UIExplorerApp.ios => RNTester/RNTesterIntegrationTests/ReferenceImages/RNTester-js-RNTesterApp.ios}/testViewExample_1-iOS10@2x.png (100%) rename {Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-js-UIExplorerApp.ios => RNTester/RNTesterIntegrationTests/ReferenceImages/RNTester-js-RNTesterApp.ios}/testViewExample_1-iOS10_tvOS.png (100%) rename {Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-js-UIExplorerApp.ios => RNTester/RNTesterIntegrationTests/ReferenceImages/RNTester-js-RNTesterApp.ios}/testViewExample_1@2x.png (100%) rename {Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-js-UIExplorerApp.ios => RNTester/RNTesterIntegrationTests/ReferenceImages/RNTester-js-RNTesterApp.ios}/testViewExample_1_tvOS.png (100%) rename {Examples/UIExplorer/UIExplorerIntegrationTests => RNTester/RNTesterIntegrationTests}/blue_square.png (100%) rename {Examples/UIExplorer/UIExplorerIntegrationTests => RNTester/RNTesterIntegrationTests}/red_square.png (100%) rename {Examples/UIExplorer/UIExplorerLegacy.xcodeproj => RNTester/RNTesterLegacy.xcodeproj}/project.pbxproj (86%) rename Examples/UIExplorer/UIExplorerLegacy.xcodeproj/xcshareddata/xcschemes/UIExplorer-tvOS.xcscheme => RNTester/RNTesterLegacy.xcodeproj/xcshareddata/xcschemes/RNTester-tvOS.xcscheme (75%) rename Examples/UIExplorer/UIExplorerLegacy.xcodeproj/xcshareddata/xcschemes/UIExplorer.xcscheme => RNTester/RNTesterLegacy.xcodeproj/xcshareddata/xcschemes/RNTester.xcscheme (75%) rename {Examples/UIExplorer/UIExplorerUnitTests => RNTester/RNTesterUnitTests}/Info.plist (100%) rename {Examples/UIExplorer/UIExplorerUnitTests => RNTester/RNTesterUnitTests}/OCMock/NSNotificationCenter+OCMAdditions.h (100%) rename {Examples/UIExplorer/UIExplorerUnitTests => RNTester/RNTesterUnitTests}/OCMock/OCMArg.h (100%) rename {Examples/UIExplorer/UIExplorerUnitTests => RNTester/RNTesterUnitTests}/OCMock/OCMConstraint.h (100%) rename {Examples/UIExplorer/UIExplorerUnitTests => RNTester/RNTesterUnitTests}/OCMock/OCMLocation.h (100%) rename {Examples/UIExplorer/UIExplorerUnitTests => RNTester/RNTesterUnitTests}/OCMock/OCMMacroState.h (100%) rename {Examples/UIExplorer/UIExplorerUnitTests => RNTester/RNTesterUnitTests}/OCMock/OCMRecorder.h (100%) rename {Examples/UIExplorer/UIExplorerUnitTests => RNTester/RNTesterUnitTests}/OCMock/OCMStubRecorder.h (100%) rename {Examples/UIExplorer/UIExplorerUnitTests => RNTester/RNTesterUnitTests}/OCMock/OCMock.h (100%) rename {Examples/UIExplorer/UIExplorerUnitTests => RNTester/RNTesterUnitTests}/OCMock/OCMockObject.h (100%) rename {Examples/UIExplorer/UIExplorerUnitTests => RNTester/RNTesterUnitTests}/RCTAllocationTests.m (91%) rename {Examples/UIExplorer/UIExplorerUnitTests => RNTester/RNTesterUnitTests}/RCTAnimationUtilsTests.m (86%) rename {Examples/UIExplorer/UIExplorerUnitTests => RNTester/RNTesterUnitTests}/RCTBridgeTests.m (92%) rename {Examples/UIExplorer/UIExplorerUnitTests => RNTester/RNTesterUnitTests}/RCTBundleURLProviderTests.m (80%) rename {Examples/UIExplorer/UIExplorerUnitTests => RNTester/RNTesterUnitTests}/RCTComponentPropsTests.m (88%) rename {Examples/UIExplorer/UIExplorerUnitTests => RNTester/RNTesterUnitTests}/RCTConvert_NSURLTests.m (81%) create mode 100644 RNTester/RNTesterUnitTests/RCTConvert_YGValueTests.m rename {Examples/UIExplorer/UIExplorerUnitTests => RNTester/RNTesterUnitTests}/RCTDevMenuTests.m (67%) rename {Examples/UIExplorer/UIExplorerUnitTests => RNTester/RNTesterUnitTests}/RCTEventDispatcherTests.m (92%) rename {Examples/UIExplorer/UIExplorerUnitTests => RNTester/RNTesterUnitTests}/RCTFontTests.m (92%) rename {Examples/UIExplorer/UIExplorerUnitTests => RNTester/RNTesterUnitTests}/RCTGzipTests.m (75%) rename {Examples/UIExplorer/UIExplorerUnitTests => RNTester/RNTesterUnitTests}/RCTImageLoaderHelpers.h (73%) rename {Examples/UIExplorer/UIExplorerUnitTests => RNTester/RNTesterUnitTests}/RCTImageLoaderHelpers.m (81%) rename {Examples/UIExplorer/UIExplorerUnitTests => RNTester/RNTesterUnitTests}/RCTImageLoaderTests.m (90%) rename {Examples/UIExplorer/UIExplorerUnitTests => RNTester/RNTesterUnitTests}/RCTImageUtilTests.m (82%) rename {Examples/UIExplorer/UIExplorerUnitTests => RNTester/RNTesterUnitTests}/RCTJSCExecutorTests.m (59%) rename {Examples/UIExplorer/UIExplorerUnitTests => RNTester/RNTesterUnitTests}/RCTJSONTests.m (85%) rename {Examples/UIExplorer/UIExplorerUnitTests => RNTester/RNTesterUnitTests}/RCTMethodArgumentTests.m (92%) rename {Examples/UIExplorer/UIExplorerUnitTests => RNTester/RNTesterUnitTests}/RCTModuleInitNotificationRaceTests.m (76%) rename {Examples/UIExplorer/UIExplorerUnitTests => RNTester/RNTesterUnitTests}/RCTModuleInitTests.m (90%) rename {Examples/UIExplorer/UIExplorerUnitTests => RNTester/RNTesterUnitTests}/RCTModuleMethodTests.m (91%) rename {Examples/UIExplorer/UIExplorerUnitTests => RNTester/RNTesterUnitTests}/RCTMultipartStreamReaderTests.m (84%) rename {Examples/UIExplorer/UIExplorerUnitTests => RNTester/RNTesterUnitTests}/RCTNativeAnimatedNodesManagerTests.m (97%) rename {Examples/UIExplorer/UIExplorerUnitTests => RNTester/RNTesterUnitTests}/RCTShadowViewTests.m (92%) rename {Examples/UIExplorer/UIExplorerUnitTests => RNTester/RNTesterUnitTests}/RCTUIManagerTests.m (91%) rename {Examples/UIExplorer/UIExplorerUnitTests => RNTester/RNTesterUnitTests}/RCTURLUtilsTests.m (79%) rename {Examples/UIExplorer/UIExplorerUnitTests => RNTester/RNTesterUnitTests}/RCTUnicodeDecodeTests.m (81%) rename Examples/UIExplorer/UIExplorerUnitTests/UIExplorerUnitTestsBundle.js => RNTester/RNTesterUnitTests/RNTesterUnitTestsBundle.js (90%) rename {Examples/UIExplorer/UIExplorerUnitTests => RNTester/RNTesterUnitTests}/libOCMock.a (100%) rename {Examples/UIExplorer => RNTester}/android/app/BUCK (94%) rename {Examples/UIExplorer => RNTester}/android/app/build.gradle (97%) rename {Examples/UIExplorer => RNTester}/android/app/gradle.properties (100%) rename {Examples/UIExplorer => RNTester}/android/app/proguard-rules.pro (100%) rename {Examples/UIExplorer => RNTester}/android/app/react.gradle (100%) rename {Examples/UIExplorer => RNTester}/android/app/src/main/AndroidManifest.xml (88%) rename {Examples/UIExplorer => RNTester}/android/app/src/main/assets/fonts/notoserif.ttf (100%) rename {Examples/UIExplorer => RNTester}/android/app/src/main/assets/fonts/notoserif_bold_italic.ttf (100%) rename Examples/UIExplorer/android/app/src/main/java/com/facebook/react/uiapp/UIExplorerActivity.java => RNTester/android/app/src/main/java/com/facebook/react/uiapp/RNTesterActivity.java (54%) rename Examples/UIExplorer/android/app/src/main/java/com/facebook/react/uiapp/UIExplorerApplication.java => RNTester/android/app/src/main/java/com/facebook/react/uiapp/RNTesterApplication.java (52%) rename {Examples/UIExplorer => RNTester}/android/app/src/main/res/drawable/ic_create_black_48dp.png (100%) rename {Examples/UIExplorer => RNTester}/android/app/src/main/res/drawable/ic_menu_black_24dp.png (100%) rename {Examples/UIExplorer => RNTester}/android/app/src/main/res/drawable/ic_settings_black_48dp.png (100%) rename {Examples/UIExplorer => RNTester}/android/app/src/main/res/drawable/launcher_icon.png (100%) rename {Examples/UIExplorer => RNTester}/android/app/src/main/res/drawable/legacy_image.png (100%) rename {Examples/UIExplorer => RNTester}/android/app/src/main/res/layout/activity_main.xml (91%) create mode 100644 RNTester/android/app/src/main/res/values/strings.xml rename {Examples/UIExplorer => RNTester}/android/app/src/main/res/values/styles.xml (100%) rename {Examples/UIExplorer => RNTester}/js/AccessibilityAndroidExample.android.js (80%) rename {Examples/UIExplorer => RNTester}/js/AccessibilityIOSExample.js (79%) rename {Examples/UIExplorer => RNTester}/js/ActionSheetIOSExample.js (87%) rename {Examples/UIExplorer => RNTester}/js/ActivityIndicatorExample.js (85%) rename {Examples/UIExplorer => RNTester}/js/AdSupportIOSExample.js (75%) rename {Examples/UIExplorer => RNTester}/js/AlertExample.js (83%) rename {Examples/UIExplorer => RNTester}/js/AlertIOSExample.js (87%) rename {Examples/UIExplorer => RNTester}/js/AnimatedExample.js (87%) rename {Examples/UIExplorer => RNTester}/js/AnimatedGratuitousApp/AnExApp.js (94%) rename {Examples/UIExplorer => RNTester}/js/AnimatedGratuitousApp/AnExBobble.js (88%) rename {Examples/UIExplorer => RNTester}/js/AnimatedGratuitousApp/AnExChained.js (85%) rename {Examples/UIExplorer => RNTester}/js/AnimatedGratuitousApp/AnExScroll.js (82%) rename {Examples/UIExplorer => RNTester}/js/AnimatedGratuitousApp/AnExSet.js (86%) rename {Examples/UIExplorer => RNTester}/js/AnimatedGratuitousApp/AnExSlides.md (100%) rename {Examples/UIExplorer => RNTester}/js/AnimatedGratuitousApp/AnExTilt.js (85%) rename {Examples/UIExplorer => RNTester}/js/AnimatedGratuitousApp/trees.jpg (100%) rename {Examples/UIExplorer => RNTester}/js/AppStateExample.js (79%) rename {Examples/UIExplorer => RNTester}/js/AssetScaledImageExample.js (75%) rename {Examples/UIExplorer => RNTester}/js/AsyncStorageExample.js (81%) rename {Examples/UIExplorer => RNTester}/js/BorderExample.js (89%) rename {Examples/UIExplorer => RNTester}/js/BoxShadowExample.js (76%) rename {Examples/UIExplorer => RNTester}/js/ButtonExample.js (79%) rename {Examples/UIExplorer => RNTester}/js/CameraRollExample.js (84%) rename {Examples/UIExplorer => RNTester}/js/CameraRollView.js (89%) rename {Examples/UIExplorer => RNTester}/js/ClipboardExample.js (66%) rename {Examples/UIExplorer => RNTester}/js/DatePickerAndroidExample.js (72%) rename {Examples/UIExplorer => RNTester}/js/DatePickerIOSExample.js (85%) create mode 100644 RNTester/js/ExampleTypes.js rename {Examples/UIExplorer => RNTester}/js/FlatListExample.js (88%) rename {Examples/UIExplorer => RNTester}/js/GeolocationExample.js (73%) rename {Examples/UIExplorer => RNTester}/js/ImageCapInsetsExample.js (74%) create mode 100644 RNTester/js/ImageEditingExample.js rename {Examples/UIExplorer => RNTester}/js/ImageExample.js (96%) rename {Examples/UIExplorer => RNTester}/js/KeyboardAvoidingViewExample.js (89%) rename {Examples/UIExplorer => RNTester}/js/LayoutAnimationExample.js (83%) rename {Examples/UIExplorer => RNTester}/js/LayoutEventsExample.js (86%) rename {Examples/UIExplorer => RNTester}/js/LayoutExample.js (81%) rename {Examples/UIExplorer => RNTester}/js/LinkingExample.js (70%) rename {Examples/UIExplorer => RNTester}/js/ListExampleShared.js (92%) rename {Examples/UIExplorer => RNTester}/js/ListViewExample.js (84%) rename {Examples/UIExplorer => RNTester}/js/ListViewGridLayoutExample.js (84%) rename {Examples/UIExplorer => RNTester}/js/ListViewPagingExample.js (91%) rename {Examples/UIExplorer => RNTester}/js/ModalExample.js (89%) rename {Examples/UIExplorer => RNTester}/js/MultiColumnExample.js (85%) rename {Examples/UIExplorer => RNTester}/js/NativeAnimationsExample.js (93%) rename {Examples/UIExplorer => RNTester}/js/NavigatorIOSColorsExample.js (73%) rename {Examples/UIExplorer => RNTester}/js/NavigatorIOSExample.js (92%) rename {Examples/UIExplorer => RNTester}/js/NetInfoExample.js (86%) rename {Examples/UIExplorer => RNTester}/js/OrientationChangeExample.js (70%) rename {Examples/UIExplorer => RNTester}/js/PanResponderExample.js (83%) rename {Examples/UIExplorer => RNTester}/js/PermissionsExampleAndroid.android.js (83%) rename {Examples/UIExplorer => RNTester}/js/PickerExample.js (73%) rename {Examples/UIExplorer => RNTester}/js/PickerIOSExample.js (85%) rename {Examples/UIExplorer => RNTester}/js/PointerEventsExample.js (90%) rename {Examples/UIExplorer => RNTester}/js/ProgressBarAndroidExample.android.js (54%) rename {Examples/UIExplorer => RNTester}/js/ProgressViewIOSExample.js (75%) rename {Examples/UIExplorer => RNTester}/js/PushNotificationIOSExample.js (88%) rename {Examples/UIExplorer => RNTester}/js/RCTRootViewIOSExample.js (75%) create mode 100644 RNTester/js/RNTesterActions.js rename Examples/UIExplorer/js/UIExplorerApp.android.js => RNTester/js/RNTesterApp.android.js (72%) rename Examples/UIExplorer/js/UIExplorerApp.ios.js => RNTester/js/RNTesterApp.ios.js (62%) rename Examples/UIExplorer/js/UIExplorerBlock.js => RNTester/js/RNTesterBlock.js (71%) rename Examples/UIExplorer/js/UIExplorerButton.js => RNTester/js/RNTesterButton.js (59%) create mode 100644 RNTester/js/RNTesterExampleContainer.js rename Examples/UIExplorer/js/UIExplorerExampleList.js => RNTester/js/RNTesterExampleList.js (79%) rename Examples/UIExplorer/js/UIExplorerList.android.js => RNTester/js/RNTesterList.android.js (84%) rename Examples/UIExplorer/js/UIExplorerList.ios.js => RNTester/js/RNTesterList.ios.js (89%) create mode 100644 RNTester/js/RNTesterNavigationReducer.js rename Examples/UIExplorer/js/UIExplorerPage.js => RNTester/js/RNTesterPage.js (66%) rename Examples/UIExplorer/js/UIExplorerSettingSwitchRow.js => RNTester/js/RNTesterSettingSwitchRow.js (79%) rename Examples/UIExplorer/js/UIExplorerStatePersister.js => RNTester/js/RNTesterStatePersister.js (65%) rename Examples/UIExplorer/js/UIExplorerTitle.js => RNTester/js/RNTesterTitle.js (52%) rename {Examples/UIExplorer => RNTester}/js/RTLExample.js (86%) rename {Examples/UIExplorer => RNTester}/js/RefreshControlExample.js (80%) rename {Examples/UIExplorer => RNTester}/js/RootViewSizeFlexibilityExampleApp.js (70%) rename {Examples/UIExplorer => RNTester}/js/ScrollViewExample.js (86%) rename {Examples/UIExplorer => RNTester}/js/ScrollViewSimpleExample.js (73%) rename {Examples/UIExplorer => RNTester}/js/SectionListExample.js (88%) rename {Examples/UIExplorer => RNTester}/js/SegmentedControlIOSExample.js (85%) rename {Examples/UIExplorer => RNTester}/js/SetPropertiesExampleApp.js (56%) rename {Examples/UIExplorer => RNTester}/js/ShareExample.js (81%) rename {Examples/UIExplorer => RNTester}/js/SliderExample.js (84%) rename {Examples/UIExplorer => RNTester}/js/SnapshotExample.js (68%) rename {Examples/UIExplorer => RNTester}/js/StatusBarExample.js (94%) rename {Examples/UIExplorer => RNTester}/js/SwipeableListViewExample.js (86%) rename {Examples/UIExplorer => RNTester}/js/SwitchExample.js (85%) rename {Examples/UIExplorer => RNTester}/js/TabBarIOSExample.js (86%) rename {Examples/UIExplorer => RNTester}/js/TextExample.android.js (83%) rename {Examples/UIExplorer => RNTester}/js/TextExample.ios.js (96%) rename {Examples/UIExplorer => RNTester}/js/TextInputExample.android.js (96%) rename {Examples/UIExplorer => RNTester}/js/TextInputExample.ios.js (96%) rename {Examples/UIExplorer => RNTester}/js/Thumbnails/bandaged.png (100%) rename {Examples/UIExplorer => RNTester}/js/Thumbnails/call.png (100%) rename {Examples/UIExplorer => RNTester}/js/Thumbnails/dislike.png (100%) rename {Examples/UIExplorer => RNTester}/js/Thumbnails/fist.png (100%) rename {Examples/UIExplorer => RNTester}/js/Thumbnails/flowers.png (100%) rename {Examples/UIExplorer => RNTester}/js/Thumbnails/heart.png (100%) rename {Examples/UIExplorer => RNTester}/js/Thumbnails/like.png (100%) rename {Examples/UIExplorer => RNTester}/js/Thumbnails/liking.png (100%) rename {Examples/UIExplorer => RNTester}/js/Thumbnails/party.png (100%) rename {Examples/UIExplorer => RNTester}/js/Thumbnails/poke.png (100%) rename {Examples/UIExplorer => RNTester}/js/Thumbnails/superlike.png (100%) rename {Examples/UIExplorer => RNTester}/js/Thumbnails/victory.png (100%) rename {Examples/UIExplorer => RNTester}/js/TimePickerAndroidExample.js (70%) rename {Examples/UIExplorer => RNTester}/js/TimerExample.js (83%) rename {Examples/UIExplorer => RNTester}/js/ToastAndroidExample.android.js (65%) rename {Examples/UIExplorer => RNTester}/js/ToolbarAndroidExample.android.js (72%) rename {Examples/UIExplorer => RNTester}/js/TouchableExample.js (95%) rename {Examples/UIExplorer => RNTester}/js/TransformExample.js (90%) rename {Examples/UIExplorer => RNTester}/js/TransparentHitTestExample.js (100%) create mode 100644 RNTester/js/URIActionMap.js rename {Examples/UIExplorer => RNTester}/js/VibrationExample.js (81%) rename {Examples/UIExplorer => RNTester}/js/VibrationIOSExample.js (61%) rename {Examples/UIExplorer => RNTester}/js/ViewExample.js (90%) rename {Examples/UIExplorer => RNTester}/js/ViewPagerAndroidExample.android.js (91%) rename {Examples/UIExplorer => RNTester}/js/WebSocketExample.js (90%) rename {Examples/UIExplorer => RNTester}/js/WebViewExample.js (94%) rename {Examples/UIExplorer => RNTester}/js/XHRExample.js (69%) rename {Examples/UIExplorer => RNTester}/js/XHRExampleBinaryUpload.js (84%) rename {Examples/UIExplorer => RNTester}/js/XHRExampleCookies.js (84%) rename {Examples/UIExplorer => RNTester}/js/XHRExampleDownload.js (90%) rename {Examples/UIExplorer => RNTester}/js/XHRExampleFetch.js (82%) rename {Examples/UIExplorer => RNTester}/js/XHRExampleFormData.js (90%) rename {Examples/UIExplorer => RNTester}/js/XHRExampleHeaders.js (79%) rename {Examples/UIExplorer => RNTester}/js/XHRExampleOnTimeOut.js (76%) rename {Examples/UIExplorer => RNTester}/js/bunny.png (100%) create mode 100644 RNTester/js/createExamplePage.js rename {Examples/UIExplorer => RNTester}/js/flux@3x.png (100%) rename {Examples/UIExplorer => RNTester}/js/hawk.png (100%) rename {Examples/UIExplorer => RNTester}/js/helloworld.html (100%) rename {Examples/UIExplorer => RNTester}/js/http_test_server.js (52%) rename {Examples/UIExplorer => RNTester}/js/messagingtest.html (100%) rename {Examples/UIExplorer => RNTester}/js/relay@3x.png (100%) rename {Examples/UIExplorer => RNTester}/js/slider-left.png (100%) rename {Examples/UIExplorer => RNTester}/js/slider-left@2x.png (100%) rename {Examples/UIExplorer => RNTester}/js/slider-right.png (100%) rename {Examples/UIExplorer => RNTester}/js/slider-right@2x.png (100%) rename {Examples/UIExplorer => RNTester}/js/slider.png (100%) rename {Examples/UIExplorer => RNTester}/js/slider@2x.png (100%) rename {Examples/UIExplorer => RNTester}/js/uie_comment_highlighted@2x.png (100%) rename {Examples/UIExplorer => RNTester}/js/uie_comment_normal@2x.png (100%) rename {Examples/UIExplorer => RNTester}/js/uie_thumb_big.png (100%) rename {Examples/UIExplorer => RNTester}/js/uie_thumb_normal@2x.png (100%) rename {Examples/UIExplorer => RNTester}/js/uie_thumb_selected@2x.png (100%) rename {Examples/UIExplorer => RNTester}/js/websocket_test_server.js (62%) diff --git a/.buckconfig b/.buckconfig index 8e9e59e246b7..41234774bb28 100644 --- a/.buckconfig +++ b/.buckconfig @@ -7,4 +7,4 @@ [alias] movies = //Examples/Movies/android/app:app - uiexplorer = //Examples/UIExplorer/android/app:app + rntester = //RNTester/android/app:app diff --git a/Examples/.eslintrc b/Examples/.eslintrc deleted file mode 100644 index 8dc9d22c11ec..000000000000 --- a/Examples/.eslintrc +++ /dev/null @@ -1,5 +0,0 @@ -{ - "rules": { - "no-alert": 0 - } -} diff --git a/Examples/UIExplorer/UIExplorer/AppDelegate.h b/Examples/UIExplorer/UIExplorer/AppDelegate.h deleted file mode 100644 index f3e75417c840..000000000000 --- a/Examples/UIExplorer/UIExplorer/AppDelegate.h +++ /dev/null @@ -1,24 +0,0 @@ -/** - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -#import - -@class RCTBridge; - -@interface AppDelegate : UIResponder - -@property (nonatomic, strong) UIWindow *window; -@property (nonatomic, readonly) RCTBridge *bridge; - -@end diff --git a/Examples/UIExplorer/UIExplorer/NativeExampleViews/FlexibleSizeExampleView.h b/Examples/UIExplorer/UIExplorer/NativeExampleViews/FlexibleSizeExampleView.h deleted file mode 100644 index 3f8a854911c6..000000000000 --- a/Examples/UIExplorer/UIExplorer/NativeExampleViews/FlexibleSizeExampleView.h +++ /dev/null @@ -1,21 +0,0 @@ -/** - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -#import - -#import - -@interface FlexibleSizeExampleView : RCTView - -@end diff --git a/Examples/UIExplorer/UIExplorer/NativeExampleViews/UpdatePropertiesExampleView.h b/Examples/UIExplorer/UIExplorer/NativeExampleViews/UpdatePropertiesExampleView.h deleted file mode 100644 index 537fb90b095a..000000000000 --- a/Examples/UIExplorer/UIExplorer/NativeExampleViews/UpdatePropertiesExampleView.h +++ /dev/null @@ -1,21 +0,0 @@ -/** - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -#import - -#import - -@interface UpdatePropertiesExampleView : RCTView - -@end diff --git a/Examples/UIExplorer/UIExplorer/main.m b/Examples/UIExplorer/UIExplorer/main.m deleted file mode 100644 index b2a6473023a8..000000000000 --- a/Examples/UIExplorer/UIExplorer/main.m +++ /dev/null @@ -1,23 +0,0 @@ -/** - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -#import - -#import "AppDelegate.h" - -int main(int argc, char * argv[]) { - @autoreleasepool { - return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); - } -} diff --git a/Examples/UIExplorer/UIExplorerUnitTests/RCTConvert_YGValueTests.m b/Examples/UIExplorer/UIExplorerUnitTests/RCTConvert_YGValueTests.m deleted file mode 100644 index 299dc5b16989..000000000000 --- a/Examples/UIExplorer/UIExplorerUnitTests/RCTConvert_YGValueTests.m +++ /dev/null @@ -1,45 +0,0 @@ -/** - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -#import - -#import - -@interface RCTConvert_YGValueTests : XCTestCase - -@end - -@implementation RCTConvert_YGValueTests - -- (void)testUndefined -{ - YGValue value = [RCTConvert YGValue:nil]; - XCTAssertEqual(value.unit, YGUnitUndefined); -} - -- (void)testNumberPoints -{ - YGValue value = [RCTConvert YGValue:@100]; - XCTAssertEqual(value.unit, YGUnitPoint); - XCTAssertEqual(value.value, 100); -} - -- (void)testStringPercent -{ - YGValue value = [RCTConvert YGValue:@"100%"]; - XCTAssertEqual(value.unit, YGUnitPercent); - XCTAssertEqual(value.value, 100); -} - -@end diff --git a/Examples/UIExplorer/android/app/src/main/res/values/strings.xml b/Examples/UIExplorer/android/app/src/main/res/values/strings.xml deleted file mode 100644 index 0b8cb6bc3cb4..000000000000 --- a/Examples/UIExplorer/android/app/src/main/res/values/strings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - UIExplorer App - diff --git a/Examples/UIExplorer/js/ExampleTypes.js b/Examples/UIExplorer/js/ExampleTypes.js deleted file mode 100644 index 76ec2dfa3467..000000000000 --- a/Examples/UIExplorer/js/ExampleTypes.js +++ /dev/null @@ -1,39 +0,0 @@ -/** - * Copyright (c) 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * @providesModule ExampleTypes - * @flow - */ -'use strict'; - -import type React from 'react'; - -export type Example = { - title: string, - render: () => ?React.Element, - description?: string, - platform?: string, -}; - -export type ExampleModule = { - title: string, - description: string, - examples: Array, -}; diff --git a/Examples/UIExplorer/js/ImageEditingExample.js b/Examples/UIExplorer/js/ImageEditingExample.js deleted file mode 100644 index dc6953e1e65c..000000000000 --- a/Examples/UIExplorer/js/ImageEditingExample.js +++ /dev/null @@ -1,331 +0,0 @@ -/* - * Copyright (c) 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * @flow - * @providesModule ImageEditingExample - */ -'use strict'; - -var React = require('react'); -var ReactNative = require('react-native'); -var { - CameraRoll, - Image, - ImageEditor, - Platform, - ScrollView, - StyleSheet, - Text, - TouchableHighlight, - View, -} = ReactNative; - -var PAGE_SIZE = 20; - -type ImageOffset = { - x: number; - y: number; -}; - -type ImageSize = { - width: number; - height: number; -}; - -type ImageCropData = { - offset: ImageOffset; - size: ImageSize; - displaySize?: ?ImageSize; - resizeMode?: ?any; -}; - -class SquareImageCropper extends React.Component { - state: any; - _isMounted: boolean; - _transformData: ImageCropData; - - constructor(props) { - super(props); - this._isMounted = true; - this.state = { - randomPhoto: null, - measuredSize: null, - croppedImageURI: null, - cropError: null, - }; - this._fetchRandomPhoto(); - } - - async _fetchRandomPhoto() { - try { - const data = await CameraRoll.getPhotos({first: PAGE_SIZE}); - if (!this._isMounted) { - return; - } - var edges = data.edges; - var edge = edges[Math.floor(Math.random() * edges.length)]; - var randomPhoto = edge && edge.node && edge.node.image; - if (randomPhoto) { - this.setState({randomPhoto}); - } - } catch (error) { - console.warn("Can't get a photo from camera roll", error); - } - } - - componentWillUnmount() { - this._isMounted = false; - } - - render() { - if (!this.state.measuredSize) { - return ( - { - var measuredWidth = event.nativeEvent.layout.width; - if (!measuredWidth) { - return; - } - this.setState({ - measuredSize: {width: measuredWidth, height: measuredWidth}, - }); - }} - /> - ); - } - - if (!this.state.croppedImageURI) { - return this._renderImageCropper(); - } - return this._renderCroppedImage(); - } - - _renderImageCropper() { - if (!this.state.randomPhoto) { - return ( - - ); - } - var error = null; - if (this.state.cropError) { - error = ( - {this.state.cropError.message} - ); - } - return ( - - Drag the image within the square to crop: - this._transformData = data} - /> - - - - Crop - - - - {error} - - ); - } - - _renderCroppedImage() { - return ( - - Here is the cropped image: - - - - - Try again - - - - - ); - } - - _crop() { - ImageEditor.cropImage( - this.state.randomPhoto.uri, - this._transformData, - (croppedImageURI) => this.setState({croppedImageURI}), - (cropError) => this.setState({cropError}) - ); - } - - _reset() { - this.setState({ - randomPhoto: null, - croppedImageURI: null, - cropError: null, - }); - this._fetchRandomPhoto(); - } - -} - -class ImageCropper extends React.Component { - _contentOffset: ImageOffset; - _maximumZoomScale: number; - _minimumZoomScale: number; - _scaledImageSize: ImageSize; - _horizontal: boolean; - - componentWillMount() { - // Scale an image to the minimum size that is large enough to completely - // fill the crop box. - var widthRatio = this.props.image.width / this.props.size.width; - var heightRatio = this.props.image.height / this.props.size.height; - this._horizontal = widthRatio > heightRatio; - if (this._horizontal) { - this._scaledImageSize = { - width: this.props.image.width / heightRatio, - height: this.props.size.height, - }; - } else { - this._scaledImageSize = { - width: this.props.size.width, - height: this.props.image.height / widthRatio, - }; - if (Platform.OS === 'android') { - // hack to work around Android ScrollView a) not supporting zoom, and - // b) not supporting vertical scrolling when nested inside another - // vertical ScrollView (which it is, when displayed inside UIExplorer) - this._scaledImageSize.width *= 2; - this._scaledImageSize.height *= 2; - this._horizontal = true; - } - } - this._contentOffset = { - x: (this._scaledImageSize.width - this.props.size.width) / 2, - y: (this._scaledImageSize.height - this.props.size.height) / 2, - }; - this._maximumZoomScale = Math.min( - this.props.image.width / this._scaledImageSize.width, - this.props.image.height / this._scaledImageSize.height - ); - this._minimumZoomScale = Math.max( - this.props.size.width / this._scaledImageSize.width, - this.props.size.height / this._scaledImageSize.height - ); - this._updateTransformData( - this._contentOffset, - this._scaledImageSize, - this.props.size - ); - } - - _onScroll(event) { - this._updateTransformData( - event.nativeEvent.contentOffset, - event.nativeEvent.contentSize, - event.nativeEvent.layoutMeasurement - ); - } - - _updateTransformData(offset, scaledImageSize, croppedImageSize) { - var offsetRatioX = offset.x / scaledImageSize.width; - var offsetRatioY = offset.y / scaledImageSize.height; - var sizeRatioX = croppedImageSize.width / scaledImageSize.width; - var sizeRatioY = croppedImageSize.height / scaledImageSize.height; - - var cropData: ImageCropData = { - offset: { - x: this.props.image.width * offsetRatioX, - y: this.props.image.height * offsetRatioY, - }, - size: { - width: this.props.image.width * sizeRatioX, - height: this.props.image.height * sizeRatioY, - }, - }; - this.props.onTransformDataChange && this.props.onTransformDataChange(cropData); - } - - render() { - return ( - - - - ); - } - -} - -exports.framework = 'React'; -exports.title = 'ImageEditor'; -exports.description = 'Cropping and scaling with ImageEditor'; -exports.examples = [{ - title: 'Image Cropping', - render() { - return ; - } -}]; - -var styles = StyleSheet.create({ - container: { - flex: 1, - alignSelf: 'stretch', - }, - imageCropper: { - alignSelf: 'center', - marginTop: 12, - }, - cropButtonTouchable: { - alignSelf: 'center', - marginTop: 12, - }, - cropButton: { - padding: 12, - backgroundColor: 'blue', - borderRadius: 4, - }, - cropButtonLabel: { - color: 'white', - fontSize: 16, - fontWeight: '500', - }, -}); diff --git a/Examples/UIExplorer/js/UIExplorerActions.js b/Examples/UIExplorer/js/UIExplorerActions.js deleted file mode 100644 index d1983e90736e..000000000000 --- a/Examples/UIExplorer/js/UIExplorerActions.js +++ /dev/null @@ -1,71 +0,0 @@ -/** - * Copyright (c) 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * @flow - * @providesModule UIExplorerActions - */ -'use strict'; - -export type UIExplorerBackAction = { - type: 'UIExplorerBackAction', -}; - -export type UIExplorerListAction = { - type: 'UIExplorerListAction', -}; - -export type UIExplorerExampleAction = { - type: 'UIExplorerExampleAction', - openExample: string, -}; - -export type UIExplorerAction = ( - UIExplorerBackAction | - UIExplorerListAction | - UIExplorerExampleAction -); - - -function Back(): UIExplorerBackAction { - return { - type: 'UIExplorerBackAction', - }; -} - -function ExampleList(): UIExplorerListAction { - return { - type: 'UIExplorerListAction', - }; -} - -function ExampleAction(openExample: string): UIExplorerExampleAction { - return { - type: 'UIExplorerExampleAction', - openExample, - }; -} - -const UIExplorerActions = { - Back, - ExampleList, - ExampleAction, -}; - -module.exports = UIExplorerActions; diff --git a/Examples/UIExplorer/js/UIExplorerExampleContainer.js b/Examples/UIExplorer/js/UIExplorerExampleContainer.js deleted file mode 100644 index fdd0ea75ade2..000000000000 --- a/Examples/UIExplorer/js/UIExplorerExampleContainer.js +++ /dev/null @@ -1,65 +0,0 @@ -/** - * Copyright (c) 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * @providesModule UIExplorerExampleContainer - */ -'use strict'; - -const React = require('react'); -const { - Platform, -} = require('react-native'); -const UIExplorerBlock = require('./UIExplorerBlock'); -const UIExplorerPage = require('./UIExplorerPage'); - -class UIExplorerExampleContainer extends React.Component { - renderExample(example, i) { - // Filter platform-specific examples - var {title, description, platform} = example; - if (platform) { - if (Platform.OS !== platform) { - return null; - } - title += ' (' + platform + ' only)'; - } - return ( - - {example.render()} - - ); - } - - render(): React.Element { - if (!this.props.module.examples) { - return ; - } - - return ( - - {this.props.module.examples.map(this.renderExample)} - - ); - } -} - -module.exports = UIExplorerExampleContainer; diff --git a/Examples/UIExplorer/js/UIExplorerNavigationReducer.js b/Examples/UIExplorer/js/UIExplorerNavigationReducer.js deleted file mode 100644 index 015f1e5c2b90..000000000000 --- a/Examples/UIExplorer/js/UIExplorerNavigationReducer.js +++ /dev/null @@ -1,69 +0,0 @@ -/** - * Copyright (c) 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * @flow - * @providesModule UIExplorerNavigationReducer - */ -'use strict'; - -// $FlowFixMe : This is a platform-forked component, and flow seems to only run on iOS? -const UIExplorerList = require('./UIExplorerList'); - -export type UIExplorerNavigationState = { - openExample: ?string, -}; - -function UIExplorerNavigationReducer( - state: ?UIExplorerNavigationState, - action: any -): UIExplorerNavigationState { - - if ( - // Default value is to see example list - !state || - - // Handle the explicit list action - action.type === 'UIExplorerListAction' || - - // Handle requests to go back to the list when an example is open - (state.openExample && action.type === 'UIExplorerBackAction') - ) { - return { - // A null openExample will cause the views to display the UIExplorer example list - openExample: null, - }; - } - - if (action.type === 'UIExplorerExampleAction') { - - // Make sure we see the module before returning the new state - const ExampleModule = UIExplorerList.Modules[action.openExample]; - - if (ExampleModule) { - return { - openExample: action.openExample, - }; - } - } - - return state; -} - -module.exports = UIExplorerNavigationReducer; diff --git a/Examples/UIExplorer/js/URIActionMap.js b/Examples/UIExplorer/js/URIActionMap.js deleted file mode 100644 index fb25f58119cb..000000000000 --- a/Examples/UIExplorer/js/URIActionMap.js +++ /dev/null @@ -1,64 +0,0 @@ -/** - * Copyright (c) 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * @flow - * @providesModule URIActionMap - */ -'use strict'; - -const ReactNative = require('react-native'); -const UIExplorerActions = require('./UIExplorerActions'); -// $FlowFixMe : This is a platform-forked component, and flow seems to only run on iOS? -const UIExplorerList = require('./UIExplorerList'); - -const { - Alert, -} = ReactNative; - -import type { UIExplorerAction } from './UIExplorerActions'; - -function PathActionMap(path: string): ?UIExplorerAction { - // Warning! Hacky parsing for example code. Use a library for this! - const exampleParts = path.split('/example/'); - const exampleKey = exampleParts[1]; - if (exampleKey) { - if (!UIExplorerList.Modules[exampleKey]) { - Alert.alert(`${exampleKey} example could not be found!`); - return null; - } - return UIExplorerActions.ExampleAction(exampleKey); - } - return null; -} - -function URIActionMap(uri: ?string): ?UIExplorerAction { - if (!uri) { - return null; - } - // Warning! Hacky parsing for example code. Use a library for this! - const parts = uri.split('rnuiexplorer:/'); - if (!parts[1]) { - return null; - } - const path = parts[1]; - return PathActionMap(path); -} - -module.exports = URIActionMap; diff --git a/Examples/UIExplorer/js/createExamplePage.js b/Examples/UIExplorer/js/createExamplePage.js deleted file mode 100644 index f7661a109a3f..000000000000 --- a/Examples/UIExplorer/js/createExamplePage.js +++ /dev/null @@ -1,44 +0,0 @@ -/** - * Copyright (c) 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * @providesModule createExamplePage - * @flow - */ -'use strict'; - -const React = require('react'); - -const UIExplorerExampleContainer = require('./UIExplorerExampleContainer'); - -import type { ExampleModule } from 'ExampleTypes'; - -var createExamplePage = function(title: ?string, exampleModule: ExampleModule) - : ReactClass { - - class ExamplePage extends React.Component { - render() { - return ; - } - } - - return ExamplePage; -}; - -module.exports = createExamplePage; diff --git a/IntegrationTests/IntegrationTestsApp.js b/IntegrationTests/IntegrationTestsApp.js index 33ddaec45b78..5977188f7683 100644 --- a/IntegrationTests/IntegrationTestsApp.js +++ b/IntegrationTests/IntegrationTestsApp.js @@ -22,7 +22,7 @@ var { View, } = ReactNative; -// Keep this list in sync with UIExplorerIntegrationTests.m +// Keep this list in sync with RNTesterIntegrationTests.m var TESTS = [ require('./IntegrationTestHarnessTest'), require('./TimersTest'), diff --git a/IntegrationTests/SyncMethodTest.js b/IntegrationTests/SyncMethodTest.js index 1a45072646a8..b07c8ab17cb9 100644 --- a/IntegrationTests/SyncMethodTest.js +++ b/IntegrationTests/SyncMethodTest.js @@ -17,16 +17,16 @@ var { View } = ReactNative; const { TestModule, - UIExplorerTestModule, + RNTesterTestModule, } = ReactNative.NativeModules; class SyncMethodTest extends React.Component { componentDidMount() { - if (UIExplorerTestModule.echoString('test string value') !== 'test string value') { + if (RNTesterTestModule.echoString('test string value') !== 'test string value') { throw new Error('Something wrong with sync method export'); } - if (UIExplorerTestModule.methodThatReturnsNil() != null) { + if (RNTesterTestModule.methodThatReturnsNil() != null) { throw new Error('Something wrong with sync method export'); } TestModule.markTestCompleted(); diff --git a/LICENSE-examples b/LICENSE-examples deleted file mode 100644 index 87f537d43429..000000000000 --- a/LICENSE-examples +++ /dev/null @@ -1,9 +0,0 @@ -The examples provided by Facebook are for non-commercial testing and evaluation -purposes only. Facebook reserves all rights not expressly granted. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN -ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/Libraries/Experimental/IncrementalExample.js b/Libraries/Experimental/IncrementalExample.js index 6cbe0869657f..721f2b9d3842 100644 --- a/Libraries/Experimental/IncrementalExample.js +++ b/Libraries/Experimental/IncrementalExample.js @@ -1,15 +1,10 @@ /** - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. * * @providesModule IncrementalExample * @flow diff --git a/Libraries/Interaction/PanResponder.js b/Libraries/Interaction/PanResponder.js index fe217b8b74f9..bc6774e985eb 100644 --- a/Libraries/Interaction/PanResponder.js +++ b/Libraries/Interaction/PanResponder.js @@ -116,7 +116,7 @@ const currentCentroidY = TouchHistoryMath.currentCentroidY; * ### Working Example * * To see it in action, try the - * [PanResponder example in UIExplorer](https://github.com/facebook/react-native/blob/master/Examples/UIExplorer/js/PanResponderExample.js) + * [PanResponder example in RNTester](https://github.com/facebook/react-native/blob/master/RNTester/js/PanResponderExample.js) */ const PanResponder = { diff --git a/Libraries/Text/TextUpdateTest.js b/Libraries/Text/TextUpdateTest.js index fb0b4f4ae0fb..40a931eed12b 100644 --- a/Libraries/Text/TextUpdateTest.js +++ b/Libraries/Text/TextUpdateTest.js @@ -1,15 +1,10 @@ /** - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. * * @providesModule TextUpdateTest * @flow diff --git a/README.md b/README.md index 1fd239a58dd4..640d4149fd26 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ See the official [React Native website](https://facebook.github.io/react-native/ ## Getting Started - Follow the [Getting Started guide](https://facebook.github.io/react-native/docs/getting-started.html) to install React Native and its dependencies. -- [Open the UIExplorer example project](#examples) to see a list of components that ship with React Native. +- [Open the RNTester app](#examples) to see a list of components that ship with React Native. - Install the React Developer Tools for [Chrome](https://chrome.google.com/webstore/detail/react-developer-tools/fmkadmapgofadopljbjfkapdkoienihi) or [Firefox](https://addons.mozilla.org/firefox/addon/react-devtools/) for better debugging [(read more)](https://facebook.github.io/react-native/docs/debugging.html). - Try out apps from the [Showcase](https://facebook.github.io/react-native/showcase.html) to see what React Native is capable of! @@ -44,7 +44,7 @@ Please use these community resources for getting help. We use the GitHub issues - The **APIs** section covers other libraries like [Animated](https://facebook.github.io/react-native/docs/animated.html) and [StyleSheet](https://facebook.github.io/react-native/docs/stylesheet.html) that aren’t React components themselves. - Finally, React Native provides a small number of **Polyfills** that offer web-like APIs. -Another great way to learn more about the components and APIs included with React Native is to read their source. Look under the `Libraries` directory for components like `ScrollView` and `Navigator`, for example. The UIExplorer example is also here to demonstrate some of the ways to use these components. From the source you can get an accurate understanding of each component’s behavior and API. +Another great way to learn more about the components and APIs included with React Native is to read their source. Look under the `Libraries` directory for components like `ScrollView` and `Navigator`, for example. The RNTester example is also here to demonstrate some of the ways to use these components. From the source you can get an accurate understanding of each component’s behavior and API. The React Native documentation only discusses the components, APIs and topics specific to React Native (React on iOS and Android). For further documentation on the React API that is shared between React Native and React DOM, refer to the [React documentation](https://facebook.github.io/react/). diff --git a/Examples/UIExplorer/README.md b/RNTester/README.md similarity index 84% rename from Examples/UIExplorer/README.md rename to RNTester/README.md index 7afa6d2e0f2f..95493ae95ab9 100644 --- a/Examples/UIExplorer/README.md +++ b/RNTester/README.md @@ -1,6 +1,6 @@ -# UIExplorer +# RNTester -The UIExplorer is a sample app that showcases React Native views and modules. +The RNTester showcases React Native views and modules. ## Running this app @@ -14,7 +14,7 @@ Before running the app, make sure you ran: Mac OS and Xcode are required. -- Open `Examples/UIExplorer/UIExplorer.xcodeproj` in Xcode +- Open `RNTester/RNTester.xcodeproj` in Xcode - Hit the Run button See [Running on device](https://facebook.github.io/react-native/docs/running-on-device.html) if you want to use a physical device. @@ -26,12 +26,12 @@ You'll need to have all the [prerequisites](https://github.com/facebook/react-na Start an Android emulator ([Genymotion](https://www.genymotion.com) is recommended). cd react-native - ./gradlew :Examples:UIExplorer:android:app:installDebug + ./gradlew :RNTester:android:app:installDebug ./packager/packager.sh _Note: Building for the first time can take a while._ -Open the UIExplorer app in your emulator. +Open the RNTester app in your emulator. See [Running on Device](https://facebook.github.io/react-native/docs/running-on-device.html) in case you want to use a physical device. @@ -44,8 +44,8 @@ Install Buck from [here](https://buckbuild.com/setup/install.html). Run the following commands from the react-native folder: ./gradlew :ReactAndroid:packageReactNdkLibsForBuck - buck fetch uiexplorer - buck install -r uiexplorer + buck fetch rntester + buck install -r rntester ./packager/packager.sh _Note: The native libs are still built using gradle. Full build with buck is coming soon(tm)._ diff --git a/Examples/UIExplorer/UIExplorer-tvOS/Info.plist b/RNTester/RNTester-tvOS/Info.plist similarity index 100% rename from Examples/UIExplorer/UIExplorer-tvOS/Info.plist rename to RNTester/RNTester-tvOS/Info.plist diff --git a/Examples/UIExplorer/UIExplorer.xcodeproj/project.pbxproj b/RNTester/RNTester.xcodeproj/project.pbxproj similarity index 86% rename from Examples/UIExplorer/UIExplorer.xcodeproj/project.pbxproj rename to RNTester/RNTester.xcodeproj/project.pbxproj index e671e6e161f2..1b12544dbb81 100644 --- a/Examples/UIExplorer/UIExplorer.xcodeproj/project.pbxproj +++ b/RNTester/RNTester.xcodeproj/project.pbxproj @@ -29,7 +29,7 @@ 13DB03481B5D2ED500C27245 /* RCTJSONTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 13DB03471B5D2ED500C27245 /* RCTJSONTests.m */; }; 13DF61B61B67A45000EDB188 /* RCTMethodArgumentTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 13DF61B51B67A45000EDB188 /* RCTMethodArgumentTests.m */; }; 13E501F11D07A84A005F35D8 /* libRCTAnimation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 13E501A31D07A502005F35D8 /* libRCTAnimation.a */; }; - 143BC5A11B21E45C00462512 /* UIExplorerSnapshotTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 143BC5A01B21E45C00462512 /* UIExplorerSnapshotTests.m */; }; + 143BC5A11B21E45C00462512 /* RNTesterSnapshotTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 143BC5A01B21E45C00462512 /* RNTesterSnapshotTests.m */; }; 144D21241B2204C5006DB32B /* RCTImageUtilTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 144D21231B2204C5006DB32B /* RCTImageUtilTests.m */; }; 147CED4C1AB3532B00DA3E4C /* libRCTActionSheet.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 147CED4B1AB34F8C00DA3E4C /* libRCTActionSheet.a */; }; 1497CFAC1B21F5E400C1F8F2 /* RCTAllocationTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 1497CFA41B21F5E400C1F8F2 /* RCTAllocationTests.m */; }; @@ -63,8 +63,8 @@ 27F441EC1BEBE5030039B79C /* FlexibleSizeExampleView.m in Sources */ = {isa = PBXBuildFile; fileRef = 27F441E81BEBE5030039B79C /* FlexibleSizeExampleView.m */; }; 2D4624FA1DA2EAC300C74D09 /* RCTLoggingTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D299BAE1D33EBFA00FA1057 /* RCTLoggingTests.m */; }; 2D4624FB1DA2EAC300C74D09 /* RCTRootViewIntegrationTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 27B885551BED29AF00008352 /* RCTRootViewIntegrationTests.m */; }; - 2D4624FC1DA2EAC300C74D09 /* UIExplorerIntegrationTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 3DB99D0B1BA0340600302749 /* UIExplorerIntegrationTests.m */; }; - 2D4624FD1DA2EAC300C74D09 /* UIExplorerSnapshotTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 143BC5A01B21E45C00462512 /* UIExplorerSnapshotTests.m */; }; + 2D4624FC1DA2EAC300C74D09 /* RNTesterIntegrationTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 3DB99D0B1BA0340600302749 /* RNTesterIntegrationTests.m */; }; + 2D4624FD1DA2EAC300C74D09 /* RNTesterSnapshotTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 143BC5A01B21E45C00462512 /* RNTesterSnapshotTests.m */; }; 2D4624FE1DA2EAC300C74D09 /* RCTUIManagerScenarioTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 83636F8E1B53F22C009F943E /* RCTUIManagerScenarioTests.m */; }; 2D4625351DA2EBBE00C74D09 /* libRCTTest-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2DD323CC1DA2DD8B000FE1B8 /* libRCTTest-tvOS.a */; }; 2D4BD8D21DA2E20D005AC8A8 /* RCTURLUtilsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B6C1A21C34225900D3FAF5 /* RCTURLUtilsTests.m */; }; @@ -86,7 +86,7 @@ 2D4BD8E31DA2E20D005AC8A8 /* RCTShadowViewTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 138D6A161B53CD440074A87E /* RCTShadowViewTests.m */; }; 2D4BD8E41DA2E20D005AC8A8 /* RCTUIManagerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 1497CFAB1B21F5E400C1F8F2 /* RCTUIManagerTests.m */; }; 2D4BD8E51DA2E20D005AC8A8 /* RCTComponentPropsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 13BCE84E1C9C209600DD7AAD /* RCTComponentPropsTests.m */; }; - 2D4BD8E61DA2E20D005AC8A8 /* UIExplorerUnitTestsBundle.js in Resources */ = {isa = PBXBuildFile; fileRef = 3DD981D51D33C6FB007DC7BE /* UIExplorerUnitTestsBundle.js */; }; + 2D4BD8E61DA2E20D005AC8A8 /* RNTesterUnitTestsBundle.js in Resources */ = {isa = PBXBuildFile; fileRef = 3DD981D51D33C6FB007DC7BE /* RNTesterUnitTestsBundle.js */; }; 2D4BD8E71DA2E20D005AC8A8 /* libOCMock.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 14D6D7101B220EB3001FB087 /* libOCMock.a */; }; 2D8C2E321DA40403000EE098 /* RCTMultipartStreamReaderTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 001BFCE31D838343008E587E /* RCTMultipartStreamReaderTests.m */; }; 2DD323DC1DA2DDBF000FE1B8 /* FlexibleSizeExampleView.m in Sources */ = {isa = PBXBuildFile; fileRef = 27F441E81BEBE5030039B79C /* FlexibleSizeExampleView.m */; }; @@ -111,17 +111,17 @@ 3D299BAF1D33EBFA00FA1057 /* RCTLoggingTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D299BAE1D33EBFA00FA1057 /* RCTLoggingTests.m */; }; 3D2AFAF51D646CF80089D1A3 /* legacy_image@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3D2AFAF41D646CF80089D1A3 /* legacy_image@2x.png */; }; 3D302F221DF8285100D6DDAE /* libRCTImage-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2DD323BB1DA2DD8B000FE1B8 /* libRCTImage-tvOS.a */; }; - 3D56F9F11D6F6E9B00F53A06 /* UIExplorerBundle.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 3D13F83E1D6F6AE000E69E0E /* UIExplorerBundle.bundle */; }; - 3DB99D0C1BA0340600302749 /* UIExplorerIntegrationTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 3DB99D0B1BA0340600302749 /* UIExplorerIntegrationTests.m */; }; - 3DD981D61D33C6FB007DC7BE /* UIExplorerUnitTestsBundle.js in Resources */ = {isa = PBXBuildFile; fileRef = 3DD981D51D33C6FB007DC7BE /* UIExplorerUnitTestsBundle.js */; }; + 3D56F9F11D6F6E9B00F53A06 /* RNTesterBundle.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 3D13F83E1D6F6AE000E69E0E /* RNTesterBundle.bundle */; }; + 3DB99D0C1BA0340600302749 /* RNTesterIntegrationTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 3DB99D0B1BA0340600302749 /* RNTesterIntegrationTests.m */; }; + 3DD981D61D33C6FB007DC7BE /* RNTesterUnitTestsBundle.js in Resources */ = {isa = PBXBuildFile; fileRef = 3DD981D51D33C6FB007DC7BE /* RNTesterUnitTestsBundle.js */; }; 68FF44381CF6111500720EFD /* RCTBundleURLProviderTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 68FF44371CF6111500720EFD /* RCTBundleURLProviderTests.m */; }; 834C36EC1AF8DED70019C93C /* libRCTSettings.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 834C36D21AF8DA610019C93C /* libRCTSettings.a */; }; 83636F8F1B53F22C009F943E /* RCTUIManagerScenarioTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 83636F8E1B53F22C009F943E /* RCTUIManagerScenarioTests.m */; }; 8385CEF51B873B5C00C6273E /* RCTImageLoaderTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 8385CEF41B873B5C00C6273E /* RCTImageLoaderTests.m */; }; 8385CF041B87479200C6273E /* RCTImageLoaderHelpers.m in Sources */ = {isa = PBXBuildFile; fileRef = 8385CF031B87479200C6273E /* RCTImageLoaderHelpers.m */; }; BC9C03401DC9F1D600B1C635 /* RCTDevMenuTests.m in Sources */ = {isa = PBXBuildFile; fileRef = BC9C033F1DC9F1D600B1C635 /* RCTDevMenuTests.m */; }; - C654F0B31EB34A73000B7A9A /* UIExplorerTestModule.m in Sources */ = {isa = PBXBuildFile; fileRef = C654F0B21EB34A73000B7A9A /* UIExplorerTestModule.m */; }; - C654F17E1EB34D24000B7A9A /* UIExplorerTestModule.m in Sources */ = {isa = PBXBuildFile; fileRef = C654F0B21EB34A73000B7A9A /* UIExplorerTestModule.m */; }; + C654F0B31EB34A73000B7A9A /* RNTesterTestModule.m in Sources */ = {isa = PBXBuildFile; fileRef = C654F0B21EB34A73000B7A9A /* RNTesterTestModule.m */; }; + C654F17E1EB34D24000B7A9A /* RNTesterTestModule.m in Sources */ = {isa = PBXBuildFile; fileRef = C654F0B21EB34A73000B7A9A /* RNTesterTestModule.m */; }; D85B829E1AB6D5D7003F4FE2 /* libRCTVibration.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D85B829C1AB6D5CE003F4FE2 /* libRCTVibration.a */; }; /* End PBXBuildFile section */ @@ -187,7 +187,7 @@ containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; proxyType = 1; remoteGlobalIDString = 13B07F861A680F5B00A75B9A; - remoteInfo = UIExplorer; + remoteInfo = RNTester; }; 147CED4A1AB34F8C00DA3E4C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -215,14 +215,14 @@ containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; proxyType = 1; remoteGlobalIDString = 2DD3238F1DA2DD8A000FE1B8; - remoteInfo = "UIExplorer-tvOS"; + remoteInfo = "RNTester-tvOS"; }; 2DD323A61DA2DD8B000FE1B8 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; proxyType = 1; remoteGlobalIDString = 2DD3238F1DA2DD8A000FE1B8; - remoteInfo = "UIExplorer-tvOS"; + remoteInfo = "RNTester-tvOS"; }; 2DD323B41DA2DD8B000FE1B8 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -334,7 +334,7 @@ containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; proxyType = 1; remoteGlobalIDString = 3D13F83D1D6F6AE000E69E0E; - remoteInfo = UIExplorerBundle; + remoteInfo = RNTesterBundle; }; 3D3C08801DE3424E00C268FA /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -389,36 +389,36 @@ /* Begin PBXFileReference section */ 001BFCE31D838343008E587E /* RCTMultipartStreamReaderTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTMultipartStreamReaderTests.m; sourceTree = ""; }; - 004D289E1AAF61C70097A701 /* UIExplorerUnitTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = UIExplorerUnitTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 004D289E1AAF61C70097A701 /* RNTesterUnitTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RNTesterUnitTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 1300627E1B59179B0043FE5A /* RCTGzipTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTGzipTests.m; sourceTree = ""; }; 13129DD31C85F87C007D611C /* RCTModuleInitNotificationRaceTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTModuleInitNotificationRaceTests.m; sourceTree = ""; }; - 13417FE31AA91428003F314A /* RCTImage.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTImage.xcodeproj; path = ../../Libraries/Image/RCTImage.xcodeproj; sourceTree = ""; }; - 13417FEA1AA914B8003F314A /* RCTText.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTText.xcodeproj; path = ../../Libraries/Text/RCTText.xcodeproj; sourceTree = ""; }; - 134180261AA91779003F314A /* RCTNetwork.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTNetwork.xcodeproj; path = ../../Libraries/Network/RCTNetwork.xcodeproj; sourceTree = ""; }; - 134454551AAFCAAE003F0779 /* RCTAdSupport.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTAdSupport.xcodeproj; path = ../../Libraries/AdSupport/RCTAdSupport.xcodeproj; sourceTree = ""; }; - 134A8A201AACED6A00945AAE /* RCTGeolocation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTGeolocation.xcodeproj; path = ../../Libraries/Geolocation/RCTGeolocation.xcodeproj; sourceTree = ""; }; + 13417FE31AA91428003F314A /* RCTImage.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTImage.xcodeproj; path = ../Libraries/Image/RCTImage.xcodeproj; sourceTree = ""; }; + 13417FEA1AA914B8003F314A /* RCTText.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTText.xcodeproj; path = ../Libraries/Text/RCTText.xcodeproj; sourceTree = ""; }; + 134180261AA91779003F314A /* RCTNetwork.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTNetwork.xcodeproj; path = ../Libraries/Network/RCTNetwork.xcodeproj; sourceTree = ""; }; + 134454551AAFCAAE003F0779 /* RCTAdSupport.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTAdSupport.xcodeproj; path = ../Libraries/AdSupport/RCTAdSupport.xcodeproj; sourceTree = ""; }; + 134A8A201AACED6A00945AAE /* RCTGeolocation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTGeolocation.xcodeproj; path = ../Libraries/Geolocation/RCTGeolocation.xcodeproj; sourceTree = ""; }; 134CB9291C85A38800265FA6 /* RCTModuleInitTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTModuleInitTests.m; sourceTree = ""; }; 138D6A161B53CD440074A87E /* RCTShadowViewTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTShadowViewTests.m; sourceTree = ""; }; - 138DEE021B9EDDDB007F4EA5 /* RCTCameraRoll.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTCameraRoll.xcodeproj; path = ../../Libraries/CameraRoll/RCTCameraRoll.xcodeproj; sourceTree = ""; }; + 138DEE021B9EDDDB007F4EA5 /* RCTCameraRoll.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTCameraRoll.xcodeproj; path = ../Libraries/CameraRoll/RCTCameraRoll.xcodeproj; sourceTree = ""; }; 1393D0371B68CD1300E1B601 /* RCTModuleMethodTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTModuleMethodTests.m; sourceTree = ""; }; - 139FDECA1B0651EA00C62182 /* RCTWebSocket.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTWebSocket.xcodeproj; path = ../../Libraries/WebSocket/RCTWebSocket.xcodeproj; sourceTree = ""; }; - 13B07F961A680F5B00A75B9A /* UIExplorer.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = UIExplorer.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = UIExplorer/AppDelegate.h; sourceTree = ""; }; - 13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = UIExplorer/AppDelegate.m; sourceTree = ""; }; + 139FDECA1B0651EA00C62182 /* RCTWebSocket.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTWebSocket.xcodeproj; path = ../Libraries/WebSocket/RCTWebSocket.xcodeproj; sourceTree = ""; }; + 13B07F961A680F5B00A75B9A /* RNTester.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = RNTester.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = RNTester/AppDelegate.h; sourceTree = ""; }; + 13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = RNTester/AppDelegate.m; sourceTree = ""; }; 13B07FB21A68108700A75B9A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; - 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = UIExplorer/Images.xcassets; sourceTree = ""; }; - 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = UIExplorer/Info.plist; sourceTree = ""; }; - 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = UIExplorer/main.m; sourceTree = ""; }; + 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = RNTester/Images.xcassets; sourceTree = ""; }; + 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = RNTester/Info.plist; sourceTree = ""; }; + 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = RNTester/main.m; sourceTree = ""; }; 13B6C1A21C34225900D3FAF5 /* RCTURLUtilsTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTURLUtilsTests.m; sourceTree = ""; }; 13BCE84E1C9C209600DD7AAD /* RCTComponentPropsTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTComponentPropsTests.m; sourceTree = ""; }; - 13CC9D481AEED2B90020D1C2 /* RCTSettings.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTSettings.xcodeproj; path = ../../Libraries/Settings/RCTSettings.xcodeproj; sourceTree = ""; }; + 13CC9D481AEED2B90020D1C2 /* RCTSettings.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTSettings.xcodeproj; path = ../Libraries/Settings/RCTSettings.xcodeproj; sourceTree = ""; }; 13DB03471B5D2ED500C27245 /* RCTJSONTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTJSONTests.m; sourceTree = ""; }; 13DF61B51B67A45000EDB188 /* RCTMethodArgumentTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTMethodArgumentTests.m; sourceTree = ""; }; - 13E5019C1D07A502005F35D8 /* RCTAnimation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTAnimation.xcodeproj; path = ../../Libraries/NativeAnimation/RCTAnimation.xcodeproj; sourceTree = ""; }; + 13E5019C1D07A502005F35D8 /* RCTAnimation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTAnimation.xcodeproj; path = ../Libraries/NativeAnimation/RCTAnimation.xcodeproj; sourceTree = ""; }; 143BC57E1B21E18100462512 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 143BC5951B21E3E100462512 /* UIExplorerIntegrationTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = UIExplorerIntegrationTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 143BC5951B21E3E100462512 /* RNTesterIntegrationTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RNTesterIntegrationTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 143BC5981B21E3E100462512 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 143BC5A01B21E45C00462512 /* UIExplorerSnapshotTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIExplorerSnapshotTests.m; sourceTree = ""; }; + 143BC5A01B21E45C00462512 /* RNTesterSnapshotTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RNTesterSnapshotTests.m; sourceTree = ""; }; 144D21231B2204C5006DB32B /* RCTImageUtilTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTImageUtilTests.m; sourceTree = ""; }; 1497CFA41B21F5E400C1F8F2 /* RCTAllocationTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTAllocationTests.m; sourceTree = ""; }; 1497CFA51B21F5E400C1F8F2 /* RCTBridgeTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTBridgeTests.m; sourceTree = ""; }; @@ -426,7 +426,7 @@ 1497CFA81B21F5E400C1F8F2 /* RCTFontTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTFontTests.m; sourceTree = ""; }; 1497CFA91B21F5E400C1F8F2 /* RCTEventDispatcherTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTEventDispatcherTests.m; sourceTree = ""; }; 1497CFAB1B21F5E400C1F8F2 /* RCTUIManagerTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTUIManagerTests.m; sourceTree = ""; }; - 14AADEFF1AC3DB95002390C9 /* React.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = React.xcodeproj; path = ../../React/React.xcodeproj; sourceTree = ""; }; + 14AADEFF1AC3DB95002390C9 /* React.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = React.xcodeproj; path = ../React/React.xcodeproj; sourceTree = ""; }; 14D6D7021B220AE3001FB087 /* NSNotificationCenter+OCMAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSNotificationCenter+OCMAdditions.h"; sourceTree = ""; }; 14D6D7031B220AE3001FB087 /* OCMArg.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMArg.h; sourceTree = ""; }; 14D6D7041B220AE3001FB087 /* OCMConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMConstraint.h; sourceTree = ""; }; @@ -437,39 +437,39 @@ 14D6D7091B220AE3001FB087 /* OCMRecorder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMRecorder.h; sourceTree = ""; }; 14D6D70A1B220AE3001FB087 /* OCMStubRecorder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMStubRecorder.h; sourceTree = ""; }; 14D6D7101B220EB3001FB087 /* libOCMock.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libOCMock.a; sourceTree = ""; }; - 14DC67E71AB71876001358AB /* RCTPushNotification.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTPushNotification.xcodeproj; path = ../../Libraries/PushNotificationIOS/RCTPushNotification.xcodeproj; sourceTree = ""; }; - 14E0EEC81AB118F7000DECC3 /* RCTActionSheet.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTActionSheet.xcodeproj; path = ../../Libraries/ActionSheetIOS/RCTActionSheet.xcodeproj; sourceTree = ""; }; + 14DC67E71AB71876001358AB /* RCTPushNotification.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTPushNotification.xcodeproj; path = ../Libraries/PushNotificationIOS/RCTPushNotification.xcodeproj; sourceTree = ""; }; + 14E0EEC81AB118F7000DECC3 /* RCTActionSheet.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTActionSheet.xcodeproj; path = ../Libraries/ActionSheetIOS/RCTActionSheet.xcodeproj; sourceTree = ""; }; 192F69B51E82409A008692C7 /* RCTAnimationUtilsTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTAnimationUtilsTests.m; sourceTree = ""; }; 192F69B61E82409A008692C7 /* RCTConvert_YGValueTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTConvert_YGValueTests.m; sourceTree = ""; }; 192F69B71E82409A008692C7 /* RCTNativeAnimatedNodesManagerTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTNativeAnimatedNodesManagerTests.m; sourceTree = ""; }; - 272E6B3B1BEA849E001FCF37 /* UpdatePropertiesExampleView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = UpdatePropertiesExampleView.h; path = UIExplorer/NativeExampleViews/UpdatePropertiesExampleView.h; sourceTree = ""; }; - 272E6B3C1BEA849E001FCF37 /* UpdatePropertiesExampleView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = UpdatePropertiesExampleView.m; path = UIExplorer/NativeExampleViews/UpdatePropertiesExampleView.m; sourceTree = ""; }; + 272E6B3B1BEA849E001FCF37 /* UpdatePropertiesExampleView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = UpdatePropertiesExampleView.h; path = RNTester/NativeExampleViews/UpdatePropertiesExampleView.h; sourceTree = ""; }; + 272E6B3C1BEA849E001FCF37 /* UpdatePropertiesExampleView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = UpdatePropertiesExampleView.m; path = RNTester/NativeExampleViews/UpdatePropertiesExampleView.m; sourceTree = ""; }; 27B885551BED29AF00008352 /* RCTRootViewIntegrationTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTRootViewIntegrationTests.m; sourceTree = ""; }; - 27F441E81BEBE5030039B79C /* FlexibleSizeExampleView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = FlexibleSizeExampleView.m; path = UIExplorer/NativeExampleViews/FlexibleSizeExampleView.m; sourceTree = ""; }; - 27F441EA1BEBE5030039B79C /* FlexibleSizeExampleView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FlexibleSizeExampleView.h; path = UIExplorer/NativeExampleViews/FlexibleSizeExampleView.h; sourceTree = ""; }; - 2D4624E01DA2EA6900C74D09 /* UIExplorer-tvOSIntegrationTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "UIExplorer-tvOSIntegrationTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; - 2DD323901DA2DD8A000FE1B8 /* UIExplorer-tvOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "UIExplorer-tvOS.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 27F441E81BEBE5030039B79C /* FlexibleSizeExampleView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = FlexibleSizeExampleView.m; path = RNTester/NativeExampleViews/FlexibleSizeExampleView.m; sourceTree = ""; }; + 27F441EA1BEBE5030039B79C /* FlexibleSizeExampleView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FlexibleSizeExampleView.h; path = RNTester/NativeExampleViews/FlexibleSizeExampleView.h; sourceTree = ""; }; + 2D4624E01DA2EA6900C74D09 /* RNTester-tvOSIntegrationTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "RNTester-tvOSIntegrationTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; + 2DD323901DA2DD8A000FE1B8 /* RNTester-tvOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "RNTester-tvOS.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 2DD323A01DA2DD8B000FE1B8 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 2DD323A51DA2DD8B000FE1B8 /* UIExplorer-tvOSUnitTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "UIExplorer-tvOSUnitTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; - 357858F81B28D2C400341EDB /* RCTLinking.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTLinking.xcodeproj; path = ../../Libraries/LinkingIOS/RCTLinking.xcodeproj; sourceTree = ""; }; + 2DD323A51DA2DD8B000FE1B8 /* RNTester-tvOSUnitTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "RNTester-tvOSUnitTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; + 357858F81B28D2C400341EDB /* RCTLinking.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTLinking.xcodeproj; path = ../Libraries/LinkingIOS/RCTLinking.xcodeproj; sourceTree = ""; }; 39AA31A31DC1DFDC000F7EBB /* RCTUnicodeDecodeTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTUnicodeDecodeTests.m; sourceTree = ""; }; - 3D13F83E1D6F6AE000E69E0E /* UIExplorerBundle.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = UIExplorerBundle.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; + 3D13F83E1D6F6AE000E69E0E /* RNTesterBundle.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RNTesterBundle.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; 3D13F8401D6F6AE000E69E0E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = ../Info.plist; sourceTree = ""; }; 3D13F8441D6F6AF200E69E0E /* ImageInBundle.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ImageInBundle.png; sourceTree = ""; }; 3D13F8451D6F6AF200E69E0E /* OtherImages.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = OtherImages.xcassets; sourceTree = ""; }; 3D299BAE1D33EBFA00FA1057 /* RCTLoggingTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTLoggingTests.m; sourceTree = ""; }; - 3D2AFAF41D646CF80089D1A3 /* legacy_image@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "legacy_image@2x.png"; path = "UIExplorer/legacy_image@2x.png"; sourceTree = ""; }; - 3DB99D0B1BA0340600302749 /* UIExplorerIntegrationTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIExplorerIntegrationTests.m; sourceTree = ""; }; - 3DD981D51D33C6FB007DC7BE /* UIExplorerUnitTestsBundle.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = UIExplorerUnitTestsBundle.js; sourceTree = ""; }; - 58005BE41ABA80530062E044 /* RCTTest.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTTest.xcodeproj; path = ../../Libraries/RCTTest/RCTTest.xcodeproj; sourceTree = ""; }; + 3D2AFAF41D646CF80089D1A3 /* legacy_image@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "legacy_image@2x.png"; path = "RNTester/legacy_image@2x.png"; sourceTree = ""; }; + 3DB99D0B1BA0340600302749 /* RNTesterIntegrationTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RNTesterIntegrationTests.m; sourceTree = ""; }; + 3DD981D51D33C6FB007DC7BE /* RNTesterUnitTestsBundle.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = RNTesterUnitTestsBundle.js; sourceTree = ""; }; + 58005BE41ABA80530062E044 /* RCTTest.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTTest.xcodeproj; path = ../Libraries/RCTTest/RCTTest.xcodeproj; sourceTree = ""; }; 68FF44371CF6111500720EFD /* RCTBundleURLProviderTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTBundleURLProviderTests.m; sourceTree = ""; }; 83636F8E1B53F22C009F943E /* RCTUIManagerScenarioTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTUIManagerScenarioTests.m; sourceTree = ""; }; 8385CEF41B873B5C00C6273E /* RCTImageLoaderTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTImageLoaderTests.m; sourceTree = ""; }; 8385CF031B87479200C6273E /* RCTImageLoaderHelpers.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTImageLoaderHelpers.m; sourceTree = ""; }; 8385CF051B8747A000C6273E /* RCTImageLoaderHelpers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTImageLoaderHelpers.h; sourceTree = ""; }; BC9C033F1DC9F1D600B1C635 /* RCTDevMenuTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTDevMenuTests.m; sourceTree = ""; }; - C654F0B21EB34A73000B7A9A /* UIExplorerTestModule.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIExplorerTestModule.m; sourceTree = ""; }; - D85B82911AB6D5CE003F4FE2 /* RCTVibration.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTVibration.xcodeproj; path = ../../Libraries/Vibration/RCTVibration.xcodeproj; sourceTree = ""; }; + C654F0B21EB34A73000B7A9A /* RNTesterTestModule.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RNTesterTestModule.m; sourceTree = ""; }; + D85B82911AB6D5CE003F4FE2 /* RCTVibration.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTVibration.xcodeproj; path = ../Libraries/Vibration/RCTVibration.xcodeproj; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -656,7 +656,7 @@ name = Products; sourceTree = ""; }; - 13B07FAE1A68108700A75B9A /* UIExplorer */ = { + 13B07FAE1A68108700A75B9A /* RNTester */ = { isa = PBXGroup; children = ( 272E6B3A1BEA846C001FCF37 /* NativeExampleViews */, @@ -667,7 +667,7 @@ 13B07FB71A68108700A75B9A /* main.m */, 1323F18D1C04ABAC0091BED0 /* Supporting Files */, ); - name = UIExplorer; + name = RNTester; sourceTree = ""; }; 13E5019D1D07A502005F35D8 /* Products */ = { @@ -679,7 +679,7 @@ name = Products; sourceTree = ""; }; - 143BC57C1B21E18100462512 /* UIExplorerUnitTests */ = { + 143BC57C1B21E18100462512 /* RNTesterUnitTests */ = { isa = PBXGroup; children = ( 192F69B51E82409A008692C7 /* RCTAnimationUtilsTests.m */, @@ -709,25 +709,25 @@ 13BCE84E1C9C209600DD7AAD /* RCTComponentPropsTests.m */, 39AA31A31DC1DFDC000F7EBB /* RCTUnicodeDecodeTests.m */, 143BC57E1B21E18100462512 /* Info.plist */, - 3DD981D51D33C6FB007DC7BE /* UIExplorerUnitTestsBundle.js */, + 3DD981D51D33C6FB007DC7BE /* RNTesterUnitTestsBundle.js */, 14D6D7101B220EB3001FB087 /* libOCMock.a */, 14D6D7011B220AE3001FB087 /* OCMock */, ); - path = UIExplorerUnitTests; + path = RNTesterUnitTests; sourceTree = ""; }; - 143BC5961B21E3E100462512 /* UIExplorerIntegrationTests */ = { + 143BC5961B21E3E100462512 /* RNTesterIntegrationTests */ = { isa = PBXGroup; children = ( 3D299BAE1D33EBFA00FA1057 /* RCTLoggingTests.m */, 27B885551BED29AF00008352 /* RCTRootViewIntegrationTests.m */, - 3DB99D0B1BA0340600302749 /* UIExplorerIntegrationTests.m */, - 143BC5A01B21E45C00462512 /* UIExplorerSnapshotTests.m */, - C654F0B21EB34A73000B7A9A /* UIExplorerTestModule.m */, + 3DB99D0B1BA0340600302749 /* RNTesterIntegrationTests.m */, + 143BC5A01B21E45C00462512 /* RNTesterSnapshotTests.m */, + C654F0B21EB34A73000B7A9A /* RNTesterTestModule.m */, 83636F8E1B53F22C009F943E /* RCTUIManagerScenarioTests.m */, 143BC5971B21E3E100462512 /* Supporting Files */, ); - path = UIExplorerIntegrationTests; + path = RNTesterIntegrationTests; sourceTree = ""; }; 143BC5971B21E3E100462512 /* Supporting Files */ = { @@ -806,12 +806,12 @@ name = NativeExampleViews; sourceTree = ""; }; - 2DD323911DA2DD8B000FE1B8 /* UIExplorer-tvOS */ = { + 2DD323911DA2DD8B000FE1B8 /* RNTester-tvOS */ = { isa = PBXGroup; children = ( 2DD323A01DA2DD8B000FE1B8 /* Info.plist */, ); - path = "UIExplorer-tvOS"; + path = "RNTester-tvOS"; sourceTree = ""; }; 357858F91B28D2C400341EDB /* Products */ = { @@ -823,15 +823,15 @@ name = Products; sourceTree = ""; }; - 3D13F83F1D6F6AE000E69E0E /* UIExplorerBundle */ = { + 3D13F83F1D6F6AE000E69E0E /* RNTesterBundle */ = { isa = PBXGroup; children = ( 3D13F8401D6F6AE000E69E0E /* Info.plist */, 3D13F8441D6F6AF200E69E0E /* ImageInBundle.png */, 3D13F8451D6F6AF200E69E0E /* OtherImages.xcassets */, ); - name = UIExplorerBundle; - path = UIExplorer/UIExplorerBundle; + name = RNTesterBundle; + path = RNTester/RNTesterBundle; sourceTree = ""; }; 58005BE51ABA80530062E044 /* Products */ = { @@ -855,13 +855,13 @@ 83CBB9F61A601CBA00E9B192 = { isa = PBXGroup; children = ( - 13B07FAE1A68108700A75B9A /* UIExplorer */, + 13B07FAE1A68108700A75B9A /* RNTester */, 1316A21D1AA397F400C0188E /* Libraries */, - 143BC57C1B21E18100462512 /* UIExplorerUnitTests */, - 143BC5961B21E3E100462512 /* UIExplorerIntegrationTests */, - 3D13F83F1D6F6AE000E69E0E /* UIExplorerBundle */, + 143BC57C1B21E18100462512 /* RNTesterUnitTests */, + 143BC5961B21E3E100462512 /* RNTesterIntegrationTests */, + 3D13F83F1D6F6AE000E69E0E /* RNTesterBundle */, 14D6D6EA1B2205C0001FB087 /* OCMock */, - 2DD323911DA2DD8B000FE1B8 /* UIExplorer-tvOS */, + 2DD323911DA2DD8B000FE1B8 /* RNTester-tvOS */, 83CBBA001A601CBA00E9B192 /* Products */, ); indentWidth = 2; @@ -871,13 +871,13 @@ 83CBBA001A601CBA00E9B192 /* Products */ = { isa = PBXGroup; children = ( - 13B07F961A680F5B00A75B9A /* UIExplorer.app */, - 004D289E1AAF61C70097A701 /* UIExplorerUnitTests.xctest */, - 143BC5951B21E3E100462512 /* UIExplorerIntegrationTests.xctest */, - 3D13F83E1D6F6AE000E69E0E /* UIExplorerBundle.bundle */, - 2DD323901DA2DD8A000FE1B8 /* UIExplorer-tvOS.app */, - 2DD323A51DA2DD8B000FE1B8 /* UIExplorer-tvOSUnitTests.xctest */, - 2D4624E01DA2EA6900C74D09 /* UIExplorer-tvOSIntegrationTests.xctest */, + 13B07F961A680F5B00A75B9A /* RNTester.app */, + 004D289E1AAF61C70097A701 /* RNTesterUnitTests.xctest */, + 143BC5951B21E3E100462512 /* RNTesterIntegrationTests.xctest */, + 3D13F83E1D6F6AE000E69E0E /* RNTesterBundle.bundle */, + 2DD323901DA2DD8A000FE1B8 /* RNTester-tvOS.app */, + 2DD323A51DA2DD8B000FE1B8 /* RNTester-tvOSUnitTests.xctest */, + 2D4624E01DA2EA6900C74D09 /* RNTester-tvOSIntegrationTests.xctest */, ); name = Products; sourceTree = ""; @@ -893,9 +893,9 @@ /* End PBXGroup section */ /* Begin PBXNativeTarget section */ - 004D289D1AAF61C70097A701 /* UIExplorerUnitTests */ = { + 004D289D1AAF61C70097A701 /* RNTesterUnitTests */ = { isa = PBXNativeTarget; - buildConfigurationList = 004D28AD1AAF61C70097A701 /* Build configuration list for PBXNativeTarget "UIExplorerUnitTests" */; + buildConfigurationList = 004D28AD1AAF61C70097A701 /* Build configuration list for PBXNativeTarget "RNTesterUnitTests" */; buildPhases = ( 004D289A1AAF61C70097A701 /* Sources */, 004D289B1AAF61C70097A701 /* Frameworks */, @@ -905,14 +905,14 @@ ); dependencies = ( ); - name = UIExplorerUnitTests; - productName = UIExplorerTests; - productReference = 004D289E1AAF61C70097A701 /* UIExplorerUnitTests.xctest */; + name = RNTesterUnitTests; + productName = RNTesterTests; + productReference = 004D289E1AAF61C70097A701 /* RNTesterUnitTests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; - 13B07F861A680F5B00A75B9A /* UIExplorer */ = { + 13B07F861A680F5B00A75B9A /* RNTester */ = { isa = PBXNativeTarget; - buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "UIExplorer" */; + buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "RNTester" */; buildPhases = ( 13B07F871A680F5B00A75B9A /* Sources */, 13B07F8C1A680F5B00A75B9A /* Frameworks */, @@ -924,14 +924,14 @@ dependencies = ( 3D13F84C1D6F6B5F00E69E0E /* PBXTargetDependency */, ); - name = UIExplorer; + name = RNTester; productName = "Hello World"; - productReference = 13B07F961A680F5B00A75B9A /* UIExplorer.app */; + productReference = 13B07F961A680F5B00A75B9A /* RNTester.app */; productType = "com.apple.product-type.application"; }; - 143BC5941B21E3E100462512 /* UIExplorerIntegrationTests */ = { + 143BC5941B21E3E100462512 /* RNTesterIntegrationTests */ = { isa = PBXNativeTarget; - buildConfigurationList = 143BC59D1B21E3E100462512 /* Build configuration list for PBXNativeTarget "UIExplorerIntegrationTests" */; + buildConfigurationList = 143BC59D1B21E3E100462512 /* Build configuration list for PBXNativeTarget "RNTesterIntegrationTests" */; buildPhases = ( 143BC5911B21E3E100462512 /* Sources */, 143BC5921B21E3E100462512 /* Frameworks */, @@ -942,14 +942,14 @@ dependencies = ( 143BC59C1B21E3E100462512 /* PBXTargetDependency */, ); - name = UIExplorerIntegrationTests; - productName = UIExplorerIntegrationTests; - productReference = 143BC5951B21E3E100462512 /* UIExplorerIntegrationTests.xctest */; + name = RNTesterIntegrationTests; + productName = RNTesterIntegrationTests; + productReference = 143BC5951B21E3E100462512 /* RNTesterIntegrationTests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; - 2D4624C11DA2EA6900C74D09 /* UIExplorer-tvOSIntegrationTests */ = { + 2D4624C11DA2EA6900C74D09 /* RNTester-tvOSIntegrationTests */ = { isa = PBXNativeTarget; - buildConfigurationList = 2D4624DD1DA2EA6900C74D09 /* Build configuration list for PBXNativeTarget "UIExplorer-tvOSIntegrationTests" */; + buildConfigurationList = 2D4624DD1DA2EA6900C74D09 /* Build configuration list for PBXNativeTarget "RNTester-tvOSIntegrationTests" */; buildPhases = ( 2D4624C41DA2EA6900C74D09 /* Sources */, 2D4624D91DA2EA6900C74D09 /* Frameworks */, @@ -960,14 +960,14 @@ dependencies = ( 2D4624C21DA2EA6900C74D09 /* PBXTargetDependency */, ); - name = "UIExplorer-tvOSIntegrationTests"; - productName = "UIExplorer-tvOSUnitTests"; - productReference = 2D4624E01DA2EA6900C74D09 /* UIExplorer-tvOSIntegrationTests.xctest */; + name = "RNTester-tvOSIntegrationTests"; + productName = "RNTester-tvOSUnitTests"; + productReference = 2D4624E01DA2EA6900C74D09 /* RNTester-tvOSIntegrationTests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; - 2DD3238F1DA2DD8A000FE1B8 /* UIExplorer-tvOS */ = { + 2DD3238F1DA2DD8A000FE1B8 /* RNTester-tvOS */ = { isa = PBXNativeTarget; - buildConfigurationList = 2DD323DA1DA2DD8B000FE1B8 /* Build configuration list for PBXNativeTarget "UIExplorer-tvOS" */; + buildConfigurationList = 2DD323DA1DA2DD8B000FE1B8 /* Build configuration list for PBXNativeTarget "RNTester-tvOS" */; buildPhases = ( 2DD3238C1DA2DD8A000FE1B8 /* Sources */, 2DD3238D1DA2DD8A000FE1B8 /* Frameworks */, @@ -978,14 +978,14 @@ ); dependencies = ( ); - name = "UIExplorer-tvOS"; - productName = "UIExplorer-tvOS"; - productReference = 2DD323901DA2DD8A000FE1B8 /* UIExplorer-tvOS.app */; + name = "RNTester-tvOS"; + productName = "RNTester-tvOS"; + productReference = 2DD323901DA2DD8A000FE1B8 /* RNTester-tvOS.app */; productType = "com.apple.product-type.application"; }; - 2DD323A41DA2DD8B000FE1B8 /* UIExplorer-tvOSUnitTests */ = { + 2DD323A41DA2DD8B000FE1B8 /* RNTester-tvOSUnitTests */ = { isa = PBXNativeTarget; - buildConfigurationList = 2DD323DB1DA2DD8B000FE1B8 /* Build configuration list for PBXNativeTarget "UIExplorer-tvOSUnitTests" */; + buildConfigurationList = 2DD323DB1DA2DD8B000FE1B8 /* Build configuration list for PBXNativeTarget "RNTester-tvOSUnitTests" */; buildPhases = ( 2DD323A11DA2DD8B000FE1B8 /* Sources */, 2DD323A21DA2DD8B000FE1B8 /* Frameworks */, @@ -996,14 +996,14 @@ dependencies = ( 2DD323A71DA2DD8B000FE1B8 /* PBXTargetDependency */, ); - name = "UIExplorer-tvOSUnitTests"; - productName = "UIExplorer-tvOSUnitTests"; - productReference = 2DD323A51DA2DD8B000FE1B8 /* UIExplorer-tvOSUnitTests.xctest */; + name = "RNTester-tvOSUnitTests"; + productName = "RNTester-tvOSUnitTests"; + productReference = 2DD323A51DA2DD8B000FE1B8 /* RNTester-tvOSUnitTests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; - 3D13F83D1D6F6AE000E69E0E /* UIExplorerBundle */ = { + 3D13F83D1D6F6AE000E69E0E /* RNTesterBundle */ = { isa = PBXNativeTarget; - buildConfigurationList = 3D13F8411D6F6AE000E69E0E /* Build configuration list for PBXNativeTarget "UIExplorerBundle" */; + buildConfigurationList = 3D13F8411D6F6AE000E69E0E /* Build configuration list for PBXNativeTarget "RNTesterBundle" */; buildPhases = ( 3D13F83A1D6F6AE000E69E0E /* Sources */, 3D13F83B1D6F6AE000E69E0E /* Frameworks */, @@ -1013,9 +1013,9 @@ ); dependencies = ( ); - name = UIExplorerBundle; - productName = UIExplorerBundle; - productReference = 3D13F83E1D6F6AE000E69E0E /* UIExplorerBundle.bundle */; + name = RNTesterBundle; + productName = RNTesterBundle; + productReference = 3D13F83E1D6F6AE000E69E0E /* RNTesterBundle.bundle */; productType = "com.apple.product-type.bundle"; }; /* End PBXNativeTarget section */ @@ -1048,7 +1048,7 @@ }; }; }; - buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "UIExplorer" */; + buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "RNTester" */; compatibilityVersion = "Xcode 3.2"; developmentRegion = English; hasScannedForEncodings = 0; @@ -1123,13 +1123,13 @@ ); projectRoot = ""; targets = ( - 13B07F861A680F5B00A75B9A /* UIExplorer */, - 004D289D1AAF61C70097A701 /* UIExplorerUnitTests */, - 143BC5941B21E3E100462512 /* UIExplorerIntegrationTests */, - 3D13F83D1D6F6AE000E69E0E /* UIExplorerBundle */, - 2DD3238F1DA2DD8A000FE1B8 /* UIExplorer-tvOS */, - 2DD323A41DA2DD8B000FE1B8 /* UIExplorer-tvOSUnitTests */, - 2D4624C11DA2EA6900C74D09 /* UIExplorer-tvOSIntegrationTests */, + 13B07F861A680F5B00A75B9A /* RNTester */, + 004D289D1AAF61C70097A701 /* RNTesterUnitTests */, + 143BC5941B21E3E100462512 /* RNTesterIntegrationTests */, + 3D13F83D1D6F6AE000E69E0E /* RNTesterBundle */, + 2DD3238F1DA2DD8A000FE1B8 /* RNTester-tvOS */, + 2DD323A41DA2DD8B000FE1B8 /* RNTester-tvOSUnitTests */, + 2D4624C11DA2EA6900C74D09 /* RNTester-tvOSIntegrationTests */, ); }; /* End PBXProject section */ @@ -1373,7 +1373,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 3DD981D61D33C6FB007DC7BE /* UIExplorerUnitTestsBundle.js in Resources */, + 3DD981D61D33C6FB007DC7BE /* RNTesterUnitTestsBundle.js in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1382,7 +1382,7 @@ buildActionMask = 2147483647; files = ( 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, - 3D56F9F11D6F6E9B00F53A06 /* UIExplorerBundle.bundle in Resources */, + 3D56F9F11D6F6E9B00F53A06 /* RNTesterBundle.bundle in Resources */, 3D2AFAF51D646CF80089D1A3 /* legacy_image@2x.png in Resources */, 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */, ); @@ -1416,7 +1416,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 2D4BD8E61DA2E20D005AC8A8 /* UIExplorerUnitTestsBundle.js in Resources */, + 2D4BD8E61DA2E20D005AC8A8 /* RNTesterUnitTestsBundle.js in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1443,7 +1443,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "export NODE_BINARY=node\n$SRCROOT/../../packager/react-native-xcode.sh Examples/UIExplorer/js/UIExplorerApp.ios.js"; + shellScript = "export NODE_BINARY=node\n$SRCROOT/../packager/react-native-xcode.sh RNTester/js/RNTesterApp.ios.js"; }; 68CD48B71D2BCB2C007E06A9 /* Run Script */ = { isa = PBXShellScriptBuildPhase; @@ -1457,7 +1457,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "export NODE_BINARY=node\n$SRCROOT/../../packager/react-native-xcode.sh Examples/UIExplorer/js/UIExplorerApp.ios.js"; + shellScript = "export NODE_BINARY=node\n$SRCROOT/../packager/react-native-xcode.sh RNTester/js/RNTesterApp.ios.js"; }; /* End PBXShellScriptBuildPhase section */ @@ -1509,11 +1509,11 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - C654F0B31EB34A73000B7A9A /* UIExplorerTestModule.m in Sources */, - 3DB99D0C1BA0340600302749 /* UIExplorerIntegrationTests.m in Sources */, + C654F0B31EB34A73000B7A9A /* RNTesterTestModule.m in Sources */, + 3DB99D0C1BA0340600302749 /* RNTesterIntegrationTests.m in Sources */, 83636F8F1B53F22C009F943E /* RCTUIManagerScenarioTests.m in Sources */, 3D299BAF1D33EBFA00FA1057 /* RCTLoggingTests.m in Sources */, - 143BC5A11B21E45C00462512 /* UIExplorerSnapshotTests.m in Sources */, + 143BC5A11B21E45C00462512 /* RNTesterSnapshotTests.m in Sources */, 27B885561BED29AF00008352 /* RCTRootViewIntegrationTests.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -1522,11 +1522,11 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - C654F17E1EB34D24000B7A9A /* UIExplorerTestModule.m in Sources */, - 2D4624FC1DA2EAC300C74D09 /* UIExplorerIntegrationTests.m in Sources */, + C654F17E1EB34D24000B7A9A /* RNTesterTestModule.m in Sources */, + 2D4624FC1DA2EAC300C74D09 /* RNTesterIntegrationTests.m in Sources */, 2D4624FA1DA2EAC300C74D09 /* RCTLoggingTests.m in Sources */, 2D4624FE1DA2EAC300C74D09 /* RCTUIManagerScenarioTests.m in Sources */, - 2D4624FD1DA2EAC300C74D09 /* UIExplorerSnapshotTests.m in Sources */, + 2D4624FD1DA2EAC300C74D09 /* RNTesterSnapshotTests.m in Sources */, 2D4624FB1DA2EAC300C74D09 /* RCTRootViewIntegrationTests.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -1581,22 +1581,22 @@ /* Begin PBXTargetDependency section */ 143BC59C1B21E3E100462512 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = 13B07F861A680F5B00A75B9A /* UIExplorer */; + target = 13B07F861A680F5B00A75B9A /* RNTester */; targetProxy = 143BC59B1B21E3E100462512 /* PBXContainerItemProxy */; }; 2D4624C21DA2EA6900C74D09 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = 2DD3238F1DA2DD8A000FE1B8 /* UIExplorer-tvOS */; + target = 2DD3238F1DA2DD8A000FE1B8 /* RNTester-tvOS */; targetProxy = 2D4624C31DA2EA6900C74D09 /* PBXContainerItemProxy */; }; 2DD323A71DA2DD8B000FE1B8 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = 2DD3238F1DA2DD8A000FE1B8 /* UIExplorer-tvOS */; + target = 2DD3238F1DA2DD8A000FE1B8 /* RNTester-tvOS */; targetProxy = 2DD323A61DA2DD8B000FE1B8 /* PBXContainerItemProxy */; }; 3D13F84C1D6F6B5F00E69E0E /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = 3D13F83D1D6F6AE000E69E0E /* UIExplorerBundle */; + target = 3D13F83D1D6F6AE000E69E0E /* RNTesterBundle */; targetProxy = 3D13F84B1D6F6B5F00E69E0E /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ @@ -1608,7 +1608,7 @@ 13B07FB21A68108700A75B9A /* Base */, ); name = LaunchScreen.xib; - path = UIExplorer; + path = RNTester; sourceTree = ""; }; /* End PBXVariantGroup section */ @@ -1620,14 +1620,14 @@ GCC_PREPROCESSOR_DEFINITIONS = "$(inherited)"; HEADER_SEARCH_PATHS = ( "$(inherited)", - "$(SRCROOT)/UIExplorerUnitTests", + "$(SRCROOT)/RNTesterUnitTests", ); - INFOPLIST_FILE = UIExplorerUnitTests/Info.plist; + INFOPLIST_FILE = RNTesterUnitTests/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; LIBRARY_SEARCH_PATHS = ( "$(inherited)", - "$(PROJECT_DIR)/UIExplorerUnitTests", + "$(PROJECT_DIR)/RNTesterUnitTests", ); PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -1639,14 +1639,14 @@ buildSettings = { HEADER_SEARCH_PATHS = ( "$(inherited)", - "$(SRCROOT)/UIExplorerUnitTests", + "$(SRCROOT)/RNTesterUnitTests", ); - INFOPLIST_FILE = UIExplorerUnitTests/Info.plist; + INFOPLIST_FILE = RNTesterUnitTests/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; LIBRARY_SEARCH_PATHS = ( "$(inherited)", - "$(PROJECT_DIR)/UIExplorerUnitTests", + "$(PROJECT_DIR)/RNTesterUnitTests", ); PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -1657,10 +1657,10 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - INFOPLIST_FILE = "$(SRCROOT)/UIExplorer/Info.plist"; + INFOPLIST_FILE = "$(SRCROOT)/RNTester/Info.plist"; LIBRARY_SEARCH_PATHS = "$(inherited)"; PRODUCT_BUNDLE_IDENTIFIER = com.facebook.react.uiapp; - PRODUCT_NAME = UIExplorer; + PRODUCT_NAME = RNTester; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; @@ -1670,10 +1670,10 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; DEVELOPMENT_TEAM = V9WTTPBFK9; - INFOPLIST_FILE = "$(SRCROOT)/UIExplorer/Info.plist"; + INFOPLIST_FILE = "$(SRCROOT)/RNTester/Info.plist"; LIBRARY_SEARCH_PATHS = "$(inherited)"; PRODUCT_BUNDLE_IDENTIFIER = com.facebook.react.uiapp; - PRODUCT_NAME = UIExplorer; + PRODUCT_NAME = RNTester; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Release; @@ -1688,12 +1688,12 @@ "$(inherited)", "FB_REFERENCE_IMAGE_DIR=\"\\\"$(SOURCE_ROOT)/$(PROJECT_NAME)IntegrationTests/ReferenceImages\\\"\"", ); - INFOPLIST_FILE = UIExplorerIntegrationTests/Info.plist; + INFOPLIST_FILE = RNTesterIntegrationTests/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.React.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/UIExplorer.app/UIExplorer"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/RNTester.app/RNTester"; }; name = Debug; }; @@ -1704,12 +1704,12 @@ COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; GCC_NO_COMMON_BLOCKS = YES; - INFOPLIST_FILE = UIExplorerIntegrationTests/Info.plist; + INFOPLIST_FILE = RNTesterIntegrationTests/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.React.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/UIExplorer.app/UIExplorer"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/RNTester.app/RNTester"; }; name = Release; }; @@ -1726,16 +1726,16 @@ "$(inherited)", "FB_REFERENCE_IMAGE_DIR=\"\\\"$(SOURCE_ROOT)/$(PROJECT_NAME)IntegrationTests/ReferenceImages\\\"\"", ); - INFOPLIST_FILE = UIExplorerIntegrationTests/Info.plist; + INFOPLIST_FILE = RNTesterIntegrationTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; LIBRARY_SEARCH_PATHS = ( "$(inherited)", - "$(PROJECT_DIR)/UIExplorerUnitTests", + "$(PROJECT_DIR)/RNTesterUnitTests", ); - PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.UIExplorer-tvOSIntegrationTests"; + PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.RNTester-tvOSIntegrationTests"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/UIExplorer-tvOS.app/UIExplorer-tvOS"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/RNTester-tvOS.app/RNTester-tvOS"; TVOS_DEPLOYMENT_TARGET = 9.2; }; name = Debug; @@ -1750,16 +1750,16 @@ COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; GCC_NO_COMMON_BLOCKS = YES; - INFOPLIST_FILE = UIExplorerIntegrationTests/Info.plist; + INFOPLIST_FILE = RNTesterIntegrationTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; LIBRARY_SEARCH_PATHS = ( "$(inherited)", - "$(PROJECT_DIR)/UIExplorerUnitTests", + "$(PROJECT_DIR)/RNTesterUnitTests", ); - PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.UIExplorer-tvOSIntegrationTests"; + PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.RNTester-tvOSIntegrationTests"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/UIExplorer-tvOS.app/UIExplorer-tvOS"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/RNTester-tvOS.app/RNTester-tvOS"; TVOS_DEPLOYMENT_TARGET = 9.2; }; name = Release; @@ -1773,9 +1773,9 @@ CLANG_WARN_SUSPICIOUS_MOVES = YES; DEBUG_INFORMATION_FORMAT = dwarf; GCC_NO_COMMON_BLOCKS = YES; - INFOPLIST_FILE = "UIExplorer-tvOS/Info.plist"; + INFOPLIST_FILE = "RNTester-tvOS/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.UIExplorer-tvOS"; + PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.RNTester-tvOS"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; TARGETED_DEVICE_FAMILY = 3; @@ -1793,9 +1793,9 @@ COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; GCC_NO_COMMON_BLOCKS = YES; - INFOPLIST_FILE = "UIExplorer-tvOS/Info.plist"; + INFOPLIST_FILE = "RNTester-tvOS/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.UIExplorer-tvOS"; + PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.RNTester-tvOS"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; TARGETED_DEVICE_FAMILY = 3; @@ -1814,18 +1814,18 @@ GCC_NO_COMMON_BLOCKS = YES; HEADER_SEARCH_PATHS = ( "$(inherited)", - "$(SRCROOT)/UIExplorerUnitTests/**", + "$(SRCROOT)/RNTesterUnitTests/**", ); - INFOPLIST_FILE = UIExplorerUnitTests/Info.plist; + INFOPLIST_FILE = RNTesterUnitTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; LIBRARY_SEARCH_PATHS = ( "$(inherited)", - "$(PROJECT_DIR)/UIExplorerUnitTests", + "$(PROJECT_DIR)/RNTesterUnitTests", ); - PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.UIExplorer-tvOSUnitTests"; + PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.RNTester-tvOSUnitTests"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/UIExplorer-tvOS.app/UIExplorer-tvOS"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/RNTester-tvOS.app/RNTester-tvOS"; TVOS_DEPLOYMENT_TARGET = 9.2; }; name = Debug; @@ -1842,18 +1842,18 @@ GCC_NO_COMMON_BLOCKS = YES; HEADER_SEARCH_PATHS = ( "$(inherited)", - "$(SRCROOT)/UIExplorerUnitTests/**", + "$(SRCROOT)/RNTesterUnitTests/**", ); - INFOPLIST_FILE = UIExplorerUnitTests/Info.plist; + INFOPLIST_FILE = RNTesterUnitTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; LIBRARY_SEARCH_PATHS = ( "$(inherited)", - "$(PROJECT_DIR)/UIExplorerUnitTests", + "$(PROJECT_DIR)/RNTesterUnitTests", ); - PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.UIExplorer-tvOSUnitTests"; + PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.RNTester-tvOSUnitTests"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/UIExplorer-tvOS.app/UIExplorer-tvOS"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/RNTester-tvOS.app/RNTester-tvOS"; TVOS_DEPLOYMENT_TARGET = 9.2; }; name = Release; @@ -1864,8 +1864,8 @@ CLANG_ANALYZER_NONNULL = YES; COMBINE_HIDPI_IMAGES = YES; GCC_NO_COMMON_BLOCKS = YES; - INFOPLIST_FILE = UIExplorer/UIExplorerBundle/Info.plist; - PRODUCT_BUNDLE_IDENTIFIER = com.facebook.UIExplorerBundle; + INFOPLIST_FILE = RNTester/RNTesterBundle/Info.plist; + PRODUCT_BUNDLE_IDENTIFIER = com.facebook.RNTesterBundle; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; WRAPPER_EXTENSION = bundle; @@ -1878,8 +1878,8 @@ CLANG_ANALYZER_NONNULL = YES; COMBINE_HIDPI_IMAGES = YES; GCC_NO_COMMON_BLOCKS = YES; - INFOPLIST_FILE = UIExplorer/UIExplorerBundle/Info.plist; - PRODUCT_BUNDLE_IDENTIFIER = com.facebook.UIExplorerBundle; + INFOPLIST_FILE = RNTester/RNTesterBundle/Info.plist; + PRODUCT_BUNDLE_IDENTIFIER = com.facebook.RNTesterBundle; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; WRAPPER_EXTENSION = bundle; @@ -2018,7 +2018,7 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 004D28AD1AAF61C70097A701 /* Build configuration list for PBXNativeTarget "UIExplorerUnitTests" */ = { + 004D28AD1AAF61C70097A701 /* Build configuration list for PBXNativeTarget "RNTesterUnitTests" */ = { isa = XCConfigurationList; buildConfigurations = ( 004D28A61AAF61C70097A701 /* Debug */, @@ -2027,7 +2027,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "UIExplorer" */ = { + 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "RNTester" */ = { isa = XCConfigurationList; buildConfigurations = ( 13B07F941A680F5B00A75B9A /* Debug */, @@ -2036,7 +2036,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 143BC59D1B21E3E100462512 /* Build configuration list for PBXNativeTarget "UIExplorerIntegrationTests" */ = { + 143BC59D1B21E3E100462512 /* Build configuration list for PBXNativeTarget "RNTesterIntegrationTests" */ = { isa = XCConfigurationList; buildConfigurations = ( 143BC59E1B21E3E100462512 /* Debug */, @@ -2045,7 +2045,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 2D4624DD1DA2EA6900C74D09 /* Build configuration list for PBXNativeTarget "UIExplorer-tvOSIntegrationTests" */ = { + 2D4624DD1DA2EA6900C74D09 /* Build configuration list for PBXNativeTarget "RNTester-tvOSIntegrationTests" */ = { isa = XCConfigurationList; buildConfigurations = ( 2D4624DE1DA2EA6900C74D09 /* Debug */, @@ -2054,7 +2054,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 2DD323DA1DA2DD8B000FE1B8 /* Build configuration list for PBXNativeTarget "UIExplorer-tvOS" */ = { + 2DD323DA1DA2DD8B000FE1B8 /* Build configuration list for PBXNativeTarget "RNTester-tvOS" */ = { isa = XCConfigurationList; buildConfigurations = ( 2DD323AC1DA2DD8B000FE1B8 /* Debug */, @@ -2063,7 +2063,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 2DD323DB1DA2DD8B000FE1B8 /* Build configuration list for PBXNativeTarget "UIExplorer-tvOSUnitTests" */ = { + 2DD323DB1DA2DD8B000FE1B8 /* Build configuration list for PBXNativeTarget "RNTester-tvOSUnitTests" */ = { isa = XCConfigurationList; buildConfigurations = ( 2DD323AE1DA2DD8B000FE1B8 /* Debug */, @@ -2072,7 +2072,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 3D13F8411D6F6AE000E69E0E /* Build configuration list for PBXNativeTarget "UIExplorerBundle" */ = { + 3D13F8411D6F6AE000E69E0E /* Build configuration list for PBXNativeTarget "RNTesterBundle" */ = { isa = XCConfigurationList; buildConfigurations = ( 3D13F8421D6F6AE000E69E0E /* Debug */, @@ -2081,7 +2081,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "UIExplorer" */ = { + 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "RNTester" */ = { isa = XCConfigurationList; buildConfigurations = ( 83CBBA201A601CBA00E9B192 /* Debug */, diff --git a/Examples/UIExplorer/UIExplorer.xcodeproj/xcshareddata/xcschemes/UIExplorer-tvOS.xcscheme b/RNTester/RNTester.xcodeproj/xcshareddata/xcschemes/RNTester-tvOS.xcscheme similarity index 77% rename from Examples/UIExplorer/UIExplorer.xcodeproj/xcshareddata/xcschemes/UIExplorer-tvOS.xcscheme rename to RNTester/RNTester.xcodeproj/xcshareddata/xcschemes/RNTester-tvOS.xcscheme index 5cb85ce16ba1..95e17856e3e5 100644 --- a/Examples/UIExplorer/UIExplorer.xcodeproj/xcshareddata/xcschemes/UIExplorer-tvOS.xcscheme +++ b/RNTester/RNTester.xcodeproj/xcshareddata/xcschemes/RNTester-tvOS.xcscheme @@ -17,7 +17,7 @@ BlueprintIdentifier = "2D2A28121D9B038B00D4039D" BuildableName = "libReact.a" BlueprintName = "React-tvOS" - ReferencedContainer = "container:../../React/React.xcodeproj"> + ReferencedContainer = "container:../React/React.xcodeproj"> + BuildableName = "RNTester-tvOS.app" + BlueprintName = "RNTester-tvOS" + ReferencedContainer = "container:RNTester.xcodeproj"> @@ -47,9 +47,9 @@ + BuildableName = "RNTester-tvOSUnitTests.xctest" + BlueprintName = "RNTester-tvOSUnitTests" + ReferencedContainer = "container:RNTester.xcodeproj"> + BuildableName = "RNTester-tvOSIntegrationTests.xctest" + BlueprintName = "RNTester-tvOSIntegrationTests" + ReferencedContainer = "container:RNTester.xcodeproj"> @@ -67,9 +67,9 @@ + BuildableName = "RNTester-tvOS.app" + BlueprintName = "RNTester-tvOS" + ReferencedContainer = "container:RNTester.xcodeproj"> @@ -90,9 +90,9 @@ + BuildableName = "RNTester-tvOS.app" + BlueprintName = "RNTester-tvOS" + ReferencedContainer = "container:RNTester.xcodeproj"> @@ -116,9 +116,9 @@ + BuildableName = "RNTester-tvOS.app" + BlueprintName = "RNTester-tvOS" + ReferencedContainer = "container:RNTester.xcodeproj"> diff --git a/Examples/UIExplorer/UIExplorer.xcodeproj/xcshareddata/xcschemes/UIExplorer.xcscheme b/RNTester/RNTester.xcodeproj/xcshareddata/xcschemes/RNTester.xcscheme similarity index 75% rename from Examples/UIExplorer/UIExplorer.xcodeproj/xcshareddata/xcschemes/UIExplorer.xcscheme rename to RNTester/RNTester.xcodeproj/xcshareddata/xcschemes/RNTester.xcscheme index 88813411bc3e..93f81fdc17a4 100644 --- a/Examples/UIExplorer/UIExplorer.xcodeproj/xcshareddata/xcschemes/UIExplorer.xcscheme +++ b/RNTester/RNTester.xcodeproj/xcshareddata/xcschemes/RNTester.xcscheme @@ -17,7 +17,7 @@ BlueprintIdentifier = "83CBBA2D1A601D0E00E9B192" BuildableName = "libReact.a" BlueprintName = "React" - ReferencedContainer = "container:../../React/React.xcodeproj"> + ReferencedContainer = "container:../React/React.xcodeproj"> + BuildableName = "RNTesterBundle.bundle" + BlueprintName = "RNTesterBundle" + ReferencedContainer = "container:RNTester.xcodeproj"> + BuildableName = "RNTester.app" + BlueprintName = "RNTester" + ReferencedContainer = "container:RNTester.xcodeproj"> + BuildableName = "RNTesterUnitTests.xctest" + BlueprintName = "RNTesterUnitTests" + ReferencedContainer = "container:RNTester.xcodeproj"> + BuildableName = "RNTesterIntegrationTests.xctest" + BlueprintName = "RNTesterIntegrationTests" + ReferencedContainer = "container:RNTester.xcodeproj"> @@ -89,9 +89,9 @@ + BuildableName = "RNTesterUnitTests.xctest" + BlueprintName = "RNTesterUnitTests" + ReferencedContainer = "container:RNTester.xcodeproj"> + BuildableName = "RNTesterIntegrationTests.xctest" + BlueprintName = "RNTesterIntegrationTests" + ReferencedContainer = "container:RNTester.xcodeproj"> @@ -109,9 +109,9 @@ + BuildableName = "RNTester.app" + BlueprintName = "RNTester" + ReferencedContainer = "container:RNTester.xcodeproj"> @@ -132,9 +132,9 @@ + BuildableName = "RNTester.app" + BlueprintName = "RNTester" + ReferencedContainer = "container:RNTester.xcodeproj"> @@ -158,9 +158,9 @@ + BuildableName = "RNTester.app" + BlueprintName = "RNTester" + ReferencedContainer = "container:RNTester.xcodeproj"> diff --git a/RNTester/RNTester/AppDelegate.h b/RNTester/RNTester/AppDelegate.h new file mode 100644 index 000000000000..64cd15e5ae48 --- /dev/null +++ b/RNTester/RNTester/AppDelegate.h @@ -0,0 +1,20 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + +#import + +@class RCTBridge; + +@interface AppDelegate : UIResponder + +@property (nonatomic, strong) UIWindow *window; +@property (nonatomic, readonly) RCTBridge *bridge; + +@end diff --git a/Examples/UIExplorer/UIExplorer/AppDelegate.m b/RNTester/RNTester/AppDelegate.m similarity index 82% rename from Examples/UIExplorer/UIExplorer/AppDelegate.m rename to RNTester/RNTester/AppDelegate.m index 74eb5042a33f..b09747b5aae2 100644 --- a/Examples/UIExplorer/UIExplorer/AppDelegate.m +++ b/RNTester/RNTester/AppDelegate.m @@ -1,15 +1,11 @@ /** - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. * - * Facebook reserves all rights not expressly granted. + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #import "AppDelegate.h" @@ -39,11 +35,11 @@ - (BOOL)application:(__unused UIApplication *)application didFinishLaunchingWith NSDictionary *initProps = nil; NSString *_routeUri = [[NSUserDefaults standardUserDefaults] stringForKey:@"route"]; if (_routeUri) { - initProps = @{@"exampleFromAppetizeParams": [NSString stringWithFormat:@"rnuiexplorer://example/%@Example", _routeUri]}; + initProps = @{@"exampleFromAppetizeParams": [NSString stringWithFormat:@"rntester://example/%@Example", _routeUri]}; } RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:_bridge - moduleName:@"UIExplorerApp" + moduleName:@"RNTesterApp" initialProperties:initProps]; self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; @@ -56,7 +52,7 @@ - (BOOL)application:(__unused UIApplication *)application didFinishLaunchingWith - (NSURL *)sourceURLForBridge:(__unused RCTBridge *)bridge { - return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"Examples/UIExplorer/js/UIExplorerApp.ios" + return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"RNTester/js/RNTesterApp.ios" fallbackResource:nil]; } diff --git a/Examples/UIExplorer/UIExplorer/Base.lproj/LaunchScreen.xib b/RNTester/RNTester/Base.lproj/LaunchScreen.xib similarity index 93% rename from Examples/UIExplorer/UIExplorer/Base.lproj/LaunchScreen.xib rename to RNTester/RNTester/Base.lproj/LaunchScreen.xib index 0556e6641fb0..d8d6ba0a6a9c 100644 --- a/Examples/UIExplorer/UIExplorer/Base.lproj/LaunchScreen.xib +++ b/RNTester/RNTester/Base.lproj/LaunchScreen.xib @@ -19,7 +19,7 @@ - - + - + Click me @@ -150,15 +138,15 @@ class AccessibilityAndroidExample extends React.Component { Clicked {this.state.count} times - + - + The screen reader is {this.state.screenReaderEnabled ? 'enabled' : 'disabled'}. - + - + - + - + ); } } diff --git a/Examples/UIExplorer/js/AccessibilityIOSExample.js b/RNTester/js/AccessibilityIOSExample.js similarity index 79% rename from Examples/UIExplorer/js/AccessibilityIOSExample.js rename to RNTester/js/AccessibilityIOSExample.js index b36a31238ae8..e21772dcfa47 100644 --- a/Examples/UIExplorer/js/AccessibilityIOSExample.js +++ b/RNTester/js/AccessibilityIOSExample.js @@ -1,23 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @flow * @providesModule AccessibilityIOSExample */ diff --git a/Examples/UIExplorer/js/ActionSheetIOSExample.js b/RNTester/js/ActionSheetIOSExample.js similarity index 87% rename from Examples/UIExplorer/js/ActionSheetIOSExample.js rename to RNTester/js/ActionSheetIOSExample.js index fe6084acdb4f..c89478668dc8 100644 --- a/Examples/UIExplorer/js/ActionSheetIOSExample.js +++ b/RNTester/js/ActionSheetIOSExample.js @@ -1,23 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @flow * @providesModule ActionSheetIOSExample */ diff --git a/Examples/UIExplorer/js/ActivityIndicatorExample.js b/RNTester/js/ActivityIndicatorExample.js similarity index 85% rename from Examples/UIExplorer/js/ActivityIndicatorExample.js rename to RNTester/js/ActivityIndicatorExample.js index 2d2c2bb5c8ad..6868795cc284 100644 --- a/Examples/UIExplorer/js/ActivityIndicatorExample.js +++ b/RNTester/js/ActivityIndicatorExample.js @@ -1,23 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @flow * @providesModule ActivityIndicatorExample */ diff --git a/Examples/UIExplorer/js/AdSupportIOSExample.js b/RNTester/js/AdSupportIOSExample.js similarity index 75% rename from Examples/UIExplorer/js/AdSupportIOSExample.js rename to RNTester/js/AdSupportIOSExample.js index 5410b3d41b65..4c20f1e9146f 100644 --- a/Examples/UIExplorer/js/AdSupportIOSExample.js +++ b/RNTester/js/AdSupportIOSExample.js @@ -1,23 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @flow * @providesModule AdSupportIOSExample */ diff --git a/Examples/UIExplorer/js/AlertExample.js b/RNTester/js/AlertExample.js similarity index 83% rename from Examples/UIExplorer/js/AlertExample.js rename to RNTester/js/AlertExample.js index 92a0668e504e..0e343453f35b 100644 --- a/Examples/UIExplorer/js/AlertExample.js +++ b/RNTester/js/AlertExample.js @@ -1,23 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @providesModule AlertExample */ @@ -33,7 +21,7 @@ var { View, } = ReactNative; -var UIExplorerBlock = require('./UIExplorerBlock'); +var RNTesterBlock = require('./RNTesterBlock'); // corporate ipsum > lorem ipsum var alertMessage = 'Credibly reintermediate next-generation potentialities after goal-oriented ' + @@ -135,9 +123,9 @@ class AlertExample extends React.Component { render() { return ( - + - + ); } } diff --git a/Examples/UIExplorer/js/AlertIOSExample.js b/RNTester/js/AlertIOSExample.js similarity index 87% rename from Examples/UIExplorer/js/AlertIOSExample.js rename to RNTester/js/AlertIOSExample.js index 023e2acf0c59..e3d737556195 100644 --- a/Examples/UIExplorer/js/AlertIOSExample.js +++ b/RNTester/js/AlertIOSExample.js @@ -1,23 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @flow * @providesModule AlertIOSExample */ diff --git a/Examples/UIExplorer/js/AnimatedExample.js b/RNTester/js/AnimatedExample.js similarity index 87% rename from Examples/UIExplorer/js/AnimatedExample.js rename to RNTester/js/AnimatedExample.js index 0eec072d8579..a8fd96c5e502 100644 --- a/Examples/UIExplorer/js/AnimatedExample.js +++ b/RNTester/js/AnimatedExample.js @@ -1,23 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @flow * @providesModule AnimatedExample */ @@ -32,7 +20,7 @@ var { Text, View, } = ReactNative; -var UIExplorerButton = require('./UIExplorerButton'); +var RNTesterButton = require('./RNTesterButton'); exports.framework = 'React'; exports.title = 'Animated - Examples'; @@ -88,14 +76,14 @@ exports.examples = [ render() { return ( - { + { this.setState((state) => ( {show: !state.show} )); }}> Press to {this.state.show ? 'Hide' : 'Show'} - + {this.state.show && FadeInView @@ -119,7 +107,7 @@ exports.examples = [ this.anim = this.anim || new Animated.Value(0); return ( - { + { Animated.spring(this.anim, { toValue: 0, // Returns to the start velocity: 3, // Velocity makes it move @@ -127,7 +115,7 @@ exports.examples = [ friction: 1, // Oscillate a lot }).start(); }}> Press to Fling it! - + - { + { var timing = Animated.timing; Animated.sequence([ // One after the other timing(this.anims[0], { @@ -204,7 +192,7 @@ exports.examples = [ ), ]).start(); }}> Press to Animate - + {['Composite', 'Easing', 'Animations!'].map( (text, ii) => ( - + + {this.state.simpleText} - - + + {this.state.spinnerText} - - + + {this.state.calendarText} - - + + {this.state.defaultText} - - + + {this.state.presetText} - - + + {this.state.minText} - - + + {this.state.maxText} - - + + {this.state.allText} - - + + ); } } diff --git a/Examples/UIExplorer/js/DatePickerIOSExample.js b/RNTester/js/DatePickerIOSExample.js similarity index 85% rename from Examples/UIExplorer/js/DatePickerIOSExample.js rename to RNTester/js/DatePickerIOSExample.js index edd9dab1bc8d..97f1b9ac8b50 100644 --- a/Examples/UIExplorer/js/DatePickerIOSExample.js +++ b/RNTester/js/DatePickerIOSExample.js @@ -1,23 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @flow * @providesModule DatePickerIOSExample */ diff --git a/RNTester/js/ExampleTypes.js b/RNTester/js/ExampleTypes.js new file mode 100644 index 000000000000..760b2396a730 --- /dev/null +++ b/RNTester/js/ExampleTypes.js @@ -0,0 +1,27 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * @providesModule ExampleTypes + * @flow + */ +'use strict'; + +import type React from 'react'; + +export type Example = { + title: string, + render: () => ?React.Element, + description?: string, + platform?: string, +}; + +export type ExampleModule = { + title: string, + description: string, + examples: Array, +}; diff --git a/Examples/UIExplorer/js/FlatListExample.js b/RNTester/js/FlatListExample.js similarity index 88% rename from Examples/UIExplorer/js/FlatListExample.js rename to RNTester/js/FlatListExample.js index c4d67cb1f71e..78782bd19c1a 100644 --- a/Examples/UIExplorer/js/FlatListExample.js +++ b/RNTester/js/FlatListExample.js @@ -1,23 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @flow * @providesModule FlatListExample */ @@ -32,7 +20,7 @@ const { View, } = ReactNative; -const UIExplorerPage = require('./UIExplorerPage'); +const RNTesterPage = require('./RNTesterPage'); const infoLog = require('infoLog'); @@ -101,7 +89,7 @@ class FlatListExample extends React.PureComponent { ); const filteredData = this.state.data.filter(filter); return ( - @@ -157,7 +145,7 @@ class FlatListExample extends React.PureComponent { viewabilityConfig={VIEWABILITY_CONFIG} /> - + ); } _captureRef = (ref) => { this._listRef = ref; }; diff --git a/Examples/UIExplorer/js/GeolocationExample.js b/RNTester/js/GeolocationExample.js similarity index 73% rename from Examples/UIExplorer/js/GeolocationExample.js rename to RNTester/js/GeolocationExample.js index e8ab9bab4423..c60eab3cfbeb 100644 --- a/Examples/UIExplorer/js/GeolocationExample.js +++ b/RNTester/js/GeolocationExample.js @@ -1,27 +1,14 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @flow * @providesModule GeolocationExample */ -/* eslint no-console: 0 */ 'use strict'; diff --git a/Examples/UIExplorer/js/ImageCapInsetsExample.js b/RNTester/js/ImageCapInsetsExample.js similarity index 74% rename from Examples/UIExplorer/js/ImageCapInsetsExample.js rename to RNTester/js/ImageCapInsetsExample.js index 513a521eecb0..7861d63a8564 100644 --- a/Examples/UIExplorer/js/ImageCapInsetsExample.js +++ b/RNTester/js/ImageCapInsetsExample.js @@ -1,23 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @providesModule ImageCapInsetsExample * @flow */ diff --git a/RNTester/js/ImageEditingExample.js b/RNTester/js/ImageEditingExample.js new file mode 100644 index 000000000000..f59e5891ab2d --- /dev/null +++ b/RNTester/js/ImageEditingExample.js @@ -0,0 +1,11 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * @flow + * @providesModule ImageEditingExample + */ diff --git a/Examples/UIExplorer/js/ImageExample.js b/RNTester/js/ImageExample.js similarity index 96% rename from Examples/UIExplorer/js/ImageExample.js rename to RNTester/js/ImageExample.js index 1f824c7745c4..580b9887503e 100644 --- a/Examples/UIExplorer/js/ImageExample.js +++ b/RNTester/js/ImageExample.js @@ -1,23 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @flow * @providesModule ImageExample */ @@ -657,7 +645,7 @@ exports.examples = [ - + + {this.renderExample()} - - + + ); } } diff --git a/Examples/UIExplorer/js/LayoutAnimationExample.js b/RNTester/js/LayoutAnimationExample.js similarity index 83% rename from Examples/UIExplorer/js/LayoutAnimationExample.js rename to RNTester/js/LayoutAnimationExample.js index e175bbdeea00..fdd2c0f1c898 100644 --- a/Examples/UIExplorer/js/LayoutAnimationExample.js +++ b/RNTester/js/LayoutAnimationExample.js @@ -1,23 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @flow * @providesModule LayoutAnimationExample */ diff --git a/Examples/UIExplorer/js/LayoutEventsExample.js b/RNTester/js/LayoutEventsExample.js similarity index 86% rename from Examples/UIExplorer/js/LayoutEventsExample.js rename to RNTester/js/LayoutEventsExample.js index 322e32f9ae4d..e2b868df165d 100644 --- a/Examples/UIExplorer/js/LayoutEventsExample.js +++ b/RNTester/js/LayoutEventsExample.js @@ -1,23 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @flow * @providesModule LayoutEventsExample */ diff --git a/Examples/UIExplorer/js/LayoutExample.js b/RNTester/js/LayoutExample.js similarity index 81% rename from Examples/UIExplorer/js/LayoutExample.js rename to RNTester/js/LayoutExample.js index 9548ab9b10ca..6fc96757ed17 100644 --- a/Examples/UIExplorer/js/LayoutExample.js +++ b/RNTester/js/LayoutExample.js @@ -1,23 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @flow * @providesModule LayoutExample */ @@ -31,8 +19,8 @@ var { View, } = ReactNative; -var UIExplorerBlock = require('./UIExplorerBlock'); -var UIExplorerPage = require('./UIExplorerPage'); +var RNTesterBlock = require('./RNTesterBlock'); +var RNTesterPage = require('./RNTesterPage'); class Circle extends React.Component { render() { @@ -84,8 +72,8 @@ class LayoutExample extends React.Component { ]; return ( - - + + row {fiveColoredCircles} @@ -105,9 +93,9 @@ class LayoutExample extends React.Component { {'top: 15, left: 160'} - + - + flex-start {fiveColoredCircles} @@ -128,8 +116,8 @@ class LayoutExample extends React.Component { {fiveColoredCircles} - - + + flex-start @@ -157,13 +145,13 @@ class LayoutExample extends React.Component { - - + + {'oooooooooooooooo'.split('').map((char, i) => )} - - + + ); } } diff --git a/Examples/UIExplorer/js/LinkingExample.js b/RNTester/js/LinkingExample.js similarity index 70% rename from Examples/UIExplorer/js/LinkingExample.js rename to RNTester/js/LinkingExample.js index 0bda4bb350a1..7da8f99fca9e 100644 --- a/Examples/UIExplorer/js/LinkingExample.js +++ b/RNTester/js/LinkingExample.js @@ -1,22 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * @providesModule LinkingExample */ 'use strict'; @@ -31,7 +20,7 @@ var { TouchableOpacity, View, } = ReactNative; -var UIExplorerBlock = require('./UIExplorerBlock'); +var RNTesterBlock = require('./RNTesterBlock'); class OpenURLButton extends React.Component { static propTypes = { @@ -66,14 +55,14 @@ class IntentAndroidExample extends React.Component { render() { return ( - + - + ); } } diff --git a/Examples/UIExplorer/js/ListExampleShared.js b/RNTester/js/ListExampleShared.js similarity index 92% rename from Examples/UIExplorer/js/ListExampleShared.js rename to RNTester/js/ListExampleShared.js index 825b736429f7..63a720262d9b 100644 --- a/Examples/UIExplorer/js/ListExampleShared.js +++ b/RNTester/js/ListExampleShared.js @@ -1,23 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @flow * @providesModule ListExampleShared */ diff --git a/Examples/UIExplorer/js/ListViewExample.js b/RNTester/js/ListViewExample.js similarity index 84% rename from Examples/UIExplorer/js/ListViewExample.js rename to RNTester/js/ListViewExample.js index ae2d18179bf9..be70270b7270 100644 --- a/Examples/UIExplorer/js/ListViewExample.js +++ b/RNTester/js/ListViewExample.js @@ -1,23 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @flow * @providesModule ListViewExample */ @@ -34,7 +22,7 @@ var { View, } = ReactNative; -var UIExplorerPage = require('./UIExplorerPage'); +var RNTesterPage = require('./RNTesterPage'); var ListViewSimpleExample = React.createClass({ statics: { @@ -57,7 +45,7 @@ var ListViewSimpleExample = React.createClass({ render: function() { return ( - '} noSpacer={true} noScroll={true}> @@ -66,7 +54,7 @@ var ListViewSimpleExample = React.createClass({ renderRow={this._renderRow} renderSeparator={this._renderSeparator} /> - + ); }, diff --git a/Examples/UIExplorer/js/ListViewGridLayoutExample.js b/RNTester/js/ListViewGridLayoutExample.js similarity index 84% rename from Examples/UIExplorer/js/ListViewGridLayoutExample.js rename to RNTester/js/ListViewGridLayoutExample.js index 988ef34d4d30..635743c3fdbf 100644 --- a/Examples/UIExplorer/js/ListViewGridLayoutExample.js +++ b/RNTester/js/ListViewGridLayoutExample.js @@ -1,23 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @flow * @providesModule ListViewGridLayoutExample */ diff --git a/Examples/UIExplorer/js/ListViewPagingExample.js b/RNTester/js/ListViewPagingExample.js similarity index 91% rename from Examples/UIExplorer/js/ListViewPagingExample.js rename to RNTester/js/ListViewPagingExample.js index f140f29948e7..bf593affcbab 100644 --- a/Examples/UIExplorer/js/ListViewPagingExample.js +++ b/RNTester/js/ListViewPagingExample.js @@ -1,23 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @providesModule ListViewPagingExample * @flow */ diff --git a/Examples/UIExplorer/js/ModalExample.js b/RNTester/js/ModalExample.js similarity index 89% rename from Examples/UIExplorer/js/ModalExample.js rename to RNTester/js/ModalExample.js index d2a3012014ce..f11b41da9451 100644 --- a/Examples/UIExplorer/js/ModalExample.js +++ b/RNTester/js/ModalExample.js @@ -1,23 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @flow * @providesModule ModalExample */ diff --git a/Examples/UIExplorer/js/MultiColumnExample.js b/RNTester/js/MultiColumnExample.js similarity index 85% rename from Examples/UIExplorer/js/MultiColumnExample.js rename to RNTester/js/MultiColumnExample.js index 876110cbf0da..0315ead79668 100644 --- a/Examples/UIExplorer/js/MultiColumnExample.js +++ b/RNTester/js/MultiColumnExample.js @@ -1,23 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @flow * @providesModule MultiColumnExample */ @@ -32,7 +20,7 @@ const { View, } = ReactNative; -const UIExplorerPage = require('./UIExplorerPage'); +const RNTesterPage = require('./RNTesterPage'); const infoLog = require('infoLog'); @@ -71,7 +59,7 @@ class MultiColumnExample extends React.PureComponent { const filter = (item) => (filterRegex.test(item.text) || filterRegex.test(item.title)); const filteredData = this.state.data.filter(filter); return ( - - MultiColumn'} noSpacer={true} noScroll={true}> @@ -110,7 +98,7 @@ class MultiColumnExample extends React.PureComponent { onViewableItemsChanged={this._onViewableItemsChanged} legacyImplementation={false} /> - + ); } _getItemLayout(data: any, index: number): {length: number, offset: number, index: number} { diff --git a/Examples/UIExplorer/js/NativeAnimationsExample.js b/RNTester/js/NativeAnimationsExample.js similarity index 93% rename from Examples/UIExplorer/js/NativeAnimationsExample.js rename to RNTester/js/NativeAnimationsExample.js index d9550530ed85..29f3987de00e 100644 --- a/Examples/UIExplorer/js/NativeAnimationsExample.js +++ b/RNTester/js/NativeAnimationsExample.js @@ -1,23 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @flow * @providesModule NativeAnimationsExample */ @@ -126,14 +114,14 @@ class ValueListenerExample extends React.Component { } } -const UIExplorerSettingSwitchRow = require('UIExplorerSettingSwitchRow'); +const RNTesterSettingSwitchRow = require('RNTesterSettingSwitchRow'); class InternalSettings extends React.Component { _stallInterval: ?number; state: {busyTime: number | string, filteredStall: number}; render() { return ( - { @@ -147,7 +135,7 @@ class InternalSettings extends React.Component { clearInterval(this._stallInterval || 0); }} /> - { diff --git a/Examples/UIExplorer/js/NavigatorIOSColorsExample.js b/RNTester/js/NavigatorIOSColorsExample.js similarity index 73% rename from Examples/UIExplorer/js/NavigatorIOSColorsExample.js rename to RNTester/js/NavigatorIOSColorsExample.js index 18ef3010dc35..fd345c4af69f 100644 --- a/Examples/UIExplorer/js/NavigatorIOSColorsExample.js +++ b/RNTester/js/NavigatorIOSColorsExample.js @@ -1,22 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * @providesModule NavigatorIOSColorsExample */ 'use strict'; diff --git a/Examples/UIExplorer/js/NavigatorIOSExample.js b/RNTester/js/NavigatorIOSExample.js similarity index 92% rename from Examples/UIExplorer/js/NavigatorIOSExample.js rename to RNTester/js/NavigatorIOSExample.js index 71cbb1ee94e1..8d7582679bd5 100644 --- a/Examples/UIExplorer/js/NavigatorIOSExample.js +++ b/RNTester/js/NavigatorIOSExample.js @@ -1,23 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @flow * @providesModule NavigatorIOSExample */ diff --git a/Examples/UIExplorer/js/NetInfoExample.js b/RNTester/js/NetInfoExample.js similarity index 86% rename from Examples/UIExplorer/js/NetInfoExample.js rename to RNTester/js/NetInfoExample.js index 6c4542a19010..0d5d88925ad6 100644 --- a/Examples/UIExplorer/js/NetInfoExample.js +++ b/RNTester/js/NetInfoExample.js @@ -1,23 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @flow * @providesModule NetInfoExample */ diff --git a/Examples/UIExplorer/js/OrientationChangeExample.js b/RNTester/js/OrientationChangeExample.js similarity index 70% rename from Examples/UIExplorer/js/OrientationChangeExample.js rename to RNTester/js/OrientationChangeExample.js index 1bcb767c72a7..f0c9f33a056f 100644 --- a/Examples/UIExplorer/js/OrientationChangeExample.js +++ b/RNTester/js/OrientationChangeExample.js @@ -1,23 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @providesModule OrientationChangeExample * @flow */ diff --git a/Examples/UIExplorer/js/PanResponderExample.js b/RNTester/js/PanResponderExample.js similarity index 83% rename from Examples/UIExplorer/js/PanResponderExample.js rename to RNTester/js/PanResponderExample.js index 474cabc3795e..70cb5e696ac0 100644 --- a/Examples/UIExplorer/js/PanResponderExample.js +++ b/RNTester/js/PanResponderExample.js @@ -1,23 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @flow weak * @providesModule PanResponderExample */ diff --git a/Examples/UIExplorer/js/PermissionsExampleAndroid.android.js b/RNTester/js/PermissionsExampleAndroid.android.js similarity index 83% rename from Examples/UIExplorer/js/PermissionsExampleAndroid.android.js rename to RNTester/js/PermissionsExampleAndroid.android.js index 8a5bc52888d8..8106ed4c8aea 100644 --- a/Examples/UIExplorer/js/PermissionsExampleAndroid.android.js +++ b/RNTester/js/PermissionsExampleAndroid.android.js @@ -1,23 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @providesModule PermissionsExampleAndroid * @flow */ diff --git a/Examples/UIExplorer/js/PickerExample.js b/RNTester/js/PickerExample.js similarity index 73% rename from Examples/UIExplorer/js/PickerExample.js rename to RNTester/js/PickerExample.js index c5bf301032c9..f9a6d1323e99 100644 --- a/Examples/UIExplorer/js/PickerExample.js +++ b/RNTester/js/PickerExample.js @@ -1,23 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @flow * @providesModule PickerExample */ @@ -26,8 +14,8 @@ const React = require('react'); const ReactNative = require('react-native'); const StyleSheet = require('StyleSheet'); -const UIExplorerBlock = require('UIExplorerBlock'); -const UIExplorerPage = require('UIExplorerPage'); +const RNTesterBlock = require('RNTesterBlock'); +const RNTesterPage = require('RNTesterPage'); const { Picker, @@ -50,8 +38,8 @@ class PickerExample extends React.Component { render() { return ( - - + + - - + + - - + + - - + + - - + + @@ -94,8 +82,8 @@ class PickerExample extends React.Component { Cannot change the value of this picker because it doesn't update selectedValue. - - + + - - + + ); } diff --git a/Examples/UIExplorer/js/PickerIOSExample.js b/RNTester/js/PickerIOSExample.js similarity index 85% rename from Examples/UIExplorer/js/PickerIOSExample.js rename to RNTester/js/PickerIOSExample.js index 63716a19d884..da4addd29315 100644 --- a/Examples/UIExplorer/js/PickerIOSExample.js +++ b/RNTester/js/PickerIOSExample.js @@ -1,23 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @flow * @providesModule PickerIOSExample */ diff --git a/Examples/UIExplorer/js/PointerEventsExample.js b/RNTester/js/PointerEventsExample.js similarity index 90% rename from Examples/UIExplorer/js/PointerEventsExample.js rename to RNTester/js/PointerEventsExample.js index c98bb7b9612d..6ddfc966aa82 100644 --- a/Examples/UIExplorer/js/PointerEventsExample.js +++ b/RNTester/js/PointerEventsExample.js @@ -1,23 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @flow * @providesModule PointerEventsExample */ diff --git a/Examples/UIExplorer/js/ProgressBarAndroidExample.android.js b/RNTester/js/ProgressBarAndroidExample.android.js similarity index 54% rename from Examples/UIExplorer/js/ProgressBarAndroidExample.android.js rename to RNTester/js/ProgressBarAndroidExample.android.js index 82e8c0e65aef..1ea184483f46 100644 --- a/Examples/UIExplorer/js/ProgressBarAndroidExample.android.js +++ b/RNTester/js/ProgressBarAndroidExample.android.js @@ -1,23 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @flow * @providesModule ProgressBarAndroidExample */ @@ -25,8 +13,8 @@ var ProgressBar = require('ProgressBarAndroid'); var React = require('React'); -var UIExplorerBlock = require('UIExplorerBlock'); -var UIExplorerPage = require('UIExplorerPage'); +var RNTesterBlock = require('RNTesterBlock'); +var RNTesterPage = require('RNTesterPage'); var TimerMixin = require('react-timer-mixin'); @@ -59,23 +47,23 @@ class ProgressBarAndroidExample extends React.Component { render() { return ( - - + + - + - + - + - + - + - + - - + + ); } } diff --git a/Examples/UIExplorer/js/ProgressViewIOSExample.js b/RNTester/js/ProgressViewIOSExample.js similarity index 75% rename from Examples/UIExplorer/js/ProgressViewIOSExample.js rename to RNTester/js/ProgressViewIOSExample.js index b97d7fcf5f6b..cca3c5ad1266 100644 --- a/Examples/UIExplorer/js/ProgressViewIOSExample.js +++ b/RNTester/js/ProgressViewIOSExample.js @@ -1,23 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @flow * @providesModule ProgressViewIOSExample */ diff --git a/Examples/UIExplorer/js/PushNotificationIOSExample.js b/RNTester/js/PushNotificationIOSExample.js similarity index 88% rename from Examples/UIExplorer/js/PushNotificationIOSExample.js rename to RNTester/js/PushNotificationIOSExample.js index 150675d19c1e..a2f2ec1752ff 100644 --- a/Examples/UIExplorer/js/PushNotificationIOSExample.js +++ b/RNTester/js/PushNotificationIOSExample.js @@ -1,23 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @flow * @providesModule PushNotificationIOSExample */ diff --git a/Examples/UIExplorer/js/RCTRootViewIOSExample.js b/RNTester/js/RCTRootViewIOSExample.js similarity index 75% rename from Examples/UIExplorer/js/RCTRootViewIOSExample.js rename to RNTester/js/RCTRootViewIOSExample.js index ef83eb8192a4..d1ccf5cfebc3 100644 --- a/Examples/UIExplorer/js/RCTRootViewIOSExample.js +++ b/RNTester/js/RCTRootViewIOSExample.js @@ -1,23 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @flow * @providesModule RCTRootViewIOSExample */ @@ -45,7 +33,7 @@ class AppPropertiesUpdateExample extends React.Component { - Error: This demo is accessible only from UIExplorer app + Error: This demo is accessible only from RNTester app @@ -64,7 +52,7 @@ class RootViewSizeFlexibilityExample extends React.Component { - Error: This demo is accessible only from UIExplorer app + Error: This demo is accessible only from RNTester app diff --git a/RNTester/js/RNTesterActions.js b/RNTester/js/RNTesterActions.js new file mode 100644 index 000000000000..ad203842b488 --- /dev/null +++ b/RNTester/js/RNTesterActions.js @@ -0,0 +1,59 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * @flow + * @providesModule RNTesterActions + */ +'use strict'; + +export type RNTesterBackAction = { + type: 'RNTesterBackAction', +}; + +export type RNTesterListAction = { + type: 'RNTesterListAction', +}; + +export type RNTesterExampleAction = { + type: 'RNTesterExampleAction', + openExample: string, +}; + +export type RNTesterAction = ( + RNTesterBackAction | + RNTesterListAction | + RNTesterExampleAction +); + + +function Back(): RNTesterBackAction { + return { + type: 'RNTesterBackAction', + }; +} + +function ExampleList(): RNTesterListAction { + return { + type: 'RNTesterListAction', + }; +} + +function ExampleAction(openExample: string): RNTesterExampleAction { + return { + type: 'RNTesterExampleAction', + openExample, + }; +} + +const RNTesterActions = { + Back, + ExampleList, + ExampleAction, +}; + +module.exports = RNTesterActions; diff --git a/Examples/UIExplorer/js/UIExplorerApp.android.js b/RNTester/js/RNTesterApp.android.js similarity index 72% rename from Examples/UIExplorer/js/UIExplorerApp.android.js rename to RNTester/js/RNTesterApp.android.js index 1e13a212ceb6..a891429e34eb 100644 --- a/Examples/UIExplorer/js/UIExplorerApp.android.js +++ b/RNTester/js/RNTesterApp.android.js @@ -1,24 +1,12 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * @providesModule UIExplorerApp + * @providesModule RNTesterApp * @flow */ 'use strict'; @@ -33,18 +21,18 @@ const React = require('react'); const StatusBar = require('StatusBar'); const StyleSheet = require('StyleSheet'); const ToolbarAndroid = require('ToolbarAndroid'); -const UIExplorerActions = require('./UIExplorerActions'); -const UIExplorerExampleContainer = require('./UIExplorerExampleContainer'); -const UIExplorerExampleList = require('./UIExplorerExampleList'); -const UIExplorerList = require('./UIExplorerList'); -const UIExplorerNavigationReducer = require('./UIExplorerNavigationReducer'); +const RNTesterActions = require('./RNTesterActions'); +const RNTesterExampleContainer = require('./RNTesterExampleContainer'); +const RNTesterExampleList = require('./RNTesterExampleList'); +const RNTesterList = require('./RNTesterList'); +const RNTesterNavigationReducer = require('./RNTesterNavigationReducer'); const UIManager = require('UIManager'); const URIActionMap = require('./URIActionMap'); const View = require('View'); const nativeImageSource = require('nativeImageSource'); -import type { UIExplorerNavigationState } from './UIExplorerNavigationReducer'; +import type { RNTesterNavigationState } from './RNTesterNavigationReducer'; UIManager.setLayoutAnimationEnabledExperimental(true); @@ -54,7 +42,7 @@ type Props = { exampleFromAppetizeParams: string, }; -const APP_STATE_KEY = 'UIExplorerAppState.v2'; +const APP_STATE_KEY = 'RNTesterAppState.v2'; const HEADER_LOGO_ICON = nativeImageSource({ android: 'launcher_icon', @@ -68,9 +56,9 @@ const HEADER_NAV_ICON = nativeImageSource({ height: 48 }); -class UIExplorerApp extends React.Component { +class RNTesterApp extends React.Component { props: Props; - state: UIExplorerNavigationState; + state: RNTesterNavigationState; componentWillMount() { BackHandler.addEventListener('hardwareBackPress', this._handleBackButtonPress); @@ -84,12 +72,12 @@ class UIExplorerApp extends React.Component { const launchAction = exampleAction || urlAction; if (err || !storedString) { const initialAction = launchAction || {type: 'InitialAction'}; - this.setState(UIExplorerNavigationReducer(null, initialAction)); + this.setState(RNTesterNavigationReducer(null, initialAction)); return; } const storedState = JSON.parse(storedString); if (launchAction) { - this.setState(UIExplorerNavigationReducer(storedState, launchAction)); + this.setState(RNTesterNavigationReducer(storedState, launchAction)); return; } this.setState(storedState); @@ -123,8 +111,8 @@ class UIExplorerApp extends React.Component { _renderDrawerContent = () => { return ( - { - this._handleAction(UIExplorerActions.Back()); + this._handleAction(RNTesterActions.Back()); }} ref={(example) => { this._exampleRef = example; }} /> @@ -159,7 +147,7 @@ class UIExplorerApp extends React.Component { style={styles.toolbar} title={ExampleModule.title} /> - { this._exampleRef = example; }} /> @@ -175,11 +163,11 @@ class UIExplorerApp extends React.Component { navIcon={HEADER_NAV_ICON} onIconClicked={() => this.drawer.openDrawer()} style={styles.toolbar} - title="UIExplorer" + title="RNTester" /> - ); @@ -187,7 +175,7 @@ class UIExplorerApp extends React.Component { _handleAction = (action: Object): boolean => { this.drawer && this.drawer.closeDrawer(); - const newState = UIExplorerNavigationReducer(this.state, action); + const newState = RNTesterNavigationReducer(this.state, action); if (this.state !== newState) { this.setState( newState, @@ -213,7 +201,7 @@ class UIExplorerApp extends React.Component { ) { return true; } - return this._handleAction(UIExplorerActions.Back()); + return this._handleAction(RNTesterActions.Back()); }; } @@ -232,6 +220,6 @@ const styles = StyleSheet.create({ }, }); -AppRegistry.registerComponent('UIExplorerApp', () => UIExplorerApp); +AppRegistry.registerComponent('RNTesterApp', () => RNTesterApp); -module.exports = UIExplorerApp; +module.exports = RNTesterApp; diff --git a/Examples/UIExplorer/js/UIExplorerApp.ios.js b/RNTester/js/RNTesterApp.ios.js similarity index 62% rename from Examples/UIExplorer/js/UIExplorerApp.ios.js rename to RNTester/js/RNTesterApp.ios.js index f57e4fbf8c35..90a94d0c88ae 100644 --- a/Examples/UIExplorer/js/UIExplorerApp.ios.js +++ b/RNTester/js/RNTesterApp.ios.js @@ -1,24 +1,12 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * @providesModule UIExplorerApp + * @providesModule RNTesterApp * @flow */ 'use strict'; @@ -28,11 +16,11 @@ const BackHandler = require('BackHandler'); const Linking = require('Linking'); const React = require('react'); const ReactNative = require('react-native'); -const UIExplorerActions = require('./UIExplorerActions'); -const UIExplorerExampleContainer = require('./UIExplorerExampleContainer'); -const UIExplorerExampleList = require('./UIExplorerExampleList'); -const UIExplorerList = require('./UIExplorerList.ios'); -const UIExplorerNavigationReducer = require('./UIExplorerNavigationReducer'); +const RNTesterActions = require('./RNTesterActions'); +const RNTesterExampleContainer = require('./RNTesterExampleContainer'); +const RNTesterExampleList = require('./RNTesterExampleList'); +const RNTesterList = require('./RNTesterList.ios'); +const RNTesterNavigationReducer = require('./RNTesterNavigationReducer'); const URIActionMap = require('./URIActionMap'); const { @@ -44,15 +32,15 @@ const { View, } = ReactNative; -import type { UIExplorerExample } from './UIExplorerList.ios'; -import type { UIExplorerAction } from './UIExplorerActions'; -import type { UIExplorerNavigationState } from './UIExplorerNavigationReducer'; +import type { RNTesterExample } from './RNTesterList.ios'; +import type { RNTesterAction } from './RNTesterActions'; +import type { RNTesterNavigationState } from './RNTesterNavigationReducer'; type Props = { exampleFromAppetizeParams: string, }; -const APP_STATE_KEY = 'UIExplorerAppState.v2'; +const APP_STATE_KEY = 'RNTesterAppState.v2'; const Header = ({ onBack, title}) => ( @@ -65,9 +53,9 @@ const Header = ({ onBack, title}) => ( ); -class UIExplorerApp extends React.Component { +class RNTesterApp extends React.Component { props: Props; - state: UIExplorerNavigationState; + state: RNTesterNavigationState; componentWillMount() { BackHandler.addEventListener('hardwareBackPress', this._handleBack); @@ -81,12 +69,12 @@ class UIExplorerApp extends React.Component { const launchAction = exampleAction || urlAction; if (err || !storedString) { const initialAction = launchAction || {type: 'InitialAction'}; - this.setState(UIExplorerNavigationReducer(undefined, initialAction)); + this.setState(RNTesterNavigationReducer(undefined, initialAction)); return; } const storedState = JSON.parse(storedString); if (launchAction) { - this.setState(UIExplorerNavigationReducer(storedState, launchAction)); + this.setState(RNTesterNavigationReducer(storedState, launchAction)); return; } this.setState(storedState); @@ -99,14 +87,14 @@ class UIExplorerApp extends React.Component { } _handleBack = () => { - this._handleAction(UIExplorerActions.Back()); + this._handleAction(RNTesterActions.Back()); } - _handleAction = (action: ?UIExplorerAction) => { + _handleAction = (action: ?RNTesterAction) => { if (!action) { return; } - const newState = UIExplorerNavigationReducer(this.state, action); + const newState = RNTesterNavigationReducer(this.state, action); if (this.state !== newState) { this.setState( newState, @@ -120,7 +108,7 @@ class UIExplorerApp extends React.Component { return null; } if (this.state.openExample) { - const Component = UIExplorerList.Modules[this.state.openExample]; + const Component = RNTesterList.Modules[this.state.openExample]; if (Component.external) { return (
- + ); } @@ -139,10 +127,10 @@ class UIExplorerApp extends React.Component { } return ( -
- + ); @@ -179,17 +167,17 @@ const styles = StyleSheet.create({ AppRegistry.registerComponent('SetPropertiesExampleApp', () => require('./SetPropertiesExampleApp')); AppRegistry.registerComponent('RootViewSizeFlexibilityExampleApp', () => require('./RootViewSizeFlexibilityExampleApp')); -AppRegistry.registerComponent('UIExplorerApp', () => UIExplorerApp); +AppRegistry.registerComponent('RNTesterApp', () => RNTesterApp); // Register suitable examples for snapshot tests -UIExplorerList.ComponentExamples.concat(UIExplorerList.APIExamples).forEach((Example: UIExplorerExample) => { +RNTesterList.ComponentExamples.concat(RNTesterList.APIExamples).forEach((Example: RNTesterExample) => { const ExampleModule = Example.module; if (ExampleModule.displayName) { class Snapshotter extends React.Component { render() { return ( - + ); } @@ -199,4 +187,4 @@ UIExplorerList.ComponentExamples.concat(UIExplorerList.APIExamples).forEach((Exa } }); -module.exports = UIExplorerApp; +module.exports = RNTesterApp; diff --git a/Examples/UIExplorer/js/UIExplorerBlock.js b/RNTester/js/RNTesterBlock.js similarity index 71% rename from Examples/UIExplorer/js/UIExplorerBlock.js rename to RNTester/js/RNTesterBlock.js index d71595a3d38e..ae5f568a2206 100644 --- a/Examples/UIExplorer/js/UIExplorerBlock.js +++ b/RNTester/js/RNTesterBlock.js @@ -1,24 +1,12 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * @providesModule UIExplorerBlock + * @providesModule RNTesterBlock * @flow */ 'use strict'; @@ -32,7 +20,7 @@ var { View, } = ReactNative; -class UIExplorerBlock extends React.Component { +class RNTesterBlock extends React.Component { props: { title?: string, description?: string, @@ -113,4 +101,4 @@ var styles = StyleSheet.create({ } }); -module.exports = UIExplorerBlock; +module.exports = RNTesterBlock; diff --git a/Examples/UIExplorer/js/UIExplorerButton.js b/RNTester/js/RNTesterButton.js similarity index 59% rename from Examples/UIExplorer/js/UIExplorerButton.js rename to RNTester/js/RNTesterButton.js index 9bbf09d94d76..a8a8b008b8c9 100644 --- a/Examples/UIExplorer/js/UIExplorerButton.js +++ b/RNTester/js/RNTesterButton.js @@ -1,25 +1,13 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @flow - * @providesModule UIExplorerButton + * @providesModule RNTesterButton */ 'use strict'; @@ -32,7 +20,7 @@ var { TouchableHighlight, } = ReactNative; -class UIExplorerButton extends React.Component { +class RNTesterButton extends React.Component { props: {onPress?: Function}; static propTypes = { @@ -68,4 +56,4 @@ var styles = StyleSheet.create({ }, }); -module.exports = UIExplorerButton; +module.exports = RNTesterButton; diff --git a/RNTester/js/RNTesterExampleContainer.js b/RNTester/js/RNTesterExampleContainer.js new file mode 100644 index 000000000000..635cd021471f --- /dev/null +++ b/RNTester/js/RNTesterExampleContainer.js @@ -0,0 +1,53 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * @providesModule RNTesterExampleContainer + */ +'use strict'; + +const React = require('react'); +const { + Platform, +} = require('react-native'); +const RNTesterBlock = require('./RNTesterBlock'); +const RNTesterPage = require('./RNTesterPage'); + +class RNTesterExampleContainer extends React.Component { + renderExample(example, i) { + // Filter platform-specific examples + var {title, description, platform} = example; + if (platform) { + if (Platform.OS !== platform) { + return null; + } + title += ' (' + platform + ' only)'; + } + return ( + + {example.render()} + + ); + } + + render(): React.Element { + if (!this.props.module.examples) { + return ; + } + + return ( + + {this.props.module.examples.map(this.renderExample)} + + ); + } +} + +module.exports = RNTesterExampleContainer; diff --git a/Examples/UIExplorer/js/UIExplorerExampleList.js b/RNTester/js/RNTesterExampleList.js similarity index 79% rename from Examples/UIExplorer/js/UIExplorerExampleList.js rename to RNTester/js/RNTesterExampleList.js index 7a697c53a867..a796039b0101 100644 --- a/Examples/UIExplorer/js/UIExplorerExampleList.js +++ b/RNTester/js/RNTesterExampleList.js @@ -1,25 +1,13 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @flow - * @providesModule UIExplorerExampleList + * @providesModule RNTesterExampleList */ 'use strict'; @@ -30,16 +18,16 @@ const StyleSheet = require('StyleSheet'); const Text = require('Text'); const TextInput = require('TextInput'); const TouchableHighlight = require('TouchableHighlight'); -const UIExplorerActions = require('./UIExplorerActions'); -const UIExplorerStatePersister = require('./UIExplorerStatePersister'); +const RNTesterActions = require('./RNTesterActions'); +const RNTesterStatePersister = require('./RNTesterStatePersister'); const View = require('View'); import type { - UIExplorerExample, -} from './UIExplorerList.ios'; + RNTesterExample, +} from './RNTesterList.ios'; import type { PassProps, -} from './UIExplorerStatePersister'; +} from './RNTesterStatePersister'; import type { StyleObj, } from 'StyleSheetTypes'; @@ -47,8 +35,8 @@ import type { type Props = { onNavigate: Function, list: { - ComponentExamples: Array, - APIExamples: Array, + ComponentExamples: Array, + APIExamples: Array, }, persister: PassProps<*>, searchTextInputStyle: StyleObj, @@ -68,7 +56,7 @@ class RowComponent extends React.PureComponent { this.props.onPress(); return; } - this.props.onNavigate(UIExplorerActions.ExampleAction(this.props.item.key)); + this.props.onNavigate(RNTesterActions.ExampleAction(this.props.item.key)); }; render() { const {item} = this.props; @@ -92,7 +80,7 @@ const renderSectionHeader = ({section}) => {section.title} ; -class UIExplorerExampleList extends React.Component { +class RNTesterExampleList extends React.Component { props: Props render() { @@ -157,12 +145,12 @@ class UIExplorerExampleList extends React.Component { return ( { - this.props.onNavigate(UIExplorerActions.ExampleList()); + this.props.onNavigate(RNTesterActions.ExampleList()); }} /> ); @@ -192,7 +180,7 @@ class UIExplorerExampleList extends React.Component { } _handleRowPress(exampleKey: string): void { - this.props.onNavigate(UIExplorerActions.ExampleAction(exampleKey)); + this.props.onNavigate(RNTesterActions.ExampleAction(exampleKey)); } } @@ -200,7 +188,7 @@ const ItemSeparator = ({highlighted}) => ( ); -UIExplorerExampleList = UIExplorerStatePersister.createContainer(UIExplorerExampleList, { +RNTesterExampleList = RNTesterStatePersister.createContainer(RNTesterExampleList, { cacheKeySuffix: () => 'mainList', getInitialState: () => ({filter: ''}), }); @@ -257,4 +245,4 @@ const styles = StyleSheet.create({ }, }); -module.exports = UIExplorerExampleList; +module.exports = RNTesterExampleList; diff --git a/Examples/UIExplorer/js/UIExplorerList.android.js b/RNTester/js/RNTesterList.android.js similarity index 84% rename from Examples/UIExplorer/js/UIExplorerList.android.js rename to RNTester/js/RNTesterList.android.js index 09d81eb19c42..74a9308e49c6 100644 --- a/Examples/UIExplorer/js/UIExplorerList.android.js +++ b/RNTester/js/RNTesterList.android.js @@ -1,34 +1,22 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @flow - * @providesModule UIExplorerList + * @providesModule RNTesterList */ 'use strict'; -export type UIExplorerExample = { +export type RNTesterExample = { key: string, module: Object, }; -const ComponentExamples: Array = [ +const ComponentExamples: Array = [ { key: 'ActivityIndicatorExample', module: require('./ActivityIndicatorExample'), @@ -131,7 +119,7 @@ const ComponentExamples: Array = [ }, ]; -const APIExamples: Array = [ +const APIExamples: Array = [ { key: 'AccessibilityAndroidExample', module: require('./AccessibilityAndroidExample'), @@ -256,10 +244,10 @@ APIExamples.concat(ComponentExamples).forEach(Example => { Modules[Example.key] = Example.module; }); -const UIExplorerList = { +const RNTesterList = { APIExamples, ComponentExamples, Modules, }; -module.exports = UIExplorerList; +module.exports = RNTesterList; diff --git a/Examples/UIExplorer/js/UIExplorerList.ios.js b/RNTester/js/RNTesterList.ios.js similarity index 89% rename from Examples/UIExplorer/js/UIExplorerList.ios.js rename to RNTester/js/RNTesterList.ios.js index 5a082acc659b..0d92f58944c5 100644 --- a/Examples/UIExplorer/js/UIExplorerList.ios.js +++ b/RNTester/js/RNTesterList.ios.js @@ -1,35 +1,23 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @flow - * @providesModule UIExplorerList + * @providesModule RNTesterList */ 'use strict'; -export type UIExplorerExample = { +export type RNTesterExample = { key: string, module: Object, supportsTVOS: boolean }; -const ComponentExamples: Array = [ +const ComponentExamples: Array = [ { key: 'ActivityIndicatorExample', module: require('./ActivityIndicatorExample'), @@ -192,7 +180,7 @@ const ComponentExamples: Array = [ }, ]; -const APIExamples: Array = [ +const APIExamples: Array = [ { key: 'AccessibilityIOSExample', module: require('./AccessibilityIOSExample'), @@ -366,10 +354,10 @@ APIExamples.concat(ComponentExamples).forEach(Example => { Modules[Example.key] = Example.module; }); -const UIExplorerList = { +const RNTesterList = { APIExamples, ComponentExamples, Modules, }; -module.exports = UIExplorerList; +module.exports = RNTesterList; diff --git a/RNTester/js/RNTesterNavigationReducer.js b/RNTester/js/RNTesterNavigationReducer.js new file mode 100644 index 000000000000..0bedcb24daac --- /dev/null +++ b/RNTester/js/RNTesterNavigationReducer.js @@ -0,0 +1,57 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * @flow + * @providesModule RNTesterNavigationReducer + */ +'use strict'; + +// $FlowFixMe : This is a platform-forked component, and flow seems to only run on iOS? +const RNTesterList = require('./RNTesterList'); + +export type RNTesterNavigationState = { + openExample: ?string, +}; + +function RNTesterNavigationReducer( + state: ?RNTesterNavigationState, + action: any +): RNTesterNavigationState { + + if ( + // Default value is to see example list + !state || + + // Handle the explicit list action + action.type === 'RNTesterListAction' || + + // Handle requests to go back to the list when an example is open + (state.openExample && action.type === 'RNTesterBackAction') + ) { + return { + // A null openExample will cause the views to display the RNTester example list + openExample: null, + }; + } + + if (action.type === 'RNTesterExampleAction') { + + // Make sure we see the module before returning the new state + const ExampleModule = RNTesterList.Modules[action.openExample]; + + if (ExampleModule) { + return { + openExample: action.openExample, + }; + } + } + + return state; +} + +module.exports = RNTesterNavigationReducer; diff --git a/Examples/UIExplorer/js/UIExplorerPage.js b/RNTester/js/RNTesterPage.js similarity index 66% rename from Examples/UIExplorer/js/UIExplorerPage.js rename to RNTester/js/RNTesterPage.js index 03be9105a97b..db17d5a8b773 100644 --- a/Examples/UIExplorer/js/UIExplorerPage.js +++ b/RNTester/js/RNTesterPage.js @@ -1,24 +1,12 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * @providesModule UIExplorerPage + * @providesModule RNTesterPage * @flow */ 'use strict'; @@ -32,9 +20,9 @@ var { View, } = ReactNative; -var UIExplorerTitle = require('./UIExplorerTitle'); +var RNTesterTitle = require('./RNTesterTitle'); -class UIExplorerPage extends React.Component { +class RNTesterPage extends React.Component { props: { noScroll?: boolean, noSpacer?: boolean, @@ -58,7 +46,7 @@ class UIExplorerPage extends React.Component { wrapperProps.keyboardDismissMode = 'interactive'; } var title = this.props.title ? - : + : null; var spacer = this.props.noSpacer ? null : ; return ( @@ -91,4 +79,4 @@ var styles = StyleSheet.create({ }, }); -module.exports = UIExplorerPage; +module.exports = RNTesterPage; diff --git a/Examples/UIExplorer/js/UIExplorerSettingSwitchRow.js b/RNTester/js/RNTesterSettingSwitchRow.js similarity index 79% rename from Examples/UIExplorer/js/UIExplorerSettingSwitchRow.js rename to RNTester/js/RNTesterSettingSwitchRow.js index 628355e072b7..ab33ff19cb7b 100644 --- a/Examples/UIExplorer/js/UIExplorerSettingSwitchRow.js +++ b/RNTester/js/RNTesterSettingSwitchRow.js @@ -6,7 +6,7 @@ * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * @providesModule UIExplorerSettingSwitchRow + * @providesModule RNTesterSettingSwitchRow * @flow */ 'use strict'; @@ -15,10 +15,10 @@ const React = require('React'); const StyleSheet = require('StyleSheet'); const Switch = require('Switch'); const Text = require('Text'); -const UIExplorerStatePersister = require('./UIExplorerStatePersister'); +const RNTesterStatePersister = require('./RNTesterStatePersister'); const View = require('View'); -class UIExplorerSettingSwitchRow extends React.Component { +class RNTesterSettingSwitchRow extends React.Component { componentWillReceiveProps(newProps) { const {onEnable, onDisable, persister} = this.props; if (newProps.persister.state !== persister.state) { @@ -47,8 +47,8 @@ const styles = StyleSheet.create({ justifyContent: 'space-between', }, }); -UIExplorerSettingSwitchRow = UIExplorerStatePersister.createContainer(UIExplorerSettingSwitchRow, { +RNTesterSettingSwitchRow = RNTesterStatePersister.createContainer(RNTesterSettingSwitchRow, { cacheKeySuffix: ({label}) => 'Switch:' + label, getInitialState: ({initialValue}) => initialValue, }); -module.exports = UIExplorerSettingSwitchRow; +module.exports = RNTesterSettingSwitchRow; diff --git a/Examples/UIExplorer/js/UIExplorerStatePersister.js b/RNTester/js/RNTesterStatePersister.js similarity index 65% rename from Examples/UIExplorer/js/UIExplorerStatePersister.js rename to RNTester/js/RNTesterStatePersister.js index 33a8a591c050..a8adcf5bf2fe 100644 --- a/Examples/UIExplorer/js/UIExplorerStatePersister.js +++ b/RNTester/js/RNTesterStatePersister.js @@ -1,25 +1,13 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @flow - * @providesModule UIExplorerStatePersister + * @providesModule RNTesterStatePersister */ 'use strict'; @@ -37,7 +25,7 @@ export type PassProps = { * rendered using `getInitialState` in the spec and is then re-rendered with the persisted data * once it's fetched. * - * This is currently tied to UIExplorer because it's generally not good to use AsyncStorage like + * This is currently tied to RNTester because it's generally not good to use AsyncStorage like * this in real apps with user data, but we could maybe pull it out for other internal settings-type * usage. */ @@ -51,9 +39,9 @@ function createContainer( ): ReactClass { return class ComponentWithPersistedState extends React.Component { props: Props; - static displayName = `UIExplorerStatePersister(${Component.displayName || Component.name})`; + static displayName = `RNTesterStatePersister(${Component.displayName || Component.name})`; state = {value: spec.getInitialState(this.props)}; - _cacheKey = `UIExplorer:${spec.version || 'v1'}:${spec.cacheKeySuffix(this.props)}`; + _cacheKey = `RNTester:${spec.version || 'v1'}:${spec.cacheKeySuffix(this.props)}`; componentDidMount() { AsyncStorage.getItem(this._cacheKey, (err, value) => { if (!err && value) { @@ -82,8 +70,8 @@ function createContainer( }; } -const UIExplorerStatePersister = { +const RNTesterStatePersister = { createContainer, }; -module.exports = UIExplorerStatePersister; +module.exports = RNTesterStatePersister; diff --git a/Examples/UIExplorer/js/UIExplorerTitle.js b/RNTester/js/RNTesterTitle.js similarity index 52% rename from Examples/UIExplorer/js/UIExplorerTitle.js rename to RNTester/js/RNTesterTitle.js index e586d5702bfe..a1117df5173f 100644 --- a/Examples/UIExplorer/js/UIExplorerTitle.js +++ b/RNTester/js/RNTesterTitle.js @@ -1,24 +1,12 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * @providesModule UIExplorerTitle + * @providesModule RNTesterTitle * @flow */ 'use strict'; @@ -31,7 +19,7 @@ var { View, } = ReactNative; -class UIExplorerTitle extends React.Component { +class RNTesterTitle extends React.Component { render() { return ( @@ -60,4 +48,4 @@ var styles = StyleSheet.create({ }, }); -module.exports = UIExplorerTitle; +module.exports = RNTesterTitle; diff --git a/Examples/UIExplorer/js/RTLExample.js b/RNTester/js/RTLExample.js similarity index 86% rename from Examples/UIExplorer/js/RTLExample.js rename to RNTester/js/RTLExample.js index ffdd8532c9f9..eff1ddfdfe12 100644 --- a/Examples/UIExplorer/js/RTLExample.js +++ b/RNTester/js/RTLExample.js @@ -1,28 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * Here's the Right-to-Left(RTL) example page with: - * - a button to force flip UI layout to RTL - * - base layout example and text example - * - two custom examples for RTL design - * * @flow * @providesModule RTLExample */ @@ -47,8 +30,8 @@ const { const Platform = require('Platform'); -const UIExplorerPage = require('./UIExplorerPage'); -const UIExplorerBlock = require('./UIExplorerBlock'); +const RNTesterPage = require('./RNTesterPage'); +const RNTesterBlock = require('./RNTesterBlock'); type State = { toggleStatus: any, @@ -95,7 +78,7 @@ function ListItem(props) { function TextAlignmentExample(props) { return ( - @@ -114,7 +97,7 @@ function TextAlignmentExample(props) { '\u05D9\u05D9\u05E9\u05D5\u05E8 \u05D8\u05E7\u05E1\u05D8'} - + ); } @@ -173,15 +156,15 @@ class RTLExample extends React.Component { null ]} onLayout={this._onLayout}> - - + + {this.state.isRTL ? 'Right-to-Left' : 'Left-to-Right'} - - + + forceRTL @@ -193,13 +176,13 @@ class RTLExample extends React.Component { value={this.state.isRTL} /> - - + + - + - + - - + @@ -260,8 +243,8 @@ class RTLExample extends React.Component { }} /> - - + + ); } diff --git a/Examples/UIExplorer/js/RefreshControlExample.js b/RNTester/js/RefreshControlExample.js similarity index 80% rename from Examples/UIExplorer/js/RefreshControlExample.js rename to RNTester/js/RefreshControlExample.js index f8f79eb70f71..c2ef5b5fdb62 100644 --- a/Examples/UIExplorer/js/RefreshControlExample.js +++ b/RNTester/js/RefreshControlExample.js @@ -1,23 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @providesModule RefreshControlExample */ 'use strict'; diff --git a/Examples/UIExplorer/js/RootViewSizeFlexibilityExampleApp.js b/RNTester/js/RootViewSizeFlexibilityExampleApp.js similarity index 70% rename from Examples/UIExplorer/js/RootViewSizeFlexibilityExampleApp.js rename to RNTester/js/RootViewSizeFlexibilityExampleApp.js index 0f2b88ab387a..2a20876b3a05 100644 --- a/Examples/UIExplorer/js/RootViewSizeFlexibilityExampleApp.js +++ b/RNTester/js/RootViewSizeFlexibilityExampleApp.js @@ -1,23 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @flow * @providesModule RootViewSizeFlexibilityExampleApp */ diff --git a/Examples/UIExplorer/js/ScrollViewExample.js b/RNTester/js/ScrollViewExample.js similarity index 86% rename from Examples/UIExplorer/js/ScrollViewExample.js rename to RNTester/js/ScrollViewExample.js index 1435c0319212..91886054b287 100644 --- a/Examples/UIExplorer/js/ScrollViewExample.js +++ b/RNTester/js/ScrollViewExample.js @@ -1,23 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @flow * @providesModule ScrollViewExample */ diff --git a/Examples/UIExplorer/js/ScrollViewSimpleExample.js b/RNTester/js/ScrollViewSimpleExample.js similarity index 73% rename from Examples/UIExplorer/js/ScrollViewSimpleExample.js rename to RNTester/js/ScrollViewSimpleExample.js index 7e3e1f35fddd..f1e18563acc0 100644 --- a/Examples/UIExplorer/js/ScrollViewSimpleExample.js +++ b/RNTester/js/ScrollViewSimpleExample.js @@ -1,23 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @flow * @providesModule ScrollViewSimpleExample */ diff --git a/Examples/UIExplorer/js/SectionListExample.js b/RNTester/js/SectionListExample.js similarity index 88% rename from Examples/UIExplorer/js/SectionListExample.js rename to RNTester/js/SectionListExample.js index 20d0368fc1df..51ab18369914 100644 --- a/Examples/UIExplorer/js/SectionListExample.js +++ b/RNTester/js/SectionListExample.js @@ -1,23 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @flow * @providesModule SectionListExample */ @@ -33,7 +21,7 @@ const { View, } = ReactNative; -const UIExplorerPage = require('./UIExplorerPage'); +const RNTesterPage = require('./RNTesterPage'); const infoLog = require('infoLog'); @@ -113,7 +101,7 @@ class SectionListExample extends React.PureComponent { startIndex = ii; } return ( - @@ -171,7 +159,7 @@ class SectionListExample extends React.PureComponent { style={styles.list} viewabilityConfig={VIEWABILITY_CONFIG} /> - + ); } diff --git a/Examples/UIExplorer/js/SegmentedControlIOSExample.js b/RNTester/js/SegmentedControlIOSExample.js similarity index 85% rename from Examples/UIExplorer/js/SegmentedControlIOSExample.js rename to RNTester/js/SegmentedControlIOSExample.js index 7a08a44d4cfe..1634ce47c60a 100644 --- a/Examples/UIExplorer/js/SegmentedControlIOSExample.js +++ b/RNTester/js/SegmentedControlIOSExample.js @@ -1,23 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @flow * @providesModule SegmentedControlIOSExample */ diff --git a/Examples/UIExplorer/js/SetPropertiesExampleApp.js b/RNTester/js/SetPropertiesExampleApp.js similarity index 56% rename from Examples/UIExplorer/js/SetPropertiesExampleApp.js rename to RNTester/js/SetPropertiesExampleApp.js index 911688089da6..81f90ddb0af8 100644 --- a/Examples/UIExplorer/js/SetPropertiesExampleApp.js +++ b/RNTester/js/SetPropertiesExampleApp.js @@ -1,23 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @flow * @providesModule SetPropertiesExampleApp */ diff --git a/Examples/UIExplorer/js/ShareExample.js b/RNTester/js/ShareExample.js similarity index 81% rename from Examples/UIExplorer/js/ShareExample.js rename to RNTester/js/ShareExample.js index a4a5930627e0..3cb520b87f27 100644 --- a/Examples/UIExplorer/js/ShareExample.js +++ b/RNTester/js/ShareExample.js @@ -1,15 +1,10 @@ /** - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. * * @flow * @providesModule ShareExample diff --git a/Examples/UIExplorer/js/SliderExample.js b/RNTester/js/SliderExample.js similarity index 84% rename from Examples/UIExplorer/js/SliderExample.js rename to RNTester/js/SliderExample.js index 497dcdc2362a..5b8e48d0ac89 100644 --- a/Examples/UIExplorer/js/SliderExample.js +++ b/RNTester/js/SliderExample.js @@ -1,23 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @flow * @providesModule SliderExample */ diff --git a/Examples/UIExplorer/js/SnapshotExample.js b/RNTester/js/SnapshotExample.js similarity index 68% rename from Examples/UIExplorer/js/SnapshotExample.js rename to RNTester/js/SnapshotExample.js index 744e594405e2..db563163523e 100644 --- a/Examples/UIExplorer/js/SnapshotExample.js +++ b/RNTester/js/SnapshotExample.js @@ -1,23 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @flow * @providesModule SnapshotExample */ diff --git a/Examples/UIExplorer/js/StatusBarExample.js b/RNTester/js/StatusBarExample.js similarity index 94% rename from Examples/UIExplorer/js/StatusBarExample.js rename to RNTester/js/StatusBarExample.js index c85a20040c04..80e5a8ac7e6a 100644 --- a/Examples/UIExplorer/js/StatusBarExample.js +++ b/RNTester/js/StatusBarExample.js @@ -1,23 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @flow * @providesModule StatusBarExample */ diff --git a/Examples/UIExplorer/js/SwipeableListViewExample.js b/RNTester/js/SwipeableListViewExample.js similarity index 86% rename from Examples/UIExplorer/js/SwipeableListViewExample.js rename to RNTester/js/SwipeableListViewExample.js index 5d9ad7e63b19..2c7ab423000d 100644 --- a/Examples/UIExplorer/js/SwipeableListViewExample.js +++ b/RNTester/js/SwipeableListViewExample.js @@ -1,23 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @flow * @providesModule SwipeableListViewExample */ @@ -35,7 +23,7 @@ var { Alert, } = ReactNative; -var UIExplorerPage = require('./UIExplorerPage'); +var RNTesterPage = require('./RNTesterPage'); var SwipeableListViewSimpleExample = React.createClass({ statics: { @@ -58,7 +46,7 @@ var SwipeableListViewSimpleExample = React.createClass({ render: function() { return ( - '} noSpacer={true} noScroll={true}> @@ -78,7 +66,7 @@ var SwipeableListViewSimpleExample = React.createClass({ renderRow={this._renderRow} renderSeparator={this._renderSeperator} /> - + ); }, diff --git a/Examples/UIExplorer/js/SwitchExample.js b/RNTester/js/SwitchExample.js similarity index 85% rename from Examples/UIExplorer/js/SwitchExample.js rename to RNTester/js/SwitchExample.js index da59c5d85619..508d5a0356e0 100644 --- a/Examples/UIExplorer/js/SwitchExample.js +++ b/RNTester/js/SwitchExample.js @@ -1,23 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @flow * @providesModule SwitchExample */ diff --git a/Examples/UIExplorer/js/TabBarIOSExample.js b/RNTester/js/TabBarIOSExample.js similarity index 86% rename from Examples/UIExplorer/js/TabBarIOSExample.js rename to RNTester/js/TabBarIOSExample.js index f6426cabe8b0..3e214d54c034 100644 --- a/Examples/UIExplorer/js/TabBarIOSExample.js +++ b/RNTester/js/TabBarIOSExample.js @@ -1,23 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @flow * @providesModule TabBarIOSExample */ diff --git a/Examples/UIExplorer/js/TextExample.android.js b/RNTester/js/TextExample.android.js similarity index 83% rename from Examples/UIExplorer/js/TextExample.android.js rename to RNTester/js/TextExample.android.js index f157f9e584f4..ec9ce1963007 100644 --- a/Examples/UIExplorer/js/TextExample.android.js +++ b/RNTester/js/TextExample.android.js @@ -1,23 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @flow * @providesModule TextExample */ @@ -31,8 +19,8 @@ var { Text, View, } = ReactNative; -var UIExplorerBlock = require('./UIExplorerBlock'); -var UIExplorerPage = require('./UIExplorerPage'); +var RNTesterBlock = require('./RNTesterBlock'); +var RNTesterPage = require('./RNTesterPage'); class Entity extends React.Component { render() { @@ -87,19 +75,19 @@ class TextExample extends React.Component { render() { return ( - - + + The text should wrap if it goes on multiple lines. See, this is going to the next line. - - + + This text is indented by 10px padding on all sides. - - + + Sans-Serif @@ -118,8 +106,8 @@ class TextExample extends React.Component { Monospace Bold (After 5.0) - - + + @@ -169,8 +157,8 @@ class TextExample extends React.Component { - - + + @@ -184,46 +172,46 @@ class TextExample extends React.Component { - + - + Size 23 Size 8 - - + + Red color Blue color - - + + Move fast and be bold Move fast and be bold - - + + Move fast and be bold Move fast and be bold - - + + Move fast and be bold - - + + Solid underline @@ -239,8 +227,8 @@ class TextExample extends React.Component { Mixed text with underline and line-through text nodes - - + + console.log('1st')}> (Normal text, console.log('2nd')}> @@ -282,8 +270,8 @@ class TextExample extends React.Component { Entity Name - - + + auto (default) - english LTR @@ -299,8 +287,8 @@ class TextExample extends React.Component { right right right right right right right right right right right right right - - + + @@ -323,24 +311,24 @@ class TextExample extends React.Component { - - + + A {'generated'} {' '} {'string'} and some     spaces - - + + Holisticly formulate inexpensive ideas before best-of-breed benefits. Continually expedite magnetic potentialities rather than client-focused interfaces. - - + + - - + + - - + + Red background, @@ -362,8 +350,8 @@ class TextExample extends React.Component { - - + + @@ -374,8 +362,8 @@ class TextExample extends React.Component { {"containerBackgroundColor: 'transparent' + backgroundColor wash"} - - + + Maximum of one line no matter now much I write here. If I keep writing it{"'"}ll just truncate after one line @@ -385,28 +373,28 @@ class TextExample extends React.Component { No maximum lines specified no matter now much I write here. If I keep writing it{"'"}ll just keep going and going - - + + This text is selectable if you click-and-hold, and will offer the native Android selection menus. - - + + This text will have a orange highlight on selection. - - + + This text contains an inline image . Neat, huh? - - + + Demo text shadow - - + + This very long text should be truncated with dots in the end. @@ -416,8 +404,8 @@ class TextExample extends React.Component { This very long text should be truncated with dots in the beginning. - - + + @@ -433,8 +421,8 @@ class TextExample extends React.Component { By default Android will put extra space above text to allow for upper-case accents or other ascenders. With some fonts, this can make text look slightly misaligned when centered vertically. - - + + ); } } diff --git a/Examples/UIExplorer/js/TextExample.ios.js b/RNTester/js/TextExample.ios.js similarity index 96% rename from Examples/UIExplorer/js/TextExample.ios.js rename to RNTester/js/TextExample.ios.js index 941b12024085..53e9ef83d8c4 100644 --- a/Examples/UIExplorer/js/TextExample.ios.js +++ b/RNTester/js/TextExample.ios.js @@ -1,23 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @flow * @providesModule TextExample */ diff --git a/Examples/UIExplorer/js/TextInputExample.android.js b/RNTester/js/TextInputExample.android.js similarity index 96% rename from Examples/UIExplorer/js/TextInputExample.android.js rename to RNTester/js/TextInputExample.android.js index 5f253e39b97d..83a4ac124748 100644 --- a/Examples/UIExplorer/js/TextInputExample.android.js +++ b/RNTester/js/TextInputExample.android.js @@ -1,23 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @flow * @providesModule TextInputExample */ diff --git a/Examples/UIExplorer/js/TextInputExample.ios.js b/RNTester/js/TextInputExample.ios.js similarity index 96% rename from Examples/UIExplorer/js/TextInputExample.ios.js rename to RNTester/js/TextInputExample.ios.js index 89f8ccaff2ec..0d22d17416b3 100644 --- a/Examples/UIExplorer/js/TextInputExample.ios.js +++ b/RNTester/js/TextInputExample.ios.js @@ -1,23 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @flow * @providesModule TextInputExample */ diff --git a/Examples/UIExplorer/js/Thumbnails/bandaged.png b/RNTester/js/Thumbnails/bandaged.png similarity index 100% rename from Examples/UIExplorer/js/Thumbnails/bandaged.png rename to RNTester/js/Thumbnails/bandaged.png diff --git a/Examples/UIExplorer/js/Thumbnails/call.png b/RNTester/js/Thumbnails/call.png similarity index 100% rename from Examples/UIExplorer/js/Thumbnails/call.png rename to RNTester/js/Thumbnails/call.png diff --git a/Examples/UIExplorer/js/Thumbnails/dislike.png b/RNTester/js/Thumbnails/dislike.png similarity index 100% rename from Examples/UIExplorer/js/Thumbnails/dislike.png rename to RNTester/js/Thumbnails/dislike.png diff --git a/Examples/UIExplorer/js/Thumbnails/fist.png b/RNTester/js/Thumbnails/fist.png similarity index 100% rename from Examples/UIExplorer/js/Thumbnails/fist.png rename to RNTester/js/Thumbnails/fist.png diff --git a/Examples/UIExplorer/js/Thumbnails/flowers.png b/RNTester/js/Thumbnails/flowers.png similarity index 100% rename from Examples/UIExplorer/js/Thumbnails/flowers.png rename to RNTester/js/Thumbnails/flowers.png diff --git a/Examples/UIExplorer/js/Thumbnails/heart.png b/RNTester/js/Thumbnails/heart.png similarity index 100% rename from Examples/UIExplorer/js/Thumbnails/heart.png rename to RNTester/js/Thumbnails/heart.png diff --git a/Examples/UIExplorer/js/Thumbnails/like.png b/RNTester/js/Thumbnails/like.png similarity index 100% rename from Examples/UIExplorer/js/Thumbnails/like.png rename to RNTester/js/Thumbnails/like.png diff --git a/Examples/UIExplorer/js/Thumbnails/liking.png b/RNTester/js/Thumbnails/liking.png similarity index 100% rename from Examples/UIExplorer/js/Thumbnails/liking.png rename to RNTester/js/Thumbnails/liking.png diff --git a/Examples/UIExplorer/js/Thumbnails/party.png b/RNTester/js/Thumbnails/party.png similarity index 100% rename from Examples/UIExplorer/js/Thumbnails/party.png rename to RNTester/js/Thumbnails/party.png diff --git a/Examples/UIExplorer/js/Thumbnails/poke.png b/RNTester/js/Thumbnails/poke.png similarity index 100% rename from Examples/UIExplorer/js/Thumbnails/poke.png rename to RNTester/js/Thumbnails/poke.png diff --git a/Examples/UIExplorer/js/Thumbnails/superlike.png b/RNTester/js/Thumbnails/superlike.png similarity index 100% rename from Examples/UIExplorer/js/Thumbnails/superlike.png rename to RNTester/js/Thumbnails/superlike.png diff --git a/Examples/UIExplorer/js/Thumbnails/victory.png b/RNTester/js/Thumbnails/victory.png similarity index 100% rename from Examples/UIExplorer/js/Thumbnails/victory.png rename to RNTester/js/Thumbnails/victory.png diff --git a/Examples/UIExplorer/js/TimePickerAndroidExample.js b/RNTester/js/TimePickerAndroidExample.js similarity index 70% rename from Examples/UIExplorer/js/TimePickerAndroidExample.js rename to RNTester/js/TimePickerAndroidExample.js index 955209d75e86..a5b243b5ea24 100644 --- a/Examples/UIExplorer/js/TimePickerAndroidExample.js +++ b/RNTester/js/TimePickerAndroidExample.js @@ -1,22 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * @providesModule TimePickerAndroidExample */ 'use strict'; @@ -30,8 +19,8 @@ var { TouchableWithoutFeedback, } = ReactNative; -var UIExplorerBlock = require('./UIExplorerBlock'); -var UIExplorerPage = require('./UIExplorerPage'); +var RNTesterBlock = require('./RNTesterBlock'); +var RNTesterPage = require('./RNTesterPage'); class TimePickerAndroidExample extends React.Component { static title = 'TimePickerAndroid'; @@ -64,14 +53,14 @@ class TimePickerAndroidExample extends React.Component { render() { return ( - - + + {this.state.simpleText} - - + + {this.state.presetText} - + - + {this.state.isoFormatText} - - + + ); } } diff --git a/Examples/UIExplorer/js/TimerExample.js b/RNTester/js/TimerExample.js similarity index 83% rename from Examples/UIExplorer/js/TimerExample.js rename to RNTester/js/TimerExample.js index c24ca6864e12..6f2705b70bb3 100644 --- a/Examples/UIExplorer/js/TimerExample.js +++ b/RNTester/js/TimerExample.js @@ -1,23 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @flow * @providesModule TimerExample */ @@ -33,7 +21,7 @@ var { View, } = ReactNative; var TimerMixin = require('react-timer-mixin'); -var UIExplorerButton = require('./UIExplorerButton'); +var RNTesterButton = require('./RNTesterButton'); var performanceNow = require('fbjs/lib/performanceNow'); function burnCPU(milliseconds) { @@ -56,21 +44,21 @@ class RequestIdleCallbackTester extends React.Component { render() { return ( - + Run requestIdleCallback - + - + Burn CPU inside of requestIdleCallback - + - + Run background task - + - + Stop background task - + {this.state.message} @@ -121,9 +109,9 @@ var TimerTester = React.createClass({ render: function() { var args = 'fn' + (this.props.dt !== undefined ? ', ' + this.props.dt : ''); return ( - + Measure: {this.props.type}({args}) - {this._ii || 0} - + ); }, @@ -253,9 +241,9 @@ exports.examples = [ return ( {this.state.showTimer && this._renderTimer()} - + {this.state.showTimer ? 'Unmount timer' : 'Mount new timer'} - + ); } @@ -264,9 +252,9 @@ exports.examples = [ return ( - this.refs.interval.clear() }> + this.refs.interval.clear() }> Clear interval - + ); }; diff --git a/Examples/UIExplorer/js/ToastAndroidExample.android.js b/RNTester/js/ToastAndroidExample.android.js similarity index 65% rename from Examples/UIExplorer/js/ToastAndroidExample.android.js rename to RNTester/js/ToastAndroidExample.android.js index 35e6e8b9ca0f..34dc88e99df3 100644 --- a/Examples/UIExplorer/js/ToastAndroidExample.android.js +++ b/RNTester/js/ToastAndroidExample.android.js @@ -1,23 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @flow * @providesModule ToastAndroidExample */ @@ -33,8 +21,8 @@ var { TouchableWithoutFeedback, } = ReactNative; -var UIExplorerBlock = require('UIExplorerBlock'); -var UIExplorerPage = require('UIExplorerPage'); +var RNTesterBlock = require('RNTesterBlock'); +var RNTesterPage = require('RNTesterPage'); class ToastExample extends React.Component { static title = 'Toast Example'; @@ -43,22 +31,22 @@ class ToastExample extends React.Component { render() { return ( - - + + ToastAndroid.show('This is a toast with short duration', ToastAndroid.SHORT)}> Click me. - - + + ToastAndroid.show('This is a toast with long duration', ToastAndroid.LONG)}> Click me. - - + + ToastAndroid.showWithGravity( @@ -69,8 +57,8 @@ class ToastExample extends React.Component { }> Click me. - - + + ToastAndroid.showWithGravity( @@ -81,8 +69,8 @@ class ToastExample extends React.Component { }> Click me. - - + + ToastAndroid.showWithGravity( @@ -93,8 +81,8 @@ class ToastExample extends React.Component { }> Click me. - - + + ); } } diff --git a/Examples/UIExplorer/js/ToolbarAndroidExample.android.js b/RNTester/js/ToolbarAndroidExample.android.js similarity index 72% rename from Examples/UIExplorer/js/ToolbarAndroidExample.android.js rename to RNTester/js/ToolbarAndroidExample.android.js index 5fc0c174eebf..b337798cd620 100644 --- a/Examples/UIExplorer/js/ToolbarAndroidExample.android.js +++ b/RNTester/js/ToolbarAndroidExample.android.js @@ -1,23 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @flow * @providesModule ToolbarAndroidExample */ @@ -32,8 +20,8 @@ var { Text, View, } = ReactNative; -var UIExplorerBlock = require('./UIExplorerBlock'); -var UIExplorerPage = require('./UIExplorerPage'); +var RNTesterBlock = require('./RNTesterBlock'); +var RNTesterPage = require('./RNTesterPage'); var Switch = require('Switch'); var ToolbarAndroid = require('ToolbarAndroid'); @@ -53,8 +41,8 @@ class ToolbarAndroidExample extends React.Component { render() { return ( - - + + {this.state.actionText} - - + + {'\'Tis but a switch'} - - + + - - + + - - + + Touch the icon to reset the custom colors to the default (theme-provided) ones. - - + + - - + + - - + + ); } diff --git a/Examples/UIExplorer/js/TouchableExample.js b/RNTester/js/TouchableExample.js similarity index 95% rename from Examples/UIExplorer/js/TouchableExample.js rename to RNTester/js/TouchableExample.js index ede3f1ccb7e6..838402dbf32b 100644 --- a/Examples/UIExplorer/js/TouchableExample.js +++ b/RNTester/js/TouchableExample.js @@ -1,23 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @flow * @providesModule TouchableExample */ diff --git a/Examples/UIExplorer/js/TransformExample.js b/RNTester/js/TransformExample.js similarity index 90% rename from Examples/UIExplorer/js/TransformExample.js rename to RNTester/js/TransformExample.js index ae396bf4f433..92d60186a83a 100644 --- a/Examples/UIExplorer/js/TransformExample.js +++ b/RNTester/js/TransformExample.js @@ -1,22 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * @flow * @providesModule TransformExample */ diff --git a/Examples/UIExplorer/js/TransparentHitTestExample.js b/RNTester/js/TransparentHitTestExample.js similarity index 100% rename from Examples/UIExplorer/js/TransparentHitTestExample.js rename to RNTester/js/TransparentHitTestExample.js diff --git a/RNTester/js/URIActionMap.js b/RNTester/js/URIActionMap.js new file mode 100644 index 000000000000..76c108f59c94 --- /dev/null +++ b/RNTester/js/URIActionMap.js @@ -0,0 +1,52 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * @flow + * @providesModule URIActionMap + */ +'use strict'; + +const ReactNative = require('react-native'); +const RNTesterActions = require('./RNTesterActions'); +// $FlowFixMe : This is a platform-forked component, and flow seems to only run on iOS? +const RNTesterList = require('./RNTesterList'); + +const { + Alert, +} = ReactNative; + +import type { RNTesterAction } from './RNTesterActions'; + +function PathActionMap(path: string): ?RNTesterAction { + // Warning! Hacky parsing for example code. Use a library for this! + const exampleParts = path.split('/example/'); + const exampleKey = exampleParts[1]; + if (exampleKey) { + if (!RNTesterList.Modules[exampleKey]) { + Alert.alert(`${exampleKey} example could not be found!`); + return null; + } + return RNTesterActions.ExampleAction(exampleKey); + } + return null; +} + +function URIActionMap(uri: ?string): ?RNTesterAction { + if (!uri) { + return null; + } + // Warning! Hacky parsing for example code. Use a library for this! + const parts = uri.split('rntester:/'); + if (!parts[1]) { + return null; + } + const path = parts[1]; + return PathActionMap(path); +} + +module.exports = URIActionMap; diff --git a/Examples/UIExplorer/js/VibrationExample.js b/RNTester/js/VibrationExample.js similarity index 81% rename from Examples/UIExplorer/js/VibrationExample.js rename to RNTester/js/VibrationExample.js index 27e94eb26381..4e68083d7c56 100644 --- a/Examples/UIExplorer/js/VibrationExample.js +++ b/RNTester/js/VibrationExample.js @@ -1,23 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @flow * @providesModule VibrationExample */ diff --git a/Examples/UIExplorer/js/VibrationIOSExample.js b/RNTester/js/VibrationIOSExample.js similarity index 61% rename from Examples/UIExplorer/js/VibrationIOSExample.js rename to RNTester/js/VibrationIOSExample.js index 66e26e0c7a4e..24b4342ccb92 100644 --- a/Examples/UIExplorer/js/VibrationIOSExample.js +++ b/RNTester/js/VibrationIOSExample.js @@ -1,23 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @flow * @providesModule VibrationIOSExample */ diff --git a/Examples/UIExplorer/js/ViewExample.js b/RNTester/js/ViewExample.js similarity index 90% rename from Examples/UIExplorer/js/ViewExample.js rename to RNTester/js/ViewExample.js index 5239558b78ce..90a70f3ea70d 100644 --- a/Examples/UIExplorer/js/ViewExample.js +++ b/RNTester/js/ViewExample.js @@ -1,23 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @flow * @providesModule ViewExample */ diff --git a/Examples/UIExplorer/js/ViewPagerAndroidExample.android.js b/RNTester/js/ViewPagerAndroidExample.android.js similarity index 91% rename from Examples/UIExplorer/js/ViewPagerAndroidExample.android.js rename to RNTester/js/ViewPagerAndroidExample.android.js index 9ff7eb17e5d0..f59a59dc4779 100644 --- a/Examples/UIExplorer/js/ViewPagerAndroidExample.android.js +++ b/RNTester/js/ViewPagerAndroidExample.android.js @@ -1,23 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @providesModule ViewPagerAndroidExample */ 'use strict'; diff --git a/Examples/UIExplorer/js/WebSocketExample.js b/RNTester/js/WebSocketExample.js similarity index 90% rename from Examples/UIExplorer/js/WebSocketExample.js rename to RNTester/js/WebSocketExample.js index 2c3c227bd09b..5c8e54fe2d31 100644 --- a/Examples/UIExplorer/js/WebSocketExample.js +++ b/RNTester/js/WebSocketExample.js @@ -1,23 +1,11 @@ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @flow * @providesModule WebSocketExample */ @@ -200,7 +188,7 @@ class WebSocketExample extends React.Component { To start the WS test server: - ./Examples/UIExplorer/js/websocket_test_server.js + ./RNTester/js/websocket_test_server.js { To start the HTTP test server: - ./Examples/UIExplorer/http_test_server.js + ./RNTester/http_test_server.js { + + class ExamplePage extends React.Component { + render() { + return ; + } + } + + return ExamplePage; +}; + +module.exports = createExamplePage; diff --git a/Examples/UIExplorer/js/flux@3x.png b/RNTester/js/flux@3x.png similarity index 100% rename from Examples/UIExplorer/js/flux@3x.png rename to RNTester/js/flux@3x.png diff --git a/Examples/UIExplorer/js/hawk.png b/RNTester/js/hawk.png similarity index 100% rename from Examples/UIExplorer/js/hawk.png rename to RNTester/js/hawk.png diff --git a/Examples/UIExplorer/js/helloworld.html b/RNTester/js/helloworld.html similarity index 100% rename from Examples/UIExplorer/js/helloworld.html rename to RNTester/js/helloworld.html diff --git a/Examples/UIExplorer/js/http_test_server.js b/RNTester/js/http_test_server.js similarity index 52% rename from Examples/UIExplorer/js/http_test_server.js rename to RNTester/js/http_test_server.js index b537d8151909..3c18d9abb35f 100644 --- a/Examples/UIExplorer/js/http_test_server.js +++ b/RNTester/js/http_test_server.js @@ -1,17 +1,11 @@ #!/usr/bin/env node - /** - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. * * @flow * @providesModule http_test_server diff --git a/Examples/UIExplorer/js/messagingtest.html b/RNTester/js/messagingtest.html similarity index 100% rename from Examples/UIExplorer/js/messagingtest.html rename to RNTester/js/messagingtest.html diff --git a/Examples/UIExplorer/js/relay@3x.png b/RNTester/js/relay@3x.png similarity index 100% rename from Examples/UIExplorer/js/relay@3x.png rename to RNTester/js/relay@3x.png diff --git a/Examples/UIExplorer/js/slider-left.png b/RNTester/js/slider-left.png similarity index 100% rename from Examples/UIExplorer/js/slider-left.png rename to RNTester/js/slider-left.png diff --git a/Examples/UIExplorer/js/slider-left@2x.png b/RNTester/js/slider-left@2x.png similarity index 100% rename from Examples/UIExplorer/js/slider-left@2x.png rename to RNTester/js/slider-left@2x.png diff --git a/Examples/UIExplorer/js/slider-right.png b/RNTester/js/slider-right.png similarity index 100% rename from Examples/UIExplorer/js/slider-right.png rename to RNTester/js/slider-right.png diff --git a/Examples/UIExplorer/js/slider-right@2x.png b/RNTester/js/slider-right@2x.png similarity index 100% rename from Examples/UIExplorer/js/slider-right@2x.png rename to RNTester/js/slider-right@2x.png diff --git a/Examples/UIExplorer/js/slider.png b/RNTester/js/slider.png similarity index 100% rename from Examples/UIExplorer/js/slider.png rename to RNTester/js/slider.png diff --git a/Examples/UIExplorer/js/slider@2x.png b/RNTester/js/slider@2x.png similarity index 100% rename from Examples/UIExplorer/js/slider@2x.png rename to RNTester/js/slider@2x.png diff --git a/Examples/UIExplorer/js/uie_comment_highlighted@2x.png b/RNTester/js/uie_comment_highlighted@2x.png similarity index 100% rename from Examples/UIExplorer/js/uie_comment_highlighted@2x.png rename to RNTester/js/uie_comment_highlighted@2x.png diff --git a/Examples/UIExplorer/js/uie_comment_normal@2x.png b/RNTester/js/uie_comment_normal@2x.png similarity index 100% rename from Examples/UIExplorer/js/uie_comment_normal@2x.png rename to RNTester/js/uie_comment_normal@2x.png diff --git a/Examples/UIExplorer/js/uie_thumb_big.png b/RNTester/js/uie_thumb_big.png similarity index 100% rename from Examples/UIExplorer/js/uie_thumb_big.png rename to RNTester/js/uie_thumb_big.png diff --git a/Examples/UIExplorer/js/uie_thumb_normal@2x.png b/RNTester/js/uie_thumb_normal@2x.png similarity index 100% rename from Examples/UIExplorer/js/uie_thumb_normal@2x.png rename to RNTester/js/uie_thumb_normal@2x.png diff --git a/Examples/UIExplorer/js/uie_thumb_selected@2x.png b/RNTester/js/uie_thumb_selected@2x.png similarity index 100% rename from Examples/UIExplorer/js/uie_thumb_selected@2x.png rename to RNTester/js/uie_thumb_selected@2x.png diff --git a/Examples/UIExplorer/js/websocket_test_server.js b/RNTester/js/websocket_test_server.js similarity index 62% rename from Examples/UIExplorer/js/websocket_test_server.js rename to RNTester/js/websocket_test_server.js index affe8d476f2a..21900cdde250 100644 --- a/Examples/UIExplorer/js/websocket_test_server.js +++ b/RNTester/js/websocket_test_server.js @@ -1,25 +1,12 @@ #!/usr/bin/env node - /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * The examples provided by Facebook are for non-commercial testing and - * evaluation purposes only. - * - * Facebook reserves all rights not expressly granted. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL - * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * * @flow * @providesModule websocket_test_server */ diff --git a/package.json b/package.json index c2282488d9b0..937a212fb637 100644 --- a/package.json +++ b/package.json @@ -112,7 +112,7 @@ "scripts": { "test": "jest", "flow": "flow", - "lint": "eslint Examples/ Libraries/", + "lint": "eslint RNTester/ Libraries/", "start": "/usr/bin/env bash -c './packager/packager.sh \"$@\" || true' --", "test-android-setup": "docker pull containership/android-base:latest", "test-android-build": "docker build -t react/android -f ContainerShip/Dockerfile.android .", diff --git a/runXcodeTests.sh b/runXcodeTests.sh index fda82d67f0be..d4524a4a6384 100755 --- a/runXcodeTests.sh +++ b/runXcodeTests.sh @@ -11,8 +11,8 @@ if [ -z "$1" ] fi xctool \ - -project Examples/UIExplorer/UIExplorer.xcodeproj \ - -scheme UIExplorer \ + -project RNTester/RNTester.xcodeproj \ + -scheme RNTester \ -sdk iphonesimulator${1} \ -destination "platform=iOS Simulator,OS=${1},name=iPhone 5" \ build test diff --git a/scripts/objc-test-ios.sh b/scripts/objc-test-ios.sh index 92afdecd2bc9..6b3ecec1d990 100755 --- a/scripts/objc-test-ios.sh +++ b/scripts/objc-test-ios.sh @@ -3,9 +3,9 @@ set -ex # Script used to run iOS tests. # If not arguments are passed to the script, it will only compile -# the UIExplorer. +# the RNTester. # If the script is called with a single argument "test", we'll -# also run the UIExplorer integration test (needs JS and packager): +# also run the RNTester integration test (needs JS and packager): # ./objc-test-ios.sh test SCRIPTS=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) @@ -13,7 +13,7 @@ ROOT=$(dirname "$SCRIPTS") cd "$ROOT" -SCHEME="UIExplorer" +SCHEME="RNTester" SDK="iphonesimulator" DESTINATION="platform=iOS Simulator,name=iPhone 5s,OS=10.1" diff --git a/scripts/objc-test-tvos.sh b/scripts/objc-test-tvos.sh index dc055821ad92..f5841c8f36f7 100755 --- a/scripts/objc-test-tvos.sh +++ b/scripts/objc-test-tvos.sh @@ -3,9 +3,9 @@ set -ex # Script used to run tvOS tests. # If not arguments are passed to the script, it will only compile -# the UIExplorer. +# the RNTester. # If the script is called with a single argument "test", we'll -# also run the UIExplorer integration test (needs JS and packager): +# also run the RNTester integration test (needs JS and packager): # ./objc-test-tvos.sh test SCRIPTS=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) @@ -13,7 +13,7 @@ ROOT=$(dirname "$SCRIPTS") cd "$ROOT" -SCHEME="UIExplorer-tvOS" +SCHEME="RNTester-tvOS" SDK="appletvsimulator" DESTINATION="platform=tvOS Simulator,name=Apple TV 1080p,OS=10.1" diff --git a/scripts/objc-test.sh b/scripts/objc-test.sh index 7555b6d7c102..019da0a2ac5f 100755 --- a/scripts/objc-test.sh +++ b/scripts/objc-test.sh @@ -4,9 +4,9 @@ set -ex # Script used to run iOS and tvOS tests. # Environment variables are used to configure what test to run. # If not arguments are passed to the script, it will only compile -# the UIExplorer. +# the RNTester. # If the script is called with a single argument "test", we'll -# also run the UIExplorer integration test (needs JS and packager). +# also run the RNTester integration test (needs JS and packager). # ./objc-test.sh test SCRIPTS=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) @@ -32,7 +32,7 @@ function cleanup { trap cleanup EXIT # If first argument is "test", actually start the packager and run tests. -# Otherwise, just build UIExplorer for tvOS and exit +# Otherwise, just build RNTester for tvOS and exit if [ "$1" = "test" ]; then @@ -41,11 +41,11 @@ open "./packager/launchPackager.command" || echo "Can't start packager automatic # Start the WebSocket test server open "./IntegrationTests/launchWebSocketServer.command" || echo "Can't start web socket server automatically" -# Preload the UIExplorerApp bundle for better performance in integration tests +# Preload the RNTesterApp bundle for better performance in integration tests sleep 20 -curl 'http://localhost:8081/Examples/UIExplorer/js/UIExplorerApp.ios.bundle?platform=ios&dev=true' -o temp.bundle +curl 'http://localhost:8081/RNTester/js/RNTesterApp.ios.bundle?platform=ios&dev=true' -o temp.bundle rm temp.bundle -curl 'http://localhost:8081/Examples/UIExplorer/js/UIExplorerApp.ios.bundle?platform=ios&dev=true&minify=false' -o temp.bundle +curl 'http://localhost:8081/RNTester/js/RNTesterApp.ios.bundle?platform=ios&dev=true&minify=false' -o temp.bundle rm temp.bundle curl 'http://localhost:8081/IntegrationTests/IntegrationTestsApp.bundle?platform=ios&dev=true' -o temp.bundle rm temp.bundle @@ -57,7 +57,7 @@ rm temp.bundle # the tests before running them. Switch back when this issue with xctool has # been resolved. xcodebuild \ - -project "Examples/UIExplorer/UIExplorer.xcodeproj" \ + -project "RNTester/RNTester.xcodeproj" \ -scheme $SCHEME \ -sdk $SDK \ -destination "$DESTINATION" \ @@ -70,7 +70,7 @@ else # the tests before running them. Switch back when this issue with xctool has # been resolved. xcodebuild \ - -project "Examples/UIExplorer/UIExplorer.xcodeproj" \ + -project "RNTester/RNTester.xcodeproj" \ -scheme $SCHEME \ -sdk $SDK \ build diff --git a/scripts/test-manual-e2e.sh b/scripts/test-manual-e2e.sh index 241dcbbe7f79..7159edde7e7d 100755 --- a/scripts/test-manual-e2e.sh +++ b/scripts/test-manual-e2e.sh @@ -47,19 +47,19 @@ info "and then press any key." info "" read -n 1 -./gradlew :Examples:UIExplorer:android:app:installDebug || error "Couln't build UIExplorer Android" +./gradlew :RNTester:android:app:installDebug || error "Couln't build RNTester Android" -info "Press any key to run UIExplorer in an already running Android emulator/device" +info "Press any key to run RNTester in an already running Android emulator/device" info "" read -n 1 -adb shell am start -n com.facebook.react.uiapp/.UIExplorerActivity +adb shell am start -n com.facebook.react.uiapp/.RNTesterActivity info "Press any key to open the project in Xcode, then build and test manually." info "" read -n 1 -open "Examples/UIExplorer/UIExplorer.xcodeproj" +open "RNTester/RNTester.xcodeproj" -info "When done testing UIExplorer app on iOS and Android press any key to continue." +info "When done testing RNTester app on iOS and Android press any key to continue." info "" read -n 1 diff --git a/settings.gradle b/settings.gradle index ccc7b3b962ef..b88e8fba2247 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,3 +1,3 @@ // Copyright 2004-present Facebook. All Rights Reserved. -include ':ReactAndroid', ':Examples:UIExplorer:android:app', ':Examples:Movies:android:app', ':Examples:TicTacToe:android:app' +include ':ReactAndroid', ':RNTester:android:app', ':Examples:Movies:android:app', ':Examples:TicTacToe:android:app' diff --git a/website/src/react-native/support.js b/website/src/react-native/support.js index b256d64c64a3..4841e4395f67 100644 --- a/website/src/react-native/support.js +++ b/website/src/react-native/support.js @@ -60,7 +60,7 @@ var support = React.createClass({ Building the F8 2016 App
  • - UIExplorer + RNTester
  • Movies From 7932b93fef7f0d92bf11ff1532fdc3fd3916d45c Mon Sep 17 00:00:00 2001 From: Kevin Old Date: Sat, 6 May 2017 04:36:24 -0700 Subject: [PATCH 0007/1101] Properly handle babel ignored files, returning only the contents Summary: - [x] Explain the **motivation** for making this change. - [x] Provide a **test plan** demonstrating that the code is solid. - [x] Match the **code formatting** of the rest of the codebase. - [x] Target the `master` branch, NOT a "stable" branch. I have a need to bundle a pre-optimized external lib with my RN application. Until RN 0.42 I had been using a .babelignore to prevent the packager from trying to optimize this file and choke. It seems in 0.42 and higher I'm no longer allowed to ignore the file. This issue has also been reported as #12071 Details on the reasoning for this patch can be found in the issue I originally filed: https://github.com/facebook/react-native/issues/13168 What existing problem does the pull request solve? This PR restores the functionality with babel ignoring files that existed in 0.41 before this patch: https://github.com/facebook/react-native/commit/0849f84df26e4c56f5763375363bae90d94015fe#diff-4676ea0b3c55c65c3929aa993144f07f Here's a screenshot of this patch properly ignoring the file I referenced in https://github.com/facebook/react-native/issues/13168 to be ignored. ![screen shot 2017-04-27 at 12 48 32 am](https://cloud.githubusercontent.com/assets/21967/25469653/524dbc0c-2ae3-11e7-81a6-faca2f4d21fe.png) The patch relies on the `ignored` value of the call to `babel.transform` and if true returns the src in a object per instruction from loganfsmyth from BabelJS core team. To test, add a file to the `ignore` array of a `.babelrc` file in a React Native project with this fork. I was unable to locate a test file for the transformer.js Fixes #12071, #13168 Closes https://github.com/facebook/react-native/pull/13681 Differential Revision: D5017565 Pulled By: davidaurelio fbshipit-source-id: 421f57b5ce192eedd46fae4285d8a741cb5f8e71 --- packager/transformer.js | 40 +++++++++++++++++++++++++--------------- 1 file changed, 25 insertions(+), 15 deletions(-) diff --git a/packager/transformer.js b/packager/transformer.js index 1864bd706e31..3b25cdf7537b 100644 --- a/packager/transformer.js +++ b/packager/transformer.js @@ -114,21 +114,31 @@ function transform(src, filename, options) { try { const babelConfig = buildBabelConfig(filename, options); - const {ast} = babel.transform(src, babelConfig); - const result = generate(ast, { - comments: false, - compact: false, - filename, - sourceFileName: filename, - sourceMaps: true, - }, src); - - return { - ast, - code: result.code, - filename, - map: options.generateSourceMaps ? result.map : result.rawMappings.map(compactMapping), - }; + const {ast, ignored} = babel.transform(src, babelConfig); + + if (ignored) { + return { + ast: null, + code: src, + filename, + map: null + }; + } else { + const result = generate(ast, { + comments: false, + compact: false, + filename, + sourceFileName: filename, + sourceMaps: true, + }, src); + + return { + ast, + code: result.code, + filename, + map: options.generateSourceMaps ? result.map : result.rawMappings.map(compactMapping), + }; + } } finally { process.env.BABEL_ENV = OLD_BABEL_ENV; } From 20c2ae85f02c6f57d73453bf67c5a6254679e8eb Mon Sep 17 00:00:00 2001 From: Aaron Chiu Date: Sun, 7 May 2017 13:45:22 -0700 Subject: [PATCH 0008/1101] allow calling NativeViewHierarchyManager.addRootView() off the UI thread Reviewed By: yungsters, shergin Differential Revision: D4998706 fbshipit-source-id: f95cdcb0d193ffff2dfe39f9523a222d958ba5c6 --- .../uimanager/NativeViewHierarchyManager.java | 51 ++++++++++--------- .../react/uimanager/UIViewOperationQueue.java | 27 ++-------- 2 files changed, 32 insertions(+), 46 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeViewHierarchyManager.java b/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeViewHierarchyManager.java index a5b157d0f102..4a1dc0d9d902 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeViewHierarchyManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeViewHierarchyManager.java @@ -91,7 +91,7 @@ public NativeViewHierarchyManager(ViewManagerRegistry viewManagers, RootViewMana mRootViewManager = manager; } - public final View resolveView(int tag) { + public synchronized final View resolveView(int tag) { View view = mTagsToViews.get(tag); if (view == null) { throw new IllegalViewOperationException("Trying to resolve view with tag " + tag @@ -100,7 +100,7 @@ public final View resolveView(int tag) { return view; } - public final ViewManager resolveViewManager(int tag) { + public synchronized final ViewManager resolveViewManager(int tag) { ViewManager viewManager = mTagsToViewManagers.get(tag); if (viewManager == null) { throw new IllegalViewOperationException("ViewManager for tag " + tag + " could not be found"); @@ -116,7 +116,7 @@ public void setLayoutAnimationEnabled(boolean enabled) { mLayoutAnimationEnabled = enabled; } - public void updateProperties(int tag, ReactStylesDiffMap props) { + public synchronized void updateProperties(int tag, ReactStylesDiffMap props) { UiThreadUtil.assertOnUiThread(); try { @@ -128,7 +128,7 @@ public void updateProperties(int tag, ReactStylesDiffMap props) { } } - public void updateViewExtraData(int tag, Object extraData) { + public synchronized void updateViewExtraData(int tag, Object extraData) { UiThreadUtil.assertOnUiThread(); ViewManager viewManager = resolveViewManager(tag); @@ -136,7 +136,7 @@ public void updateViewExtraData(int tag, Object extraData) { viewManager.updateExtraData(viewToUpdate, extraData); } - public void updateLayout( + public synchronized void updateLayout( int parentTag, int tag, int x, @@ -200,7 +200,7 @@ private void updateLayout(View viewToUpdate, int x, int y, int width, int height } } - public void createView( + public synchronized void createView( ThemedReactContext themedContext, int tag, String className, @@ -305,11 +305,12 @@ private static String constructManageChildrenErrorMessage( * a view which should be added at the specified index * @param tagsToDelete list of tags corresponding to views that should be removed */ - public void manageChildren( + public synchronized void manageChildren( int tag, @Nullable int[] indicesToRemove, @Nullable ViewAtIndex[] viewsToAdd, @Nullable int[] tagsToDelete) { + UiThreadUtil.assertOnUiThread(); final ViewGroup viewToManage = (ViewGroup) mTagsToViews.get(tag); final ViewGroupManager viewManager = (ViewGroupManager) resolveViewManager(tag); if (viewToManage == null) { @@ -463,9 +464,10 @@ private static String constructSetChildrenErrorMessage( /** * Simplified version of manageChildren that only deals with adding children views */ - public void setChildren( + public synchronized void setChildren( int tag, ReadableArray childrenTags) { + UiThreadUtil.assertOnUiThread(); ViewGroup viewToManage = (ViewGroup) mTagsToViews.get(tag); ViewGroupManager viewManager = (ViewGroupManager) resolveViewManager(tag); @@ -486,21 +488,18 @@ public void setChildren( /** * See {@link UIManagerModule#addMeasuredRootView}. - * - * Must be called from the UI thread. */ - public void addRootView( + public synchronized void addRootView( int tag, SizeMonitoringFrameLayout view, ThemedReactContext themedContext) { addRootViewGroup(tag, view, themedContext); } - protected final void addRootViewGroup( + protected synchronized final void addRootViewGroup( int tag, ViewGroup view, ThemedReactContext themedContext) { - UiThreadUtil.assertOnUiThread(); if (view.getId() != View.NO_ID) { throw new IllegalViewOperationException( "Trying to add a root view with an explicit id already set. React Native uses " + @@ -517,7 +516,7 @@ protected final void addRootViewGroup( /** * Releases all references to given native View. */ - protected void dropView(View view) { + protected synchronized void dropView(View view) { UiThreadUtil.assertOnUiThread(); if (!mRootTags.get(view.getId())) { // For non-root views we notify viewmanager with {@link ViewManager#onDropInstance} @@ -539,7 +538,7 @@ protected void dropView(View view) { mTagsToViewManagers.remove(view.getId()); } - public void removeRootView(int rootViewTag) { + public synchronized void removeRootView(int rootViewTag) { UiThreadUtil.assertOnUiThread(); if (!mRootTags.get(rootViewTag)) { SoftAssertions.assertUnreachable( @@ -554,7 +553,7 @@ public void removeRootView(int rootViewTag) { * Returns true on success, false on failure. If successful, after calling, output buffer will be * {x, y, width, height}. */ - public void measure(int tag, int[] outputBuffer) { + public synchronized void measure(int tag, int[] outputBuffer) { UiThreadUtil.assertOnUiThread(); View v = mTagsToViews.get(tag); if (v == null) { @@ -587,7 +586,7 @@ public void measure(int tag, int[] outputBuffer) { * @param outputBuffer - output buffer that contains [x,y,width,height] of the view in coordinates * relative to the device window */ - public void measureInWindow(int tag, int[] outputBuffer) { + public synchronized void measureInWindow(int tag, int[] outputBuffer) { UiThreadUtil.assertOnUiThread(); View v = mTagsToViews.get(tag); if (v == null) { @@ -610,7 +609,8 @@ public void measureInWindow(int tag, int[] outputBuffer) { outputBuffer[3] = v.getHeight(); } - public int findTargetTagForTouch(int reactTag, float touchX, float touchY) { + public synchronized int findTargetTagForTouch(int reactTag, float touchX, float touchY) { + UiThreadUtil.assertOnUiThread(); View view = mTagsToViews.get(reactTag); if (view == null) { throw new JSApplicationIllegalArgumentException("Could not find view with tag " + reactTag); @@ -618,7 +618,10 @@ public int findTargetTagForTouch(int reactTag, float touchX, float touchY) { return TouchTargetHelper.findTargetTagForTouch(touchX, touchY, (ViewGroup) view); } - public void setJSResponder(int reactTag, int initialReactTag, boolean blockNativeResponder) { + public synchronized void setJSResponder( + int reactTag, + int initialReactTag, + boolean blockNativeResponder) { if (!blockNativeResponder) { mJSResponderHandler.setJSResponder(initialReactTag, null); return; @@ -652,7 +655,7 @@ void clearLayoutAnimation() { mLayoutAnimator.reset(); } - /* package */ void startAnimationForNativeView( + /* package */ synchronized void startAnimationForNativeView( int reactTag, Animation animation, @Nullable final Callback animationCallback) { @@ -691,7 +694,10 @@ public void onCancel() { } } - public void dispatchCommand(int reactTag, int commandId, @Nullable ReadableArray args) { + public synchronized void dispatchCommand( + int reactTag, + int commandId, + @Nullable ReadableArray args) { UiThreadUtil.assertOnUiThread(); View view = mTagsToViews.get(reactTag); if (view == null) { @@ -712,7 +718,7 @@ public void dispatchCommand(int reactTag, int commandId, @Nullable ReadableArray * @param success will be called with the position of the selected item as the first argument, or * no arguments if the menu is dismissed */ - public void showPopupMenu(int reactTag, ReadableArray items, Callback success) { + public synchronized void showPopupMenu(int reactTag, ReadableArray items, Callback success) { UiThreadUtil.assertOnUiThread(); View anchor = mTagsToViews.get(reactTag); if (anchor == null) { @@ -780,5 +786,4 @@ public void sendAccessibilityEvent(int tag, int eventType) { } AccessibilityHelper.sendAccessibilityEvent(view, eventType); } - } diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIViewOperationQueue.java b/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIViewOperationQueue.java index 7098bf057d47..b93b82eb3ed6 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIViewOperationQueue.java +++ b/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIViewOperationQueue.java @@ -564,29 +564,10 @@ public boolean isEmpty() { } public void addRootView( - final int tag, - final SizeMonitoringFrameLayout rootView, - final ThemedReactContext themedRootContext) { - if (UiThreadUtil.isOnUiThread()) { - mNativeViewHierarchyManager.addRootView(tag, rootView, themedRootContext); - } else { - final Semaphore semaphore = new Semaphore(0); - mReactApplicationContext.runOnUiQueueThread( - new Runnable() { - @Override - public void run() { - mNativeViewHierarchyManager.addRootView(tag, rootView, themedRootContext); - semaphore.release(); - } - }); - try { - SoftAssertions.assertCondition( - semaphore.tryAcquire(5000, TimeUnit.MILLISECONDS), - "Timed out adding root view"); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - } + final int tag, + final SizeMonitoringFrameLayout rootView, + final ThemedReactContext themedRootContext) { + mNativeViewHierarchyManager.addRootView(tag, rootView, themedRootContext); } /** From 5058e7eb05073b656fac2cf0ec2a0604ed407805 Mon Sep 17 00:00:00 2001 From: Valentin Shergin Date: Sun, 7 May 2017 23:54:51 -0700 Subject: [PATCH 0009/1101] Several layout related helper methods of RCTShadowView was moved to new (+Layout) category. Reviewed By: javache Differential Revision: D4865327 fbshipit-source-id: 4df71b57433370ee09c3f1288c4d6241a33f440a --- Libraries/Text/RCTShadowText.m | 1 + Libraries/Text/RCTTextFieldManager.m | 1 + Libraries/Text/RCTTextManager.m | 3 +- Libraries/Text/RCTTextViewManager.m | 1 + .../RNTesterUnitTests/RCTShadowViewTests.m | 1 + React/React.xcodeproj/project.pbxproj | 16 ++++++ React/ReactLegacy.xcodeproj/project.pbxproj | 16 ++++++ React/Views/RCTShadowView+Layout.h | 21 +++++++ React/Views/RCTShadowView+Layout.m | 56 +++++++++++++++++++ React/Views/RCTShadowView.h | 2 - React/Views/RCTShadowView.m | 10 ---- 11 files changed, 115 insertions(+), 13 deletions(-) create mode 100644 React/Views/RCTShadowView+Layout.h create mode 100644 React/Views/RCTShadowView+Layout.m diff --git a/Libraries/Text/RCTShadowText.m b/Libraries/Text/RCTShadowText.m index 6025cc9d072f..1a0e7980bbf2 100644 --- a/Libraries/Text/RCTShadowText.m +++ b/Libraries/Text/RCTShadowText.m @@ -14,6 +14,7 @@ #import #import #import +#import #import #import diff --git a/Libraries/Text/RCTTextFieldManager.m b/Libraries/Text/RCTTextFieldManager.m index 27287c32afc2..3848143f20f0 100644 --- a/Libraries/Text/RCTTextFieldManager.m +++ b/Libraries/Text/RCTTextFieldManager.m @@ -11,6 +11,7 @@ #import #import +#import #import #import "RCTConvert+Text.h" diff --git a/Libraries/Text/RCTTextManager.m b/Libraries/Text/RCTTextManager.m index d5c8c86ae7c7..b26a29d7e0a7 100644 --- a/Libraries/Text/RCTTextManager.m +++ b/Libraries/Text/RCTTextManager.m @@ -9,12 +9,13 @@ #import "RCTTextManager.h" -#import #import #import #import #import +#import #import +#import #import "RCTShadowRawText.h" #import "RCTShadowText.h" diff --git a/Libraries/Text/RCTTextViewManager.m b/Libraries/Text/RCTTextViewManager.m index ab26d1b8ec88..b32eeaf5ba4b 100644 --- a/Libraries/Text/RCTTextViewManager.m +++ b/Libraries/Text/RCTTextViewManager.m @@ -12,6 +12,7 @@ #import #import #import +#import #import #import "RCTConvert+Text.h" diff --git a/RNTester/RNTesterUnitTests/RCTShadowViewTests.m b/RNTester/RNTesterUnitTests/RCTShadowViewTests.m index b6c69e20afad..c00922e41808 100644 --- a/RNTester/RNTesterUnitTests/RCTShadowViewTests.m +++ b/RNTester/RNTesterUnitTests/RCTShadowViewTests.m @@ -11,6 +11,7 @@ #import #import +#import #import diff --git a/React/React.xcodeproj/project.pbxproj b/React/React.xcodeproj/project.pbxproj index 75843240a6d1..155605541323 100644 --- a/React/React.xcodeproj/project.pbxproj +++ b/React/React.xcodeproj/project.pbxproj @@ -943,8 +943,14 @@ 58114A171AAE854800E7D092 /* RCTPickerManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 58114A151AAE854800E7D092 /* RCTPickerManager.m */; }; 58114A501AAE93D500E7D092 /* RCTAsyncLocalStorage.m in Sources */ = {isa = PBXBuildFile; fileRef = 58114A4E1AAE93D500E7D092 /* RCTAsyncLocalStorage.m */; }; 58C571C11AA56C1900CDF9C8 /* RCTDatePickerManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 58C571BF1AA56C1900CDF9C8 /* RCTDatePickerManager.m */; }; + 590D7BFD1EBD458B00D8A370 /* RCTShadowView+Layout.h in Headers */ = {isa = PBXBuildFile; fileRef = 590D7BFB1EBD458B00D8A370 /* RCTShadowView+Layout.h */; }; + 590D7BFE1EBD458B00D8A370 /* RCTShadowView+Layout.h in Headers */ = {isa = PBXBuildFile; fileRef = 590D7BFB1EBD458B00D8A370 /* RCTShadowView+Layout.h */; }; + 590D7BFF1EBD458B00D8A370 /* RCTShadowView+Layout.m in Sources */ = {isa = PBXBuildFile; fileRef = 590D7BFC1EBD458B00D8A370 /* RCTShadowView+Layout.m */; }; + 590D7C001EBD458B00D8A370 /* RCTShadowView+Layout.m in Sources */ = {isa = PBXBuildFile; fileRef = 590D7BFC1EBD458B00D8A370 /* RCTShadowView+Layout.m */; }; 59A7B9FD1E577DBF0068EDBF /* RCTRootContentView.h in Headers */ = {isa = PBXBuildFile; fileRef = 59A7B9FB1E577DBF0068EDBF /* RCTRootContentView.h */; }; 59A7B9FE1E577DBF0068EDBF /* RCTRootContentView.m in Sources */ = {isa = PBXBuildFile; fileRef = 59A7B9FC1E577DBF0068EDBF /* RCTRootContentView.m */; }; + 59B1EBC91EBD46250047B19B /* RCTShadowView+Layout.h in Copy Headers */ = {isa = PBXBuildFile; fileRef = 590D7BFB1EBD458B00D8A370 /* RCTShadowView+Layout.h */; }; + 59B1EBCA1EBD47520047B19B /* RCTShadowView+Layout.h in Copy Headers */ = {isa = PBXBuildFile; fileRef = 590D7BFB1EBD458B00D8A370 /* RCTShadowView+Layout.h */; }; 59FBEFB01E46D91C0095D885 /* RCTScrollContentShadowView.h in Headers */ = {isa = PBXBuildFile; fileRef = 59FBEFAC1E46D91C0095D885 /* RCTScrollContentShadowView.h */; }; 59FBEFB11E46D91C0095D885 /* RCTScrollContentShadowView.h in Headers */ = {isa = PBXBuildFile; fileRef = 59FBEFAC1E46D91C0095D885 /* RCTScrollContentShadowView.h */; }; 59FBEFB21E46D91C0095D885 /* RCTScrollContentShadowView.m in Sources */ = {isa = PBXBuildFile; fileRef = 59FBEFAD1E46D91C0095D885 /* RCTScrollContentShadowView.m */; }; @@ -1072,6 +1078,7 @@ dstPath = include/React; dstSubfolderSpec = 16; files = ( + 59B1EBCA1EBD47520047B19B /* RCTShadowView+Layout.h in Copy Headers */, 3D7BFD351EA8E43F008DFB7A /* RCTDevSettings.h in Copy Headers */, 3D7BFD331EA8E433008DFB7A /* RCTPackagerClient.h in Copy Headers */, 3D0976D71E9739FB00B9C6DD /* RCTBridge+JavaScriptCore.h in Copy Headers */, @@ -1264,6 +1271,7 @@ dstPath = include/React; dstSubfolderSpec = 16; files = ( + 59B1EBC91EBD46250047B19B /* RCTShadowView+Layout.h in Copy Headers */, 3D7BFD311EA8E41F008DFB7A /* RCTPackagerClient.h in Copy Headers */, 3D7BFD291EA8E37B008DFB7A /* RCTDevSettings.h in Copy Headers */, 3D0976D81E973A0200B9C6DD /* RCTBridge+JavaScriptCore.h in Copy Headers */, @@ -1787,6 +1795,8 @@ 58114A4F1AAE93D500E7D092 /* RCTAsyncLocalStorage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTAsyncLocalStorage.h; sourceTree = ""; }; 58C571BF1AA56C1900CDF9C8 /* RCTDatePickerManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTDatePickerManager.m; sourceTree = ""; }; 58C571C01AA56C1900CDF9C8 /* RCTDatePickerManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = RCTDatePickerManager.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; + 590D7BFB1EBD458B00D8A370 /* RCTShadowView+Layout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "RCTShadowView+Layout.h"; sourceTree = ""; }; + 590D7BFC1EBD458B00D8A370 /* RCTShadowView+Layout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "RCTShadowView+Layout.m"; sourceTree = ""; }; 59A7B9FB1E577DBF0068EDBF /* RCTRootContentView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTRootContentView.h; sourceTree = ""; }; 59A7B9FC1E577DBF0068EDBF /* RCTRootContentView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTRootContentView.m; sourceTree = ""; }; 59FBEFAC1E46D91C0095D885 /* RCTScrollContentShadowView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTScrollContentShadowView.h; sourceTree = ""; }; @@ -2139,6 +2149,8 @@ 131B6AF31AF1093D00FFC3E0 /* RCTSegmentedControlManager.m */, 13E0674B1A70F44B002CDEE1 /* RCTShadowView.h */, 13E0674C1A70F44B002CDEE1 /* RCTShadowView.m */, + 590D7BFB1EBD458B00D8A370 /* RCTShadowView+Layout.h */, + 590D7BFC1EBD458B00D8A370 /* RCTShadowView+Layout.m */, 13AF20431AE707F8005F5298 /* RCTSlider.h */, 13AF20441AE707F9005F5298 /* RCTSlider.m */, 14F484541AABFCE100FDF6B9 /* RCTSliderManager.h */, @@ -2515,6 +2527,7 @@ 13134C991E296B2A00B9F3CB /* RCTCxxMethod.h in Headers */, 3D302F471DF828F800D6DDAE /* RCTPlatform.h in Headers */, 13134C951E296B2A00B9F3CB /* RCTObjcExecutor.h in Headers */, + 590D7BFE1EBD458B00D8A370 /* RCTShadowView+Layout.h in Headers */, 13134C9D1E296B2A00B9F3CB /* RCTCxxModule.h in Headers */, 59FBEFB11E46D91C0095D885 /* RCTScrollContentShadowView.h in Headers */, 130443A31E3FEAAE00D93A67 /* RCTFollyConvert.h in Headers */, @@ -2898,6 +2911,7 @@ 3D80DA8C1DF820620028D040 /* RCTTextDecorationLineType.h in Headers */, 3D80DA8D1DF820620028D040 /* RCTView.h in Headers */, 3D80DA8E1DF820620028D040 /* RCTViewControllerProtocol.h in Headers */, + 590D7BFD1EBD458B00D8A370 /* RCTShadowView+Layout.h in Headers */, 3D80DA8F1DF820620028D040 /* RCTViewManager.h in Headers */, 13134CA01E296B2A00B9F3CB /* RCTCxxUtils.h in Headers */, 3D80DA901DF820620028D040 /* RCTWebView.h in Headers */, @@ -3282,6 +3296,7 @@ 2D3B5E991D9B089A00451313 /* RCTDisplayLink.m in Sources */, 2D3B5EA11D9B08B600451313 /* RCTModuleData.mm in Sources */, 2D3B5EEA1D9B09CD00451313 /* RCTTabBar.m in Sources */, + 590D7C001EBD458B00D8A370 /* RCTShadowView+Layout.m in Sources */, 2D3B5EAE1D9B08F800451313 /* RCTEventEmitter.m in Sources */, 2D3B5ECA1D9B095F00451313 /* RCTComponentData.m in Sources */, 2D3B5EA31D9B08BE00451313 /* RCTParserUtils.m in Sources */, @@ -3560,6 +3575,7 @@ 191E3EC11C29DC3800C180A6 /* RCTRefreshControl.m in Sources */, 13C156051AB1A2840079392D /* RCTWebView.m in Sources */, 83CBBA601A601EAA00E9B192 /* RCTBridge.m in Sources */, + 590D7BFF1EBD458B00D8A370 /* RCTShadowView+Layout.m in Sources */, 13C156061AB1A2840079392D /* RCTWebViewManager.m in Sources */, 58114A161AAE854800E7D092 /* RCTPicker.m in Sources */, 137327E81AA5CF210034F82E /* RCTTabBarItem.m in Sources */, diff --git a/React/ReactLegacy.xcodeproj/project.pbxproj b/React/ReactLegacy.xcodeproj/project.pbxproj index 8b8ad3c956ce..dc1a49e7bd32 100644 --- a/React/ReactLegacy.xcodeproj/project.pbxproj +++ b/React/ReactLegacy.xcodeproj/project.pbxproj @@ -696,6 +696,12 @@ 594AD5D21E46D87500B07237 /* RCTScrollContentViewManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 594AD5CB1E46D87500B07237 /* RCTScrollContentViewManager.h */; }; 594AD5D31E46D87500B07237 /* RCTScrollContentViewManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 594AD5CC1E46D87500B07237 /* RCTScrollContentViewManager.m */; }; 594AD5D41E46D87500B07237 /* RCTScrollContentViewManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 594AD5CC1E46D87500B07237 /* RCTScrollContentViewManager.m */; }; + 595405571EC03A1700766D3C /* RCTShadowView+Layout.h in Headers */ = {isa = PBXBuildFile; fileRef = 595405551EC03A1700766D3C /* RCTShadowView+Layout.h */; }; + 595405581EC03A1700766D3C /* RCTShadowView+Layout.h in Headers */ = {isa = PBXBuildFile; fileRef = 595405551EC03A1700766D3C /* RCTShadowView+Layout.h */; }; + 595405591EC03A1700766D3C /* RCTShadowView+Layout.m in Sources */ = {isa = PBXBuildFile; fileRef = 595405561EC03A1700766D3C /* RCTShadowView+Layout.m */; }; + 5954055A1EC03A1700766D3C /* RCTShadowView+Layout.m in Sources */ = {isa = PBXBuildFile; fileRef = 595405561EC03A1700766D3C /* RCTShadowView+Layout.m */; }; + 5954055B1EC03A7F00766D3C /* RCTShadowView+Layout.h in Copy Headers */ = {isa = PBXBuildFile; fileRef = 595405551EC03A1700766D3C /* RCTShadowView+Layout.h */; }; + 5954055C1EC03A8E00766D3C /* RCTShadowView+Layout.h in Copy Headers */ = {isa = PBXBuildFile; fileRef = 595405551EC03A1700766D3C /* RCTShadowView+Layout.h */; }; 597AD1BD1E577D7800152581 /* RCTRootContentView.h in Headers */ = {isa = PBXBuildFile; fileRef = 597AD1BB1E577D7800152581 /* RCTRootContentView.h */; }; 597AD1BE1E577D7800152581 /* RCTRootContentView.h in Headers */ = {isa = PBXBuildFile; fileRef = 597AD1BB1E577D7800152581 /* RCTRootContentView.h */; }; 597AD1BF1E577D7800152581 /* RCTRootContentView.m in Sources */ = {isa = PBXBuildFile; fileRef = 597AD1BC1E577D7800152581 /* RCTRootContentView.m */; }; @@ -808,6 +814,7 @@ dstPath = include/React; dstSubfolderSpec = 16; files = ( + 5954055C1EC03A8E00766D3C /* RCTShadowView+Layout.h in Copy Headers */, 2D7B05391E9D82080032604E /* RCTBridge+Private.h in Copy Headers */, 3D0976C31E9739AE00B9C6DD /* RCTBridge+JavaScriptCore.h in Copy Headers */, 3D6B76D51E83DD3A008FA614 /* RCTDevSettings.h in Copy Headers */, @@ -970,6 +977,7 @@ dstPath = include/React; dstSubfolderSpec = 16; files = ( + 5954055B1EC03A7F00766D3C /* RCTShadowView+Layout.h in Copy Headers */, 3D7BFCEB1EA8E23A008DFB7A /* RCTDevSettings.h in Copy Headers */, 3D0976C41E9739B400B9C6DD /* RCTBridge+JavaScriptCore.h in Copy Headers */, A12E9E1F1E5DEAEF0029001B /* RCTPackagerClient.h in Copy Headers */, @@ -1335,6 +1343,8 @@ 594AD5CA1E46D87500B07237 /* RCTScrollContentShadowView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTScrollContentShadowView.m; sourceTree = ""; }; 594AD5CB1E46D87500B07237 /* RCTScrollContentViewManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTScrollContentViewManager.h; sourceTree = ""; }; 594AD5CC1E46D87500B07237 /* RCTScrollContentViewManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTScrollContentViewManager.m; sourceTree = ""; }; + 595405551EC03A1700766D3C /* RCTShadowView+Layout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "RCTShadowView+Layout.h"; sourceTree = ""; }; + 595405561EC03A1700766D3C /* RCTShadowView+Layout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "RCTShadowView+Layout.m"; sourceTree = ""; }; 597AD1BB1E577D7800152581 /* RCTRootContentView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTRootContentView.h; sourceTree = ""; }; 597AD1BC1E577D7800152581 /* RCTRootContentView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTRootContentView.m; sourceTree = ""; }; 65F3E41D1E73031C009375BD /* systemJSCWrapper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = systemJSCWrapper.cpp; sourceTree = ""; }; @@ -1558,6 +1568,8 @@ 131B6AF31AF1093D00FFC3E0 /* RCTSegmentedControlManager.m */, 13E0674B1A70F44B002CDEE1 /* RCTShadowView.h */, 13E0674C1A70F44B002CDEE1 /* RCTShadowView.m */, + 595405551EC03A1700766D3C /* RCTShadowView+Layout.h */, + 595405561EC03A1700766D3C /* RCTShadowView+Layout.m */, 13AF20431AE707F8005F5298 /* RCTSlider.h */, 13AF20441AE707F9005F5298 /* RCTSlider.m */, 14F484541AABFCE100FDF6B9 /* RCTSliderManager.h */, @@ -1935,6 +1947,7 @@ 3D302F6B1DF828F800D6DDAE /* RCTActivityIndicatorViewManager.h in Headers */, 3D302F6C1DF828F800D6DDAE /* RCTAnimationType.h in Headers */, 3D302F6D1DF828F800D6DDAE /* RCTAutoInsetsProtocol.h in Headers */, + 595405581EC03A1700766D3C /* RCTShadowView+Layout.h in Headers */, 3D302F6E1DF828F800D6DDAE /* RCTBorderDrawing.h in Headers */, 3D302F6F1DF828F800D6DDAE /* RCTBorderStyle.h in Headers */, 3D302F701DF828F800D6DDAE /* RCTComponent.h in Headers */, @@ -2109,6 +2122,7 @@ 3D80DA541DF820620028D040 /* RCTI18nUtil.h in Headers */, 3D80DA551DF820620028D040 /* RCTKeyboardObserver.h in Headers */, 3D80DA561DF820620028D040 /* RCTRedBox.h in Headers */, + 595405571EC03A1700766D3C /* RCTShadowView+Layout.h in Headers */, 3D80DA571DF820620028D040 /* RCTSourceCode.h in Headers */, 3D80DA581DF820620028D040 /* RCTStatusBarManager.h in Headers */, 3D80DA591DF820620028D040 /* RCTTiming.h in Headers */, @@ -2507,6 +2521,7 @@ A12E9E5D1E5DF8720029001B /* RCTReloadPackagerMethod.m in Sources */, 3D5AC71A1E0056E0000F9153 /* RCTTVNavigationEventEmitter.m in Sources */, 2D3B5EA61D9B08CA00451313 /* RCTTouchEvent.m in Sources */, + 5954055A1EC03A1700766D3C /* RCTShadowView+Layout.m in Sources */, 2D8C2E331DA40441000EE098 /* RCTMultipartStreamReader.m in Sources */, 2D3B5EF01D9B09E300451313 /* RCTWrapperViewController.m in Sources */, 3D5AC7141E0056C7000F9153 /* RCTTVView.m in Sources */, @@ -2612,6 +2627,7 @@ A12E9E8F1E5DFA620029001B /* RCTSamplingProfilerPackagerMethod.mm in Sources */, 13BCE8091C99CB9D00DD7AAD /* RCTRootShadowView.m in Sources */, 14C2CA711B3AC63800E6CBB2 /* RCTModuleMethod.m in Sources */, + 595405591EC03A1700766D3C /* RCTShadowView+Layout.m in Sources */, 006FC4141D9B20820057AAAD /* RCTMultipartDataTask.m in Sources */, A12E9E1C1E5DEA350029001B /* RCTPackagerClient.m in Sources */, 13CC8A821B17642100940AE7 /* RCTBorderDrawing.m in Sources */, diff --git a/React/Views/RCTShadowView+Layout.h b/React/Views/RCTShadowView+Layout.h new file mode 100644 index 000000000000..f80ef434c3c0 --- /dev/null +++ b/React/Views/RCTShadowView+Layout.h @@ -0,0 +1,21 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +@interface RCTShadowView (Layout) + +@property (nonatomic, readonly) UIEdgeInsets paddingAsInsets; +@property (nonatomic, readonly) UIEdgeInsets borderAsInsets; +@property (nonatomic, readonly) UIEdgeInsets compoundInsets; +@property (nonatomic, readonly) CGSize availableSize; + +@end diff --git a/React/Views/RCTShadowView+Layout.m b/React/Views/RCTShadowView+Layout.m new file mode 100644 index 000000000000..783ea95b2bf7 --- /dev/null +++ b/React/Views/RCTShadowView+Layout.m @@ -0,0 +1,56 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "RCTShadowView+Layout.h" + +#import + +@implementation RCTShadowView (Layout) + +- (UIEdgeInsets)paddingAsInsets +{ + YGNodeRef yogaNode = self.yogaNode; + return (UIEdgeInsets){ + YGNodeLayoutGetPadding(yogaNode, YGEdgeTop), + YGNodeLayoutGetPadding(yogaNode, YGEdgeLeft), + YGNodeLayoutGetPadding(yogaNode, YGEdgeBottom), + YGNodeLayoutGetPadding(yogaNode, YGEdgeRight) + }; +} + +- (UIEdgeInsets)borderAsInsets +{ + YGNodeRef yogaNode = self.yogaNode; + return (UIEdgeInsets){ + YGNodeLayoutGetBorder(yogaNode, YGEdgeTop), + YGNodeLayoutGetBorder(yogaNode, YGEdgeLeft), + YGNodeLayoutGetBorder(yogaNode, YGEdgeBottom), + YGNodeLayoutGetBorder(yogaNode, YGEdgeRight) + }; +} + +- (UIEdgeInsets)compoundInsets +{ + UIEdgeInsets borderAsInsets = self.borderAsInsets; + UIEdgeInsets paddingAsInsets = self.paddingAsInsets; + + return (UIEdgeInsets){ + borderAsInsets.top + paddingAsInsets.top, + borderAsInsets.left + paddingAsInsets.left, + borderAsInsets.bottom + paddingAsInsets.bottom, + borderAsInsets.right + paddingAsInsets.right + }; +} + +- (CGSize)availableSize +{ + return UIEdgeInsetsInsetRect((CGRect){CGPointZero, self.frame.size}, self.compoundInsets).size; +} + +@end diff --git a/React/Views/RCTShadowView.h b/React/Views/RCTShadowView.h index 8ec452d5ed12..bcf0522f82a0 100644 --- a/React/Views/RCTShadowView.h +++ b/React/Views/RCTShadowView.h @@ -128,8 +128,6 @@ typedef void (^RCTApplierBlock)(NSDictionary *viewRegistry @property (nonatomic, assign) YGValue paddingBottom; @property (nonatomic, assign) YGValue paddingRight; -- (UIEdgeInsets)paddingAsInsets; - /** * Flexbox properties. All zero/disabled by default */ diff --git a/React/Views/RCTShadowView.m b/React/Views/RCTShadowView.m index 7cae648e9f17..d7b431fd4ff0 100644 --- a/React/Views/RCTShadowView.m +++ b/React/Views/RCTShadowView.m @@ -528,16 +528,6 @@ - (YGValue)padding##prop \ RCT_PADDING_PROPERTY(Bottom, BOTTOM) RCT_PADDING_PROPERTY(Right, RIGHT) -- (UIEdgeInsets)paddingAsInsets -{ - return (UIEdgeInsets){ - YGNodeLayoutGetPadding(_yogaNode, YGEdgeTop), - YGNodeLayoutGetPadding(_yogaNode, YGEdgeLeft), - YGNodeLayoutGetPadding(_yogaNode, YGEdgeBottom), - YGNodeLayoutGetPadding(_yogaNode, YGEdgeRight) - }; -} - // Border #define RCT_BORDER_PROPERTY(prop, metaProp) \ From 074fd33725626530c68d897150413a13715280a1 Mon Sep 17 00:00:00 2001 From: Janic Duplessis Date: Mon, 8 May 2017 04:15:35 -0700 Subject: [PATCH 0010/1101] Packager - Fix symbolicate on windows Summary: There was an error with packager symbolization on Windows because it looks like `allowHalfOpen: true` doesn't work properly when using named sockets. This uses a random port on localhost for the connection instead on Windows as a workaround. **Test plan** Tested that symbolization works on both mac and windows by triggering a warning in UIExplorer. Closes https://github.com/facebook/react-native/pull/13828 Differential Revision: D5019537 Pulled By: davidaurelio fbshipit-source-id: 62c5b5f270e553a7d413bb4d1bab2406380f1d4f --- packager/src/Server/symbolicate/symbolicate.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packager/src/Server/symbolicate/symbolicate.js b/packager/src/Server/symbolicate/symbolicate.js index 3ea3c08979ce..f4fd96363e95 100644 --- a/packager/src/Server/symbolicate/symbolicate.js +++ b/packager/src/Server/symbolicate/symbolicate.js @@ -30,7 +30,11 @@ const affixes = {prefix: 'metro-bundler-symbolicate', suffix: '.sock'}; const childPath = require.resolve('./worker'); exports.createWorker = (): Symbolicate => { - const socket = xpipe.eq(temp.path(affixes)); + // There are issues with named sockets on windows that cause the connection to + // close too early so run the symbolicate server on a random localhost port. + const socket = process.platform === 'win32' + ? 34712 + : xpipe.eq(temp.path(affixes)); const child = new LockingPromise(new LazyPromise(() => startupChild(socket))); return (stack, sourceMaps) => @@ -53,6 +57,7 @@ function startupChild(socket) { child.removeAllListeners(); resolve(child); }); + // $FlowFixMe ChildProcess.send should accept any type. child.send(socket); }); } From 2edbb61aae738ae315905031c8eeed35019f16f8 Mon Sep 17 00:00:00 2001 From: Pieter De Baets Date: Mon, 8 May 2017 04:27:10 -0700 Subject: [PATCH 0011/1101] Retry when maven download fails Reviewed By: ericvicenti Differential Revision: D5010170 fbshipit-source-id: 02eee6a99672bd559a5d64290e9339e5c12a17b9 --- .buckconfig | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.buckconfig b/.buckconfig index 41234774bb28..6252070a9bc6 100644 --- a/.buckconfig +++ b/.buckconfig @@ -2,6 +2,9 @@ [android] target = Google Inc.:Google APIs:23 +[download] + max_number_of_retries = 3 + [maven_repositories] central = https://repo1.maven.org/maven2 From e69b81313f68268c4425579b8196d771f042f858 Mon Sep 17 00:00:00 2001 From: Jean Lauliac Date: Mon, 8 May 2017 04:28:26 -0700 Subject: [PATCH 0012/1101] packager: ModuleGraph: include all possible asset types Summary: Afaik. the list of asset types is hardcoded for the Buck worker so far, and I'm not sure how that would be customizable. For now, let's include all the default asset extensions. Reviewed By: davidaurelio Differential Revision: D5002607 fbshipit-source-id: 41069e817d2b73156bca684bc2f73077132928a7 --- packager/src/ModuleGraph/worker/transform-module.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packager/src/ModuleGraph/worker/transform-module.js b/packager/src/ModuleGraph/worker/transform-module.js index 2e7cf2e1968a..e15a3993d699 100644 --- a/packager/src/ModuleGraph/worker/transform-module.js +++ b/packager/src/ModuleGraph/worker/transform-module.js @@ -12,8 +12,10 @@ const babel = require('babel-core'); const collectDependencies = require('./collect-dependencies'); +const defaults = require('../../../defaults'); const docblock = require('../../node-haste/DependencyGraph/docblock'); const generate = require('./generate'); +const path = require('path'); const series = require('async/series'); const {basename} = require('path'); @@ -39,12 +41,14 @@ const defaultVariants = {default: {}}; const moduleFactoryParameters = ['global', 'require', 'module', 'exports']; const polyfillFactoryParameters = ['global']; +const ASSET_EXTENSIONS = new Set(defaults.assetExts); + function transformModule( content: Buffer, options: TransformOptions, callback: Callback, ): void { - if (options.filename.endsWith('.png')) { + if (ASSET_EXTENSIONS.has(path.extname(options.filename).substr(1))) { transformAsset(content, options, callback); return; } From 2a5959ae6e4d49eb2ed73c0c4be3f27095737299 Mon Sep 17 00:00:00 2001 From: Jean Lauliac Date: Mon, 8 May 2017 04:28:26 -0700 Subject: [PATCH 0013/1101] packager: buck assets: wrap in __d Reviewed By: davidaurelio Differential Revision: D5003464 fbshipit-source-id: 59800dded389d133394b60530eb97642d67a5c89 --- packager/src/Bundler/util.js | 40 ++++++++++---- .../src/ModuleGraph/worker/JsFileWrapping.js | 52 +++++++++++++++++++ .../ModuleGraph/worker/transform-module.js | 39 ++------------ 3 files changed, 88 insertions(+), 43 deletions(-) create mode 100644 packager/src/ModuleGraph/worker/JsFileWrapping.js diff --git a/packager/src/Bundler/util.js b/packager/src/Bundler/util.js index e1b7488e7ed6..f64aba70719f 100644 --- a/packager/src/Bundler/util.js +++ b/packager/src/Bundler/util.js @@ -11,6 +11,10 @@ 'use strict'; +const babel = require('babel-core'); +const babelGenerate = require('babel-generator').default; +const babylon = require('babylon'); + import type {AssetDescriptor} from '.'; const assetPropertyBlacklist = new Set([ @@ -19,18 +23,33 @@ const assetPropertyBlacklist = new Set([ 'path', ]); +const ASSET_REGISTRY_PATH = 'react-native/Libraries/Image/AssetRegistry'; + +function generateAssetCodeFileAst(assetDescriptor: AssetDescriptor): Object { + const properDescriptor = filterObject(assetDescriptor, assetPropertyBlacklist); + const descriptorAst = babylon.parseExpression(JSON.stringify(properDescriptor)); + const t = babel.types; + const moduleExports = t.memberExpression(t.identifier('module'), t.identifier('exports')); + const requireCall = + t.callExpression(t.identifier('require'), [t.stringLiteral(ASSET_REGISTRY_PATH)]); + const registerAssetFunction = t.memberExpression(requireCall, t.identifier('registerAsset')); + const registerAssetCall = t.callExpression(registerAssetFunction, [descriptorAst]); + return t.file(t.program([ + t.expressionStatement(t.assignmentExpression('=', moduleExports, registerAssetCall)), + ])); +} + function generateAssetTransformResult(assetDescriptor: AssetDescriptor): {| code: string, dependencies: Array, dependencyOffsets: Array, |} { - const properDescriptor = filterObject(assetDescriptor, assetPropertyBlacklist); - const json = JSON.stringify(properDescriptor); - const assetRegistryPath = 'react-native/Libraries/Image/AssetRegistry'; - const code = - `module.exports = require(${JSON.stringify(assetRegistryPath)}).registerAsset(${json});`; - const dependencies = [assetRegistryPath]; - const dependencyOffsets = [code.indexOf(assetRegistryPath) - 1]; + const {code} = babelGenerate( + generateAssetCodeFileAst(assetDescriptor), + {comments: false, compact: true}, + ); + const dependencies = [ASSET_REGISTRY_PATH]; + const dependencyOffsets = [code.indexOf(ASSET_REGISTRY_PATH) - 1]; return {code, dependencies, dependencyOffsets}; } @@ -50,5 +69,8 @@ function filterObject(object, blacklist) { return copied; } -exports.generateAssetTransformResult = generateAssetTransformResult; -exports.isAssetTypeAnImage = isAssetTypeAnImage; +module.exports = { + generateAssetCodeFileAst, + generateAssetTransformResult, + isAssetTypeAnImage +}; diff --git a/packager/src/ModuleGraph/worker/JsFileWrapping.js b/packager/src/ModuleGraph/worker/JsFileWrapping.js new file mode 100644 index 000000000000..37021a31e9f6 --- /dev/null +++ b/packager/src/ModuleGraph/worker/JsFileWrapping.js @@ -0,0 +1,52 @@ +/** + * Copyright (c) 2016-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * @flow + */ + +'use strict'; + +const babel = require('babel-core'); + +const MODULE_FACTORY_PARAMETERS = ['global', 'require', 'module', 'exports']; +const POLYFILL_FACTORY_PARAMETERS = ['global']; + +function wrapModule(fileAst: Object, dependencyMapName: string): Object { + const t = babel.types; + const params = MODULE_FACTORY_PARAMETERS.concat(dependencyMapName); + const factory = functionFromProgram(fileAst.program, params); + const def = t.callExpression(t.identifier('__d'), [factory]); + return t.file(t.program([t.expressionStatement(def)])); +} + +function wrapPolyfill(fileAst: Object): Object { + const t = babel.types; + const factory = functionFromProgram(fileAst.program, POLYFILL_FACTORY_PARAMETERS); + const iife = t.callExpression(factory, [t.identifier('this')]); + return t.file(t.program([t.expressionStatement(iife)])); +} + +function functionFromProgram(program: Object, parameters: Array): Object { + const t = babel.types; + return t.functionExpression( + t.identifier(''), + parameters.map(makeIdentifier), + t.blockStatement(program.body, program.directives), + ); +} + +function makeIdentifier(name: string): Object { + return babel.types.identifier(name); +} + +module.exports = { + MODULE_FACTORY_PARAMETERS, + POLYFILL_FACTORY_PARAMETERS, + wrapModule, + wrapPolyfill, +}; diff --git a/packager/src/ModuleGraph/worker/transform-module.js b/packager/src/ModuleGraph/worker/transform-module.js index e15a3993d699..9e8b1010b37f 100644 --- a/packager/src/ModuleGraph/worker/transform-module.js +++ b/packager/src/ModuleGraph/worker/transform-module.js @@ -10,7 +10,8 @@ */ 'use strict'; -const babel = require('babel-core'); +const JsFileWrapping = require('./JsFileWrapping'); + const collectDependencies = require('./collect-dependencies'); const defaults = require('../../../defaults'); const docblock = require('../../node-haste/DependencyGraph/docblock'); @@ -38,8 +39,6 @@ export type TransformOptions = {| |}; const defaultVariants = {default: {}}; -const moduleFactoryParameters = ['global', 'require', 'module', 'exports']; -const polyfillFactoryParameters = ['global']; const ASSET_EXTENSIONS = new Set(defaults.assetExts); @@ -109,7 +108,7 @@ function transformJSON(json, options, callback) { const value = JSON.parse(json); const {filename} = options; const code = - `__d(function(${moduleFactoryParameters.join(', ')}) { module.exports = \n${ + `__d(function(${JsFileWrapping.MODULE_FACTORY_PARAMETERS.join(', ')}) { module.exports = \n${ json }\n});`; @@ -162,42 +161,14 @@ function makeResult(ast, filename, sourceCode, isPolyfill = false) { let dependencies, dependencyMapName, file; if (isPolyfill) { dependencies = []; - file = wrapPolyfill(ast); + file = JsFileWrapping.wrapPolyfill(ast); } else { ({dependencies, dependencyMapName} = collectDependencies(ast)); - file = wrapModule(ast, dependencyMapName); + file = JsFileWrapping.wrapModule(ast, dependencyMapName); } const gen = generate(file, filename, sourceCode); return {code: gen.code, map: gen.map, dependencies, dependencyMapName}; } -function wrapModule(file, dependencyMapName) { - const t = babel.types; - const params = moduleFactoryParameters.concat(dependencyMapName); - const factory = functionFromProgram(file.program, params); - const def = t.callExpression(t.identifier('__d'), [factory]); - return t.file(t.program([t.expressionStatement(def)])); -} - -function wrapPolyfill(file) { - const t = babel.types; - const factory = functionFromProgram(file.program, polyfillFactoryParameters); - const iife = t.callExpression(factory, [t.identifier('this')]); - return t.file(t.program([t.expressionStatement(iife)])); -} - -function functionFromProgram(program, parameters) { - const t = babel.types; - return t.functionExpression( - t.identifier(''), - parameters.map(makeIdentifier), - t.blockStatement(program.body, program.directives), - ); -} - -function makeIdentifier(name) { - return babel.types.identifier(name); -} - module.exports = transformModule; From 7d6fec0a39a125404d31162546039104b004e1c5 Mon Sep 17 00:00:00 2001 From: Jean Lauliac Date: Mon, 8 May 2017 07:44:04 -0700 Subject: [PATCH 0014/1101] packager: optimize assets' JS Reviewed By: davidaurelio Differential Revision: D5010186 fbshipit-source-id: 3c26d8b8792df1dbc24e5200f28f63e017cb0173 --- .../JSTransformer/worker/JsMinification.js | 19 +++++++++++++++++++ packager/src/JSTransformer/worker/minify.js | 7 +++---- packager/src/ModuleGraph/types.flow.js | 1 + 3 files changed, 23 insertions(+), 4 deletions(-) create mode 100644 packager/src/JSTransformer/worker/JsMinification.js diff --git a/packager/src/JSTransformer/worker/JsMinification.js b/packager/src/JSTransformer/worker/JsMinification.js new file mode 100644 index 000000000000..580212ebb72b --- /dev/null +++ b/packager/src/JSTransformer/worker/JsMinification.js @@ -0,0 +1,19 @@ +/** + * Copyright (c) 2016-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * @flow + */ + +'use strict'; + +const UGLIFY_JS_OUTPUT_OPTIONS = { + ascii_only: true, + screw_ie8: true, +}; + +module.exports = {UGLIFY_JS_OUTPUT_OPTIONS}; diff --git a/packager/src/JSTransformer/worker/minify.js b/packager/src/JSTransformer/worker/minify.js index e92513a69c94..deceb4cbe136 100644 --- a/packager/src/JSTransformer/worker/minify.js +++ b/packager/src/JSTransformer/worker/minify.js @@ -13,15 +13,14 @@ const uglify = require('uglify-js'); +const {UGLIFY_JS_OUTPUT_OPTIONS} = require('./JsMinification'); + function minify(filename: string, code: string, sourceMap: ?string) { const minifyResult = uglify.minify(code, { fromString: true, inSourceMap: sourceMap, outSourceMap: true, - output: { - ascii_only: true, - screw_ie8: true, - }, + output: UGLIFY_JS_OUTPUT_OPTIONS, }); minifyResult.map = JSON.parse(minifyResult.map); diff --git a/packager/src/ModuleGraph/types.flow.js b/packager/src/ModuleGraph/types.flow.js index 4070f27c338e..c1c560744509 100644 --- a/packager/src/ModuleGraph/types.flow.js +++ b/packager/src/ModuleGraph/types.flow.js @@ -152,6 +152,7 @@ export type TransformedSourceFile = export type LibraryOptions = {| dependencies?: Array, + optimize: boolean, platform?: string, rebasePath: string => string, |}; From 5f04678ee8fe242cee1c864e6bff66809e378fa7 Mon Sep 17 00:00:00 2001 From: Dan Abramov Date: Mon, 8 May 2017 07:45:30 -0700 Subject: [PATCH 0015/1101] Fix Debugging doc Summary: My changes in https://github.com/facebook/react-native/pull/13707 assumed RN website works the same way as React website, but this assumption was wrong, so I added invalid markup. This fixes it, and also moves the images into the website folder so we don't depend on random CDNs. Closes https://github.com/facebook/react-native/pull/13844 Differential Revision: D5019956 Pulled By: gaearon fbshipit-source-id: bec40d70997231a73d3ef67c82386bc1bb202d7b --- docs/Debugging.md | 8 ++++---- website/src/react-native/img/Inspector.gif | Bin 0 -> 1143767 bytes .../src/react-native/img/ReactDevTools.png | Bin 0 -> 598967 bytes .../img/ReactDevToolsInspector.gif | Bin 0 -> 1952102 bytes 4 files changed, 4 insertions(+), 4 deletions(-) create mode 100644 website/src/react-native/img/Inspector.gif create mode 100644 website/src/react-native/img/ReactDevTools.png create mode 100644 website/src/react-native/img/ReactDevToolsInspector.gif diff --git a/docs/Debugging.md b/docs/Debugging.md index 5b18121ba120..23c0d3b5d7d2 100644 --- a/docs/Debugging.md +++ b/docs/Debugging.md @@ -63,7 +63,7 @@ To debug the JavaScript code in Chrome, select "Debug JS Remotely" from the Deve Select `Tools → Developer Tools` from the Chrome Menu to open the [Developer Tools](https://developer.chrome.com/devtools). You may also access the DevTools using keyboard shortcuts (**`Command`**`⌘` + **`Option`**`⌥` + **`I`** on Mac, **`Ctrl`** + **`Shift`** + **`I`** on Windows). You may also want to enable [Pause On Caught Exceptions](http://stackoverflow.com/questions/2233339/javascript-is-there-a-way-to-get-chrome-to-break-on-all-errors/17324511#17324511) for a better debugging experience. -> Note: the React Developer Tools Chrome extension does not work with React Native, but you can use its standalone version instead. Read the [next section](#react-developer-tools) to learn how. +> Note: the React Developer Tools Chrome extension does not work with React Native, but you can use its standalone version instead. Read [this section](docs/debugging.html#react-developer-tools) to learn how. ### Debugging using a custom JavaScript debugger @@ -87,7 +87,7 @@ Now run `react-devtools` from the terminal to launch the standalone DevTools app react-devtools ``` -React DevTools +![React DevTools](img/ReactDevTools.png) It should connect to your simulator within a few seconds. @@ -97,11 +97,11 @@ It should connect to your simulator within a few seconds. You can open the [in-app developer menu](#accessing-the-in-app-developer-menu) and choose "Show Inspector". It will bring up an overlay that lets you tap on any UI element and see information about it: -Show Inspector +![React Native Inspector](img/Inspector.gif) However, when `react-devtools` is running, Inspector will enter a special collapsed mode, and instead use the DevTools as primary UI. In this mode, clicking on something in the simulator will bring up the relevant components in the DevTools: -Show Inspector with React DevTools +![React DevTools Inspector Integration](img/ReactDevToolsInspector.gif) You can choose "Hide Inspector" in the same menu to exit this mode. diff --git a/website/src/react-native/img/Inspector.gif b/website/src/react-native/img/Inspector.gif new file mode 100644 index 0000000000000000000000000000000000000000..b7589733c82f3f87843188250344caa0178dabff GIT binary patch literal 1143767 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%0DxVQ0 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 z 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 Xra{4v&8}w?KX?HOI0Tdw;MhL^mgmaj literal 0 HcmV?d00001 diff --git a/website/src/react-native/img/ReactDevTools.png b/website/src/react-native/img/ReactDevTools.png new file mode 100644 index 0000000000000000000000000000000000000000..caa3af713b37b53e9d2aced43badb398df9d02b3 GIT binary patch literal 598967 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%0AY=G>@gf}`DZc1pB4hP6|7dM#MB)qilZ9$C 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�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

    dpym@TQ0R56S$B7Kg%! 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%0D7@?v^hWVTJ2|!Zxf4`I>e()DoFXSk( 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 z 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

    LtIdYf_VAza)`|sy|dP^8xKK@nKAEBh^Z|0zR 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%0AT36;=C8zK&F|J2GsG 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 dSNaOnky|pg%5RWh(F# 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�cX3gR@~Wv+y7L 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%0AYK|w44$3q?mfp$I{7#j)wHGb2kW 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�MjYh2XsJ)1AWzx~EvLyQq{P8XLKO!skGOQvt3_ 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 TCZZxPA|tK|A~s@@1Oxy(^PZvs literal 0 HcmV?d00001 From fbe6d9321e436004fb7832ce6fcaa6df865c014d Mon Sep 17 00:00:00 2001 From: Jean Lauliac Date: Mon, 8 May 2017 08:16:40 -0700 Subject: [PATCH 0016/1101] packager: worker-farm: isolate stdout/stderr Reviewed By: davidaurelio Differential Revision: D5011034 fbshipit-source-id: 81d3d49156775f9781427d3c103d768ccc30fe20 --- package.json | 1 + packager/src/Bundler/index.js | 11 +++++++++-- .../__tests__/Transformer-test.js | 4 +++- packager/src/JSTransformer/index.js | 17 +++++++++++++++-- packager/src/lib/TerminalReporter.js | 18 ++++++++++++++++-- packager/src/lib/reporting.js | 6 ++++++ packager/src/worker-farm/lib/farm.js | 7 +++++++ packager/src/worker-farm/lib/fork.js | 3 ++- packager/src/worker-farm/lib/index.js | 15 +++++++++++++-- 9 files changed, 72 insertions(+), 10 deletions(-) diff --git a/package.json b/package.json index 937a212fb637..a90ef3e69fd1 100644 --- a/package.json +++ b/package.json @@ -177,6 +177,7 @@ "json5": "^0.4.0", "left-pad": "^1.1.3", "lodash": "^4.16.6", + "merge-stream": "^1.0.1", "mime": "^1.3.4", "mime-types": "2.1.11", "minimist": "^1.2.0", diff --git a/packager/src/Bundler/index.js b/packager/src/Bundler/index.js index 628ffcbc0602..904ec9c16d80 100644 --- a/packager/src/Bundler/index.js +++ b/packager/src/Bundler/index.js @@ -194,8 +194,15 @@ class Bundler { const maxWorkerCount = Bundler.getMaxWorkerCount(); - /* $FlowFixMe: in practice it's always here. */ - this._transformer = new Transformer(opts.transformModulePath, maxWorkerCount); + this._transformer = new Transformer( + /* $FlowFixMe: in practice it's always here. */ + opts.transformModulePath, + maxWorkerCount, + { + stdoutChunk: chunk => opts.reporter.update({type: 'worker_stdout_chunk', chunk}), + stderrChunk: chunk => opts.reporter.update({type: 'worker_stderr_chunk', chunk}), + } + ); const getTransformCacheKey = (options) => { return transformCacheKey + getCacheKey(options); diff --git a/packager/src/JSTransformer/__tests__/Transformer-test.js b/packager/src/JSTransformer/__tests__/Transformer-test.js index 3b3f2948a09d..fc334f79a6a2 100644 --- a/packager/src/JSTransformer/__tests__/Transformer-test.js +++ b/packager/src/JSTransformer/__tests__/Transformer-test.js @@ -9,6 +9,7 @@ 'use strict'; jest + .unmock('stream') .unmock('imurmurhash') .unmock('../../lib/ModuleTransport') .unmock('../'); @@ -24,6 +25,7 @@ jest.setMock('../../worker-farm', workerFarm); var Transformer = require('../'); const {any} = jasmine; +const {Readable} = require('stream'); describe('Transformer', function() { let workers, Cache; @@ -39,7 +41,7 @@ describe('Transformer', function() { workerFarm.mockImplementation((opts, path, methods) => { const api = workers = {}; methods.forEach(method => {api[method] = jest.fn();}); - return api; + return {methods: api, stdout: new Readable({read() {}}), stderr: new Readable({read() {}})}; }); }); diff --git a/packager/src/JSTransformer/index.js b/packager/src/JSTransformer/index.js index 98a08c82c395..931fcf409b6e 100644 --- a/packager/src/JSTransformer/index.js +++ b/packager/src/JSTransformer/index.js @@ -50,6 +50,11 @@ function makeFarm(worker, methods, timeout, maxConcurrentWorkers) { ); } +type Reporters = { + +stdoutChunk: (chunk: string) => mixed, + +stderrChunk: (chunk: string) => mixed, +}; + class Transformer { _workers: {[name: string]: Function}; @@ -66,16 +71,24 @@ class Transformer { sourceMap: MappingsMap, ) => Promise<{code: string, map: MappingsMap}>; - constructor(transformModulePath: string, maxWorkerCount: number) { + constructor(transformModulePath: string, maxWorkerCount: number, reporters: Reporters) { invariant(path.isAbsolute(transformModulePath), 'transform module path should be absolute'); this._transformModulePath = transformModulePath; - this._workers = makeFarm( + const farm = makeFarm( require.resolve('./worker'), ['minify', 'transformAndExtractDependencies'], TRANSFORM_TIMEOUT_INTERVAL, maxWorkerCount, ); + farm.stdout.on('data', chunk => { + reporters.stdoutChunk(chunk.toString('utf8')); + }); + farm.stderr.on('data', chunk => { + reporters.stderrChunk(chunk.toString('utf8')); + }); + + this._workers = farm.methods; this._transform = denodeify(this._workers.transformAndExtractDependencies); this.minify = denodeify(this._workers.minify); } diff --git a/packager/src/lib/TerminalReporter.js b/packager/src/lib/TerminalReporter.js index 86baf1faecf8..d553444f7ffe 100644 --- a/packager/src/lib/TerminalReporter.js +++ b/packager/src/lib/TerminalReporter.js @@ -135,7 +135,6 @@ class TerminalReporter { } } - _logPackagerInitializing(port: number, projectRoots: Array) { terminal.log( formatBanner( @@ -183,7 +182,6 @@ class TerminalReporter { } } - /** * This function is only concerned with logging and should not do state * or terminal status updates. @@ -214,9 +212,25 @@ class TerminalReporter { case 'transform_cache_reset': reporting.logWarning(terminal, 'the transform cache was reset.'); break; + case 'worker_stdout_chunk': + this._logWorkerChunk('stdout', event.chunk); + break; + case 'worker_stderr_chunk': + this._logWorkerChunk('stderr', event.chunk); + break; } } + _logWorkerChunk(origin: 'stdout' | 'stderr', chunk: string) { + const lines = chunk.split('\n'); + if (lines.length >= 1 && lines[lines.length - 1] === '') { + lines.splice(lines.length - 1, 1); + } + lines.forEach(line => { + terminal.log(`transform[${origin}]: ${line}`); + }); + } + /** * We use Math.pow(ratio, 2) to as a conservative measure of progress because * we know the `totalCount` is going to progressively increase as well. We diff --git a/packager/src/lib/reporting.js b/packager/src/lib/reporting.js index 29994435f580..50c5c60f118f 100644 --- a/packager/src/lib/reporting.js +++ b/packager/src/lib/reporting.js @@ -59,6 +59,12 @@ export type ReportableEvent = { reason: GlobalCacheDisabledReason, } | { type: 'transform_cache_reset', +} | { + type: 'worker_stdout_chunk', + chunk: string, +} | { + type: 'worker_stderr_chunk', + chunk: string, }; /** diff --git a/packager/src/worker-farm/lib/farm.js b/packager/src/worker-farm/lib/farm.js index d9e2527a270d..14c3d12c3a54 100644 --- a/packager/src/worker-farm/lib/farm.js +++ b/packager/src/worker-farm/lib/farm.js @@ -27,10 +27,14 @@ const extend = require('xtend') , ProcessTerminatedError = require('errno').create('ProcessTerminatedError') , MaxConcurrentCallsError = require('errno').create('MaxConcurrentCallsError') +const mergeStream = require('merge-stream'); + function Farm (options: {+execArgv: Array}, path: string) { this.options = extend(DEFAULT_OPTIONS, options) this.path = path this.activeCalls = 0 + this.stdout = mergeStream(); + this.stderr = mergeStream(); } // make a handle to pass back in the form of an external API @@ -118,6 +122,9 @@ Farm.prototype.startChild = function () { , exitCode : null } + this.stdout.add(forked.child.stdout); + this.stderr.add(forked.child.stderr); + forked.child.on('message', this.receive.bind(this)) forked.child.once('exit', function (code) { c.exitCode = code diff --git a/packager/src/worker-farm/lib/fork.js b/packager/src/worker-farm/lib/fork.js index e1b398778cc0..f3ea06c3e39e 100644 --- a/packager/src/worker-farm/lib/fork.js +++ b/packager/src/worker-farm/lib/fork.js @@ -16,9 +16,10 @@ const childModule = require.resolve('./child/index'); function fork(forkModule: string, options: {|+execArgv: Array|}) { const child = childProcess.fork(childModule, { - env: process.env, cwd: process.cwd(), + env: process.env, execArgv: options.execArgv, + silent: true, }); child.send({module: forkModule}); diff --git a/packager/src/worker-farm/lib/index.js b/packager/src/worker-farm/lib/index.js index a5610145a322..8857b6abfa73 100644 --- a/packager/src/worker-farm/lib/index.js +++ b/packager/src/worker-farm/lib/index.js @@ -12,20 +12,31 @@ /* eslint-disable */ const Farm = require('./farm') +import type {Readable} from 'stream'; + var farms = [] // keep record of farms so we can end() them if required +export type FarmAPI = {| + methods: {[name: string]: Function}, + stdout: Readable, + stderr: Readable, +|}; + function farm( options: {+execArgv: Array}, path: string, methods: Array, -): {[name: string]: Function} { +): FarmAPI { var f = new Farm(options, path) , api = f.setup(methods) farms.push({ farm: f, api: api }) + // $FlowFixMe: gotta type the Farm class. + const {stdout, stderr} = f; + // return the public API - return (api: any) + return {methods: (api: any), stdout, stderr}; } function end (api, callback) { From cf975bbd2e46278329c4cb39eab50c5411b68c4b Mon Sep 17 00:00:00 2001 From: Valentin Shergin Date: Mon, 8 May 2017 09:48:33 -0700 Subject: [PATCH 0017/1101] Fixed default placeholder text color for multiline Reviewed By: javache Differential Revision: D5018823 fbshipit-source-id: 6ad4a1e8d03b6429a436e0cfdd9a127cd5dc1c2b --- Libraries/Text/RCTUITextView.m | 1 + 1 file changed, 1 insertion(+) diff --git a/Libraries/Text/RCTUITextView.m b/Libraries/Text/RCTUITextView.m index 8288ea71fc89..2498f69124cc 100644 --- a/Libraries/Text/RCTUITextView.m +++ b/Libraries/Text/RCTUITextView.m @@ -39,6 +39,7 @@ - (instancetype)initWithFrame:(CGRect)frame _placeholderView = [[UILabel alloc] initWithFrame:self.bounds]; _placeholderView.isAccessibilityElement = NO; _placeholderView.numberOfLines = 0; + _placeholderView.textColor = defaultPlaceholderTextColor(); [self addSubview:_placeholderView]; } From 8e6bde30eb21ed6715415ed183124e4e4fbaa7c8 Mon Sep 17 00:00:00 2001 From: Eric Vicenti Date: Mon, 8 May 2017 10:00:35 -0700 Subject: [PATCH 0018/1101] Rename UIExplorer in docs Reviewed By: ericnakagawa Differential Revision: D5020136 fbshipit-source-id: 2aa35612c35dd4b78760215d91b6d06005033238 --- ...8-19-right-to-left-support-for-react-native-apps.md | 8 ++++---- docs/Animations.md | 10 +++++----- docs/BuildingForAppleTV.md | 2 +- docs/CommunicationIOS.md | 2 +- docs/Testing.md | 8 ++++---- 5 files changed, 15 insertions(+), 15 deletions(-) diff --git a/blog/2016-08-19-right-to-left-support-for-react-native-apps.md b/blog/2016-08-19-right-to-left-support-for-react-native-apps.md index 09a5fdb78c5b..8177a340f69d 100644 --- a/blog/2016-08-19-right-to-left-support-for-react-native-apps.md +++ b/blog/2016-08-19-right-to-left-support-for-react-native-apps.md @@ -162,14 +162,14 @@ _animateBounceBack(duration: number): void { ## Maintaining Your RTL-ready App -Even after the initial RTL-compatible app release, you will likely need to iterate on new features. To improve development efficiency, [`I18nManager`](https://github.com/facebook/react-native/blob/f0fb228ec76ed49e6ed6d786d888e8113b8959a2/Libraries/Utilities/I18nManager.js) provides the `forceRTL()` function for faster RTL testing without changing the test device language. You might want to provide a simple switch for this in your app. Here's an example from the RTL example in the UIExplorer: +Even after the initial RTL-compatible app release, you will likely need to iterate on new features. To improve development efficiency, [`I18nManager`](https://github.com/facebook/react-native/blob/f0fb228ec76ed49e6ed6d786d888e8113b8959a2/Libraries/Utilities/I18nManager.js) provides the `forceRTL()` function for faster RTL testing without changing the test device language. You might want to provide a simple switch for this in your app. Here's an example from the RTL example in the RNTester:

      ```js - + forceRTL @@ -181,7 +181,7 @@ Even after the initial RTL-compatible app release, you will likely need to itera value={this.state.isRTL} /> - + _onDirectionChange = () => { I18nManager.forceRTL(!this.state.isRTL); @@ -215,6 +215,6 @@ The RTL support should cover most of the UX in your app; however, there are some In the future, it would be ideal to find a way to make gestures and animations RTL support more developer friendly. ## Try it Out! -Check out the [`RTLExample`](https://github.com/facebook/react-native/blob/master/Examples/UIExplorer/js/RTLExample.js) in the `UIExplorer` to understand more about RTL support, and let us know how it works for you! +Check out the [`RTLExample`](https://github.com/facebook/react-native/blob/master/RNTester/js/RTLExample.js) in the `RNTester` to understand more about RTL support, and let us know how it works for you! Finally, thank you for reading! We hope that the RTL support for React Native helps you grow your apps for international audience! diff --git a/docs/Animations.md b/docs/Animations.md index dfcf64ccecc9..faaea60ea6c7 100644 --- a/docs/Animations.md +++ b/docs/Animations.md @@ -348,9 +348,9 @@ the animation will always run a frame behind the gesture due to the async nature ``` -You can see the native driver in action by running the [UIExplorer sample app](https://github.com/facebook/react-native/blob/master/Examples/UIExplorer/), +You can see the native driver in action by running the [RNTester app](https://github.com/facebook/react-native/blob/master/RNTester/), then loading the Native Animated Example. -You can also take a look at the [source code](https://github.com/facebook/react-native/blob/master/Examples/UIExplorer/js/NativeAnimationsExample.js) to learn how these examples were produced. +You can also take a look at the [source code](https://github.com/facebook/react-native/blob/master/RNTester/js/NativeAnimationsExample.js) to learn how these examples were produced. #### Caveats @@ -362,10 +362,10 @@ This means it does not work with `PanResponder` but does work with things like ` ### Additional examples -The UIExplorer sample app has various examples of `Animated` in use: +The RNTester app has various examples of `Animated` in use: -- [AnimatedGratuitousApp](https://github.com/facebook/react-native/tree/master/Examples/UIExplorer/js/AnimatedGratuitousApp) -- [NativeAnimationsExample](https://github.com/facebook/react-native/blob/master/Examples/UIExplorer/js/NativeAnimationsExample.js) +- [AnimatedGratuitousApp](https://github.com/facebook/react-native/tree/master/Examples/RNTester/js/AnimatedGratuitousApp) +- [NativeAnimationsExample](https://github.com/facebook/react-native/blob/master/Examples/RNTester/js/NativeAnimationsExample.js) ## `LayoutAnimation` API diff --git a/docs/BuildingForAppleTV.md b/docs/BuildingForAppleTV.md index fd7887d7c61e..a735a1a718f8 100644 --- a/docs/BuildingForAppleTV.md +++ b/docs/BuildingForAppleTV.md @@ -11,7 +11,7 @@ previous: communication-ios Apple TV support has been implemented with the intention of making existing React Native iOS applications "just work" on tvOS, with few or no changes needed in the JavaScript code for the applications. -The UIExplorer example project supports Apple TV; use the `UIExplorer-tvOS` build target to build for tvOS. +The RNTester app supports Apple TV; use the `RNTester-tvOS` build target to build for tvOS. ## Build changes diff --git a/docs/CommunicationIOS.md b/docs/CommunicationIOS.md index 54aea93c97db..a11522cd886c 100644 --- a/docs/CommunicationIOS.md +++ b/docs/CommunicationIOS.md @@ -212,7 +212,7 @@ Let's look at an example. In the example we have a `FlexibleSizeExampleView` view that holds a root view. We create the root view, initialize it and set the delegate. The delegate will handle size updates. Then, we set the root view's size flexibility to `RCTRootViewSizeFlexibilityHeight`, which means that `rootViewDidChangeIntrinsicSize:` method will be called every time the React Native content changes its height. Finally, we set the root view's width and position. Note that we set there height as well, but it has no effect as we made the height RN-dependent. -You can checkout full source code of the example [here](https://github.com/facebook/react-native/blob/master/Examples/UIExplorer/UIExplorer/NativeExampleViews/FlexibleSizeExampleView.m). +You can checkout full source code of the exmaple [here](https://github.com/facebook/react-native/blob/master/RNTester/RNTester/NativeExampleViews/FlexibleSizeExampleView.m). It's fine to change root view's size flexibility mode dynamically. Changing flexibility mode of a root view will schedule a layout recalculation and the delegate `rootViewDidChangeIntrinsicSize:` method will be called once the content size is known. diff --git a/docs/Testing.md b/docs/Testing.md index 41b8494875fb..d9a6c3cbca29 100644 --- a/docs/Testing.md +++ b/docs/Testing.md @@ -91,10 +91,10 @@ The tests themselves are written in JS, and must call `TestModule.markTestComple See the following for example usage and integration points: - [`IntegrationTestHarnessTest.js`](https://github.com/facebook/react-native/blob/master/IntegrationTests/IntegrationTestHarnessTest.js) -- [`UIExplorerIntegrationTests.m`](https://github.com/facebook/react-native/blob/master/Examples/UIExplorer/UIExplorerIntegrationTests/UIExplorerIntegrationTests.m) +- [`RNTesterIntegrationTests.m`](https://github.com/facebook/react-native/blob/master/RNTester/RNTesterIntegrationTests/RNTesterIntegrationTests.m) - [`IntegrationTestsApp.js`](https://github.com/facebook/react-native/blob/master/IntegrationTests/IntegrationTestsApp.js) -You can run integration tests locally with cmd+U in the IntegrationTest and UIExplorer apps in Xcode, or by running the following in the command line on macOS: +You can run integration tests locally with cmd+U in the IntegrationTest and RNTester apps in Xcode, or by running the following in the command line on macOS: $ cd react-native $ ./scripts/objc-test-ios.sh @@ -105,11 +105,11 @@ You can run integration tests locally with cmd+U in the IntegrationTest and UIEx A common type of integration test is the snapshot test. These tests render a component, and verify snapshots of the screen against reference images using `TestModule.verifySnapshot()`, using the [`FBSnapshotTestCase`](https://github.com/facebook/ios-snapshot-test-case) library behind the scenes. Reference images are recorded by setting `recordMode = YES` on the `RCTTestRunner`, then running the tests. Snapshots will differ slightly between 32 and 64 bit, and various OS versions, so it's recommended that you enforce tests are run with the correct configuration. It's also highly recommended that all network data be mocked out, along with other potentially troublesome dependencies. See [`SimpleSnapshotTest`](https://github.com/facebook/react-native/blob/master/IntegrationTests/SimpleSnapshotTest.js) for a basic example. -If you make a change that affects a snapshot test in a PR, such as adding a new example case to one of the examples that is snapshotted, you'll need to re-record the snapshot reference image. To do this, simply change to `_runner.recordMode = YES;` in [UIExplorer/UIExplorerSnapshotTests.m](https://github.com/facebook/react-native/blob/master/Examples/UIExplorer/UIExplorerIntegrationTests/UIExplorerSnapshotTests.m#L42), re-run the failing tests, then flip record back to `NO` and submit/update your PR and wait to see if the Travis build passes. +If you make a change that affects a snapshot test in a PR, such as adding a new example case to one of the examples that is snapshotted, you'll need to re-record the snapshot reference image. To do this, simply change to `_runner.recordMode = YES;` in [RNTester/RNTesterSnapshotTests.m](https://github.com/facebook/react-native/blob/master/RNTester/RNTesterIntegrationTests/RNTesterSnapshotTests.m#L42), re-run the failing tests, then flip record back to `NO` and submit/update your PR and wait to see if the Travis build passes. ## Apple TV -The same tests discussed above for iOS will also run on tvOS. In the UIExplorer Xcode project, select the UIExplorer-tvOS target, and you can follow the same steps above to run the tests in Xcode. +The same tests discussed above for iOS will also run on tvOS. In the RNTester Xcode project, select the RNTester-tvOS target, and you can follow the same steps above to run the tests in Xcode. You can run Apple TV unit and integration tests locally by running the following in the command line on macOS: From bd004568d3e006b61391417fc405e9483996dc81 Mon Sep 17 00:00:00 2001 From: Jiajie Zhu Date: Mon, 8 May 2017 10:52:31 -0700 Subject: [PATCH 0019/1101] fix warnings in create view Reviewed By: fred2028 Differential Revision: D5016368 fbshipit-source-id: 60fae5769f66bf94de6fa2fe75a509862270c401 --- Libraries/Components/Touchable/TouchableHighlight.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Libraries/Components/Touchable/TouchableHighlight.js b/Libraries/Components/Touchable/TouchableHighlight.js index 8bd873189659..899ad3604a4b 100644 --- a/Libraries/Components/Touchable/TouchableHighlight.js +++ b/Libraries/Components/Touchable/TouchableHighlight.js @@ -15,8 +15,8 @@ var ColorPropType = require('ColorPropType'); var NativeMethodsMixin = require('NativeMethodsMixin'); -var React = require('React'); const PropTypes = require('prop-types'); +var React = require('React'); var ReactNativeViewAttributes = require('ReactNativeViewAttributes'); var StyleSheet = require('StyleSheet'); var TimerMixin = require('react-timer-mixin'); @@ -137,16 +137,22 @@ var TouchableHighlight = React.createClass({ }, getInitialState: function() { + this._isMounted = false; return merge( this.touchableGetInitialState(), this._computeSyntheticState(this.props) ); }, componentDidMount: function() { + this._isMounted = true; ensurePositiveDelayProps(this.props); ensureComponentIsNative(this.refs[CHILD_REF]); }, + componentWillMount: function() { + this._isMounted = false; + }, + componentDidUpdate: function() { ensureComponentIsNative(this.refs[CHILD_REF]); }, @@ -216,7 +222,7 @@ var TouchableHighlight = React.createClass({ }, _showUnderlay: function() { - if (!this.isMounted() || !this._hasPressHandler()) { + if (!this._isMounted || !this._hasPressHandler()) { return; } From 2a984326b0f70d4f4f5577888a962a642ad5dab6 Mon Sep 17 00:00:00 2001 From: Valentin Shergin Date: Mon, 8 May 2017 12:40:06 -0700 Subject: [PATCH 0020/1101] Introducing `RCTAssertUIManagerQueue()` Reviewed By: javache Differential Revision: D4868564 fbshipit-source-id: b9b9f6cf8f31495bb0e82fb60b2402dde460ddb8 --- React/Base/RCTAssert.h | 4 ++-- React/Modules/RCTUIManager.h | 11 +++++++++++ React/Modules/RCTUIManager.m | 10 ++++++++++ 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/React/Base/RCTAssert.h b/React/Base/RCTAssert.h index c3c0008f25e2..0cd76b241e0d 100644 --- a/React/Base/RCTAssert.h +++ b/React/Base/RCTAssert.h @@ -85,13 +85,13 @@ typedef void (^RCTFatalHandler)(NSError *error); * Convenience macro for asserting that we're running on main queue. */ #define RCTAssertMainQueue() RCTAssert(RCTIsMainQueue(), \ - @"This function must be called on the main thread") + @"This function must be called on the main queue") /** * Convenience macro for asserting that we're running off the main queue. */ #define RCTAssertNotMainQueue() RCTAssert(!RCTIsMainQueue(), \ -@"This function must not be called on the main thread") +@"This function must not be called on the main queue") /** * Deprecated, do not use diff --git a/React/Modules/RCTUIManager.h b/React/Modules/RCTUIManager.h index e65f889b8a1b..2079082ba1a4 100644 --- a/React/Modules/RCTUIManager.h +++ b/React/Modules/RCTUIManager.h @@ -25,6 +25,17 @@ RCT_EXTERN dispatch_queue_t RCTGetUIManagerQueue(void); */ RCT_EXTERN char *const RCTUIManagerQueueName; +/** + * Check if we are currently on UIManager queue. + */ +RCT_EXTERN BOOL RCTIsUIManagerQueue(void); + +/** + * Convenience macro for asserting that we're running on UIManager queue. + */ +#define RCTAssertUIManagerQueue() RCTAssert(RCTIsUIManagerQueue(), \ +@"This function must be called on the UIManager queue") + /** * Posted right before re-render happens. This is a chance for views to invalidate their state so * next render cycle will pick up updated views and layout appropriately. diff --git a/React/Modules/RCTUIManager.m b/React/Modules/RCTUIManager.m index 38d09302262f..56e54e4743f2 100644 --- a/React/Modules/RCTUIManager.m +++ b/React/Modules/RCTUIManager.m @@ -345,6 +345,16 @@ dispatch_queue_t RCTGetUIManagerQueue(void) return shadowQueue; } +BOOL RCTIsUIManagerQueue() +{ + static void *queueKey = &queueKey; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + dispatch_queue_set_specific(RCTGetUIManagerQueue(), queueKey, queueKey, NULL); + }); + return dispatch_get_specific(queueKey) == queueKey; +} + - (dispatch_queue_t)methodQueue { return RCTGetUIManagerQueue(); From 712b1dd20ab0de73594696103b73c461c2c97076 Mon Sep 17 00:00:00 2001 From: Valentin Shergin Date: Mon, 8 May 2017 12:40:07 -0700 Subject: [PATCH 0021/1101] RCTUIManagerObserverCoordinator: new way to subscribe for granular notifications from UI Manager Reviewed By: majak Differential Revision: D4868591 fbshipit-source-id: 24a09ffa3e69dec5ce1f0a8715c7e4701d781996 --- .../NativeAnimation/RCTNativeAnimatedModule.h | 1 + .../NativeAnimation/RCTNativeAnimatedModule.m | 6 +- React/Modules/RCTUIManager.h | 36 ++-------- React/Modules/RCTUIManager.m | 31 ++++---- .../Modules/RCTUIManagerObserverCoordinator.h | 67 ++++++++++++++++++ .../Modules/RCTUIManagerObserverCoordinator.m | 70 +++++++++++++++++++ React/React.xcodeproj/project.pbxproj | 28 ++++++-- 7 files changed, 183 insertions(+), 56 deletions(-) create mode 100644 React/Modules/RCTUIManagerObserverCoordinator.h create mode 100644 React/Modules/RCTUIManagerObserverCoordinator.m diff --git a/Libraries/NativeAnimation/RCTNativeAnimatedModule.h b/Libraries/NativeAnimation/RCTNativeAnimatedModule.h index c6579438f5a5..a6c4b0b2f82a 100644 --- a/Libraries/NativeAnimation/RCTNativeAnimatedModule.h +++ b/Libraries/NativeAnimation/RCTNativeAnimatedModule.h @@ -11,6 +11,7 @@ #import #import #import +#import #import "RCTValueAnimatedNode.h" diff --git a/Libraries/NativeAnimation/RCTNativeAnimatedModule.m b/Libraries/NativeAnimation/RCTNativeAnimatedModule.m index 67a0e844b5e3..34a7a7031e17 100644 --- a/Libraries/NativeAnimation/RCTNativeAnimatedModule.m +++ b/Libraries/NativeAnimation/RCTNativeAnimatedModule.m @@ -28,7 +28,7 @@ - (void)invalidate { [_nodesManager stopAnimationLoop]; [self.bridge.eventDispatcher removeDispatchObserver:self]; - [self.bridge.uiManager removeUIManagerObserver:self]; + [self.bridge.uiManager.observerCoordinator removeObserver:self]; } - (dispatch_queue_t)methodQueue @@ -48,7 +48,7 @@ - (void)setBridge:(RCTBridge *)bridge _preOperations = [NSMutableArray new]; [bridge.eventDispatcher addDispatchObserver:self]; - [bridge.uiManager addUIManagerObserver:self]; + [bridge.uiManager.observerCoordinator addObserver:self]; } #pragma mark -- API @@ -196,6 +196,8 @@ - (void)addPreOperationBlock:(AnimatedOperation)operation [_preOperations addObject:operation]; } +#pragma mark - RCTUIManagerObserver + - (void)uiManagerWillFlushUIBlocks:(RCTUIManager *)uiManager { if (_preOperations.count == 0 && _operations.count == 0) { diff --git a/React/Modules/RCTUIManager.h b/React/Modules/RCTUIManager.h index 2079082ba1a4..ae59a2da57a4 100644 --- a/React/Modules/RCTUIManager.h +++ b/React/Modules/RCTUIManager.h @@ -59,24 +59,7 @@ RCT_EXTERN NSString *const RCTUIManagerDidRemoveRootViewNotification; */ RCT_EXTERN NSString *const RCTUIManagerRootViewKey; -@class RCTUIManager; - -/** - * Allows to hook into UIManager internals. This can be used to execute code at - * specific points during the view updating process. - */ -@protocol RCTUIManagerObserver - -/** - * Called before flushing UI blocks at the end of a batch. Note that this won't - * get called for partial batches when using `unsafeFlushUIChangesBeforeBatchEnds`. - * This is called from the UIManager queue. Can be used to add UI operations in that batch. - */ -- (void)uiManagerWillFlushUIBlocks:(RCTUIManager *)manager; - -@end - -@protocol RCTScrollableProtocol; +@class RCTUIManagerObserverCoordinator; /** * The RCTUIManager is the module responsible for updating the view hierarchy. @@ -139,17 +122,6 @@ RCT_EXTERN NSString *const RCTUIManagerRootViewKey; */ - (void)prependUIBlock:(RCTViewManagerUIBlock)block; -/** - * Add a UIManagerObserver. See the RCTUIManagerObserver protocol for more info. This - * method can be called safely from any queue. - */ -- (void)addUIManagerObserver:(id)observer; - -/** - * Remove a UIManagerObserver. This method can be called safely from any queue. - */ -- (void)removeUIManagerObserver:(id)observer; - /** * Used by native animated module to bypass the process of updating the values through the shadow * view hierarchy. This method will directly update native views, which means that updates for @@ -192,6 +164,12 @@ RCT_EXTERN NSString *const RCTUIManagerRootViewKey; */ - (void)setNeedsLayout; +/** + * Dedicated object for subscribing for UIManager events. + * See `RCTUIManagerObserver` protocol for more details. + */ +@property (atomic, retain, readonly) RCTUIManagerObserverCoordinator *observerCoordinator; + @end @interface RCTUIManager (Deprecated) diff --git a/React/Modules/RCTUIManager.m b/React/Modules/RCTUIManager.m index 56e54e4743f2..2147b4eafde9 100644 --- a/React/Modules/RCTUIManager.m +++ b/React/Modules/RCTUIManager.m @@ -33,6 +33,7 @@ #import "RCTScrollableProtocol.h" #import "RCTShadowView.h" #import "RCTUtils.h" +#import "RCTUIManagerObserverCoordinator.h" #import "RCTView.h" #import "RCTViewManager.h" #import "UIView+React.h" @@ -225,7 +226,6 @@ @implementation RCTUIManager NSDictionary *_componentDataByName; NSMutableSet> *_bridgeTransactionListeners; - NSMutableSet> *_uiManagerObservers; } @synthesize bridge = _bridge; @@ -306,7 +306,7 @@ - (void)setBridge:(RCTBridge *)bridge _rootViewTags = [NSMutableSet new]; _bridgeTransactionListeners = [NSMutableSet new]; - _uiManagerObservers = [NSMutableSet new]; + _observerCoordinator = [RCTUIManagerObserverCoordinator new]; _viewsToBeDeleted = [NSMutableSet new]; @@ -723,20 +723,6 @@ - (void)_amendPendingUIBlocksWithStylePropagationUpdateForShadowView:(RCTShadowV } } -- (void)addUIManagerObserver:(id)observer -{ - dispatch_async(RCTGetUIManagerQueue(), ^{ - [self->_uiManagerObservers addObject:observer]; - }); -} - -- (void)removeUIManagerObserver:(id)observer -{ - dispatch_async(RCTGetUIManagerQueue(), ^{ - [self->_uiManagerObservers removeObject:observer]; - }); -} - /** * A method to be called from JS, which takes a container ID and then releases * all subviews for that container upon receipt. @@ -1159,10 +1145,19 @@ - (void)_layoutAndMount [self addUIBlock:uiBlock]; } + [_observerCoordinator uiManagerWillPerformLayout:self]; + // Perform layout for (NSNumber *reactTag in _rootViewTags) { RCTRootShadowView *rootView = (RCTRootShadowView *)_shadowViewRegistry[reactTag]; [self addUIBlock:[self uiBlockWithLayoutUpdateForRootView:rootView]]; + } + + [_observerCoordinator uiManagerDidPerformLayout:self]; + + // Properies propagation + for (NSNumber *reactTag in _rootViewTags) { + RCTRootShadowView *rootView = (RCTRootShadowView *)_shadowViewRegistry[reactTag]; [self _amendPendingUIBlocksWithStylePropagationUpdateForShadowView:rootView]; } @@ -1175,9 +1170,7 @@ - (void)_layoutAndMount } }]; - for (id observer in _uiManagerObservers) { - [observer uiManagerWillFlushUIBlocks:self]; - } + [_observerCoordinator uiManagerWillFlushUIBlocks:self]; [self flushUIBlocks]; } diff --git a/React/Modules/RCTUIManagerObserverCoordinator.h b/React/Modules/RCTUIManagerObserverCoordinator.h new file mode 100644 index 000000000000..c39cea2eccbc --- /dev/null +++ b/React/Modules/RCTUIManagerObserverCoordinator.h @@ -0,0 +1,67 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +/** + * Allows to hook into UIManager internals. This can be used to execute code at + * specific points during the view updating process. + * All observer handler is called on UIManager queue. + */ +@protocol RCTUIManagerObserver + +@optional + +/** + * Called just before the UIManager layout views. + * It allows performing some operation for components which contain custom + * layout logic right before regular Yoga based layout. So, for instance, + * some components which have own React-independent state can compute and cache + * own intrinsic content size (which will be used by Yoga) at this point. + */ +- (void)uiManagerWillPerformLayout:(RCTUIManager *)manager; + +/** + * Called just after the UIManager layout views. + * It allows performing custom layout logic right after regular Yoga based layout. + * So, for instance, this can be used for computing final layout for a component, + * since it has its final frame set by Yoga at this point. + */ +- (void)uiManagerDidPerformLayout:(RCTUIManager *)manager; + +/** + * Called before flushing UI blocks at the end of a batch. Note that this won't + * get called for partial batches when using `unsafeFlushUIChangesBeforeBatchEnds`. + * This is called from the UIManager queue. Can be used to add UI operations in that batch. + */ +- (void)uiManagerWillFlushUIBlocks:(RCTUIManager *)manager; + +@end + +/** + * Simple helper which take care of RCTUIManager's observers. + */ +@interface RCTUIManagerObserverCoordinator : NSObject + +/** + * Add a UIManagerObserver. See the `RCTUIManagerObserver` protocol for more info. + * References to observers are held weakly. + * This method can be called safely from any queue. + */ +- (void)addObserver:(id)observer; + +/** + * Remove a `UIManagerObserver`. + * This method can be called safely from any queue. + */ +- (void)removeObserver:(id)observer; + +@end diff --git a/React/Modules/RCTUIManagerObserverCoordinator.m b/React/Modules/RCTUIManagerObserverCoordinator.m new file mode 100644 index 000000000000..f16acaa4ec57 --- /dev/null +++ b/React/Modules/RCTUIManagerObserverCoordinator.m @@ -0,0 +1,70 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "RCTUIManagerObserverCoordinator.h" + +#import "RCTUIManager.h" + +@implementation RCTUIManagerObserverCoordinator { + NSHashTable> *_observers; +} + +- (instancetype)init +{ + if (self = [super init]) { + _observers = [[NSHashTable alloc] initWithOptions:NSHashTableWeakMemory capacity:0]; + } + + return self; +} + +- (void)addObserver:(id)observer +{ + dispatch_async(RCTGetUIManagerQueue(), ^{ + [self->_observers addObject:observer]; + }); +} + +- (void)removeObserver:(id)observer +{ + dispatch_async(RCTGetUIManagerQueue(), ^{ + [self->_observers removeObject:observer]; + }); +} + +#pragma mark - RCTUIManagerObserver + +- (void)uiManagerWillPerformLayout:(RCTUIManager *)manager +{ + for (id observer in _observers) { + if ([observer respondsToSelector:@selector(uiManagerWillPerformLayout:)]) { + [observer uiManagerWillPerformLayout:manager]; + } + } +} + +- (void)uiManagerDidPerformLayout:(RCTUIManager *)manager +{ + for (id observer in _observers) { + if ([observer respondsToSelector:@selector(uiManagerDidPerformLayout:)]) { + [observer uiManagerDidPerformLayout:manager]; + } + } +} + +- (void)uiManagerWillFlushUIBlocks:(RCTUIManager *)manager +{ + for (id observer in _observers) { + if ([observer respondsToSelector:@selector(uiManagerWillFlushUIBlocks:)]) { + [observer uiManagerWillFlushUIBlocks:manager]; + } + } +} + +@end diff --git a/React/React.xcodeproj/project.pbxproj b/React/React.xcodeproj/project.pbxproj index 155605541323..29ddbfc9c8a9 100644 --- a/React/React.xcodeproj/project.pbxproj +++ b/React/React.xcodeproj/project.pbxproj @@ -951,6 +951,12 @@ 59A7B9FE1E577DBF0068EDBF /* RCTRootContentView.m in Sources */ = {isa = PBXBuildFile; fileRef = 59A7B9FC1E577DBF0068EDBF /* RCTRootContentView.m */; }; 59B1EBC91EBD46250047B19B /* RCTShadowView+Layout.h in Copy Headers */ = {isa = PBXBuildFile; fileRef = 590D7BFB1EBD458B00D8A370 /* RCTShadowView+Layout.h */; }; 59B1EBCA1EBD47520047B19B /* RCTShadowView+Layout.h in Copy Headers */ = {isa = PBXBuildFile; fileRef = 590D7BFB1EBD458B00D8A370 /* RCTShadowView+Layout.h */; }; + 59EB6DBB1EBD6FC90072A5E7 /* RCTUIManagerObserverCoordinator.h in Headers */ = {isa = PBXBuildFile; fileRef = 59EB6DB91EBD6FC90072A5E7 /* RCTUIManagerObserverCoordinator.h */; }; + 59EB6DBC1EBD6FC90072A5E7 /* RCTUIManagerObserverCoordinator.h in Headers */ = {isa = PBXBuildFile; fileRef = 59EB6DB91EBD6FC90072A5E7 /* RCTUIManagerObserverCoordinator.h */; }; + 59EB6DBD1EBD6FC90072A5E7 /* RCTUIManagerObserverCoordinator.m in Sources */ = {isa = PBXBuildFile; fileRef = 59EB6DBA1EBD6FC90072A5E7 /* RCTUIManagerObserverCoordinator.m */; }; + 59EB6DBE1EBD6FC90072A5E7 /* RCTUIManagerObserverCoordinator.m in Sources */ = {isa = PBXBuildFile; fileRef = 59EB6DBA1EBD6FC90072A5E7 /* RCTUIManagerObserverCoordinator.m */; }; + 59EB6DBF1EBD6FFC0072A5E7 /* RCTUIManagerObserverCoordinator.h in Copy Headers */ = {isa = PBXBuildFile; fileRef = 59EB6DB91EBD6FC90072A5E7 /* RCTUIManagerObserverCoordinator.h */; }; + 59EB6DC01EBD70130072A5E7 /* RCTUIManagerObserverCoordinator.h in Copy Headers */ = {isa = PBXBuildFile; fileRef = 59EB6DB91EBD6FC90072A5E7 /* RCTUIManagerObserverCoordinator.h */; }; 59FBEFB01E46D91C0095D885 /* RCTScrollContentShadowView.h in Headers */ = {isa = PBXBuildFile; fileRef = 59FBEFAC1E46D91C0095D885 /* RCTScrollContentShadowView.h */; }; 59FBEFB11E46D91C0095D885 /* RCTScrollContentShadowView.h in Headers */ = {isa = PBXBuildFile; fileRef = 59FBEFAC1E46D91C0095D885 /* RCTScrollContentShadowView.h */; }; 59FBEFB21E46D91C0095D885 /* RCTScrollContentShadowView.m in Sources */ = {isa = PBXBuildFile; fileRef = 59FBEFAD1E46D91C0095D885 /* RCTScrollContentShadowView.m */; }; @@ -1078,6 +1084,7 @@ dstPath = include/React; dstSubfolderSpec = 16; files = ( + 59EB6DC01EBD70130072A5E7 /* RCTUIManagerObserverCoordinator.h in Copy Headers */, 59B1EBCA1EBD47520047B19B /* RCTShadowView+Layout.h in Copy Headers */, 3D7BFD351EA8E43F008DFB7A /* RCTDevSettings.h in Copy Headers */, 3D7BFD331EA8E433008DFB7A /* RCTPackagerClient.h in Copy Headers */, @@ -1271,6 +1278,7 @@ dstPath = include/React; dstSubfolderSpec = 16; files = ( + 59EB6DBF1EBD6FFC0072A5E7 /* RCTUIManagerObserverCoordinator.h in Copy Headers */, 59B1EBC91EBD46250047B19B /* RCTShadowView+Layout.h in Copy Headers */, 3D7BFD311EA8E41F008DFB7A /* RCTPackagerClient.h in Copy Headers */, 3D7BFD291EA8E37B008DFB7A /* RCTDevSettings.h in Copy Headers */, @@ -1799,6 +1807,8 @@ 590D7BFC1EBD458B00D8A370 /* RCTShadowView+Layout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "RCTShadowView+Layout.m"; sourceTree = ""; }; 59A7B9FB1E577DBF0068EDBF /* RCTRootContentView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTRootContentView.h; sourceTree = ""; }; 59A7B9FC1E577DBF0068EDBF /* RCTRootContentView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTRootContentView.m; sourceTree = ""; }; + 59EB6DB91EBD6FC90072A5E7 /* RCTUIManagerObserverCoordinator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTUIManagerObserverCoordinator.h; sourceTree = ""; }; + 59EB6DBA1EBD6FC90072A5E7 /* RCTUIManagerObserverCoordinator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTUIManagerObserverCoordinator.m; sourceTree = ""; }; 59FBEFAC1E46D91C0095D885 /* RCTScrollContentShadowView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTScrollContentShadowView.h; sourceTree = ""; }; 59FBEFAD1E46D91C0095D885 /* RCTScrollContentShadowView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTScrollContentShadowView.m; sourceTree = ""; }; 59FBEFAE1E46D91C0095D885 /* RCTScrollContentViewManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTScrollContentViewManager.h; sourceTree = ""; }; @@ -2042,12 +2052,6 @@ 13B07FE01A69315300A75B9A /* Modules */ = { isa = PBXGroup; children = ( - CF2731BE1E7B8DE40044CA4F /* RCTDeviceInfo.h */, - CF2731BF1E7B8DE40044CA4F /* RCTDeviceInfo.m */, - 130E3D861E6A082100ACE484 /* RCTDevSettings.h */, - 130E3D871E6A082100ACE484 /* RCTDevSettings.mm */, - 369123DF1DDC75850095B341 /* RCTJSCSamplingProfiler.h */, - 369123E01DDC75850095B341 /* RCTJSCSamplingProfiler.m */, E9B20B791B500126007A2DA7 /* RCTAccessibilityManager.h */, E9B20B7A1B500126007A2DA7 /* RCTAccessibilityManager.m */, 13B07FE71A69327A00A75B9A /* RCTAlertManager.h */, @@ -2058,6 +2062,10 @@ 58114A4E1AAE93D500E7D092 /* RCTAsyncLocalStorage.m */, 13D033611C1837FE0021DC29 /* RCTClipboard.h */, 13D033621C1837FE0021DC29 /* RCTClipboard.m */, + CF2731BE1E7B8DE40044CA4F /* RCTDeviceInfo.h */, + CF2731BF1E7B8DE40044CA4F /* RCTDeviceInfo.m */, + 130E3D861E6A082100ACE484 /* RCTDevSettings.h */, + 130E3D871E6A082100ACE484 /* RCTDevSettings.mm */, 13D9FEE91CDCCECF00158BD7 /* RCTEventEmitter.h */, 13D9FEEA1CDCCECF00158BD7 /* RCTEventEmitter.m */, 13B07FE91A69327A00A75B9A /* RCTExceptionsManager.h */, @@ -2066,6 +2074,8 @@ B233E6E91D2D845D00BC68BA /* RCTI18nManager.m */, 352DCFEE1D19F4C20056D623 /* RCTI18nUtil.h */, 352DCFEF1D19F4C20056D623 /* RCTI18nUtil.m */, + 369123DF1DDC75850095B341 /* RCTJSCSamplingProfiler.h */, + 369123E01DDC75850095B341 /* RCTJSCSamplingProfiler.m */, 13D9FEEC1CDCD93000158BD7 /* RCTKeyboardObserver.h */, 13D9FEED1CDCD93000158BD7 /* RCTKeyboardObserver.m */, 13F17A831B8493E5007D4C75 /* RCTRedBox.h */, @@ -2078,6 +2088,8 @@ 13B07FEE1A69327A00A75B9A /* RCTTiming.m */, 13E067481A70F434002CDEE1 /* RCTUIManager.h */, 13E067491A70F434002CDEE1 /* RCTUIManager.m */, + 59EB6DB91EBD6FC90072A5E7 /* RCTUIManagerObserverCoordinator.h */, + 59EB6DBA1EBD6FC90072A5E7 /* RCTUIManagerObserverCoordinator.m */, ); path = Modules; sourceTree = ""; @@ -2627,6 +2639,7 @@ 3D302F811DF828F800D6DDAE /* RCTNavItemManager.h in Headers */, 135A9C061E7B0F7800587AEB /* RCTJSCHelpers.h in Headers */, 3D302F841DF828F800D6DDAE /* RCTPointerEvents.h in Headers */, + 59EB6DBC1EBD6FC90072A5E7 /* RCTUIManagerObserverCoordinator.h in Headers */, 3D302F851DF828F800D6DDAE /* RCTProgressViewManager.h in Headers */, 3D302F861DF828F800D6DDAE /* RCTRefreshControl.h in Headers */, 3D302F871DF828F800D6DDAE /* RCTRefreshControlManager.h in Headers */, @@ -2834,6 +2847,7 @@ 3D80DA401DF820620028D040 /* RCTTouchEvent.h in Headers */, 3D80DA411DF820620028D040 /* RCTTouchHandler.h in Headers */, 13134C8C1E296B2A00B9F3CB /* RCTMessageThread.h in Headers */, + 59EB6DBB1EBD6FC90072A5E7 /* RCTUIManagerObserverCoordinator.h in Headers */, 3D80DA421DF820620028D040 /* RCTURLRequestDelegate.h in Headers */, 3D80DA431DF820620028D040 /* RCTURLRequestHandler.h in Headers */, 3D80DA441DF820620028D040 /* RCTUtils.h in Headers */, @@ -3305,6 +3319,7 @@ 2D3B5ECF1D9B096F00451313 /* RCTFont.mm in Sources */, 2D3B5ED51D9B098000451313 /* RCTModalHostViewController.m in Sources */, 2D3B5EBC1D9B092600451313 /* RCTKeyboardObserver.m in Sources */, + 59EB6DBE1EBD6FC90072A5E7 /* RCTUIManagerObserverCoordinator.m in Sources */, 2D3B5E971D9B089000451313 /* RCTBridge.m in Sources */, 2D3B5EA21D9B08BA00451313 /* RCTModuleMethod.m in Sources */, 2D3B5E9B1D9B08A000451313 /* RCTFrameUpdate.m in Sources */, @@ -3514,6 +3529,7 @@ 006FC4141D9B20820057AAAD /* RCTMultipartDataTask.m in Sources */, 13CC8A821B17642100940AE7 /* RCTBorderDrawing.m in Sources */, 83CBBA511A601E3B00E9B192 /* RCTAssert.m in Sources */, + 59EB6DBD1EBD6FC90072A5E7 /* RCTUIManagerObserverCoordinator.m in Sources */, 13AF20451AE707F9005F5298 /* RCTSlider.m in Sources */, 130443A21E3FEAA900D93A67 /* RCTFollyConvert.mm in Sources */, 58114A501AAE93D500E7D092 /* RCTAsyncLocalStorage.m in Sources */, From 3dfed2e8651b1b90b8cf6671aabec39e71546d04 Mon Sep 17 00:00:00 2001 From: Hoa Dinh Date: Mon, 8 May 2017 19:32:12 -0700 Subject: [PATCH 0022/1101] Explicitely export some symbols since they can be referenced from outside that library. Differential Revision: D5024612 fbshipit-source-id: 6d75ebce9422c879bfc0acdb1159be72756a2f15 --- ReactCommon/jschelpers/JSCWrapper.h | 2 +- ReactCommon/jschelpers/Unicode.h | 2 +- ReactCommon/jschelpers/Value.h | 14 +++++++------- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/ReactCommon/jschelpers/JSCWrapper.h b/ReactCommon/jschelpers/JSCWrapper.h index 03d2f3bdad97..97fb661f7eb4 100644 --- a/ReactCommon/jschelpers/JSCWrapper.h +++ b/ReactCommon/jschelpers/JSCWrapper.h @@ -48,7 +48,7 @@ JSC_IMPORT JSValueRef JSPokeSamplingProfiler(JSContextRef); * * Version number indicating that bytecode is not supported by this runtime. */ -extern const int32_t JSNoBytecodeFileFormatVersion; +__attribute__((visibility("default"))) extern const int32_t JSNoBytecodeFileFormatVersion; namespace facebook { namespace react { diff --git a/ReactCommon/jschelpers/Unicode.h b/ReactCommon/jschelpers/Unicode.h index cc1e25836baa..a3e5fa939724 100644 --- a/ReactCommon/jschelpers/Unicode.h +++ b/ReactCommon/jschelpers/Unicode.h @@ -8,7 +8,7 @@ namespace facebook { namespace react { namespace unicode { -std::string utf16toUTF8(const uint16_t* utf16, size_t length) noexcept; +__attribute__((visibility("default"))) std::string utf16toUTF8(const uint16_t* utf16, size_t length) noexcept; } } } diff --git a/ReactCommon/jschelpers/Value.h b/ReactCommon/jschelpers/Value.h index 10dfb18def63..e0f1d0e0871b 100644 --- a/ReactCommon/jschelpers/Value.h +++ b/ReactCommon/jschelpers/Value.h @@ -233,9 +233,9 @@ class Object : public noncopyable { class Value : public noncopyable { public: - Value(JSContextRef context, JSValueRef value); - Value(JSContextRef context, JSStringRef value); - Value(Value&&); + __attribute__((visibility("default"))) Value(JSContextRef context, JSValueRef value); + __attribute__((visibility("default"))) Value(JSContextRef context, JSStringRef value); + __attribute__((visibility("default"))) Value(Value&&); Value& operator=(Value&& other) { m_context = other.m_context; @@ -316,10 +316,10 @@ class Value : public noncopyable { return Value(ctx, JSC_JSValueMakeNull(ctx)); } - std::string toJSONString(unsigned indent = 0) const; - static Value fromJSON(JSContextRef ctx, const String& json); - static JSValueRef fromDynamic(JSContextRef ctx, const folly::dynamic& value); - JSContextRef context() const; + __attribute__((visibility("default"))) std::string toJSONString(unsigned indent = 0) const; + __attribute__((visibility("default"))) static Value fromJSON(JSContextRef ctx, const String& json); + __attribute__((visibility("default"))) static JSValueRef fromDynamic(JSContextRef ctx, const folly::dynamic& value); + __attribute__((visibility("default"))) JSContextRef context() const; protected: JSContextRef m_context; JSValueRef m_value; From 73fc439bc03b457d7bcebdb3fd230e470af52e38 Mon Sep 17 00:00:00 2001 From: David Aurelio Date: Tue, 9 May 2017 08:02:08 -0700 Subject: [PATCH 0023/1101] Stronger typing for transformers Reviewed By: jeanlauliac Differential Revision: D5006679 fbshipit-source-id: 795c60db363fb53bc74697e4befe50995e9b97a7 --- flow/babel.js.flow | 5 +++- jest/preprocessor.js | 11 +++++-- packager/src/Bundler/index.js | 4 ++- packager/src/JSTransformer/index.js | 6 ++-- packager/src/JSTransformer/worker/worker.js | 30 ++++++++++++++----- packager/src/ModuleGraph/types.flow.js | 10 +------ .../worker/__tests__/transform-module-test.js | 13 ++++++-- .../ModuleGraph/worker/transform-module.js | 28 +++++++++-------- packager/src/lib/GlobalTransformCache.js | 4 +-- packager/src/lib/TransformCache.js | 8 ++--- packager/src/node-haste/Module.js | 20 ++++++------- packager/transformer.js | 24 ++++++++++----- 12 files changed, 102 insertions(+), 61 deletions(-) diff --git a/flow/babel.js.flow b/flow/babel.js.flow index 1bb25d0b1b31..5e0f1dea4daf 100644 --- a/flow/babel.js.flow +++ b/flow/babel.js.flow @@ -51,13 +51,14 @@ type GeneratorOptions = { }; type InlinePlugin = string | {} | () => {}; +type _Plugins = Array; // based on https://babeljs.io/docs/usage/options/ -- 2016-11-11 type __TransformOptions = { filename?: string, filenameRelative?: string, presets?: Array, - plugins?: Array, + plugins?: _Plugins, parserOpts?: BabylonOptions, generatorOpts?: GeneratorOptions, highlightCode?: boolean, @@ -92,11 +93,13 @@ declare class _Ast {} type TransformResult = { ast: _Ast, code: ?string, + ignored: boolean, map: ?_SourceMap, }; type VisitFn = (path: Object, state: State) => any; declare module 'babel-core' { + declare type Plugins = _Plugins; declare type SourceMap = _SourceMap; declare type Ast = _Ast; declare type TransformOptions = _TransformOptions; diff --git a/jest/preprocessor.js b/jest/preprocessor.js index 013ebc744d2a..88eb666804f3 100644 --- a/jest/preprocessor.js +++ b/jest/preprocessor.js @@ -5,6 +5,8 @@ * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. + * + * @flow */ 'use strict'; @@ -24,7 +26,7 @@ babelRegisterOnly([]); const transformer = require('../packager/transformer.js'); module.exports = { - process(src, file) { + process(src/*: string*/, file/*: string*/) { if (nodeFiles.test(file)) { // node specific transforms only return babel.transform( src, @@ -32,7 +34,12 @@ module.exports = { ).code; } - return transformer.transform(src, file, {inlineRequires: true}).code; + return transformer.transform(src, file, { + dev: true, + inlineRequires: true, + platform: '', + projectRoot: '', + }).code; }, getCacheKey: createCacheKeyFunction([ diff --git a/packager/src/Bundler/index.js b/packager/src/Bundler/index.js index 904ec9c16d80..371cda2a7d2b 100644 --- a/packager/src/Bundler/index.js +++ b/packager/src/Bundler/index.js @@ -138,6 +138,8 @@ type Options = {| +watch: boolean, |}; +const {hasOwnProperty} = Object; + class Bundler { _opts: Options; @@ -673,7 +675,7 @@ class Bundler { const preloaded = module.path === entryFilePath || isPolyfill || - preloadedModules && preloadedModules.hasOwnProperty(module.path); + preloadedModules && hasOwnProperty.call(preloadedModules, module.path); return new ModuleTransport({ name, diff --git a/packager/src/JSTransformer/index.js b/packager/src/JSTransformer/index.js index 931fcf409b6e..7ca488810873 100644 --- a/packager/src/JSTransformer/index.js +++ b/packager/src/JSTransformer/index.js @@ -20,7 +20,7 @@ const path = require('path'); const util = require('util'); const workerFarm = require('../worker-farm'); -import type {Data as TransformData, Options as TransformOptions} from './worker/worker'; +import type {Data as TransformData, Options as WorkerOptions} from './worker/worker'; import type {MappingsMap} from '../lib/SourceMap'; // Avoid memory leaks caused in workers. This number seems to be a good enough number @@ -63,7 +63,7 @@ class Transformer { transform: string, filename: string, sourceCode: string, - options: ?TransformOptions, + options: ?WorkerOptions, ) => Promise; minify: ( filename: string, @@ -97,7 +97,7 @@ class Transformer { this._workers && workerFarm.end(this._workers); } - transformFile(fileName: string, code: string, options: TransformOptions) { + transformFile(fileName: string, code: string, options: WorkerOptions) { if (!this._transform) { return Promise.reject(new Error('No transform module')); } diff --git a/packager/src/JSTransformer/worker/worker.js b/packager/src/JSTransformer/worker/worker.js index 5c437810059c..011489a778a3 100644 --- a/packager/src/JSTransformer/worker/worker.js +++ b/packager/src/JSTransformer/worker/worker.js @@ -11,6 +11,7 @@ 'use strict'; +const babelRegisterOnly = require('../../../babelRegisterOnly'); const constantFolding = require('./constant-folding'); const extractDependencies = require('./extract-dependencies'); const inline = require('./inline'); @@ -18,7 +19,7 @@ const invariant = require('fbjs/lib/invariant'); const minify = require('./minify'); import type {LogEntry} from '../../Logger/Types'; -import type {Ast, SourceMap as MappingsMap} from 'babel-core'; +import type {Ast, Plugins as BabelPlugins, SourceMap as MappingsMap} from 'babel-core'; export type TransformedCode = { code: string, @@ -27,15 +28,18 @@ export type TransformedCode = { map?: ?MappingsMap, }; -type Transformer = { +export type Transformer = { transform: ( filename: string, sourceCode: string, - options: ?{}, - ) => {ast: ?Ast, code: string, map: ?MappingsMap} + options: ExtraOptions & TransformOptions, + plugins?: BabelPlugins, + ) => {ast: ?Ast, code: string, map: ?MappingsMap}, + getCacheKey: TransformOptionsStrict => string, }; -export type TransformOptions = {| + +export type TransformOptionsStrict = {| +dev: boolean, +generateSourceMaps: boolean, +hot: boolean, @@ -44,11 +48,20 @@ export type TransformOptions = {| +projectRoot: string, |}; +export type TransformOptions = { + +dev?: boolean, + +generateSourceMaps?: boolean, + +hot?: boolean, + +inlineRequires?: {+blacklist: {[string]: true}} | boolean, + +platform: string, + +projectRoot: string, +}; + export type Options = {| +dev: boolean, +minify: boolean, +platform: string, - +transform: TransformOptions, + +transform: TransformOptionsStrict, |}; export type Data = { @@ -63,7 +76,7 @@ type Callback = ( ) => mixed; function transformCode( - transformer: Transformer, + transformer: Transformer<*>, filename: string, sourceCode: string, options: Options, @@ -144,8 +157,9 @@ exports.transformAndExtractDependencies = ( options: Options, callback: Callback, ) => { + babelRegisterOnly([transform]); /* $FlowFixMe: impossible to type a dynamic require */ - const transformModule = require(transform); + const transformModule: Transformer<*> = require(transform); transformCode(transformModule, filename, sourceCode, options, callback); }; diff --git a/packager/src/ModuleGraph/types.flow.js b/packager/src/ModuleGraph/types.flow.js index c1c560744509..1352a927a598 100644 --- a/packager/src/ModuleGraph/types.flow.js +++ b/packager/src/ModuleGraph/types.flow.js @@ -13,6 +13,7 @@ import type {MappingsMap, SourceMap} from '../lib/SourceMap'; import type {Ast} from 'babel-core'; import type {Console} from 'console'; +export type {Transformer} from '../JSTransformer/worker/worker.js'; export type Callback
      = (Error => void) @@ -105,15 +106,6 @@ export type TransformerResult = {| map: ?MappingsMap, |}; -export type Transformer = { - transform: ( - sourceCode: string, - filename: string, - options: ?{}, - plugins?: Array, - ) => {ast: ?Ast, code: string, map: ?MappingsMap} -}; - export type TransformResult = {| code: string, dependencies: Array, diff --git a/packager/src/ModuleGraph/worker/__tests__/transform-module-test.js b/packager/src/ModuleGraph/worker/__tests__/transform-module-test.js index 2f5422d1b0d6..bb4af0f7228e 100644 --- a/packager/src/ModuleGraph/worker/__tests__/transform-module-test.js +++ b/packager/src/ModuleGraph/worker/__tests__/transform-module-test.js @@ -80,6 +80,15 @@ describe('transforming JS modules:', () => { }); }); + const defaults = { + dev: false, + generateSourceMaps: true, + hot: false, + inlineRequires: false, + platform: '', + projectRoot: '', + }; + it('calls the passed-in transform function with code, file name, and options ' + 'for all passed in variants', done => { @@ -87,9 +96,9 @@ describe('transforming JS modules:', () => { transformModule(sourceCode, options(variants), () => { expect(transformer.transform) - .toBeCalledWith(sourceCode, filename, variants.dev); + .toBeCalledWith(sourceCode, filename, {...defaults, ...variants.dev}); expect(transformer.transform) - .toBeCalledWith(sourceCode, filename, variants.prod); + .toBeCalledWith(sourceCode, filename, {...defaults, ...variants.prod}); done(); }); }, diff --git a/packager/src/ModuleGraph/worker/transform-module.js b/packager/src/ModuleGraph/worker/transform-module.js index 9e8b1010b37f..47dcd0a271bd 100644 --- a/packager/src/ModuleGraph/worker/transform-module.js +++ b/packager/src/ModuleGraph/worker/transform-module.js @@ -12,6 +12,7 @@ const JsFileWrapping = require('./JsFileWrapping'); +const asyncify = require('async/asyncify'); const collectDependencies = require('./collect-dependencies'); const defaults = require('../../../defaults'); const docblock = require('../../node-haste/DependencyGraph/docblock'); @@ -34,10 +35,18 @@ import type { export type TransformOptions = {| filename: string, polyfill?: boolean, - transformer: Transformer, + transformer: Transformer<*>, variants?: TransformVariants, |}; +const defaultTransformOptions = { + dev: true, + generateSourceMaps: true, + hot: false, + inlineRequires: false, + platform: '', + projectRoot: '', +}; const defaultVariants = {default: {}}; const ASSET_EXTENSIONS = new Set(defaults.assetExts); @@ -61,17 +70,12 @@ function transformModule( const {filename, transformer, variants = defaultVariants} = options; const tasks = {}; Object.keys(variants).forEach(name => { - tasks[name] = cb => { - try { - cb(null, transformer.transform( - code, - filename, - variants[name], - )); - } catch (error) { - cb(error, null); - } - }; + tasks[name] = asyncify(() => transformer.transform( + code, + filename, + {...defaultTransformOptions, ...variants[name]}, + ) + ); }); series(tasks, (error, results: {[key: string]: TransformerResult}) => { diff --git a/packager/src/lib/GlobalTransformCache.js b/packager/src/lib/GlobalTransformCache.js index 4f0b9c7c475f..250620894f0f 100644 --- a/packager/src/lib/GlobalTransformCache.js +++ b/packager/src/lib/GlobalTransformCache.js @@ -24,7 +24,7 @@ const throat = require('throat'); import type { Options as TransformWorkerOptions, - TransformOptions, + TransformOptionsStrict, } from '../JSTransformer/worker/worker'; import type {CachedResult, GetTransformCacheKey} from './TransformCache'; @@ -381,7 +381,7 @@ class OptionsHasher { * of the cache key as they should not affect the transformation of a single * particular file. */ - hashTransformOptions(hash: crypto$Hash, options: TransformOptions): crypto$Hash { + hashTransformOptions(hash: crypto$Hash, options: TransformOptionsStrict): crypto$Hash { const { generateSourceMaps, dev, hot, inlineRequires, platform, projectRoot, ...unknowns, diff --git a/packager/src/lib/TransformCache.js b/packager/src/lib/TransformCache.js index ddceccb516f8..b5378df7e298 100644 --- a/packager/src/lib/TransformCache.js +++ b/packager/src/lib/TransformCache.js @@ -20,7 +20,7 @@ const rimraf = require('rimraf'); const terminal = require('../lib/terminal'); const writeFileAtomicSync = require('write-file-atomic').sync; -import type {Options as TransformOptions} from '../JSTransformer/worker/worker'; +import type {Options as WorkerOptions} from '../JSTransformer/worker/worker'; import type {MappingsMap} from './SourceMap'; import type {Reporter} from './reporting'; @@ -58,7 +58,7 @@ function hashSourceCode(props: { filePath: string, sourceCode: string, getTransformCacheKey: GetTransformCacheKey, - transformOptions: TransformOptions, + transformOptions: WorkerOptions, transformOptionsKey: string, }): string { return crypto.createHash('sha1') @@ -134,7 +134,7 @@ function writeSync(props: { filePath: string, sourceCode: string, getTransformCacheKey: GetTransformCacheKey, - transformOptions: TransformOptions, + transformOptions: WorkerOptions, transformOptionsKey: string, result: CachedResult, }): void { @@ -326,7 +326,7 @@ function readMetadataFileSync( export type ReadTransformProps = { filePath: string, sourceCode: string, - transformOptions: TransformOptions, + transformOptions: WorkerOptions, transformOptionsKey: string, getTransformCacheKey: GetTransformCacheKey, cacheOptions: CacheOptions, diff --git a/packager/src/node-haste/Module.js b/packager/src/node-haste/Module.js index 793fc2ea3c35..bba6070edc7b 100644 --- a/packager/src/node-haste/Module.js +++ b/packager/src/node-haste/Module.js @@ -22,7 +22,7 @@ const jsonStableStringify = require('json-stable-stringify'); const {join: joinPath, relative: relativePath, extname} = require('path'); -import type {TransformedCode, Options as TransformOptions} from '../JSTransformer/worker/worker'; +import type {TransformedCode, Options as WorkerOptions} from '../JSTransformer/worker/worker'; import type {GlobalTransformCache} from '../lib/GlobalTransformCache'; import type {MappingsMap} from '../lib/SourceMap'; import type {GetTransformCacheKey} from '../lib/TransformCache'; @@ -47,7 +47,7 @@ export type CachedReadResult = {| export type TransformCode = ( module: Module, sourceCode: string, - transformOptions: TransformOptions, + transformOptions: WorkerOptions, ) => Promise; export type HasteImpl = { @@ -131,11 +131,11 @@ class Module { return Promise.resolve().then(() => this._getHasteName() != null); } - getCode(transformOptions: TransformOptions) { + getCode(transformOptions: WorkerOptions) { return this.read(transformOptions).then(({code}) => code); } - getMap(transformOptions: TransformOptions) { + getMap(transformOptions: WorkerOptions) { return this.read(transformOptions).then(({map}) => map); } @@ -168,7 +168,7 @@ class Module { return this._moduleCache.getPackageForModule(this); } - getDependencies(transformOptions: TransformOptions) { + getDependencies(transformOptions: WorkerOptions) { return this.read(transformOptions).then(({dependencies}) => dependencies); } @@ -324,7 +324,7 @@ class Module { * Shorthand for reading both from cache or from fresh for all call sites that * are asynchronous by default. */ - read(transformOptions: TransformOptions): Promise { + read(transformOptions: WorkerOptions): Promise { return Promise.resolve().then(() => { const cached = this.readCached(transformOptions); if (cached.result != null) { @@ -339,7 +339,7 @@ class Module { * the file from source. This has the benefit of being synchronous. As a * result it is possible to read many cached Module in a row, synchronously. */ - readCached(transformOptions: TransformOptions): CachedReadResult { + readCached(transformOptions: WorkerOptions): CachedReadResult { const key = stableObjectHash(transformOptions || {}); let result = this._readResultsByOptionsKey.get(key); if (result != null) { @@ -355,7 +355,7 @@ class Module { * so it's faster in case the results are already in memory. */ _readFromTransformCache( - transformOptions: TransformOptions, + transformOptions: WorkerOptions, transformOptionsKey: string, ): CachedReadResult { const cacheProps = this._getCacheProps(transformOptions, transformOptionsKey); @@ -375,7 +375,7 @@ class Module { * scratch. We don't repeat the same work as `readCached` because we assume * call sites have called it already. */ - readFresh(transformOptions: TransformOptions): Promise { + readFresh(transformOptions: WorkerOptions): Promise { const key = stableObjectHash(transformOptions || {}); const promise = this._readPromises.get(key); if (promise != null) { @@ -404,7 +404,7 @@ class Module { return freshPromise; } - _getCacheProps(transformOptions: TransformOptions, transformOptionsKey: string) { + _getCacheProps(transformOptions: WorkerOptions, transformOptionsKey: string) { const sourceCode = this._readSourceCode(); const getTransformCacheKey = this._getTransformCacheKey; return { diff --git a/packager/transformer.js b/packager/transformer.js index 3b25cdf7537b..55447ee43aef 100644 --- a/packager/transformer.js +++ b/packager/transformer.js @@ -7,6 +7,8 @@ * of patent rights can be found in the PATENTS file in the same directory. * * Note: This is a fork of the fb-specific transform.js + * + * @flow */ 'use strict'; @@ -23,6 +25,9 @@ const resolvePlugins = require('babel-preset-react-native/lib/resolvePlugins'); const {compactMapping} = require('./src/Bundler/source-map'); +import type {Plugins as BabelPlugins} from 'babel-core'; +import type {Transformer, TransformOptions} from './src/JSTransformer/worker/worker'; + const cacheKeyParts = [ fs.readFileSync(__filename), require('babel-plugin-external-helpers/package.json').version, @@ -36,14 +41,14 @@ const cacheKeyParts = [ * default RN babelrc file and uses that. */ const getBabelRC = (function() { - let babelRC = null; + let babelRC: ?{extends?: string, plugins: BabelPlugins} = null; return function _getBabelRC(projectRoot) { if (babelRC !== null) { return babelRC; } - babelRC = {plugins: []}; // empty babelrc + babelRC = {plugins: []}; // Let's look for the .babelrc in the project root. // In the future let's look into adding a command line option to specify @@ -62,6 +67,7 @@ const getBabelRC = (function() { ); // Require the babel-preset's listed in the default babel config + // $FlowFixMe: dynamic require can't be avoided babelRC.presets = babelRC.presets.map(preset => require('babel-preset-' + preset)); babelRC.plugins = resolvePlugins(babelRC.plugins); } else { @@ -91,7 +97,7 @@ function buildBabelConfig(filename, options) { const extraPlugins = [externalHelpersPlugin]; var inlineRequires = options.inlineRequires; - var blacklist = inlineRequires && inlineRequires.blacklist; + var blacklist = typeof inlineRequires === 'object' ? inlineRequires.blacklist : null; if (inlineRequires && !(blacklist && filename in blacklist)) { extraPlugins.push(inlineRequiresPlugin); } @@ -106,7 +112,11 @@ function buildBabelConfig(filename, options) { return Object.assign({}, babelRC, config); } -function transform(src, filename, options) { +function transform( + src: string, + filename: string, + options, +) { options = options || {}; const OLD_BABEL_ENV = process.env.BABEL_ENV; @@ -144,13 +154,13 @@ function transform(src, filename, options) { } } -function getCacheKey(options) { +function getCacheKey(options: TransformOptions) { var key = crypto.createHash('md5'); cacheKeyParts.forEach(part => key.update(part)); return key.digest('hex'); } -module.exports = { +module.exports = ({ transform, getCacheKey, -}; +}: Transformer<>); From 7b7d6bb1583eada246de17d4c33b5fd37ba8ce0c Mon Sep 17 00:00:00 2001 From: Vjeran Crnjak Date: Tue, 9 May 2017 11:01:03 -0700 Subject: [PATCH 0024/1101] React.podspec fix for RCTAnimation header issue Summary: Fixes issue described #13198 Simpler, compared to #13217 Build no longer fails on not being able to find `RCTAnimation/RCTValueAnimatedNode.h`. Closes https://github.com/facebook/react-native/pull/13785 Differential Revision: D5017734 Pulled By: javache fbshipit-source-id: e398f74e0fbb1a8f5a43d0a80a4cd3a3587c81b3 --- React.podspec | 1 + 1 file changed, 1 insertion(+) diff --git a/React.podspec b/React.podspec index 336b43a6e101..4b00f90fc7ef 100644 --- a/React.podspec +++ b/React.podspec @@ -127,6 +127,7 @@ Pod::Spec.new do |s| s.subspec "RCTAnimation" do |ss| ss.dependency "React/Core" ss.source_files = "Libraries/NativeAnimation/{Drivers/*,Nodes/*,*}.{h,m}" + ss.header_dir = "RCTAnimation" end s.subspec "RCTCameraRoll" do |ss| From 73973e8c5627c6710b3ae9f328b57404b000fdac Mon Sep 17 00:00:00 2001 From: Dan Abramov Date: Tue, 9 May 2017 11:17:26 -0700 Subject: [PATCH 0025/1101] Update React DevTools integration Reviewed By: spicyj, bvaughn Differential Revision: D5028349 fbshipit-source-id: 26cd879de7c530888bf4eab10b7823f24d1d53ec --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a90ef3e69fd1..0d9f072ec47c 100644 --- a/package.json +++ b/package.json @@ -191,7 +191,7 @@ "promise": "^7.1.1", "prop-types": "^15.5.8", "react-clone-referenced-element": "^1.0.1", - "react-devtools-core": "^2.0.8", + "react-devtools-core": "^2.1.8", "react-timer-mixin": "^0.13.2", "react-transform-hmr": "^1.0.4", "rebound": "^0.0.13", From 82fd02a1e2266514416a1de6746d3d851a60cfe5 Mon Sep 17 00:00:00 2001 From: Dan Abramov Date: Tue, 9 May 2017 11:56:11 -0700 Subject: [PATCH 0026/1101] Add info about inspecting instances to the docs Summary: Looks like this: ![](https://d2ppvlu71ri8gs.cloudfront.net/items/1N0X3d3Y2m3E3a1Z3W37/Screen%20Recording%202017-05-09%20at%2003.41%20PM.gif?v=cbf2a26b) Closes https://github.com/facebook/react-native/pull/13866 Differential Revision: D5028363 Pulled By: gaearon fbshipit-source-id: a07aecd31446d0361d299c2f7519a280ac2b8815 --- docs/Debugging.md | 12 ++++++++++++ .../react-native/img/ReactDevToolsDollarR.gif | Bin 0 -> 2159365 bytes 2 files changed, 12 insertions(+) create mode 100644 website/src/react-native/img/ReactDevToolsDollarR.gif diff --git a/docs/Debugging.md b/docs/Debugging.md index 23c0d3b5d7d2..3c9dfb84871f 100644 --- a/docs/Debugging.md +++ b/docs/Debugging.md @@ -105,6 +105,18 @@ However, when `react-devtools` is running, Inspector will enter a special collap You can choose "Hide Inspector" in the same menu to exit this mode. +### Inspecting Component Instances + +When debugging JavaScript in Chrome, you can inspect the props and state of the React components in the browser console. + +First, follow the [instructions for debugging in Chrome](docs/debugging.html#chrome-developer-tools) to open the Chrome console. + +Make sure that the dropdown in the top left corner of the Chrome console says `debuggerWorker.js`. **This step is essential.** + +Then select a React component in React DevTools. There is a search box at the top that helps you find one by name. As soon as you select it, it will be available as `$r` in the Chrome console, letting you inspect its props, state, and instance properties. + +![React DevTools Chrome Console Integration](img/ReactDevToolsDollarR.gif) + ## Performance Monitor You can enable a performance overlay to help you debug performance problems by selecting "Perf Monitor" in the Developer Menu. diff --git a/website/src/react-native/img/ReactDevToolsDollarR.gif b/website/src/react-native/img/ReactDevToolsDollarR.gif new file mode 100644 index 0000000000000000000000000000000000000000..373d80b90a961c2ad6e14575185dcf73ede32ae9 GIT binary patch literal 2159365 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 * @param promise the Promise to be resolved when the photos are loaded; for a format of the * parameters passed to this callback, see {@code getPhotosReturnChecker} in CameraRoll.js @@ -222,6 +227,7 @@ public void getPhotos(final ReadableMap params, final Promise promise) { int first = params.getInt("first"); String after = params.hasKey("after") ? params.getString("after") : null; String groupName = params.hasKey("groupName") ? params.getString("groupName") : null; + String assetType = params.hasKey("assetType") ? params.getString("assetType") : null; ReadableArray mimeTypes = params.hasKey("mimeTypes") ? params.getArray("mimeTypes") : null; @@ -235,6 +241,7 @@ public void getPhotos(final ReadableMap params, final Promise promise) { after, groupName, mimeTypes, + assetType, promise) .executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); } @@ -246,6 +253,7 @@ private static class GetPhotosTask extends GuardedAsyncTask { private final @Nullable String mGroupName; private final @Nullable ReadableArray mMimeTypes; private final Promise mPromise; + private final @Nullable String mAssetType; private GetPhotosTask( ReactContext context, @@ -253,6 +261,7 @@ private GetPhotosTask( @Nullable String after, @Nullable String groupName, @Nullable ReadableArray mimeTypes, + @Nullable String assetType, Promise promise) { super(context); mContext = context; @@ -261,6 +270,7 @@ private GetPhotosTask( mGroupName = groupName; mMimeTypes = mimeTypes; mPromise = promise; + mAssetType = assetType; } @Override @@ -289,8 +299,12 @@ protected void doInBackgroundGuarded(Void... params) { // setting a limit at all), but it works because this specific ContentProvider is backed by // an SQLite DB and forwards parameters to it without doing any parsing / validation. try { + Uri assetURI = + mAssetType != null && mAssetType.equals("Videos") ? Video.Media.EXTERNAL_CONTENT_URI : + Images.Media.EXTERNAL_CONTENT_URI; + Cursor photos = resolver.query( - Images.Media.EXTERNAL_CONTENT_URI, + assetURI, PROJECTION, selection.toString(), selectionArgs.toArray(new String[selectionArgs.size()]), From c948ae81686e2345d155577b4ff9f43f50021e99 Mon Sep 17 00:00:00 2001 From: Jean Lauliac Date: Wed, 10 May 2017 03:33:26 -0700 Subject: [PATCH 0034/1101] packager: rename node-haste/index to DependencyGraph Summary: I've been confused for a long time by this, and I think it's better late than never. I propose we rename that file to make it more explicit where that class lives, and so that it's consistent with the test file, name `DependencyGraph-test.js` Reviewed By: davidaurelio Differential Revision: D5020556 fbshipit-source-id: d54a501c3995f3fea16a5bfc6ca72993f73c4873 --- local-cli/server/util/attachHMRServer.js | 2 +- .../AssetServer/__tests__/AssetServer-test.js | 2 +- packager/src/AssetServer/index.js | 2 +- packager/src/Bundler/__tests__/Bundler-test.js | 2 +- .../src/Resolver/__tests__/Resolver-test.js | 2 +- packager/src/Resolver/index.js | 2 +- packager/src/Server/__tests__/Server-test.js | 2 +- packager/src/Server/index.js | 2 +- .../{index.js => DependencyGraph.js} | 0 .../__tests__/DependencyGraph-test.js | 18 +++++++++--------- 10 files changed, 17 insertions(+), 17 deletions(-) rename packager/src/node-haste/{index.js => DependencyGraph.js} (100%) diff --git a/local-cli/server/util/attachHMRServer.js b/local-cli/server/util/attachHMRServer.js index e9094ac3c24b..bed4c1d847cc 100644 --- a/local-cli/server/util/attachHMRServer.js +++ b/local-cli/server/util/attachHMRServer.js @@ -14,7 +14,7 @@ const querystring = require('querystring'); const url = require('url'); -const {getInverseDependencies} = require('../../../packager/src//node-haste'); +const {getInverseDependencies} = require('../../../packager/src//node-haste/DependencyGraph'); import type HMRBundle from '../../../packager/src/Bundler/HMRBundle'; import type Server from '../../../packager/src/Server'; diff --git a/packager/src/AssetServer/__tests__/AssetServer-test.js b/packager/src/AssetServer/__tests__/AssetServer-test.js index d03cbd1fb583..5b9ca19fbb71 100644 --- a/packager/src/AssetServer/__tests__/AssetServer-test.js +++ b/packager/src/AssetServer/__tests__/AssetServer-test.js @@ -21,7 +21,7 @@ const {objectContaining} = jasmine; describe('AssetServer', () => { beforeEach(() => { - const NodeHaste = require('../../node-haste'); + const NodeHaste = require('../../node-haste/DependencyGraph'); NodeHaste.getAssetDataFromName = require.requireActual('../../node-haste/lib/getAssetDataFromName'); }); diff --git a/packager/src/AssetServer/index.js b/packager/src/AssetServer/index.js index c18caa3af61a..e2ffd01cad0e 100644 --- a/packager/src/AssetServer/index.js +++ b/packager/src/AssetServer/index.js @@ -14,7 +14,7 @@ const crypto = require('crypto'); const denodeify = require('denodeify'); const fs = require('fs'); -const getAssetDataFromName = require('../node-haste').getAssetDataFromName; +const getAssetDataFromName = require('../node-haste/DependencyGraph').getAssetDataFromName; const path = require('path'); import type {AssetData} from '../node-haste/lib/getAssetDataFromName'; diff --git a/packager/src/Bundler/__tests__/Bundler-test.js b/packager/src/Bundler/__tests__/Bundler-test.js index dcea0d6e1a96..a8924a4feb6c 100644 --- a/packager/src/Bundler/__tests__/Bundler-test.js +++ b/packager/src/Bundler/__tests__/Bundler-test.js @@ -19,7 +19,7 @@ jest .mock('os') .mock('assert') .mock('progress') - .mock('../../node-haste') + .mock('../../node-haste/DependencyGraph') .mock('../../JSTransformer') .mock('../../lib/declareOpts') .mock('../../Resolver') diff --git a/packager/src/Resolver/__tests__/Resolver-test.js b/packager/src/Resolver/__tests__/Resolver-test.js index dce69acfa79d..67ec8ab81160 100644 --- a/packager/src/Resolver/__tests__/Resolver-test.js +++ b/packager/src/Resolver/__tests__/Resolver-test.js @@ -16,7 +16,7 @@ jest.mock('path'); const {join: pathJoin} = require.requireActual('path'); const DependencyGraph = jest.fn(); -jest.setMock('../../node-haste', DependencyGraph); +jest.setMock('../../node-haste/DependencyGraph', DependencyGraph); let Module; let Polyfill; diff --git a/packager/src/Resolver/index.js b/packager/src/Resolver/index.js index ea2bd23cb548..77c8f0b8b0b9 100644 --- a/packager/src/Resolver/index.js +++ b/packager/src/Resolver/index.js @@ -11,7 +11,7 @@ 'use strict'; -const DependencyGraph = require('../node-haste'); +const DependencyGraph = require('../node-haste/DependencyGraph'); const defaults = require('../../defaults'); const pathJoin = require('path').join; diff --git a/packager/src/Server/__tests__/Server-test.js b/packager/src/Server/__tests__/Server-test.js index ce21478f48df..d98072883740 100644 --- a/packager/src/Server/__tests__/Server-test.js +++ b/packager/src/Server/__tests__/Server-test.js @@ -23,7 +23,7 @@ jest.mock('../../worker-farm', () => () => () => {}) .mock('../../Bundler') .mock('../../AssetServer') .mock('../../lib/declareOpts') - .mock('../../node-haste') + .mock('../../node-haste/DependencyGraph') .mock('../../Logger') .mock('../../lib/GlobalTransformCache'); diff --git a/packager/src/Server/index.js b/packager/src/Server/index.js index 4344cd287e11..9fb3fe80b02b 100644 --- a/packager/src/Server/index.js +++ b/packager/src/Server/index.js @@ -12,7 +12,7 @@ 'use strict'; const AssetServer = require('../AssetServer'); -const getPlatformExtension = require('../node-haste').getPlatformExtension; +const getPlatformExtension = require('../node-haste/DependencyGraph').getPlatformExtension; const Bundler = require('../Bundler'); const MultipartResponse = require('./MultipartResponse'); diff --git a/packager/src/node-haste/index.js b/packager/src/node-haste/DependencyGraph.js similarity index 100% rename from packager/src/node-haste/index.js rename to packager/src/node-haste/DependencyGraph.js diff --git a/packager/src/node-haste/__tests__/DependencyGraph-test.js b/packager/src/node-haste/__tests__/DependencyGraph-test.js index 857849ec0699..7b6c536ad2b0 100644 --- a/packager/src/node-haste/__tests__/DependencyGraph-test.js +++ b/packager/src/node-haste/__tests__/DependencyGraph-test.js @@ -106,7 +106,7 @@ describe('DependencyGraph', function() { const realPlatform = process.platform; beforeEach(function() { process.platform = 'linux'; - DependencyGraph = require('../index'); + DependencyGraph = require('../DependencyGraph'); }); afterEach(function() { @@ -2368,7 +2368,7 @@ describe('DependencyGraph', function() { // reload path module jest.resetModules(); jest.mock('path', () => path.win32); - DependencyGraph = require('../index'); + DependencyGraph = require('../DependencyGraph'); }); afterEach(function() { @@ -2559,7 +2559,7 @@ describe('DependencyGraph', function() { let DependencyGraph; beforeEach(function() { process.platform = 'linux'; - DependencyGraph = require('../index'); + DependencyGraph = require('../DependencyGraph'); }); afterEach(function() { @@ -3539,7 +3539,7 @@ describe('DependencyGraph', function() { // due to the drive letter expectation if (realPlatform !== 'win32') { return; } - const DependencyGraph = require('../index'); + const DependencyGraph = require('../DependencyGraph'); it('should work with nested node_modules', function() { var root = '/root'; @@ -4503,7 +4503,7 @@ describe('DependencyGraph', function() { beforeEach(function() { process.platform = 'linux'; - DependencyGraph = require('../index'); + DependencyGraph = require('../DependencyGraph'); }); afterEach(function() { @@ -5221,7 +5221,7 @@ describe('DependencyGraph', function() { let DependencyGraph; beforeEach(function() { process.platform = 'linux'; - DependencyGraph = require('../index'); + DependencyGraph = require('../DependencyGraph'); }); afterEach(function() { @@ -5393,7 +5393,7 @@ describe('DependencyGraph', function() { 'g.js': makeModule('g'), }, }); - const DependencyGraph = require('../'); + const DependencyGraph = require('../DependencyGraph'); return DependencyGraph.load({ ...defaults, roots: ['/root'], @@ -5424,7 +5424,7 @@ describe('DependencyGraph', function() { describe('Asset module dependencies', () => { let DependencyGraph; beforeEach(() => { - DependencyGraph = require('../index'); + DependencyGraph = require('../DependencyGraph'); }); it('allows setting dependencies for asset modules', () => { @@ -5460,7 +5460,7 @@ describe('DependencyGraph', function() { beforeEach(() => { moduleRead = Module.prototype.read; - DependencyGraph = require('../index'); + DependencyGraph = require('../DependencyGraph'); setMockFileSystem({ 'root': { 'index.js': ` From cb3b744d084bbb3c44ee53b9da987b8b93c37c37 Mon Sep 17 00:00:00 2001 From: Jean Lauliac Date: Wed, 10 May 2017 03:44:54 -0700 Subject: [PATCH 0035/1101] packager: remove unused imurmurhash Summary: This is not used by live code anymore. Reviewed By: cpojer Differential Revision: D5029114 fbshipit-source-id: 9ab9f6075407623debfe23bc121cc48ae8903917 --- package.json | 1 - .../src/JSTransformer/__tests__/Transformer-test.js | 2 +- packager/src/lib/__mocks__/TransformCache.js | 11 ++++++----- packager/src/lib/__tests__/TransformCache-test.js | 6 ++---- packager/src/node-haste/__tests__/Module-test.js | 2 +- 5 files changed, 10 insertions(+), 12 deletions(-) diff --git a/package.json b/package.json index 0d9f072ec47c..82fa6120f2b5 100644 --- a/package.json +++ b/package.json @@ -169,7 +169,6 @@ "glob": "^7.1.1", "graceful-fs": "^4.1.3", "image-size": "^0.3.5", - "imurmurhash": "^0.1.4", "inquirer": "^0.12.0", "jest-haste-map": "19.0.0", "joi": "^6.6.1", diff --git a/packager/src/JSTransformer/__tests__/Transformer-test.js b/packager/src/JSTransformer/__tests__/Transformer-test.js index fc334f79a6a2..ae9bcf32d2ee 100644 --- a/packager/src/JSTransformer/__tests__/Transformer-test.js +++ b/packager/src/JSTransformer/__tests__/Transformer-test.js @@ -10,7 +10,7 @@ jest .unmock('stream') - .unmock('imurmurhash') + .unmock('crypto') .unmock('../../lib/ModuleTransport') .unmock('../'); diff --git a/packager/src/lib/__mocks__/TransformCache.js b/packager/src/lib/__mocks__/TransformCache.js index 1fd2261b755f..f7cc9bb21f9f 100644 --- a/packager/src/lib/__mocks__/TransformCache.js +++ b/packager/src/lib/__mocks__/TransformCache.js @@ -9,7 +9,7 @@ 'use strict'; -const imurmurhash = require('imurmurhash'); +const crypto = require('crypto'); const jsonStableStringify = require('json-stable-stringify'); const transformCache = new Map(); @@ -23,10 +23,11 @@ const mock = { }; const transformCacheKeyOf = props => - props.filePath + '-' + imurmurhash(props.sourceCode) - .hash(props.getTransformCacheKey(props.sourceCode, props.filePath, props.transformOptions)) - .hash(jsonStableStringify(props.transformOptions || {})) - .result().toString(16); + props.filePath + '-' + crypto.createHash('md5') + .update(props.sourceCode) + .update(props.getTransformCacheKey(props.sourceCode, props.filePath, props.transformOptions)) + .update(jsonStableStringify(props.transformOptions || {})) + .digest('hex'); function writeSync(props) { transformCache.set(transformCacheKeyOf(props), props.result); diff --git a/packager/src/lib/__tests__/TransformCache-test.js b/packager/src/lib/__tests__/TransformCache-test.js index af123ecb7437..2230e9b0c1e6 100644 --- a/packager/src/lib/__tests__/TransformCache-test.js +++ b/packager/src/lib/__tests__/TransformCache-test.js @@ -10,14 +10,12 @@ 'use strict'; jest - .dontMock('imurmurhash') .dontMock('json-stable-stringify') .dontMock('../TransformCache') .dontMock('left-pad') .dontMock('lodash/throttle') .dontMock('crypto'); -const imurmurhash = require('imurmurhash'); const crypto = require('crypto'); const jsonStableStringify = require('json-stable-stringify'); @@ -73,7 +71,7 @@ describe('TransformCache', () => { result: { code: `/* result for ${key} */`, dependencies: ['foo', `dep of ${key}`], - dependencyOffsets: [12, imurmurhash('dep' + key).result()], + dependencyOffsets: [12, 34], map: {desc: `source map for ${key}`}, }, }; @@ -108,7 +106,7 @@ describe('TransformCache', () => { result: { code: `/* result for ${key} */`, dependencies: ['foo', 'bar'], - dependencyOffsets: [12, imurmurhash('dep' + key).result()], + dependencyOffsets: [12, 34], map: {desc: `source map for ${key}`}, }, }; diff --git a/packager/src/node-haste/__tests__/Module-test.js b/packager/src/node-haste/__tests__/Module-test.js index e4aca77e114f..4500631a47eb 100644 --- a/packager/src/node-haste/__tests__/Module-test.js +++ b/packager/src/node-haste/__tests__/Module-test.js @@ -11,7 +11,7 @@ jest .dontMock('absolute-path') .dontMock('json-stable-stringify') - .dontMock('imurmurhash') + .dontMock('crypto') .dontMock('../lib/replacePatterns') .dontMock('../DependencyGraph/docblock') .dontMock('../Module'); From 9468c5a733174fc4a956ede4824e41cb6149c393 Mon Sep 17 00:00:00 2001 From: Lukas Piatkowski Date: Wed, 10 May 2017 03:46:47 -0700 Subject: [PATCH 0036/1101] Added method handler for Sampling Profiler that uses only JSCcontext and JSC API Reviewed By: cwdick Differential Revision: D4689688 fbshipit-source-id: d1f9df0b3dcb21420cf813888c19f2d9a9aa5646 --- .../react/devsupport/DevServerHelper.java | 4 +- .../devsupport/DevSupportManagerImpl.java | 28 +++++----- .../facebook/react/packagerconnection/BUCK | 4 ++ .../SamplingProfilerPackagerMethod.java | 55 +++++++++++++++++++ .../main/jni/packagerconnection/Android.mk | 29 ++++++++++ .../src/main/jni/packagerconnection/BUCK | 35 ++++++++++++ .../JSPackagerClientResponder.cpp | 32 +++++++++++ .../JSPackagerClientResponder.h | 22 ++++++++ .../main/jni/packagerconnection/OnLoad.cpp | 17 ++++++ .../SamplingProfilerJniMethod.cpp | 50 +++++++++++++++++ .../SamplingProfilerJniMethod.h | 35 ++++++++++++ 11 files changed, 295 insertions(+), 16 deletions(-) create mode 100644 ReactAndroid/src/main/java/com/facebook/react/packagerconnection/SamplingProfilerPackagerMethod.java create mode 100644 ReactAndroid/src/main/jni/packagerconnection/Android.mk create mode 100644 ReactAndroid/src/main/jni/packagerconnection/BUCK create mode 100644 ReactAndroid/src/main/jni/packagerconnection/JSPackagerClientResponder.cpp create mode 100644 ReactAndroid/src/main/jni/packagerconnection/JSPackagerClientResponder.h create mode 100644 ReactAndroid/src/main/jni/packagerconnection/OnLoad.cpp create mode 100644 ReactAndroid/src/main/jni/packagerconnection/SamplingProfilerJniMethod.cpp create mode 100644 ReactAndroid/src/main/jni/packagerconnection/SamplingProfilerJniMethod.h 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 5ea001faaaf8..9be5277daf2f 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevServerHelper.java +++ b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevServerHelper.java @@ -108,8 +108,8 @@ public interface OnServerContentChangeListener { public interface PackagerCommandListener { void onPackagerReloadCommand(); - void onCaptureHeapCommand(@Nullable final Responder responder); - void onPokeSamplingProfilerCommand(@Nullable final Responder responder); + void onCaptureHeapCommand(final Responder responder); + void onPokeSamplingProfilerCommand(final Responder responder); } public interface SymbolicationListener { 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 028f52411ad6..b65cc8cd8141 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerImpl.java +++ b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerImpl.java @@ -45,6 +45,7 @@ import com.facebook.react.modules.debug.interfaces.DeveloperSettings; import com.facebook.react.packagerconnection.JSPackagerClient; import com.facebook.react.packagerconnection.Responder; +import com.facebook.react.packagerconnection.SamplingProfilerPackagerMethod; import java.io.File; import java.io.IOException; @@ -433,7 +434,7 @@ public void onOptionSelected() { new DevOptionHandler() { @Override public void onOptionSelected() { - handlePokeSamplingProfiler(null); + handlePokeSamplingProfiler(); } }); options.put( @@ -690,11 +691,17 @@ public void run() { } @Override - public void onPokeSamplingProfilerCommand(@Nullable final Responder responder) { + public void onPokeSamplingProfilerCommand(final Responder responder) { UiThreadUtil.runOnUiThread(new Runnable() { @Override public void run() { - handlePokeSamplingProfiler(responder); + if (mCurrentContext == null) { + responder.error("JSCContext is missing, unable to profile"); + return; + } + SamplingProfilerPackagerMethod method = + new SamplingProfilerPackagerMethod(mCurrentContext.getJavaScriptContext()); + method.onRequest(null, responder); } }); } @@ -719,7 +726,7 @@ public void onFailure(JSCHeapCapture.CaptureException error) { }); } - private void handlePokeSamplingProfiler(@Nullable final Responder responder) { + private void handlePokeSamplingProfiler() { try { List pokeResults = JSCSamplingProfiler.poke(60000); for (String result : pokeResults) { @@ -729,16 +736,9 @@ private void handlePokeSamplingProfiler(@Nullable final Responder responder) { ? "Started JSC Sampling Profiler" : "Stopped JSC Sampling Profiler", Toast.LENGTH_LONG).show(); - if (responder != null) { - // Responder is provided, so there is a client waiting our response - responder.respond(result == null ? "started" : result); - } else if (result != null) { - // The profile was not initiated by external client, so process the - // profile if there is one in the result - new JscProfileTask(getSourceUrl()).executeOnExecutor( - AsyncTask.THREAD_POOL_EXECUTOR, - result); - } + new JscProfileTask(getSourceUrl()).executeOnExecutor( + AsyncTask.THREAD_POOL_EXECUTOR, + result); } } catch (JSCSamplingProfiler.ProfilerException e) { showNewJavaError(e.getMessage(), e); diff --git a/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/BUCK b/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/BUCK index 25f321388946..0fd14fabaace 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/BUCK +++ b/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/BUCK @@ -7,12 +7,16 @@ android_library( "PUBLIC", ], deps = [ + react_native_dep("java/com/facebook/jni:jni"), + react_native_dep("java/com/facebook/proguard/annotations:annotations"), react_native_dep("libraries/fbcore/src/main/java/com/facebook/common/logging:logging"), + react_native_dep("libraries/soloader/java/com/facebook/soloader:soloader"), react_native_dep("third-party/java/infer-annotations:infer-annotations"), react_native_dep("third-party/java/jsr-305:jsr-305"), react_native_dep("third-party/java/okhttp:okhttp3"), react_native_dep("third-party/java/okhttp:okhttp3-ws"), react_native_dep("third-party/java/okio:okio"), react_native_target("java/com/facebook/react/modules/systeminfo:systeminfo-moduleless"), + react_native_target("jni/packagerconnection:jni"), ], ) diff --git a/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/SamplingProfilerPackagerMethod.java b/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/SamplingProfilerPackagerMethod.java new file mode 100644 index 000000000000..a4457d739394 --- /dev/null +++ b/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/SamplingProfilerPackagerMethod.java @@ -0,0 +1,55 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +package com.facebook.react.packagerconnection; + +import javax.annotation.Nullable; + +import android.os.Looper; + +import com.facebook.jni.HybridData; +import com.facebook.proguard.annotations.DoNotStrip; +import com.facebook.soloader.SoLoader; + +public class SamplingProfilerPackagerMethod extends RequestOnlyHandler { + static { + SoLoader.loadLibrary("packagerconnectionjnifb"); + } + + final private static class SamplingProfilerJniMethod { + + @DoNotStrip + private final HybridData mHybridData; + + public SamplingProfilerJniMethod(long javaScriptContext) { + if (Looper.myLooper() == null) { + Looper.prepare(); + } + + mHybridData = initHybrid(javaScriptContext); + } + + @DoNotStrip + private native void poke(Responder responder); + + @DoNotStrip + private static native HybridData initHybrid(long javaScriptContext); + } + + private SamplingProfilerJniMethod mJniMethod; + + public SamplingProfilerPackagerMethod(long javaScriptContext) { + mJniMethod = new SamplingProfilerJniMethod(javaScriptContext); + } + + @Override + public void onRequest(@Nullable Object params, Responder responder) { + mJniMethod.poke(responder); + } +} diff --git a/ReactAndroid/src/main/jni/packagerconnection/Android.mk b/ReactAndroid/src/main/jni/packagerconnection/Android.mk new file mode 100644 index 000000000000..ba09a7e689d4 --- /dev/null +++ b/ReactAndroid/src/main/jni/packagerconnection/Android.mk @@ -0,0 +1,29 @@ +LOCAL_PATH := $(call my-dir) + +include $(CLEAR_VARS) + +LOCAL_MODULE := packagerconnectionjnifb + +LOCAL_SRC_FILES := \ + JSPackagerClientResponder.h \ + SamplingProfilerPackagerMethod.cpp \ + +LOCAL_C_INCLUDES := $(LOCAL_PATH) +LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../ + +LOCAL_CFLAGS += -Wall -Werror -fvisibility=hidden -fexceptions -frtti +CXX11_FLAGS := -std=c++11 +LOCAL_CFLAGS += $(CXX11_FLAGS) +LOCAL_EXPORT_CPPFLAGS := $(CXX11_FLAGS) + +LOCAL_LDLIBS += -landroid +LOCAL_SHARED_LIBRARIES := libfolly_json libfbjni libjsc libglog_init + +include $(BUILD_SHARED_LIBRARY) + +$(call import-module,fb) +$(call import-module,jsc) +$(call import-module,folly) +$(call import-module,fbgloginit) +$(call import-module,jni) +$(call import-module,jscwrapper) diff --git a/ReactAndroid/src/main/jni/packagerconnection/BUCK b/ReactAndroid/src/main/jni/packagerconnection/BUCK new file mode 100644 index 000000000000..1572a253f653 --- /dev/null +++ b/ReactAndroid/src/main/jni/packagerconnection/BUCK @@ -0,0 +1,35 @@ +include_defs("//ReactAndroid/DEFS") + +cxx_library( + name = "jni", + srcs = glob(["*.cpp"]), + compiler_flags = [ + "-Wall", + "-Werror", + "-fexceptions", + "-std=c++1y", + "-frtti", + ], + header_namespace = "", + headers = glob( + ["*.h"], + ), + preprocessor_flags = [ + "-DLOG_TAG=\"PackagerConnectionJNI\"", + "-DWITH_FBSYSTRACE=1", + "-DWITH_INSPECTOR=1", + ], + soname = "libpackagerconnectionjnifb.$(ext)", + visibility = [ + "PUBLIC", + ], + xcode_public_headers_symlinks = True, + deps = JSC_DEPS + [ + "//native/fb:fb", + "//native/third-party/android-ndk:android", + "//xplat/folly:molly", + "//xplat/fbgloginit:fbgloginit", + "//xplat/fbsystrace:fbsystrace", + react_native_xplat_target("jschelpers:jschelpers"), + ], +) diff --git a/ReactAndroid/src/main/jni/packagerconnection/JSPackagerClientResponder.cpp b/ReactAndroid/src/main/jni/packagerconnection/JSPackagerClientResponder.cpp new file mode 100644 index 000000000000..786af299cc75 --- /dev/null +++ b/ReactAndroid/src/main/jni/packagerconnection/JSPackagerClientResponder.cpp @@ -0,0 +1,32 @@ +// Copyright 2004-present Facebook. All Rights Reserved. + +#include "JSPackagerClientResponder.h" + +#include + +using namespace facebook::jni; + +namespace facebook { +namespace react { + +void JSPackagerClientResponder::respond(alias_ref result) { + static auto method = + javaClassStatic()->getMethod)>("respond"); + method(self(), result); +} + +void JSPackagerClientResponder::respond(const std::string &result) { + respond(LocalString(result).string()); +} + +void JSPackagerClientResponder::error(alias_ref result) { + static auto method = + javaClassStatic()->getMethod)>("error"); + method(self(), result); +} + +void JSPackagerClientResponder::error(const std::string &result) { + error(LocalString(result).string()); +} +} +} diff --git a/ReactAndroid/src/main/jni/packagerconnection/JSPackagerClientResponder.h b/ReactAndroid/src/main/jni/packagerconnection/JSPackagerClientResponder.h new file mode 100644 index 000000000000..243a409c78c0 --- /dev/null +++ b/ReactAndroid/src/main/jni/packagerconnection/JSPackagerClientResponder.h @@ -0,0 +1,22 @@ +// Copyright 2004-present Facebook. All Rights Reserved. + +#include + +namespace facebook { +namespace react { + +class JSPackagerClientResponder + : public jni::JavaClass { +public: + static constexpr auto kJavaDescriptor = + "Lcom/facebook/react/packagerconnection/Responder;"; + + void respond(jni::alias_ref result); + void respond(const std::string& result); + + void error(jni::alias_ref result); + void error(const std::string& result); +}; + +} +} diff --git a/ReactAndroid/src/main/jni/packagerconnection/OnLoad.cpp b/ReactAndroid/src/main/jni/packagerconnection/OnLoad.cpp new file mode 100644 index 000000000000..d9b6b8cad443 --- /dev/null +++ b/ReactAndroid/src/main/jni/packagerconnection/OnLoad.cpp @@ -0,0 +1,17 @@ +// Copyright 2004-present Facebook. All Rights Reserved. + +#include +#include + +#include "SamplingProfilerJniMethod.h" + +using namespace facebook::jni; + +namespace facebook { +namespace react { + +extern "C" JNIEXPORT jint JNI_OnLoad(JavaVM *vm, void *reserved) { + return initialize(vm, [] { SamplingProfilerJniMethod::registerNatives(); }); +} +} +} diff --git a/ReactAndroid/src/main/jni/packagerconnection/SamplingProfilerJniMethod.cpp b/ReactAndroid/src/main/jni/packagerconnection/SamplingProfilerJniMethod.cpp new file mode 100644 index 000000000000..3d4eb28ac4b4 --- /dev/null +++ b/ReactAndroid/src/main/jni/packagerconnection/SamplingProfilerJniMethod.cpp @@ -0,0 +1,50 @@ +// Copyright 2004-present Facebook. All Rights Reserved. + +#include "SamplingProfilerJniMethod.h" + +#include +#include + +using namespace facebook::jni; + +namespace facebook { +namespace react { + +/* static */ jni::local_ref +SamplingProfilerJniMethod::initHybrid(jni::alias_ref, + jlong javaScriptContext) { + return makeCxxInstance(javaScriptContext); +} + +/* static */ void SamplingProfilerJniMethod::registerNatives() { + registerHybrid( + {makeNativeMethod("initHybrid", SamplingProfilerJniMethod::initHybrid), + makeNativeMethod("poke", SamplingProfilerJniMethod::poke)}); +} + +SamplingProfilerJniMethod::SamplingProfilerJniMethod(jlong javaScriptContext) { + context_ = reinterpret_cast(javaScriptContext); +} + +void SamplingProfilerJniMethod::poke( + jni::alias_ref responder) { + if (!JSC_JSSamplingProfilerEnabled(context_)) { + responder->error("The JSSamplingProfiler is disabled. See this " + "https://fburl.com/u4lw7xeq for some help"); + return; + } + + JSValueRef jsResult = JSC_JSPokeSamplingProfiler(context_); + if (JSC_JSValueGetType(context_, jsResult) == kJSTypeNull) { + responder->respond("started"); + } else { + JSStringRef resultStrRef = JSValueToStringCopy(context_, jsResult, nullptr); + size_t length = JSStringGetLength(resultStrRef); + char buffer[length + 1]; + JSStringGetUTF8CString(resultStrRef, buffer, length + 1); + JSStringRelease(resultStrRef); + responder->respond(buffer); + } +} +} +} diff --git a/ReactAndroid/src/main/jni/packagerconnection/SamplingProfilerJniMethod.h b/ReactAndroid/src/main/jni/packagerconnection/SamplingProfilerJniMethod.h new file mode 100644 index 000000000000..070b27124138 --- /dev/null +++ b/ReactAndroid/src/main/jni/packagerconnection/SamplingProfilerJniMethod.h @@ -0,0 +1,35 @@ +// Copyright 2004-present Facebook. All Rights Reserved. + +#include +#include +#include +#include + +#include "JSPackagerClientResponder.h" + +namespace facebook { +namespace react { + +class SamplingProfilerJniMethod + : public jni::HybridClass { +public: + static constexpr auto kJavaDescriptor = + "Lcom/facebook/react/packagerconnection/" + "SamplingProfilerPackagerMethod$SamplingProfilerJniMethod;"; + + static jni::local_ref initHybrid(jni::alias_ref jthis, + jlong javaScriptContext); + + static void registerNatives(); + +private: + friend HybridBase; + + explicit SamplingProfilerJniMethod(jlong javaScriptContext); + + void poke(jni::alias_ref responder); + + JSGlobalContextRef context_; +}; +} +} From 621148d72475b5bcd0d8a0ed429dc17e6c576fdf Mon Sep 17 00:00:00 2001 From: Lukas Piatkowski Date: Wed, 10 May 2017 03:46:47 -0700 Subject: [PATCH 0037/1101] Extract bundle download logic from DevServerHelper to BundleDownloader Reviewed By: cwdick Differential Revision: D4729058 fbshipit-source-id: 6ffbe4dbd916ac7ac6afffba2cf070aab9cb87b9 --- .../react/devsupport/BundleDownloader.java | 187 ++++++++++++++++++ .../react/devsupport/DevServerHelper.java | 175 +--------------- .../devsupport/DevSupportManagerImpl.java | 4 +- 3 files changed, 196 insertions(+), 170 deletions(-) create mode 100644 ReactAndroid/src/main/java/com/facebook/react/devsupport/BundleDownloader.java diff --git a/ReactAndroid/src/main/java/com/facebook/react/devsupport/BundleDownloader.java b/ReactAndroid/src/main/java/com/facebook/react/devsupport/BundleDownloader.java new file mode 100644 index 000000000000..85dc5c23693f --- /dev/null +++ b/ReactAndroid/src/main/java/com/facebook/react/devsupport/BundleDownloader.java @@ -0,0 +1,187 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +package com.facebook.react.devsupport; + +import javax.annotation.Nullable; + +import java.io.File; +import java.io.IOException; +import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import com.facebook.common.logging.FLog; +import com.facebook.infer.annotation.Assertions; +import com.facebook.react.common.ReactConstants; + +import org.json.JSONException; +import org.json.JSONObject; + +import okhttp3.Call; +import okhttp3.Callback; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; +import okio.Buffer; +import okio.BufferedSource; +import okio.Okio; +import okio.Sink; + +public class BundleDownloader { + public interface DownloadCallback { + void onSuccess(); + void onProgress(@Nullable String status, @Nullable Integer done, @Nullable Integer total); + void onFailure(Exception cause); + } + + private final OkHttpClient mClient; + + private @Nullable Call mDownloadBundleFromURLCall; + + public BundleDownloader(OkHttpClient client) { + mClient = client; + } + + public void downloadBundleFromURL( + final DownloadCallback callback, + final File outputFile, + final String bundleURL) { + final Request request = new Request.Builder() + .url(bundleURL) + .addHeader("Accept", "multipart/mixed") + .build(); + mDownloadBundleFromURLCall = Assertions.assertNotNull(mClient.newCall(request)); + mDownloadBundleFromURLCall.enqueue(new Callback() { + @Override + public void onFailure(Call call, IOException e) { + // ignore callback if call was cancelled + if (mDownloadBundleFromURLCall == null || mDownloadBundleFromURLCall.isCanceled()) { + mDownloadBundleFromURLCall = null; + return; + } + mDownloadBundleFromURLCall = null; + + callback.onFailure(DebugServerException.makeGeneric( + "Could not connect to development server.", + "URL: " + call.request().url().toString(), + e)); + } + + @Override + public void onResponse(Call call, final Response response) throws IOException { + // ignore callback if call was cancelled + if (mDownloadBundleFromURLCall == null || mDownloadBundleFromURLCall.isCanceled()) { + mDownloadBundleFromURLCall = null; + return; + } + mDownloadBundleFromURLCall = null; + + final String url = response.request().url().toString(); + + // Make sure the result is a multipart response and parse the boundary. + String contentType = response.header("content-type"); + Pattern regex = Pattern.compile("multipart/mixed;.*boundary=\"([^\"]+)\""); + Matcher match = regex.matcher(contentType); + if (match.find()) { + String boundary = match.group(1); + MultipartStreamReader bodyReader = new MultipartStreamReader(response.body().source(), boundary); + boolean completed = bodyReader.readAllParts(new MultipartStreamReader.ChunkCallback() { + @Override + public void execute(Map headers, Buffer body, boolean finished) throws IOException { + // This will get executed for every chunk of the multipart response. The last chunk + // (finished = true) will be the JS bundle, the other ones will be progress events + // encoded as JSON. + if (finished) { + // The http status code for each separate chunk is in the X-Http-Status header. + int status = response.code(); + if (headers.containsKey("X-Http-Status")) { + status = Integer.parseInt(headers.get("X-Http-Status")); + } + processBundleResult(url, status, body, outputFile, callback); + } else { + if (!headers.containsKey("Content-Type") || !headers.get("Content-Type").equals("application/json")) { + return; + } + try { + JSONObject progress = new JSONObject(body.readUtf8()); + String status = null; + if (progress.has("status")) { + status = progress.getString("status"); + } + Integer done = null; + if (progress.has("done")) { + done = progress.getInt("done"); + } + Integer total = null; + if (progress.has("total")) { + total = progress.getInt("total"); + } + callback.onProgress(status, done, total); + } catch (JSONException e) { + FLog.e(ReactConstants.TAG, "Error parsing progress JSON. " + e.toString()); + } + } + } + }); + if (!completed) { + callback.onFailure(new DebugServerException( + "Error while reading multipart response.\n\nResponse code: " + response.code() + "\n\n" + + "URL: " + call.request().url().toString() + "\n\n")); + } + } else { + // In case the server doesn't support multipart/mixed responses, fallback to normal download. + processBundleResult(url, response.code(), Okio.buffer(response.body().source()), outputFile, callback); + } + } + }); + } + + public void cancelDownloadBundleFromURL() { + if (mDownloadBundleFromURLCall != null) { + mDownloadBundleFromURLCall.cancel(); + mDownloadBundleFromURLCall = null; + } + } + + private void processBundleResult( + String url, + int statusCode, + BufferedSource body, + File outputFile, + DownloadCallback callback) throws IOException { + // Check for server errors. If the server error has the expected form, fail with more info. + if (statusCode != 200) { + String bodyString = body.readUtf8(); + DebugServerException debugServerException = DebugServerException.parse(bodyString); + if (debugServerException != null) { + callback.onFailure(debugServerException); + } else { + StringBuilder sb = new StringBuilder(); + sb.append("The development server returned response error code: ").append(statusCode).append("\n\n") + .append("URL: ").append(url).append("\n\n") + .append("Body:\n") + .append(bodyString); + callback.onFailure(new DebugServerException(sb.toString())); + } + return; + } + + Sink output = null; + try { + output = Okio.sink(outputFile); + body.readAll(output); + callback.onSuccess(); + } finally { + if (output != null) { + output.close(); + } + } + } +} 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 9be5277daf2f..e9889ebd487c 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevServerHelper.java +++ b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevServerHelper.java @@ -20,8 +20,6 @@ import java.util.Locale; import java.util.Map; import java.util.concurrent.TimeUnit; -import java.util.regex.Matcher; -import java.util.regex.Pattern; import android.content.Context; import android.os.AsyncTask; @@ -56,8 +54,6 @@ import okhttp3.RequestBody; import okhttp3.Response; import okhttp3.ResponseBody; -import okio.Buffer; -import okio.BufferedSource; import okio.Okio; import okio.Sink; @@ -96,12 +92,6 @@ public class DevServerHelper { private static final int LONG_POLL_FAILURE_DELAY_MS = 5000; private static final int HTTP_CONNECT_TIMEOUT_MS = 5000; - public interface BundleDownloadCallback { - void onSuccess(); - void onProgress(@Nullable String status, @Nullable Integer done, @Nullable Integer total); - void onFailure(Exception cause); - } - public interface OnServerContentChangeListener { void onServerContentChanged(); } @@ -119,13 +109,13 @@ public interface SymbolicationListener { private final DevInternalSettings mSettings; private final OkHttpClient mClient; private final Handler mRestartOnChangePollingHandler; + private final BundleDownloader mBundleDownloader; private boolean mOnChangePollingEnabled; private @Nullable JSPackagerClient mPackagerClient; private @Nullable InspectorPackagerConnection mInspectorPackagerConnection; private @Nullable OkHttpClient mOnChangePollingClient; private @Nullable OnServerContentChangeListener mOnServerContentChangeListener; - private @Nullable Call mDownloadBundleFromURLCall; public DevServerHelper(DevInternalSettings settings) { mSettings = settings; @@ -134,6 +124,7 @@ public DevServerHelper(DevInternalSettings settings) { .readTimeout(0, TimeUnit.MILLISECONDS) .writeTimeout(0, TimeUnit.MILLISECONDS) .build(); + mBundleDownloader = new BundleDownloader(mClient); mRestartOnChangePollingHandler = new Handler(); } @@ -146,8 +137,7 @@ public void openPackagerConnection(final PackagerCommandListener commandListener new AsyncTask() { @Override protected Void doInBackground(Void... backgroundParams) { - Map handlers = - new HashMap(); + Map handlers = new HashMap<>(); handlers.put("reload", new NotificationOnlyHandler() { @Override public void onNotification(@Nullable Object params) { @@ -322,6 +312,10 @@ public String getInspectorDeviceUrl() { AndroidInfoHelpers.getFriendlyDeviceName()); } + public BundleDownloader getBundleDownloader() { + return mBundleDownloader; + } + /** * @return the host to use when connecting to the bundle server from the host itself. */ @@ -380,161 +374,6 @@ public String getDevServerBundleURL(final String jsModulePath) { getJSMinifyMode()); } - public void downloadBundleFromURL( - final BundleDownloadCallback callback, - final File outputFile, - final String bundleURL) { - final Request request = new Request.Builder() - .url(bundleURL) - .addHeader("Accept", "multipart/mixed") - .build(); - mDownloadBundleFromURLCall = Assertions.assertNotNull(mClient.newCall(request)); - mDownloadBundleFromURLCall.enqueue(new Callback() { - @Override - public void onFailure(Call call, IOException e) { - // ignore callback if call was cancelled - if (mDownloadBundleFromURLCall == null || mDownloadBundleFromURLCall.isCanceled()) { - mDownloadBundleFromURLCall = null; - return; - } - mDownloadBundleFromURLCall = null; - - callback.onFailure(DebugServerException.makeGeneric( - "Could not connect to development server.", - "URL: " + call.request().url().toString(), - e)); - } - - @Override - public void onResponse(Call call, final Response response) throws IOException { - // ignore callback if call was cancelled - if (mDownloadBundleFromURLCall == null || mDownloadBundleFromURLCall.isCanceled()) { - mDownloadBundleFromURLCall = null; - return; - } - mDownloadBundleFromURLCall = null; - - final String url = response.request().url().toString(); - - // Make sure the result is a multipart response and parse the boundary. - String contentType = response.header("content-type"); - Pattern regex = Pattern.compile("multipart/mixed;.*boundary=\"([^\"]+)\""); - Matcher match = regex.matcher(contentType); - if (match.find()) { - String boundary = match.group(1); - MultipartStreamReader bodyReader = new MultipartStreamReader( - response.body().source(), - boundary); - boolean completed = bodyReader.readAllParts(new MultipartStreamReader.ChunkCallback() { - @Override - public void execute( - Map headers, - Buffer body, - boolean finished) throws IOException { - // This will get executed for every chunk of the multipart response. The last chunk - // (finished = true) will be the JS bundle, the other ones will be progress events - // encoded as JSON. - if (finished) { - // The http status code for each separate chunk is in the X-Http-Status header. - int status = response.code(); - if (headers.containsKey("X-Http-Status")) { - status = Integer.parseInt(headers.get("X-Http-Status")); - } - processBundleResult(url, status, body, outputFile, callback); - } else { - if (!headers.containsKey("Content-Type") || - !headers.get("Content-Type").equals("application/json")) { - return; - } - try { - JSONObject progress = new JSONObject(body.readUtf8()); - String status = null; - if (progress.has("status")) { - status = progress.getString("status"); - } - Integer done = null; - if (progress.has("done")) { - done = progress.getInt("done"); - } - Integer total = null; - if (progress.has("total")) { - total = progress.getInt("total"); - } - callback.onProgress(status, done, total); - } catch (JSONException e) { - FLog.e(ReactConstants.TAG, "Error parsing progress JSON. " + e.toString()); - } - } - } - }); - if (!completed) { - callback.onFailure(new DebugServerException( - "Error while reading multipart response.\n\nResponse code: " + - response.code() + "\n\n" + "URL: " + call.request().url().toString() + - "\n\n")); - } - } else { - /** - * In case the server doesn't support multipart/mixed responses, - * fallback to normal download. - */ - processBundleResult( - url, - response.code(), - Okio.buffer(response.body().source()), - outputFile, - callback); - } - } - }); - } - - private void processBundleResult( - String url, - int statusCode, - BufferedSource body, - File outputFile, - BundleDownloadCallback callback) throws IOException { - // Check for server errors. If the server error has the expected form, fail with more info. - if (statusCode != 200) { - String bodyString = body.readUtf8(); - DebugServerException debugServerException = DebugServerException.parse(bodyString); - if (debugServerException != null) { - callback.onFailure(debugServerException); - } else { - StringBuilder sb = new StringBuilder(); - sb.append("The development server returned response error code: ") - .append(statusCode) - .append("\n\n") - .append("URL: ") - .append(url) - .append("\n\n") - .append("Body:\n") - .append(bodyString); - callback.onFailure(new DebugServerException(sb.toString())); - } - return; - } - - Sink output = null; - try { - output = Okio.sink(outputFile); - body.readAll(output); - callback.onSuccess(); - } finally { - if (output != null) { - output.close(); - } - } - } - - public void cancelDownloadBundleFromURL() { - if (mDownloadBundleFromURLCall != null) { - mDownloadBundleFromURLCall.cancel(); - mDownloadBundleFromURLCall = null; - } - } - public void isPackagerRunning(final PackagerStatusCallback callback) { String statusURL = createPackagerStatusURL( mSettings.getPackagerConnectionSettings().getDebugServerHost()); 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 b65cc8cd8141..84c799e9fd29 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerImpl.java +++ b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerImpl.java @@ -809,8 +809,8 @@ public void reloadJSFromServer(final String bundleURL) { mDevLoadingViewController.showForUrl(bundleURL); mDevLoadingViewVisible = true; - mDevServerHelper.downloadBundleFromURL( - new DevServerHelper.BundleDownloadCallback() { + mDevServerHelper.getBundleDownloader().downloadBundleFromURL( + new BundleDownloader.DownloadCallback() { @Override public void onSuccess() { mDevLoadingViewController.hide(); From 5dcfb2c6ad6ea506ef0a1dc6aad4cb2cb83d973e Mon Sep 17 00:00:00 2001 From: Lukas Piatkowski Date: Wed, 10 May 2017 03:46:49 -0700 Subject: [PATCH 0038/1101] Add SamplingProfilerMethod to CSDevelopmentGlobalStateManager Reviewed By: cwdick Differential Revision: D5010523 fbshipit-source-id: ad602dfae039e0cbb7c62d42d75a93d1aa2d3aa4 --- .../java/com/facebook/react/devsupport/DevServerHelper.java | 5 +++-- .../com/facebook/react/devsupport/DevSupportManagerImpl.java | 2 +- 2 files changed, 4 insertions(+), 3 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 e9889ebd487c..100c52b275a7 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevServerHelper.java +++ b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevServerHelper.java @@ -129,7 +129,8 @@ public DevServerHelper(DevInternalSettings settings) { mRestartOnChangePollingHandler = new Handler(); } - public void openPackagerConnection(final PackagerCommandListener commandListener) { + public void openPackagerConnection( + final String clientId, final PackagerCommandListener commandListener) { if (mPackagerClient != null) { FLog.w(ReactConstants.TAG, "Packager connection already open, nooping."); return; @@ -159,7 +160,7 @@ public void onRequest(@Nullable Object params, Responder responder) { handlers.putAll(new FileIoHandler().handlers()); mPackagerClient = new JSPackagerClient( - "devserverhelper", + clientId, mSettings.getPackagerConnectionSettings(), handlers); mPackagerClient.init(); 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 84c799e9fd29..816ddcdf24aa 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerImpl.java +++ b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerImpl.java @@ -882,7 +882,7 @@ private void reload() { mDevLoadingViewController.show(); } - mDevServerHelper.openPackagerConnection(this); + mDevServerHelper.openPackagerConnection(this.getClass().getSimpleName(), this); mDevServerHelper.openInspectorConnection(); if (mDevSettings.isReloadOnJSChangeEnabled()) { mDevServerHelper.startPollingOnChangeEndpoint( From 65f22a51905c26bf388a7c9d6710e3d875ad832a Mon Sep 17 00:00:00 2001 From: Ben Nham Date: Wed, 10 May 2017 03:48:13 -0700 Subject: [PATCH 0039/1101] log script name with bundle loading perf event Reviewed By: javache Differential Revision: D5010638 fbshipit-source-id: 2e139201a8374245fa1dedc4f11a716dcf700fd7 --- React/CxxBridge/RCTCxxBridge.mm | 2 +- React/CxxBridge/RCTJSCHelpers.mm | 2 +- ReactAndroid/src/main/jni/xreact/jni/OnLoad.cpp | 13 ++++++++++--- ReactCommon/cxxreact/JSCExecutor.cpp | 9 ++++++++- ReactCommon/cxxreact/Platform.cpp | 7 ++++++- ReactCommon/cxxreact/Platform.h | 8 ++++++-- 6 files changed, 32 insertions(+), 9 deletions(-) diff --git a/React/CxxBridge/RCTCxxBridge.mm b/React/CxxBridge/RCTCxxBridge.mm index 3ac6cd33c5f8..ad3f209bc3ed 100644 --- a/React/CxxBridge/RCTCxxBridge.mm +++ b/React/CxxBridge/RCTCxxBridge.mm @@ -76,7 +76,7 @@ static bool isRAMBundle(NSData *script) { static void registerPerformanceLoggerHooks(RCTPerformanceLogger *performanceLogger) { __weak RCTPerformanceLogger *weakPerformanceLogger = performanceLogger; - ReactMarker::logMarker = [weakPerformanceLogger](const ReactMarker::ReactMarkerId markerId) { + ReactMarker::logTaggedMarker = [weakPerformanceLogger](const ReactMarker::ReactMarkerId markerId, const char* tag) { switch (markerId) { case ReactMarker::RUN_JS_BUNDLE_START: [weakPerformanceLogger markStartForTag:RCTPLScriptExecution]; diff --git a/React/CxxBridge/RCTJSCHelpers.mm b/React/CxxBridge/RCTJSCHelpers.mm index 831e1534f9fd..63c67acb6fdd 100644 --- a/React/CxxBridge/RCTJSCHelpers.mm +++ b/React/CxxBridge/RCTJSCHelpers.mm @@ -45,7 +45,7 @@ JSValueRef nativePerformanceNow( } void RCTPrepareJSCExecutor() { - ReactMarker::logMarker = [](const ReactMarker::ReactMarkerId) {}; + ReactMarker::logTaggedMarker = [](const ReactMarker::ReactMarkerId, const char* tag) {}; PerfLogging::installNativeHooks = RCTFBQuickPerformanceLoggerConfigureHooks; JSNativeHooks::loggingHook = nativeLoggingHook; JSNativeHooks::nowHook = nativePerformanceNow; diff --git a/ReactAndroid/src/main/jni/xreact/jni/OnLoad.cpp b/ReactAndroid/src/main/jni/xreact/jni/OnLoad.cpp index ea33bef9a56f..f576955a1ef8 100644 --- a/ReactAndroid/src/main/jni/xreact/jni/OnLoad.cpp +++ b/ReactAndroid/src/main/jni/xreact/jni/OnLoad.cpp @@ -84,11 +84,18 @@ class ProxyJavaScriptExecutorHolder : public HybridClass { public: static constexpr auto kJavaDescriptor = "Lcom/facebook/react/bridge/ReactMarker;"; + static void logMarker(const std::string& marker) { static auto cls = javaClassStatic(); static auto meth = cls->getStaticMethod("logMarker"); meth(cls, marker); } + + static void logMarker(const std::string& marker, const std::string& tag) { + static auto cls = javaClassStatic(); + static auto meth = cls->getStaticMethod("logMarker"); + meth(cls, marker, tag); + } }; static JSValueRef nativePerformanceNow( @@ -113,10 +120,10 @@ static JSValueRef nativePerformanceNow( return Value::makeNumber(ctx, (nano / (double)NANOSECONDS_IN_MILLISECOND)); } -static void logPerfMarker(const ReactMarker::ReactMarkerId markerId) { +static void logPerfMarker(const ReactMarker::ReactMarkerId markerId, const char* tag) { switch (markerId) { case ReactMarker::RUN_JS_BUNDLE_START: - JReactMarker::logMarker("RUN_JS_BUNDLE_START"); + JReactMarker::logMarker("RUN_JS_BUNDLE_START", tag); break; case ReactMarker::RUN_JS_BUNDLE_STOP: JReactMarker::logMarker("RUN_JS_BUNDLE_END"); @@ -143,7 +150,7 @@ extern "C" JNIEXPORT jint JNI_OnLoad(JavaVM* vm, void* reserved) { return initialize(vm, [] { gloginit::initialize(); // Inject some behavior into react/ - ReactMarker::logMarker = logPerfMarker; + ReactMarker::logTaggedMarker = logPerfMarker; PerfLogging::installNativeHooks = addNativePerfLoggingHooks; JSNativeHooks::loggingHook = nativeLoggingHook; JSNativeHooks::nowHook = nativePerformanceNow; diff --git a/ReactCommon/cxxreact/JSCExecutor.cpp b/ReactCommon/cxxreact/JSCExecutor.cpp index 8c86db591b42..0a43f1eb8d17 100644 --- a/ReactCommon/cxxreact/JSCExecutor.cpp +++ b/ReactCommon/cxxreact/JSCExecutor.cpp @@ -292,11 +292,18 @@ static const char* explainLoadSourceStatus(JSLoadSourceStatus status) { } #endif +// basename_r isn't in all iOS SDKs, so use this simple version instead. +static std::string simpleBasename(const std::string &path) { + size_t pos = path.rfind("/"); + return (pos != std::string::npos) ? path.substr(pos) : path; +} + void JSCExecutor::loadApplicationScript(std::unique_ptr script, std::string sourceURL) { SystraceSection s("JSCExecutor::loadApplicationScript", "sourceURL", sourceURL); - ReactMarker::logMarker(ReactMarker::RUN_JS_BUNDLE_START); + std::string scriptName = simpleBasename(sourceURL); + ReactMarker::logTaggedMarker(ReactMarker::RUN_JS_BUNDLE_START, scriptName.c_str()); String jsSourceURL(m_context, sourceURL.c_str()); // TODO t15069155: reduce the number of overrides here diff --git a/ReactCommon/cxxreact/Platform.cpp b/ReactCommon/cxxreact/Platform.cpp index 06863296300b..60d894c46958 100644 --- a/ReactCommon/cxxreact/Platform.cpp +++ b/ReactCommon/cxxreact/Platform.cpp @@ -6,7 +6,12 @@ namespace facebook { namespace react { namespace ReactMarker { -LogMarker logMarker; +LogTaggedMarker logTaggedMarker; + +void logMarker(const ReactMarkerId markerId) { + logTaggedMarker(markerId, nullptr); +} + }; namespace PerfLogging { diff --git a/ReactCommon/cxxreact/Platform.h b/ReactCommon/cxxreact/Platform.h index 8297b1cfb7bc..011d20401a61 100644 --- a/ReactCommon/cxxreact/Platform.h +++ b/ReactCommon/cxxreact/Platform.h @@ -23,8 +23,12 @@ enum ReactMarkerId { JS_BUNDLE_STRING_CONVERT_START, JS_BUNDLE_STRING_CONVERT_STOP, }; -using LogMarker = std::function; -extern LogMarker logMarker; + +using LogTaggedMarker = std::function; +extern LogTaggedMarker logTaggedMarker; + +extern void logMarker(const ReactMarkerId markerId); + }; namespace PerfLogging { From 885856c6a1cc0e848699f71c2175bfd90933b2b9 Mon Sep 17 00:00:00 2001 From: Pieter De Baets Date: Wed, 10 May 2017 04:24:24 -0700 Subject: [PATCH 0040/1101] More attempts to fix Travis CI runs Summary: * Add RCTBridge+Private to exported headers for unit tests * Fix tvOS build Closes https://github.com/facebook/react-native/pull/13840 Reviewed By: ericvicenti Differential Revision: D5027887 Pulled By: javache fbshipit-source-id: 7a17ee2f84eb1cb87e71373444ef25559959c24a --- .../Image/RCTImage.xcodeproj/project.pbxproj | 10 +- RNTester/RNTester.xcodeproj/project.pbxproj | 6 - .../RCTEventDispatcherTests.m | 1 - React/React.xcodeproj/project.pbxproj | 447 ++++++++++++++---- .../{folly.xcconfig => third-party.xcconfig} | 0 ios-cc.sh | 3 - package.json | 4 +- scripts/ios-configure-glog.sh | 26 + .../ios-install-third-party.sh | 4 +- 9 files changed, 393 insertions(+), 108 deletions(-) rename React/{folly.xcconfig => third-party.xcconfig} (100%) delete mode 100755 ios-cc.sh create mode 100755 scripts/ios-configure-glog.sh rename ios-install-third-party.sh => scripts/ios-install-third-party.sh (87%) diff --git a/Libraries/Image/RCTImage.xcodeproj/project.pbxproj b/Libraries/Image/RCTImage.xcodeproj/project.pbxproj index 1a5b63a2ff76..4745f20e877d 100644 --- a/Libraries/Image/RCTImage.xcodeproj/project.pbxproj +++ b/Libraries/Image/RCTImage.xcodeproj/project.pbxproj @@ -317,7 +317,6 @@ CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_SUSPICIOUS_MOVES = YES; - DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_TESTABILITY = YES; GCC_NO_COMMON_BLOCKS = YES; OTHER_LDFLAGS = "-ObjC"; @@ -336,7 +335,6 @@ CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_SUSPICIOUS_MOVES = YES; COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; GCC_NO_COMMON_BLOCKS = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -447,9 +445,7 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_STATIC_ANALYZER_MODE = deep; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - ); + LIBRARY_SEARCH_PATHS = "$(inherited)"; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = RCTImage; PUBLIC_HEADERS_FOLDER_PATH = /usr/local/include/RCTImage; @@ -461,9 +457,7 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_STATIC_ANALYZER_MODE = deep; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - ); + LIBRARY_SEARCH_PATHS = "$(inherited)"; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = RCTImage; PUBLIC_HEADERS_FOLDER_PATH = /usr/local/include/RCTImage; diff --git a/RNTester/RNTester.xcodeproj/project.pbxproj b/RNTester/RNTester.xcodeproj/project.pbxproj index 1b12544dbb81..f6d299921af8 100644 --- a/RNTester/RNTester.xcodeproj/project.pbxproj +++ b/RNTester/RNTester.xcodeproj/project.pbxproj @@ -33,7 +33,6 @@ 144D21241B2204C5006DB32B /* RCTImageUtilTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 144D21231B2204C5006DB32B /* RCTImageUtilTests.m */; }; 147CED4C1AB3532B00DA3E4C /* libRCTActionSheet.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 147CED4B1AB34F8C00DA3E4C /* libRCTActionSheet.a */; }; 1497CFAC1B21F5E400C1F8F2 /* RCTAllocationTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 1497CFA41B21F5E400C1F8F2 /* RCTAllocationTests.m */; }; - 1497CFAD1B21F5E400C1F8F2 /* RCTBridgeTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 1497CFA51B21F5E400C1F8F2 /* RCTBridgeTests.m */; }; 1497CFAF1B21F5E400C1F8F2 /* RCTConvert_NSURLTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 1497CFA71B21F5E400C1F8F2 /* RCTConvert_NSURLTests.m */; }; 1497CFB01B21F5E400C1F8F2 /* RCTFontTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 1497CFA81B21F5E400C1F8F2 /* RCTFontTests.m */; }; 1497CFB11B21F5E400C1F8F2 /* RCTEventDispatcherTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 1497CFA91B21F5E400C1F8F2 /* RCTEventDispatcherTests.m */; }; @@ -70,7 +69,6 @@ 2D4BD8D21DA2E20D005AC8A8 /* RCTURLUtilsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B6C1A21C34225900D3FAF5 /* RCTURLUtilsTests.m */; }; 2D4BD8D31DA2E20D005AC8A8 /* RCTBundleURLProviderTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 68FF44371CF6111500720EFD /* RCTBundleURLProviderTests.m */; }; 2D4BD8D41DA2E20D005AC8A8 /* RCTAllocationTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 1497CFA41B21F5E400C1F8F2 /* RCTAllocationTests.m */; }; - 2D4BD8D51DA2E20D005AC8A8 /* RCTBridgeTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 1497CFA51B21F5E400C1F8F2 /* RCTBridgeTests.m */; }; 2D4BD8D71DA2E20D005AC8A8 /* RCTConvert_NSURLTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 1497CFA71B21F5E400C1F8F2 /* RCTConvert_NSURLTests.m */; }; 2D4BD8D81DA2E20D005AC8A8 /* RCTFontTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 1497CFA81B21F5E400C1F8F2 /* RCTFontTests.m */; }; 2D4BD8D91DA2E20D005AC8A8 /* RCTEventDispatcherTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 1497CFA91B21F5E400C1F8F2 /* RCTEventDispatcherTests.m */; }; @@ -421,7 +419,6 @@ 143BC5A01B21E45C00462512 /* RNTesterSnapshotTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RNTesterSnapshotTests.m; sourceTree = ""; }; 144D21231B2204C5006DB32B /* RCTImageUtilTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTImageUtilTests.m; sourceTree = ""; }; 1497CFA41B21F5E400C1F8F2 /* RCTAllocationTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTAllocationTests.m; sourceTree = ""; }; - 1497CFA51B21F5E400C1F8F2 /* RCTBridgeTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTBridgeTests.m; sourceTree = ""; }; 1497CFA71B21F5E400C1F8F2 /* RCTConvert_NSURLTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTConvert_NSURLTests.m; sourceTree = ""; }; 1497CFA81B21F5E400C1F8F2 /* RCTFontTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTFontTests.m; sourceTree = ""; }; 1497CFA91B21F5E400C1F8F2 /* RCTEventDispatcherTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTEventDispatcherTests.m; sourceTree = ""; }; @@ -688,7 +685,6 @@ 13B6C1A21C34225900D3FAF5 /* RCTURLUtilsTests.m */, 68FF44371CF6111500720EFD /* RCTBundleURLProviderTests.m */, 1497CFA41B21F5E400C1F8F2 /* RCTAllocationTests.m */, - 1497CFA51B21F5E400C1F8F2 /* RCTBridgeTests.m */, 1497CFA71B21F5E400C1F8F2 /* RCTConvert_NSURLTests.m */, 1497CFA81B21F5E400C1F8F2 /* RCTFontTests.m */, 1497CFA91B21F5E400C1F8F2 /* RCTEventDispatcherTests.m */, @@ -1474,7 +1470,6 @@ 1497CFAF1B21F5E400C1F8F2 /* RCTConvert_NSURLTests.m in Sources */, 13129DD41C85F87C007D611C /* RCTModuleInitNotificationRaceTests.m in Sources */, 192F69B81E82409A008692C7 /* RCTAnimationUtilsTests.m in Sources */, - 1497CFAD1B21F5E400C1F8F2 /* RCTBridgeTests.m in Sources */, 134CB92A1C85A38800265FA6 /* RCTModuleInitTests.m in Sources */, 192F69BA1E82409A008692C7 /* RCTNativeAnimatedNodesManagerTests.m in Sources */, 1497CFB11B21F5E400C1F8F2 /* RCTEventDispatcherTests.m in Sources */, @@ -1547,7 +1542,6 @@ buildActionMask = 2147483647; files = ( 2D4BD8DC1DA2E20D005AC8A8 /* RCTImageLoaderTests.m in Sources */, - 2D4BD8D51DA2E20D005AC8A8 /* RCTBridgeTests.m in Sources */, 2D4BD8D91DA2E20D005AC8A8 /* RCTEventDispatcherTests.m in Sources */, 2D4BD8D41DA2E20D005AC8A8 /* RCTAllocationTests.m in Sources */, 2D4BD8DA1DA2E20D005AC8A8 /* RCTGzipTests.m in Sources */, diff --git a/RNTester/RNTesterUnitTests/RCTEventDispatcherTests.m b/RNTester/RNTesterUnitTests/RCTEventDispatcherTests.m index fc4dc7772995..f58fd45ac0e5 100644 --- a/RNTester/RNTesterUnitTests/RCTEventDispatcherTests.m +++ b/RNTester/RNTesterUnitTests/RCTEventDispatcherTests.m @@ -13,7 +13,6 @@ #import -#import #import @interface RCTTestEvent : NSObject diff --git a/React/React.xcodeproj/project.pbxproj b/React/React.xcodeproj/project.pbxproj index 29ddbfc9c8a9..cba41a935f29 100644 --- a/React/React.xcodeproj/project.pbxproj +++ b/React/React.xcodeproj/project.pbxproj @@ -20,7 +20,6 @@ 130443DC1E401AF400D93A67 /* RCTConvert+Transform.h in Headers */ = {isa = PBXBuildFile; fileRef = 130443C31E401A8C00D93A67 /* RCTConvert+Transform.h */; }; 130443DD1E401AF500D93A67 /* RCTConvert+Transform.h in Headers */ = {isa = PBXBuildFile; fileRef = 130443C31E401A8C00D93A67 /* RCTConvert+Transform.h */; }; 130443DE1E401B0D00D93A67 /* RCTTVView.h in Headers */ = {isa = PBXBuildFile; fileRef = 130443D61E401AD800D93A67 /* RCTTVView.h */; }; - 130443DF1E401B0D00D93A67 /* RCTTVView.m in Sources */ = {isa = PBXBuildFile; fileRef = 130443D71E401AD800D93A67 /* RCTTVView.m */; }; 130E3D881E6A082100ACE484 /* RCTDevSettings.h in Headers */ = {isa = PBXBuildFile; fileRef = 130E3D861E6A082100ACE484 /* RCTDevSettings.h */; }; 130E3D891E6A082100ACE484 /* RCTDevSettings.mm in Sources */ = {isa = PBXBuildFile; fileRef = 130E3D871E6A082100ACE484 /* RCTDevSettings.mm */; }; 130E3D8A1E6A083600ACE484 /* RCTDevSettings.h in Headers */ = {isa = PBXBuildFile; fileRef = 130E3D861E6A082100ACE484 /* RCTDevSettings.h */; }; @@ -153,7 +152,6 @@ 13EBC6821E28733C00880AC5 /* Value.h in Headers */ = {isa = PBXBuildFile; fileRef = 3D92B10D1E0369AD0018521A /* Value.h */; }; 13F17A851B8493E5007D4C75 /* RCTRedBox.m in Sources */ = {isa = PBXBuildFile; fileRef = 13F17A841B8493E5007D4C75 /* RCTRedBox.m */; }; 13F880381E296D2800C3C7A1 /* JSCWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 3D7A27DE1DE32541002E3F95 /* JSCWrapper.h */; }; - 13F880411E29709F00C3C7A1 /* libdouble-conversion.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 139D7E881E25C6D100323FB7 /* libdouble-conversion.a */; }; 13F887581E2971D400C3C7A1 /* Demangle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 13F887521E2971C500C3C7A1 /* Demangle.cpp */; }; 13F887591E2971D400C3C7A1 /* StringBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 13F887531E2971C500C3C7A1 /* StringBase.cpp */; }; 13F8875A1E2971D400C3C7A1 /* Unicode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 13F887541E2971C500C3C7A1 /* Unicode.cpp */; }; @@ -348,6 +346,17 @@ 3D0976D61E9739F000B9C6DD /* RCTBridge+JavaScriptCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 3D0976D41E9739ED00B9C6DD /* RCTBridge+JavaScriptCore.h */; }; 3D0976D71E9739FB00B9C6DD /* RCTBridge+JavaScriptCore.h in Copy Headers */ = {isa = PBXBuildFile; fileRef = 3D0976D41E9739ED00B9C6DD /* RCTBridge+JavaScriptCore.h */; }; 3D0976D81E973A0200B9C6DD /* RCTBridge+JavaScriptCore.h in Copy Headers */ = {isa = PBXBuildFile; fileRef = 3D0976D41E9739ED00B9C6DD /* RCTBridge+JavaScriptCore.h */; }; + 3D0B84221EC0B3F600B2BD8E /* RCTResizeMode.h in Copy Headers */ = {isa = PBXBuildFile; fileRef = 3D1FA0851DE4F3A000E03CC6 /* RCTResizeMode.h */; }; + 3D0B84231EC0B40D00B2BD8E /* RCTImageLoader.h in Copy Headers */ = {isa = PBXBuildFile; fileRef = 3D1FA0831DE4F3A000E03CC6 /* RCTImageLoader.h */; }; + 3D0B84241EC0B40D00B2BD8E /* RCTImageStoreManager.h in Copy Headers */ = {isa = PBXBuildFile; fileRef = 3D1FA0841DE4F3A000E03CC6 /* RCTImageStoreManager.h */; }; + 3D0B84251EC0B42600B2BD8E /* RCTNetworking.h in Copy Headers */ = {isa = PBXBuildFile; fileRef = 3D1FA07A1DE4F2EA00E03CC6 /* RCTNetworking.h */; }; + 3D0B84261EC0B42600B2BD8E /* RCTNetworkTask.h in Copy Headers */ = {isa = PBXBuildFile; fileRef = 3D1FA07B1DE4F2EA00E03CC6 /* RCTNetworkTask.h */; }; + 3D0B84271EC0B45400B2BD8E /* RCTLinkingManager.h in Copy Headers */ = {isa = PBXBuildFile; fileRef = 3D1FA08B1DE4F4DD00E03CC6 /* RCTLinkingManager.h */; }; + 3D0B842A1EC0B49400B2BD8E /* RCTTVRemoteHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 3D0B84281EC0B49400B2BD8E /* RCTTVRemoteHandler.h */; }; + 3D0B842B1EC0B49400B2BD8E /* RCTTVRemoteHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D0B84291EC0B49400B2BD8E /* RCTTVRemoteHandler.m */; }; + 3D0B842C1EC0B4EA00B2BD8E /* RCTTVView.m in Sources */ = {isa = PBXBuildFile; fileRef = 130443D71E401AD800D93A67 /* RCTTVView.m */; }; + 3D0B842F1EC0B51200B2BD8E /* RCTTVNavigationEventEmitter.h in Headers */ = {isa = PBXBuildFile; fileRef = 3D0B842D1EC0B51200B2BD8E /* RCTTVNavigationEventEmitter.h */; }; + 3D0B84301EC0B51200B2BD8E /* RCTTVNavigationEventEmitter.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D0B842E1EC0B51200B2BD8E /* RCTTVNavigationEventEmitter.m */; }; 3D1E68DB1CABD13900DD7465 /* RCTDisplayLink.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D1E68D91CABD13900DD7465 /* RCTDisplayLink.m */; }; 3D302F1E1DF8265A00D6DDAE /* JavaScriptCore.h in Copy Headers */ = {isa = PBXBuildFile; fileRef = 3D7A27DC1DE32541002E3F95 /* JavaScriptCore.h */; }; 3D302F1F1DF8265A00D6DDAE /* JSCWrapper.h in Copy Headers */ = {isa = PBXBuildFile; fileRef = 3D7A27DE1DE32541002E3F95 /* JSCWrapper.h */; }; @@ -464,6 +473,59 @@ 3D3030251DF8295E00D6DDAE /* JavaScriptCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 3D7A27DC1DE32541002E3F95 /* JavaScriptCore.h */; }; 3D3030261DF8295E00D6DDAE /* JSCWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 3D7A27DE1DE32541002E3F95 /* JSCWrapper.h */; }; 3D37B5821D522B190042D5B5 /* RCTFont.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3D37B5811D522B190042D5B5 /* RCTFont.mm */; }; + 3D383D1F1EBD27A8005632C8 /* RCTBridge+Private.h in Copy Headers */ = {isa = PBXBuildFile; fileRef = 14A43DB81C1F849600794BC8 /* RCTBridge+Private.h */; }; + 3D383D201EBD27AF005632C8 /* RCTBridge+Private.h in Copy Headers */ = {isa = PBXBuildFile; fileRef = 14A43DB81C1F849600794BC8 /* RCTBridge+Private.h */; }; + 3D383D251EBD27B6005632C8 /* Conv.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 139D849F1E273B5600323FB7 /* Conv.cpp */; }; + 3D383D261EBD27B6005632C8 /* StringBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 13F887531E2971C500C3C7A1 /* StringBase.cpp */; }; + 3D383D271EBD27B6005632C8 /* raw_logging.cc in Sources */ = {isa = PBXBuildFile; fileRef = 139D7EDB1E25DBDC00323FB7 /* raw_logging.cc */; }; + 3D383D281EBD27B6005632C8 /* signalhandler.cc in Sources */ = {isa = PBXBuildFile; fileRef = 139D7EDC1E25DBDC00323FB7 /* signalhandler.cc */; }; + 3D383D291EBD27B6005632C8 /* dynamic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 139D84A21E273B5600323FB7 /* dynamic.cpp */; }; + 3D383D2A1EBD27B6005632C8 /* utilities.cc in Sources */ = {isa = PBXBuildFile; fileRef = 139D7EE01E25DBDC00323FB7 /* utilities.cc */; }; + 3D383D2B1EBD27B6005632C8 /* MallocImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 13F887A01E2977D800C3C7A1 /* MallocImpl.cpp */; }; + 3D383D2C1EBD27B6005632C8 /* Bits.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 139D849D1E273B5600323FB7 /* Bits.cpp */; }; + 3D383D2D1EBD27B6005632C8 /* symbolize.cc in Sources */ = {isa = PBXBuildFile; fileRef = 139D7EDE1E25DBDC00323FB7 /* symbolize.cc */; }; + 3D383D2E1EBD27B6005632C8 /* vlog_is_on.cc in Sources */ = {isa = PBXBuildFile; fileRef = 139D7EE21E25DBDC00323FB7 /* vlog_is_on.cc */; }; + 3D383D2F1EBD27B6005632C8 /* Unicode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 13F887541E2971C500C3C7A1 /* Unicode.cpp */; }; + 3D383D301EBD27B6005632C8 /* demangle.cc in Sources */ = {isa = PBXBuildFile; fileRef = 139D7F081E25DE3700323FB7 /* demangle.cc */; }; + 3D383D311EBD27B6005632C8 /* Demangle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 13F887521E2971C500C3C7A1 /* Demangle.cpp */; }; + 3D383D321EBD27B6005632C8 /* File.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 139D84A51E273B5600323FB7 /* File.cpp */; }; + 3D383D331EBD27B6005632C8 /* logging.cc in Sources */ = {isa = PBXBuildFile; fileRef = 139D7EDA1E25DBDC00323FB7 /* logging.cc */; }; + 3D383D341EBD27B6005632C8 /* json.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 139D84A71E273B5600323FB7 /* json.cpp */; }; + 3D383D351EBD27B6005632C8 /* BitsFunctexcept.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 13F8879C1E29740700C3C7A1 /* BitsFunctexcept.cpp */; }; + 3D383D401EBD27B9005632C8 /* bignum-dtoa.cc in Sources */ = {isa = PBXBuildFile; fileRef = 139D7E391E25C5A300323FB7 /* bignum-dtoa.cc */; }; + 3D383D411EBD27B9005632C8 /* bignum.cc in Sources */ = {isa = PBXBuildFile; fileRef = 139D7E3B1E25C5A300323FB7 /* bignum.cc */; }; + 3D383D421EBD27B9005632C8 /* cached-powers.cc in Sources */ = {isa = PBXBuildFile; fileRef = 139D7E3D1E25C5A300323FB7 /* cached-powers.cc */; }; + 3D383D431EBD27B9005632C8 /* diy-fp.cc in Sources */ = {isa = PBXBuildFile; fileRef = 139D7E3F1E25C5A300323FB7 /* diy-fp.cc */; }; + 3D383D441EBD27B9005632C8 /* double-conversion.cc in Sources */ = {isa = PBXBuildFile; fileRef = 139D7E411E25C5A300323FB7 /* double-conversion.cc */; }; + 3D383D451EBD27B9005632C8 /* fast-dtoa.cc in Sources */ = {isa = PBXBuildFile; fileRef = 139D7E431E25C5A300323FB7 /* fast-dtoa.cc */; }; + 3D383D461EBD27B9005632C8 /* fixed-dtoa.cc in Sources */ = {isa = PBXBuildFile; fileRef = 139D7E451E25C5A300323FB7 /* fixed-dtoa.cc */; }; + 3D383D471EBD27B9005632C8 /* strtod.cc in Sources */ = {isa = PBXBuildFile; fileRef = 139D7E481E25C5A300323FB7 /* strtod.cc */; }; + 3D383D4A1EBD27B9005632C8 /* bignum-dtoa.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 139D7E3A1E25C5A300323FB7 /* bignum-dtoa.h */; }; + 3D383D4B1EBD27B9005632C8 /* bignum.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 139D7E3C1E25C5A300323FB7 /* bignum.h */; }; + 3D383D4C1EBD27B9005632C8 /* cached-powers.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 139D7E3E1E25C5A300323FB7 /* cached-powers.h */; }; + 3D383D4D1EBD27B9005632C8 /* diy-fp.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 139D7E401E25C5A300323FB7 /* diy-fp.h */; }; + 3D383D4E1EBD27B9005632C8 /* double-conversion.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 139D7E421E25C5A300323FB7 /* double-conversion.h */; }; + 3D383D4F1EBD27B9005632C8 /* fast-dtoa.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 139D7E441E25C5A300323FB7 /* fast-dtoa.h */; }; + 3D383D501EBD27B9005632C8 /* fixed-dtoa.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 139D7E461E25C5A300323FB7 /* fixed-dtoa.h */; }; + 3D383D511EBD27B9005632C8 /* ieee.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 139D7E471E25C5A300323FB7 /* ieee.h */; }; + 3D383D521EBD27B9005632C8 /* strtod.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 139D7E491E25C5A300323FB7 /* strtod.h */; }; + 3D383D531EBD27B9005632C8 /* utils.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 139D7E4A1E25C5A300323FB7 /* utils.h */; }; + 3D383D551EBD27B9005632C8 /* bignum-dtoa.h in Headers */ = {isa = PBXBuildFile; fileRef = 139D7E3A1E25C5A300323FB7 /* bignum-dtoa.h */; }; + 3D383D561EBD27B9005632C8 /* bignum.h in Headers */ = {isa = PBXBuildFile; fileRef = 139D7E3C1E25C5A300323FB7 /* bignum.h */; }; + 3D383D571EBD27B9005632C8 /* cached-powers.h in Headers */ = {isa = PBXBuildFile; fileRef = 139D7E3E1E25C5A300323FB7 /* cached-powers.h */; }; + 3D383D581EBD27B9005632C8 /* diy-fp.h in Headers */ = {isa = PBXBuildFile; fileRef = 139D7E401E25C5A300323FB7 /* diy-fp.h */; }; + 3D383D591EBD27B9005632C8 /* double-conversion.h in Headers */ = {isa = PBXBuildFile; fileRef = 139D7E421E25C5A300323FB7 /* double-conversion.h */; }; + 3D383D5A1EBD27B9005632C8 /* fast-dtoa.h in Headers */ = {isa = PBXBuildFile; fileRef = 139D7E441E25C5A300323FB7 /* fast-dtoa.h */; }; + 3D383D5B1EBD27B9005632C8 /* fixed-dtoa.h in Headers */ = {isa = PBXBuildFile; fileRef = 139D7E461E25C5A300323FB7 /* fixed-dtoa.h */; }; + 3D383D5C1EBD27B9005632C8 /* ieee.h in Headers */ = {isa = PBXBuildFile; fileRef = 139D7E471E25C5A300323FB7 /* ieee.h */; }; + 3D383D5D1EBD27B9005632C8 /* strtod.h in Headers */ = {isa = PBXBuildFile; fileRef = 139D7E491E25C5A300323FB7 /* strtod.h */; }; + 3D383D5E1EBD27B9005632C8 /* utils.h in Headers */ = {isa = PBXBuildFile; fileRef = 139D7E4A1E25C5A300323FB7 /* utils.h */; }; + 3D383D6D1EBD2940005632C8 /* libdouble-conversion.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 139D7E881E25C6D100323FB7 /* libdouble-conversion.a */; }; + 3D383D6E1EBD2940005632C8 /* libjschelpers.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3D3CD90B1DE5FBD600167DC4 /* libjschelpers.a */; }; + 3D383D6F1EBD2940005632C8 /* libthird-party.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 139D7ECE1E25DB7D00323FB7 /* libthird-party.a */; }; + 3D383D701EBD2949005632C8 /* libdouble-conversion.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3D383D621EBD27B9005632C8 /* libdouble-conversion.a */; }; + 3D383D711EBD2949005632C8 /* libjschelpers.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3D3CD9181DE5FBD800167DC4 /* libjschelpers.a */; }; + 3D383D721EBD2949005632C8 /* libthird-party.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3D383D3C1EBD27B6005632C8 /* libthird-party.a */; }; 3D3C08891DE342FB00C268FA /* libyoga.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3D3C059A1DE3340900C268FA /* libyoga.a */; }; 3D3CD93D1DE5FC1400167DC4 /* JavaScriptCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 3D7A27DC1DE32541002E3F95 /* JavaScriptCore.h */; }; 3D3CD93E1DE5FC1400167DC4 /* JSCWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 3D7A27DE1DE32541002E3F95 /* JSCWrapper.h */; }; @@ -733,9 +795,6 @@ 3D80DA921DF820620028D040 /* RCTWrapperViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 13B080231A694A8400A75B9A /* RCTWrapperViewController.h */; }; 3D80DA931DF820620028D040 /* UIView+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 83F15A171B7CC46900F10295 /* UIView+Private.h */; }; 3D80DA941DF820620028D040 /* UIView+React.h in Headers */ = {isa = PBXBuildFile; fileRef = 13E067531A70F44B002CDEE1 /* UIView+React.h */; }; - 3D8ED9271E5B11D800D83D20 /* libdouble-conversion.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 139D7E881E25C6D100323FB7 /* libdouble-conversion.a */; }; - 3D8ED9281E5B11D800D83D20 /* libjschelpers.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3D3CD90B1DE5FBD600167DC4 /* libjschelpers.a */; }; - 3D8ED9291E5B11D800D83D20 /* libthird-party.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 139D7ECE1E25DB7D00323FB7 /* libthird-party.a */; }; 3D8ED92C1E5B120100D83D20 /* libcxxreact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3D3CD9321DE5FBEE00167DC4 /* libcxxreact.a */; }; 3D8ED92D1E5B120100D83D20 /* libyoga.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3D3C06751DE3340C00C268FA /* libyoga.a */; }; 3DA9819E1E5B0DBB004F2374 /* NSDataBigString.h in Headers */ = {isa = PBXBuildFile; fileRef = 3D7454B31E54786200E74ADD /* NSDataBigString.h */; }; @@ -835,7 +894,6 @@ 3DA982051E5B0F7F004F2374 /* RCTComponent.h in Copy Headers */ = {isa = PBXBuildFile; fileRef = 13C325281AA63B6A0048765F /* RCTComponent.h */; }; 3DA982061E5B0F7F004F2374 /* RCTComponentData.h in Copy Headers */ = {isa = PBXBuildFile; fileRef = 13AB90BF1B6FA36700713B4F /* RCTComponentData.h */; }; 3DA982071E5B0F7F004F2374 /* RCTConvert+CoreLocation.h in Copy Headers */ = {isa = PBXBuildFile; fileRef = 13456E911ADAD2DE009F94A7 /* RCTConvert+CoreLocation.h */; }; - 3DA982091E5B0F7F004F2374 /* RCTConvert+Transform.h in Copy Headers */ = {isa = PBXBuildFile; fileRef = 130443C31E401A8C00D93A67 /* RCTConvert+Transform.h */; }; 3DA9820A1E5B0F7F004F2374 /* RCTDatePicker.h in Copy Headers */ = {isa = PBXBuildFile; fileRef = 133CAE8C1B8E5CFD00F6AD92 /* RCTDatePicker.h */; }; 3DA9820B1E5B0F7F004F2374 /* RCTDatePickerManager.h in Copy Headers */ = {isa = PBXBuildFile; fileRef = 58C571C01AA56C1900CDF9C8 /* RCTDatePickerManager.h */; }; 3DA9820C1E5B0F7F004F2374 /* RCTFont.h in Copy Headers */ = {isa = PBXBuildFile; fileRef = 3D37B5801D522B190042D5B5 /* RCTFont.h */; }; @@ -1019,6 +1077,20 @@ remoteGlobalIDString = 3D3CD9261DE5FBEE00167DC4; remoteInfo = "cxxreact-tvOS"; }; + 3D383D631EBD27CE005632C8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 3D383D211EBD27B6005632C8; + remoteInfo = "third-party-tvOS"; + }; + 3D383D651EBD27DB005632C8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 3D383D3D1EBD27B9005632C8; + remoteInfo = "double-conversion-tvOS"; + }; 3D3CD94B1DE5FCE700167DC4 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; @@ -1069,15 +1141,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 139D7ECC1E25DB7D00323FB7 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; 3D302E191DF8249100D6DDAE /* Copy Headers */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; @@ -1086,6 +1149,13 @@ files = ( 59EB6DC01EBD70130072A5E7 /* RCTUIManagerObserverCoordinator.h in Copy Headers */, 59B1EBCA1EBD47520047B19B /* RCTShadowView+Layout.h in Copy Headers */, + 3D0B84271EC0B45400B2BD8E /* RCTLinkingManager.h in Copy Headers */, + 3D0B84251EC0B42600B2BD8E /* RCTNetworking.h in Copy Headers */, + 3D0B84261EC0B42600B2BD8E /* RCTNetworkTask.h in Copy Headers */, + 3D0B84231EC0B40D00B2BD8E /* RCTImageLoader.h in Copy Headers */, + 3D0B84241EC0B40D00B2BD8E /* RCTImageStoreManager.h in Copy Headers */, + 3D0B84221EC0B3F600B2BD8E /* RCTResizeMode.h in Copy Headers */, + 3D383D201EBD27AF005632C8 /* RCTBridge+Private.h in Copy Headers */, 3D7BFD351EA8E43F008DFB7A /* RCTDevSettings.h in Copy Headers */, 3D7BFD331EA8E433008DFB7A /* RCTPackagerClient.h in Copy Headers */, 3D0976D71E9739FB00B9C6DD /* RCTBridge+JavaScriptCore.h in Copy Headers */, @@ -1119,7 +1189,6 @@ 3DA982051E5B0F7F004F2374 /* RCTComponent.h in Copy Headers */, 3DA982061E5B0F7F004F2374 /* RCTComponentData.h in Copy Headers */, 3DA982071E5B0F7F004F2374 /* RCTConvert+CoreLocation.h in Copy Headers */, - 3DA982091E5B0F7F004F2374 /* RCTConvert+Transform.h in Copy Headers */, 3DA9820A1E5B0F7F004F2374 /* RCTDatePicker.h in Copy Headers */, 3DA9820B1E5B0F7F004F2374 /* RCTDatePickerManager.h in Copy Headers */, 3DA9820C1E5B0F7F004F2374 /* RCTFont.h in Copy Headers */, @@ -1272,6 +1341,25 @@ name = "Copy Headers"; runOnlyForDeploymentPostprocessing = 0; }; + 3D383D491EBD27B9005632C8 /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + 3D383D4A1EBD27B9005632C8 /* bignum-dtoa.h in CopyFiles */, + 3D383D4B1EBD27B9005632C8 /* bignum.h in CopyFiles */, + 3D383D4C1EBD27B9005632C8 /* cached-powers.h in CopyFiles */, + 3D383D4D1EBD27B9005632C8 /* diy-fp.h in CopyFiles */, + 3D383D4E1EBD27B9005632C8 /* double-conversion.h in CopyFiles */, + 3D383D4F1EBD27B9005632C8 /* fast-dtoa.h in CopyFiles */, + 3D383D501EBD27B9005632C8 /* fixed-dtoa.h in CopyFiles */, + 3D383D511EBD27B9005632C8 /* ieee.h in CopyFiles */, + 3D383D521EBD27B9005632C8 /* strtod.h in CopyFiles */, + 3D383D531EBD27B9005632C8 /* utils.h in CopyFiles */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 3D80D91E1DF6FA530028D040 /* Copy Headers */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; @@ -1280,6 +1368,7 @@ files = ( 59EB6DBF1EBD6FFC0072A5E7 /* RCTUIManagerObserverCoordinator.h in Copy Headers */, 59B1EBC91EBD46250047B19B /* RCTShadowView+Layout.h in Copy Headers */, + 3D383D1F1EBD27A8005632C8 /* RCTBridge+Private.h in Copy Headers */, 3D7BFD311EA8E41F008DFB7A /* RCTPackagerClient.h in Copy Headers */, 3D7BFD291EA8E37B008DFB7A /* RCTDevSettings.h in Copy Headers */, 3D0976D81E973A0200B9C6DD /* RCTBridge+JavaScriptCore.h in Copy Headers */, @@ -1507,7 +1596,6 @@ 131B6AF11AF1093D00FFC3E0 /* RCTSegmentedControl.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTSegmentedControl.m; sourceTree = ""; }; 131B6AF21AF1093D00FFC3E0 /* RCTSegmentedControlManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTSegmentedControlManager.h; sourceTree = ""; }; 131B6AF31AF1093D00FFC3E0 /* RCTSegmentedControlManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTSegmentedControlManager.m; sourceTree = ""; }; - 132008221E2845E700F0C457 /* folly.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = folly.xcconfig; sourceTree = ""; }; 133CAE8C1B8E5CFD00F6AD92 /* RCTDatePicker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTDatePicker.h; sourceTree = ""; }; 133CAE8D1B8E5CFD00F6AD92 /* RCTDatePicker.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTDatePicker.m; sourceTree = ""; }; 13442BF21AA90E0B0037E5B0 /* RCTAnimationType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTAnimationType.h; sourceTree = ""; }; @@ -1706,6 +1794,10 @@ 391E86A21C623EC800009732 /* RCTTouchEvent.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTTouchEvent.m; sourceTree = ""; }; 391E86A31C623EC800009732 /* RCTTouchEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTTouchEvent.h; sourceTree = ""; }; 3D0976D41E9739ED00B9C6DD /* RCTBridge+JavaScriptCore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "RCTBridge+JavaScriptCore.h"; sourceTree = ""; }; + 3D0B84281EC0B49400B2BD8E /* RCTTVRemoteHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTTVRemoteHandler.h; sourceTree = ""; }; + 3D0B84291EC0B49400B2BD8E /* RCTTVRemoteHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTTVRemoteHandler.m; sourceTree = ""; }; + 3D0B842D1EC0B51200B2BD8E /* RCTTVNavigationEventEmitter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTTVNavigationEventEmitter.h; sourceTree = ""; }; + 3D0B842E1EC0B51200B2BD8E /* RCTTVNavigationEventEmitter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTTVNavigationEventEmitter.m; sourceTree = ""; }; 3D1E68D81CABD13900DD7465 /* RCTDisplayLink.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTDisplayLink.h; sourceTree = ""; }; 3D1E68D91CABD13900DD7465 /* RCTDisplayLink.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTDisplayLink.m; sourceTree = ""; }; 3D1FA07A1DE4F2EA00E03CC6 /* RCTNetworking.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTNetworking.h; sourceTree = ""; }; @@ -1717,6 +1809,8 @@ 3D1FA08D1DE4F4EE00E03CC6 /* RCTPushNotificationManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RCTPushNotificationManager.h; path = PushNotificationIOS/RCTPushNotificationManager.h; sourceTree = ""; }; 3D37B5801D522B190042D5B5 /* RCTFont.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = RCTFont.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; 3D37B5811D522B190042D5B5 /* RCTFont.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = RCTFont.mm; sourceTree = ""; }; + 3D383D3C1EBD27B6005632C8 /* libthird-party.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libthird-party.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 3D383D621EBD27B9005632C8 /* libdouble-conversion.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libdouble-conversion.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 3D3C059A1DE3340900C268FA /* libyoga.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libyoga.a; sourceTree = BUILT_PRODUCTS_DIR; }; 3D3C06751DE3340C00C268FA /* libyoga.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libyoga.a; sourceTree = BUILT_PRODUCTS_DIR; }; 3D3CD8F51DE5FB2300167DC4 /* JSBundleType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSBundleType.h; sourceTree = ""; }; @@ -1729,6 +1823,7 @@ 3D7454B31E54786200E74ADD /* NSDataBigString.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NSDataBigString.h; sourceTree = ""; }; 3D7749421DC1065C007EC8D8 /* RCTPlatform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTPlatform.h; sourceTree = ""; }; 3D7749431DC1065C007EC8D8 /* RCTPlatform.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTPlatform.m; sourceTree = ""; }; + 3D788F841EBD2D240063D616 /* third-party.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = "third-party.xcconfig"; sourceTree = ""; }; 3D7A27DC1DE32541002E3F95 /* JavaScriptCore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JavaScriptCore.h; sourceTree = ""; }; 3D7A27DD1DE32541002E3F95 /* JSCWrapper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSCWrapper.cpp; sourceTree = ""; }; 3D7A27DE1DE32541002E3F95 /* JSCWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSCWrapper.h; sourceTree = ""; }; @@ -1861,25 +1956,13 @@ /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 139D7E851E25C6D100323FB7 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 139D7ECB1E25DB7D00323FB7 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 13F880411E29709F00C3C7A1 /* libdouble-conversion.a in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 3D3C08881DE342EE00C268FA /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 3D383D6D1EBD2940005632C8 /* libdouble-conversion.a in Frameworks */, + 3D383D6E1EBD2940005632C8 /* libjschelpers.a in Frameworks */, + 3D383D6F1EBD2940005632C8 /* libthird-party.a in Frameworks */, 3D3CD9411DE5FC5300167DC4 /* libcxxreact.a in Frameworks */, 3D3C08891DE342FB00C268FA /* libyoga.a in Frameworks */, ); @@ -1889,21 +1972,14 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 3D383D701EBD2949005632C8 /* libdouble-conversion.a in Frameworks */, + 3D383D711EBD2949005632C8 /* libjschelpers.a in Frameworks */, + 3D383D721EBD2949005632C8 /* libthird-party.a in Frameworks */, 3D8ED92C1E5B120100D83D20 /* libcxxreact.a in Frameworks */, 3D8ED92D1E5B120100D83D20 /* libyoga.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 3D8ED9261E5B11CB00D83D20 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 3D8ED9271E5B11D800D83D20 /* libdouble-conversion.a in Frameworks */, - 3D8ED9281E5B11D800D83D20 /* libjschelpers.a in Frameworks */, - 3D8ED9291E5B11D800D83D20 /* libthird-party.a in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ @@ -2086,6 +2162,8 @@ 13723B4F1A82FD3C00F88898 /* RCTStatusBarManager.m */, 13B07FED1A69327A00A75B9A /* RCTTiming.h */, 13B07FEE1A69327A00A75B9A /* RCTTiming.m */, + 3D0B842D1EC0B51200B2BD8E /* RCTTVNavigationEventEmitter.h */, + 3D0B842E1EC0B51200B2BD8E /* RCTTVNavigationEventEmitter.m */, 13E067481A70F434002CDEE1 /* RCTUIManager.h */, 13E067491A70F434002CDEE1 /* RCTUIManager.m */, 59EB6DB91EBD6FC90072A5E7 /* RCTUIManagerObserverCoordinator.h */, @@ -2336,7 +2414,6 @@ 83CBB9F61A601CBA00E9B192 = { isa = PBXGroup; children = ( - 132008221E2845E700F0C457 /* folly.xcconfig */, 83CBBA2F1A601D0F00E9B192 /* React */, 3D10A3C71DDF3CED004A0F9D /* ReactCommon */, 3D1FA0781DE4F2CD00E03CC6 /* Libraries */, @@ -2360,6 +2437,8 @@ 3D3CD9321DE5FBEE00167DC4 /* libcxxreact.a */, 139D7E881E25C6D100323FB7 /* libdouble-conversion.a */, 139D7ECE1E25DB7D00323FB7 /* libthird-party.a */, + 3D383D3C1EBD27B6005632C8 /* libthird-party.a */, + 3D383D621EBD27B9005632C8 /* libdouble-conversion.a */, ); name = Products; sourceTree = ""; @@ -2375,6 +2454,7 @@ 13B07FE01A69315300A75B9A /* Modules */, 1450FF7F1BCFF28A00208362 /* Profiler */, 13B07FF31A6947C200A75B9A /* Views */, + 3D788F841EBD2D240063D616 /* third-party.xcconfig */, ); name = React; sourceTree = ""; @@ -2446,6 +2526,8 @@ 391E86A21C623EC800009732 /* RCTTouchEvent.m */, 83CBBA961A6020BB00E9B192 /* RCTTouchHandler.h */, 83CBBA971A6020BB00E9B192 /* RCTTouchHandler.m */, + 3D0B84281EC0B49400B2BD8E /* RCTTVRemoteHandler.h */, + 3D0B84291EC0B49400B2BD8E /* RCTTVRemoteHandler.m */, 1345A83A1B265A0E00583190 /* RCTURLRequestDelegate.h */, 1345A83B1B265A0E00583190 /* RCTURLRequestHandler.h */, 83CBBA4F1A601E3B00E9B192 /* RCTUtils.h */, @@ -2564,6 +2646,7 @@ 3D302F311DF828F800D6DDAE /* RCTBundleURLProvider.h in Headers */, 3D302F321DF828F800D6DDAE /* RCTConvert.h in Headers */, 3D302F331DF828F800D6DDAE /* RCTDefines.h in Headers */, + 3D0B842F1EC0B51200B2BD8E /* RCTTVNavigationEventEmitter.h in Headers */, 3D302F341DF828F800D6DDAE /* RCTDisplayLink.h in Headers */, 3D302F351DF828F800D6DDAE /* RCTErrorCustomizer.h in Headers */, 3D302F361DF828F800D6DDAE /* RCTErrorInfo.h in Headers */, @@ -2602,6 +2685,7 @@ 3D302F581DF828F800D6DDAE /* RCTAsyncLocalStorage.h in Headers */, 3D302F591DF828F800D6DDAE /* RCTClipboard.h in Headers */, 3D302F5A1DF828F800D6DDAE /* RCTDevLoadingView.h in Headers */, + 3D0B842A1EC0B49400B2BD8E /* RCTTVRemoteHandler.h in Headers */, 3D302F5B1DF828F800D6DDAE /* RCTDevMenu.h in Headers */, 3D302F5C1DF828F800D6DDAE /* RCTEventEmitter.h in Headers */, 3D302F5D1DF828F800D6DDAE /* RCTExceptionsManager.h in Headers */, @@ -2729,6 +2813,23 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 3D383D541EBD27B9005632C8 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 3D383D551EBD27B9005632C8 /* bignum-dtoa.h in Headers */, + 3D383D561EBD27B9005632C8 /* bignum.h in Headers */, + 3D383D571EBD27B9005632C8 /* cached-powers.h in Headers */, + 3D383D581EBD27B9005632C8 /* diy-fp.h in Headers */, + 3D383D591EBD27B9005632C8 /* double-conversion.h in Headers */, + 3D383D5A1EBD27B9005632C8 /* fast-dtoa.h in Headers */, + 3D383D5B1EBD27B9005632C8 /* fixed-dtoa.h in Headers */, + 3D383D5C1EBD27B9005632C8 /* ieee.h in Headers */, + 3D383D5D1EBD27B9005632C8 /* strtod.h in Headers */, + 3D383D5E1EBD27B9005632C8 /* utils.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 3D3C04BB1DE3340900C268FA /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -2945,10 +3046,9 @@ buildConfigurationList = 139D7E8E1E25C6D100323FB7 /* Build configuration list for PBXNativeTarget "double-conversion" */; buildPhases = ( 190EE32F1E6A43DE00A8543A /* Install Third Party */, + 139D7EA41E25C7BD00323FB7 /* Headers */, 139D7E841E25C6D100323FB7 /* Sources */, - 139D7E851E25C6D100323FB7 /* Frameworks */, 139D7E861E25C6D100323FB7 /* CopyFiles */, - 139D7EA41E25C7BD00323FB7 /* Headers */, ); buildRules = ( ); @@ -2964,8 +3064,6 @@ buildConfigurationList = 139D7ED41E25DB7D00323FB7 /* Build configuration list for PBXNativeTarget "third-party" */; buildPhases = ( 139D7ECA1E25DB7D00323FB7 /* Sources */, - 139D7ECB1E25DB7D00323FB7 /* Frameworks */, - 139D7ECC1E25DB7D00323FB7 /* CopyFiles */, ); buildRules = ( ); @@ -2999,6 +3097,40 @@ productReference = 2D2A28131D9B038B00D4039D /* libReact.a */; productType = "com.apple.product-type.library.static"; }; + 3D383D211EBD27B6005632C8 /* third-party-tvOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = 3D383D391EBD27B6005632C8 /* Build configuration list for PBXNativeTarget "third-party-tvOS" */; + buildPhases = ( + 3D383D241EBD27B6005632C8 /* Sources */, + ); + buildRules = ( + ); + dependencies = ( + 3D383D661EBD27DB005632C8 /* PBXTargetDependency */, + ); + name = "third-party-tvOS"; + productName = "third-party"; + productReference = 3D383D3C1EBD27B6005632C8 /* libthird-party.a */; + productType = "com.apple.product-type.library.static"; + }; + 3D383D3D1EBD27B9005632C8 /* double-conversion-tvOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = 3D383D5F1EBD27B9005632C8 /* Build configuration list for PBXNativeTarget "double-conversion-tvOS" */; + buildPhases = ( + 3D383D3E1EBD27B9005632C8 /* Install Third Party */, + 3D383D541EBD27B9005632C8 /* Headers */, + 3D383D3F1EBD27B9005632C8 /* Sources */, + 3D383D491EBD27B9005632C8 /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "double-conversion-tvOS"; + productName = ThirdParty; + productReference = 3D383D621EBD27B9005632C8 /* libdouble-conversion.a */; + productType = "com.apple.product-type.library.static"; + }; 3D3C04B91DE3340900C268FA /* yoga */ = { isa = PBXNativeTarget; buildConfigurationList = 3D3C05971DE3340900C268FA /* Build configuration list for PBXNativeTarget "yoga" */; @@ -3062,6 +3194,7 @@ buildRules = ( ); dependencies = ( + 3D383D641EBD27CE005632C8 /* PBXTargetDependency */, ); name = "jschelpers-tvOS"; productName = "React-tvOS"; @@ -3075,7 +3208,6 @@ 3D3CD91A1DE5FBEC00167DC4 /* Headers */, 3D80DAB91DF821710028D040 /* Copy Headers */, 3D3CD91F1DE5FBEC00167DC4 /* Sources */, - 3D8ED9261E5B11CB00D83D20 /* Frameworks */, ); buildRules = ( ); @@ -3150,6 +3282,12 @@ CreatedOnToolsVersion = 8.0; ProvisioningStyle = Automatic; }; + 3D383D211EBD27B6005632C8 = { + DevelopmentTeam = V9WTTPBFK9; + }; + 3D383D3D1EBD27B9005632C8 = { + DevelopmentTeam = V9WTTPBFK9; + }; 83CBBA2D1A601D0E00E9B192 = { CreatedOnToolsVersion = 6.1.1; }; @@ -3177,7 +3315,9 @@ 3D3CD8FF1DE5FBD600167DC4 /* jschelpers */, 3D3CD90C1DE5FBD800167DC4 /* jschelpers-tvOS */, 139D7ECD1E25DB7D00323FB7 /* third-party */, + 3D383D211EBD27B6005632C8 /* third-party-tvOS */, 139D7E871E25C6D100323FB7 /* double-conversion */, + 3D383D3D1EBD27B9005632C8 /* double-conversion-tvOS */, ); }; /* End PBXProject section */ @@ -3225,7 +3365,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "cd $SRCROOT/..\n./ios-install-third-party.sh"; + shellScript = "cd $SRCROOT/..\nexec ./scripts/ios-install-third-party.sh"; }; 2D6948201DA3042200B3FA97 /* Include RCTJSCProfiler */ = { isa = PBXShellScriptBuildPhase; @@ -3257,6 +3397,20 @@ shellScript = "if [ -z \"${RCT_NO_LAUNCH_PACKAGER+xxx}\" ] ; then\nif nc -w 5 -z localhost 8081 ; then\nif ! curl -s \"http://localhost:8081/status\" | grep -q \"packager-status:running\" ; then\necho \"Port 8081 already in use, packager is either not running or not running correctly\"\nexit 2\nfi\nelse\nopen \"$SRCROOT/../packager/launchPackager.command\" || echo \"Can't start packager automatically\"\nfi\nfi"; showEnvVarsInLog = 0; }; + 3D383D3E1EBD27B9005632C8 /* Install Third Party */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Install Third Party"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "cd $SRCROOT/..\nexec ./scripts/ios-install-third-party.sh"; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -3326,7 +3480,6 @@ 2D3B5EE41D9B09BB00451313 /* RCTSegmentedControlManager.m in Sources */, 13134C9F1E296B2A00B9F3CB /* RCTCxxModule.mm in Sources */, 2D3B5EE31D9B09B700451313 /* RCTSegmentedControl.m in Sources */, - 130443DF1E401B0D00D93A67 /* RCTTVView.m in Sources */, 130443A41E3FEAC600D93A67 /* RCTFollyConvert.mm in Sources */, 3D7BFD201EA8E351008DFB7A /* RCTPackagerConnection.m in Sources */, 2D3B5EB71D9B091800451313 /* RCTRedBox.m in Sources */, @@ -3338,6 +3491,7 @@ 2D3B5EE01D9B09AD00451313 /* RCTRootShadowView.m in Sources */, 2D3B5EBA1D9B092100451313 /* RCTI18nUtil.m in Sources */, 2D3B5EB41D9B090A00451313 /* RCTDevLoadingView.m in Sources */, + 3D0B842C1EC0B4EA00B2BD8E /* RCTTVView.m in Sources */, 2D3B5EED1D9B09D700451313 /* RCTTabBarManager.m in Sources */, 2D3B5EEF1D9B09DC00451313 /* RCTViewManager.m in Sources */, 13134C971E296B2A00B9F3CB /* RCTObjcExecutor.mm in Sources */, @@ -3375,6 +3529,7 @@ 2D3B5EC81D9B095800451313 /* RCTActivityIndicatorViewManager.m in Sources */, 3DCD185D1DF978E7007FE5A1 /* RCTReloadCommand.m in Sources */, 130443DB1E401ADD00D93A67 /* RCTConvert+Transform.m in Sources */, + 3D0B84301EC0B51200B2BD8E /* RCTTVNavigationEventEmitter.m in Sources */, 2D3B5EC61D9B095000451313 /* RCTProfileTrampoline-x86_64.S in Sources */, 2D3B5EA61D9B08CA00451313 /* RCTTouchEvent.m in Sources */, 2D8C2E331DA40441000EE098 /* RCTMultipartStreamReader.m in Sources */, @@ -3385,6 +3540,7 @@ 2D3B5E9C1D9B08A300451313 /* RCTImageSource.m in Sources */, 3DDEC1521DDCE0CA0020BBDF /* RCTJSCSamplingProfiler.m in Sources */, 2D3B5EC31D9B094800451313 /* RCTProfileTrampoline-arm.S in Sources */, + 3D0B842B1EC0B49400B2BD8E /* RCTTVRemoteHandler.m in Sources */, 59FBEFB31E46D91C0095D885 /* RCTScrollContentShadowView.m in Sources */, 2D3B5ED91D9B098E00451313 /* RCTNavItem.m in Sources */, 2D74EAFA1DAE9590003B751B /* RCTMultipartDataTask.m in Sources */, @@ -3407,6 +3563,45 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 3D383D241EBD27B6005632C8 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 3D383D251EBD27B6005632C8 /* Conv.cpp in Sources */, + 3D383D261EBD27B6005632C8 /* StringBase.cpp in Sources */, + 3D383D271EBD27B6005632C8 /* raw_logging.cc in Sources */, + 3D383D281EBD27B6005632C8 /* signalhandler.cc in Sources */, + 3D383D291EBD27B6005632C8 /* dynamic.cpp in Sources */, + 3D383D2A1EBD27B6005632C8 /* utilities.cc in Sources */, + 3D383D2B1EBD27B6005632C8 /* MallocImpl.cpp in Sources */, + 3D383D2C1EBD27B6005632C8 /* Bits.cpp in Sources */, + 3D383D2D1EBD27B6005632C8 /* symbolize.cc in Sources */, + 3D383D2E1EBD27B6005632C8 /* vlog_is_on.cc in Sources */, + 3D383D2F1EBD27B6005632C8 /* Unicode.cpp in Sources */, + 3D383D301EBD27B6005632C8 /* demangle.cc in Sources */, + 3D383D311EBD27B6005632C8 /* Demangle.cpp in Sources */, + 3D383D321EBD27B6005632C8 /* File.cpp in Sources */, + 3D383D331EBD27B6005632C8 /* logging.cc in Sources */, + 3D383D341EBD27B6005632C8 /* json.cpp in Sources */, + 3D383D351EBD27B6005632C8 /* BitsFunctexcept.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 3D383D3F1EBD27B9005632C8 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 3D383D401EBD27B9005632C8 /* bignum-dtoa.cc in Sources */, + 3D383D411EBD27B9005632C8 /* bignum.cc in Sources */, + 3D383D421EBD27B9005632C8 /* cached-powers.cc in Sources */, + 3D383D431EBD27B9005632C8 /* diy-fp.cc in Sources */, + 3D383D441EBD27B9005632C8 /* double-conversion.cc in Sources */, + 3D383D451EBD27B9005632C8 /* fast-dtoa.cc in Sources */, + 3D383D461EBD27B9005632C8 /* fixed-dtoa.cc in Sources */, + 3D383D471EBD27B9005632C8 /* strtod.cc in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 3D3C05301DE3340900C268FA /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -3644,6 +3839,16 @@ target = 3D3CD9261DE5FBEE00167DC4 /* cxxreact-tvOS */; targetProxy = 3D0574561DE5FF9600184BB4 /* PBXContainerItemProxy */; }; + 3D383D641EBD27CE005632C8 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 3D383D211EBD27B6005632C8 /* third-party-tvOS */; + targetProxy = 3D383D631EBD27CE005632C8 /* PBXContainerItemProxy */; + }; + 3D383D661EBD27DB005632C8 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 3D383D3D1EBD27B9005632C8 /* double-conversion-tvOS */; + targetProxy = 3D383D651EBD27DB005632C8 /* PBXContainerItemProxy */; + }; 3D3CD94C1DE5FCE700167DC4 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 3D3CD9191DE5FBEC00167DC4 /* cxxreact */; @@ -3676,10 +3881,6 @@ CLANG_WARN_SUSPICIOUS_MOVES = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = V9WTTPBFK9; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); OTHER_LDFLAGS = "-ObjC"; PRIVATE_HEADERS_FOLDER_PATH = "/usr/local/include/double-conversion"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -3706,7 +3907,7 @@ }; 139D7ED51E25DB7D00323FB7 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 132008221E2845E700F0C457 /* folly.xcconfig */; + baseConfigurationReference = 3D788F841EBD2D240063D616 /* third-party.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; @@ -3714,10 +3915,6 @@ CLANG_WARN_SUSPICIOUS_MOVES = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = V9WTTPBFK9; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); OTHER_CPLUSPLUSFLAGS = "$(OTHER_CFLAGS)"; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -3728,7 +3925,7 @@ }; 139D7ED61E25DB7D00323FB7 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 132008221E2845E700F0C457 /* folly.xcconfig */; + baseConfigurationReference = 3D788F841EBD2D240063D616 /* third-party.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; @@ -3747,6 +3944,7 @@ }; 2D2A28191D9B038B00D4039D /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 3D788F841EBD2D240063D616 /* third-party.xcconfig */; buildSettings = { CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "c++14"; @@ -3756,10 +3954,6 @@ DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_TESTABILITY = YES; GCC_NO_COMMON_BLOCKS = YES; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = React; PUBLIC_HEADERS_FOLDER_PATH = /usr/local/include/React; @@ -3769,6 +3963,7 @@ }; 2D2A281A1D9B038B00D4039D /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 3D788F841EBD2D240063D616 /* third-party.xcconfig */; buildSettings = { CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "c++14"; @@ -3785,12 +3980,85 @@ }; name = Release; }; + 3D383D3A1EBD27B6005632C8 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 3D788F841EBD2D240063D616 /* third-party.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_SUSPICIOUS_MOVES = YES; + DEBUG_INFORMATION_FORMAT = dwarf; + DEVELOPMENT_TEAM = V9WTTPBFK9; + OTHER_CPLUSPLUSFLAGS = "$(OTHER_CFLAGS)"; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "third-party"; + SDKROOT = appletvos; + SKIP_INSTALL = YES; + USER_HEADER_SEARCH_PATHS = ""; + }; + name = Debug; + }; + 3D383D3B1EBD27B6005632C8 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 3D788F841EBD2D240063D616 /* third-party.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_SUSPICIOUS_MOVES = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEVELOPMENT_TEAM = V9WTTPBFK9; + OTHER_CPLUSPLUSFLAGS = "$(OTHER_CFLAGS)"; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "third-party"; + SDKROOT = appletvos; + SKIP_INSTALL = YES; + USER_HEADER_SEARCH_PATHS = ""; + }; + name = Release; + }; + 3D383D601EBD27B9005632C8 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_SUSPICIOUS_MOVES = YES; + DEBUG_INFORMATION_FORMAT = dwarf; + DEVELOPMENT_TEAM = V9WTTPBFK9; + OTHER_LDFLAGS = "-ObjC"; + PRIVATE_HEADERS_FOLDER_PATH = "/usr/local/include/double-conversion"; + PRODUCT_NAME = "double-conversion"; + SDKROOT = appletvos; + SKIP_INSTALL = YES; + }; + name = Debug; + }; + 3D383D611EBD27B9005632C8 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_SUSPICIOUS_MOVES = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEVELOPMENT_TEAM = V9WTTPBFK9; + OTHER_LDFLAGS = "-ObjC"; + PRIVATE_HEADERS_FOLDER_PATH = "/usr/local/include/double-conversion"; + PRODUCT_NAME = "double-conversion"; + SDKROOT = appletvos; + SKIP_INSTALL = YES; + }; + name = Release; + }; 3D3C05981DE3340900C268FA /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { CLANG_CXX_LANGUAGE_STANDARD = "c++14"; CLANG_STATIC_ANALYZER_MODE = deep; - GCC_PREPROCESSOR_DEFINITIONS = "$(inherited)"; GCC_WARN_ABOUT_MISSING_NEWLINE = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -3824,10 +4092,6 @@ DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_TESTABILITY = YES; GCC_NO_COMMON_BLOCKS = YES; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = yoga; PUBLIC_HEADERS_FOLDER_PATH = /usr/local/include/yoga; @@ -3855,11 +4119,10 @@ }; 3D3CD9091DE5FBD600167DC4 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 132008221E2845E700F0C457 /* folly.xcconfig */; + baseConfigurationReference = 3D788F841EBD2D240063D616 /* third-party.xcconfig */; buildSettings = { CLANG_CXX_LANGUAGE_STANDARD = "c++14"; CLANG_STATIC_ANALYZER_MODE = deep; - GCC_PREPROCESSOR_DEFINITIONS = "$(inherited)"; GCC_WARN_ABOUT_MISSING_NEWLINE = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -3870,7 +4133,7 @@ }; 3D3CD90A1DE5FBD600167DC4 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 132008221E2845E700F0C457 /* folly.xcconfig */; + baseConfigurationReference = 3D788F841EBD2D240063D616 /* third-party.xcconfig */; buildSettings = { CLANG_CXX_LANGUAGE_STANDARD = "c++14"; CLANG_STATIC_ANALYZER_MODE = deep; @@ -3885,6 +4148,7 @@ }; 3D3CD9161DE5FBD800167DC4 /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 3D788F841EBD2D240063D616 /* third-party.xcconfig */; buildSettings = { CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "c++14"; @@ -3894,10 +4158,6 @@ DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_TESTABILITY = YES; GCC_NO_COMMON_BLOCKS = YES; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = jschelpers; PUBLIC_HEADERS_FOLDER_PATH = /usr/local/include/jschelpers; @@ -3907,6 +4167,7 @@ }; 3D3CD9171DE5FBD800167DC4 /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 3D788F841EBD2D240063D616 /* third-party.xcconfig */; buildSettings = { CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "c++14"; @@ -3925,11 +4186,10 @@ }; 3D3CD9231DE5FBEC00167DC4 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 132008221E2845E700F0C457 /* folly.xcconfig */; + baseConfigurationReference = 3D788F841EBD2D240063D616 /* third-party.xcconfig */; buildSettings = { CLANG_CXX_LANGUAGE_STANDARD = "c++14"; CLANG_STATIC_ANALYZER_MODE = deep; - GCC_PREPROCESSOR_DEFINITIONS = "$(inherited)"; GCC_WARN_ABOUT_MISSING_NEWLINE = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -3940,7 +4200,7 @@ }; 3D3CD9241DE5FBEC00167DC4 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 132008221E2845E700F0C457 /* folly.xcconfig */; + baseConfigurationReference = 3D788F841EBD2D240063D616 /* third-party.xcconfig */; buildSettings = { CLANG_CXX_LANGUAGE_STANDARD = "c++14"; CLANG_STATIC_ANALYZER_MODE = deep; @@ -3955,6 +4215,7 @@ }; 3D3CD9301DE5FBEE00167DC4 /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 3D788F841EBD2D240063D616 /* third-party.xcconfig */; buildSettings = { CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "c++14"; @@ -3964,10 +4225,6 @@ DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_TESTABILITY = YES; GCC_NO_COMMON_BLOCKS = YES; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = cxxreact; PUBLIC_HEADERS_FOLDER_PATH = /usr/local/include/cxxreact; @@ -3977,6 +4234,7 @@ }; 3D3CD9311DE5FBEE00167DC4 /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 3D788F841EBD2D240063D616 /* third-party.xcconfig */; buildSettings = { CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "c++14"; @@ -4099,11 +4357,10 @@ }; 83CBBA401A601D0F00E9B192 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 132008221E2845E700F0C457 /* folly.xcconfig */; + baseConfigurationReference = 3D788F841EBD2D240063D616 /* third-party.xcconfig */; buildSettings = { CLANG_CXX_LANGUAGE_STANDARD = "c++14"; CLANG_STATIC_ANALYZER_MODE = deep; - GCC_PREPROCESSOR_DEFINITIONS = "$(inherited)"; GCC_WARN_ABOUT_MISSING_NEWLINE = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -4114,7 +4371,7 @@ }; 83CBBA411A601D0F00E9B192 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 132008221E2845E700F0C457 /* folly.xcconfig */; + baseConfigurationReference = 3D788F841EBD2D240063D616 /* third-party.xcconfig */; buildSettings = { CLANG_CXX_LANGUAGE_STANDARD = "c++14"; CLANG_STATIC_ANALYZER_MODE = deep; @@ -4157,6 +4414,24 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 3D383D391EBD27B6005632C8 /* Build configuration list for PBXNativeTarget "third-party-tvOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3D383D3A1EBD27B6005632C8 /* Debug */, + 3D383D3B1EBD27B6005632C8 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 3D383D5F1EBD27B9005632C8 /* Build configuration list for PBXNativeTarget "double-conversion-tvOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3D383D601EBD27B9005632C8 /* Debug */, + 3D383D611EBD27B9005632C8 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 3D3C05971DE3340900C268FA /* Build configuration list for PBXNativeTarget "yoga" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/React/folly.xcconfig b/React/third-party.xcconfig similarity index 100% rename from React/folly.xcconfig rename to React/third-party.xcconfig diff --git a/ios-cc.sh b/ios-cc.sh deleted file mode 100755 index 621a75a8aa7a..000000000000 --- a/ios-cc.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -x - -exec "$(xcrun -find -sdk iphoneos cc)" -arch armv7 -isysroot "$(xcrun -sdk iphoneos --show-sdk-path)" "$@" diff --git a/package.json b/package.json index 82fa6120f2b5..efa2cb99c9f5 100644 --- a/package.json +++ b/package.json @@ -91,8 +91,8 @@ "cli.js", "flow", "init.sh", - "ios-cc.sh", - "ios-install-third-party.sh", + "scripts/ios-configure-glog.sh", + "scripts/ios-install-third-party.sh", "jest-preset.json", "jest", "lib", diff --git a/scripts/ios-configure-glog.sh b/scripts/ios-configure-glog.sh new file mode 100755 index 000000000000..1aadbfdffc5a --- /dev/null +++ b/scripts/ios-configure-glog.sh @@ -0,0 +1,26 @@ +#!/bin/bash +set -e + +# Only set when not running in an Xcode context +if [ -z "$ACTION" ] || [ -z "$BUILD_DIR" ]; then + export CC="$(xcrun -find -sdk iphoneos cc) -arch armv7 -isysroot $(xcrun -sdk iphoneos --show-sdk-path)" +fi + +./configure --host arm-apple-darwin + +# Fix build for tvOS +cat << EOF >> src/config.h + +/* Add in so we have Apple Target Conditionals */ +#ifdef __APPLE__ +#include +#include +#endif + +/* Special configuration for AppleTVOS */ +#if TARGET_OS_TV +#undef HAVE_SYSCALL_H +#undef HAVE_SYS_SYSCALL_H +#undef OS_MACOSX +#endif +EOF diff --git a/ios-install-third-party.sh b/scripts/ios-install-third-party.sh similarity index 87% rename from ios-install-third-party.sh rename to scripts/ios-install-third-party.sh index b52e931278b1..5813b19b8602 100755 --- a/ios-install-third-party.sh +++ b/scripts/ios-install-third-party.sh @@ -32,9 +32,9 @@ function fetch_and_unpack () { mkdir -p third-party -SCRIPTDIR=$(pwd)/$(dirname "$0") +SCRIPTDIR=$(dirname "$0") -fetch_and_unpack glog-0.3.4.tar.gz https://github.com/google/glog/archive/v0.3.4.tar.gz "CC='$SCRIPTDIR'/ios-cc.sh CXX='$SCRIPTDIR'/ios-cc.sh ./configure --host arm-apple-darwin" +fetch_and_unpack glog-0.3.4.tar.gz https://github.com/google/glog/archive/v0.3.4.tar.gz "$SCRIPTDIR/ios-configure-glog.sh" fetch_and_unpack double-conversion-1.1.5.tar.gz https://github.com/google/double-conversion/archive/v1.1.5.tar.gz fetch_and_unpack boost_1_63_0.tar.gz https://github.com/react-native-community/boost-for-react-native/releases/download/v1.63.0-0/boost_1_63_0.tar.gz fetch_and_unpack folly-2016.09.26.00.tar.gz https://github.com/facebook/folly/archive/v2016.09.26.00.tar.gz From 567015fa04803b171546dcb49d542afe95438040 Mon Sep 17 00:00:00 2001 From: Pieter De Baets Date: Wed, 10 May 2017 04:26:09 -0700 Subject: [PATCH 0041/1101] Mark ByteBuffer methods as const Reviewed By: emilsjolander Differential Revision: D5020648 fbshipit-source-id: 6e60b80cb3d4718bab25dd6ca9627aee862117db --- .../main/jni/first-party/fb/include/fb/fbjni/ByteBuffer.h | 6 +++--- ReactAndroid/src/main/jni/first-party/fb/jni/ByteBuffer.cpp | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/ReactAndroid/src/main/jni/first-party/fb/include/fb/fbjni/ByteBuffer.h b/ReactAndroid/src/main/jni/first-party/fb/include/fb/fbjni/ByteBuffer.h index 450f66a62b31..26ae3589aa67 100644 --- a/ReactAndroid/src/main/jni/first-party/fb/include/fb/fbjni/ByteBuffer.h +++ b/ReactAndroid/src/main/jni/first-party/fb/include/fb/fbjni/ByteBuffer.h @@ -25,10 +25,10 @@ class FBEXPORT JByteBuffer : public JavaClass { static local_ref wrapBytes(uint8_t* data, size_t size); - bool isDirect(); + bool isDirect() const; - uint8_t* getDirectBytes(); - size_t getDirectSize(); + uint8_t* getDirectBytes() const; + size_t getDirectSize() const; }; }} diff --git a/ReactAndroid/src/main/jni/first-party/fb/jni/ByteBuffer.cpp b/ReactAndroid/src/main/jni/first-party/fb/jni/ByteBuffer.cpp index b95ae4a145fb..2e839ecf432a 100644 --- a/ReactAndroid/src/main/jni/first-party/fb/jni/ByteBuffer.cpp +++ b/ReactAndroid/src/main/jni/first-party/fb/jni/ByteBuffer.cpp @@ -39,7 +39,7 @@ local_ref JByteBuffer::wrapBytes(uint8_t* data, size_t size) { return res; } -uint8_t* JByteBuffer::getDirectBytes() { +uint8_t* JByteBuffer::getDirectBytes() const { if (!self()) { throwNewJavaException("java/lang/NullPointerException", "java.lang.NullPointerException"); } @@ -54,7 +54,7 @@ uint8_t* JByteBuffer::getDirectBytes() { return static_cast(bytes); } -size_t JByteBuffer::getDirectSize() { +size_t JByteBuffer::getDirectSize() const { if (!self()) { throwNewJavaException("java/lang/NullPointerException", "java.lang.NullPointerException"); } @@ -69,7 +69,7 @@ size_t JByteBuffer::getDirectSize() { return static_cast(size); } -bool JByteBuffer::isDirect() { +bool JByteBuffer::isDirect() const { static auto meth = javaClassStatic()->getMethod("isDirect"); return meth(self()); } From 76f74a55c2d359bdf8a24eb98317a7dc9a47333e Mon Sep 17 00:00:00 2001 From: Jean Lauliac Date: Wed, 10 May 2017 04:34:10 -0700 Subject: [PATCH 0042/1101] packager: ResolutionRequest: simplify asset resolution Summary: I think we don't really need to check the directory beforehand, the function to find asset will just return an empty array. As for the error message, I tried adding a require of an asset file somewhere, but due to the way the ResolutionRequest algo work, it generates a final error message that unrealted ("Directory ... does not exist", instead of the "asset does not exist"). I plan to revamp the way errors are handled such as the error message clearly identifies what file paths have been inspected. Reviewed By: davidaurelio Differential Revision: D5028118 fbshipit-source-id: 496472001c0a3d4192bfef4a0c8a0dc8a9a0fa82 --- .../DependencyGraph/ResolutionRequest.js | 49 ++++++++++--------- 1 file changed, 25 insertions(+), 24 deletions(-) diff --git a/packager/src/node-haste/DependencyGraph/ResolutionRequest.js b/packager/src/node-haste/DependencyGraph/ResolutionRequest.js index 170d8e05d58c..f4468fbe4a0d 100644 --- a/packager/src/node-haste/DependencyGraph/ResolutionRequest.js +++ b/packager/src/node-haste/DependencyGraph/ResolutionRequest.js @@ -500,30 +500,7 @@ class ResolutionRequest { _loadAsFile(potentialModulePath: string, fromModule: TModule, toModule: string): TModule { if (this._options.helpers.isAssetFile(potentialModulePath)) { - const dirname = path.dirname(potentialModulePath); - if (!this._options.dirExists(dirname)) { - throw new UnableToResolveError( - fromModule, - toModule, - `Directory ${dirname} doesn't exist`, - ); - } - - const {name, type} = getAssetDataFromName(potentialModulePath, this._options.platforms); - - let pattern = '^' + name + '(@[\\d\\.]+x)?'; - if (this._options.platform != null) { - pattern += '(\\.' + this._options.platform + ')?'; - } - pattern += '\\.' + type + '$'; - - const assetFiles = this._options.matchFiles(dirname, new RegExp(pattern)); - // We arbitrarly grab the lowest, because scale selection will happen - // somewhere else. Always the lowest so that it's stable between builds. - const assetFile = getArrayLowestItem(assetFiles); - if (assetFile) { - return this._options.moduleCache.getAssetModule(assetFile); - } + return this._loadAsAssetFile(potentialModulePath, fromModule, toModule); } let file; @@ -567,6 +544,30 @@ class ResolutionRequest { return this._options.moduleCache.getModule(file); } + _loadAsAssetFile(potentialModulePath: string, fromModule: TModule, toModule: string): TModule { + const {name, type} = getAssetDataFromName(potentialModulePath, this._options.platforms); + + let pattern = '^' + name + '(@[\\d\\.]+x)?'; + if (this._options.platform != null) { + pattern += '(\\.' + this._options.platform + ')?'; + } + pattern += '\\.' + type + '$'; + + const dirname = path.dirname(potentialModulePath); + const assetFiles = this._options.matchFiles(dirname, new RegExp(pattern)); + // We arbitrarly grab the lowest, because scale selection will happen + // somewhere else. Always the lowest so that it's stable between builds. + const assetFile = getArrayLowestItem(assetFiles); + if (assetFile) { + return this._options.moduleCache.getAssetModule(assetFile); + } + throw new UnableToResolveError( + fromModule, + toModule, + `Directory \`${dirname}' doesn't contain asset \`${name}'`, + ); + } + _loadAsDir(potentialDirPath: string, fromModule: TModule, toModule: string): TModule { if (!this._options.dirExists(potentialDirPath)) { throw new UnableToResolveError( From 0216e87616d00359f3f20c3bc955670fb9af994c Mon Sep 17 00:00:00 2001 From: Jean Lauliac Date: Wed, 10 May 2017 04:36:18 -0700 Subject: [PATCH 0043/1101] packager: ResolutionRequest: skip dirExists in loadAsDir Summary: I'm continuing my changes to avoid `lstat`-ing the folders when we don't really need to. That changeset in particular proposes to remove the check in `_loadAsDir`. The rationale is that right after that we try for the presence of the `package.json`. If that file exists, the folder necessarily exist so we can switch these two `if` blocks for sure without changing the logic. Finally, at the end we look for the "index" file. By removing the folder check, packager would now report "file `foo/index` does not exist" rather than "directory `foo` does not exist" if the folder does not exist. I think it's not much worse, especially as both of these are unhelpful for what I believe to be a large number of cases already anyway. Indeed, the whole algo is based on a series of try/catch, and only the very last try will see its error surfaced. But, most often, it'd be useful for earlier tries to be surfaced to the user. I do want to improve that; meanwhile, however, I sense it's not a big deal to remove that folder check for all these reasons. If you don't agree, I do have another proposition: we could catch errors generated by the last `_loadAsFile` call, and rethrow them as directory errors instead (if `dirExists` return `true`). That way, the call to `dirExists` would only happen in case of errors (but that could still happen quite a lot as a result). Reviewed By: davidaurelio Differential Revision: D5028341 fbshipit-source-id: 2d4c99c0f352b71599482aa529728559466b76fd --- .../src/node-haste/DependencyGraph/ResolutionRequest.js | 8 -------- 1 file changed, 8 deletions(-) diff --git a/packager/src/node-haste/DependencyGraph/ResolutionRequest.js b/packager/src/node-haste/DependencyGraph/ResolutionRequest.js index f4468fbe4a0d..9da29fd31e03 100644 --- a/packager/src/node-haste/DependencyGraph/ResolutionRequest.js +++ b/packager/src/node-haste/DependencyGraph/ResolutionRequest.js @@ -569,14 +569,6 @@ class ResolutionRequest { } _loadAsDir(potentialDirPath: string, fromModule: TModule, toModule: string): TModule { - if (!this._options.dirExists(potentialDirPath)) { - throw new UnableToResolveError( - fromModule, - toModule, - `Directory ${potentialDirPath} doesn't exist`, - ); - } - const packageJsonPath = path.join(potentialDirPath, 'package.json'); if (this._options.hasteFS.exists(packageJsonPath)) { const main = this._options.moduleCache.getPackage(packageJsonPath).getMain(); From c0babb27319c9276d55edf4fa2aaeab3e44ce9ef Mon Sep 17 00:00:00 2001 From: Jean Lauliac Date: Wed, 10 May 2017 04:44:10 -0700 Subject: [PATCH 0044/1101] packager: make TransformCache a stateful class Summary: This removes the single-use "garbage collection" class and make a single `TransformCache` instead. The reason for doing this is that I'd like to experiment with using a local dir based on the root path instead of the `tmpdir()` folder, because on some platform using the temp dir is subject to permissions problem, sometimes it is empty, and on all platform it is vulnerable to concurrency issues. Reviewed By: davidaurelio Differential Revision: D5027591 fbshipit-source-id: e1176e0e88111116256f7b2b173a0b36837a887d --- packager/src/lib/TransformCache.js | 440 +++++++++--------- packager/src/lib/__mocks__/TransformCache.js | 40 +- .../src/lib/__tests__/TransformCache-test.js | 14 +- packager/src/node-haste/Module.js | 6 +- .../src/node-haste/__tests__/Module-test.js | 6 +- 5 files changed, 262 insertions(+), 244 deletions(-) diff --git a/packager/src/lib/TransformCache.js b/packager/src/lib/TransformCache.js index b5378df7e298..978405f17652 100644 --- a/packager/src/lib/TransformCache.js +++ b/packager/src/lib/TransformCache.js @@ -7,6 +7,7 @@ * of patent rights can be found in the PATENTS file in the same directory. * * @flow + * @format */ 'use strict'; @@ -30,62 +31,6 @@ export type GetTransformCacheKey = (options: {}) => string; const CACHE_NAME = 'react-native-packager-cache'; const CACHE_SUB_DIR = 'cache'; -/** - * If packager is running for two different directories, we don't want the - * caches to conflict with each other. `__dirname` carries that because packager - * will be, for example, installed in a different `node_modules/` folder for - * different projects. - */ -const getCacheDirPath = (function() { - let dirPath; - return function() { - if (dirPath != null) { - return dirPath; - } - const hash = crypto.createHash('sha1').update(__dirname); - if (process.getuid != null) { - hash.update(process.getuid().toString()); - } - dirPath = path.join(require('os').tmpdir(), CACHE_NAME + '-' + hash.digest('hex')); - require('debug')('RNP:TransformCache:Dir')( - `transform cache directory: ${dirPath}` - ); - return dirPath; - }; -})(); - -function hashSourceCode(props: { - filePath: string, - sourceCode: string, - getTransformCacheKey: GetTransformCacheKey, - transformOptions: WorkerOptions, - transformOptionsKey: string, -}): string { - return crypto.createHash('sha1') - .update(props.getTransformCacheKey(props.transformOptions)) - .update(props.sourceCode) - .digest('hex'); -} - -/** - * The path, built as a hash, does not take the source code itself into account - * because it would generate lots of file during development. (The source hash - * is stored in the metadata instead). - */ -function getCacheFilePaths(props: { - filePath: string, - transformOptionsKey: string, -}): CacheFilePaths { - const hasher = crypto.createHash('sha1') - .update(props.filePath) - .update(props.transformOptionsKey); - const hash = hasher.digest('hex'); - const prefix = hash.substr(0, 2); - const fileName = `${hash.substr(2)}`; - const base = path.join(getCacheDirPath(), CACHE_SUB_DIR, prefix, fileName); - return {transformedCode: base, metadata: base + '.meta'}; -} - export type CachedResult = { code: string, dependencies: Array, @@ -98,147 +43,256 @@ export type TransformCacheResult = {| +outdatedDependencies: $ReadOnlyArray, |}; -/** - * We want to unlink all cache files before writing, so that it is as much - * atomic as possible. - */ -function unlinkIfExistsSync(filePath: string) { - try { - fs.unlinkSync(filePath); - } catch (error) { - if (error.code === 'ENOENT') { - return; - } - throw error; - } -} +export type CacheOptions = { + reporter: Reporter, + resetCache?: boolean, +}; -/** - * In the workers we are fine doing sync work because a worker is meant to - * process a single source file at a time. - * - * We store the transformed JS because it is likely to be much bigger than the - * rest of the data JSON. Probably the map should be stored separately as well. - * - * We make the write operation as much atomic as possible: indeed, if another - * process is reading the cache at the same time, there would be a risk it - * reads new transformed code, but old metadata. This is avoided by removing - * the files first. - * - * There is still a risk of conflincting writes, that is mitigated by hashing - * the result code, that is verified at the end. In case of writes happening - * close to each others, one of the workers is going to loose its results no - * matter what. - */ -function writeSync(props: { +export type ReadTransformProps = { filePath: string, sourceCode: string, - getTransformCacheKey: GetTransformCacheKey, transformOptions: WorkerOptions, transformOptionsKey: string, - result: CachedResult, -}): void { - const cacheFilePath = getCacheFilePaths(props); - mkdirp.sync(path.dirname(cacheFilePath.transformedCode)); - const {result} = props; - unlinkIfExistsSync(cacheFilePath.transformedCode); - unlinkIfExistsSync(cacheFilePath.metadata); - writeFileAtomicSync(cacheFilePath.transformedCode, result.code); - writeFileAtomicSync(cacheFilePath.metadata, JSON.stringify([ - crypto.createHash('sha1').update(result.code).digest('hex'), - hashSourceCode(props), - result.dependencies, - result.dependencyOffsets, - result.map, - ])); -} - -export type CacheOptions = { - reporter: Reporter, - resetCache?: boolean, + getTransformCacheKey: GetTransformCacheKey, + cacheOptions: CacheOptions, }; +const EMPTY_ARRAY = []; + /* 1 day */ const GARBAGE_COLLECTION_PERIOD = 24 * 60 * 60 * 1000; /* 4 days */ const CACHE_FILE_MAX_LAST_ACCESS_TIME = GARBAGE_COLLECTION_PERIOD * 4; -/** - * Temporary folder is cleaned up only on boot, ex. on OS X, as far as I'm - * concerned. Since generally people reboot only very rarely, we need to clean - * up old stuff from time to time. - * - * This code should be safe even if two different React Native projects are - * running at the same time. - */ -const GARBAGE_COLLECTOR = new (class GarbageCollector { - _lastCollected: ?number; +class TransformCache { _cacheWasReset: boolean; + _dirPath: string; + _lastCollected: ?number; constructor() { this._cacheWasReset = false; } + /** + * We store the transformed JS because it is likely to be much bigger than the + * rest of the data JSON. Probably the map should be stored separately as + * well. + * + * We make the write operation as much atomic as possible: indeed, if another + * process is reading the cache at the same time, there would be a risk it + * reads new transformed code, but old metadata. This is avoided by removing + * the files first. + * + * There is still a risk of conflincting writes, that is mitigated by hashing + * the result code, that is verified at the end. In case of writes happening + * close to each others, one of the workers is going to loose its results no + * matter what. + */ + writeSync(props: { + filePath: string, + sourceCode: string, + getTransformCacheKey: GetTransformCacheKey, + transformOptions: WorkerOptions, + transformOptionsKey: string, + result: CachedResult, + }): void { + const cacheFilePath = this._getCacheFilePaths(props); + mkdirp.sync(path.dirname(cacheFilePath.transformedCode)); + const {result} = props; + unlinkIfExistsSync(cacheFilePath.transformedCode); + unlinkIfExistsSync(cacheFilePath.metadata); + writeFileAtomicSync(cacheFilePath.transformedCode, result.code); + writeFileAtomicSync( + cacheFilePath.metadata, + JSON.stringify([ + crypto.createHash('sha1').update(result.code).digest('hex'), + hashSourceCode(props), + result.dependencies, + result.dependencyOffsets, + result.map, + ]), + ); + } + + readSync(props: ReadTransformProps): TransformCacheResult { + const result = this._readSync(props); + const msg = result ? 'Cache hit: ' : 'Cache miss: '; + debugRead(msg + props.filePath); + return result; + } + + /** + * We verify the source hash matches to ensure we always favor rebuilding when + * source change (rather than just using fs.mtime(), a bit less robust). + * + * That means when the source changes, we override the old transformed code + * with the new one. This is, I believe, preferable, so as to avoid bloating + * the cache during development cycles, where people changes files all the + * time. If we implement a global cache ability at some point, we'll be able + * to store old artifacts as well. + * + * Meanwhile we store transforms with different options in different files so + * that it is fast to switch between ex. minified, or not. + */ + _readSync(props: ReadTransformProps): TransformCacheResult { + this._collectIfNecessarySync(props.cacheOptions); + const cacheFilePaths = this._getCacheFilePaths(props); + let metadata, transformedCode; + try { + metadata = readMetadataFileSync(cacheFilePaths.metadata); + if (metadata == null) { + return {result: null, outdatedDependencies: EMPTY_ARRAY}; + } + const sourceHash = hashSourceCode(props); + if (sourceHash !== metadata.cachedSourceHash) { + return {result: null, outdatedDependencies: metadata.dependencies}; + } + transformedCode = fs.readFileSync(cacheFilePaths.transformedCode, 'utf8'); + const codeHash = crypto + .createHash('sha1') + .update(transformedCode) + .digest('hex'); + if (metadata.cachedResultHash !== codeHash) { + return {result: null, outdatedDependencies: metadata.dependencies}; + } + } catch (error) { + if (error.code === 'ENOENT') { + return {result: null, outdatedDependencies: EMPTY_ARRAY}; + } + throw error; + } + return { + result: { + code: transformedCode, + dependencies: metadata.dependencies, + dependencyOffsets: metadata.dependencyOffsets, + map: metadata.sourceMap, + }, + outdatedDependencies: EMPTY_ARRAY, + }; + } + + /** + * Temporary folder is never cleaned up automatically, we need to clean up old + * stuff ourselves. This code should be safe even if two different React + * Native projects are running at the same time. + */ + _collectIfNecessarySync(options: CacheOptions) { + if (options.resetCache && !this._cacheWasReset) { + this._resetCache(options.reporter); + return; + } + const lastCollected = this._lastCollected; + if ( + lastCollected == null || + Date.now() - lastCollected > GARBAGE_COLLECTION_PERIOD + ) { + this._collectSyncNoThrow(); + } + } + + _resetCache(reporter: Reporter) { + rimraf.sync(this._getCacheDirPath()); + reporter.update({type: 'transform_cache_reset'}); + this._cacheWasReset = true; + this._lastCollected = Date.now(); + } + /** * We want to avoid preventing tool use if the cleanup fails for some reason, * but still provide some chance for people to report/fix things. */ _collectSyncNoThrow() { try { - collectCacheIfOldSync(); + this._collectCacheIfOldSync(); } catch (error) { terminal.log(error.stack); terminal.log( 'Error: Cleaning up the cache folder failed. Continuing anyway.', ); - terminal.log('The cache folder is: %s', getCacheDirPath()); + terminal.log('The cache folder is: %s', this._getCacheDirPath()); } this._lastCollected = Date.now(); } - _resetCache(reporter: Reporter) { - rimraf.sync(getCacheDirPath()); - reporter.update({type: 'transform_cache_reset'}); - this._cacheWasReset = true; - this._lastCollected = Date.now(); - } - - collectIfNecessarySync(options: CacheOptions) { - if (options.resetCache && !this._cacheWasReset) { - this._resetCache(options.reporter); - return; - } - const lastCollected = this._lastCollected; + /** + * When restarting packager we want to avoid running the collection over + * again, so we store the last collection time in a file and we check that + * first. + */ + _collectCacheIfOldSync() { + const cacheDirPath = this._getCacheDirPath(); + mkdirp.sync(cacheDirPath); + const cacheCollectionFilePath = path.join(cacheDirPath, 'last_collected'); + const lastCollected = Number.parseInt( + tryReadFileSync(cacheCollectionFilePath, 'utf8'), + 10, + ); if ( - lastCollected == null || + Number.isInteger(lastCollected) && Date.now() - lastCollected > GARBAGE_COLLECTION_PERIOD ) { - this._collectSyncNoThrow(); + return; } + const effectiveCacheDirPath = path.join(cacheDirPath, CACHE_SUB_DIR); + mkdirp.sync(effectiveCacheDirPath); + collectCacheSync(effectiveCacheDirPath); + fs.writeFileSync(cacheCollectionFilePath, Date.now().toString()); } -})(); + /** + * The path, built as a hash, does not take the source code itself into + * account because it would generate lots of file during development. (The + * source hash is stored in the metadata instead). + */ + _getCacheFilePaths(props: { + filePath: string, + transformOptionsKey: string, + }): CacheFilePaths { + const hasher = crypto + .createHash('sha1') + .update(props.filePath) + .update(props.transformOptionsKey); + const hash = hasher.digest('hex'); + const prefix = hash.substr(0, 2); + const fileName = `${hash.substr(2)}`; + const base = path.join( + this._getCacheDirPath(), + CACHE_SUB_DIR, + prefix, + fileName, + ); + return {transformedCode: base, metadata: base + '.meta'}; + } -/** - * When restarting packager we want to avoid running the collection over again, so we store - * the last collection time in a file and we check that first. - */ -function collectCacheIfOldSync() { - const cacheDirPath = getCacheDirPath(); - mkdirp.sync(cacheDirPath); - const cacheCollectionFilePath = path.join(cacheDirPath, 'last_collected'); - const lastCollected = Number.parseInt(tryReadFileSync(cacheCollectionFilePath, 'utf8'), 10); - if (Number.isInteger(lastCollected) && Date.now() - lastCollected > GARBAGE_COLLECTION_PERIOD) { - return; + /** + * If packager is running for two different directories, we don't want the + * caches to conflict with each other. `__dirname` carries that because + * packager will be, for example, installed in a different `node_modules/` + * folder for different projects. + */ + _getCacheDirPath() { + if (this._dirPath != null) { + return this._dirPath; + } + const hash = crypto.createHash('sha1').update(__dirname); + if (process.getuid != null) { + hash.update(process.getuid().toString()); + } + this._dirPath = path.join( + require('os').tmpdir(), + CACHE_NAME + '-' + hash.digest('hex'), + ); + require('debug')('RNP:TransformCache:Dir')( + `transform cache directory: ${this._dirPath}`, + ); + return this._dirPath; } - const effectiveCacheDirPath = path.join(cacheDirPath, CACHE_SUB_DIR); - mkdirp.sync(effectiveCacheDirPath); - collectCacheSync(effectiveCacheDirPath); - fs.writeFileSync(cacheCollectionFilePath, Date.now().toString()); } /** - * Remove all the cache files from the specified folder that are older than a certain duration. + * Remove all the cache files from the specified folder that are older than a + * certain duration. */ function collectCacheSync(dirPath: string) { const prefixDirs = fs.readdirSync(dirPath); @@ -302,14 +356,10 @@ function readMetadataFileSync( if ( typeof cachedResultHash !== 'string' || typeof cachedSourceHash !== 'string' || - !( - Array.isArray(dependencies) && - dependencies.every(dep => typeof dep === 'string') - ) || - !( - Array.isArray(dependencyOffsets) && - dependencyOffsets.every(offset => typeof offset === 'number') - ) || + !(Array.isArray(dependencies) && + dependencies.every(dep => typeof dep === 'string')) || + !(Array.isArray(dependencyOffsets) && + dependencyOffsets.every(offset => typeof offset === 'number')) || !(sourceMap == null || typeof sourceMap === 'object') ) { return null; @@ -323,71 +373,33 @@ function readMetadataFileSync( }; } -export type ReadTransformProps = { +function hashSourceCode(props: { filePath: string, sourceCode: string, + getTransformCacheKey: GetTransformCacheKey, transformOptions: WorkerOptions, transformOptionsKey: string, - getTransformCacheKey: GetTransformCacheKey, - cacheOptions: CacheOptions, -}; - -const EMPTY_ARRAY = []; +}): string { + return crypto + .createHash('sha1') + .update(props.getTransformCacheKey(props.transformOptions)) + .update(props.sourceCode) + .digest('hex'); +} /** - * We verify the source hash matches to ensure we always favor rebuilding when - * source change (rather than just using fs.mtime(), a bit less robust). - * - * That means when the source changes, we override the old transformed code with - * the new one. This is, I believe, preferable, so as to avoid bloating the - * cache during development cycles, where people changes files all the time. - * If we implement a global cache ability at some point, we'll be able to store - * old artifacts as well. - * - * Meanwhile we store transforms with different options in different files so - * that it is fast to switch between ex. minified, or not. + * We want to unlink all cache files before writing, so that it is as much + * atomic as possible. */ -function readSync(props: ReadTransformProps): TransformCacheResult { - GARBAGE_COLLECTOR.collectIfNecessarySync(props.cacheOptions); - const cacheFilePaths = getCacheFilePaths(props); - let metadata, transformedCode; +function unlinkIfExistsSync(filePath: string) { try { - metadata = readMetadataFileSync(cacheFilePaths.metadata); - if (metadata == null) { - return {result: null, outdatedDependencies: EMPTY_ARRAY}; - } - const sourceHash = hashSourceCode(props); - if (sourceHash !== metadata.cachedSourceHash) { - return {result: null, outdatedDependencies: metadata.dependencies}; - } - transformedCode = fs.readFileSync(cacheFilePaths.transformedCode, 'utf8'); - const codeHash = crypto.createHash('sha1').update(transformedCode).digest('hex'); - if (metadata.cachedResultHash !== codeHash) { - return {result: null, outdatedDependencies: metadata.dependencies}; - } + fs.unlinkSync(filePath); } catch (error) { if (error.code === 'ENOENT') { - return {result: null, outdatedDependencies: EMPTY_ARRAY}; + return; } throw error; } - return { - result: { - code: transformedCode, - dependencies: metadata.dependencies, - dependencyOffsets: metadata.dependencyOffsets, - map: metadata.sourceMap, - }, - outdatedDependencies: EMPTY_ARRAY, - }; } -module.exports = { - writeSync, - readSync(props: ReadTransformProps): TransformCacheResult { - const result = readSync(props); - const msg = result ? 'Cache hit: ' : 'Cache miss: '; - debugRead(msg + props.filePath); - return result; - }, -}; +module.exports = TransformCache; diff --git a/packager/src/lib/__mocks__/TransformCache.js b/packager/src/lib/__mocks__/TransformCache.js index f7cc9bb21f9f..288e330ade8d 100644 --- a/packager/src/lib/__mocks__/TransformCache.js +++ b/packager/src/lib/__mocks__/TransformCache.js @@ -14,14 +14,6 @@ const jsonStableStringify = require('json-stable-stringify'); const transformCache = new Map(); -const mock = { - lastWrite: null, - reset() { - transformCache.clear(); - mock.lastWrite = null; - }, -}; - const transformCacheKeyOf = props => props.filePath + '-' + crypto.createHash('md5') .update(props.sourceCode) @@ -29,17 +21,27 @@ const transformCacheKeyOf = props => .update(jsonStableStringify(props.transformOptions || {})) .digest('hex'); -function writeSync(props) { - transformCache.set(transformCacheKeyOf(props), props.result); - mock.lastWrite = props; -} +class TransformCacheMock { + + constructor() { + this.mock = { + lastWrite: null, + reset: () => { + transformCache.clear(); + this.mock.lastWrite = null; + }, + }; + } + + writeSync(props) { + transformCache.set(transformCacheKeyOf(props), props.result); + this.mock.lastWrite = props; + } + + readSync(props) { + return {result: transformCache.get(transformCacheKeyOf(props)), outdatedDependencies: []}; + } -function readSync(props) { - return {result: transformCache.get(transformCacheKeyOf(props)), outdatedDependencies: []}; } -module.exports = { - writeSync, - readSync, - mock, -}; +module.exports = TransformCacheMock; diff --git a/packager/src/lib/__tests__/TransformCache-test.js b/packager/src/lib/__tests__/TransformCache-test.js index 2230e9b0c1e6..6f4d19a313cd 100644 --- a/packager/src/lib/__tests__/TransformCache-test.js +++ b/packager/src/lib/__tests__/TransformCache-test.js @@ -50,12 +50,12 @@ function cartesianProductOf(a1, a2) { describe('TransformCache', () => { - let TransformCache; + let transformCache; beforeEach(() => { jest.resetModules(); mockFS.clear(); - TransformCache = require('../TransformCache'); + transformCache = new (require('../TransformCache'))(); }); it('is caching different files and options separately', () => { @@ -81,12 +81,12 @@ describe('TransformCache', () => { [{foo: 1}, {foo: 2}], ); allCases.forEach( - entry => TransformCache.writeSync(argsFor(entry)), + entry => transformCache.writeSync(argsFor(entry)), ); allCases.forEach(entry => { const args = argsFor(entry); const {result} = args; - const cachedResult = TransformCache.readSync({ + const cachedResult = transformCache.readSync({ ...args, cacheOptions: {resetCache: false}, }); @@ -116,10 +116,10 @@ describe('TransformCache', () => { ['abcd', 'efgh'], ); allCases.forEach(entry => { - TransformCache.writeSync(argsFor(entry)); + transformCache.writeSync(argsFor(entry)); const args = argsFor(entry); const {result} = args; - const cachedResult = TransformCache.readSync({ + const cachedResult = transformCache.readSync({ ...args, cacheOptions: {resetCache: false}, }); @@ -127,7 +127,7 @@ describe('TransformCache', () => { }); allCases.pop(); allCases.forEach(entry => { - const cachedResult = TransformCache.readSync({ + const cachedResult = transformCache.readSync({ ...argsFor(entry), cacheOptions: {resetCache: false}, }); diff --git a/packager/src/node-haste/Module.js b/packager/src/node-haste/Module.js index bba6070edc7b..eb20216ebf24 100644 --- a/packager/src/node-haste/Module.js +++ b/packager/src/node-haste/Module.js @@ -78,6 +78,8 @@ export type ConstructorArgs = { type DocBlock = {+[key: string]: string}; +const TRANSFORM_CACHE = new TransformCache(); + class Module { path: string; @@ -315,7 +317,7 @@ class Module { return; } invariant(result != null, 'missing result'); - TransformCache.writeSync({...cacheProps, result}); + TRANSFORM_CACHE.writeSync({...cacheProps, result}); callback(undefined, result); }); } @@ -359,7 +361,7 @@ class Module { transformOptionsKey: string, ): CachedReadResult { const cacheProps = this._getCacheProps(transformOptions, transformOptionsKey); - const cachedResult = TransformCache.readSync(cacheProps); + const cachedResult = TRANSFORM_CACHE.readSync(cacheProps); if (cachedResult.result == null) { return {result: null, outdatedDependencies: cachedResult.outdatedDependencies}; } diff --git a/packager/src/node-haste/__tests__/Module-test.js b/packager/src/node-haste/__tests__/Module-test.js index 4500631a47eb..3d687fa4bab7 100644 --- a/packager/src/node-haste/__tests__/Module-test.js +++ b/packager/src/node-haste/__tests__/Module-test.js @@ -32,6 +32,8 @@ const packageJson = description: "A require('foo') story", }); +const TRANSFORM_CACHE = new TransformCache(); + function mockFS(rootChildren) { fs.__setMockFilesystem({root: rootChildren}); } @@ -79,7 +81,7 @@ describe('Module', () => { process.platform = 'linux'; cache = createCache(); transformCacheKey = 'abcdef'; - TransformCache.mock.reset(); + TRANSFORM_CACHE.mock.reset(); }); describe('Module ID', () => { @@ -182,7 +184,7 @@ describe('Module', () => { transformResult = {code: ''}; transformCode = jest.genMockFn() .mockImplementation((module, sourceCode, options) => { - TransformCache.writeSync({ + TRANSFORM_CACHE.writeSync({ filePath: module.path, sourceCode, transformOptions: options, From eb19904cec9ef72a70639dea3c9a362ee604e2eb Mon Sep 17 00:00:00 2001 From: Jean Lauliac Date: Wed, 10 May 2017 05:14:04 -0700 Subject: [PATCH 0045/1101] packager: ResolutionRequest: check dir existence only on error Reviewed By: davidaurelio Differential Revision: D5028476 fbshipit-source-id: 848d7f6a7b6ab046a5e489a56dc224f3296cea02 --- .../DependencyGraph/ResolutionRequest.js | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/packager/src/node-haste/DependencyGraph/ResolutionRequest.js b/packager/src/node-haste/DependencyGraph/ResolutionRequest.js index 9da29fd31e03..708b47fe4160 100644 --- a/packager/src/node-haste/DependencyGraph/ResolutionRequest.js +++ b/packager/src/node-haste/DependencyGraph/ResolutionRequest.js @@ -442,36 +442,38 @@ class ResolutionRequest { currDir !== '.' && currDir !== realPath.parse(fromModule.path).root; currDir = path.dirname(currDir)) { const searchPath = path.join(currDir, 'node_modules'); - if (this._options.dirExists(searchPath)) { - searchQueue.push( - path.join(searchPath, realModuleName) - ); - } + searchQueue.push(path.join(searchPath, realModuleName)); } + const extraSearchQueue = []; if (this._options.extraNodeModules) { const {extraNodeModules} = this._options; const bits = toModuleName.split(path.sep); const packageName = bits[0]; if (extraNodeModules[packageName]) { bits[0] = extraNodeModules[packageName]; - searchQueue.push(path.join.apply(path, bits)); + extraSearchQueue.push(path.join.apply(path, bits)); } } - for (let i = 0; i < searchQueue.length; ++i) { - const resolvedModule = this._tryResolveNodeDep(searchQueue[i], fromModule, toModuleName); + const fullSearchQueue = searchQueue.concat(extraSearchQueue); + for (let i = 0; i < fullSearchQueue.length; ++i) { + const resolvedModule = this._tryResolveNodeDep(fullSearchQueue[i], fromModule, toModuleName); if (resolvedModule != null) { return resolvedModule; } } - const hint = searchQueue.length ? ' or in these directories:' : ''; + const displaySearchQueue = searchQueue + .filter(dirPath => this._options.dirExists(dirPath)) + .concat(extraSearchQueue); + + const hint = displaySearchQueue.length ? ' or in these directories:' : ''; throw new UnableToResolveError( fromModule, toModuleName, `Module does not exist in the module map${hint}\n` + - searchQueue.map(searchPath => ` ${path.dirname(searchPath)}\n`).join(', ') + '\n' + + displaySearchQueue.map(searchPath => ` ${path.dirname(searchPath)}\n`).join(', ') + '\n' + `This might be related to https://github.com/facebook/react-native/issues/4968\n` + `To resolve try the following:\n` + ` 1. Clear watchman watches: \`watchman watch-del-all\`.\n` + From f088bca580032b79caaebebd5ab59f2540439c8f Mon Sep 17 00:00:00 2001 From: cailenmusselman Date: Wed, 10 May 2017 05:14:55 -0700 Subject: [PATCH 0046/1101] ProgressBarAndroid checks indeterminate prop type manually Summary: Causes a YellowBox warning: "You are manually calling a React.PropTypes validation function for 'indeterminate' prop on 'ProgressBarAndroid'." Initially reported here: https://github.com/facebook/react-native/issues/9692 but closed by the creator because he switched to using ActivityIndicator. Fixed as per the guidelines here: https://facebook.github.io/react/warnings/dont-call-proptypes.html ``` /** * Sample React Native App * https://github.com/facebook/react-native * flow */ import React, { Component } from 'react'; import { AppRegistry, StyleSheet, View, ProgressBarAndroid } from 'react-native'; export default class AwesomeProject extends Component { render() { return ( ); } } const styles = StyleSheet.create({ container: { flex: 1 } }); AppRegistry.registerComponent('AwesomeProject', () => AwesomeProject); ``` Closes https://github.com/facebook/react-native/pull/11791 Differential Revision: D4998602 Pulled By: davidaurelio fbshipit-source-id: e210684e2f2497238e4d3d0adf2754075be81e98 --- .../ProgressBarAndroid/ProgressBarAndroid.android.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.android.js b/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.android.js index e3b0b6ee7ae6..25b43b047c9f 100644 --- a/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.android.js +++ b/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.android.js @@ -28,7 +28,7 @@ var STYLE_ATTRIBUTES = [ 'LargeInverse', ]; -var indeterminateType = function(props, propName, componentName) { +var indeterminateType = function(props, propName, componentName, ...rest) { var checker = function() { var indeterminate = props[propName]; var styleAttr = props.styleAttr; @@ -37,7 +37,7 @@ var indeterminateType = function(props, propName, componentName) { } }; - return PropTypes.bool(props, propName, componentName) || checker(); + return PropTypes.bool(props, propName, componentName, ...rest) || checker(); }; /** From f1a220b3cfae2ddb5ab458a90fd754bc5b4b8bcb Mon Sep 17 00:00:00 2001 From: David Aurelio Date: Wed, 10 May 2017 05:15:18 -0700 Subject: [PATCH 0047/1101] Fixes issues with uglify.js usage Summary: Adds flow type defs for uglify, and fixes the two issues found Reviewed By: jeanlauliac Differential Revision: D5029190 fbshipit-source-id: eb5947b051844938da241e002b727edc1384e3a6 --- flow/uglify.js | 71 +++++++++++++++++++ packager/src/JSTransformer/worker/minify.js | 12 ++-- packager/src/JSTransformer/worker/worker.js | 2 +- packager/src/ModuleGraph/types.flow.js | 2 +- .../src/ModuleGraph/worker/optimize-module.js | 9 ++- 5 files changed, 87 insertions(+), 9 deletions(-) create mode 100644 flow/uglify.js diff --git a/flow/uglify.js b/flow/uglify.js new file mode 100644 index 000000000000..29a3e85acbb9 --- /dev/null +++ b/flow/uglify.js @@ -0,0 +1,71 @@ +/** + * Copyright (c) 2013-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +'use strict'; + +type _SourceMap = { + file?: string, + mappings: string, + names: Array, + sourceRoot?: string, + sources: Array, + sourcesContent?: Array, + version: number, +}; + +type _Result = { + code: string, + map: MapT, +}; + +type _Options = { + compress?: false | {||}, + fromString?: boolean, + inSourceMap?: string | ?_SourceMap, + mangle?: boolean | {| + except?: Array, + toplevel?: boolean, + eval?: boolean, + keep_fnames?: boolean, + |}, + mangleProperties?: boolean | {| + regex?: RegExp, + ignore_quoted?: boolean, + debug?: false | string, + |}, + outFileName?: string, + output?: {| + ascii_only?: boolean, + screw_ie8?: boolean, + |}, + parse?: {| + strict?: boolean, + bare_returns?: boolean, + filename?: string, + |}, + sourceMapUrl?: string, + sourceRoot?: string, + warnings?: boolean, +}; + +type _Input = + | string // code or file name + | Array // array of file names + | {[filename: string]: string}; // file names and corresponding code + +declare module 'uglify-js' { + declare function minify( + fileOrFilesOrCode: _Input, + options?: _Options & {outSourceMap?: ?false | ''}, + ): _Result; + declare function minify( + fileOrFilesOrCode: _Input, + options?: _Options & {outSourceMap: true | string}, + ): _Result; +} diff --git a/packager/src/JSTransformer/worker/minify.js b/packager/src/JSTransformer/worker/minify.js index deceb4cbe136..d6459ab465dc 100644 --- a/packager/src/JSTransformer/worker/minify.js +++ b/packager/src/JSTransformer/worker/minify.js @@ -15,17 +15,19 @@ const uglify = require('uglify-js'); const {UGLIFY_JS_OUTPUT_OPTIONS} = require('./JsMinification'); -function minify(filename: string, code: string, sourceMap: ?string) { - const minifyResult = uglify.minify(code, { +import type {MappingsMap} from '../../lib/SourceMap'; + +function minify(filename: string, inputCode: string, sourceMap: ?MappingsMap) { + let {code, map} = uglify.minify(inputCode, { fromString: true, inSourceMap: sourceMap, outSourceMap: true, output: UGLIFY_JS_OUTPUT_OPTIONS, }); - minifyResult.map = JSON.parse(minifyResult.map); - minifyResult.map.sources = [filename]; - return minifyResult; + map = JSON.parse(map); + map.sources = [filename]; + return {code, map}; } module.exports = minify; diff --git a/packager/src/JSTransformer/worker/worker.js b/packager/src/JSTransformer/worker/worker.js index 011489a778a3..c674a1bed808 100644 --- a/packager/src/JSTransformer/worker/worker.js +++ b/packager/src/JSTransformer/worker/worker.js @@ -166,7 +166,7 @@ exports.transformAndExtractDependencies = ( exports.minify = ( filename: string, code: string, - sourceMap: string, + sourceMap: MappingsMap, callback: (error: ?Error, result: mixed) => mixed, ) => { var result; diff --git a/packager/src/ModuleGraph/types.flow.js b/packager/src/ModuleGraph/types.flow.js index 1352a927a598..8809cfbda72a 100644 --- a/packager/src/ModuleGraph/types.flow.js +++ b/packager/src/ModuleGraph/types.flow.js @@ -110,7 +110,7 @@ export type TransformResult = {| code: string, dependencies: Array, dependencyMapName?: string, - map: ?Object, + map: ?MappingsMap, |}; export type TransformResults = {[string]: TransformResult}; diff --git a/packager/src/ModuleGraph/worker/optimize-module.js b/packager/src/ModuleGraph/worker/optimize-module.js index 89885163b8ae..4324d02a045d 100644 --- a/packager/src/ModuleGraph/worker/optimize-module.js +++ b/packager/src/ModuleGraph/worker/optimize-module.js @@ -19,6 +19,7 @@ const minify = require('../../JSTransformer/worker/minify'); const sourceMap = require('source-map'); import type {TransformedSourceFile, TransformResult} from '../types.flow'; +import type {MappingsMap, SourceMap} from '../../lib/SourceMap'; export type OptimizationOptions = {| dev: boolean, @@ -71,7 +72,7 @@ function optimize(transformed, file, originalCode, options): TransformResult { gen.code, inputMap && mergeSourceMaps(file, inputMap, gen.map), ); - return {code: min.code, map: inputMap && min.map, dependencies}; + return {code: min.code, map: min.map, dependencies}; } function optimizeCode(code, map, filename, inliningOptions) { @@ -86,7 +87,11 @@ function optimizeCode(code, map, filename, inliningOptions) { }); } -function mergeSourceMaps(file, originalMap, secondMap) { +function mergeSourceMaps( + file: string, + originalMap: SourceMap, + secondMap: SourceMap, +): MappingsMap { const merged = new sourceMap.SourceMapGenerator(); const inputMap = new sourceMap.SourceMapConsumer(originalMap); new sourceMap.SourceMapConsumer(secondMap) From 9b06205f82b75638ee109bf9f17a3f2de2ac56fc Mon Sep 17 00:00:00 2001 From: Jean Lauliac Date: Wed, 10 May 2017 05:22:45 -0700 Subject: [PATCH 0048/1101] packager: remove unused declareOpts module Summary: That module is not used anymore, remove it and its dependency `joi`. Reviewed By: cpojer Differential Revision: D5028909 fbshipit-source-id: 90b9b156fbfe642cce93a530faf8ce91c5b848f5 --- package.json | 1 - .../src/Bundler/__tests__/Bundler-test.js | 3 +- packager/src/Server/__tests__/Server-test.js | 1 - .../src/lib/__tests__/declareOpts-test.js | 92 ------------------- packager/src/lib/declareOpts.js | 75 --------------- 5 files changed, 1 insertion(+), 171 deletions(-) delete mode 100644 packager/src/lib/__tests__/declareOpts-test.js delete mode 100644 packager/src/lib/declareOpts.js diff --git a/package.json b/package.json index efa2cb99c9f5..4ee90b6b3bab 100644 --- a/package.json +++ b/package.json @@ -171,7 +171,6 @@ "image-size": "^0.3.5", "inquirer": "^0.12.0", "jest-haste-map": "19.0.0", - "joi": "^6.6.1", "json-stable-stringify": "^1.0.1", "json5": "^0.4.0", "left-pad": "^1.1.3", diff --git a/packager/src/Bundler/__tests__/Bundler-test.js b/packager/src/Bundler/__tests__/Bundler-test.js index a8924a4feb6c..5a171a806344 100644 --- a/packager/src/Bundler/__tests__/Bundler-test.js +++ b/packager/src/Bundler/__tests__/Bundler-test.js @@ -21,12 +21,11 @@ jest .mock('progress') .mock('../../node-haste/DependencyGraph') .mock('../../JSTransformer') - .mock('../../lib/declareOpts') .mock('../../Resolver') .mock('../Bundle') .mock('../HMRBundle') .mock('../../Logger') - .mock('../../lib/declareOpts'); + ; var Bundler = require('../'); var Resolver = require('../../Resolver'); diff --git a/packager/src/Server/__tests__/Server-test.js b/packager/src/Server/__tests__/Server-test.js index d98072883740..2dfa6d3d1f86 100644 --- a/packager/src/Server/__tests__/Server-test.js +++ b/packager/src/Server/__tests__/Server-test.js @@ -22,7 +22,6 @@ jest.mock('../../worker-farm', () => () => () => {}) ) .mock('../../Bundler') .mock('../../AssetServer') - .mock('../../lib/declareOpts') .mock('../../node-haste/DependencyGraph') .mock('../../Logger') .mock('../../lib/GlobalTransformCache'); diff --git a/packager/src/lib/__tests__/declareOpts-test.js b/packager/src/lib/__tests__/declareOpts-test.js deleted file mode 100644 index fec70f9d22cf..000000000000 --- a/packager/src/lib/__tests__/declareOpts-test.js +++ /dev/null @@ -1,92 +0,0 @@ -/** - * Copyright (c) 2015-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - */ -'use strict'; - -jest.disableAutomock(); - -var declareOpts = require('../declareOpts'); - -describe('declareOpts', function() { - it('should declare and validate simple opts', function() { - var validate = declareOpts({ - name: { - required: true, - type: 'string', - }, - age: { - type: 'number', - default: 21, - }, - }); - var opts = validate({name: 'fooer'}); - - expect(opts).toEqual({ - name: 'fooer', - age: 21, - }); - }); - - it('should work with complex types', function() { - var validate = declareOpts({ - things: { - required: true, - type: 'array', - }, - stuff: { - type: 'object', - required: true, - }, - }); - - var opts = validate({things: [1, 2, 3], stuff: {hai: 1}}); - expect(opts).toEqual({ - things: [1, 2, 3], - stuff: {hai: 1}, - }); - }); - - it('should throw when a required option is not present', function() { - var validate = declareOpts({ - foo: { - required: true, - type: 'number', - }, - }); - - expect(function() { - validate({}); - }).toThrow(); - }); - - it('should throw on invalid type', function() { - var validate = declareOpts({ - foo: { - required: true, - type: 'number', - }, - }); - - expect(function() { - validate({foo: 'lol'}); - }).toThrow(); - }); - - it('should throw on extra options', function() { - var validate = declareOpts({ - foo: { - required: true, - type: 'number', - }, - }); - - expect(function() { - validate({foo: 1, lol: 1}); - }).toThrow(); - }); -}); diff --git a/packager/src/lib/declareOpts.js b/packager/src/lib/declareOpts.js deleted file mode 100644 index 719da9411e93..000000000000 --- a/packager/src/lib/declareOpts.js +++ /dev/null @@ -1,75 +0,0 @@ -/** - * Copyright (c) 2015-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - * Declares, validates and defaults options. - * var validate = declareOpts({ - * foo: { - * type: 'bool', - * required: true, - * } - * }); - * - * var myOptions = validate(someOptions); - * - * @flow - */ - -'use strict'; - -var Joi = require('joi'); - -/** - * TOut is always more specific than TIn, so it's a subtype. - */ -module.exports = function( - descriptor: {[name: string]: { - type: mixed, - required?: boolean, - default?: mixed, - }}, -): (untyped: TIn) => TOut { - var joiKeys = {}; - Object.keys(descriptor).forEach(function(prop) { - var record = descriptor[prop]; - if (record.type == null) { - throw new Error('Type is required'); - } - - if (record.type === 'function') { - record.type = 'func'; - } - - var propValidator = Joi[record.type](); - - if (record.required) { - propValidator = propValidator.required(); - } - - if (record.default) { - propValidator = propValidator.default(record.default); - } - - joiKeys[prop] = propValidator; - }); - - var schema = Joi.object().keys(joiKeys); - - return function(opts) { - opts = opts || {}; - - var res = Joi.validate(opts, schema, { - abortEarly: true, - allowUnknown: false, - }); - - if (res.error) { - throw new Error('Error validating module options: ' + res.error.message); - } - return res.value; - }; -}; From 48c27b9a6c159d4499d7fd6a915fa7159781fdd6 Mon Sep 17 00:00:00 2001 From: Michael Lee Date: Wed, 10 May 2017 05:57:59 -0700 Subject: [PATCH 0049/1101] Fix gradle build due to renamed boost directory Reviewed By: yungsters Differential Revision: D5033507 fbshipit-source-id: 1ab1126e0beb0a72f5a090a7cfeee0d5d99b0d16 --- ReactAndroid/build.gradle | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/ReactAndroid/build.gradle b/ReactAndroid/build.gradle index 783abedc84a7..62f2ee43a6c7 100644 --- a/ReactAndroid/build.gradle +++ b/ReactAndroid/build.gradle @@ -17,7 +17,7 @@ def downloadsDir = new File("$buildDir/downloads") def thirdPartyNdkDir = new File("$buildDir/third-party-ndk") // You need to have following folders in this directory: -// - boost_1_57_0 +// - boost_1_63_0 // - double-conversion-1.1.1 // - folly-deprecate-dynamic-initializer // - glog-0.3.3 @@ -44,9 +44,12 @@ task downloadBoost(dependsOn: createNativeDepsDirectories, type: Download) { task prepareBoost(dependsOn: boostPath ? [] : [downloadBoost], type: Copy) { from boostPath ?: tarTree(resources.gzip(downloadBoost.dest)) from 'src/main/jni/third-party/boost/Android.mk' - include 'Android.mk', 'boost_1_63_0/boost/**/*.hpp' + include 'Android.mk', 'boost_1_63_0/boost/**/*.hpp', 'boost/boost/**/*.hpp' includeEmptyDirs = false into "$thirdPartyNdkDir/boost" + doLast { + file("$thirdPartyNdkDir/boost/boost").renameTo("$thirdPartyNdkDir/boost/boost_1_63_0") + } } task downloadDoubleConversion(dependsOn: createNativeDepsDirectories, type: Download) { From 8f6d040c234fe7968d44c944458408bcdb9c2359 Mon Sep 17 00:00:00 2001 From: Jean Lauliac Date: Wed, 10 May 2017 05:58:15 -0700 Subject: [PATCH 0050/1101] packager: trying out @format Summary: Internally when adding `format` we have a lint rule that automatically reformat using `prettier` and the project rule. I'm concerned how we can ensure this stays consistent when merging PRs though. It's not a big issue because the volume of PRs is low, but we'll have to figure it out later on. Reviewed By: davidaurelio Differential Revision: D5035830 fbshipit-source-id: 6f2bc9eb8212938ff785a34d2684efd1a9813e1a --- packager/src/node-haste/AssetModule.js | 22 ++++-- .../src/node-haste/FilesByDirNameIndex.js | 1 + packager/src/node-haste/Module.js | 76 +++++++++++++------ packager/src/node-haste/ModuleCache.js | 61 ++++++++------- packager/src/node-haste/Package.js | 15 ++-- packager/src/node-haste/Polyfill.js | 12 +-- packager/src/node-haste/types.js | 1 + 7 files changed, 115 insertions(+), 73 deletions(-) diff --git a/packager/src/node-haste/AssetModule.js b/packager/src/node-haste/AssetModule.js index 2d8523cdcb8d..8cb8c26f8e36 100644 --- a/packager/src/node-haste/AssetModule.js +++ b/packager/src/node-haste/AssetModule.js @@ -7,6 +7,7 @@ * of patent rights can be found in the PATENTS file in the same directory. * * @flow + * @format */ 'use strict'; @@ -18,13 +19,15 @@ const getAssetDataFromName = require('./lib/getAssetDataFromName'); import type {CachedReadResult, ConstructorArgs, ReadResult} from './Module'; class AssetModule extends Module { - resolution: mixed; _name: string; _type: string; _dependencies: Array; - constructor(args: ConstructorArgs & {dependencies: Array}, platforms: Set) { + constructor( + args: ConstructorArgs & {dependencies: Array}, + platforms: Set, + ) { super(args); const {resolution, name, type} = getAssetDataFromName(this.path, platforms); this.resolution = resolution; @@ -38,9 +41,12 @@ class AssetModule extends Module { } readCached(): CachedReadResult { - /** $FlowFixMe: improper OOP design. AssetModule, being different from a - * normal Module, shouldn't inherit it in the first place. */ - return {result: {dependencies: this._dependencies}, outdatedDependencies: []}; + return { + /** $FlowFixMe: improper OOP design. AssetModule, being different from a + * normal Module, shouldn't inherit it in the first place. */ + result: {dependencies: this._dependencies}, + outdatedDependencies: [], + }; } /** $FlowFixMe: improper OOP design. */ @@ -49,9 +55,9 @@ class AssetModule extends Module { } getName() { - return super.getName().then( - id => id.replace(/\/[^\/]+$/, `/${this._name}.${this._type}`) - ); + return super + .getName() + .then(id => id.replace(/\/[^\/]+$/, `/${this._name}.${this._type}`)); } hash() { diff --git a/packager/src/node-haste/FilesByDirNameIndex.js b/packager/src/node-haste/FilesByDirNameIndex.js index 0da11bf9041d..10af60cda22b 100644 --- a/packager/src/node-haste/FilesByDirNameIndex.js +++ b/packager/src/node-haste/FilesByDirNameIndex.js @@ -7,6 +7,7 @@ * of patent rights can be found in the PATENTS file in the same directory. * * @flow + * @format */ 'use strict'; diff --git a/packager/src/node-haste/Module.js b/packager/src/node-haste/Module.js index eb20216ebf24..7152857ace62 100644 --- a/packager/src/node-haste/Module.js +++ b/packager/src/node-haste/Module.js @@ -7,6 +7,7 @@ * of patent rights can be found in the PATENTS file in the same directory. * * @flow + * @format */ 'use strict'; @@ -22,13 +23,17 @@ const jsonStableStringify = require('json-stable-stringify'); const {join: joinPath, relative: relativePath, extname} = require('path'); -import type {TransformedCode, Options as WorkerOptions} from '../JSTransformer/worker/worker'; +import type { + TransformedCode, + Options as WorkerOptions, +} from '../JSTransformer/worker/worker'; import type {GlobalTransformCache} from '../lib/GlobalTransformCache'; import type {MappingsMap} from '../lib/SourceMap'; import type {GetTransformCacheKey} from '../lib/TransformCache'; import type {ReadTransformProps} from '../lib/TransformCache'; import type {Reporter} from '../lib/reporting'; -import type DependencyGraphHelpers from './DependencyGraph/DependencyGraphHelpers'; +import type DependencyGraphHelpers + from './DependencyGraph/DependencyGraphHelpers'; import type ModuleCache from './ModuleCache'; export type ReadResult = { @@ -51,12 +56,12 @@ export type TransformCode = ( ) => Promise; export type HasteImpl = { - getHasteName(filePath: string): (string | void), + getHasteName(filePath: string): string | void, // This exists temporarily to enforce consistency while we deprecate // @providesModule. enforceHasteNameMatches?: ( filePath: string, - expectedName: (string | void), + expectedName: string | void, ) => void, }; @@ -81,7 +86,6 @@ type DocBlock = {+[key: string]: string}; const TRANSFORM_CACHE = new TransformCache(); class Module { - path: string; type: string; @@ -155,14 +159,16 @@ class Module { return this.path; } - return p.getName() - .then(packageName => { - if (!packageName) { - return this.path; - } + return p.getName().then(packageName => { + if (!packageName) { + return this.path; + } - return joinPath(packageName, relativePath(p.root, this.path)).replace(/\\/g, '/'); - }); + return joinPath(packageName, relativePath(p.root, this.path)).replace( + /\\/g, + '/', + ); + }); }); } @@ -296,13 +302,18 @@ class Module { return; } _globalCache.fetch(cacheProps).then( - globalCachedResult => process.nextTick(() => { - if (globalCachedResult == null) { - this._transformAndStoreCodeGlobally(cacheProps, _globalCache, callback); - return; - } - callback(undefined, globalCachedResult); - }), + globalCachedResult => + process.nextTick(() => { + if (globalCachedResult == null) { + this._transformAndStoreCodeGlobally( + cacheProps, + _globalCache, + callback, + ); + return; + } + callback(undefined, globalCachedResult); + }), globalCacheError => process.nextTick(() => callback(globalCacheError)), ); } @@ -360,13 +371,22 @@ class Module { transformOptions: WorkerOptions, transformOptionsKey: string, ): CachedReadResult { - const cacheProps = this._getCacheProps(transformOptions, transformOptionsKey); + const cacheProps = this._getCacheProps( + transformOptions, + transformOptionsKey, + ); const cachedResult = TRANSFORM_CACHE.readSync(cacheProps); if (cachedResult.result == null) { - return {result: null, outdatedDependencies: cachedResult.outdatedDependencies}; + return { + result: null, + outdatedDependencies: cachedResult.outdatedDependencies, + }; } return { - result: this._finalizeReadResult(cacheProps.sourceCode, cachedResult.result), + result: this._finalizeReadResult( + cacheProps.sourceCode, + cachedResult.result, + ), outdatedDependencies: [], }; } @@ -394,11 +414,16 @@ class Module { return; } invariant(freshResult != null, 'inconsistent state'); - resolve(this._finalizeReadResult(cacheProps.sourceCode, freshResult)); + resolve( + this._finalizeReadResult(cacheProps.sourceCode, freshResult), + ); }, ); }).then(result => { - this._readResultsByOptionsKey.set(key, {result, outdatedDependencies: []}); + this._readResultsByOptionsKey.set(key, { + result, + outdatedDependencies: [], + }); return result; }); }); @@ -444,7 +469,8 @@ const knownHashes = new WeakMap(); function stableObjectHash(object) { let digest = knownHashes.get(object); if (!digest) { - digest = crypto.createHash('md5') + digest = crypto + .createHash('md5') .update(jsonStableStringify(object)) .digest('base64'); knownHashes.set(object, digest); diff --git a/packager/src/node-haste/ModuleCache.js b/packager/src/node-haste/ModuleCache.js index 6f7817d4eb5c..0a183b1613cd 100644 --- a/packager/src/node-haste/ModuleCache.js +++ b/packager/src/node-haste/ModuleCache.js @@ -7,6 +7,7 @@ * of patent rights can be found in the PATENTS file in the same directory. * * @flow + * @format */ 'use strict'; @@ -19,13 +20,13 @@ const Polyfill = require('./Polyfill'); import type {GlobalTransformCache} from '../lib/GlobalTransformCache'; import type {GetTransformCacheKey} from '../lib/TransformCache'; import type {Reporter} from '../lib/reporting'; -import type DependencyGraphHelpers from './DependencyGraph/DependencyGraphHelpers'; +import type DependencyGraphHelpers + from './DependencyGraph/DependencyGraphHelpers'; import type {TransformCode, Options as ModuleOptions} from './Module'; type GetClosestPackageFn = (filePath: string) => ?string; class ModuleCache { - _assetDependencies: Array; _depGraphHelpers: DependencyGraphHelpers; _getClosestPackage: GetClosestPackageFn; @@ -39,26 +40,29 @@ class ModuleCache { _transformCode: TransformCode; _reporter: Reporter; - constructor({ - assetDependencies, - depGraphHelpers, - extractRequires, - getClosestPackage, - getTransformCacheKey, - globalTransformCache, - moduleOptions, - reporter, - transformCode, - }: { - assetDependencies: Array, - depGraphHelpers: DependencyGraphHelpers, - getClosestPackage: GetClosestPackageFn, - getTransformCacheKey: GetTransformCacheKey, - globalTransformCache: ?GlobalTransformCache, - moduleOptions: ModuleOptions, - reporter: Reporter, - transformCode: TransformCode, - }, platforms: Set) { + constructor( + { + assetDependencies, + depGraphHelpers, + extractRequires, + getClosestPackage, + getTransformCacheKey, + globalTransformCache, + moduleOptions, + reporter, + transformCode, + }: { + assetDependencies: Array, + depGraphHelpers: DependencyGraphHelpers, + getClosestPackage: GetClosestPackageFn, + getTransformCacheKey: GetTransformCacheKey, + globalTransformCache: ?GlobalTransformCache, + moduleOptions: ModuleOptions, + reporter: Reporter, + transformCode: TransformCode, + }, + platforms: Set, + ) { this._assetDependencies = assetDependencies; this._getClosestPackage = getClosestPackage; this._getTransformCacheKey = getTransformCacheKey; @@ -98,11 +102,14 @@ class ModuleCache { /* $FlowFixMe: missing options. This is because this is an incorrect OOP * design in the first place: AssetModule, being simpler than a normal * Module, should not inherit the Module class. */ - this._moduleCache[filePath] = new AssetModule({ - file: filePath, - moduleCache: this, - dependencies: this._assetDependencies, - }, this._platforms); + this._moduleCache[filePath] = new AssetModule( + { + file: filePath, + moduleCache: this, + dependencies: this._assetDependencies, + }, + this._platforms, + ); } return this._moduleCache[filePath]; } diff --git a/packager/src/node-haste/Package.js b/packager/src/node-haste/Package.js index a6fa0cbbaf94..6e3f3efb3a51 100644 --- a/packager/src/node-haste/Package.js +++ b/packager/src/node-haste/Package.js @@ -7,6 +7,7 @@ * of patent rights can be found in the PATENTS file in the same directory. * * @flow + * @format */ 'use strict'; @@ -23,16 +24,13 @@ type PackageContent = { }; class Package { - path: string; root: string; type: string; _content: ?PackageContent; - constructor({file}: { - file: string, - }) { + constructor({file}: {file: string}) { this.path = path.resolve(file); this.root = path.dirname(this.path); this.type = 'Package'; @@ -49,7 +47,8 @@ class Package { let main = json.main || 'index'; if (replacements && typeof replacements === 'object') { - main = replacements[main] || + main = + replacements[main] || replacements[main + '.js'] || replacements[main + '.json'] || replacements[main.replace(/(\.js|\.json)$/, '')] || @@ -85,8 +84,8 @@ class Package { // support exclude with "someDependency": false return replacement === false ? false - /* $FlowFixMe: type of replacements is not being validated */ - : replacement || name; + : /* $FlowFixMe: type of replacements is not being validated */ + replacement || name; } let relPath = './' + path.relative(this.root, name); @@ -113,7 +112,7 @@ class Package { return path.join( this.root, /* $FlowFixMe: `getReplacements` doesn't validate the return value. */ - redirect + redirect, ); } diff --git a/packager/src/node-haste/Polyfill.js b/packager/src/node-haste/Polyfill.js index 8a282520acb6..2e31af4af4c0 100644 --- a/packager/src/node-haste/Polyfill.js +++ b/packager/src/node-haste/Polyfill.js @@ -7,6 +7,7 @@ * of patent rights can be found in the PATENTS file in the same directory. * * @flow + * @format */ 'use strict'; @@ -16,14 +17,15 @@ const Module = require('./Module'); import type {ConstructorArgs} from './Module'; class Polyfill extends Module { - _id: string; _dependencies: Array; - constructor(options: ConstructorArgs & { - id: string, - dependencies: Array, - }) { + constructor( + options: ConstructorArgs & { + id: string, + dependencies: Array, + }, + ) { super(options); this._id = options.id; this._dependencies = options.dependencies; diff --git a/packager/src/node-haste/types.js b/packager/src/node-haste/types.js index 59ddf0e9f1db..b7598ccd5d44 100644 --- a/packager/src/node-haste/types.js +++ b/packager/src/node-haste/types.js @@ -7,6 +7,7 @@ * of patent rights can be found in the PATENTS file in the same directory. * * @flow + * @format */ 'use strict'; From 867a6dbd27da4fcaa6ef0ec1ad2afc47499fcad5 Mon Sep 17 00:00:00 2001 From: Pavlos Vinieratos Date: Wed, 10 May 2017 08:26:49 -0700 Subject: [PATCH 0051/1101] MacOS -> macOS Summary: Thanks for submitting a PR! Please read these instructions carefully: - [X] Explain the **motivation** for making this change. - [X] Provide a **test plan** demonstrating that the code is solid. - [X] Match the **code formatting** of the rest of the codebase. - [X] Target the `master` branch, NOT a "stable" branch. it has been just annoying me for a long time. its `Mac` but its `macOS`. https://www.apple.com/macos/sierra/ no testing needed o be merged. For more info, see the ["Pull Requests"][5] section of our "Contributing" guidelines. [1]: https://medium.com/martinkonicek/what-is-a-test-plan-8bfc840ec171#.y9lcuqqi9 [2]: https://code.facebook.com/cla [3]: https://travis-ci.org/facebook/react-native [4]: http://circleci.com/gh/facebook/react-native [5]: https://github.com/facebook/react-native/blob/master/CONTRIBUTING.md#pull-requests Closes https://github.com/facebook/react-native/pull/13896 Differential Revision: D5036473 Pulled By: javache fbshipit-source-id: e8f0813d67648da27af932a72e84e744c5ae84da --- .github/ISSUE_TEMPLATE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index 0911213387bf..f4109435d285 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -32,5 +32,5 @@ What needs to be done to address this issue? Ideally, provide a pull request wit * React Native version: [FILL THIS OUT: Be specific, filling out "latest" here is not enough.] * Platform: [FILL THIS OUT: iOS, Android, or both?] -* Development Operating System: [FILL THIS OUT: Are you developing on MacOS, Linux, or Windows?] +* Development Operating System: [FILL THIS OUT: Are you developing on macOS, Linux, or Windows?] * Dev tools: [FILL THIS OUT: Xcode or Android Studio version, iOS or Android SDK version, if applicable] From 3e46c051d3523c4dab41175469650676c5363edc Mon Sep 17 00:00:00 2001 From: Jean Lauliac Date: Thu, 11 May 2017 03:35:06 -0700 Subject: [PATCH 0052/1101] packager: ResolutionRequest: @format Summary: Add `prettier` before I continue some refactorings. Reviewed By: davidaurelio Differential Revision: D5036276 fbshipit-source-id: 590e1b23864f28c51d337204df3281dd8bd311cd --- .../DependencyGraph/ResolutionRequest.js | 286 ++++++++++++------ 1 file changed, 188 insertions(+), 98 deletions(-) diff --git a/packager/src/node-haste/DependencyGraph/ResolutionRequest.js b/packager/src/node-haste/DependencyGraph/ResolutionRequest.js index 708b47fe4160..8e7e0fb914f4 100644 --- a/packager/src/node-haste/DependencyGraph/ResolutionRequest.js +++ b/packager/src/node-haste/DependencyGraph/ResolutionRequest.js @@ -7,7 +7,9 @@ * of patent rights can be found in the PATENTS file in the same directory. * * @flow + * @format */ + 'use strict'; const AsyncTaskGroup = require('../lib/AsyncTaskGroup'); @@ -24,7 +26,9 @@ const getAssetDataFromName = require('../lib/getAssetDataFromName'); import type {HasteFS} from '../types'; import type DependencyGraphHelpers from './DependencyGraphHelpers'; import type ResolutionResponse from './ResolutionResponse'; -import type {Options as TransformWorkerOptions} from '../../JSTransformer/worker/worker'; +import type { + Options as TransformWorkerOptions, +} from '../../JSTransformer/worker/worker'; import type {ReadResult, CachedReadResult} from '../Module'; type DirExistsFn = (filePath: string) => boolean; @@ -33,8 +37,16 @@ type DirExistsFn = (filePath: string) => boolean; * `jest-haste-map`'s interface for ModuleMap. */ export type ModuleMap = { - getModule(name: string, platform: ?string, supportsNativePlatform: boolean): ?string, - getPackage(name: string, platform: ?string, supportsNativePlatform: boolean): ?string, + getModule( + name: string, + platform: ?string, + supportsNativePlatform: boolean, + ): ?string, + getPackage( + name: string, + platform: ?string, + supportsNativePlatform: boolean, + ): ?string, }; type Packageish = { @@ -52,12 +64,19 @@ type Moduleish = { }; type ModuleishCache = { - getPackage(name: string, platform?: string, supportsNativePlatform?: boolean): TPackage, + getPackage( + name: string, + platform?: string, + supportsNativePlatform?: boolean, + ): TPackage, getModule(path: string): TModule, getAssetModule(path: string): TModule, }; -type MatchFilesByDirAndPattern = (dirName: string, pattern: RegExp) => Array; +type MatchFilesByDirAndPattern = ( + dirName: string, + pattern: RegExp, +) => Array; type Options = {| +dirExists: DirExistsFn, @@ -91,7 +110,6 @@ function tryResolveSync(action: () => T, secondaryAction: () => T): T { } class ResolutionRequest { - _immediateResolutionCache: {[key: string]: TModule}; _options: Options; static emptyModule: string; @@ -101,7 +119,10 @@ class ResolutionRequest { this._resetResolutionCache(); } - _tryResolve(action: () => Promise, secondaryAction: () => ?Promise): Promise { + _tryResolve( + action: () => Promise, + secondaryAction: () => ?Promise, + ): Promise { return action().catch(error => { if (error.type !== 'UnableToResolveError') { throw error; @@ -123,8 +144,10 @@ class ResolutionRequest { return result; }; - if (!this._options.helpers.isNodeModulesDir(fromModule.path) - && !(isRelativeImport(toModuleName) || isAbsolutePath(toModuleName))) { + if ( + !this._options.helpers.isNodeModulesDir(fromModule.path) && + !(isRelativeImport(toModuleName) || isAbsolutePath(toModuleName)) + ) { const result = tryResolveSync( () => this._resolveHasteDependency(fromModule, toModuleName), () => this._resolveNodeDependency(fromModule, toModuleName), @@ -139,7 +162,9 @@ class ResolutionRequest { module: TModule, dependencyNames: $ReadOnlyArray, ): [$ReadOnlyArray, $ReadOnlyArray] { - const dependencies = dependencyNames.map(name => this.resolveDependency(module, name)); + const dependencies = dependencyNames.map(name => + this.resolveDependency(module, name), + ); return [dependencyNames, dependencies]; } @@ -173,16 +198,25 @@ class ResolutionRequest { }); } - const resolveDependencies = (module: TModule) => Promise.resolve().then(() => { - const cached = module.readCached(transformOptions); - if (cached.result != null) { - return this.resolveModuleDependencies(module, cached.result.dependencies); - } - return module.readFresh(transformOptions) - .then(({dependencies}) => this.resolveModuleDependencies(module, dependencies)); - }); + const resolveDependencies = (module: TModule) => + Promise.resolve().then(() => { + const cached = module.readCached(transformOptions); + if (cached.result != null) { + return this.resolveModuleDependencies( + module, + cached.result.dependencies, + ); + } + return module + .readFresh(transformOptions) + .then(({dependencies}) => + this.resolveModuleDependencies(module, dependencies), + ); + }); - const collectedDependencies = new MapWithDefaults(module => collect(module)); + const collectedDependencies = new MapWithDefaults(module => + collect(module), + ); const crawlDependencies = (mod, [depNames, dependencies]) => { const filteredPairs = []; @@ -192,7 +226,7 @@ class ResolutionRequest { debug( 'WARNING: Cannot find required module `%s` from module `%s`', name, - mod.path + mod.path, ); return false; } @@ -202,20 +236,25 @@ class ResolutionRequest { response.setResolvedDependencyPairs(mod, filteredPairs); const dependencyModules = filteredPairs.map(([, m]) => m); - const newDependencies = - dependencyModules.filter(m => !collectedDependencies.has(m)); + const newDependencies = dependencyModules.filter( + m => !collectedDependencies.has(m), + ); if (onProgress) { finishedModules += 1; totalModules += newDependencies.length; - onProgress(finishedModules, Math.max(totalModules, preprocessedModuleCount)); + onProgress( + finishedModules, + Math.max(totalModules, preprocessedModuleCount), + ); } if (recursive) { // doesn't block the return of this function invocation, but defers // the resulution of collectionsInProgress.done.then(...) - dependencyModules - .forEach(dependency => collectedDependencies.get(dependency)); + dependencyModules.forEach(dependency => + collectedDependencies.get(dependency), + ); } return dependencyModules; }; @@ -223,49 +262,57 @@ class ResolutionRequest { const collectionsInProgress = new AsyncTaskGroup(); function collect(module) { collectionsInProgress.start(module); - const result = resolveDependencies(module) - .then(deps => crawlDependencies(module, deps)); + const result = resolveDependencies(module).then(deps => + crawlDependencies(module, deps), + ); const end = () => collectionsInProgress.end(module); result.then(end, end); return result; } return Promise.all([ - // kicks off recursive dependency discovery, but doesn't block until it's done + // kicks off recursive dependency discovery, but doesn't block until it's + // done collectedDependencies.get(entry), // resolves when there are no more modules resolving dependencies collectionsInProgress.done, - ]).then(([rootDependencies]) => { - return Promise.all( - Array.from(collectedDependencies, resolveKeyWithPromise) - ).then(moduleToDependenciesPairs => - [rootDependencies, new MapWithDefaults(() => [], moduleToDependenciesPairs)] - ); - }).then(([rootDependencies, moduleDependencies]) => { - // serialize dependencies, and make sure that every single one is only - // included once - const seen = new Set([entry]); - function traverse(dependencies) { - dependencies.forEach(dependency => { - if (seen.has(dependency)) { return; } - - seen.add(dependency); - response.pushDependency(dependency); - traverse(moduleDependencies.get(dependency)); - }); - } + ]) + .then(([rootDependencies]) => { + return Promise.all( + Array.from(collectedDependencies, resolveKeyWithPromise), + ).then(moduleToDependenciesPairs => [ + rootDependencies, + new MapWithDefaults(() => [], moduleToDependenciesPairs), + ]); + }) + .then(([rootDependencies, moduleDependencies]) => { + // serialize dependencies, and make sure that every single one is only + // included once + const seen = new Set([entry]); + function traverse(dependencies) { + dependencies.forEach(dependency => { + if (seen.has(dependency)) { + return; + } + + seen.add(dependency); + response.pushDependency(dependency); + traverse(moduleDependencies.get(dependency)); + }); + } - traverse(rootDependencies); - }); + traverse(rootDependencies); + }); } /** - * This synchronously look at all the specified modules and recursively kicks off global cache - * fetching or transforming (via `readFresh`). This is a hack that workaround the current - * structure, because we could do better. First off, the algorithm that resolves dependencies - * recursively should be synchronous itself until it cannot progress anymore (and needs to - * call `readFresh`), so that this algo would be integrated into it. + * This synchronously look at all the specified modules and recursively kicks + * off global cache fetching or transforming (via `readFresh`). This is a hack + * that workaround the current structure, because we could do better. First + * off, the algorithm that resolves dependencies recursively should be + * synchronous itself until it cannot progress anymore (and needs to call + * `readFresh`), so that this algo would be integrated into it. */ _preprocessPotentialDependencies( transformOptions: TransformWorkerOptions, @@ -273,13 +320,19 @@ class ResolutionRequest { onProgress: (moduleCount: number) => mixed, ): void { const visitedModulePaths = new Set(); - const pendingBatches = [this.preprocessModule(transformOptions, module, visitedModulePaths)]; + const pendingBatches = [ + this.preprocessModule(transformOptions, module, visitedModulePaths), + ]; onProgress(visitedModulePaths.size); while (pendingBatches.length > 0) { const dependencyModules = pendingBatches.pop(); while (dependencyModules.length > 0) { const dependencyModule = dependencyModules.pop(); - const deps = this.preprocessModule(transformOptions, dependencyModule, visitedModulePaths); + const deps = this.preprocessModule( + transformOptions, + dependencyModule, + visitedModulePaths, + ); pendingBatches.push(deps); onProgress(visitedModulePaths.size); } @@ -299,8 +352,13 @@ class ResolutionRequest { }); } const dependencies = cached.result != null - ? cached.result.dependencies : cached.outdatedDependencies; - return this.tryResolveModuleDependencies(module, dependencies, visitedModulePaths); + ? cached.result.dependencies + : cached.outdatedDependencies; + return this.tryResolveModuleDependencies( + module, + dependencies, + visitedModulePaths, + ); } tryResolveModuleDependencies( @@ -331,14 +389,18 @@ class ResolutionRequest { const pck = fromModule.getPackage(); let realModuleName; if (pck) { - /* $FlowFixMe: redirectRequire can actually return `false` for exclusions */ + /* $FlowFixMe: redirectRequire can actually return `false` for + exclusions*/ realModuleName = (pck.redirectRequire(toModuleName): string); } else { realModuleName = toModuleName; } - const modulePath = this._options.moduleMap - .getModule(realModuleName, this._options.platform, /* supportsNativePlatform */ true); + const modulePath = this._options.moduleMap.getModule( + realModuleName, + this._options.platform, + /* supportsNativePlatform */ true, + ); if (modulePath != null) { const module = this._options.moduleCache.getModule(modulePath); /* temporary until we strengthen the typing */ @@ -349,8 +411,11 @@ class ResolutionRequest { let packageName = realModuleName; let packagePath; while (packageName && packageName !== '.') { - packagePath = this._options.moduleMap - .getPackage(packageName, this._options.platform, /* supportsNativePlatform */ true); + packagePath = this._options.moduleMap.getPackage( + packageName, + this._options.platform, + /* supportsNativePlatform */ true, + ); if (packagePath != null) { break; } @@ -358,21 +423,16 @@ class ResolutionRequest { } if (packagePath != null) { - const package_ = this._options.moduleCache.getPackage(packagePath); /* temporary until we strengthen the typing */ invariant(package_.type === 'Package', 'expected Package type'); const potentialModulePath = path.join( package_.root, - path.relative(packageName, realModuleName) + path.relative(packageName, realModuleName), ); return tryResolveSync( - () => this._loadAsFile( - potentialModulePath, - fromModule, - toModuleName, - ), + () => this._loadAsFile(potentialModulePath, fromModule, toModuleName), () => this._loadAsDir(potentialModulePath, fromModule, toModuleName), ); } @@ -393,11 +453,14 @@ class ResolutionRequest { } _resolveFileOrDir(fromModule: TModule, toModuleName: string): TModule { - const potentialModulePath = isAbsolutePath(toModuleName) ? - resolveWindowsPath(toModuleName) : - path.join(path.dirname(fromModule.path), toModuleName); + const potentialModulePath = isAbsolutePath(toModuleName) + ? resolveWindowsPath(toModuleName) + : path.join(path.dirname(fromModule.path), toModuleName); - const realModuleName = this._redirectRequire(fromModule, potentialModulePath); + const realModuleName = this._redirectRequire( + fromModule, + potentialModulePath, + ); if (realModuleName === false) { return this._loadAsFile( ResolutionRequest.emptyModule, @@ -408,7 +471,7 @@ class ResolutionRequest { return tryResolveSync( () => this._loadAsFile(realModuleName, fromModule, toModuleName), - () => this._loadAsDir(realModuleName, fromModule, toModuleName) + () => this._loadAsDir(realModuleName, fromModule, toModuleName), ); } @@ -428,7 +491,8 @@ class ResolutionRequest { if (isRelativeImport(realModuleName) || isAbsolutePath(realModuleName)) { // derive absolute path /.../node_modules/fromModuleDir/realModuleName - const fromModuleParentIdx = fromModule.path.lastIndexOf('node_modules' + path.sep) + 13; + const fromModuleParentIdx = + fromModule.path.lastIndexOf('node_modules' + path.sep) + 13; const fromModuleDir = fromModule.path.slice( 0, fromModule.path.indexOf(path.sep, fromModuleParentIdx), @@ -438,9 +502,11 @@ class ResolutionRequest { } const searchQueue = []; - for (let currDir = path.dirname(fromModule.path); - currDir !== '.' && currDir !== realPath.parse(fromModule.path).root; - currDir = path.dirname(currDir)) { + for ( + let currDir = path.dirname(fromModule.path); + currDir !== '.' && currDir !== realPath.parse(fromModule.path).root; + currDir = path.dirname(currDir) + ) { const searchPath = path.join(currDir, 'node_modules'); searchQueue.push(path.join(searchPath, realModuleName)); } @@ -458,7 +524,11 @@ class ResolutionRequest { const fullSearchQueue = searchQueue.concat(extraSearchQueue); for (let i = 0; i < fullSearchQueue.length; ++i) { - const resolvedModule = this._tryResolveNodeDep(fullSearchQueue[i], fromModule, toModuleName); + const resolvedModule = this._tryResolveNodeDep( + fullSearchQueue[i], + fromModule, + toModuleName, + ); if (resolvedModule != null) { return resolvedModule; } @@ -473,12 +543,15 @@ class ResolutionRequest { fromModule, toModuleName, `Module does not exist in the module map${hint}\n` + - displaySearchQueue.map(searchPath => ` ${path.dirname(searchPath)}\n`).join(', ') + '\n' + - `This might be related to https://github.com/facebook/react-native/issues/4968\n` + - `To resolve try the following:\n` + - ` 1. Clear watchman watches: \`watchman watch-del-all\`.\n` + - ` 2. Delete the \`node_modules\` folder: \`rm -rf node_modules && npm install\`.\n` + - ' 3. Reset packager cache: `rm -fr $TMPDIR/react-*` or `npm start -- --reset-cache`.' + displaySearchQueue + .map(searchPath => ` ${path.dirname(searchPath)}\n`) + .join(', ') + + '\n' + + `This might be related to https://github.com/facebook/react-native/issues/4968\n` + + `To resolve try the following:\n` + + ` 1. Clear watchman watches: \`watchman watch-del-all\`.\n` + + ` 2. Delete the \`node_modules\` folder: \`rm -rf node_modules && npm install\`.\n` + + ' 3. Reset packager cache: `rm -fr $TMPDIR/react-*` or `npm start -- --reset-cache`.', ); } @@ -486,7 +559,11 @@ class ResolutionRequest { * This is written as a separate function because "try..catch" blocks cause * the entire surrounding function to be deoptimized. */ - _tryResolveNodeDep(searchPath: string, fromModule: TModule, toModuleName: string): ?TModule { + _tryResolveNodeDep( + searchPath: string, + fromModule: TModule, + toModuleName: string, + ): ?TModule { try { return tryResolveSync( () => this._loadAsFile(searchPath, fromModule, toModuleName), @@ -500,7 +577,11 @@ class ResolutionRequest { } } - _loadAsFile(potentialModulePath: string, fromModule: TModule, toModule: string): TModule { + _loadAsFile( + potentialModulePath: string, + fromModule: TModule, + toModule: string, + ): TModule { if (this._options.helpers.isAssetFile(potentialModulePath)) { return this._loadAsAssetFile(potentialModulePath, fromModule, toModule); } @@ -540,14 +621,20 @@ class ResolutionRequest { `File ${potentialModulePath} doesn't exist`, ); } - } return this._options.moduleCache.getModule(file); } - _loadAsAssetFile(potentialModulePath: string, fromModule: TModule, toModule: string): TModule { - const {name, type} = getAssetDataFromName(potentialModulePath, this._options.platforms); + _loadAsAssetFile( + potentialModulePath: string, + fromModule: TModule, + toModule: string, + ): TModule { + const {name, type} = getAssetDataFromName( + potentialModulePath, + this._options.platforms, + ); let pattern = '^' + name + '(@[\\d\\.]+x)?'; if (this._options.platform != null) { @@ -570,10 +657,16 @@ class ResolutionRequest { ); } - _loadAsDir(potentialDirPath: string, fromModule: TModule, toModule: string): TModule { + _loadAsDir( + potentialDirPath: string, + fromModule: TModule, + toModule: string, + ): TModule { const packageJsonPath = path.join(potentialDirPath, 'package.json'); if (this._options.hasteFS.exists(packageJsonPath)) { - const main = this._options.moduleCache.getPackage(packageJsonPath).getMain(); + const main = this._options.moduleCache + .getPackage(packageJsonPath) + .getMain(); return tryResolveSync( () => this._loadAsFile(main, fromModule, toModule), () => this._loadAsDir(main, fromModule, toModule), @@ -590,10 +683,8 @@ class ResolutionRequest { _resetResolutionCache() { this._immediateResolutionCache = Object.create(null); } - } - function resolutionHash(modulePath, depName) { return `${path.resolve(modulePath)}:${depName}`; } @@ -615,7 +706,6 @@ class UnableToResolveError extends Error { ); this.type = this.name = 'UnableToResolveError'; } - } function normalizePath(modulePath) { @@ -628,8 +718,8 @@ function normalizePath(modulePath) { return modulePath.replace(/\/$/, ''); } -// HasteFS stores paths with backslashes on Windows, this ensures the path is -// in the proper format. Will also add drive letter if not present so `/root` will +// HasteFS stores paths with backslashes on Windows, this ensures the path is in +// the proper format. Will also add drive letter if not present so `/root` will // resolve to `C:\root`. Noop on other platforms. function resolveWindowsPath(modulePath) { if (path.sep !== '\\') { From 31a0b8788f5f1fcb15a002746a345ae059e58b45 Mon Sep 17 00:00:00 2001 From: ZauberNerd Date: Thu, 11 May 2017 03:36:55 -0700 Subject: [PATCH 0053/1101] Add jest mock for 'PushNotificationManager' Summary: `PushNotificationIOS` is a library that makes use of the `PushNotificationManager` native module. This commit adds a jest mock for its native module so that code that uses `PushNotificationIOS` can be tested using jest. In order to enable behaviour in unit tests it is possible to replace or overwrite the mock implementation, see the [jest guide on mocks](https://facebook.github.io/jest/docs/mock-functions.html). By doing something similar to: ```javascript import { NativeModules } from 'react-native'; const { PushNotificationManager } = NativeModules; // mock 'checkPermissions' to return a different value than the default: PushNotificationManager.checkPermissions.mockImplementationOnce((callback) => { // execute callback in next tick to enable async behaviour process.nextTick(() => callback({ alert: false, badge: false, sound: false })); }); // execute unit tests for code that makes use of 'PushNotificationIOS' ``` Closes https://github.com/facebook/react-native/pull/13410 Differential Revision: D5043904 Pulled By: cpojer fbshipit-source-id: 11e73cd215ba6854d06f4ac7a5aea0ab4be26584 --- jest/setup.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/jest/setup.js b/jest/setup.js index d36a83c58cf2..be9975027e6c 100644 --- a/jest/setup.js +++ b/jest/setup.js @@ -156,6 +156,24 @@ const mockNativeModules = { addListener: jest.fn(), removeListeners: jest.fn(), }, + PushNotificationManager: { + presentLocalNotification: jest.fn(), + scheduleLocalNotification: jest.fn(), + cancelAllLocalNotifications: jest.fn(), + removeAllDeliveredNotifications: jest.fn(), + getDeliveredNotifications: jest.fn(callback => process.nextTick(() => [])), + removeDeliveredNotifications: jest.fn(), + setApplicationIconBadgeNumber: jest.fn(), + getApplicationIconBadgeNumber: jest.fn(callback => process.nextTick(() => callback(0))), + cancelLocalNotifications: jest.fn(), + getScheduledLocalNotifications: jest.fn(callback => process.nextTick(() => callback())), + requestPermissions: jest.fn(() => Promise.resolve({alert: true, badge: true, sound: true})), + abandonPermissions: jest.fn(), + checkPermissions: jest.fn(callback => process.nextTick(() => callback({alert: true, badge: true, sound: true}))), + getInitialNotification: jest.fn(() => Promise.resolve(null)), + addListener: jest.fn(), + removeListeners: jest.fn(), + }, SourceCode: { scriptURL: null, }, From 8b53a2b29bc14cb5b74c1c29a7adc9a62f9cae97 Mon Sep 17 00:00:00 2001 From: Kathy Gray Date: Thu, 11 May 2017 03:39:38 -0700 Subject: [PATCH 0054/1101] Merging cxxbridge and bridge packages Reviewed By: javache Differential Revision: D5027875 fbshipit-source-id: 47e081069d4219bdb29f63ce8a78c1f31a590da7 --- .../java/com/facebook/react/testing/BUCK | 1 - .../react/testing/ReactTestHelper.java | 8 +- .../src/main/java/com/facebook/react/BUCK | 1 - .../react/NativeModuleRegistryBuilder.java | 4 +- .../facebook/react/ReactInstanceManager.java | 14 +- .../react/ReactInstanceManagerBuilder.java | 2 +- .../com/facebook/react/bridge/Arguments.java | 169 ++++++++++++++++-- .../main/java/com/facebook/react/bridge/BUCK | 1 + .../CatalystInstanceImpl.java | 2 +- .../CxxCallbackImpl.java} | 8 +- .../CxxModuleWrapper.java | 2 +- .../CxxModuleWrapperBase.java | 2 +- .../FallbackJSBundleLoader.java | 2 +- .../{cxxbridge => bridge}/JSBundleLoader.java | 2 +- .../JSCJavaScriptExecutor.java | 2 +- .../JavaMethodWrapper.java | 2 +- .../JavaModuleWrapper.java | 2 +- .../JavaScriptExecutor.java | 2 +- .../{cxxbridge => bridge}/ModuleHolder.java | 2 +- .../NativeModuleRegistry.java | 2 +- .../ProxyJavaScriptExecutor.java | 2 +- .../{cxxbridge => bridge}/ReactCallback.java | 2 +- .../react/{cxxbridge => bridge}/bridge.pro | 0 .../com/facebook/react/bridge/reactnative.pro | 10 +- .../main/java/com/facebook/react/common/BUCK | 1 + .../DebugServerException.java | 0 .../facebook/react/cxxbridge/Arguments.java | 159 ---------------- .../java/com/facebook/react/cxxbridge/BUCK | 34 ---- .../react/cxxbridge/SoftAssertions.java | 52 ------ .../react/cxxbridge/UiThreadUtil.java | 56 ------ .../java/com/facebook/react/module/model/BUCK | 1 - .../jni/xreact/jni/CatalystInstanceImpl.h | 4 +- .../main/jni/xreact/jni/CxxModuleWrapper.h | 2 +- .../jni/xreact/jni/CxxModuleWrapperBase.h | 2 +- .../src/main/jni/xreact/jni/JCallback.h | 8 +- .../main/jni/xreact/jni/JavaModuleWrapper.h | 4 +- .../jni/xreact/jni/JavaScriptExecutorHolder.h | 2 +- .../src/main/jni/xreact/jni/MethodInvoker.cpp | 6 +- .../jni/xreact/jni/ModuleRegistryBuilder.h | 2 +- .../src/main/jni/xreact/jni/OnLoad.cpp | 6 +- .../test/java/com/facebook/react/bridge/BUCK | 1 + .../BaseJavaModuleTest.java | 8 +- .../FallbackJSBundleLoaderTest.java | 2 +- .../java/com/facebook/react/cxxbridge/BUCK | 22 --- 44 files changed, 218 insertions(+), 398 deletions(-) rename ReactAndroid/src/main/java/com/facebook/react/{cxxbridge => bridge}/CatalystInstanceImpl.java (99%) rename ReactAndroid/src/main/java/com/facebook/react/{cxxbridge/CallbackImpl.java => bridge/CxxCallbackImpl.java} (72%) rename ReactAndroid/src/main/java/com/facebook/react/{cxxbridge => bridge}/CxxModuleWrapper.java (95%) rename ReactAndroid/src/main/java/com/facebook/react/{cxxbridge => bridge}/CxxModuleWrapperBase.java (97%) rename ReactAndroid/src/main/java/com/facebook/react/{cxxbridge => bridge}/FallbackJSBundleLoader.java (98%) rename ReactAndroid/src/main/java/com/facebook/react/{cxxbridge => bridge}/JSBundleLoader.java (98%) rename ReactAndroid/src/main/java/com/facebook/react/{cxxbridge => bridge}/JSCJavaScriptExecutor.java (97%) rename ReactAndroid/src/main/java/com/facebook/react/{cxxbridge => bridge}/JavaMethodWrapper.java (99%) rename ReactAndroid/src/main/java/com/facebook/react/{cxxbridge => bridge}/JavaModuleWrapper.java (99%) rename ReactAndroid/src/main/java/com/facebook/react/{cxxbridge => bridge}/JavaScriptExecutor.java (96%) rename ReactAndroid/src/main/java/com/facebook/react/{cxxbridge => bridge}/ModuleHolder.java (99%) rename ReactAndroid/src/main/java/com/facebook/react/{cxxbridge => bridge}/NativeModuleRegistry.java (99%) rename ReactAndroid/src/main/java/com/facebook/react/{cxxbridge => bridge}/ProxyJavaScriptExecutor.java (98%) rename ReactAndroid/src/main/java/com/facebook/react/{cxxbridge => bridge}/ReactCallback.java (93%) rename ReactAndroid/src/main/java/com/facebook/react/{cxxbridge => bridge}/bridge.pro (100%) rename ReactAndroid/src/main/java/com/facebook/react/{devsupport => common}/DebugServerException.java (100%) delete mode 100644 ReactAndroid/src/main/java/com/facebook/react/cxxbridge/Arguments.java delete mode 100644 ReactAndroid/src/main/java/com/facebook/react/cxxbridge/BUCK delete mode 100644 ReactAndroid/src/main/java/com/facebook/react/cxxbridge/SoftAssertions.java delete mode 100644 ReactAndroid/src/main/java/com/facebook/react/cxxbridge/UiThreadUtil.java rename ReactAndroid/src/test/java/com/facebook/react/{cxxbridge => bridge}/BaseJavaModuleTest.java (91%) rename ReactAndroid/src/test/java/com/facebook/react/{cxxbridge => bridge}/FallbackJSBundleLoaderTest.java (99%) delete mode 100644 ReactAndroid/src/test/java/com/facebook/react/cxxbridge/BUCK diff --git a/ReactAndroid/src/androidTest/java/com/facebook/react/testing/BUCK b/ReactAndroid/src/androidTest/java/com/facebook/react/testing/BUCK index 57276c344fbe..242629969e2d 100644 --- a/ReactAndroid/src/androidTest/java/com/facebook/react/testing/BUCK +++ b/ReactAndroid/src/androidTest/java/com/facebook/react/testing/BUCK @@ -26,7 +26,6 @@ android_library( react_native_target("java/com/facebook/react:react"), react_native_target("java/com/facebook/react/bridge:bridge"), react_native_target("java/com/facebook/react/common:common"), - react_native_target("java/com/facebook/react/cxxbridge:bridge"), react_native_target("java/com/facebook/react/devsupport:interfaces"), react_native_target("java/com/facebook/react/module/annotations:annotations"), react_native_target("java/com/facebook/react/module/model:model"), diff --git a/ReactAndroid/src/androidTest/java/com/facebook/react/testing/ReactTestHelper.java b/ReactAndroid/src/androidTest/java/com/facebook/react/testing/ReactTestHelper.java index 13a38acd00b5..f37c9a83f95f 100644 --- a/ReactAndroid/src/androidTest/java/com/facebook/react/testing/ReactTestHelper.java +++ b/ReactAndroid/src/androidTest/java/com/facebook/react/testing/ReactTestHelper.java @@ -27,10 +27,10 @@ import com.facebook.react.bridge.ReactApplicationContext; import com.facebook.react.bridge.WritableNativeMap; import com.facebook.react.bridge.queue.ReactQueueConfigurationSpec; -import com.facebook.react.cxxbridge.CatalystInstanceImpl; -import com.facebook.react.cxxbridge.JSBundleLoader; -import com.facebook.react.cxxbridge.JSCJavaScriptExecutor; -import com.facebook.react.cxxbridge.JavaScriptExecutor; +import com.facebook.react.bridge.CatalystInstanceImpl; +import com.facebook.react.bridge.JSBundleLoader; +import com.facebook.react.bridge.JSCJavaScriptExecutor; +import com.facebook.react.bridge.JavaScriptExecutor; import com.facebook.react.modules.core.ReactChoreographer; import com.android.internal.util.Predicate; diff --git a/ReactAndroid/src/main/java/com/facebook/react/BUCK b/ReactAndroid/src/main/java/com/facebook/react/BUCK index 2982e603c15b..6f9688993355 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/BUCK +++ b/ReactAndroid/src/main/java/com/facebook/react/BUCK @@ -9,7 +9,6 @@ DEPS = [ react_native_dep("third-party/java/jsr-305:jsr-305"), react_native_target("java/com/facebook/react/bridge:bridge"), react_native_target("java/com/facebook/react/common:common"), - react_native_target("java/com/facebook/react/cxxbridge:bridge"), react_native_target("java/com/facebook/react/devsupport:devsupport"), react_native_target("java/com/facebook/react/devsupport:interfaces"), react_native_target("java/com/facebook/react/jstasks:jstasks"), diff --git a/ReactAndroid/src/main/java/com/facebook/react/NativeModuleRegistryBuilder.java b/ReactAndroid/src/main/java/com/facebook/react/NativeModuleRegistryBuilder.java index c8693345f57b..cabe52043d83 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/NativeModuleRegistryBuilder.java +++ b/ReactAndroid/src/main/java/com/facebook/react/NativeModuleRegistryBuilder.java @@ -10,14 +10,14 @@ import com.facebook.common.logging.FLog; import com.facebook.react.bridge.BaseJavaModule; import com.facebook.react.bridge.ModuleSpec; +import com.facebook.react.bridge.ModuleHolder; import com.facebook.react.bridge.NativeModule; +import com.facebook.react.bridge.NativeModuleRegistry; import com.facebook.react.bridge.OnBatchCompleteListener; import com.facebook.react.bridge.ReactApplicationContext; import com.facebook.react.bridge.ReactMarker; import com.facebook.react.bridge.ReactMarkerConstants; import com.facebook.react.common.ReactConstants; -import com.facebook.react.cxxbridge.ModuleHolder; -import com.facebook.react.cxxbridge.NativeModuleRegistry; import com.facebook.react.module.model.ReactModuleInfo; /** diff --git a/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java b/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java index 6fde30b39882..6044151e54a2 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java @@ -39,16 +39,16 @@ import com.facebook.react.bridge.ReactMarker; import com.facebook.react.bridge.ReactMarkerConstants; import com.facebook.react.bridge.queue.ReactQueueConfigurationSpec; +import com.facebook.react.bridge.CatalystInstanceImpl; +import com.facebook.react.bridge.JSBundleLoader; +import com.facebook.react.bridge.JSCJavaScriptExecutor; +import com.facebook.react.bridge.JavaScriptExecutor; +import com.facebook.react.bridge.NativeModuleRegistry; +import com.facebook.react.bridge.ProxyJavaScriptExecutor; +import com.facebook.react.bridge.UiThreadUtil; import com.facebook.react.common.LifecycleState; import com.facebook.react.common.ReactConstants; import com.facebook.react.common.annotations.VisibleForTesting; -import com.facebook.react.cxxbridge.CatalystInstanceImpl; -import com.facebook.react.cxxbridge.JSBundleLoader; -import com.facebook.react.cxxbridge.JSCJavaScriptExecutor; -import com.facebook.react.cxxbridge.JavaScriptExecutor; -import com.facebook.react.cxxbridge.NativeModuleRegistry; -import com.facebook.react.cxxbridge.ProxyJavaScriptExecutor; -import com.facebook.react.cxxbridge.UiThreadUtil; import com.facebook.react.devsupport.DevSupportManagerFactory; import com.facebook.react.devsupport.ReactInstanceDevCommandsHandler; import com.facebook.react.devsupport.RedBoxHandler; diff --git a/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManagerBuilder.java b/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManagerBuilder.java index 91eb86f23679..941c204bd465 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManagerBuilder.java +++ b/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManagerBuilder.java @@ -13,8 +13,8 @@ import com.facebook.infer.annotation.Assertions; import com.facebook.react.bridge.NativeModuleCallExceptionHandler; import com.facebook.react.bridge.NotThreadSafeBridgeIdleDebugListener; +import com.facebook.react.bridge.JSBundleLoader; import com.facebook.react.common.LifecycleState; -import com.facebook.react.cxxbridge.JSBundleLoader; import com.facebook.react.devsupport.interfaces.DevSupportManager; import com.facebook.react.devsupport.RedBoxHandler; import com.facebook.react.modules.core.DefaultHardwareBackBtnHandler; diff --git a/ReactAndroid/src/main/java/com/facebook/react/bridge/Arguments.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/Arguments.java index 866104fb1963..e30f0288d3a4 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/bridge/Arguments.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/Arguments.java @@ -6,14 +6,155 @@ * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. */ - package com.facebook.react.bridge; +import java.lang.reflect.Array; + +import java.util.AbstractList; +import java.util.List; +import java.util.Map; + import javax.annotation.Nullable; import android.os.Bundle; +import com.facebook.react.bridge.ReadableMap; +import com.facebook.react.bridge.ReadableMapKeySetIterator; +import com.facebook.react.bridge.ReadableType; +import com.facebook.react.bridge.WritableNativeArray; +import com.facebook.react.bridge.WritableNativeMap; + public class Arguments { + private static Object makeNativeObject(Object object) { + if (object == null) { + return null; + } else if (object instanceof Float || + object instanceof Long || + object instanceof Byte || + object instanceof Short) { + return new Double(((Number) object).doubleValue()); + } else if (object.getClass().isArray()) { + return makeNativeArray(object); + } else if (object instanceof List) { + return makeNativeArray((List) object); + } else if (object instanceof Map) { + return makeNativeMap((Map) object); + } else if (object instanceof Bundle) { + return makeNativeMap((Bundle) object); + } else { + // Boolean, Integer, Double, String, WritableNativeArray, WritableNativeMap + return object; + } + } + + /** + * This method converts a List into a NativeArray. The data types supported + * are boolean, int, float, double, and String. List, Map, and Bundle + * objects, as well as arrays, containing values of the above types and/or + * null, or any recursive arrangement of these, are also supported. The best + * way to think of this is a way to generate a Java representation of a json + * list, from Java types which have a natural representation in json. + */ + public static WritableNativeArray makeNativeArray(List objects) { + WritableNativeArray nativeArray = new WritableNativeArray(); + if (objects == null) { + return nativeArray; + } + for (Object elem : objects) { + elem = makeNativeObject(elem); + if (elem == null) { + nativeArray.pushNull(); + } else if (elem instanceof Boolean) { + nativeArray.pushBoolean((Boolean) elem); + } else if (elem instanceof Integer) { + nativeArray.pushInt((Integer) elem); + } else if (elem instanceof Double) { + nativeArray.pushDouble((Double) elem); + } else if (elem instanceof String) { + nativeArray.pushString((String) elem); + } else if (elem instanceof WritableNativeArray) { + nativeArray.pushArray((WritableNativeArray) elem); + } else if (elem instanceof WritableNativeMap) { + nativeArray.pushMap((WritableNativeMap) elem); + } else { + throw new IllegalArgumentException("Could not convert " + elem.getClass()); + } + } + return nativeArray; + } + + /** + * This overload is like the above, but uses reflection to operate on any + * primitive or object type. + */ + public static WritableNativeArray makeNativeArray(final Object objects) { + if (objects == null) { + return new WritableNativeArray(); + } + // No explicit check for objects's type here. If it's not an array, the + // Array methods will throw IllegalArgumentException. + return makeNativeArray(new AbstractList() { + public int size() { + return Array.getLength(objects); + } + + public Object get(int index) { + return Array.get(objects, index); + } + }); + } + + private static void addEntry(WritableNativeMap nativeMap, String key, Object value) { + value = makeNativeObject(value); + if (value == null) { + nativeMap.putNull(key); + } else if (value instanceof Boolean) { + nativeMap.putBoolean(key, (Boolean) value); + } else if (value instanceof Integer) { + nativeMap.putInt(key, (Integer) value); + } else if (value instanceof Number) { + nativeMap.putDouble(key, ((Number) value).doubleValue()); + } else if (value instanceof String) { + nativeMap.putString(key, (String) value); + } else if (value instanceof WritableNativeArray) { + nativeMap.putArray(key, (WritableNativeArray) value); + } else if (value instanceof WritableNativeMap) { + nativeMap.putMap(key, (WritableNativeMap) value); + } else { + throw new IllegalArgumentException("Could not convert " + value.getClass()); + } + } + + /** + * This method converts a Map into a NativeMap. Value types are supported as + * with makeNativeArray. The best way to think of this is a way to generate + * a Java representation of a json object, from Java types which have a + * natural representation in json. + */ + public static WritableNativeMap makeNativeMap(Map objects) { + WritableNativeMap nativeMap = new WritableNativeMap(); + if (objects == null) { + return nativeMap; + } + for (Map.Entry entry : objects.entrySet()) { + addEntry(nativeMap, entry.getKey(), entry.getValue()); + } + return nativeMap; + } + + /** + * Like the above, but takes a Bundle instead of a Map. + */ + public static WritableNativeMap makeNativeMap(Bundle bundle) { + WritableNativeMap nativeMap = new WritableNativeMap(); + if (bundle == null) { + return nativeMap; + } + for (String key : bundle.keySet()) { + addEntry(nativeMap, key, bundle.get(key)); + } + return nativeMap; + } /** * This method should be used when you need to stub out creating NativeArrays in unit tests. @@ -64,35 +205,34 @@ public static WritableNativeArray fromJavaArgs(Object[] args) { * Convert an array to a {@link WritableArray}. * * @param array the array to convert. Supported types are: {@code String[]}, {@code Bundle[]}, - * {@code int[]}, {@code float[]}, {@code double[]}, {@code boolean[]}. - * + * {@code int[]}, {@code float[]}, {@code double[]}, {@code boolean[]}. * @return the converted {@link WritableArray} * @throws IllegalArgumentException if the passed object is none of the above types */ public static WritableArray fromArray(Object array) { WritableArray catalystArray = createArray(); if (array instanceof String[]) { - for (String v: (String[]) array) { + for (String v : (String[]) array) { catalystArray.pushString(v); } } else if (array instanceof Bundle[]) { - for (Bundle v: (Bundle[]) array) { + for (Bundle v : (Bundle[]) array) { catalystArray.pushMap(fromBundle(v)); } } else if (array instanceof int[]) { - for (int v: (int[]) array) { + for (int v : (int[]) array) { catalystArray.pushInt(v); } } else if (array instanceof float[]) { - for (float v: (float[]) array) { + for (float v : (float[]) array) { catalystArray.pushDouble(v); } } else if (array instanceof double[]) { - for (double v: (double[]) array) { + for (double v : (double[]) array) { catalystArray.pushDouble(v); } } else if (array instanceof boolean[]) { - for (boolean v: (boolean[]) array) { + for (boolean v : (boolean[]) array) { catalystArray.pushBoolean(v); } } else { @@ -104,11 +244,11 @@ public static WritableArray fromArray(Object array) { /** * Convert a {@link Bundle} to a {@link WritableMap}. Supported key types in the bundle * are: - * + *

      *

        - *
      • primitive types: int, float, double, boolean
      • - *
      • arrays supported by {@link #fromArray(Object)}
      • - *
      • {@link Bundle} objects that are recursively converted to maps
      • + *
      • primitive types: int, float, double, boolean
      • + *
      • arrays supported by {@link #fromArray(Object)}
      • + *
      • {@link Bundle} objects that are recursively converted to maps
      • *
      * * @param bundle the {@link Bundle} to convert @@ -117,7 +257,7 @@ public static WritableArray fromArray(Object array) { */ public static WritableMap fromBundle(Bundle bundle) { WritableMap map = createMap(); - for (String key: bundle.keySet()) { + for (String key : bundle.keySet()) { Object value = bundle.get(key); if (value == null) { map.putNull(key); @@ -144,6 +284,7 @@ public static WritableMap fromBundle(Bundle bundle) { /** * Convert a {@link WritableMap} to a {@link Bundle}. + * * @param readableMap the {@link WritableMap} to convert. * @return the converted {@link Bundle}. */ diff --git a/ReactAndroid/src/main/java/com/facebook/react/bridge/BUCK b/ReactAndroid/src/main/java/com/facebook/react/bridge/BUCK index 0f67d30d3587..b2a5d5d72967 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/bridge/BUCK +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/BUCK @@ -33,5 +33,6 @@ android_library( 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/react/common:common"), + react_native_target("java/com/facebook/react/module/model:model"), ], ) diff --git a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/CatalystInstanceImpl.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstanceImpl.java similarity index 99% rename from ReactAndroid/src/main/java/com/facebook/react/cxxbridge/CatalystInstanceImpl.java rename to ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstanceImpl.java index 04b5f59732c9..42ffc8c19afb 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/CatalystInstanceImpl.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstanceImpl.java @@ -7,7 +7,7 @@ * of patent rights can be found in the PATENTS file in the same directory. */ -package com.facebook.react.cxxbridge; +package com.facebook.react.bridge; import javax.annotation.Nullable; diff --git a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/CallbackImpl.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/CxxCallbackImpl.java similarity index 72% rename from ReactAndroid/src/main/java/com/facebook/react/cxxbridge/CallbackImpl.java rename to ReactAndroid/src/main/java/com/facebook/react/bridge/CxxCallbackImpl.java index 76d83ea32717..bb774a6afe28 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/CallbackImpl.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/CxxCallbackImpl.java @@ -1,6 +1,6 @@ // Copyright 2004-present Facebook. All Rights Reserved. -package com.facebook.react.cxxbridge; +package com.facebook.react.bridge; import com.facebook.jni.HybridData; import com.facebook.proguard.annotations.DoNotStrip; @@ -10,15 +10,15 @@ import static com.facebook.react.bridge.Arguments.*; /** - * Callback impl that calls directly into the cxxbridge. Created from C++. + * Callback impl that calls directly into the cxx bridge. Created from C++. */ @DoNotStrip -public class CallbackImpl implements Callback { +public class CxxCallbackImpl implements Callback { @DoNotStrip private final HybridData mHybridData; @DoNotStrip - private CallbackImpl(HybridData hybridData) { + private CxxCallbackImpl(HybridData hybridData) { mHybridData = hybridData; } diff --git a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/CxxModuleWrapper.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/CxxModuleWrapper.java similarity index 95% rename from ReactAndroid/src/main/java/com/facebook/react/cxxbridge/CxxModuleWrapper.java rename to ReactAndroid/src/main/java/com/facebook/react/bridge/CxxModuleWrapper.java index c576290b81c0..3b14ec4423b1 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/CxxModuleWrapper.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/CxxModuleWrapper.java @@ -1,6 +1,6 @@ // Copyright 2004-present Facebook. All Rights Reserved. -package com.facebook.react.cxxbridge; +package com.facebook.react.bridge; import com.facebook.jni.HybridData; import com.facebook.proguard.annotations.DoNotStrip; diff --git a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/CxxModuleWrapperBase.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/CxxModuleWrapperBase.java similarity index 97% rename from ReactAndroid/src/main/java/com/facebook/react/cxxbridge/CxxModuleWrapperBase.java rename to ReactAndroid/src/main/java/com/facebook/react/bridge/CxxModuleWrapperBase.java index f763d9282b86..e6cb4e61c724 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/CxxModuleWrapperBase.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/CxxModuleWrapperBase.java @@ -1,6 +1,6 @@ // Copyright 2004-present Facebook. All Rights Reserved. -package com.facebook.react.cxxbridge; +package com.facebook.react.bridge; import com.facebook.jni.HybridData; import com.facebook.proguard.annotations.DoNotStrip; diff --git a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/FallbackJSBundleLoader.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/FallbackJSBundleLoader.java similarity index 98% rename from ReactAndroid/src/main/java/com/facebook/react/cxxbridge/FallbackJSBundleLoader.java rename to ReactAndroid/src/main/java/com/facebook/react/bridge/FallbackJSBundleLoader.java index ea2ff3274a61..d81949093ec5 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/FallbackJSBundleLoader.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/FallbackJSBundleLoader.java @@ -7,7 +7,7 @@ * of patent rights can be found in the PATENTS file in the same directory. */ -package com.facebook.react.cxxbridge; +package com.facebook.react.bridge; import java.util.ArrayList; import java.util.List; diff --git a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/JSBundleLoader.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/JSBundleLoader.java similarity index 98% rename from ReactAndroid/src/main/java/com/facebook/react/cxxbridge/JSBundleLoader.java rename to ReactAndroid/src/main/java/com/facebook/react/bridge/JSBundleLoader.java index 812676778ac4..b00a7851b739 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/JSBundleLoader.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/JSBundleLoader.java @@ -7,7 +7,7 @@ * of patent rights can be found in the PATENTS file in the same directory. */ -package com.facebook.react.cxxbridge; +package com.facebook.react.bridge; import android.content.Context; diff --git a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/JSCJavaScriptExecutor.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/JSCJavaScriptExecutor.java similarity index 97% rename from ReactAndroid/src/main/java/com/facebook/react/cxxbridge/JSCJavaScriptExecutor.java rename to ReactAndroid/src/main/java/com/facebook/react/bridge/JSCJavaScriptExecutor.java index 36e0bb29efea..1d65e9b1d0ee 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/JSCJavaScriptExecutor.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/JSCJavaScriptExecutor.java @@ -7,7 +7,7 @@ * of patent rights can be found in the PATENTS file in the same directory. */ -package com.facebook.react.cxxbridge; +package com.facebook.react.bridge; import com.facebook.jni.HybridData; import com.facebook.proguard.annotations.DoNotStrip; diff --git a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/JavaMethodWrapper.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaMethodWrapper.java similarity index 99% rename from ReactAndroid/src/main/java/com/facebook/react/cxxbridge/JavaMethodWrapper.java rename to ReactAndroid/src/main/java/com/facebook/react/bridge/JavaMethodWrapper.java index 0728b413b7b5..c78be62ca5c9 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/JavaMethodWrapper.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaMethodWrapper.java @@ -7,7 +7,7 @@ * of patent rights can be found in the PATENTS file in the same directory. */ -package com.facebook.react.cxxbridge; +package com.facebook.react.bridge; import javax.annotation.Nullable; diff --git a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/JavaModuleWrapper.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaModuleWrapper.java similarity index 99% rename from ReactAndroid/src/main/java/com/facebook/react/cxxbridge/JavaModuleWrapper.java rename to ReactAndroid/src/main/java/com/facebook/react/bridge/JavaModuleWrapper.java index bb67aaaa8968..7c243711f946 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/JavaModuleWrapper.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaModuleWrapper.java @@ -7,7 +7,7 @@ * of patent rights can be found in the PATENTS file in the same directory. */ -package com.facebook.react.cxxbridge; +package com.facebook.react.bridge; import javax.annotation.Nullable; diff --git a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/JavaScriptExecutor.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaScriptExecutor.java similarity index 96% rename from ReactAndroid/src/main/java/com/facebook/react/cxxbridge/JavaScriptExecutor.java rename to ReactAndroid/src/main/java/com/facebook/react/bridge/JavaScriptExecutor.java index 7f15732406c9..f03218ff545d 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/JavaScriptExecutor.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaScriptExecutor.java @@ -7,7 +7,7 @@ * of patent rights can be found in the PATENTS file in the same directory. */ -package com.facebook.react.cxxbridge; +package com.facebook.react.bridge; import com.facebook.jni.HybridData; import com.facebook.proguard.annotations.DoNotStrip; diff --git a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/ModuleHolder.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/ModuleHolder.java similarity index 99% rename from ReactAndroid/src/main/java/com/facebook/react/cxxbridge/ModuleHolder.java rename to ReactAndroid/src/main/java/com/facebook/react/bridge/ModuleHolder.java index 9285a9c9f2aa..d19cb336a7ee 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/ModuleHolder.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/ModuleHolder.java @@ -1,6 +1,6 @@ // Copyright 2004-present Facebook. All Rights Reserved. -package com.facebook.react.cxxbridge; +package com.facebook.react.bridge; import javax.annotation.Nullable; import javax.inject.Provider; diff --git a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/NativeModuleRegistry.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/NativeModuleRegistry.java similarity index 99% rename from ReactAndroid/src/main/java/com/facebook/react/cxxbridge/NativeModuleRegistry.java rename to ReactAndroid/src/main/java/com/facebook/react/bridge/NativeModuleRegistry.java index 63597eb85b7c..e9c2080b004a 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/NativeModuleRegistry.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/NativeModuleRegistry.java @@ -7,7 +7,7 @@ * of patent rights can be found in the PATENTS file in the same directory. */ -package com.facebook.react.cxxbridge; +package com.facebook.react.bridge; import java.util.ArrayList; import java.util.Collection; diff --git a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/ProxyJavaScriptExecutor.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/ProxyJavaScriptExecutor.java similarity index 98% rename from ReactAndroid/src/main/java/com/facebook/react/cxxbridge/ProxyJavaScriptExecutor.java rename to ReactAndroid/src/main/java/com/facebook/react/bridge/ProxyJavaScriptExecutor.java index 48fd281e304a..57d9650626bd 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/ProxyJavaScriptExecutor.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/ProxyJavaScriptExecutor.java @@ -7,7 +7,7 @@ * of patent rights can be found in the PATENTS file in the same directory. */ -package com.facebook.react.cxxbridge; +package com.facebook.react.bridge; import javax.annotation.Nullable; diff --git a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/ReactCallback.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactCallback.java similarity index 93% rename from ReactAndroid/src/main/java/com/facebook/react/cxxbridge/ReactCallback.java rename to ReactAndroid/src/main/java/com/facebook/react/bridge/ReactCallback.java index d4299a439944..94784cb30613 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/ReactCallback.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactCallback.java @@ -7,7 +7,7 @@ * of patent rights can be found in the PATENTS file in the same directory. */ -package com.facebook.react.cxxbridge; +package com.facebook.react.bridge; import com.facebook.proguard.annotations.DoNotStrip; diff --git a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/bridge.pro b/ReactAndroid/src/main/java/com/facebook/react/bridge/bridge.pro similarity index 100% rename from ReactAndroid/src/main/java/com/facebook/react/cxxbridge/bridge.pro rename to ReactAndroid/src/main/java/com/facebook/react/bridge/bridge.pro diff --git a/ReactAndroid/src/main/java/com/facebook/react/bridge/reactnative.pro b/ReactAndroid/src/main/java/com/facebook/react/bridge/reactnative.pro index f5c925a42f6e..2625c0032a0f 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/bridge/reactnative.pro +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/reactnative.pro @@ -1,5 +1,5 @@ -keepnames class * extends com.facebook.react.bridge.JavaScriptModule { *; } --keepnames class * extends com.facebook.react.cxxbridge.CxxModuleWrapper {*; } +-keepnames class * extends com.facebook.react.bridge.CxxModuleWrapper {*; } -keepclassmembers class * extends com.facebook.react.bridge.NativeModule { @com.facebook.react.bridge.ReactMethod *; public (...); @@ -17,3 +17,11 @@ void markerAnnotate(int,int,java.lang.String,java.lang.String); void markerTag(int,int,java.lang.String); } + +## Putting this here is kind of a hack. I don't want to modify the OSS bridge. +## TODO mhorowitz: add @DoNotStrip to the interface directly. + +-keepclassmembers class com.facebook.react.bridge.queue.MessageQueueThread { + public boolean isOnThread(); + public void assertIsOnThread(); +} diff --git a/ReactAndroid/src/main/java/com/facebook/react/common/BUCK b/ReactAndroid/src/main/java/com/facebook/react/common/BUCK index 8ba1da479f9a..12fe6d3a81ea 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/common/BUCK +++ b/ReactAndroid/src/main/java/com/facebook/react/common/BUCK @@ -18,6 +18,7 @@ android_library( ], deps = [ ":build_config", + react_native_dep("libraries/fbcore/src/main/java/com/facebook/common/logging:logging"), react_native_dep("third-party/android/support/v4:lib-support-v4"), react_native_dep("third-party/java/infer-annotations:infer-annotations"), react_native_dep("third-party/java/jsr-305:jsr-305"), diff --git a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DebugServerException.java b/ReactAndroid/src/main/java/com/facebook/react/common/DebugServerException.java similarity index 100% rename from ReactAndroid/src/main/java/com/facebook/react/devsupport/DebugServerException.java rename to ReactAndroid/src/main/java/com/facebook/react/common/DebugServerException.java diff --git a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/Arguments.java b/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/Arguments.java deleted file mode 100644 index fbfe0db11281..000000000000 --- a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/Arguments.java +++ /dev/null @@ -1,159 +0,0 @@ -/** - * Copyright (c) 2015-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - */ - -package com.facebook.react.cxxbridge; - -import java.lang.reflect.Array; - -import java.util.AbstractList; -import java.util.List; -import java.util.Map; - -import javax.annotation.Nullable; - -import android.os.Bundle; - -import com.facebook.react.bridge.ReadableMap; -import com.facebook.react.bridge.ReadableMapKeySetIterator; -import com.facebook.react.bridge.ReadableType; -import com.facebook.react.bridge.WritableNativeArray; -import com.facebook.react.bridge.WritableNativeMap; - -public class Arguments { - private static Object makeNativeObject(Object object) { - if (object == null) { - return null; - } else if (object instanceof Float || - object instanceof Long || - object instanceof Byte || - object instanceof Short) { - return new Double(((Number) object).doubleValue()); - } else if (object.getClass().isArray()) { - return makeNativeArray(object); - } else if (object instanceof List) { - return makeNativeArray((List) object); - } else if (object instanceof Map) { - return makeNativeMap((Map) object); - } else if (object instanceof Bundle) { - return makeNativeMap((Bundle) object); - } else { - // Boolean, Integer, Double, String, WritableNativeArray, WritableNativeMap - return object; - } - } - - /** - * This method converts a List into a NativeArray. The data types supported - * are boolean, int, float, double, and String. List, Map, and Bundle - * objects, as well as arrays, containing values of the above types and/or - * null, or any recursive arrangement of these, are also supported. The best - * way to think of this is a way to generate a Java representation of a json - * list, from Java types which have a natural representation in json. - */ - public static WritableNativeArray makeNativeArray(List objects) { - WritableNativeArray nativeArray = new WritableNativeArray(); - if (objects == null) { - return nativeArray; - } - for (Object elem : objects) { - elem = makeNativeObject(elem); - if (elem == null) { - nativeArray.pushNull(); - } else if (elem instanceof Boolean) { - nativeArray.pushBoolean((Boolean) elem); - } else if (elem instanceof Integer) { - nativeArray.pushInt((Integer) elem); - } else if (elem instanceof Double) { - nativeArray.pushDouble((Double) elem); - } else if (elem instanceof String) { - nativeArray.pushString((String) elem); - } else if (elem instanceof WritableNativeArray) { - nativeArray.pushArray((WritableNativeArray) elem); - } else if (elem instanceof WritableNativeMap) { - nativeArray.pushMap((WritableNativeMap) elem); - } else { - throw new IllegalArgumentException("Could not convert " + elem.getClass()); - } - } - return nativeArray; - } - - - /** - * This overload is like the above, but uses reflection to operate on any - * primitive or object type. - */ - public static WritableNativeArray makeNativeArray(final Object objects) { - if (objects == null) { - return new WritableNativeArray(); - } - // No explicit check for objects's type here. If it's not an array, the - // Array methods will throw IllegalArgumentException. - return makeNativeArray(new AbstractList() { - public int size() { - return Array.getLength(objects); - } - public Object get(int index) { - return Array.get(objects, index); - } - }); - } - - private static void addEntry(WritableNativeMap nativeMap, String key, Object value) { - value = makeNativeObject(value); - if (value == null) { - nativeMap.putNull(key); - } else if (value instanceof Boolean) { - nativeMap.putBoolean(key, (Boolean) value); - } else if (value instanceof Integer) { - nativeMap.putInt(key, (Integer) value); - } else if (value instanceof Number) { - nativeMap.putDouble(key, ((Number) value).doubleValue()); - } else if (value instanceof String) { - nativeMap.putString(key, (String) value); - } else if (value instanceof WritableNativeArray) { - nativeMap.putArray(key, (WritableNativeArray) value); - } else if (value instanceof WritableNativeMap) { - nativeMap.putMap(key, (WritableNativeMap) value); - } else { - throw new IllegalArgumentException("Could not convert " + value.getClass()); - } - } - - /** - * This method converts a Map into a NativeMap. Value types are supported as - * with makeNativeArray. The best way to think of this is a way to generate - * a Java representation of a json object, from Java types which have a - * natural representation in json. - */ - public static WritableNativeMap makeNativeMap(Map objects) { - WritableNativeMap nativeMap = new WritableNativeMap(); - if (objects == null) { - return nativeMap; - } - for (Map.Entry entry : objects.entrySet()) { - addEntry(nativeMap, entry.getKey(), entry.getValue()); - } - return nativeMap; - } - - /** - * Like the above, but takes a Bundle instead of a Map. - */ - public static WritableNativeMap makeNativeMap(Bundle bundle) { - WritableNativeMap nativeMap = new WritableNativeMap(); - if (bundle == null) { - return nativeMap; - } - for (String key: bundle.keySet()) { - addEntry(nativeMap, key, bundle.get(key)); - } - return nativeMap; - } -} diff --git a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/BUCK b/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/BUCK deleted file mode 100644 index 42c40aa1e981..000000000000 --- a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/BUCK +++ /dev/null @@ -1,34 +0,0 @@ -include_defs("//ReactAndroid/DEFS") - -android_library( - name = "bridge", - srcs = glob(["**/*.java"]), - exported_deps = [ - react_native_dep("java/com/facebook/jni:jni"), - react_native_dep("java/com/facebook/proguard/annotations:annotations"), - react_native_target("java/com/facebook/react/bridge:bridge"), - ], - proguard_config = "bridge.pro", - visibility = [ - "PUBLIC", - ], - deps = [ - react_native_dep("java/com/facebook/systrace:systrace"), - react_native_dep("libraries/fbcore/src/main/java/com/facebook/common/logging:logging"), - react_native_dep("libraries/soloader/java/com/facebook/soloader:soloader"), - # TODO mhorowitz: - # java/com/facebook/catalyst/js/react-native-github/ReactAndroid/src/main/java/com/facebook/react/bridge/ - # lacks a similar dependency to this. This means that the - # loadLibrary calls in it are not guaranteed to succeed. This is - # kind of a mess for the jni/jni-internal stuff. In theory, we - # should be creating -internal android_library rules, too. In - # practice, since these are resolved at runtime, putting the - # dependency in the app works, too. gross. - # '//native/react/jni:jni-internal', - 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/react/common:common"), - react_native_target("java/com/facebook/react/devsupport:devsupport"), - react_native_target("java/com/facebook/react/module/model:model"), - ], -) diff --git a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/SoftAssertions.java b/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/SoftAssertions.java deleted file mode 100644 index 8809540a0859..000000000000 --- a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/SoftAssertions.java +++ /dev/null @@ -1,52 +0,0 @@ -/** - * Copyright (c) 2015-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - */ - -package com.facebook.react.cxxbridge; - -import javax.annotation.Nullable; - -import com.facebook.react.bridge.AssertionException; - -/** - * Utility class to make assertions that should not hard-crash the app but instead be handled by the - * Catalyst app {@link NativeModuleCallExceptionHandler}. See the javadoc on that class for - * more information about our opinion on when these assertions should be used as opposed to - * assertions that might throw AssertionError Throwables that will cause the app to hard crash. - */ -public class SoftAssertions { - - /** - * Throw {@link AssertionException} with a given message. Use this method surrounded with - * {@code if} block with assert condition in case you plan to do string concatenation to produce - * the message. - */ - public static void assertUnreachable(String message) { - throw new AssertionException(message); - } - - /** - * Asserts the given condition, throwing an {@link AssertionException} if the condition doesn't - * hold. - */ - public static void assertCondition(boolean condition, String message) { - if (!condition) { - throw new AssertionException(message); - } - } - - /** - * Asserts that the given Object isn't null, throwing an {@link AssertionException} if it was. - */ - public static T assertNotNull(@Nullable T instance) { - if (instance == null) { - throw new AssertionException("Expected object to not be null!"); - } - return instance; - } -} diff --git a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/UiThreadUtil.java b/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/UiThreadUtil.java deleted file mode 100644 index d8624474bc76..000000000000 --- a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/UiThreadUtil.java +++ /dev/null @@ -1,56 +0,0 @@ -/** - * Copyright (c) 2015-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - */ - -package com.facebook.react.cxxbridge; - -import javax.annotation.Nullable; - -import android.os.Handler; -import android.os.Looper; - -/** - * Utility for interacting with the UI thread. - */ -public class UiThreadUtil { - - @Nullable private static Handler sMainHandler; - - /** - * @return {@code true} if the current thread is the UI thread. - */ - public static boolean isOnUiThread() { - return Looper.getMainLooper().getThread() == Thread.currentThread(); - } - - /** - * Throws an {@link AssertionException} if the current thread is not the UI thread. - */ - public static void assertOnUiThread() { - SoftAssertions.assertCondition(isOnUiThread(), "Expected to run on UI thread!"); - } - - /** - * Throws an {@link AssertionException} if the current thread is the UI thread. - */ - public static void assertNotOnUiThread() { - SoftAssertions.assertCondition(!isOnUiThread(), "Expected not to run on UI thread!"); - } - - /** - * Runs the given {@code Runnable} on the UI thread. - */ - public static void runOnUiThread(Runnable runnable) { - synchronized (UiThreadUtil.class) { - if (sMainHandler == null) { - sMainHandler = new Handler(Looper.getMainLooper()); - } - } - sMainHandler.post(runnable); - } -} diff --git a/ReactAndroid/src/main/java/com/facebook/react/module/model/BUCK b/ReactAndroid/src/main/java/com/facebook/react/module/model/BUCK index de69557c9341..aa229b304f1d 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/module/model/BUCK +++ b/ReactAndroid/src/main/java/com/facebook/react/module/model/BUCK @@ -8,6 +8,5 @@ android_library( ], deps = [ react_native_dep("third-party/java/jsr-305:jsr-305"), - react_native_target("java/com/facebook/react/bridge:bridge"), ], ) diff --git a/ReactAndroid/src/main/jni/xreact/jni/CatalystInstanceImpl.h b/ReactAndroid/src/main/jni/xreact/jni/CatalystInstanceImpl.h index 391d195b16c8..774be5f85d74 100644 --- a/ReactAndroid/src/main/jni/xreact/jni/CatalystInstanceImpl.h +++ b/ReactAndroid/src/main/jni/xreact/jni/CatalystInstanceImpl.h @@ -19,12 +19,12 @@ class JavaScriptExecutorHolder; class NativeArray; struct ReactCallback : public jni::JavaClass { - static constexpr auto kJavaDescriptor = "Lcom/facebook/react/cxxbridge/ReactCallback;"; + static constexpr auto kJavaDescriptor = "Lcom/facebook/react/bridge/ReactCallback;"; }; class CatalystInstanceImpl : public jni::HybridClass { public: - static constexpr auto kJavaDescriptor = "Lcom/facebook/react/cxxbridge/CatalystInstanceImpl;"; + static constexpr auto kJavaDescriptor = "Lcom/facebook/react/bridge/CatalystInstanceImpl;"; static jni::local_ref initHybrid(jni::alias_ref); ~CatalystInstanceImpl() override; diff --git a/ReactAndroid/src/main/jni/xreact/jni/CxxModuleWrapper.h b/ReactAndroid/src/main/jni/xreact/jni/CxxModuleWrapper.h index 11551e3dfaae..74d51563fae9 100644 --- a/ReactAndroid/src/main/jni/xreact/jni/CxxModuleWrapper.h +++ b/ReactAndroid/src/main/jni/xreact/jni/CxxModuleWrapper.h @@ -10,7 +10,7 @@ namespace react { class CxxModuleWrapper : public jni::HybridClass { public: constexpr static const char *const kJavaDescriptor = - "Lcom/facebook/react/cxxbridge/CxxModuleWrapper;"; + "Lcom/facebook/react/bridge/CxxModuleWrapper;"; static void registerNatives() { registerHybrid({ diff --git a/ReactAndroid/src/main/jni/xreact/jni/CxxModuleWrapperBase.h b/ReactAndroid/src/main/jni/xreact/jni/CxxModuleWrapperBase.h index 7ae922e4ad9c..c184464f162a 100644 --- a/ReactAndroid/src/main/jni/xreact/jni/CxxModuleWrapperBase.h +++ b/ReactAndroid/src/main/jni/xreact/jni/CxxModuleWrapperBase.h @@ -24,7 +24,7 @@ class CxxModuleWrapperBase : public jni::HybridClass { public: constexpr static const char *const kJavaDescriptor = - "Lcom/facebook/react/cxxbridge/CxxModuleWrapperBase;"; + "Lcom/facebook/react/bridge/CxxModuleWrapperBase;"; static void registerNatives() { registerHybrid({ diff --git a/ReactAndroid/src/main/jni/xreact/jni/JCallback.h b/ReactAndroid/src/main/jni/xreact/jni/JCallback.h index ccdbcabce7b4..b4b68d1f8479 100644 --- a/ReactAndroid/src/main/jni/xreact/jni/JCallback.h +++ b/ReactAndroid/src/main/jni/xreact/jni/JCallback.h @@ -18,20 +18,20 @@ struct JCallback : public jni::JavaClass { constexpr static auto kJavaDescriptor = "Lcom/facebook/react/bridge/Callback;"; }; -class JCallbackImpl : public jni::HybridClass { +class JCxxCallbackImpl : public jni::HybridClass { public: - constexpr static auto kJavaDescriptor = "Lcom/facebook/react/cxxbridge/CallbackImpl;"; + constexpr static auto kJavaDescriptor = "Lcom/facebook/react/bridge/CxxCallbackImpl;"; static void registerNatives() { javaClassStatic()->registerNatives({ - makeNativeMethod("nativeInvoke", JCallbackImpl::invoke), + makeNativeMethod("nativeInvoke", JCxxCallbackImpl::invoke), }); } private: friend HybridBase; using Callback = std::function; - JCallbackImpl(Callback callback) : callback_(std::move(callback)) {} + JCxxCallbackImpl(Callback callback) : callback_(std::move(callback)) {} void invoke(NativeArray* arguments) { callback_(arguments->consume()); diff --git a/ReactAndroid/src/main/jni/xreact/jni/JavaModuleWrapper.h b/ReactAndroid/src/main/jni/xreact/jni/JavaModuleWrapper.h index 6ab0d6406dce..0612ccde4edf 100644 --- a/ReactAndroid/src/main/jni/xreact/jni/JavaModuleWrapper.h +++ b/ReactAndroid/src/main/jni/xreact/jni/JavaModuleWrapper.h @@ -16,7 +16,7 @@ class MessageQueueThread; struct JMethodDescriptor : public jni::JavaClass { static constexpr auto kJavaDescriptor = - "Lcom/facebook/react/cxxbridge/JavaModuleWrapper$MethodDescriptor;"; + "Lcom/facebook/react/bridge/JavaModuleWrapper$MethodDescriptor;"; jni::local_ref getMethod() const; std::string getSignature() const; @@ -25,7 +25,7 @@ struct JMethodDescriptor : public jni::JavaClass { }; struct JavaModuleWrapper : jni::JavaClass { - static constexpr auto kJavaDescriptor = "Lcom/facebook/react/cxxbridge/JavaModuleWrapper;"; + static constexpr auto kJavaDescriptor = "Lcom/facebook/react/bridge/JavaModuleWrapper;"; jni::local_ref getModule() { // This is the call which causes a lazy Java module to actually be diff --git a/ReactAndroid/src/main/jni/xreact/jni/JavaScriptExecutorHolder.h b/ReactAndroid/src/main/jni/xreact/jni/JavaScriptExecutorHolder.h index f59d9ad55272..5baf7153df74 100644 --- a/ReactAndroid/src/main/jni/xreact/jni/JavaScriptExecutorHolder.h +++ b/ReactAndroid/src/main/jni/xreact/jni/JavaScriptExecutorHolder.h @@ -12,7 +12,7 @@ namespace react { class JavaScriptExecutorHolder : public jni::HybridClass { public: static constexpr auto kJavaDescriptor = - "Lcom/facebook/react/cxxbridge/JavaScriptExecutor;"; + "Lcom/facebook/react/bridge/JavaScriptExecutor;"; std::shared_ptr getExecutorFactory() { return mExecutorFactory; diff --git a/ReactAndroid/src/main/jni/xreact/jni/MethodInvoker.cpp b/ReactAndroid/src/main/jni/xreact/jni/MethodInvoker.cpp index 51664a3d4063..1e1cb862d0f7 100644 --- a/ReactAndroid/src/main/jni/xreact/jni/MethodInvoker.cpp +++ b/ReactAndroid/src/main/jni/xreact/jni/MethodInvoker.cpp @@ -46,11 +46,11 @@ jdouble extractDouble(const folly::dynamic& value) { } } -local_ref extractCallback(std::weak_ptr& instance, const folly::dynamic& value) { +local_ref extractCallback(std::weak_ptr& instance, const folly::dynamic& value) { if (value.isNull()) { - return local_ref(nullptr); + return local_ref(nullptr); } else { - return JCallbackImpl::newObjectCxxArgs(makeCallback(instance, value)); + return JCxxCallbackImpl::newObjectCxxArgs(makeCallback(instance, value)); } } diff --git a/ReactAndroid/src/main/jni/xreact/jni/ModuleRegistryBuilder.h b/ReactAndroid/src/main/jni/xreact/jni/ModuleRegistryBuilder.h index b17664cd964e..e295ebc55ef3 100644 --- a/ReactAndroid/src/main/jni/xreact/jni/ModuleRegistryBuilder.h +++ b/ReactAndroid/src/main/jni/xreact/jni/ModuleRegistryBuilder.h @@ -17,7 +17,7 @@ class MessageQueueThread; class ModuleHolder : public jni::JavaClass { public: static auto constexpr kJavaDescriptor = - "Lcom/facebook/react/cxxbridge/ModuleHolder;"; + "Lcom/facebook/react/bridge/ModuleHolder;"; std::string getName() const; xplat::module::CxxModule::Provider getProvider() const; diff --git a/ReactAndroid/src/main/jni/xreact/jni/OnLoad.cpp b/ReactAndroid/src/main/jni/xreact/jni/OnLoad.cpp index f576955a1ef8..d86c971d1e5e 100644 --- a/ReactAndroid/src/main/jni/xreact/jni/OnLoad.cpp +++ b/ReactAndroid/src/main/jni/xreact/jni/OnLoad.cpp @@ -35,7 +35,7 @@ namespace { class JSCJavaScriptExecutorHolder : public HybridClass { public: - static constexpr auto kJavaDescriptor = "Lcom/facebook/react/cxxbridge/JSCJavaScriptExecutor;"; + static constexpr auto kJavaDescriptor = "Lcom/facebook/react/bridge/JSCJavaScriptExecutor;"; static local_ref initHybrid(alias_ref, ReadableNativeArray* jscConfigArray) { // See JSCJavaScriptExecutor.Factory() for the other side of this hack. @@ -61,7 +61,7 @@ struct JavaJSExecutor : public JavaClass { class ProxyJavaScriptExecutorHolder : public HybridClass { public: - static constexpr auto kJavaDescriptor = "Lcom/facebook/react/cxxbridge/ProxyJavaScriptExecutor;"; + static constexpr auto kJavaDescriptor = "Lcom/facebook/react/bridge/ProxyJavaScriptExecutor;"; static local_ref initHybrid( alias_ref, alias_ref executorInstance) { @@ -159,7 +159,7 @@ extern "C" JNIEXPORT jint JNI_OnLoad(JavaVM* vm, void* reserved) { CatalystInstanceImpl::registerNatives(); CxxModuleWrapperBase::registerNatives(); CxxModuleWrapper::registerNatives(); - JCallbackImpl::registerNatives(); + JCxxCallbackImpl::registerNatives(); #ifdef WITH_INSPECTOR JInspector::registerNatives(); #endif diff --git a/ReactAndroid/src/test/java/com/facebook/react/bridge/BUCK b/ReactAndroid/src/test/java/com/facebook/react/bridge/BUCK index ea3b9df94fe7..b7650485f0b9 100644 --- a/ReactAndroid/src/test/java/com/facebook/react/bridge/BUCK +++ b/ReactAndroid/src/test/java/com/facebook/react/bridge/BUCK @@ -42,5 +42,6 @@ rn_robolectric_test( react_native_target("java/com/facebook/react/bridge:bridge"), react_native_target("java/com/facebook/react/common:common"), react_native_target("java/com/facebook/react/uimanager:uimanager"), + react_native_tests_target("java/com/facebook/common/logging:logging"), ], ) diff --git a/ReactAndroid/src/test/java/com/facebook/react/cxxbridge/BaseJavaModuleTest.java b/ReactAndroid/src/test/java/com/facebook/react/bridge/BaseJavaModuleTest.java similarity index 91% rename from ReactAndroid/src/test/java/com/facebook/react/cxxbridge/BaseJavaModuleTest.java rename to ReactAndroid/src/test/java/com/facebook/react/bridge/BaseJavaModuleTest.java index bb837d164ef9..6af5b6905299 100644 --- a/ReactAndroid/src/test/java/com/facebook/react/cxxbridge/BaseJavaModuleTest.java +++ b/ReactAndroid/src/test/java/com/facebook/react/bridge/BaseJavaModuleTest.java @@ -7,17 +7,11 @@ * of patent rights can be found in the PATENTS file in the same directory. */ -package com.facebook.react.cxxbridge; +package com.facebook.react.bridge; import javax.inject.Provider; import java.util.List; -import com.facebook.react.bridge.BaseJavaModule; -import com.facebook.react.bridge.ReactMethod; -import com.facebook.react.bridge.ReadableNativeArray; -import com.facebook.react.bridge.Promise; -import com.facebook.react.bridge.NativeArgumentsParseException; - import org.junit.Before; import org.junit.Rule; import org.junit.runner.RunWith; diff --git a/ReactAndroid/src/test/java/com/facebook/react/cxxbridge/FallbackJSBundleLoaderTest.java b/ReactAndroid/src/test/java/com/facebook/react/bridge/FallbackJSBundleLoaderTest.java similarity index 99% rename from ReactAndroid/src/test/java/com/facebook/react/cxxbridge/FallbackJSBundleLoaderTest.java rename to ReactAndroid/src/test/java/com/facebook/react/bridge/FallbackJSBundleLoaderTest.java index bb7ae015197c..df8e00028344 100644 --- a/ReactAndroid/src/test/java/com/facebook/react/cxxbridge/FallbackJSBundleLoaderTest.java +++ b/ReactAndroid/src/test/java/com/facebook/react/bridge/FallbackJSBundleLoaderTest.java @@ -7,7 +7,7 @@ * of patent rights can be found in the PATENTS file in the same directory. */ -package com.facebook.react.cxxbridge; +package com.facebook.react.bridge; import java.util.ArrayList; import java.util.Arrays; diff --git a/ReactAndroid/src/test/java/com/facebook/react/cxxbridge/BUCK b/ReactAndroid/src/test/java/com/facebook/react/cxxbridge/BUCK deleted file mode 100644 index d622c49e3e31..000000000000 --- a/ReactAndroid/src/test/java/com/facebook/react/cxxbridge/BUCK +++ /dev/null @@ -1,22 +0,0 @@ -include_defs("//ReactAndroid/DEFS") - -rn_robolectric_test( - name = "cxxbridge", - srcs = glob(["*Test.java"]), - # Please change the contact to the oncall of your team - contacts = ["oncall+fbandroid_sheriff@xmail.facebook.com"], - visibility = [ - "PUBLIC", - ], - deps = [ - react_native_dep("libraries/fbcore/src/test/java/com/facebook/powermock:powermock"), - react_native_dep("libraries/soloader/java/com/facebook/soloader:soloader"), - react_native_dep("third-party/java/fest:fest"), - react_native_dep("third-party/java/junit:junit"), - react_native_dep("third-party/java/mockito:mockito"), - react_native_dep("third-party/java/robolectric3/robolectric:robolectric"), - react_native_target("java/com/facebook/react/bridge:bridge"), - react_native_target("java/com/facebook/react/cxxbridge:bridge"), - react_native_tests_target("java/com/facebook/common/logging:logging"), - ], -) From 19e6557d2e4c09908b11d20f13d04e8bcdcc3195 Mon Sep 17 00:00:00 2001 From: Pieter De Baets Date: Thu, 11 May 2017 04:46:44 -0700 Subject: [PATCH 0055/1101] Cleanup cxxreact BUCK file Reviewed By: mzlee Differential Revision: D5020563 fbshipit-source-id: 286a2d1c44623b5b9fd923ef8684d263500791b3 --- ReactCommon/DEFS | 4 + ReactCommon/cxxreact/BUCK | 146 ++++++++--------------- ReactCommon/cxxreact/JSCExecutor.cpp | 4 +- ReactCommon/cxxreact/ModuleRegistry.cpp | 4 +- ReactCommon/cxxreact/Platform.cpp | 14 ++- ReactCommon/cxxreact/SampleCxxModule.cpp | 5 +- ReactCommon/cxxreact/SampleCxxModule.h | 10 +- 7 files changed, 72 insertions(+), 115 deletions(-) diff --git a/ReactCommon/DEFS b/ReactCommon/DEFS index 83eab26aa463..30dcaf619c9d 100644 --- a/ReactCommon/DEFS +++ b/ReactCommon/DEFS @@ -1,3 +1,7 @@ # Set up common deps GLOG_DEP = "//ReactAndroid/build/third-party-ndk/glog:glog" + +INSPECTOR_FLAGS = [] + +JSC_DEPS = [] diff --git a/ReactCommon/cxxreact/BUCK b/ReactCommon/cxxreact/BUCK index 032fee2f0c1c..06842f073b44 100644 --- a/ReactCommon/cxxreact/BUCK +++ b/ReactCommon/cxxreact/BUCK @@ -1,96 +1,15 @@ -CXX_LIBRARY_COMPILER_FLAGS = [] +include_defs("//ReactCommon/DEFS") -REACT_LIBRARY_EXTRA_COMPILER_FLAGS = [] +CXX_LIBRARY_COMPILER_FLAGS = [ + "-std=c++14", + "-Wall", +] if THIS_IS_FBOBJC: - include_defs("xplat//configurations/buck/apple/dependency_aggregator_defs") inherited_buck_flags = STATIC_LIBRARY_IOS_FLAGS - CXX_LIBRARY_COMPILER_FLAGS = inherited_buck_flags.get_flag_value('compiler_flags') - REACT_LIBRARY_EXTRA_COMPILER_FLAGS = ['-Wno-shadow', '-Wno-missing-prototypes', '-Wno-global-constructors'] - -def kwargs_add(base_kwargs, **new_kwargs): - ret_kwargs = dict(base_kwargs) - for name, add_value in new_kwargs.iteritems(): - if name in ret_kwargs: - # Don't use +=, it will modify base_kwargs - ret_kwargs[name] = ret_kwargs[name] + add_value - else: - ret_kwargs[name] = add_value - return ret_kwargs - -if THIS_IS_FBANDROID: - include_defs('//ReactAndroid/DEFS') - - def react_library(**kwargs): - kwargs = kwargs_add( - kwargs, - compiler_flags = [ - '-Wno-pessimizing-move', - ], - deps = [ - '//xplat/folly:molly' - ]) - - cxx_library( - name = 'bridge', - **kwargs_add( - kwargs, - preprocessor_flags = [ - '-DWITH_JSC_EXTRA_TRACING=1', - '-DWITH_JSC_MEMORY_PRESSURE=1', - '-DWITH_REACT_INTERNAL_SETTINGS=1', - '-DWITH_FB_MEMORY_PROFILING=1', - '-DWITH_INSPECTOR=1', - ], - deps = JSC_DEPS, - visibility = [ - # TL;DR: If you depend on this target directly, you're gonna have a - # Bad Time(TM). - # - # `facebook::react::JSCExecutor::initOnJSVMThread` (in `:bridge`) does - # some platform-dependant setup. Exactly what setup to do is - # determined by some static functors, defined in `Platform.h`, which - # are initially `nullptr`. On Android, these functors are properly - # assigned as part of `xreact`'s `JNI_OnLoad`. By depending directly - # on the bridge, we can mess up the SO initialisation order, causing - # `initOnJSVMThread` to be called before the platform-specific hooks - # have been properly initialised. Bad Times(TM). - # -- @ashokmenon (2017/01/03) - react_native_target('jni/xreact/jni:jni'), - react_native_xplat_target('cxxreact/...'), - ], - ) - ) - -if THIS_IS_FBOBJC: - - if should_use_dependency_aggregation(): - INSPECTOR_FLAGS = [] - else: - INSPECTOR_FLAGS = [ '-DWITH_INSPECTOR=1', ] + CXX_LIBRARY_COMPILER_FLAGS += inherited_buck_flags.get_flag_value('compiler_flags') - def react_library(**kwargs): - fb_apple_library( - name = 'bridge', - header_path_prefix = "cxxreact", - inherited_buck_flags = STATIC_LIBRARY_IOS_FLAGS, - frameworks = [ - '$SDKROOT/System/Library/Frameworks/JavaScriptCore.framework', - ], - tests = [ - react_native_xplat_target('cxxreact/tests:tests') - ], - **kwargs_add( - kwargs, - preprocessor_flags = DEBUG_PREPROCESSOR_FLAGS + INSPECTOR_FLAGS, - deps = [ - '//xplat/folly:molly', - ], - visibility = [ 'PUBLIC' ], - ) - ) - -cxx_library( +fb_xplat_cxx_library( name = "module", compiler_flags = CXX_LIBRARY_COMPILER_FLAGS, exported_headers = [ @@ -98,9 +17,9 @@ cxx_library( "JsArgumentHelpers.h", "JsArgumentHelpers-inl.h", ], + fbobjc_header_path_prefix = "cxxreact", force_static = True, header_namespace = "cxxreact", - labels = ["accounts_for_platform_and_build_mode_flags"], visibility = [ "PUBLIC", ], @@ -110,14 +29,11 @@ cxx_library( ], ) -cxx_library( +fb_xplat_cxx_library( name = "samplemodule", srcs = ["SampleCxxModule.cpp"], compiler_flags = CXX_LIBRARY_COMPILER_FLAGS + [ "-fno-omit-frame-pointer", - "-Wall", - "-Werror", - "-std=c++1y", "-fexceptions", ], exported_headers = ["SampleCxxModule.h"], @@ -154,18 +70,46 @@ CXXREACT_PUBLIC_HEADERS = [ "SystraceSection.h", ] -react_library( +fb_xplat_cxx_library( + name = "bridge", srcs = glob( ["*.cpp"], excludes = ["SampleCxxModule.cpp"], ), - compiler_flags = [ - "-Wall", + compiler_flags = CXX_LIBRARY_COMPILER_FLAGS + [ "-fexceptions", "-frtti", - "-std=c++1y", - ] + REACT_LIBRARY_EXTRA_COMPILER_FLAGS, + ], exported_headers = CXXREACT_PUBLIC_HEADERS, + fbandroid_preprocessor_flags = [ + "-DWITH_JSC_EXTRA_TRACING=1", + "-DWITH_JSC_MEMORY_PRESSURE=1", + "-DWITH_REACT_INTERNAL_SETTINGS=1", + "-DWITH_FB_MEMORY_PROFILING=1", + ], + fbandroid_visibility = [ + # TL;DR: If you depend on this target directly, you're gonna have a + # Bad Time(TM). + # + # `facebook::react::JSCExecutor::initOnJSVMThread` (in `:bridge`) does + # some platform-dependant setup. Exactly what setup to do is + # determined by some static functors, defined in `Platform.h`, which + # are initially `nullptr`. On Android, these functors are properly + # assigned as part of `xreact`'s `JNI_OnLoad`. By depending directly + # on the bridge, we can mess up the SO initialisation order, causing + # `initOnJSVMThread` to be called before the platform-specific hooks + # have been properly initialised. Bad Times(TM). + # -- @ashokmenon (2017/01/03) + react_native_target("jni/xreact/jni:jni"), + react_native_xplat_target("cxxreact/..."), + ], + fbobjc_frameworks = [ + "$SDKROOT/System/Library/Frameworks/JavaScriptCore.framework", + ], + fbobjc_header_path_prefix = "cxxreact", + fbobjc_inherited_buck_flags = STATIC_LIBRARY_IOS_FLAGS, + fbobjc_preprocessor_flags = DEBUG_PREPROCESSOR_FLAGS, + fbobjc_visibility = ["PUBLIC"], force_static = True, header_namespace = "cxxreact", headers = glob( @@ -175,12 +119,16 @@ react_library( preprocessor_flags = [ "-DLOG_TAG=\"ReactNative\"", "-DWITH_FBSYSTRACE=1", + ] + INSPECTOR_FLAGS, + tests = [ + react_native_xplat_target("cxxreact/tests:tests"), ], xcode_public_headers_symlinks = True, deps = [ ":module", "//xplat/fbsystrace:fbsystrace", + "//xplat/folly:molly", react_native_xplat_target("jschelpers:jschelpers"), react_native_xplat_target("microprofiler:microprofiler"), - ], + ] + JSC_DEPS, ) diff --git a/ReactCommon/cxxreact/JSCExecutor.cpp b/ReactCommon/cxxreact/JSCExecutor.cpp index 0a43f1eb8d17..42dc75e02c99 100644 --- a/ReactCommon/cxxreact/JSCExecutor.cpp +++ b/ReactCommon/cxxreact/JSCExecutor.cpp @@ -200,13 +200,13 @@ void JSCExecutor::initOnJSVMThread() throw(JSException) { // Create a custom global class, so we can store data in it later using JSObjectSetPrivate JSClassRef globalClass = nullptr; { - SystraceSection s("JSClassCreate"); + SystraceSection s_("JSClassCreate"); JSClassDefinition definition = kJSClassDefinitionEmpty; definition.attributes |= kJSClassAttributeNoAutomaticPrototype; globalClass = JSC_JSClassCreate(useCustomJSC, &definition); } { - SystraceSection s("JSGlobalContextCreateInGroup"); + SystraceSection s_("JSGlobalContextCreateInGroup"); m_context = JSC_JSGlobalContextCreateInGroup(useCustomJSC, nullptr, globalClass); } JSC_JSClassRelease(useCustomJSC, globalClass); diff --git a/ReactCommon/cxxreact/ModuleRegistry.cpp b/ReactCommon/cxxreact/ModuleRegistry.cpp index 649c1438ec1e..72c9e5ecbbd3 100644 --- a/ReactCommon/cxxreact/ModuleRegistry.cpp +++ b/ReactCommon/cxxreact/ModuleRegistry.cpp @@ -72,12 +72,12 @@ folly::Optional ModuleRegistry::getConfig(const std::string& name) folly::dynamic config = folly::dynamic::array(name); { - SystraceSection s("getConstants"); + SystraceSection s_("getConstants"); config.push_back(module->getConstants()); } { - SystraceSection s("getMethods"); + SystraceSection s_("getMethods"); std::vector methods = module->getMethods(); folly::dynamic methodNames = folly::dynamic::array; diff --git a/ReactCommon/cxxreact/Platform.cpp b/ReactCommon/cxxreact/Platform.cpp index 60d894c46958..d95ea08c345b 100644 --- a/ReactCommon/cxxreact/Platform.cpp +++ b/ReactCommon/cxxreact/Platform.cpp @@ -5,17 +5,21 @@ namespace facebook { namespace react { +#if __clang__ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif + namespace ReactMarker { -LogTaggedMarker logTaggedMarker; +LogTaggedMarker logTaggedMarker = nullptr; void logMarker(const ReactMarkerId markerId) { logTaggedMarker(markerId, nullptr); } - }; namespace PerfLogging { -InstallNativeHooks installNativeHooks; +InstallNativeHooks installNativeHooks = nullptr; }; namespace JSNativeHooks { @@ -23,4 +27,8 @@ Hook loggingHook = nullptr; Hook nowHook = nullptr; } +#if __clang__ +#pragma clang diagnostic pop +#endif + } } diff --git a/ReactCommon/cxxreact/SampleCxxModule.cpp b/ReactCommon/cxxreact/SampleCxxModule.cpp index c0a0d9b36e24..89b5c5279dda 100644 --- a/ReactCommon/cxxreact/SampleCxxModule.cpp +++ b/ReactCommon/cxxreact/SampleCxxModule.cpp @@ -133,9 +133,8 @@ void SampleCxxModule::load(folly::dynamic args, Callback cb) { }}} -// By convention, the function name should be the same as the class -// name. -extern "C" facebook::xplat::module::CxxModule *SampleCxxModule() { +// By convention, the function name should be the same as the class name. +facebook::xplat::module::CxxModule *SampleCxxModule() { return new facebook::xplat::samples::SampleCxxModule( folly::make_unique()); } diff --git a/ReactCommon/cxxreact/SampleCxxModule.h b/ReactCommon/cxxreact/SampleCxxModule.h index e90f9f7c2e97..ded0b43613d3 100644 --- a/ReactCommon/cxxreact/SampleCxxModule.h +++ b/ReactCommon/cxxreact/SampleCxxModule.h @@ -1,13 +1,12 @@ // Copyright 2004-present Facebook. All Rights Reserved. -#ifndef FBSAMPLEXPLATMODULE -#define FBSAMPLEXPLATMODULE - -#include +#pragma once #include #include +#include + namespace facebook { namespace xplat { namespace samples { // In a less contrived example, Sample would be part of a traditional @@ -48,5 +47,4 @@ class SampleCxxModule : public module::CxxModule { }}} -#endif - +extern "C" facebook::xplat::module::CxxModule *SampleCxxModule(); From e379b84545131bcec5d534dc830050fd4d410d81 Mon Sep 17 00:00:00 2001 From: Jean Lauliac Date: Thu, 11 May 2017 04:46:49 -0700 Subject: [PATCH 0056/1101] packager: Module: tweak isHaste return type Reviewed By: cpojer Differential Revision: D5036181 fbshipit-source-id: 6042beb44bc67e64dd57c8dd6043f8dd690e9382 --- packager/src/node-haste/AssetModule.js | 2 +- .../node-haste/DependencyGraph/HasteMap.js | 30 ++++++++++--------- packager/src/node-haste/Module.js | 4 +-- packager/src/node-haste/Polyfill.js | 2 +- .../src/node-haste/__tests__/Module-test.js | 12 ++++---- 5 files changed, 26 insertions(+), 24 deletions(-) diff --git a/packager/src/node-haste/AssetModule.js b/packager/src/node-haste/AssetModule.js index 8cb8c26f8e36..f03981b1aadb 100644 --- a/packager/src/node-haste/AssetModule.js +++ b/packager/src/node-haste/AssetModule.js @@ -37,7 +37,7 @@ class AssetModule extends Module { } isHaste() { - return Promise.resolve(false); + return false; } readCached(): CachedReadResult { diff --git a/packager/src/node-haste/DependencyGraph/HasteMap.js b/packager/src/node-haste/DependencyGraph/HasteMap.js index 52809f2275b6..6201fb944858 100644 --- a/packager/src/node-haste/DependencyGraph/HasteMap.js +++ b/packager/src/node-haste/DependencyGraph/HasteMap.js @@ -123,36 +123,38 @@ class HasteMap extends EventEmitter { _processHasteModule(file, previousName) { const module = this._moduleCache.getModule(file); - return module.isHaste().then( - isHaste => isHaste && module.getName() + return Promise.resolve().then(() => { + const isHaste = module.isHaste(); + return isHaste && module.getName() .then(name => { const result = this._updateHasteMap(name, module); if (previousName && name !== previousName) { this.emit('change'); } return result; - }) - ); + }); + }); } _processHastePackage(file, previousName) { const p = this._moduleCache.getPackage(file); - return p.isHaste() - .then(isHaste => isHaste && p.getName() + return Promise.resolve().then(() => { + const isHaste = p.isHaste(); + return isHaste && p.getName() .then(name => { const result = this._updateHasteMap(name, p); if (previousName && name !== previousName) { this.emit('change'); } return result; - })) - .catch(e => { - if (e instanceof SyntaxError) { - // Malformed package.json. - return; - } - throw e; - }); + }); + }).catch(e => { + if (e instanceof SyntaxError) { + // Malformed package.json. + return; + } + throw e; + }); } _updateHasteMap(name, mod) { diff --git a/packager/src/node-haste/Module.js b/packager/src/node-haste/Module.js index 7152857ace62..10b8b9aa9efe 100644 --- a/packager/src/node-haste/Module.js +++ b/packager/src/node-haste/Module.js @@ -133,8 +133,8 @@ class Module { this._readResultsByOptionsKey = new Map(); } - isHaste(): Promise { - return Promise.resolve().then(() => this._getHasteName() != null); + isHaste(): boolean { + return this._getHasteName() != null; } getCode(transformOptions: WorkerOptions) { diff --git a/packager/src/node-haste/Polyfill.js b/packager/src/node-haste/Polyfill.js index 2e31af4af4c0..3024efde410e 100644 --- a/packager/src/node-haste/Polyfill.js +++ b/packager/src/node-haste/Polyfill.js @@ -32,7 +32,7 @@ class Polyfill extends Module { } isHaste() { - return Promise.resolve(false); + return false; } getName() { diff --git a/packager/src/node-haste/__tests__/Module-test.js b/packager/src/node-haste/__tests__/Module-test.js index 3d687fa4bab7..2e6debb8a844 100644 --- a/packager/src/node-haste/__tests__/Module-test.js +++ b/packager/src/node-haste/__tests__/Module-test.js @@ -107,7 +107,7 @@ describe('Module', () => { ); it('identifies the module as haste module', () => - module.isHaste().then(isHaste => expect(isHaste).toBe(true)) + expect(module.isHaste()).toBe(true) ); it('does not transform the file in order to access the name', () => { @@ -120,8 +120,8 @@ describe('Module', () => { it('does not transform the file in order to access the haste status', () => { const transformCode = jest.genMockFn().mockReturnValue(Promise.resolve()); - return createModule({transformCode}).isHaste() - .then(() => expect(transformCode).not.toBeCalled()); + createModule({transformCode}).isHaste(); + expect(transformCode).not.toBeCalled(); }); }); @@ -135,7 +135,7 @@ describe('Module', () => { ); it('does not identify the module as haste module', () => - module.isHaste().then(isHaste => expect(isHaste).toBe(false)) + expect(module.isHaste()).toBe(false) ); it('does not transform the file in order to access the name', () => { @@ -148,8 +148,8 @@ describe('Module', () => { it('does not transform the file in order to access the haste status', () => { const transformCode = jest.genMockFn().mockReturnValue(Promise.resolve()); - return createModule({transformCode}).isHaste() - .then(() => expect(transformCode).not.toBeCalled()); + createModule({transformCode}).isHaste(); + expect(transformCode).not.toBeCalled(); }); }); }); From c286da01950aabb5718dcf617c561a7c93f92a76 Mon Sep 17 00:00:00 2001 From: Jean Lauliac Date: Thu, 11 May 2017 06:19:26 -0700 Subject: [PATCH 0057/1101] packager: ResolutionRequest: keep track of tentative resolution paths Summary: That's a bit of an experimental changeset, I wanted to experiment how we can track with more precision the resolution and this is what I come with. That allows us to know what has been tested if we canot find a match. It also uses a simpler control flow with early `return`s all across. Finally, this reflect the strategy I want to apply for the rest of the resolution. (Right now the error is still not great, as it may be deeply nested, as in the case of packages resolution.) Reviewed By: davidaurelio Differential Revision: D5044040 fbshipit-source-id: 2e256174506f80d90ee83175057666d530785788 --- .../DependencyGraph/ResolutionRequest.js | 147 +++++++++++++----- 1 file changed, 106 insertions(+), 41 deletions(-) diff --git a/packager/src/node-haste/DependencyGraph/ResolutionRequest.js b/packager/src/node-haste/DependencyGraph/ResolutionRequest.js index 8e7e0fb914f4..4e71580f3db7 100644 --- a/packager/src/node-haste/DependencyGraph/ResolutionRequest.js +++ b/packager/src/node-haste/DependencyGraph/ResolutionRequest.js @@ -110,6 +110,7 @@ function tryResolveSync(action: () => T, secondaryAction: () => T): T { } class ResolutionRequest { + _doesFileExist: (filePath: string) => boolean; _immediateResolutionCache: {[key: string]: TModule}; _options: Options; static emptyModule: string; @@ -117,6 +118,7 @@ class ResolutionRequest { constructor(options: Options) { this._options = options; this._resetResolutionCache(); + this._doesFileExist = filePath => this._options.hasteFS.exists(filePath); } _tryResolve( @@ -578,52 +580,32 @@ class ResolutionRequest { } _loadAsFile( - potentialModulePath: string, + basepath: string, fromModule: TModule, toModule: string, ): TModule { - if (this._options.helpers.isAssetFile(potentialModulePath)) { - return this._loadAsAssetFile(potentialModulePath, fromModule, toModule); + if (this._options.helpers.isAssetFile(basepath)) { + return this._loadAsAssetFile(basepath, fromModule, toModule); } - - let file; - if (this._options.hasteFS.exists(potentialModulePath)) { - file = potentialModulePath; - } else { - const {platform, preferNativePlatform, hasteFS} = this._options; - for (let i = 0; i < this._options.sourceExts.length; i++) { - const ext = this._options.sourceExts[i]; - if (platform != null) { - const platformSpecificPath = `${potentialModulePath}.${platform}.${ext}`; - if (hasteFS.exists(platformSpecificPath)) { - file = platformSpecificPath; - break; - } - } - if (preferNativePlatform) { - const nativeSpecificPath = `${potentialModulePath}.native.${ext}`; - if (hasteFS.exists(nativeSpecificPath)) { - file = nativeSpecificPath; - break; - } - } - const genericPath = `${potentialModulePath}.${ext}`; - if (hasteFS.exists(genericPath)) { - file = genericPath; - break; - } - } - - if (file == null) { - throw new UnableToResolveError( - fromModule, - toModule, - `File ${potentialModulePath} doesn't exist`, - ); - } + const dirPath = path.dirname(basepath); + const doesFileExist = this._doesFileExist; + const resolver = new FileNameResolver({doesFileExist, dirPath}); + const fileNamePrefix = path.basename(basepath); + const fileName = this._tryToResolveAllFileNames(resolver, fileNamePrefix); + if (fileName != null) { + return this._options.moduleCache.getModule(path.join(dirPath, fileName)); } - - return this._options.moduleCache.getModule(file); + throw new UnableToResolveError( + fromModule, + toModule, + `Could not resolve the base path \`${basepath}' into a module. The ` + + `folder \`${dirPath}' was searched for one of these files: ` + + resolver + .getTentativeFileNames() + .map(filePath => `\`${filePath}'`) + .join(', ') + + '.', + ); } _loadAsAssetFile( @@ -657,6 +639,60 @@ class ResolutionRequest { ); } + /** + * A particular 'base path' can resolve to a number of possibilities depending + * on the context. For example `foo/bar` could resolve to `foo/bar.ios.js`, or + * to `foo/bar.js`. If can also resolve to the bare path `foo/bar` itself, as + * supported by Node.js resolution. On the other hand it doesn't support + * `foo/bar.ios`, for historical reasons. + */ + _tryToResolveAllFileNames( + resolver: FileNameResolver, + fileNamePrefix: string, + ): ?string { + if (resolver.tryToResolveFileName(fileNamePrefix)) { + return fileNamePrefix; + } + const {sourceExts} = this._options; + for (let i = 0; i < sourceExts.length; i++) { + const fileName = this._tryToResolveFileNamesForExt( + fileNamePrefix, + resolver, + sourceExts[i], + ); + if (fileName != null) { + return fileName; + } + } + return null; + } + + /** + * For a particular extension, ex. `js`, we want to try a few possibilities, + * such as `foo.ios.js`, `foo.native.js`, and of course `foo.js`. + */ + _tryToResolveFileNamesForExt( + fileNamePrefix: string, + resolver: FileNameResolver, + ext: string, + ): ?string { + const {platform, preferNativePlatform} = this._options; + if (platform != null) { + const fileName = `${fileNamePrefix}.${platform}.${ext}`; + if (resolver.tryToResolveFileName(fileName)) { + return fileName; + } + } + if (preferNativePlatform) { + const fileName = `${fileNamePrefix}.native.${ext}`; + if (resolver.tryToResolveFileName(fileName)) { + return fileName; + } + } + const fileName = `${fileNamePrefix}.${ext}`; + return resolver.tryToResolveFileName(fileName) ? fileName : null; + } + _loadAsDir( potentialDirPath: string, fromModule: TModule, @@ -689,6 +725,35 @@ function resolutionHash(modulePath, depName) { return `${path.resolve(modulePath)}:${depName}`; } +type FileNameResolverOptions = {| + +dirPath: string, + +doesFileExist: (filePath: string) => boolean, +|}; + +/** + * When resolving a single module we want to keep track of the list of paths + * we tried to find. + */ +class FileNameResolver { + _options: FileNameResolverOptions; + _tentativeFileNames: Array; + + constructor(options: FileNameResolverOptions) { + this._options = options; + this._tentativeFileNames = []; + } + + getTentativeFileNames(): $ReadOnlyArray { + return this._tentativeFileNames; + } + + tryToResolveFileName(fileName: string): boolean { + this._tentativeFileNames.push(fileName); + const filePath = path.join(this._options.dirPath, fileName); + return this._options.doesFileExist(filePath); + } +} + class UnableToResolveError extends Error { type: string; from: string; From 01460873daa6f6ba4ac3666c6b949717d9f1f2fe Mon Sep 17 00:00:00 2001 From: Pieter De Baets Date: Thu, 11 May 2017 06:32:41 -0700 Subject: [PATCH 0058/1101] Move jschelpers to fb_xplat_cxx_library Reviewed By: bestander Differential Revision: D5035858 fbshipit-source-id: 110fc5140ee4930634ef2ac3453d0a84124516f9 --- ReactCommon/DEFS | 1 + ReactCommon/jschelpers/BUCK | 107 ++++++++++++------------------------ 2 files changed, 37 insertions(+), 71 deletions(-) diff --git a/ReactCommon/DEFS b/ReactCommon/DEFS index 30dcaf619c9d..a1af94d5f018 100644 --- a/ReactCommon/DEFS +++ b/ReactCommon/DEFS @@ -5,3 +5,4 @@ GLOG_DEP = "//ReactAndroid/build/third-party-ndk/glog:glog" INSPECTOR_FLAGS = [] JSC_DEPS = [] +JSC_INTERNAL_DEPS = [] diff --git a/ReactCommon/jschelpers/BUCK b/ReactCommon/jschelpers/BUCK index af29360f7530..fb0e0a4a2cad 100644 --- a/ReactCommon/jschelpers/BUCK +++ b/ReactCommon/jschelpers/BUCK @@ -1,3 +1,5 @@ +include_defs("//ReactCommon/DEFS") + EXPORTED_HEADERS = [ "InspectorInterfaces.h", "JavaScriptCore.h", @@ -8,89 +10,52 @@ EXPORTED_HEADERS = [ "Value.h", ] -EXPORTED_HEADER_MAP = subdir_glob( - (("", header) for header in EXPORTED_HEADERS), - prefix = "jschelpers", -) - -if THIS_IS_FBANDROID: - include_defs("//ReactAndroid/DEFS") - - cxx_library( +fb_xplat_cxx_library( name = "jscinternalhelpers", - force_static = True, + srcs = glob( + ["*.cpp"], + excludes = ["systemJSCWrapper.cpp"], + ), compiler_flags = [ - "-Wall", - "-fexceptions", - "-fvisibility=hidden", - "-std=c++1y", + "-Wall", + "-fexceptions", + "-fvisibility=hidden", + "-std=c++1y", ], exported_headers = EXPORTED_HEADERS, - headers = glob(["*.h"], excludes=EXPORTED_HEADERS), - header_namespace = "jschelpers", - srcs = glob(["*.cpp"], excludes=["systemJSCWrapper.cpp"]), - deps = JSC_INTERNAL_DEPS + [ - "//xplat/folly:molly", - ], - visibility = [ - "PUBLIC", - ], - ) - - cxx_library( - name = "jschelpers", + fbobjc_header_path_prefix = "jschelpers", + fbobjc_inherited_buck_flags = STATIC_LIBRARY_IOS_FLAGS, force_static = True, - compiler_flags = [ - "-Wall", - "-fexceptions", - "-fvisibility=hidden", - "-std=c++1y", - ], - srcs = [], - deps = [ ":jscinternalhelpers" ], - visibility = [ - "PUBLIC", - ], - ) - -if THIS_IS_FBOBJC: - - fb_apple_library( - name = "jscinternalhelpers", - inherited_buck_flags = STATIC_LIBRARY_IOS_FLAGS, - compiler_flags = [ - "-Wall", - "-fexceptions", - "-fvisibility=hidden", - "-std=c++1y", - ], - exported_headers = EXPORTED_HEADER_MAP, - headers = subdir_glob([("", "*.h")], excludes=EXPORTED_HEADERS, prefix="jschelpers"), header_namespace = "jschelpers", - srcs = glob(["*.cpp"], excludes=["systemJSCWrapper.cpp"]), - deps = [ - "//xplat/folly:molly", - ], + headers = glob( + ["*.h"], + excludes = EXPORTED_HEADERS, + ), visibility = [ - "PUBLIC", + "PUBLIC", + ], + deps = JSC_INTERNAL_DEPS + [ + "//xplat/folly:molly", ], - ) +) - fb_apple_library( +fb_xplat_cxx_library( name = "jschelpers", - inherited_buck_flags = STATIC_LIBRARY_IOS_FLAGS, + srcs = [], compiler_flags = [ - "-Wall", - "-fexceptions", - "-fvisibility=hidden", - "-std=c++1y", + "-Wall", + "-fexceptions", + "-fvisibility=hidden", + "-std=c++1y", ], - srcs = ["systemJSCWrapper.cpp"], - frameworks = [ - "$SDKROOT/System/Library/Frameworks/JavaScriptCore.framework", + fbobjc_frameworks = [ + "$SDKROOT/System/Library/Frameworks/JavaScriptCore.framework", ], - deps = [ ":jscinternalhelpers" ], + fbobjc_inherited_buck_flags = STATIC_LIBRARY_IOS_FLAGS, + fbobjc_srcs = ["systemJSCWrapper.cpp"], + force_static = True, visibility = [ - "PUBLIC", + "PUBLIC", ], - ) + deps = [":jscinternalhelpers"], +) From c15a6b620243d019c38d82e8be5ab3571f153791 Mon Sep 17 00:00:00 2001 From: Sebastian McKenzie Date: Thu, 11 May 2017 06:37:32 -0700 Subject: [PATCH 0059/1101] Use absolute locations for plugins and presets in packager babel config Reviewed By: davidaurelio Differential Revision: D5044244 fbshipit-source-id: ab1af28d0158c22d0426a7a3b3f1bb0a63abac4e --- packager/babelRegisterOnly.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packager/babelRegisterOnly.js b/packager/babelRegisterOnly.js index 1a0b2df4cd76..1f4d3e6f9688 100644 --- a/packager/babelRegisterOnly.js +++ b/packager/babelRegisterOnly.js @@ -19,13 +19,13 @@ function registerOnly(onlyList) { function config(onlyList) { _only = _only.concat(onlyList); return { - presets: ['es2015-node'], + presets: [require('babel-preset-es2015-node')], plugins: [ 'transform-flow-strip-types', 'syntax-trailing-function-commas', 'transform-object-rest-spread', 'transform-async-to-generator', - ], + ].map(pluginName => require(`babel-plugin-${pluginName}`)), only: _only, retainLines: true, sourceMaps: 'inline', From 70b7488f9720b76f864f0cc5b725c56c5e652554 Mon Sep 17 00:00:00 2001 From: Georgiy Kassabli Date: Thu, 11 May 2017 08:09:30 -0700 Subject: [PATCH 0060/1101] Adding node type and moving rounding dependency to rely on that type Reviewed By: emilsjolander Differential Revision: D5025107 fbshipit-source-id: a8d66e2f9c5d02ab080784cc474be583a09b92e2 --- .../java/com/facebook/yoga/YogaNodeType.java | 36 ++++++++++ ReactCommon/yoga/yoga/YGEnums.c | 71 +++++++++++-------- ReactCommon/yoga/yoga/YGEnums.h | 7 ++ ReactCommon/yoga/yoga/Yoga.c | 21 ++++-- ReactCommon/yoga/yoga/Yoga.h | 1 + 5 files changed, 99 insertions(+), 37 deletions(-) create mode 100644 ReactAndroid/src/main/java/com/facebook/yoga/YogaNodeType.java diff --git a/ReactAndroid/src/main/java/com/facebook/yoga/YogaNodeType.java b/ReactAndroid/src/main/java/com/facebook/yoga/YogaNodeType.java new file mode 100644 index 000000000000..53f56a7f790c --- /dev/null +++ b/ReactAndroid/src/main/java/com/facebook/yoga/YogaNodeType.java @@ -0,0 +1,36 @@ +/** + * Copyright (c) 2014-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +package com.facebook.yoga; + +import com.facebook.proguard.annotations.DoNotStrip; + +@DoNotStrip +public enum YogaNodeType { + DEFAULT(0), + TEXT(1); + + private int mIntValue; + + YogaNodeType(int intValue) { + mIntValue = intValue; + } + + public int intValue() { + return mIntValue; + } + + public static YogaNodeType fromInt(int value) { + switch (value) { + case 0: return DEFAULT; + case 1: return TEXT; + default: throw new IllegalArgumentException("Unknown enum value: " + value); + } + } +} diff --git a/ReactCommon/yoga/yoga/YGEnums.c b/ReactCommon/yoga/yoga/YGEnums.c index 2af4869ef2c2..f554c367978c 100644 --- a/ReactCommon/yoga/yoga/YGEnums.c +++ b/ReactCommon/yoga/yoga/YGEnums.c @@ -9,8 +9,8 @@ #include "YGEnums.h" -const char *YGAlignToString(const YGAlign value) { - switch (value) { +const char *YGAlignToString(const YGAlign value){ + switch(value){ case YGAlignAuto: return "auto"; case YGAlignFlexStart: @@ -31,8 +31,8 @@ const char *YGAlignToString(const YGAlign value) { return "unknown"; } -const char *YGDimensionToString(const YGDimension value) { - switch (value) { +const char *YGDimensionToString(const YGDimension value){ + switch(value){ case YGDimensionWidth: return "width"; case YGDimensionHeight: @@ -41,8 +41,8 @@ const char *YGDimensionToString(const YGDimension value) { return "unknown"; } -const char *YGDirectionToString(const YGDirection value) { - switch (value) { +const char *YGDirectionToString(const YGDirection value){ + switch(value){ case YGDirectionInherit: return "inherit"; case YGDirectionLTR: @@ -53,8 +53,8 @@ const char *YGDirectionToString(const YGDirection value) { return "unknown"; } -const char *YGDisplayToString(const YGDisplay value) { - switch (value) { +const char *YGDisplayToString(const YGDisplay value){ + switch(value){ case YGDisplayFlex: return "flex"; case YGDisplayNone: @@ -63,8 +63,8 @@ const char *YGDisplayToString(const YGDisplay value) { return "unknown"; } -const char *YGEdgeToString(const YGEdge value) { - switch (value) { +const char *YGEdgeToString(const YGEdge value){ + switch(value){ case YGEdgeLeft: return "left"; case YGEdgeTop: @@ -87,16 +87,16 @@ const char *YGEdgeToString(const YGEdge value) { return "unknown"; } -const char *YGExperimentalFeatureToString(const YGExperimentalFeature value) { - switch (value) { +const char *YGExperimentalFeatureToString(const YGExperimentalFeature value){ + switch(value){ case YGExperimentalFeatureWebFlexBasis: return "web-flex-basis"; } return "unknown"; } -const char *YGFlexDirectionToString(const YGFlexDirection value) { - switch (value) { +const char *YGFlexDirectionToString(const YGFlexDirection value){ + switch(value){ case YGFlexDirectionColumn: return "column"; case YGFlexDirectionColumnReverse: @@ -109,8 +109,8 @@ const char *YGFlexDirectionToString(const YGFlexDirection value) { return "unknown"; } -const char *YGJustifyToString(const YGJustify value) { - switch (value) { +const char *YGJustifyToString(const YGJustify value){ + switch(value){ case YGJustifyFlexStart: return "flex-start"; case YGJustifyCenter: @@ -125,8 +125,8 @@ const char *YGJustifyToString(const YGJustify value) { return "unknown"; } -const char *YGLogLevelToString(const YGLogLevel value) { - switch (value) { +const char *YGLogLevelToString(const YGLogLevel value){ + switch(value){ case YGLogLevelError: return "error"; case YGLogLevelWarn: @@ -143,8 +143,8 @@ const char *YGLogLevelToString(const YGLogLevel value) { return "unknown"; } -const char *YGMeasureModeToString(const YGMeasureMode value) { - switch (value) { +const char *YGMeasureModeToString(const YGMeasureMode value){ + switch(value){ case YGMeasureModeUndefined: return "undefined"; case YGMeasureModeExactly: @@ -155,8 +155,18 @@ const char *YGMeasureModeToString(const YGMeasureMode value) { return "unknown"; } -const char *YGOverflowToString(const YGOverflow value) { - switch (value) { +const char *YGNodeTypeToString(const YGNodeType value){ + switch(value){ + case YGNodeTypeDefault: + return "default"; + case YGNodeTypeText: + return "text"; + } + return "unknown"; +} + +const char *YGOverflowToString(const YGOverflow value){ + switch(value){ case YGOverflowVisible: return "visible"; case YGOverflowHidden: @@ -167,8 +177,8 @@ const char *YGOverflowToString(const YGOverflow value) { return "unknown"; } -const char *YGPositionTypeToString(const YGPositionType value) { - switch (value) { +const char *YGPositionTypeToString(const YGPositionType value){ + switch(value){ case YGPositionTypeRelative: return "relative"; case YGPositionTypeAbsolute: @@ -177,8 +187,8 @@ const char *YGPositionTypeToString(const YGPositionType value) { return "unknown"; } -const char *YGPrintOptionsToString(const YGPrintOptions value) { - switch (value) { +const char *YGPrintOptionsToString(const YGPrintOptions value){ + switch(value){ case YGPrintOptionsLayout: return "layout"; case YGPrintOptionsStyle: @@ -189,8 +199,8 @@ const char *YGPrintOptionsToString(const YGPrintOptions value) { return "unknown"; } -const char *YGUnitToString(const YGUnit value) { - switch (value) { +const char *YGUnitToString(const YGUnit value){ + switch(value){ case YGUnitUndefined: return "undefined"; case YGUnitPoint: @@ -203,8 +213,8 @@ const char *YGUnitToString(const YGUnit value) { return "unknown"; } -const char *YGWrapToString(const YGWrap value) { - switch (value) { +const char *YGWrapToString(const YGWrap value){ + switch(value){ case YGWrapNoWrap: return "no-wrap"; case YGWrapWrap: @@ -214,3 +224,4 @@ const char *YGWrapToString(const YGWrap value) { } return "unknown"; } + diff --git a/ReactCommon/yoga/yoga/YGEnums.h b/ReactCommon/yoga/yoga/YGEnums.h index 8ec5829ef9f2..e12b9667be8f 100644 --- a/ReactCommon/yoga/yoga/YGEnums.h +++ b/ReactCommon/yoga/yoga/YGEnums.h @@ -106,6 +106,13 @@ typedef YG_ENUM_BEGIN(YGMeasureMode) { } YG_ENUM_END(YGMeasureMode); WIN_EXPORT const char *YGMeasureModeToString(const YGMeasureMode value); +#define YGNodeTypeCount 2 +typedef YG_ENUM_BEGIN(YGNodeType) { + YGNodeTypeDefault, + YGNodeTypeText, +} YG_ENUM_END(YGNodeType); +WIN_EXPORT const char *YGNodeTypeToString(const YGNodeType value); + #define YGOverflowCount 3 typedef YG_ENUM_BEGIN(YGOverflow) { YGOverflowVisible, diff --git a/ReactCommon/yoga/yoga/Yoga.c b/ReactCommon/yoga/yoga/Yoga.c index 44245b1027a9..3a4faf85b895 100644 --- a/ReactCommon/yoga/yoga/Yoga.c +++ b/ReactCommon/yoga/yoga/Yoga.c @@ -121,6 +121,7 @@ typedef struct YGNode { bool isDirty; bool hasNewLayout; + YGNodeType nodeType; YGValue const *resolvedDimensions[2]; } YGNode; @@ -158,6 +159,7 @@ static YGNode gYGNodeDefaults = { .children = NULL, .hasNewLayout = true, .isDirty = false, + .nodeType = YGNodeTypeDefault, .resolvedDimensions = {[YGDimensionWidth] = &YGValueUndefined, [YGDimensionHeight] = &YGValueUndefined}, @@ -444,11 +446,15 @@ static void YGNodeMarkDirtyInternal(const YGNodeRef node) { void YGNodeSetMeasureFunc(const YGNodeRef node, YGMeasureFunc measureFunc) { if (measureFunc == NULL) { node->measure = NULL; + // TODO: t18095186 Move nodeType to opt-in function and mark appropriate places in Litho + node->nodeType = YGNodeTypeDefault; } else { YGAssertWithNode(node, YGNodeGetChildCount(node) == 0, "Cannot set measure function: Nodes with measure functions cannot have children."); node->measure = measureFunc; + // TODO: t18095186 Move nodeType to opt-in function and mark appropriate places in Litho + node->nodeType = YGNodeTypeText; } } @@ -722,6 +728,7 @@ static inline const YGValue *YGNodeResolveFlexBasisPtr(const YGNodeRef node) { YG_NODE_PROPERTY_IMPL(void *, Context, context, context); YG_NODE_PROPERTY_IMPL(YGPrintFunc, PrintFunc, printFunc, print); YG_NODE_PROPERTY_IMPL(bool, HasNewLayout, hasNewLayout, hasNewLayout); +YG_NODE_PROPERTY_IMPL(YGNodeType, NodeType, nodeType, nodeType); YG_NODE_STYLE_PROPERTY_IMPL(YGDirection, Direction, direction, direction); YG_NODE_STYLE_PROPERTY_IMPL(YGFlexDirection, FlexDirection, flexDirection, flexDirection); @@ -3402,19 +3409,19 @@ static void YGRoundToPixelGrid(const YGNodeRef node, // If a node has a custom measure function we never want to round down its size as this could // lead to unwanted text truncation. - const bool hasMeasure = node->measure != NULL; + const bool textRounding = node->nodeType == YGNodeTypeText; node->layout.position[YGEdgeLeft] = - YGRoundValueToPixelGrid(nodeLeft, pointScaleFactor, false, hasMeasure); + YGRoundValueToPixelGrid(nodeLeft, pointScaleFactor, false, textRounding); node->layout.position[YGEdgeTop] = - YGRoundValueToPixelGrid(nodeTop, pointScaleFactor, false, hasMeasure); + YGRoundValueToPixelGrid(nodeTop, pointScaleFactor, false, textRounding); node->layout.dimensions[YGDimensionWidth] = - YGRoundValueToPixelGrid(absoluteNodeRight, pointScaleFactor, hasMeasure, false) - - YGRoundValueToPixelGrid(absoluteNodeLeft, pointScaleFactor, false, hasMeasure); + YGRoundValueToPixelGrid(absoluteNodeRight, pointScaleFactor, textRounding, false) - + YGRoundValueToPixelGrid(absoluteNodeLeft, pointScaleFactor, false, textRounding); node->layout.dimensions[YGDimensionHeight] = - YGRoundValueToPixelGrid(absoluteNodeBottom, pointScaleFactor, hasMeasure, false) - - YGRoundValueToPixelGrid(absoluteNodeTop, pointScaleFactor, false, hasMeasure); + YGRoundValueToPixelGrid(absoluteNodeBottom, pointScaleFactor, textRounding, false) - + YGRoundValueToPixelGrid(absoluteNodeTop, pointScaleFactor, false, textRounding); const uint32_t childCount = YGNodeListCount(node->children); for (uint32_t i = 0; i < childCount; i++) { diff --git a/ReactCommon/yoga/yoga/Yoga.h b/ReactCommon/yoga/yoga/Yoga.h index b18f3dbc3006..162415dbe0ff 100644 --- a/ReactCommon/yoga/yoga/Yoga.h +++ b/ReactCommon/yoga/yoga/Yoga.h @@ -161,6 +161,7 @@ YG_NODE_PROPERTY(YGMeasureFunc, MeasureFunc, measureFunc); YG_NODE_PROPERTY(YGBaselineFunc, BaselineFunc, baselineFunc) YG_NODE_PROPERTY(YGPrintFunc, PrintFunc, printFunc); YG_NODE_PROPERTY(bool, HasNewLayout, hasNewLayout); +YG_NODE_PROPERTY(YGNodeType, NodeType, nodeType); YG_NODE_STYLE_PROPERTY(YGDirection, Direction, direction); YG_NODE_STYLE_PROPERTY(YGFlexDirection, FlexDirection, flexDirection); From 58337c903294152a74747b4ddfd33948ca6f1bde Mon Sep 17 00:00:00 2001 From: David Aurelio Date: Thu, 11 May 2017 08:32:04 -0700 Subject: [PATCH 0061/1101] BREAKING: Pass parameters to `transformer.transform` as object Reviewed By: jeanlauliac Differential Revision: D5037155 fbshipit-source-id: fbd18bd62254d7e1522f659ea62055e66748a951 --- jest/preprocessor.js | 14 +++++++++----- packager/package.json | 2 +- .../worker/__tests__/worker-test.js | 18 +++++++++--------- packager/src/JSTransformer/worker/worker.js | 14 +++++++++----- .../worker/__tests__/transform-module-test.js | 14 ++++++++++---- .../src/ModuleGraph/worker/transform-module.js | 8 ++++---- packager/transformer.js | 13 ++++++++----- 7 files changed, 50 insertions(+), 33 deletions(-) diff --git a/jest/preprocessor.js b/jest/preprocessor.js index 88eb666804f3..d0c0582be09b 100644 --- a/jest/preprocessor.js +++ b/jest/preprocessor.js @@ -34,11 +34,15 @@ module.exports = { ).code; } - return transformer.transform(src, file, { - dev: true, - inlineRequires: true, - platform: '', - projectRoot: '', + return transformer.transform({ + filename: file, + options: { + dev: true, + inlineRequires: true, + platform: '', + projectRoot: '', + }, + src, }).code; }, diff --git a/packager/package.json b/packager/package.json index e6386cc91651..e04a905ad3b5 100644 --- a/packager/package.json +++ b/packager/package.json @@ -1,5 +1,5 @@ { - "version": "0.5.1", + "version": "0.6.0", "name": "react-native-packager", "description": "Build native apps with React!", "repository": { diff --git a/packager/src/JSTransformer/worker/__tests__/worker-test.js b/packager/src/JSTransformer/worker/__tests__/worker-test.js index d3512e43d137..262deeac80d0 100644 --- a/packager/src/JSTransformer/worker/__tests__/worker-test.js +++ b/packager/src/JSTransformer/worker/__tests__/worker-test.js @@ -26,7 +26,7 @@ describe('code transformation worker:', () => { extractDependencies = require('../extract-dependencies').mockReturnValue({}); transformer = { - transform: jest.fn((src, filename, options) => ({ + transform: jest.fn(({filename, options, src}) => ({ code: src, map: {}, })), @@ -38,22 +38,22 @@ describe('code transformation worker:', () => { const sourceCode = 'arbitrary(code)'; const transformOptions = {arbitrary: 'options'}; transformCode(transformer, filename, sourceCode, {transform: transformOptions}, () => {}); - expect(transformer.transform).toBeCalledWith( - sourceCode, + expect(transformer.transform).toBeCalledWith({ filename, - transformOptions, - ); + options: transformOptions, + src: sourceCode, + }); }); it('prefixes JSON files with an assignment to module.exports to make the code valid', function() { const filename = 'arbitrary/file.json'; const sourceCode = '{"arbitrary":"property"}'; transformCode(transformer, filename, sourceCode, {}, () => {}); - expect(transformer.transform).toBeCalledWith( - `module.exports=${sourceCode}`, + expect(transformer.transform).toBeCalledWith({ filename, - undefined, - ); + options: undefined, + src: `module.exports=${sourceCode}`, + }); }); it('calls back with the result of the transform in the cache', done => { diff --git a/packager/src/JSTransformer/worker/worker.js b/packager/src/JSTransformer/worker/worker.js index c674a1bed808..f1890c954baa 100644 --- a/packager/src/JSTransformer/worker/worker.js +++ b/packager/src/JSTransformer/worker/worker.js @@ -29,13 +29,13 @@ export type TransformedCode = { }; export type Transformer = { - transform: ( + transform: ({| filename: string, - sourceCode: string, options: ExtraOptions & TransformOptions, plugins?: BabelPlugins, - ) => {ast: ?Ast, code: string, map: ?MappingsMap}, - getCacheKey: TransformOptionsStrict => string, + src: string, + |}) => {ast: ?Ast, code: string, map: ?MappingsMap}, + getCacheKey: () => string, }; @@ -102,7 +102,11 @@ function transformCode( let transformed; try { - transformed = transformer.transform(sourceCode, filename, options.transform); + transformed = transformer.transform({ + filename, + options: options.transform, + src: sourceCode, + }); } catch (error) { callback(error); return; diff --git a/packager/src/ModuleGraph/worker/__tests__/transform-module-test.js b/packager/src/ModuleGraph/worker/__tests__/transform-module-test.js index bb4af0f7228e..ef45c17389df 100644 --- a/packager/src/ModuleGraph/worker/__tests__/transform-module-test.js +++ b/packager/src/ModuleGraph/worker/__tests__/transform-module-test.js @@ -95,10 +95,16 @@ describe('transforming JS modules:', () => { const variants = {dev: {dev: true}, prod: {dev: false}}; transformModule(sourceCode, options(variants), () => { - expect(transformer.transform) - .toBeCalledWith(sourceCode, filename, {...defaults, ...variants.dev}); - expect(transformer.transform) - .toBeCalledWith(sourceCode, filename, {...defaults, ...variants.prod}); + expect(transformer.transform).toBeCalledWith({ + filename, + options: {...defaults, ...variants.dev}, + src: sourceCode, + }); + expect(transformer.transform).toBeCalledWith({ + filename, + options: {...defaults, ...variants.prod}, + src: sourceCode, + }); done(); }); }, diff --git a/packager/src/ModuleGraph/worker/transform-module.js b/packager/src/ModuleGraph/worker/transform-module.js index 47dcd0a271bd..38e5a60073fe 100644 --- a/packager/src/ModuleGraph/worker/transform-module.js +++ b/packager/src/ModuleGraph/worker/transform-module.js @@ -70,11 +70,11 @@ function transformModule( const {filename, transformer, variants = defaultVariants} = options; const tasks = {}; Object.keys(variants).forEach(name => { - tasks[name] = asyncify(() => transformer.transform( - code, + tasks[name] = asyncify(() => transformer.transform({ filename, - {...defaultTransformOptions, ...variants[name]}, - ) + options: {...defaultTransformOptions, ...variants[name]}, + src: code, + }) ); }); diff --git a/packager/transformer.js b/packager/transformer.js index 55447ee43aef..1aefd50e6394 100644 --- a/packager/transformer.js +++ b/packager/transformer.js @@ -112,11 +112,14 @@ function buildBabelConfig(filename, options) { return Object.assign({}, babelRC, config); } -function transform( - src: string, +type Params = { filename: string, - options, -) { + options: TransformOptions, + plugins?: BabelPlugins, + src: string, +}; + +function transform({filename, options, src}: Params) { options = options || {}; const OLD_BABEL_ENV = process.env.BABEL_ENV; @@ -154,7 +157,7 @@ function transform( } } -function getCacheKey(options: TransformOptions) { +function getCacheKey() { var key = crypto.createHash('md5'); cacheKeyParts.forEach(part => key.update(part)); return key.digest('hex'); From 103f4ee01f9f11b78d438775314d073bffd99eca Mon Sep 17 00:00:00 2001 From: Pieter De Baets Date: Thu, 11 May 2017 08:52:04 -0700 Subject: [PATCH 0062/1101] Move JSBigString its own cxxreact target Reviewed By: amnn Differential Revision: D5020584 fbshipit-source-id: 9ba21c0231c3bb77973620669727205231a0b7a8 --- ReactCommon/cxxreact/BUCK | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/ReactCommon/cxxreact/BUCK b/ReactCommon/cxxreact/BUCK index 06842f073b44..e4991ff4cf6f 100644 --- a/ReactCommon/cxxreact/BUCK +++ b/ReactCommon/cxxreact/BUCK @@ -29,6 +29,30 @@ fb_xplat_cxx_library( ], ) +fb_xplat_cxx_library( + name = "jsbigstring", + srcs = [ + "JSBigString.cpp", + ], + compiler_flags = CXX_LIBRARY_COMPILER_FLAGS + [ + "-fexceptions", + "-frtti", + ], + exported_headers = [ + "JSBigString.h", + ], + fbobjc_header_path_prefix = "cxxreact", + force_static = True, + header_namespace = "cxxreact", + visibility = [ + "PUBLIC", + ], + xcode_public_headers_symlinks = True, + deps = [ + "//xplat/folly:molly", + ], +) + fb_xplat_cxx_library( name = "samplemodule", srcs = ["SampleCxxModule.cpp"], @@ -53,7 +77,6 @@ CXXREACT_PUBLIC_HEADERS = [ "CxxNativeModule.h", "Executor.h", "Instance.h", - "JSBigString.h", "JSBundleType.h", "JSCExecutor.h", "JSCNativeModules.h", @@ -74,7 +97,10 @@ fb_xplat_cxx_library( name = "bridge", srcs = glob( ["*.cpp"], - excludes = ["SampleCxxModule.cpp"], + excludes = [ + "JSBigString.cpp", + "SampleCxxModule.cpp", + ], ), compiler_flags = CXX_LIBRARY_COMPILER_FLAGS + [ "-fexceptions", @@ -126,6 +152,7 @@ fb_xplat_cxx_library( xcode_public_headers_symlinks = True, deps = [ ":module", + ":jsbigstring", "//xplat/fbsystrace:fbsystrace", "//xplat/folly:molly", react_native_xplat_target("jschelpers:jschelpers"), From 9e6c44095ba0b23a7b7e64fdf254e15a868e320a Mon Sep 17 00:00:00 2001 From: Gabe Levi Date: Thu, 11 May 2017 09:10:05 -0700 Subject: [PATCH 0063/1101] Deploy v0.46.0 Reviewed By: zertosh Differential Revision: D5039894 fbshipit-source-id: 2e4a0c26550ae3a0dc01b33d1d939ec0218127be --- .flowconfig | 6 +++--- local-cli/templates/HelloWorld/_flowconfig | 6 +++--- package.json | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.flowconfig b/.flowconfig index 6bc162f76be9..5c7f8315bef8 100644 --- a/.flowconfig +++ b/.flowconfig @@ -41,12 +41,12 @@ suppress_type=$FlowIssue suppress_type=$FlowFixMe suppress_type=$FixMe -suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(>=0\\.\\(4[0-5]\\|[1-3][0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native_oss[a-z,_]*\\)?)\\) -suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(>=0\\.\\(4[0-5]\\|[1-3][0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native_oss[a-z,_]*\\)?)\\)?:? #[0-9]+ +suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(>=0\\.\\(4[0-6]\\|[1-3][0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native_oss[a-z,_]*\\)?)\\) +suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(>=0\\.\\(4[0-6]\\|[1-3][0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native_oss[a-z,_]*\\)?)\\)?:? #[0-9]+ suppress_comment=\\(.\\|\n\\)*\\$FlowFixedInNextDeploy suppress_comment=\\(.\\|\n\\)*\\$FlowExpectedError unsafe.enable_getters_and_setters=true [version] -^0.45.0 +^0.46.0 diff --git a/local-cli/templates/HelloWorld/_flowconfig b/local-cli/templates/HelloWorld/_flowconfig index 694b7203d3c6..1ee54691a658 100644 --- a/local-cli/templates/HelloWorld/_flowconfig +++ b/local-cli/templates/HelloWorld/_flowconfig @@ -36,12 +36,12 @@ suppress_type=$FlowIssue suppress_type=$FlowFixMe suppress_type=$FixMe -suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(>=0\\.\\(4[0-5]\\|[1-3][0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\) -suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(>=0\\.\\(4[0-5]\\|[1-3][0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)?:? #[0-9]+ +suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(>=0\\.\\(4[0-6]\\|[1-3][0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\) +suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(>=0\\.\\(4[0-6]\\|[1-3][0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)?:? #[0-9]+ suppress_comment=\\(.\\|\n\\)*\\$FlowFixedInNextDeploy suppress_comment=\\(.\\|\n\\)*\\$FlowExpectedError unsafe.enable_getters_and_setters=true [version] -^0.45.0 +^0.46.0 diff --git a/package.json b/package.json index 4ee90b6b3bab..fe96ec51e968 100644 --- a/package.json +++ b/package.json @@ -221,7 +221,7 @@ "eslint-plugin-babel": "^3.3.0", "eslint-plugin-flowtype": "^2.20.0", "eslint-plugin-react": "^6.4.1", - "flow-bin": "^0.45.0", + "flow-bin": "^0.46.0", "jest": "19.0.2", "jest-repl": "19.0.2", "jest-runtime": "^19.0.3", From 105d219935ea569b06e9f00ccc4d4b908dd4bc6f Mon Sep 17 00:00:00 2001 From: Aaron Chiu Date: Thu, 11 May 2017 15:09:05 -0700 Subject: [PATCH 0064/1101] make systrace look more like prod Reviewed By: alexeylang Differential Revision: D5023354 fbshipit-source-id: ed9d4b43d042c9aa12d7c74901b026a105b31d9c --- Libraries/Core/InitializeCore.js | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/Libraries/Core/InitializeCore.js b/Libraries/Core/InitializeCore.js index f9ca0173aa70..4182099836b2 100644 --- a/Libraries/Core/InitializeCore.js +++ b/Libraries/Core/InitializeCore.js @@ -112,7 +112,9 @@ BatchedBridge.registerCallableModule('HeapCapture', require('HeapCapture')); BatchedBridge.registerCallableModule('SamplingProfiler', require('SamplingProfiler')); if (__DEV__) { - BatchedBridge.registerCallableModule('HMRClient', require('HMRClient')); + if (!global.__RCTProfileIsProfiling) { + BatchedBridge.registerCallableModule('HMRClient', require('HMRClient')); + } } // RCTLog needs to register with BatchedBridge @@ -203,19 +205,23 @@ defineProperty(global, 'Set', () => require('Set'), true); // Set up devtools if (__DEV__) { - // not when debugging in chrome - // TODO(t12832058) This check is broken - if (!window.document) { - require('setupDevtools'); - } + if (!global.__RCTProfileIsProfiling) { + // not when debugging in chrome + // TODO(t12832058) This check is broken + if (!window.document) { + require('setupDevtools'); + } - require('RCTDebugComponentOwnership'); + require('RCTDebugComponentOwnership'); + } } // Set up inspector if (__DEV__) { - const JSInspector = require('JSInspector'); - JSInspector.registerAgent(require('NetworkAgent')); + if (!global.__RCTProfileIsProfiling) { + const JSInspector = require('JSInspector'); + JSInspector.registerAgent(require('NetworkAgent')); + } } // Just to make sure the JS gets packaged up. Wait until the JS environment has From c44e37bf74be8945905f8c4b5b18cc6bf65505d6 Mon Sep 17 00:00:00 2001 From: David Aurelio Date: Thu, 11 May 2017 16:37:03 -0700 Subject: [PATCH 0065/1101] Require transformer options to be present throughout Summary: `transformModulePath` used to be an optional string, because `ConfigT` allowed for an optional `getTransformModulePath` method. Effectively, we required it to be present. This builds on top of the cleanups around `ConfigT` and gets rid of the flow error suppressions Reviewed By: jeanlauliac Differential Revision: D5037466 fbshipit-source-id: bc5c9cbc566e7aa74e7f6397e69fa87cdac7bc00 --- local-cli/bundle/buildBundle.js | 7 +++---- local-cli/util/Config.js | 2 +- packager/react-packager.js | 1 + packager/src/Bundler/__tests__/Bundler-test.js | 7 +++++++ packager/src/Bundler/index.js | 15 ++++----------- packager/src/Server/index.js | 4 ++-- 6 files changed, 18 insertions(+), 18 deletions(-) diff --git a/local-cli/bundle/buildBundle.js b/local-cli/bundle/buildBundle.js index 97be14d79729..123cb6b76d2a 100644 --- a/local-cli/bundle/buildBundle.js +++ b/local-cli/bundle/buildBundle.js @@ -68,10 +68,9 @@ function buildBundle( const sourceExts = (config.getSourceExts && config.getSourceExts()) || []; const platforms = (config.getPlatforms && config.getPlatforms()) || []; - const transformModulePath = - args.transformer ? path.resolve(args.transformer) : - typeof config.getTransformModulePath === 'function' ? config.getTransformModulePath() : - undefined; + const transformModulePath = args.transformer + ? path.resolve(args.transformer) + : config.getTransformModulePath(); const providesModuleNodeModules = typeof config.getProvidesModuleNodeModules === 'function' ? config.getProvidesModuleNodeModules() : diff --git a/local-cli/util/Config.js b/local-cli/util/Config.js index 5454e21216b3..984ebd6ad6fc 100644 --- a/local-cli/util/Config.js +++ b/local-cli/util/Config.js @@ -101,7 +101,7 @@ const defaultConfig: ConfigT = { getProjectRoots: () => [process.cwd()], getProvidesModuleNodeModules: () => providesModuleNodeModules.slice(), getSourceExts: () => [], - getTransformModulePath: () => path.resolve(__dirname, '../../packager/transformer'), + getTransformModulePath: () => path.resolve(__dirname, '../../packager/transformer.js'), getTransformOptions: async () => ({}), postMinifyProcess: x => x, postProcessModules: modules => modules, diff --git a/packager/react-packager.js b/packager/react-packager.js index 24d001c1d827..457a877f5efd 100644 --- a/packager/react-packager.js +++ b/packager/react-packager.js @@ -34,6 +34,7 @@ type Options = { projectRoots: Array, reporter?: Reporter, +sourceExts: ?Array, + +transformModulePath: string, watch?: boolean, }; diff --git a/packager/src/Bundler/__tests__/Bundler-test.js b/packager/src/Bundler/__tests__/Bundler-test.js index 5a171a806344..bfcfa787867c 100644 --- a/packager/src/Bundler/__tests__/Bundler-test.js +++ b/packager/src/Bundler/__tests__/Bundler-test.js @@ -25,6 +25,7 @@ jest .mock('../Bundle') .mock('../HMRBundle') .mock('../../Logger') + .mock('/path/to/transformer.js', () => ({}), {virtual: true}) ; var Bundler = require('../'); @@ -36,6 +37,7 @@ const os = require('os'); const {any, objectContaining} = expect; + var commonOptions = { allowBundleUpdates: false, assetExts: defaults.assetExts, @@ -44,6 +46,7 @@ var commonOptions = { platforms: defaults.platforms, resetCache: false, sourceExts: defaults.sourceExts, + transformModulePath: '/path/to/transformer.js', watch: false, }; @@ -95,6 +98,10 @@ describe('Bundler', function() { }); Resolver.load = jest.fn().mockImplementation(opts => Promise.resolve(new Resolver(opts))); + fs.__setMockFilesystem({ + 'path': {'to': {'transformer.js': ''}}, + }); + fs.statSync.mockImplementation(function() { return { isDirectory: () => true, diff --git a/packager/src/Bundler/index.js b/packager/src/Bundler/index.js index d64820e9c526..bf88f7846da4 100644 --- a/packager/src/Bundler/index.js +++ b/packager/src/Bundler/index.js @@ -133,7 +133,7 @@ type Options = {| +reporter: Reporter, +resetCache: boolean, +sourceExts: Array, - +transformModulePath?: string, + +transformModulePath: string, +transformTimeoutInterval: ?number, +watch: boolean, |}; @@ -155,15 +155,9 @@ class Bundler { opts.projectRoots.forEach(verifyRootExists); - let transformModuleHash; - try { - /* $FlowFixMe: if transformModulePath is null it'll just be caught */ - const transformModuleStr = fs.readFileSync(opts.transformModulePath); - transformModuleHash = - crypto.createHash('sha1').update(transformModuleStr).digest('hex'); - } catch (error) { - transformModuleHash = ''; - } + const transformModuleStr = fs.readFileSync(opts.transformModulePath); + const transformModuleHash = + crypto.createHash('sha1').update(transformModuleStr).digest('hex'); const stableProjectRoots = opts.projectRoots.map(p => { return path.relative(path.join(__dirname, '../../../..'), p); @@ -197,7 +191,6 @@ class Bundler { const maxWorkerCount = Bundler.getMaxWorkerCount(); this._transformer = new Transformer( - /* $FlowFixMe: in practice it's always here. */ opts.transformModulePath, maxWorkerCount, { diff --git a/packager/src/Server/index.js b/packager/src/Server/index.js index 9fb3fe80b02b..0e0f53717f44 100644 --- a/packager/src/Server/index.js +++ b/packager/src/Server/index.js @@ -75,7 +75,7 @@ type Options = { resetCache?: boolean, silent?: boolean, +sourceExts: ?Array, - transformModulePath?: string, + +transformModulePath: string, transformTimeoutInterval?: number, watch?: boolean, }; @@ -131,7 +131,7 @@ class Server { resetCache: boolean, silent: boolean, +sourceExts: Array, - transformModulePath: void | string, + +transformModulePath: string, transformTimeoutInterval: ?number, watch: boolean, }; From ee8e721c33418368183aea7a397c6d3e0a73c613 Mon Sep 17 00:00:00 2001 From: David Aurelio Date: Thu, 11 May 2017 16:37:04 -0700 Subject: [PATCH 0066/1101] Add glossary, some renames Reviewed By: jeanlauliac Differential Revision: D5043919 fbshipit-source-id: ba6f47102747c0762a153cd860f8f61f090cf5d7 --- packager/Glossary.md | 22 ++++++++++++++++++++++ packager/src/Bundler/index.js | 20 ++++++++++---------- packager/src/lib/GlobalTransformCache.js | 20 ++++++++++---------- 3 files changed, 42 insertions(+), 20 deletions(-) create mode 100644 packager/Glossary.md diff --git a/packager/Glossary.md b/packager/Glossary.md new file mode 100644 index 000000000000..564db6466647 --- /dev/null +++ b/packager/Glossary.md @@ -0,0 +1,22 @@ +Glossary +=== + +Terminology commonly used in React Native Packager / Metro Bundler is explained +here. This document is work in progress, please help completing it. + +## Build Root + +Configuration files (`rn-cli.config.js`) support configuring one or more roots +that are watched for file changes during development. In the context of the +integration with the `js_*` rule family in [Buck][], there is only a single root, +the build root used by Buck. + + +## Local Path + +A *local path* / `localPath` is the path to a file relative to a +[*build root*](#build-root). + + + +[Buck]: http://buckbuild.com/ diff --git a/packager/src/Bundler/index.js b/packager/src/Bundler/index.js index bf88f7846da4..a0b1674cc240 100644 --- a/packager/src/Bundler/index.js +++ b/packager/src/Bundler/index.js @@ -456,7 +456,7 @@ class Bundler { log(createActionEndEntry(transformingFilesLogEntry)); onResolutionResponse(response); - // get entry file complete path (`entryFile` is relative to roots) + // get entry file complete path (`entryFile` is a local path, i.e. relative to roots) let entryFilePath; if (response.dependencies.length > 1) { // skip HMR requests const numModuleSystemDependencies = @@ -603,12 +603,12 @@ class Bundler { const placeHolder = {}; dependencies.forEach(dep => { if (dep.isAsset()) { - const relPath = getPathRelativeToRoot( + const localPath = toLocalPath( this._projectRoots, dep.path ); promises.push( - this._assetServer.getAssetData(relPath, platform) + this._assetServer.getAssetData(localPath, platform) ); ret.push(placeHolder); } else { @@ -688,8 +688,8 @@ class Bundler { assetPlugins: Array, platform: ?string = null, ) { - const relPath = getPathRelativeToRoot(this._projectRoots, module.path); - var assetUrlPath = joinPath('/assets', pathDirname(relPath)); + const localPath = toLocalPath(this._projectRoots, module.path); + var assetUrlPath = joinPath('/assets', pathDirname(localPath)); // On Windows, change backslashes to slashes to get proper URL path from file path. if (pathSeparator === '\\') { @@ -698,7 +698,7 @@ class Bundler { const isImage = isAssetTypeAnImage(extname(module.path).slice(1)); - return this._assetServer.getAssetData(relPath, platform).then(assetData => { + return this._assetServer.getAssetData(localPath, platform).then(assetData => { return Promise.all([isImage ? sizeOf(assetData.files[0]) : null, assetData]); }).then(res => { const dimensions = res[0]; @@ -842,11 +842,11 @@ class Bundler { } -function getPathRelativeToRoot(roots, absPath) { +function toLocalPath(roots, absPath) { for (let i = 0; i < roots.length; i++) { - const relPath = relativePath(roots[i], absPath); - if (relPath[0] !== '.') { - return relPath; + const localPath = relativePath(roots[i], absPath); + if (localPath[0] !== '.') { + return localPath; } } diff --git a/packager/src/lib/GlobalTransformCache.js b/packager/src/lib/GlobalTransformCache.js index 250620894f0f..b7f6145a9451 100644 --- a/packager/src/lib/GlobalTransformCache.js +++ b/packager/src/lib/GlobalTransformCache.js @@ -348,9 +348,9 @@ class OptionsHasher { * This function is extra-conservative with how it hashes the transform * options. In particular: * - * * we need to hash paths relative to the root, not the absolute paths, - * otherwise everyone would have a different cache, defeating the - * purpose of global cache; + * * we need to hash paths as local paths, i.e. relative to the root, not + * the absolute paths, otherwise everyone would have a different cache, + * defeating the purpose of global cache; * * we need to reject any additional field we do not know of, because * they could contain absolute path, and we absolutely want to process * these. @@ -397,21 +397,21 @@ class OptionsHasher { +dev | +generateSourceMaps << 1 | +hot << 2 | +!!inlineRequires << 3, ])); hash.update(JSON.stringify(platform)); - let relativeBlacklist = []; + let blacklistWithLocalPaths = []; if (typeof inlineRequires === 'object') { - relativeBlacklist = this.relativizeFilePaths(Object.keys(inlineRequires.blacklist)); + blacklistWithLocalPaths = this.pathsToLocal(Object.keys(inlineRequires.blacklist)); } - const relativeProjectRoot = this.relativizeFilePath(projectRoot); - const optionTuple = [relativeBlacklist, relativeProjectRoot]; + const localProjectRoot = this.toLocalPath(projectRoot); + const optionTuple = [blacklistWithLocalPaths, localProjectRoot]; hash.update(JSON.stringify(optionTuple)); return hash; } - relativizeFilePaths(filePaths: Array): Array { - return filePaths.map(this.relativizeFilePath.bind(this)); + pathsToLocal(filePaths: Array): Array { + return filePaths.map(this.toLocalPath, this); } - relativizeFilePath(filePath: string): string { + toLocalPath(filePath: string): string { return path.relative(this._rootPath, filePath); } } From 143beaf95dd4e57f0be070d7467975a03e24399c Mon Sep 17 00:00:00 2001 From: David Aurelio Date: Thu, 11 May 2017 16:37:06 -0700 Subject: [PATCH 0067/1101] Use local paths for global cache Summary: Changes the global cache to use *local paths* rather than base names of files for the cache key. This is to enable correct usage of babel transforms like `transform-react-jsx-source` that use file paths in their output. It remains a responsibility of the transform implementer to pass relative paths to babel if the global cache is being used. Reviewed By: jeanlauliac Differential Revision: D5044028 fbshipit-source-id: 2ef1e1545e510a18ab49a307053d91b4f40269b2 --- packager/src/Bundler/index.js | 15 +------- packager/src/JSTransformer/worker/worker.js | 1 + packager/src/lib/GlobalTransformCache.js | 14 ++++---- packager/src/lib/TransformCache.js | 2 ++ .../__tests__/GlobalTransformCache-test.js | 4 +-- .../GlobalTransformCache-test.js.snap | 4 +-- packager/src/node-haste/DependencyGraph.js | 9 ++--- packager/src/node-haste/Module.js | 6 ++++ packager/src/node-haste/ModuleCache.js | 28 +++++++++++---- packager/src/node-haste/lib/toLocalPath.js | 34 +++++++++++++++++++ 10 files changed, 83 insertions(+), 34 deletions(-) create mode 100644 packager/src/node-haste/lib/toLocalPath.js diff --git a/packager/src/Bundler/index.js b/packager/src/Bundler/index.js index a0b1674cc240..8619479af30c 100644 --- a/packager/src/Bundler/index.js +++ b/packager/src/Bundler/index.js @@ -26,13 +26,13 @@ const denodeify = require('denodeify'); const defaults = require('../../defaults'); const os = require('os'); const invariant = require('fbjs/lib/invariant'); +const toLocalPath = require('../node-haste/lib/toLocalPath'); const {generateAssetTransformResult, isAssetTypeAnImage} = require('./util'); const { sep: pathSeparator, join: joinPath, - relative: relativePath, dirname: pathDirname, extname, } = require('path'); @@ -842,19 +842,6 @@ class Bundler { } -function toLocalPath(roots, absPath) { - for (let i = 0; i < roots.length; i++) { - const localPath = relativePath(roots[i], absPath); - if (localPath[0] !== '.') { - return localPath; - } - } - - throw new Error( - 'Expected root module to be relative to one of the project roots' - ); -} - function verifyRootExists(root) { // Verify that the root exists. assert(fs.statSync(root).isDirectory(), 'Root has to be a valid directory'); diff --git a/packager/src/JSTransformer/worker/worker.js b/packager/src/JSTransformer/worker/worker.js index f1890c954baa..9227e609d858 100644 --- a/packager/src/JSTransformer/worker/worker.js +++ b/packager/src/JSTransformer/worker/worker.js @@ -19,6 +19,7 @@ const invariant = require('fbjs/lib/invariant'); const minify = require('./minify'); import type {LogEntry} from '../../Logger/Types'; +import type {LocalPath} from '../../node-haste/lib/toLocalPath'; import type {Ast, Plugins as BabelPlugins, SourceMap as MappingsMap} from 'babel-core'; export type TransformedCode = { diff --git a/packager/src/lib/GlobalTransformCache.js b/packager/src/lib/GlobalTransformCache.js index b7f6145a9451..deb27aef92b3 100644 --- a/packager/src/lib/GlobalTransformCache.js +++ b/packager/src/lib/GlobalTransformCache.js @@ -18,6 +18,7 @@ const FetchError = require('node-fetch/lib/fetch-error'); const crypto = require('crypto'); const fetch = require('node-fetch'); +const invariant = require('fbjs/lib/invariant'); const jsonStableStringify = require('json-stable-stringify'); const path = require('path'); const throat = require('throat'); @@ -26,6 +27,7 @@ import type { Options as TransformWorkerOptions, TransformOptionsStrict, } from '../JSTransformer/worker/worker'; +import type {LocalPath} from '../node-haste/lib/toLocalPath'; import type {CachedResult, GetTransformCacheKey} from './TransformCache'; /** @@ -62,10 +64,10 @@ type FetchResultFromURI = (uri: string) => Promise; type StoreResults = (resultsByKey: Map) => Promise; export type FetchProps = { - filePath: string, - sourceCode: string, - getTransformCacheKey: GetTransformCacheKey, - transformOptions: TransformWorkerOptions, + +localPath: LocalPath, + +sourceCode: string, + +getTransformCacheKey: GetTransformCacheKey, + +transformOptions: TransformWorkerOptions, }; type URI = string; @@ -227,13 +229,13 @@ class URIBasedGlobalTransformCache { */ keyOf(props: FetchProps) { const hash = crypto.createHash('sha1'); - const {sourceCode, filePath, transformOptions} = props; + const {sourceCode, localPath, transformOptions} = props; hash.update(this._optionsHasher.getTransformWorkerOptionsDigest(transformOptions)); const cacheKey = props.getTransformCacheKey(transformOptions); hash.update(JSON.stringify(cacheKey)); hash.update(crypto.createHash('sha1').update(sourceCode).digest('hex')); const digest = hash.digest('hex'); - return `${digest}-${path.basename(filePath)}`; + return `${digest}-${localPath}`; } /** diff --git a/packager/src/lib/TransformCache.js b/packager/src/lib/TransformCache.js index 978405f17652..ab1ab19a8502 100644 --- a/packager/src/lib/TransformCache.js +++ b/packager/src/lib/TransformCache.js @@ -24,6 +24,7 @@ const writeFileAtomicSync = require('write-file-atomic').sync; import type {Options as WorkerOptions} from '../JSTransformer/worker/worker'; import type {MappingsMap} from './SourceMap'; import type {Reporter} from './reporting'; +import type {LocalPath} from '../node-haste/lib/toLocalPath'; type CacheFilePaths = {transformedCode: string, metadata: string}; export type GetTransformCacheKey = (options: {}) => string; @@ -50,6 +51,7 @@ export type CacheOptions = { export type ReadTransformProps = { filePath: string, + localPath: LocalPath, sourceCode: string, transformOptions: WorkerOptions, transformOptionsKey: string, diff --git a/packager/src/lib/__tests__/GlobalTransformCache-test.js b/packager/src/lib/__tests__/GlobalTransformCache-test.js index 1b1bd7e9fac7..c95a4e054214 100644 --- a/packager/src/lib/__tests__/GlobalTransformCache-test.js +++ b/packager/src/lib/__tests__/GlobalTransformCache-test.js @@ -55,12 +55,12 @@ describe('GlobalTransformCache', () => { }, }; const result = await Promise.all([cache.fetch({ - filePath: 'foo.js', + localPath: 'some/where/foo.js', sourceCode: '/* beep */', getTransformCacheKey: () => 'abcd', transformOptions, }), cache.fetch({ - filePath: 'bar.js', + localPath: 'some/where/else/bar.js', sourceCode: '/* boop */', getTransformCacheKey: () => 'abcd', transformOptions, diff --git a/packager/src/lib/__tests__/__snapshots__/GlobalTransformCache-test.js.snap b/packager/src/lib/__tests__/__snapshots__/GlobalTransformCache-test.js.snap index 8c15dc7cd192..9fadc6468290 100644 --- a/packager/src/lib/__tests__/__snapshots__/GlobalTransformCache-test.js.snap +++ b/packager/src/lib/__tests__/__snapshots__/GlobalTransformCache-test.js.snap @@ -19,12 +19,12 @@ Object { exports[`GlobalTransformCache fetches results 1`] = ` Array [ Object { - "code": "/* code from http://globalcache.com/cd6df9b7e86839dafc5e9b5b493a28cbc55074e7-foo.js */", + "code": "/* code from http://globalcache.com/cd6df9b7e86839dafc5e9b5b493a28cbc55074e7-some/where/foo.js */", "dependencies": Array [], "dependencyOffsets": Array [], }, Object { - "code": "/* code from http://globalcache.com/6329a317fcf94d74cc9a1de6442ee7c25e27a507-bar.js */", + "code": "/* code from http://globalcache.com/6329a317fcf94d74cc9a1de6442ee7c25e27a507-some/where/else/bar.js */", "dependencies": Array [], "dependencyOffsets": Array [], }, diff --git a/packager/src/node-haste/DependencyGraph.js b/packager/src/node-haste/DependencyGraph.js index b950f2b1a14d..89e0521873f4 100644 --- a/packager/src/node-haste/DependencyGraph.js +++ b/packager/src/node-haste/DependencyGraph.js @@ -162,14 +162,15 @@ class DependencyGraph extends EventEmitter { _createModuleCache() { const {_opts} = this; return new ModuleCache({ + assetDependencies: _opts.assetDependencies, + depGraphHelpers: this._helpers, + getClosestPackage: this._getClosestPackage.bind(this), getTransformCacheKey: _opts.getTransformCacheKey, globalTransformCache: _opts.globalTransformCache, - transformCode: _opts.transformCode, - depGraphHelpers: this._helpers, - assetDependencies: _opts.assetDependencies, moduleOptions: _opts.moduleOptions, reporter: _opts.reporter, - getClosestPackage: this._getClosestPackage.bind(this), + roots: _opts.roots, + transformCode: _opts.transformCode, }, _opts.platforms); } diff --git a/packager/src/node-haste/Module.js b/packager/src/node-haste/Module.js index 10b8b9aa9efe..c406e80f851e 100644 --- a/packager/src/node-haste/Module.js +++ b/packager/src/node-haste/Module.js @@ -35,6 +35,7 @@ import type {Reporter} from '../lib/reporting'; import type DependencyGraphHelpers from './DependencyGraph/DependencyGraphHelpers'; import type ModuleCache from './ModuleCache'; +import type {LocalPath} from './lib/toLocalPath'; export type ReadResult = { +code: string, @@ -74,6 +75,7 @@ export type ConstructorArgs = { depGraphHelpers: DependencyGraphHelpers, globalTransformCache: ?GlobalTransformCache, file: string, + localPath: LocalPath, moduleCache: ModuleCache, options: Options, reporter: Reporter, @@ -86,6 +88,7 @@ type DocBlock = {+[key: string]: string}; const TRANSFORM_CACHE = new TransformCache(); class Module { + localPath: LocalPath; path: string; type: string; @@ -106,6 +109,7 @@ class Module { constructor({ depGraphHelpers, + localPath, file, getTransformCacheKey, globalTransformCache, @@ -118,6 +122,7 @@ class Module { throw new Error('Expected file to be absolute path but got ' + file); } + this.localPath = localPath; this.path = file; this.type = 'Module'; @@ -436,6 +441,7 @@ class Module { const getTransformCacheKey = this._getTransformCacheKey; return { filePath: this.path, + localPath: this.localPath, sourceCode, getTransformCacheKey, transformOptions, diff --git a/packager/src/node-haste/ModuleCache.js b/packager/src/node-haste/ModuleCache.js index 0a183b1613cd..c1f0a2d34b07 100644 --- a/packager/src/node-haste/ModuleCache.js +++ b/packager/src/node-haste/ModuleCache.js @@ -17,6 +17,8 @@ const Module = require('./Module'); const Package = require('./Package'); const Polyfill = require('./Polyfill'); +const toLocalPath = require('./lib/toLocalPath'); + import type {GlobalTransformCache} from '../lib/GlobalTransformCache'; import type {GetTransformCacheKey} from '../lib/TransformCache'; import type {Reporter} from '../lib/reporting'; @@ -39,6 +41,7 @@ class ModuleCache { _platforms: Set; _transformCode: TransformCode; _reporter: Reporter; + _roots: Array; constructor( { @@ -49,18 +52,20 @@ class ModuleCache { getTransformCacheKey, globalTransformCache, moduleOptions, + roots, reporter, transformCode, - }: { + }: {| assetDependencies: Array, depGraphHelpers: DependencyGraphHelpers, getClosestPackage: GetClosestPackageFn, getTransformCacheKey: GetTransformCacheKey, globalTransformCache: ?GlobalTransformCache, moduleOptions: ModuleOptions, + roots: Array, reporter: Reporter, transformCode: TransformCode, - }, + |}, platforms: Set, ) { this._assetDependencies = assetDependencies; @@ -75,6 +80,7 @@ class ModuleCache { this._platforms = platforms; this._transformCode = transformCode; this._reporter = reporter; + this._roots = roots; } getModule(filePath: string): Module { @@ -84,6 +90,7 @@ class ModuleCache { file: filePath, getTransformCacheKey: this._getTransformCacheKey, globalTransformCache: this._globalTransformCache, + localPath: toLocalPath(this._roots, filePath), moduleCache: this, options: this._moduleOptions, reporter: this._reporter, @@ -99,14 +106,22 @@ class ModuleCache { getAssetModule(filePath: string) { if (!this._moduleCache[filePath]) { - /* $FlowFixMe: missing options. This is because this is an incorrect OOP - * design in the first place: AssetModule, being simpler than a normal - * Module, should not inherit the Module class. */ + /* FixMe: AssetModule does not need all these options. This is because + * this is an incorrect OOP design in the first place: AssetModule, being + * simpler than a normal Module, should not inherit the Module class. + */ this._moduleCache[filePath] = new AssetModule( { + dependencies: this._assetDependencies, + depGraphHelpers: this._depGraphHelpers, file: filePath, + getTransformCacheKey: this._getTransformCacheKey, + globalTransformCache: null, + localPath: toLocalPath(this._roots, filePath), moduleCache: this, - dependencies: this._assetDependencies, + options: this._moduleOptions, + reporter: this._reporter, + transformCode: this._transformCode, }, this._platforms, ); @@ -149,6 +164,7 @@ class ModuleCache { file, depGraphHelpers: this._depGraphHelpers, getTransformCacheKey: this._getTransformCacheKey, + localPath: toLocalPath(this._roots, file), moduleCache: this, transformCode: this._transformCode, }); diff --git a/packager/src/node-haste/lib/toLocalPath.js b/packager/src/node-haste/lib/toLocalPath.js new file mode 100644 index 000000000000..dbdb2037e8f1 --- /dev/null +++ b/packager/src/node-haste/lib/toLocalPath.js @@ -0,0 +1,34 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * @flow + */ + +'use strict'; + +const {relative} = require('path'); + +declare class OpaqueLocalPath {} +export type LocalPath = OpaqueLocalPath & string; + +// FIXME: This function has the shortcoming of potentially returning identical +// paths for two files in different roots. +function toLocalPath(roots: Array, absolutePath: string): LocalPath { + for (let i = 0; i < roots.length; i++) { + const localPath = relative(roots[i], absolutePath); + if (localPath[0] !== '.') { + return (localPath: any); + } + } + + throw new Error( + 'Expected root module to be relative to one of the project roots' + ); +} + +module.exports = toLocalPath; From 2fbe3b799e775b07991ac240c5a10c1cffa2dee5 Mon Sep 17 00:00:00 2001 From: David Aurelio Date: Thu, 11 May 2017 16:37:07 -0700 Subject: [PATCH 0068/1101] Pass local paths to transformers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Summary: Pass `localPath` to transformers to allow usage of plugins like `transform-react-jsx-source` that don’t conflict with x-machine caches, e.g. Buck or our own global cache. These caches don’t work properly if paths local to a specific machine are part of cached outputs. Reviewed By: jeanlauliac Differential Revision: D5044147 fbshipit-source-id: 1177afb48d6dd9351738fcd4da8f9f6357e25e81 --- jest/preprocessor.js | 1 + packager/package.json | 2 +- packager/src/Bundler/index.js | 1 + .../__tests__/Transformer-test.js | 9 +++-- packager/src/JSTransformer/index.js | 36 +++++++++++++++---- .../worker/__tests__/worker-test.js | 32 +++++++++-------- packager/src/JSTransformer/worker/worker.js | 19 ++++++---- .../worker/__tests__/transform-module-test.js | 2 ++ .../ModuleGraph/worker/transform-module.js | 1 + 9 files changed, 71 insertions(+), 32 deletions(-) diff --git a/jest/preprocessor.js b/jest/preprocessor.js index d0c0582be09b..2be2ec13ce46 100644 --- a/jest/preprocessor.js +++ b/jest/preprocessor.js @@ -36,6 +36,7 @@ module.exports = { return transformer.transform({ filename: file, + localPath: file, options: { dev: true, inlineRequires: true, diff --git a/packager/package.json b/packager/package.json index e04a905ad3b5..66c609d0ef99 100644 --- a/packager/package.json +++ b/packager/package.json @@ -1,5 +1,5 @@ { - "version": "0.6.0", + "version": "0.6.1", "name": "react-native-packager", "description": "Build native apps with React!", "repository": { diff --git a/packager/src/Bundler/index.js b/packager/src/Bundler/index.js index 8619479af30c..43142909c66c 100644 --- a/packager/src/Bundler/index.js +++ b/packager/src/Bundler/index.js @@ -224,6 +224,7 @@ class Bundler { transformCode: (module, code, transformCodeOptions) => this._transformer.transformFile( module.path, + module.localPath, code, transformCodeOptions, ), diff --git a/packager/src/JSTransformer/__tests__/Transformer-test.js b/packager/src/JSTransformer/__tests__/Transformer-test.js index ae9bcf32d2ee..ae9b59b13f6d 100644 --- a/packager/src/JSTransformer/__tests__/Transformer-test.js +++ b/packager/src/JSTransformer/__tests__/Transformer-test.js @@ -30,6 +30,7 @@ const {Readable} = require('stream'); describe('Transformer', function() { let workers, Cache; const fileName = '/an/arbitrary/file.js'; + const localPath = 'arbitrary/file.js'; const transformModulePath = __filename; beforeEach(function() { @@ -49,10 +50,11 @@ describe('Transformer', function() { ' to the worker farm when transforming', () => { const transformOptions = {arbitrary: 'options'}; const code = 'arbitrary(code)'; - new Transformer(transformModulePath).transformFile(fileName, code, transformOptions); + new Transformer(transformModulePath).transformFile(fileName, localPath, code, transformOptions); expect(workers.transformAndExtractDependencies).toBeCalledWith( transformModulePath, fileName, + localPath, code, transformOptions, any(Function), @@ -65,7 +67,7 @@ describe('Transformer', function() { var snippet = 'snippet'; workers.transformAndExtractDependencies.mockImplementation( - function(transformPath, filename, code, opts, callback) { + function(transformPath, filename, localPth, code, opts, callback) { var babelError = new SyntaxError(message); babelError.type = 'SyntaxError'; babelError.description = message; @@ -78,7 +80,8 @@ describe('Transformer', function() { }, ); - return transformer.transformFile(fileName, '', {}) + expect.assertions(7); + return transformer.transformFile(fileName, localPath, '', {}) .catch(function(error) { expect(error.type).toEqual('TransformError'); expect(error.message).toBe('SyntaxError ' + message); diff --git a/packager/src/JSTransformer/index.js b/packager/src/JSTransformer/index.js index 7ca488810873..7b23fd1f4a95 100644 --- a/packager/src/JSTransformer/index.js +++ b/packager/src/JSTransformer/index.js @@ -14,14 +14,21 @@ const Logger = require('../Logger'); const debug = require('debug')('RNP:JStransformer'); -const denodeify = require('denodeify'); +const denodeify: Denodeify = require('denodeify'); const invariant = require('fbjs/lib/invariant'); const path = require('path'); const util = require('util'); const workerFarm = require('../worker-farm'); import type {Data as TransformData, Options as WorkerOptions} from './worker/worker'; +import type {LocalPath} from '../node-haste/lib/toLocalPath'; import type {MappingsMap} from '../lib/SourceMap'; +import typeof {minify as Minify, transformAndExtractDependencies as TransformAndExtractDependencies} from './worker/worker'; + +type CB = (?Error, ?T) => mixed; +type Denodeify = + & (((A, B, C, CB) => void) => (A, B, C) => Promise) + & (((A, B, C, D, E, CB) => void) => (A, B, C, D, E) => Promise); // Avoid memory leaks caused in workers. This number seems to be a good enough number // to avoid any memory leak while not slowing down initial builds. @@ -62,8 +69,9 @@ class Transformer { _transform: ( transform: string, filename: string, + localPath: LocalPath, sourceCode: string, - options: ?WorkerOptions, + options: WorkerOptions, ) => Promise; minify: ( filename: string, @@ -71,7 +79,11 @@ class Transformer { sourceMap: MappingsMap, ) => Promise<{code: string, map: MappingsMap}>; - constructor(transformModulePath: string, maxWorkerCount: number, reporters: Reporters) { + constructor( + transformModulePath: string, + maxWorkerCount: number, + reporters: Reporters, + ) { invariant(path.isAbsolute(transformModulePath), 'transform module path should be absolute'); this._transformModulePath = transformModulePath; @@ -89,21 +101,31 @@ class Transformer { }); this._workers = farm.methods; - this._transform = denodeify(this._workers.transformAndExtractDependencies); - this.minify = denodeify(this._workers.minify); + this._transform = denodeify((this._workers.transformAndExtractDependencies: TransformAndExtractDependencies)); + this.minify = denodeify((this._workers.minify: Minify)); } kill() { this._workers && workerFarm.end(this._workers); } - transformFile(fileName: string, code: string, options: WorkerOptions) { + transformFile( + fileName: string, + localPath: LocalPath, + code: string, + options: WorkerOptions) { if (!this._transform) { return Promise.reject(new Error('No transform module')); } debug('transforming file', fileName); return this - ._transform(this._transformModulePath, fileName, code, options) + ._transform( + this._transformModulePath, + fileName, + localPath, + code, + options, + ) .then(data => { Logger.log(data.transformFileStartLogEntry); Logger.log(data.transformFileEndLogEntry); diff --git a/packager/src/JSTransformer/worker/__tests__/worker-test.js b/packager/src/JSTransformer/worker/__tests__/worker-test.js index 262deeac80d0..c404aea5d7ed 100644 --- a/packager/src/JSTransformer/worker/__tests__/worker-test.js +++ b/packager/src/JSTransformer/worker/__tests__/worker-test.js @@ -35,11 +35,13 @@ describe('code transformation worker:', () => { it('calls the transform with file name, source code, and transform options', function() { const filename = 'arbitrary/file.js'; + const localPath = `local/${filename}`; const sourceCode = 'arbitrary(code)'; const transformOptions = {arbitrary: 'options'}; - transformCode(transformer, filename, sourceCode, {transform: transformOptions}, () => {}); + transformCode(transformer, filename, localPath, sourceCode, {transform: transformOptions}, () => {}); expect(transformer.transform).toBeCalledWith({ filename, + localPath, options: transformOptions, src: sourceCode, }); @@ -47,10 +49,12 @@ describe('code transformation worker:', () => { it('prefixes JSON files with an assignment to module.exports to make the code valid', function() { const filename = 'arbitrary/file.json'; + const localPath = `local/${filename}`; const sourceCode = '{"arbitrary":"property"}'; - transformCode(transformer, filename, sourceCode, {}, () => {}); + transformCode(transformer, filename, localPath, sourceCode, {}, () => {}); expect(transformer.transform).toBeCalledWith({ filename, + localPath, options: undefined, src: `module.exports=${sourceCode}`, }); @@ -62,7 +66,7 @@ describe('code transformation worker:', () => { map: {}, }; - transformCode(transformer, 'filename', result.code, {}, (error, data) => { + transformCode(transformer, 'filename', 'local/filename', result.code, {}, (error, data) => { expect(error).toBeNull(); expect(data.result).toEqual(objectContaining(result)); done(); @@ -75,7 +79,7 @@ describe('code transformation worker:', () => { done => { const code = '{a:1,b:2}'; const filePath = 'arbitrary/file.json'; - transformCode(transformer, filePath, code, {}, (error, data) => { + transformCode(transformer, filePath, filePath, code, {}, (error, data) => { expect(error).toBeNull(); expect(data.result.code).toEqual(code); done(); @@ -90,7 +94,7 @@ describe('code transformation worker:', () => { code: `${shebang} \n arbitrary(code)`, }; const filePath = 'arbitrary/file.js'; - transformCode(transformer, filePath, result.code, {}, (error, data) => { + transformCode(transformer, filePath, filePath, result.code, {}, (error, data) => { expect(error).toBeNull(); const {code} = data.result; expect(code).not.toContain(shebang); @@ -105,7 +109,7 @@ describe('code transformation worker:', () => { throw new Error(message); }); - transformCode(transformer, 'filename', 'code', {}, error => { + transformCode(transformer, 'filename', 'local/filename', 'code', {}, error => { expect(error.message).toBe(message); done(); }); @@ -115,7 +119,7 @@ describe('code transformation worker:', () => { it('passes the transformed code the `extractDependencies`', done => { const code = 'arbitrary(code)'; - transformCode(transformer, 'filename', code, {}, error => { + transformCode(transformer, 'filename', 'local/filename', code, {}, error => { expect(error).toBeNull(); expect(extractDependencies).toBeCalledWith(code); done(); @@ -132,7 +136,7 @@ describe('code transformation worker:', () => { }; extractDependencies.mockReturnValue(dependencyData); - transformCode(transformer, 'filename', 'code', {}, (error, data) => { + transformCode(transformer, 'filename', 'local/filename', 'code', {}, (error, data) => { expect(error).toBeNull(); expect(data.result).toEqual(objectContaining(dependencyData)); done(); @@ -142,7 +146,7 @@ describe('code transformation worker:', () => { it('does not extract requires of JSON files', done => { const jsonStr = '{"arbitrary":"json"}'; - transformCode(transformer, 'arbitrary.json', jsonStr, {}, (error, data) => { + transformCode(transformer, 'arbitrary.json', 'local/arbitrary.json', jsonStr, {}, (error, data) => { expect(error).toBeNull(); const {dependencies, dependencyOffsets} = data.result; expect(extractDependencies).not.toBeCalled(); @@ -181,7 +185,7 @@ describe('code transformation worker:', () => { it('passes the transform result to `inline` for constant inlining', done => { transformResult = {map: {version: 3}, code: 'arbitrary(code)'}; - transformCode(transformer, filename, 'code', options, () => { + transformCode(transformer, filename, filename, 'code', options, () => { expect(inline).toBeCalledWith(filename, transformResult, options); done(); }); @@ -190,21 +194,21 @@ describe('code transformation worker:', () => { it('passes the result obtained from `inline` on to `constant-folding`', done => { const inlineResult = {map: {version: 3, sources: []}, ast: {}}; inline.mockReturnValue(inlineResult); - transformCode(transformer, filename, 'code', options, () => { + transformCode(transformer, filename, filename, 'code', options, () => { expect(constantFolding).toBeCalledWith(filename, inlineResult); done(); }); }); it('Uses the code obtained from `constant-folding` to extract dependencies', done => { - transformCode(transformer, filename, 'code', options, () => { + transformCode(transformer, filename, filename, 'code', options, () => { expect(extractDependencies).toBeCalledWith(foldedCode); done(); }); }); it('uses the dependencies obtained from the optimized result', done => { - transformCode(transformer, filename, 'code', options, (_, data) => { + transformCode(transformer, filename, filename, 'code', options, (_, data) => { const result = data.result; expect(result.dependencies).toEqual(dependencyData.dependencies); done(); @@ -212,7 +216,7 @@ describe('code transformation worker:', () => { }); it('uses data produced by `constant-folding` for the result', done => { - transformCode(transformer, 'filename', 'code', options, (_, data) => { + transformCode(transformer, 'filename', 'local/filename', 'code', options, (_, data) => { expect(data.result) .toEqual(objectContaining({code: foldedCode, map: foldedMap})); done(); diff --git a/packager/src/JSTransformer/worker/worker.js b/packager/src/JSTransformer/worker/worker.js index 9227e609d858..c7452e06b474 100644 --- a/packager/src/JSTransformer/worker/worker.js +++ b/packager/src/JSTransformer/worker/worker.js @@ -19,8 +19,9 @@ const invariant = require('fbjs/lib/invariant'); const minify = require('./minify'); import type {LogEntry} from '../../Logger/Types'; +import type {MappingsMap} from '../../lib/SourceMap'; import type {LocalPath} from '../../node-haste/lib/toLocalPath'; -import type {Ast, Plugins as BabelPlugins, SourceMap as MappingsMap} from 'babel-core'; +import type {Ast, Plugins as BabelPlugins} from 'babel-core'; export type TransformedCode = { code: string, @@ -32,6 +33,7 @@ export type TransformedCode = { export type Transformer = { transform: ({| filename: string, + localPath: string, options: ExtraOptions & TransformOptions, plugins?: BabelPlugins, src: string, @@ -71,17 +73,18 @@ export type Data = { transformFileEndLogEntry: LogEntry, }; -type Callback = ( +type Callback = ( error: ?Error, - data: ?Data, + data: ?T, ) => mixed; function transformCode( transformer: Transformer<*>, filename: string, + localPath: LocalPath, sourceCode: string, options: Options, - callback: Callback, + callback: Callback, ) { invariant( !options.minify || options.transform.generateSourceMaps, @@ -105,6 +108,7 @@ function transformCode( try { transformed = transformer.transform({ filename, + localPath, options: options.transform, src: sourceCode, }); @@ -158,21 +162,22 @@ function transformCode( exports.transformAndExtractDependencies = ( transform: string, filename: string, + localPath: LocalPath, sourceCode: string, options: Options, - callback: Callback, + callback: Callback, ) => { babelRegisterOnly([transform]); /* $FlowFixMe: impossible to type a dynamic require */ const transformModule: Transformer<*> = require(transform); - transformCode(transformModule, filename, sourceCode, options, callback); + transformCode(transformModule, filename, localPath, sourceCode, options, callback); }; exports.minify = ( filename: string, code: string, sourceMap: MappingsMap, - callback: (error: ?Error, result: mixed) => mixed, + callback: Callback<{code: string, map: MappingsMap}>, ) => { var result; try { diff --git a/packager/src/ModuleGraph/worker/__tests__/transform-module-test.js b/packager/src/ModuleGraph/worker/__tests__/transform-module-test.js index ef45c17389df..7c202be98c7d 100644 --- a/packager/src/ModuleGraph/worker/__tests__/transform-module-test.js +++ b/packager/src/ModuleGraph/worker/__tests__/transform-module-test.js @@ -97,11 +97,13 @@ describe('transforming JS modules:', () => { transformModule(sourceCode, options(variants), () => { expect(transformer.transform).toBeCalledWith({ filename, + localPath: filename, options: {...defaults, ...variants.dev}, src: sourceCode, }); expect(transformer.transform).toBeCalledWith({ filename, + localPath: filename, options: {...defaults, ...variants.prod}, src: sourceCode, }); diff --git a/packager/src/ModuleGraph/worker/transform-module.js b/packager/src/ModuleGraph/worker/transform-module.js index 38e5a60073fe..15b2fceb5e44 100644 --- a/packager/src/ModuleGraph/worker/transform-module.js +++ b/packager/src/ModuleGraph/worker/transform-module.js @@ -72,6 +72,7 @@ function transformModule( Object.keys(variants).forEach(name => { tasks[name] = asyncify(() => transformer.transform({ filename, + localPath: filename, options: {...defaultTransformOptions, ...variants[name]}, src: code, }) From c7317c5e61b3b42965a48d33860384d1b9ddd621 Mon Sep 17 00:00:00 2001 From: Aaron Chiu Date: Thu, 11 May 2017 19:50:00 -0700 Subject: [PATCH 0069/1101] make the CREATE_MODULE marker actually end Reviewed By: fkgozali Differential Revision: D5024378 fbshipit-source-id: 6f25ecd15e25a6d9aabaa52013c2abe24a3f8fb9 --- .../facebook/react/bridge/ModuleHolder.java | 9 ++++-- .../facebook/react/bridge/ReactMarker.java | 28 ++++++++++++++++--- 2 files changed, 31 insertions(+), 6 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/bridge/ModuleHolder.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/ModuleHolder.java index d19cb336a7ee..9bde9cc9e7da 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/bridge/ModuleHolder.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/ModuleHolder.java @@ -5,6 +5,8 @@ import javax.annotation.Nullable; import javax.inject.Provider; +import java.util.concurrent.atomic.AtomicInteger; + import com.facebook.proguard.annotations.DoNotStrip; import com.facebook.react.bridge.NativeModule; import com.facebook.react.bridge.ReactMarker; @@ -30,6 +32,8 @@ @DoNotStrip public class ModuleHolder { + private static final AtomicInteger sInstanceKeyCounter = new AtomicInteger(1); + private final String mName; private final boolean mCanOverrideExistingModule; private final boolean mHasConstants; @@ -96,7 +100,8 @@ public synchronized NativeModule getModule() { private NativeModule create() { SoftAssertions.assertCondition(mModule == null, "Creating an already created module."); - ReactMarker.logMarker(CREATE_MODULE_START, mName); + int instanceKey = sInstanceKeyCounter.getAndIncrement(); + ReactMarker.logMarker(CREATE_MODULE_START, mName, instanceKey); SystraceMessage.beginSection(TRACE_TAG_REACT_JAVA_BRIDGE, "createModule") .arg("name", mName) .flush(); @@ -110,7 +115,7 @@ private NativeModule create() { } } finally { Systrace.endSection(TRACE_TAG_REACT_JAVA_BRIDGE); - ReactMarker.logMarker(CREATE_MODULE_END); + ReactMarker.logMarker(CREATE_MODULE_END, instanceKey); } return module; } diff --git a/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactMarker.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactMarker.java index 8382d9e35a8d..e4293fffd03c 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactMarker.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactMarker.java @@ -14,7 +14,7 @@ public class ReactMarker { public interface MarkerListener { - void logMarker(ReactMarkerConstants name, @Nullable String tag); + void logMarker(ReactMarkerConstants name, @Nullable String tag, int instanceKey); }; private static @Nullable MarkerListener sMarkerListener = null; @@ -35,22 +35,42 @@ public static void logMarker(String name) { logMarker(name, null); } + @DoNotStrip + public static void logMarker(String name, int instanceKey) { + logMarker(name, null, instanceKey); + } + @DoNotStrip public static void logMarker(String name, @Nullable String tag) { + logMarker(name, tag, 0); + } + + @DoNotStrip + public static void logMarker(String name, @Nullable String tag, int instanceKey) { if (sMarkerListener != null) { - sMarkerListener.logMarker(ReactMarkerConstants.valueOf(name), tag); + sMarkerListener.logMarker(ReactMarkerConstants.valueOf(name), tag, instanceKey); } } @DoNotStrip public static void logMarker(ReactMarkerConstants name) { - logMarker(name, null); + logMarker(name, null, 0); + } + + @DoNotStrip + public static void logMarker(ReactMarkerConstants name, int instanceKey) { + logMarker(name, null, instanceKey); } @DoNotStrip public static void logMarker(ReactMarkerConstants name, @Nullable String tag) { + logMarker(name, null, 0); + } + + @DoNotStrip + public static void logMarker(ReactMarkerConstants name, @Nullable String tag, int instanceKey) { if (sMarkerListener != null) { - sMarkerListener.logMarker(name, tag); + sMarkerListener.logMarker(name, tag, instanceKey); } } } From d334cdd5907359d2af0f36efd0e351bba0ec14d3 Mon Sep 17 00:00:00 2001 From: Aaron Chiu Date: Thu, 11 May 2017 20:48:16 -0700 Subject: [PATCH 0070/1101] remove yellow box from systrace Reviewed By: alexeylang Differential Revision: D5024794 fbshipit-source-id: 5551135c16adb6f93d2f5957171f41d63b9a6bf9 --- Libraries/ReactNative/AppContainer.js | 48 +++++++++++++++------------ 1 file changed, 26 insertions(+), 22 deletions(-) diff --git a/Libraries/ReactNative/AppContainer.js b/Libraries/ReactNative/AppContainer.js index 68a88ffe6675..e5d40c47724d 100644 --- a/Libraries/ReactNative/AppContainer.js +++ b/Libraries/ReactNative/AppContainer.js @@ -52,26 +52,28 @@ class AppContainer extends React.Component { componentDidMount(): void { if (__DEV__) { - this._subscription = RCTDeviceEventEmitter.addListener( - 'toggleElementInspector', - () => { - const Inspector = require('Inspector'); - const inspector = this.state.inspector - ? null - : { - this.setState( - (s) => ({mainKey: s.mainKey + 1}), - () => updateInspectedViewTag( - ReactNative.findNodeHandle(this._mainRef) - ) - ); - }} - />; - this.setState({inspector}); - }, - ); + if (global.__RCTProfileIsProfiling) { + this._subscription = RCTDeviceEventEmitter.addListener( + 'toggleElementInspector', + () => { + const Inspector = require('Inspector'); + const inspector = this.state.inspector + ? null + : { + this.setState( + (s) => ({mainKey: s.mainKey + 1}), + () => updateInspectedViewTag( + ReactNative.findNodeHandle(this._mainRef) + ) + ); + }} + />; + this.setState({inspector}); + }, + ); + } } } @@ -84,8 +86,10 @@ class AppContainer extends React.Component { render(): React.Element<*> { let yellowBox = null; if (__DEV__) { - const YellowBox = require('YellowBox'); - yellowBox = ; + if (!global.__RCTProfileIsProfiling) { + const YellowBox = require('YellowBox'); + yellowBox = ; + } } return ( From afbab66a44754feb5fb76e6ebd1e218d69fc5e3b Mon Sep 17 00:00:00 2001 From: Pieter De Baets Date: Fri, 12 May 2017 02:36:06 -0700 Subject: [PATCH 0071/1101] Define rn_xplat_cxx_library for OSS builds Reviewed By: bestander Differential Revision: D5044673 fbshipit-source-id: 41c9fe4b2ae128eed6f299dd8ea9dbfc4ca75917 --- ReactCommon/DEFS | 7 +++++++ ReactCommon/cxxreact/BUCK | 8 ++++---- ReactCommon/jschelpers/BUCK | 4 ++-- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/ReactCommon/DEFS b/ReactCommon/DEFS index a1af94d5f018..4ee6051f87ac 100644 --- a/ReactCommon/DEFS +++ b/ReactCommon/DEFS @@ -1,8 +1,15 @@ # Set up common deps +# Building is not supported in OSS right now +def rn_xplat_cxx_library(**kwargs): + pass + GLOG_DEP = "//ReactAndroid/build/third-party-ndk/glog:glog" INSPECTOR_FLAGS = [] JSC_DEPS = [] JSC_INTERNAL_DEPS = [] + +THIS_IS_FBOBJC = False +THIS_IS_FBANDROID = False diff --git a/ReactCommon/cxxreact/BUCK b/ReactCommon/cxxreact/BUCK index e4991ff4cf6f..a252df565f76 100644 --- a/ReactCommon/cxxreact/BUCK +++ b/ReactCommon/cxxreact/BUCK @@ -9,7 +9,7 @@ if THIS_IS_FBOBJC: inherited_buck_flags = STATIC_LIBRARY_IOS_FLAGS CXX_LIBRARY_COMPILER_FLAGS += inherited_buck_flags.get_flag_value('compiler_flags') -fb_xplat_cxx_library( +rn_xplat_cxx_library( name = "module", compiler_flags = CXX_LIBRARY_COMPILER_FLAGS, exported_headers = [ @@ -29,7 +29,7 @@ fb_xplat_cxx_library( ], ) -fb_xplat_cxx_library( +rn_xplat_cxx_library( name = "jsbigstring", srcs = [ "JSBigString.cpp", @@ -53,7 +53,7 @@ fb_xplat_cxx_library( ], ) -fb_xplat_cxx_library( +rn_xplat_cxx_library( name = "samplemodule", srcs = ["SampleCxxModule.cpp"], compiler_flags = CXX_LIBRARY_COMPILER_FLAGS + [ @@ -93,7 +93,7 @@ CXXREACT_PUBLIC_HEADERS = [ "SystraceSection.h", ] -fb_xplat_cxx_library( +rn_xplat_cxx_library( name = "bridge", srcs = glob( ["*.cpp"], diff --git a/ReactCommon/jschelpers/BUCK b/ReactCommon/jschelpers/BUCK index fb0e0a4a2cad..d613dd574e8b 100644 --- a/ReactCommon/jschelpers/BUCK +++ b/ReactCommon/jschelpers/BUCK @@ -10,7 +10,7 @@ EXPORTED_HEADERS = [ "Value.h", ] -fb_xplat_cxx_library( +rn_xplat_cxx_library( name = "jscinternalhelpers", srcs = glob( ["*.cpp"], @@ -39,7 +39,7 @@ fb_xplat_cxx_library( ], ) -fb_xplat_cxx_library( +rn_xplat_cxx_library( name = "jschelpers", srcs = [], compiler_flags = [ From 562f6c55fae4b5aa02cbc3b883a43e81d3429dc6 Mon Sep 17 00:00:00 2001 From: Jean Regisser Date: Fri, 12 May 2017 02:50:12 -0700 Subject: [PATCH 0072/1101] Ship third-party-podspecs in the npm package Summary: Hi, Today I upgraded from RN 0.44 to 0.45.0-rc.0 and noticed I add to include either `CxxBridge` or `BatchedBridge` in the React subspecs in my Podfile to get my project to compile again (https://github.com/facebook/react-native/issues/13010). Adding `BatchedBridge` works fine. However I wanted to try `CxxBridge` as described in https://github.com/facebook/react-native/commit/5aca739cc25949eebc04a0309c2944f92b5b5391 but couldn't do it since the required `third-party-podspecs` folder with `Folly.podspec`, `GLog.podspec` and `DoubleConversion.podspec` hadn't been included in the npm release. So here is the fix for that. It should be included in the next 0.45.0-rc release. Let me know what you think. Closes https://github.com/facebook/react-native/pull/13922 Differential Revision: D5051477 Pulled By: javache fbshipit-source-id: e5c527f1ee9c84734d3e3a3d85ec3f1e5d648bef --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index fe96ec51e968..b5c54544900a 100644 --- a/package.json +++ b/package.json @@ -107,7 +107,8 @@ "React", "ReactAndroid", "ReactCommon", - "README.md" + "README.md", + "third-party-podspecs" ], "scripts": { "test": "jest", From 81b9e108bb00196e7e98cf1e1a9dc78c5d3d4317 Mon Sep 17 00:00:00 2001 From: Emil Sjolander Date: Fri, 12 May 2017 03:50:32 -0700 Subject: [PATCH 0073/1101] Big refactor moving most logic into DebugComponent Reviewed By: passy Differential Revision: D5027780 fbshipit-source-id: 95a95b3572747aa2088f8f9b35a160257eb59269 --- .../main/java/com/facebook/yoga/YogaValue.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/ReactAndroid/src/main/java/com/facebook/yoga/YogaValue.java b/ReactAndroid/src/main/java/com/facebook/yoga/YogaValue.java index c1741a78984b..5065d1158f7e 100644 --- a/ReactAndroid/src/main/java/com/facebook/yoga/YogaValue.java +++ b/ReactAndroid/src/main/java/com/facebook/yoga/YogaValue.java @@ -44,4 +44,20 @@ public boolean equals(Object other) { public int hashCode() { return Float.floatToIntBits(value) + unit.intValue(); } + + @Override + public String toString() { + switch (unit) { + case UNDEFINED: + return "undefined"; + case POINT: + return Float.toString(value); + case PERCENT: + return value + "%"; + case AUTO: + return "auto"; + default: + throw new IllegalStateException(); + } + } } From 3bf3c83a5b9c59341a2ac5a2b24e8a7dc92a251d Mon Sep 17 00:00:00 2001 From: Jean Lauliac Date: Fri, 12 May 2017 07:31:26 -0700 Subject: [PATCH 0074/1101] packager: add transform-class-properties transform Summary: I found myself a few times wanting that transform, that makes it slightly simpler to have bound method. So I propose we add it. Not a big deal though. Note it also allows static properties with the same syntax, that is handy. Reviewed By: davidaurelio Differential Revision: D5051579 fbshipit-source-id: 7ebf7c709bf52a30a525550c1eda1a6a2f7b8e1e --- package.json | 1 + packager/babelRegisterOnly.js | 1 + .../node-haste/DependencyGraph/ResolutionRequest.js | 12 +++++------- .../src/node-haste/__tests__/DependencyGraph-test.js | 4 ++-- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index b5c54544900a..18bb7d68fc2d 100644 --- a/package.json +++ b/package.json @@ -140,6 +140,7 @@ "babel-plugin-external-helpers": "^6.18.0", "babel-plugin-syntax-trailing-function-commas": "^6.20.0", "babel-plugin-transform-async-to-generator": "6.16.0", + "babel-plugin-transform-class-properties": "^6.18.0", "babel-plugin-transform-flow-strip-types": "^6.21.0", "babel-plugin-transform-object-rest-spread": "^6.20.2", "babel-polyfill": "^6.20.0", diff --git a/packager/babelRegisterOnly.js b/packager/babelRegisterOnly.js index 1f4d3e6f9688..fbb839da42c7 100644 --- a/packager/babelRegisterOnly.js +++ b/packager/babelRegisterOnly.js @@ -25,6 +25,7 @@ function config(onlyList) { 'syntax-trailing-function-commas', 'transform-object-rest-spread', 'transform-async-to-generator', + 'transform-class-properties', ].map(pluginName => require(`babel-plugin-${pluginName}`)), only: _only, retainLines: true, diff --git a/packager/src/node-haste/DependencyGraph/ResolutionRequest.js b/packager/src/node-haste/DependencyGraph/ResolutionRequest.js index 4e71580f3db7..e667cd7c6475 100644 --- a/packager/src/node-haste/DependencyGraph/ResolutionRequest.js +++ b/packager/src/node-haste/DependencyGraph/ResolutionRequest.js @@ -110,15 +110,15 @@ function tryResolveSync(action: () => T, secondaryAction: () => T): T { } class ResolutionRequest { - _doesFileExist: (filePath: string) => boolean; + _doesFileExist = filePath => this._options.hasteFS.exists(filePath); _immediateResolutionCache: {[key: string]: TModule}; _options: Options; - static emptyModule: string; + + static EMPTY_MODULE: string = require.resolve('./assets/empty-module.js'); constructor(options: Options) { this._options = options; this._resetResolutionCache(); - this._doesFileExist = filePath => this._options.hasteFS.exists(filePath); } _tryResolve( @@ -465,7 +465,7 @@ class ResolutionRequest { ); if (realModuleName === false) { return this._loadAsFile( - ResolutionRequest.emptyModule, + ResolutionRequest.EMPTY_MODULE, fromModule, toModuleName, ); @@ -485,7 +485,7 @@ class ResolutionRequest { // exclude if (realModuleName === false) { return this._loadAsFile( - ResolutionRequest.emptyModule, + ResolutionRequest.EMPTY_MODULE, fromModule, toModuleName, ); @@ -814,6 +814,4 @@ function getArrayLowestItem(a: Array): string | void { return lowest; } -ResolutionRequest.emptyModule = require.resolve('./assets/empty-module.js'); - module.exports = ResolutionRequest; diff --git a/packager/src/node-haste/__tests__/DependencyGraph-test.js b/packager/src/node-haste/__tests__/DependencyGraph-test.js index 7b6c536ad2b0..b567bdf0fc4b 100644 --- a/packager/src/node-haste/__tests__/DependencyGraph-test.js +++ b/packager/src/node-haste/__tests__/DependencyGraph-test.js @@ -1819,7 +1819,7 @@ describe('DependencyGraph', function() { }); it('should support browser exclude of a package ("' + fieldName + '")', function() { - ResolutionRequest.emptyModule = '/root/emptyModule.js'; + ResolutionRequest.EMPTY_MODULE = '/root/emptyModule.js'; var root = '/root'; setMockFileSystem({ 'root': { @@ -1885,7 +1885,7 @@ describe('DependencyGraph', function() { }); it('should support browser exclude of a file ("' + fieldName + '")', function() { - ResolutionRequest.emptyModule = '/root/emptyModule.js'; + ResolutionRequest.EMPTY_MODULE = '/root/emptyModule.js'; var root = '/root'; setMockFileSystem({ From afe19d8ac57d56c3ccc5ebc05bfd279c83323ce7 Mon Sep 17 00:00:00 2001 From: Jean Lauliac Date: Fri, 12 May 2017 07:31:26 -0700 Subject: [PATCH 0075/1101] packager: never allow platform-specific asset resolution Summary: I stumbled on this while refactoring that function, and i realised that, I believe it doesn't make sense to take into account the platform extension of the "potiential" file path. The reason is, if you try to require "foo.ios.png", the returned asset name would be "foo", and thus we'd try to find "foo.${ext}.png" where `ext` could actually be `android` or anything else! So it's confusing. There's no reason we should allow callsites to specify platform anyway I think. With this changeset we're not losing any functionality, but it might require people to fix some incorrect callsites. Reviewed By: cpojer Differential Revision: D5051791 fbshipit-source-id: 2a1ec7a8bfa6791b6016213305a72bc0b81f23b9 --- packager/src/ModuleGraph/node-haste/node-haste.js | 1 - packager/src/node-haste/DependencyGraph.js | 1 - .../src/node-haste/DependencyGraph/ResolutionRequest.js | 8 +++----- 3 files changed, 3 insertions(+), 7 deletions(-) diff --git a/packager/src/ModuleGraph/node-haste/node-haste.js b/packager/src/ModuleGraph/node-haste/node-haste.js index ac93bde1c751..38fc879936cc 100644 --- a/packager/src/ModuleGraph/node-haste/node-haste.js +++ b/packager/src/ModuleGraph/node-haste/node-haste.js @@ -119,7 +119,6 @@ exports.createResolveFn = function(options: ResolveOptions): ResolveFn { moduleCache, moduleMap: getFakeModuleMap(hasteMap), platform, - platforms, preferNativePlatform: true, sourceExts, }); diff --git a/packager/src/node-haste/DependencyGraph.js b/packager/src/node-haste/DependencyGraph.js index 89e0521873f4..bade0b2cb83e 100644 --- a/packager/src/node-haste/DependencyGraph.js +++ b/packager/src/node-haste/DependencyGraph.js @@ -233,7 +233,6 @@ class DependencyGraph extends EventEmitter { moduleCache: this._moduleCache, moduleMap: this._moduleMap, platform, - platforms: this._opts.platforms, preferNativePlatform: this._opts.preferNativePlatform, sourceExts: this._opts.sourceExts, }); diff --git a/packager/src/node-haste/DependencyGraph/ResolutionRequest.js b/packager/src/node-haste/DependencyGraph/ResolutionRequest.js index e667cd7c6475..7118f545613f 100644 --- a/packager/src/node-haste/DependencyGraph/ResolutionRequest.js +++ b/packager/src/node-haste/DependencyGraph/ResolutionRequest.js @@ -88,7 +88,6 @@ type Options = {| +moduleCache: ModuleishCache, +moduleMap: ModuleMap, +platform: ?string, - +platforms: Set, +preferNativePlatform: boolean, +sourceExts: Array, |}; @@ -109,6 +108,8 @@ function tryResolveSync(action: () => T, secondaryAction: () => T): T { } } +const EMPTY_SET = new Set(); + class ResolutionRequest { _doesFileExist = filePath => this._options.hasteFS.exists(filePath); _immediateResolutionCache: {[key: string]: TModule}; @@ -613,10 +614,7 @@ class ResolutionRequest { fromModule: TModule, toModule: string, ): TModule { - const {name, type} = getAssetDataFromName( - potentialModulePath, - this._options.platforms, - ); + const {name, type} = getAssetDataFromName(potentialModulePath, EMPTY_SET); let pattern = '^' + name + '(@[\\d\\.]+x)?'; if (this._options.platform != null) { From 6e2c07534e3fb8381c87c567650ce5184c5511f5 Mon Sep 17 00:00:00 2001 From: Pieter De Baets Date: Fri, 12 May 2017 08:18:11 -0700 Subject: [PATCH 0076/1101] Fix Circle CI builds Summary: Closes https://github.com/facebook/react-native/pull/13945 Differential Revision: D5052083 Pulled By: javache fbshipit-source-id: eeda8253d26c2dfd0d20b93b238377fe92e3ca3c --- ReactAndroid/src/main/jni/packagerconnection/BUCK | 7 ++----- ReactAndroid/src/main/jni/xreact/jni/BUCK | 2 +- ReactCommon/DEFS | 1 + 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/ReactAndroid/src/main/jni/packagerconnection/BUCK b/ReactAndroid/src/main/jni/packagerconnection/BUCK index 1572a253f653..2f0debd6fb6e 100644 --- a/ReactAndroid/src/main/jni/packagerconnection/BUCK +++ b/ReactAndroid/src/main/jni/packagerconnection/BUCK @@ -25,11 +25,8 @@ cxx_library( ], xcode_public_headers_symlinks = True, deps = JSC_DEPS + [ - "//native/fb:fb", - "//native/third-party/android-ndk:android", + FBJNI_TARGET, "//xplat/folly:molly", - "//xplat/fbgloginit:fbgloginit", - "//xplat/fbsystrace:fbsystrace", react_native_xplat_target("jschelpers:jschelpers"), - ], + ] if not IS_OSS_BUILD else [], ) diff --git a/ReactAndroid/src/main/jni/xreact/jni/BUCK b/ReactAndroid/src/main/jni/xreact/jni/BUCK index 7be5ded187e8..c2109fa9f80d 100644 --- a/ReactAndroid/src/main/jni/xreact/jni/BUCK +++ b/ReactAndroid/src/main/jni/xreact/jni/BUCK @@ -46,12 +46,12 @@ cxx_library( ], xcode_public_headers_symlinks = True, deps = JSC_DEPS + [ - "//native/fb:fb", "//native/third-party/android-ndk:android", "//xplat/folly:molly", "//xplat/fbgloginit:fbgloginit", "//xplat/fbsystrace:fbsystrace", react_native_xplat_target("cxxreact:bridge"), react_native_xplat_target("cxxreact:module"), + FBJNI_TARGET, ], ) diff --git a/ReactCommon/DEFS b/ReactCommon/DEFS index 4ee6051f87ac..6b3756b7fd4e 100644 --- a/ReactCommon/DEFS +++ b/ReactCommon/DEFS @@ -7,6 +7,7 @@ def rn_xplat_cxx_library(**kwargs): GLOG_DEP = "//ReactAndroid/build/third-party-ndk/glog:glog" INSPECTOR_FLAGS = [] +STATIC_LIBRARY_IOS_FLAGS = [] JSC_DEPS = [] JSC_INTERNAL_DEPS = [] From 7210a060e67d4a6d49b1b4ddc84d4d1a0cb1ae39 Mon Sep 17 00:00:00 2001 From: Dan Abramov Date: Fri, 12 May 2017 08:43:02 -0700 Subject: [PATCH 0077/1101] Enable JSX source plugin in DEV and integrate it with React DevTools Summary: The `env` option has been broken in Babel for a while (https://github.com/babel/babel/issues/4539), and will be deprecated (https://github.com/babel/babel/issues/5276). I am changing this code to the way Babel < 6.10 interpreted the `env` option. This should fix the `__source` JSX transform which was applied in DEV in the past, but stopped getting applied because of the Babel bug. I also changed the `filename` passed by Babel to be relative (currently, to `fbsource` but open to other options). This way DEV builds are still reproducible. This still needs some help from davidaurelio to make the root location more foolproof. I'd also appreciate zertosh taking a look in case there's a better way to "anchor" the relative path. All I need is to for `react-third-party/react-devtools/react-devtools` and `babelTransformer.js` to agree on what the relative path base is. Closes https://github.com/facebook/react-native/pull/13893 Reviewed By: gaearon Differential Revision: D5035892 Pulled By: davidaurelio fbshipit-source-id: 19ffeb867d7ed5928e9de05dcec9ba85bf961dd5 --- babel-preset/configs/main.js | 16 ++++++++++------ babel-preset/package.json | 2 +- package.json | 2 +- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/babel-preset/configs/main.js b/babel-preset/configs/main.js index 2e809e2a579c..7da378c61859 100644 --- a/babel-preset/configs/main.js +++ b/babel-preset/configs/main.js @@ -10,7 +10,7 @@ var resolvePlugins = require('../lib/resolvePlugins'); -module.exports = { +var preset = { comments: false, compact: true, plugins: resolvePlugins([ @@ -40,11 +40,15 @@ module.exports = { ['transform-es2015-for-of', { loose: true }], require('../transforms/transform-symbol-member'), ]), - env: { - development: { - plugins: resolvePlugins(['transform-react-jsx-source']), - }, - }, retainLines: true, sourceMaps: false, }; + +var env = process.env.BABEL_ENV || process.env.NODE_ENV; +if (!env || env === 'development') { + preset.plugins = preset.plugins.concat( + resolvePlugins(['transform-react-jsx-source']) + ); +} + +module.exports = preset; diff --git a/babel-preset/package.json b/babel-preset/package.json index 3a6a1c984cab..7e88fee5d4c5 100644 --- a/babel-preset/package.json +++ b/babel-preset/package.json @@ -1,6 +1,6 @@ { "name": "babel-preset-react-native", - "version": "1.9.0", + "version": "1.9.2", "description": "Babel preset for React Native applications", "main": "index.js", "repository": "https://github.com/facebook/react-native/tree/master/babel-preset", diff --git a/package.json b/package.json index 18bb7d68fc2d..42cd18c0394b 100644 --- a/package.json +++ b/package.json @@ -146,7 +146,7 @@ "babel-polyfill": "^6.20.0", "babel-preset-es2015-node": "^6.1.1", "babel-preset-fbjs": "^2.1.2", - "babel-preset-react-native": "^1.9.1", + "babel-preset-react-native": "^1.9.2", "babel-register": "^6.24.1", "babel-runtime": "^6.23.0", "babel-traverse": "^6.24.1", From 56e44a7fddebbe665b840f28b5657b7c017ed06e Mon Sep 17 00:00:00 2001 From: Dominic Gannaway Date: Fri, 12 May 2017 08:53:55 -0700 Subject: [PATCH 0078/1101] Change packager project root path so RNTester can start Summary: A quick fix to ensure RNTest works. This PR changes the process root for where packager is run, resulting in the right `cwd` directory path when RN launches RNTester. Closes https://github.com/facebook/react-native/pull/13947 Differential Revision: D5052093 Pulled By: davidaurelio fbshipit-source-id: 506a8cd63f1709c948bcc4586467020d380ba85e --- packager/launchPackager.command | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packager/launchPackager.command b/packager/launchPackager.command index 6f894cfda243..cbeefec4a235 100755 --- a/packager/launchPackager.command +++ b/packager/launchPackager.command @@ -12,8 +12,8 @@ echo -en "\033]0;React Packager\a" clear THIS_DIR=$(dirname "$0") -pushd "$THIS_DIR" -source ./packager.sh +pushd "$THIS_DIR/.." +source packager/packager.sh popd echo "Process terminated. Press to close the window" From 54548894d010409d1ff32eaf34395faabd6328b8 Mon Sep 17 00:00:00 2001 From: Emil Sjolander Date: Fri, 12 May 2017 09:03:22 -0700 Subject: [PATCH 0079/1101] Fix flex basis not accounting for max size constraint Reviewed By: gkassabli Differential Revision: D5044314 fbshipit-source-id: d9f9db832e4943a57a89c9d162ff6077b709795a --- .../jni/first-party/yogajni/jni/YGJNI.cpp | 8 +- ReactCommon/yoga/yoga/Yoga.c | 102 ++++++++++-------- 2 files changed, 64 insertions(+), 46 deletions(-) diff --git a/ReactAndroid/src/main/jni/first-party/yogajni/jni/YGJNI.cpp b/ReactAndroid/src/main/jni/first-party/yogajni/jni/YGJNI.cpp index bf2d4c333055..e4dc0bb5d1b0 100644 --- a/ReactAndroid/src/main/jni/first-party/yogajni/jni/YGJNI.cpp +++ b/ReactAndroid/src/main/jni/first-party/yogajni/jni/YGJNI.cpp @@ -153,10 +153,10 @@ struct JYogaLogLevel : public JavaClass { }; static int YGJNILogFunc(const YGConfigRef config, - const YGNodeRef node, - YGLogLevel level, - const char *format, - va_list args) { + const YGNodeRef node, + YGLogLevel level, + const char *format, + va_list args) { char buffer[256]; int result = vsnprintf(buffer, sizeof(buffer), format, args); diff --git a/ReactCommon/yoga/yoga/Yoga.c b/ReactCommon/yoga/yoga/Yoga.c index 3a4faf85b895..dabd4c4e70d6 100644 --- a/ReactCommon/yoga/yoga/Yoga.c +++ b/ReactCommon/yoga/yoga/Yoga.c @@ -387,8 +387,8 @@ void YGNodeFreeRecursive(const YGNodeRef root) { void YGNodeReset(const YGNodeRef node) { YGAssertWithNode(node, - YGNodeGetChildCount(node) == 0, - "Cannot reset a node which still has children attached"); + YGNodeGetChildCount(node) == 0, + "Cannot reset a node which still has children attached"); YGAssertWithNode(node, node->parent == NULL, "Cannot reset a node still attached to a parent"); YGNodeListFree(node->children); @@ -449,9 +449,10 @@ void YGNodeSetMeasureFunc(const YGNodeRef node, YGMeasureFunc measureFunc) { // TODO: t18095186 Move nodeType to opt-in function and mark appropriate places in Litho node->nodeType = YGNodeTypeDefault; } else { - YGAssertWithNode(node, - YGNodeGetChildCount(node) == 0, - "Cannot set measure function: Nodes with measure functions cannot have children."); + YGAssertWithNode( + node, + YGNodeGetChildCount(node) == 0, + "Cannot set measure function: Nodes with measure functions cannot have children."); node->measure = measureFunc; // TODO: t18095186 Move nodeType to opt-in function and mark appropriate places in Litho node->nodeType = YGNodeTypeText; @@ -471,10 +472,12 @@ YGBaselineFunc YGNodeGetBaselineFunc(const YGNodeRef node) { } void YGNodeInsertChild(const YGNodeRef node, const YGNodeRef child, const uint32_t index) { - YGAssertWithNode(node, child->parent == NULL, "Child already has a parent, it must be removed first."); YGAssertWithNode(node, - node->measure == NULL, - "Cannot add child: Nodes with measure functions cannot have children."); + child->parent == NULL, + "Child already has a parent, it must be removed first."); + YGAssertWithNode(node, + node->measure == NULL, + "Cannot add child: Nodes with measure functions cannot have children."); YGNodeListInsert(&node->children, child, index); child->parent = node; @@ -503,9 +506,9 @@ inline uint32_t YGNodeGetChildCount(const YGNodeRef node) { void YGNodeMarkDirty(const YGNodeRef node) { YGAssertWithNode(node, - node->measure != NULL, - "Only leaf nodes with custom measure functions" - "should manually mark themselves as dirty"); + node->measure != NULL, + "Only leaf nodes with custom measure functions" + "should manually mark themselves as dirty"); YGNodeMarkDirtyInternal(node); } @@ -702,27 +705,29 @@ static inline const YGValue *YGNodeResolveFlexBasisPtr(const YGNodeRef node) { return node->layout.instanceName; \ } -#define YG_NODE_LAYOUT_RESOLVED_PROPERTY_IMPL(type, name, instanceName) \ - type YGNodeLayoutGet##name(const YGNodeRef node, const YGEdge edge) { \ - YGAssertWithNode(node, edge < YGEdgeEnd, "Cannot get layout properties of multi-edge shorthands"); \ - \ - if (edge == YGEdgeLeft) { \ - if (node->layout.direction == YGDirectionRTL) { \ - return node->layout.instanceName[YGEdgeEnd]; \ - } else { \ - return node->layout.instanceName[YGEdgeStart]; \ - } \ - } \ - \ - if (edge == YGEdgeRight) { \ - if (node->layout.direction == YGDirectionRTL) { \ - return node->layout.instanceName[YGEdgeStart]; \ - } else { \ - return node->layout.instanceName[YGEdgeEnd]; \ - } \ - } \ - \ - return node->layout.instanceName[edge]; \ +#define YG_NODE_LAYOUT_RESOLVED_PROPERTY_IMPL(type, name, instanceName) \ + type YGNodeLayoutGet##name(const YGNodeRef node, const YGEdge edge) { \ + YGAssertWithNode(node, \ + edge < YGEdgeEnd, \ + "Cannot get layout properties of multi-edge shorthands"); \ + \ + if (edge == YGEdgeLeft) { \ + if (node->layout.direction == YGDirectionRTL) { \ + return node->layout.instanceName[YGEdgeEnd]; \ + } else { \ + return node->layout.instanceName[YGEdgeStart]; \ + } \ + } \ + \ + if (edge == YGEdgeRight) { \ + if (node->layout.direction == YGDirectionRTL) { \ + return node->layout.instanceName[YGEdgeStart]; \ + } else { \ + return node->layout.instanceName[YGEdgeEnd]; \ + } \ + } \ + \ + return node->layout.instanceName[edge]; \ } YG_NODE_PROPERTY_IMPL(void *, Context, context, context); @@ -1143,8 +1148,8 @@ static float YGBaseline(const YGNodeRef node) { node->layout.measuredDimensions[YGDimensionWidth], node->layout.measuredDimensions[YGDimensionHeight]); YGAssertWithNode(node, - !YGFloatIsUndefined(baseline), - "Expect custom baseline function to not return NaN"); + !YGFloatIsUndefined(baseline), + "Expect custom baseline function to not return NaN"); return baseline; } @@ -1949,13 +1954,15 @@ static void YGNodelayoutImpl(const YGNodeRef node, const bool performLayout, const YGConfigRef config) { YGAssertWithNode(node, - YGFloatIsUndefined(availableWidth) ? widthMeasureMode == YGMeasureModeUndefined : true, - "availableWidth is indefinite so widthMeasureMode must be " - "YGMeasureModeUndefined"); + YGFloatIsUndefined(availableWidth) ? widthMeasureMode == YGMeasureModeUndefined + : true, + "availableWidth is indefinite so widthMeasureMode must be " + "YGMeasureModeUndefined"); YGAssertWithNode(node, - YGFloatIsUndefined(availableHeight) ? heightMeasureMode == YGMeasureModeUndefined : true, - "availableHeight is indefinite so heightMeasureMode must be " - "YGMeasureModeUndefined"); + YGFloatIsUndefined(availableHeight) ? heightMeasureMode == YGMeasureModeUndefined + : true, + "availableHeight is indefinite so heightMeasureMode must be " + "YGMeasureModeUndefined"); // Set the resolved resolution in the node's layout. const YGDirection direction = YGNodeResolveDirection(node, parentDirection); @@ -2337,7 +2344,12 @@ static void YGNodelayoutImpl(const YGNodeRef node, float deltaFlexGrowFactors = 0; currentRelativeChild = firstRelativeChild; while (currentRelativeChild != NULL) { - childFlexBasis = currentRelativeChild->layout.computedFlexBasis; + childFlexBasis = + fminf(YGResolveValue(¤tRelativeChild->style.maxDimensions[dim[mainAxis]], + mainAxisParentSize), + fmaxf(YGResolveValue(¤tRelativeChild->style.minDimensions[dim[mainAxis]], + mainAxisParentSize), + currentRelativeChild->layout.computedFlexBasis)); if (remainingFreeSpace < 0) { flexShrinkScaledFactor = -YGNodeResolveFlexShrink(currentRelativeChild) * childFlexBasis; @@ -2375,6 +2387,7 @@ static void YGNodelayoutImpl(const YGNodeRef node, baseMainSize, availableInnerMainDim, availableInnerWidth); + if (baseMainSize != boundMainSize) { // By excluding this item's size and flex factor from remaining, // this item's @@ -2399,7 +2412,12 @@ static void YGNodelayoutImpl(const YGNodeRef node, deltaFreeSpace = 0; currentRelativeChild = firstRelativeChild; while (currentRelativeChild != NULL) { - childFlexBasis = currentRelativeChild->layout.computedFlexBasis; + childFlexBasis = + fminf(YGResolveValue(¤tRelativeChild->style.maxDimensions[dim[mainAxis]], + mainAxisParentSize), + fmaxf(YGResolveValue(¤tRelativeChild->style.minDimensions[dim[mainAxis]], + mainAxisParentSize), + currentRelativeChild->layout.computedFlexBasis)); float updatedMainSize = childFlexBasis; if (remainingFreeSpace < 0) { From 67b96fc0ce7729d185cb6b9dae207a6f319454c4 Mon Sep 17 00:00:00 2001 From: Emil Sjolander Date: Fri, 12 May 2017 09:03:23 -0700 Subject: [PATCH 0080/1101] Include margin when calculating if children overflow Reviewed By: passy Differential Revision: D5044471 fbshipit-source-id: e7c1eb694445ffb898bcf375d9deefc558c49f11 --- ReactCommon/yoga/yoga/Yoga.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/ReactCommon/yoga/yoga/Yoga.c b/ReactCommon/yoga/yoga/Yoga.c index dabd4c4e70d6..5fc7610e8258 100644 --- a/ReactCommon/yoga/yoga/Yoga.c +++ b/ReactCommon/yoga/yoga/Yoga.c @@ -2109,7 +2109,7 @@ static void YGNodelayoutImpl(const YGNodeRef node, } } - float totalFlexBasis = 0; + float totalOuterFlexBasis = 0; // STEP 3: DETERMINE FLEX BASIS FOR EACH ITEM for (uint32_t i = 0; i < childCount; i++) { @@ -2162,11 +2162,14 @@ static void YGNodelayoutImpl(const YGNodeRef node, } } - totalFlexBasis += child->layout.computedFlexBasis; + totalOuterFlexBasis += + child->layout.computedFlexBasis + YGNodeMarginForAxis(child, mainAxis, availableInnerWidth); + ; } - const bool flexBasisOverflows = - measureModeMainDim == YGMeasureModeUndefined ? false : totalFlexBasis > availableInnerMainDim; + const bool flexBasisOverflows = measureModeMainDim == YGMeasureModeUndefined + ? false + : totalOuterFlexBasis > availableInnerMainDim; if (isNodeFlexWrap && flexBasisOverflows && measureModeMainDim == YGMeasureModeAtMost) { measureModeMainDim = YGMeasureModeExactly; } From 0a4ce80868ae2cc007540dc28455144f49fc40b6 Mon Sep 17 00:00:00 2001 From: Emil Sjolander Date: Fri, 12 May 2017 09:03:24 -0700 Subject: [PATCH 0081/1101] Fix typo causing wrapped children to be sized by wrong axis margin Reviewed By: passy Differential Revision: D5044470 fbshipit-source-id: 7d203dd48b258a5fe5c4b3c493099092a1d334db --- ReactCommon/yoga/yoga/Yoga.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ReactCommon/yoga/yoga/Yoga.c b/ReactCommon/yoga/yoga/Yoga.c index 5fc7610e8258..a7dd3f782269 100644 --- a/ReactCommon/yoga/yoga/Yoga.c +++ b/ReactCommon/yoga/yoga/Yoga.c @@ -2937,7 +2937,7 @@ static void YGNodelayoutImpl(const YGNodeRef node, if (!YGNodeIsStyleDimDefined(child, crossAxis, availableInnerCrossDim)) { const float childWidth = isMainAxisRow ? (child->layout.measuredDimensions[YGDimensionWidth] + - YGNodeMarginForAxis(child, crossAxis, availableInnerWidth)) + YGNodeMarginForAxis(child, mainAxis, availableInnerWidth)) : lineHeight; const float childHeight = From e1306565dba59f63753aac2264bb9df262bb0b58 Mon Sep 17 00:00:00 2001 From: David Aurelio Date: Fri, 12 May 2017 09:42:09 -0700 Subject: [PATCH 0082/1101] Use `this` rather than `global` in prelude Summary: in new-style builds, the prelude is not wrapped into an IIFE, so `global` is not available. Since the bundle as a whole is not running in strict mode, we can access the global object with `this`. Reviewed By: jeanlauliac Differential Revision: D5051731 fbshipit-source-id: 4003b5e57ba8626e38e68e92d5778c2c59ca69a5 --- packager/src/ModuleGraph/ModuleGraph.js | 2 +- packager/src/ModuleGraph/__tests__/ModuleGraph-test.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packager/src/ModuleGraph/ModuleGraph.js b/packager/src/ModuleGraph/ModuleGraph.js index cce7ff8a8005..ac660b5e7c11 100644 --- a/packager/src/ModuleGraph/ModuleGraph.js +++ b/packager/src/ModuleGraph/ModuleGraph.js @@ -97,6 +97,6 @@ function* concat(...iterables: Array>): Iterable { function prelude(optimize) { return virtualModule( `var __DEV__=${String(!optimize)},` + - '__BUNDLE_START_TIME__=global.nativePerformanceNow?global.nativePerformanceNow():Date.now();' + '__BUNDLE_START_TIME__=this.nativePerformanceNow?nativePerformanceNow():Date.now();' ); } diff --git a/packager/src/ModuleGraph/__tests__/ModuleGraph-test.js b/packager/src/ModuleGraph/__tests__/ModuleGraph-test.js index d9a9108a3120..bc91a412eb0b 100644 --- a/packager/src/ModuleGraph/__tests__/ModuleGraph-test.js +++ b/packager/src/ModuleGraph/__tests__/ModuleGraph-test.js @@ -29,7 +29,7 @@ describe('build setup', () => { dependencies: [], file: { code: 'var __DEV__=true,__BUNDLE_START_TIME__=' + - 'global.nativePerformanceNow?global.nativePerformanceNow():Date.now();', + 'this.nativePerformanceNow?nativePerformanceNow():Date.now();', path: '', type: 'script', }, @@ -43,7 +43,7 @@ describe('build setup', () => { const [prelude] = result.modules; expect(prelude.file.code) .toEqual('var __DEV__=false,__BUNDLE_START_TIME__=' + - 'global.nativePerformanceNow?global.nativePerformanceNow():Date.now();'); + 'this.nativePerformanceNow?nativePerformanceNow():Date.now();'); done(); }); }); From 2b5b729bbbee8fa84264c1ee229ce85777c3f3f6 Mon Sep 17 00:00:00 2001 From: Jean Lauliac Date: Fri, 12 May 2017 10:26:46 -0700 Subject: [PATCH 0083/1101] packager: remove getPlatformExtension default platforms Summary: Default arguments are dangerous, and it shows here again. `Server` was calling that function without passing down the platforms, meaning custom platform would not be accounted for, possibly causing all kinds of bugs for OSS use cases. Additional, the typing of `platform` across the stack was wrong: it can be `null`, in which case we resolve the files without extension. The reason Flow didn't detect that issue before is because we use `Object.assign` to re-export the function from `DependencyGraph`, but Flow is not smart enough to propagate the types in that particular case. I'll remove all the other re-export, as it may uncover further type errors. Reviewed By: davidaurelio Differential Revision: D5052070 fbshipit-source-id: 7b427ec036ca74b5dcd7c88f7dfa0df541b8eb6b --- packager/src/Bundler/index.js | 8 +++--- packager/src/JSTransformer/worker/inline.js | 2 +- packager/src/JSTransformer/worker/worker.js | 6 ++--- packager/src/Resolver/index.js | 2 +- packager/src/Server/__tests__/Server-test.js | 6 ++--- packager/src/Server/index.js | 10 ++++--- packager/src/lib/GlobalTransformCache.js | 3 +-- packager/src/node-haste/DependencyGraph.js | 2 -- .../__tests__/getAssetDataFromName-test.js | 26 ++++++++++--------- .../__tests__/getPlatformExtension-test.js | 21 +++++++-------- .../node-haste/lib/getPlatformExtension.js | 16 ++++-------- 11 files changed, 48 insertions(+), 54 deletions(-) diff --git a/packager/src/Bundler/index.js b/packager/src/Bundler/index.js index 43142909c66c..58531819b4de 100644 --- a/packager/src/Bundler/index.js +++ b/packager/src/Bundler/index.js @@ -62,7 +62,7 @@ export type ExtraTransformOptions = { export type GetTransformOptionsOpts = {| dev: boolean, hot: boolean, - platform: string, + platform: ?string, |}; export type GetTransformOptions = ( @@ -521,7 +521,7 @@ class Bundler { generateSourceMaps = false, }: { entryFile: string, - platform: string, + platform: ?string, dev?: boolean, minify?: boolean, hot?: boolean, @@ -560,7 +560,7 @@ class Bundler { onProgress, }: { entryFile: string, - platform: string, + platform: ?string, dev?: boolean, minify?: boolean, hot?: boolean, @@ -784,7 +784,7 @@ class Bundler { generateSourceMaps: boolean, hot: boolean, minify: boolean, - platform: string, + platform: ?string, projectRoots: Array, |}, ): Promise { diff --git a/packager/src/JSTransformer/worker/inline.js b/packager/src/JSTransformer/worker/inline.js index 6094a7cb6291..041c903ff620 100644 --- a/packager/src/JSTransformer/worker/inline.js +++ b/packager/src/JSTransformer/worker/inline.js @@ -170,7 +170,7 @@ type AstResult = { function inline( filename: string, transformResult: {ast?: ?Ast, code: string, map: ?MappingsMap}, - options: {+dev: boolean, +platform: string}, + options: {+dev: boolean, +platform: ?string}, ): AstResult { const code = transformResult.code; const babelOptions = { diff --git a/packager/src/JSTransformer/worker/worker.js b/packager/src/JSTransformer/worker/worker.js index c7452e06b474..65e3b8922a9b 100644 --- a/packager/src/JSTransformer/worker/worker.js +++ b/packager/src/JSTransformer/worker/worker.js @@ -47,7 +47,7 @@ export type TransformOptionsStrict = {| +generateSourceMaps: boolean, +hot: boolean, +inlineRequires: {+blacklist: {[string]: true}} | boolean, - +platform: string, + +platform: ?string, +projectRoot: string, |}; @@ -56,14 +56,14 @@ export type TransformOptions = { +generateSourceMaps?: boolean, +hot?: boolean, +inlineRequires?: {+blacklist: {[string]: true}} | boolean, - +platform: string, + +platform: ?string, +projectRoot: string, }; export type Options = {| +dev: boolean, +minify: boolean, - +platform: string, + +platform: ?string, +transform: TransformOptionsStrict, |}; diff --git a/packager/src/Resolver/index.js b/packager/src/Resolver/index.js index 77c8f0b8b0b9..476ef3ae5e3b 100644 --- a/packager/src/Resolver/index.js +++ b/packager/src/Resolver/index.js @@ -98,7 +98,7 @@ class Resolver { getDependencies( entryPath: string, - options: {platform: string, recursive?: boolean}, + options: {platform: ?string, recursive?: boolean}, bundlingOptions: T, onProgress?: ?(finishedModules: number, totalModules: number) => mixed, getModuleId: mixed, diff --git a/packager/src/Server/__tests__/Server-test.js b/packager/src/Server/__tests__/Server-test.js index 2dfa6d3d1f86..01e8ec46e64a 100644 --- a/packager/src/Server/__tests__/Server-test.js +++ b/packager/src/Server/__tests__/Server-test.js @@ -155,7 +155,7 @@ describe('processRequest', () => { isolateModuleIDs: false, minify: false, onProgress: jasmine.any(Function), - platform: undefined, + platform: null, resolutionResponse: null, runBeforeMainModule: ['InitializeCore'], runModule: true, @@ -209,7 +209,7 @@ describe('processRequest', () => { isolateModuleIDs: false, minify: false, onProgress: jasmine.any(Function), - platform: undefined, + platform: null, resolutionResponse: null, runBeforeMainModule: ['InitializeCore'], runModule: true, @@ -457,7 +457,7 @@ describe('processRequest', () => { isolateModuleIDs: false, minify: false, onProgress: null, - platform: undefined, + platform: null, resolutionResponse: null, runBeforeMainModule: ['InitializeCore'], runModule: false, diff --git a/packager/src/Server/index.js b/packager/src/Server/index.js index 0e0f53717f44..8bd3f8917388 100644 --- a/packager/src/Server/index.js +++ b/packager/src/Server/index.js @@ -12,11 +12,11 @@ 'use strict'; const AssetServer = require('../AssetServer'); -const getPlatformExtension = require('../node-haste/DependencyGraph').getPlatformExtension; const Bundler = require('../Bundler'); const MultipartResponse = require('./MultipartResponse'); const defaults = require('../../defaults'); +const getPlatformExtension = require('../node-haste/lib/getPlatformExtension'); const mime = require('mime-types'); const path = require('path'); const symbolicate = require('./symbolicate'); @@ -148,6 +148,7 @@ class Server { _hmrFileChangeListener: ?(type: string, filePath: string) => mixed; _reporter: Reporter; _symbolicateInWorker: Symbolicate; + _platforms: Set; constructor(options: Options) { this._opts = { @@ -181,6 +182,7 @@ class Server { this._bundles = Object.create(null); this._changeWatchers = []; this._fileChangeListeners = []; + this._platforms = new Set(this._opts.platforms); this._assetServer = new AssetServer({ assetExts: this._opts.assetExts, @@ -281,7 +283,7 @@ class Server { getShallowDependencies(options: DependencyOptions): Promise> { return Promise.resolve().then(() => { const platform = options.platform != null - ? options.platform : getPlatformExtension(options.entryFile); + ? options.platform : getPlatformExtension(options.entryFile, this._platforms); const {entryFile, dev, minify, hot} = options; return this._bundler.getShallowDependencies( {entryFile, platform, dev, minify, hot, generateSourceMaps: false}, @@ -296,7 +298,7 @@ class Server { getDependencies(options: DependencyOptions): Promise> { return Promise.resolve().then(() => { const platform = options.platform != null - ? options.platform : getPlatformExtension(options.entryFile); + ? options.platform : getPlatformExtension(options.entryFile, this._platforms); const {entryFile, dev, minify, hot} = options; return this._bundler.getDependencies( {entryFile, platform, dev, minify, hot, generateSourceMaps: false}, @@ -832,7 +834,7 @@ class Server { // try to get the platform from the url /* $FlowFixMe: `query` could be empty for an invalid URL */ const platform = urlObj.query.platform || - getPlatformExtension(pathname); + getPlatformExtension(pathname, this._platforms); /* $FlowFixMe: `query` could be empty for an invalid URL */ const assetPlugin = urlObj.query.assetPlugin; diff --git a/packager/src/lib/GlobalTransformCache.js b/packager/src/lib/GlobalTransformCache.js index deb27aef92b3..1d2fe2c981ab 100644 --- a/packager/src/lib/GlobalTransformCache.js +++ b/packager/src/lib/GlobalTransformCache.js @@ -18,7 +18,6 @@ const FetchError = require('node-fetch/lib/fetch-error'); const crypto = require('crypto'); const fetch = require('node-fetch'); -const invariant = require('fbjs/lib/invariant'); const jsonStableStringify = require('json-stable-stringify'); const path = require('path'); const throat = require('throat'); @@ -134,7 +133,7 @@ class KeyResultStore { } -export type TransformProfile = {+dev: boolean, +minify: boolean, +platform: string}; +export type TransformProfile = {+dev: boolean, +minify: boolean, +platform: ?string}; function profileKey({dev, minify, platform}: TransformProfile): string { return jsonStableStringify({dev, minify, platform}); diff --git a/packager/src/node-haste/DependencyGraph.js b/packager/src/node-haste/DependencyGraph.js index bade0b2cb83e..c0e547f1038a 100644 --- a/packager/src/node-haste/DependencyGraph.js +++ b/packager/src/node-haste/DependencyGraph.js @@ -291,7 +291,6 @@ class DependencyGraph extends EventEmitter { static Module; static Polyfill; static getAssetDataFromName; - static getPlatformExtension; static replacePatterns; static getInverseDependencies; @@ -301,7 +300,6 @@ Object.assign(DependencyGraph, { Module, Polyfill, getAssetDataFromName, - getPlatformExtension, replacePatterns, getInverseDependencies, }); diff --git a/packager/src/node-haste/lib/__tests__/getAssetDataFromName-test.js b/packager/src/node-haste/lib/__tests__/getAssetDataFromName-test.js index a1e6b8cc6081..546facb710f1 100644 --- a/packager/src/node-haste/lib/__tests__/getAssetDataFromName-test.js +++ b/packager/src/node-haste/lib/__tests__/getAssetDataFromName-test.js @@ -13,9 +13,11 @@ jest.dontMock('../getPlatformExtension') var getAssetDataFromName = require('../getAssetDataFromName'); +const TEST_PLATFORMS = new Set(['ios', 'android']); + describe('getAssetDataFromName', () => { it('should get data from name', () => { - expect(getAssetDataFromName('a/b/c.png')).toEqual({ + expect(getAssetDataFromName('a/b/c.png', TEST_PLATFORMS)).toEqual({ resolution: 1, assetName: 'a/b/c.png', type: 'png', @@ -23,7 +25,7 @@ describe('getAssetDataFromName', () => { platform: null, }); - expect(getAssetDataFromName('a/b/c@1x.png')).toEqual({ + expect(getAssetDataFromName('a/b/c@1x.png', TEST_PLATFORMS)).toEqual({ resolution: 1, assetName: 'a/b/c.png', type: 'png', @@ -31,7 +33,7 @@ describe('getAssetDataFromName', () => { platform: null, }); - expect(getAssetDataFromName('a/b/c@2.5x.png')).toEqual({ + expect(getAssetDataFromName('a/b/c@2.5x.png', TEST_PLATFORMS)).toEqual({ resolution: 2.5, assetName: 'a/b/c.png', type: 'png', @@ -39,7 +41,7 @@ describe('getAssetDataFromName', () => { platform: null, }); - expect(getAssetDataFromName('a/b/c.ios.png')).toEqual({ + expect(getAssetDataFromName('a/b/c.ios.png', TEST_PLATFORMS)).toEqual({ resolution: 1, assetName: 'a/b/c.png', type: 'png', @@ -47,7 +49,7 @@ describe('getAssetDataFromName', () => { platform: 'ios', }); - expect(getAssetDataFromName('a/b/c@1x.ios.png')).toEqual({ + expect(getAssetDataFromName('a/b/c@1x.ios.png', TEST_PLATFORMS)).toEqual({ resolution: 1, assetName: 'a/b/c.png', type: 'png', @@ -55,7 +57,7 @@ describe('getAssetDataFromName', () => { platform: 'ios', }); - expect(getAssetDataFromName('a/b/c@2.5x.ios.png')).toEqual({ + expect(getAssetDataFromName('a/b/c@2.5x.ios.png', TEST_PLATFORMS)).toEqual({ resolution: 2.5, assetName: 'a/b/c.png', type: 'png', @@ -63,7 +65,7 @@ describe('getAssetDataFromName', () => { platform: 'ios', }); - expect(getAssetDataFromName('a/b /c.png')).toEqual({ + expect(getAssetDataFromName('a/b /c.png', TEST_PLATFORMS)).toEqual({ resolution: 1, assetName: 'a/b /c.png', type: 'png', @@ -74,7 +76,7 @@ describe('getAssetDataFromName', () => { describe('resolution extraction', () => { it('should extract resolution simple case', () => { - var data = getAssetDataFromName('test@2x.png'); + var data = getAssetDataFromName('test@2x.png', TEST_PLATFORMS); expect(data).toEqual({ assetName: 'test.png', resolution: 2, @@ -85,7 +87,7 @@ describe('getAssetDataFromName', () => { }); it('should default resolution to 1', () => { - var data = getAssetDataFromName('test.png'); + var data = getAssetDataFromName('test.png', TEST_PLATFORMS); expect(data).toEqual({ assetName: 'test.png', resolution: 1, @@ -96,7 +98,7 @@ describe('getAssetDataFromName', () => { }); it('should support float', () => { - var data = getAssetDataFromName('test@1.1x.png'); + var data = getAssetDataFromName('test@1.1x.png', TEST_PLATFORMS); expect(data).toEqual({ assetName: 'test.png', resolution: 1.1, @@ -105,7 +107,7 @@ describe('getAssetDataFromName', () => { platform: null, }); - data = getAssetDataFromName('test@.1x.png'); + data = getAssetDataFromName('test@.1x.png', TEST_PLATFORMS); expect(data).toEqual({ assetName: 'test.png', resolution: 0.1, @@ -114,7 +116,7 @@ describe('getAssetDataFromName', () => { platform: null, }); - data = getAssetDataFromName('test@0.2x.png'); + data = getAssetDataFromName('test@0.2x.png', TEST_PLATFORMS); expect(data).toEqual({ assetName: 'test.png', resolution: 0.2, diff --git a/packager/src/node-haste/lib/__tests__/getPlatformExtension-test.js b/packager/src/node-haste/lib/__tests__/getPlatformExtension-test.js index ac6012368304..5385e9b31408 100644 --- a/packager/src/node-haste/lib/__tests__/getPlatformExtension-test.js +++ b/packager/src/node-haste/lib/__tests__/getPlatformExtension-test.js @@ -12,21 +12,20 @@ jest.dontMock('../getPlatformExtension'); var getPlatformExtension = require('../getPlatformExtension'); +const TEST_PLATFORMS = new Set(['ios', 'android']); + describe('getPlatformExtension', function() { it('should get platform ext', function() { - expect(getPlatformExtension('a.ios.js')).toBe('ios'); - expect(getPlatformExtension('a.android.js')).toBe('android'); - expect(getPlatformExtension('/b/c/a.ios.js')).toBe('ios'); - expect(getPlatformExtension('/b/c.android/a.ios.js')).toBe('ios'); - expect(getPlatformExtension('/b/c/a@1.5x.ios.png')).toBe('ios'); - expect(getPlatformExtension('/b/c/a@1.5x.lol.png')).toBe(null); - expect(getPlatformExtension('/b/c/a.lol.png')).toBe(null); - }); - - it('should optionally accept supported platforms', function() { + const get = name => getPlatformExtension(name, TEST_PLATFORMS); + expect(get('a.ios.js')).toBe('ios'); + expect(get('a.android.js')).toBe('android'); + expect(get('/b/c/a.ios.js')).toBe('ios'); + expect(get('/b/c.android/a.ios.js')).toBe('ios'); + expect(get('/b/c/a@1.5x.ios.png')).toBe('ios'); + expect(get('/b/c/a@1.5x.lol.png')).toBe(null); + expect(get('/b/c/a.lol.png')).toBe(null); expect(getPlatformExtension('a.ios.js', new Set(['ios']))).toBe('ios'); expect(getPlatformExtension('a.android.js', new Set(['android']))).toBe('android'); - expect(getPlatformExtension('/b/c/a.ios.js', new Set(['ios', 'android']))).toBe('ios'); expect(getPlatformExtension('a.ios.js', new Set(['ubuntu']))).toBe(null); expect(getPlatformExtension('a.ubuntu.js', new Set(['ubuntu']))).toBe('ubuntu'); }); diff --git a/packager/src/node-haste/lib/getPlatformExtension.js b/packager/src/node-haste/lib/getPlatformExtension.js index bc3bf7f8169e..85564a7f6f93 100644 --- a/packager/src/node-haste/lib/getPlatformExtension.js +++ b/packager/src/node-haste/lib/getPlatformExtension.js @@ -7,21 +7,15 @@ * of patent rights can be found in the PATENTS file in the same directory. * * @flow + * @format */ 'use strict'; -const SUPPORTED_PLATFORM_EXTS = new Set([ - 'android', - 'ios', - 'web', -]); - -// Extract platform extension: index.ios.js -> ios -function getPlatformExtension( - file: string, - platforms: Set = SUPPORTED_PLATFORM_EXTS, -): ?string { +/** + * Extract platform extension: `index.ios.js` -> `ios`. + */ +function getPlatformExtension(file: string, platforms: Set): ?string { const last = file.lastIndexOf('.'); const secondToLast = file.lastIndexOf('.', last - 1); if (secondToLast === -1) { From d0c2b068d778359b885e8d37f212275511f9c425 Mon Sep 17 00:00:00 2001 From: Jean Lauliac Date: Fri, 12 May 2017 10:26:46 -0700 Subject: [PATCH 0084/1101] packager: DependencyGraph: remove re-exported functions Reviewed By: davidaurelio, cpojer Differential Revision: D5052149 fbshipit-source-id: 43f3877ceea038762ded6c42ab0481d215db2118 --- local-cli/server/util/attachHMRServer.js | 3 +-- packager/src/AssetServer/index.js | 17 +++++++++++++---- packager/src/node-haste/DependencyGraph.js | 18 ------------------ 3 files changed, 14 insertions(+), 24 deletions(-) diff --git a/local-cli/server/util/attachHMRServer.js b/local-cli/server/util/attachHMRServer.js index bed4c1d847cc..ff35f423115d 100644 --- a/local-cli/server/util/attachHMRServer.js +++ b/local-cli/server/util/attachHMRServer.js @@ -11,11 +11,10 @@ 'use strict'; +const getInverseDependencies = require('../../../packager/src//node-haste/lib/getInverseDependencies'); const querystring = require('querystring'); const url = require('url'); -const {getInverseDependencies} = require('../../../packager/src//node-haste/DependencyGraph'); - import type HMRBundle from '../../../packager/src/Bundler/HMRBundle'; import type Server from '../../../packager/src/Server'; import type ResolutionResponse diff --git a/packager/src/AssetServer/index.js b/packager/src/AssetServer/index.js index e2ffd01cad0e..79fe9ca823f1 100644 --- a/packager/src/AssetServer/index.js +++ b/packager/src/AssetServer/index.js @@ -14,7 +14,7 @@ const crypto = require('crypto'); const denodeify = require('denodeify'); const fs = require('fs'); -const getAssetDataFromName = require('../node-haste/DependencyGraph').getAssetDataFromName; +const getAssetDataFromName = require('../node-haste/lib/getAssetDataFromName'); const path = require('path'); import type {AssetData} from '../node-haste/lib/getAssetDataFromName'; @@ -55,7 +55,10 @@ class AssetServer { } get(assetPath: string, platform: ?string = null): Promise { - const assetData = getAssetDataFromName(assetPath, new Set([platform])); + const assetData = getAssetDataFromName( + assetPath, + new Set(platform != null ? [platform] : []), + ); return this._getAssetRecord(assetPath, platform).then(record => { for (let i = 0; i < record.scales.length; i++) { if (record.scales[i] >= assetData.resolution) { @@ -74,7 +77,10 @@ class AssetServer { scales: Array, type: string, |}> { - const nameData = getAssetDataFromName(assetPath, new Set([platform])); + const nameData = getAssetDataFromName( + assetPath, + new Set(platform != null ? [platform] : []), + ); const {name, type} = nameData; return this._getAssetRecord(assetPath, platform).then(record => { @@ -135,7 +141,10 @@ class AssetServer { .then(res => { const dir = res[0]; const files = res[1]; - const assetData = getAssetDataFromName(filename, new Set([platform])); + const assetData = getAssetDataFromName( + filename, + new Set(platform != null ? [platform] : []), + ); const map = this._buildAssetMap(dir, files, platform); diff --git a/packager/src/node-haste/DependencyGraph.js b/packager/src/node-haste/DependencyGraph.js index c0e547f1038a..369e81b20baa 100644 --- a/packager/src/node-haste/DependencyGraph.js +++ b/packager/src/node-haste/DependencyGraph.js @@ -16,18 +16,14 @@ const FilesByDirNameIndex = require('./FilesByDirNameIndex'); const JestHasteMap = require('jest-haste-map'); const Module = require('./Module'); const ModuleCache = require('./ModuleCache'); -const Polyfill = require('./Polyfill'); const ResolutionRequest = require('./DependencyGraph/ResolutionRequest'); const ResolutionResponse = require('./DependencyGraph/ResolutionResponse'); const fs = require('fs'); -const getAssetDataFromName = require('./lib/getAssetDataFromName'); -const getInverseDependencies = require('./lib/getInverseDependencies'); const getPlatformExtension = require('./lib/getPlatformExtension'); const invariant = require('fbjs/lib/invariant'); const isAbsolutePath = require('absolute-path'); const path = require('path'); -const replacePatterns = require('./lib/replacePatterns'); const util = require('util'); const { @@ -288,22 +284,8 @@ class DependencyGraph extends EventEmitter { return this._moduleCache.createPolyfill(options); } - static Module; - static Polyfill; - static getAssetDataFromName; - static replacePatterns; - static getInverseDependencies; - } -Object.assign(DependencyGraph, { - Module, - Polyfill, - getAssetDataFromName, - replacePatterns, - getInverseDependencies, -}); - function NotFoundError() { /* $FlowFixMe: monkey-patching */ Error.call(this); From 174f84cc8a118b7bb8c20be78a80475eba87c4d4 Mon Sep 17 00:00:00 2001 From: Jean Lauliac Date: Fri, 12 May 2017 10:26:48 -0700 Subject: [PATCH 0085/1101] packager: getInverseDependencies: @flow Reviewed By: davidaurelio Differential Revision: D5052190 fbshipit-source-id: ebfa2a698233e914b016fe50f790ee8aa758c4f2 --- .../node-haste/lib/getInverseDependencies.js | 24 ++++++++++++++----- 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/packager/src/node-haste/lib/getInverseDependencies.js b/packager/src/node-haste/lib/getInverseDependencies.js index d2aa7517b7aa..6ff90334f87f 100644 --- a/packager/src/node-haste/lib/getInverseDependencies.js +++ b/packager/src/node-haste/lib/getInverseDependencies.js @@ -5,17 +5,27 @@ * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. + * + * @flow + * @format */ + 'use strict'; -function resolveModuleRequires(resolutionResponse, module) { +import type ResolutionResponse from '../DependencyGraph/ResolutionResponse'; + +function resolveModuleRequires( + resolutionResponse: ResolutionResponse, + module: TModule, +) { const pairs = resolutionResponse.getResolvedDependencyPairs(module); - return pairs - ? pairs.map(([, dependencyModule]) => dependencyModule) - : []; + return pairs ? pairs.map(([, dependencyModule]) => dependencyModule) : []; } -function getModuleDependents(cache, module) { +function getModuleDependents( + cache: Map>, + module: TModule, +): Set { let dependents = cache.get(module); if (!dependents) { dependents = new Set(); @@ -27,7 +37,9 @@ function getModuleDependents(cache, module) { /** * Returns an object that indicates in which module each module is required. */ -function getInverseDependencies(resolutionResponse) { +function getInverseDependencies( + resolutionResponse: ResolutionResponse, +): Map> { const cache = new Map(); resolutionResponse.dependencies.forEach(module => { From ffe18867f2a9483238d9c4aa17fd192d1dbd70c9 Mon Sep 17 00:00:00 2001 From: Jean Lauliac Date: Fri, 12 May 2017 10:26:49 -0700 Subject: [PATCH 0086/1101] packager: remove replacePatterns module Summary: This does not appear to be used anywhere anymore. Reviewed By: cpojer Differential Revision: D5052224 fbshipit-source-id: 142fdcdf48f4ad16a04bb747b41d623f214f7a68 --- packager/src/Resolver/__tests__/Resolver-test.js | 1 - packager/src/node-haste/__tests__/Module-test.js | 1 - packager/src/node-haste/lib/replacePatterns.js | 14 -------------- 3 files changed, 16 deletions(-) delete mode 100644 packager/src/node-haste/lib/replacePatterns.js diff --git a/packager/src/Resolver/__tests__/Resolver-test.js b/packager/src/Resolver/__tests__/Resolver-test.js index 67ec8ab81160..ae4330c69c04 100644 --- a/packager/src/Resolver/__tests__/Resolver-test.js +++ b/packager/src/Resolver/__tests__/Resolver-test.js @@ -42,7 +42,6 @@ describe('Resolver', function() { DependencyGraph.load = jest.fn().mockImplementation( opts => Promise.resolve(new DependencyGraph(opts)), ); - DependencyGraph.replacePatterns = require.requireActual('../../node-haste/lib/replacePatterns'); DependencyGraph.prototype.createPolyfill = jest.fn(); DependencyGraph.prototype.getDependencies = jest.fn(); diff --git a/packager/src/node-haste/__tests__/Module-test.js b/packager/src/node-haste/__tests__/Module-test.js index 2e6debb8a844..111e86d3ec4a 100644 --- a/packager/src/node-haste/__tests__/Module-test.js +++ b/packager/src/node-haste/__tests__/Module-test.js @@ -12,7 +12,6 @@ jest .dontMock('absolute-path') .dontMock('json-stable-stringify') .dontMock('crypto') - .dontMock('../lib/replacePatterns') .dontMock('../DependencyGraph/docblock') .dontMock('../Module'); diff --git a/packager/src/node-haste/lib/replacePatterns.js b/packager/src/node-haste/lib/replacePatterns.js deleted file mode 100644 index 54f34b4d4836..000000000000 --- a/packager/src/node-haste/lib/replacePatterns.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Copyright (c) 2015-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - */ - -'use strict'; - -exports.IMPORT_RE = /(\bimport\s+(?:[^'"]+\s+from\s+)??)(['"])([^'"]+)(\2)/g; -exports.EXPORT_RE = /(\bexport\s+(?:[^'"]+\s+from\s+)??)(['"])([^'"]+)(\2)/g; -exports.REQUIRE_RE = /(\brequire\s*?\(\s*?)(['"`])([^'"`]+)(\2\s*?\))/g; From 4ae8e5e21a6cf3173d0dfa9001b2c9f702f33d19 Mon Sep 17 00:00:00 2001 From: Jean Lauliac Date: Fri, 12 May 2017 10:26:50 -0700 Subject: [PATCH 0087/1101] packager: HasteMap: @flow + fixes Summary: Add Flow types, revealing a few problems, such as `isHaste` having the wrong return value in the "pseudo-mocks". But since the buck worker is in fact working, I guess these functions were never called... The point of typing this file is that I'm going to start aggressively pruning dead code in `node-haste` and hopefully, eventually, get rid of `Moduleish` and `Packageish`. Reviewed By: davidaurelio Differential Revision: D5052379 fbshipit-source-id: dab3f18f05fcf43fbbc48b589170b1cf367d6a48 --- packager/src/ModuleGraph/node-haste/Module.js | 10 ++-- .../src/ModuleGraph/node-haste/ModuleCache.js | 8 +-- .../src/ModuleGraph/node-haste/Package.js | 6 +-- .../src/ModuleGraph/node-haste/node-haste.js | 8 ++- .../node-haste/DependencyGraph/HasteMap.js | 50 ++++++++++++++----- .../DependencyGraph/ResolutionRequest.js | 11 ++-- packager/src/node-haste/Package.js | 4 +- 7 files changed, 66 insertions(+), 31 deletions(-) diff --git a/packager/src/ModuleGraph/node-haste/Module.js b/packager/src/ModuleGraph/node-haste/Module.js index 5d361df3a466..6e00ea6d7ced 100644 --- a/packager/src/ModuleGraph/node-haste/Module.js +++ b/packager/src/ModuleGraph/node-haste/Module.js @@ -13,10 +13,10 @@ import type {CachedReadResult, ReadResult} from '../../node-haste/Module'; import type {TransformedCodeFile} from '../types.flow'; -import type {ModuleCache} from './node-haste.flow'; +import type ModuleCache from './ModuleCache'; module.exports = class Module { - hasteID: Promise; + hasteID: ?string; moduleCache: ModuleCache; name: Promise; path: string; @@ -27,9 +27,9 @@ module.exports = class Module { moduleCache: ModuleCache, info: TransformedCodeFile, ) { - this.hasteID = Promise.resolve(info.hasteID); + this.hasteID = info.hasteID; this.moduleCache = moduleCache; - this.name = this.hasteID.then(name => name || getName(path)); + this.name = Promise.resolve(this.hasteID || getName(path)); this.path = path; this.type = 'Module'; } @@ -51,7 +51,7 @@ module.exports = class Module { } isHaste() { - return this.hasteID.then(Boolean); + return Boolean(this.hasteID); } hash() { diff --git a/packager/src/ModuleGraph/node-haste/ModuleCache.js b/packager/src/ModuleGraph/node-haste/ModuleCache.js index 73bda233cf0d..0062e32d9fbe 100644 --- a/packager/src/ModuleGraph/node-haste/ModuleCache.js +++ b/packager/src/ModuleGraph/node-haste/ModuleCache.js @@ -34,11 +34,11 @@ module.exports = class ModuleCache { this.packages = new Map(); } - getAssetModule(path: string) { + getAssetModule(path: string): Module { return this.getModule(path); } - getModule(path: string) { + getModule(path: string): Module { let m = this.modules.get(path); if (!m) { m = new Module(path, this, this.getTransformedFile(path)); @@ -47,7 +47,7 @@ module.exports = class ModuleCache { return m; } - getPackage(path: string) { + getPackage(path: string): Package { let p = this.packages.get(path); if (!p) { p = new Package(path, this.getPackageData(path)); @@ -64,7 +64,7 @@ module.exports = class ModuleCache { return pkg; } - getPackageOf(filePath: string) { + getPackageOf(filePath: string): ?Package { const candidate = this._getClosestPackage(filePath); return candidate != null ? this.getPackage(candidate) : null; } diff --git a/packager/src/ModuleGraph/node-haste/Package.js b/packager/src/ModuleGraph/node-haste/Package.js index 0f8ca6417291..c6f42d45e6e5 100644 --- a/packager/src/ModuleGraph/node-haste/Package.js +++ b/packager/src/ModuleGraph/node-haste/Package.js @@ -49,12 +49,12 @@ module.exports = class Package { return path.join(this.root, main); } - getName() { + getName(): Promise { return Promise.resolve(nullthrows(this.data.name)); } - isHaste() { - return Promise.resolve(!!this.data.name); + isHaste(): boolean { + return !!this.data.name; } redirectRequire(name: string) { diff --git a/packager/src/ModuleGraph/node-haste/node-haste.js b/packager/src/ModuleGraph/node-haste/node-haste.js index 38fc879936cc..26c008f3cb25 100644 --- a/packager/src/ModuleGraph/node-haste/node-haste.js +++ b/packager/src/ModuleGraph/node-haste/node-haste.js @@ -31,6 +31,8 @@ const ResolutionRequest = require('../../node-haste/DependencyGraph/ResolutionRe const defaults = require('../../../defaults'); +import type {Moduleish, Packageish} from '../../node-haste/DependencyGraph/ResolutionRequest'; + type ResolveOptions = {| assetExts: Extensions, extraNodeModules: {[id: string]: string}, @@ -45,7 +47,7 @@ const platforms = new Set(defaults.platforms); * a jest-haste-map's ModuleMap instance. Eventually, though, we'll * want to figure out how to reunify and get rid of `HasteMap`. */ -function getFakeModuleMap(hasteMap: HasteMap) { +function getFakeModuleMap(hasteMap: HasteMap) { return { getModule(name: string, platform: ?string): ?string { const module = hasteMap.getModule(name, platform); @@ -58,7 +60,7 @@ function getFakeModuleMap(hasteMap: HasteMap) { }; } -const nullModule = { +const nullModule: Moduleish = { path: '/', getPackage() {}, hash() { @@ -66,6 +68,8 @@ const nullModule = { }, readCached() { throw new Error('not implemented'); }, readFresh() { return Promise.reject(new Error('not implemented')); }, + isHaste() { throw new Error('not implemented'); }, + getName() { throw new Error('not implemented'); }, }; exports.createResolveFn = function(options: ResolveOptions): ResolveFn { diff --git a/packager/src/node-haste/DependencyGraph/HasteMap.js b/packager/src/node-haste/DependencyGraph/HasteMap.js index 6201fb944858..262efb18cfc3 100644 --- a/packager/src/node-haste/DependencyGraph/HasteMap.js +++ b/packager/src/node-haste/DependencyGraph/HasteMap.js @@ -5,7 +5,11 @@ * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. + * + * @flow + * @format */ + 'use strict'; const EventEmitter = require('events'); @@ -18,15 +22,37 @@ const GENERIC_PLATFORM = 'generic'; const NATIVE_PLATFORM = 'native'; const PACKAGE_JSON = path.sep + 'package.json'; -class HasteMap extends EventEmitter { +import type {Moduleish, Packageish, ModuleishCache} from './ResolutionRequest'; +import type DependencyGraphHelpers from './DependencyGraphHelpers'; + +type Options = {| + extensions: Array, + files: Array, + helpers: DependencyGraphHelpers, + moduleCache: ModuleishCache, + platforms: Set, + preferNativePlatform: boolean, +|}; + +class HasteMap extends EventEmitter { + + _extensions: Array; + _files: Array; + _helpers: DependencyGraphHelpers; + _map: {}; + _moduleCache: ModuleishCache; + _packages: {}; + _platforms: Set; + _preferNativePlatform: boolean; + constructor({ extensions, files, - moduleCache, - preferNativePlatform, helpers, + moduleCache, platforms, - }) { + preferNativePlatform, + }: Options) { super(); this._extensions = extensions; this._files = files; @@ -35,8 +61,8 @@ class HasteMap extends EventEmitter { this._platforms = platforms; this._preferNativePlatform = preferNativePlatform; - this._processHastePackage = throat(1, this._processHastePackage.bind(this)); - this._processHasteModule = throat(1, this._processHasteModule.bind(this)); + (this: any)._processHastePackage = throat(1, this._processHastePackage.bind(this)); + (this: any)._processHasteModule = throat(1, this._processHasteModule.bind(this)); } build() { @@ -60,7 +86,7 @@ class HasteMap extends EventEmitter { return this._files; } - processFileChange(type, absPath) { + processFileChange(type: string, absPath: string) { return Promise.resolve().then(() => { /*eslint no-labels: 0 */ let invalidated; @@ -96,7 +122,7 @@ class HasteMap extends EventEmitter { }); } - getModule(name, platform = null): Module { + getModule(name: string, platform: ?string): ?TModule { const modulesMap = this._map[name]; if (modulesMap == null) { return null; @@ -117,11 +143,11 @@ class HasteMap extends EventEmitter { return module; } - getPackage(name): Package { + getPackage(name: string): TPackage { return this._packages[name]; } - _processHasteModule(file, previousName) { + _processHasteModule(file: string, previousName: ?string) { const module = this._moduleCache.getModule(file); return Promise.resolve().then(() => { const isHaste = module.isHaste(); @@ -136,7 +162,7 @@ class HasteMap extends EventEmitter { }); } - _processHastePackage(file, previousName) { + _processHastePackage(file: string, previousName: ?string) { const p = this._moduleCache.getPackage(file); return Promise.resolve().then(() => { const isHaste = p.isHaste(); @@ -157,7 +183,7 @@ class HasteMap extends EventEmitter { }); } - _updateHasteMap(name, mod) { + _updateHasteMap(name: string, mod: TModule | TPackage) { let existingModule; if (mod.type === 'Package') { diff --git a/packager/src/node-haste/DependencyGraph/ResolutionRequest.js b/packager/src/node-haste/DependencyGraph/ResolutionRequest.js index 7118f545613f..5178d6931acd 100644 --- a/packager/src/node-haste/DependencyGraph/ResolutionRequest.js +++ b/packager/src/node-haste/DependencyGraph/ResolutionRequest.js @@ -49,21 +49,26 @@ export type ModuleMap = { ): ?string, }; -type Packageish = { +export type Packageish = { + isHaste(): boolean, + getName(): Promise, + path: string, redirectRequire(toModuleName: string): string | false, getMain(): string, +root: string, }; -type Moduleish = { +export type Moduleish = { +path: string, + isHaste(): boolean, + getName(): Promise, getPackage(): ?Packageish, hash(): string, readCached(transformOptions: TransformWorkerOptions): CachedReadResult, readFresh(transformOptions: TransformWorkerOptions): Promise, }; -type ModuleishCache = { +export type ModuleishCache = { getPackage( name: string, platform?: string, diff --git a/packager/src/node-haste/Package.js b/packager/src/node-haste/Package.js index 6e3f3efb3a51..019047048fac 100644 --- a/packager/src/node-haste/Package.js +++ b/packager/src/node-haste/Package.js @@ -59,8 +59,8 @@ class Package { return path.join(this.root, main); } - isHaste(): Promise { - return Promise.resolve().then(() => !!this.read().name); + isHaste(): boolean { + return !!this.read().name; } getName(): Promise { From dc783d97e821655c0f64ceb12125373d2842bd77 Mon Sep 17 00:00:00 2001 From: David Aurelio Date: Fri, 12 May 2017 11:31:56 -0700 Subject: [PATCH 0088/1101] Make `postMinifyProcess` non-optional Reviewed By: cpojer Differential Revision: D5052315 fbshipit-source-id: 4c3573fc6e97b4f561f371179ea2dd6f89fac05a --- local-cli/bundle/buildBundle.js | 1 + packager/src/Bundler/index.js | 2 +- packager/src/Resolver/index.js | 4 ++-- packager/src/Server/index.js | 4 ++-- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/local-cli/bundle/buildBundle.js b/local-cli/bundle/buildBundle.js index 123cb6b76d2a..3376abf75725 100644 --- a/local-cli/bundle/buildBundle.js +++ b/local-cli/bundle/buildBundle.js @@ -84,6 +84,7 @@ function buildBundle( globalTransformCache: null, hasteImpl: config.hasteImpl, platforms: defaultPlatforms.concat(platforms), + postMinifyProcess: config.postMinifyProcess, postProcessModules: config.postProcessModules, projectRoots: config.getProjectRoots(), providesModuleNodeModules: providesModuleNodeModules, diff --git a/packager/src/Bundler/index.js b/packager/src/Bundler/index.js index 58531819b4de..da622d9c7214 100644 --- a/packager/src/Bundler/index.js +++ b/packager/src/Bundler/index.js @@ -127,7 +127,7 @@ type Options = {| +platforms: Array, +polyfillModuleNames: Array, +postProcessModules?: PostProcessModules, - +postMinifyProcess?: PostMinifyProcess, + +postMinifyProcess: PostMinifyProcess, +projectRoots: Array, +providesModuleNodeModules?: Array, +reporter: Reporter, diff --git a/packager/src/Resolver/index.js b/packager/src/Resolver/index.js index 476ef3ae5e3b..c3dbe177c154 100644 --- a/packager/src/Resolver/index.js +++ b/packager/src/Resolver/index.js @@ -39,7 +39,7 @@ type Options = {| +hasteImpl?: HasteImpl, +maxWorkerCount: number, +minifyCode: MinifyCode, - +postMinifyProcess?: PostMinifyProcess, + +postMinifyProcess: PostMinifyProcess, +platforms: Set, +polyfillModuleNames?: Array, +projectRoots: Array, @@ -55,7 +55,7 @@ class Resolver { _depGraph: DependencyGraph; _minifyCode: MinifyCode; - _postMinifyProcess: ?PostMinifyProcess; + _postMinifyProcess: PostMinifyProcess; _polyfillModuleNames: Array; constructor(opts: Options, depGraph: DependencyGraph) { diff --git a/packager/src/Server/index.js b/packager/src/Server/index.js index 8bd3f8917388..63732ee06c2a 100644 --- a/packager/src/Server/index.js +++ b/packager/src/Server/index.js @@ -68,7 +68,7 @@ type Options = { platforms?: Array, polyfillModuleNames?: Array, postProcessModules?: PostProcessModules, - postMinifyProcess?: PostMinifyProcess, + postMinifyProcess: PostMinifyProcess, projectRoots: Array, providesModuleNodeModules?: Array, reporter: Reporter, @@ -124,7 +124,7 @@ class Server { platforms: Array, polyfillModuleNames: Array, postProcessModules?: PostProcessModules, - postMinifyProcess?: PostMinifyProcess, + postMinifyProcess: PostMinifyProcess, projectRoots: Array, providesModuleNodeModules?: Array, reporter: Reporter, From 28748f165b3d8a3a8e9567eb2cfe949cc565b715 Mon Sep 17 00:00:00 2001 From: ivmarkov Date: Fri, 12 May 2017 13:17:51 -0700 Subject: [PATCH 0089/1101] Support custom packager port when debugging on Android Summary: This three liner addresses the issue described by Rovack here: #9935 Basically, changing the React Native Packager port from 8081 to, say, 8088 does work, *except* if you want to debug your code with ChromeDevTools (i.e. selecting "Debug JS Remotely" from the Android app dev menu). The analysis of Rovack, pointing to a hard-coded port in DevServerHelper.getHostForJSProxy() was *spot on* - many thanks to him. Closes https://github.com/facebook/react-native/pull/12095 Differential Revision: D5044330 Pulled By: mkonicek fbshipit-source-id: c07f59f700683ffba84f03d44f82b394e2e899c1 --- .../facebook/react/devsupport/DevServerHelper.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 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 100c52b275a7..1767bd1237d3 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevServerHelper.java +++ b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevServerHelper.java @@ -320,8 +320,16 @@ public BundleDownloader getBundleDownloader() { /** * @return the host to use when connecting to the bundle server from the host itself. */ - private static String getHostForJSProxy() { - return AndroidInfoHelpers.DEVICE_LOCALHOST; + private String getHostForJSProxy() { + // Use custom port if configured. Note that host stays "localhost". + String host = Assertions.assertNotNull( + mSettings.getPackagerConnectionSettings().getDebugServerHost()); + int portOffset = host.lastIndexOf(':'); + if (portOffset > -1) { + return "localhost" + host.substring(portOffset); + } else { + return AndroidInfoHelpers.DEVICE_LOCALHOST; + } } /** @@ -551,7 +559,7 @@ public String getSourceUrl(String mainModuleName) { } public String getJSBundleURLForRemoteDebugging(String mainModuleName) { - // The host IP we use when connecting to the JS bundle server from the emulator is not the + // The host we use when connecting to the JS bundle server from the emulator is not the // same as the one needed to connect to the same server from the JavaScript proxy running on the // host itself. return createBundleURL( From fb99f55939311fcd2798dc8e4a805f7e07c2baa9 Mon Sep 17 00:00:00 2001 From: Michael Lee Date: Fri, 12 May 2017 13:29:50 -0700 Subject: [PATCH 0090/1101] Fix compilation due to missing flag Reviewed By: mhorowitz Differential Revision: D5053975 fbshipit-source-id: cfb5e71d7c9c318fa1942ce9d4dc72b4f7c1e054 --- ReactCommon/cxxreact/tests/BUCK | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ReactCommon/cxxreact/tests/BUCK b/ReactCommon/cxxreact/tests/BUCK index f8f29de42473..2d89a2dd3c15 100644 --- a/ReactCommon/cxxreact/tests/BUCK +++ b/ReactCommon/cxxreact/tests/BUCK @@ -11,7 +11,6 @@ TEST_SRCS = [ if THIS_IS_FBANDROID: include_defs('//ReactAndroid/DEFS') include_defs('//ReactAndroid/TEST_DEFS') - jni_instrumentation_test_lib( name = 'tests', class_under_test = 'com/facebook/react/XplatBridgeTest', @@ -19,7 +18,8 @@ if THIS_IS_FBANDROID: srcs = TEST_SRCS, compiler_flags = [ '-fexceptions', - '-std=c++1y', + '-frtti', + '-std=c++14', ], deps = [ '//native/third-party/android-ndk:android', @@ -35,6 +35,7 @@ if THIS_IS_FBOBJC: srcs = TEST_SRCS, compiler_flags = [ '-fexceptions', + '-frtti', ], deps = [ '//xplat/folly:molly', From 962e664c33e514729de8a8bd3a7289c8ddb2d5d9 Mon Sep 17 00:00:00 2001 From: Spencer Ahrens Date: Fri, 12 May 2017 15:01:24 -0700 Subject: [PATCH 0091/1101] Fix prop-types warning in LayoutAnimation Summary: And clean it up. **TestPlan** No more warning when launching RNTester LayoutAnimationExample still works, also without warnings. Reviewed By: fkgozali Differential Revision: D5055050 fbshipit-source-id: a3a6cdf25632dc4f9455d795e8a2e3c00f968e09 --- Libraries/LayoutAnimation/LayoutAnimation.js | 63 +++++++++----------- 1 file changed, 29 insertions(+), 34 deletions(-) diff --git a/Libraries/LayoutAnimation/LayoutAnimation.js b/Libraries/LayoutAnimation/LayoutAnimation.js index ac2525a88706..1b218201b70a 100644 --- a/Libraries/LayoutAnimation/LayoutAnimation.js +++ b/Libraries/LayoutAnimation/LayoutAnimation.js @@ -8,16 +8,18 @@ * * @providesModule LayoutAnimation * @flow + * @format */ 'use strict'; -var UIManager = require('UIManager'); +const PropTypes = require('prop-types'); +const UIManager = require('UIManager'); -var keyMirror = require('fbjs/lib/keyMirror'); +const keyMirror = require('fbjs/lib/keyMirror'); -var {checkPropTypes, PropTypes} = require('react'); +const {checkPropTypes} = PropTypes; -var TypesEnum = { +const TypesEnum = { spring: true, linear: true, easeInEaseOut: true, @@ -25,24 +27,23 @@ var TypesEnum = { easeOut: true, keyboard: true, }; -var Types = keyMirror(TypesEnum); +const Types = keyMirror(TypesEnum); -var PropertiesEnum = { +const PropertiesEnum = { opacity: true, scaleXY: true, }; -var Properties = keyMirror(PropertiesEnum); +const Properties = keyMirror(PropertiesEnum); -var animType = PropTypes.shape({ +const animType = PropTypes.shape({ duration: PropTypes.number, delay: PropTypes.number, springDamping: PropTypes.number, initialVelocity: PropTypes.number, - type: PropTypes.oneOf( - Object.keys(Types) - ).isRequired, - property: PropTypes.oneOf( // Only applies to create/delete - Object.keys(Properties) + type: PropTypes.oneOf(Object.keys(Types)).isRequired, + property: PropTypes.oneOf( + // Only applies to create/delete + Object.keys(Properties), ), }); @@ -53,9 +54,9 @@ type Anim = { initialVelocity?: number, type?: $Enum, property?: $Enum, -} +}; -var configType = PropTypes.shape({ +const configType = PropTypes.shape({ duration: PropTypes.number.isRequired, create: animType, update: animType, @@ -67,7 +68,7 @@ type Config = { create?: Anim, update?: Anim, delete?: Anim, -} +}; function checkConfig(config: Config, location: string, name: string) { checkPropTypes({config: configType}, {config}, location, name); @@ -78,7 +79,11 @@ function configureNext(config: Config, onAnimationDidEnd?: Function) { checkConfig(config, 'config', 'LayoutAnimation.configureNext'); } UIManager.configureNextLayoutAnimation( - config, onAnimationDidEnd || function() {}, function() { /* unused */ } + config, + onAnimationDidEnd || function() {}, + function() { + /* unused */ + }, ); } @@ -99,13 +104,9 @@ function create(duration: number, type, creationProp): Config { }; } -var Presets = { - easeInEaseOut: create( - 300, Types.easeInEaseOut, Properties.opacity - ), - linear: create( - 500, Types.linear, Properties.opacity - ), +const Presets = { + easeInEaseOut: create(300, Types.easeInEaseOut, Properties.opacity), + linear: create(500, Types.linear, Properties.opacity), spring: { duration: 700, create: { @@ -133,7 +134,7 @@ var Presets = { * * UIManager.setLayoutAnimationEnabledExperimental && UIManager.setLayoutAnimationEnabledExperimental(true); */ -var LayoutAnimation = { +const LayoutAnimation = { /** * Schedules an animation to happen on the next layout. * @@ -157,15 +158,9 @@ var LayoutAnimation = { Properties, checkConfig, Presets, - easeInEaseOut: configureNext.bind( - null, Presets.easeInEaseOut - ), - linear: configureNext.bind( - null, Presets.linear - ), - spring: configureNext.bind( - null, Presets.spring - ), + easeInEaseOut: configureNext.bind(null, Presets.easeInEaseOut), + linear: configureNext.bind(null, Presets.linear), + spring: configureNext.bind(null, Presets.spring), }; module.exports = LayoutAnimation; From 49e6d3965f8089f422df04378cf68bf69cf7369c Mon Sep 17 00:00:00 2001 From: Arsen Ghazaryan Date: Fri, 12 May 2017 17:32:17 -0700 Subject: [PATCH 0092/1101] Add missing license to UnimplementedView.js Summary: Added a missing license header to UnimplementedView.js No code logic got changed, just added a comment. So the regular CircleCI tests should be fine. Closes https://github.com/facebook/react-native/pull/13952 Differential Revision: D5056778 Pulled By: javache fbshipit-source-id: feb106946a9a34cfdf2df63de21305ac779296f4 --- .../UnimplementedViews/UnimplementedView.js | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/Libraries/Components/UnimplementedViews/UnimplementedView.js b/Libraries/Components/UnimplementedViews/UnimplementedView.js index ba62f245932e..e7c488bdd2f6 100644 --- a/Libraries/Components/UnimplementedViews/UnimplementedView.js +++ b/Libraries/Components/UnimplementedViews/UnimplementedView.js @@ -1,15 +1,23 @@ /** - * Common implementation for a simple stubbed view. Simply applies the view's styles to the inner - * View component and renders its children. + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. * * @providesModule UnimplementedView + * @flow */ - 'use strict'; var React = require('React'); var StyleSheet = require('StyleSheet'); +/** + * Common implementation for a simple stubbed view. Simply applies the view's styles to the inner + * View component and renders its children. + */ class UnimplementedView extends React.Component { setNativeProps = () => { // Do nothing. From 62210531792fd3f07ebc0aeefa19d37ebc7da707 Mon Sep 17 00:00:00 2001 From: Pieter De Baets Date: Fri, 12 May 2017 17:57:12 -0700 Subject: [PATCH 0093/1101] Improve systrace markers Reviewed By: mhorowitz Differential Revision: D4860135 fbshipit-source-id: ce963010883e6b9cc8e34f7ff01b4018cd195eba --- React/CxxBridge/RCTCxxBridge.mm | 12 ++++---- React/CxxModule/RCTNativeModule.h | 2 +- React/CxxModule/RCTNativeModule.mm | 22 +++++++++------ React/Modules/RCTUIManager.m | 5 ++-- React/Profiler/RCTProfile.h | 4 +-- React/Profiler/RCTProfile.m | 26 ++++++++--------- .../main/jni/xreact/jni/JavaModuleWrapper.cpp | 22 ++++++++++++--- .../main/jni/xreact/jni/JavaModuleWrapper.h | 4 +-- ReactCommon/cxxreact/CxxNativeModule.cpp | 13 +++++++-- ReactCommon/cxxreact/CxxNativeModule.h | 2 +- ReactCommon/cxxreact/JSCExecutor.cpp | 28 ++++++++----------- ReactCommon/cxxreact/ModuleRegistry.cpp | 9 +----- ReactCommon/cxxreact/NativeModule.h | 4 +-- ReactCommon/cxxreact/NativeToJsBridge.cpp | 17 ++++------- ReactCommon/jschelpers/JSCHelpers.cpp | 3 -- ReactCommon/jschelpers/Value.h | 28 +++++++++++++++---- 16 files changed, 111 insertions(+), 90 deletions(-) diff --git a/React/CxxBridge/RCTCxxBridge.mm b/React/CxxBridge/RCTCxxBridge.mm index ad3f209bc3ed..8dd9179bf7dd 100644 --- a/React/CxxBridge/RCTCxxBridge.mm +++ b/React/CxxBridge/RCTCxxBridge.mm @@ -54,7 +54,7 @@ @interface RCTCxxBridge : RCTBridge RCTAssert(self.executorClass || self->_jsThread == [NSThread currentThread], \ @"This method must be called on JS thread") -NSString *const RCTJSThreadName = @"com.facebook.React.JavaScript"; +static NSString *const RCTJSThreadName = @"com.facebook.react.JavaScript"; using namespace facebook::react; @@ -76,7 +76,7 @@ static bool isRAMBundle(NSData *script) { static void registerPerformanceLoggerHooks(RCTPerformanceLogger *performanceLogger) { __weak RCTPerformanceLogger *weakPerformanceLogger = performanceLogger; - ReactMarker::logTaggedMarker = [weakPerformanceLogger](const ReactMarker::ReactMarkerId markerId, const char* tag) { + ReactMarker::logTaggedMarker = [weakPerformanceLogger](const ReactMarker::ReactMarkerId markerId, const char *tag) { switch (markerId) { case ReactMarker::RUN_JS_BUNDLE_START: [weakPerformanceLogger markStartForTag:RCTPLScriptExecution]; @@ -255,6 +255,8 @@ - (void)executeBlockOnJavaScriptThread:(dispatch_block_t)block - (void)start { + RCT_PROFILE_BEGIN_EVENT(RCTProfileTagAlways, @"-[RCTCxxBridge start]", nil); + [[NSNotificationCenter defaultCenter] postNotificationName:RCTJavaScriptWillStartLoadingNotification object:_parentBridge userInfo:@{@"bridge": self}]; @@ -349,6 +351,7 @@ - (void)start } }); } + RCT_PROFILE_END_EVENT(RCTProfileTagAlways, @""); } - (void)loadSource:(RCTSourceLoadBlock)_onSourceLoad onProgress:(RCTSourceLoadProgressBlock)onProgress @@ -963,7 +966,7 @@ - (void)_flushPendingCalls [_performanceLogger markStopForTag:RCTPLBridgeStartup]; - RCT_PROFILE_BEGIN_EVENT(0, @"Processing pendingCalls", @{ @"count": @(_pendingCalls.count) }); + RCT_PROFILE_BEGIN_EVENT(0, @"Processing pendingCalls", @{ @"count": [@(_pendingCalls.count) stringValue] }); // Phase B: _flushPendingCalls happens. Each block in _pendingCalls is // executed, adding work to the queue, and _pendingCount is decremented. // loading is set to NO. @@ -1051,8 +1054,7 @@ - (void)enqueueApplicationScript:(NSData *)script { RCTAssert(onComplete != nil, @"onComplete block passed in should be non-nil"); - RCT_PROFILE_BEGIN_EVENT(RCTProfileTagAlways, - @"-[RCTCxxBridge enqueueApplicationScript]", nil); + RCT_PROFILE_BEGIN_EVENT(RCTProfileTagAlways, @"-[RCTCxxBridge enqueueApplicationScript]", nil); [self _tryAndHandleError:^{ if (isRAMBundle(script)) { diff --git a/React/CxxModule/RCTNativeModule.h b/React/CxxModule/RCTNativeModule.h index e4d1b0892bef..2245f8c94be9 100644 --- a/React/CxxModule/RCTNativeModule.h +++ b/React/CxxModule/RCTNativeModule.h @@ -20,7 +20,7 @@ class RCTNativeModule : public NativeModule { std::string getName() override; std::vector getMethods() override; folly::dynamic getConstants() override; - void invoke(unsigned int methodId, folly::dynamic &¶ms) override; + void invoke(unsigned int methodId, folly::dynamic &¶ms, int callId) override; MethodCallResult callSerializableNativeHook(unsigned int reactMethodId, folly::dynamic &¶ms) override; private: diff --git a/React/CxxModule/RCTNativeModule.mm b/React/CxxModule/RCTNativeModule.mm index 3402bc098a83..7e51af062783 100644 --- a/React/CxxModule/RCTNativeModule.mm +++ b/React/CxxModule/RCTNativeModule.mm @@ -17,6 +17,10 @@ #import #import +#ifdef WITH_FBSYSTRACE +#include +#endif + namespace facebook { namespace react { @@ -50,20 +54,20 @@ return ret; } -void RCTNativeModule::invoke(unsigned int methodId, folly::dynamic &¶ms) { +void RCTNativeModule::invoke(unsigned int methodId, folly::dynamic &¶ms, int callId) { // The BatchedBridge version of this buckets all the callbacks by thread, and // queues one block on each. This is much simpler; we'll see how it goes and // iterate. - dispatch_block_t block = [this, methodId, params=std::move(params)] { - if (!m_bridge.valid) { - return; + dispatch_block_t block = [this, methodId, params=std::move(params), callId] { + #ifdef WITH_FBSYSTRACE + if (callId != -1) { + fbsystrace_end_async_flow(TRACE_TAG_REACT_APPS, "native", callId); } - + #endif invokeInner(methodId, std::move(params)); }; dispatch_queue_t queue = m_moduleData.methodQueue; - if (queue == RCTJSThread) { block(); } else if (queue) { @@ -76,6 +80,10 @@ } MethodCallResult RCTNativeModule::invokeInner(unsigned int methodId, const folly::dynamic &¶ms) { + if (!m_bridge.valid) { + return folly::none; + } + id method = m_moduleData.methods[methodId]; if (RCT_DEBUG && !method) { RCTLogError(@"Unknown methodID: %ud for module: %@", @@ -83,7 +91,6 @@ } NSArray *objcParams = convertFollyDynamicToId(params); - @try { id result = [method invokeWithBridge:m_bridge module:m_moduleData.instance arguments:objcParams]; return convertIdToFollyDynamic(result); @@ -99,7 +106,6 @@ exception, method.JSMethodName, m_moduleData.name, objcParams]; RCTFatal(RCTErrorWithMessage(message)); } - } } diff --git a/React/Modules/RCTUIManager.m b/React/Modules/RCTUIManager.m index 2147b4eafde9..6423995755cb 100644 --- a/React/Modules/RCTUIManager.m +++ b/React/Modules/RCTUIManager.m @@ -32,8 +32,8 @@ #import "RCTRootViewInternal.h" #import "RCTScrollableProtocol.h" #import "RCTShadowView.h" -#import "RCTUtils.h" #import "RCTUIManagerObserverCoordinator.h" +#import "RCTUtils.h" #import "RCTView.h" #import "RCTViewManager.h" #import "UIView+React.h" @@ -1192,7 +1192,7 @@ - (void)flushUIBlocks dispatch_async(dispatch_get_main_queue(), ^{ RCTProfileEndFlowEvent(); RCT_PROFILE_BEGIN_EVENT(RCTProfileTagAlways, @"-[UIManager flushUIBlocks]", (@{ - @"count": @(previousPendingUIBlocks.count), + @"count": [@(previousPendingUIBlocks.count) stringValue], })); @try { for (RCTViewManagerUIBlock block in previousPendingUIBlocks) { @@ -1202,6 +1202,7 @@ - (void)flushUIBlocks @catch (NSException *exception) { RCTLogError(@"Exception thrown while executing UI block: %@", exception); } + RCT_PROFILE_END_EVENT(RCTProfileTagAlways, @""); }); } } diff --git a/React/Profiler/RCTProfile.h b/React/Profiler/RCTProfile.h index 73cb3e8694ca..b0ab6cd81271 100644 --- a/React/Profiler/RCTProfile.h +++ b/React/Profiler/RCTProfile.h @@ -68,7 +68,7 @@ RCT_EXTERN void _RCTProfileBeginEvent(NSThread *calleeThread, NSTimeInterval time, uint64_t tag, NSString *name, - NSDictionary *args); + NSDictionary *args); #define RCT_PROFILE_BEGIN_EVENT(tag, name, args) \ do { \ if (RCTProfileIsProfiling()) { \ @@ -104,7 +104,7 @@ RCT_EXTERN void _RCTProfileEndEvent(NSThread *calleeThread, */ RCT_EXTERN NSUInteger RCTProfileBeginAsyncEvent(uint64_t tag, NSString *name, - NSDictionary *args); + NSDictionary *args); /** * The ID returned by BeginEvent should then be passed into EndEvent, with the diff --git a/React/Profiler/RCTProfile.m b/React/Profiler/RCTProfile.m index eb5a0b9a5a39..ec1046c031d0 100644 --- a/React/Profiler/RCTProfile.m +++ b/React/Profiler/RCTProfile.m @@ -71,7 +71,7 @@ static RCTProfileCallbacks *callbacks; static char *systrace_buffer; -static systrace_arg_t *RCTProfileSystraceArgsFromNSDictionary(NSDictionary *args) +static systrace_arg_t *systraceArgsFromDictionary(NSDictionary *args) { if (args.count == 0) { return NULL; @@ -79,14 +79,11 @@ systrace_arg_t *systrace_args = malloc(sizeof(systrace_arg_t) * args.count); __block size_t i = 0; - [args enumerateKeysAndObjectsUsingBlock:^(id key, id value, __unused BOOL *stop) { - const char *keyc = [key description].UTF8String; - systrace_args[i].key = keyc; - systrace_args[i].key_len = (int)strlen(keyc); - - const char *valuec = RCTJSONStringify(value, NULL).UTF8String; - systrace_args[i].value = valuec; - systrace_args[i].value_len = (int)strlen(valuec); + [args enumerateKeysAndObjectsUsingBlock:^(NSString *key, NSString *value, __unused BOOL *stop) { + systrace_args[i].key = [key UTF8String]; + systrace_args[i].key_len = [key length]; + systrace_args[i].value = [value UTF8String]; + systrace_args[i].value_len = [value length]; i++; }]; return systrace_args; @@ -123,7 +120,7 @@ void RCTProfileRegisterCallbacks(RCTProfileCallbacks *cb) TASK_BASIC_INFO, (task_info_t)&info, &size); - if( kerr == KERN_SUCCESS ) { + if ( kerr == KERN_SUCCESS ) { return @{ @"suspend_count": @(info.suspend_count), @"virtual_size": RCTProfileMemory(info.virtual_size), @@ -545,12 +542,12 @@ void _RCTProfileBeginEvent( NSTimeInterval time, uint64_t tag, NSString *name, - NSDictionary *args + NSDictionary *args ) { CHECK(); if (callbacks != NULL) { - callbacks->begin_section(tag, name.UTF8String, args.count, RCTProfileSystraceArgsFromNSDictionary(args)); + callbacks->begin_section(tag, name.UTF8String, args.count, systraceArgsFromDictionary(args)); return; } @@ -603,7 +600,7 @@ void _RCTProfileEndEvent( NSUInteger RCTProfileBeginAsyncEvent( uint64_t tag, NSString *name, - NSDictionary *args + NSDictionary *args ) { CHECK(0); @@ -613,7 +610,8 @@ NSUInteger RCTProfileBeginAsyncEvent( NSUInteger currentEventID = ++eventID; if (callbacks != NULL) { - callbacks->begin_async_section(tag, name.UTF8String, (int)(currentEventID % INT_MAX), args.count, RCTProfileSystraceArgsFromNSDictionary(args)); + callbacks->begin_async_section(tag, name.UTF8String, (int)(currentEventID % INT_MAX), + args.count, systraceArgsFromDictionary(args)); } else { dispatch_async(RCTProfileGetQueue(), ^{ RCTProfileOngoingEvents[@(currentEventID)] = @[ diff --git a/ReactAndroid/src/main/jni/xreact/jni/JavaModuleWrapper.cpp b/ReactAndroid/src/main/jni/xreact/jni/JavaModuleWrapper.cpp index 4ca86bef1619..ba3030061007 100644 --- a/ReactAndroid/src/main/jni/xreact/jni/JavaModuleWrapper.cpp +++ b/ReactAndroid/src/main/jni/xreact/jni/JavaModuleWrapper.cpp @@ -10,6 +10,10 @@ #include #include +#ifdef WITH_FBSYSTRACE +#include +#endif + #include "CatalystInstanceImpl.h" #include "ReadableNativeArray.h" @@ -80,9 +84,14 @@ folly::dynamic JavaNativeModule::getConstants() { } } -void JavaNativeModule::invoke(unsigned int reactMethodId, folly::dynamic&& params) { - messageQueueThread_->runOnQueue([this, reactMethodId, params=std::move(params)] { +void JavaNativeModule::invoke(unsigned int reactMethodId, folly::dynamic&& params, int callId) { + messageQueueThread_->runOnQueue([this, reactMethodId, params=std::move(params), callId] { static auto invokeMethod = wrapper_->getClass()->getMethod("invoke"); + #ifdef WITH_FBSYSTRACE + if (callId != -1) { + fbsystrace_end_async_flow(TRACE_TAG_REACT_APPS, "native", callId); + } + #endif invokeMethod( wrapper_, static_cast(reactMethodId), @@ -148,13 +157,18 @@ folly::dynamic NewJavaNativeModule::getConstants() { } } -void NewJavaNativeModule::invoke(unsigned int reactMethodId, folly::dynamic&& params) { +void NewJavaNativeModule::invoke(unsigned int reactMethodId, folly::dynamic&& params, int callId) { if (reactMethodId >= methods_.size()) { throw std::invalid_argument( folly::to("methodId ", reactMethodId, " out of range [0..", methods_.size(), "]")); } CHECK(!methods_[reactMethodId].isSyncHook()) << "Trying to invoke a synchronous hook asynchronously"; - messageQueueThread_->runOnQueue([this, reactMethodId, params=std::move(params)] () mutable { + messageQueueThread_->runOnQueue([this, reactMethodId, params=std::move(params), callId] () mutable { + #ifdef WITH_FBSYSTRACE + if (callId != -1) { + fbsystrace_end_async_flow(TRACE_TAG_REACT_APPS, "native", callId); + } + #endif invokeInner(reactMethodId, std::move(params)); }); } diff --git a/ReactAndroid/src/main/jni/xreact/jni/JavaModuleWrapper.h b/ReactAndroid/src/main/jni/xreact/jni/JavaModuleWrapper.h index 0612ccde4edf..6bc4f6b75692 100644 --- a/ReactAndroid/src/main/jni/xreact/jni/JavaModuleWrapper.h +++ b/ReactAndroid/src/main/jni/xreact/jni/JavaModuleWrapper.h @@ -59,7 +59,7 @@ class JavaNativeModule : public NativeModule { std::string getName() override; folly::dynamic getConstants() override; std::vector getMethods() override; - void invoke(unsigned int reactMethodId, folly::dynamic&& params) override; + void invoke(unsigned int reactMethodId, folly::dynamic&& params, int callId) override; MethodCallResult callSerializableNativeHook(unsigned int reactMethodId, folly::dynamic&& params) override; private: @@ -80,7 +80,7 @@ class NewJavaNativeModule : public NativeModule { std::string getName() override; std::vector getMethods() override; folly::dynamic getConstants() override; - void invoke(unsigned int reactMethodId, folly::dynamic&& params) override; + void invoke(unsigned int reactMethodId, folly::dynamic&& params, int callId) override; MethodCallResult callSerializableNativeHook(unsigned int reactMethodId, folly::dynamic&& params) override; private: diff --git a/ReactCommon/cxxreact/CxxNativeModule.cpp b/ReactCommon/cxxreact/CxxNativeModule.cpp index b744c6330e73..314d3837a7a5 100644 --- a/ReactCommon/cxxreact/CxxNativeModule.cpp +++ b/ReactCommon/cxxreact/CxxNativeModule.cpp @@ -7,7 +7,8 @@ #include -#include +#include "JsArgumentHelpers.h" +#include "SystraceSection.h" using facebook::xplat::module::CxxModule; @@ -75,7 +76,7 @@ folly::dynamic CxxNativeModule::getConstants() { return constants; } -void CxxNativeModule::invoke(unsigned int reactMethodId, folly::dynamic&& params) { +void CxxNativeModule::invoke(unsigned int reactMethodId, folly::dynamic&& params, int callId) { if (reactMethodId >= methods_.size()) { throw std::invalid_argument(folly::to("methodId ", reactMethodId, " out of range [0..", methods_.size(), "]")); @@ -128,7 +129,13 @@ void CxxNativeModule::invoke(unsigned int reactMethodId, folly::dynamic&& params // stack. I'm told that will be possible in the future. TODO // mhorowitz #7128529: convert C++ exceptions to Java - messageQueueThread_->runOnQueue([method, params=std::move(params), first, second] () { + messageQueueThread_->runOnQueue([method, params=std::move(params), first, second, callId] () { + #ifdef WITH_FBSYSTRACE + if (callId != -1) { + fbsystrace_end_async_flow(TRACE_TAG_REACT_APPS, "native", callId); + } + #endif + SystraceSection s(method.name.c_str()); try { method.func(std::move(params), first, second); } catch (const facebook::xplat::JsArgumentException& ex) { diff --git a/ReactCommon/cxxreact/CxxNativeModule.h b/ReactCommon/cxxreact/CxxNativeModule.h index 9b1810d58e8e..da42b29c6aca 100644 --- a/ReactCommon/cxxreact/CxxNativeModule.h +++ b/ReactCommon/cxxreact/CxxNativeModule.h @@ -27,7 +27,7 @@ class CxxNativeModule : public NativeModule { std::string getName() override; std::vector getMethods() override; folly::dynamic getConstants() override; - void invoke(unsigned int reactMethodId, folly::dynamic&& params) override; + void invoke(unsigned int reactMethodId, folly::dynamic&& params, int callId) override; MethodCallResult callSerializableNativeHook(unsigned int hookId, folly::dynamic&& args) override; private: diff --git a/ReactCommon/cxxreact/JSCExecutor.cpp b/ReactCommon/cxxreact/JSCExecutor.cpp index 42dc75e02c99..2aaf9d8e8a91 100644 --- a/ReactCommon/cxxreact/JSCExecutor.cpp +++ b/ReactCommon/cxxreact/JSCExecutor.cpp @@ -182,7 +182,7 @@ static bool canUseInspector(JSContextRef context) { #endif void JSCExecutor::initOnJSVMThread() throw(JSException) { - SystraceSection s("JSCExecutor.initOnJSVMThread"); + SystraceSection s("JSCExecutor::initOnJSVMThread"); #if defined(__APPLE__) const bool useCustomJSC = m_jscConfig.getDefault("UseCustomJSC", false).getBool(); @@ -353,20 +353,15 @@ void JSCExecutor::loadApplicationScript(std::unique_ptr scrip } else #endif { - #ifdef WITH_FBSYSTRACE - fbsystrace_begin_section( - TRACE_TAG_REACT_CXX_BRIDGE, - "JSCExecutor::loadApplicationScript-createExpectingAscii"); - #endif - - ReactMarker::logMarker(ReactMarker::JS_BUNDLE_STRING_CONVERT_START); - String jsScript = jsStringFromBigString(m_context, *script); - ReactMarker::logMarker(ReactMarker::JS_BUNDLE_STRING_CONVERT_STOP); - - #ifdef WITH_FBSYSTRACE - fbsystrace_end_section(TRACE_TAG_REACT_CXX_BRIDGE); - #endif + String jsScript; + { + SystraceSection s_("JSCExecutor::loadApplicationScript-createExpectingAscii"); + ReactMarker::logMarker(ReactMarker::JS_BUNDLE_STRING_CONVERT_START); + jsScript = jsStringFromBigString(m_context, *script); + ReactMarker::logMarker(ReactMarker::JS_BUNDLE_STRING_CONVERT_STOP); + } + SystraceSection s_("JSCExecutor::loadApplicationScript-evaluateScript"); evaluateScript(m_context, jsScript, jsSourceURL); } @@ -457,9 +452,9 @@ void JSCExecutor::flush() { void JSCExecutor::callFunction(const std::string& moduleId, const std::string& methodId, const folly::dynamic& arguments) { SystraceSection s("JSCExecutor::callFunction"); + // This weird pattern is because Value is not default constructible. // The lambda is inlined, so there's no overhead. - auto result = [&] { try { if (!m_callFunctionReturnResultAndFlushedQueueJS) { @@ -524,8 +519,7 @@ Value JSCExecutor::callFunctionSyncWithValue( void JSCExecutor::setGlobalVariable(std::string propName, std::unique_ptr jsonValue) { try { - SystraceSection s("JSCExecutor.setGlobalVariable", - "propName", propName); + SystraceSection s("JSCExecutor::setGlobalVariable", "propName", propName); auto valueToInject = Value::fromJSON(m_context, jsStringFromBigString(m_context, *jsonValue)); Object::getGlobalObject(m_context).setProperty(propName.c_str(), valueToInject); diff --git a/ReactCommon/cxxreact/ModuleRegistry.cpp b/ReactCommon/cxxreact/ModuleRegistry.cpp index 72c9e5ecbbd3..98042f401186 100644 --- a/ReactCommon/cxxreact/ModuleRegistry.cpp +++ b/ReactCommon/cxxreact/ModuleRegistry.cpp @@ -118,14 +118,7 @@ void ModuleRegistry::callNativeMethod(unsigned int moduleId, unsigned int method throw std::runtime_error( folly::to("moduleId ", moduleId, " out of range [0..", modules_.size(), ")")); } - -#ifdef WITH_FBSYSTRACE - if (callId != -1) { - fbsystrace_end_async_flow(TRACE_TAG_REACT_APPS, "native", callId); - } -#endif - - modules_[moduleId]->invoke(methodId, std::move(params)); + modules_[moduleId]->invoke(methodId, std::move(params), callId); } MethodCallResult ModuleRegistry::callSerializableNativeHook(unsigned int moduleId, unsigned int methodId, folly::dynamic&& params) { diff --git a/ReactCommon/cxxreact/NativeModule.h b/ReactCommon/cxxreact/NativeModule.h index e0181d39b798..3ec7f3880115 100644 --- a/ReactCommon/cxxreact/NativeModule.h +++ b/ReactCommon/cxxreact/NativeModule.h @@ -5,8 +5,8 @@ #include #include -#include #include +#include namespace facebook { namespace react { @@ -29,7 +29,7 @@ class NativeModule { virtual folly::dynamic getConstants() = 0; // TODO mhorowitz: do we need initialize()/onCatalystInstanceDestroy() in C++ // or only Java? - virtual void invoke(unsigned int reactMethodId, folly::dynamic&& params) = 0; + virtual void invoke(unsigned int reactMethodId, folly::dynamic&& params, int callId) = 0; virtual MethodCallResult callSerializableNativeHook(unsigned int reactMethodId, folly::dynamic&& args) = 0; }; diff --git a/ReactCommon/cxxreact/NativeToJsBridge.cpp b/ReactCommon/cxxreact/NativeToJsBridge.cpp index dcbab72c2e23..33f73161f3ab 100644 --- a/ReactCommon/cxxreact/NativeToJsBridge.cpp +++ b/ReactCommon/cxxreact/NativeToJsBridge.cpp @@ -124,27 +124,21 @@ void NativeToJsBridge::callFunction( int systraceCookie = -1; #ifdef WITH_FBSYSTRACE systraceCookie = m_systraceCookie++; - std::string tracingName = fbsystrace_is_tracing(TRACE_TAG_REACT_CXX_BRIDGE) ? - folly::to("JSCall__", module, '_', method) : std::string(); - SystraceSection s(tracingName.c_str()); FbSystraceAsyncFlow::begin( TRACE_TAG_REACT_CXX_BRIDGE, - tracingName.c_str(), + "JSCall", systraceCookie); - #else - std::string tracingName; #endif - runOnExecutorQueue([module = std::move(module), method = std::move(method), arguments = std::move(arguments), tracingName = std::move(tracingName), systraceCookie] + runOnExecutorQueue([module = std::move(module), method = std::move(method), arguments = std::move(arguments), systraceCookie] (JSExecutor* executor) { #ifdef WITH_FBSYSTRACE FbSystraceAsyncFlow::end( TRACE_TAG_REACT_CXX_BRIDGE, - tracingName.c_str(), + "JSCall", systraceCookie); - SystraceSection s(tracingName.c_str()); + SystraceSection s("NativeToJsBridge::callFunction", "module", module, "method", method); #endif - // This is safe because we are running on the executor's thread: it won't // destruct until after it's been unregistered (which we check above) and // that will happen on this thread @@ -169,9 +163,8 @@ void NativeToJsBridge::invokeCallback(double callbackId, folly::dynamic&& argume TRACE_TAG_REACT_CXX_BRIDGE, "", systraceCookie); - SystraceSection s("NativeToJsBridge.invokeCallback"); + SystraceSection s("NativeToJsBridge::invokeCallback"); #endif - executor->invokeCallback(callbackId, arguments); }); } diff --git a/ReactCommon/jschelpers/JSCHelpers.cpp b/ReactCommon/jschelpers/JSCHelpers.cpp index 975e12376998..ade9eaf9ef6a 100644 --- a/ReactCommon/jschelpers/JSCHelpers.cpp +++ b/ReactCommon/jschelpers/JSCHelpers.cpp @@ -123,9 +123,6 @@ void removeGlobal(JSGlobalContextRef ctx, const char* name) { } JSValueRef evaluateScript(JSContextRef context, JSStringRef script, JSStringRef source) { - #ifdef WITH_FBSYSTRACE - fbsystrace::FbSystraceSection s(TRACE_TAG_REACT_CXX_BRIDGE, "evaluateScript"); - #endif JSValueRef exn, result; result = JSC_JSEvaluateScript(context, script, NULL, source, 0, &exn); if (result == nullptr) { diff --git a/ReactCommon/jschelpers/Value.h b/ReactCommon/jschelpers/Value.h index e0f1d0e0871b..ad9e81e04e7b 100644 --- a/ReactCommon/jschelpers/Value.h +++ b/ReactCommon/jschelpers/Value.h @@ -41,9 +41,10 @@ class JSException : public std::exception { class String : public noncopyable { public: - explicit String(JSContextRef context, const char* utf8) : - m_context(context), m_string(JSC_JSStringCreateWithUTF8CString(context, utf8)) - {} + explicit String(): m_context(nullptr), m_string(nullptr) {} // dummy empty constructor + + explicit String(JSContextRef context, const char* utf8) + : m_context(context), m_string(JSC_JSStringCreateWithUTF8CString(context, utf8)) {} String(String&& other) : m_context(other.m_context), m_string(other.m_string) @@ -65,18 +66,30 @@ class String : public noncopyable { } } + String& operator=(String&& other) { + if (m_string) { + JSC_JSStringRelease(m_context, m_string); + } + + m_context = other.m_context; + m_string = other.m_string; + other.m_string = nullptr; + + return *this; + } + operator JSStringRef() const { return m_string; } // Length in characters size_t length() const { - return JSC_JSStringGetLength(m_context, m_string); + return m_string ? JSC_JSStringGetLength(m_context, m_string) : 0; } // Length in bytes of a null-terminated utf8 encoded value size_t utf8Size() const { - return JSC_JSStringGetMaximumUTF8CStringSize(m_context, m_string); + return m_string ? JSC_JSStringGetMaximumUTF8CStringSize(m_context, m_string) : 0; } /* @@ -94,6 +107,9 @@ class String : public noncopyable { * https://mathiasbynens.be/notes/javascript-unicode */ std::string str() const { + if (!m_string) { + return ""; + } const JSChar* utf16 = JSC_JSStringGetCharactersPtr(m_context, m_string); size_t stringLength = JSC_JSStringGetLength(m_context, m_string); return unicode::utf16toUTF8(utf16, stringLength); @@ -101,7 +117,7 @@ class String : public noncopyable { // Assumes that utf8 is null terminated bool equals(const char* utf8) { - return JSC_JSStringIsEqualToUTF8CString(m_context, m_string, utf8); + return m_string ? JSC_JSStringIsEqualToUTF8CString(m_context, m_string, utf8) : false; } // This assumes ascii is nul-terminated. From 65aaa9c045006b2b73b6d2c4c6d95cb1f25147ec Mon Sep 17 00:00:00 2001 From: Pieter De Baets Date: Mon, 15 May 2017 03:36:58 -0700 Subject: [PATCH 0094/1101] Fix memory leak in RN fbsystrace support Reviewed By: alexeylang Differential Revision: D5060485 fbshipit-source-id: f2ab38023f1870992c16bea08ee887261d0ca34b --- React/Profiler/RCTProfile.m | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/React/Profiler/RCTProfile.m b/React/Profiler/RCTProfile.m index ec1046c031d0..9b65302f782a 100644 --- a/React/Profiler/RCTProfile.m +++ b/React/Profiler/RCTProfile.m @@ -71,7 +71,7 @@ static RCTProfileCallbacks *callbacks; static char *systrace_buffer; -static systrace_arg_t *systraceArgsFromDictionary(NSDictionary *args) +static systrace_arg_t *newSystraceArgsFromDictionary(NSDictionary *args) { if (args.count == 0) { return NULL; @@ -547,7 +547,9 @@ void _RCTProfileBeginEvent( CHECK(); if (callbacks != NULL) { - callbacks->begin_section(tag, name.UTF8String, args.count, systraceArgsFromDictionary(args)); + systrace_arg_t *systraceArgs = newSystraceArgsFromDictionary(args); + callbacks->begin_section(tag, name.UTF8String, args.count, systraceArgs); + free(systraceArgs); return; } @@ -610,8 +612,9 @@ NSUInteger RCTProfileBeginAsyncEvent( NSUInteger currentEventID = ++eventID; if (callbacks != NULL) { - callbacks->begin_async_section(tag, name.UTF8String, (int)(currentEventID % INT_MAX), - args.count, systraceArgsFromDictionary(args)); + systrace_arg_t *systraceArgs = newSystraceArgsFromDictionary(args); + callbacks->begin_async_section(tag, name.UTF8String, (int)(currentEventID % INT_MAX), args.count, systraceArgs); + free(systraceArgs); } else { dispatch_async(RCTProfileGetQueue(), ^{ RCTProfileOngoingEvents[@(currentEventID)] = @[ From 28c07f8698fcc39a4727ddec2c1b909a1b1acf39 Mon Sep 17 00:00:00 2001 From: Aaron Chiu Date: Mon, 15 May 2017 05:12:48 -0700 Subject: [PATCH 0095/1101] allow inspector to show if not Systrace profiling Reviewed By: gaearon Differential Revision: D5060716 fbshipit-source-id: 9a00f80be8ef28da37d7aa672a4c0805182c1582 --- Libraries/ReactNative/AppContainer.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Libraries/ReactNative/AppContainer.js b/Libraries/ReactNative/AppContainer.js index e5d40c47724d..34def83c5e04 100644 --- a/Libraries/ReactNative/AppContainer.js +++ b/Libraries/ReactNative/AppContainer.js @@ -52,7 +52,7 @@ class AppContainer extends React.Component { componentDidMount(): void { if (__DEV__) { - if (global.__RCTProfileIsProfiling) { + if (!global.__RCTProfileIsProfiling) { this._subscription = RCTDeviceEventEmitter.addListener( 'toggleElementInspector', () => { From baf93e46d005386440cce576c037955c18597f21 Mon Sep 17 00:00:00 2001 From: Georgiy Kassabli Date: Mon, 15 May 2017 06:18:24 -0700 Subject: [PATCH 0096/1101] Adding ability to account for rounding in YGNodeCanUseCachedMeasurement Reviewed By: emilsjolander Differential Revision: D5059560 fbshipit-source-id: d729e991758a8c668a4b373105b71337961875cd --- ReactCommon/yoga/yoga/Yoga.c | 55 ++++++++++++++++++++---------------- ReactCommon/yoga/yoga/Yoga.h | 3 +- 2 files changed, 33 insertions(+), 25 deletions(-) diff --git a/ReactCommon/yoga/yoga/Yoga.c b/ReactCommon/yoga/yoga/Yoga.c index a7dd3f782269..e5fd5f79a823 100644 --- a/ReactCommon/yoga/yoga/Yoga.c +++ b/ReactCommon/yoga/yoga/Yoga.c @@ -3129,6 +3129,25 @@ static inline bool YGMeasureModeNewMeasureSizeIsStricterAndStillValid(YGMeasureM lastSize > size && (lastComputedSize <= size || YGFloatsEqual(size, lastComputedSize)); } +static float YGRoundValueToPixelGrid(const float value, + const float pointScaleFactor, + const bool forceCeil, + const bool forceFloor) { + float fractial = fmodf(value, pointScaleFactor); + if (YGFloatsEqual(fractial, 0)) { + // Still remove fractial as fractial could be extremely small. + return value - fractial; + } + + if (forceCeil) { + return value - fractial + pointScaleFactor; + } else if (forceFloor) { + return value - fractial; + } else { + return value - fractial + (fractial >= pointScaleFactor / 2.0f ? pointScaleFactor : 0); + } +} + bool YGNodeCanUseCachedMeasurement(const YGMeasureMode widthMode, const float width, const YGMeasureMode heightMode, @@ -3140,13 +3159,18 @@ bool YGNodeCanUseCachedMeasurement(const YGMeasureMode widthMode, const float lastComputedWidth, const float lastComputedHeight, const float marginRow, - const float marginColumn) { + const float marginColumn, + const YGConfigRef config) { if (lastComputedHeight < 0 || lastComputedWidth < 0) { return false; } + const float effectiveWidth = config != NULL ? YGRoundValueToPixelGrid(width, config->pointScaleFactor, false, false) : width; + const float effectiveHeight = config != NULL ? YGRoundValueToPixelGrid(height, config->pointScaleFactor, false, false) : height; + const float effectiveLastWidth = config != NULL ? YGRoundValueToPixelGrid(lastWidth, config->pointScaleFactor, false, false) : lastWidth; + const float effectiveLastHeight = config != NULL ? YGRoundValueToPixelGrid(lastHeight, config->pointScaleFactor, false, false) : lastHeight; - const bool hasSameWidthSpec = lastWidthMode == widthMode && YGFloatsEqual(lastWidth, width); - const bool hasSameHeightSpec = lastHeightMode == heightMode && YGFloatsEqual(lastHeight, height); + const bool hasSameWidthSpec = lastWidthMode == widthMode && YGFloatsEqual(effectiveLastWidth, effectiveWidth); + const bool hasSameHeightSpec = lastHeightMode == heightMode && YGFloatsEqual(effectiveLastHeight, effectiveHeight); const bool widthIsCompatible = hasSameWidthSpec || YGMeasureModeSizeIsExactAndMatchesOldMeasuredSize(widthMode, @@ -3239,7 +3263,8 @@ bool YGLayoutNodeInternal(const YGNodeRef node, layout->cachedLayout.computedWidth, layout->cachedLayout.computedHeight, marginAxisRow, - marginAxisColumn)) { + marginAxisColumn, + config)) { cachedResults = &layout->cachedLayout; } else { // Try to use the measurement cache. @@ -3255,7 +3280,8 @@ bool YGLayoutNodeInternal(const YGNodeRef node, layout->cachedMeasurements[i].computedWidth, layout->cachedMeasurements[i].computedHeight, marginAxisRow, - marginAxisColumn)) { + marginAxisColumn, + config)) { cachedResults = &layout->cachedMeasurements[i]; break; } @@ -3389,25 +3415,6 @@ void YGConfigSetPointScaleFactor(const YGConfigRef config, const float pixelsInP } } -static float YGRoundValueToPixelGrid(const float value, - const float pointScaleFactor, - const bool forceCeil, - const bool forceFloor) { - float fractial = fmodf(value, pointScaleFactor); - if (YGFloatsEqual(fractial, 0)) { - // Still remove fractial as fractial could be extremely small. - return value - fractial; - } - - if (forceCeil) { - return value - fractial + pointScaleFactor; - } else if (forceFloor) { - return value - fractial; - } else { - return value - fractial + (fractial >= pointScaleFactor / 2.0f ? pointScaleFactor : 0); - } -} - static void YGRoundToPixelGrid(const YGNodeRef node, const float pointScaleFactor, const float absoluteLeft, diff --git a/ReactCommon/yoga/yoga/Yoga.h b/ReactCommon/yoga/yoga/Yoga.h index 162415dbe0ff..3579941cec20 100644 --- a/ReactCommon/yoga/yoga/Yoga.h +++ b/ReactCommon/yoga/yoga/Yoga.h @@ -111,7 +111,8 @@ WIN_EXPORT bool YGNodeCanUseCachedMeasurement(const YGMeasureMode widthMode, const float lastComputedWidth, const float lastComputedHeight, const float marginRow, - const float marginColumn); + const float marginColumn, + YGConfigRef config); WIN_EXPORT void YGNodeCopyStyle(const YGNodeRef dstNode, const YGNodeRef srcNode); From 2f5524d04e5f18687f02c79d8e98ef6252109f81 Mon Sep 17 00:00:00 2001 From: Jean Lauliac Date: Mon, 15 May 2017 06:44:45 -0700 Subject: [PATCH 0097/1101] packager: simplify getAssetDataFromName? Summary: Not only is this function is building a custom Regex for every single file, but it's also duplicating some of the work of the inner function, that is already splitting up the platform/extension. This changeset refactors both function to have a more strict and legible logic to extract asset information. We extract the base name first, then we extract the resolution from it, instead of rematching platform and extension. I stumbled on this while looking into refactoring the asset resolution logic of `ResolutionRequest#_loadAsAssetFile()`. The next step would be to reuse the exact same function for resolving assets instead of using a custom regex there as well. Reviewed By: davidaurelio Differential Revision: D5060589 fbshipit-source-id: b48d9a5d8e963be76cad5384c6bfb3e214a73587 --- .../AssetServer/__tests__/AssetServer-test.js | 6 -- packager/src/AssetServer/index.js | 18 +++-- packager/src/Server/index.js | 8 +- packager/src/node-haste/AssetModule.js | 5 +- packager/src/node-haste/DependencyGraph.js | 4 +- .../node-haste/DependencyGraph/HasteMap.js | 6 +- .../DependencyGraph/ResolutionRequest.js | 4 +- .../node-haste/__tests__/AssetModule-test.js | 2 +- packager/src/node-haste/lib/AssetPaths.js | 80 +++++++++++++++++++ ...ataFromName-test.js => AssetPaths-test.js} | 32 ++++---- ...-test.js => parsePlatformFilePath-test.js} | 17 ++-- .../node-haste/lib/getAssetDataFromName.js | 67 ---------------- .../node-haste/lib/getPlatformExtension.js | 28 ------- .../node-haste/lib/parsePlatformFilePath.js | 49 ++++++++++++ 14 files changed, 180 insertions(+), 146 deletions(-) create mode 100644 packager/src/node-haste/lib/AssetPaths.js rename packager/src/node-haste/lib/__tests__/{getAssetDataFromName-test.js => AssetPaths-test.js} (69%) rename packager/src/node-haste/lib/__tests__/{getPlatformExtension-test.js => parsePlatformFilePath-test.js} (54%) delete mode 100644 packager/src/node-haste/lib/getAssetDataFromName.js delete mode 100644 packager/src/node-haste/lib/getPlatformExtension.js create mode 100644 packager/src/node-haste/lib/parsePlatformFilePath.js diff --git a/packager/src/AssetServer/__tests__/AssetServer-test.js b/packager/src/AssetServer/__tests__/AssetServer-test.js index 5b9ca19fbb71..64692c49aad1 100644 --- a/packager/src/AssetServer/__tests__/AssetServer-test.js +++ b/packager/src/AssetServer/__tests__/AssetServer-test.js @@ -20,12 +20,6 @@ const fs = require('fs'); const {objectContaining} = jasmine; describe('AssetServer', () => { - beforeEach(() => { - const NodeHaste = require('../../node-haste/DependencyGraph'); - NodeHaste.getAssetDataFromName = - require.requireActual('../../node-haste/lib/getAssetDataFromName'); - }); - describe('assetServer.get', () => { it('should work for the simple case', () => { const server = new AssetServer({ diff --git a/packager/src/AssetServer/index.js b/packager/src/AssetServer/index.js index 79fe9ca823f1..d77fc5b2ba4a 100644 --- a/packager/src/AssetServer/index.js +++ b/packager/src/AssetServer/index.js @@ -11,13 +11,14 @@ 'use strict'; +const AssetPaths = require('../node-haste/lib/AssetPaths'); + const crypto = require('crypto'); const denodeify = require('denodeify'); const fs = require('fs'); -const getAssetDataFromName = require('../node-haste/lib/getAssetDataFromName'); const path = require('path'); -import type {AssetData} from '../node-haste/lib/getAssetDataFromName'; +import type {AssetData} from '../node-haste/lib/AssetPaths'; const createTimeoutPromise = timeout => new Promise((resolve, reject) => { setTimeout(reject, timeout, 'fs operation timeout'); @@ -55,7 +56,7 @@ class AssetServer { } get(assetPath: string, platform: ?string = null): Promise { - const assetData = getAssetDataFromName( + const assetData = AssetPaths.parse( assetPath, new Set(platform != null ? [platform] : []), ); @@ -77,7 +78,7 @@ class AssetServer { scales: Array, type: string, |}> { - const nameData = getAssetDataFromName( + const nameData = AssetPaths.parse( assetPath, new Set(platform != null ? [platform] : []), ); @@ -141,7 +142,7 @@ class AssetServer { .then(res => { const dir = res[0]; const files = res[1]; - const assetData = getAssetDataFromName( + const assetData = AssetPaths.parse( filename, new Set(platform != null ? [platform] : []), ); @@ -209,6 +210,9 @@ class AssetServer { const assets = files.map(this._getAssetDataFromName.bind(this, platforms)); const map = new Map(); assets.forEach(function(asset, i) { + if (asset == null) { + return; + } const file = files[i]; const assetKey = getAssetKey(asset.assetName, asset.platform); let record = map.get(assetKey); @@ -235,8 +239,8 @@ class AssetServer { return map; } - _getAssetDataFromName(platforms: Set, file: string): AssetData { - return getAssetDataFromName(file, platforms); + _getAssetDataFromName(platforms: Set, file: string): ?AssetData { + return AssetPaths.tryParse(file, platforms); } } diff --git a/packager/src/Server/index.js b/packager/src/Server/index.js index 63732ee06c2a..e2d131264d5a 100644 --- a/packager/src/Server/index.js +++ b/packager/src/Server/index.js @@ -16,8 +16,8 @@ const Bundler = require('../Bundler'); const MultipartResponse = require('./MultipartResponse'); const defaults = require('../../defaults'); -const getPlatformExtension = require('../node-haste/lib/getPlatformExtension'); const mime = require('mime-types'); +const parsePlatformFilePath = require('../node-haste/lib/parsePlatformFilePath'); const path = require('path'); const symbolicate = require('./symbolicate'); const terminal = require('../lib/terminal'); @@ -283,7 +283,7 @@ class Server { getShallowDependencies(options: DependencyOptions): Promise> { return Promise.resolve().then(() => { const platform = options.platform != null - ? options.platform : getPlatformExtension(options.entryFile, this._platforms); + ? options.platform : parsePlatformFilePath(options.entryFile, this._platforms).platform; const {entryFile, dev, minify, hot} = options; return this._bundler.getShallowDependencies( {entryFile, platform, dev, minify, hot, generateSourceMaps: false}, @@ -298,7 +298,7 @@ class Server { getDependencies(options: DependencyOptions): Promise> { return Promise.resolve().then(() => { const platform = options.platform != null - ? options.platform : getPlatformExtension(options.entryFile, this._platforms); + ? options.platform : parsePlatformFilePath(options.entryFile, this._platforms).platform; const {entryFile, dev, minify, hot} = options; return this._bundler.getDependencies( {entryFile, platform, dev, minify, hot, generateSourceMaps: false}, @@ -834,7 +834,7 @@ class Server { // try to get the platform from the url /* $FlowFixMe: `query` could be empty for an invalid URL */ const platform = urlObj.query.platform || - getPlatformExtension(pathname, this._platforms); + parsePlatformFilePath(pathname, this._platforms).platform; /* $FlowFixMe: `query` could be empty for an invalid URL */ const assetPlugin = urlObj.query.assetPlugin; diff --git a/packager/src/node-haste/AssetModule.js b/packager/src/node-haste/AssetModule.js index f03981b1aadb..99c610bcfda0 100644 --- a/packager/src/node-haste/AssetModule.js +++ b/packager/src/node-haste/AssetModule.js @@ -12,10 +12,9 @@ 'use strict'; +const AssetPaths = require('./lib/AssetPaths'); const Module = require('./Module'); -const getAssetDataFromName = require('./lib/getAssetDataFromName'); - import type {CachedReadResult, ConstructorArgs, ReadResult} from './Module'; class AssetModule extends Module { @@ -29,7 +28,7 @@ class AssetModule extends Module { platforms: Set, ) { super(args); - const {resolution, name, type} = getAssetDataFromName(this.path, platforms); + const {resolution, name, type} = AssetPaths.parse(this.path, platforms); this.resolution = resolution; this._name = name; this._type = type; diff --git a/packager/src/node-haste/DependencyGraph.js b/packager/src/node-haste/DependencyGraph.js index 369e81b20baa..b4f6a7fc81b7 100644 --- a/packager/src/node-haste/DependencyGraph.js +++ b/packager/src/node-haste/DependencyGraph.js @@ -20,9 +20,9 @@ const ResolutionRequest = require('./DependencyGraph/ResolutionRequest'); const ResolutionResponse = require('./DependencyGraph/ResolutionResponse'); const fs = require('fs'); -const getPlatformExtension = require('./lib/getPlatformExtension'); const invariant = require('fbjs/lib/invariant'); const isAbsolutePath = require('absolute-path'); +const parsePlatformFilePath = require('./lib/parsePlatformFilePath'); const path = require('path'); const util = require('util'); @@ -253,7 +253,7 @@ class DependencyGraph extends EventEmitter { _getRequestPlatform(entryPath: string, platform: ?string): ?string { if (platform == null) { - platform = getPlatformExtension(entryPath, this._opts.platforms); + platform = parsePlatformFilePath(entryPath, this._opts.platforms).platform; } else if (!this._opts.platforms.has(platform)) { throw new Error('Unrecognized platform: ' + platform); } diff --git a/packager/src/node-haste/DependencyGraph/HasteMap.js b/packager/src/node-haste/DependencyGraph/HasteMap.js index 262efb18cfc3..df9e021c6ffe 100644 --- a/packager/src/node-haste/DependencyGraph/HasteMap.js +++ b/packager/src/node-haste/DependencyGraph/HasteMap.js @@ -14,7 +14,7 @@ const EventEmitter = require('events'); -const getPlatformExtension = require('../lib/getPlatformExtension'); +const parsePlatformFilePath = require('../lib/parsePlatformFilePath'); const path = require('path'); const throat = require('throat'); @@ -194,7 +194,9 @@ class HasteMap extends EventEmitter { this._map[name] = Object.create(null); } const moduleMap = this._map[name]; - const modulePlatform = getPlatformExtension(mod.path, this._platforms) || GENERIC_PLATFORM; + const modulePlatform = + parsePlatformFilePath(mod.path, this._platforms).platform || + GENERIC_PLATFORM; existingModule = moduleMap[modulePlatform]; moduleMap[modulePlatform] = mod; } diff --git a/packager/src/node-haste/DependencyGraph/ResolutionRequest.js b/packager/src/node-haste/DependencyGraph/ResolutionRequest.js index 5178d6931acd..21ac79123e03 100644 --- a/packager/src/node-haste/DependencyGraph/ResolutionRequest.js +++ b/packager/src/node-haste/DependencyGraph/ResolutionRequest.js @@ -12,6 +12,7 @@ 'use strict'; +const AssetPaths = require('../lib/AssetPaths'); const AsyncTaskGroup = require('../lib/AsyncTaskGroup'); const MapWithDefaults = require('../lib/MapWithDefaults'); @@ -21,7 +22,6 @@ const path = require('path'); const realPath = require('path'); const invariant = require('fbjs/lib/invariant'); const isAbsolutePath = require('absolute-path'); -const getAssetDataFromName = require('../lib/getAssetDataFromName'); import type {HasteFS} from '../types'; import type DependencyGraphHelpers from './DependencyGraphHelpers'; @@ -619,7 +619,7 @@ class ResolutionRequest { fromModule: TModule, toModule: string, ): TModule { - const {name, type} = getAssetDataFromName(potentialModulePath, EMPTY_SET); + const {name, type} = AssetPaths.parse(potentialModulePath, EMPTY_SET); let pattern = '^' + name + '(@[\\d\\.]+x)?'; if (this._options.platform != null) { diff --git a/packager/src/node-haste/__tests__/AssetModule-test.js b/packager/src/node-haste/__tests__/AssetModule-test.js index ff52ad2794e1..76d548cb62e8 100644 --- a/packager/src/node-haste/__tests__/AssetModule-test.js +++ b/packager/src/node-haste/__tests__/AssetModule-test.js @@ -13,7 +13,7 @@ jest.autoMockOff(); const AssetModule = require('../AssetModule'); describe('AssetModule:', () => { - const defaults = {file: '/arbitrary'}; + const defaults = {file: '/arbitrary.png'}; it('has no dependencies by default', () => { return new AssetModule(defaults).getDependencies() diff --git a/packager/src/node-haste/lib/AssetPaths.js b/packager/src/node-haste/lib/AssetPaths.js new file mode 100644 index 000000000000..3bac92c1b23d --- /dev/null +++ b/packager/src/node-haste/lib/AssetPaths.js @@ -0,0 +1,80 @@ + /** + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * @flow + * @format + */ + +'use strict'; + +const parsePlatformFilePath = require('./parsePlatformFilePath'); +const path = require('path'); + +export type AssetData = {| + // TODO: rename to "assetPath", what it actually is. + assetName: string, + name: string, + platform: ?string, + resolution: number, + type: string, +|}; + +const ASSET_BASE_NAME_RE = /(.+?)(@([\d.]+)x)?$/; + +function parseBaseName( + baseName: string, +): {rootName: string, resolution: number} { + const match = baseName.match(ASSET_BASE_NAME_RE); + if (!match) { + throw new Error(`invalid asset name: \`${baseName}'`); + } + const rootName = match[1]; + if (match[3] != null) { + const resolution = parseFloat(match[3]); + if (!Number.isNaN(resolution)) { + return {rootName, resolution}; + } + } + return {rootName, resolution: 1}; +} + +/** + * Return `null` if the `filePath` doesn't have a valid extension, required + * to describe the type of an asset. + */ +function tryParse( + filePath: string, + platforms: Set, +): ?AssetData { + const result = parsePlatformFilePath(filePath, platforms); + const {dirPath, baseName, platform, extension} = result; + if (extension == null) { + return null; + } + const {rootName, resolution} = parseBaseName(baseName); + return { + assetName: path.join(dirPath, `${rootName}.${extension}`), + name: rootName, + platform, + resolution: resolution, + type: extension, + }; +} + +function parse( + filePath: string, + platforms: Set, +): AssetData { + const result = tryParse(filePath, platforms); + if (result == null) { + throw new Error('invalid asset file path: \`${filePath}'); + } + return result; +} + +module.exports = {parse, tryParse}; diff --git a/packager/src/node-haste/lib/__tests__/getAssetDataFromName-test.js b/packager/src/node-haste/lib/__tests__/AssetPaths-test.js similarity index 69% rename from packager/src/node-haste/lib/__tests__/getAssetDataFromName-test.js rename to packager/src/node-haste/lib/__tests__/AssetPaths-test.js index 546facb710f1..bdf3987e8e4d 100644 --- a/packager/src/node-haste/lib/__tests__/getAssetDataFromName-test.js +++ b/packager/src/node-haste/lib/__tests__/AssetPaths-test.js @@ -8,16 +8,16 @@ */ 'use strict'; -jest.dontMock('../getPlatformExtension') - .dontMock('../getAssetDataFromName'); +jest.dontMock('../parsePlatformFilePath') + .dontMock('../AssetPaths'); -var getAssetDataFromName = require('../getAssetDataFromName'); +var AssetPaths = require('../AssetPaths'); const TEST_PLATFORMS = new Set(['ios', 'android']); -describe('getAssetDataFromName', () => { +describe('AssetPaths', () => { it('should get data from name', () => { - expect(getAssetDataFromName('a/b/c.png', TEST_PLATFORMS)).toEqual({ + expect(AssetPaths.parse('a/b/c.png', TEST_PLATFORMS)).toEqual({ resolution: 1, assetName: 'a/b/c.png', type: 'png', @@ -25,7 +25,7 @@ describe('getAssetDataFromName', () => { platform: null, }); - expect(getAssetDataFromName('a/b/c@1x.png', TEST_PLATFORMS)).toEqual({ + expect(AssetPaths.parse('a/b/c@1x.png', TEST_PLATFORMS)).toEqual({ resolution: 1, assetName: 'a/b/c.png', type: 'png', @@ -33,7 +33,7 @@ describe('getAssetDataFromName', () => { platform: null, }); - expect(getAssetDataFromName('a/b/c@2.5x.png', TEST_PLATFORMS)).toEqual({ + expect(AssetPaths.parse('a/b/c@2.5x.png', TEST_PLATFORMS)).toEqual({ resolution: 2.5, assetName: 'a/b/c.png', type: 'png', @@ -41,7 +41,7 @@ describe('getAssetDataFromName', () => { platform: null, }); - expect(getAssetDataFromName('a/b/c.ios.png', TEST_PLATFORMS)).toEqual({ + expect(AssetPaths.parse('a/b/c.ios.png', TEST_PLATFORMS)).toEqual({ resolution: 1, assetName: 'a/b/c.png', type: 'png', @@ -49,7 +49,7 @@ describe('getAssetDataFromName', () => { platform: 'ios', }); - expect(getAssetDataFromName('a/b/c@1x.ios.png', TEST_PLATFORMS)).toEqual({ + expect(AssetPaths.parse('a/b/c@1x.ios.png', TEST_PLATFORMS)).toEqual({ resolution: 1, assetName: 'a/b/c.png', type: 'png', @@ -57,7 +57,7 @@ describe('getAssetDataFromName', () => { platform: 'ios', }); - expect(getAssetDataFromName('a/b/c@2.5x.ios.png', TEST_PLATFORMS)).toEqual({ + expect(AssetPaths.parse('a/b/c@2.5x.ios.png', TEST_PLATFORMS)).toEqual({ resolution: 2.5, assetName: 'a/b/c.png', type: 'png', @@ -65,7 +65,7 @@ describe('getAssetDataFromName', () => { platform: 'ios', }); - expect(getAssetDataFromName('a/b /c.png', TEST_PLATFORMS)).toEqual({ + expect(AssetPaths.parse('a/b /c.png', TEST_PLATFORMS)).toEqual({ resolution: 1, assetName: 'a/b /c.png', type: 'png', @@ -76,7 +76,7 @@ describe('getAssetDataFromName', () => { describe('resolution extraction', () => { it('should extract resolution simple case', () => { - var data = getAssetDataFromName('test@2x.png', TEST_PLATFORMS); + var data = AssetPaths.parse('test@2x.png', TEST_PLATFORMS); expect(data).toEqual({ assetName: 'test.png', resolution: 2, @@ -87,7 +87,7 @@ describe('getAssetDataFromName', () => { }); it('should default resolution to 1', () => { - var data = getAssetDataFromName('test.png', TEST_PLATFORMS); + var data = AssetPaths.parse('test.png', TEST_PLATFORMS); expect(data).toEqual({ assetName: 'test.png', resolution: 1, @@ -98,7 +98,7 @@ describe('getAssetDataFromName', () => { }); it('should support float', () => { - var data = getAssetDataFromName('test@1.1x.png', TEST_PLATFORMS); + var data = AssetPaths.parse('test@1.1x.png', TEST_PLATFORMS); expect(data).toEqual({ assetName: 'test.png', resolution: 1.1, @@ -107,7 +107,7 @@ describe('getAssetDataFromName', () => { platform: null, }); - data = getAssetDataFromName('test@.1x.png', TEST_PLATFORMS); + data = AssetPaths.parse('test@.1x.png', TEST_PLATFORMS); expect(data).toEqual({ assetName: 'test.png', resolution: 0.1, @@ -116,7 +116,7 @@ describe('getAssetDataFromName', () => { platform: null, }); - data = getAssetDataFromName('test@0.2x.png', TEST_PLATFORMS); + data = AssetPaths.parse('test@0.2x.png', TEST_PLATFORMS); expect(data).toEqual({ assetName: 'test.png', resolution: 0.2, diff --git a/packager/src/node-haste/lib/__tests__/getPlatformExtension-test.js b/packager/src/node-haste/lib/__tests__/parsePlatformFilePath-test.js similarity index 54% rename from packager/src/node-haste/lib/__tests__/getPlatformExtension-test.js rename to packager/src/node-haste/lib/__tests__/parsePlatformFilePath-test.js index 5385e9b31408..967cdecc6a9f 100644 --- a/packager/src/node-haste/lib/__tests__/getPlatformExtension-test.js +++ b/packager/src/node-haste/lib/__tests__/parsePlatformFilePath-test.js @@ -8,15 +8,16 @@ */ 'use strict'; -jest.dontMock('../getPlatformExtension'); +jest.dontMock('../parsePlatformFilePath'); -var getPlatformExtension = require('../getPlatformExtension'); +var parsePlatformFilePath = require('../parsePlatformFilePath'); const TEST_PLATFORMS = new Set(['ios', 'android']); -describe('getPlatformExtension', function() { +describe('parsePlatformFilePath', function() { it('should get platform ext', function() { - const get = name => getPlatformExtension(name, TEST_PLATFORMS); + const get = name => parsePlatformFilePath(name, TEST_PLATFORMS).platform; + expect(get('a.js')).toBe(null); expect(get('a.ios.js')).toBe('ios'); expect(get('a.android.js')).toBe('android'); expect(get('/b/c/a.ios.js')).toBe('ios'); @@ -24,9 +25,9 @@ describe('getPlatformExtension', function() { expect(get('/b/c/a@1.5x.ios.png')).toBe('ios'); expect(get('/b/c/a@1.5x.lol.png')).toBe(null); expect(get('/b/c/a.lol.png')).toBe(null); - expect(getPlatformExtension('a.ios.js', new Set(['ios']))).toBe('ios'); - expect(getPlatformExtension('a.android.js', new Set(['android']))).toBe('android'); - expect(getPlatformExtension('a.ios.js', new Set(['ubuntu']))).toBe(null); - expect(getPlatformExtension('a.ubuntu.js', new Set(['ubuntu']))).toBe('ubuntu'); + expect(parsePlatformFilePath('a.ios.js', new Set(['ios'])).platform).toBe('ios'); + expect(parsePlatformFilePath('a.android.js', new Set(['android'])).platform).toBe('android'); + expect(parsePlatformFilePath('a.ios.js', new Set(['ubuntu'])).platform).toBe(null); + expect(parsePlatformFilePath('a.ubuntu.js', new Set(['ubuntu'])).platform).toBe('ubuntu'); }); }); diff --git a/packager/src/node-haste/lib/getAssetDataFromName.js b/packager/src/node-haste/lib/getAssetDataFromName.js deleted file mode 100644 index 9752a4895b6d..000000000000 --- a/packager/src/node-haste/lib/getAssetDataFromName.js +++ /dev/null @@ -1,67 +0,0 @@ - /** - * Copyright (c) 2015-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - * @flow - */ - -'use strict'; - -const getPlatformExtension = require('./getPlatformExtension'); -const path = require('path'); - -export type AssetData = {| - assetName: string, - name: string, - platform: ?string, - resolution: number, - type: string, -|}; - -function getAssetDataFromName(filename: string, platforms: Set): AssetData { - const ext = path.extname(filename); - const platformExt = getPlatformExtension(filename, platforms); - - let pattern = '@([\\d\\.]+)x'; - if (platformExt != null) { - pattern += '(\\.' + platformExt + ')?'; - } - pattern += '\\' + ext + '$'; - const re = new RegExp(pattern); - - const match = filename.match(re); - let resolution; - - if (!(match && match[1])) { - resolution = 1; - } else { - resolution = parseFloat(match[1]); - if (isNaN(resolution)) { - resolution = 1; - } - } - - let assetName; - if (match) { - assetName = filename.replace(re, ext); - } else if (platformExt != null) { - assetName = filename.replace(new RegExp(`\\.${platformExt}\\${ext}`), ext); - } else { - assetName = filename; - } - assetName = decodeURIComponent(assetName); - - return { - assetName, - name: path.basename(assetName, ext), - platform: platformExt, - resolution, - type: ext.slice(1), - }; -} - -module.exports = getAssetDataFromName; diff --git a/packager/src/node-haste/lib/getPlatformExtension.js b/packager/src/node-haste/lib/getPlatformExtension.js deleted file mode 100644 index 85564a7f6f93..000000000000 --- a/packager/src/node-haste/lib/getPlatformExtension.js +++ /dev/null @@ -1,28 +0,0 @@ -/** - * Copyright (c) 2015-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - * @flow - * @format - */ - -'use strict'; - -/** - * Extract platform extension: `index.ios.js` -> `ios`. - */ -function getPlatformExtension(file: string, platforms: Set): ?string { - const last = file.lastIndexOf('.'); - const secondToLast = file.lastIndexOf('.', last - 1); - if (secondToLast === -1) { - return null; - } - const platform = file.substring(secondToLast + 1, last); - return platforms.has(platform) ? platform : null; -} - -module.exports = getPlatformExtension; diff --git a/packager/src/node-haste/lib/parsePlatformFilePath.js b/packager/src/node-haste/lib/parsePlatformFilePath.js new file mode 100644 index 000000000000..bd540427be5c --- /dev/null +++ b/packager/src/node-haste/lib/parsePlatformFilePath.js @@ -0,0 +1,49 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * @flow + * @format + */ + +'use strict'; + +const path = require('path'); + +type PlatformFilePathParts = {| + dirPath: string, + baseName: string, + platform: ?string, + extension: ?string, +|}; + +const PATH_RE = /^(.+?)(\.([^.]+))?\.([^.]+)$/; + +/** + * Extract the components of a file path that can have a platform specifier: Ex. + * `index.ios.js` is specific to the `ios` platform and has the extension `js`. + */ +function parsePlatformFilePath( + filePath: string, + platforms: Set, +): PlatformFilePathParts { + const dirPath = path.dirname(filePath); + const fileName = path.basename(filePath); + const match = fileName.match(PATH_RE); + if (!match) { + return {dirPath, baseName: fileName, platform: null, extension: null}; + } + const extension = match[4] || null; + const platform = match[3] || null; + if (platform == null || platforms.has(platform)) { + return {dirPath, baseName: match[1], platform, extension}; + } + const baseName = `${match[1]}.${platform}`; + return {dirPath, baseName, platform: null, extension}; +} + +module.exports = parsePlatformFilePath; From 0c1e009ad98bd078fb06d2495be7685165e3ba4e Mon Sep 17 00:00:00 2001 From: Pieter De Baets Date: Mon, 15 May 2017 07:47:00 -0700 Subject: [PATCH 0098/1101] Disable SamplingProfiler for OSS builds Summary: It depends on symbols that are not available. Closes https://github.com/facebook/react-native/pull/13950 Reviewed By: cwdick Differential Revision: D5053724 Pulled By: javache fbshipit-source-id: 9d5676ce5e4ad3ceeb20aeb8c48429319d48799e --- .../devsupport/DevSupportManagerImpl.java | 13 ++-- .../facebook/react/packagerconnection/BUCK | 8 ++- .../src/main/jni/packagerconnection/BUCK | 61 ++++++++++--------- .../SamplingProfilerJniMethod.cpp | 3 + .../SamplingProfilerJniMethod.h | 4 +- 5 files changed, 49 insertions(+), 40 deletions(-) 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 816ddcdf24aa..f5a28a66d15d 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerImpl.java +++ b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerImpl.java @@ -45,7 +45,7 @@ import com.facebook.react.modules.debug.interfaces.DeveloperSettings; import com.facebook.react.packagerconnection.JSPackagerClient; import com.facebook.react.packagerconnection.Responder; -import com.facebook.react.packagerconnection.SamplingProfilerPackagerMethod; +import com.facebook.react.packagerconnection.RequestHandler; import java.io.File; import java.io.IOException; @@ -699,9 +699,14 @@ public void run() { responder.error("JSCContext is missing, unable to profile"); return; } - SamplingProfilerPackagerMethod method = - new SamplingProfilerPackagerMethod(mCurrentContext.getJavaScriptContext()); - method.onRequest(null, responder); + try { + long jsContext = mCurrentContext.getJavaScriptContext(); + Class clazz = Class.forName("com.facebook.react.packagerconnection.SamplingProfilerPackagerMethod"); + RequestHandler handler = (RequestHandler)clazz.getConstructor(long.class).newInstance(jsContext); + handler.onRequest(null, responder); + } catch (Exception e) { + // Module not present + } } }); } diff --git a/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/BUCK b/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/BUCK index 0fd14fabaace..4202a278283d 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/BUCK +++ b/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/BUCK @@ -2,7 +2,10 @@ include_defs("//ReactAndroid/DEFS") android_library( name = "packagerconnection", - srcs = glob(["**/*.java"]), + srcs = glob( + ["**/*.java"], + excludes = ["SamplingProfilerPackagerMethod.java"] if IS_OSS_BUILD else [], + ), visibility = [ "PUBLIC", ], @@ -17,6 +20,5 @@ android_library( react_native_dep("third-party/java/okhttp:okhttp3-ws"), react_native_dep("third-party/java/okio:okio"), react_native_target("java/com/facebook/react/modules/systeminfo:systeminfo-moduleless"), - react_native_target("jni/packagerconnection:jni"), - ], + ] + ([react_native_target("jni/packagerconnection:jni")] if not IS_OSS_BUILD else []), ) diff --git a/ReactAndroid/src/main/jni/packagerconnection/BUCK b/ReactAndroid/src/main/jni/packagerconnection/BUCK index 2f0debd6fb6e..b229550b9c56 100644 --- a/ReactAndroid/src/main/jni/packagerconnection/BUCK +++ b/ReactAndroid/src/main/jni/packagerconnection/BUCK @@ -1,32 +1,33 @@ include_defs("//ReactAndroid/DEFS") -cxx_library( - name = "jni", - srcs = glob(["*.cpp"]), - compiler_flags = [ - "-Wall", - "-Werror", - "-fexceptions", - "-std=c++1y", - "-frtti", - ], - header_namespace = "", - headers = glob( - ["*.h"], - ), - preprocessor_flags = [ - "-DLOG_TAG=\"PackagerConnectionJNI\"", - "-DWITH_FBSYSTRACE=1", - "-DWITH_INSPECTOR=1", - ], - soname = "libpackagerconnectionjnifb.$(ext)", - visibility = [ - "PUBLIC", - ], - xcode_public_headers_symlinks = True, - deps = JSC_DEPS + [ - FBJNI_TARGET, - "//xplat/folly:molly", - react_native_xplat_target("jschelpers:jschelpers"), - ] if not IS_OSS_BUILD else [], -) +if not IS_OSS_BUILD: + cxx_library( + name = "jni", + srcs = glob(["*.cpp"]), + compiler_flags = [ + "-Wall", + "-Werror", + "-fexceptions", + "-std=c++1y", + "-frtti", + ], + header_namespace = "", + headers = glob( + ["*.h"], + ), + preprocessor_flags = [ + "-DLOG_TAG=\"PackagerConnectionJNI\"", + "-DWITH_FBSYSTRACE=1", + "-DWITH_INSPECTOR=1", + ], + soname = "libpackagerconnectionjnifb.$(ext)", + visibility = [ + "PUBLIC", + ], + xcode_public_headers_symlinks = True, + deps = JSC_DEPS + [ + FBJNI_TARGET, + "//xplat/folly:molly", + react_native_xplat_target("jschelpers:jschelpers"), + ] + ) diff --git a/ReactAndroid/src/main/jni/packagerconnection/SamplingProfilerJniMethod.cpp b/ReactAndroid/src/main/jni/packagerconnection/SamplingProfilerJniMethod.cpp index 3d4eb28ac4b4..738d3e4fafef 100644 --- a/ReactAndroid/src/main/jni/packagerconnection/SamplingProfilerJniMethod.cpp +++ b/ReactAndroid/src/main/jni/packagerconnection/SamplingProfilerJniMethod.cpp @@ -2,6 +2,9 @@ #include "SamplingProfilerJniMethod.h" +#include + +#include #include #include diff --git a/ReactAndroid/src/main/jni/packagerconnection/SamplingProfilerJniMethod.h b/ReactAndroid/src/main/jni/packagerconnection/SamplingProfilerJniMethod.h index 070b27124138..da83ec4cf5a7 100644 --- a/ReactAndroid/src/main/jni/packagerconnection/SamplingProfilerJniMethod.h +++ b/ReactAndroid/src/main/jni/packagerconnection/SamplingProfilerJniMethod.h @@ -1,9 +1,7 @@ // Copyright 2004-present Facebook. All Rights Reserved. -#include -#include #include -#include +#include #include "JSPackagerClientResponder.h" From c4fb32fa40c5f33f7c2d33d2e86b8c86401f7ded Mon Sep 17 00:00:00 2001 From: Georgiy Kassabli Date: Mon, 15 May 2017 08:39:56 -0700 Subject: [PATCH 0099/1101] Correct YGNodeCanUseCachedMeasurement to account for non-existent scale factor Reviewed By: emilsjolander Differential Revision: D5061016 fbshipit-source-id: 907ef987bd0ead29cf02f6945a3f03d4ffb58a2e --- ReactCommon/yoga/yoga/Yoga.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/ReactCommon/yoga/yoga/Yoga.c b/ReactCommon/yoga/yoga/Yoga.c index e5fd5f79a823..df48f9daeb21 100644 --- a/ReactCommon/yoga/yoga/Yoga.c +++ b/ReactCommon/yoga/yoga/Yoga.c @@ -3164,10 +3164,11 @@ bool YGNodeCanUseCachedMeasurement(const YGMeasureMode widthMode, if (lastComputedHeight < 0 || lastComputedWidth < 0) { return false; } - const float effectiveWidth = config != NULL ? YGRoundValueToPixelGrid(width, config->pointScaleFactor, false, false) : width; - const float effectiveHeight = config != NULL ? YGRoundValueToPixelGrid(height, config->pointScaleFactor, false, false) : height; - const float effectiveLastWidth = config != NULL ? YGRoundValueToPixelGrid(lastWidth, config->pointScaleFactor, false, false) : lastWidth; - const float effectiveLastHeight = config != NULL ? YGRoundValueToPixelGrid(lastHeight, config->pointScaleFactor, false, false) : lastHeight; + bool useRoundedComparison = config != NULL && config->pointScaleFactor != 0; + const float effectiveWidth = useRoundedComparison ? YGRoundValueToPixelGrid(width, config->pointScaleFactor, false, false) : width; + const float effectiveHeight = useRoundedComparison ? YGRoundValueToPixelGrid(height, config->pointScaleFactor, false, false) : height; + const float effectiveLastWidth = useRoundedComparison ? YGRoundValueToPixelGrid(lastWidth, config->pointScaleFactor, false, false) : lastWidth; + const float effectiveLastHeight = useRoundedComparison ? YGRoundValueToPixelGrid(lastHeight, config->pointScaleFactor, false, false) : lastHeight; const bool hasSameWidthSpec = lastWidthMode == widthMode && YGFloatsEqual(effectiveLastWidth, effectiveWidth); const bool hasSameHeightSpec = lastHeightMode == heightMode && YGFloatsEqual(effectiveLastHeight, effectiveHeight); From f8b683b3ee5ef4b2b84968db9c3023c59bf99220 Mon Sep 17 00:00:00 2001 From: Dmitry Zakharov Date: Mon, 15 May 2017 09:12:24 -0700 Subject: [PATCH 0100/1101] Copy-free Source loading implementation Reviewed By: amnn Differential Revision: D4914165 fbshipit-source-id: 38851679cb696c41f59edfd0d2005faf37813b23 --- ReactCommon/cxxreact/JSCExecutor.cpp | 21 +++++++++++++++++++-- ReactCommon/cxxreact/JSCExecutor.h | 2 ++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/ReactCommon/cxxreact/JSCExecutor.cpp b/ReactCommon/cxxreact/JSCExecutor.cpp index 2aaf9d8e8a91..681914fa0b6c 100644 --- a/ReactCommon/cxxreact/JSCExecutor.cpp +++ b/ReactCommon/cxxreact/JSCExecutor.cpp @@ -357,9 +357,12 @@ void JSCExecutor::loadApplicationScript(std::unique_ptr scrip { SystraceSection s_("JSCExecutor::loadApplicationScript-createExpectingAscii"); ReactMarker::logMarker(ReactMarker::JS_BUNDLE_STRING_CONVERT_START); - jsScript = jsStringFromBigString(m_context, *script); + jsScript = adoptString(std::move(script)); ReactMarker::logMarker(ReactMarker::JS_BUNDLE_STRING_CONVERT_STOP); } + #ifdef WITH_FBSYSTRACE + fbsystrace_end_section(TRACE_TAG_REACT_CXX_BRIDGE); + #endif SystraceSection s_("JSCExecutor::loadApplicationScript-evaluateScript"); evaluateScript(m_context, jsScript, jsSourceURL); @@ -521,13 +524,27 @@ void JSCExecutor::setGlobalVariable(std::string propName, std::unique_ptr script) { +#if defined(WITH_FBJSCEXTENSIONS) + const JSBigString* string = script.release(); + auto jsString = JSStringCreateAdoptingExternal(string->c_str(), string->size(), (void*)string, [](void* s) { + delete static_cast(s); + }); + return String::adopt(m_context, jsString); +#else + return script->isAscii() + ? String::createExpectingAscii(m_context, script->c_str(), script->size()) + : String(m_context, script->c_str()); +#endif +} + void* JSCExecutor::getJavaScriptContext() { return m_context; } diff --git a/ReactCommon/cxxreact/JSCExecutor.h b/ReactCommon/cxxreact/JSCExecutor.h index bf5560c90bb8..473cca7c754c 100644 --- a/ReactCommon/cxxreact/JSCExecutor.h +++ b/ReactCommon/cxxreact/JSCExecutor.h @@ -113,6 +113,8 @@ class RN_EXPORT JSCExecutor : public JSExecutor { void flushQueueImmediate(Value&&); void loadModule(uint32_t moduleId); + String adoptString(std::unique_ptr); + template void installNativeHook(const char* name); JSValueRef getNativeModule(JSObjectRef object, JSStringRef propertyName); From 49c4c0c9426508875c803a47247db66ef4edf936 Mon Sep 17 00:00:00 2001 From: Pieter De Baets Date: Mon, 15 May 2017 10:16:39 -0700 Subject: [PATCH 0101/1101] Fix packager reload command not working Reviewed By: yungsters, mmmulani Differential Revision: D5061001 fbshipit-source-id: 8b75c95525f90955a8dc2054861ad3b6e25eab1d --- React/DevSupport/RCTPackagerConnection.m | 4 ++-- React/Modules/RCTDevSettings.mm | 8 +++++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/React/DevSupport/RCTPackagerConnection.m b/React/DevSupport/RCTPackagerConnection.m index 6ced2f35a698..d7c9c6b285c1 100644 --- a/React/DevSupport/RCTPackagerConnection.m +++ b/React/DevSupport/RCTPackagerConnection.m @@ -41,8 +41,8 @@ - (instancetype)initWithBridge:(RCTBridge *)bridge _bridge = bridge; _handlers = [NSMutableDictionary new]; - _handlers[@"reload"] = [[RCTReloadPackagerMethod alloc] initWithBridge:_bridge]; - _handlers[@"pokeSamplingProfiler"] = [[RCTSamplingProfilerPackagerMethod alloc] initWithBridge:_bridge]; + _handlers[@"reload"] = [[RCTReloadPackagerMethod alloc] initWithBridge:bridge]; + _handlers[@"pokeSamplingProfiler"] = [[RCTSamplingProfilerPackagerMethod alloc] initWithBridge:bridge]; [self connect]; } diff --git a/React/Modules/RCTDevSettings.mm b/React/Modules/RCTDevSettings.mm index 69d47d0c7be8..e9c0e660021b 100644 --- a/React/Modules/RCTDevSettings.mm +++ b/React/Modules/RCTDevSettings.mm @@ -141,7 +141,6 @@ - (instancetype)initWithDataSource:(id)dataSource { if (self = [super init]) { _dataSource = dataSource; - [self _configurePackagerConnection]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(jsLoaded:) @@ -156,6 +155,13 @@ - (instancetype)initWithDataSource:(id)dataSource return self; } +- (void)setBridge:(RCTBridge *)bridge +{ + RCTAssert(_bridge == nil, @"RCTDevSettings module should not be reused"); + _bridge = bridge; + [self _configurePackagerConnection]; +} + - (dispatch_queue_t)methodQueue { return dispatch_get_main_queue(); From 93f07ed31d90914aa61eb15ffe9ecd0038c5076b Mon Sep 17 00:00:00 2001 From: Paco Estevez Garcia Date: Mon, 15 May 2017 12:08:10 -0700 Subject: [PATCH 0102/1101] Inspector crashes with NetworkOnMainThreadException in Android Reviewed By: johnislarry Differential Revision: D5062290 fbshipit-source-id: 0307d2d950b6f54c36f882470c3ac4c5cfb1c5b7 --- .../InspectorPackagerConnection.java | 36 ++++++++++++------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/devsupport/InspectorPackagerConnection.java b/ReactAndroid/src/main/java/com/facebook/react/devsupport/InspectorPackagerConnection.java index 8f786b8c55c8..c328e25049a7 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/devsupport/InspectorPackagerConnection.java +++ b/ReactAndroid/src/main/java/com/facebook/react/devsupport/InspectorPackagerConnection.java @@ -10,6 +10,7 @@ import java.util.Map; import java.util.concurrent.TimeUnit; +import android.os.AsyncTask; import android.os.Handler; import android.os.Looper; @@ -52,7 +53,7 @@ public void sendOpenEvent(String pageId) { try { JSONObject payload = makePageIdPayload(pageId); sendEvent("open", payload); - } catch (JSONException | IOException e) { + } catch (JSONException e) { FLog.e(TAG, "Failed to open page", e); } } @@ -85,7 +86,7 @@ void closeAllConnections() { mInspectorConnections.clear(); } - private void handleConnect(JSONObject payload) throws JSONException, IOException { + private void handleConnect(JSONObject payload) throws JSONException { final String pageId = payload.getString("pageId"); Inspector.LocalConnection inspectorConnection = mInspectorConnections.remove(pageId); if (inspectorConnection != null) { @@ -99,7 +100,7 @@ private void handleConnect(JSONObject payload) throws JSONException, IOException public void onMessage(String message) { try { sendWrappedEvent(pageId, message); - } catch (IOException | JSONException e) { + } catch (JSONException e) { FLog.w(TAG, "Couldn't send event to packager", e); } } @@ -109,7 +110,7 @@ public void onDisconnect() { try { mInspectorConnections.remove(pageId); sendEvent("disconnect", makePageIdPayload(pageId)); - } catch (IOException | JSONException e) { + } catch (JSONException e) { FLog.w(TAG, "Couldn't send event to packager", e); } } @@ -131,7 +132,7 @@ private void handleDisconnect(JSONObject payload) throws JSONException { inspectorConnection.disconnect(); } - private void handleWrappedEvent(JSONObject payload) throws JSONException, IOException { + private void handleWrappedEvent(JSONObject payload) throws JSONException { final String pageId = payload.getString("pageId"); String wrappedEvent = payload.getString("wrappedEvent"); Inspector.LocalConnection inspectorConnection = mInspectorConnections.get(pageId); @@ -153,7 +154,7 @@ private JSONArray getPages() throws JSONException { return array; } - private void sendWrappedEvent(String pageId, String message) throws IOException, JSONException { + private void sendWrappedEvent(String pageId, String message) throws JSONException { JSONObject payload = new JSONObject(); payload.put("pageId", pageId); payload.put("wrappedEvent", message); @@ -161,7 +162,7 @@ private void sendWrappedEvent(String pageId, String message) throws IOException, } private void sendEvent(String name, Object payload) - throws JSONException, IOException { + throws JSONException { JSONObject jsonMessage = new JSONObject(); jsonMessage.put("event", name); jsonMessage.put("payload", payload); @@ -276,12 +277,21 @@ public void close() { } } - public void send(JSONObject object) throws IOException { - if (mWebSocket == null) { - return; - } - - mWebSocket.sendMessage(RequestBody.create(WebSocket.TEXT, object.toString())); + public void send(final JSONObject object) { + new AsyncTask() { + @Override + protected Void doInBackground(WebSocket... sockets) { + if (sockets == null || sockets.length == 0) { + return null; + } + try { + sockets[0].sendMessage(RequestBody.create(WebSocket.TEXT, object.toString())); + } catch (IOException e) { + FLog.w(TAG, "Couldn't send event to packager", e); + } + return null; + } + }.execute(mWebSocket); } private void abort(String message, Throwable cause) { From dc339f77f34f7ca00e9005a68168ee62c7e0659c Mon Sep 17 00:00:00 2001 From: Eli White Date: Mon, 15 May 2017 15:44:52 -0700 Subject: [PATCH 0103/1101] Adding mocks for missing native modules Reviewed By: fkgozali Differential Revision: D5052517 fbshipit-source-id: 649e0f01c3d8534b898690f9140d5fc610676041 --- jest/setup.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/jest/setup.js b/jest/setup.js index be9975027e6c..21336ab3e034 100644 --- a/jest/setup.js +++ b/jest/setup.js @@ -190,6 +190,12 @@ const mockNativeModules = { deleteTimer: jest.fn(), }, UIManager: { + AndroidViewPager: { + Commands: { + setPage: jest.fn(), + setPageWithoutAnimation: jest.fn(), + }, + }, blur: jest.fn(), createView: jest.fn(), dispatchViewManagerCommand: jest.fn(), From 36405d13ffc5ec25a2e0cf5d811d0fd767b0dfa5 Mon Sep 17 00:00:00 2001 From: Dmitry Petukhov Date: Mon, 15 May 2017 23:50:59 -0700 Subject: [PATCH 0104/1101] Implemented linear gradient fill in Android Summary: Partial implementation of "TODO(6352048): Support gradients etc.": linear gradient fill implemented. We implemented a custom Color Picker based on ReactART. screen shot 2016-12-19 at 12 27 09 pm Closes https://github.com/facebook/react-native/pull/11541 Differential Revision: D5061836 Pulled By: ericvicenti fbshipit-source-id: ec8b7a0a6f3d2d1a2c1b394d4960d3365ad6fb44 --- .../react/views/art/ARTShapeShadowNode.java | 69 ++++++++++++++++--- 1 file changed, 59 insertions(+), 10 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/art/ARTShapeShadowNode.java b/ReactAndroid/src/main/java/com/facebook/react/views/art/ARTShapeShadowNode.java index 195ef8fd4601..0cfa1ce97dff 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/art/ARTShapeShadowNode.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/art/ARTShapeShadowNode.java @@ -16,6 +16,9 @@ import android.graphics.Path; import android.graphics.RectF; import android.graphics.DashPathEffect; +import android.graphics.LinearGradient; +import android.graphics.Shader; +import android.graphics.Color; import com.facebook.common.logging.FLog; import com.facebook.react.bridge.JSApplicationIllegalArgumentException; @@ -42,9 +45,16 @@ public class ARTShapeShadowNode extends ARTVirtualNode { private static final int PATH_TYPE_LINETO = 2; private static final int PATH_TYPE_MOVETO = 0; + // For color type JS and ObjectiveC definitions counterparts + // refer to ReactNativeART.js and RCTConvert+ART.m + private static final int COLOR_TYPE_SOLID_COLOR = 0; + private static final int COLOR_TYPE_LINEAR_GRADIENT = 1; + private static final int COLOR_TYPE_RADIAL_GRADIENT = 2; + private static final int COLOR_TYPE_PATTERN = 3; + protected @Nullable Path mPath; private @Nullable float[] mStrokeColor; - private @Nullable float[] mFillColor; + private @Nullable float[] mBrushData; private @Nullable float[] mStrokeDash; private float mStrokeWidth = 1; private int mStrokeCap = CAP_ROUND; @@ -71,7 +81,7 @@ public void setStrokeDash(@Nullable ReadableArray strokeDash) { @ReactProp(name = "fill") public void setFill(@Nullable ReadableArray fillColors) { - mFillColor = PropHelper.toFloatArray(fillColors); + mBrushData = PropHelper.toFloatArray(fillColors); markUpdated(); } @@ -169,21 +179,60 @@ protected boolean setupStrokePaint(Paint paint, float opacity) { * if the fill should be drawn, {@code false} if not. */ protected boolean setupFillPaint(Paint paint, float opacity) { - if (mFillColor != null && mFillColor.length > 0) { + if (mBrushData != null && mBrushData.length > 0) { paint.reset(); paint.setFlags(Paint.ANTI_ALIAS_FLAG); paint.setStyle(Paint.Style.FILL); - int colorType = (int) mFillColor[0]; + int colorType = (int) mBrushData[0]; switch (colorType) { - case 0: + case COLOR_TYPE_SOLID_COLOR: paint.setARGB( - (int) (mFillColor.length > 4 ? mFillColor[4] * opacity * 255 : opacity * 255), - (int) (mFillColor[1] * 255), - (int) (mFillColor[2] * 255), - (int) (mFillColor[3] * 255)); + (int) (mBrushData.length > 4 ? mBrushData[4] * opacity * 255 : opacity * 255), + (int) (mBrushData[1] * 255), + (int) (mBrushData[2] * 255), + (int) (mBrushData[3] * 255)); + break; + case COLOR_TYPE_LINEAR_GRADIENT: + // For mBrushData format refer to LinearGradient and insertColorStopsIntoArray functions in ReactNativeART.js + if (mBrushData.length < 5) { + FLog.w(ReactConstants.TAG, + "[ARTShapeShadowNode setupFillPaint] expects 5 elements, received " + + mBrushData.length); + return false; + } + float gradientStartX = mBrushData[1] * mScale; + float gradientStartY = mBrushData[2] * mScale; + float gradientEndX = mBrushData[3] * mScale; + float gradientEndY = mBrushData[4] * mScale; + int stops = (mBrushData.length - 5) / 5; + int[] colors = null; + float[] positions = null; + if (stops > 0) { + colors = new int[stops]; + positions = new float[stops]; + for (int i=0; i Date: Tue, 16 May 2017 02:22:53 -0700 Subject: [PATCH 0105/1101] Fix a typo in IntegrationWithExistingApps.md. Summary: - [x] Explain the **motivation** for making this change. - [x] Provide a **test plan** demonstrating that the code is solid. - [x] (N/A) Match the **code formatting** of the rest of the codebase. - [x] Target the `master` branch, NOT a "stable" branch. Fixed a typo in documentation `IntegrationWithExistingApps.md`. `"Your should see"` -> `"You should see"` **Screenshots** Before: screen shot 2017-05-10 at 12 31 53 After: screen shot 2017-05-10 at 12 33 34 Closes https://github.com/facebook/react-native/pull/13903 Differential Revision: D5044045 Pulled By: javache fbshipit-source-id: fa4355cb26cae7de1b7fa12c3afbe9d39d7f230e --- docs/IntegrationWithExistingApps.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/IntegrationWithExistingApps.md b/docs/IntegrationWithExistingApps.md index 414741a8fa06..c35a410564a8 100644 --- a/docs/IntegrationWithExistingApps.md +++ b/docs/IntegrationWithExistingApps.md @@ -261,7 +261,7 @@ After you have created your `Podfile`, you are ready to install the React Native $ pod install ``` -Your should see output such as: +You should see output such as: ```bash Analyzing dependencies From 40a53918ecd827db6cbe699138c409043989cf72 Mon Sep 17 00:00:00 2001 From: Jean Lauliac Date: Tue, 16 May 2017 05:01:05 -0700 Subject: [PATCH 0106/1101] packager: TransformCache: trivial optimization wins Reviewed By: davidaurelio Differential Revision: D5068811 fbshipit-source-id: 74e4c3218581b2cb081cb7da7639356d0a7d0430 --- packager/src/lib/TransformCache.js | 63 +++++++++++++++++------------- 1 file changed, 36 insertions(+), 27 deletions(-) diff --git a/packager/src/lib/TransformCache.js b/packager/src/lib/TransformCache.js index ab1ab19a8502..eb98342acf4a 100644 --- a/packager/src/lib/TransformCache.js +++ b/packager/src/lib/TransformCache.js @@ -138,31 +138,37 @@ class TransformCache { */ _readSync(props: ReadTransformProps): TransformCacheResult { this._collectIfNecessarySync(props.cacheOptions); - const cacheFilePaths = this._getCacheFilePaths(props); - let metadata, transformedCode; try { - metadata = readMetadataFileSync(cacheFilePaths.metadata); - if (metadata == null) { - return {result: null, outdatedDependencies: EMPTY_ARRAY}; - } - const sourceHash = hashSourceCode(props); - if (sourceHash !== metadata.cachedSourceHash) { - return {result: null, outdatedDependencies: metadata.dependencies}; - } - transformedCode = fs.readFileSync(cacheFilePaths.transformedCode, 'utf8'); - const codeHash = crypto - .createHash('sha1') - .update(transformedCode) - .digest('hex'); - if (metadata.cachedResultHash !== codeHash) { - return {result: null, outdatedDependencies: metadata.dependencies}; - } + return this._readFilesSync(props); } catch (error) { if (error.code === 'ENOENT') { return {result: null, outdatedDependencies: EMPTY_ARRAY}; } throw error; } + } + + _readFilesSync(props: ReadTransformProps): TransformCacheResult { + const cacheFilePaths = this._getCacheFilePaths(props); + const metadata = readMetadataFileSync(cacheFilePaths.metadata); + if (metadata == null) { + return {result: null, outdatedDependencies: EMPTY_ARRAY}; + } + const sourceHash = hashSourceCode(props); + if (sourceHash !== metadata.cachedSourceHash) { + return {result: null, outdatedDependencies: metadata.dependencies}; + } + const transformedCode = fs.readFileSync( + cacheFilePaths.transformedCode, + 'utf8', + ); + const codeHash = crypto + .createHash('sha1') + .update(transformedCode) + .digest('hex'); + if (metadata.cachedResultHash !== codeHash) { + return {result: null, outdatedDependencies: metadata.dependencies}; + } return { result: { code: transformedCode, @@ -336,15 +342,7 @@ function readMetadataFileSync( sourceMap: ?MappingsMap, } { const metadataStr = fs.readFileSync(metadataFilePath, 'utf8'); - let metadata; - try { - metadata = JSON.parse(metadataStr); - } catch (error) { - if (error instanceof SyntaxError) { - return null; - } - throw error; - } + const metadata = tryParseJSON(metadataStr); if (!Array.isArray(metadata)) { return null; } @@ -375,6 +373,17 @@ function readMetadataFileSync( }; } +function tryParseJSON(str: string): any { + try { + return JSON.parse(str); + } catch (error) { + if (error instanceof SyntaxError) { + return null; + } + throw error; + } +} + function hashSourceCode(props: { filePath: string, sourceCode: string, From 280ec6e1ebf5bd607fcb3786ae261e34dfe76adb Mon Sep 17 00:00:00 2001 From: David Aurelio Date: Tue, 16 May 2017 05:09:59 -0700 Subject: [PATCH 0107/1101] Append `sourceMappingURL` in bundle building function Summary: We appended a `sourceMappingURL` in the same place where we write out the files. This will break output that is not a plain text file, like Random Access Bundles. This moves the corresponding logic into the function that builds the bundle. Reviewed By: cpojer Differential Revision: D5061039 fbshipit-source-id: 17fadb5a687c8d4b1f29439e8bf946bae58eb2d9 --- packager/src/ModuleGraph/output/as-plain-bundle.js | 6 +++++- packager/src/ModuleGraph/types.flow.js | 3 ++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/packager/src/ModuleGraph/output/as-plain-bundle.js b/packager/src/ModuleGraph/output/as-plain-bundle.js index c05d67d36a3b..601cf5562cb9 100644 --- a/packager/src/ModuleGraph/output/as-plain-bundle.js +++ b/packager/src/ModuleGraph/output/as-plain-bundle.js @@ -16,7 +16,7 @@ const {addModuleIdsToModuleWrapper} = require('./util'); import type {OutputFn} from '../types.flow'; module.exports = ( - (modules, filename, idForPath) => { + (modules, filename, idForPath, sourceMapPath) => { let code = ''; let line = 0; const sections = []; @@ -37,6 +37,10 @@ module.exports = ( line += countLines(moduleCode); } + if (sourceMapPath) { + code += `/*# sourceMappingURL=${sourceMapPath}*/`; + } + return {code, map: createIndexMap({file: filename, sections})}; }: OutputFn); diff --git a/packager/src/ModuleGraph/types.flow.js b/packager/src/ModuleGraph/types.flow.js index 8809cfbda72a..a7a3cb782d23 100644 --- a/packager/src/ModuleGraph/types.flow.js +++ b/packager/src/ModuleGraph/types.flow.js @@ -72,8 +72,9 @@ export type Module = {| export type OutputFn = ( modules: Iterable, - filename?: string, + filename: string, idForPath: IdForPathFn, + sourceMapPath?: string, ) => OutputResult; type OutputResult = {| From 98fc4373fc0143abadda01013749074706d03c55 Mon Sep 17 00:00:00 2001 From: Jean Lauliac Date: Tue, 16 May 2017 09:04:48 -0700 Subject: [PATCH 0108/1101] packager: ResolutionRequest: unify asset resolution Summary: The existing resolution logic of assets: * goes over all the files of the asset's directory for every resolution request; * duplicates the parsing logic of `AssetPaths` by building up a custom regex for each resolution request. This changeset proposes to tweak this by building an index for each particular directory in which we're looking for assets, so that we don't have to crawl a single directory twice, and so that it reuses the logic of `AssetPaths.tryParse()` for determining variants. Reviewed By: davidaurelio Differential Revision: D5062435 fbshipit-source-id: 708fc5612f57b14565499fad741701269438c806 --- .../src/ModuleGraph/node-haste/node-haste.js | 9 +- .../src/node-haste/AssetResolutionCache.js | 134 ++++++++++++++++++ packager/src/node-haste/DependencyGraph.js | 16 ++- .../DependencyGraph/ResolutionRequest.js | 36 ++--- .../src/node-haste/FilesByDirNameIndex.js | 14 +- 5 files changed, 164 insertions(+), 45 deletions(-) create mode 100644 packager/src/node-haste/AssetResolutionCache.js diff --git a/packager/src/ModuleGraph/node-haste/node-haste.js b/packager/src/ModuleGraph/node-haste/node-haste.js index 26c008f3cb25..39c0ee070d08 100644 --- a/packager/src/ModuleGraph/node-haste/node-haste.js +++ b/packager/src/ModuleGraph/node-haste/node-haste.js @@ -21,6 +21,7 @@ import type { TransformedCodeFile, } from '../types.flow'; +const AssetResolutionCache = require('../../node-haste/AssetResolutionCache'); const DependencyGraphHelpers = require('../../node-haste/DependencyGraph/DependencyGraphHelpers'); const FilesByDirNameIndex = require('../../node-haste/FilesByDirNameIndex'); const HasteFS = require('./HasteFS'); @@ -110,6 +111,11 @@ exports.createResolveFn = function(options: ResolveOptions): ResolveFn { const hasteMapBuilt = hasteMap.build(); const resolutionRequests = {}; const filesByDirNameIndex = new FilesByDirNameIndex(hasteMap.getAllFiles()); + const assetResolutionCache = new AssetResolutionCache({ + assetExtensions: new Set(assetExts), + getDirFiles: dirPath => filesByDirNameIndex.getAllFiles(dirPath), + platforms, + }); return (id, source, platform, _, callback) => { let resolutionRequest = resolutionRequests[platform]; if (!resolutionRequest) { @@ -119,11 +125,12 @@ exports.createResolveFn = function(options: ResolveOptions): ResolveFn { extraNodeModules, hasteFS, helpers, - matchFiles: filesByDirNameIndex.match.bind(filesByDirNameIndex), moduleCache, moduleMap: getFakeModuleMap(hasteMap), platform, preferNativePlatform: true, + resolveAsset: (dirPath, assetName) => + assetResolutionCache.resolve(dirPath, assetName, platform), sourceExts, }); } diff --git a/packager/src/node-haste/AssetResolutionCache.js b/packager/src/node-haste/AssetResolutionCache.js new file mode 100644 index 000000000000..e96a7c15b98b --- /dev/null +++ b/packager/src/node-haste/AssetResolutionCache.js @@ -0,0 +1,134 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * @flow + * @format + */ + +'use strict'; + +const AssetPaths = require('./lib/AssetPaths'); +const MapWithDefaults = require('./lib/MapWithDefaults'); + +import type {AssetData} from './lib/AssetPaths'; + +type Options = {| + /** + * Files that don't match these extensions are discarded. Assets always need + * an extension. + */ + +assetExtensions: Set, + /** + * This should return all the files of the specified directory. + */ + +getDirFiles: (dirPath: string) => $ReadOnlyArray, + /** + * All the valid platforms so as to support platform extensions, ex. + * `foo.ios.png`. A platform that's no in this set will be considered part of + * the asset name. Ex. `foo.smth.png`, if `smth` is not a valid platform, will + * be resolved by its full name `foo.smth.png`. + */ + +platforms: Set, +|}; + +type AssetInfo = {platform: ?string, fileName: string}; +type InfoByAssetName = Map>; + +const EMPTY_ARRAY = []; + +/** + * Lazily build an index of assets for the directories in which we're looking + * for specific assets. For example if we're looking for `foo.png` in a `bar` + * directory, we'll look at all the files there and identify all the assets + * related to `foo.png`, for example `foo@2x.png` and `foo.ios.png`. + */ +class AssetResolutionCache { + _assetsByDirPath: MapWithDefaults; + _opts: Options; + + constructor(options: Options) { + this._assetsByDirPath = new MapWithDefaults(this._findAssets); + this._opts = options; + } + + /** + * The cache needs to be emptied if any file changes. This could be made more + * selective if performance demands it: for example, we could clear + * exclusively the directories in which files have changed. But that'd be + * more error-prone. + */ + clear() { + this._assetsByDirPath.clear(); + } + + /** + * Get the file paths of all the variants (resolutions, platforms, etc.) of a + * particular asset name, only looking at a specific directory. If needed this + * function could be changed to return pre-parsed information about the assets + * such as the resolution. + */ + resolve( + dirPath: string, + assetName: string, + platform: ?string, + ): $ReadOnlyArray { + const results = this._assetsByDirPath.get(dirPath); + const assets = results.get(assetName); + if (assets == null) { + return EMPTY_ARRAY; + } + return assets + .filter(asset => asset.platform == null || asset.platform === platform) + .map(asset => asset.fileName); + } + + /** + * Build an index of assets for a particular directory. Several file can + * fulfill a single asset name, for example the different resolutions or + * platforms: ex. `foo.png` could contain `foo@2x.png`, `foo.ios.js`, etc. + */ + _findAssets = (dirPath: string) => { + const results = new Map(); + const fileNames = this._opts.getDirFiles(dirPath); + for (let i = 0; i < fileNames.length; ++i) { + const fileName = fileNames[i]; + const assetData = AssetPaths.tryParse(fileName, this._opts.platforms); + if (assetData == null || !this._isValidAsset(assetData)) { + continue; + } + getWithDefaultArray(results, assetData.assetName).push({ + plaform: assetData.platform, + fileName, + }); + } + return results; + }; + + _isValidAsset(assetData: AssetData): boolean { + return this._opts.assetExtensions.has(assetData.type); + } +} + +/** + * Used instead of `MapWithDefaults` so that we don't create empty arrays + * anymore once the index is built. + */ +function getWithDefaultArray( + map: Map>, + key: TK, +): Array { + let el = map.get(key); + if (el != null) { + return el; + } + el = []; + map.set(key, el); + return el; +} + +module.exports = AssetResolutionCache; diff --git a/packager/src/node-haste/DependencyGraph.js b/packager/src/node-haste/DependencyGraph.js index b4f6a7fc81b7..9eecbd8c7292 100644 --- a/packager/src/node-haste/DependencyGraph.js +++ b/packager/src/node-haste/DependencyGraph.js @@ -11,6 +11,7 @@ 'use strict'; +const AssetResolutionCache = require('./AssetResolutionCache'); const DependencyGraphHelpers = require('./DependencyGraph/DependencyGraphHelpers'); const FilesByDirNameIndex = require('./FilesByDirNameIndex'); const JestHasteMap = require('jest-haste-map'); @@ -70,6 +71,7 @@ const JEST_HASTE_MAP_CACHE_BREAKER = 1; class DependencyGraph extends EventEmitter { + _assetResolutionCache: AssetResolutionCache; _opts: Options; _filesByDirNameIndex: FilesByDirNameIndex; _haste: JestHasteMap; @@ -88,13 +90,17 @@ class DependencyGraph extends EventEmitter { invariant(config.opts.maxWorkerCount >= 1, 'worker count must be greater or equal to 1'); this._opts = config.opts; this._filesByDirNameIndex = new FilesByDirNameIndex(config.initialHasteFS.getAllFiles()); + this._assetResolutionCache = new AssetResolutionCache({ + assetExtensions: new Set(config.opts.assetExts), + getDirFiles: dirPath => this._filesByDirNameIndex.getAllFiles(dirPath), + platforms: config.opts.platforms, + }); this._haste = config.haste; this._hasteFS = config.initialHasteFS; this._moduleMap = config.initialModuleMap; this._helpers = new DependencyGraphHelpers(this._opts); this._haste.on('change', this._onHasteChange.bind(this)); this._moduleCache = this._createModuleCache(); - (this: any)._matchFilesByDirAndPattern = this._matchFilesByDirAndPattern.bind(this); } static _createHaste(opts: Options): JestHasteMap { @@ -148,6 +154,7 @@ class DependencyGraph extends EventEmitter { _onHasteChange({eventsQueue, hasteFS, moduleMap}) { this._hasteFS = hasteFS; this._filesByDirNameIndex = new FilesByDirNameIndex(hasteFS.getAllFiles()); + this._assetResolutionCache.clear(); this._moduleMap = moduleMap; eventsQueue.forEach(({type, filePath, stat}) => this._moduleCache.processFileChange(type, filePath, stat) @@ -225,11 +232,12 @@ class DependencyGraph extends EventEmitter { extraNodeModules: this._opts.extraNodeModules, hasteFS: this._hasteFS, helpers: this._helpers, - matchFiles: this._matchFilesByDirAndPattern, moduleCache: this._moduleCache, moduleMap: this._moduleMap, platform, preferNativePlatform: this._opts.preferNativePlatform, + resolveAsset: (dirPath, assetName) => + this._assetResolutionCache.resolve(dirPath, assetName, platform), sourceExts: this._opts.sourceExts, }); @@ -243,10 +251,6 @@ class DependencyGraph extends EventEmitter { }).then(() => response); } - _matchFilesByDirAndPattern(dirName: string, pattern: RegExp) { - return this._filesByDirNameIndex.match(dirName, pattern); - } - matchFilesByPattern(pattern: RegExp) { return Promise.resolve(this._hasteFS.matchFiles(pattern)); } diff --git a/packager/src/node-haste/DependencyGraph/ResolutionRequest.js b/packager/src/node-haste/DependencyGraph/ResolutionRequest.js index 21ac79123e03..4a973778db14 100644 --- a/packager/src/node-haste/DependencyGraph/ResolutionRequest.js +++ b/packager/src/node-haste/DependencyGraph/ResolutionRequest.js @@ -12,7 +12,6 @@ 'use strict'; -const AssetPaths = require('../lib/AssetPaths'); const AsyncTaskGroup = require('../lib/AsyncTaskGroup'); const MapWithDefaults = require('../lib/MapWithDefaults'); @@ -78,22 +77,17 @@ export type ModuleishCache = { getAssetModule(path: string): TModule, }; -type MatchFilesByDirAndPattern = ( - dirName: string, - pattern: RegExp, -) => Array; - type Options = {| +dirExists: DirExistsFn, +entryPath: string, +extraNodeModules: ?Object, +hasteFS: HasteFS, +helpers: DependencyGraphHelpers, - +matchFiles: MatchFilesByDirAndPattern, +moduleCache: ModuleishCache, +moduleMap: ModuleMap, +platform: ?string, +preferNativePlatform: boolean, + +resolveAsset: (dirPath: string, assetName: string) => $ReadOnlyArray, +sourceExts: Array, |}; @@ -113,8 +107,6 @@ function tryResolveSync(action: () => T, secondaryAction: () => T): T { } } -const EMPTY_SET = new Set(); - class ResolutionRequest { _doesFileExist = filePath => this._options.hasteFS.exists(filePath); _immediateResolutionCache: {[key: string]: TModule}; @@ -619,26 +611,18 @@ class ResolutionRequest { fromModule: TModule, toModule: string, ): TModule { - const {name, type} = AssetPaths.parse(potentialModulePath, EMPTY_SET); - - let pattern = '^' + name + '(@[\\d\\.]+x)?'; - if (this._options.platform != null) { - pattern += '(\\.' + this._options.platform + ')?'; - } - pattern += '\\.' + type + '$'; - - const dirname = path.dirname(potentialModulePath); - const assetFiles = this._options.matchFiles(dirname, new RegExp(pattern)); - // We arbitrarly grab the lowest, because scale selection will happen - // somewhere else. Always the lowest so that it's stable between builds. - const assetFile = getArrayLowestItem(assetFiles); - if (assetFile) { - return this._options.moduleCache.getAssetModule(assetFile); + const dirPath = path.dirname(potentialModulePath); + const baseName = path.basename(potentialModulePath); + const assetNames = this._options.resolveAsset(dirPath, baseName); + const assetName = getArrayLowestItem(assetNames); + if (assetName != null) { + const assetPath = path.join(dirPath, assetName); + return this._options.moduleCache.getAssetModule(assetPath); } throw new UnableToResolveError( fromModule, toModule, - `Directory \`${dirname}' doesn't contain asset \`${name}'`, + `Directory \`${dirPath}' doesn't contain asset \`${baseName}'`, ); } @@ -804,7 +788,7 @@ function isRelativeImport(filePath) { return /^[.][.]?(?:[/]|$)/.test(filePath); } -function getArrayLowestItem(a: Array): string | void { +function getArrayLowestItem(a: $ReadOnlyArray): string | void { if (a.length === 0) { return undefined; } diff --git a/packager/src/node-haste/FilesByDirNameIndex.js b/packager/src/node-haste/FilesByDirNameIndex.js index 10af60cda22b..440a8e09f67f 100644 --- a/packager/src/node-haste/FilesByDirNameIndex.js +++ b/packager/src/node-haste/FilesByDirNameIndex.js @@ -40,18 +40,8 @@ class FilesByDirNameIndex { } } - match(dirName: string, pattern: RegExp): Array { - const results = []; - const dir = this._filesByDirName.get(dirName); - if (dir === undefined) { - return []; - } - for (let i = 0; i < dir.length; ++i) { - if (pattern.test(dir[i])) { - results.push(path.join(dirName, dir[i])); - } - } - return results; + getAllFiles(dirPath: string): $ReadOnlyArray { + return this._filesByDirName.get(dirPath) || []; } } From ff42878a5c4522c5029177d1d1c0ac4de4c04ee8 Mon Sep 17 00:00:00 2001 From: Valentin Shergin Date: Tue, 16 May 2017 09:39:44 -0700 Subject: [PATCH 0109/1101] Introducing `-[RCTUIManager shadowViewForReactTag:]` Reviewed By: javache Differential Revision: D5042093 fbshipit-source-id: 7c154b660f51de6d575f3c4a70321415512e92a2 --- React/Modules/RCTUIManager.h | 5 +++++ React/Modules/RCTUIManager.m | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/React/Modules/RCTUIManager.h b/React/Modules/RCTUIManager.h index ae59a2da57a4..b94b2db03b44 100644 --- a/React/Modules/RCTUIManager.h +++ b/React/Modules/RCTUIManager.h @@ -81,6 +81,11 @@ RCT_EXTERN NSString *const RCTUIManagerRootViewKey; */ - (UIView *)viewForReactTag:(NSNumber *)reactTag; +/** + * Gets the shadow view associated with a reactTag. + */ +- (RCTShadowView *)shadowViewForReactTag:(NSNumber *)reactTag; + /** * Set the available size (`availableSize` property) for a root view. * This might be used in response to changes in external layout constraints. diff --git a/React/Modules/RCTUIManager.m b/React/Modules/RCTUIManager.m index 6423995755cb..57f2f0e2bac4 100644 --- a/React/Modules/RCTUIManager.m +++ b/React/Modules/RCTUIManager.m @@ -409,6 +409,12 @@ - (UIView *)viewForReactTag:(NSNumber *)reactTag return _viewRegistry[reactTag]; } +- (RCTShadowView *)shadowViewForReactTag:(NSNumber *)reactTag +{ + RCTAssertUIManagerQueue(); + return _shadowViewRegistry[reactTag]; +} + - (void)setAvailableSize:(CGSize)availableSize forRootView:(UIView *)rootView { RCTAssertMainQueue(); From 8525aac769a08ca63fd932ac19c6bbbee81d39fb Mon Sep 17 00:00:00 2001 From: Pieter De Baets Date: Tue, 16 May 2017 09:40:36 -0700 Subject: [PATCH 0110/1101] Ensure enqueueJSCall's completion block is always dispatched after the actual JS call Reviewed By: mhorowitz Differential Revision: D4985694 fbshipit-source-id: 50ab14e7088a53e03d5ee70c8ea1e245f531dac1 --- React/CxxBridge/RCTCxxBridge.mm | 42 ++++++++++++++++++++------------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/React/CxxBridge/RCTCxxBridge.mm b/React/CxxBridge/RCTCxxBridge.mm index 8dd9179bf7dd..5873404c62e2 100644 --- a/React/CxxBridge/RCTCxxBridge.mm +++ b/React/CxxBridge/RCTCxxBridge.mm @@ -236,12 +236,18 @@ - (void)_tryAndHandleError:(dispatch_block_t)block } } -- (void)executeBlockOnJavaScriptThread:(dispatch_block_t)block +/** + * Ensure block is run on the JS thread. If we're already on the JS thread, the block will execute synchronously. + * If we're not on the JS thread, the block is dispatched to that thread. Any errors encountered while executing + * the block will go through handleError: + */ +- (void)ensureOnJavaScriptThread:(dispatch_block_t)block { RCTAssert(_jsThread, @"This method must not be called before the JS thread is created"); - // This does not use _jsMessageThread because it may be called early - // before the runloop reference is captured and _jsMessageThread is valid. + // This does not use _jsMessageThread because it may be called early before the runloop reference is captured + // and _jsMessageThread is valid. _jsMessageThread also doesn't allow us to shortcut the dispatch if we're + // already on the correct thread. if ([NSThread currentThread] == _jsThread) { [self _tryAndHandleError:block]; @@ -703,7 +709,7 @@ - (void)executeSourceCode:(NSData *)sourceCode sync:(BOOL)sync object:self->_parentBridge userInfo:@{@"bridge": self}]; // Starting the display link is not critical to startup, so do it last - [self executeBlockOnJavaScriptThread:^{ + [self ensureOnJavaScriptThread:^{ // Register the display link to start sending js calls after everything is setup [self->_displayLink addToRunLoop:[NSRunLoop currentRunLoop]]; }]; @@ -840,7 +846,7 @@ - (void)dispatchBlock:(dispatch_block_t)block queue:(dispatch_queue_t)queue { if (queue == RCTJSThread) { - [self executeBlockOnJavaScriptThread:block]; + [self ensureOnJavaScriptThread:block]; } else if (queue) { dispatch_async(queue, block); } @@ -883,7 +889,7 @@ - (void)invalidate } dispatch_group_notify(group, dispatch_get_main_queue(), ^{ - [self executeBlockOnJavaScriptThread:^{ + [self ensureOnJavaScriptThread:^{ [self->_displayLink invalidate]; self->_displayLink = nil; @@ -949,7 +955,7 @@ - (void)_runAfterLoad:(dispatch_block_t)block OSAtomicDecrement32Barrier(&self->_pendingCount); } }; - [self executeBlockOnJavaScriptThread:jsQueueBlock]; + [self ensureOnJavaScriptThread:jsQueueBlock]; } else { // Phase 2/Phase D: blocks are executed directly, adding work to the JS queue. block(); @@ -1002,8 +1008,10 @@ - (void)enqueueJSCall:(NSString *)module method:(NSString *)method args:(NSArray self->_reactInstance->callJSFunction([module UTF8String], [method UTF8String], [RCTConvert folly_dynamic:args ?: @[]]); + // ensureOnJavaScriptThread may execute immediately, so use jsMessageThread, to make sure + // the block is invoked after callJSFunction if (completion) { - [self executeBlockOnJavaScriptThread:completion]; + self->_jsMessageThread->runOnQueue(completion); } } }]; @@ -1052,8 +1060,6 @@ - (void)enqueueApplicationScript:(NSData *)script url:(NSURL *)url onComplete:(dispatch_block_t)onComplete { - RCTAssert(onComplete != nil, @"onComplete block passed in should be non-nil"); - RCT_PROFILE_BEGIN_EVENT(RCTProfileTagAlways, @"-[RCTCxxBridge enqueueApplicationScript]", nil); [self _tryAndHandleError:^{ @@ -1069,15 +1075,18 @@ - (void)enqueueApplicationScript:(NSData *)script } else if (self->_reactInstance) { self->_reactInstance->loadScriptFromString(std::make_unique(script), [[url absoluteString] UTF8String]); + } else { + throw std::logic_error("Attempt to call loadApplicationScript: on uninitialized bridge"); } }]; RCT_PROFILE_END_EVENT(RCTProfileTagAlways, @""); // Assumes that onComplete can be called when the next block on the JS thread is scheduled - [self executeBlockOnJavaScriptThread:^{ - onComplete(); - }]; + if (onComplete) { + RCTAssert(_jsMessageThread != nullptr, @"Cannot invoke completion without jsMessageThread"); + _jsMessageThread->runOnQueue(onComplete); + } } - (void)executeApplicationScriptSync:(NSData *)script url:(NSURL *)url @@ -1097,8 +1106,7 @@ - (void)executeApplicationScriptSync:(NSData *)script url:(NSURL *)url self->_reactInstance->loadScriptFromStringSync(std::make_unique(script), [[url absoluteString] UTF8String]); } else { - throw std::logic_error( - "Attempt to call loadApplicationScriptSync: on uninitialized bridge"); + throw std::logic_error("Attempt to call loadApplicationScriptSync: on uninitialized bridge"); } }]; } @@ -1183,7 +1191,7 @@ - (void)startProfiling { RCTAssertMainQueue(); - [self executeBlockOnJavaScriptThread:^{ + [self ensureOnJavaScriptThread:^{ #if WITH_FBSYSTRACE [RCTFBSystrace registerCallbacks]; #endif @@ -1195,7 +1203,7 @@ - (void)stopProfiling:(void (^)(NSData *))callback { RCTAssertMainQueue(); - [self executeBlockOnJavaScriptThread:^{ + [self ensureOnJavaScriptThread:^{ RCTProfileEnd(self, ^(NSString *log) { NSData *logData = [log dataUsingEncoding:NSUTF8StringEncoding]; callback(logData); From 06993fb7801b53e4b98f909aae02bb0707489c51 Mon Sep 17 00:00:00 2001 From: Nitin George Date: Tue, 16 May 2017 10:44:59 -0700 Subject: [PATCH 0111/1101] Fix - NetInfoModule intialization Reviewed By: AaaChiuuu Differential Revision: D5065578 fbshipit-source-id: 618fbd036bbcbdcafe751802380c1047375ccf19 --- .../java/com/facebook/react/modules/netinfo/NetInfoModule.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/modules/netinfo/NetInfoModule.java b/ReactAndroid/src/main/java/com/facebook/react/modules/netinfo/NetInfoModule.java index 3ed157d650fb..487869f31502 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/modules/netinfo/NetInfoModule.java +++ b/ReactAndroid/src/main/java/com/facebook/react/modules/netinfo/NetInfoModule.java @@ -47,7 +47,7 @@ public class NetInfoModule extends ReactContextBaseJavaModule private final ConnectivityBroadcastReceiver mConnectivityBroadcastReceiver; private boolean mNoNetworkPermission = false; - private String mConnectivity = ""; + private String mConnectivity = CONNECTION_TYPE_UNKNOWN; public NetInfoModule(ReactApplicationContext reactContext) { super(reactContext); From 4a225f79a374dfe02e5417fd198a70e65e5d1992 Mon Sep 17 00:00:00 2001 From: "Andrew Y. Chen" Date: Tue, 16 May 2017 11:05:11 -0700 Subject: [PATCH 0112/1101] Make ReactShadowNode's toString useful Reviewed By: AaaChiuuu Differential Revision: D5054307 fbshipit-source-id: af548077e9efabcdd9d86c3c06f6408a022762b8 --- .../react/uimanager/ReactShadowNode.java | 30 +++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactShadowNode.java b/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactShadowNode.java index afbf01ef386e..3c8d92369913 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactShadowNode.java +++ b/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactShadowNode.java @@ -777,11 +777,37 @@ public void setMeasureFunction(YogaMeasureFunction measureFunction) { @Override public String toString() { + StringBuilder sb = new StringBuilder(); + toStringWithIndentation(sb, 0); + return sb.toString(); + } + + private void toStringWithIndentation(StringBuilder result, int level) { + // Spaces and tabs are dropped by IntelliJ logcat integration, so rely on __ instead. + for (int i = 0; i < level; ++i) { + result.append("__"); + } + + result + .append(getClass().getSimpleName()) + .append(" "); if (mYogaNode != null) { - return mYogaNode.toString(); + result + .append(getLayoutWidth()) + .append(",") + .append(getLayoutHeight()); + } else { + result.append("(virtual node)"); } + result.append("\n"); - return getClass().getSimpleName() + " (virtual node)"; + if (getChildCount() == 0) { + return; + } + + for (int i = 0; i < getChildCount(); i++) { + getChildAt(i).toStringWithIndentation(result, level + 1); + } } public void dispose() { From a15ec83e6c81c8c38717450e093c88b8b36d9bd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A9ctor=20Ramos?= Date: Tue, 16 May 2017 11:21:48 -0700 Subject: [PATCH 0113/1101] Updated Android Studio steps Summary: Clarified some steps unique to the Windows installer. Closes https://github.com/facebook/react-native/pull/13983 Differential Revision: D5065884 Pulled By: hramos fbshipit-source-id: ab47ad7e7fcf10f8b44ab209807d661c465b76a3 --- docs/GettingStarted.md | 91 ++++++++++++------ ...AndroidEnvironmentVariableANDROID_HOME.png | Bin 0 -> 5829 bytes .../img/AndroidSDKManagerInstallsMacOS.png | Bin 0 -> 48470 bytes .../img/AndroidSDKManagerInstallsWindows.png | Bin 0 -> 10584 bytes ...Manager.png => AndroidSDKManagerMacOS.png} | Bin .../img/AndroidSDKManagerSDKToolsMacOS.png | Bin 0 -> 309465 bytes .../img/AndroidSDKManagerSDKToolsWindows.png | Bin 0 -> 53434 bytes .../img/AndroidSDKManagerWindows.png | Bin 0 -> 75490 bytes ...oidSuccess.png => AndroidSuccessMacOS.png} | Bin .../img/AndroidSuccessWindows.png | Bin 0 -> 66384 bytes ...droid-sdk-environment-variable-windows.png | Bin 28729 -> 0 bytes 11 files changed, 62 insertions(+), 29 deletions(-) create mode 100644 website/src/react-native/img/AndroidEnvironmentVariableANDROID_HOME.png create mode 100644 website/src/react-native/img/AndroidSDKManagerInstallsMacOS.png create mode 100644 website/src/react-native/img/AndroidSDKManagerInstallsWindows.png rename website/src/react-native/img/{AndroidSDKManager.png => AndroidSDKManagerMacOS.png} (100%) create mode 100644 website/src/react-native/img/AndroidSDKManagerSDKToolsMacOS.png create mode 100644 website/src/react-native/img/AndroidSDKManagerSDKToolsWindows.png create mode 100644 website/src/react-native/img/AndroidSDKManagerWindows.png rename website/src/react-native/img/{AndroidSuccess.png => AndroidSuccessMacOS.png} (100%) create mode 100644 website/src/react-native/img/AndroidSuccessWindows.png delete mode 100644 website/src/react-native/img/react-native-android-sdk-environment-variable-windows.png diff --git a/docs/GettingStarted.md b/docs/GettingStarted.md index ec907b41041d..eef8a5dfa0f4 100644 --- a/docs/GettingStarted.md +++ b/docs/GettingStarted.md @@ -211,15 +211,13 @@ Setting up your development environment can be somewhat tedious if you're new to -#### 1. Download and install Android Studio +#### 1. Install Android Studio -Android Studio provides the Android SDK and AVD (emulator) required to run and test your React Native apps. [Download Android Studio](https://developer.android.com/studio/index.html), then follow the [installation instructions](https://developer.android.com/studio/install.html). Choose `Custom` installation when prompted by the Setup Wizard, and proceed to the next step. +Android Studio provides the Android SDK and Android Virtual Device (emulator) required to run and test your React Native apps. Download and install [Android Studio](https://developer.android.com/studio/index.html). - - -#### 2. Install the AVD and HAXM +Once the installation process is completed, launch Android Studio. Choose "Custom" when prompted to select an installation type. Make sure the boxes next to all of the following are checked: -Android Virtual Devices allow you to run Android apps on your computer without the need for an actual Android phone or tablet. Choose `Custom` installation when running Android Studio for the first time. Make sure the boxes next to all of the following are checked: + - `Android SDK` - `Android SDK Platform` @@ -228,27 +226,29 @@ Android Virtual Devices allow you to run Android apps on your computer without t Then, click "Next" to install all of these components. -> If you've already installed Android Studio before, you can still install HAXM ([Windows](https://software.intel.com/en-us/android/articles/installation-instructions-for-intel-hardware-accelerated-execution-manager-windows)|[Mac](https://software.intel.com/en-us/android/articles/installation-instructions-for-intel-hardware-accelerated-execution-manager-mac-os-x)) without performing a custom installation. - -#### 2. Install the AVD and configure VM acceleration - -Android Virtual Devices allow you to run Android apps on your computer without the need for an actual Android phone or tablet. Choose `Custom` installation when running Android Studio for the first time. Make sure the boxes next to all of the following are checked: - - `Android SDK` - `Android SDK Platform` - `Android Virtual Device` Click "Next" to install all of these components, then [configure VM acceleration](https://developer.android.com/studio/run/emulator-acceleration.html#vm-linux) on your system. - + + +> You may also install Intel ® HAXM by following [these instructions](https://software.intel.com/en-us/android/articles/installation-instructions-for-intel-hardware-accelerated-execution-manager-windows). + + + +> You may also install Intel ® HAXM by following [these instructions](https://software.intel.com/en-us/android/articles/installation-instructions-for-intel-hardware-accelerated-execution-manager-mac-os-x). + + -#### 3. Install the Android 6.0 (Marshmallow) SDK +#### 2. Install the Android 6.0 (Marshmallow) SDK -Android Studio installs the most recent Android SDK by default. React Native, however, requires the `Android 6.0 (Marshmallow)` SDK. To install it, launch the SDK Manager, click on "Configure" > "SDK Manager" in the "Welcome to Android Studio" screen. +Android Studio installs the most recent Android SDK by default. React Native, however, requires the `Android 6.0 (Marshmallow)` SDK. You can use the SDK Manager to install additional SDK platforms. To access the SDK Manager, click on "Configure", then select "SDK Manager" from the "Welcome to Android Studio" screen. -> The SDK Manager can also be found within the Android Studio "Preferences" menu, under **Appearance & Behavior** → **System Settings** → **Android SDK**. +> The SDK Manager can also be found within the Android Studio "Preferences" dialog, under **Appearance & Behavior** → **System Settings** → **Android SDK**. Select the "SDK Platforms" tab from within the SDK Manager, then check the box next to "Show Package Details" in the bottom right corner. Look for and expand the `Android 6.0 (Marshmallow)` entry, then make sure the following items are all checked: @@ -257,15 +257,41 @@ Select the "SDK Platforms" tab from within the SDK Manager, then check the box n - `Intel x86 Atom_64 System Image` - `Google APIs Intel x86 Atom_64 System Image` -![Android SDK Manager](img/AndroidSDKManager.png) + + +![Android SDK Manager](img/AndroidSDKManagerMacOS.png) -Next, select the "SDK Tools" tab and check the box next to "Show Package Details" here as well. Look for and expand the "Android SDK Build Tools" entry, then make sure that `Android SDK Build-Tools 23.0.1` is selected. + + +![Android SDK Manager](img/AndroidSDKManagerWindows.png) + + + +Next, select the "SDK Tools" tab and check the box next to "Show Package Details" here as well. Look for and expand the "Android SDK Build-Tools" entry, then make sure that `23.0.1` is selected. + + + +![Android SDK Manager - 23.0.1 Build Tools](img/AndroidSDKManagerSDKToolsMacOS.png) + + + +![Android SDK Manager - 23.0.1 Build Tools](img/AndroidSDKManagerSDKToolsWindows.png) + + Finally, click "Apply" to download and install the Android SDK and related build tools. + + +![Android SDK Manager - Installs](img/AndroidSDKManagerInstallsMacOS.png) + + + +![Android SDK Manager - Installs](img/AndroidSDKManagerInstallsWindows.png) + -#### 4. Set up the ANDROID_HOME environment variable +#### 3. Set up the ANDROID_HOME environment variable The React Native command line interface requires the `ANDROID_HOME` environment variable to be set up. @@ -281,7 +307,7 @@ export PATH=${PATH}:${ANDROID_HOME}/platform-tools Type `source ~/.profile` to load the config into your current shell. -> Please make sure you export the correct path for `ANDROID_HOME`. If you installed the Android SDK using Homebrew, it would be located at `/usr/local/opt/android-sdk`. +> Please make sure you export the correct path for `ANDROID_HOME`. If you installed the Android SDK using Homebrew, it would be located at `/usr/local/opt/android-sdk`. You can find the actual location of the SDK in the Android Studio "Preferences" dialog, under **Appearance & Behavior** → **System Settings** → **Android SDK**. @@ -295,18 +321,17 @@ export PATH=${PATH}:${ANDROID_HOME}/platform-tools Type `source ~/.profile` to load the config into your current shell. -> Please make sure you export the correct path for `ANDROID_HOME` if you did not install the Android SDK using Android Studio. +> Please make sure you export the correct path for `ANDROID_HOME` if you did not install the Android SDK using Android Studio. You can find the actual location of the SDK in the Android Studio "Preferences" dialog, under **Appearance & Behavior** → **System Settings** → **Android SDK**. -Go to **Control Panel** → **System and Security** → **System** → **Change settings** → -**Advanced System Settings** → **Environment variables** → **New**, then enter the path to your Android SDK. +Open the System pane under **System and Security** in the Control Panel, then click on **Change settings...**. Open the **Advanced** tab and click on **Environment Variables...**. Click on **New...** to create a new `ANDROID_HOME` user variable that points to the path to your Android SDK. -![env variable](img/react-native-android-sdk-environment-variable-windows.png) +![ANDROID_HOME Environment Variable](img/AndroidEnvironmentVariableANDROID_HOME.png) -Restart the Command Prompt to apply the new environment variable. +You can find the actual location of the SDK in the Android Studio "Preferences" dialog, under **Appearance & Behavior** → **System Settings** → **Android SDK**. -> Please make sure you export the correct path for `ANDROID_HOME` if you did not install the Android SDK using Android Studio. +Open a new Command Prompt window to ensure the new environment variable is loaded. @@ -321,14 +346,22 @@ changes in the filesystem. It is highly recommended you install it for better pe ## Starting the Android Virtual Device +You can see the list of available AVDs by opening the "AVD Manager" from within Android Studio: + ![Android Studio AVD Manager](img/react-native-tools-avd.png) -You can see the list of available AVDs by opening the "AVD Manager" from within Android Studio. + + +Launch the default AVD before proceeding to the next step. + + Once in the "AVD Manager", select your AVD and click "Edit...". Choose "Android 6.0 - API Level 23" under Device, and "Intel Atom (x86_64)" under CPU/ABI. Click OK, then select your new AVD and click "Start...", and finally, "Launch". ![Android AVD Configuration](img/AndroidAVDConfiguration.png) + + > It is very common to run into an issue where Android Studio fails to create a default AVD. You may follow the [Android Studio User Guide](https://developer.android.com/studio/run/managing-avds.html) to create a new AVD manually if needed. ### Using a real device @@ -369,7 +402,7 @@ react-native run-android If everything is set up correctly, you should see your new app running in your Android emulator shortly. -![AwesomeProject on Android](img/AndroidSuccess.png) +![AwesomeProject on Android](img/AndroidSuccessMacOS.png) `react-native run-android` is just one way to run your app - you can also run it directly from within Android Studio or [Nuclide](https://nuclide.io/). @@ -427,7 +460,7 @@ react-native run-android If everything is set up correctly, you should see your new app running in your Android emulator shortly. -![AwesomeProject on Android](img/AndroidSuccess.png) +![AwesomeProject on Android](img/AndroidSuccessWindows.png) diff --git a/website/src/react-native/img/AndroidEnvironmentVariableANDROID_HOME.png b/website/src/react-native/img/AndroidEnvironmentVariableANDROID_HOME.png new file mode 100644 index 0000000000000000000000000000000000000000..1e6d35caa6a77f95abd89801eb4d5945cf20f925 GIT binary patch literal 5829 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 literal 0 HcmV?d00001 diff --git a/website/src/react-native/img/AndroidSDKManagerInstallsMacOS.png b/website/src/react-native/img/AndroidSDKManagerInstallsMacOS.png new file mode 100644 index 0000000000000000000000000000000000000000..1d997852ea899178919882e7437432c2252c0503 GIT binary patch literal 48470 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 l(XZ` zrk!fCghEWk)c~jUGQS7p}5*#1uYJcVkW5QLBL%*suEo@KhmJ3ErjS^N&w#h=u@Rb633VYG2P4f zw4fGD8UeqaKKNmWwXqWED~YF6%+L3?E(PtPQlNccC-icQyBr>~I%B^nH0AXSrhwv2~;!|wvo?LEqg z=_>X6W?ZR&(=k79ynJdh(JH1D%Y#-)8$j`TiXpR69+g!4&?xZ!z@ftFuFgLM`W|K& z*Btl^R9g`AvHXxiR{p(gC=nw%QD9aF3Zs{(s{a-`4~QTNU?}?+6T!{fx`0_Vt!W^rqj;E46_m;$L@+p^+ z4{J_TYLiw?VY{-^c#Ke&8_&v1dcVMSr(K}#(=*LnSD`$J#NU~BKd=M^N$4dts-oe9 zwjIt3*nnc3;N9^BWt+eqKQY}>b>L`_c62*L?f}Xg)JRGL-pcH`{~o2#r`p#i@=vN& zDjoOZ%M%-CK=3#}QJ&H+v03YFXn^Rs3(IAJx2n`%)d^9oD7Og$Tm z8>S_w4@=e(SkKbkJ|iB6tQDoRAYX8_aaLZMayA<-*;u0u29LfWcrV#4&QOE)7Gj|b zwpjusMwxaI#vX^^Iyy{iO!4)=a74LGU#;sr-Dq{7IuopVbwZBvqW1$X3zAaA{xm*D zFS~~{eCPJI17z&bKT)`}+~Q1>y}h0)OuLH}Ql;q>V-`nSK>_fE`Hc+L%@gaJw#0M* z`7Y|5Mfm*#E!>zzdaEDiw$NL}$Q=+Z6U~p{S=HsJzMWttu8vPav2~3t2LQhYyJ7bC zQ8cfYlQz!p1(C;HfoY3uGFyvOg^px(RFAUy`*z?G+p(_cx1&ak!{2roX>GiwXHHfJ zM(?Q9yX+0TNk4PT|C^QYmD0ds2- zbreF}G(YI^>7NZgO87nsf&TV&vOi(*P4k8JKwpo7IMXRg_Mh_J9Gk|VbA-&rO|Q!1R}tO z8yWi1$BY*G`KQ*7M5BJ3WeQb;h0&Cdn_Zkp4Tn&;@p{=-v zf@B^7KC1g$Kmazs=-@^MF)H9dQ^^R)O%spm$gijbU?Jp~^99%Vd~(`9J(f+ZcBS#> z_+!-cxICEibqCV{%i4jMw86eLue5-3xc*Xl98B`!-+1LKCIdu%8gtIS1m1QtKfX#g vyv0f{44~l;__v?-KP|EUzux4)J&}BjcSxAkOEGc{_*0ZslPP%o%J+W(bzToV literal 0 HcmV?d00001 diff --git a/website/src/react-native/img/AndroidSDKManagerInstallsWindows.png b/website/src/react-native/img/AndroidSDKManagerInstallsWindows.png new file mode 100644 index 0000000000000000000000000000000000000000..e0e4deb7f992e775e1a59c3f1a4c18650e078292 GIT binary patch literal 10584 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

      )!wKNwUVP1{tgt!F;yQ65@D?TV` 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
      l0)yMc3N@Gyy7({{$sdHw`oHoz5S2dV763% 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 a&Q!ga4`+`wAxVHgYB#j5=U==3>^}g*3u9sc literal 0 HcmV?d00001 diff --git a/website/src/react-native/img/AndroidSDKManagerWindows.png b/website/src/react-native/img/AndroidSDKManagerWindows.png new file mode 100644 index 0000000000000000000000000000000000000000..fe78e2a2f45acd5ca00e036f22cf948d21f039f4 GIT binary patch literal 75490 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 z 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 literal 0 HcmV?d00001 diff --git a/website/src/react-native/img/AndroidSuccess.png b/website/src/react-native/img/AndroidSuccessMacOS.png similarity index 100% rename from website/src/react-native/img/AndroidSuccess.png rename to website/src/react-native/img/AndroidSuccessMacOS.png diff --git a/website/src/react-native/img/AndroidSuccessWindows.png b/website/src/react-native/img/AndroidSuccessWindows.png new file mode 100644 index 0000000000000000000000000000000000000000..4c653bae64fbb0f4b54f68f4b1123f1df09ef89e GIT binary patch literal 66384 zcmY(q2Ut_Vvp0+)AksvXPEcCtK|mx_l@e+Y=`GaIo1ynAMFb2TNkBSCliqs|y?3NT z=v}%m|9kIuzxO?P&XaRy=gjPEvNJosGaLR93L$wy`veCEheTdZ`V$V$18y9ghjfqe z?N)lAyHc?yvtt1~I+-FBWGTaVBl$k1wSh5b&38 zcm;X+m?WOOeECugVP-D!Nm}-Q9>2d6XR>s5b`$}D+}zxF-2`|Y5Eh`0d8f>WRBn%vG`I@wn*4z;){3 zMOhu_=ba2Jt`9q!URbA{fIXTI&J#;NKgW|>iu%R$QpMh$%*T2h)Vs|9o3AnB z;`MKHkVoMa{dWT#?}gp~G2`T5t*gFpw8~s!>>ESx8CRXe2G}8tZv@2RAhoz|rcVlL z+*ANw)ow(vx)tvk64q5+v4b&G8D5eNPIe9t?39wrb>0YnPZf6;A!%B_io`CaR1a3x zDroV1y#F|AaPwKcA6m+j(aa(&;OV~B`SF9lpMRwYf0!^gL5Cw$fd-<(Tb|-(g?Kp` zzdDLbc7`fb&w_);c82qK;sw&CQ0^FYSxGz>RW~et<!EdM#%a9lVSdds3`p#ouIk!HWHXS8ZFI_yR-cHpTS4x3zrDXC< zW`w7z~+x>i5d54-%4tgzvh-E9}QMDy-N2MV~l&1o9|S zg{b7_ukVb_YIun7&&Y2Mp%knp@Iwvh!LeOzQ(0#=_@l^ng3&J{trW=M4QM9SM-o}Ee0YijIxDTUQUU8L0+=IC^`;Cggvc(TH2?jtQA zMUF0HvUU*|-INM7L@Cs}+Cza+0Oh_Aq1>IS;Pof>vsYU3R@ z8tlS^7ME;mfSR^r`?QVZPkrm4A(BCA|2> zkH*`v-_DlDmv6CY&8G{_#@?KbH>VWXdX)o33e$G%j^UN;te43+$-k}UJ5$dsNXdo} z52sBrvjKy3zV1)mpQaBsx_`2T?-_wt4%4Nqx*6VPmjhucp;G`wGM_zU#cG1+SQW$0 z=%t#)*v#05ag;<_RI^Bo(7}A%AiCzeX3@eA%|bw_%f^wQ@0GO3RhQhXtCPLOW!Vd> z+d2&)tfA7M>p=mlg}R;5r5-umYA-e2Dv|6WJqKmeTtkJ>L6WR`A*CD(z@_=D-+mTE z;cb*1G!_WTy6wgvb*T>-E$}+e65aPusk_cecfRRK7i=;yn5~6N>4GbG44QY`J3><`nh@f{9CTL&Ji88gG6Vwm!zqXH5}YI zuZ{PfX68oenVFAF)Wy$y+z2*RN(wl0sC-xH&%H#Rz}DO1AKx{Y#VCGV$m27a&0Hd$ z;(K`0XEnCxpkOn3KYZR>%Yv2GYO{6r9-a#cMtz}^xyWTFtCr*Z5drLsR;u!l?sLRv zYxry_+^$Y|J3W>st!w^8YL$GQ=XJ4Qg$rL%V=Mi_bnod(0m0Y~0ZgT&=?Wp@FfxSH zN>d44bbqr4_LZ=!y_>9XUDp=zzN!ER4PeiLKv|8ZxK>k93_1U#X{#)`s*$$IBB({g zfsfU~*3sz##5d_2;Ld?o+8NWcUqq8Op9Y<7&-4nq-syYpb!v^?F$0ws6P#`Tz4wY^ zPBGcL8o=h*?Tkf$7?oo8t8+)4hQ#2vm8=`fQ=?8^FnNOLRE4*HeEsS+yBM&$hhMrH zqjP~xe{xHoiWXwJ|cpl96kH` z0s7f;tf?&a7bXNeBvse8mRg>h~ zbkzXHd3meVxh28uZ^Ied>Tg2+X-{T!ZoExZF3AqT*wT+mp%LI1zta=u%&Jwt&)f|B z-LKzNaM~?a@+hY^eut(BCurKv#!nViG_vZI73sZ>IcK0#sa_~uNXRk8cJ0{9OBtsS zb&@f7zKSfVd$mX3@EveHlInb`Je6JE-Jf4fuYlXf#vQgpHjjuepFyM_O&~hM%sS4CUsZ&5gOFOy;PyTkLkVeVi>bm(i`Xf{WB0IO;aF zq9$fXD*jedVDZa$euLLmnRmwK{&+%YCF+0-Gyo-sy0e_!B5k+-cH;vNceTnBZ>PB& zoEa!vux@=hM{7@By#wcawmz98j7Uu&nLH>DHw__}=^;anCSb&Y!Nr*7R6$~?** z%J1!-^r2^4eUKbLjZdgJz7edSk!%U+-{pa~nbk`hNo^b_&(Lk+;>Pw~b}d`1yqtrB z@Le5L(GJe(L=kC99(nvNO@(W0Zhhpj+lt`uX=v9INg*^gMz{JlFHzD}6=OY{t~?SG zE8^NH?MwACl{X7L>b))^uK6P^UBo9fdh%q%PH47od02i^<|_UyMs|~UrtuTVJC3F= zd$){tmR;@lv@0m-keq5gkLP&iib+3?c_#bYCtr|=QBQ~WMNT&iY&~RbrGAO(4>_|a zLOIr@XMcPSYcmlaYR2+2m2jy)G|y*FiTYK}q>)l8-pa4+z`z0=mDRQ)a2#gh8I_Mt zKC!>HE?^ezLHLT08(DV;oI`F#Whw%>sC@J;z1QpF>lRYWX;173T2Ge4E3)k}V}=P! z=)JkSuar)aA&3&eSS3q~_V^3Ag0kaj`}@AK?ju}|267a$lF85~m)={XEPAik*X6wz z<%3Te-X(a-E2+4rv{;UtHw`IzuThy2m_N*95IGF_T^Qj9^?2pQD^}W=jB!G$S>@=x zoPDOGlLqy%vTHg`RLJ`dqcqy@tqQ`eBD?D-2W1fvbdBcO)pUfk`cWWzB!&8Q`jFwu&6hk;AT{5&W`zRxgo%lxWh`YQzM_Mm`aIO7G<<1 z(8{c=!@CE(QF2_ik#Hm8gKF}oDS%M0Wc=oTyAfDy;~)80u03$(h6SG!)mbweoPJs$ zzLfX`1I%Wt;SrD{-Z(Z=i3n1@Kzc)8}mQys}){GrL<#+Dt{5Sgmn{`Q|bt$wwq#%#rc&;r4fQLl{M-(N(z zUgE`zql!TawM+0pqoo$Yjxy12U0C-S6al!ozN1%ZcDZ(9VPtyjZ_ERI;aMk%Af#nb z{de~iG3uFMGZT_4GyO_Lr8sBXqu$)7o=5M=cxp+psqoL`Uqn-cRua2cfFO{LRG!$9%+qMYbSgH+6;AyTWw2U zmM$-+m*XlVUL1OH6B!gQ5Qi&mE~b*VA|hD#=9fnZFUvZN(B+7*Y0b%2potC5Z}?^l zIH*!av)nD%HcGg=foc<@bs6nFF#-1P{ zZkJyr$}7KZuO}7$5X%7!xFGbRXW^Rc8LX83Q|LFARlSoV=&!m86AS$!0l#&moZ)y9 zb=x`u+xLG_$mE0kK#(s=@-5-J{PyUKkr3qP-Qi<-K-Zy#M=e8UxyVRDpCGW08K?tN zZ;>~@nrHi}!_R>Jv!(oV3drW4jD|S3TG`qwo2c2&{1!p4A$P=9Yw+hwlY`2)9M>`N zl&@w_0y`ft@Z~x%b#AR$64YWw;sw=sb%DB^e$=88X}h`L$v0YaDwtCpjv{N^)nUTN8cD4~FOqxhV!Md9aH9#WDE@RI zRm}Y;iNsR&)TpJg`r1$-o>lzt#il2SA4C<(RIrPz%e2; z1GF|1NCE5%-;94vOboc{Mz$+X$Z&2Uu?Aep^GzfU10x_k~Nno zJ?$?+6YZV+)x3bvfEv3ew6ZUV1C&?Z0#XtE;swJ~t5jOP9 zxZgKOROHR}DZq!W-%g4#vM*D|v_q#>%?35|OQT>^LA0ll+X4ubi!v3WlZPbQ@b{X6 zZ4&>D4%xhh`;_*myB99gj;n{ryrEG8woG(3O_FUn$^nj+9BrdR^5meF6_?B92ba@p zr*e-sO?xw``fk-{2v7W6GfsY1QtV&9lr^$b;gtE1xmjmgS=R^{qhm>K~-!Y`C9`}Ins^a zjl<2Z4z|*nlhr>&-5dL&#*vyE(*AMdvl)HJ5ET)Y6)^aUFM4wRb+8Y=BpKKQqxumB zSdpuxJGizMW&}~Zx3JiDYbM?|ott%?s}-p=wDxj$?|=auUl}&o?(%7dpE@e_yj0MG z_vK6!Xyv|fEi4N{I9mhqb*?`HM$+7e1?63bDhqBCW9@GnX07`teFZt4sWnuQqRjOl zBB#mn!D1pNSaVXY1B)e`V;1w5SMfE-R-AW~Cqs#zUu}Qn*?d#BbrS?{w;h?~T4+gg zkr~q4)5q=kUifdWu@Nm0DBDYn1RoLWI=}S%2~FYJg-n+kqTerXJELVQB6hZMpg+iu z6GJ{^?Bg~DC>D>M{e0n*#RX>qP@l)x=91M>W(3I^FknH5ar1;Z*7)7z*~BPEGlF=J za{ER*e6l^xbl~RuvK%xnlqsiDefy=Sy(I1hKXs5{D%}cqjRQNU5%` zP^*g-88@ZODhC`?Yb*PEFA~lR;ZXde?DnT^N8So*jVydr)&_J-3GkRvn z1aTT~7nAsC!?A{mr%wx7Y*wIEbWV}_*7QXB=U$SD0sJgdguvwh(#|gOYl+FHkVpjp zm$}mpfpUy0O4MjaRkU%0{&5*0ej9AG!mM?zT72?mQ>&uU-J)H-*fOqw0l_+wz*i|h zxJ+6Z-XuL2p@p!(AXm$5+4(NDW)F<}Si~n>2Z4Kk3)_8P%ldQ$ci|O3O$I;d^U?>D z>PUxVBFkH6iYn@}f;QH|$|_h+S-r=Gh|cS>1*Fm%sX)7huPgbLFJJ8_^*3FKKiycOnGNR$aKN_mr4<4Qb zUG91~R;K(ecycW~{4Htq)$yxY+RC6_Y0@XT+?yiwE+sZItndOOghzpb9gP~Iw6Qo8g=zbhn#AT^P2tYF;!t) zdfjY{M2re)B)xKQqF4-GWLGz0&Z+Hv9xni~)r%a!(}bgRV1wqgyoJI%8SZZ88_t@= zf&}JN+VoFN87!*0e7S5sfU#^&_ppo`FS_FI?5ni(Uqg6K`a63sFP%0AdVi0XksRzk*j4bC(l!U-o5gz0Gd$H| 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 literal 0 HcmV?d00001 diff --git a/website/src/react-native/img/react-native-android-sdk-environment-variable-windows.png b/website/src/react-native/img/react-native-android-sdk-environment-variable-windows.png deleted file mode 100644 index 6b3d9810a5342f84664276568f9bd6a69ff7e4e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28729 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 Date: Tue, 16 May 2017 13:12:13 -0700 Subject: [PATCH 0114/1101] Update Example Apps Link Summary: The example apps link was pointing to a 404 page. Thanks for submitting a PR! Please read these instructions carefully: - [x] Explain the **motivation** for making this change. - [x] Provide a **test plan** demonstrating that the code is solid. - [x] Match the **code formatting** of the rest of the codebase. - [x] Target the `master` branch, NOT a "stable" branch. What existing problem does the pull request solve? The link to example apps was pointing to a 404 page A good test plan has the exact commands you ran and their output, provides screenshots or videos if the pull request changes UI or updates the website. See [What is a Test Plan?][1] to learn more. If you have added code that should be tested, add tests. N/A Sign the [CLA][2], if you haven't already. Small pull requests are much easier to review and more likely to get merged. Make sure the PR does only one thing, otherwise please split it. Make sure all **tests pass** on both [Travis][3] and [Circle CI][4]. PRs that break tests are unlikely to be merged. For more info, see the ["Pull Requests"][5] section of our "Contributing" guidelines. [1]: https://medium.com/martinkonicek/what-is-a-test-plan-8bfc840ec171#.y9lcuqqi9 [2]: https://code.facebook.com/cla [3]: https://travis-ci.org/facebook/react-native [4]: http://circleci.com/gh/facebook/react-native [5]: https://github.com/facebook/react-native/blob/master/CONTRIBUTING.md#pull-requests Closes https://github.com/facebook/react-native/pull/13986 Differential Revision: D5071821 Pulled By: hramos fbshipit-source-id: 620902de8445fc3569c3f7b075e271b413a8544c --- docs/MoreResources.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/MoreResources.md b/docs/MoreResources.md index 85c568f54a49..9fa34385247e 100644 --- a/docs/MoreResources.md +++ b/docs/MoreResources.md @@ -20,7 +20,7 @@ If you're looking for a library that does a specific thing, check out [Awesome R ## Example Apps -There are some example apps in the [`Examples/` directory](https://github.com/facebook/react-native/tree/master/Examples) on GitHub. You can run the apps on a simulator or device, and you can see the source code for these apps, which is neat. +There are some [example apps on GitHub](https://github.com/ReactNativeNews/React-Native-Apps). You can run the apps on a simulator or device, and you can see the source code for these apps, which is neat. The folks who built the app for Facebook's F8 conference in 2016 also [open-sourced the code](https://github.com/fbsamples/f8app) and wrote up a [detailed series of tutorials](http://makeitopen.com/tutorials/building-the-f8-app/planning/). This is useful if you want a more in-depth example that's more realistic than most sample apps out there. From 280ed810b0ee645df0c82c58ce5d0076f5b4dc5a Mon Sep 17 00:00:00 2001 From: Emil Ong Date: Tue, 16 May 2017 13:19:11 -0700 Subject: [PATCH 0115/1101] Update docs about supported native animation props Summary: Thanks for submitting a PR! Please read these instructions carefully: - [x] Explain the **motivation** for making this change. - [x] Provide a **test plan** demonstrating that the code is solid. - [x] Match the **code formatting** of the rest of the codebase. - [x] Target the `master` branch, NOT a "stable" branch. The docs had `backgroundColor` listed as a supported style prop for native animation, but only `opacity` and `transform` are supported at this time. See https://github.com/facebook/react-native/blob/master/Libraries/Animated/src/NativeAnimatedHelper.js#L108 My motivation was that I tried to use it and it didn't work. :smile: Github appears to render the change correctly. Closes https://github.com/facebook/react-native/pull/13933 Differential Revision: D5071869 Pulled By: hramos fbshipit-source-id: 947c8fa56b99d99c44603d8ef81664455234ed84 --- docs/Animations.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/Animations.md b/docs/Animations.md index faaea60ea6c7..39f1fecf32ee 100644 --- a/docs/Animations.md +++ b/docs/Animations.md @@ -356,7 +356,7 @@ You can also take a look at the [source code](https://github.com/facebook/react- Not everything you can do with `Animated` is currently supported by the native driver. The main limitation is that you can only animate non-layout properties: -things like `transform`, `opacity` and `backgroundColor` will work, but flexbox and position properties will not. +things like `transform` and `opacity` will work, but flexbox and position properties will not. When using `Animated.event`, it will only work with direct events and not bubbling events. This means it does not work with `PanResponder` but does work with things like `ScrollView#onScroll`. @@ -490,4 +490,4 @@ option](http://facebook.github.io/react-native/blog/2017/02/14/using-native-driv You may also want to defer any computationally intensive work until after animations are complete, using the [InteractionManager](docs/interactionmanager.html). You can monitor the -frame rate by using the In-App Developer Menu "FPS Monitor" tool. \ No newline at end of file +frame rate by using the In-App Developer Menu "FPS Monitor" tool. From 23e81f2ae3caf8d606da3e1823314183dc2ea584 Mon Sep 17 00:00:00 2001 From: Tim Yung Date: Tue, 16 May 2017 17:50:28 -0700 Subject: [PATCH 0116/1101] React: Upgrade to react-devtools@^2.1.9 Reviewed By: zertosh Differential Revision: D5074448 fbshipit-source-id: c8f870e159d4b30f001de91696f72c0f437ac28a --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 42cd18c0394b..f4d06527d057 100644 --- a/package.json +++ b/package.json @@ -191,7 +191,7 @@ "promise": "^7.1.1", "prop-types": "^15.5.8", "react-clone-referenced-element": "^1.0.1", - "react-devtools-core": "^2.1.8", + "react-devtools-core": "^2.1.9", "react-timer-mixin": "^0.13.2", "react-transform-hmr": "^1.0.4", "rebound": "^0.0.13", From af949877e67c9ff56089436c7980037a9e332c7c Mon Sep 17 00:00:00 2001 From: Johan Date: Tue, 16 May 2017 17:51:20 -0700 Subject: [PATCH 0117/1101] updated docs with iOS 10 compatible linking code Summary: Thanks for submitting a PR! Please read these instructions carefully: - [x] Explain the **motivation** for making this change. - [x] Provide a **test plan** demonstrating that the code is solid. - [x] Match the **code formatting** of the rest of the codebase. - [x] Target the `master` branch, NOT a "stable" branch. The current code for IOS contains deprecated code for incoming urls. in iOS 10 deprecated openURL. more details here: https://useyourloaf.com/blog/openurl-deprecated-in-ios10/ 1. Create an RN app with iOS 10. set up linking as per instructions. 2. Using the iOS9 code snippet, with the app is open, navigate to the apps url scheme (in safari) appname://value1/value2, the eventListener will not trigger. note: it will however trigger getInitialURL if app is closed. 3. Replace the old iOS9 code with the iOS 10 and trigger an incoming url from a browser appname:// with the new code in the doc it will trigger for both open and closed apps. Closes https://github.com/facebook/react-native/pull/13942 Differential Revision: D5071851 Pulled By: hramos fbshipit-source-id: 8394de73014a1d2a5982b22b1b6fd09e0cf524dd --- Libraries/Linking/Linking.js | 34 ++++++++++++++++++++++++++++------ 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/Libraries/Linking/Linking.js b/Libraries/Linking/Linking.js index 32b5a0298af8..4962aae04098 100644 --- a/Libraries/Linking/Linking.js +++ b/Libraries/Linking/Linking.js @@ -66,22 +66,44 @@ const LinkingManager = Platform.OS === 'android' ? * android:launchMode="singleTask"> * ``` * - * NOTE: On iOS you'll need to link `RCTLinking` to your project by following + * NOTE: On iOS, you'll need to link `RCTLinking` to your project by following * the steps described [here](docs/linking-libraries-ios.html#manual-linking). - * In case you also want to listen to incoming app links during your app's - * execution you'll need to add the following lines to your `*AppDelegate.m`: + * If you also want to listen to incoming app links during your app's + * execution, you'll need to add the following lines to your `*AppDelegate.m`: * * ``` + * // iOS 10 + * #import + * - (BOOL)application:(UIApplication *)application + * openURL:(NSURL *)url + * options:(NSDictionary *)options + * { + * + * return [RCTLinkingManager application:application openURL:url + * sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey] + * annotation:options[UIApplicationOpenURLOptionsAnnotationKey]]; + * + * } + * ``` + * + * If you're targeting iOS 9 or older, you can use the following code instead: + * + * ``` + * // iOS 9 or older * #import * * - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url * sourceApplication:(NSString *)sourceApplication annotation:(id)annotation * { * return [RCTLinkingManager application:application openURL:url - * sourceApplication:sourceApplication annotation:annotation]; + * sourceApplication:sourceApplication annotation:annotation]; * } - * - * // Only if your app is using [Universal Links](https://developer.apple.com/library/prerelease/ios/documentation/General/Conceptual/AppSearch/UniversalLinks.html). + * ``` + * + * If your app is using [Universal Links](https://developer.apple.com/library/prerelease/ios/documentation/General/Conceptual/AppSearch/UniversalLinks.html), + * you'll need to add the following code as well: + * + * ``` * - (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity * restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler * { From ca2d57c744232988a586d17f3b5df334add728b2 Mon Sep 17 00:00:00 2001 From: Adam Perry Date: Tue, 16 May 2017 23:43:46 -0700 Subject: [PATCH 0118/1101] Update examples in docs and address version lag of CRNA Summary: cc hramos Pretty sure I've hit all of the places where AppRegistry is called in CRNA-pastable examples. Let me know whether you think we need to approach the version lag differently, I figure a caveat is as natural a place to call it out as any. If you end up finding anything else that needs tweaking before cherry picking, I'm happy to push that up here too. Closes https://github.com/facebook/react-native/pull/13744 Differential Revision: D5071038 Pulled By: hramos fbshipit-source-id: 4a4a6f2a73079aca627f17d75a4e4b395ecbd4a8 --- Libraries/Components/TextInput/TextInput.js | 8 ++++---- Libraries/Image/Image.ios.js | 10 +++++----- Libraries/Text/Text.js | 4 ++-- docs/GettingStarted.md | 2 ++ docs/HandlingTextInput.md | 3 ++- docs/HeightAndWidth.md | 6 ++++-- docs/LayoutWithFlexbox.md | 9 ++++++--- docs/Props.md | 6 ++++-- docs/State.md | 7 ++++--- docs/Style.md | 3 ++- docs/Text.md | 6 ++++-- docs/Tutorial.md | 7 ++++--- docs/UsingAListView.md | 4 ++-- docs/UsingAScrollView.md | 4 ++-- 14 files changed, 47 insertions(+), 32 deletions(-) diff --git a/Libraries/Components/TextInput/TextInput.js b/Libraries/Components/TextInput/TextInput.js index 1f15e5d2e39c..b47b785b0ca8 100644 --- a/Libraries/Components/TextInput/TextInput.js +++ b/Libraries/Components/TextInput/TextInput.js @@ -74,7 +74,7 @@ const DataDetectorTypes = [ * import React, { Component } from 'react'; * import { AppRegistry, TextInput } from 'react-native'; * - * class UselessTextInput extends Component { + * export default class UselessTextInput extends Component { * constructor(props) { * super(props); * this.state = { text: 'Useless Placeholder' }; @@ -91,7 +91,7 @@ const DataDetectorTypes = [ * } * } * - * // App registration and rendering + * // skip this line if using Create React Native App * AppRegistry.registerComponent('AwesomeProject', () => UselessTextInput); * ``` * @@ -117,7 +117,7 @@ const DataDetectorTypes = [ * } * } * - * class UselessTextInputMultiline extends Component { + * export default class UselessTextInputMultiline extends Component { * constructor(props) { * super(props); * this.state = { @@ -145,7 +145,7 @@ const DataDetectorTypes = [ * } * } * - * // App registration and rendering + * // skip these lines if using Create React Native App * AppRegistry.registerComponent( * 'AwesomeProject', * () => UselessTextInputMultiline diff --git a/Libraries/Image/Image.ios.js b/Libraries/Image/Image.ios.js index f09ab4c3c865..fba9e16447a6 100644 --- a/Libraries/Image/Image.ios.js +++ b/Libraries/Image/Image.ios.js @@ -41,7 +41,7 @@ const ImageViewManager = NativeModules.ImageViewManager; * import React, { Component } from 'react'; * import { AppRegistry, View, Image } from 'react-native'; * - * class DisplayAnImage extends Component { + * export default class DisplayAnImage extends Component { * render() { * return ( * @@ -57,7 +57,7 @@ const ImageViewManager = NativeModules.ImageViewManager; * } * } * - * // App registration and rendering + * // skip this line if using Create React Native App * AppRegistry.registerComponent('DisplayAnImage', () => DisplayAnImage); * ``` * @@ -74,7 +74,7 @@ const ImageViewManager = NativeModules.ImageViewManager; * } * }); * - * class DisplayAnImageWithStyle extends Component { + * export default class DisplayAnImageWithStyle extends Component { * render() { * return ( * @@ -87,7 +87,7 @@ const ImageViewManager = NativeModules.ImageViewManager; * } * } * - * // App registration and rendering + * // skip these lines if using Create React Native App * AppRegistry.registerComponent( * 'DisplayAnImageWithStyle', * () => DisplayAnImageWithStyle @@ -96,7 +96,7 @@ const ImageViewManager = NativeModules.ImageViewManager; * * ### GIF and WebP support on Android * - * By default, GIF and WebP are not supported on Android. + * When building your own native code, GIF and WebP are not supported by default on Android. * * You will need to add some optional modules in `android/app/build.gradle`, depending on the needs of your app. * diff --git a/Libraries/Text/Text.js b/Libraries/Text/Text.js index 93887b23f21c..dac73a1f27c6 100644 --- a/Libraries/Text/Text.js +++ b/Libraries/Text/Text.js @@ -57,7 +57,7 @@ const viewConfig = { * import React, { Component } from 'react'; * import { AppRegistry, Text, StyleSheet } from 'react-native'; * - * class TextInANest extends Component { + * export default class TextInANest extends Component { * constructor(props) { * super(props); * this.state = { @@ -90,7 +90,7 @@ const viewConfig = { * }, * }); * - * // App registration and rendering + * // skip this line if using Create React Native App * AppRegistry.registerComponent('TextInANest', () => TextInANest); * ``` */ diff --git a/docs/GettingStarted.md b/docs/GettingStarted.md index eef8a5dfa0f4..959cd1ece89e 100644 --- a/docs/GettingStarted.md +++ b/docs/GettingStarted.md @@ -33,6 +33,8 @@ Once you've created your project and opened it in the Expo client app, you can p ### Caveats +The Expo client app usually releases about 1 week after any given React Native release, and Create React Native App always provides the latest version of React Native which is supported by the Expo client. You can check [this document](https://github.com/react-community/create-react-native-app/blob/master/VERSIONS.md) to find out what versions are supported. + Because you don't build any native code with Create React Native App, it's not possible to include custom native modules beyond the React Native APIs and components that are available in the Expo client app. If you know that you'll eventually need to include your own native code, Create React Native App is still a good way to get started. In that case you'll just need to "[eject](https://github.com/react-community/create-react-native-app/blob/master/react-native-scripts/template/README.md#ejecting-from-create-react-native-app)" eventually to create your own native builds. If you do eject, the native build instructions below will be required to continue working on your project. diff --git a/docs/HandlingTextInput.md b/docs/HandlingTextInput.md index fe8cca7f56de..9fe4b9797894 100644 --- a/docs/HandlingTextInput.md +++ b/docs/HandlingTextInput.md @@ -18,7 +18,7 @@ as "🍕🍕🍕". import React, { Component } from 'react'; import { AppRegistry, Text, TextInput, View } from 'react-native'; -class PizzaTranslator extends Component { +export default class PizzaTranslator extends Component { constructor(props) { super(props); this.state = {text: ''}; @@ -40,6 +40,7 @@ class PizzaTranslator extends Component { } } +// skip this line if using Create React Native App AppRegistry.registerComponent('PizzaTranslator', () => PizzaTranslator); ``` diff --git a/docs/HeightAndWidth.md b/docs/HeightAndWidth.md index 32c4b6316300..b2cef363031a 100644 --- a/docs/HeightAndWidth.md +++ b/docs/HeightAndWidth.md @@ -18,7 +18,7 @@ The simplest way to set the dimensions of a component is by adding a fixed `widt import React, { Component } from 'react'; import { AppRegistry, View } from 'react-native'; -class FixedDimensionsBasics extends Component { +export default class FixedDimensionsBasics extends Component { render() { return ( @@ -30,6 +30,7 @@ class FixedDimensionsBasics extends Component { } } +// skip this line if using Create React Native App AppRegistry.registerComponent('AwesomeProject', () => FixedDimensionsBasics); ``` @@ -45,7 +46,7 @@ Use `flex` in a component's style to have the component expand and shrink dynami import React, { Component } from 'react'; import { AppRegistry, View } from 'react-native'; -class FlexDimensionsBasics extends Component { +export default class FlexDimensionsBasics extends Component { render() { return ( // Try removing the `flex: 1` on the parent View. @@ -60,6 +61,7 @@ class FlexDimensionsBasics extends Component { } } +// skip this line if using Create React Native App AppRegistry.registerComponent('AwesomeProject', () => FlexDimensionsBasics); ``` diff --git a/docs/LayoutWithFlexbox.md b/docs/LayoutWithFlexbox.md index 2f3bd6e45b41..d3e70d33be86 100644 --- a/docs/LayoutWithFlexbox.md +++ b/docs/LayoutWithFlexbox.md @@ -22,7 +22,7 @@ Adding `flexDirection` to a component's `style` determines the **primary axis** import React, { Component } from 'react'; import { AppRegistry, View } from 'react-native'; -class FlexDirectionBasics extends Component { +export default class FlexDirectionBasics extends Component { render() { return ( // Try setting `flexDirection` to `column`. @@ -35,6 +35,7 @@ class FlexDirectionBasics extends Component { } }; +// skip this line if using Create React Native App AppRegistry.registerComponent('AwesomeProject', () => FlexDirectionBasics); ``` @@ -46,7 +47,7 @@ Adding `justifyContent` to a component's style determines the **distribution** o import React, { Component } from 'react'; import { AppRegistry, View } from 'react-native'; -class JustifyContentBasics extends Component { +export default class JustifyContentBasics extends Component { render() { return ( // Try setting `justifyContent` to `center`. @@ -64,6 +65,7 @@ class JustifyContentBasics extends Component { } }; +// skip this line if using Create React Native App AppRegistry.registerComponent('AwesomeProject', () => JustifyContentBasics); ``` @@ -77,7 +79,7 @@ Adding `alignItems` to a component's style determines the **alignment** of child import React, { Component } from 'react'; import { AppRegistry, View } from 'react-native'; -class AlignItemsBasics extends Component { +export default class AlignItemsBasics extends Component { render() { return ( // Try setting `alignItems` to 'flex-start' @@ -97,6 +99,7 @@ class AlignItemsBasics extends Component { } }; +// skip this line if using Create React Native App AppRegistry.registerComponent('AwesomeProject', () => AlignItemsBasics); ``` diff --git a/docs/Props.md b/docs/Props.md index adcf926eeda0..1b2ccb3673ef 100644 --- a/docs/Props.md +++ b/docs/Props.md @@ -17,7 +17,7 @@ create an image, you can use a prop named `source` to control what image it show import React, { Component } from 'react'; import { AppRegistry, Image } from 'react-native'; -class Bananas extends Component { +export default class Bananas extends Component { render() { let pic = { uri: 'https://upload.wikimedia.org/wikipedia/commons/d/de/Bananavarieties.jpg' @@ -28,6 +28,7 @@ class Bananas extends Component { } } +// skip this line if using Create React Native App AppRegistry.registerComponent('Bananas', () => Bananas); ``` @@ -49,7 +50,7 @@ class Greeting extends Component { } } -class LotsOfGreetings extends Component { +export default class LotsOfGreetings extends Component { render() { return ( @@ -61,6 +62,7 @@ class LotsOfGreetings extends Component { } } +// skip this line if using Create React Native App AppRegistry.registerComponent('LotsOfGreetings', () => LotsOfGreetings); ``` diff --git a/docs/State.md b/docs/State.md index f22013c063c6..af95bffd850e 100644 --- a/docs/State.md +++ b/docs/State.md @@ -39,7 +39,7 @@ class Blink extends Component { } } -class BlinkApp extends Component { +export default class BlinkApp extends Component { render() { return ( @@ -52,12 +52,13 @@ class BlinkApp extends Component { } } +// skip this line if using Create React Native App AppRegistry.registerComponent('BlinkApp', () => BlinkApp); ``` -In a real application, you probably won't be setting state with a timer. You might set state when you have new data arrive from the server, or from user input. You can also use a state container like [Redux](http://redux.js.org/index.html) to control your data flow. In that case you would use Redux to modify your state rather than calling `setState` directly. +In a real application, you probably won't be setting state with a timer. You might set state when you have new data arrive from the server, or from user input. You can also use a state container like [Redux](http://redux.js.org/index.html) to control your data flow. In that case you would use Redux to modify your state rather than calling `setState` directly. When setState is called, BlinkApp will re-render its Component. By calling setState within the Timer, the component will re-render every time the Timer ticks. -State works the same way as it does in React, so for more details on handling state, you can look at the [React.Component API](https://facebook.github.io/react/docs/component-api.html). +State works the same way as it does in React, so for more details on handling state, you can look at the [React.Component API](https://facebook.github.io/react/docs/component-api.html). At this point, you might be annoyed that most of our examples so far use boring default black text. To make things more beautiful, you will have to [learn about Style](docs/style.html). diff --git a/docs/Style.md b/docs/Style.md index 609a5ee1df3e..5641f2fc0b76 100644 --- a/docs/Style.md +++ b/docs/Style.md @@ -18,7 +18,7 @@ As a component grows in complexity, it is often cleaner to use `StyleSheet.creat import React, { Component } from 'react'; import { AppRegistry, StyleSheet, Text, View } from 'react-native'; -class LotsOfStyles extends Component { +export default class LotsOfStyles extends Component { render() { return ( @@ -42,6 +42,7 @@ const styles = StyleSheet.create({ }, }); +// skip this line if using Create React Native App AppRegistry.registerComponent('LotsOfStyles', () => LotsOfStyles); ``` diff --git a/docs/Text.md b/docs/Text.md index d1039fc74e1a..183cb90959f1 100644 --- a/docs/Text.md +++ b/docs/Text.md @@ -8,7 +8,7 @@ Both iOS and Android allow you to display formatted text by annotating ranges of import React, { Component } from 'react'; import { AppRegistry, Text } from 'react-native'; -class BoldAndBeautiful extends Component { +export default class BoldAndBeautiful extends Component { render() { return ( @@ -21,6 +21,7 @@ class BoldAndBeautiful extends Component { } } +// skip this line if using Create React Native App AppRegistry.registerComponent('BoldAndBeautiful', () => BoldAndBeautiful); ``` @@ -40,7 +41,7 @@ On iOS, you can nest views within your Text component. Here's an example: import React, { Component } from 'react'; import { AppRegistry, Text, View } from 'react-native'; -class BlueIsCool extends Component { +export default class BlueIsCool extends Component { render() { return ( @@ -52,6 +53,7 @@ class BlueIsCool extends Component { } } +// skip this line if using Create React Native App AppRegistry.registerComponent('BlueIsCool', () => BlueIsCool); ``` diff --git a/docs/Tutorial.md b/docs/Tutorial.md index e25077352feb..5354de2f9394 100644 --- a/docs/Tutorial.md +++ b/docs/Tutorial.md @@ -21,7 +21,7 @@ In accordance with the ancient traditions of our people, we must first build an import React, { Component } from 'react'; import { AppRegistry, Text } from 'react-native'; -class AwesomeProject extends Component { +export default class HelloWorldApp extends Component { render() { return ( Hello world! @@ -29,7 +29,8 @@ class AwesomeProject extends Component { } } -AppRegistry.registerComponent('AwesomeProject', () => AwesomeProject); +// skip this line if using Create React Native App +AppRegistry.registerComponent('HelloWorldApp', () => HelloWorldApp); ``` If you are feeling curious, you can play around with sample code directly in the web simulators. You can also paste it into your `index.ios.js` or `index.android.js` file to create a real app on your local machine. @@ -47,7 +48,7 @@ is a built-in component that just displays some text. So this code is defining `HelloWorldApp`, a new `Component`, and it's registering it with the `AppRegistry`. When you're building a React Native app, you'll be making new components a lot. Anything you see on the screen is some sort of component. A component can be pretty simple - the only thing that's required is a `render` function which returns some JSX to render. -The `AppRegistry` just tells React Native which component is the root one for the whole application. You won't be thinking about `AppRegistry` a lot - there will probably just be one call to `AppRegistry.registerComponent` in your whole app. It's included in these examples so you can paste the whole thing into your `index.ios.js` or `index.android.js` file and get it running. +The `AppRegistry` just tells React Native which component is the root one for the whole application. You won't be thinking about `AppRegistry` a lot - there will probably just be one call to `AppRegistry.registerComponent` in your whole app. It's included in these examples so you can paste the whole thing into your `index.ios.js` or `index.android.js` file and get it running. If you have a project from Create React Native App, this is handled for you and it's not necessary to call AppRegistry in your code. ## This App Doesn't Do Very Much diff --git a/docs/UsingAListView.md b/docs/UsingAListView.md index 38c172d53c95..791fc2b5270a 100644 --- a/docs/UsingAListView.md +++ b/docs/UsingAListView.md @@ -22,7 +22,7 @@ This example creates a simple `ListView` of hardcoded data. It first initializes import React, { Component } from 'react'; import { AppRegistry, ListView, Text, View } from 'react-native'; -class ListViewBasics extends Component { +export default class ListViewBasics extends Component { // Initialize the hardcoded data constructor(props) { super(props); @@ -45,7 +45,7 @@ class ListViewBasics extends Component { } } -// App registration and rendering +// skip this line if using Create React Native App AppRegistry.registerComponent('ListViewBasics', () => ListViewBasics); ``` diff --git a/docs/UsingAScrollView.md b/docs/UsingAScrollView.md index 61e956fbd4fd..696049f2d01c 100644 --- a/docs/UsingAScrollView.md +++ b/docs/UsingAScrollView.md @@ -16,7 +16,7 @@ This example creates a vertical `ScrollView` with both images and text mixed tog import React, { Component } from 'react'; import { AppRegistry, ScrollView, Image, Text } from 'react-native' -class IScrolledDownAndWhatHappenedNextShockedMe extends Component { +export default class IScrolledDownAndWhatHappenedNextShockedMe extends Component { render() { return ( @@ -56,7 +56,7 @@ class IScrolledDownAndWhatHappenedNextShockedMe extends Component { } } - +// skip these lines if using Create React Native App AppRegistry.registerComponent( 'IScrolledDownAndWhatHappenedNextShockedMe', () => IScrolledDownAndWhatHappenedNextShockedMe); From b98c33f1b46f5a8b6ac788f247265e5b8e6ea782 Mon Sep 17 00:00:00 2001 From: Jean Lauliac Date: Wed, 17 May 2017 04:55:59 -0700 Subject: [PATCH 0119/1101] packager: runServer: @flow Summary: This makes it easier to verify correctness when adding new config/args. Reviewed By: davidaurelio Differential Revision: D5069537 fbshipit-source-id: 4d8058851900b23163d0f2744e91dd14dfcdd461 --- local-cli/server/runServer.js | 65 ++++++++++++++++------ packager/react-packager.js | 2 +- packager/src/Bundler/index.js | 6 +- packager/src/Resolver/index.js | 2 +- packager/src/Server/index.js | 6 +- packager/src/node-haste/DependencyGraph.js | 2 +- packager/src/node-haste/ModuleCache.js | 4 +- packager/src/node-haste/lib/toLocalPath.js | 2 +- 8 files changed, 60 insertions(+), 29 deletions(-) diff --git a/local-cli/server/runServer.js b/local-cli/server/runServer.js index ca31462109f0..0f40020f9e9e 100644 --- a/local-cli/server/runServer.js +++ b/local-cli/server/runServer.js @@ -5,7 +5,11 @@ * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. + * + * @flow + * @format */ + 'use strict'; const InspectorProxy = require('./util/inspectorProxy.js'); @@ -18,7 +22,8 @@ const cpuProfilerMiddleware = require('./middleware/cpuProfilerMiddleware'); const defaultAssetExts = require('../../packager/defaults').assetExts; const defaultSourceExts = require('../../packager/defaults').sourceExts; const defaultPlatforms = require('../../packager/defaults').platforms; -const defaultProvidesModuleNodeModules = require('../../packager/defaults').providesModuleNodeModules; +const defaultProvidesModuleNodeModules = require('../../packager/defaults') + .providesModuleNodeModules; const getDevToolsMiddleware = require('./middleware/getDevToolsMiddleware'); const http = require('http'); const indexPageMiddleware = require('./middleware/indexPage'); @@ -31,7 +36,26 @@ const systraceProfileMiddleware = require('./middleware/systraceProfileMiddlewar const unless = require('./middleware/unless'); const webSocketProxy = require('./util/webSocketProxy.js'); -function runServer(args, config, startedCallback, readyCallback) { +import type {ConfigT} from '../util/Config'; + +type Args = {| + +assetExts: $ReadOnlyArray, + +host: string, + +nonPersistent: boolean, + +platforms: $ReadOnlyArray, + +port: number, + +projectRoots: $ReadOnlyArray, + +resetCache: boolean, + +sourceExts: $ReadOnlyArray, + +verbose: boolean, +|}; + +function runServer( + args: Args, + config: ConfigT, + startedCallback: () => mixed, + readyCallback: () => mixed, +) { var wsProxy = null; var ms = null; const packagerServer = getPackagerServer(args, config); @@ -41,7 +65,9 @@ function runServer(args, config, startedCallback, readyCallback) { const app = connect() .use(loadRawBodyMiddleware) .use(connect.compress()) - .use(getDevToolsMiddleware(args, () => wsProxy && wsProxy.isChromeConnected())) + .use( + getDevToolsMiddleware(args, () => wsProxy && wsProxy.isChromeConnected()), + ) .use(getDevToolsMiddleware(args, () => ms && ms.isChromeConnected())) .use(openStackFrameInEditorMiddleware(args)) .use(copyToClipBoardMiddleware) @@ -49,30 +75,32 @@ function runServer(args, config, startedCallback, readyCallback) { .use(systraceProfileMiddleware) .use(cpuProfilerMiddleware) .use(indexPageMiddleware) - .use(unless('/inspector', inspectorProxy.processRequest.bind(inspectorProxy))) + .use( + unless('/inspector', inspectorProxy.processRequest.bind(inspectorProxy)), + ) .use(packagerServer.processRequest.bind(packagerServer)); args.projectRoots.forEach(root => app.use(connect.static(root))); - app.use(connect.logger()) - .use(connect.errorHandler()); + app.use(connect.logger()).use(connect.errorHandler()); - const serverInstance = http.createServer(app).listen( - args.port, - args.host, - function() { + const serverInstance = http + .createServer(app) + .listen(args.port, args.host, 511, function() { attachHMRServer({ httpServer: serverInstance, path: '/hot', packagerServer, }); - wsProxy = webSocketProxy.attachToServer(serverInstance, '/debugger-proxy'); + wsProxy = webSocketProxy.attachToServer( + serverInstance, + '/debugger-proxy', + ); ms = messageSocket.attachToServer(serverInstance, '/message'); inspectorProxy.attachToServer(serverInstance, '/inspector'); readyCallback(packagerServer._reporter); - } - ); + }); // Disable any kind of automatic timeout behavior for incoming // requests in case it takes the packager more than the default // timeout of 120 seconds to respond to a request. @@ -80,10 +108,11 @@ function runServer(args, config, startedCallback, readyCallback) { } function getPackagerServer(args, config) { - const transformModulePath = - args.transformer ? path.resolve(args.transformer) : - typeof config.getTransformModulePath === 'function' ? config.getTransformModulePath() : - undefined; + const transformModulePath = args.transformer + ? path.resolve(args.transformer) + : typeof config.getTransformModulePath === 'function' + ? config.getTransformModulePath() + : undefined; const providesModuleNodeModules = args.providesModuleNodeModules || defaultProvidesModuleNodeModules; @@ -93,10 +122,12 @@ function getPackagerServer(args, config) { try { // First we let require resolve it, so we can require packages in node_modules // as expected. eg: require('my-package/reporter'); + /* $FlowFixMe: can't type dynamic require */ LogReporter = require(args.customLogReporterPath); } catch (e) { // If that doesn't work, then we next try relative to the cwd, eg: // require('./reporter'); + /* $FlowFixMe: can't type dynamic require */ LogReporter = require(path.resolve(args.customLogReporterPath)); } } else { diff --git a/packager/react-packager.js b/packager/react-packager.js index 457a877f5efd..7d7ab76087f7 100644 --- a/packager/react-packager.js +++ b/packager/react-packager.js @@ -31,7 +31,7 @@ type Options = { nonPersistent?: boolean, postProcessModules?: PostProcessModules, postMinifyProcess?: PostMinifyProcess, - projectRoots: Array, + projectRoots: $ReadOnlyArray, reporter?: Reporter, +sourceExts: ?Array, +transformModulePath: string, diff --git a/packager/src/Bundler/index.js b/packager/src/Bundler/index.js index da622d9c7214..d5da5d7cd14d 100644 --- a/packager/src/Bundler/index.js +++ b/packager/src/Bundler/index.js @@ -128,7 +128,7 @@ type Options = {| +polyfillModuleNames: Array, +postProcessModules?: PostProcessModules, +postMinifyProcess: PostMinifyProcess, - +projectRoots: Array, + +projectRoots: $ReadOnlyArray, +providesModuleNodeModules?: Array, +reporter: Reporter, +resetCache: boolean, @@ -146,7 +146,7 @@ class Bundler { _getModuleId: (opts: Module) => number; _transformer: Transformer; _resolverPromise: Promise; - _projectRoots: Array; + _projectRoots: $ReadOnlyArray; _assetServer: AssetServer; _getTransformOptions: void | GetTransformOptions; @@ -785,7 +785,7 @@ class Bundler { hot: boolean, minify: boolean, platform: ?string, - projectRoots: Array, + projectRoots: $ReadOnlyArray, |}, ): Promise { const getDependencies = (entryFile: string) => diff --git a/packager/src/Resolver/index.js b/packager/src/Resolver/index.js index c3dbe177c154..1713a42e5fe5 100644 --- a/packager/src/Resolver/index.js +++ b/packager/src/Resolver/index.js @@ -42,7 +42,7 @@ type Options = {| +postMinifyProcess: PostMinifyProcess, +platforms: Set, +polyfillModuleNames?: Array, - +projectRoots: Array, + +projectRoots: $ReadOnlyArray, +providesModuleNodeModules: Array, +reporter: Reporter, +resetCache: boolean, diff --git a/packager/src/Server/index.js b/packager/src/Server/index.js index e2d131264d5a..f9dcf6e626a2 100644 --- a/packager/src/Server/index.js +++ b/packager/src/Server/index.js @@ -69,7 +69,7 @@ type Options = { polyfillModuleNames?: Array, postProcessModules?: PostProcessModules, postMinifyProcess: PostMinifyProcess, - projectRoots: Array, + projectRoots: $ReadOnlyArray, providesModuleNodeModules?: Array, reporter: Reporter, resetCache?: boolean, @@ -125,7 +125,7 @@ class Server { polyfillModuleNames: Array, postProcessModules?: PostProcessModules, postMinifyProcess: PostMinifyProcess, - projectRoots: Array, + projectRoots: $ReadOnlyArray, providesModuleNodeModules?: Array, reporter: Reporter, resetCache: boolean, @@ -135,7 +135,7 @@ class Server { transformTimeoutInterval: ?number, watch: boolean, }; - _projectRoots: Array; + _projectRoots: $ReadOnlyArray; _bundles: {}; _changeWatchers: Array<{ req: IncomingMessage, diff --git a/packager/src/node-haste/DependencyGraph.js b/packager/src/node-haste/DependencyGraph.js index 9eecbd8c7292..7516bc8f19ae 100644 --- a/packager/src/node-haste/DependencyGraph.js +++ b/packager/src/node-haste/DependencyGraph.js @@ -60,7 +60,7 @@ type Options = {| +providesModuleNodeModules: Array, +reporter: Reporter, +resetCache: boolean, - +roots: Array, + +roots: $ReadOnlyArray, +sourceExts: Array, +transformCode: TransformCode, +useWatchman: boolean, diff --git a/packager/src/node-haste/ModuleCache.js b/packager/src/node-haste/ModuleCache.js index c1f0a2d34b07..bdc7c1b38b7f 100644 --- a/packager/src/node-haste/ModuleCache.js +++ b/packager/src/node-haste/ModuleCache.js @@ -41,7 +41,7 @@ class ModuleCache { _platforms: Set; _transformCode: TransformCode; _reporter: Reporter; - _roots: Array; + _roots: $ReadOnlyArray; constructor( { @@ -62,7 +62,7 @@ class ModuleCache { getTransformCacheKey: GetTransformCacheKey, globalTransformCache: ?GlobalTransformCache, moduleOptions: ModuleOptions, - roots: Array, + roots: $ReadOnlyArray, reporter: Reporter, transformCode: TransformCode, |}, diff --git a/packager/src/node-haste/lib/toLocalPath.js b/packager/src/node-haste/lib/toLocalPath.js index dbdb2037e8f1..2b8ed3311a58 100644 --- a/packager/src/node-haste/lib/toLocalPath.js +++ b/packager/src/node-haste/lib/toLocalPath.js @@ -18,7 +18,7 @@ export type LocalPath = OpaqueLocalPath & string; // FIXME: This function has the shortcoming of potentially returning identical // paths for two files in different roots. -function toLocalPath(roots: Array, absolutePath: string): LocalPath { +function toLocalPath(roots: $ReadOnlyArray, absolutePath: string): LocalPath { for (let i = 0; i < roots.length; i++) { const localPath = relative(roots[i], absolutePath); if (localPath[0] !== '.') { From c0e8d67e01a4622729d86ec9d639a9dcac3d2c54 Mon Sep 17 00:00:00 2001 From: Jean Lauliac Date: Wed, 17 May 2017 04:56:02 -0700 Subject: [PATCH 0120/1101] packager: server.js: @flow Summary: I'd like to start typing the front-end so that it's easier to track adding new options, etc. Reviewed By: davidaurelio Differential Revision: D5069868 fbshipit-source-id: 9a18dca52efd486ca18f17d0ec434a5ec1c1649c --- local-cli/commands.js | 2 +- local-cli/server/runServer.js | 9 ++++-- local-cli/server/server.js | 43 ++++++++++++++++++---------- packager/src/lib/TerminalReporter.js | 2 +- packager/src/lib/reporting.js | 2 +- 5 files changed, 37 insertions(+), 21 deletions(-) diff --git a/local-cli/commands.js b/local-cli/commands.js index e4aa4446732f..38912ba4d9b1 100644 --- a/local-cli/commands.js +++ b/local-cli/commands.js @@ -23,7 +23,7 @@ export type CommandT = { command: string, description?: string, parse?: (val: string) => any, - default?: (config: RNConfig) => any | any, + default?: ((config: RNConfig) => mixed) | mixed, }>, examples?: Array<{ desc: string, diff --git a/local-cli/server/runServer.js b/local-cli/server/runServer.js index 0f40020f9e9e..b1aa140a9af0 100644 --- a/local-cli/server/runServer.js +++ b/local-cli/server/runServer.js @@ -37,8 +37,9 @@ const unless = require('./middleware/unless'); const webSocketProxy = require('./util/webSocketProxy.js'); import type {ConfigT} from '../util/Config'; +import type {Reporter} from '../../packager/src/lib/reporting'; -type Args = {| +export type Args = {| +assetExts: $ReadOnlyArray, +host: string, +nonPersistent: boolean, @@ -53,8 +54,10 @@ type Args = {| function runServer( args: Args, config: ConfigT, - startedCallback: () => mixed, - readyCallback: () => mixed, + // FIXME: this is weird design. The top-level should pass down a custom + // reporter rather than passing it up as argument to an event. + startedCallback: (reporter: Reporter) => mixed, + readyCallback: (reporter: Reporter) => mixed, ) { var wsProxy = null; var ms = null; diff --git a/local-cli/server/server.js b/local-cli/server/server.js index 110db66ee628..1cdd8b8ec305 100644 --- a/local-cli/server/server.js +++ b/local-cli/server/server.js @@ -5,17 +5,25 @@ * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. + * + * @flow */ + 'use strict'; const path = require('path'); const runServer = require('./runServer'); +import type {RNConfig} from '../core'; +import type {ConfigT} from '../util/Config'; +import type {Args as RunServerArgs} from './runServer'; + /** * Starts the React Native Packager Server. */ -function server(argv, config, args) { - args.projectRoots = args.projectRoots.concat(args.root); +function server(argv: mixed, config: RNConfig, allArgs: Object) { + const {root, ...args} = allArgs; + args.projectRoots = args.projectRoots.concat(root); const startedCallback = logReporter => { logReporter.update({ @@ -41,7 +49,12 @@ function server(argv, config, args) { }); }; - runServer(args, config, startedCallback, readyCallback); + /* $FlowFixMe: we would have either to invariant() everything, or to + * auto-generate CLI args Flow types. */ + const runServerArgs: RunServerArgs = args; + /* $FlowFixMe: ConfigT shouldn't be extendable. */ + const configT: ConfigT = config; + runServer(runServerArgs, configT, startedCallback, readyCallback); } module.exports = { @@ -51,40 +64,40 @@ module.exports = { options: [{ command: '--port [number]', default: 8081, - parse: (val) => Number(val), + parse: (val: string) => Number(val), }, { command: '--host [string]', default: '', }, { command: '--root [list]', description: 'add another root(s) to be used by the packager in this project', - parse: (val) => val.split(',').map(root => path.resolve(root)), + parse: (val: string) => val.split(',').map(root => path.resolve(root)), default: [], }, { command: '--projectRoots [list]', description: 'override the root(s) to be used by the packager', - parse: (val) => val.split(','), - default: (config) => config.getProjectRoots(), + parse: (val: string) => val.split(','), + default: (config: ConfigT) => config.getProjectRoots(), }, { command: '--assetExts [list]', description: 'Specify any additional asset extensions to be used by the packager', - parse: (val) => val.split(','), - default: (config) => config.getAssetExts(), + parse: (val: string) => val.split(','), + default: (config: ConfigT) => config.getAssetExts(), }, { command: '--sourceExts [list]', description: 'Specify any additional source extensions to be used by the packager', - parse: (val) => val.split(','), - default: (config) => config.getSourceExts(), + parse: (val: string) => val.split(','), + default: (config: ConfigT) => config.getSourceExts(), }, { command: '--platforms [list]', description: 'Specify any additional platforms to be used by the packager', - parse: (val) => val.split(','), - default: (config) => config.getPlatforms(), + parse: (val: string) => val.split(','), + default: (config: ConfigT) => config.getPlatforms(), }, { command: '--providesModuleNodeModules [list]', description: 'Specify any npm packages that import dependencies with providesModule', - parse: (val) => val.split(','), - default: (config) => { + parse: (val: string) => val.split(','), + default: (config: RNConfig) => { if (typeof config.getProvidesModuleNodeModules === 'function') { return config.getProvidesModuleNodeModules(); } diff --git a/packager/src/lib/TerminalReporter.js b/packager/src/lib/TerminalReporter.js index d553444f7ffe..41e6c46f4efc 100644 --- a/packager/src/lib/TerminalReporter.js +++ b/packager/src/lib/TerminalReporter.js @@ -135,7 +135,7 @@ class TerminalReporter { } } - _logPackagerInitializing(port: number, projectRoots: Array) { + _logPackagerInitializing(port: number, projectRoots: $ReadOnlyArray) { terminal.log( formatBanner( 'Running packager on port ' + diff --git a/packager/src/lib/reporting.js b/packager/src/lib/reporting.js index 50c5c60f118f..fdc84acb08a4 100644 --- a/packager/src/lib/reporting.js +++ b/packager/src/lib/reporting.js @@ -24,7 +24,7 @@ export type GlobalCacheDisabledReason = 'too_many_errors' | 'too_many_misses'; */ export type ReportableEvent = { port: number, - projectRoots: Array, + projectRoots: $ReadOnlyArray, type: 'initialize_packager_started', } | { type: 'initialize_packager_done', From e53046b9ec1e04e9c808cd17e36136ec11b1f6fb Mon Sep 17 00:00:00 2001 From: eacaps Date: Wed, 17 May 2017 04:56:03 -0700 Subject: [PATCH 0121/1101] pass polyfillModuleNames into packager Summary: After examining how React Native sets up `process.env.NODE_ENV` using `global.__DEV__` from `prelude_dev.js` or `prelude.js` by treating them like polyfills I decided to use the same approach for environment variables. I setup my own rn-project.config.js file like so: ``` const blacklist = require('react-native/packager/blacklist'); const pathJoin = require('path').join; module.exports = { getBlacklistRE: function() { return blacklist([/build\/.*/, /app\/assets\/webpack.*/]); }, polyfillModuleNames: [pathJoin(__dirname, 'globals.js')] }; ``` I ran the packaging server using: `react-native start --config=config/react-native/rn-project.config.js --reset-cache` I expected my polyfillModuleNames to be passed into the Packager properly and be handled the same way the built-in polyfills worked. Unfortunately I noticed the Packager wasn't actually getting `opt.polyfillModuleNames`. Digging into the code a bit, it seems the local-cli wasn't passing the polyfillModuleNames from the config. There are no specs for runServer.js but this change can be tested by using a config that contains polyfillModuleNames. Sample config and run command provided above simple `global.js` provided below: ``` global.process = global.process ? global.process : {}; global.process.env = global.process.env ? global.process.env : {}; global.process.env['PROJECT_ENV'] = 'staging'; ``` Closes https://github.com/facebook/react-native/pull/13725 Differential Revision: D5077615 Pulled By: jeanlauliac fbshipit-source-id: f66a8a8bda2702cd9a4e5b92f5335f43ab2f9089 --- local-cli/server/runServer.js | 1 + local-cli/util/Config.js | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/local-cli/server/runServer.js b/local-cli/server/runServer.js index b1aa140a9af0..4511bd266ba7 100644 --- a/local-cli/server/runServer.js +++ b/local-cli/server/runServer.js @@ -145,6 +145,7 @@ function getPackagerServer(args, config) { getTransformOptions: config.getTransformOptions, hasteImpl: config.hasteImpl, platforms: defaultPlatforms.concat(args.platforms), + polyfillModuleNames: config.getPolyfillModuleNames(), postProcessModules: config.postProcessModules, postMinifyProcess: config.postMinifyProcess, projectRoots: args.projectRoots, diff --git a/local-cli/util/Config.js b/local-cli/util/Config.js index 984ebd6ad6fc..a9d565286d53 100644 --- a/local-cli/util/Config.js +++ b/local-cli/util/Config.js @@ -41,6 +41,12 @@ export type ConfigT = { */ getBlacklistRE(): RegExp, + /** + * Specify any additional polyfill modules that should be processed + * before regular module loading. + */ + getPolyfillModuleNames: () => Array, + /** * Specify any additional platforms to be used by the packager. * For example, if you want to add a "custom" platform, and use modules @@ -98,6 +104,7 @@ const defaultConfig: ConfigT = { getAssetExts: () => [], getBlacklistRE: () => blacklist(), getPlatforms: () => [], + getPolyfillModuleNames: () => [], getProjectRoots: () => [process.cwd()], getProvidesModuleNodeModules: () => providesModuleNodeModules.slice(), getSourceExts: () => [], From 44955dfa178f9a82bbab7ddc4e3adfde3d0d0083 Mon Sep 17 00:00:00 2001 From: Jean Lauliac Date: Wed, 17 May 2017 05:14:58 -0700 Subject: [PATCH 0122/1101] packager: AssetResolutionCache: tests + fix bug Summary: Or, a case in point that Flow doesn't saves us from all the ills. I think it didn't complain because `MapWithDefaults` doesn't have proper typing. I'll deal with that separately. Reviewed By: davidaurelio Differential Revision: D5077707 fbshipit-source-id: c43623c5046d2dea9964685a44ad4877d060232e --- .../src/node-haste/AssetResolutionCache.js | 4 +- .../__tests__/AssetResolutionCache-test.js | 53 +++++++++++++++++++ .../AssetResolutionCache-test.js.snap | 18 +++++++ 3 files changed, 73 insertions(+), 2 deletions(-) create mode 100644 packager/src/node-haste/__tests__/AssetResolutionCache-test.js create mode 100644 packager/src/node-haste/__tests__/__snapshots__/AssetResolutionCache-test.js.snap diff --git a/packager/src/node-haste/AssetResolutionCache.js b/packager/src/node-haste/AssetResolutionCache.js index e96a7c15b98b..afad46c6c4b6 100644 --- a/packager/src/node-haste/AssetResolutionCache.js +++ b/packager/src/node-haste/AssetResolutionCache.js @@ -36,7 +36,7 @@ type Options = {| +platforms: Set, |}; -type AssetInfo = {platform: ?string, fileName: string}; +type AssetInfo = {|platform: ?string, fileName: string|}; type InfoByAssetName = Map>; const EMPTY_ARRAY = []; @@ -102,7 +102,7 @@ class AssetResolutionCache { continue; } getWithDefaultArray(results, assetData.assetName).push({ - plaform: assetData.platform, + platform: assetData.platform, fileName, }); } diff --git a/packager/src/node-haste/__tests__/AssetResolutionCache-test.js b/packager/src/node-haste/__tests__/AssetResolutionCache-test.js new file mode 100644 index 000000000000..a5396848e838 --- /dev/null +++ b/packager/src/node-haste/__tests__/AssetResolutionCache-test.js @@ -0,0 +1,53 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * @format + */ + +'use strict'; + +jest.disableAutomock(); + +const AssetResolutionCache = require('../AssetResolutionCache'); + +const MOCK_FILE_NAMES = [ + 'test@2x.ios.png', + 'test@1x.ios.png', + 'foo.jpg', + 'bar.ios.png', + 'test@1.5x.ios.png', + 'foo@2x.jpg', + 'test@3x.android.png', + 'test.android.png', +]; + +describe('AssetResolutionCache', () => { + let fileNames, cache; + + beforeEach(() => { + fileNames = [...MOCK_FILE_NAMES]; + cache = new AssetResolutionCache({ + assetExtensions: new Set(['png', 'jpg']), + getDirFiles: dirPath => (dirPath === '/assets' ? fileNames : []), + platforms: new Set(['ios', 'android']), + }); + }); + + it('finds the correct assets', () => { + const results = cache.resolve('/assets', 'test.png', 'ios'); + expect(results).toMatchSnapshot(); + }); + + it('correctly clears out', () => { + cache.resolve('/assets', 'test.png', 'ios'); + fileNames.push('test@3x.ios.png'); + cache.clear(); + const results = cache.resolve('/assets', 'test.png', 'ios'); + expect(results).toMatchSnapshot(); + }); +}); diff --git a/packager/src/node-haste/__tests__/__snapshots__/AssetResolutionCache-test.js.snap b/packager/src/node-haste/__tests__/__snapshots__/AssetResolutionCache-test.js.snap new file mode 100644 index 000000000000..1f6708713c44 --- /dev/null +++ b/packager/src/node-haste/__tests__/__snapshots__/AssetResolutionCache-test.js.snap @@ -0,0 +1,18 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AssetResolutionCache correctly clears out 1`] = ` +Array [ + "test@2x.ios.png", + "test@1x.ios.png", + "test@1.5x.ios.png", + "test@3x.ios.png", +] +`; + +exports[`AssetResolutionCache finds the correct assets 1`] = ` +Array [ + "test@2x.ios.png", + "test@1x.ios.png", + "test@1.5x.ios.png", +] +`; From 47f52bae673b67c02c30ece0b927e8a5f8f16915 Mon Sep 17 00:00:00 2001 From: David Aurelio Date: Wed, 17 May 2017 07:16:18 -0700 Subject: [PATCH 0123/1101] `meta.js`: add flow Summary: Adds flow to `local-cli/bundle/output/meta.js`, and makes some changes to avoid errors. Reviewed By: cpojer Differential Revision: D5077563 fbshipit-source-id: bafb9e6705319f6f2e8ae1c820667ad343191b3c --- local-cli/bundle/output/meta.js | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/local-cli/bundle/output/meta.js b/local-cli/bundle/output/meta.js index 2bfc3a670950..4c110ada7226 100644 --- a/local-cli/bundle/output/meta.js +++ b/local-cli/bundle/output/meta.js @@ -5,6 +5,8 @@ * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. + * + * @flow */ 'use strict'; @@ -19,12 +21,16 @@ const constantFor = encoding => isUTF8(encoding) ? 2 : /^(?:utf-?16(?:le)?|ucs-?2)$/.test(encoding) ? 3 : 0; -module.exports = function(code, encoding) { +module.exports = function( + code: string, + encoding: 'ascii' | 'utf8' | 'utf16le' = 'utf8', +): Buffer { const hash = crypto.createHash('sha1'); - hash.update(code, encoding); - const digest = hash.digest('binary'); - const signature = Buffer.alloc ? Buffer.alloc(digest.length + 1) : new Buffer(digest.length + 1); // remove the new Buffer call when RN drops support for Node 4 - signature.write(digest, 'binary'); + // remove `new Buffer` calls when RN drops support for Node 4 + hash.update(Buffer.from ? Buffer.from(code, encoding) : new Buffer(code, encoding)); + const digest = hash.digest(); + const signature = Buffer.alloc ? Buffer.alloc(digest.length + 1) : new Buffer(digest.length + 1); + digest.copy(signature); signature.writeUInt8( constantFor(tryAsciiPromotion(code, encoding)), signature.length - 1); From cce99f44fd93d7474d2aad444b3f0954cb4e6583 Mon Sep 17 00:00:00 2001 From: David Aurelio Date: Wed, 17 May 2017 07:16:21 -0700 Subject: [PATCH 0124/1101] Output `.meta` files for plain bundles MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Summary: Outputs `.meta` files for plain text bundles just like “old packager” did. Reviewed By: jeanlauliac, cpojer Differential Revision: D5077649 fbshipit-source-id: eb87999dd899066adeb9756333adb4d79ce04832 --- packager/src/ModuleGraph/output/as-plain-bundle.js | 8 +++++++- packager/src/ModuleGraph/types.flow.js | 3 ++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/packager/src/ModuleGraph/output/as-plain-bundle.js b/packager/src/ModuleGraph/output/as-plain-bundle.js index 601cf5562cb9..dd403e8520bf 100644 --- a/packager/src/ModuleGraph/output/as-plain-bundle.js +++ b/packager/src/ModuleGraph/output/as-plain-bundle.js @@ -10,6 +10,8 @@ */ 'use strict'; +const meta = require('../../../../local-cli/bundle/output/meta'); + const {createIndexMap} = require('./source-map'); const {addModuleIdsToModuleWrapper} = require('./util'); @@ -41,7 +43,11 @@ module.exports = ( code += `/*# sourceMappingURL=${sourceMapPath}*/`; } - return {code, map: createIndexMap({file: filename, sections})}; + return { + code, + extraFiles: [[`${filename}.meta`, meta(code)]], + map: createIndexMap({file: filename, sections}), + }; }: OutputFn); const reLine = /^/gm; diff --git a/packager/src/ModuleGraph/types.flow.js b/packager/src/ModuleGraph/types.flow.js index a7a3cb782d23..ed70ff68d0aa 100644 --- a/packager/src/ModuleGraph/types.flow.js +++ b/packager/src/ModuleGraph/types.flow.js @@ -78,7 +78,8 @@ export type OutputFn = ( ) => OutputResult; type OutputResult = {| - code: string, + code: string | Buffer, + extraFiles: Iterable<[string, string | Buffer]>, map: SourceMap, |}; From c7857637738f10a81afd55946889815d61521803 Mon Sep 17 00:00:00 2001 From: Georgiy Kassabli Date: Wed, 17 May 2017 07:21:52 -0700 Subject: [PATCH 0125/1101] Fixing using flex in root node Reviewed By: emilsjolander Differential Revision: D5071164 fbshipit-source-id: b8afef42477d0ed87d0c9fcfd26349e0a0babd6e --- ReactCommon/yoga/yoga/Yoga.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/ReactCommon/yoga/yoga/Yoga.c b/ReactCommon/yoga/yoga/Yoga.c index df48f9daeb21..d610b710be8e 100644 --- a/ReactCommon/yoga/yoga/Yoga.c +++ b/ReactCommon/yoga/yoga/Yoga.c @@ -525,6 +525,10 @@ void YGNodeCopyStyle(const YGNodeRef dstNode, const YGNodeRef srcNode) { } static inline float YGResolveFlexGrow(const YGNodeRef node) { + // Root nodes flexGrow should always be 0 + if (node->parent == NULL) { + return 0.0; + } if (!YGFloatIsUndefined(node->style.flexGrow)) { return node->style.flexGrow; } @@ -545,6 +549,10 @@ float YGNodeStyleGetFlexShrink(const YGNodeRef node) { } static inline float YGNodeResolveFlexShrink(const YGNodeRef node) { + // Root nodes flexShrink should always be 0 + if (node->parent == NULL) { + return 0.0; + } if (!YGFloatIsUndefined(node->style.flexShrink)) { return node->style.flexShrink; } @@ -2293,7 +2301,7 @@ static void YGNodelayoutImpl(const YGNodeRef node, if (!node->config->useLegacyStretchBehaviour && (totalFlexGrowFactors == 0 || YGResolveFlexGrow(node) == 0)) { // If we don't have any children to flex or we can't flex the node itself, - // space we've used is all space we need + // space we've used is all space we need. Root node also should be shrunk to minimum availableInnerMainDim = sizeConsumedOnCurrentLine; } } From cc16830cfb2de7fd000be23a50509fa882ac5665 Mon Sep 17 00:00:00 2001 From: Kathy Gray Date: Wed, 17 May 2017 07:34:32 -0700 Subject: [PATCH 0126/1101] Clean up package and imports left over from bridge merge Reviewed By: javache Differential Revision: D5077810 fbshipit-source-id: 2f569bfc9d0c45d2ca93b6e036efdaec9511633c --- .../java/com/facebook/react/bridge/Arguments.java | 6 ------ .../react/bridge/CatalystInstanceImpl.java | 8 -------- .../react/bridge/CxxModuleWrapperBase.java | 1 - .../com/facebook/react/bridge/JSBundleLoader.java | 2 +- .../react/bridge/JSCJavaScriptExecutor.java | 3 --- .../facebook/react/bridge/JavaMethodWrapper.java | 15 --------------- .../facebook/react/bridge/JavaModuleWrapper.java | 9 --------- .../com/facebook/react/bridge/ModuleHolder.java | 3 --- .../react/bridge/NativeModuleRegistry.java | 6 ------ .../react/bridge/ProxyJavaScriptExecutor.java | 1 - .../react/common/DebugServerException.java | 3 +-- .../react/devsupport/BundleDownloader.java | 1 + .../react/devsupport/DevSettingsActivity.java | 1 + .../react/devsupport/DevSupportManagerImpl.java | 1 + 14 files changed, 5 insertions(+), 55 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/bridge/Arguments.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/Arguments.java index e30f0288d3a4..262dab252746 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/bridge/Arguments.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/Arguments.java @@ -18,12 +18,6 @@ import android.os.Bundle; -import com.facebook.react.bridge.ReadableMap; -import com.facebook.react.bridge.ReadableMapKeySetIterator; -import com.facebook.react.bridge.ReadableType; -import com.facebook.react.bridge.WritableNativeArray; -import com.facebook.react.bridge.WritableNativeMap; - public class Arguments { private static Object makeNativeObject(Object object) { if (object == null) { diff --git a/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstanceImpl.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstanceImpl.java index 42ffc8c19afb..1ed7aaaef72a 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstanceImpl.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstanceImpl.java @@ -23,14 +23,6 @@ import com.facebook.infer.annotation.Assertions; import com.facebook.jni.HybridData; import com.facebook.proguard.annotations.DoNotStrip; -import com.facebook.react.bridge.CatalystInstance; -import com.facebook.react.bridge.JavaScriptModule; -import com.facebook.react.bridge.JavaScriptModuleRegistry; -import com.facebook.react.bridge.MemoryPressure; -import com.facebook.react.bridge.NativeArray; -import com.facebook.react.bridge.NativeModule; -import com.facebook.react.bridge.NativeModuleCallExceptionHandler; -import com.facebook.react.bridge.NotThreadSafeBridgeIdleDebugListener; import com.facebook.react.bridge.queue.MessageQueueThread; import com.facebook.react.bridge.queue.QueueThreadExceptionHandler; import com.facebook.react.bridge.queue.ReactQueueConfiguration; diff --git a/ReactAndroid/src/main/java/com/facebook/react/bridge/CxxModuleWrapperBase.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/CxxModuleWrapperBase.java index e6cb4e61c724..0198029d56bd 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/bridge/CxxModuleWrapperBase.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/CxxModuleWrapperBase.java @@ -4,7 +4,6 @@ import com.facebook.jni.HybridData; import com.facebook.proguard.annotations.DoNotStrip; -import com.facebook.react.bridge.NativeModule; import com.facebook.soloader.SoLoader; /** diff --git a/ReactAndroid/src/main/java/com/facebook/react/bridge/JSBundleLoader.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/JSBundleLoader.java index b00a7851b739..965d65bec4f5 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/bridge/JSBundleLoader.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/JSBundleLoader.java @@ -11,7 +11,7 @@ import android.content.Context; -import com.facebook.react.devsupport.DebugServerException; +import com.facebook.react.common.DebugServerException; /** * A class that stores JS bundle information and allows {@link CatalystInstance} to load a correct diff --git a/ReactAndroid/src/main/java/com/facebook/react/bridge/JSCJavaScriptExecutor.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/JSCJavaScriptExecutor.java index 1d65e9b1d0ee..a0515dbed72b 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/bridge/JSCJavaScriptExecutor.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/JSCJavaScriptExecutor.java @@ -11,9 +11,6 @@ import com.facebook.jni.HybridData; import com.facebook.proguard.annotations.DoNotStrip; -import com.facebook.react.bridge.ReadableNativeArray; -import com.facebook.react.bridge.WritableNativeArray; -import com.facebook.react.bridge.WritableNativeMap; import com.facebook.soloader.SoLoader; @DoNotStrip diff --git a/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaMethodWrapper.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaMethodWrapper.java index c78be62ca5c9..8b41f61a34a6 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaMethodWrapper.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaMethodWrapper.java @@ -15,21 +15,6 @@ import java.lang.reflect.Method; import com.facebook.infer.annotation.Assertions; -import com.facebook.react.bridge.BaseJavaModule; -import com.facebook.react.bridge.Callback; -import com.facebook.react.bridge.Dynamic; -import com.facebook.react.bridge.DynamicFromArray; -import com.facebook.react.bridge.JSInstance; -import com.facebook.react.bridge.NativeArgumentsParseException; -import com.facebook.react.bridge.NativeModule; -import com.facebook.react.bridge.Promise; -import com.facebook.react.bridge.PromiseImpl; -import com.facebook.react.bridge.ReadableArray; -import com.facebook.react.bridge.ReadableMap; -import com.facebook.react.bridge.ReadableNativeArray; -import com.facebook.react.bridge.UnexpectedNativeTypeException; -import com.facebook.react.bridge.WritableArray; -import com.facebook.react.bridge.WritableMap; import com.facebook.systrace.SystraceMessage; import static com.facebook.infer.annotation.Assertions.assertNotNull; diff --git a/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaModuleWrapper.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaModuleWrapper.java index 7c243711f946..746a3347f7fc 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaModuleWrapper.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaModuleWrapper.java @@ -19,15 +19,6 @@ import java.util.Set; import com.facebook.proguard.annotations.DoNotStrip; -import com.facebook.react.bridge.BaseJavaModule; -import com.facebook.react.bridge.JSInstance; -import com.facebook.react.bridge.NativeArray; -import com.facebook.react.bridge.NativeModule; -import com.facebook.react.bridge.ReactMarker; -import com.facebook.react.bridge.ReactMethod; -import com.facebook.react.bridge.ReadableNativeArray; -import com.facebook.react.bridge.WritableNativeArray; -import com.facebook.react.bridge.WritableNativeMap; import com.facebook.systrace.Systrace; import com.facebook.systrace.SystraceMessage; diff --git a/ReactAndroid/src/main/java/com/facebook/react/bridge/ModuleHolder.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/ModuleHolder.java index 9bde9cc9e7da..3cab0efc6fa8 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/bridge/ModuleHolder.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/ModuleHolder.java @@ -8,9 +8,6 @@ import java.util.concurrent.atomic.AtomicInteger; import com.facebook.proguard.annotations.DoNotStrip; -import com.facebook.react.bridge.NativeModule; -import com.facebook.react.bridge.ReactMarker; -import com.facebook.react.bridge.ReactMarkerConstants; import com.facebook.react.module.model.ReactModuleInfo; import com.facebook.systrace.Systrace; import com.facebook.systrace.SystraceMessage; diff --git a/ReactAndroid/src/main/java/com/facebook/react/bridge/NativeModuleRegistry.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/NativeModuleRegistry.java index e9c2080b004a..2e26727661f8 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/bridge/NativeModuleRegistry.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/NativeModuleRegistry.java @@ -15,12 +15,6 @@ import java.util.Map; import com.facebook.infer.annotation.Assertions; -import com.facebook.react.bridge.JSInstance; -import com.facebook.react.bridge.NativeModule; -import com.facebook.react.bridge.OnBatchCompleteListener; -import com.facebook.react.bridge.ReactApplicationContext; -import com.facebook.react.bridge.ReactMarker; -import com.facebook.react.bridge.ReactMarkerConstants; import com.facebook.systrace.Systrace; /** diff --git a/ReactAndroid/src/main/java/com/facebook/react/bridge/ProxyJavaScriptExecutor.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/ProxyJavaScriptExecutor.java index 57d9650626bd..e5d3307e4f80 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/bridge/ProxyJavaScriptExecutor.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/ProxyJavaScriptExecutor.java @@ -14,7 +14,6 @@ import com.facebook.jni.HybridData; import com.facebook.soloader.SoLoader; import com.facebook.proguard.annotations.DoNotStrip; -import com.facebook.react.bridge.JavaJSExecutor; /** * JavaScript executor that delegates JS calls processed by native code back to a java version diff --git a/ReactAndroid/src/main/java/com/facebook/react/common/DebugServerException.java b/ReactAndroid/src/main/java/com/facebook/react/common/DebugServerException.java index bf6de9c5dcab..7f83367bd2a7 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/common/DebugServerException.java +++ b/ReactAndroid/src/main/java/com/facebook/react/common/DebugServerException.java @@ -7,7 +7,7 @@ * of patent rights can be found in the PATENTS file in the same directory. */ -package com.facebook.react.devsupport; +package com.facebook.react.common; import javax.annotation.Nullable; @@ -16,7 +16,6 @@ import android.text.TextUtils; import com.facebook.common.logging.FLog; -import com.facebook.react.common.ReactConstants; import org.json.JSONException; import org.json.JSONObject; diff --git a/ReactAndroid/src/main/java/com/facebook/react/devsupport/BundleDownloader.java b/ReactAndroid/src/main/java/com/facebook/react/devsupport/BundleDownloader.java index 85dc5c23693f..a06ac5c9ee5c 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/devsupport/BundleDownloader.java +++ b/ReactAndroid/src/main/java/com/facebook/react/devsupport/BundleDownloader.java @@ -20,6 +20,7 @@ import com.facebook.common.logging.FLog; import com.facebook.infer.annotation.Assertions; import com.facebook.react.common.ReactConstants; +import com.facebook.react.common.DebugServerException; import org.json.JSONException; import org.json.JSONObject; diff --git a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSettingsActivity.java b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSettingsActivity.java index b9a70a79d1ce..3b39ea13acba 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSettingsActivity.java +++ b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSettingsActivity.java @@ -13,6 +13,7 @@ import android.preference.PreferenceActivity; import com.facebook.react.R; +import com.facebook.react.common.DebugServerException; /** * Activity that display developers settings. Should be added to the debug manifest of the app. Can 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 f5a28a66d15d..a9e4d9c21483 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerImpl.java +++ b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerImpl.java @@ -35,6 +35,7 @@ import com.facebook.react.bridge.ReadableArray; import com.facebook.react.bridge.UiThreadUtil; import com.facebook.react.common.ReactConstants; +import com.facebook.react.common.DebugServerException; import com.facebook.react.common.ShakeDetector; import com.facebook.react.common.futures.SimpleSettableFuture; import com.facebook.react.devsupport.DevServerHelper.PackagerCommandListener; From 0357303f5b711eae4e6b90ed2c7aa535e2e67ba2 Mon Sep 17 00:00:00 2001 From: Pieter De Baets Date: Wed, 17 May 2017 08:53:55 -0700 Subject: [PATCH 0127/1101] Schedule initializeBridge on the JS thread Reviewed By: shergin Differential Revision: D5044230 fbshipit-source-id: 87030e210af662bc12cfb57bc83e73a128303fb0 --- React/CxxBridge/RCTCxxBridge.mm | 51 +++++++++++++++------------------ 1 file changed, 23 insertions(+), 28 deletions(-) diff --git a/React/CxxBridge/RCTCxxBridge.mm b/React/CxxBridge/RCTCxxBridge.mm index 5873404c62e2..dd92f7df2b18 100644 --- a/React/CxxBridge/RCTCxxBridge.mm +++ b/React/CxxBridge/RCTCxxBridge.mm @@ -140,7 +140,6 @@ @implementation RCTCxxBridge // JS thread management NSThread *_jsThread; - std::promise> _jsMessageThreadPromise; std::shared_ptr _jsMessageThread; // This is uniquely owned, but weak_ptr is used. @@ -204,15 +203,6 @@ - (void)runJSRunLoop // copy thread name to pthread name pthread_setname_np([NSThread currentThread].name.UTF8String); - __typeof(self) weakSelf = self; - _jsMessageThreadPromise.set_value(std::make_shared( - [NSRunLoop currentRunLoop], - ^(NSError *error) { - if (error) { - [weakSelf handleError:error]; - } - })); - // Set up a dummy runloop source to avoid spinning CFRunLoopSourceContext noSpinCtx = {0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}; CFRunLoopSourceRef noSpinSource = CFRunLoopSourceCreate(NULL, 0, &noSpinCtx); @@ -275,12 +265,10 @@ - (void)start _jsThread.qualityOfService = NSOperationQualityOfServiceUserInteractive; [_jsThread start]; - dispatch_group_t initModulesAndLoadSource = dispatch_group_create(); - dispatch_queue_t bridgeQueue = dispatch_queue_create("com.facebook.react.RCTBridgeQueue", - DISPATCH_QUEUE_SERIAL); + dispatch_group_t prepareBridge = dispatch_group_create(); // Initialize all native modules that cannot be loaded lazily - [self _initModulesWithDispatchGroup:initModulesAndLoadSource]; + [self _initModulesWithDispatchGroup:prepareBridge]; // This doesn't really do anything. The real work happens in initializeBridge. _reactInstance.reset(new Instance); @@ -310,9 +298,11 @@ - (void)start // Dispatch the instance initialization as soon as the initial module metadata has // been collected (see initModules) - dispatch_group_async(initModulesAndLoadSource, bridgeQueue, ^{ + dispatch_group_enter(prepareBridge); + [self ensureOnJavaScriptThread:^{ [weakSelf _initializeBridge:executorFactory]; - }); + dispatch_group_leave(prepareBridge); + }]; // Optional load and execute JS source synchronously // TODO #10487027: should this be async on reload? @@ -333,7 +323,7 @@ - (void)start } } else { // Load the source asynchronously, then store it for later execution. - dispatch_group_enter(initModulesAndLoadSource); + dispatch_group_enter(prepareBridge); __block NSData *sourceCode; [self loadSource:^(NSError *error, NSData *source, int64_t sourceLength) { if (error) { @@ -341,7 +331,7 @@ - (void)start } sourceCode = source; - dispatch_group_leave(initModulesAndLoadSource); + dispatch_group_leave(prepareBridge); } onProgress:^(RCTLoadingProgress *progressData) { #ifdef RCT_DEV RCTDevLoadingView *loadingView = [weakSelf moduleForClass:[RCTDevLoadingView class]]; @@ -350,7 +340,7 @@ - (void)start }]; // Wait for both the modules and source code to have finished loading - dispatch_group_notify(initModulesAndLoadSource, bridgeQueue, ^{ + dispatch_group_notify(prepareBridge, dispatch_get_global_queue(QOS_CLASS_USER_INTERACTIVE, 0), ^{ RCTCxxBridge *strongSelf = weakSelf; if (sourceCode && strongSelf.loading) { [strongSelf executeSourceCode:sourceCode sync:NO]; @@ -450,9 +440,13 @@ - (void)_initializeBridge:(std::shared_ptr)executorFactory return; } - if (!_jsMessageThread) { - _jsMessageThread = _jsMessageThreadPromise.get_future().get(); - } + RCTAssertJSThread(); + __weak RCTCxxBridge *weakSelf = self; + _jsMessageThread = std::make_shared([NSRunLoop currentRunLoop], ^(NSError *error) { + if (error) { + [weakSelf handleError:error]; + } + }); RCT_PROFILE_BEGIN_EVENT(RCTProfileTagAlways, @"-[RCTCxxBridge initializeBridge:]", nil); // This can only be false if the bridge was invalidated before startup completed @@ -1037,10 +1031,9 @@ - (void)enqueueCallback:(NSNumber *)cbID args:(NSArray *)args [self _runAfterLoad:^{ RCTProfileEndFlowEvent(); - if (self->_reactInstance) - self->_reactInstance->callJSCallback( - [cbID unsignedLongLongValue], - [RCTConvert folly_dynamic:args ?: @[]]); + if (self->_reactInstance) { + self->_reactInstance->callJSCallback([cbID unsignedLongLongValue], [RCTConvert folly_dynamic:args ?: @[]]); + } }]; } @@ -1051,9 +1044,10 @@ - (void)_immediatelyCallTimer:(NSNumber *)timer { RCTAssertJSThread(); - if (_reactInstance) + if (_reactInstance) { _reactInstance->callJSFunction("JSTimersExecution", "callTimers", folly::dynamic::array(folly::dynamic::array([timer doubleValue]))); + } } - (void)enqueueApplicationScript:(NSData *)script @@ -1069,9 +1063,10 @@ - (void)enqueueApplicationScript:(NSData *)script std::unique_ptr scriptStr = ramBundle->getStartupCode(); [self->_performanceLogger markStopForTag:RCTPLRAMBundleLoad]; [self->_performanceLogger setValue:scriptStr->size() forTag:RCTPLRAMStartupCodeSize]; - if (self->_reactInstance) + if (self->_reactInstance) { self->_reactInstance->loadUnbundle(std::move(ramBundle), std::move(scriptStr), [[url absoluteString] UTF8String]); + } } else if (self->_reactInstance) { self->_reactInstance->loadScriptFromString(std::make_unique(script), [[url absoluteString] UTF8String]); From e6bc8ea10afb7944300f1a32b24d49c1275a1deb Mon Sep 17 00:00:00 2001 From: Jean Lauliac Date: Wed, 17 May 2017 09:21:25 -0700 Subject: [PATCH 0128/1101] packager: MapWithDefaults: @flow Summary: It was hard to type the resolution main algo, I had to put type annotations explicitely everywhere, otherwise Flow would get in some kind of loop and do weird errors. I think it's because the algo is recursive and Flow tries to infer types too deeply because of the generics. Anyway, apart from that it's good to get this extra type security in the few other places. We require Node v4 minimum, that according to the internets supports the `class` syntax without transform, and I verified that inheriting from `Map` actually works as expected. Reviewed By: davidaurelio Differential Revision: D5078023 fbshipit-source-id: 05dfc4acf5b07cdda8a7b36ec9cba216d1810643 --- packager/src/Bundler/index.js | 2 +- packager/src/Server/index.js | 1 + packager/src/lib/ModuleTransport.js | 3 +- .../DependencyGraph/ResolutionRequest.js | 7 ++-- .../DependencyGraph/ResolutionResponse.js | 10 ++--- .../src/node-haste/lib/MapWithDefaults.js | 41 +++++++++++-------- .../lib/__tests__/MapWithDefaults-test.js | 24 +++++++++++ .../node-haste/lib/getInverseDependencies.js | 2 +- 8 files changed, 60 insertions(+), 30 deletions(-) create mode 100644 packager/src/node-haste/lib/__tests__/MapWithDefaults-test.js diff --git a/packager/src/Bundler/index.js b/packager/src/Bundler/index.js index d5da5d7cd14d..60edab603804 100644 --- a/packager/src/Bundler/index.js +++ b/packager/src/Bundler/index.js @@ -642,7 +642,7 @@ class Bundler { entryFilePath: string, options: BundlingOptions, getModuleId: () => number, - dependencyPairs: Array<[mixed, {path: string}]>, + dependencyPairs: Array<[string, Module]>, assetPlugins: Array, }): Promise { let moduleTransport; diff --git a/packager/src/Server/index.js b/packager/src/Server/index.js index f9dcf6e626a2..fae8323b7c2d 100644 --- a/packager/src/Server/index.js +++ b/packager/src/Server/index.js @@ -552,6 +552,7 @@ class Server { changedModules.forEach(m => { response.setResolvedDependencyPairs( m, + /* $FlowFixMe: should be enforced not to be null. */ dependencyPairs.get(m.path), {ignoreFinalized: true}, ); diff --git a/packager/src/lib/ModuleTransport.js b/packager/src/lib/ModuleTransport.js index 1c4e48bdd868..4ba202673ead 100644 --- a/packager/src/lib/ModuleTransport.js +++ b/packager/src/lib/ModuleTransport.js @@ -12,13 +12,14 @@ 'use strict'; import type {RawMapping} from '../Bundler/source-map'; +import type Module from '../node-haste/Module'; import type {SourceMap} from './SourceMap'; type SourceMapOrMappings = SourceMap | Array; type Metadata = { dependencies?: ?Array, - dependencyPairs?: Array<[mixed, {path: string}]>, + dependencyPairs?: Array<[string, Module]>, preloaded: ?boolean, }; diff --git a/packager/src/node-haste/DependencyGraph/ResolutionRequest.js b/packager/src/node-haste/DependencyGraph/ResolutionRequest.js index 4a973778db14..da674da3ba80 100644 --- a/packager/src/node-haste/DependencyGraph/ResolutionRequest.js +++ b/packager/src/node-haste/DependencyGraph/ResolutionRequest.js @@ -214,9 +214,10 @@ class ResolutionRequest { ); }); - const collectedDependencies = new MapWithDefaults(module => - collect(module), - ); + const collectedDependencies: MapWithDefaults< + TModule, + Promise>, + > = new MapWithDefaults(module => collect(module)); const crawlDependencies = (mod, [depNames, dependencies]) => { const filteredPairs = []; diff --git a/packager/src/node-haste/DependencyGraph/ResolutionResponse.js b/packager/src/node-haste/DependencyGraph/ResolutionResponse.js index 2b1bbb134a92..1b3eca62579a 100644 --- a/packager/src/node-haste/DependencyGraph/ResolutionResponse.js +++ b/packager/src/node-haste/DependencyGraph/ResolutionResponse.js @@ -11,8 +11,6 @@ 'use strict'; -import type Module from '../Module'; - const NO_OPTIONS = {}; class ResolutionResponse { @@ -26,7 +24,7 @@ class ResolutionResponse { // This is monkey-patched from Resolver. getModuleId: ?() => number; - _mappings: {}; + _mappings: {[hash: string]: Array<[string, TModule]>}; _finalized: boolean; _mainModule: ?TModule; @@ -104,8 +102,8 @@ class ResolutionResponse { } setResolvedDependencyPairs( - module: Module, - pairs: mixed, + module: TModule, + pairs: Array<[string, TModule]>, options: {ignoreFinalized?: boolean} = NO_OPTIONS, ) { if (!options.ignoreFinalized) { @@ -121,7 +119,7 @@ class ResolutionResponse { this.mocks = mocks; } - getResolvedDependencyPairs(module: TModule) { + getResolvedDependencyPairs(module: TModule): $ReadOnlyArray<[string, TModule]> { this._assertFinalized(); return this._mappings[module.hash()]; } diff --git a/packager/src/node-haste/lib/MapWithDefaults.js b/packager/src/node-haste/lib/MapWithDefaults.js index a264f0c25185..ce79e045051d 100644 --- a/packager/src/node-haste/lib/MapWithDefaults.js +++ b/packager/src/node-haste/lib/MapWithDefaults.js @@ -1,30 +1,35 @@ - /** +/** * Copyright (c) 2016-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. + * + * @flow + * @format */ + 'use strict'; -module.exports = function MapWithDefaults(factory, iterable) { - // This can't be `MapWithDefaults extends Map`, b/c the way babel transforms - // super calls in constructors: Map.call(this, iterable) throws for native - // Map objects in node 4+. - // TODO(davidaurelio) switch to a transform that does not transform classes - // and super calls, and change this into a class +class MapWithDefaults extends Map { + _factory: TK => TV; - const map = iterable ? new Map(iterable) : new Map(); - const {get} = map; - map.get = key => { - if (map.has(key)) { - return get.call(map, key); - } + constructor(factory: TK => TV, iterable?: Iterable<[TK, TV]>) { + super(iterable); + this._factory = factory; + } - const value = factory(key); - map.set(key, value); + get(key: TK): TV { + if (this.has(key)) { + /* $FlowFixMe: can never be `undefined` since we tested with `has` + * (except if `TV` includes `void` as subtype, ex. is nullable) */ + return Map.prototype.get.call(this, key); + } + const value = this._factory(key); + this.set(key, value); return value; - }; - return map; -}; + } +} + +module.exports = MapWithDefaults; diff --git a/packager/src/node-haste/lib/__tests__/MapWithDefaults-test.js b/packager/src/node-haste/lib/__tests__/MapWithDefaults-test.js new file mode 100644 index 000000000000..efb122b3d7bd --- /dev/null +++ b/packager/src/node-haste/lib/__tests__/MapWithDefaults-test.js @@ -0,0 +1,24 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * @format + */ + +'use strict'; + +jest.disableAutomock(); + +const MapWithDefaults = require('../MapWithDefaults'); + +describe('MapWithDefaults', function() { + it('works', () => { + const map = new MapWithDefaults(() => ['bar']); + map.get('foo').push('baz'); + expect(map.get('foo')).toEqual(['bar', 'baz']); + }); +}); diff --git a/packager/src/node-haste/lib/getInverseDependencies.js b/packager/src/node-haste/lib/getInverseDependencies.js index 6ff90334f87f..663208ee7602 100644 --- a/packager/src/node-haste/lib/getInverseDependencies.js +++ b/packager/src/node-haste/lib/getInverseDependencies.js @@ -17,7 +17,7 @@ import type ResolutionResponse from '../DependencyGraph/ResolutionResponse'; function resolveModuleRequires( resolutionResponse: ResolutionResponse, module: TModule, -) { +): Array { const pairs = resolutionResponse.getResolvedDependencyPairs(module); return pairs ? pairs.map(([, dependencyModule]) => dependencyModule) : []; } From 0eeafae9be0910fbf8421739cf2a076088a7f68b Mon Sep 17 00:00:00 2001 From: Jean Lauliac Date: Wed, 17 May 2017 09:28:05 -0700 Subject: [PATCH 0129/1101] packager: HMRBundle: @flow Summary: Better to have *some* Flow coverage (I'd like 100% of packager covered from when we split it apart) than none. Reviewed By: davidaurelio Differential Revision: D5077757 fbshipit-source-id: b23169b3edf2bd3eb0e8a399d099151aa705b198 --- packager/src/Bundler/BundleBase.js | 16 +++++------ packager/src/Bundler/HMRBundle.js | 43 ++++++++++++++++++++++++++---- packager/src/Bundler/index.js | 2 +- 3 files changed, 47 insertions(+), 14 deletions(-) diff --git a/packager/src/Bundler/BundleBase.js b/packager/src/Bundler/BundleBase.js index 84a53630c3b0..5ddd966da72c 100644 --- a/packager/src/Bundler/BundleBase.js +++ b/packager/src/Bundler/BundleBase.js @@ -28,18 +28,18 @@ class BundleBase { _assets: Array; _finalized: boolean; _mainModuleId: number | void; - _modules: Array; _source: ?string; + __modules: Array; constructor() { this._finalized = false; - this._modules = []; + this.__modules = []; this._assets = []; this._mainModuleId = undefined; } isEmpty() { - return this._modules.length === 0 && this._assets.length === 0; + return this.__modules.length === 0 && this._assets.length === 0; } getMainModuleId() { @@ -55,7 +55,7 @@ class BundleBase { throw new Error('Expected a ModuleTransport object'); } - return this._modules.push(module) - 1; + return this.__modules.push(module) - 1; } replaceModuleAt(index: number, module: ModuleTransport) { @@ -63,11 +63,11 @@ class BundleBase { throw new Error('Expeceted a ModuleTransport object'); } - this._modules[index] = module; + this.__modules[index] = module; } getModules() { - return this._modules; + return this.__modules; } getAssets() { @@ -80,7 +80,7 @@ class BundleBase { finalize(options: FinalizeOptions) { if (!options.allowUpdates) { - Object.freeze(this._modules); + Object.freeze(this.__modules); Object.freeze(this._assets); } @@ -94,7 +94,7 @@ class BundleBase { return this._source; } - this._source = this._modules.map(module => module.code).join('\n'); + this._source = this.__modules.map(module => module.code).join('\n'); return this._source; } diff --git a/packager/src/Bundler/HMRBundle.js b/packager/src/Bundler/HMRBundle.js index 065bbd1e0a36..5953f7f71655 100644 --- a/packager/src/Bundler/HMRBundle.js +++ b/packager/src/Bundler/HMRBundle.js @@ -5,14 +5,34 @@ * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. + * + * @flow + * @format */ + 'use strict'; const BundleBase = require('./BundleBase'); const ModuleTransport = require('../lib/ModuleTransport'); +import type Resolver from '../Resolver'; +import type ResolutionResponse + from '../node-haste/DependencyGraph/ResolutionResponse'; +import type Module from '../node-haste/Module'; + class HMRBundle extends BundleBase { - constructor({sourceURLFn, sourceMappingURLFn}) { + _sourceMappingURLFn: (hmrpath: string) => mixed; + _sourceMappingURLs: Array; + _sourceURLFn: (hmrpath: string) => mixed; + _sourceURLs: Array; + + constructor({ + sourceURLFn, + sourceMappingURLFn, + }: { + sourceURLFn: (hmrpath: string) => mixed, + sourceMappingURLFn: (hmrpath: string) => mixed, + }) { super(); this._sourceURLFn = sourceURLFn; this._sourceMappingURLFn = sourceMappingURLFn; @@ -20,22 +40,35 @@ class HMRBundle extends BundleBase { this._sourceMappingURLs = []; } - addModule(resolver, response, module, moduleTransport) { + addModule( + /* $FlowFixMe: broken OOP design: function signature should be the same */ + resolver: Resolver, + /* $FlowFixMe: broken OOP design: function signature should be the same */ + response: ResolutionResponse, + /* $FlowFixMe: broken OOP design: function signature should be the same */ + module: Module, + /* $FlowFixMe: broken OOP design: function signature should be the same */ + moduleTransport: ModuleTransport, + ) { const code = resolver.resolveRequires( response, module, moduleTransport.code, + /* $FlowFixMe: may not exist */ moduleTransport.meta.dependencyOffsets, ); super.addModule(new ModuleTransport({...moduleTransport, code})); - this._sourceMappingURLs.push(this._sourceMappingURLFn(moduleTransport.sourcePath)); + this._sourceMappingURLs.push( + this._sourceMappingURLFn(moduleTransport.sourcePath), + ); this._sourceURLs.push(this._sourceURLFn(moduleTransport.sourcePath)); - return Promise.resolve(); + // inconsistent with parent class return type + return (Promise.resolve(): any); } getModulesIdsAndCode() { - return this._modules.map(module => { + return this.__modules.map(module => { return { id: JSON.stringify(module.id), code: module.code, diff --git a/packager/src/Bundler/index.js b/packager/src/Bundler/index.js index 60edab603804..38cf5ac09b51 100644 --- a/packager/src/Bundler/index.js +++ b/packager/src/Bundler/index.js @@ -338,7 +338,7 @@ class Bundler { unbundle, }: { assetPlugins?: Array, - bundle: Bundle, + bundle: Bundle | HMRBundle, dev: boolean, entryFile?: string, entryModuleOnly?: boolean, From 1e32de030447557af2afafe1cd078470f08991b8 Mon Sep 17 00:00:00 2001 From: Tomas Roos Date: Wed, 17 May 2017 11:11:28 -0700 Subject: [PATCH 0130/1101] Make sure to run all subspecs, to find failing cases Summary: Thanks for submitting a PR! Please read these instructions carefully: Currently no subspecs are running on CI which causes us to find bugs in the podspec from time to time we upgrade master. In order to highlight errors for podspecs users when changes happen we should make sure to run all subspecs even though it might take a bit longer when running the CI Closes https://github.com/facebook/react-native/pull/14019 Differential Revision: D5079230 Pulled By: javache fbshipit-source-id: 7b3b5dba5ba147b1fc24e79299ed260f9fc6231b --- scripts/process-podspecs.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/process-podspecs.sh b/scripts/process-podspecs.sh index e39f8c78b421..6a897bd82c79 100755 --- a/scripts/process-podspecs.sh +++ b/scripts/process-podspecs.sh @@ -24,7 +24,7 @@ fi cd "$SPEC_REPO_DIR" SPEC_REPO_REMOTE=$(git remote get-url origin) -POD_LINT_OPT="--verbose --no-subspecs --allow-warnings --fail-fast --private --swift-version=3.0 --sources=$SPEC_REPO_REMOTE" +POD_LINT_OPT="--verbose --allow-warnings --fail-fast --private --swift-version=3.0 --sources=$SPEC_REPO_REMOTE" # Get the version from a podspec. version() { From 056d075ef224a2ed623a668b47868b2cf36153ba Mon Sep 17 00:00:00 2001 From: Ashok Menon Date: Wed, 17 May 2017 14:20:35 -0700 Subject: [PATCH 0131/1101] Fixing up header namespaces in ReactCommon Reviewed By: mzlee Differential Revision: D5079295 fbshipit-source-id: 03b848dedb41da900bb6ac69112bbb973a8a2595 --- ReactCommon/cxxreact/BUCK | 37 ++++++++++++++++++++++--------------- ReactCommon/jschelpers/BUCK | 11 ++++++++--- 2 files changed, 30 insertions(+), 18 deletions(-) diff --git a/ReactCommon/cxxreact/BUCK b/ReactCommon/cxxreact/BUCK index a252df565f76..01062c5ed111 100644 --- a/ReactCommon/cxxreact/BUCK +++ b/ReactCommon/cxxreact/BUCK @@ -12,14 +12,16 @@ if THIS_IS_FBOBJC: rn_xplat_cxx_library( name = "module", compiler_flags = CXX_LIBRARY_COMPILER_FLAGS, - exported_headers = [ - "CxxModule.h", - "JsArgumentHelpers.h", - "JsArgumentHelpers-inl.h", - ], - fbobjc_header_path_prefix = "cxxreact", + exported_headers = subdir_glob( + [ + ("", "CxxModule.h"), + ("", "JsArgumentHelpers.h"), + ("", "JsArgumentHelpers-inl.h"), + ], + prefix = "cxxreact", + ), force_static = True, - header_namespace = "cxxreact", + header_namespace = "", visibility = [ "PUBLIC", ], @@ -38,12 +40,12 @@ rn_xplat_cxx_library( "-fexceptions", "-frtti", ], - exported_headers = [ - "JSBigString.h", - ], - fbobjc_header_path_prefix = "cxxreact", + exported_headers = subdir_glob( + [("", "JSBigString.h")], + prefix = "cxxreact", + ), force_static = True, - header_namespace = "cxxreact", + header_namespace = "", visibility = [ "PUBLIC", ], @@ -106,7 +108,13 @@ rn_xplat_cxx_library( "-fexceptions", "-frtti", ], - exported_headers = CXXREACT_PUBLIC_HEADERS, + exported_headers = dict([ + ( + "cxxreact/%s" % header, + header, + ) + for header in CXXREACT_PUBLIC_HEADERS + ]), fbandroid_preprocessor_flags = [ "-DWITH_JSC_EXTRA_TRACING=1", "-DWITH_JSC_MEMORY_PRESSURE=1", @@ -132,12 +140,11 @@ rn_xplat_cxx_library( fbobjc_frameworks = [ "$SDKROOT/System/Library/Frameworks/JavaScriptCore.framework", ], - fbobjc_header_path_prefix = "cxxreact", fbobjc_inherited_buck_flags = STATIC_LIBRARY_IOS_FLAGS, fbobjc_preprocessor_flags = DEBUG_PREPROCESSOR_FLAGS, fbobjc_visibility = ["PUBLIC"], force_static = True, - header_namespace = "cxxreact", + header_namespace = "", headers = glob( ["*.h"], excludes = CXXREACT_PUBLIC_HEADERS, diff --git a/ReactCommon/jschelpers/BUCK b/ReactCommon/jschelpers/BUCK index d613dd574e8b..11f4e65b765e 100644 --- a/ReactCommon/jschelpers/BUCK +++ b/ReactCommon/jschelpers/BUCK @@ -22,11 +22,16 @@ rn_xplat_cxx_library( "-fvisibility=hidden", "-std=c++1y", ], - exported_headers = EXPORTED_HEADERS, - fbobjc_header_path_prefix = "jschelpers", + exported_headers = dict([ + ( + "jschelpers/%s" % header, + header, + ) + for header in EXPORTED_HEADERS + ]), fbobjc_inherited_buck_flags = STATIC_LIBRARY_IOS_FLAGS, force_static = True, - header_namespace = "jschelpers", + header_namespace = "", headers = glob( ["*.h"], excludes = EXPORTED_HEADERS, From d7659a0ec6561eca65378e06f34f6ca94cc514f2 Mon Sep 17 00:00:00 2001 From: David Aurelio Date: Thu, 18 May 2017 05:21:59 -0700 Subject: [PATCH 0132/1101] Move stack trace formatting in own class Summary: Moves stack trace formatting logic into its own class to facilitate reusage from custom exception managers. Reviewed By: javache Differential Revision: D5086336 fbshipit-source-id: f434a1621c599c5c49991b3bfe5f66d05f84b5c9 --- .../java/com/facebook/react/modules/core/BUCK | 1 + .../modules/core/ExceptionsManagerModule.java | 51 ++-------------- .../main/java/com/facebook/react/util/BUCK | 12 ++++ .../com/facebook/react/util/JSStackTrace.java | 59 +++++++++++++++++++ 4 files changed, 76 insertions(+), 47 deletions(-) create mode 100644 ReactAndroid/src/main/java/com/facebook/react/util/BUCK create mode 100644 ReactAndroid/src/main/java/com/facebook/react/util/JSStackTrace.java diff --git a/ReactAndroid/src/main/java/com/facebook/react/modules/core/BUCK b/ReactAndroid/src/main/java/com/facebook/react/modules/core/BUCK index 1a8a4f6ac8a9..b3a6aaf957e3 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/modules/core/BUCK +++ b/ReactAndroid/src/main/java/com/facebook/react/modules/core/BUCK @@ -15,5 +15,6 @@ android_library( react_native_target("java/com/facebook/react/devsupport:interfaces"), react_native_target("java/com/facebook/react/jstasks:jstasks"), react_native_target("java/com/facebook/react/module/annotations:annotations"), + react_native_target("java/com/facebook/react/util:util"), ], ) diff --git a/ReactAndroid/src/main/java/com/facebook/react/modules/core/ExceptionsManagerModule.java b/ReactAndroid/src/main/java/com/facebook/react/modules/core/ExceptionsManagerModule.java index b92d22ad778f..af6e133e5bba 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/modules/core/ExceptionsManagerModule.java +++ b/ReactAndroid/src/main/java/com/facebook/react/modules/core/ExceptionsManagerModule.java @@ -9,26 +9,21 @@ package com.facebook.react.modules.core; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - import com.facebook.common.logging.FLog; import com.facebook.react.bridge.BaseJavaModule; import com.facebook.react.bridge.ReactMethod; import com.facebook.react.bridge.ReadableArray; -import com.facebook.react.bridge.ReadableMap; -import com.facebook.react.bridge.ReadableType; -import com.facebook.react.devsupport.interfaces.DevSupportManager; import com.facebook.react.common.JavascriptException; import com.facebook.react.common.ReactConstants; +import com.facebook.react.devsupport.interfaces.DevSupportManager; import com.facebook.react.module.annotations.ReactModule; +import com.facebook.react.util.JSStackTrace; @ReactModule(name = ExceptionsManagerModule.NAME) public class ExceptionsManagerModule extends BaseJavaModule { protected static final String NAME = "ExceptionsManager"; - static private final Pattern mJsModuleIdPattern = Pattern.compile("(?:^|[/\\\\])(\\d+\\.js)$"); private final DevSupportManager mDevSupportManager; public ExceptionsManagerModule(DevSupportManager devSupportManager) { @@ -40,44 +35,6 @@ public String getName() { return NAME; } - // If the file name of a stack frame is numeric (+ ".js"), we assume it's a lazily injected module - // coming from a "random access bundle". We are using special source maps for these bundles, so - // that we can symbolicate stack traces for multiple injected files with a single source map. - // We have to include the module id in the stack for that, though. The ".js" suffix is kept to - // avoid ambiguities between "module-id:line" and "line:column". - static private String stackFrameToModuleId(ReadableMap frame) { - if (frame.hasKey("file") && - !frame.isNull("file") && - frame.getType("file") == ReadableType.String) { - final Matcher matcher = mJsModuleIdPattern.matcher(frame.getString("file")); - if (matcher.find()) { - return matcher.group(1) + ":"; - } - } - return ""; - } - - private String stackTraceToString(String message, ReadableArray stack) { - StringBuilder stringBuilder = new StringBuilder(message).append(", stack:\n"); - for (int i = 0; i < stack.size(); i++) { - ReadableMap frame = stack.getMap(i); - stringBuilder - .append(frame.getString("methodName")) - .append("@") - .append(stackFrameToModuleId(frame)) - .append(frame.getInt("lineNumber")); - if (frame.hasKey("column") && - !frame.isNull("column") && - frame.getType("column") == ReadableType.Number) { - stringBuilder - .append(":") - .append(frame.getInt("column")); - } - stringBuilder.append("\n"); - } - return stringBuilder.toString(); - } - @ReactMethod public void reportFatalException(String title, ReadableArray details, int exceptionId) { showOrThrowError(title, details, exceptionId); @@ -88,7 +45,7 @@ public void reportSoftException(String title, ReadableArray details, int excepti if (mDevSupportManager.getDevSupportEnabled()) { mDevSupportManager.showNewJSError(title, details, exceptionId); } else { - FLog.e(ReactConstants.TAG, stackTraceToString(title, details)); + FLog.e(ReactConstants.TAG, JSStackTrace.format(title, details)); } } @@ -96,7 +53,7 @@ private void showOrThrowError(String title, ReadableArray details, int exception if (mDevSupportManager.getDevSupportEnabled()) { mDevSupportManager.showNewJSError(title, details, exceptionId); } else { - throw new JavascriptException(stackTraceToString(title, details)); + throw new JavascriptException(JSStackTrace.format(title, details)); } } diff --git a/ReactAndroid/src/main/java/com/facebook/react/util/BUCK b/ReactAndroid/src/main/java/com/facebook/react/util/BUCK new file mode 100644 index 000000000000..a159d59ddefc --- /dev/null +++ b/ReactAndroid/src/main/java/com/facebook/react/util/BUCK @@ -0,0 +1,12 @@ +include_defs("//ReactAndroid/DEFS") + +android_library( + name = "util", + srcs = glob(["**/*.java"]), + visibility = [ + "PUBLIC", + ], + deps = [ + react_native_target("java/com/facebook/react/bridge:bridge"), + ], +) diff --git a/ReactAndroid/src/main/java/com/facebook/react/util/JSStackTrace.java b/ReactAndroid/src/main/java/com/facebook/react/util/JSStackTrace.java new file mode 100644 index 000000000000..d3ebe61320ac --- /dev/null +++ b/ReactAndroid/src/main/java/com/facebook/react/util/JSStackTrace.java @@ -0,0 +1,59 @@ +/** + * Copyright (c) 2017-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ +package com.facebook.react.util; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import com.facebook.react.bridge.ReadableArray; +import com.facebook.react.bridge.ReadableMap; +import com.facebook.react.bridge.ReadableType; + +public class JSStackTrace { + + final private static Pattern mJsModuleIdPattern = Pattern.compile("(?:^|[/\\\\])(\\d+\\.js)$"); + + public static String format(String message, ReadableArray stack) { + StringBuilder stringBuilder = new StringBuilder(message).append(", stack:\n"); + for (int i = 0; i < stack.size(); i++) { + ReadableMap frame = stack.getMap(i); + stringBuilder + .append(frame.getString("methodName")) + .append("@") + .append(stackFrameToModuleId(frame)) + .append(frame.getInt("lineNumber")); + if (frame.hasKey("column") && + !frame.isNull("column") && + frame.getType("column") == ReadableType.Number) { + stringBuilder + .append(":") + .append(frame.getInt("column")); + } + stringBuilder.append("\n"); + } + return stringBuilder.toString(); + } + + // If the file name of a stack frame is numeric (+ ".js"), we assume it's a lazily injected module + // coming from a "random access bundle". We are using special source maps for these bundles, so + // that we can symbolicate stack traces for multiple injected files with a single source map. + // We have to include the module id in the stack for that, though. The ".js" suffix is kept to + // avoid ambiguities between "module-id:line" and "line:column". + private static String stackFrameToModuleId(ReadableMap frame) { + if (frame.hasKey("file") && + !frame.isNull("file") && + frame.getType("file") == ReadableType.String) { + final Matcher matcher = mJsModuleIdPattern.matcher(frame.getString("file")); + if (matcher.find()) { + return matcher.group(1) + ":"; + } + } + return ""; + } +} From 658f632f595828673fffe683b048ded73ce3d8f1 Mon Sep 17 00:00:00 2001 From: Aaron Chiu Date: Thu, 18 May 2017 06:39:34 -0700 Subject: [PATCH 0133/1101] add Systrace to ReactRootView Reviewed By: alexeylang Differential Revision: D5085095 fbshipit-source-id: 0ec42ecede72baa5f761c525fe9fd210361181be --- .../com/facebook/react/ReactRootView.java | 80 +++++++++++-------- 1 file changed, 48 insertions(+), 32 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/ReactRootView.java b/ReactAndroid/src/main/java/com/facebook/react/ReactRootView.java index 82fa4986a692..1e492556ea2a 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/ReactRootView.java +++ b/ReactAndroid/src/main/java/com/facebook/react/ReactRootView.java @@ -96,20 +96,25 @@ public ReactRootView(Context context, AttributeSet attrs, int defStyle) { @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - setMeasuredDimension( + Systrace.beginSection(TRACE_TAG_REACT_JAVA_BRIDGE, "ReactRootView.onMeasure"); + try { + setMeasuredDimension( MeasureSpec.getSize(widthMeasureSpec), MeasureSpec.getSize(heightMeasureSpec)); - mWasMeasured = true; - // Check if we were waiting for onMeasure to attach the root view - if (mReactInstanceManager != null && !mIsAttachedToInstance) { - // Enqueue it to UIThread not to block onMeasure waiting for the catalyst instance creation - UiThreadUtil.runOnUiThread(new Runnable() { - @Override - public void run() { - attachToReactInstanceManager(); - } - }); + mWasMeasured = true; + // Check if we were waiting for onMeasure to attach the root view. + if (mReactInstanceManager != null && !mIsAttachedToInstance) { + // Enqueue it to UIThread not to block onMeasure waiting for the catalyst instance creation. + UiThreadUtil.runOnUiThread(new Runnable() { + @Override + public void run() { + attachToReactInstanceManager(); + } + }); + } + } finally { + Systrace.endSection(TRACE_TAG_REACT_JAVA_BRIDGE); } } @@ -204,27 +209,33 @@ public void startReactApplication( ReactInstanceManager reactInstanceManager, String moduleName, @Nullable Bundle initialProperties) { - UiThreadUtil.assertOnUiThread(); + Systrace.beginSection(TRACE_TAG_REACT_JAVA_BRIDGE, "startReactApplication"); + try { + UiThreadUtil.assertOnUiThread(); - // TODO(6788889): Use POJO instead of bundle here, apparently we can't just use WritableMap - // here as it may be deallocated in native after passing via JNI bridge, but we want to reuse - // it in the case of re-creating the catalyst instance - Assertions.assertCondition( + // TODO(6788889): Use POJO instead of bundle here, apparently we can't just use WritableMap + // here as it may be deallocated in native after passing via JNI bridge, but we want to reuse + // it in the case of re-creating the catalyst instance + Assertions.assertCondition( mReactInstanceManager == null, "This root view has already been attached to a catalyst instance manager"); - mReactInstanceManager = reactInstanceManager; - mJSModuleName = moduleName; - mAppProperties = initialProperties; + mReactInstanceManager = reactInstanceManager; + mJSModuleName = moduleName; + mAppProperties = initialProperties; - if (!mReactInstanceManager.hasStartedCreatingInitialContext()) { - mReactInstanceManager.createReactContextInBackground(); - } + if (!mReactInstanceManager.hasStartedCreatingInitialContext()) { + mReactInstanceManager.createReactContextInBackground(); + } - // We need to wait for the initial onMeasure, if this view has not yet been measured, we set which - // will make this view startReactApplication itself to instance manager once onMeasure is called. - if (mWasMeasured) { - attachToReactInstanceManager(); + // We need to wait for the initial onMeasure, if this view has not yet been measured, we set + // which will make this view startReactApplication itself to instance manager once onMeasure + // is called. + if (mWasMeasured) { + attachToReactInstanceManager(); + } + } finally { + Systrace.endSection(TRACE_TAG_REACT_JAVA_BRIDGE); } } @@ -315,13 +326,18 @@ private CustomGlobalLayoutListener getCustomGlobalLayoutListener() { } private void attachToReactInstanceManager() { - if (mIsAttachedToInstance) { - return; - } + Systrace.beginSection(TRACE_TAG_REACT_JAVA_BRIDGE, "attachToReactInstanceManager"); + try { + if (mIsAttachedToInstance) { + return; + } - mIsAttachedToInstance = true; - Assertions.assertNotNull(mReactInstanceManager).attachMeasuredRootView(this); - getViewTreeObserver().addOnGlobalLayoutListener(getCustomGlobalLayoutListener()); + mIsAttachedToInstance = true; + Assertions.assertNotNull(mReactInstanceManager).attachMeasuredRootView(this); + getViewTreeObserver().addOnGlobalLayoutListener(getCustomGlobalLayoutListener()); + } finally { + Systrace.endSection(TRACE_TAG_REACT_JAVA_BRIDGE); + } } @Override From 93a1d592d61b229d3dafe57d1590d286312cc0bf Mon Sep 17 00:00:00 2001 From: Emil Sjolander Date: Thu, 18 May 2017 08:06:52 -0700 Subject: [PATCH 0134/1101] Update okhttp3 Reviewed By: bestander Differential Revision: D5078004 fbshipit-source-id: 79c66cedeeb682d8bb4e67798b41115899fd1c81 --- ReactAndroid/build.gradle | 7 +- .../java/com/facebook/react/devsupport/BUCK | 1 - .../InspectorPackagerConnection.java | 41 ++++------ .../devsupport/JSDebuggerWebSocketClient.java | 42 +++------- .../com/facebook/react/modules/websocket/BUCK | 1 - .../modules/websocket/WebSocketModule.java | 82 +++++++------------ .../facebook/react/packagerconnection/BUCK | 1 - .../packagerconnection/JSPackagerClient.java | 26 +++--- .../ReconnectingWebSocket.java | 47 ++++++----- .../src/main/third-party/java/okhttp/BUCK | 20 +---- .../src/main/third-party/java/okio/BUCK | 4 +- .../java/com/facebook/react/devsupport/BUCK | 1 - .../JSDebuggerWebSocketClientTest.java | 17 ++-- .../facebook/react/packagerconnection/BUCK | 1 - .../JSPackagerClientTest.java | 43 ++-------- 15 files changed, 121 insertions(+), 213 deletions(-) diff --git a/ReactAndroid/build.gradle b/ReactAndroid/build.gradle index 62f2ee43a6c7..45317e6655db 100644 --- a/ReactAndroid/build.gradle +++ b/ReactAndroid/build.gradle @@ -283,10 +283,9 @@ dependencies { compile 'com.facebook.fresco:imagepipeline-okhttp3:1.0.1' compile 'com.facebook.soloader:soloader:0.1.0' compile 'com.google.code.findbugs:jsr305:3.0.0' - compile 'com.squareup.okhttp3:okhttp:3.4.1' - compile 'com.squareup.okhttp3:okhttp-urlconnection:3.4.1' - compile 'com.squareup.okhttp3:okhttp-ws:3.4.1' - compile 'com.squareup.okio:okio:1.9.0' + compile 'com.squareup.okhttp3:okhttp:3.8.0' + compile 'com.squareup.okhttp3:okhttp-urlconnection:3.8.0' + compile 'com.squareup.okio:okio:1.13.0' compile 'org.webkit:android-jsc:r174650' testCompile "junit:junit:${JUNIT_VERSION}" diff --git a/ReactAndroid/src/main/java/com/facebook/react/devsupport/BUCK b/ReactAndroid/src/main/java/com/facebook/react/devsupport/BUCK index b2bbafe5fecb..8526eba41a11 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/devsupport/BUCK +++ b/ReactAndroid/src/main/java/com/facebook/react/devsupport/BUCK @@ -12,7 +12,6 @@ android_library( react_native_dep("third-party/java/infer-annotations:infer-annotations"), react_native_dep("third-party/java/jsr-305:jsr-305"), react_native_dep("third-party/java/okhttp:okhttp3"), - react_native_dep("third-party/java/okhttp:okhttp3-ws"), react_native_dep("third-party/java/okio:okio"), 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/devsupport/InspectorPackagerConnection.java b/ReactAndroid/src/main/java/com/facebook/react/devsupport/InspectorPackagerConnection.java index c328e25049a7..04843ae0558d 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/devsupport/InspectorPackagerConnection.java +++ b/ReactAndroid/src/main/java/com/facebook/react/devsupport/InspectorPackagerConnection.java @@ -19,13 +19,9 @@ import okhttp3.OkHttpClient; import okhttp3.Request; -import okhttp3.RequestBody; import okhttp3.Response; -import okhttp3.ResponseBody; -import okhttp3.ws.WebSocket; -import okhttp3.ws.WebSocketCall; -import okhttp3.ws.WebSocketListener; -import okio.Buffer; +import okhttp3.WebSocket; +import okhttp3.WebSocketListener; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; @@ -175,7 +171,7 @@ private JSONObject makePageIdPayload(String pageId) throws JSONException { return payload; } - private class Connection implements WebSocketListener { + private class Connection extends WebSocketListener { private static final int RECONNECT_DELAY_MS = 2000; private final String mUrl; @@ -196,9 +192,9 @@ public void onOpen(WebSocket webSocket, Response response) { } @Override - public void onFailure(IOException e, Response response) { + public void onFailure(WebSocket webSocket, Throwable t, Response response) { if (mWebSocket != null) { - abort("Websocket exception", e); + abort("Websocket exception", t); } if (!mClosed) { reconnect(); @@ -206,22 +202,16 @@ public void onFailure(IOException e, Response response) { } @Override - public void onMessage(ResponseBody message) throws IOException { + public void onMessage(WebSocket webSocket, String text) { try { - handleProxyMessage(new JSONObject(message.string())); - } catch (JSONException e) { - throw new IOException(e); - } finally { - message.close(); + handleProxyMessage(new JSONObject(text)); + } catch (Exception e) { + throw new RuntimeException(e); } } @Override - public void onPong(Buffer payload) { - } - - @Override - public void onClose(int code, String reason) { + public void onClosed(WebSocket webSocket, int code, String reason) { mWebSocket = null; closeAllConnections(); if (!mClosed) { @@ -240,8 +230,7 @@ public void connect() { .build(); Request request = new Request.Builder().url(mUrl).build(); - WebSocketCall call = WebSocketCall.create(httpClient, request); - call.enqueue(this); + httpClient.newWebSocket(request, this); } private void reconnect() { @@ -270,7 +259,7 @@ public void close() { if (mWebSocket != null) { try { mWebSocket.close(1000, "End of session"); - } catch (IOException e) { + } catch (Exception e) { // swallow, no need to handle it here } mWebSocket = null; @@ -285,8 +274,8 @@ protected Void doInBackground(WebSocket... sockets) { return null; } try { - sockets[0].sendMessage(RequestBody.create(WebSocket.TEXT, object.toString())); - } catch (IOException e) { + sockets[0].send(object.toString()); + } catch (Exception e) { FLog.w(TAG, "Couldn't send event to packager", e); } return null; @@ -304,7 +293,7 @@ private void closeWebSocketQuietly() { if (mWebSocket != null) { try { mWebSocket.close(1000, "End of session"); - } catch (IOException e) { + } catch (Exception e) { // swallow, no need to handle it here } mWebSocket = null; diff --git a/ReactAndroid/src/main/java/com/facebook/react/devsupport/JSDebuggerWebSocketClient.java b/ReactAndroid/src/main/java/com/facebook/react/devsupport/JSDebuggerWebSocketClient.java index 21ddd022613c..3a812499713c 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/devsupport/JSDebuggerWebSocketClient.java +++ b/ReactAndroid/src/main/java/com/facebook/react/devsupport/JSDebuggerWebSocketClient.java @@ -18,6 +18,7 @@ import com.facebook.react.common.JavascriptException; import java.io.IOException; +import java.io.StringReader; import java.io.StringWriter; import java.util.HashMap; import java.util.concurrent.ConcurrentHashMap; @@ -28,18 +29,14 @@ import okhttp3.OkHttpClient; import okhttp3.Request; -import okhttp3.RequestBody; import okhttp3.Response; -import okhttp3.ResponseBody; -import okhttp3.ws.WebSocket; -import okhttp3.ws.WebSocketCall; -import okhttp3.ws.WebSocketListener; -import okio.Buffer; +import okhttp3.WebSocket; +import okhttp3.WebSocketListener; /** * A wrapper around WebSocketClient that recognizes RN debugging message format. */ -public class JSDebuggerWebSocketClient implements WebSocketListener { +public class JSDebuggerWebSocketClient extends WebSocketListener { private static final String TAG = "JSDebuggerWebSocketClient"; @@ -67,8 +64,7 @@ public void connect(String url, JSDebuggerCallback callback) { .build(); Request request = new Request.Builder().url(url).build(); - WebSocketCall call = WebSocketCall.create(mHttpClient, request); - call.enqueue(this); + mHttpClient.newWebSocket(request, this); } public void prepareJSRuntime(JSDebuggerCallback callback) { @@ -142,7 +138,7 @@ public void closeQuietly() { if (mWebSocket != null) { try { mWebSocket.close(1000, "End of session"); - } catch (IOException e) { + } catch (Exception e) { // swallow, no need to handle it here } mWebSocket = null; @@ -157,8 +153,8 @@ private void sendMessage(int requestID, String message) { return; } try { - mWebSocket.sendMessage(RequestBody.create(WebSocket.TEXT, message)); - } catch (IOException e) { + mWebSocket.send(message); + } catch (Exception e) { triggerRequestFailure(requestID, e); } } @@ -180,16 +176,11 @@ private void triggerRequestSuccess(int requestID, @Nullable String response) { } @Override - public void onMessage(ResponseBody response) throws IOException { - if (response.contentType() != WebSocket.TEXT) { - FLog.w(TAG, "Websocket received unexpected message with payload of type " + response.contentType()); - return; - } - + public void onMessage(WebSocket webSocket, String text) { Integer replyID = null; try { - JsonReader reader = new JsonReader(response.charStream()); + JsonReader reader = new JsonReader(new StringReader(text)); String result = null; reader.beginObject(); while (reader.hasNext()) { @@ -218,14 +209,12 @@ public void onMessage(ResponseBody response) throws IOException { } else { abort("Parsing response message from websocket failed", e); } - } finally { - response.close(); } } @Override - public void onFailure(IOException e, Response response) { - abort("Websocket exception", e); + public void onFailure(WebSocket webSocket, Throwable t, Response response) { + abort("Websocket exception", t); } @Override @@ -236,15 +225,10 @@ public void onOpen(WebSocket webSocket, Response response) { } @Override - public void onClose(int code, String reason) { + public void onClosed(WebSocket webSocket, int code, String reason) { mWebSocket = null; } - @Override - public void onPong(Buffer payload) { - // ignore - } - private void abort(String message, Throwable cause) { FLog.e(TAG, "Error occurred, shutting down websocket connection: " + message, cause); closeQuietly(); diff --git a/ReactAndroid/src/main/java/com/facebook/react/modules/websocket/BUCK b/ReactAndroid/src/main/java/com/facebook/react/modules/websocket/BUCK index 9a0c96152c46..6ea83d2e5c85 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/modules/websocket/BUCK +++ b/ReactAndroid/src/main/java/com/facebook/react/modules/websocket/BUCK @@ -11,7 +11,6 @@ android_library( react_native_dep("third-party/java/infer-annotations:infer-annotations"), react_native_dep("third-party/java/jsr-305:jsr-305"), react_native_dep("third-party/java/okhttp:okhttp3"), - react_native_dep("third-party/java/okhttp:okhttp3-ws"), react_native_dep("third-party/java/okio:okio"), 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/modules/websocket/WebSocketModule.java b/ReactAndroid/src/main/java/com/facebook/react/modules/websocket/WebSocketModule.java index a114e63a0669..7213bb730e66 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/modules/websocket/WebSocketModule.java +++ b/ReactAndroid/src/main/java/com/facebook/react/modules/websocket/WebSocketModule.java @@ -9,11 +9,15 @@ package com.facebook.react.modules.websocket; -import android.util.Base64; +import javax.annotation.Nullable; import java.io.IOException; -import java.lang.IllegalStateException; -import javax.annotation.Nullable; +import java.net.URI; +import java.net.URISyntaxException; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.TimeUnit; import com.facebook.common.logging.FLog; import com.facebook.react.bridge.Arguments; @@ -33,21 +37,9 @@ import okhttp3.OkHttpClient; import okhttp3.Request; -import okhttp3.RequestBody; import okhttp3.Response; -import okhttp3.ResponseBody; -import okhttp3.ws.WebSocket; -import okhttp3.ws.WebSocketCall; -import okhttp3.ws.WebSocketListener; - -import java.net.URISyntaxException; -import java.net.URI; -import java.util.HashMap; -import java.util.Map; -import java.util.List; -import java.util.concurrent.TimeUnit; - -import okio.Buffer; +import okhttp3.WebSocket; +import okhttp3.WebSocketListener; import okio.ByteString; @ReactModule(name = "WebSocketModule", hasConstants = false) @@ -132,7 +124,7 @@ public void connect( } } - WebSocketCall.create(client, builder.build()).enqueue(new WebSocketListener() { + client.newWebSocket(builder.build(), new WebSocketListener() { @Override public void onOpen(WebSocket webSocket, Response response) { @@ -143,7 +135,7 @@ public void onOpen(WebSocket webSocket, Response response) { } @Override - public void onClose(int code, String reason) { + public void onClosed(WebSocket webSocket, int code, String reason) { WritableMap params = Arguments.createMap(); params.putInt("id", id); params.putInt("code", code); @@ -152,40 +144,26 @@ public void onClose(int code, String reason) { } @Override - public void onFailure(IOException e, Response response) { - notifyWebSocketFailed(id, e.getMessage()); + public void onFailure(WebSocket webSocket, Throwable t, Response response) { + notifyWebSocketFailed(id, t.getMessage()); } @Override - public void onPong(Buffer buffer) { + public void onMessage(WebSocket webSocket, String text) { + WritableMap params = Arguments.createMap(); + params.putInt("id", id); + params.putString("data", text); + params.putString("type", "text"); + sendEvent("websocketMessage", params); } @Override - public void onMessage(ResponseBody response) throws IOException { - String message; - try { - if (response.contentType() == WebSocket.BINARY) { - message = Base64.encodeToString(response.source().readByteArray(), Base64.NO_WRAP); - } else { - message = response.source().readUtf8(); - } - } catch (IOException e) { - notifyWebSocketFailed(id, e.getMessage()); - return; - } - try { - response.source().close(); - } catch (IOException e) { - FLog.e( - ReactConstants.TAG, - "Could not close BufferedSource for WebSocket id " + id, - e); - } - + public void onMessage(WebSocket webSocket, ByteString bytes) { + String text = bytes.utf8(); WritableMap params = Arguments.createMap(); params.putInt("id", id); - params.putString("data", message); - params.putString("type", response.contentType() == WebSocket.BINARY ? "binary" : "text"); + params.putString("data", text); + params.putString("type", "binary"); sendEvent("websocketMessage", params); } }); @@ -221,8 +199,8 @@ public void send(String message, int id) { throw new RuntimeException("Cannot send a message. Unknown WebSocket id " + id); } try { - client.sendMessage(RequestBody.create(WebSocket.TEXT, message)); - } catch (IOException | IllegalStateException e) { + client.send(message); + } catch (Exception e) { notifyWebSocketFailed(id, e.getMessage()); } } @@ -235,9 +213,8 @@ public void sendBinary(String base64String, int id) { throw new RuntimeException("Cannot send a message. Unknown WebSocket id " + id); } try { - client.sendMessage( - RequestBody.create(WebSocket.BINARY, ByteString.decodeBase64(base64String))); - } catch (IOException | IllegalStateException e) { + client.send(ByteString.decodeBase64(base64String)); + } catch (Exception e) { notifyWebSocketFailed(id, e.getMessage()); } } @@ -250,9 +227,8 @@ public void ping(int id) { throw new RuntimeException("Cannot send a message. Unknown WebSocket id " + id); } try { - Buffer buffer = new Buffer(); - client.sendPing(buffer); - } catch (IOException | IllegalStateException e) { + client.send(ByteString.EMPTY); + } catch (Exception e) { notifyWebSocketFailed(id, e.getMessage()); } } diff --git a/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/BUCK b/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/BUCK index 4202a278283d..605ae74819a3 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/BUCK +++ b/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/BUCK @@ -17,7 +17,6 @@ android_library( react_native_dep("third-party/java/infer-annotations:infer-annotations"), react_native_dep("third-party/java/jsr-305:jsr-305"), react_native_dep("third-party/java/okhttp:okhttp3"), - react_native_dep("third-party/java/okhttp:okhttp3-ws"), react_native_dep("third-party/java/okio:okio"), react_native_target("java/com/facebook/react/modules/systeminfo:systeminfo-moduleless"), ] + ([react_native_target("jni/packagerconnection:jni")] if not IS_OSS_BUILD else []), diff --git a/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/JSPackagerClient.java b/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/JSPackagerClient.java index e22a37ef779f..0248973d83d2 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/JSPackagerClient.java +++ b/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/JSPackagerClient.java @@ -15,9 +15,7 @@ import com.facebook.common.logging.FLog; import com.facebook.react.modules.systeminfo.AndroidInfoHelpers; -import okhttp3.RequestBody; -import okhttp3.ResponseBody; -import okhttp3.ws.WebSocket; +import okio.ByteString; import org.json.JSONObject; @@ -42,7 +40,7 @@ public void respond(Object result) { message.put("version", PROTOCOL_VERSION); message.put("id", mId); message.put("result", result); - mWebSocket.sendMessage(RequestBody.create(WebSocket.TEXT, message.toString())); + mWebSocket.sendMessage(message.toString()); } catch (Exception e) { FLog.e(TAG, "Responding failed", e); } @@ -54,7 +52,7 @@ public void error(Object error) { message.put("version", PROTOCOL_VERSION); message.put("id", mId); message.put("error", error); - mWebSocket.sendMessage(RequestBody.create(WebSocket.TEXT, message.toString())); + mWebSocket.sendMessage(message.toString()); } catch (Exception e) { FLog.e(TAG, "Responding with error failed", e); } @@ -89,16 +87,9 @@ public void close() { } @Override - public void onMessage(ResponseBody response) { - if (response.contentType() != WebSocket.TEXT) { - FLog.w( - TAG, - "Websocket received message with payload of unexpected type " + response.contentType()); - return; - } - + public void onMessage(String text) { try { - JSONObject message = new JSONObject(response.string()); + JSONObject message = new JSONObject(text); int version = message.optInt("version"); String method = message.optString("method"); @@ -130,11 +121,14 @@ public void onMessage(ResponseBody response) { } } catch (Exception e) { FLog.e(TAG, "Handling the message failed", e); - } finally { - response.close(); } } + @Override + public void onMessage(ByteString bytes) { + FLog.w(TAG, "Websocket received message with payload of unexpected type binary"); + } + private void abortOnMessage(Object id, String reason) { if (id != null) { (new ResponderImpl(id)).error(reason); diff --git a/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/ReconnectingWebSocket.java b/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/ReconnectingWebSocket.java index 1782df8b1f57..cc00f3d8e3fb 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/ReconnectingWebSocket.java +++ b/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/ReconnectingWebSocket.java @@ -21,24 +21,22 @@ import okhttp3.OkHttpClient; import okhttp3.Request; -import okhttp3.RequestBody; import okhttp3.Response; -import okhttp3.ResponseBody; -import okhttp3.ws.WebSocket; -import okhttp3.ws.WebSocketCall; -import okhttp3.ws.WebSocketListener; -import okio.Buffer; +import okhttp3.WebSocket; +import okhttp3.WebSocketListener; +import okio.ByteString; /** * A wrapper around WebSocketClient that reconnects automatically */ -final public class ReconnectingWebSocket implements WebSocketListener { +final public class ReconnectingWebSocket extends WebSocketListener { private static final String TAG = ReconnectingWebSocket.class.getSimpleName(); private static final int RECONNECT_DELAY_MS = 2000; public interface MessageCallback { - void onMessage(ResponseBody message); + void onMessage(String text); + void onMessage(ByteString bytes); } public interface ConnectionCallback { @@ -77,8 +75,7 @@ public void connect() { .build(); Request request = new Request.Builder().url(mUrl).build(); - WebSocketCall call = WebSocketCall.create(httpClient, request); - call.enqueue(this); + httpClient.newWebSocket(request, this); } private synchronized void delayedReconnect() { @@ -122,7 +119,7 @@ private void closeWebSocketQuietly() { if (mWebSocket != null) { try { mWebSocket.close(1000, "End of session"); - } catch (IOException e) { + } catch (Exception e) { // swallow, no need to handle it here } mWebSocket = null; @@ -145,9 +142,9 @@ public synchronized void onOpen(WebSocket webSocket, Response response) { } @Override - public synchronized void onFailure(IOException e, Response response) { + public synchronized void onFailure(WebSocket webSocket, Throwable t, Response response) { if (mWebSocket != null) { - abort("Websocket exception", e); + abort("Websocket exception", t); } if (!mClosed) { if (mConnectionCallback != null) { @@ -158,17 +155,21 @@ public synchronized void onFailure(IOException e, Response response) { } @Override - public synchronized void onMessage(ResponseBody message) { + public synchronized void onMessage(WebSocket webSocket, String text) { if (mMessageCallback != null) { - mMessageCallback.onMessage(message); + mMessageCallback.onMessage(text); } } @Override - public synchronized void onPong(Buffer payload) { } + public synchronized void onMessage(WebSocket webSocket, ByteString bytes) { + if (mMessageCallback != null) { + mMessageCallback.onMessage(bytes); + } + } @Override - public synchronized void onClose(int code, String reason) { + public synchronized void onClosed(WebSocket webSocket, int code, String reason) { mWebSocket = null; if (!mClosed) { if (mConnectionCallback != null) { @@ -178,9 +179,17 @@ public synchronized void onClose(int code, String reason) { } } - public synchronized void sendMessage(RequestBody message) throws IOException { + public synchronized void sendMessage(String message) throws IOException { + if (mWebSocket != null) { + mWebSocket.send(message); + } else { + throw new ClosedChannelException(); + } + } + + public synchronized void sendMessage(ByteString message) throws IOException { if (mWebSocket != null) { - mWebSocket.sendMessage(message); + mWebSocket.send(message); } else { throw new ClosedChannelException(); } diff --git a/ReactAndroid/src/main/third-party/java/okhttp/BUCK b/ReactAndroid/src/main/third-party/java/okhttp/BUCK index 4d5048176be6..84be571ad87c 100644 --- a/ReactAndroid/src/main/third-party/java/okhttp/BUCK +++ b/ReactAndroid/src/main/third-party/java/okhttp/BUCK @@ -6,8 +6,8 @@ prebuilt_jar( remote_file( name = "okhttp3-binary-jar", - sha1 = "c7c4f9e35c2fd5900da24f9872e3971801f08ce0", - url = "mvn:com.squareup.okhttp3:okhttp:jar:3.4.1", + sha1 = "5a11f020cce2d11eb71ba916700600e18c4547e7", + url = "mvn:com.squareup.okhttp3:okhttp:jar:3.8.0", ) prebuilt_jar( @@ -18,18 +18,6 @@ prebuilt_jar( remote_file( name = "okhttp3-urlconnection-binary-jar", - sha1 = "63994437f62bc861bc20c605d12962f7246116d1", - url = "mvn:com.squareup.okhttp3:okhttp-urlconnection:jar:3.4.1", -) - -prebuilt_jar( - name = "okhttp3-ws", - binary_jar = ":okhttp3-ws-binary-jar", - visibility = ["//ReactAndroid/..."], -) - -remote_file( - name = "okhttp3-ws-binary-jar", - sha1 = "8ace66ef7002d98f633377c9e67daeeb196d8c3b", - url = "mvn:com.squareup.okhttp3:okhttp-ws:jar:3.4.1", + sha1 = "265257b82f20bb0371a926cc8ceb5f7bb17c0df8", + url = "mvn:com.squareup.okhttp3:okhttp-urlconnection:jar:3.8.0", ) diff --git a/ReactAndroid/src/main/third-party/java/okio/BUCK b/ReactAndroid/src/main/third-party/java/okio/BUCK index 096df3ada7a0..45955117a037 100644 --- a/ReactAndroid/src/main/third-party/java/okio/BUCK +++ b/ReactAndroid/src/main/third-party/java/okio/BUCK @@ -6,6 +6,6 @@ prebuilt_jar( remote_file( name = "okio-binary-jar", - sha1 = "f824591a0016efbaeddb8300bee54832a1398cfa", - url = "mvn:com.squareup.okio:okio:jar:1.9.0", + sha1 = "a9283170b7305c8d92d25aff02a6ab7e45d06cbe", + url = "mvn:com.squareup.okio:okio:jar:1.13.0", ) diff --git a/ReactAndroid/src/test/java/com/facebook/react/devsupport/BUCK b/ReactAndroid/src/test/java/com/facebook/react/devsupport/BUCK index 605c934b5c11..29fb02c91d9a 100644 --- a/ReactAndroid/src/test/java/com/facebook/react/devsupport/BUCK +++ b/ReactAndroid/src/test/java/com/facebook/react/devsupport/BUCK @@ -15,7 +15,6 @@ rn_robolectric_test( react_native_dep("third-party/java/junit:junit"), react_native_dep("third-party/java/mockito:mockito"), react_native_dep("third-party/java/okhttp:okhttp3"), - react_native_dep("third-party/java/okhttp:okhttp3-ws"), react_native_dep("third-party/java/okio:okio"), react_native_dep("third-party/java/robolectric3/robolectric:robolectric"), react_native_target("java/com/facebook/react:react"), diff --git a/ReactAndroid/src/test/java/com/facebook/react/devsupport/JSDebuggerWebSocketClientTest.java b/ReactAndroid/src/test/java/com/facebook/react/devsupport/JSDebuggerWebSocketClientTest.java index 1b94389a4dcb..ec8637c068e5 100644 --- a/ReactAndroid/src/test/java/com/facebook/react/devsupport/JSDebuggerWebSocketClientTest.java +++ b/ReactAndroid/src/test/java/com/facebook/react/devsupport/JSDebuggerWebSocketClientTest.java @@ -22,8 +22,7 @@ import java.util.HashMap; -import okhttp3.ResponseBody; -import okhttp3.ws.WebSocket; +import okio.ByteString; import static org.mockito.Mockito.*; @@ -78,7 +77,7 @@ public void test_executeJSCall_ShouldSendCorrectMessage() throws Exception { public void test_onMessage_WithInvalidContentType_ShouldNotTriggerCallbacks() throws Exception { JSDebuggerWebSocketClient client = PowerMockito.spy(new JSDebuggerWebSocketClient()); - client.onMessage(ResponseBody.create(WebSocket.BINARY, "{\"replyID\":0, \"result\":\"OK\"}")); + client.onMessage(null, ByteString.encodeUtf8("{\"replyID\":0, \"result\":\"OK\"}")); PowerMockito.verifyPrivate(client, never()).invoke("triggerRequestSuccess", anyInt(), anyString()); PowerMockito.verifyPrivate(client, never()).invoke("triggerRequestFailure", anyInt(), any()); } @@ -87,7 +86,7 @@ public void test_onMessage_WithInvalidContentType_ShouldNotTriggerCallbacks() th public void test_onMessage_WithoutReplyId_ShouldNotTriggerCallbacks() throws Exception { JSDebuggerWebSocketClient client = PowerMockito.spy(new JSDebuggerWebSocketClient()); - client.onMessage(ResponseBody.create(WebSocket.TEXT, "{\"result\":\"OK\"}")); + client.onMessage(null, "{\"result\":\"OK\"}"); PowerMockito.verifyPrivate(client, never()).invoke("triggerRequestSuccess", anyInt(), anyString()); PowerMockito.verifyPrivate(client, never()).invoke("triggerRequestFailure", anyInt(), any()); } @@ -96,7 +95,7 @@ public void test_onMessage_WithoutReplyId_ShouldNotTriggerCallbacks() throws Exc public void test_onMessage_With_Null_ReplyId_ShouldNotTriggerCallbacks() throws Exception { JSDebuggerWebSocketClient client = PowerMockito.spy(new JSDebuggerWebSocketClient()); - client.onMessage(ResponseBody.create(WebSocket.TEXT, "{\"replyID\":null, \"result\":\"OK\"}")); + client.onMessage(null, "{\"replyID\":null, \"result\":\"OK\"}"); PowerMockito.verifyPrivate(client, never()).invoke("triggerRequestSuccess", anyInt(), anyString()); PowerMockito.verifyPrivate(client, never()).invoke("triggerRequestFailure", anyInt(), any()); } @@ -105,7 +104,7 @@ public void test_onMessage_With_Null_ReplyId_ShouldNotTriggerCallbacks() throws public void test_onMessage_WithResult_ShouldTriggerRequestSuccess() throws Exception { JSDebuggerWebSocketClient client = PowerMockito.spy(new JSDebuggerWebSocketClient()); - client.onMessage(ResponseBody.create(WebSocket.TEXT, "{\"replyID\":0, \"result\":\"OK\"}")); + client.onMessage(null, "{\"replyID\":0, \"result\":\"OK\"}"); PowerMockito.verifyPrivate(client).invoke("triggerRequestSuccess", 0, "OK"); PowerMockito.verifyPrivate(client, never()).invoke("triggerRequestFailure", anyInt(), any()); } @@ -114,7 +113,7 @@ public void test_onMessage_WithResult_ShouldTriggerRequestSuccess() throws Excep public void test_onMessage_With_Null_Result_ShouldTriggerRequestSuccess() throws Exception { JSDebuggerWebSocketClient client = PowerMockito.spy(new JSDebuggerWebSocketClient()); - client.onMessage(ResponseBody.create(WebSocket.TEXT, "{\"replyID\":0, \"result\":null}")); + client.onMessage(null, "{\"replyID\":0, \"result\":null}"); PowerMockito.verifyPrivate(client).invoke("triggerRequestSuccess", 0, null); PowerMockito.verifyPrivate(client, never()).invoke("triggerRequestFailure", anyInt(), any()); } @@ -123,7 +122,7 @@ public void test_onMessage_With_Null_Result_ShouldTriggerRequestSuccess() throws public void test_onMessage_WithError_ShouldCallAbort() throws Exception { JSDebuggerWebSocketClient client = PowerMockito.spy(new JSDebuggerWebSocketClient()); - client.onMessage(ResponseBody.create(WebSocket.TEXT, "{\"replyID\":0, \"error\":\"BOOM\"}")); + client.onMessage(null, "{\"replyID\":0, \"error\":\"BOOM\"}"); PowerMockito.verifyPrivate(client).invoke("abort", eq("BOOM"), isA(JavascriptException.class)); } @@ -131,7 +130,7 @@ public void test_onMessage_WithError_ShouldCallAbort() throws Exception { public void test_onMessage_With_Null_Error_ShouldTriggerRequestSuccess() throws Exception { JSDebuggerWebSocketClient client = PowerMockito.spy(new JSDebuggerWebSocketClient()); - client.onMessage(ResponseBody.create(WebSocket.TEXT, "{\"replyID\":0, \"error\":null}")); + client.onMessage(null, "{\"replyID\":0, \"error\":null}"); PowerMockito.verifyPrivate(client).invoke("triggerRequestSuccess", anyInt(), anyString()); } } diff --git a/ReactAndroid/src/test/java/com/facebook/react/packagerconnection/BUCK b/ReactAndroid/src/test/java/com/facebook/react/packagerconnection/BUCK index 4da3f27649c5..46db0168913b 100644 --- a/ReactAndroid/src/test/java/com/facebook/react/packagerconnection/BUCK +++ b/ReactAndroid/src/test/java/com/facebook/react/packagerconnection/BUCK @@ -15,7 +15,6 @@ rn_robolectric_test( react_native_dep("third-party/java/junit:junit"), react_native_dep("third-party/java/mockito:mockito"), react_native_dep("third-party/java/okhttp:okhttp3"), - react_native_dep("third-party/java/okhttp:okhttp3-ws"), react_native_dep("third-party/java/robolectric3/robolectric:robolectric"), react_native_target("java/com/facebook/react/packagerconnection:packagerconnection"), ], diff --git a/ReactAndroid/src/test/java/com/facebook/react/packagerconnection/JSPackagerClientTest.java b/ReactAndroid/src/test/java/com/facebook/react/packagerconnection/JSPackagerClientTest.java index 165ab5e82a99..41bc84647026 100644 --- a/ReactAndroid/src/test/java/com/facebook/react/packagerconnection/JSPackagerClientTest.java +++ b/ReactAndroid/src/test/java/com/facebook/react/packagerconnection/JSPackagerClientTest.java @@ -17,8 +17,7 @@ import java.util.HashMap; import java.util.Map; -import okhttp3.ResponseBody; -import okhttp3.ws.WebSocket; +import okio.ByteString; import static org.mockito.Mockito.*; import org.robolectric.RobolectricTestRunner; @@ -47,10 +46,7 @@ public void test_onMessage_ShouldTriggerNotification() throws IOException { RequestHandler handler = mock(RequestHandler.class); final JSPackagerClient client = new JSPackagerClient("test_client", mSettings, createRH("methodValue", handler)); - client.onMessage( - ResponseBody.create( - WebSocket.TEXT, - "{\"version\": 2, \"method\": \"methodValue\", \"params\": \"paramsValue\"}")); + client.onMessage("{\"version\": 2, \"method\": \"methodValue\", \"params\": \"paramsValue\"}"); verify(handler).onNotification(eq("paramsValue")); verify(handler, never()).onRequest(any(), any(Responder.class)); } @@ -60,10 +56,7 @@ public void test_onMessage_ShouldTriggerRequest() throws IOException { RequestHandler handler = mock(RequestHandler.class); final JSPackagerClient client = new JSPackagerClient("test_client", mSettings, createRH("methodValue", handler)); - client.onMessage( - ResponseBody.create( - WebSocket.TEXT, - "{\"version\": 2, \"id\": \"idValue\", \"method\": \"methodValue\", \"params\": \"paramsValue\"}")); + client.onMessage("{\"version\": 2, \"id\": \"idValue\", \"method\": \"methodValue\", \"params\": \"paramsValue\"}"); verify(handler, never()).onNotification(any()); verify(handler).onRequest(eq("paramsValue"), any(Responder.class)); } @@ -73,10 +66,7 @@ public void test_onMessage_WithoutParams_ShouldTriggerNotification() throws IOEx RequestHandler handler = mock(RequestHandler.class); final JSPackagerClient client = new JSPackagerClient("test_client", mSettings, createRH("methodValue", handler)); - client.onMessage( - ResponseBody.create( - WebSocket.TEXT, - "{\"version\": 2, \"method\": \"methodValue\"}")); + client.onMessage("{\"version\": 2, \"method\": \"methodValue\"}"); verify(handler).onNotification(eq(null)); verify(handler, never()).onRequest(any(), any(Responder.class)); } @@ -86,10 +76,7 @@ public void test_onMessage_WithInvalidContentType_ShouldNotTriggerCallback() thr RequestHandler handler = mock(RequestHandler.class); final JSPackagerClient client = new JSPackagerClient("test_client", mSettings, createRH("methodValue", handler)); - client.onMessage( - ResponseBody.create( - WebSocket.BINARY, - "{\"version\": 2, \"method\": \"methodValue\"}")); + client.onMessage(ByteString.encodeUtf8("{\"version\": 2, \"method\": \"methodValue\"}")); verify(handler, never()).onNotification(any()); verify(handler, never()).onRequest(any(), any(Responder.class)); } @@ -99,10 +86,7 @@ public void test_onMessage_WithoutMethod_ShouldNotTriggerCallback() throws IOExc RequestHandler handler = mock(RequestHandler.class); final JSPackagerClient client = new JSPackagerClient("test_client", mSettings, createRH("methodValue", handler)); - client.onMessage( - ResponseBody.create( - WebSocket.TEXT, - "{\"version\": 2}")); + client.onMessage("{\"version\": 2}"); verify(handler, never()).onNotification(any()); verify(handler, never()).onRequest(any(), any(Responder.class)); } @@ -112,10 +96,7 @@ public void test_onMessage_With_Null_Action_ShouldNotTriggerCallback() throws IO RequestHandler handler = mock(RequestHandler.class); final JSPackagerClient client = new JSPackagerClient("test_client", mSettings, createRH("methodValue", handler)); - client.onMessage( - ResponseBody.create( - WebSocket.TEXT, - "{\"version\": 2, \"method\": null}")); + client.onMessage("{\"version\": 2, \"method\": null}"); verify(handler, never()).onNotification(any()); verify(handler, never()).onRequest(any(), any(Responder.class)); } @@ -125,10 +106,7 @@ public void test_onMessage_WithInvalidMethod_ShouldNotTriggerCallback() throws I RequestHandler handler = mock(RequestHandler.class); final JSPackagerClient client = new JSPackagerClient("test_client", mSettings, createRH("methodValue", handler)); - client.onMessage( - ResponseBody.create( - WebSocket.BINARY, - "{\"version\": 2, \"method\": \"methodValue2\"}")); + client.onMessage(ByteString.EMPTY); verify(handler, never()).onNotification(any()); verify(handler, never()).onRequest(any(), any(Responder.class)); } @@ -138,10 +116,7 @@ public void test_onMessage_WrongVersion_ShouldNotTriggerCallback() throws IOExce RequestHandler handler = mock(RequestHandler.class); final JSPackagerClient client = new JSPackagerClient("test_client", mSettings, createRH("methodValue", handler)); - client.onMessage( - ResponseBody.create( - WebSocket.TEXT, - "{\"version\": 1, \"method\": \"methodValue\"}")); + client.onMessage("{\"version\": 1, \"method\": \"methodValue\"}"); verify(handler, never()).onNotification(any()); verify(handler, never()).onRequest(any(), any(Responder.class)); } From 6c4e8d74cd8ded88791aebd6f480445027f20fbf Mon Sep 17 00:00:00 2001 From: "Andrew Y. Chen" Date: Thu, 18 May 2017 09:42:49 -0700 Subject: [PATCH 0135/1101] Fix copy paste second attempt Reviewed By: AaaChiuuu Differential Revision: D5080735 fbshipit-source-id: c76fb204c114b8a8fc884aa208ad5fa9bba01fcb --- .../views/textinput/ReactTextInputManager.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java b/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java index 97d3b4b31ef6..036e74fcce6b 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java @@ -28,6 +28,7 @@ import android.view.Gravity; import android.view.KeyEvent; import android.view.View; +import android.view.ViewTreeObserver; import android.view.inputmethod.EditorInfo; import android.widget.TextView; @@ -91,13 +92,26 @@ public String getName() { @Override public ReactEditText createViewInstance(ThemedReactContext context) { - ReactEditText editText = new ReactEditText(context); + final ReactEditText editText = new ReactEditText(context); int inputType = editText.getInputType(); editText.setInputType(inputType & (~InputType.TYPE_TEXT_FLAG_MULTI_LINE)); editText.setReturnKeyType("done"); editText.setTextSize( TypedValue.COMPLEX_UNIT_PX, (int) Math.ceil(PixelUtil.toPixelFromSP(ViewDefaults.FONT_SIZE_SP))); + // Fixes an issue where the EditText is not selectable if nested within a + // ViewPagerAndroid on some versions of Android (API 16, 23) + editText.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { + @Override + public boolean onPreDraw() { + editText.getViewTreeObserver().removeOnPreDrawListener(this); + int selectionStart = editText.getSelectionStart(); + int selectionEnd = editText.getSelectionEnd(); + editText.setTextIsSelectable(true); + editText.setSelection(selectionStart, selectionEnd); + return true; + } + }); return editText; } From b5eb104617b6da12419e66801acb487802586236 Mon Sep 17 00:00:00 2001 From: Greg Herlihy Date: Thu, 18 May 2017 11:17:51 -0700 Subject: [PATCH 0136/1101] Fix view collapsing Summary: Make more views collapse on Android by designating FLEX_BASIS, FLEX_GROW and FLEX_SHRINK as "layout-only" props. Relies on existing layout tests. See Issue #13622 Closes https://github.com/facebook/react-native/pull/13868 Reviewed By: astreet Differential Revision: D5035864 Pulled By: javache fbshipit-source-id: d2c9e0b33b07e51b19afc383ef913ac41b70415c --- .../src/main/java/com/facebook/react/uimanager/ViewProps.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewProps.java b/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewProps.java index 67265436ae9e..e3a6fb02462a 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewProps.java +++ b/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewProps.java @@ -120,7 +120,10 @@ public class ViewProps { ALIGN_ITEMS, COLLAPSABLE, FLEX, + FLEX_BASIS, FLEX_DIRECTION, + FLEX_GROW, + FLEX_SHRINK, FLEX_WRAP, JUSTIFY_CONTENT, OVERFLOW, From 1507cdcf1fd554a436048719f555b7e59a1119a9 Mon Sep 17 00:00:00 2001 From: David Aurelio Date: Thu, 18 May 2017 11:21:16 -0700 Subject: [PATCH 0137/1101] Upgrade `sinon` dev dependency Summary: Upgrade `sinon` to v2.2.0 Reviewed By: zertosh Differential Revision: D5087183 fbshipit-source-id: 5648fb388ab2a14edbc2313a16ac9c3d80fbda05 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index f4d06527d057..f944f6754323 100644 --- a/package.json +++ b/package.json @@ -231,6 +231,6 @@ "react": "16.0.0-alpha.12", "react-test-renderer": "16.0.0-alpha.12", "shelljs": "0.6.0", - "sinon": "^2.0.0-pre.2" + "sinon": "^2.2.0" } } From aa3bbf18a119fd97cd9b88ab620c03c1dcf8e3fc Mon Sep 17 00:00:00 2001 From: Jean Lauliac Date: Thu, 18 May 2017 11:40:38 -0700 Subject: [PATCH 0138/1101] packager: do not use slashes in key Summary: Internally we use `multipart/form-data` to upload transformed files to the global cache, using the keys as file names. Unfortunately the server would read that and consider only the basename as the key, not the full path. So we wouldn't store the data under the right key. This is definitely a bug in the way upload is implemented: we should transmit the keys separately. But, this changeset offers a quick mitigation by avoiding slashes in the key, so that the whole key is a valid base file name. Reviewed By: davidaurelio Differential Revision: D5087780 fbshipit-source-id: 9e4a698c1f57c4c3b91b56b43eef82c1c7dd862b --- packager/src/lib/GlobalTransformCache.js | 3 ++- .../__tests__/__snapshots__/GlobalTransformCache-test.js.snap | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/packager/src/lib/GlobalTransformCache.js b/packager/src/lib/GlobalTransformCache.js index 1d2fe2c981ab..29585beed824 100644 --- a/packager/src/lib/GlobalTransformCache.js +++ b/packager/src/lib/GlobalTransformCache.js @@ -232,9 +232,10 @@ class URIBasedGlobalTransformCache { hash.update(this._optionsHasher.getTransformWorkerOptionsDigest(transformOptions)); const cacheKey = props.getTransformCacheKey(transformOptions); hash.update(JSON.stringify(cacheKey)); + hash.update(JSON.stringify(localPath)); hash.update(crypto.createHash('sha1').update(sourceCode).digest('hex')); const digest = hash.digest('hex'); - return `${digest}-${localPath}`; + return `${digest}-${path.basename(localPath)}`; } /** diff --git a/packager/src/lib/__tests__/__snapshots__/GlobalTransformCache-test.js.snap b/packager/src/lib/__tests__/__snapshots__/GlobalTransformCache-test.js.snap index 9fadc6468290..88ce154729fe 100644 --- a/packager/src/lib/__tests__/__snapshots__/GlobalTransformCache-test.js.snap +++ b/packager/src/lib/__tests__/__snapshots__/GlobalTransformCache-test.js.snap @@ -19,12 +19,12 @@ Object { exports[`GlobalTransformCache fetches results 1`] = ` Array [ Object { - "code": "/* code from http://globalcache.com/cd6df9b7e86839dafc5e9b5b493a28cbc55074e7-some/where/foo.js */", + "code": "/* code from http://globalcache.com/b23da8c74218e6155fcaf590a0fedbd1d117c2ae-foo.js */", "dependencies": Array [], "dependencyOffsets": Array [], }, Object { - "code": "/* code from http://globalcache.com/6329a317fcf94d74cc9a1de6442ee7c25e27a507-some/where/else/bar.js */", + "code": "/* code from http://globalcache.com/5e95f6c3e9bac0282480cda6f1a984ad8bc83e55-bar.js */", "dependencies": Array [], "dependencyOffsets": Array [], }, From 3ddc7d47d5d7f043810a55227bf60bec823e7b02 Mon Sep 17 00:00:00 2001 From: Gabe Levi Date: Thu, 18 May 2017 16:51:37 -0700 Subject: [PATCH 0139/1101] Fix react-native function call arity errors Reviewed By: zertosh Differential Revision: D5081816 fbshipit-source-id: 5978770c30a69fb287d03aa7511999ce30f856a1 --- IntegrationTests/LayoutEventsTest.js | 2 +- Libraries/Experimental/WindowedListView.js | 8 +++- Libraries/Lists/MetroListView.js | 8 +++- Libraries/Lists/VirtualizedSectionList.js | 2 +- .../renderers/shared/fiber/ReactChildFiber.js | 4 +- .../shared/fiber/ReactFiberErrorLogger.js | 2 +- .../shared/fiber/ReactFiberReconciler.js | 2 +- .../shared/fiber/ReactFiberScheduler.js | 10 ++-- .../shared/stack/reconciler/CallbackQueue.js | 6 +-- .../Renderer/src/shared/utils/PooledClass.js | 4 +- Libraries/Utilities/logError.js | 8 ++-- flow/console.js | 1 + local-cli/bundle/output/bundle.js | 2 +- local-cli/bundle/output/unbundle/as-assets.js | 2 +- .../bundle/output/unbundle/as-indexed-file.js | 2 +- .../bundle/output/unbundle/write-sourcemap.js | 2 +- packager/src/Bundler/index.js | 17 ++++--- packager/src/JSTransformer/index.js | 6 +-- packager/src/ModuleGraph/Graph.js | 6 +-- packager/src/Server/index.js | 10 ++-- packager/src/lib/TransformCache.js | 46 +++++++++++-------- packager/src/node-haste/DependencyGraph.js | 8 ++-- 22 files changed, 86 insertions(+), 72 deletions(-) diff --git a/IntegrationTests/LayoutEventsTest.js b/IntegrationTests/LayoutEventsTest.js index a7c73ea7add5..e8083e2f2666 100644 --- a/IntegrationTests/LayoutEventsTest.js +++ b/IntegrationTests/LayoutEventsTest.js @@ -24,7 +24,7 @@ var { TestModule } = ReactNative.NativeModules; var deepDiffer = require('deepDiffer'); -function debug() { +function debug(...args) { // console.log.apply(null, arguments); } diff --git a/Libraries/Experimental/WindowedListView.js b/Libraries/Experimental/WindowedListView.js index c2e73c68dce8..c512adb7330e 100644 --- a/Libraries/Experimental/WindowedListView.js +++ b/Libraries/Experimental/WindowedListView.js @@ -73,11 +73,15 @@ type Props = { /** * Rendered when the list is scrolled faster than rows can be rendered. */ - renderWindowBoundaryIndicator?: () => ?React.Element, + renderWindowBoundaryIndicator?: ( + showIndicator: boolean, + ) => ?React.Element, /** * Always rendered at the bottom of all the rows. */ - renderFooter?: () => ?React.Element, + renderFooter?: ( + showFooter: boolean, + ) => ?React.Element, /** * Pipes through normal onScroll events from the underlying `ScrollView`. */ diff --git a/Libraries/Lists/MetroListView.js b/Libraries/Lists/MetroListView.js index 96f04ca22037..508a020f7eca 100644 --- a/Libraries/Lists/MetroListView.js +++ b/Libraries/Lists/MetroListView.js @@ -68,7 +68,13 @@ class MetroListView extends React.Component { scrollToItem(params: {animated?: ?boolean, item: Item, viewPosition?: number}) { throw new Error('scrollToItem not supported in legacy ListView.'); } - scrollToLocation() { + scrollToLocation(params: { + animated?: ?boolean, + itemIndex: number, + sectionIndex: number, + viewOffset?: number, + viewPosition?: number, + }) { throw new Error('scrollToLocation not supported in legacy ListView.'); } scrollToOffset(params: {animated?: ?boolean, offset: number}) { diff --git a/Libraries/Lists/VirtualizedSectionList.js b/Libraries/Lists/VirtualizedSectionList.js index 52c49daaf3e9..42b7e15b6ab9 100644 --- a/Libraries/Lists/VirtualizedSectionList.js +++ b/Libraries/Lists/VirtualizedSectionList.js @@ -40,7 +40,7 @@ type SectionBase = { }, }) => ?React.Element<*>, ItemSeparatorComponent?: ?ReactClass<*>, - keyExtractor?: (item: SectionItem) => string, + keyExtractor?: (item: SectionItem, index: ?number) => string, // TODO: support more optional/override props // FooterComponent?: ?ReactClass<*>, diff --git a/Libraries/Renderer/src/renderers/shared/fiber/ReactChildFiber.js b/Libraries/Renderer/src/renderers/shared/fiber/ReactChildFiber.js index 3c1f06e91175..147efd09d9dc 100644 --- a/Libraries/Renderer/src/renderers/shared/fiber/ReactChildFiber.js +++ b/Libraries/Renderer/src/renderers/shared/fiber/ReactChildFiber.js @@ -60,7 +60,7 @@ if (__DEV__) { 'Each child in an array or iterator should have a unique ' + '"key" prop. See https://fb.me/react-warning-keys for ' + 'more information.' + - (getCurrentFiberStackAddendum(child) || ''); + (getCurrentFiberStackAddendum() || ''); if (ownerHasKeyUseWarning[currentComponentErrorInfo]) { return; } @@ -71,7 +71,7 @@ if (__DEV__) { 'Each child in an array or iterator should have a unique ' + '"key" prop. See https://fb.me/react-warning-keys for ' + 'more information.%s', - getCurrentFiberStackAddendum(child), + getCurrentFiberStackAddendum(), ); }; } diff --git a/Libraries/Renderer/src/renderers/shared/fiber/ReactFiberErrorLogger.js b/Libraries/Renderer/src/renderers/shared/fiber/ReactFiberErrorLogger.js index 007be1a8b618..9289f00a751a 100644 --- a/Libraries/Renderer/src/renderers/shared/fiber/ReactFiberErrorLogger.js +++ b/Libraries/Renderer/src/renderers/shared/fiber/ReactFiberErrorLogger.js @@ -16,7 +16,7 @@ const invariant = require('fbjs/lib/invariant'); import type {CapturedError} from 'ReactFiberScheduler'; -const defaultShowDialog = () => true; +const defaultShowDialog = (capturedError: CapturedError) => true; let showDialog = defaultShowDialog; diff --git a/Libraries/Renderer/src/renderers/shared/fiber/ReactFiberReconciler.js b/Libraries/Renderer/src/renderers/shared/fiber/ReactFiberReconciler.js index 8d5c4faa77af..a081838df8d2 100644 --- a/Libraries/Renderer/src/renderers/shared/fiber/ReactFiberReconciler.js +++ b/Libraries/Renderer/src/renderers/shared/fiber/ReactFiberReconciler.js @@ -49,7 +49,7 @@ type OpaqueRoot = FiberRoot; export type HostConfig = { getRootHostContext(rootContainerInstance: C): CX, - getChildHostContext(parentHostContext: CX, type: T): CX, + getChildHostContext(parentHostContext: CX, type: T, instance: C): CX, getPublicInstance(instance: I | TI): PI, createInstance( diff --git a/Libraries/Renderer/src/renderers/shared/fiber/ReactFiberScheduler.js b/Libraries/Renderer/src/renderers/shared/fiber/ReactFiberScheduler.js index 844e19578142..b889c8157d83 100644 --- a/Libraries/Renderer/src/renderers/shared/fiber/ReactFiberScheduler.js +++ b/Libraries/Renderer/src/renderers/shared/fiber/ReactFiberScheduler.js @@ -452,7 +452,7 @@ module.exports = function( firstEffect = finishedWork.firstEffect; } - const commitInfo = prepareForCommit(); + prepareForCommit(); // Commit all the side-effects within a tree. We'll do this in two passes. // The first pass performs all the host insertions, updates, deletions and @@ -468,11 +468,10 @@ module.exports = function( null, commitAllHostEffects, null, - finishedWork, ); } else { try { - commitAllHostEffects(finishedWork); + commitAllHostEffects(); } catch (e) { error = e; } @@ -494,7 +493,7 @@ module.exports = function( stopCommitHostEffectsTimer(); } - resetAfterCommit(commitInfo); + resetAfterCommit(); // The work-in-progress tree is now the current tree. This must come after // the first pass of the commit phase, so that the previous tree is still @@ -517,11 +516,10 @@ module.exports = function( null, commitAllLifeCycles, null, - finishedWork, ); } else { try { - commitAllLifeCycles(finishedWork); + commitAllLifeCycles(); } catch (e) { error = e; } diff --git a/Libraries/Renderer/src/renderers/shared/stack/reconciler/CallbackQueue.js b/Libraries/Renderer/src/renderers/shared/stack/reconciler/CallbackQueue.js index c82dbfccd974..0362598ac1e6 100644 --- a/Libraries/Renderer/src/renderers/shared/stack/reconciler/CallbackQueue.js +++ b/Libraries/Renderer/src/renderers/shared/stack/reconciler/CallbackQueue.js @@ -28,10 +28,10 @@ var validateCallback = require('validateCallback'); * @implements PooledClass * @internal */ -class CallbackQueue { - _callbacks: ?Array<() => void>; +class CallbackQueue { + _callbacks: ?Array<(arg: Targ) => void>; _contexts: ?Array; - _arg: ?mixed; + _arg: Targ; constructor(arg) { this._callbacks = null; diff --git a/Libraries/Renderer/src/shared/utils/PooledClass.js b/Libraries/Renderer/src/shared/utils/PooledClass.js index a89b9e1a7f42..9055f4374045 100644 --- a/Libraries/Renderer/src/shared/utils/PooledClass.js +++ b/Libraries/Renderer/src/shared/utils/PooledClass.js @@ -95,8 +95,8 @@ var addPoolingTo = function( CopyConstructor: Class, pooler: Pooler, ): Class & { - getPooled(): /* arguments of the constructor */ T, - release(): void, + getPooled(...args: $ReadOnlyArray): /* arguments of the constructor */ T, + release(instance: mixed): void, } { // Casting as any so that flow ignores the actual implementation and trusts // it to match the type we declared diff --git a/Libraries/Utilities/logError.js b/Libraries/Utilities/logError.js index aac41be0be83..62a8d984e6b2 100644 --- a/Libraries/Utilities/logError.js +++ b/Libraries/Utilities/logError.js @@ -16,12 +16,12 @@ * `console.error` as a failure callback - it's not properly bound. If passes an * `Error` object, it will print the message and stack. */ -var logError = function() { - if (arguments.length === 1 && arguments[0] instanceof Error) { - var err = arguments[0]; +var logError = function(...args: $ReadOnlyArray) { + if (args.length === 1 && args[0] instanceof Error) { + var err = args[0]; console.error('Error: "' + err.message + '". Stack:\n' + err.stack); } else { - console.error.apply(console, arguments); + console.error.apply(console, args); } }; diff --git a/flow/console.js b/flow/console.js index 793bb6cdc3dc..c298bbe6d0f3 100644 --- a/flow/console.js +++ b/flow/console.js @@ -26,6 +26,7 @@ declare module 'console' { declare function trace(first: any, ...rest: any): void; declare function warn(...data: any): void; declare class Console { + constructor(stdout: stream$Writable, stdin?: stream$Writable): void; assert(value: any, ...message: any): void, dir( obj: Object, diff --git a/local-cli/bundle/output/bundle.js b/local-cli/bundle/output/bundle.js index 0db6abd36c38..6d867dd07076 100644 --- a/local-cli/bundle/output/bundle.js +++ b/local-cli/bundle/output/bundle.js @@ -43,7 +43,7 @@ function createCodeWithMap(bundle: Bundle, dev: boolean, sourceMapSourcesRoot?: function saveBundleAndMap( bundle: Bundle, options: OutputOptions, - log: (x: string) => {}, + log: (...args: Array) => {}, ): Promise<> { const { bundleOutput, diff --git a/local-cli/bundle/output/unbundle/as-assets.js b/local-cli/bundle/output/unbundle/as-assets.js index 43afcf7b00b9..8c167a0c4b0e 100644 --- a/local-cli/bundle/output/unbundle/as-assets.js +++ b/local-cli/bundle/output/unbundle/as-assets.js @@ -38,7 +38,7 @@ const MODULES_DIR = 'js-modules'; function saveAsAssets( bundle: Bundle, options: OutputOptions, - log: (x: string) => void, + log: (...args: Array) => void, ): Promise { const { bundleOutput, diff --git a/local-cli/bundle/output/unbundle/as-indexed-file.js b/local-cli/bundle/output/unbundle/as-indexed-file.js index 7b7fb57ec82e..f8fbe8ac6d64 100644 --- a/local-cli/bundle/output/unbundle/as-indexed-file.js +++ b/local-cli/bundle/output/unbundle/as-indexed-file.js @@ -34,7 +34,7 @@ const SIZEOF_UINT32 = 4; function saveAsIndexedFile( bundle: Bundle, options: OutputOptions, - log: (x: string) => void, + log: (...args: Array) => void, ): Promise<> { const { bundleOutput, diff --git a/local-cli/bundle/output/unbundle/write-sourcemap.js b/local-cli/bundle/output/unbundle/write-sourcemap.js index 35af1b77b679..18c05b2af5de 100644 --- a/local-cli/bundle/output/unbundle/write-sourcemap.js +++ b/local-cli/bundle/output/unbundle/write-sourcemap.js @@ -15,7 +15,7 @@ const writeFile = require('../writeFile'); function writeSourcemap( fileName: string, contents: string, - log: (x: string) => void, + log: (...args: Array) => void, ): Promise<> { if (!fileName) { return Promise.resolve(); diff --git a/packager/src/Bundler/index.js b/packager/src/Bundler/index.js index 38cf5ac09b51..b4e57d0432c9 100644 --- a/packager/src/Bundler/index.js +++ b/packager/src/Bundler/index.js @@ -14,6 +14,7 @@ const assert = require('assert'); const crypto = require('crypto'); const debug = require('debug')('RNP:Bundler'); +const emptyFunction = require('fbjs/lib/emptyFunction'); const fs = require('fs'); const Transformer = require('../JSTransformer'); const Resolver = require('../Resolver'); @@ -89,8 +90,6 @@ export type ExtendedAssetDescriptor = AssetDescriptor & { const sizeOf = denodeify(imageSize); -const noop = () => {}; - const { createActionStartEntry, createActionEndEntry, @@ -173,7 +172,7 @@ class Bundler { this._getModuleId = createModuleIdFactory(); - let getCacheKey = () => ''; + let getCacheKey = (options: mixed) => ''; if (opts.transformModulePath) { /* $FlowFixMe: dynamic requires prevent static typing :'( */ const transformer = require(opts.transformModulePath); @@ -283,7 +282,7 @@ class Bundler { const matchingRoot = this._projectRoots.find(root => filePath.startsWith(root)); if (!matchingRoot) { - throw new Error('No matching project root for ', filePath); + throw new Error('No matching project root for ' + filePath); } // Replaces '\' with '/' for Windows paths. @@ -422,10 +421,10 @@ class Bundler { isolateModuleIDs, generateSourceMaps, assetPlugins, - onResolutionResponse = noop, - onModuleTransformed = noop, - finalizeBundle = noop, - onProgress = noop, + onResolutionResponse = emptyFunction, + onModuleTransformed = emptyFunction, + finalizeBundle = emptyFunction, + onProgress = emptyFunction, }: *) { const transformingFilesLogEntry = log(createActionStartEntry({ @@ -641,7 +640,7 @@ class Bundler { bundle: Bundle, entryFilePath: string, options: BundlingOptions, - getModuleId: () => number, + getModuleId: (module: Module) => number, dependencyPairs: Array<[string, Module]>, assetPlugins: Array, }): Promise { diff --git a/packager/src/JSTransformer/index.js b/packager/src/JSTransformer/index.js index 7b23fd1f4a95..66a96b8f1cbb 100644 --- a/packager/src/JSTransformer/index.js +++ b/packager/src/JSTransformer/index.js @@ -166,11 +166,11 @@ function TransformError() { } util.inherits(TransformError, SyntaxError); -function formatError(err, filename, source) { +function formatError(err, filename) { if (err.loc) { - return formatBabelError(err, filename, source); + return formatBabelError(err, filename); } else { - return formatGenericError(err, filename, source); + return formatGenericError(err, filename); } } diff --git a/packager/src/ModuleGraph/Graph.js b/packager/src/ModuleGraph/Graph.js index e8079139a4e6..4e5236a095bf 100644 --- a/packager/src/ModuleGraph/Graph.js +++ b/packager/src/ModuleGraph/Graph.js @@ -10,6 +10,7 @@ */ 'use strict'; +const emptyFunction = require('fbjs/lib/emptyFunction'); const invariant = require('fbjs/lib/invariant'); const memoize = require('async/memoize'); const nullthrows = require('fbjs/lib/nullthrows'); @@ -51,11 +52,10 @@ type LoadQueue = const createParentModule = () => ({file: {code: '', type: 'script', path: ''}, dependencies: []}); -const noop = () => {}; const NO_OPTIONS = {}; exports.create = function create(resolve: ResolveFn, load: LoadFn): GraphFn { - function Graph(entryPoints, platform, options, callback = noop) { + function Graph(entryPoints, platform, options, callback = emptyFunction) { const { log = (console: any), optimize = false, @@ -80,7 +80,7 @@ exports.create = function create(resolve: ResolveFn, load: LoadFn): GraphFn { callback(null, collect()); }; loadQueue.error = error => { - loadQueue.error = noop; + loadQueue.error = emptyFunction; loadQueue.kill(); callback(error); }; diff --git a/packager/src/Server/index.js b/packager/src/Server/index.js index fae8323b7c2d..db2d10b8c02f 100644 --- a/packager/src/Server/index.js +++ b/packager/src/Server/index.js @@ -16,6 +16,7 @@ const Bundler = require('../Bundler'); const MultipartResponse = require('./MultipartResponse'); const defaults = require('../../defaults'); +const emptyFunction = require('fbjs/lib/emptyFunction'); const mime = require('mime-types'); const parsePlatformFilePath = require('../node-haste/lib/parsePlatformFilePath'); const path = require('path'); @@ -26,7 +27,6 @@ const url = require('url'); const debug = require('debug')('RNP:Server'); import type Module, {HasteImpl} from '../node-haste/Module'; -import type {Stats} from 'fs'; import type {IncomingMessage, ServerResponse} from 'http'; import type ResolutionResponse from '../node-haste/DependencyGraph/ResolutionResponse'; import type Bundle from '../Bundler/Bundle'; @@ -175,7 +175,7 @@ class Server { watch: options.watch || false, }; const processFileChange = - ({type, filePath, stat}) => this.onFileChange(type, filePath, stat); + ({type, filePath}) => this.onFileChange(type, filePath); this._reporter = options.reporter; this._projectRoots = this._opts.projectRoots; @@ -316,8 +316,8 @@ class Server { }); } - onFileChange(type: string, filePath: string, stat: Stats) { - this._assetServer.onFileChange(type, filePath, stat); + onFileChange(type: string, filePath: string) { + this._assetServer.onFileChange(type, filePath); // If Hot Loading is enabled avoid rebuilding bundles and sending live // updates. Instead, send the HMR updates right away and clear the bundles @@ -653,7 +653,7 @@ class Server { entry_point: options.entryFile, })); - let reportProgress = () => {}; + let reportProgress = emptyFunction; if (!this._opts.silent) { reportProgress = (transformedFileCount, totalFileCount) => { this._reporter.update({ diff --git a/packager/src/lib/TransformCache.js b/packager/src/lib/TransformCache.js index eb98342acf4a..d32189b87d0e 100644 --- a/packager/src/lib/TransformCache.js +++ b/packager/src/lib/TransformCache.js @@ -90,14 +90,16 @@ class TransformCache { * close to each others, one of the workers is going to loose its results no * matter what. */ - writeSync(props: { - filePath: string, - sourceCode: string, - getTransformCacheKey: GetTransformCacheKey, - transformOptions: WorkerOptions, - transformOptionsKey: string, - result: CachedResult, - }): void { + writeSync( + props: { + filePath: string, + sourceCode: string, + getTransformCacheKey: GetTransformCacheKey, + transformOptions: WorkerOptions, + transformOptionsKey: string, + result: CachedResult, + }, + ): void { const cacheFilePath = this._getCacheFilePaths(props); mkdirp.sync(path.dirname(cacheFilePath.transformedCode)); const {result} = props; @@ -233,7 +235,7 @@ class TransformCache { mkdirp.sync(cacheDirPath); const cacheCollectionFilePath = path.join(cacheDirPath, 'last_collected'); const lastCollected = Number.parseInt( - tryReadFileSync(cacheCollectionFilePath, 'utf8'), + tryReadFileSync(cacheCollectionFilePath), 10, ); if ( @@ -253,10 +255,12 @@ class TransformCache { * account because it would generate lots of file during development. (The * source hash is stored in the metadata instead). */ - _getCacheFilePaths(props: { - filePath: string, - transformOptionsKey: string, - }): CacheFilePaths { + _getCacheFilePaths( + props: { + filePath: string, + transformOptionsKey: string, + }, + ): CacheFilePaths { const hasher = crypto .createHash('sha1') .update(props.filePath) @@ -384,13 +388,15 @@ function tryParseJSON(str: string): any { } } -function hashSourceCode(props: { - filePath: string, - sourceCode: string, - getTransformCacheKey: GetTransformCacheKey, - transformOptions: WorkerOptions, - transformOptionsKey: string, -}): string { +function hashSourceCode( + props: { + filePath: string, + sourceCode: string, + getTransformCacheKey: GetTransformCacheKey, + transformOptions: WorkerOptions, + transformOptionsKey: string, + }, +): string { return crypto .createHash('sha1') .update(props.getTransformCacheKey(props.transformOptions)) diff --git a/packager/src/node-haste/DependencyGraph.js b/packager/src/node-haste/DependencyGraph.js index 7516bc8f19ae..ff049c984df4 100644 --- a/packager/src/node-haste/DependencyGraph.js +++ b/packager/src/node-haste/DependencyGraph.js @@ -156,8 +156,8 @@ class DependencyGraph extends EventEmitter { this._filesByDirNameIndex = new FilesByDirNameIndex(hasteFS.getAllFiles()); this._assetResolutionCache.clear(); this._moduleMap = moduleMap; - eventsQueue.forEach(({type, filePath, stat}) => - this._moduleCache.processFileChange(type, filePath, stat) + eventsQueue.forEach(({type, filePath}) => + this._moduleCache.processFileChange(type, filePath) ); this.emit('change'); } @@ -290,11 +290,11 @@ class DependencyGraph extends EventEmitter { } -function NotFoundError() { +function NotFoundError(...args) { /* $FlowFixMe: monkey-patching */ Error.call(this); Error.captureStackTrace(this, this.constructor); - var msg = util.format.apply(util, arguments); + var msg = util.format.apply(util, args); this.message = msg; this.type = this.name = 'NotFoundError'; this.status = 404; From afc114364b724ea10b0a8a8ce74bf71d5ac21a69 Mon Sep 17 00:00:00 2001 From: Gabe Levi Date: Thu, 18 May 2017 16:51:41 -0700 Subject: [PATCH 0140/1101] Turn on strict call arity checking for xplat/js Reviewed By: zertosh Differential Revision: D5082688 fbshipit-source-id: 188593a513583028c22d09f4e4dc02659dbd18dd --- .flowconfig | 2 +- local-cli/templates/HelloWorld/_flowconfig | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.flowconfig b/.flowconfig index 5c7f8315bef8..c12d036d14a5 100644 --- a/.flowconfig +++ b/.flowconfig @@ -31,7 +31,7 @@ emoji=true module.system=haste -experimental.strict_type_args=true +experimental.strict_call_arity=true munge_underscores=true diff --git a/local-cli/templates/HelloWorld/_flowconfig b/local-cli/templates/HelloWorld/_flowconfig index 1ee54691a658..e500bbf15157 100644 --- a/local-cli/templates/HelloWorld/_flowconfig +++ b/local-cli/templates/HelloWorld/_flowconfig @@ -26,7 +26,7 @@ emoji=true module.system=haste -experimental.strict_type_args=true +experimental.strict_call_arity=true munge_underscores=true From 3f8af2deee128e21a34b11ae3830f85f21fea8ed Mon Sep 17 00:00:00 2001 From: Alex Kotliarskyi Date: Thu, 18 May 2017 16:58:46 -0700 Subject: [PATCH 0141/1101] Better context for "Calling JS function after bridge has been destroyed" warning Reviewed By: AaaChiuuu Differential Revision: D5091701 fbshipit-source-id: 9bf66cf35ffc3ade82a0ee61227760f0946d410d --- .../java/com/facebook/react/bridge/CatalystInstanceImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstanceImpl.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstanceImpl.java index 1ed7aaaef72a..d3a312b886a3 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstanceImpl.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstanceImpl.java @@ -239,7 +239,8 @@ public void callFunction( final String method, final NativeArray arguments) { if (mDestroyed) { - FLog.w(ReactConstants.TAG, "Calling JS function after bridge has been destroyed."); + final String call = module + "." + method + "(" + arguments.toString() + ")"; + FLog.w(ReactConstants.TAG, "Calling JS function after bridge has been destroyed: " + call); return; } if (!mAcceptCalls) { From 523a103108d7ae7073653233a35ed678bf844848 Mon Sep 17 00:00:00 2001 From: Alexey Lang Date: Fri, 19 May 2017 02:43:40 -0700 Subject: [PATCH 0142/1101] Make Systrace less noisy in Java Reviewed By: AaaChiuuu Differential Revision: D5087152 fbshipit-source-id: 5aa911e834be2ee0d8c5c53ec71e617d02da564f --- .../src/main/java/com/facebook/react/ReactInstanceManager.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java b/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java index 6044151e54a2..27d105b08976 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java @@ -315,7 +315,8 @@ public void recreateReactContextInBackground() { private void recreateReactContextInBackgroundInner() { UiThreadUtil.assertOnUiThread(); - if (mUseDeveloperSupport && mJSMainModuleName != null) { + if (mUseDeveloperSupport && mJSMainModuleName != null && + !Systrace.isTracing(TRACE_TAG_REACT_APPS | TRACE_TAG_REACT_JSC_CALLS)) { final DeveloperSettings devSettings = mDevSupportManager.getDevSettings(); // If remote JS debugging is enabled, load from dev server. From 5ee4e63abf944e8b0bae34ba69637803bd84f8b0 Mon Sep 17 00:00:00 2001 From: David Aurelio Date: Fri, 19 May 2017 02:52:11 -0700 Subject: [PATCH 0143/1101] Call minification post-processing hook MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Summary: RN configuration allows to specify a post-minify hook. This wasn’t called in the new Buck integration so far. Added here. Reviewed By: cpojer Differential Revision: D5087325 fbshipit-source-id: 74b58bd3a203716d8f01b5d7ba552b6ad1b575ce --- .../worker/__tests__/optimize-module-test.js | 26 +++++++++++++++++++ .../src/ModuleGraph/worker/optimize-module.js | 12 +++++++-- 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/packager/src/ModuleGraph/worker/__tests__/optimize-module-test.js b/packager/src/ModuleGraph/worker/__tests__/optimize-module-test.js index 37e584728a53..8863e1ed5f3c 100644 --- a/packager/src/ModuleGraph/worker/__tests__/optimize-module-test.js +++ b/packager/src/ModuleGraph/worker/__tests__/optimize-module-test.js @@ -14,6 +14,7 @@ const optimizeModule = require('../optimize-module'); const transformModule = require('../transform-module'); const transformer = require('../../../../transformer.js'); const {SourceMapConsumer} = require('source-map'); +const {fn} = require('../../test-helpers'); const {objectContaining} = jasmine; @@ -22,6 +23,7 @@ describe('optimizing JS modules', () => { const optimizationOptions = { dev: false, platform: 'android', + postMinifyProcess: x => x, }; const originalCode = `if (Platform.OS !== 'android') { @@ -85,6 +87,30 @@ describe('optimizing JS modules', () => { }); }); + describe('post-processing', () => { + let postMinifyProcess, optimize; + beforeEach(() => { + postMinifyProcess = fn(); + optimize = () => + optimizeModule(transformResult, {...optimizationOptions, postMinifyProcess}); + }); + + it('passes the result to the provided postprocessing function', () => { + postMinifyProcess.stub.callsFake(x => x); + const result = optimize(); + const {code, map} = result.details.transformed.default; + expect(postMinifyProcess).toBeCalledWith({code, map}); + }); + + it('uses the result of the provided postprocessing function for the result', () => { + const code = 'var postprocessed = "code";'; + const map = {version: 3, mappings: 'postprocessed'}; + postMinifyProcess.stub.returns({code, map}); + expect(optimize().details.transformed.default) + .toEqual(objectContaining({code, map})); + }); + }); + it('passes through non-code data unmodified', () => { const data = {type: 'asset', details: {arbitrary: 'data'}}; expect(optimizeModule(JSON.stringify(data), {dev: true, platform: ''})) diff --git a/packager/src/ModuleGraph/worker/optimize-module.js b/packager/src/ModuleGraph/worker/optimize-module.js index 4324d02a045d..e77ad12dc683 100644 --- a/packager/src/ModuleGraph/worker/optimize-module.js +++ b/packager/src/ModuleGraph/worker/optimize-module.js @@ -20,11 +20,14 @@ const sourceMap = require('source-map'); import type {TransformedSourceFile, TransformResult} from '../types.flow'; import type {MappingsMap, SourceMap} from '../../lib/SourceMap'; +import type {PostMinifyProcess} from '../../Bundler/index.js'; + export type OptimizationOptions = {| dev: boolean, isPolyfill?: boolean, platform: string, + postMinifyProcess: PostMinifyProcess, |}; function optimizeModule( @@ -40,16 +43,21 @@ function optimizeModule( const {details} = data; const {code, file, transformed} = details; const result = {...details, transformed: {}}; + const {postMinifyProcess} = optimizationOptions; //$FlowIssue #14545724 Object.entries(transformed).forEach(([k, t: TransformResult]: [*, TransformResult]) => { - result.transformed[k] = optimize(t, file, code, optimizationOptions); + const optimized = optimize(t, file, code, optimizationOptions); + const processed = postMinifyProcess({code: optimized.code, map: optimized.map}); + optimized.code = processed.code; + optimized.map = processed.map; + result.transformed[k] = optimized; }); return {type: 'code', details: result}; } -function optimize(transformed, file, originalCode, options): TransformResult { +function optimize(transformed, file, originalCode, options) { const {code, dependencyMapName, map} = transformed; const optimized = optimizeCode(code, map, file, options); From add1c7e38c21fc8d57d96f05281cf7337c28e257 Mon Sep 17 00:00:00 2001 From: David Aurelio Date: Fri, 19 May 2017 03:21:24 -0700 Subject: [PATCH 0144/1101] require.js: Delete dependency map after factory ran Summary: Releases the dependency map of modules after running the factory in release mode in order to save memory. Reviewed By: cpojer Differential Revision: D5086693 fbshipit-source-id: 68c57a2f98182ed1a732e1336e6d4fe5ce27abc3 --- packager/src/Resolver/polyfills/require.js | 1 + 1 file changed, 1 insertion(+) diff --git a/packager/src/Resolver/polyfills/require.js b/packager/src/Resolver/polyfills/require.js index 3c1f0b24bad4..f0e9e646336b 100644 --- a/packager/src/Resolver/polyfills/require.js +++ b/packager/src/Resolver/polyfills/require.js @@ -177,6 +177,7 @@ function loadModuleImplementation(moduleId, module) { if (!__DEV__) { // $FlowFixMe: This is only sound because we never access `factory` again module.factory = undefined; + module.dependencyMap = undefined; } if (__DEV__) { From 0518a0ba12e7cafc8228be0455403cc23b055a79 Mon Sep 17 00:00:00 2001 From: Janic Duplessis Date: Fri, 19 May 2017 03:28:13 -0700 Subject: [PATCH 0145/1101] Fix sticky headers when rerendering Summary: There was an issue that sometimes sticky headers would stop moving when re-rendering because we did not reattach events properly. This makes sure that we always detach and reatach on rerender in case the scroll view ref changes. **Test plan** Tested that this fixes issues with sticky headers we discovered when updating Expo to RN 0.44. Closes https://github.com/facebook/react-native/pull/14012 Differential Revision: D5094418 Pulled By: javache fbshipit-source-id: a56050ae786712e8a3de2a6e3b4e8749a2fde86e --- Libraries/Components/ScrollView/ScrollView.js | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/Libraries/Components/ScrollView/ScrollView.js b/Libraries/Components/ScrollView/ScrollView.js index 723bcfa4f181..4c5e66ae94bd 100644 --- a/Libraries/Components/ScrollView/ScrollView.js +++ b/Libraries/Components/ScrollView/ScrollView.js @@ -490,18 +490,15 @@ const ScrollView = React.createClass({ }, _updateAnimatedNodeAttachment: function() { + if (this._scrollAnimatedValueAttachment) { + this._scrollAnimatedValueAttachment.detach(); + } if (this.props.stickyHeaderIndices && this.props.stickyHeaderIndices.length > 0) { - if (!this._scrollAnimatedValueAttachment) { - this._scrollAnimatedValueAttachment = Animated.attachNativeEvent( - this._scrollViewRef, - 'onScroll', - [{nativeEvent: {contentOffset: {y: this._scrollAnimatedValue}}}] - ); - } - } else { - if (this._scrollAnimatedValueAttachment) { - this._scrollAnimatedValueAttachment.detach(); - } + this._scrollAnimatedValueAttachment = Animated.attachNativeEvent( + this._scrollViewRef, + 'onScroll', + [{nativeEvent: {contentOffset: {y: this._scrollAnimatedValue}}}] + ); } }, From c6dd3d137bce6d1382264452510a8c6282c1d1c7 Mon Sep 17 00:00:00 2001 From: Emil Sjolander Date: Fri, 19 May 2017 04:00:13 -0700 Subject: [PATCH 0146/1101] Add missing okio deps Reviewed By: bestander Differential Revision: D5094495 fbshipit-source-id: 395d63ff82022c83f58cae8b0005e0ec735ab958 --- .../src/main/java/com/facebook/react/common/network/BUCK | 1 + .../src/main/java/com/facebook/react/modules/fresco/BUCK | 1 + .../src/test/java/com/facebook/react/packagerconnection/BUCK | 1 + 3 files changed, 3 insertions(+) diff --git a/ReactAndroid/src/main/java/com/facebook/react/common/network/BUCK b/ReactAndroid/src/main/java/com/facebook/react/common/network/BUCK index e9b5c844225f..d49f82c7f845 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/common/network/BUCK +++ b/ReactAndroid/src/main/java/com/facebook/react/common/network/BUCK @@ -8,5 +8,6 @@ android_library( ], deps = [ react_native_dep("third-party/java/okhttp:okhttp3"), + react_native_dep("third-party/java/okio:okio"), ], ) diff --git a/ReactAndroid/src/main/java/com/facebook/react/modules/fresco/BUCK b/ReactAndroid/src/main/java/com/facebook/react/modules/fresco/BUCK index 1e6e6d60026f..bbe1b0aeb9e7 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/modules/fresco/BUCK +++ b/ReactAndroid/src/main/java/com/facebook/react/modules/fresco/BUCK @@ -20,6 +20,7 @@ android_library( react_native_dep("third-party/java/jsr-305:jsr-305"), react_native_dep("third-party/java/okhttp:okhttp3"), react_native_dep("third-party/java/okhttp:okhttp3-urlconnection"), + react_native_dep("third-party/java/okio:okio"), react_native_target("java/com/facebook/react/bridge:bridge"), react_native_target("java/com/facebook/react/common:common"), react_native_target("java/com/facebook/react/module/annotations:annotations"), diff --git a/ReactAndroid/src/test/java/com/facebook/react/packagerconnection/BUCK b/ReactAndroid/src/test/java/com/facebook/react/packagerconnection/BUCK index 46db0168913b..f56ff3ac7f1b 100644 --- a/ReactAndroid/src/test/java/com/facebook/react/packagerconnection/BUCK +++ b/ReactAndroid/src/test/java/com/facebook/react/packagerconnection/BUCK @@ -15,6 +15,7 @@ rn_robolectric_test( react_native_dep("third-party/java/junit:junit"), react_native_dep("third-party/java/mockito:mockito"), react_native_dep("third-party/java/okhttp:okhttp3"), + react_native_dep("third-party/java/okio:okio"), react_native_dep("third-party/java/robolectric3/robolectric:robolectric"), react_native_target("java/com/facebook/react/packagerconnection:packagerconnection"), ], From 99f8c5df370f5b28347a09fe5e3624a53fdf34ed Mon Sep 17 00:00:00 2001 From: Pieter De Baets Date: Fri, 19 May 2017 04:04:27 -0700 Subject: [PATCH 0147/1101] Sync fbjni to React Native Reviewed By: mhorowitz Differential Revision: D5086537 fbshipit-source-id: a95863113b3c63530a2550d29dfdc9626be86dc0 --- .../jni/first-party/fb/include/fb/Build.h | 26 +++ .../first-party/fb/include/fb/Environment.h | 13 ++ .../first-party/fb/include/fb/fbjni/Boxed.h | 5 +- .../fb/include/fb/fbjni/CoreClasses-inl.h | 14 +- .../fb/include/fb/fbjni/CoreClasses.h | 26 ++- .../fb/include/fb/fbjni/Exceptions.h | 16 +- .../first-party/fb/include/fb/fbjni/Hybrid.h | 103 +++++++-- .../fb/include/fb/fbjni/JWeakReference.h | 37 ++++ .../fb/include/fb/fbjni/Meta-inl.h | 28 ++- .../fb/include/fb/fbjni/MetaConvert.h | 16 +- .../fb/fbjni/ReferenceAllocators-inl.h | 12 +- .../fb/include/fb/fbjni/References-inl.h | 15 +- .../fb/include/fb/fbjni/References.h | 6 +- .../fb/include/fb/fbjni/Registration-inl.h | 195 +++++++---------- .../fb/include/fb/fbjni/Registration.h | 14 -- .../fb/include/jni/JniTerminateHandler.h | 18 ++ .../first-party/fb/include/jni/LocalString.h | 9 +- .../jni/first-party/fb/jni/Environment.cpp | 186 ++++++++++------ .../jni/first-party/fb/jni/Exceptions.cpp | 203 +++++++++++++----- .../main/jni/first-party/fb/jni/Hybrid.cpp | 37 +--- .../jni/first-party/fb/jni/LocalString.cpp | 3 +- .../first-party/fb/jni/NativeSoftError.cpp | 119 ++++++++++ .../fb/jni/android/CpuCapabilities.cpp | 70 ++++++ .../fb/jni/android/ReferenceChecking.cpp | 37 ++++ .../src/main/jni/first-party/fb/jni/fbjni.cpp | 7 +- .../src/main/jni/first-party/fb/jni/java/BUCK | 8 + 26 files changed, 876 insertions(+), 347 deletions(-) create mode 100644 ReactAndroid/src/main/jni/first-party/fb/include/fb/Build.h create mode 100644 ReactAndroid/src/main/jni/first-party/fb/include/fb/fbjni/JWeakReference.h create mode 100644 ReactAndroid/src/main/jni/first-party/fb/include/jni/JniTerminateHandler.h create mode 100644 ReactAndroid/src/main/jni/first-party/fb/jni/NativeSoftError.cpp create mode 100644 ReactAndroid/src/main/jni/first-party/fb/jni/android/CpuCapabilities.cpp create mode 100644 ReactAndroid/src/main/jni/first-party/fb/jni/android/ReferenceChecking.cpp create mode 100644 ReactAndroid/src/main/jni/first-party/fb/jni/java/BUCK diff --git a/ReactAndroid/src/main/jni/first-party/fb/include/fb/Build.h b/ReactAndroid/src/main/jni/first-party/fb/include/fb/Build.h new file mode 100644 index 000000000000..98ad557467df --- /dev/null +++ b/ReactAndroid/src/main/jni/first-party/fb/include/fb/Build.h @@ -0,0 +1,26 @@ +// Copyright 2004-present Facebook. All Rights Reserved. + +#pragma once + +#include + +#if defined(__ANDROID__) +# include +#endif + +namespace facebook { +namespace build { + +struct Build { + static int getAndroidSdk() { + static auto android_sdk = ([] { + char sdk_version_str[PROP_VALUE_MAX]; + __system_property_get("ro.build.version.sdk", sdk_version_str); + return atoi(sdk_version_str); + })(); + return android_sdk; + } +}; + +} // build +} // facebook diff --git a/ReactAndroid/src/main/jni/first-party/fb/include/fb/Environment.h b/ReactAndroid/src/main/jni/first-party/fb/include/fb/Environment.h index 64f9937a6577..34864fc328f8 100644 --- a/ReactAndroid/src/main/jni/first-party/fb/include/fb/Environment.h +++ b/ReactAndroid/src/main/jni/first-party/fb/include/fb/Environment.h @@ -17,6 +17,10 @@ namespace facebook { namespace jni { +namespace internal { + struct CacheEnvTag {}; +} + // Keeps a thread-local reference to the current thread's JNIEnv. struct Environment { // May be null if this thread isn't attached to the JVM @@ -70,7 +74,16 @@ class FBEXPORT ThreadScope { static void WithClassLoader(std::function&& runnable); static void OnLoad(); + + // This constructor is only used internally by fbjni. + ThreadScope(JNIEnv*, internal::CacheEnvTag); private: + friend struct Environment; + ThreadScope* previous_; + // If the JNIEnv* is set, it is guaranteed to be valid at least through the + // lifetime of this ThreadScope. The only case where that guarantee can be + // made is when there is a java frame in the stack below this. + JNIEnv* env_; bool attachedWithThisScope_; }; } diff --git a/ReactAndroid/src/main/jni/first-party/fb/include/fb/fbjni/Boxed.h b/ReactAndroid/src/main/jni/first-party/fb/include/fb/fbjni/Boxed.h index 5044d503de4e..c816924c5fce 100644 --- a/ReactAndroid/src/main/jni/first-party/fb/include/fb/fbjni/Boxed.h +++ b/ReactAndroid/src/main/jni/first-party/fb/include/fb/fbjni/Boxed.h @@ -58,9 +58,12 @@ DEFINE_BOXED_PRIMITIVE(double, Double) #undef DEFINE_BOXED_PRIMITIVE +struct JVoid : public jni::JavaClass { + static auto constexpr kJavaDescriptor = "Ljava/lang/Void;"; +}; + inline local_ref autobox(alias_ref val) { return make_local(val); } }} - diff --git a/ReactAndroid/src/main/jni/first-party/fb/include/fb/fbjni/CoreClasses-inl.h b/ReactAndroid/src/main/jni/first-party/fb/include/fb/fbjni/CoreClasses-inl.h index 40fb94b7b5a0..9149df24e8d1 100644 --- a/ReactAndroid/src/main/jni/first-party/fb/include/fb/fbjni/CoreClasses-inl.h +++ b/ReactAndroid/src/main/jni/first-party/fb/include/fb/fbjni/CoreClasses-inl.h @@ -177,7 +177,12 @@ inline void JClass::registerNatives(std::initializer_list methods) inline bool JClass::isAssignableFrom(alias_ref other) const noexcept { const auto env = internal::getEnv(); - const auto result = env->IsAssignableFrom(self(), other.get()); + // Ths method has behavior compatible with the + // java.lang.Class#isAssignableFrom method. The order of the + // arguments to the JNI IsAssignableFrom C function is "opposite" + // from what some might expect, which makes this code look a little + // odd, but it is correct. + const auto result = env->IsAssignableFrom(other.get(), self()); return result; } @@ -341,13 +346,6 @@ struct Convert { }; } -// jthrowable ////////////////////////////////////////////////////////////////////////////////////// - -inline local_ref JThrowable::initCause(alias_ref cause) { - static auto meth = javaClassStatic()->getMethod("initCause"); - return meth(self(), cause.get()); -} - // jtypeArray ////////////////////////////////////////////////////////////////////////////////////// namespace detail { diff --git a/ReactAndroid/src/main/jni/first-party/fb/include/fb/fbjni/CoreClasses.h b/ReactAndroid/src/main/jni/first-party/fb/include/fb/fbjni/CoreClasses.h index 9e0bb87641f1..1ee5bb005eb3 100644 --- a/ReactAndroid/src/main/jni/first-party/fb/include/fb/fbjni/CoreClasses.h +++ b/ReactAndroid/src/main/jni/first-party/fb/include/fb/fbjni/CoreClasses.h @@ -340,14 +340,6 @@ class FBEXPORT JString : public JavaClass { FBEXPORT local_ref make_jstring(const char* modifiedUtf8); FBEXPORT local_ref make_jstring(const std::string& modifiedUtf8); -/// Wrapper to provide functionality to jthrowable references -class FBEXPORT JThrowable : public JavaClass { - public: - static constexpr const char* kJavaDescriptor = "Ljava/lang/Throwable;"; - - local_ref initCause(alias_ref cause); -}; - namespace detail { template class ElementProxy { @@ -565,6 +557,24 @@ class PinnedPrimitiveArray { friend class JPrimitiveArray::array_type>; }; +struct JStackTraceElement : JavaClass { + static auto constexpr kJavaDescriptor = "Ljava/lang/StackTraceElement;"; + + static local_ref create(const std::string& declaringClass, const std::string& methodName, const std::string& file, int line); +}; + +/// Wrapper to provide functionality to jthrowable references +class FBEXPORT JThrowable : public JavaClass { + public: + static constexpr const char* kJavaDescriptor = "Ljava/lang/Throwable;"; + + using JStackTrace = JArrayClass; + + local_ref initCause(alias_ref cause); + local_ref getStackTrace(); + void setStackTrace(alias_ref>); +}; + #pragma push_macro("PlainJniRefMap") #undef PlainJniRefMap #define PlainJniRefMap(rtype, jtype) \ diff --git a/ReactAndroid/src/main/jni/first-party/fb/include/fb/fbjni/Exceptions.h b/ReactAndroid/src/main/jni/first-party/fb/include/fb/fbjni/Exceptions.h index ce2cc70bdc3f..b1089139d509 100644 --- a/ReactAndroid/src/main/jni/first-party/fb/include/fb/fbjni/Exceptions.h +++ b/ReactAndroid/src/main/jni/first-party/fb/include/fb/fbjni/Exceptions.h @@ -32,6 +32,11 @@ #include "References.h" #include "CoreClasses.h" +#if defined(__ANDROID__) && defined(__ARM_ARCH_5TE__) && !defined(FBJNI_NO_EXCEPTION_PTR) +// ARMv5 NDK does not support exception_ptr so we cannot use that when building for it. +#define FBJNI_NO_EXCEPTION_PTR +#endif + namespace facebook { namespace jni { @@ -108,9 +113,16 @@ template } // Identifies any pending C++ exception and throws it as a Java exception. If the exception can't -// be thrown, it aborts the program. This is a noexcept function at C++ level. -FBEXPORT void translatePendingCppExceptionToJavaException() noexcept; +// be thrown, it aborts the program. +FBEXPORT void translatePendingCppExceptionToJavaException(); + +#ifndef FBJNI_NO_EXCEPTION_PTR +FBEXPORT local_ref getJavaExceptionForCppException(std::exception_ptr ptr); +#endif + +FBEXPORT local_ref getJavaExceptionForCppBackTrace(); +FBEXPORT local_ref getJavaExceptionForCppBackTrace(const char* msg); // For convenience, some exception names in java.lang are available here. const char* const gJavaLangIllegalArgumentException = "java/lang/IllegalArgumentException"; diff --git a/ReactAndroid/src/main/jni/first-party/fb/include/fb/fbjni/Hybrid.h b/ReactAndroid/src/main/jni/first-party/fb/include/fb/fbjni/Hybrid.h index e272c2dad2d5..e2cac448fd7a 100644 --- a/ReactAndroid/src/main/jni/first-party/fb/include/fb/fbjni/Hybrid.h +++ b/ReactAndroid/src/main/jni/first-party/fb/include/fb/fbjni/Hybrid.h @@ -29,11 +29,59 @@ class BaseHybridClass { struct FBEXPORT HybridData : public JavaClass { constexpr static auto kJavaDescriptor = "Lcom/facebook/jni/HybridData;"; - void setNativePointer(std::unique_ptr new_value); - BaseHybridClass* getNativePointer(); static local_ref create(); }; +class HybridDestructor : public JavaClass { + public: + static auto constexpr kJavaDescriptor = "Lcom/facebook/jni/HybridData$Destructor;"; + + template + T* getNativePointer() { + static auto pointerField = javaClassStatic()->getField("mNativePointer"); + auto* value = reinterpret_cast(getFieldValue(pointerField)); + if (!value) { + throwNewJavaException("java/lang/NullPointerException", "java.lang.NullPointerException"); + } + return value; + } + + template + void setNativePointer(std::unique_ptr new_value) { + static auto pointerField = javaClassStatic()->getField("mNativePointer"); + auto old_value = std::unique_ptr(reinterpret_cast(getFieldValue(pointerField))); + if (new_value && old_value) { + FBCRASH("Attempt to set C++ native pointer twice"); + } + setFieldValue(pointerField, reinterpret_cast(new_value.release())); + } +}; + +template +detail::BaseHybridClass* getNativePointer(T t) { + return getHolder(t)->getNativePointer(); +} + +template +void setNativePointer(T t, std::unique_ptr new_value) { + getHolder(t)->setNativePointer(std::move(new_value)); +} + +template +local_ref getHolder(T t) { + static auto holderField = t->getClass()->template getField("mDestructor"); + return t->getFieldValue(holderField); +} + +// JavaClass for HybridClassBase +struct FBEXPORT HybridClassBase : public JavaClass { + constexpr static auto kJavaDescriptor = "Lcom/facebook/jni/HybridClassBase;"; + + static bool isHybridClassBase(alias_ref jclass) { + return HybridClassBase::javaClassStatic()->isAssignableFrom(jclass); + } +}; + template struct HybridTraits { // This static assert should actually always fail if we don't use one of the @@ -139,7 +187,7 @@ class FBEXPORT HybridClass : public detail::HybridTraits::CxxBase { static local_ref makeHybridData(std::unique_ptr cxxPart) { auto hybridData = detail::HybridData::create(); - hybridData->setNativePointer(std::move(cxxPart)); + setNativePointer(hybridData, std::move(cxxPart)); return hybridData; } @@ -148,6 +196,11 @@ class FBEXPORT HybridClass : public detail::HybridTraits::CxxBase { return makeHybridData(std::unique_ptr(new T(std::forward(args)...))); } + template + static void setCxxInstance(alias_ref o, Args&&... args) { + setNativePointer(o, std::unique_ptr(new T(std::forward(args)...))); + } + public: // Factory method for creating a hybrid object where the arguments // are used to initialize the C++ part directly without passing them @@ -161,11 +214,23 @@ class FBEXPORT HybridClass : public detail::HybridTraits::CxxBase { // C++ object fails, or any JNI methods throw. template static local_ref newObjectCxxArgs(Args&&... args) { - auto hybridData = makeCxxInstance(std::forward(args)...); - return JavaPart::newInstance(hybridData); + static bool isHybrid = detail::HybridClassBase::isHybridClassBase(javaClassStatic()); + auto cxxPart = std::unique_ptr(new T(std::forward(args)...)); + + local_ref result; + if (isHybrid) { + result = JavaPart::newInstance(); + setNativePointer(result, std::move(cxxPart)); + } + else { + auto hybridData = makeHybridData(std::move(cxxPart)); + result = JavaPart::newInstance(hybridData); + } + + return result; } - // TODO? Create reusable interface for Allocatable classes and use it to + // TODO? Create reusable interface for Allocatable classes and use it to // strengthen type-checking (and possibly provide a default // implementation of allocate().) template @@ -195,17 +260,25 @@ class FBEXPORT HybridClass : public detail::HybridTraits::CxxBase { template inline T* HybridClass::JavaPart::cthis() { - static auto field = - HybridClass::JavaPart::javaClassStatic()->template getField("mHybridData"); - auto hybridData = this->getFieldValue(field); - if (!hybridData) { - throwNewJavaException("java/lang/NullPointerException", "java.lang.NullPointerException"); + detail::BaseHybridClass* result = 0; + static bool isHybrid = detail::HybridClassBase::isHybridClassBase(this->getClass()); + if (isHybrid) { + result = getNativePointer(this); + } else { + static auto field = + HybridClass::JavaPart::javaClassStatic()->template getField("mHybridData"); + auto hybridData = this->getFieldValue(field); + if (!hybridData) { + throwNewJavaException("java/lang/NullPointerException", "java.lang.NullPointerException"); + } + + result = getNativePointer(hybridData); } - // I'd like to use dynamic_cast here, but -fno-rtti is the default. - T* value = static_cast(hybridData->getNativePointer()); + // This would require some serious programmer error. - FBASSERTMSGF(value != 0, "Incorrect C++ type in hybrid field"); - return value; + FBASSERTMSGF(result != 0, "Incorrect C++ type in hybrid field"); + // I'd like to use dynamic_cast here, but -fno-rtti is the default. + return static_cast(result); }; template diff --git a/ReactAndroid/src/main/jni/first-party/fb/include/fb/fbjni/JWeakReference.h b/ReactAndroid/src/main/jni/first-party/fb/include/fb/fbjni/JWeakReference.h new file mode 100644 index 000000000000..aca55f2034a6 --- /dev/null +++ b/ReactAndroid/src/main/jni/first-party/fb/include/fb/fbjni/JWeakReference.h @@ -0,0 +1,37 @@ +// Copyright 2004-present Facebook. All Rights Reserved. + +#pragma once + +#include + +#include "CoreClasses.h" + +namespace facebook { +namespace jni { + +/** + * Wrap Java's WeakReference instead of using JNI WeakGlobalRefs. + * A WeakGlobalRef can yield a strong reference even after the object has been + * finalized. See comment in the djinni library. + * https://github.com/dropbox/djinni/blob/master/support-lib/jni/djinni_support.hpp + */ +template +class JWeakReference : public JavaClass> { + + typedef JavaClass> JavaBase_; + + public: + static constexpr const char* kJavaDescriptor = "Ljava/lang/ref/WeakReference;"; + + static local_ref> newInstance(alias_ref object) { + return JavaBase_::newInstance(static_ref_cast(object)); + } + + local_ref get() const { + static auto method = JavaBase_::javaClassStatic()->template getMethod("get"); + return static_ref_cast(method(JavaBase_::self())); + } +}; + +} +} diff --git a/ReactAndroid/src/main/jni/first-party/fb/include/fb/fbjni/Meta-inl.h b/ReactAndroid/src/main/jni/first-party/fb/include/fb/fbjni/Meta-inl.h index 45cf2d1bd802..05ecd237e89e 100644 --- a/ReactAndroid/src/main/jni/first-party/fb/include/fb/fbjni/Meta-inl.h +++ b/ReactAndroid/src/main/jni/first-party/fb/include/fb/fbjni/Meta-inl.h @@ -18,7 +18,7 @@ #include "Boxed.h" #if defined(__ANDROID__) -#include +# include #endif namespace facebook { @@ -72,12 +72,8 @@ inline bool needsSlowPath(alias_ref obj) { // So, when we detect that case we must use the safe, slow workaround. That is, // we resolve the method id to the corresponding java.lang.reflect.Method object // and make the call via it's invoke() method. - static auto android_sdk = ([] { - char sdk_version_str[PROP_VALUE_MAX]; - __system_property_get("ro.build.version.sdk", sdk_version_str); - return atoi(sdk_version_str); - })(); - static auto is_bad_android = android_sdk == 23; + static auto is_bad_android = build::Build::getAndroidSdk() == 23; + if (!is_bad_android) return false; static auto proxy_class = findClassStatic("java/lang/reflect/Proxy"); return obj->isInstanceOf(proxy_class); @@ -100,7 +96,7 @@ inline void JMethod::operator()(alias_ref self, Args... #pragma push_macro("DEFINE_PRIMITIVE_CALL") #undef DEFINE_PRIMITIVE_CALL -#define DEFINE_PRIMITIVE_CALL(TYPE, METHOD, CLASS) \ +#define DEFINE_PRIMITIVE_CALL(TYPE, METHOD) \ template \ inline TYPE JMethod::operator()(alias_ref self, Args... args) { \ const auto env = internal::getEnv(); \ @@ -112,14 +108,14 @@ inline TYPE JMethod::operator()(alias_ref self, Args... return result; \ } -DEFINE_PRIMITIVE_CALL(jboolean, Boolean, JBoolean) -DEFINE_PRIMITIVE_CALL(jbyte, Byte, JByte) -DEFINE_PRIMITIVE_CALL(jchar, Char, JCharacter) -DEFINE_PRIMITIVE_CALL(jshort, Short, JShort) -DEFINE_PRIMITIVE_CALL(jint, Int, JInteger) -DEFINE_PRIMITIVE_CALL(jlong, Long, JLong) -DEFINE_PRIMITIVE_CALL(jfloat, Float, JFloat) -DEFINE_PRIMITIVE_CALL(jdouble, Double, JDouble) +DEFINE_PRIMITIVE_CALL(jboolean, Boolean) +DEFINE_PRIMITIVE_CALL(jbyte, Byte) +DEFINE_PRIMITIVE_CALL(jchar, Char) +DEFINE_PRIMITIVE_CALL(jshort, Short) +DEFINE_PRIMITIVE_CALL(jint, Int) +DEFINE_PRIMITIVE_CALL(jlong, Long) +DEFINE_PRIMITIVE_CALL(jfloat, Float) +DEFINE_PRIMITIVE_CALL(jdouble, Double) #pragma pop_macro("DEFINE_PRIMITIVE_CALL") /// JMethod specialization for references that wraps the return value in a @ref local_ref diff --git a/ReactAndroid/src/main/jni/first-party/fb/include/fb/fbjni/MetaConvert.h b/ReactAndroid/src/main/jni/first-party/fb/include/fb/fbjni/MetaConvert.h index 33027c7e96b3..69d1babb5fc7 100644 --- a/ReactAndroid/src/main/jni/first-party/fb/include/fb/fbjni/MetaConvert.h +++ b/ReactAndroid/src/main/jni/first-party/fb/include/fb/fbjni/MetaConvert.h @@ -95,7 +95,21 @@ template struct Convert> { typedef JniType jniType; // No automatic synthesis of global_ref - static jniType toJniRet(global_ref t) { + static jniType toJniRet(global_ref&& t) { + // If this gets called, ownership the global_ref was passed in here. (It's + // probably a copy of a persistent global_ref made when a function was + // declared to return a global_ref, but it could moved out or otherwise not + // referenced elsewhere. Doesn't matter.) Either way, the only safe way + // to return it is to make a local_ref, release it, and return the + // underlying local jobject. + auto ret = make_local(t); + return ret.release(); + } + static jniType toJniRet(const global_ref& t) { + // If this gets called, the function was declared to return const&. We + // have a ref to a global_ref whose lifetime will exceed this call, so we + // can just get the underlying jobject and return it to java without + // needing to make a local_ref. return t.get(); } static jniType toCall(global_ref t) { diff --git a/ReactAndroid/src/main/jni/first-party/fb/include/fb/fbjni/ReferenceAllocators-inl.h b/ReactAndroid/src/main/jni/first-party/fb/include/fb/fbjni/ReferenceAllocators-inl.h index 9106dd2532a2..cd1be640d0d2 100644 --- a/ReactAndroid/src/main/jni/first-party/fb/include/fb/fbjni/ReferenceAllocators-inl.h +++ b/ReactAndroid/src/main/jni/first-party/fb/include/fb/fbjni/ReferenceAllocators-inl.h @@ -21,7 +21,8 @@ namespace internal { // Statistics mostly provided for test (only updated if FBJNI_DEBUG_REFS is defined) struct ReferenceStats { - std::atomic_uint locals_deleted, globals_deleted, weaks_deleted; + std::atomic_uint locals_created, globals_created, weaks_created, + locals_deleted, globals_deleted, weaks_deleted; void reset() noexcept; }; @@ -35,6 +36,9 @@ extern ReferenceStats g_reference_stats; inline jobject LocalReferenceAllocator::newReference(jobject original) const { internal::dbglog("Local new: %p", original); + #ifdef FBJNI_DEBUG_REFS + ++internal::g_reference_stats.locals_created; + #endif auto ref = internal::getEnv()->NewLocalRef(original); FACEBOOK_JNI_THROW_PENDING_EXCEPTION(); return ref; @@ -64,6 +68,9 @@ inline bool LocalReferenceAllocator::verifyReference(jobject reference) const no inline jobject GlobalReferenceAllocator::newReference(jobject original) const { internal::dbglog("Global new: %p", original); + #ifdef FBJNI_DEBUG_REFS + ++internal::g_reference_stats.globals_created; + #endif auto ref = internal::getEnv()->NewGlobalRef(original); FACEBOOK_JNI_THROW_PENDING_EXCEPTION(); return ref; @@ -93,6 +100,9 @@ inline bool GlobalReferenceAllocator::verifyReference(jobject reference) const n inline jobject WeakGlobalReferenceAllocator::newReference(jobject original) const { internal::dbglog("Weak global new: %p", original); + #ifdef FBJNI_DEBUG_REFS + ++internal::g_reference_stats.weaks_created; + #endif auto ref = internal::getEnv()->NewWeakGlobalRef(original); FACEBOOK_JNI_THROW_PENDING_EXCEPTION(); return ref; diff --git a/ReactAndroid/src/main/jni/first-party/fb/include/fb/fbjni/References-inl.h b/ReactAndroid/src/main/jni/first-party/fb/include/fb/fbjni/References-inl.h index f81a84325bfc..74a01e1843e8 100644 --- a/ReactAndroid/src/main/jni/first-party/fb/include/fb/fbjni/References-inl.h +++ b/ReactAndroid/src/main/jni/first-party/fb/include/fb/fbjni/References-inl.h @@ -486,22 +486,25 @@ template auto dynamic_ref_cast(const RefType& ref) -> enable_if_t(), decltype(static_ref_cast(ref))> { - if (! ref) { + if (!ref) { return decltype(static_ref_cast(ref))(); } - std::string target_class_name{jtype_traits::base_name()}; + static alias_ref target_class = findClassStatic(jtype_traits::base_name().c_str()); + if (!target_class) { + throwNewJavaException("java/lang/ClassCastException", + "Could not find class %s.", + jtype_traits::base_name().c_str()); - // If not found, will throw an exception. - alias_ref target_class = findClassStatic(target_class_name.c_str()); + } local_ref source_class = ref->getClass(); - if ( ! source_class->isAssignableFrom(target_class)) { + if (!target_class->isAssignableFrom(source_class)) { throwNewJavaException("java/lang/ClassCastException", "Tried to cast from %s to %s.", source_class->toString().c_str(), - target_class_name.c_str()); + jtype_traits::base_name().c_str()); } return static_ref_cast(ref); diff --git a/ReactAndroid/src/main/jni/first-party/fb/include/fb/fbjni/References.h b/ReactAndroid/src/main/jni/first-party/fb/include/fb/fbjni/References.h index 8795216a7960..796b80296771 100644 --- a/ReactAndroid/src/main/jni/first-party/fb/include/fb/fbjni/References.h +++ b/ReactAndroid/src/main/jni/first-party/fb/include/fb/fbjni/References.h @@ -340,7 +340,7 @@ class weak_ref : public base_owned_ref { : base_owned_ref{} {} /// Create a null reference - explicit weak_ref(std::nullptr_t) noexcept + /* implicit */ weak_ref(std::nullptr_t) noexcept : base_owned_ref{nullptr} {} /// Copy constructor (note creates a new reference) @@ -409,7 +409,7 @@ class basic_strong_ref : public base_owned_ref { : base_owned_ref{} {} /// Create a null reference - explicit basic_strong_ref(std::nullptr_t) noexcept + /* implicit */ basic_strong_ref(std::nullptr_t) noexcept : base_owned_ref{nullptr} {} /// Copy constructor (note creates a new reference) @@ -496,7 +496,7 @@ class alias_ref { alias_ref() noexcept; /// Create a null reference - alias_ref(std::nullptr_t) noexcept; + /* implicit */ alias_ref(std::nullptr_t) noexcept; /// Copy constructor alias_ref(const alias_ref& other) noexcept; diff --git a/ReactAndroid/src/main/jni/first-party/fb/include/fb/fbjni/Registration-inl.h b/ReactAndroid/src/main/jni/first-party/fb/include/fb/fbjni/Registration-inl.h index 9bcf21a26f54..f1db5733fe53 100644 --- a/ReactAndroid/src/main/jni/first-party/fb/include/fb/fbjni/Registration-inl.h +++ b/ReactAndroid/src/main/jni/first-party/fb/include/fb/fbjni/Registration-inl.h @@ -29,141 +29,104 @@ namespace detail { #define JNI_ENTRY_POINT #endif -// registration wrapper for legacy JNI-style functions - -template -inline NativeMethodWrapper* exceptionWrapJNIMethod(void (*)(JNIEnv*, C, Args... args)) { - struct funcWrapper { - JNI_ENTRY_POINT static void call(JNIEnv* env, jobject obj, Args... args) { - // Note that if func was declared noexcept, then both gcc and clang are smart - // enough to elide the try/catch. - try { - (*func)(env, static_cast(obj), args...); - } catch (...) { - translatePendingCppExceptionToJavaException(); - } - } - }; - - // This intentionally erases the real type; JNI will do it anyway - return reinterpret_cast(&(funcWrapper::call)); -} +template +struct CreateDefault { + static R create() { + return R{}; + } +}; + +template <> +struct CreateDefault { + static void create() {} +}; + +template +using Converter = Convert::type>; + +template +struct WrapForVoidReturn { + static typename Converter::jniType call(Args&&... args) { + return Converter::toJniRet(func(std::forward(args)...)); + } +}; + +template +struct WrapForVoidReturn { + static void call(Args&&... args) { + func(std::forward(args)...); + } +}; +// registration wrapper for legacy JNI-style functions template -inline NativeMethodWrapper* exceptionWrapJNIMethod(R (*)(JNIEnv*, C, Args... args)) { - struct funcWrapper { - JNI_ENTRY_POINT static R call(JNIEnv* env, jobject obj, Args... args) { - try { - return (*func)(env, static_cast>(obj), args...); - } catch (...) { - translatePendingCppExceptionToJavaException(); - return R{}; - } +struct BareJniWrapper { + JNI_ENTRY_POINT static R call(JNIEnv* env, jobject obj, Args... args) { + ThreadScope ts(env, internal::CacheEnvTag{}); + try { + return (*func)(env, static_cast>(obj), args...); + } catch (...) { + translatePendingCppExceptionToJavaException(); + return CreateDefault::create(); } - }; - - // This intentionally erases the real type; JNI will do it anyway - return reinterpret_cast(&(funcWrapper::call)); -} + } +}; // registration wrappers for functions, with autoconversion of arguments. +template +struct FunctionWrapper { + using jniRet = typename Converter::jniType; + JNI_ENTRY_POINT static jniRet call(JNIEnv* env, jobject obj, typename Converter::jniType... args) { + ThreadScope ts(env, internal::CacheEnvTag{}); + try { + return WrapForVoidReturn, Args...>::call( + static_cast>(obj), Converter::fromJni(args)...); + } catch (...) { + translatePendingCppExceptionToJavaException(); + return CreateDefault::create(); + } + } +}; -template -inline NativeMethodWrapper* exceptionWrapJNIMethod(void (*)(alias_ref, Args... args)) { - struct funcWrapper { - JNI_ENTRY_POINT static void call(JNIEnv*, jobject obj, - typename Convert::type>::jniType... args) { - try { - (*func)(static_cast>(obj), Convert::type>::fromJni(args)...); - } catch (...) { - translatePendingCppExceptionToJavaException(); - } +// registration wrappers for non-static methods, with autoconvertion of arguments. +template +struct MethodWrapper { + using jhybrid = typename C::jhybridobject; + static R dispatch(alias_ref ref, Args&&... args) { + try { + // This is usually a noop, but if the hybrid object is a + // base class of other classes which register JNI methods, + // this will get the right type for the registered method. + auto cobj = static_cast(ref->cthis()); + return (cobj->*method)(std::forward(args)...); + } catch (const std::exception& ex) { + C::mapException(ex); + throw; } - }; + } - // This intentionally erases the real type; JNI will do it anyway - return reinterpret_cast(&(funcWrapper::call)); -} + JNI_ENTRY_POINT static typename Converter::jniType call( + JNIEnv* env, jobject obj, typename Converter::jniType... args) { + return FunctionWrapper, Args&&...), dispatch, jhybrid, R, Args...>::call(env, obj, args...); + } +}; template -inline NativeMethodWrapper* exceptionWrapJNIMethod(R (*)(alias_ref, Args... args)) { - struct funcWrapper { - - JNI_ENTRY_POINT static typename Convert::type>::jniType call(JNIEnv*, jobject obj, - typename Convert::type>::jniType... args) { - try { - return Convert::type>::toJniRet( - (*func)(static_cast>(obj), Convert::type>::fromJni(args)...)); - } catch (...) { - using jniRet = typename Convert::type>::jniType; - translatePendingCppExceptionToJavaException(); - return jniRet{}; - } - } - }; - +inline NativeMethodWrapper* exceptionWrapJNIMethod(R (*)(JNIEnv*, C, Args... args)) { // This intentionally erases the real type; JNI will do it anyway - return reinterpret_cast(&(funcWrapper::call)); + return reinterpret_cast(&(BareJniWrapper::call)); } -// registration wrappers for non-static methods, with autoconvertion of arguments. - -template -inline NativeMethodWrapper* exceptionWrapJNIMethod(void (C::*method0)(Args... args)) { - struct funcWrapper { - JNI_ENTRY_POINT static void call(JNIEnv* env, jobject obj, - typename Convert::type>::jniType... args) { - try { - try { - auto aref = wrap_alias(static_cast(obj)); - // This is usually a noop, but if the hybrid object is a - // base class of other classes which register JNI methods, - // this will get the right type for the registered method. - auto cobj = static_cast(facebook::jni::cthis(aref)); - (cobj->*method)(Convert::type>::fromJni(args)...); - } catch (const std::exception& ex) { - C::mapException(ex); - throw; - } - } catch (...) { - translatePendingCppExceptionToJavaException(); - } - } - }; - +template +inline NativeMethodWrapper* exceptionWrapJNIMethod(R (*)(alias_ref, Args... args)) { // This intentionally erases the real type; JNI will do it anyway - return reinterpret_cast(&(funcWrapper::call)); + return reinterpret_cast(&(FunctionWrapper::call)); } template inline NativeMethodWrapper* exceptionWrapJNIMethod(R (C::*method0)(Args... args)) { - struct funcWrapper { - - JNI_ENTRY_POINT static typename Convert::type>::jniType call(JNIEnv* env, jobject obj, - typename Convert::type>::jniType... args) { - try { - try { - auto aref = wrap_alias(static_cast(obj)); - // This is usually a noop, but if the hybrid object is a - // base class of other classes which register JNI methods, - // this will get the right type for the registered method. - auto cobj = static_cast(facebook::jni::cthis(aref)); - return Convert::type>::toJniRet( - (cobj->*method)(Convert::type>::fromJni(args)...)); - } catch (const std::exception& ex) { - C::mapException(ex); - throw; - } - } catch (...) { - using jniRet = typename Convert::type>::jniType; - translatePendingCppExceptionToJavaException(); - return jniRet{}; - } - } - }; - // This intentionally erases the real type; JNI will do it anyway - return reinterpret_cast(&(funcWrapper::call)); + return reinterpret_cast(&(MethodWrapper::call)); } template diff --git a/ReactAndroid/src/main/jni/first-party/fb/include/fb/fbjni/Registration.h b/ReactAndroid/src/main/jni/first-party/fb/include/fb/fbjni/Registration.h index e690f96ba9a2..ecead9fff879 100644 --- a/ReactAndroid/src/main/jni/first-party/fb/include/fb/fbjni/Registration.h +++ b/ReactAndroid/src/main/jni/first-party/fb/include/fb/fbjni/Registration.h @@ -20,28 +20,14 @@ namespace detail { // This uses the real JNI function as a non-type template parameter to // cause a (static member) function to exist with the same signature, // but with try/catch exception translation. -template -NativeMethodWrapper* exceptionWrapJNIMethod(void (*func0)(JNIEnv*, jobject, Args... args)); - -// Same as above, but for non-void return types. template NativeMethodWrapper* exceptionWrapJNIMethod(R (*func0)(JNIEnv*, jobject, Args... args)); // Automatically wrap object argument, and don't take env explicitly. -template -NativeMethodWrapper* exceptionWrapJNIMethod(void (*func0)(alias_ref, Args... args)); - -// Automatically wrap object argument, and don't take env explicitly, -// non-void return type. template NativeMethodWrapper* exceptionWrapJNIMethod(R (*func0)(alias_ref, Args... args)); -// Extract C++ instance from object, and invoke given method on it. -template -NativeMethodWrapper* exceptionWrapJNIMethod(void (C::*method0)(Args... args)); - // Extract C++ instance from object, and invoke given method on it, -// non-void return type template NativeMethodWrapper* exceptionWrapJNIMethod(R (C::*method0)(Args... args)); diff --git a/ReactAndroid/src/main/jni/first-party/fb/include/jni/JniTerminateHandler.h b/ReactAndroid/src/main/jni/first-party/fb/include/jni/JniTerminateHandler.h new file mode 100644 index 000000000000..843f988d2c02 --- /dev/null +++ b/ReactAndroid/src/main/jni/first-party/fb/include/jni/JniTerminateHandler.h @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#pragma once + +#include + +namespace facebook { +namespace jni { + +void FBEXPORT installTerminateHandler(); +}}; diff --git a/ReactAndroid/src/main/jni/first-party/fb/include/jni/LocalString.h b/ReactAndroid/src/main/jni/first-party/fb/include/jni/LocalString.h index 7278fc848f8d..441cd8f45b5b 100644 --- a/ReactAndroid/src/main/jni/first-party/fb/include/jni/LocalString.h +++ b/ReactAndroid/src/main/jni/first-party/fb/include/jni/LocalString.h @@ -65,8 +65,10 @@ class JStringUtf16Extractor { JStringUtf16Extractor(JNIEnv* env, jstring javaString) : env_(env) , javaString_(javaString) + , length_(0) , utf16String_(nullptr) { if (env_ && javaString_) { + length_ = env_->GetStringLength(javaString_); utf16String_ = env_->GetStringCritical(javaString_, nullptr); } } @@ -77,13 +79,18 @@ class JStringUtf16Extractor { } } - operator const jchar* () const { + const jsize length() const { + return length_; + } + + const jchar* chars() const { return utf16String_; } private: JNIEnv* env_; jstring javaString_; + jsize length_; const jchar* utf16String_; }; diff --git a/ReactAndroid/src/main/jni/first-party/fb/jni/Environment.cpp b/ReactAndroid/src/main/jni/first-party/fb/jni/Environment.cpp index e8ea51dc0687..48060107e2bc 100644 --- a/ReactAndroid/src/main/jni/first-party/fb/jni/Environment.cpp +++ b/ReactAndroid/src/main/jni/first-party/fb/jni/Environment.cpp @@ -7,9 +7,7 @@ * of patent rights can be found in the PATENTS file in the same directory. */ -#include #include -#include #include #include #include @@ -21,99 +19,166 @@ namespace facebook { namespace jni { namespace { -StaticInitialized> g_env; -JavaVM* g_vm = nullptr; - -struct JThreadScopeSupport : JavaClass { - static auto constexpr kJavaDescriptor = "Lcom/facebook/jni/ThreadScopeSupport;"; - - // These reinterpret_casts are a totally dangerous pattern. Don't use them. Use HybridData instead. - static void runStdFunction(std::function&& func) { - static auto method = javaClassStatic()->getStaticMethod("runStdFunction"); - method(javaClassStatic(), reinterpret_cast(&func)); - } - static void runStdFunctionImpl(alias_ref, jlong ptr) { - (*reinterpret_cast*>(ptr))(); - } - - static void OnLoad() { - // We need the javaClassStatic so that the class lookup is cached and that - // runStdFunction can be called from a ThreadScope-attached thread. - javaClassStatic()->registerNatives({ - makeNativeMethod("runStdFunctionImpl", runStdFunctionImpl), - }); - } -}; +ThreadLocal& scopeStorage() { + // We don't want the ThreadLocal to delete the ThreadScopes. + static ThreadLocal scope([] (void*) {}); + return scope; } -/* static */ -JNIEnv* Environment::current() { - JNIEnv* env = g_env->get(); - if ((env == nullptr) && (g_vm != nullptr)) { - if (g_vm->GetEnv((void**) &env, JNI_VERSION_1_6) != JNI_OK) { - FBLOGE("Error retrieving JNI Environment, thread is probably not attached to JVM"); - // TODO(cjhopman): This should throw an exception. - env = nullptr; - } else { - g_env->reset(env); - } - } - return env; +ThreadScope* currentScope() { + return scopeStorage().get(); } -/* static */ -void Environment::detachCurrentThread() { - auto env = g_env->get(); - if (env) { - FBASSERT(g_vm); - g_vm->DetachCurrentThread(); - g_env->reset(); - } -} +JavaVM* g_vm = nullptr; struct EnvironmentInitializer { EnvironmentInitializer(JavaVM* vm) { FBASSERT(!g_vm); FBASSERT(vm); g_vm = vm; - g_env.initialize([] (void*) {}); } }; +int getEnv(JNIEnv** env) { + FBASSERT(g_vm); + // g_vm->GetEnv() might not clear the env* in failure cases. + *env = nullptr; + return g_vm->GetEnv((void**)env, JNI_VERSION_1_6); +} + +JNIEnv* attachCurrentThread() { + JavaVMAttachArgs args{JNI_VERSION_1_6, nullptr, nullptr}; + JNIEnv* env = nullptr; + auto result = g_vm->AttachCurrentThread(&env, &args); + FBASSERT(result == JNI_OK); + return env; +} +} + /* static */ void Environment::initialize(JavaVM* vm) { static EnvironmentInitializer init(vm); } +/* static */ +JNIEnv* Environment::current() { + auto scope = currentScope(); + if (scope && scope->env_) { + return scope->env_; + } + + JNIEnv* env; + if (getEnv(&env) != JNI_OK) { + // If there's a ThreadScope in the stack, we should be attached and able to + // retrieve a JNIEnv*. + FBASSERT(!scope); + + // TODO(cjhopman): this should probably be a hard failure, too. + FBLOGE("Unable to retrieve jni environment. Is the thread attached?"); + } + return env; +} + +/* static */ +void Environment::detachCurrentThread() { + FBASSERT(g_vm); + // The thread shouldn't be detached while a ThreadScope is in the stack. + FBASSERT(!currentScope()); + g_vm->DetachCurrentThread(); +} + /* static */ JNIEnv* Environment::ensureCurrentThreadIsAttached() { - auto env = g_env->get(); - if (!env) { - FBASSERT(g_vm); - g_vm->AttachCurrentThread(&env, nullptr); - g_env->reset(env); + auto scope = currentScope(); + if (scope && scope->env_) { + return scope->env_; } + + JNIEnv* env; + // We should be able to just get the JNIEnv* by just calling + // AttachCurrentThread, but the spec is unclear (and using getEnv is probably + // generally more reliable). + auto result = getEnv(&env); + // We don't know how to deal with anything other than JNI_OK or JNI_DETACHED. + FBASSERT(result == JNI_OK || result == JNI_EDETACHED); + if (result == JNI_EDETACHED) { + // The thread should not be detached while a ThreadScope is in the stack. + FBASSERT(!scope); + env = attachCurrentThread(); + } + FBASSERT(env); return env; } -ThreadScope::ThreadScope() - : attachedWithThisScope_(false) { - JNIEnv* env = nullptr; - if (g_vm->GetEnv((void**) &env, JNI_VERSION_1_6) != JNI_EDETACHED) { +ThreadScope::ThreadScope() : ThreadScope(nullptr, internal::CacheEnvTag{}) {} + +ThreadScope::ThreadScope(JNIEnv* env, internal::CacheEnvTag) + : previous_(nullptr), env_(nullptr), attachedWithThisScope_(false) { + auto& storage = scopeStorage(); + previous_ = storage.get(); + storage.reset(this); + + if (previous_ && previous_->env_) { + FBASSERT(!env || env == previous_->env_); + env = previous_->env_; + } + + env_ = env; + if (env_) { return; } - env = facebook::jni::Environment::ensureCurrentThreadIsAttached(); - FBASSERT(env); + + // Check if the thread is attached by someone else. + auto result = getEnv(&env); + if (result == JNI_OK) { + return; + } + + // We don't know how to deal with anything other than JNI_OK or JNI_DETACHED. + FBASSERT(result == JNI_EDETACHED); + + // If there's already a ThreadScope on the stack, then the thread should be attached. + FBASSERT(!previous_); + attachCurrentThread(); attachedWithThisScope_ = true; } ThreadScope::~ThreadScope() { + auto& storage = scopeStorage(); + // ThreadScopes should be destroyed in the reverse order they are created + // (that is, just put them on the stack). + FBASSERT(this == storage.get()); + storage.reset(previous_); if (attachedWithThisScope_) { Environment::detachCurrentThread(); } } +namespace { +struct JThreadScopeSupport : JavaClass { + static auto constexpr kJavaDescriptor = "Lcom/facebook/jni/ThreadScopeSupport;"; + + // These reinterpret_casts are a totally dangerous pattern. Don't use them. Use HybridData instead. + static void runStdFunction(std::function&& func) { + static auto method = javaClassStatic()->getStaticMethod("runStdFunction"); + method(javaClassStatic(), reinterpret_cast(&func)); + } + + static void runStdFunctionImpl(alias_ref, jlong ptr) { + (*reinterpret_cast*>(ptr))(); + } + + static void OnLoad() { + // We need the javaClassStatic so that the class lookup is cached and that + // runStdFunction can be called from a ThreadScope-attached thread. + javaClassStatic()->registerNatives({ + makeNativeMethod("runStdFunctionImpl", runStdFunctionImpl), + }); + } +}; +} + /* static */ void ThreadScope::OnLoad() { // These classes are required for ScopeWithClassLoader. Ensure they are looked up when loading. @@ -123,7 +188,8 @@ void ThreadScope::OnLoad() { /* static */ void ThreadScope::WithClassLoader(std::function&& runnable) { // TODO(cjhopman): If the classloader is already available in this scope, we - // shouldn't have to jump through java. + // shouldn't have to jump through java. It should be enough to check if the + // attach state env* is set. ThreadScope ts; JThreadScopeSupport::runStdFunction(std::move(runnable)); } diff --git a/ReactAndroid/src/main/jni/first-party/fb/jni/Exceptions.cpp b/ReactAndroid/src/main/jni/first-party/fb/jni/Exceptions.cpp index bfc99214a904..f8273e22229b 100644 --- a/ReactAndroid/src/main/jni/first-party/fb/jni/Exceptions.cpp +++ b/ReactAndroid/src/main/jni/first-party/fb/jni/Exceptions.cpp @@ -12,6 +12,11 @@ #include #include +#ifdef USE_LYRA +#include +#include +#endif + #include #include #include @@ -22,7 +27,6 @@ #include - namespace facebook { namespace jni { @@ -107,7 +111,13 @@ void setJavaExceptionAndAbortOnFailure(alias_ref throwable) { // Functions that throw C++ exceptions -// TODO(T6618159) Take a stack dump here to save context if it results in a crash when propagated +// TODO(T6618159) Inject the c++ stack into the exception's stack trace. One +// issue: when a java exception is created, it captures the full java stack +// across jni boundaries. lyra will only capture the c++ stack to the jni +// boundary. So, as we pass the java exception up to c++, we need to capture +// the c++ stack and then insert it into the correct place in the java stack +// trace. Then, as the exception propagates across the boundaries, we will +// slowly fill in the c++ parts of the trace. void throwPendingJniExceptionAsCppException() { JNIEnv* env = Environment::current(); if (env->ExceptionCheck() == JNI_FALSE) { @@ -151,82 +161,158 @@ void throwNewJavaException(const char* throwableName, const char* msg) { throwNewJavaException(throwable.get()); } +// jthrowable ////////////////////////////////////////////////////////////////////////////////////// + +local_ref JThrowable::initCause(alias_ref cause) { + static auto meth = javaClassStatic()->getMethod)>("initCause"); + return meth(self(), cause); +} + +auto JThrowable::getStackTrace() -> local_ref { + static auto meth = javaClassStatic()->getMethod("getStackTrace"); + return meth(self()); +} + +void JThrowable::setStackTrace(alias_ref stack) { + static auto meth = javaClassStatic()->getMethod)>("setStackTrace"); + return meth(self(), stack); +} + +auto JStackTraceElement::create( + const std::string& declaringClass, const std::string& methodName, const std::string& file, int line) + -> local_ref { + return newInstance(declaringClass, methodName, file, line); +} + // Translate C++ to Java Exception namespace { -// The implementation std::rethrow_if_nested uses a dynamic_cast to determine -// if the exception is a nested_exception. If the exception is from a library -// built with -fno-rtti, then that will crash. This avoids that. -void rethrow_if_nested() { +// For each exception in the chain of the exception_ptr argument, func +// will be called with that exception (in reverse order, i.e. innermost first). +#ifndef FBJNI_NO_EXCEPTION_PTR +void denest(const std::function& func, std::exception_ptr ptr) { + FBASSERT(ptr); try { - throw; + std::rethrow_exception(ptr); } catch (const std::nested_exception& e) { - e.rethrow_nested(); + denest(func, e.nested_ptr()); } catch (...) { + // ignored. + } + func(ptr); + } +#endif + +} // namespace + + +#ifdef USE_LYRA +local_ref createJStackTraceElement(const lyra::StackTraceElement& cpp) { + return JStackTraceElement::create( + "|lyra|{" + cpp.libraryName() + "}", cpp.functionName(), cpp.buildId(), cpp.libraryOffset()); +} +#endif + +#ifndef FBJNI_NO_EXCEPTION_PTR +void addCppStacktraceToJavaException(alias_ref java, std::exception_ptr cpp) { +#ifdef USE_LYRA + auto cppStack = lyra::getStackTraceSymbols( + (cpp == nullptr) ? + lyra::getStackTrace() + : lyra::getExceptionTrace(cpp)); + + auto javaStack = java->getStackTrace(); + auto newStack = JThrowable::JStackTrace::newArray(javaStack->size() + cppStack.size()); + size_t i = 0; + for (size_t j = 0; j < cppStack.size(); j++, i++) { + (*newStack)[i] = createJStackTraceElement(cppStack[j]); } + for (size_t j = 0; j < javaStack->size(); j++, i++) { + (*newStack)[i] = (*javaStack)[j]; + } + java->setStackTrace(newStack); +#endif } -// For each exception in the chain of the currently handled exception, func -// will be called with that exception as the currently handled exception (in -// reverse order, i.e. innermost first). -void denest(std::function func) { +local_ref convertCppExceptionToJavaException(std::exception_ptr ptr) { + FBASSERT(ptr); + local_ref current; + bool addCppStack = true; try { - throw; - } catch (const std::exception& e) { - try { - rethrow_if_nested(); - } catch (...) { - denest(func); - } - func(); + std::rethrow_exception(ptr); + addCppStack = false; + } catch (const JniException& ex) { + current = ex.getThrowable(); + } catch (const std::ios_base::failure& ex) { + current = JIOException::create(ex.what()); + } catch (const std::bad_alloc& ex) { + current = JOutOfMemoryError::create(ex.what()); + } catch (const std::out_of_range& ex) { + current = JArrayIndexOutOfBoundsException::create(ex.what()); + } catch (const std::system_error& ex) { + current = JCppSystemErrorException::create(ex); + } catch (const std::runtime_error& ex) { + current = JRuntimeException::create(ex.what()); + } catch (const std::exception& ex) { + current = JCppException::create(ex.what()); + } catch (const char* msg) { + current = JUnknownCppException::create(msg); } catch (...) { - func(); + current = JUnknownCppException::create(); } + + if (addCppStack) { + addCppStacktraceToJavaException(current, ptr); + } + return current; + } +#endif + +local_ref getJavaExceptionForCppBackTrace() { + return getJavaExceptionForCppBackTrace(nullptr); } + +local_ref getJavaExceptionForCppBackTrace(const char* msg) { + local_ref current = + msg ? JUnknownCppException::create(msg) : JUnknownCppException::create(); +#ifndef FBJNI_NO_EXCEPTION_PTR + addCppStacktraceToJavaException(current, nullptr); +#endif + return current; } -void translatePendingCppExceptionToJavaException() noexcept { + +#ifndef FBJNI_NO_EXCEPTION_PTR +local_ref getJavaExceptionForCppException(std::exception_ptr ptr) { + FBASSERT(ptr); local_ref previous; - auto func = [&previous] () { - local_ref current; - try { - throw; - } catch(const JniException& ex) { - current = ex.getThrowable(); - } catch(const std::ios_base::failure& ex) { - current = JIOException::create(ex.what()); - } catch(const std::bad_alloc& ex) { - current = JOutOfMemoryError::create(ex.what()); - } catch(const std::out_of_range& ex) { - current = JArrayIndexOutOfBoundsException::create(ex.what()); - } catch(const std::system_error& ex) { - current = JCppSystemErrorException::create(ex); - } catch(const std::runtime_error& ex) { - current = JRuntimeException::create(ex.what()); - } catch(const std::exception& ex) { - current = JCppException::create(ex.what()); - } catch(const char* msg) { - current = JUnknownCppException::create(msg); - } catch(...) { - current = JUnknownCppException::create(); - } + auto func = [&previous] (std::exception_ptr ptr) { + auto current = convertCppExceptionToJavaException(ptr); if (previous) { current->initCause(previous); } previous = current; }; + denest(func, ptr); + return previous; +} +#endif +void translatePendingCppExceptionToJavaException() { try { - denest(func); - setJavaExceptionAndAbortOnFailure(previous); - } catch (std::exception& e) { - FBLOGE("unexpected exception in translatePendingCppExceptionToJavaException: %s", e.what()); - // rethrow the exception and let the noexcept handling abort. - throw; +#ifndef FBJNI_NO_EXCEPTION_PTR + auto exc = getJavaExceptionForCppException(std::current_exception()); +#else + auto exc = JUnknownCppException::create(); +#endif + setJavaExceptionAndAbortOnFailure(exc); } catch (...) { - FBLOGE("unexpected exception in translatePendingCppExceptionToJavaException"); - throw; +#ifdef USE_LYRA + FBLOGE("Unexpected error in translatePendingCppExceptionToJavaException(): %s", + lyra::toString(std::current_exception()).c_str()); +#endif + std::terminate(); } } @@ -252,8 +338,13 @@ JniException::JniException(const JniException &rhs) } JniException::~JniException() { - ThreadScope ts; - throwable_.reset(); + try { + ThreadScope ts; + throwable_.reset(); + } catch (...) { + FBLOGE("Exception in ~JniException()"); + std::terminate(); + } } local_ref JniException::getThrowable() const noexcept { @@ -262,8 +353,8 @@ local_ref JniException::getThrowable() const noexcept { // TODO 6900503: consider making this thread-safe. void JniException::populateWhat() const noexcept { - ThreadScope ts; try { + ThreadScope ts; what_ = throwable_->toString(); isMessageExtracted_ = true; } catch(...) { diff --git a/ReactAndroid/src/main/jni/first-party/fb/jni/Hybrid.cpp b/ReactAndroid/src/main/jni/first-party/fb/jni/Hybrid.cpp index 811a7b8b48bc..9d7cdcbf16f6 100644 --- a/ReactAndroid/src/main/jni/first-party/fb/jni/Hybrid.cpp +++ b/ReactAndroid/src/main/jni/first-party/fb/jni/Hybrid.cpp @@ -15,35 +15,6 @@ namespace jni { namespace detail { -void HybridData::setNativePointer(std::unique_ptr new_value) { - static auto pointerField = getClass()->getField("mNativePointer"); - auto* old_value = reinterpret_cast(getFieldValue(pointerField)); - if (new_value) { - // Modify should only ever be called once with a non-null - // new_value. If this happens again it's a programmer error, so - // blow up. - FBASSERTMSGF(old_value == 0, "Attempt to set C++ native pointer twice"); - } else if (old_value == 0) { - return; - } - // delete on a null pointer is defined to be a noop. - delete old_value; - // This releases ownership from the unique_ptr, and passes the pointer, and - // ownership of it, to HybridData which is managed by the java GC. The - // finalizer on hybridData calls resetNative which will delete the object, if - // resetNative has not already been called. - setFieldValue(pointerField, reinterpret_cast(new_value.release())); -} - -BaseHybridClass* HybridData::getNativePointer() { - static auto pointerField = getClass()->getField("mNativePointer"); - auto* value = reinterpret_cast(getFieldValue(pointerField)); - if (!value) { - throwNewJavaException("java/lang/NullPointerException", "java.lang.NullPointerException"); - } - return value; -} - local_ref HybridData::create() { return newInstance(); } @@ -51,14 +22,14 @@ local_ref HybridData::create() { } namespace { -void resetNative(alias_ref jthis) { - jthis->setNativePointer(nullptr); +void deleteNative(alias_ref, jlong ptr) { + delete reinterpret_cast(ptr); } } void HybridDataOnLoad() { - registerNatives("com/facebook/jni/HybridData", { - makeNativeMethod("resetNative", resetNative), + registerNatives("com/facebook/jni/HybridData$Destructor", { + makeNativeMethod("deleteNative", deleteNative), }); } diff --git a/ReactAndroid/src/main/jni/first-party/fb/jni/LocalString.cpp b/ReactAndroid/src/main/jni/first-party/fb/jni/LocalString.cpp index 2e197f075983..6827ec282d19 100644 --- a/ReactAndroid/src/main/jni/first-party/fb/jni/LocalString.cpp +++ b/ReactAndroid/src/main/jni/first-party/fb/jni/LocalString.cpp @@ -305,8 +305,7 @@ LocalString::~LocalString() { std::string fromJString(JNIEnv* env, jstring str) { auto utf16String = JStringUtf16Extractor(env, str); - auto length = env->GetStringLength(str); - return detail::utf16toUTF8(utf16String, length); + return detail::utf16toUTF8(utf16String.chars(), utf16String.length()); } } } diff --git a/ReactAndroid/src/main/jni/first-party/fb/jni/NativeSoftError.cpp b/ReactAndroid/src/main/jni/first-party/fb/jni/NativeSoftError.cpp new file mode 100644 index 000000000000..fdbbccda347c --- /dev/null +++ b/ReactAndroid/src/main/jni/first-party/fb/jni/NativeSoftError.cpp @@ -0,0 +1,119 @@ +/* + * Copyright (c) 2016-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#include +#include +#include +#include +#include + +namespace facebook { +namespace jni { +namespace softerror { + +using facebook::jni::findClassStatic; +using facebook::jni::LocalString; + +static alias_ref softErrorClass_; + +bool checkSoftErrorClassRef() { + if (!softErrorClass_) { + softErrorClass_ = findClassStatic("com/facebook/jni/NativeSoftErrorReporterProxy"); + } + + return softErrorClass_ ? true : false; +} + +namespace { +void reportSoftErrorInternal( + Severity severity, + const char* category, + const char* error_msg, +#ifndef JNI_NO_EXCEPTION_PTR + std::exception_ptr cause, +#endif + unsigned int samplingFrequency) { + // Need to ensure we have access to our classes even in an unattached thread. + ThreadScope::WithClassLoader([&] { + if (!checkSoftErrorClassRef()) { + return; + } + + static auto softReport = + softErrorClass_->getStaticMethod("softReport"); + LocalString jstrCategory(category); + LocalString jstrErrorMsg(error_msg); + softReport(softErrorClass_, + severity, + jstrCategory.string(), + jstrErrorMsg.string(), +#ifndef JNI_NO_EXCEPTION_PTR + (cause == nullptr) ? getJavaExceptionForCppBackTrace().get() : getJavaExceptionForCppException(cause).get(), +#else + getJavaExceptionForCppBackTrace().get(), +#endif + samplingFrequency); + }); +} +} + +void reportSoftError( + Severity severity, + const char* category, + const char* error_msg, + unsigned int samplingFrequency) { + reportSoftErrorInternal( + severity, + category, + error_msg, +#ifndef JNI_NO_EXCEPTION_PTR + nullptr, +#endif + samplingFrequency); +} + +#ifndef JNI_NO_EXCEPTION_PTR +void FBEXPORT reportSoftError( + Severity severity, + const char* category, + const char* error_msg, + std::exception_ptr cause, + unsigned int samplingFrequency) { + + reportSoftErrorInternal( + severity, + category, + error_msg, + cause, + samplingFrequency); +} +#endif + +void generateNativeSoftError() { + reportSoftError(Severity::MUST_FIX, "SoftErrorTest_1", "Reporting MUST_FIX"); +#ifndef JNI_NO_EXCEPTION_PTR + reportSoftError( + Severity::WARNING, + "SoftErrorTest_2", + "Reporting WARNING with cause", + make_exception_ptr(std::invalid_argument("Fake exception"))); +#endif +} + +void SoftErrorOnLoad(JNIEnv* env) { + if(!checkSoftErrorClassRef()) { + return; + } + + registerNatives(env, softErrorClass_.get(), { + { "generateNativeSoftError", "()V", (void*) generateNativeSoftError } + }); +} + +} } } diff --git a/ReactAndroid/src/main/jni/first-party/fb/jni/android/CpuCapabilities.cpp b/ReactAndroid/src/main/jni/first-party/fb/jni/android/CpuCapabilities.cpp new file mode 100644 index 000000000000..f16fbeef6d93 --- /dev/null +++ b/ReactAndroid/src/main/jni/first-party/fb/jni/android/CpuCapabilities.cpp @@ -0,0 +1,70 @@ +// Copyright 2004-present Facebook. All Rights Reserved. + +#include +#include +#include +#include +#include + +namespace facebook { namespace jni { + +// ========================================= +// returns true if this device supports NEON calls, false otherwise +jboolean nativeDeviceSupportsNeon(JNIEnv* env, jobject obj) { + if (android_getCpuFamily() != ANDROID_CPU_FAMILY_ARM) { + VLOG(2) << "NEON disabled, not an ARM CPU"; + return false; + } + uint64_t cpufeatures = android_getCpuFeatures(); + if ((cpufeatures & ANDROID_CPU_ARM_FEATURE_ARMv7) == 0) { + VLOG(2) << "NEON disabled, not an ARMv7 CPU"; + return false; + } + if ((cpufeatures & ANDROID_CPU_ARM_FEATURE_NEON) == 0) { + VLOG(2) << "NEON disabled, not supported"; + return false; + } + + VLOG(2) << "NEON supported and enabled"; + return true; +} + +// ========================================= +// returns true if this device supports VFP_FP16, false otherwise. +jboolean nativeDeviceSupportsVFPFP16(JNIEnv *env, jobject obj) { + uint64_t cpufeatures = android_getCpuFeatures(); + if ((cpufeatures & ANDROID_CPU_ARM_FEATURE_VFP_FP16) == 0) { + VLOG(2) << "VPF_FP16 disabled, not supported"; + return false; + } + VLOG(2) << "VFP_FP16 supported and enabled"; + return true; +} + +// ========================================= +// returns true if this device is x86 based, false otherwise +jboolean nativeDeviceSupportsX86(JNIEnv* env, jobject obj) { + return (android_getCpuFamily() == ANDROID_CPU_FAMILY_X86); +} + +// ========================================= +// register native methods +void initialize_cpucapabilities() { + facebook::jni::registerNatives( + Environment::current(), + "com/facebook/jni/CpuCapabilitiesJni", + { + { "nativeDeviceSupportsNeon", + "()Z", + (void*) nativeDeviceSupportsNeon }, + { "nativeDeviceSupportsVFPFP16", + "()Z", + (void*) nativeDeviceSupportsVFPFP16 }, + { "nativeDeviceSupportsX86", + "()Z", + (void*) nativeDeviceSupportsX86 }, + } + ); +} + +} } // namespace facebook::jni diff --git a/ReactAndroid/src/main/jni/first-party/fb/jni/android/ReferenceChecking.cpp b/ReactAndroid/src/main/jni/first-party/fb/jni/android/ReferenceChecking.cpp new file mode 100644 index 000000000000..9893db41d3a9 --- /dev/null +++ b/ReactAndroid/src/main/jni/first-party/fb/jni/android/ReferenceChecking.cpp @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#ifndef __ANDROID__ +#error "This file should only be compiled for Android." +#endif + +#include +#include + +namespace facebook { +namespace jni { +namespace internal { + +static int32_t getApiLevel() { + auto cls = findClassLocal("android/os/Build$VERSION"); + auto fld = cls->getStaticField("SDK_INT"); + if (fld) { + return cls->getStaticFieldValue(fld); + } + return 0; +} + +bool doesGetObjectRefTypeWork() { + static auto level = getApiLevel(); + return level >= 14; +} + +} +} +} diff --git a/ReactAndroid/src/main/jni/first-party/fb/jni/fbjni.cpp b/ReactAndroid/src/main/jni/first-party/fb/jni/fbjni.cpp index de9423c20192..62e27a75657a 100644 --- a/ReactAndroid/src/main/jni/first-party/fb/jni/fbjni.cpp +++ b/ReactAndroid/src/main/jni/first-party/fb/jni/fbjni.cpp @@ -60,9 +60,9 @@ alias_ref findClassStatic(const char* name) { if (!env) { throw std::runtime_error("Unable to retrieve JNIEnv*."); } - auto cls = env->FindClass(name); + local_ref cls = adopt_local(env->FindClass(name)); FACEBOOK_JNI_THROW_EXCEPTION_IF(!cls); - auto leaking_ref = (jclass)env->NewGlobalRef(cls); + auto leaking_ref = (jclass)env->NewGlobalRef(cls.get()); FACEBOOK_JNI_THROW_EXCEPTION_IF(!leaking_ref); return wrap_alias(leaking_ref); } @@ -83,8 +83,7 @@ local_ref findClassLocal(const char* name) { std::string JString::toStdString() const { const auto env = internal::getEnv(); auto utf16String = JStringUtf16Extractor(env, self()); - auto length = env->GetStringLength(self()); - return detail::utf16toUTF8(utf16String, length); + return detail::utf16toUTF8(utf16String.chars(), utf16String.length()); } local_ref make_jstring(const char* utf8) { diff --git a/ReactAndroid/src/main/jni/first-party/fb/jni/java/BUCK b/ReactAndroid/src/main/jni/first-party/fb/jni/java/BUCK new file mode 100644 index 000000000000..cd59e63e4a30 --- /dev/null +++ b/ReactAndroid/src/main/jni/first-party/fb/jni/java/BUCK @@ -0,0 +1,8 @@ +java_library( + name = "java", + srcs = glob(["**/*.java"]), + visibility = ["PUBLIC"], + deps = [ + "//java/com/facebook/proguard/annotations:annotations", + ], +) From 74a70fea97ddddb430346bd4b9b7e83a29616abc Mon Sep 17 00:00:00 2001 From: Pieter De Baets Date: Fri, 19 May 2017 04:04:30 -0700 Subject: [PATCH 0148/1101] Add some helper methods to JStackTraceElement Reviewed By: mhorowitz Differential Revision: D5069764 fbshipit-source-id: e2073ab824c357b28e00838abc768d402905207d --- .../fb/include/fb/fbjni/CoreClasses.h | 7 ++++++- .../jni/first-party/fb/jni/Exceptions.cpp | 20 +++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/ReactAndroid/src/main/jni/first-party/fb/include/fb/fbjni/CoreClasses.h b/ReactAndroid/src/main/jni/first-party/fb/include/fb/fbjni/CoreClasses.h index 1ee5bb005eb3..76eecb87b1c1 100644 --- a/ReactAndroid/src/main/jni/first-party/fb/include/fb/fbjni/CoreClasses.h +++ b/ReactAndroid/src/main/jni/first-party/fb/include/fb/fbjni/CoreClasses.h @@ -557,10 +557,15 @@ class PinnedPrimitiveArray { friend class JPrimitiveArray::array_type>; }; -struct JStackTraceElement : JavaClass { +struct FBEXPORT JStackTraceElement : JavaClass { static auto constexpr kJavaDescriptor = "Ljava/lang/StackTraceElement;"; static local_ref create(const std::string& declaringClass, const std::string& methodName, const std::string& file, int line); + + std::string getClassName() const; + std::string getMethodName() const; + std::string getFileName() const; + int getLineNumber() const; }; /// Wrapper to provide functionality to jthrowable references diff --git a/ReactAndroid/src/main/jni/first-party/fb/jni/Exceptions.cpp b/ReactAndroid/src/main/jni/first-party/fb/jni/Exceptions.cpp index f8273e22229b..3dca10b76a75 100644 --- a/ReactAndroid/src/main/jni/first-party/fb/jni/Exceptions.cpp +++ b/ReactAndroid/src/main/jni/first-party/fb/jni/Exceptions.cpp @@ -184,6 +184,26 @@ auto JStackTraceElement::create( return newInstance(declaringClass, methodName, file, line); } +std::string JStackTraceElement::getClassName() const { + static auto meth = javaClassStatic()->getMethod()>("getClassName"); + return meth(self())->toStdString(); +} + +std::string JStackTraceElement::getMethodName() const { + static auto meth = javaClassStatic()->getMethod()>("getMethodName"); + return meth(self())->toStdString(); +} + +std::string JStackTraceElement::getFileName() const { + static auto meth = javaClassStatic()->getMethod()>("getFileName"); + return meth(self())->toStdString(); +} + +int JStackTraceElement::getLineNumber() const { + static auto meth = javaClassStatic()->getMethod("getLineNumber"); + return meth(self()); +} + // Translate C++ to Java Exception namespace { From eb9e4d4d116fd18089a59ccceda3c32fc7833e2a Mon Sep 17 00:00:00 2001 From: Jean Lauliac Date: Fri, 19 May 2017 04:28:55 -0700 Subject: [PATCH 0149/1101] packager: ResolutionRequest: factor error handling in resolution Reviewed By: davidaurelio Differential Revision: D5086995 fbshipit-source-id: a377c86b64c3ae458a12937d9302ac0cf69854d4 --- .../DependencyGraph/ResolutionRequest.js | 115 ++++++++++++------ 1 file changed, 77 insertions(+), 38 deletions(-) diff --git a/packager/src/node-haste/DependencyGraph/ResolutionRequest.js b/packager/src/node-haste/DependencyGraph/ResolutionRequest.js index da674da3ba80..bf010ec9c269 100644 --- a/packager/src/node-haste/DependencyGraph/ResolutionRequest.js +++ b/packager/src/node-haste/DependencyGraph/ResolutionRequest.js @@ -91,6 +91,19 @@ type Options = {| +sourceExts: Array, |}; +/** + * This is a way to describe what files we tried to look for when resolving + * a module name as file. This is mainly used for error reporting, so that + * we can explain why we cannot resolve a module. + */ +type FileCandidates = + // We only tried to resolve a specific asset. + | {|+type: 'asset', +name: string|} + // We attempted to resolve a name as being a source file (ex. JavaScript, + // JSON...), in which case there can be several variants we tried, for + // example `foo.ios.js`, `foo.js`, etc. + | {|+type: 'sources', +fileNames: $ReadOnlyArray|}; + /** * It may not be a great pattern to leverage exception just for "trying" things * out, notably for performance. We should consider replacing these functions @@ -433,7 +446,12 @@ class ResolutionRequest { path.relative(packageName, realModuleName), ); return tryResolveSync( - () => this._loadAsFile(potentialModulePath, fromModule, toModuleName), + () => + this._loadAsFileOrThrow( + potentialModulePath, + fromModule, + toModuleName, + ), () => this._loadAsDir(potentialModulePath, fromModule, toModuleName), ); } @@ -463,7 +481,7 @@ class ResolutionRequest { potentialModulePath, ); if (realModuleName === false) { - return this._loadAsFile( + return this._loadAsFileOrThrow( ResolutionRequest.EMPTY_MODULE, fromModule, toModuleName, @@ -471,7 +489,7 @@ class ResolutionRequest { } return tryResolveSync( - () => this._loadAsFile(realModuleName, fromModule, toModuleName), + () => this._loadAsFileOrThrow(realModuleName, fromModule, toModuleName), () => this._loadAsDir(realModuleName, fromModule, toModuleName), ); } @@ -483,7 +501,7 @@ class ResolutionRequest { const realModuleName = this._redirectRequire(fromModule, toModuleName); // exclude if (realModuleName === false) { - return this._loadAsFile( + return this._loadAsFileOrThrow( ResolutionRequest.EMPTY_MODULE, fromModule, toModuleName, @@ -567,7 +585,7 @@ class ResolutionRequest { ): ?TModule { try { return tryResolveSync( - () => this._loadAsFile(searchPath, fromModule, toModuleName), + () => this._loadAsFileOrThrow(searchPath, fromModule, toModuleName), () => this._loadAsDir(searchPath, fromModule, toModuleName), ); } catch (error) { @@ -578,53 +596,74 @@ class ResolutionRequest { } } - _loadAsFile( - basepath: string, + /** + * Eventually we'd like to remove all the exception being throw in the middle + * of the resolution algorithm, instead keeping track of tentatives in a + * specific data structure, and building a proper error at the top-level. + * This function is meant to be a temporary proxy for _loadAsFile until + * the callsites switch to that tracking structure. + */ + _loadAsFileOrThrow( + basePath: string, fromModule: TModule, toModule: string, ): TModule { - if (this._options.helpers.isAssetFile(basepath)) { - return this._loadAsAssetFile(basepath, fromModule, toModule); + const dirPath = path.dirname(basePath); + const fileNameHint = path.basename(basePath); + const candidates = []; + const result = this._loadAsFile(dirPath, fileNameHint, candidates); + if (result != null) { + return result; + } + const [candidate] = candidates; + invariant(candidate != null, 'missing file candidate'); + if (candidate.type === 'asset') { + const msg = + `Directory \`${dirPath}' doesn't contain asset ` + + `\`${candidate.name}'`; + throw new UnableToResolveError(fromModule, toModule, msg); + } + invariant(candidate.type === 'sources', 'invalid candidate type'); + const msg = + `Could not resolve the base path \`${basePath}' into a module. The ` + + `folder \`${dirPath}' was searched for one of these files: ` + + candidate.fileNames.map(filePath => `\`${filePath}'`).join(', ') + + '.'; + throw new UnableToResolveError(fromModule, toModule, msg); + } + + _loadAsFile( + dirPath: string, + fileNameHint: string, + candidates: Array, + ): ?TModule { + if (this._options.helpers.isAssetFile(fileNameHint)) { + const result = this._loadAsAssetFile(dirPath, fileNameHint); + if (result != null) { + return result; + } + candidates.push({type: 'asset', name: fileNameHint}); + return null; } - const dirPath = path.dirname(basepath); const doesFileExist = this._doesFileExist; const resolver = new FileNameResolver({doesFileExist, dirPath}); - const fileNamePrefix = path.basename(basepath); - const fileName = this._tryToResolveAllFileNames(resolver, fileNamePrefix); + const fileName = this._tryToResolveAllFileNames(resolver, fileNameHint); if (fileName != null) { return this._options.moduleCache.getModule(path.join(dirPath, fileName)); } - throw new UnableToResolveError( - fromModule, - toModule, - `Could not resolve the base path \`${basepath}' into a module. The ` + - `folder \`${dirPath}' was searched for one of these files: ` + - resolver - .getTentativeFileNames() - .map(filePath => `\`${filePath}'`) - .join(', ') + - '.', - ); + const fileNames = resolver.getTentativeFileNames(); + candidates.push({type: 'sources', fileNames}); + return null; } - _loadAsAssetFile( - potentialModulePath: string, - fromModule: TModule, - toModule: string, - ): TModule { - const dirPath = path.dirname(potentialModulePath); - const baseName = path.basename(potentialModulePath); - const assetNames = this._options.resolveAsset(dirPath, baseName); + _loadAsAssetFile(dirPath: string, fileNameHint: string): ?TModule { + const assetNames = this._options.resolveAsset(dirPath, fileNameHint); const assetName = getArrayLowestItem(assetNames); if (assetName != null) { const assetPath = path.join(dirPath, assetName); return this._options.moduleCache.getAssetModule(assetPath); } - throw new UnableToResolveError( - fromModule, - toModule, - `Directory \`${dirPath}' doesn't contain asset \`${baseName}'`, - ); + return null; } /** @@ -692,12 +731,12 @@ class ResolutionRequest { .getPackage(packageJsonPath) .getMain(); return tryResolveSync( - () => this._loadAsFile(main, fromModule, toModule), + () => this._loadAsFileOrThrow(main, fromModule, toModule), () => this._loadAsDir(main, fromModule, toModule), ); } - return this._loadAsFile( + return this._loadAsFileOrThrow( path.join(potentialDirPath, 'index'), fromModule, toModule, From f98518c5f950a680aee278fd6c21ac67f4710fb9 Mon Sep 17 00:00:00 2001 From: Pieter De Baets Date: Fri, 19 May 2017 07:05:33 -0700 Subject: [PATCH 0150/1101] Add setPropertyAtIndex Reviewed By: mhorowitz Differential Revision: D5069708 fbshipit-source-id: f81542f9d752ff53acf3fb9d96bf71e60acecac3 --- ReactCommon/jschelpers/JSCWrapper.h | 1 + ReactCommon/jschelpers/JavaScriptCore.h | 1 + ReactCommon/jschelpers/Value.cpp | 25 +++++++++++++-------- ReactCommon/jschelpers/Value.h | 9 ++++---- ReactCommon/jschelpers/systemJSCWrapper.cpp | 1 + 5 files changed, 24 insertions(+), 13 deletions(-) diff --git a/ReactCommon/jschelpers/JSCWrapper.h b/ReactCommon/jschelpers/JSCWrapper.h index 97fb661f7eb4..aa405378411c 100644 --- a/ReactCommon/jschelpers/JSCWrapper.h +++ b/ReactCommon/jschelpers/JSCWrapper.h @@ -101,6 +101,7 @@ struct JSCWrapper { JSC_WRAPPER_METHOD(JSObjectMakeFunctionWithCallback); JSC_WRAPPER_METHOD(JSObjectSetPrivate); JSC_WRAPPER_METHOD(JSObjectSetProperty); + JSC_WRAPPER_METHOD(JSObjectSetPropertyAtIndex); // JSPropertyNameArray JSC_WRAPPER_METHOD(JSObjectCopyPropertyNames); diff --git a/ReactCommon/jschelpers/JavaScriptCore.h b/ReactCommon/jschelpers/JavaScriptCore.h index f0e4423ff6be..737cf828c256 100644 --- a/ReactCommon/jschelpers/JavaScriptCore.h +++ b/ReactCommon/jschelpers/JavaScriptCore.h @@ -146,6 +146,7 @@ jsc_poison(JSClassCreate JSClassRelease JSClassRetain) #define JSC_JSObjectMakeFunctionWithCallback(...) __jsc_wrapper(JSObjectMakeFunctionWithCallback, __VA_ARGS__) #define JSC_JSObjectSetPrivate(...) __jsc_bool_wrapper(JSObjectSetPrivate, __VA_ARGS__) #define JSC_JSObjectSetProperty(...) __jsc_wrapper(JSObjectSetProperty, __VA_ARGS__) +#define JSC_JSObjectSetPropertyAtIndex(...) __jsc_wrapper(JSObjectSetPropertyAtIndex, __VA_ARGS__) jsc_poison(JSObjectCallAsConstructor JSObjectCallAsFunction JSObjectDeleteProperty JSObjectGetPrivate JSObjectGetProperty JSObjectGetPropertyAtIndex diff --git a/ReactCommon/jschelpers/Value.cpp b/ReactCommon/jschelpers/Value.cpp index b228da367129..7f00ea973289 100644 --- a/ReactCommon/jschelpers/Value.cpp +++ b/ReactCommon/jschelpers/Value.cpp @@ -59,7 +59,7 @@ Value Value::fromJSON(JSContextRef ctx, const String& json) { return Value(ctx, result); } -JSValueRef Value::fromDynamic(JSContextRef ctx, const folly::dynamic& value) { +Value Value::fromDynamic(JSContextRef ctx, const folly::dynamic& value) { // JavaScriptCore's iOS APIs have their own version of this direct conversion. // In addition, using this requires exposing some of JSC's private APIs, // so it's limited to non-apple platforms and to builds that use the custom JSC. @@ -75,7 +75,7 @@ JSValueRef Value::fromDynamic(JSContextRef ctx, const folly::dynamic& value) { JSValueRef jsVal = Value::fromDynamicInner(ctx, value); JSUnlock(ctx); JSResumeGarbageCollection(ctx, deferGC); - return jsVal; + return Value(ctx, jsVal); #else auto json = folly::toJson(value); return fromJSON(ctx, String(ctx, json.c_str())); @@ -140,9 +140,7 @@ Object Value::asObject() { std::string exceptionText = Value(m_context, exn).toString().str(); throwJSExecutionException("Failed to convert to object: %s", exceptionText.c_str()); } - Object ret = Object(context(), jsObj); - m_value = nullptr; - return ret; + return Object(context(), jsObj); } Value Value::makeError(JSContextRef ctx, const char *error) @@ -207,7 +205,7 @@ Value Object::getProperty(const String& propName) const { return Value(m_context, property); } -Value Object::getPropertyAtIndex(unsigned index) const { +Value Object::getPropertyAtIndex(unsigned int index) const { JSValueRef exn; JSValueRef property = JSC_JSObjectGetPropertyAtIndex(m_context, m_obj, index, &exn); if (!property) { @@ -221,8 +219,8 @@ Value Object::getProperty(const char *propName) const { return getProperty(String(m_context, propName)); } -void Object::setProperty(const String& propName, const Value& value) const { - JSValueRef exn = NULL; +void Object::setProperty(const String& propName, const Value& value) { + JSValueRef exn = nullptr; JSC_JSObjectSetProperty(m_context, m_obj, propName, value, kJSPropertyAttributeNone, &exn); if (exn) { std::string exceptionText = Value(m_context, exn).toString().str(); @@ -230,7 +228,16 @@ void Object::setProperty(const String& propName, const Value& value) const { } } -void Object::setProperty(const char *propName, const Value& value) const { +void Object::setPropertyAtIndex(unsigned int index, const Value& value) { + JSValueRef exn = nullptr; + JSC_JSObjectSetPropertyAtIndex(m_context, m_obj, index, value, &exn); + if (exn) { + std::string exceptionText = Value(m_context, exn).toString().str(); + throwJSExecutionException("Failed to set property: %s", exceptionText.c_str()); + } +} + +void Object::setProperty(const char *propName, const Value& value) { setProperty(String(m_context, propName), value); } diff --git a/ReactCommon/jschelpers/Value.h b/ReactCommon/jschelpers/Value.h index ad9e81e04e7b..d90cedee3ad0 100644 --- a/ReactCommon/jschelpers/Value.h +++ b/ReactCommon/jschelpers/Value.h @@ -201,9 +201,10 @@ class Object : public noncopyable { Value getProperty(const String& propName) const; Value getProperty(const char *propName) const; - Value getPropertyAtIndex(unsigned index) const; - void setProperty(const String& propName, const Value& value) const; - void setProperty(const char *propName, const Value& value) const; + Value getPropertyAtIndex(unsigned int index) const; + void setProperty(const String& propName, const Value& value); + void setProperty(const char *propName, const Value& value); + void setPropertyAtIndex(unsigned int index, const Value& value); std::vector getPropertyNames() const; std::unordered_map toJSONMap() const; @@ -334,7 +335,7 @@ class Value : public noncopyable { __attribute__((visibility("default"))) std::string toJSONString(unsigned indent = 0) const; __attribute__((visibility("default"))) static Value fromJSON(JSContextRef ctx, const String& json); - __attribute__((visibility("default"))) static JSValueRef fromDynamic(JSContextRef ctx, const folly::dynamic& value); + __attribute__((visibility("default"))) static Value fromDynamic(JSContextRef ctx, const folly::dynamic& value); __attribute__((visibility("default"))) JSContextRef context() const; protected: JSContextRef m_context; diff --git a/ReactCommon/jschelpers/systemJSCWrapper.cpp b/ReactCommon/jschelpers/systemJSCWrapper.cpp index a36124838925..142726bcd662 100644 --- a/ReactCommon/jschelpers/systemJSCWrapper.cpp +++ b/ReactCommon/jschelpers/systemJSCWrapper.cpp @@ -93,6 +93,7 @@ const JSCWrapper* systemJSCWrapper() { .JSObjectMakeFunctionWithCallback = JSObjectMakeFunctionWithCallback, .JSObjectSetPrivate = JSObjectSetPrivate, .JSObjectSetProperty = JSObjectSetProperty, + .JSObjectSetPropertyAtIndex = JSObjectSetPropertyAtIndex, .JSObjectCopyPropertyNames = JSObjectCopyPropertyNames, .JSPropertyNameArrayGetCount = JSPropertyNameArrayGetCount, From 8d60605a9087ae9044d369bd70251a7d58621927 Mon Sep 17 00:00:00 2001 From: David Aurelio Date: Fri, 19 May 2017 07:26:20 -0700 Subject: [PATCH 0151/1101] Add `"node"` env to packager `.eslintrc` Reviewed By: cpojer Differential Revision: D5094630 fbshipit-source-id: 6ecb97da78d6cd5b7f61d1b2073d31309ded0932 --- packager/.eslintrc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packager/.eslintrc b/packager/.eslintrc index b3702489b390..6f2bcc4db65a 100644 --- a/packager/.eslintrc +++ b/packager/.eslintrc @@ -3,5 +3,8 @@ "extra-arrow-initializer": 0, "no-alert": 0, "no-console-disallow": 0 + }, + "env": { + "node": true } } From 3f176008e82edbe51b40854b87064ae313a393cb Mon Sep 17 00:00:00 2001 From: David Aurelio Date: Fri, 19 May 2017 07:52:22 -0700 Subject: [PATCH 0152/1101] Separate build modules from require calls when bundling Summary: separates modules of the dependency graph from the generated require calls to kick of the app. This is required to make RAM bundle generation work properly' Reviewed By: jeanlauliac Differential Revision: D5094635 fbshipit-source-id: fca69a3e2d9b030cdc4d4405c2b5e795b0d55f87 --- .../src/ModuleGraph/output/as-plain-bundle.js | 71 +++++++++++-------- packager/src/ModuleGraph/types.flow.js | 9 +-- 2 files changed, 47 insertions(+), 33 deletions(-) diff --git a/packager/src/ModuleGraph/output/as-plain-bundle.js b/packager/src/ModuleGraph/output/as-plain-bundle.js index dd403e8520bf..b2a2427c8ac6 100644 --- a/packager/src/ModuleGraph/output/as-plain-bundle.js +++ b/packager/src/ModuleGraph/output/as-plain-bundle.js @@ -17,41 +17,54 @@ const {addModuleIdsToModuleWrapper} = require('./util'); import type {OutputFn} from '../types.flow'; -module.exports = ( - (modules, filename, idForPath, sourceMapPath) => { - let code = ''; - let line = 0; - const sections = []; - - for (const module of modules) { - const {file} = module; - const moduleCode = file.type === 'module' - ? addModuleIdsToModuleWrapper(module, idForPath) - : file.code; - - code += moduleCode + '\n'; - if (file.map) { - sections.push({ - map: file.map, - offset: {column: 0, line}, - }); - } - line += countLines(moduleCode); - } +function asPlainBundle({ + filename, + idForPath, + modules, + requireCalls, + sourceMapPath, +}) { + let code = ''; + let line = 0; + const sections = []; + + for (const module of concat(modules, requireCalls)) { + const {file} = module; + const moduleCode = file.type === 'module' + ? addModuleIdsToModuleWrapper(module, idForPath) + : file.code; - if (sourceMapPath) { - code += `/*# sourceMappingURL=${sourceMapPath}*/`; + code += moduleCode + '\n'; + if (file.map) { + sections.push({ + map: file.map, + offset: {column: 0, line}, + }); } + line += countLines(moduleCode); + } - return { - code, - extraFiles: [[`${filename}.meta`, meta(code)]], - map: createIndexMap({file: filename, sections}), - }; - }: OutputFn); + if (sourceMapPath) { + code += `/*# sourceMappingURL=${sourceMapPath}*/`; + } + + return { + code, + extraFiles: [[`${filename}.meta`, meta(code)]], + map: createIndexMap({file: filename, sections}), + }; +} + +module.exports = (asPlainBundle: OutputFn); const reLine = /^/gm; function countLines(string: string): number { //$FlowFixMe This regular expression always matches return string.match(reLine).length; } + +function* concat(...iterables: Array>): Iterable { + for (const it of iterables) { + yield* it; + } +} diff --git a/packager/src/ModuleGraph/types.flow.js b/packager/src/ModuleGraph/types.flow.js index ed70ff68d0aa..da283a7acad9 100644 --- a/packager/src/ModuleGraph/types.flow.js +++ b/packager/src/ModuleGraph/types.flow.js @@ -70,16 +70,17 @@ export type Module = {| file: File, |}; -export type OutputFn = ( - modules: Iterable, +export type OutputFn = ({| filename: string, idForPath: IdForPathFn, + modules: Iterable, + requireCalls: Iterable, sourceMapPath?: string, -) => OutputResult; +|}) => OutputResult; type OutputResult = {| code: string | Buffer, - extraFiles: Iterable<[string, string | Buffer]>, + extraFiles?: Iterable<[string, string | Buffer]>, map: SourceMap, |}; From f085d2bac06136d189eb4cf19a39187961d0e252 Mon Sep 17 00:00:00 2001 From: Valentin Shergin Date: Fri, 19 May 2017 11:34:41 -0700 Subject: [PATCH 0153/1101] Fixed small bag in computing contentSize of TextInput Reviewed By: AaaChiuuu Differential Revision: D5091491 fbshipit-source-id: ece8ac30b930aafc32a7994057d305025e4b032e --- .../facebook/react/views/textinput/ReactTextInputManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java b/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java index 036e74fcce6b..758fd1674b66 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java @@ -695,7 +695,7 @@ public void onTextChanged(CharSequence s, int start, int before, int count) { contentWidth = mEditText.getCompoundPaddingLeft() + mEditText.getLayout().getWidth() + mEditText.getCompoundPaddingRight(); contentHeight = mEditText.getCompoundPaddingTop() + mEditText.getLayout().getHeight() + - mEditText.getCompoundPaddingTop(); + mEditText.getCompoundPaddingBottom(); } // The event that contains the event counter and updates it must be sent first. From 225c4c0a988a0fe97a7f70f249c708b6daf61784 Mon Sep 17 00:00:00 2001 From: David Aurelio Date: Fri, 19 May 2017 13:44:52 -0700 Subject: [PATCH 0154/1101] Change `sourceMappingURL` to line comment Summary: Changes the `sourceMappingURL` comment from multi line to single line. Reviewed By: johnislarry Differential Revision: D5094791 fbshipit-source-id: f8fa2efd7f173290cac985564c06b4a118a80aae --- packager/src/ModuleGraph/output/as-plain-bundle.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packager/src/ModuleGraph/output/as-plain-bundle.js b/packager/src/ModuleGraph/output/as-plain-bundle.js index b2a2427c8ac6..9c1bf99ecdc1 100644 --- a/packager/src/ModuleGraph/output/as-plain-bundle.js +++ b/packager/src/ModuleGraph/output/as-plain-bundle.js @@ -45,7 +45,7 @@ function asPlainBundle({ } if (sourceMapPath) { - code += `/*# sourceMappingURL=${sourceMapPath}*/`; + code += `//# sourceMappingURL=${sourceMapPath}`; } return { From 2f71270569ab88517fd4db63be67d5e488677a68 Mon Sep 17 00:00:00 2001 From: Sebastian Bargmann Date: Fri, 19 May 2017 14:40:36 -0700 Subject: [PATCH 0155/1101] Run packager.sh using '.' instead of 'source'. Summary: 'source' is not available in all shells on Linux (e.g. dash) and will silently fail launchPackager.command when called from runAndroid.js. react-native run-android will thus silently fail to start the developement server ('JS server'). What existing problem does the pull request solve? When running "react-native run-android" on the below reasonably vanilla Ubuntu system, the development server / packager script fails to start. It fails because sh defaults to dash (not bash) which doesn't know the command 'source'. dot (.) does the same as source, but works in all shells. $ uname -a Linux dallas 4.8.0-52-generic #55~16.04.1-Ubuntu SMP Fri Apr 28 14:36:29 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux $ which sh /bin/sh $ readlink -f /bin/sh /bin/dash react-native-cli: 2.0.1 react-native: 0.44.0 $ ps aux | grep packager (nothing) ps aux | grep packager sh /home/xxx/code/react-native/AwesomeProject/node_modules/react-native/packager/launchPackager.command node /home/xxx/code/react-native/AwesomeProject/node_modules/react-native/packager/../local-cli/cli.js start Closes https://github.com/facebook/react-native/pull/14040 Differential Revision: D5096298 Pulled By: hramos fbshipit-source-id: 88466e802c9bc4358840391edb37e153f0a6b1f7 --- packager/launchPackager.command | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packager/launchPackager.command b/packager/launchPackager.command index cbeefec4a235..9e12272a6156 100755 --- a/packager/launchPackager.command +++ b/packager/launchPackager.command @@ -13,7 +13,7 @@ clear THIS_DIR=$(dirname "$0") pushd "$THIS_DIR/.." -source packager/packager.sh +. packager/packager.sh popd echo "Process terminated. Press to close the window" From 2bf512b58ca4d317fd25aae348fca16114ec6498 Mon Sep 17 00:00:00 2001 From: Hector Ramos Date: Fri, 19 May 2017 14:42:52 -0700 Subject: [PATCH 0156/1101] Add tabs to Getting Started and update Android Studio steps Summary: There are two ways to get started with React Native: using CRNA, or by building native code. The latter requires a set of dependencies that also need to be installed even by people who use CRNA if they have ejected. There needs to be a clear demarcation between the two approaches as well as clear instructions as to which steps are of interest to CRNA using parties or people adding RN to an existing app. Separating the two approaches entirely by using tabs can achieve this purpose. Built and tested the website on Chrome on macOS. Have not yet tested other browsers or OS configurations. ![screencapture-localhost-8079-react-native-docs-getting-started-html-1494974542733](https://cloud.githubusercontent.com/assets/165856/26131374/77258b0c-3a4e-11e7-9a17-074610ca33d1.png) ![screencapture-localhost-8079-react-native-docs-getting-started-html-1494974580882](https://cloud.githubusercontent.com/assets/165856/26131370/73806990-3a4e-11e7-9e67-73c519b050da.png) This is a work in progress. Feedback is appreciated. I am not yet happy with the different sets of tabs/buttons, for example. Closes https://github.com/facebook/react-native/pull/14005 Differential Revision: D5096426 Pulled By: hramos fbshipit-source-id: cdbf19b148ec87f2f2dfdced345084d0bbff4c26 --- docs/GettingStarted.md | 492 +++++++++++------- .../src/react-native/img/AVDManagerMacOS.png | Bin 0 -> 21869 bytes .../react-native/img/AVDManagerWindows.png | Bin 0 -> 17856 bytes .../img/AdministratorCommandPrompt.png | Bin 0 -> 14701 bytes .../img/AndroidSDKManagerInstallsMacOS.png | Bin 48470 -> 55751 bytes .../img/AndroidSDKManagerMacOS.png | Bin 284454 -> 168951 bytes .../img/AndroidSDKManagerSDKToolsMacOS.png | Bin 309465 -> 153719 bytes .../img/AndroidStudioCustomSetup.png | Bin 0 -> 16552 bytes .../img/AndroidStudioWelcomeMacOS.png | Bin 0 -> 66437 bytes .../img/AndroidStudioWelcomeWindows.png | Bin 0 -> 56493 bytes .../react-native/img/AndroidSuccessMacOS.png | Bin 48336 -> 62381 bytes website/src/react-native/img/CreateAVD.png | Bin 86956 -> 0 bytes .../src/react-native/img/CreateAVDMacOS.png | Bin 0 -> 96908 bytes .../src/react-native/img/CreateAVDWindows.png | Bin 0 -> 23941 bytes .../react-native/img/CreateAVDx86MacOS.png | Bin 0 -> 565647 bytes .../react-native/img/CreateAVDx86Windows.png | Bin 0 -> 74554 bytes .../img/react-native-tools-avd.png | Bin 5547 -> 4455 bytes 17 files changed, 309 insertions(+), 183 deletions(-) create mode 100644 website/src/react-native/img/AVDManagerMacOS.png create mode 100644 website/src/react-native/img/AVDManagerWindows.png create mode 100644 website/src/react-native/img/AdministratorCommandPrompt.png create mode 100644 website/src/react-native/img/AndroidStudioCustomSetup.png create mode 100644 website/src/react-native/img/AndroidStudioWelcomeMacOS.png create mode 100644 website/src/react-native/img/AndroidStudioWelcomeWindows.png delete mode 100644 website/src/react-native/img/CreateAVD.png create mode 100644 website/src/react-native/img/CreateAVDMacOS.png create mode 100644 website/src/react-native/img/CreateAVDWindows.png create mode 100644 website/src/react-native/img/CreateAVDx86MacOS.png create mode 100644 website/src/react-native/img/CreateAVDx86Windows.png diff --git a/docs/GettingStarted.md b/docs/GettingStarted.md index 959cd1ece89e..7fb22ab92863 100644 --- a/docs/GettingStarted.md +++ b/docs/GettingStarted.md @@ -7,120 +7,201 @@ permalink: docs/getting-started.html next: tutorial --- -Welcome to React Native! This page will help you install React Native on -your system, so that you can build apps with it right away. If you already -have React Native installed, you can skip ahead to the -[Tutorial](docs/tutorial.html). + + +This page will help you install and build your first React Native app. If you already have React Native installed, you can skip ahead to the [Tutorial](docs/tutorial.html). -## Quick Start +
      +
        + + +
      +
      -[Create React Native App](https://github.com/react-community/create-react-native-app) is the easiest way to start building a new React Native application. It allows you to start a project without installing or configuring any tools to build native code. + -No Xcode or Android Studio installation is required. Assuming that you have Node installed, you can run the following commands to create a new React Native project called "AwesomeProject": +[Create React Native App](https://github.com/react-community/create-react-native-app) is the easiest way to start building a new React Native application. It allows you to start a project without installing or configuring any tools to build native code - no Xcode or Android Studio installation required (see [Caveats](docs/getting-started.html#caveats)). + +Assuming that you have [Node](https://nodejs.org/en/download/) installed, you can use npm to install the `create-react-native-app` command line utility: ``` npm install -g create-react-native-app +``` + +Then run the following commands to create a new React Native project called "AwesomeProject": + +``` create-react-native-app AwesomeProject + cd AwesomeProject npm start ``` This will start a development server for you, and print a QR code in your terminal. -Install the [Expo](https://expo.io) client app on your iOS or Android phone, make sure your phone is on the same network as your computer, and scan the QR code in your terminal to open your project. Create React Native App also has a [user guide](https://github.com/react-community/create-react-native-app/blob/master/react-native-scripts/template/README.md) you can reference if you have questions specific to the tool. +## Running your React Native application -Once you've created your project and opened it in the Expo client app, you can proceed to the [Tutorial](docs/tutorial.html). +Install the [Expo](https://expo.io) client app on your iOS or Android phone and connect to the same wireless network as your computer. Using the Expo app, scan the QR code from your terminal to open your project. -### Caveats +### Modifying your app + +Now that you have successfully run the app, let's modify it. Open `App.js` in your text editor of choice and edit some lines. The application should reload automatically once you save your changes. -The Expo client app usually releases about 1 week after any given React Native release, and Create React Native App always provides the latest version of React Native which is supported by the Expo client. You can check [this document](https://github.com/react-community/create-react-native-app/blob/master/VERSIONS.md) to find out what versions are supported. +### That's it! -Because you don't build any native code with Create React Native App, it's not possible to include custom native modules beyond the React Native APIs and components that are available in the Expo client app. +Congratulations! You've successfully run and modified your first React Native app. -If you know that you'll eventually need to include your own native code, Create React Native App is still a good way to get started. In that case you'll just need to "[eject](https://github.com/react-community/create-react-native-app/blob/master/react-native-scripts/template/README.md#ejecting-from-create-react-native-app)" eventually to create your own native builds. If you do eject, the native build instructions below will be required to continue working on your project. +
      -If you're integrating React Native into an existing project, you'll want to skip Create React Native App and go directly to setting up the native build environment. See below for instructions on configuring a native build environment for React Native. +## Now what? -
      +- If you're curious to learn more about React Native, continue on +to the [Tutorial](docs/tutorial.html). -## Building Projects with Native Code +- Create React Native App also has a [user guide](https://github.com/react-community/create-react-native-app/blob/master/react-native-scripts/template/README.md) you can reference if you have questions specific to the tool. -Follow these instructions if you need to build native code in your project. For example, if you "ejected" from Create React Native app, or if you are integrating React Native into an existing application, you'll need this section. +- If you can't get this to work, see the [Troubleshooting](https://github.com/react-community/create-react-native-app/blob/master/react-native-scripts/template/README.md#troubleshooting) section in the README for Create React Native App. + +### Caveats + +Because you don't build any native code when using Create React Native App to create a project, it's not possible to include custom native modules beyond the React Native APIs and components that are available in the Expo client app. + +If you know that you'll eventually need to include your own native code, Create React Native App is still a good way to get started. In that case you'll just need to "[eject](https://github.com/react-community/create-react-native-app/blob/master/react-native-scripts/template/README.md#ejecting-from-create-react-native-app)" eventually to create your own native builds. If you do eject, the "Building Projects with Native Code" instructions will be required to continue working on your project. + +If you're integrating React Native into an existing project, you'll want to skip Create React Native App and go directly to setting up the native build environment. Select "Building Projects with Native Code" above for instructions on configuring a native build environment for React Native. + + + +
      The instructions are a bit different depending on your development operating system, and whether you want to start developing for iOS or Android. If you want to develop for both iOS and Android, that's fine - you just have to pick one to start with, since the setup is a bit different.
      - - Mobile OS: - iOS - Android -
      Development OS: macOS - Linux Windows + Linux + Target OS: + iOS + Android
      - + ## Unsupported -
      Unfortunately, Apple only lets you develop for iOS on a Mac. If you want to build an iOS app but you don't have a Mac yet, you can try starting with the Android instructions instead.
      - -
      +

      A Mac is required to build projects with native code for iOS. You can follow the Quick Start to learn how to build your app using Create React Native App instead.

      - + -## Installing Dependencies +## Installing dependencies You will need Node, Watchman, the React Native command line interface, and Xcode. - +While you can use any editor of your choice to develop your app, you will need to install Xcode in order to set up the necessary tooling to build your React Native app for iOS. -## Installing Dependencies + + +## Installing dependencies You will need Node, Watchman, the React Native command line interface, a JDK, and Android Studio. - + -## Installing Dependencies +## Installing dependencies You will need Node, the React Native command line interface, a JDK, and Android Studio. - + -## Installing Dependencies +## Installing dependencies You will need Node, the React Native command line interface, Python2, a JDK, and Android Studio. - + + +While you can use any editor of your choice to develop your app, you will need to install Android Studio in order to set up the necessary tooling to build your React Native app for Android. + + ### Node, Watchman @@ -135,21 +216,21 @@ If you have already installed Node on your system, make sure it is version 4 or [Watchman](https://facebook.github.io/watchman) is a tool by Facebook for watching changes in the filesystem. It is highly recommended you install it for better performance. - + ### Node -Follow the [installation instructions for your Linux distribution](https://nodejs.org/en/download/package-manager/) to install Node 4 or newer. +Follow the [installation instructions for your Linux distribution](https://nodejs.org/en/download/package-manager/) to install Node 6 or newer. - + ### Node, Python2, JDK We recommend installing Node and Python2 via [Chocolatey](https://chocolatey.org), a popular package manager for Windows. -Android Studio, which we will install next, requires a recent version of the [Java SE Development Kit (JDK)](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) which can be installed using Chocolatey. +React Native also requires a recent version of the [Java SE Development Kit (JDK)](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html), as well as Python 2. Both can be installed using Chocolatey. -Open a Command Prompt as Administrator, then run: +Open an Administrator Command Prompt (right click Command Prompt and select "Run as Administrator"), then run the following commands: ``` choco install nodejs.install @@ -159,9 +240,9 @@ choco install jdk8 If you have already installed Node on your system, make sure it is version 4 or newer. If you already have a JDK on your system, make sure it is version 8 or newer. -> You can find additional installation options on [Node.js's Downloads page](https://nodejs.org/en/download/). +> You can find additional installation options on [Node's Downloads page](https://nodejs.org/en/download/). - + ### The React Native CLI @@ -175,13 +256,13 @@ npm install -g react-native-cli > If you get an error like `Cannot find module 'npmlog'`, try installing npm directly: `curl -0 -L https://npmjs.org/install.sh | sudo sh`. - + ### The React Native CLI Node comes with npm, which lets you install the React Native command line interface. -Run the following command in a Terminal: +Run the following command in a Command Prompt or shell: ``` npm install -g react-native-cli @@ -189,7 +270,7 @@ npm install -g react-native-cli > If you get an error like `Cannot find module 'npmlog'`, try installing npm directly: `curl -0 -L https://npmjs.org/install.sh | sudo sh`. - + ### Xcode @@ -197,58 +278,66 @@ The easiest way to install Xcode is via the [Mac App Store](https://itunes.apple If you have already installed Xcode on your system, make sure it is version 8 or higher. +#### Command Line Tools + You will also need to install the Xcode Command Line Tools. Open Xcode, then choose "Preferences..." from the Xcode menu. Go to the Locations panel and install the tools by selecting the most recent version in the Command Line Tools dropdown. ![Xcode Command Line Tools](img/XcodeCommandLineTools.png) - + -### Android Development Environment +### Java Development Kit -Setting up your development environment can be somewhat tedious if you're new to Android development. If you're already familiar with Android development, there are a few things you may need to configure. In either case, please make sure to carefully follow the next few steps. +React Native requires a recent version of the Java SE Development Kit (JDK). [Download and install JDK 8 or newer](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) if needed. + + - +### Android development environment -> Android Studio requires a recent version of the [Java SE Development Kit (JDK)](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html). Go ahead and install JDK 8 or newer if needed. +Setting up your development environment can be somewhat tedious if you're new to Android development. If you're already familiar with Android development, there are a few things you may need to configure. In either case, please make sure to carefully follow the next few steps. - + #### 1. Install Android Studio -Android Studio provides the Android SDK and Android Virtual Device (emulator) required to run and test your React Native apps. Download and install [Android Studio](https://developer.android.com/studio/index.html). - -Once the installation process is completed, launch Android Studio. Choose "Custom" when prompted to select an installation type. Make sure the boxes next to all of the following are checked: +[Download and install Android Studio](https://developer.android.com/studio/index.html). Choose a "Custom" setup when prompted to select an installation type. Make sure the boxes next to all of the following are checked: - + - `Android SDK` - `Android SDK Platform` - `Performance (Intel ® HAXM)` - `Android Virtual Device` -Then, click "Next" to install all of these components. - - + - `Android SDK` - `Android SDK Platform` - `Android Virtual Device` -Click "Next" to install all of these components, then [configure VM acceleration](https://developer.android.com/studio/run/emulator-acceleration.html#vm-linux) on your system. + + +Then, click "Next" to install all of these components. + +> If the checkboxes are grayed out, you will have a chance to install these components later on. - +Once setup has finalized and you're presented with the Welcome screen, proceed to the next step. -> You may also install Intel ® HAXM by following [these instructions](https://software.intel.com/en-us/android/articles/installation-instructions-for-intel-hardware-accelerated-execution-manager-windows). +#### 2. Install the Android SDK - +Android Studio installs the latest Android SDK by default. Building a React Native app with native code, however, requires the `Android 6.0 (Marshmallow)` SDK in particular. Additional Android SDKs can be installed through the SDK Manager in Android Studio. -> You may also install Intel ® HAXM by following [these instructions](https://software.intel.com/en-us/android/articles/installation-instructions-for-intel-hardware-accelerated-execution-manager-mac-os-x). +The SDK Manager can be accessed from the "Welcome to Android Studio" screen. Click on "Configure", then select "SDK Manager". - + -#### 2. Install the Android 6.0 (Marshmallow) SDK +![Android Studio Welcome](img/AndroidStudioWelcomeMacOS.png) -Android Studio installs the most recent Android SDK by default. React Native, however, requires the `Android 6.0 (Marshmallow)` SDK. You can use the SDK Manager to install additional SDK platforms. To access the SDK Manager, click on "Configure", then select "SDK Manager" from the "Welcome to Android Studio" screen. + + +![Android Studio Welcome](img/AndroidStudioWelcomeWindows.png) + + > The SDK Manager can also be found within the Android Studio "Preferences" dialog, under **Appearance & Behavior** → **System Settings** → **Android SDK**. @@ -259,45 +348,45 @@ Select the "SDK Platforms" tab from within the SDK Manager, then check the box n - `Intel x86 Atom_64 System Image` - `Google APIs Intel x86 Atom_64 System Image` - + ![Android SDK Manager](img/AndroidSDKManagerMacOS.png) - + ![Android SDK Manager](img/AndroidSDKManagerWindows.png) - + Next, select the "SDK Tools" tab and check the box next to "Show Package Details" here as well. Look for and expand the "Android SDK Build-Tools" entry, then make sure that `23.0.1` is selected. - + ![Android SDK Manager - 23.0.1 Build Tools](img/AndroidSDKManagerSDKToolsMacOS.png) - + ![Android SDK Manager - 23.0.1 Build Tools](img/AndroidSDKManagerSDKToolsWindows.png) - + Finally, click "Apply" to download and install the Android SDK and related build tools. - + ![Android SDK Manager - Installs](img/AndroidSDKManagerInstallsMacOS.png) - + ![Android SDK Manager - Installs](img/AndroidSDKManagerInstallsWindows.png) - + #### 3. Set up the ANDROID_HOME environment variable -The React Native command line interface requires the `ANDROID_HOME` environment variable to be set up. +The React Native tools require some environment variables to be set up in order to build apps with native code. - + Add the following lines to your `~/.profile` (or equivalent) config file: @@ -311,7 +400,7 @@ Type `source ~/.profile` to load the config into your current shell. > Please make sure you export the correct path for `ANDROID_HOME`. If you installed the Android SDK using Homebrew, it would be located at `/usr/local/opt/android-sdk`. You can find the actual location of the SDK in the Android Studio "Preferences" dialog, under **Appearance & Behavior** → **System Settings** → **Android SDK**. - + Add the following lines to your `~/.profile` (or equivalent) config file: @@ -321,21 +410,27 @@ export PATH=${PATH}:${ANDROID_HOME}/tools export PATH=${PATH}:${ANDROID_HOME}/platform-tools ``` -Type `source ~/.profile` to load the config into your current shell. +Type `. ~/.profile` to load the config into your current shell. > Please make sure you export the correct path for `ANDROID_HOME` if you did not install the Android SDK using Android Studio. You can find the actual location of the SDK in the Android Studio "Preferences" dialog, under **Appearance & Behavior** → **System Settings** → **Android SDK**. - + -Open the System pane under **System and Security** in the Control Panel, then click on **Change settings...**. Open the **Advanced** tab and click on **Environment Variables...**. Click on **New...** to create a new `ANDROID_HOME` user variable that points to the path to your Android SDK. +Open the System pane under **System and Security** in the Control Panel, then click on **Change settings...**. Open the **Advanced** tab and click on **Environment Variables...**. Click on **New...** to create a new `ANDROID_HOME` user variable that points to the path to your Android SDK: ![ANDROID_HOME Environment Variable](img/AndroidEnvironmentVariableANDROID_HOME.png) +The SDK is installed, by default, at the following location: + +``` +c:\Users\YOUR_USERNAME\AppData\Local\Android\Sdk +``` + You can find the actual location of the SDK in the Android Studio "Preferences" dialog, under **Appearance & Behavior** → **System Settings** → **Android SDK**. -Open a new Command Prompt window to ensure the new environment variable is loaded. +Open a new Command Prompt window to ensure the new environment variable is loaded before proceeding to the next step. - + ### Watchman (optional) @@ -344,134 +439,162 @@ Follow the [Watchman installation guide](https://facebook.github.io/watchman/doc > [Watchman](https://facebook.github.io/watchman/docs/install.html) is a tool by Facebook for watching changes in the filesystem. It is highly recommended you install it for better performance, but it's alright to skip this if you find the process to be tedious. - + -## Starting the Android Virtual Device +## Creating a new application -You can see the list of available AVDs by opening the "AVD Manager" from within Android Studio: +Use the React Native command line interface to generate a new React Native project called "AwesomeProject": -![Android Studio AVD Manager](img/react-native-tools-avd.png) +``` +react-native init AwesomeProject +``` - +This is not necessary if you are integrating React Native into an existing application, if you "ejected" from Create React Native App, or if you're adding iOS support to an existing React Native project (see [Platform Specific Code](docs/platform-specific-code.html)). -Launch the default AVD before proceeding to the next step. + - +## Creating a new application -Once in the "AVD Manager", select your AVD and click "Edit...". Choose "Android 6.0 - API Level 23" under Device, and "Intel Atom (x86_64)" under CPU/ABI. Click OK, then select your new AVD and click "Start...", and finally, "Launch". +Use the React Native command line interface to generate a new React Native project called "AwesomeProject": -![Android AVD Configuration](img/AndroidAVDConfiguration.png) +``` +react-native init AwesomeProject +``` - +This is not necessary if you are integrating React Native into an existing application, if you "ejected" from Create React Native App, or if you're adding Android support to an existing React Native project (see [Platform Specific Code](docs/platform-specific-code.html)). -> It is very common to run into an issue where Android Studio fails to create a default AVD. You may follow the [Android Studio User Guide](https://developer.android.com/studio/run/managing-avds.html) to create a new AVD manually if needed. + -### Using a real device +## Preparing the Android device -If you have a physical Android device, you can use it for development in place of an AVD. Plug it in to your computer using a USB cable and [enable USB debugging](https://developer.android.com/training/basics/firstapp/running-app.html) before proceeding to the next step. +You will need an Android device to run your React Native Android app. This can be either a physical Android device, or more commonly, you can use an Android Virtual Device which allows you to emulate an Android device on your computer. - +Either way, you will need to prepare the device to run Android apps for development. -## Testing your React Native Installation +### Using a physical device - +If you have a physical Android device, you can use it for development in place of an AVD by plugging it in to your computer using a USB cable and [enabling USB debugging](https://developer.android.com/training/basics/firstapp/running-app.html). You can then proceed to the next step. -Use the React Native command line interface to generate a new React Native project called "AwesomeProject", then run `react-native run-ios` inside the newly created folder. +### Using a virtual device -``` -# skip this first command if you ejected from Create React Native App -react-native init AwesomeProject -cd AwesomeProject -react-native run-ios -``` +You can see the list of available Android Virtual Devices (AVDs) by opening the "AVD Manager" from within Android Studio. Look for an icon that looks like this: -You should see your new app running in the iOS Simulator shortly. +![Android Studio AVD Manager](img/react-native-tools-avd.png) -![AwesomeProject on iOS](img/iOSSuccess.png) +If you have just installed Android Studio, you will likely need to [create a new AVD](https://developer.android.com/studio/run/managing-avds.html). Select "Create Virtual Device...", then pick any Phone from the list and click "Next". -`react-native run-ios` is just one way to run your app. You can also run it directly from within Xcode or [Nuclide](https://nuclide.io/). + - +![Android Studio AVD Manager](img/CreateAVDWindows.png) -Use the React Native command line interface to generate a new React Native project called "AwesomeProject", then run `react-native run-android` inside the newly created folder: + -``` -# skip this first command if you ejected from Create React Native App -react-native init AwesomeProject -cd AwesomeProject -react-native run-android -``` +![Android Studio AVD Manager](img/CreateAVDMacOS.png) -If everything is set up correctly, you should see your new app running in your Android emulator shortly. + -![AwesomeProject on Android](img/AndroidSuccessMacOS.png) +Select the "x86 Images" tab, then look for the **Marshmallow** API Level 23, x86_64 ABI image with a Android 6.0 (Google APIs) target. -`react-native run-android` is just one way to run your app - you can also run it directly from within Android Studio or [Nuclide](https://nuclide.io/). + - +> We recommend configuring [VM acceleration](https://developer.android.com/studio/run/emulator-acceleration.html#vm-linux) on your system to improve performance. Once you've followed those instructions, go back to the AVD Manager. -### Modifying your app + -Now that you have successfully run the app, let's modify it. +![Install HAXM](img/CreateAVDx86Windows.png) - +> If you don't have HAXM installed, click on "Install HAXM" or follow [these instructions](https://software.intel.com/en-us/android/articles/installation-instructions-for-intel-hardware-accelerated-execution-manager-windows) to set it up, then go back to the AVD Manager. -- Open `index.ios.js` in your text editor of choice and edit some lines. -- Hit `Command⌘ + R` in your iOS Simulator to reload the app and see your change! +![AVD List](img/AVDManagerWindows.png) - + -- Open `index.android.js` in your text editor of choice and edit some lines. -- Press the `R` key twice or select `Reload` from the Developer Menu to see your change! +![Install HAXM](img/CreateAVDx86MacOS.png) - +> If you don't have HAXM installed, follow [these instructions](https://software.intel.com/en-us/android/articles/installation-instructions-for-intel-hardware-accelerated-execution-manager-mac-os-x) to set it up, then go back to the AVD Manager. -### That's it! +![AVD List](img/AVDManagerMacOS.png) -Congratulations! You've successfully run and modified your first React Native app. + -
      +Click "Next" then "Finish" to create your AVD. At this point you should be able to click on the green triangle button next to your AVD to launch it, then proceed to the next step. - + -## Testing your React Native Installation +## Running your React Native application -Use the React Native command line interface to generate a new React Native project called "AwesomeProject", then run `react-native run-android` inside the newly created folder: +Run `react-native run-ios` inside your React Native project folder: ``` -# skip this first command if you ejected from Create React Native App -react-native init AwesomeProject cd AwesomeProject -react-native run-android +react-native run-ios ``` - +You should see your new app running in the iOS Simulator shortly. -## Testing your React Native Installation +![AwesomeProject on iOS](img/iOSSuccess.png) + +`react-native run-ios` is just one way to run your app. You can also run it directly from within Xcode or [Nuclide](https://nuclide.io/). + + + +## Running your React Native application -Use the React Native command line interface to generate a new React Native project called "AwesomeProject", then run `react-native run-android` inside the newly created folder. +Run `react-native run-android` inside your React Native project folder: ``` -# skip this first command if you ejected from Create React Native App -react-native init AwesomeProject cd AwesomeProject react-native run-android ``` - - If everything is set up correctly, you should see your new app running in your Android emulator shortly. + + +![AwesomeProject on Android](img/AndroidSuccessMacOS.png) + + + ![AwesomeProject on Android](img/AndroidSuccessWindows.png) - + + +`react-native run-android` is just one way to run your app - you can also run it directly from within Android Studio or [Nuclide](https://nuclide.io/). + + ### Modifying your app Now that you have successfully run the app, let's modify it. + + +- Open `index.ios.js` in your text editor of choice and edit some lines. +- Hit `Command⌘ + R` in your iOS Simulator to reload the app and see your changes! + + + - Open `index.android.js` in your text editor of choice and edit some lines. -- Press the `R` key twice or select `Reload` from the Developer Menu to see your change! +- Press the `R` key twice or select `Reload` from the Developer Menu to see your changes! + + + +### Modifying your app + +Now that you have successfully run the app, let's modify it. + +- Open `index.android.js` in your text editor of choice and edit some lines. +- Press the `R` key twice or select `Reload` from the Developer Menu to see your changes! + + + +### That's it! + +Congratulations! You've successfully run and modified your first React Native app. + +
      + + ### That's it! @@ -479,27 +602,28 @@ Congratulations! You've successfully run and modified a React Native app.
      - + ## Now What? -- If you want to add this new React Native code to an existing application, check out the [Integration guide](docs/integration-with-existing-apps.html). +- If you're curious to learn more about React Native, continue on +to the [Tutorial](docs/tutorial.html). - If you can't get this to work, see the [Troubleshooting](docs/troubleshooting.html#content) page. -- If you're curious to learn more about React Native, continue on -to the [Tutorial](docs/tutorial.html). +- If you want to add this new React Native code to an existing application, check out the [Integration guide](docs/integration-with-existing-apps.html). - + ## Now What? -- If you want to add this new React Native code to an existing application, check out the [Integration guide](docs/integration-with-existing-apps.html). +- If you're curious to learn more about React Native, continue on +to the [Tutorial](docs/tutorial.html). - If you can't get this to work, see the [Troubleshooting](docs/troubleshooting.html#content) page. -- If you're curious to learn more about React Native, continue on -to the [Tutorial](docs/tutorial.html). +- If you want to add this new React Native code to an existing application, check out the [Integration guide](docs/integration-with-existing-apps.html). + - - - -## Creating a release build in Android Studio - -You can use Android Studio to create your release builds too! It’s as easy as creating release builds of your previously-existing native Android app. There’s just one additional step, which you’ll have to do before every release build. You need to execute the following to create a React Native bundle, which’ll be included with your native Android app: - - $ react-native bundle --platform android --dev false --entry-file index.android.js --bundle-output android/com/your-company-name/app-package-name/src/main/assets/index.android.bundle --assets-dest android/com/your-company-name/app-package-name/src/main/res/ - -Don’t forget to replace the paths with correct ones and create the assets folder if it doesn’t exist! - -Now just create a release build of your native app from within Android Studio as usual and you should be good to go! From c9d32688a6ccc1dd7f10f15c9805921cda5fe827 Mon Sep 17 00:00:00 2001 From: Fanghao Chen Date: Wed, 24 May 2017 16:50:06 -0700 Subject: [PATCH 0212/1101] Update the blog link of discord app in showcase. Summary: Fixed the broken blog link for the showcase of discord app. Verified the new blog link works. Sign the [CLA][2], if you haven't already. Small pull requests are much easier to review and more likely to get merged. Make sure the PR does only one thing, otherwise please split it. Make sure all **tests pass** on both [Travis][3] and [Circle CI][4]. PRs that break tests are unlikely to be merged. For more info, see the ["Pull Requests"][5] section of our "Contributing" guidelines. [1]: https://medium.com/martinkonicek/what-is-a-test-plan-8bfc840ec171#.y9lcuqqi9 [2]: https://code.facebook.com/cla [3]: https://travis-ci.org/facebook/react-native [4]: http://circleci.com/gh/facebook/react-native [5]: https://github.com/facebook/react-native/blob/master/CONTRIBUTING.md#pull-requests Closes https://github.com/facebook/react-native/pull/14067 Differential Revision: D5125660 Pulled By: hramos fbshipit-source-id: e0487c5ca51ffae3955e7057f9afcfa84e10d76b --- website/showcase.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/website/showcase.json b/website/showcase.json index ae25ca41fc38..776137109603 100644 --- a/website/showcase.json +++ b/website/showcase.json @@ -105,8 +105,8 @@ { "name": "Discord", "icon": "http://a5.mzstatic.com/us/r30/Purple5/v4/c1/2f/4c/c12f4cba-1d9a-f6bf-2240-04085d3470ec/icon175x175.jpeg", - "linkAppStore": "https://itunes.apple.com/us/app/discord-chat-for-gamers/id985746746?mt=8", - "infoLink": "https://discord.engineering/react-native-deep-dive-91fd5e949933#.5jnqftgof", + "linkAppStore": "https://itunes.apple.com/us/app/discord-chat-for-gamers/id985746746?mt=8", + "infoLink": "https://blog.discordapp.com/using-react-native-one-year-later-91fd5e949933", "infoTitle": "Using React Native: One Year Later", "pinned": true }, From 35338e900832007261dd6c278c81ce11c69cbc00 Mon Sep 17 00:00:00 2001 From: Adam Comella Date: Wed, 24 May 2017 23:01:10 -0700 Subject: [PATCH 0213/1101] iOS: Avoid adding extra spaces to accessibility label Summary: In some cases, `RCTRecursiveAccessibilityLabel` could return an accessibility label that had leading space, trailing space, or multiple spaces between words. This is because it always added a space before adding a label even if the label turned out to be empty. This is fixed by being stricter about adding spaces. Found test cases that used to introduce leading space, trailing space, or multiple spaces between words and verified that there aren't any extra spaces after the fix. ``` {/* Used to have leading space */} {/* Used to have 2 spaces between "One" and "Three" */} {/* Used to have trailing space */} ``` Additionally, my team is using this fix in our app. Adam Comella Microsoft Corp. Closes https://github.com/facebook/react-native/pull/14177 Differential Revision: D5127891 Pulled By: shergin fbshipit-source-id: 42c3022895d844959e0037eaf381b326af3cd6d1 --- React/Views/RCTView.m | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/React/Views/RCTView.m b/React/Views/RCTView.m index 39ec4f971751..204e41dd7868 100644 --- a/React/Views/RCTView.m +++ b/React/Views/RCTView.m @@ -81,20 +81,17 @@ - (UIView *)react_findClipView static NSString *RCTRecursiveAccessibilityLabel(UIView *view) { - BOOL isFirstIteration = YES; NSMutableString *str = [NSMutableString stringWithString:@""]; for (UIView *subview in view.subviews) { - if (isFirstIteration) { - isFirstIteration = NO; - } else { - [str appendString:@" "]; - } - NSString *label = subview.accessibilityLabel; - if (label) { + if (!label) { + label = RCTRecursiveAccessibilityLabel(subview); + } + if (label && label.length > 0) { + if (str.length > 0) { + [str appendString:@" "]; + } [str appendString:label]; - } else { - [str appendString:RCTRecursiveAccessibilityLabel(subview)]; } } return str; From eac399b696871f356212f4fd86218940f3e76366 Mon Sep 17 00:00:00 2001 From: Xinbo Wang Date: Wed, 24 May 2017 23:56:39 -0700 Subject: [PATCH 0214/1101] Add flexWrap warning Reviewed By: sahrens Differential Revision: D5117970 fbshipit-source-id: 11b542bd6cd7b1ab22ba8f6822d471df94fa7da2 --- Libraries/Lists/VirtualizedList.js | 11 +++++++++++ RNTester/js/FlatListExample.js | 3 ++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/Libraries/Lists/VirtualizedList.js b/Libraries/Lists/VirtualizedList.js index 21ce56dc0e61..889aeb445819 100644 --- a/Libraries/Lists/VirtualizedList.js +++ b/Libraries/Lists/VirtualizedList.js @@ -20,8 +20,10 @@ const ScrollView = require('ScrollView'); const View = require('View'); const ViewabilityHelper = require('ViewabilityHelper'); +const flattenStyle = require('flattenStyle'); const infoLog = require('infoLog'); const invariant = require('fbjs/lib/invariant'); +const warning = require('fbjs/lib/warning'); const {computeWindowedRenderLimits} = require('VirtualizeUtils'); @@ -409,6 +411,15 @@ class VirtualizedList extends React.PureComponent { }; render() { + if (__DEV__) { + const flatStyles = flattenStyle(this.props.contentContainerStyle); + warning( + flatStyles == null || flatStyles.flexWrap !== 'wrap', + '`flexWrap: `wrap`` is not supported with the `VirtualizedList` components.' + + 'Consider using `numColumns` with `FlatList` instead.', + ); + } + const {ListEmptyComponent, ListFooterComponent, ListHeaderComponent} = this.props; const {data, disableVirtualization, horizontal} = this.props; const cells = []; diff --git a/RNTester/js/FlatListExample.js b/RNTester/js/FlatListExample.js index 78782bd19c1a..8a2403d8c347 100644 --- a/RNTester/js/FlatListExample.js +++ b/RNTester/js/FlatListExample.js @@ -11,6 +11,7 @@ */ 'use strict'; +const Alert = require('Alert'); const React = require('react'); const ReactNative = require('react-native'); const { @@ -160,7 +161,7 @@ class FlatListExample extends React.PureComponent { data: state.data.concat(genItemData(100, state.data.length)), })); }; - _onRefresh = () => alert('onRefresh: nothing to refresh :P'); + _onRefresh = () => Alert.alert('onRefresh: nothing to refresh :P'); _renderItemComponent = ({item, separators}) => { return ( Date: Thu, 25 May 2017 01:21:45 -0700 Subject: [PATCH 0215/1101] call toString on fontWeight else throws error if passed an integer Summary: expects a string, throws error NSNumber cannot be converted to NSString if passed an integer, added toString() method to allow integers, and keep consistency, fontSize allows int. Closes https://github.com/facebook/react-native/pull/10483 Differential Revision: D5128581 Pulled By: shergin fbshipit-source-id: 21b1ddd35210c8f061506d71b936cc0ff490d999 --- Libraries/ART/ReactNativeART.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Libraries/ART/ReactNativeART.js b/Libraries/ART/ReactNativeART.js index dbf9d09b2dc2..47c5ce635a0d 100644 --- a/Libraries/ART/ReactNativeART.js +++ b/Libraries/ART/ReactNativeART.js @@ -457,11 +457,12 @@ function extractFont(font) { } var fontFamily = extractSingleFontFamily(font.fontFamily); var fontSize = +font.fontSize || 12; + var fontWeight = font.fontWeight != null ? font.fontWeight.toString() : '400'; return { // Normalize fontFamily: fontFamily, fontSize: fontSize, - fontWeight: font.fontWeight, + fontWeight: fontWeight, fontStyle: font.fontStyle, }; } From 9dc03854056e766f7beaf03a89c7409f34607d8b Mon Sep 17 00:00:00 2001 From: yk3372 Date: Thu, 25 May 2017 02:46:53 -0700 Subject: [PATCH 0216/1101] fix memory leak Summary: Signed-off-by: yk3372 What existing problem does the pull request solve? ViewManagersPropertyCache, ViewManagerPropertyUpdater static field not release when ReactInstanceManager called destroy. I use this url to integrate RN: [http://facebook.github.io/react-native/docs/integration-with-existing-apps.html](http://facebook.github.io/react-native/docs/integration-with-existing-apps.html) and in Activity's onDestroy function add the follow code to release RN: ```java mReactInstanceManager.destroy(); mReactInstanceManager = null; ``` and then when I exit activity, find the static field not release. the follow is screen shot: before: ![2017-05-23 17 41 16](https://cloud.githubusercontent.com/assets/1514899/26350318/53ea250c-3fe5-11e7-8eda-a0dcc20ba4f6.jpg) after: ![2017-05-23 17 38 49](https://cloud.githubusercontent.com/assets/1514899/26350329/5e5b273e-3fe5-11e7-9b0b-a8b0e044abf3.jpg) Closes https://github.com/facebook/react-native/pull/14172 Differential Revision: D5128834 Pulled By: javache fbshipit-source-id: 657763fa21fd8826b4060f9a17e7f35f0e1e04d3 --- .../java/com/facebook/react/uimanager/UIManagerModule.java | 1 + .../react/uimanager/ViewManagerPropertyUpdater.java | 6 ++++++ .../facebook/react/uimanager/ViewManagersPropertyCache.java | 5 +++++ 3 files changed, 12 insertions(+) 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 e173b0795c31..ecdfd2837ca1 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java +++ b/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java @@ -149,6 +149,7 @@ public void onCatalystInstanceDestroy() { getReactApplicationContext().unregisterComponentCallbacks(mMemoryTrimCallback); YogaNodePool.get().clear(); + ViewManagerPropertyUpdater.clear(); } private static Map createConstants( diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagerPropertyUpdater.java b/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagerPropertyUpdater.java index 363c50a0aaeb..47d9ecf1cd07 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagerPropertyUpdater.java +++ b/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagerPropertyUpdater.java @@ -30,6 +30,12 @@ public interface ShadowNodeSetter extends Settable { new HashMap<>(); private static final Map, ShadowNodeSetter> SHADOW_NODE_SETTER_MAP = new HashMap<>(); + public static void clear() { + ViewManagersPropertyCache.clear(); + VIEW_MANAGER_SETTER_MAP.clear(); + SHADOW_NODE_SETTER_MAP.clear(); + } + public static void updateProps( T manager, V v, diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagersPropertyCache.java b/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagersPropertyCache.java index 43d2509dee0a..cfdd34be265f 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagersPropertyCache.java +++ b/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagersPropertyCache.java @@ -28,6 +28,11 @@ private static final Map> CLASS_PROPS_CACHE = new HashMap<>(); private static final Map EMPTY_PROPS_MAP = new HashMap<>(); + public static void clear() { + CLASS_PROPS_CACHE.clear(); + EMPTY_PROPS_MAP.clear(); + } + /*package*/ static abstract class PropSetter { protected final String mPropName; From e9ae31dfd6312b1d98eef34b4a8d366b7482bdb1 Mon Sep 17 00:00:00 2001 From: Adam Comella Date: Thu, 25 May 2017 02:50:14 -0700 Subject: [PATCH 0217/1101] Android: Fix memory leak in AccessibilityInfoModule Summary: This change fixes a memory leak in `AccessibilityInfoModule`. Our tooling detected this memory leak. After this commit, we no longer see the leak in the tool. We've been using the change in our app. Adam Comella Microsoft Corp. Closes https://github.com/facebook/react-native/pull/14171 Differential Revision: D5128845 Pulled By: javache fbshipit-source-id: b604902188eb8cc029b1ad39d087e199ae26877c --- .../accessibilityinfo/AccessibilityInfoModule.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/modules/accessibilityinfo/AccessibilityInfoModule.java b/ReactAndroid/src/main/java/com/facebook/react/modules/accessibilityinfo/AccessibilityInfoModule.java index 765c607167a5..257cb0d51674 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/modules/accessibilityinfo/AccessibilityInfoModule.java +++ b/ReactAndroid/src/main/java/com/facebook/react/modules/accessibilityinfo/AccessibilityInfoModule.java @@ -43,8 +43,8 @@ public void onTouchExplorationStateChanged(boolean enabled) { public AccessibilityInfoModule(ReactApplicationContext context) { super(context); - mAccessibilityManager = (AccessibilityManager) getReactApplicationContext() - .getSystemService(Context.ACCESSIBILITY_SERVICE); + Context appContext = context.getApplicationContext(); + mAccessibilityManager = (AccessibilityManager) appContext.getSystemService(Context.ACCESSIBILITY_SERVICE); mEnabled = mAccessibilityManager.isTouchExplorationEnabled(); if (Build.VERSION.SDK_INT >= 19) { mTouchExplorationStateChangeListener = new ReactTouchExplorationStateChangeListener(); @@ -92,6 +92,12 @@ public void initialize() { updateAndSendChangeEvent(mAccessibilityManager.isTouchExplorationEnabled()); } + @Override + public void onCatalystInstanceDestroy() { + super.onCatalystInstanceDestroy(); + getReactApplicationContext().removeLifecycleEventListener(this); + } + @Override public void onHostDestroy() { } From 803a9168f27d9c7c7f5d51e53f6308dc446b9ef8 Mon Sep 17 00:00:00 2001 From: ashoat Date: Thu, 25 May 2017 03:12:04 -0700 Subject: [PATCH 0218/1101] Pass data prop instead of props to _updateViewableItems in _onScroll Summary: This is a simple bugfix. `_updateViewableItems` expects the `data` prop, as it calls `getItemCount` on it. Without this, `onViewableItemsChanged` updates twice for each scroll position, once from `_onScroll` with the incorrect results, and once from `_updateCellsToRender` with the correct results. This means the callback nigh-on unusable. I simply logged the results of `onViewableItemsChanged` and made sure they were correct. Closes https://github.com/facebook/react-native/pull/14162 Differential Revision: D5128363 Pulled By: sahrens fbshipit-source-id: 3faef812068921a26ed871339da79870fd0d911c --- Libraries/Lists/VirtualizedList.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Libraries/Lists/VirtualizedList.js b/Libraries/Lists/VirtualizedList.js index 889aeb445819..68aefe40e670 100644 --- a/Libraries/Lists/VirtualizedList.js +++ b/Libraries/Lists/VirtualizedList.js @@ -734,7 +734,7 @@ class VirtualizedList extends React.PureComponent { const dOffset = offset - this._scrollMetrics.offset; const velocity = dOffset / dt; this._scrollMetrics = {contentLength, dt, dOffset, offset, timestamp, velocity, visibleLength}; - this._updateViewableItems(this.props); + this._updateViewableItems(this.props.data); if (!this.props) { return; } From a4badb847103e74624e5c57b2a2795988318f84e Mon Sep 17 00:00:00 2001 From: Jean Lauliac Date: Thu, 25 May 2017 04:23:19 -0700 Subject: [PATCH 0219/1101] packager: TransformCaching: make choice of cache explicit in the API MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Summary: This changeset moves the creation of the transform cache at the top-level of the bundler so that: * we can use alternative folders, such as the project path itself, that I think will be more robust especially for OSS; * we can disable the cache completely, that is useful in some cases (for example, the script that fills the global cache). The reasons I believe a local project path is more robust are: * there are less likely conflicts between different users and different projects on a single machine; * the cache is de facto cleaned up if you clone a fresh copy of a project, something I think is desirable; * some people have been reporting that `tmpDir` just returns nothing; * finally, it prevents another user from writing malicious transformed code in the cache into the shared temp dir—only people with write access to the project have write access to the cache, that is consistent. Reviewed By: davidaurelio Differential Revision: D5113121 fbshipit-source-id: 74392733a0be306a7119516d7905fc43cd8c778e --- local-cli/bundle/buildBundle.js | 2 + local-cli/util/Config.js | 7 ++- packager/index.js | 3 + packager/src/Bundler/index.js | 3 + packager/src/Resolver/index.js | 4 +- packager/src/Server/index.js | 4 ++ packager/src/lib/GlobalTransformCache.js | 2 +- ...{TransformCache.js => TransformCaching.js} | 57 ++++++++++++++++++- ...{TransformCache.js => TransformCaching.js} | 2 +- ...Cache-test.js => TransformCaching-test.js} | 6 +- packager/src/node-haste/DependencyGraph.js | 2 +- packager/src/node-haste/Module.js | 39 ++++--------- packager/src/node-haste/ModuleCache.js | 7 ++- .../__tests__/DependencyGraph-test.js | 4 +- .../src/node-haste/__tests__/Module-test.js | 28 ++------- 15 files changed, 103 insertions(+), 67 deletions(-) rename packager/src/lib/{TransformCache.js => TransformCaching.js} (87%) rename packager/src/lib/__mocks__/{TransformCache.js => TransformCaching.js} (95%) rename packager/src/lib/__tests__/{TransformCache-test.js => TransformCaching-test.js} (95%) diff --git a/local-cli/bundle/buildBundle.js b/local-cli/bundle/buildBundle.js index d7c71bbdb98e..63db60c68725 100644 --- a/local-cli/bundle/buildBundle.js +++ b/local-cli/bundle/buildBundle.js @@ -14,6 +14,7 @@ const log = require('../util/log').out('bundle'); const Server = require('../../packager/src/Server'); const TerminalReporter = require('../../packager/src/lib/TerminalReporter'); +const TransformCaching = require('../../packager/src/lib/TransformCaching'); const outputBundle = require('../../packager/src/shared/output/bundle'); const path = require('path'); @@ -91,6 +92,7 @@ function buildBundle( resetCache: args.resetCache, reporter: new TerminalReporter(), sourceExts: defaultSourceExts.concat(sourceExts), + transformCache: TransformCaching.useTempDir(), transformModulePath: transformModulePath, watch: false, }; diff --git a/local-cli/util/Config.js b/local-cli/util/Config.js index e02c50635384..1e33995e568c 100644 --- a/local-cli/util/Config.js +++ b/local-cli/util/Config.js @@ -133,12 +133,17 @@ const defaultConfig: ConfigT = { */ const Config = { find(startDir: string): ConfigT { + return this.findWithPath(startDir).config; + }, + + findWithPath(startDir: string): {config: ConfigT, projectPath: string} { const configPath = findConfigPath(startDir); invariant( configPath, `Can't find "${RN_CLI_CONFIG}" file in any parent folder of "${startDir}"`, ); - return this.loadFile(configPath, startDir); + const projectPath = path.dirname(configPath); + return {config: this.loadFile(configPath, startDir), projectPath}; }, findOptional(startDir: string): ConfigT { diff --git a/packager/index.js b/packager/index.js index 7d7ab76087f7..cfae75fdf8a4 100644 --- a/packager/index.js +++ b/packager/index.js @@ -19,6 +19,7 @@ const invariant = require('fbjs/lib/invariant'); import type {PostProcessModules, PostMinifyProcess} from './src/Bundler'; import type Server from './src/Server'; import type {GlobalTransformCache} from './src/lib/GlobalTransformCache'; +import type {TransformCache} from './src/lib/TransformCaching'; import type {Reporter} from './src/lib/reporting'; import type {HasteImpl} from './src/node-haste/Module'; @@ -34,6 +35,7 @@ type Options = { projectRoots: $ReadOnlyArray, reporter?: Reporter, +sourceExts: ?Array, + +transformCache: TransformCache, +transformModulePath: string, watch?: boolean, }; @@ -118,6 +120,7 @@ function createServer(options: StrictOptions): Server { // Some callsites may not be Flowified yet. invariant(options.reporter != null, 'createServer() requires reporter'); + invariant(options.transformCache != null, 'createServer() requires transformCache'); const serverOptions = Object.assign({}, options); delete serverOptions.verbose; const ServerClass = require('./src/Server'); diff --git a/packager/src/Bundler/index.js b/packager/src/Bundler/index.js index 945d1c4e54a2..4068b027b5cd 100644 --- a/packager/src/Bundler/index.js +++ b/packager/src/Bundler/index.js @@ -46,6 +46,7 @@ import type ResolutionResponse from '../node-haste/DependencyGraph/ResolutionRes import type {MappingsMap} from '../lib/SourceMap'; import type {Options as JSTransformerOptions} from '../JSTransformer/worker/worker'; import type {Reporter} from '../lib/reporting'; +import type {TransformCache} from '../lib/TransformCaching'; import type {GlobalTransformCache} from '../lib/GlobalTransformCache'; export type BundlingOptions = {| @@ -132,6 +133,7 @@ type Options = {| +reporter: Reporter, +resetCache: boolean, +sourceExts: Array, + +transformCache: TransformCache, +transformModulePath: string, +transformTimeoutInterval: ?number, +watch: boolean, @@ -227,6 +229,7 @@ class Bundler { code, transformCodeOptions, ), + transformCache: opts.transformCache, watch: opts.watch, }); diff --git a/packager/src/Resolver/index.js b/packager/src/Resolver/index.js index 1713a42e5fe5..b855d3367581 100644 --- a/packager/src/Resolver/index.js +++ b/packager/src/Resolver/index.js @@ -22,7 +22,7 @@ import type {MappingsMap} from '../lib/SourceMap'; import type {PostMinifyProcess} from '../Bundler'; import type {Options as JSTransformerOptions} from '../JSTransformer/worker/worker'; import type {Reporter} from '../lib/reporting'; -import type {GetTransformCacheKey} from '../lib/TransformCache'; +import type {TransformCache, GetTransformCacheKey} from '../lib/TransformCaching'; import type {GlobalTransformCache} from '../lib/GlobalTransformCache'; type MinifyCode = (filePath: string, code: string, map: MappingsMap) => @@ -47,6 +47,7 @@ type Options = {| +reporter: Reporter, +resetCache: boolean, +sourceExts: Array, + +transformCache: TransformCache, +transformCode: TransformCode, +watch: boolean, |}; @@ -76,6 +77,7 @@ class Resolver { moduleOptions: { hasteImpl: opts.hasteImpl, resetCache: opts.resetCache, + transformCache: opts.transformCache, }, preferNativePlatform: true, roots: opts.projectRoots, diff --git a/packager/src/Server/index.js b/packager/src/Server/index.js index db2d10b8c02f..7f20607d9844 100644 --- a/packager/src/Server/index.js +++ b/packager/src/Server/index.js @@ -33,6 +33,7 @@ import type Bundle from '../Bundler/Bundle'; import type HMRBundle from '../Bundler/HMRBundle'; import type {Reporter} from '../lib/reporting'; import type {GetTransformOptions, PostProcessModules, PostMinifyProcess} from '../Bundler'; +import type {TransformCache} from '../lib/TransformCaching'; import type {GlobalTransformCache} from '../lib/GlobalTransformCache'; import type {SourceMap, Symbolicate} from './symbolicate'; @@ -75,6 +76,7 @@ type Options = { resetCache?: boolean, silent?: boolean, +sourceExts: ?Array, + +transformCache: TransformCache, +transformModulePath: string, transformTimeoutInterval?: number, watch?: boolean, @@ -131,6 +133,7 @@ class Server { resetCache: boolean, silent: boolean, +sourceExts: Array, + +transformCache: TransformCache, +transformModulePath: string, transformTimeoutInterval: ?number, watch: boolean, @@ -170,6 +173,7 @@ class Server { resetCache: options.resetCache || false, silent: options.silent || false, sourceExts: options.sourceExts || defaults.sourceExts, + transformCache: options.transformCache, transformModulePath: options.transformModulePath, transformTimeoutInterval: options.transformTimeoutInterval, watch: options.watch || false, diff --git a/packager/src/lib/GlobalTransformCache.js b/packager/src/lib/GlobalTransformCache.js index 11ff45919ccc..4f8f683459c5 100644 --- a/packager/src/lib/GlobalTransformCache.js +++ b/packager/src/lib/GlobalTransformCache.js @@ -27,7 +27,7 @@ import type { TransformOptionsStrict, } from '../JSTransformer/worker/worker'; import type {LocalPath} from '../node-haste/lib/toLocalPath'; -import type {CachedResult, GetTransformCacheKey} from './TransformCache'; +import type {CachedResult, GetTransformCacheKey} from './TransformCaching'; /** * The API that a global transform cache must comply with. To implement a diff --git a/packager/src/lib/TransformCache.js b/packager/src/lib/TransformCaching.js similarity index 87% rename from packager/src/lib/TransformCache.js rename to packager/src/lib/TransformCaching.js index 45b02d691456..57eaaba58a64 100644 --- a/packager/src/lib/TransformCache.js +++ b/packager/src/lib/TransformCaching.js @@ -59,6 +59,23 @@ export type ReadTransformProps = { cacheOptions: CacheOptions, }; +type WriteTransformProps = { + filePath: string, + sourceCode: string, + getTransformCacheKey: GetTransformCacheKey, + transformOptions: WorkerOptions, + transformOptionsKey: string, + result: CachedResult, +}; + +/** + * The API that should be exposed for a transform cache. + */ +export type TransformCache = { + writeSync(props: WriteTransformProps): void, + readSync(props: ReadTransformProps): TransformCacheResult, +}; + const EMPTY_ARRAY = []; /* 1 day */ @@ -66,7 +83,7 @@ const GARBAGE_COLLECTION_PERIOD = 24 * 60 * 60 * 1000; /* 4 days */ const CACHE_FILE_MAX_LAST_ACCESS_TIME = GARBAGE_COLLECTION_PERIOD * 4; -class TransformCache { +class FileBasedCache { _cacheWasReset: boolean; _lastCollected: ?number; _rootPath: string; @@ -398,4 +415,40 @@ function unlinkIfExistsSync(filePath: string) { } } -module.exports = TransformCache; +/** + * In some context we want to build from scratch, that is what this cache + * implementation allows. + */ +function none(): TransformCache { + return { + writeSync: () => {}, + readSync: () => ({ + result: null, + outdatedDependencies: [], + }), + }; +} + +/** + * If packager is running for two different directories, we don't want the + * caches to conflict with each other. `__dirname` carries that because + * packager will be, for example, installed in a different `node_modules/` + * folder for different projects. + */ +function useTempDir(): TransformCache { + const hash = crypto.createHash('sha1').update(__dirname); + if (process.getuid != null) { + hash.update(process.getuid().toString()); + } + const tmpDir = require('os').tmpdir(); + const cacheName = 'react-native-packager-cache'; + const rootPath = path.join(tmpDir, cacheName + '-' + hash.digest('hex')); + return new FileBasedCache(rootPath); +} + +function useProjectDir(projectPath: string): TransformCache { + invariant(path.isAbsolute(projectPath), 'project path must be absolute'); + return new FileBasedCache(path.join(projectPath, '.metro-bundler')); +} + +module.exports = {FileBasedCache, none, useTempDir, useProjectDir}; diff --git a/packager/src/lib/__mocks__/TransformCache.js b/packager/src/lib/__mocks__/TransformCaching.js similarity index 95% rename from packager/src/lib/__mocks__/TransformCache.js rename to packager/src/lib/__mocks__/TransformCaching.js index 288e330ade8d..0fd89826d527 100644 --- a/packager/src/lib/__mocks__/TransformCache.js +++ b/packager/src/lib/__mocks__/TransformCaching.js @@ -44,4 +44,4 @@ class TransformCacheMock { } -module.exports = TransformCacheMock; +module.exports = {mocked: () => new TransformCacheMock()}; diff --git a/packager/src/lib/__tests__/TransformCache-test.js b/packager/src/lib/__tests__/TransformCaching-test.js similarity index 95% rename from packager/src/lib/__tests__/TransformCache-test.js rename to packager/src/lib/__tests__/TransformCaching-test.js index 06c81592079f..d1604e858e22 100644 --- a/packager/src/lib/__tests__/TransformCache-test.js +++ b/packager/src/lib/__tests__/TransformCaching-test.js @@ -11,7 +11,7 @@ jest .dontMock('json-stable-stringify') - .dontMock('../TransformCache') + .dontMock('../TransformCaching') .dontMock('left-pad') .dontMock('lodash/throttle') .dontMock('crypto'); @@ -48,14 +48,14 @@ function cartesianProductOf(a1, a2) { return product; } -describe('TransformCache', () => { +describe('TransformCaching.FileBasedCache', () => { let transformCache; beforeEach(() => { jest.resetModules(); mockFS.clear(); - transformCache = new (require('../TransformCache'))('/cache'); + transformCache = new (require('../TransformCaching').FileBasedCache)('/cache'); }); it('is caching different files and options separately', () => { diff --git a/packager/src/node-haste/DependencyGraph.js b/packager/src/node-haste/DependencyGraph.js index 713649a0e266..3205187dc45f 100644 --- a/packager/src/node-haste/DependencyGraph.js +++ b/packager/src/node-haste/DependencyGraph.js @@ -39,7 +39,7 @@ import type { Options as JSTransformerOptions, } from '../JSTransformer/worker/worker'; import type {GlobalTransformCache} from '../lib/GlobalTransformCache'; -import type {GetTransformCacheKey} from '../lib/TransformCache'; +import type {GetTransformCacheKey} from '../lib/TransformCaching'; import type {Reporter} from '../lib/reporting'; import type {ModuleMap} from './DependencyGraph/ResolutionRequest'; import type {Options as ModuleOptions, TransformCode} from './Module'; diff --git a/packager/src/node-haste/Module.js b/packager/src/node-haste/Module.js index 26dbdb44f83a..17269be87922 100644 --- a/packager/src/node-haste/Module.js +++ b/packager/src/node-haste/Module.js @@ -12,8 +12,6 @@ 'use strict'; -const TransformCache = require('../lib/TransformCache'); - const crypto = require('crypto'); const docblock = require('./DependencyGraph/docblock'); const fs = require('fs'); @@ -30,8 +28,11 @@ import type { } from '../JSTransformer/worker/worker'; import type {GlobalTransformCache} from '../lib/GlobalTransformCache'; import type {MappingsMap} from '../lib/SourceMap'; -import type {GetTransformCacheKey} from '../lib/TransformCache'; -import type {ReadTransformProps} from '../lib/TransformCache'; +import type { + TransformCache, + GetTransformCacheKey, + ReadTransformProps, +} from '../lib/TransformCaching'; import type {Reporter} from '../lib/reporting'; import type DependencyGraphHelpers from './DependencyGraph/DependencyGraphHelpers'; @@ -70,17 +71,18 @@ export type HasteImpl = { export type Options = { hasteImpl?: HasteImpl, resetCache?: boolean, + transformCache: TransformCache, }; export type ConstructorArgs = { depGraphHelpers: DependencyGraphHelpers, - globalTransformCache: ?GlobalTransformCache, file: string, + getTransformCacheKey: GetTransformCacheKey, + globalTransformCache: ?GlobalTransformCache, localPath: LocalPath, moduleCache: ModuleCache, options: Options, reporter: Reporter, - getTransformCacheKey: GetTransformCacheKey, transformCode: ?TransformCode, }; @@ -334,7 +336,7 @@ class Module { return; } invariant(result != null, 'missing result'); - Module._getTransformCache().writeSync({...cacheProps, result}); + this._options.transformCache.writeSync({...cacheProps, result}); callback(undefined, result); }); } @@ -381,7 +383,7 @@ class Module { transformOptions, transformOptionsKey, ); - const cachedResult = Module._getTransformCache().readSync(cacheProps); + const cachedResult = this._options.transformCache.readSync(cacheProps); if (cachedResult.result == null) { return { result: null, @@ -469,27 +471,6 @@ class Module { isPolyfill() { return false; } - - /** - * If packager is running for two different directories, we don't want the - * caches to conflict with each other. `__dirname` carries that because - * packager will be, for example, installed in a different `node_modules/` - * folder for different projects. - */ - static _getTransformCache(): TransformCache { - if (this._transformCache != null) { - return this._transformCache; - } - const hash = crypto.createHash('sha1').update(__dirname); - if (process.getuid != null) { - hash.update(process.getuid().toString()); - } - const tmpDir = require('os').tmpdir(); - const cacheName = 'react-native-packager-cache'; - const rootPath = path.join(tmpDir, cacheName + '-' + hash.digest('hex')); - this._transformCache = new TransformCache(rootPath); - return this._transformCache; - } } // use weak map to speed up hash creation of known objects diff --git a/packager/src/node-haste/ModuleCache.js b/packager/src/node-haste/ModuleCache.js index bdc7c1b38b7f..7d94509e833f 100644 --- a/packager/src/node-haste/ModuleCache.js +++ b/packager/src/node-haste/ModuleCache.js @@ -20,7 +20,7 @@ const Polyfill = require('./Polyfill'); const toLocalPath = require('./lib/toLocalPath'); import type {GlobalTransformCache} from '../lib/GlobalTransformCache'; -import type {GetTransformCacheKey} from '../lib/TransformCache'; +import type {GetTransformCacheKey} from '../lib/TransformCaching'; import type {Reporter} from '../lib/reporting'; import type DependencyGraphHelpers from './DependencyGraph/DependencyGraphHelpers'; @@ -112,8 +112,8 @@ class ModuleCache { */ this._moduleCache[filePath] = new AssetModule( { - dependencies: this._assetDependencies, depGraphHelpers: this._depGraphHelpers, + dependencies: this._assetDependencies, file: filePath, getTransformCacheKey: this._getTransformCacheKey, globalTransformCache: null, @@ -161,11 +161,12 @@ class ModuleCache { createPolyfill({file}: {file: string}) { /* $FlowFixMe: there are missing arguments. */ return new Polyfill({ - file, depGraphHelpers: this._depGraphHelpers, + file, getTransformCacheKey: this._getTransformCacheKey, localPath: toLocalPath(this._roots, file), moduleCache: this, + options: this._moduleOptions, transformCode: this._transformCode, }); } diff --git a/packager/src/node-haste/__tests__/DependencyGraph-test.js b/packager/src/node-haste/__tests__/DependencyGraph-test.js index d8a6d139de0e..968f99a76ffd 100644 --- a/packager/src/node-haste/__tests__/DependencyGraph-test.js +++ b/packager/src/node-haste/__tests__/DependencyGraph-test.js @@ -15,7 +15,7 @@ jest.useRealTimers(); jest .mock('fs') .mock('../../Logger') - .mock('../../lib/TransformCache') + .mock('../../lib/TransformCaching') // It's noticeably faster to prevent running watchman from FileWatcher. .mock('child_process', () => ({})); @@ -96,7 +96,7 @@ describe('DependencyGraph', function() { useWatchman: false, ignoreFilePath: () => false, maxWorkerCount: 1, - moduleOptions: {}, + moduleOptions: {transformCache: require('TransformCaching').mocked()}, resetCache: true, transformCode: (module, sourceCode, transformOptions) => { return new Promise(resolve => { diff --git a/packager/src/node-haste/__tests__/Module-test.js b/packager/src/node-haste/__tests__/Module-test.js index 111e86d3ec4a..1c92071d708d 100644 --- a/packager/src/node-haste/__tests__/Module-test.js +++ b/packager/src/node-haste/__tests__/Module-test.js @@ -21,7 +21,7 @@ jest const Module = require('../Module'); const ModuleCache = require('../ModuleCache'); const DependencyGraphHelpers = require('../DependencyGraph/DependencyGraphHelpers'); -const TransformCache = require('../../lib/TransformCache'); +const TransformCaching = require('../../lib/TransformCaching'); const fs = require('graceful-fs'); const packageJson = @@ -31,8 +31,6 @@ const packageJson = description: "A require('foo') story", }); -const TRANSFORM_CACHE = new TransformCache(); - function mockFS(rootChildren) { fs.__setMockFilesystem({root: rootChildren}); } @@ -49,6 +47,7 @@ describe('Module', () => { const fileName = '/root/index.js'; let cache; + const transformCache = TransformCaching.mocked(); const createCache = () => ({ get: jest.genMockFn().mockImplementation( @@ -61,7 +60,7 @@ describe('Module', () => { let transformCacheKey; const createModule = options => new Module({ - options: {}, + options: {transformCache}, transformCode: (module, sourceCode, transformOptions) => { return Promise.resolve({code: sourceCode}); }, @@ -80,7 +79,7 @@ describe('Module', () => { process.platform = 'linux'; cache = createCache(); transformCacheKey = 'abcdef'; - TRANSFORM_CACHE.mock.reset(); + transformCache.mock.reset(); }); describe('Module ID', () => { @@ -183,7 +182,7 @@ describe('Module', () => { transformResult = {code: ''}; transformCode = jest.genMockFn() .mockImplementation((module, sourceCode, options) => { - TRANSFORM_CACHE.writeSync({ + transformCache.writeSync({ filePath: module.path, sourceCode, transformOptions: options, @@ -257,23 +256,6 @@ describe('Module', () => { }); }); - it('stores all things if options is undefined', () => { - transformResult = { - code: exampleCode, - arbitrary: 'arbitrary', - dependencies: ['foo', 'bar'], - dependencyOffsets: [12, 764], - id: null, - map: {version: 3}, - subObject: {foo: 'bar'}, - }; - const module = createModule({transformCode, options: undefined}); - - return module.read().then(result => { - expect(result).toEqual({...transformResult, source: 'arbitrary(code);'}); - }); - }); - it('exposes the transformed code rather than the raw file contents', () => { transformResult = {code: exampleCode}; const module = createModule({transformCode}); From 7c06a0da654ec5ec6fae68d48512e63ec2adf969 Mon Sep 17 00:00:00 2001 From: Jean Lauliac Date: Thu, 25 May 2017 05:01:34 -0700 Subject: [PATCH 0220/1101] packager: upgrade jest-haste-map version Summary: This allows us to get the new fix for recovery on duplicate modules. Reviewed By: cpojer Differential Revision: D5128975 fbshipit-source-id: 5a2b60430bbca1806a97798c482af8522366e071 --- package.json | 2 +- packager/package.json | 2 +- packager/src/node-haste/DependencyGraph.js | 2 +- .../__tests__/DependencyGraph-test.js | 18 ++++------ .../DependencyGraph-test.js.snap | 36 +++++++++++++++++++ 5 files changed, 45 insertions(+), 15 deletions(-) create mode 100644 packager/src/node-haste/__tests__/__snapshots__/DependencyGraph-test.js.snap diff --git a/package.json b/package.json index 10ac3bab99fe..3be349fe0c95 100644 --- a/package.json +++ b/package.json @@ -176,7 +176,7 @@ "graceful-fs": "^4.1.3", "image-size": "^0.3.5", "inquirer": "^0.12.0", - "jest-haste-map": "19.0.0", + "jest-haste-map": "^20.0.4", "json-stable-stringify": "^1.0.1", "json5": "^0.4.0", "left-pad": "^1.1.3", diff --git a/packager/package.json b/packager/package.json index e557ab719fc7..e0d117d2649f 100644 --- a/packager/package.json +++ b/packager/package.json @@ -24,7 +24,7 @@ "fbjs": "0.8.12", "graceful-fs": "^4.1.3", "image-size": "^0.3.5", - "jest-haste-map": "19.0.0", + "jest-haste-map": "^20.0.4", "json-stable-stringify": "^1.0.1", "json5": "^0.4.0", "left-pad": "^1.1.3", diff --git a/packager/src/node-haste/DependencyGraph.js b/packager/src/node-haste/DependencyGraph.js index 3205187dc45f..0897cbcf2585 100644 --- a/packager/src/node-haste/DependencyGraph.js +++ b/packager/src/node-haste/DependencyGraph.js @@ -111,7 +111,7 @@ class DependencyGraph extends EventEmitter { return new JestHasteMap({ extensions: opts.sourceExts.concat(opts.assetExts), forceNodeFilesystemAPI: opts.forceNodeFilesystemAPI, - ignorePattern: {test: opts.ignoreFilePath}, + ignorePattern: opts.ignoreFilePath, maxWorkers: opts.maxWorkerCount, mocksPattern: '', name: 'react-native-packager-' + JEST_HASTE_MAP_CACHE_BREAKER, diff --git a/packager/src/node-haste/__tests__/DependencyGraph-test.js b/packager/src/node-haste/__tests__/DependencyGraph-test.js index 968f99a76ffd..34b0cf4137ce 100644 --- a/packager/src/node-haste/__tests__/DependencyGraph-test.js +++ b/packager/src/node-haste/__tests__/DependencyGraph-test.js @@ -5398,7 +5398,7 @@ describe('DependencyGraph', function() { }); }); - it('should recover from multiple modules with the same name (but this is broken right now)', async () => { + it('should recover from multiple modules with the same name', async () => { const root = '/root'; console.warn = jest.fn(); const filesystem = setMockFileSystem({ @@ -5435,17 +5435,11 @@ describe('DependencyGraph', function() { await triggerAndProcessWatchEvent(dgraph, 'change', root + '/b.js'); } - // This verifies that it is broken right now. Instead of throwing it should - // return correct results. Once this is fixed in `jest-haste`, remove - // the whole try catch and verify results are matching a snapshot. - try { - await getOrderedDependenciesAsJSON(dgraph, root + '/index.js'); - throw new Error('expected `getOrderedDependenciesAsJSON` to fail'); - } catch (error) { - if (error.type !== 'UnableToResolveError') { - throw error; - } - } + const deps = await getOrderedDependenciesAsJSON( + dgraph, + root + '/index.js', + ); + expect(deps).toMatchSnapshot(); }); }); diff --git a/packager/src/node-haste/__tests__/__snapshots__/DependencyGraph-test.js.snap b/packager/src/node-haste/__tests__/__snapshots__/DependencyGraph-test.js.snap new file mode 100644 index 000000000000..dbd9ae1f45e0 --- /dev/null +++ b/packager/src/node-haste/__tests__/__snapshots__/DependencyGraph-test.js.snap @@ -0,0 +1,36 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`DependencyGraph file watch updating should recover from multiple modules with the same name 1`] = ` +Array [ + Object { + "dependencies": Array [ + "a", + "b", + ], + "id": "index", + "isAsset": false, + "isJSON": false, + "isPolyfill": false, + "path": "/root/index.js", + "resolution": undefined, + }, + Object { + "dependencies": Array [], + "id": "a", + "isAsset": false, + "isJSON": false, + "isPolyfill": false, + "path": "/root/a.js", + "resolution": undefined, + }, + Object { + "dependencies": Array [], + "id": "b", + "isAsset": false, + "isJSON": false, + "isPolyfill": false, + "path": "/root/b.js", + "resolution": undefined, + }, +] +`; From 46104a1f78b7f57388d728f2147a7b623b123f74 Mon Sep 17 00:00:00 2001 From: Jean Lauliac Date: Thu, 25 May 2017 06:01:01 -0700 Subject: [PATCH 0221/1101] packager: docBlock: @flow Reviewed By: cpojer Differential Revision: D5129050 fbshipit-source-id: b77d535b2f5aefef28346709bc1bb9fea5edade9 --- .../src/node-haste/DependencyGraph/docblock.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/packager/src/node-haste/DependencyGraph/docblock.js b/packager/src/node-haste/DependencyGraph/docblock.js index d710112a9587..354e85176c24 100644 --- a/packager/src/node-haste/DependencyGraph/docblock.js +++ b/packager/src/node-haste/DependencyGraph/docblock.js @@ -5,6 +5,9 @@ * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. + * + * @flow + * @format */ 'use strict'; @@ -16,7 +19,7 @@ var ltrimRe = /^\s*/; * @param {String} contents * @return {String} */ -function extract(contents) { +function extract(contents: string): string { var match = contents.match(docblockRe); if (match) { return match[0].replace(ltrimRe, '') || ''; @@ -24,20 +27,18 @@ function extract(contents) { return ''; } - var commentStartRe = /^\/\*\*/; var commentEndRe = /\*\/$/; var wsRe = /[\t ]+/g; var stringStartRe = /(\r?\n|^) *\*/g; -var multilineRe = - /(?:^|\r?\n) *(@[^\r\n]*?) *\r?\n *([^@\r\n\s][^@\r\n]+?) *\r?\n/g; +var multilineRe = /(?:^|\r?\n) *(@[^\r\n]*?) *\r?\n *([^@\r\n\s][^@\r\n]+?) *\r?\n/g; var propertyRe = /(?:^|\r?\n) *@(\S+) *([^\r\n]*)/g; /** * @param {String} contents * @return {Array} */ -function parse(docblock) { +function parse(docblock: string): Array<[string, string]> { docblock = docblock .replace(commentStartRe, '') .replace(commentEndRe, '') @@ -68,7 +69,7 @@ function parse(docblock) { * @param {String} contents * @return {Object} */ -function parseAsObject(docblock) { +function parseAsObject(docblock: string): {[string]: string} { var pairs = parse(docblock); var result = {}; for (var i = 0; i < pairs.length; i++) { @@ -77,7 +78,6 @@ function parseAsObject(docblock) { return result; } - exports.extract = extract; exports.parse = parse; exports.parseAsObject = parseAsObject; From fc45471af2e42b556d834df203ec35a587e0a733 Mon Sep 17 00:00:00 2001 From: Janic Duplessis Date: Thu, 25 May 2017 06:02:35 -0700 Subject: [PATCH 0222/1101] Native Animations - Fix edge case with restore default values MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Summary: There was an edge case where sometimes a view could be added and removed in the same batch so this caused issues because we ran `disconnectAnimatedNodeFromView` before `connectAnimatedNodeToView`. This separates restoring default values from `disconnectAnimatedNodeFromView` so we can run only `restoreDefaultValues` on the pre-operations queue and just do nothing in case the view doesn't exist (it is fine because we know it will be removed immediately). **Test plan** Tested that native animations still work properly in RNTester and tested that the edge case crash was fixed. Closes https://github.com/facebook/react-native/pull/14114 Differential Revision: D5128989 Pulled By: javache fbshipit-source-id: 9f47a2d3aafeb06d8ed1a4dd1800b8af225edb7d --- .../NativeAnimation/Nodes/RCTPropsAnimatedNode.h | 2 ++ .../NativeAnimation/Nodes/RCTPropsAnimatedNode.m | 11 +++++++---- .../NativeAnimation/RCTNativeAnimatedModule.m | 6 +++--- .../RCTNativeAnimatedNodesManager.h | 2 ++ .../RCTNativeAnimatedNodesManager.m | 16 ++++++++++++++++ 5 files changed, 30 insertions(+), 7 deletions(-) diff --git a/Libraries/NativeAnimation/Nodes/RCTPropsAnimatedNode.h b/Libraries/NativeAnimation/Nodes/RCTPropsAnimatedNode.h index 64edebf76812..ac220f43f4e0 100644 --- a/Libraries/NativeAnimation/Nodes/RCTPropsAnimatedNode.h +++ b/Libraries/NativeAnimation/Nodes/RCTPropsAnimatedNode.h @@ -20,4 +20,6 @@ - (void)disconnectFromView:(NSNumber *)viewTag; +- (void)restoreDefaultValues; + @end diff --git a/Libraries/NativeAnimation/Nodes/RCTPropsAnimatedNode.m b/Libraries/NativeAnimation/Nodes/RCTPropsAnimatedNode.m index e2c676d9b1ec..56495d35e20a 100644 --- a/Libraries/NativeAnimation/Nodes/RCTPropsAnimatedNode.m +++ b/Libraries/NativeAnimation/Nodes/RCTPropsAnimatedNode.m @@ -43,6 +43,13 @@ - (void)connectToView:(NSNumber *)viewTag } - (void)disconnectFromView:(NSNumber *)viewTag +{ + _connectedViewTag = nil; + _connectedViewName = nil; + _uiManager = nil; +} + +- (void)restoreDefaultValues { // Restore the default value for all props that were modified by this node. for (NSString *key in _propsDictionary.allKeys) { @@ -54,10 +61,6 @@ - (void)disconnectFromView:(NSNumber *)viewTag viewName:_connectedViewName props:_propsDictionary]; } - - _connectedViewTag = nil; - _connectedViewName = nil; - _uiManager = nil; } - (NSString *)propertyNameForParentTag:(NSNumber *)parentTag diff --git a/Libraries/NativeAnimation/RCTNativeAnimatedModule.m b/Libraries/NativeAnimation/RCTNativeAnimatedModule.m index 34a7a7031e17..5e182ab6802e 100644 --- a/Libraries/NativeAnimation/RCTNativeAnimatedModule.m +++ b/Libraries/NativeAnimation/RCTNativeAnimatedModule.m @@ -136,10 +136,10 @@ - (void)setBridge:(RCTBridge *)bridge RCT_EXPORT_METHOD(disconnectAnimatedNodeFromView:(nonnull NSNumber *)nodeTag viewTag:(nonnull NSNumber *)viewTag) { - // Disconnecting a view also restores its default values so we have to make - // sure this happens before views get updated with their new props. This is - // why we enqueue this on the pre-operations queue. [self addPreOperationBlock:^(RCTNativeAnimatedNodesManager *nodesManager) { + [nodesManager restoreDefaultValues:nodeTag]; + }]; + [self addOperationBlock:^(RCTNativeAnimatedNodesManager *nodesManager) { [nodesManager disconnectAnimatedNodeFromView:nodeTag viewTag:viewTag]; }]; } diff --git a/Libraries/NativeAnimation/RCTNativeAnimatedNodesManager.h b/Libraries/NativeAnimation/RCTNativeAnimatedNodesManager.h index 5aca37f6411a..1a0b684c10a2 100644 --- a/Libraries/NativeAnimation/RCTNativeAnimatedNodesManager.h +++ b/Libraries/NativeAnimation/RCTNativeAnimatedNodesManager.h @@ -36,6 +36,8 @@ viewTag:(nonnull NSNumber *)viewTag viewName:(nonnull NSString *)viewName; +- (void)restoreDefaultValues:(nonnull NSNumber *)nodeTag; + - (void)disconnectAnimatedNodeFromView:(nonnull NSNumber *)nodeTag viewTag:(nonnull NSNumber *)viewTag; diff --git a/Libraries/NativeAnimation/RCTNativeAnimatedNodesManager.m b/Libraries/NativeAnimation/RCTNativeAnimatedNodesManager.m index dc297ed7923e..2eed4b0a617d 100644 --- a/Libraries/NativeAnimation/RCTNativeAnimatedNodesManager.m +++ b/Libraries/NativeAnimation/RCTNativeAnimatedNodesManager.m @@ -135,6 +135,22 @@ - (void)disconnectAnimatedNodeFromView:(nonnull NSNumber *)nodeTag } } +- (void)restoreDefaultValues:(nonnull NSNumber *)nodeTag +{ + RCTAnimatedNode *node = _animationNodes[nodeTag]; + // Restoring default values needs to happen before UIManager operations so it is + // possible the node hasn't been created yet if it is being connected and + // disconnected in the same batch. In that case we don't need to restore + // default values since it will never actually update the view. + if (node == nil) { + return; + } + if (![node isKindOfClass:[RCTPropsAnimatedNode class]]) { + RCTLogError(@"Not a props node."); + } + [(RCTPropsAnimatedNode *)node restoreDefaultValues]; +} + - (void)dropAnimatedNode:(nonnull NSNumber *)tag { RCTAnimatedNode *node = _animationNodes[tag]; From 7837bdbf7c08a3874283a35dc1702134a58ff916 Mon Sep 17 00:00:00 2001 From: Pieter De Baets Date: Thu, 25 May 2017 06:11:30 -0700 Subject: [PATCH 0223/1101] Add error message when calling sync methods from the Chrome debugger Reviewed By: yungsters Differential Revision: D5123286 fbshipit-source-id: a7ac3fcc0b18e8d9562d99eb60268a3d98b3d647 --- Libraries/BatchedBridge/NativeModules.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Libraries/BatchedBridge/NativeModules.js b/Libraries/BatchedBridge/NativeModules.js index 3fa30bc8a94c..791cbbccffe1 100644 --- a/Libraries/BatchedBridge/NativeModules.js +++ b/Libraries/BatchedBridge/NativeModules.js @@ -80,6 +80,12 @@ function genMethod(moduleID: number, methodID: number, type: MethodType) { }; } else if (type === 'sync') { fn = function(...args: Array) { + if (__DEV__) { + invariant(global.nativeCallSyncHook, 'Calling synchronous methods on native ' + + 'modules is not supported in Chrome.\n\n Consider providing alternative ' + + 'methods to expose this method in debug mode, e.g. by exposing constants ' + + 'ahead-of-time.'); + } return global.nativeCallSyncHook(moduleID, methodID, args); }; } else { From 3c64d9541373eecdae3d012cd50e3ef5fbe25f81 Mon Sep 17 00:00:00 2001 From: Marcus do Nascimento Date: Thu, 25 May 2017 07:01:17 -0700 Subject: [PATCH 0224/1101] Exposes requestAuthorization method. Reviewed By: javache Differential Revision: D5129014 fbshipit-source-id: 1e0be6a8a00a2f38ca7b5b20d891148c5ba97467 --- Libraries/Geolocation/Geolocation.js | 10 +++++ Libraries/Geolocation/RCTLocationObserver.m | 47 ++++++++++++--------- 2 files changed, 36 insertions(+), 21 deletions(-) diff --git a/Libraries/Geolocation/Geolocation.js b/Libraries/Geolocation/Geolocation.js index 5f75e549fb4a..c8fd2890e8ce 100644 --- a/Libraries/Geolocation/Geolocation.js +++ b/Libraries/Geolocation/Geolocation.js @@ -71,6 +71,16 @@ type GeoOptions = { */ var Geolocation = { + /* + * Request suitable Location permission based on the key configured on pList. + * If NSLocationAlwaysUsageDescription is set, it will request Always authorization, + * although if NSLocationWhenInUseUsageDescription is set, it will request InUse + * authorization. + */ + requestAuthorization: function() { + RCTLocationObserver.requestAuthorization(); + }, + /* * Invokes the success callback once with the latest location info. Supported * options: timeout (ms), maximumAge (ms), enableHighAccuracy (bool) diff --git a/Libraries/Geolocation/RCTLocationObserver.m b/Libraries/Geolocation/RCTLocationObserver.m index e392db3203ac..d442ad7542d6 100644 --- a/Libraries/Geolocation/RCTLocationObserver.m +++ b/Libraries/Geolocation/RCTLocationObserver.m @@ -135,27 +135,7 @@ - (dispatch_queue_t)methodQueue - (void)beginLocationUpdatesWithDesiredAccuracy:(CLLocationAccuracy)desiredAccuracy distanceFilter:(CLLocationDistance)distanceFilter { - if (!_locationManager) { - _locationManager = [CLLocationManager new]; - _locationManager.delegate = self; - } - - // Request location access permission - if ([[NSBundle mainBundle] objectForInfoDictionaryKey:@"NSLocationAlwaysUsageDescription"] && - [_locationManager respondsToSelector:@selector(requestAlwaysAuthorization)]) { - [_locationManager requestAlwaysAuthorization]; - - // On iOS 9+ we also need to enable background updates - NSArray *backgroundModes = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"UIBackgroundModes"]; - if(backgroundModes && [backgroundModes containsObject:@"location"]) { - if([_locationManager respondsToSelector:@selector(setAllowsBackgroundLocationUpdates:)]) { - [_locationManager setAllowsBackgroundLocationUpdates:YES]; - } - } - } else if ([[NSBundle mainBundle] objectForInfoDictionaryKey:@"NSLocationWhenInUseUsageDescription"] && - [_locationManager respondsToSelector:@selector(requestWhenInUseAuthorization)]) { - [_locationManager requestWhenInUseAuthorization]; - } + [self requestAuthorization]; _locationManager.distanceFilter = distanceFilter; _locationManager.desiredAccuracy = desiredAccuracy; @@ -180,6 +160,31 @@ - (void)timeout:(NSTimer *)timer #pragma mark - Public API +RCT_EXPORT_METHOD(requestAuthorization) +{ + if (!_locationManager) { + _locationManager = [CLLocationManager new]; + _locationManager.delegate = self; + } + + // Request location access permission + if ([[NSBundle mainBundle] objectForInfoDictionaryKey:@"NSLocationAlwaysUsageDescription"] && + [_locationManager respondsToSelector:@selector(requestAlwaysAuthorization)]) { + [_locationManager requestAlwaysAuthorization]; + + // On iOS 9+ we also need to enable background updates + NSArray *backgroundModes = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"UIBackgroundModes"]; + if (backgroundModes && [backgroundModes containsObject:@"location"]) { + if ([_locationManager respondsToSelector:@selector(setAllowsBackgroundLocationUpdates:)]) { + [_locationManager setAllowsBackgroundLocationUpdates:YES]; + } + } + } else if ([[NSBundle mainBundle] objectForInfoDictionaryKey:@"NSLocationWhenInUseUsageDescription"] && + [_locationManager respondsToSelector:@selector(requestWhenInUseAuthorization)]) { + [_locationManager requestWhenInUseAuthorization]; + } +} + RCT_EXPORT_METHOD(startObserving:(RCTLocationOptions)options) { checkLocationConfig(); From 122b239ce0c1df1918c17fbd8413c5d00d265465 Mon Sep 17 00:00:00 2001 From: Jean Lauliac Date: Thu, 25 May 2017 07:37:42 -0700 Subject: [PATCH 0225/1101] packager: enable throwOnModuleCollision for jest-haste-map Reviewed By: davidaurelio Differential Revision: D5129231 fbshipit-source-id: dbb8f0096c29efaca865a788fb25c21c9cbbc5cb --- packager/src/node-haste/DependencyGraph.js | 1 + packager/src/node-haste/__tests__/DependencyGraph-test.js | 5 ++--- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packager/src/node-haste/DependencyGraph.js b/packager/src/node-haste/DependencyGraph.js index 0897cbcf2585..d71ebbcb4040 100644 --- a/packager/src/node-haste/DependencyGraph.js +++ b/packager/src/node-haste/DependencyGraph.js @@ -120,6 +120,7 @@ class DependencyGraph extends EventEmitter { resetCache: opts.resetCache, retainAllFiles: true, roots: opts.roots, + throwOnModuleCollision: true, useWatchman: opts.useWatchman, watch: opts.watch, }); diff --git a/packager/src/node-haste/__tests__/DependencyGraph-test.js b/packager/src/node-haste/__tests__/DependencyGraph-test.js index 34b0cf4137ce..c2cb54e969f5 100644 --- a/packager/src/node-haste/__tests__/DependencyGraph-test.js +++ b/packager/src/node-haste/__tests__/DependencyGraph-test.js @@ -1127,14 +1127,13 @@ describe('DependencyGraph', function() { return dgraph.catch(err => { expect(err.message).toEqual( - `Failed to build DependencyGraph: @providesModule naming collision:\n` + + 'jest-haste-map: @providesModule naming collision:\n' + ` Duplicate module name: index\n` + ` Paths: /root/b.js collides with /root/index.js\n\n` + 'This error is caused by a @providesModule declaration ' + 'with the same name across two different files.', ); - expect(err.type).toEqual('DependencyGraphError'); - expect(console.warn).toBeCalled(); + expect(console.warn).not.toBeCalled(); }); }); From 9e8a39ce2ca13c003b3f044e78adac2d4874c681 Mon Sep 17 00:00:00 2001 From: Douglas Lowder Date: Thu, 25 May 2017 08:37:55 -0700 Subject: [PATCH 0226/1101] Add ART library to UIExplorer for iOS, with sample and snapshot test Summary: **Motivation** The ART library is part of the react-native repo, but is not included in UIExplorer and has no native testing. This PR adds the ART library to UIExplorer, adds an example tab for it, and adds a snapshot test. **Test plan** New snapshot test. Closes https://github.com/facebook/react-native/pull/13621 Differential Revision: D4954082 Pulled By: javache fbshipit-source-id: 83e21c5df1b766ff6ca9f8914eb3382f7323627d --- RNTester/RNTester.xcodeproj/project.pbxproj | 77 +++++++++++++ .../RNTesterSnapshotTests.m | 1 + .../testARTExample_1-iOS10@2x.png | Bin 0 -> 74878 bytes .../testARTExample_1-iOS10_tvOS.png | Bin 0 -> 60279 bytes RNTester/js/ARTExample.js | 104 ++++++++++++++++++ RNTester/js/RNTesterList.ios.js | 5 + 6 files changed, 187 insertions(+) create mode 100644 RNTester/RNTesterIntegrationTests/ReferenceImages/RNTester-js-RNTesterApp.ios/testARTExample_1-iOS10@2x.png create mode 100644 RNTester/RNTesterIntegrationTests/ReferenceImages/RNTester-js-RNTesterApp.ios/testARTExample_1-iOS10_tvOS.png create mode 100644 RNTester/js/ARTExample.js diff --git a/RNTester/RNTester.xcodeproj/project.pbxproj b/RNTester/RNTester.xcodeproj/project.pbxproj index 5962d20ca807..6a291b5ebbaf 100644 --- a/RNTester/RNTester.xcodeproj/project.pbxproj +++ b/RNTester/RNTester.xcodeproj/project.pbxproj @@ -86,6 +86,8 @@ 2D4BD8E51DA2E20D005AC8A8 /* RCTComponentPropsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 13BCE84E1C9C209600DD7AAD /* RCTComponentPropsTests.m */; }; 2D4BD8E61DA2E20D005AC8A8 /* RNTesterUnitTestsBundle.js in Resources */ = {isa = PBXBuildFile; fileRef = 3DD981D51D33C6FB007DC7BE /* RNTesterUnitTestsBundle.js */; }; 2D4BD8E71DA2E20D005AC8A8 /* libOCMock.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 14D6D7101B220EB3001FB087 /* libOCMock.a */; }; + 2D66FF8F1ECA406D00F0A767 /* libART.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2D66FF651ECA405900F0A767 /* libART.a */; }; + 2D66FF901ECA407E00F0A767 /* libART-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2D66FF671ECA405900F0A767 /* libART-tvOS.a */; }; 2D8C2E321DA40403000EE098 /* RCTMultipartStreamReaderTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 001BFCE31D838343008E587E /* RCTMultipartStreamReaderTests.m */; }; 2DD323DC1DA2DDBF000FE1B8 /* FlexibleSizeExampleView.m in Sources */ = {isa = PBXBuildFile; fileRef = 27F441E81BEBE5030039B79C /* FlexibleSizeExampleView.m */; }; 2DD323DD1DA2DDBF000FE1B8 /* UpdatePropertiesExampleView.m in Sources */ = {isa = PBXBuildFile; fileRef = 272E6B3C1BEA849E001FCF37 /* UpdatePropertiesExampleView.m */; }; @@ -215,6 +217,34 @@ remoteGlobalIDString = 2DD3238F1DA2DD8A000FE1B8; remoteInfo = "RNTester-tvOS"; }; + 2D66FF641ECA405900F0A767 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 2D66FF5F1ECA405900F0A767 /* ART.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 0CF68AC11AF0540F00FF9E5C; + remoteInfo = ART; + }; + 2D66FF661ECA405900F0A767 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 2D66FF5F1ECA405900F0A767 /* ART.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 323A12871E5F266B004975B8; + remoteInfo = "ART-tvOS"; + }; + 2D66FF8B1ECA405900F0A767 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 14AADEFF1AC3DB95002390C9 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 3D383D3C1EBD27B6005632C8; + remoteInfo = "third-party-tvOS"; + }; + 2D66FF8D1ECA405900F0A767 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 14AADEFF1AC3DB95002390C9 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 3D383D621EBD27B9005632C8; + remoteInfo = "double-conversion-tvOS"; + }; 2DD323A61DA2DD8B000FE1B8 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; @@ -445,6 +475,7 @@ 27F441E81BEBE5030039B79C /* FlexibleSizeExampleView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = FlexibleSizeExampleView.m; path = RNTester/NativeExampleViews/FlexibleSizeExampleView.m; sourceTree = ""; }; 27F441EA1BEBE5030039B79C /* FlexibleSizeExampleView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FlexibleSizeExampleView.h; path = RNTester/NativeExampleViews/FlexibleSizeExampleView.h; sourceTree = ""; }; 2D4624E01DA2EA6900C74D09 /* RNTester-tvOSIntegrationTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "RNTester-tvOSIntegrationTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; + 2D66FF5F1ECA405900F0A767 /* ART.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = ART.xcodeproj; path = ../Libraries/ART/ART.xcodeproj; sourceTree = ""; }; 2DD323901DA2DD8A000FE1B8 /* RNTester-tvOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "RNTester-tvOS.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 2DD323A01DA2DD8B000FE1B8 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 2DD323A51DA2DD8B000FE1B8 /* RNTester-tvOSUnitTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "RNTester-tvOSUnitTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -495,6 +526,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 2D66FF8F1ECA406D00F0A767 /* libART.a in Frameworks */, 14AADF051AC3DBB1002390C9 /* libReact.a in Frameworks */, 147CED4C1AB3532B00DA3E4C /* libRCTActionSheet.a in Frameworks */, 134454601AAFCABD003F0779 /* libRCTAdSupport.a in Frameworks */, @@ -532,6 +564,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 2D66FF901ECA407E00F0A767 /* libART-tvOS.a in Frameworks */, 2DD323EA1DA2DE3F000FE1B8 /* libReact.a in Frameworks */, 2DD323E31DA2DE3F000FE1B8 /* libRCTAnimation.a in Frameworks */, 3D302F221DF8285100D6DDAE /* libRCTImage-tvOS.a in Frameworks */, @@ -565,6 +598,7 @@ 1316A21D1AA397F400C0188E /* Libraries */ = { isa = PBXGroup; children = ( + 2D66FF5F1ECA405900F0A767 /* ART.xcodeproj */, 14AADEFF1AC3DB95002390C9 /* React.xcodeproj */, 14E0EEC81AB118F7000DECC3 /* RCTActionSheet.xcodeproj */, 134454551AAFCAAE003F0779 /* RCTAdSupport.xcodeproj */, @@ -754,7 +788,9 @@ 3D0574901DE6008900184BB4 /* libjschelpers.a */, 3D0574921DE6008900184BB4 /* libjschelpers.a */, 3D507F421EBC88B700B56834 /* libthird-party.a */, + 2D66FF8C1ECA405900F0A767 /* libthird-party.a */, 3D507F441EBC88B700B56834 /* libdouble-conversion.a */, + 2D66FF8E1ECA405900F0A767 /* libdouble-conversion.a */, ); name = Products; sourceTree = ""; @@ -802,6 +838,15 @@ name = NativeExampleViews; sourceTree = ""; }; + 2D66FF601ECA405900F0A767 /* Products */ = { + isa = PBXGroup; + children = ( + 2D66FF651ECA405900F0A767 /* libART.a */, + 2D66FF671ECA405900F0A767 /* libART-tvOS.a */, + ); + name = Products; + sourceTree = ""; + }; 2DD323911DA2DD8B000FE1B8 /* RNTester-tvOS */ = { isa = PBXGroup; children = ( @@ -1056,6 +1101,10 @@ productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */; projectDirPath = ""; projectReferences = ( + { + ProductGroup = 2D66FF601ECA405900F0A767 /* Products */; + ProjectRef = 2D66FF5F1ECA405900F0A767 /* ART.xcodeproj */; + }, { ProductGroup = 147CED471AB34F8C00DA3E4C /* Products */; ProjectRef = 14E0EEC81AB118F7000DECC3 /* RCTActionSheet.xcodeproj */; @@ -1208,6 +1257,34 @@ remoteRef = 14DC67F01AB71876001358AB /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; + 2D66FF651ECA405900F0A767 /* libART.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libART.a; + remoteRef = 2D66FF641ECA405900F0A767 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 2D66FF671ECA405900F0A767 /* libART-tvOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libART-tvOS.a"; + remoteRef = 2D66FF661ECA405900F0A767 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 2D66FF8C1ECA405900F0A767 /* libthird-party.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libthird-party.a"; + remoteRef = 2D66FF8B1ECA405900F0A767 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 2D66FF8E1ECA405900F0A767 /* libdouble-conversion.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libdouble-conversion.a"; + remoteRef = 2D66FF8D1ECA405900F0A767 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; 2DD323B51DA2DD8B000FE1B8 /* libRCTAnimation.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; diff --git a/RNTester/RNTesterIntegrationTests/RNTesterSnapshotTests.m b/RNTester/RNTesterIntegrationTests/RNTesterSnapshotTests.m index 0d177887daaa..f88704a7f73b 100644 --- a/RNTester/RNTesterIntegrationTests/RNTesterSnapshotTests.m +++ b/RNTester/RNTesterIntegrationTests/RNTesterSnapshotTests.m @@ -39,6 +39,7 @@ - (void)test##name \ RCT_TEST(ViewExample) RCT_TEST(LayoutExample) +RCT_TEST(ARTExample) RCT_TEST(ScrollViewExample) RCT_TEST(TextExample) #if !TARGET_OS_TV diff --git a/RNTester/RNTesterIntegrationTests/ReferenceImages/RNTester-js-RNTesterApp.ios/testARTExample_1-iOS10@2x.png b/RNTester/RNTesterIntegrationTests/ReferenceImages/RNTester-js-RNTesterApp.ios/testARTExample_1-iOS10@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..fc8d91df94580fdf375ce5111165d1969d554e9c GIT binary patch literal 74878 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 + + + + + + + + + + + ); + } +} + +exports.title = ''; +exports.displayName = 'ARTExample'; +exports.description = 'ART input for numeric values'; +exports.examples = [ + { + title: 'ART Example', + render(): React.Element { + return ; + } + }, +]; diff --git a/RNTester/js/RNTesterList.ios.js b/RNTester/js/RNTesterList.ios.js index 0d92f58944c5..51ce47981526 100644 --- a/RNTester/js/RNTesterList.ios.js +++ b/RNTester/js/RNTesterList.ios.js @@ -23,6 +23,11 @@ const ComponentExamples: Array = [ module: require('./ActivityIndicatorExample'), supportsTVOS: true, }, + { + key: 'ARTExample', + module: require('./ARTExample'), + supportsTVOS: true, + }, { key: 'ButtonExample', module: require('./ButtonExample'), From 44cd9fcdeda000368d9927b784b3cfa80be87723 Mon Sep 17 00:00:00 2001 From: Jean Lauliac Date: Thu, 25 May 2017 08:52:42 -0700 Subject: [PATCH 0227/1101] packager: use tempdir by default Reviewed By: davidaurelio Differential Revision: D5129430 fbshipit-source-id: 3277341226754fd0a86d2ba3c6d64f3fa1b86e84 --- packager/index.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packager/index.js b/packager/index.js index cfae75fdf8a4..b2291dc9aadc 100644 --- a/packager/index.js +++ b/packager/index.js @@ -12,6 +12,7 @@ 'use strict'; const Logger = require('./src/Logger'); +const TransformCaching = require('./src/lib/TransformCaching'); const debug = require('debug'); const invariant = require('fbjs/lib/invariant'); @@ -120,7 +121,9 @@ function createServer(options: StrictOptions): Server { // Some callsites may not be Flowified yet. invariant(options.reporter != null, 'createServer() requires reporter'); - invariant(options.transformCache != null, 'createServer() requires transformCache'); + if (options.transformCache == null) { + options.transformCache = TransformCaching.useTempDir(); + } const serverOptions = Object.assign({}, options); delete serverOptions.verbose; const ServerClass = require('./src/Server'); From 6ca492a4d2bd7a36afaf20de1ab7c8fcca835cbd Mon Sep 17 00:00:00 2001 From: David Aurelio Date: Thu, 25 May 2017 09:36:35 -0700 Subject: [PATCH 0228/1101] Fix `scripts/packager.sh` for RNTester Summary: fixes RNTester for open source Reviewed By: bestander Differential Revision: D5129516 fbshipit-source-id: d7bb7ee23bd57b8c35ca7f3876eed17d88982cef --- scripts/packager.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/packager.sh b/scripts/packager.sh index 2c6a0eba6699..2f5bc15a05fa 100755 --- a/scripts/packager.sh +++ b/scripts/packager.sh @@ -8,4 +8,5 @@ # of patent rights can be found in the PATENTS file in the same directory. THIS_DIR=$(dirname "$0") -node "$THIS_DIR/../local-cli/cli.js" start "$@" +cd "$THIS_DIR/.." +node "./local-cli/cli.js" start "$@" From aa02d19db7d52fc80062cfd6bc48f0ab35694383 Mon Sep 17 00:00:00 2001 From: David Aurelio Date: Thu, 25 May 2017 10:11:17 -0700 Subject: [PATCH 0229/1101] Allow RAM bundle output Summary: Hooks up indexed RAM bundle output for the build. Reviewed By: jeanlauliac Differential Revision: D5121515 fbshipit-source-id: 47a540d8ec016a36e21e1daa2876f582dbdb8504 --- packager/src/ModuleGraph/ModuleGraph.js | 8 ++++++-- packager/src/ModuleGraph/types.flow.js | 5 +++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/packager/src/ModuleGraph/ModuleGraph.js b/packager/src/ModuleGraph/ModuleGraph.js index 9b29505d6579..3c00b69c6ea3 100644 --- a/packager/src/ModuleGraph/ModuleGraph.js +++ b/packager/src/ModuleGraph/ModuleGraph.js @@ -17,6 +17,7 @@ const seq = require('async/seq'); const virtualModule = require('./module').virtual; import type { + BuildResult, Callback, GraphFn, GraphResult, @@ -27,7 +28,7 @@ import type { type BuildFn = ( entryPoints: Iterable, options: BuildOptions, - callback: Callback, + callback: Callback, ) => void; type BuildOptions = {| @@ -86,9 +87,12 @@ exports.createBuildSetup = ( polyfills, } = nullthrows(result); + const preludeScript = prelude(optimize); + const prependedScripts = [preludeScript, ...moduleSystem, ...polyfills]; callback(null, { entryModules, - modules: concat([prelude(optimize)], moduleSystem, polyfills, modules), + modules: concat(prependedScripts, modules), + prependedScripts, }); }); }; diff --git a/packager/src/ModuleGraph/types.flow.js b/packager/src/ModuleGraph/types.flow.js index 4f66d3039ba2..b75b6655ffae 100644 --- a/packager/src/ModuleGraph/types.flow.js +++ b/packager/src/ModuleGraph/types.flow.js @@ -15,6 +15,11 @@ import type {Ast} from 'babel-core'; import type {Console} from 'console'; export type {Transformer} from '../JSTransformer/worker/worker.js'; +export type BuildResult = {| + ...GraphResult, + prependedScripts: $ReadOnlyArray, +|}; + export type Callback = (Error => void) & ((null | void, A, B) => void); From f91e376515e820ae378e16dc9602a8c4d573a66e Mon Sep 17 00:00:00 2001 From: David Aurelio Date: Thu, 25 May 2017 10:11:19 -0700 Subject: [PATCH 0230/1101] Fix code generation for indexed RAM bundles Summary: Code generation for indexed RAM bundles did not append module ID and dependencies. This fixes that. Eventually, we only want to have the call to `addModuleIdsToModuleWrapper` in one place. Reviewed By: jeanlauliac Differential Revision: D5129255 fbshipit-source-id: 7f6148dd607bbf7c97e9df7936a07bde3f05b3aa --- .../__tests__/indexed-ram-bundle-test.js | 20 +++++++++++-------- .../ModuleGraph/output/indexed-ram-bundle.js | 16 +++++++++------ 2 files changed, 22 insertions(+), 14 deletions(-) diff --git a/packager/src/ModuleGraph/output/__tests__/indexed-ram-bundle-test.js b/packager/src/ModuleGraph/output/__tests__/indexed-ram-bundle-test.js index df23a65c1f60..ed29da34ab99 100644 --- a/packager/src/ModuleGraph/output/__tests__/indexed-ram-bundle-test.js +++ b/packager/src/ModuleGraph/output/__tests__/indexed-ram-bundle-test.js @@ -14,6 +14,7 @@ declare var jest: any; jest.disableAutomock(); const indexedRamBundle = require('../indexed-ram-bundle'); +const {addModuleIdsToModuleWrapper} = require('../util'); declare var describe: any; declare var expect: any; @@ -62,7 +63,7 @@ it('contains the code after the offset table', () => { table.forEach(([offset, length], i) => { const moduleCode = code.slice(codeOffset + offset, codeOffset + offset + length - 1); - expect(moduleCode.toString()).toBe(modules[i].file.code); + expect(moduleCode.toString()).toBe(expectedCode(modules[i])); }); }); @@ -93,7 +94,7 @@ describe('Startup section optimization', () => { const startupSection = code.slice(codeOffset, codeOffset + startupSectionLength - 1); expect(startupSection.toString()) - .toBe(preloaded.concat([requireCall]).map(getCode).join('\n')); + .toBe(preloaded.concat([requireCall]).map(expectedCode).join('\n')); preloaded.forEach(m => { @@ -105,7 +106,7 @@ describe('Startup section optimization', () => { if (offset !== 0 && length !== 0) { const moduleCode = code.slice(codeOffset + offset, codeOffset + offset + length - 1); - expect(moduleCode.toString()).toBe(modules[i].file.code); + expect(moduleCode.toString()).toBe(expectedCode(modules[i])); } }); }); @@ -155,7 +156,7 @@ describe('RAM groups / common sections', () => { const [offset, length] = groupEntry; const groupCode = code.slice(codeOffset + offset, codeOffset + offset + length - 1); expect(groupCode.toString()) - .toEqual(group.map(m => m.file.code).join('\n')); + .toEqual(group.map(expectedCode).join('\n')); }); }); @@ -239,6 +240,13 @@ function makeDependency(name) { }; } +function expectedCode(module) { + const {file} = module; + return file.type === 'module' + ? addModuleIdsToModuleWrapper(module, idForPath) + : file.code; +} + function getId(path) { if (path === requireCall.file.path) { return -1; @@ -251,10 +259,6 @@ function getId(path) { return id; } -function getCode(module) { - return module.file.code; -} - function getPath(module) { return module.file.path; } diff --git a/packager/src/ModuleGraph/output/indexed-ram-bundle.js b/packager/src/ModuleGraph/output/indexed-ram-bundle.js index 166738b84230..286cc27bc27f 100644 --- a/packager/src/ModuleGraph/output/indexed-ram-bundle.js +++ b/packager/src/ModuleGraph/output/indexed-ram-bundle.js @@ -15,7 +15,7 @@ const nullthrows = require('fbjs/lib/nullthrows'); const {createRamBundleGroups} = require('../../Bundler/util'); const {buildTableAndContents, createModuleGroups} = require('../../shared/output/unbundle/as-indexed-file'); -const {concat} = require('./util'); +const {addModuleIdsToModuleWrapper, concat} = require('./util'); import type {FBIndexMap} from '../../lib/SourceMap.js'; import type {OutputFn} from '../types.flow'; @@ -35,7 +35,7 @@ function asIndexedRamBundle({ const moduleGroups = createModuleGroups(ramGroups, deferredModules); const tableAndContents = buildTableAndContents( - startupModules.map(getModuleCode).join('\n'), + startupModules.map(m => getModuleCode(m, idForPath)).join('\n'), deferredModules, moduleGroups, 'utf8', @@ -52,9 +52,10 @@ function asIndexedRamBundle({ }; } -function toModuleTransport({dependencies, file}, idForPath) { +function toModuleTransport(module, idForPath) { + const {dependencies, file} = module; return { - code: file.code, + code: getModuleCode(module, idForPath), dependencies, id: idForPath(file), map: file.map, @@ -63,8 +64,11 @@ function toModuleTransport({dependencies, file}, idForPath) { }; } -function getModuleCode(module) { - return module.file.code; +function getModuleCode(module, idForPath) { + const {file} = module; + return file.type === 'module' + ? addModuleIdsToModuleWrapper(module, idForPath) + : file.code; } function partition(modules, preloadedModules) { From f702cbecba6248394f9bb660aa834c1b27f3bedd Mon Sep 17 00:00:00 2001 From: Caleb Meredith Date: Thu, 25 May 2017 10:18:48 -0700 Subject: [PATCH 0231/1101] Render section footer in sections with no data Summary: Fixes https://github.com/facebook/react-native/issues/13784 The section footer was only rendered with the last item of the section. However, that meant in sections where no items were rendered, no section footer would be rendered. This patch makes sure that when there are no items the section footer is rendered with the section header in addition to adding tests asserting the existance of section footers in empty lists. One potential point of contention is whether or not a section separator (as defined by the `SectionSeparatorComponent` prop to ``) should be rendered in an empty list. I did not include a section separator for empty lists, but let me know if you think one should be included. See the test plan below for an image of an empty section rendered without a section separator. I was also running into a lint error, `no-alert`, in `SectionListExample.js` around line 135 that blocked me from publishing. This error looks to be triggered when the `alert()` global function is called, so to fix the error I added an import for the `Alert` module and called the `alert()` function on that module. To help debug the `scrollToLocation()` behavior that was modified as a part of this PR I added three buttons (can be seen in the test plan image) which scroll to arbitrary points in the list. Reviewed By: sahrens Differential Revision: D5084095 fbshipit-source-id: 4c98bebc1c3f1ceaa5a634fa144685d83d1072df --- Libraries/Lists/VirtualizedSectionList.js | 57 ++++-- Libraries/Lists/__tests__/SectionList-test.js | 22 +++ .../__snapshots__/SectionList-test.js.snap | 168 ++++++++++++++++-- RNTester/js/SectionListExample.js | 29 ++- 4 files changed, 244 insertions(+), 32 deletions(-) diff --git a/Libraries/Lists/VirtualizedSectionList.js b/Libraries/Lists/VirtualizedSectionList.js index 42b7e15b6ab9..474f808620db 100644 --- a/Libraries/Lists/VirtualizedSectionList.js +++ b/Libraries/Lists/VirtualizedSectionList.js @@ -145,7 +145,7 @@ class VirtualizedSectionList }) { let index = params.itemIndex + 1; for (let ii = 0; ii < params.sectionIndex; ii++) { - index += this.props.sections[ii].data.length + 1; + index += this.props.sections[ii].data.length + 2; } const toIndexParams = { ...params, @@ -169,6 +169,7 @@ class VirtualizedSectionList section: SectionT, key: string, // Key of the section or combined key for section + item index: ?number, // Relative index within the section + header?: ?boolean, // True if this is the section header leadingItem?: ?Item, leadingSection?: ?SectionT, trailingItem?: ?Item, @@ -179,11 +180,25 @@ class VirtualizedSectionList for (let ii = 0; ii < this.props.sections.length; ii++) { const section = this.props.sections[ii]; const key = section.key || String(ii); - itemIndex -= 1; // The section itself is an item - if (itemIndex >= section.data.length) { - itemIndex -= section.data.length; + itemIndex -= 1; // The section adds an item for the header + if (itemIndex >= section.data.length + 1) { + itemIndex -= section.data.length + 1; // The section adds an item for the footer. } else if (itemIndex === -1) { - return {section, key, index: null, trailingSection: this.props.sections[ii + 1]}; + return { + section, + key: key + ':header', + index: null, + header: true, + trailingSection: this.props.sections[ii + 1], + }; + } else if (itemIndex === section.data.length) { + return { + section, + key: key + ':footer', + index: null, + header: false, + trailingSection: this.props.sections[ii + 1], + }; } else { const keyExtractor = section.keyExtractor || defaultKeyExtractor; return { @@ -232,8 +247,14 @@ class VirtualizedSectionList } const infoIndex = info.index; if (infoIndex == null) { - const {renderSectionHeader} = this.props; - return renderSectionHeader ? renderSectionHeader({section: info.section}) : null; + const {section} = info; + if (info.header === true) { + const {renderSectionHeader} = this.props; + return renderSectionHeader ? renderSectionHeader({section}) : null; + } else { + const {renderSectionFooter} = this.props; + return renderSectionFooter ? renderSectionFooter({section}) : null; + } } else { const renderItem = info.section.renderItem || this.props.renderItem; const SeparatorComponent = this._getSeparatorComponent(index, info); @@ -254,10 +275,6 @@ class VirtualizedSectionList prevCellKey={(this._subExtractor(index - 1) || {}).key} ref={(ref) => {this._cellRefs[info.key] = ref;}} renderItem={renderItem} - renderSectionFooter={infoIndex === info.section.data.length - 1 - ? this.props.renderSectionFooter - : undefined - } section={info.section} trailingItem={info.trailingItem} trailingSection={info.trailingSection} @@ -296,7 +313,7 @@ class VirtualizedSectionList const itemCount = props.sections.reduce( (v, section) => { stickyHeaderIndices.push(v + offset); - return v + section.data.length + 1; + return v + section.data.length + 2; // Add two for the section header and footer. }, 0 ); @@ -345,7 +362,6 @@ class ItemWithSeparator extends React.Component { onUpdateSeparator: (cellKey: string, newProps: Object) => void, prevCellKey?: ?string, renderItem: Function, - renderSectionFooter: ?Function, section: Object, leadingItem: ?Item, leadingSection: ?Object, @@ -406,9 +422,8 @@ class ItemWithSeparator extends React.Component { const leadingSeparator = LeadingSeparatorComponent && ; const separator = SeparatorComponent && ; - const footer = this.props.renderSectionFooter && this.props.renderSectionFooter({section}); - return (leadingSeparator || separator || footer) - ? {leadingSeparator}{element}{separator}{footer} + return (leadingSeparator || separator) + ? {leadingSeparator}{element}{separator} : element; } } @@ -419,12 +434,16 @@ function getItem(sections: ?$ReadOnlyArray, index: number): ?Item { } let itemIdx = index - 1; for (let ii = 0; ii < sections.length; ii++) { - if (itemIdx === -1) { - return sections[ii]; // The section itself is the item + if (itemIdx === -1 || itemIdx === sections[ii].data.length) { + // We intend for there to be overflow by one on both ends of the list. + // This will be for headers and footers. When returning a header or footer + // item the section itself is the item. + return sections[ii]; } else if (itemIdx < sections[ii].data.length) { + // If we are in the bounds of the list's data then return the item. return sections[ii].data[itemIdx]; } else { - itemIdx -= (sections[ii].data.length + 1); + itemIdx -= (sections[ii].data.length + 2); // Add two for the header and footer } } return null; diff --git a/Libraries/Lists/__tests__/SectionList-test.js b/Libraries/Lists/__tests__/SectionList-test.js index 2250af966b35..4e529238db55 100644 --- a/Libraries/Lists/__tests__/SectionList-test.js +++ b/Libraries/Lists/__tests__/SectionList-test.js @@ -39,6 +39,7 @@ describe('SectionList', () => { it('renders all the bells and whistles', () => { const component = ReactTestRenderer.create( } ListEmptyComponent={(props) => } ListFooterComponent={(props) =>

      Follow these instructions if you need to build native code in your project. For example, if you are integrating React Native into an existing application, or if you "ejected" from Create React Native App, you'll need this section.

    JdVZr(o3d+b&opc)MpNh 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π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