/* * 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. */ #pragma once #include "AndroidSwitchMeasurementsManager.h" #include "AndroidSwitchShadowNode.h" #include namespace facebook { namespace react { /* * Descriptor for component. */ class AndroidSwitchComponentDescriptor final : public ConcreteComponentDescriptor { public: AndroidSwitchComponentDescriptor( ComponentDescriptorParameters const ¶meters) : ConcreteComponentDescriptor(parameters), measurementsManager_(std::make_shared( contextContainer_)) {} void adopt(UnsharedShadowNode shadowNode) const override { ConcreteComponentDescriptor::adopt(shadowNode); assert(std::dynamic_pointer_cast(shadowNode)); auto androidSwitchShadowNode = std::static_pointer_cast(shadowNode); // `AndroidSwitchShadowNode` uses `AndroidSwitchMeasurementsManager` to // provide measurements to Yoga. androidSwitchShadowNode->setAndroidSwitchMeasurementsManager( measurementsManager_); // All `AndroidSwitchShadowNode`s must have leaf Yoga nodes with properly // setup measure function. androidSwitchShadowNode->enableMeasurement(); } private: const std::shared_ptr measurementsManager_; }; } // namespace react } // namespace facebook