Remove gating for react_fabric.enableV2AsynchronousEventBeat

Summary:
changelog: [internal]

enableV2AsynchronousEventBeat is shipped, let's remove gating

Reviewed By: javache

Differential Revision: D34108109

fbshipit-source-id: 0264c85cf01f011ab368d56e12f79cc978f9e106
This commit is contained in:
Samuel Susla 2022-02-10 06:46:12 -08:00 коммит произвёл Facebook GitHub Bot
Родитель 980c52de41
Коммит e47e869a00
4 изменённых файлов: 22 добавлений и 112 удалений

Просмотреть файл

@ -9,11 +9,11 @@
#include <react/renderer/core/EventBeat.h> #include <react/renderer/core/EventBeat.h>
#include <react/renderer/uimanager/primitives.h> #include <react/renderer/uimanager/primitives.h>
#include "AsyncEventBeatV2.h" #include "AsyncEventBeat.h"
namespace facebook::react { namespace facebook::react {
AsyncEventBeatV2::AsyncEventBeatV2( AsyncEventBeat::AsyncEventBeat(
EventBeat::SharedOwnerBox const &ownerBox, EventBeat::SharedOwnerBox const &ownerBox,
EventBeatManager *eventBeatManager, EventBeatManager *eventBeatManager,
RuntimeExecutor runtimeExecutor, RuntimeExecutor runtimeExecutor,
@ -25,11 +25,11 @@ AsyncEventBeatV2::AsyncEventBeatV2(
eventBeatManager->addObserver(*this); eventBeatManager->addObserver(*this);
} }
AsyncEventBeatV2::~AsyncEventBeatV2() { AsyncEventBeat::~AsyncEventBeat() {
eventBeatManager_->removeObserver(*this); eventBeatManager_->removeObserver(*this);
} }
void AsyncEventBeatV2::tick() const { void AsyncEventBeat::tick() const {
if (!isRequested_ || isBeatCallbackScheduled_) { if (!isRequested_ || isBeatCallbackScheduled_) {
return; return;
} }
@ -50,11 +50,11 @@ void AsyncEventBeatV2::tick() const {
}); });
} }
void AsyncEventBeatV2::induce() const { void AsyncEventBeat::induce() const {
tick(); tick();
} }
void AsyncEventBeatV2::request() const { void AsyncEventBeat::request() const {
bool alreadyRequested = isRequested_; bool alreadyRequested = isRequested_;
EventBeat::request(); EventBeat::request();
if (!alreadyRequested) { if (!alreadyRequested) {

Просмотреть файл

@ -7,14 +7,11 @@
#pragma once #pragma once
#include <jsi/jsi.h>
#include <react/renderer/core/EventBeat.h> #include <react/renderer/core/EventBeat.h>
#include <react/renderer/uimanager/primitives.h>
#include "EventBeatManager.h" #include "EventBeatManager.h"
namespace facebook { namespace facebook::react {
namespace react {
class AsyncEventBeat final : public EventBeat, public EventBeatManagerObserver { class AsyncEventBeat final : public EventBeat, public EventBeatManagerObserver {
public: public:
@ -22,50 +19,21 @@ class AsyncEventBeat final : public EventBeat, public EventBeatManagerObserver {
EventBeat::SharedOwnerBox const &ownerBox, EventBeat::SharedOwnerBox const &ownerBox,
EventBeatManager *eventBeatManager, EventBeatManager *eventBeatManager,
RuntimeExecutor runtimeExecutor, RuntimeExecutor runtimeExecutor,
jni::global_ref<jobject> javaUIManager) jni::global_ref<jobject> javaUIManager);
: EventBeat(ownerBox),
eventBeatManager_(eventBeatManager),
runtimeExecutor_(std::move(runtimeExecutor)),
javaUIManager_(std::move(javaUIManager)) {
eventBeatManager->addObserver(*this);
}
~AsyncEventBeat() { ~AsyncEventBeat() override;
eventBeatManager_->removeObserver(*this);
}
void tick() const override { void tick() const override;
runtimeExecutor_([this, ownerBox = ownerBox_](jsi::Runtime &runtime) {
auto owner = ownerBox->owner.lock();
if (!owner) {
return;
}
this->beat(runtime); void induce() const override;
});
}
void induce() const override { void request() const override;
tick();
}
void request() const override {
bool alreadyRequested = isRequested_;
EventBeat::request();
if (!alreadyRequested) {
// Notifies java side that an event will be dispatched (e.g. LayoutEvent)
static auto onRequestEventBeat =
jni::findClassStatic("com/facebook/react/fabric/FabricUIManager")
->getMethod<void()>("onRequestEventBeat");
onRequestEventBeat(javaUIManager_);
}
}
private: private:
EventBeatManager *eventBeatManager_; EventBeatManager *eventBeatManager_;
RuntimeExecutor runtimeExecutor_; RuntimeExecutor runtimeExecutor_;
jni::global_ref<jobject> javaUIManager_; jni::global_ref<jobject> javaUIManager_;
mutable std::atomic<bool> isBeatCallbackScheduled_{false};
}; };
} // namespace react } // namespace facebook::react
} // namespace facebook

Просмотреть файл

@ -1,40 +0,0 @@
/*
* 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.
*/
#pragma once
#include <react/renderer/core/EventBeat.h>
#include "EventBeatManager.h"
namespace facebook::react {
class AsyncEventBeatV2 final : public EventBeat,
public EventBeatManagerObserver {
public:
AsyncEventBeatV2(
EventBeat::SharedOwnerBox const &ownerBox,
EventBeatManager *eventBeatManager,
RuntimeExecutor runtimeExecutor,
jni::global_ref<jobject> javaUIManager);
~AsyncEventBeatV2() override;
void tick() const override;
void induce() const override;
void request() const override;
private:
EventBeatManager *eventBeatManager_;
RuntimeExecutor runtimeExecutor_;
jni::global_ref<jobject> javaUIManager_;
mutable std::atomic<bool> isBeatCallbackScheduled_{false};
};
} // namespace facebook::react

Просмотреть файл

@ -7,7 +7,6 @@
#include "Binding.h" #include "Binding.h"
#include "AsyncEventBeat.h" #include "AsyncEventBeat.h"
#include "AsyncEventBeatV2.h"
#include "EventEmitterWrapper.h" #include "EventEmitterWrapper.h"
#include "ReactNativeConfigHolder.h" #include "ReactNativeConfigHolder.h"
#include "StateWrapperImpl.h" #include "StateWrapperImpl.h"
@ -402,38 +401,21 @@ void Binding::installFabricUIManager(
} }
} }
auto enableV2AsynchronousEventBeat =
config->getBool("react_fabric:enable_asynchronous_event_beat_v2_android");
// TODO: T31905686 Create synchronous Event Beat // TODO: T31905686 Create synchronous Event Beat
EventBeat::Factory synchronousBeatFactory = EventBeat::Factory synchronousBeatFactory =
[eventBeatManager, [eventBeatManager, runtimeExecutor, globalJavaUiManager](
runtimeExecutor, EventBeat::SharedOwnerBox const &ownerBox)
globalJavaUiManager,
enableV2AsynchronousEventBeat](EventBeat::SharedOwnerBox const &ownerBox)
-> std::unique_ptr<EventBeat> { -> std::unique_ptr<EventBeat> {
if (enableV2AsynchronousEventBeat) { return std::make_unique<AsyncEventBeat>(
return std::make_unique<AsyncEventBeatV2>( ownerBox, eventBeatManager, runtimeExecutor, globalJavaUiManager);
ownerBox, eventBeatManager, runtimeExecutor, globalJavaUiManager);
} else {
return std::make_unique<AsyncEventBeat>(
ownerBox, eventBeatManager, runtimeExecutor, globalJavaUiManager);
}
}; };
EventBeat::Factory asynchronousBeatFactory = EventBeat::Factory asynchronousBeatFactory =
[eventBeatManager, [eventBeatManager, runtimeExecutor, globalJavaUiManager](
runtimeExecutor, EventBeat::SharedOwnerBox const &ownerBox)
globalJavaUiManager,
enableV2AsynchronousEventBeat](EventBeat::SharedOwnerBox const &ownerBox)
-> std::unique_ptr<EventBeat> { -> std::unique_ptr<EventBeat> {
if (enableV2AsynchronousEventBeat) { return std::make_unique<AsyncEventBeat>(
return std::make_unique<AsyncEventBeatV2>( ownerBox, eventBeatManager, runtimeExecutor, globalJavaUiManager);
ownerBox, eventBeatManager, runtimeExecutor, globalJavaUiManager);
} else {
return std::make_unique<AsyncEventBeat>(
ownerBox, eventBeatManager, runtimeExecutor, globalJavaUiManager);
}
}; };
contextContainer->insert("ReactNativeConfig", config); contextContainer->insert("ReactNativeConfig", config);