BREAKING: Android: Refactor so uimanager can depend on modules/core

Summary:
cc astreet

The goal of this PR is to enable the buck module `uimanager` to depend on `modules/core` without introducing any dependency cycles.

PR #11008 relies on this PR. PR #11008 needs `uimanager` to depend on `modules/core` so that `uimanager` can fire events using `RCTDeviceEventEmitter` which is in `modules/core`.

This PR moved a number of classes and interfaces:
  - `com.facebook.react.modules.debug.DeveloperSettings` -> `com.facebook.react.modules.debug.interfaces.DeveloperSettings`
  - `com.facebook.react.devsupport.DevOptionHandler` -> `com.facebook.react.devsupport.interfaces.DevOptionHandler `
  - `com.facebook.react.devsupport.DevSupportManager` -> `com.facebook.react.devsupport.interfaces.DevSupportManager`
  - `com.facebook.react.devsupport.DevServerHelper.PackagerStatusCallback` -> `com.facebook.react.devsupport.interfaces.PackagerStatusCallback`
  - The class `com.facebook.react.devsupport.StackTraceHelper.StackFrame` was renamed to `StackFram
Closes https://github.com/facebook/react-native/pull/12329

Differential Revision: D4551160

Pulled By: astreet

fbshipit-source-id: 3a78443c4f30469b13ddfbdcc9bbef6af9e8381a
This commit is contained in:
Adam Comella 2017-02-13 11:01:30 -08:00 коммит произвёл Facebook Github Bot
Родитель 4161bada4a
Коммит ea6845ca22
37 изменённых файлов: 158 добавлений и 51 удалений

Просмотреть файл

@ -16,10 +16,10 @@ android_library(
react_native_target('java/com/facebook/react/bridge:bridge'), 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/common:common'),
react_native_target('java/com/facebook/react/cxxbridge:bridge'), 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/module/model:model'), react_native_target('java/com/facebook/react/module/model:model'),
react_native_target('java/com/facebook/react/modules/core:core'), react_native_target('java/com/facebook/react/modules/core:core'),
react_native_target('java/com/facebook/react/modules/debug:debug'), react_native_target('java/com/facebook/react/modules/debug:interfaces'),
react_native_target('java/com/facebook/react/shell:shell'), react_native_target('java/com/facebook/react/shell:shell'),
react_native_target('java/com/facebook/react/uimanager:uimanager'), react_native_target('java/com/facebook/react/uimanager:uimanager'),
], ],

Просмотреть файл

@ -30,7 +30,7 @@ import com.facebook.react.bridge.SoftAssertions;
import com.facebook.react.bridge.UiThreadUtil; import com.facebook.react.bridge.UiThreadUtil;
import com.facebook.react.common.ApplicationHolder; import com.facebook.react.common.ApplicationHolder;
import com.facebook.react.common.futures.SimpleSettableFuture; import com.facebook.react.common.futures.SimpleSettableFuture;
import com.facebook.react.devsupport.DevSupportManager; import com.facebook.react.devsupport.interfaces.DevSupportManager;
import com.facebook.react.modules.core.Timing; import com.facebook.react.modules.core.Timing;
import com.facebook.soloader.SoLoader; import com.facebook.soloader.SoLoader;

Просмотреть файл

@ -8,7 +8,7 @@
package com.facebook.react.testing; package com.facebook.react.testing;
import com.facebook.react.modules.debug.DeveloperSettings; import com.facebook.react.modules.debug.interfaces.DeveloperSettings;
public class ReactSettingsForTests implements DeveloperSettings { public class ReactSettingsForTests implements DeveloperSettings {

Просмотреть файл

@ -11,11 +11,14 @@ DEPS = [
react_native_target('java/com/facebook/react/common:common'), 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/cxxbridge:bridge'),
react_native_target('java/com/facebook/react/devsupport:devsupport'), 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'), 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/module/annotations:annotations'),
react_native_target('java/com/facebook/react/module/model:model'), react_native_target('java/com/facebook/react/module/model:model'),
react_native_target('java/com/facebook/react/modules/appregistry:appregistry'),
react_native_target('java/com/facebook/react/modules/core:core'), react_native_target('java/com/facebook/react/modules/core:core'),
react_native_target('java/com/facebook/react/modules/debug:debug'), react_native_target('java/com/facebook/react/modules/debug:debug'),
react_native_target('java/com/facebook/react/modules/debug:interfaces'),
react_native_target('java/com/facebook/react/modules/systeminfo:systeminfo'), react_native_target('java/com/facebook/react/modules/systeminfo:systeminfo'),
react_native_target('java/com/facebook/react/modules/toast:toast'), react_native_target('java/com/facebook/react/modules/toast:toast'),
react_native_target('java/com/facebook/react/uimanager:uimanager'), react_native_target('java/com/facebook/react/uimanager:uimanager'),

Просмотреть файл

@ -37,7 +37,7 @@ import com.facebook.react.modules.core.Timing;
import com.facebook.react.modules.debug.AnimationsDebugModule; import com.facebook.react.modules.debug.AnimationsDebugModule;
import com.facebook.react.modules.debug.SourceCodeModule; import com.facebook.react.modules.debug.SourceCodeModule;
import com.facebook.react.modules.systeminfo.AndroidInfoModule; import com.facebook.react.modules.systeminfo.AndroidInfoModule;
import com.facebook.react.uimanager.AppRegistry; import com.facebook.react.modules.appregistry.AppRegistry;
import com.facebook.react.uimanager.UIImplementationProvider; import com.facebook.react.uimanager.UIImplementationProvider;
import com.facebook.react.uimanager.UIManagerModule; import com.facebook.react.uimanager.UIManagerModule;
import com.facebook.react.uimanager.ViewManager; import com.facebook.react.uimanager.ViewManager;

Просмотреть файл

@ -53,15 +53,15 @@ import com.facebook.react.cxxbridge.JavaScriptExecutor;
import com.facebook.react.cxxbridge.NativeModuleRegistry; import com.facebook.react.cxxbridge.NativeModuleRegistry;
import com.facebook.react.cxxbridge.ProxyJavaScriptExecutor; import com.facebook.react.cxxbridge.ProxyJavaScriptExecutor;
import com.facebook.react.cxxbridge.UiThreadUtil; import com.facebook.react.cxxbridge.UiThreadUtil;
import com.facebook.react.devsupport.DevServerHelper; import com.facebook.react.devsupport.interfaces.DevSupportManager;
import com.facebook.react.devsupport.DevSupportManager; import com.facebook.react.devsupport.interfaces.PackagerStatusCallback;
import com.facebook.react.devsupport.DevSupportManagerFactory; import com.facebook.react.devsupport.DevSupportManagerFactory;
import com.facebook.react.devsupport.ReactInstanceDevCommandsHandler; import com.facebook.react.devsupport.ReactInstanceDevCommandsHandler;
import com.facebook.react.devsupport.RedBoxHandler; import com.facebook.react.devsupport.RedBoxHandler;
import com.facebook.react.modules.core.DefaultHardwareBackBtnHandler; import com.facebook.react.modules.core.DefaultHardwareBackBtnHandler;
import com.facebook.react.modules.core.DeviceEventManagerModule; import com.facebook.react.modules.core.DeviceEventManagerModule;
import com.facebook.react.modules.debug.DeveloperSettings; import com.facebook.react.modules.debug.interfaces.DeveloperSettings;
import com.facebook.react.uimanager.AppRegistry; import com.facebook.react.modules.appregistry.AppRegistry;
import com.facebook.react.uimanager.DisplayMetricsHolder; import com.facebook.react.uimanager.DisplayMetricsHolder;
import com.facebook.react.uimanager.UIImplementationProvider; import com.facebook.react.uimanager.UIImplementationProvider;
import com.facebook.react.uimanager.UIManagerModule; import com.facebook.react.uimanager.UIManagerModule;
@ -409,7 +409,7 @@ public class ReactInstanceManager {
mDevSupportManager.handleReloadJS(); mDevSupportManager.handleReloadJS();
} else { } else {
mDevSupportManager.isPackagerRunning( mDevSupportManager.isPackagerRunning(
new DevServerHelper.PackagerStatusCallback() { new PackagerStatusCallback() {
@Override @Override
public void onPackagerStatusFetched(final boolean packagerIsRunning) { public void onPackagerStatusFetched(final boolean packagerIsRunning) {
UiThreadUtil.runOnUiThread( UiThreadUtil.runOnUiThread(

Просмотреть файл

@ -15,7 +15,7 @@ import com.facebook.react.bridge.NativeModuleCallExceptionHandler;
import com.facebook.react.bridge.NotThreadSafeBridgeIdleDebugListener; import com.facebook.react.bridge.NotThreadSafeBridgeIdleDebugListener;
import com.facebook.react.common.LifecycleState; import com.facebook.react.common.LifecycleState;
import com.facebook.react.cxxbridge.JSBundleLoader; import com.facebook.react.cxxbridge.JSBundleLoader;
import com.facebook.react.devsupport.DevSupportManager; import com.facebook.react.devsupport.interfaces.DevSupportManager;
import com.facebook.react.devsupport.RedBoxHandler; import com.facebook.react.devsupport.RedBoxHandler;
import com.facebook.react.modules.core.DefaultHardwareBackBtnHandler; import com.facebook.react.modules.core.DefaultHardwareBackBtnHandler;
import com.facebook.react.uimanager.UIImplementationProvider; import com.facebook.react.uimanager.UIImplementationProvider;

Просмотреть файл

@ -24,7 +24,7 @@ import com.facebook.react.bridge.WritableMap;
import com.facebook.react.module.annotations.ReactModule; import com.facebook.react.module.annotations.ReactModule;
import com.facebook.react.modules.core.DeviceEventManagerModule; import com.facebook.react.modules.core.DeviceEventManagerModule;
import com.facebook.react.uimanager.GuardedChoreographerFrameCallback; import com.facebook.react.uimanager.GuardedChoreographerFrameCallback;
import com.facebook.react.uimanager.ReactChoreographer; import com.facebook.react.modules.core.ReactChoreographer;
import com.facebook.react.uimanager.UIManagerModule; import com.facebook.react.uimanager.UIManagerModule;
import java.util.ArrayList; import java.util.ArrayList;

Просмотреть файл

@ -3,7 +3,7 @@ include_defs('//ReactAndroid/DEFS')
android_library( android_library(
name = 'devsupport', name = 'devsupport',
manifest = 'AndroidManifest.xml', manifest = 'AndroidManifest.xml',
srcs = glob(['**/*.java']), srcs = glob(['*.java']),
deps = [ deps = [
react_native_dep('libraries/fbcore/src/main/java/com/facebook/common/logging:logging'), react_native_dep('libraries/fbcore/src/main/java/com/facebook/common/logging:logging'),
react_native_dep('third-party/java/infer-annotations:infer-annotations'), react_native_dep('third-party/java/infer-annotations:infer-annotations'),
@ -14,8 +14,10 @@ android_library(
react_native_target('java/com/facebook/react/bridge:bridge'), 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/common:common'),
react_native_target('java/com/facebook/react/common/network:network'), react_native_target('java/com/facebook/react/common/network:network'),
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/annotations:annotations'),
react_native_target('java/com/facebook/react/modules/debug:debug'), react_native_target('java/com/facebook/react/modules/debug:debug'),
react_native_target('java/com/facebook/react/modules/debug:interfaces'),
react_native_target('java/com/facebook/react/modules/systeminfo:systeminfo'), react_native_target('java/com/facebook/react/modules/systeminfo:systeminfo'),
react_native_target('java/com/facebook/react/packagerconnection:packagerconnection'), react_native_target('java/com/facebook/react/packagerconnection:packagerconnection'),
react_native_target('res:devsupport'), react_native_target('res:devsupport'),
@ -24,3 +26,16 @@ android_library(
'PUBLIC', 'PUBLIC',
], ],
) )
android_library(
name = 'interfaces',
srcs = glob(['interfaces/*.java']),
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/modules/debug:interfaces'),
],
visibility = [
'PUBLIC',
],
)

Просмотреть файл

@ -16,7 +16,7 @@ import android.content.SharedPreferences;
import android.preference.PreferenceManager; import android.preference.PreferenceManager;
import com.facebook.react.common.annotations.VisibleForTesting; import com.facebook.react.common.annotations.VisibleForTesting;
import com.facebook.react.modules.debug.DeveloperSettings; import com.facebook.react.modules.debug.interfaces.DeveloperSettings;
/** /**
* Helper class for accessing developers settings that should not be accessed outside of the package * Helper class for accessing developers settings that should not be accessed outside of the package

Просмотреть файл

@ -26,6 +26,7 @@ import com.facebook.infer.annotation.Assertions;
import com.facebook.react.bridge.UiThreadUtil; import com.facebook.react.bridge.UiThreadUtil;
import com.facebook.react.common.ReactConstants; import com.facebook.react.common.ReactConstants;
import com.facebook.react.common.network.OkHttpCallUtil; import com.facebook.react.common.network.OkHttpCallUtil;
import com.facebook.react.devsupport.interfaces.PackagerStatusCallback;
import com.facebook.react.modules.systeminfo.AndroidInfoHelpers; import com.facebook.react.modules.systeminfo.AndroidInfoHelpers;
import com.facebook.react.packagerconnection.JSPackagerWebSocketClient; import com.facebook.react.packagerconnection.JSPackagerWebSocketClient;
@ -88,10 +89,6 @@ public class DevServerHelper {
void onPokeSamplingProfilerCommand(@Nullable final JSPackagerWebSocketClient.WebSocketSender webSocket); void onPokeSamplingProfilerCommand(@Nullable final JSPackagerWebSocketClient.WebSocketSender webSocket);
} }
public interface PackagerStatusCallback {
void onPackagerStatusFetched(boolean packagerIsRunning);
}
private final DevInternalSettings mSettings; private final DevInternalSettings mSettings;
private final OkHttpClient mClient; private final OkHttpClient mClient;
private final Handler mRestartOnChangePollingHandler; private final Handler mRestartOnChangePollingHandler;

Просмотреть файл

@ -15,6 +15,8 @@ import java.lang.reflect.Constructor;
import android.content.Context; import android.content.Context;
import com.facebook.react.devsupport.interfaces.DevSupportManager;
/** /**
* A simple factory that creates instances of {@link DevSupportManager} implementations. Uses * A simple factory that creates instances of {@link DevSupportManager} implementations. Uses
* reflection to create DevSupportManagerImpl if it exists. This allows ProGuard to strip that class * reflection to create DevSupportManagerImpl if it exists. This allows ProGuard to strip that class

Просмотреть файл

@ -51,8 +51,11 @@ import com.facebook.react.common.ReactConstants;
import com.facebook.react.common.ShakeDetector; import com.facebook.react.common.ShakeDetector;
import com.facebook.react.common.futures.SimpleSettableFuture; import com.facebook.react.common.futures.SimpleSettableFuture;
import com.facebook.react.devsupport.DevServerHelper.PackagerCommandListener; import com.facebook.react.devsupport.DevServerHelper.PackagerCommandListener;
import com.facebook.react.devsupport.StackTraceHelper.StackFrame; import com.facebook.react.devsupport.interfaces.DevOptionHandler;
import com.facebook.react.modules.debug.DeveloperSettings; import com.facebook.react.devsupport.interfaces.DevSupportManager;
import com.facebook.react.devsupport.interfaces.PackagerStatusCallback;
import com.facebook.react.devsupport.interfaces.StackFrame;
import com.facebook.react.modules.debug.interfaces.DeveloperSettings;
import com.facebook.react.packagerconnection.JSPackagerWebSocketClient; import com.facebook.react.packagerconnection.JSPackagerWebSocketClient;
import okhttp3.MediaType; import okhttp3.MediaType;
@ -648,7 +651,7 @@ public class DevSupportManagerImpl implements
} }
@Override @Override
public void isPackagerRunning(DevServerHelper.PackagerStatusCallback callback) { public void isPackagerRunning(PackagerStatusCallback callback) {
mDevServerHelper.isPackagerRunning(callback); mDevServerHelper.isPackagerRunning(callback);
} }

Просмотреть файл

@ -16,8 +16,11 @@ import java.io.File;
import com.facebook.react.bridge.DefaultNativeModuleCallExceptionHandler; import com.facebook.react.bridge.DefaultNativeModuleCallExceptionHandler;
import com.facebook.react.bridge.ReactContext; import com.facebook.react.bridge.ReactContext;
import com.facebook.react.bridge.ReadableArray; import com.facebook.react.bridge.ReadableArray;
import com.facebook.react.devsupport.StackTraceHelper.StackFrame; import com.facebook.react.devsupport.interfaces.DevOptionHandler;
import com.facebook.react.modules.debug.DeveloperSettings; import com.facebook.react.devsupport.interfaces.DevSupportManager;
import com.facebook.react.devsupport.interfaces.PackagerStatusCallback;
import com.facebook.react.devsupport.interfaces.StackFrame;
import com.facebook.react.modules.debug.interfaces.DeveloperSettings;
/** /**
* A dummy implementation of {@link DevSupportManager} to be used in production mode where * A dummy implementation of {@link DevSupportManager} to be used in production mode where
@ -132,7 +135,7 @@ public class DisabledDevSupportManager implements DevSupportManager {
} }
@Override @Override
public void isPackagerRunning(DevServerHelper.PackagerStatusCallback callback) { public void isPackagerRunning(PackagerStatusCallback callback) {
} }

Просмотреть файл

@ -35,7 +35,8 @@ import com.facebook.infer.annotation.Assertions;
import com.facebook.react.R; import com.facebook.react.R;
import com.facebook.react.common.MapBuilder; import com.facebook.react.common.MapBuilder;
import com.facebook.react.common.ReactConstants; import com.facebook.react.common.ReactConstants;
import com.facebook.react.devsupport.StackTraceHelper.StackFrame; import com.facebook.react.devsupport.interfaces.DevSupportManager;
import com.facebook.react.devsupport.interfaces.StackFrame;
import com.facebook.react.devsupport.RedBoxHandler.ReportCompletedListener; import com.facebook.react.devsupport.RedBoxHandler.ReportCompletedListener;
import okhttp3.MediaType; import okhttp3.MediaType;

Просмотреть файл

@ -11,7 +11,7 @@ package com.facebook.react.devsupport;
import android.text.SpannedString; import android.text.SpannedString;
import com.facebook.react.devsupport.StackTraceHelper.StackFrame; import com.facebook.react.devsupport.interfaces.StackFrame;
/** /**
* Interface used by {@link DevSupportManagerImpl} to allow interception on any redboxes * Interface used by {@link DevSupportManagerImpl} to allow interception on any redboxes

Просмотреть файл

@ -15,6 +15,7 @@ import java.io.File;
import com.facebook.react.bridge.ReadableArray; import com.facebook.react.bridge.ReadableArray;
import com.facebook.react.bridge.ReadableMap; import com.facebook.react.bridge.ReadableMap;
import com.facebook.react.devsupport.interfaces.StackFrame;
/** /**
* Helper class converting JS and Java stack traces into arrays of {@link StackFrame} objects. * Helper class converting JS and Java stack traces into arrays of {@link StackFrame} objects.
@ -24,14 +25,14 @@ public class StackTraceHelper {
/** /**
* Represents a generic entry in a stack trace, be it originally from JS or Java. * Represents a generic entry in a stack trace, be it originally from JS or Java.
*/ */
public static class StackFrame { public static class StackFrameImpl implements StackFrame {
private final String mFile; private final String mFile;
private final String mMethod; private final String mMethod;
private final int mLine; private final int mLine;
private final int mColumn; private final int mColumn;
private final String mFileName; private final String mFileName;
private StackFrame(String file, String method, int line, int column) { private StackFrameImpl(String file, String method, int line, int column) {
mFile = file; mFile = file;
mMethod = method; mMethod = method;
mLine = line; mLine = line;
@ -39,7 +40,7 @@ public class StackTraceHelper {
mFileName = new File(file).getName(); mFileName = new File(file).getName();
} }
private StackFrame(String file, String fileName, String method, int line, int column) { private StackFrameImpl(String file, String fileName, String method, int line, int column) {
mFile = file; mFile = file;
mFileName = fileName; mFileName = fileName;
mMethod = method; mMethod = method;
@ -105,7 +106,7 @@ public class StackTraceHelper {
if (frame.hasKey("column") && !frame.isNull("column")) { if (frame.hasKey("column") && !frame.isNull("column")) {
columnNumber = frame.getInt("column"); columnNumber = frame.getInt("column");
} }
result[i] = new StackFrame(fileName, methodName, lineNumber, columnNumber); result[i] = new StackFrameImpl(fileName, methodName, lineNumber, columnNumber);
} }
return result; return result;
} }
@ -117,7 +118,7 @@ public class StackTraceHelper {
StackTraceElement[] stackTrace = exception.getStackTrace(); StackTraceElement[] stackTrace = exception.getStackTrace();
StackFrame[] result = new StackFrame[stackTrace.length]; StackFrame[] result = new StackFrame[stackTrace.length];
for (int i = 0; i < stackTrace.length; i++) { for (int i = 0; i < stackTrace.length; i++) {
result[i] = new StackFrame( result[i] = new StackFrameImpl(
stackTrace[i].getClassName(), stackTrace[i].getClassName(),
stackTrace[i].getFileName(), stackTrace[i].getFileName(),
stackTrace[i].getMethodName(), stackTrace[i].getMethodName(),

Просмотреть файл

@ -7,7 +7,7 @@
* of patent rights can be found in the PATENTS file in the same directory. * of patent rights can be found in the PATENTS file in the same directory.
*/ */
package com.facebook.react.devsupport; package com.facebook.react.devsupport.interfaces;
/** /**
* Callback class for custom options that may appear in {@link DevSupportManager} developer * Callback class for custom options that may appear in {@link DevSupportManager} developer

Просмотреть файл

@ -7,7 +7,7 @@
* of patent rights can be found in the PATENTS file in the same directory. * of patent rights can be found in the PATENTS file in the same directory.
*/ */
package com.facebook.react.devsupport; package com.facebook.react.devsupport.interfaces;
import javax.annotation.Nullable; import javax.annotation.Nullable;
@ -16,8 +16,7 @@ import java.io.File;
import com.facebook.react.bridge.NativeModuleCallExceptionHandler; import com.facebook.react.bridge.NativeModuleCallExceptionHandler;
import com.facebook.react.bridge.ReactContext; import com.facebook.react.bridge.ReactContext;
import com.facebook.react.bridge.ReadableArray; import com.facebook.react.bridge.ReadableArray;
import com.facebook.react.devsupport.StackTraceHelper.StackFrame; import com.facebook.react.modules.debug.interfaces.DeveloperSettings;
import com.facebook.react.modules.debug.DeveloperSettings;
/** /**
* Interface for accessing and interacting with development features. * Interface for accessing and interacting with development features.
@ -46,7 +45,7 @@ public interface DevSupportManager extends NativeModuleCallExceptionHandler {
void reloadSettings(); void reloadSettings();
void handleReloadJS(); void handleReloadJS();
void reloadJSFromServer(final String bundleURL); void reloadJSFromServer(final String bundleURL);
void isPackagerRunning(DevServerHelper.PackagerStatusCallback callback); void isPackagerRunning(PackagerStatusCallback callback);
@Nullable File downloadBundleResourceFromUrlSync( @Nullable File downloadBundleResourceFromUrlSync(
final String resourceURL, final String resourceURL,
final File outputFile); final File outputFile);

Просмотреть файл

@ -0,0 +1,14 @@
/**
* 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.interfaces;
public interface PackagerStatusCallback {
void onPackagerStatusFetched(boolean packagerIsRunning);
}

Просмотреть файл

@ -0,0 +1,46 @@
/**
* 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.interfaces;
/**
* Represents a generic entry in a stack trace, be it originally from JS or Java.
*/
public interface StackFrame {
/**
* Get the file this stack frame points to.
*
* JS traces return the full path to the file here, while Java traces only return the file name
* (the path is not known).
*/
public String getFile();
/**
* Get the name of the method this frame points to.
*/
public String getMethod();
/**
* Get the line number this frame points to in the file returned by {@link #getFile()}.
*/
public int getLine();
/**
* Get the column this frame points to in the file returned by {@link #getFile()}.
*/
public int getColumn();
/**
* Get just the name of the file this frame points to.
*
* For JS traces this is different from {@link #getFile()} in that it only returns the file
* name, not the full path. For Java traces there is no difference.
*/
public String getFileName();
}

Просмотреть файл

@ -6,7 +6,7 @@ DEPS = [
react_native_dep('third-party/java/jsr-305:jsr-305'), 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/bridge:bridge'),
react_native_target('java/com/facebook/react/common:common'), react_native_target('java/com/facebook/react/common:common'),
react_native_target('java/com/facebook/react/uimanager:uimanager'), react_native_target('java/com/facebook/react/modules/appregistry:appregistry'),
] ]
android_library( android_library(

Просмотреть файл

@ -15,7 +15,7 @@ import com.facebook.infer.annotation.Assertions;
import com.facebook.react.bridge.ReactContext; import com.facebook.react.bridge.ReactContext;
import com.facebook.react.bridge.UiThreadUtil; import com.facebook.react.bridge.UiThreadUtil;
import com.facebook.react.common.LifecycleState; import com.facebook.react.common.LifecycleState;
import com.facebook.react.uimanager.AppRegistry; import com.facebook.react.modules.appregistry.AppRegistry;
/** /**
* Helper class for dealing with JS tasks. Handles per-ReactContext active task tracking, starting / * Helper class for dealing with JS tasks. Handles per-ReactContext active task tracking, starting /

Просмотреть файл

@ -7,7 +7,7 @@
* of patent rights can be found in the PATENTS file in the same directory. * of patent rights can be found in the PATENTS file in the same directory.
*/ */
package com.facebook.react.uimanager; package com.facebook.react.modules.appregistry;
import com.facebook.react.bridge.JavaScriptModule; import com.facebook.react.bridge.JavaScriptModule;
import com.facebook.react.bridge.WritableMap; import com.facebook.react.bridge.WritableMap;

Просмотреть файл

@ -0,0 +1,12 @@
include_defs('//ReactAndroid/DEFS')
android_library(
name = 'appregistry',
srcs = glob(['**/*.java']),
deps = [
react_native_target('java/com/facebook/react/bridge:bridge'),
],
visibility = [
'PUBLIC',
],
)

Просмотреть файл

@ -9,10 +9,9 @@ android_library(
react_native_dep('third-party/java/jsr-305:jsr-305'), 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/bridge:bridge'),
react_native_target('java/com/facebook/react/common:common'), 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/devsupport:interfaces'),
react_native_target('java/com/facebook/react/jstasks:jstasks'), 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/module/annotations:annotations'),
react_native_target('java/com/facebook/react/uimanager:uimanager'),
], ],
visibility = [ visibility = [
'PUBLIC', 'PUBLIC',

Просмотреть файл

@ -18,7 +18,7 @@ import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.bridge.ReadableArray; import com.facebook.react.bridge.ReadableArray;
import com.facebook.react.bridge.ReadableMap; import com.facebook.react.bridge.ReadableMap;
import com.facebook.react.bridge.ReadableType; import com.facebook.react.bridge.ReadableType;
import com.facebook.react.devsupport.DevSupportManager; import com.facebook.react.devsupport.interfaces.DevSupportManager;
import com.facebook.react.common.JavascriptException; import com.facebook.react.common.JavascriptException;
import com.facebook.react.common.ReactConstants; import com.facebook.react.common.ReactConstants;
import com.facebook.react.module.annotations.ReactModule; import com.facebook.react.module.annotations.ReactModule;

Просмотреть файл

@ -7,7 +7,7 @@
* of patent rights can be found in the PATENTS file in the same directory. * of patent rights can be found in the PATENTS file in the same directory.
*/ */
package com.facebook.react.uimanager; package com.facebook.react.modules.core;
import java.util.ArrayDeque; import java.util.ArrayDeque;

Просмотреть файл

@ -35,11 +35,10 @@ import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.bridge.UiThreadUtil; import com.facebook.react.bridge.UiThreadUtil;
import com.facebook.react.bridge.WritableArray; import com.facebook.react.bridge.WritableArray;
import com.facebook.react.common.SystemClock; import com.facebook.react.common.SystemClock;
import com.facebook.react.devsupport.DevSupportManager; import com.facebook.react.devsupport.interfaces.DevSupportManager;
import com.facebook.react.jstasks.HeadlessJsTaskEventListener; import com.facebook.react.jstasks.HeadlessJsTaskEventListener;
import com.facebook.react.jstasks.HeadlessJsTaskContext; import com.facebook.react.jstasks.HeadlessJsTaskContext;
import com.facebook.react.module.annotations.ReactModule; import com.facebook.react.module.annotations.ReactModule;
import com.facebook.react.uimanager.ReactChoreographer;
/** /**
* Native module for JS timer execution. Timers fire on frame boundaries. * Native module for JS timer execution. Timers fire on frame boundaries.

Просмотреть файл

@ -24,6 +24,7 @@ import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod; import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.common.ReactConstants; import com.facebook.react.common.ReactConstants;
import com.facebook.react.module.annotations.ReactModule; import com.facebook.react.module.annotations.ReactModule;
import com.facebook.react.modules.debug.interfaces.DeveloperSettings;
/** /**
* Module that records debug information during transitions (animated navigation events such as * Module that records debug information during transitions (animated navigation events such as

Просмотреть файл

@ -2,7 +2,7 @@ include_defs('//ReactAndroid/DEFS')
android_library( android_library(
name = 'debug', name = 'debug',
srcs = glob(['**/*.java']), srcs = glob(['*.java']),
deps = [ deps = [
react_native_dep('libraries/fbcore/src/main/java/com/facebook/common/logging:logging'), react_native_dep('libraries/fbcore/src/main/java/com/facebook/common/logging:logging'),
react_native_dep('third-party/java/infer-annotations:infer-annotations'), react_native_dep('third-party/java/infer-annotations:infer-annotations'),
@ -10,6 +10,7 @@ android_library(
react_native_target('java/com/facebook/react/bridge:bridge'), 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/common:common'),
react_native_target('java/com/facebook/react/module/annotations:annotations'), react_native_target('java/com/facebook/react/module/annotations:annotations'),
react_native_target('java/com/facebook/react/modules/debug:interfaces'),
react_native_target('java/com/facebook/react/uimanager:uimanager'), react_native_target('java/com/facebook/react/uimanager:uimanager'),
], ],
visibility = [ visibility = [
@ -17,3 +18,12 @@ android_library(
], ],
) )
android_library(
name = 'interfaces',
srcs = glob(['interfaces/*.java']),
deps = [
],
visibility = [
'PUBLIC',
],
)

Просмотреть файл

@ -7,7 +7,7 @@
* of patent rights can be found in the PATENTS file in the same directory. * of patent rights can be found in the PATENTS file in the same directory.
*/ */
package com.facebook.react.modules.debug; package com.facebook.react.modules.debug.interfaces;
/** /**
* Provides access to React Native developers settings. * Provides access to React Native developers settings.

Просмотреть файл

@ -19,6 +19,7 @@ android_library(
react_native_target('java/com/facebook/react/bridge:bridge'), 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/common:common'),
react_native_target('java/com/facebook/react/module/annotations:annotations'), react_native_target('java/com/facebook/react/module/annotations:annotations'),
react_native_target('java/com/facebook/react/modules/core:core'),
react_native_target('java/com/facebook/react/modules/i18nmanager:i18nmanager'), react_native_target('java/com/facebook/react/modules/i18nmanager:i18nmanager'),
react_native_target('java/com/facebook/react/touch:touch'), react_native_target('java/com/facebook/react/touch:touch'),
react_native_target('java/com/facebook/react/uimanager/annotations:annotations'), react_native_target('java/com/facebook/react/uimanager/annotations:annotations'),

Просмотреть файл

@ -29,6 +29,7 @@ import com.facebook.react.bridge.ReadableArray;
import com.facebook.react.bridge.ReadableMap; import com.facebook.react.bridge.ReadableMap;
import com.facebook.react.bridge.UiThreadUtil; import com.facebook.react.bridge.UiThreadUtil;
import com.facebook.react.common.ReactConstants; import com.facebook.react.common.ReactConstants;
import com.facebook.react.modules.core.ReactChoreographer;
import com.facebook.react.uimanager.debug.NotThreadSafeViewHierarchyUpdateDebugListener; import com.facebook.react.uimanager.debug.NotThreadSafeViewHierarchyUpdateDebugListener;
import com.facebook.systrace.Systrace; import com.facebook.systrace.Systrace;
import com.facebook.systrace.SystraceMessage; import com.facebook.systrace.SystraceMessage;

Просмотреть файл

@ -24,7 +24,7 @@ import com.facebook.react.bridge.LifecycleEventListener;
import com.facebook.react.bridge.ReactApplicationContext; import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.UiThreadUtil; import com.facebook.react.bridge.UiThreadUtil;
import com.facebook.react.common.MapBuilder; import com.facebook.react.common.MapBuilder;
import com.facebook.react.uimanager.ReactChoreographer; import com.facebook.react.modules.core.ReactChoreographer;
import com.facebook.systrace.Systrace; import com.facebook.systrace.Systrace;
/** /**

Просмотреть файл

@ -20,7 +20,7 @@ rn_robolectric_test(
react_native_target('java/com/facebook/react/bridge:bridge'), 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/common:common'),
react_native_target('java/com/facebook/react/common/network:network'), react_native_target('java/com/facebook/react/common/network:network'),
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'), react_native_target('java/com/facebook/react/jstasks:jstasks'),
react_native_target('java/com/facebook/react/modules/clipboard:clipboard'), react_native_target('java/com/facebook/react/modules/clipboard:clipboard'),
react_native_target('java/com/facebook/react/modules/common:common'), react_native_target('java/com/facebook/react/modules/common:common'),

Просмотреть файл

@ -16,10 +16,10 @@ import com.facebook.react.bridge.ExecutorToken;
import com.facebook.react.bridge.ReactApplicationContext; import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.CatalystInstance; import com.facebook.react.bridge.CatalystInstance;
import com.facebook.react.bridge.JavaOnlyArray; import com.facebook.react.bridge.JavaOnlyArray;
import com.facebook.react.devsupport.DevSupportManager; import com.facebook.react.devsupport.interfaces.DevSupportManager;
import com.facebook.react.uimanager.ReactChoreographer;
import com.facebook.react.common.SystemClock; import com.facebook.react.common.SystemClock;
import com.facebook.react.modules.core.JSTimersExecution; import com.facebook.react.modules.core.JSTimersExecution;
import com.facebook.react.modules.core.ReactChoreographer;
import com.facebook.react.modules.core.Timing; import com.facebook.react.modules.core.Timing;
import org.junit.Before; import org.junit.Before;