From 232dd22487f061d7bfb98a27733412f48f22bd6e Mon Sep 17 00:00:00 2001 From: Satyajit Sahoo Date: Thu, 21 Jan 2016 06:53:45 +0530 Subject: [PATCH 1/4] Add an 'Experiments' class to enable/disable experiments --- .../java/com/facebook/react/Experiments.java | 28 +++++++++++++++++++ .../devsupport/DevSupportManagerImpl.java | 27 ++++++++++-------- 2 files changed, 44 insertions(+), 11 deletions(-) create mode 100644 ReactAndroid/src/main/java/com/facebook/react/Experiments.java diff --git a/ReactAndroid/src/main/java/com/facebook/react/Experiments.java b/ReactAndroid/src/main/java/com/facebook/react/Experiments.java new file mode 100644 index 000000000000..99b5140a2025 --- /dev/null +++ b/ReactAndroid/src/main/java/com/facebook/react/Experiments.java @@ -0,0 +1,28 @@ +package com.facebook.react; + +import java.util.HashSet; +import java.util.Set; + +public class Experiments { + + public static String HOT_MODULE_REPLACEMENT = "HOT_MODULE_REPLACEMENT"; + + private static Set enabledExperiments; + + public static void enableExperiment(String experiment) { + if (enabledExperiments == null) { + enabledExperiments = new HashSet<>(); + } + enabledExperiments.add(experiment); + } + + public static void disableExperiment(String experiment) { + if (enabledExperiments != null) { + enabledExperiments.remove(experiment); + } + } + + public static boolean isExperimentEnabled(String experiment) { + return enabledExperiments != null && enabledExperiments.contains(experiment); + } +} 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 7bdeea2d7ce5..18050ae50191 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerImpl.java +++ b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerImpl.java @@ -36,6 +36,7 @@ import com.facebook.common.logging.FLog; import com.facebook.infer.annotation.Assertions; +import com.facebook.react.Experiments; import com.facebook.react.R; import com.facebook.react.bridge.CatalystInstance; import com.facebook.react.bridge.DefaultNativeModuleCallExceptionHandler; @@ -265,17 +266,21 @@ public void onOptionSelected() { handleReloadJS(); } }); - options.put( - mDevSettings.isHotModuleReplacementEnabled() - ? mApplicationContext.getString(R.string.catalyst_hot_module_replacement_off) - : mApplicationContext.getString(R.string.catalyst_hot_module_replacement), - new DevOptionHandler() { - @Override - public void onOptionSelected() { - mDevSettings.setHotModuleReplacementEnabled(!mDevSettings.isHotModuleReplacementEnabled()); - handleReloadJS(); - } - }); + + if (Experiments.isExperimentEnabled(Experiments.HOT_MODULE_REPLACEMENT)) { + options.put( + mDevSettings.isHotModuleReplacementEnabled() + ? mApplicationContext.getString(R.string.catalyst_hot_module_replacement_off) + : mApplicationContext.getString(R.string.catalyst_hot_module_replacement), + new DevOptionHandler() { + @Override + public void onOptionSelected() { + mDevSettings.setHotModuleReplacementEnabled(!mDevSettings.isHotModuleReplacementEnabled()); + handleReloadJS(); + } + }); + } + options.put( mDevSettings.isReloadOnJSChangeEnabled() ? mApplicationContext.getString(R.string.catalyst_live_reload_off) From e8ad45e4f21631c56cd02684b369a4459c2076cf Mon Sep 17 00:00:00 2001 From: Satyajit Sahoo Date: Thu, 21 Jan 2016 20:40:02 +0530 Subject: [PATCH 2/4] Added comments for the 'Experiment' class --- .../java/com/facebook/react/Experiments.java | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/ReactAndroid/src/main/java/com/facebook/react/Experiments.java b/ReactAndroid/src/main/java/com/facebook/react/Experiments.java index 99b5140a2025..f252ca084263 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/Experiments.java +++ b/ReactAndroid/src/main/java/com/facebook/react/Experiments.java @@ -1,14 +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. + */ + package com.facebook.react; import java.util.HashSet; import java.util.Set; + +/** + * This class exposes a way to enable/disable exprimental features in React Native. + */ + public class Experiments { + // Enables Hot Module Replacement menu item in the developer menu public static String HOT_MODULE_REPLACEMENT = "HOT_MODULE_REPLACEMENT"; private static Set enabledExperiments; + /** + * Enables an experiment + * + * @param experiment - the experiment to enable + */ public static void enableExperiment(String experiment) { if (enabledExperiments == null) { enabledExperiments = new HashSet<>(); @@ -16,12 +36,22 @@ public static void enableExperiment(String experiment) { enabledExperiments.add(experiment); } + /** + * Disbales an expriment + * + * @param experiment - the experiment to disable + */ public static void disableExperiment(String experiment) { if (enabledExperiments != null) { enabledExperiments.remove(experiment); } } + /** + * Checks if an expriment is enabled + * + * @param experiment - the experiment to check for + */ public static boolean isExperimentEnabled(String experiment) { return enabledExperiments != null && enabledExperiments.contains(experiment); } From f0c9b3f7bf8a06f75a51d3c4c0d6c652d0ad9c58 Mon Sep 17 00:00:00 2001 From: Satyajit Sahoo Date: Thu, 21 Jan 2016 22:01:33 +0530 Subject: [PATCH 3/4] Fix typos --- .../src/main/java/com/facebook/react/Experiments.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/Experiments.java b/ReactAndroid/src/main/java/com/facebook/react/Experiments.java index f252ca084263..5e46527bc306 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/Experiments.java +++ b/ReactAndroid/src/main/java/com/facebook/react/Experiments.java @@ -14,9 +14,8 @@ /** - * This class exposes a way to enable/disable exprimental features in React Native. + * This class exposes a way to enable/disable experimental features in React Native. */ - public class Experiments { // Enables Hot Module Replacement menu item in the developer menu @@ -37,7 +36,7 @@ public static void enableExperiment(String experiment) { } /** - * Disbales an expriment + * Disables an experiment * * @param experiment - the experiment to disable */ @@ -48,7 +47,7 @@ public static void disableExperiment(String experiment) { } /** - * Checks if an expriment is enabled + * Checks if an experiment is enabled * * @param experiment - the experiment to check for */ From 555f5c8174e342f17846d9253adbe64192160ffc Mon Sep 17 00:00:00 2001 From: Satyajit Sahoo Date: Thu, 21 Jan 2016 22:03:43 +0530 Subject: [PATCH 4/4] Remove unnecessary JavaDoc --- .../src/main/java/com/facebook/react/Experiments.java | 6 ------ 1 file changed, 6 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/Experiments.java b/ReactAndroid/src/main/java/com/facebook/react/Experiments.java index 5e46527bc306..046ca6789c8b 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/Experiments.java +++ b/ReactAndroid/src/main/java/com/facebook/react/Experiments.java @@ -25,8 +25,6 @@ public class Experiments { /** * Enables an experiment - * - * @param experiment - the experiment to enable */ public static void enableExperiment(String experiment) { if (enabledExperiments == null) { @@ -37,8 +35,6 @@ public static void enableExperiment(String experiment) { /** * Disables an experiment - * - * @param experiment - the experiment to disable */ public static void disableExperiment(String experiment) { if (enabledExperiments != null) { @@ -48,8 +44,6 @@ public static void disableExperiment(String experiment) { /** * Checks if an experiment is enabled - * - * @param experiment - the experiment to check for */ public static boolean isExperimentEnabled(String experiment) { return enabledExperiments != null && enabledExperiments.contains(experiment);