Allow "nativeRequire" to accept "bundleId" and "moduleId" values
Differential Revision: D5850960 fbshipit-source-id: 4d7aa0ed7542181861649a2089d90c3cf98723e9
This commit is contained in:
parent
b9be9a01a9
commit
da2ea2601b
|
@ -574,16 +574,7 @@ JSValueRef JSCExecutor::getNativeModule(JSObjectRef object, JSStringRef property
|
|||
JSValueRef JSCExecutor::nativeRequire(
|
||||
size_t argumentCount,
|
||||
const JSValueRef arguments[]) {
|
||||
if (argumentCount != 1) {
|
||||
throw std::invalid_argument("Got wrong number of args");
|
||||
}
|
||||
|
||||
double moduleId = Value(m_context, arguments[0]).asNumber();
|
||||
if (moduleId < 0) {
|
||||
throw std::invalid_argument(folly::to<std::string>("Received invalid module ID: ",
|
||||
Value(m_context, arguments[0]).toString().str()));
|
||||
}
|
||||
|
||||
uint32_t moduleId = parseNativeRequireParameters(m_context, arguments, argumentCount).second;
|
||||
ReactMarker::logMarker(ReactMarker::NATIVE_REQUIRE_START);
|
||||
loadModule(moduleId);
|
||||
ReactMarker::logMarker(ReactMarker::NATIVE_REQUIRE_STOP);
|
||||
|
|
|
@ -13,5 +13,33 @@ String jsStringFromBigString(JSContextRef ctx, const JSBigString& bigstr) {
|
|||
}
|
||||
}
|
||||
|
||||
std::pair<uint32_t, uint32_t> parseNativeRequireParameters(
|
||||
const JSGlobalContextRef& context,
|
||||
const JSValueRef arguments[],
|
||||
size_t argumentCount) {
|
||||
double moduleId = 0, bundleId = 0;
|
||||
|
||||
if (argumentCount == 1) {
|
||||
moduleId = Value(context, arguments[0]).asNumber();
|
||||
} else if (argumentCount == 2) {
|
||||
moduleId = Value(context, arguments[0]).asNumber();
|
||||
bundleId = Value(context, arguments[1]).asNumber();
|
||||
} else {
|
||||
throw std::invalid_argument("Got wrong number of args");
|
||||
}
|
||||
|
||||
if (moduleId < 0) {
|
||||
throw std::invalid_argument(folly::to<std::string>("Received invalid module ID: ",
|
||||
Value(context, arguments[0]).toString().str()));
|
||||
}
|
||||
|
||||
if (bundleId < 0) {
|
||||
throw std::invalid_argument(folly::to<std::string>("Received invalid bundle ID: ",
|
||||
Value(context, arguments[1]).toString().str()));
|
||||
}
|
||||
|
||||
return std::make_pair(static_cast<uint32_t>(bundleId), static_cast<uint32_t>(moduleId));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,5 +11,13 @@ namespace react {
|
|||
|
||||
String jsStringFromBigString(JSContextRef ctx, const JSBigString& bigstr);
|
||||
|
||||
/**
|
||||
* Parses "nativeRequire" parameters
|
||||
* and returns pair of "bundle id" & "module id" values
|
||||
*/
|
||||
std::pair<uint32_t, uint32_t> parseNativeRequireParameters(const JSGlobalContextRef& context,
|
||||
const JSValueRef arguments[],
|
||||
size_t argumentCount);
|
||||
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue