From 9d1855616c7dc0e34b2433541a721db1885caac0 Mon Sep 17 00:00:00 2001 From: Ramanpreet Nara Date: Wed, 4 Dec 2024 14:32:21 -0800 Subject: [PATCH] Also report non-fatal non-warning errors Summary: Just porting over the logic after D28815228. Changelog: [Internal] Reviewed By: mlord93 Differential Revision: D66563226 --- .../jserrorhandler/JsErrorHandler.cpp | 26 ++++++++++++------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/packages/react-native/ReactCommon/jserrorhandler/JsErrorHandler.cpp b/packages/react-native/ReactCommon/jserrorhandler/JsErrorHandler.cpp index a8e3f4069af381..2d7b735ae60acc 100644 --- a/packages/react-native/ReactCommon/jserrorhandler/JsErrorHandler.cpp +++ b/packages/react-native/ReactCommon/jserrorhandler/JsErrorHandler.cpp @@ -29,9 +29,12 @@ bool isLooselyNull(const jsi::Value& value) { return value.isNull() || value.isUndefined(); } -bool isEmptyString(jsi::Runtime& runtime, const jsi::Value& value) { +bool isEqualTo( + jsi::Runtime& runtime, + const jsi::Value& value, + std::string str) { return jsi::Value::strictEquals( - runtime, value, jsi::String::createFromUtf8(runtime, "")); + runtime, value, jsi::String::createFromUtf8(runtime, str)); } std::string stringifyToCpp(jsi::Runtime& runtime, const jsi::Value& value) { @@ -265,7 +268,7 @@ void JsErrorHandler::handleErrorWithCppPipeline( } auto nameValue = errorObj.getProperty(runtime, "name"); - auto name = (isLooselyNull(nameValue) || isEmptyString(runtime, nameValue)) + auto name = (isLooselyNull(nameValue) || isEqualTo(runtime, nameValue, "")) ? std::nullopt : std::optional(stringifyToCpp(runtime, nameValue)); @@ -383,14 +386,19 @@ void JsErrorHandler::handleErrorWithCppPipeline( return; } - if (isFatal) { - if (_hasHandledFatalError) { - return; + auto errorType = errorObj.getProperty(runtime, "type"); + auto isWarn = isEqualTo(runtime, errorType, "warn"); + + if (isFatal || !isWarn) { + if (isFatal) { + if (_hasHandledFatalError) { + return; + } + _hasHandledFatalError = true; } - _hasHandledFatalError = true; - } - _onJsError(runtime, parsedError); + _onJsError(runtime, parsedError); + } } void JsErrorHandler::registerErrorListener(