jiuyiUniapp/service/node_modules/react-native/ReactCommon/jsinspector-modern/InspectorFlags.cpp

70 lines
2.0 KiB
C++

/*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
#include "InspectorFlags.h"
#include <glog/logging.h>
#include <react/featureflags/ReactNativeFeatureFlags.h>
namespace facebook::react::jsinspector_modern {
InspectorFlags& InspectorFlags::getInstance() {
static InspectorFlags instance;
return instance;
}
bool InspectorFlags::getFuseboxEnabled() const {
return loadFlagsAndAssertUnchanged().fuseboxEnabled;
}
void InspectorFlags::dangerouslyResetFlags() {
*this = InspectorFlags{};
}
#if defined(REACT_NATIVE_FORCE_ENABLE_FUSEBOX) && \
defined(REACT_NATIVE_FORCE_DISABLE_FUSEBOX)
#error \
"Cannot define both REACT_NATIVE_FORCE_ENABLE_FUSEBOX and REACT_NATIVE_FORCE_DISABLE_FUSEBOX"
#endif
const InspectorFlags::Values& InspectorFlags::loadFlagsAndAssertUnchanged()
const {
InspectorFlags::Values newValues = {
.fuseboxEnabled =
#if defined(REACT_NATIVE_FORCE_ENABLE_FUSEBOX)
true,
#elif defined(REACT_NATIVE_FORCE_DISABLE_FUSEBOX)
false,
#elif defined(HERMES_ENABLE_DEBUGGER) && \
defined(REACT_NATIVE_ENABLE_FUSEBOX_DEBUG)
true,
#elif defined(HERMES_ENABLE_DEBUGGER)
ReactNativeFeatureFlags::fuseboxEnabledDebug(),
#elif defined(REACT_NATIVE_ENABLE_FUSEBOX_RELEASE)
true,
#else
ReactNativeFeatureFlags::fuseboxEnabledRelease(),
#endif
};
if (cachedValues_.has_value() && !inconsistentFlagsStateLogged_) {
if (cachedValues_ != newValues) {
LOG(ERROR)
<< "[InspectorFlags] Error: One or more ReactNativeFeatureFlags values "
<< "have changed during the global app lifetime. This may lead to "
<< "inconsistent inspector behaviour. Please quit and restart the app.";
inconsistentFlagsStateLogged_ = true;
}
}
cachedValues_ = newValues;
return cachedValues_.value();
}
} // namespace facebook::react::jsinspector_modern