Reviewed By: bestander

Differential Revision: D3324351

fbshipit-source-id: 41fa18a23c8661440a7deff244c93278f418e1d9
This commit is contained in:
Chris Hopman 2016-05-27 16:02:50 -07:00 коммит произвёл Facebook Github Bot 9
Родитель 708530a905
Коммит 5e8f1716fc
59 изменённых файлов: 179 добавлений и 25 удалений

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

@ -114,7 +114,7 @@ task prepareGlog(dependsOn: downloadGlog, type: Copy) {
task downloadJSCHeaders(type: Download) {
def jscAPIBaseURL = 'https://svn.webkit.org/repository/webkit/!svn/bc/174650/trunk/Source/JavaScriptCore/API/'
def jscHeaderFiles = ['JSBase.h', 'JSContextRef.h', 'JSObjectRef.h', 'JSRetainPtr.h', 'JSStringRef.h', 'JSValueRef.h', 'WebKitAvailability.h']
def jscHeaderFiles = ['JavaScript.h', 'JSBase.h', 'JSContextRef.h', 'JSObjectRef.h', 'JSRetainPtr.h', 'JSStringRef.h', 'JSValueRef.h', 'WebKitAvailability.h']
def output = new File(downloadsDir, 'jsc')
output.mkdirs()
src(jscHeaderFiles.collect { headerName -> "$jscAPIBaseURL$headerName" })
@ -185,7 +185,7 @@ def getNdkBuildFullPath() {
}
task buildReactNdkLib(dependsOn: [prepareJSC, prepareBoost, prepareDoubleConversion, prepareFolly, prepareGlog], type: Exec) {
inputs.file('src/main/jni/react')
inputs.file('src/main/jni/xreact')
outputs.dir("$buildDir/react-ndk/all")
commandLine getNdkBuildFullPath(),
'NDK_PROJECT_PATH=null',
@ -193,7 +193,8 @@ task buildReactNdkLib(dependsOn: [prepareJSC, prepareBoost, prepareDoubleConvers
'NDK_OUT=' + temporaryDir,
"NDK_LIBS_OUT=$buildDir/react-ndk/all",
"THIRD_PARTY_NDK_DIR=$buildDir/third-party-ndk",
'-C', file('src/main/jni/react/jni').absolutePath,
"REACT_COMMON_DIR=$projectDir/../ReactCommon",
'-C', file('src/main/jni/xreact/jni').absolutePath,
'--jobs', project.hasProperty("jobs") ? project.property("jobs") : Runtime.runtime.availableProcessors()
}

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

@ -5,7 +5,7 @@ APP_PLATFORM := android-9
APP_MK_DIR := $(dir $(lastword $(MAKEFILE_LIST)))
NDK_MODULE_PATH := $(APP_MK_DIR)$(HOST_DIRSEP)$(THIRD_PARTY_NDK_DIR)$(HOST_DIRSEP)$(APP_MK_DIR)first-party
NDK_MODULE_PATH := $(APP_MK_DIR)$(HOST_DIRSEP)$(THIRD_PARTY_NDK_DIR)$(HOST_DIRSEP)$(REACT_COMMON_DIR)$(HOST_DIRSEP)$(APP_MK_DIR)first-party
APP_STL := gnustl_shared

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

@ -1,4 +1,5 @@
LOCAL_PATH:= $(call my-dir)
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES:= \

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

@ -1,4 +1,4 @@
LOCAL_PATH:= $(call my-dir)
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
@ -18,7 +18,6 @@ LOCAL_EXPORT_C_INCLUDES := $(LOCAL_C_INCLUDES)
LOCAL_CFLAGS := \
-DLOG_TAG=\"ReactNative\"
LOCAL_LDLIBS += -landroid
LOCAL_CFLAGS += -Wall -Werror -fexceptions -frtti
CXX11_FLAGS := -std=c++11
LOCAL_CFLAGS += $(CXX11_FLAGS)

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

@ -2,20 +2,21 @@ LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := reactnativejni
LOCAL_MODULE := libreactnativejni
LOCAL_SRC_FILES := \
JExecutorToken.cpp \
JMessageQueueThread.cpp \
JniJSModulesUnbundle.cpp \
JSCPerfLogging.cpp \
JSLoader.cpp \
JSLogging.cpp \
JniJSModulesUnbundle.cpp \
NativeArray.cpp \
OnLoad.cpp \
ProxyExecutor.cpp \
LOCAL_C_INCLUDES := $(LOCAL_PATH)
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/../.. $(LOCAL_PATH)/..
LOCAL_CFLAGS += -Wall -Werror -fvisibility=hidden -fexceptions -frtti
CXX11_FLAGS := -std=c++11

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

@ -24,4 +24,3 @@ LOCAL_LDFLAGS += $(BUCK_DEP_LDFLAGS)
include $(BUILD_EXECUTABLE)
$(call import-module,react)
$(call import-module,google-test)

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

@ -5,6 +5,7 @@ LOCAL_SRC_FILES:= \
folly/json.cpp \
folly/Unicode.cpp \
folly/Conv.cpp \
folly/Demangle.cpp \
folly/detail/FunctionalExcept.cpp \
folly/detail/MallocImpl.cpp \
folly/StringBase.cpp \

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

@ -0,0 +1,40 @@
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := reactnativejnifb
LOCAL_SRC_FILES := \
CatalystInstanceImpl.cpp \
CxxModuleWrapper.cpp \
JExecutorToken.cpp \
JMessageQueueThread.cpp \
JniJSModulesUnbundle.cpp \
JSCPerfLogging.cpp \
JSLoader.cpp \
JSLogging.cpp \
MethodInvoker.cpp \
ModuleRegistryHolder.cpp \
OnLoad.cpp \
ProxyExecutor.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 libreactnativejni
LOCAL_STATIC_LIBRARIES := libreactnative libreactnativefb
include $(BUILD_SHARED_LIBRARY)
$(call import-module,cxxreact)
$(call import-module,jsc)
$(call import-module,folly)
$(call import-module,fbgloginit)
$(call import-module,jni)
$(call import-module,react)

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

@ -0,0 +1,40 @@
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := libreactnativejnifb
LOCAL_SRC_FILES := \
CatalystInstanceImpl.cpp \
CxxModuleWrapper.cpp \
JExecutorToken.cpp \
JMessageQueueThread.cpp \
JniJSModulesUnbundle.cpp \
JSCPerfLogging.cpp \
JSLoader.cpp \
JSLogging.cpp \
MethodInvoker.cpp \
ModuleRegistryHolder.cpp \
OnLoad.cpp \
ProxyExecutor.cpp \
LOCAL_C_INCLUDES := $(LOCAL_PATH)
LOCAL_EXPORT_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 libreactnativejni
LOCAL_STATIC_LIBRARIES := libreactnativefb
include $(BUILD_SHARED_LIBRARY)
$(call import-module,cxxreact)
$(call import-module,jsc)
$(call import-module,folly)
$(call import-module,fbgloginit)
$(call import-module,jsc)
$(call import-module,react/jni)

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

@ -18,8 +18,8 @@ cxx_library(
'//xplat/folly:molly',
'//xplat/fbsystrace:fbsystrace',
react_native_target('jni/react/jni:jni'),
react_native_xplat_target('bridge:bridge'),
react_native_xplat_target('bridge:module'),
react_native_xplat_target('cxxreact:bridge'),
react_native_xplat_target('cxxreact:module'),
],
srcs = glob(['*.cpp']),
exported_headers = EXPORTED_HEADERS,

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

@ -10,6 +10,7 @@
#include <jni/Registration.h>
#include <cxxreact/JsArgumentHelpers.h>
#include <cxxreact/FollySupport.h>
#include <android/log.h>
@ -190,7 +191,7 @@ std::string CxxModuleWrapper::getConstantsJson() {
constsobject.insert(std::move(c.first), std::move(c.second));
}
return folly::toJson(constsobject);
return facebook::react::detail::toStdString(folly::toJson(constsobject));
}
jobject CxxModuleWrapper::getMethods() {

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

@ -137,7 +137,7 @@ jvalue extract(std::weak_ptr<Instance>& instance, ExecutorToken token, char type
value.l = valueOf(extractDouble(arg));
break;
case 'S':
value.l = jni::make_jstring(arg.getString()).release();
value.l = jni::make_jstring(arg.getString().c_str()).release();
break;
case 'A':
value.l = ReadableNativeArray::newObjectCxxArgs(arg).release();

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

@ -5,7 +5,7 @@
#include <fb/fbjni.h>
#include <cxxreact/ModuleRegistry.h>
#include <react/jni/CxxModuleWrapper.h>
#include "CxxModuleWrapper.h"
namespace facebook {
namespace react {

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

@ -10,6 +10,7 @@
#include <folly/Memory.h>
#include <cxxreact/SystraceSection.h>
#include <cxxreact/FollySupport.h>
namespace facebook {
namespace react {
@ -56,7 +57,7 @@ ProxyExecutor::ProxyExecutor(jni::global_ref<jobject>&& executorInstance,
SystraceSection t("setGlobalVariable");
setGlobalVariable(
"__fbBatchedBridgeConfig",
folly::make_unique<JSBigStdString>(folly::toJson(config)));
folly::make_unique<JSBigStdString>(detail::toStdString(folly::toJson(config))));
}
ProxyExecutor::~ProxyExecutor() {

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

@ -8,10 +8,10 @@ cxx_library(
'-fexceptions',
],
deps = [
'//native:base',
'//native/fb:fb',
'//native:base',
'//xplat/folly:molly',
react_native_xplat_target('bridge:module'),
react_native_xplat_target('cxxreact:module'),
],
visibility = [
'//instrumentation_tests/com/facebook/react/...',

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

@ -0,0 +1,41 @@
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := libreactnativefb
LOCAL_SRC_FILES := \
Instance.cpp \
JSCExecutor.cpp \
JSCHelpers.cpp \
JSCLegacyProfiler.cpp \
JSCLegacyTracing.cpp \
JSCMemory.cpp \
JSCPerfStats.cpp \
JSCTracing.cpp \
JSCWebWorker.cpp \
MethodCall.cpp \
ModuleRegistry.cpp \
NativeToJsBridge.cpp \
Platform.cpp \
Value.cpp \
LOCAL_C_INCLUDES := $(LOCAL_PATH)/..
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_C_INCLUDES)
LOCAL_CFLAGS := \
-DLOG_TAG=\"ReactNative\"
LOCAL_CFLAGS += -Wall -Werror -fexceptions -frtti
CXX11_FLAGS := -std=c++11
LOCAL_CFLAGS += $(CXX11_FLAGS)
LOCAL_EXPORT_CPPFLAGS := $(CXX11_FLAGS)
LOCAL_SHARED_LIBRARIES := libfb libfolly_json libjsc libglog
include $(BUILD_STATIC_LIBRARY)
$(call import-module,fb)
$(call import-module,folly)
$(call import-module,jsc)
$(call import-module,glog)

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

@ -56,13 +56,14 @@ elif THIS_IS_FBOBJC:
cxx_library(
name = 'module',
header_namespace = 'cxxreact',
force_static = True,
exported_headers = [
'CxxModule.h',
'FollySupport.h',
'JsArgumentHelpers.h',
'JsArgumentHelpers-inl.h',
],
header_namespace = 'cxxreact',
deps = [
'//xplat/folly:molly',
],

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

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

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

@ -0,0 +1,21 @@
// Copyright 2004-present Facebook. All Rights Reserved.
#pragma once
#include <folly/FBString.h>
#include <string>
namespace facebook {
namespace react {
namespace detail {
// TODO(cjhopman): Once folly is updated, remove these.
inline std::string toStdString(std::string&& str) {
return std::move(str);
}
inline std::string toStdString(folly::fbstring&& str) {
return str.toStdString();
}
}}}

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

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

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

@ -14,6 +14,7 @@
#include <folly/Conv.h>
#include <sys/time.h>
#include "FollySupport.h"
#include "JSCHelpers.h"
#include "Platform.h"
#include "SystraceSection.h"
@ -139,7 +140,7 @@ JSCExecutor::JSCExecutor(std::shared_ptr<ExecutorDelegate> delegate,
SystraceSection t("setGlobalVariable");
setGlobalVariable(
"__fbBatchedBridgeConfig",
folly::make_unique<JSBigStdString>(folly::toJson(config)));
folly::make_unique<JSBigStdString>(detail::toStdString(folly::toJson(config))));
}
JSCExecutor::JSCExecutor(

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

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

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

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

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

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

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

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

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

@ -2,12 +2,11 @@
#include "JSCWebWorker.h"
#include <unistd.h>
#include <condition_variable>
#include <mutex>
#include <unordered_map>
#include <glog/logging.h>
#include <folly/Memory.h>
#include "JSCHelpers.h"
@ -15,6 +14,8 @@
#include "Platform.h"
#include "Value.h"
#include <glog/logging.h>
#include <JavaScriptCore/JSValueRef.h>
namespace facebook {

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

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

@ -5,7 +5,10 @@
#include <folly/Conv.h>
#include <folly/dynamic.h>
#include "FollySupport.h"
#include <exception>
#include <string>
// When building a cross-platform module for React Native, arguments passed
// from JS are represented as a folly::dynamic. This class provides helpers to
@ -97,7 +100,7 @@ inline double jsArgAsDouble(const folly::dynamic& args, size_t n) {
// Extract the n'th arg from the given dynamic, as a string. Throws a
// JsArgumentException if this fails for some reason.
inline std::string jsArgAsString(const folly::dynamic& args, size_t n) {
return jsArgN(args, n, &folly::dynamic::asString);
return facebook::react::detail::toStdString(jsArgN(args, n, &folly::dynamic::asString));
}
}}

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

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

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

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

@ -147,8 +147,9 @@ void NativeToJsBridge::callFunction(
const std::string& methodId,
const folly::dynamic& arguments,
const std::string& tracingName) {
int systraceCookie = -1;
#ifdef WITH_FBSYSTRACE
int systraceCookie = m_systraceCookie++;
systraceCookie = m_systraceCookie++;
FbSystraceAsyncFlow::begin(
TRACE_TAG_REACT_CXX_BRIDGE,
tracingName.c_str(),
@ -173,8 +174,9 @@ void NativeToJsBridge::callFunction(
void NativeToJsBridge::invokeCallback(ExecutorToken executorToken, const double callbackId,
const folly::dynamic& arguments) {
int systraceCookie = -1;
#ifdef WITH_FBSYSTRACE
int systraceCookie = m_systraceCookie++;
systraceCookie = m_systraceCookie++;
FbSystraceAsyncFlow::begin(
TRACE_TAG_REACT_CXX_BRIDGE,
"<callback>",

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

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

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

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

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