/* * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ #include "AndroidSwitchMeasurementsManager.h" #include #include #include using namespace facebook::jni; namespace facebook { namespace react { Size AndroidSwitchMeasurementsManager::measure( SurfaceId surfaceId, LayoutConstraints layoutConstraints) const { { std::lock_guard lock(mutex_); if (hasBeenMeasured_) { return cachedMeasurement_; } } const jni::global_ref &fabricUIManager = contextContainer_->at>("FabricUIManager"); static auto measure = jni::findClassStatic("com/facebook/react/fabric/FabricUIManager") ->getMethod("measure"); auto minimumSize = layoutConstraints.minimumSize; auto maximumSize = layoutConstraints.maximumSize; local_ref componentName = make_jstring("AndroidSwitch"); auto measurement = yogaMeassureToSize(measure( fabricUIManager, surfaceId, componentName.get(), nullptr, nullptr, nullptr, minimumSize.width, maximumSize.width, minimumSize.height, maximumSize.height)); std::lock_guard lock(mutex_); cachedMeasurement_ = measurement; return measurement; } } // namespace react } // namespace facebook