/* * 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 #pragma once namespace facebook::react { class MountingCoordinator; /** * Generic interface for anything that needs to override specific * MountingCoordinator methods. This is for platform-specific escape hatches * like animations. */ class MountingOverrideDelegate { public: virtual bool shouldOverridePullTransaction() const = 0; virtual ~MountingOverrideDelegate() = default; /** * Delegates that override this method are responsible for: * * - Returning a MountingTransaction with mutations * - Calling * - Telemetry, if appropriate * * @param surfaceId the Id of the surface to be mounted * @param number of the transaction * @param telemetry object associated with the transaction * @param mutations list of the mutations from the ShadowTree * @return the mounting transaction, if it was created */ virtual std::optional pullTransaction( SurfaceId surfaceId, MountingTransaction::Number number, const TransactionTelemetry& telemetry, ShadowViewMutationList mutations) const = 0; }; } // namespace facebook::react