From bdb9a1e0940ff149fdf1ad7531f904a2dabd78fb Mon Sep 17 00:00:00 2001 From: David Vacca Date: Mon, 12 Apr 2021 00:03:16 -0700 Subject: [PATCH] Add displayMode parameter into startSurface and setSurfaceProps methods Summary: This diff extends startSurface and setSurfaceProps methods with the new parameter called displayMode changelog: [internal] internal Reviewed By: yungsters Differential Revision: D27669847 fbshipit-source-id: c2ddb690ca897e46e00f07b491b91bb2bc8e847d --- .../renderer/scheduler/SurfaceHandler.cpp | 10 ++++++++-- .../react/renderer/uimanager/UIManager.cpp | 12 ++++++++---- .../react/renderer/uimanager/UIManager.h | 6 ++++-- .../renderer/uimanager/UIManagerBinding.cpp | 19 +++++++++++++------ .../renderer/uimanager/UIManagerBinding.h | 6 ++++-- .../react/renderer/uimanager/primitives.h | 11 +++++++++++ 6 files changed, 48 insertions(+), 16 deletions(-) diff --git a/ReactCommon/react/renderer/scheduler/SurfaceHandler.cpp b/ReactCommon/react/renderer/scheduler/SurfaceHandler.cpp index cd3d26fcef0..6cb7fb25451 100644 --- a/ReactCommon/react/renderer/scheduler/SurfaceHandler.cpp +++ b/ReactCommon/react/renderer/scheduler/SurfaceHandler.cpp @@ -76,7 +76,10 @@ void SurfaceHandler::start() const noexcept { link_.shadowTree = shadowTree.get(); link_.uiManager->startSurface( - std::move(shadowTree), parameters.moduleName, parameters.props); + std::move(shadowTree), + parameters.moduleName, + parameters.props, + parameters_.displayMode); link_.status = Status::Running; @@ -121,7 +124,10 @@ void SurfaceHandler::setDisplayMode(DisplayMode displayMode) const noexcept { } link_.uiManager->setSurfaceProps( - parameters_.surfaceId, parameters_.moduleName, parameters_.props); + parameters_.surfaceId, + parameters_.moduleName, + parameters_.props, + parameters_.displayMode); applyDisplayMode(displayMode); } diff --git a/ReactCommon/react/renderer/uimanager/UIManager.cpp b/ReactCommon/react/renderer/uimanager/UIManager.cpp index 9824c475652..74634904d77 100644 --- a/ReactCommon/react/renderer/uimanager/UIManager.cpp +++ b/ReactCommon/react/renderer/uimanager/UIManager.cpp @@ -148,7 +148,8 @@ void UIManager::setIsJSResponder( void UIManager::startSurface( ShadowTree::Unique &&shadowTree, std::string const &moduleName, - folly::dynamic const &props) const { + folly::dynamic const &props, + DisplayMode displayMode) const { SystraceSection s("UIManager::startSurface"); auto surfaceId = shadowTree->getSurfaceId(); @@ -160,14 +161,16 @@ void UIManager::startSurface( return; } - uiManagerBinding->startSurface(runtime, surfaceId, moduleName, props); + uiManagerBinding->startSurface( + runtime, surfaceId, moduleName, props, displayMode); }); } void UIManager::setSurfaceProps( SurfaceId surfaceId, std::string const &moduleName, - folly::dynamic const &props) const { + folly::dynamic const &props, + DisplayMode displayMode) const { SystraceSection s("UIManager::setSurfaceProps"); runtimeExecutor_([=](jsi::Runtime &runtime) { @@ -176,7 +179,8 @@ void UIManager::setSurfaceProps( return; } - uiManagerBinding->setSurfaceProps(runtime, surfaceId, moduleName, props); + uiManagerBinding->setSurfaceProps( + runtime, surfaceId, moduleName, props, displayMode); }); } diff --git a/ReactCommon/react/renderer/uimanager/UIManager.h b/ReactCommon/react/renderer/uimanager/UIManager.h index 17a608196dd..0133b1cb710 100644 --- a/ReactCommon/react/renderer/uimanager/UIManager.h +++ b/ReactCommon/react/renderer/uimanager/UIManager.h @@ -87,12 +87,14 @@ class UIManager final : public ShadowTreeDelegate { void startSurface( ShadowTree::Unique &&shadowTree, std::string const &moduleName, - folly::dynamic const &props) const; + folly::dynamic const &props, + DisplayMode displayMode) const; void setSurfaceProps( SurfaceId surfaceId, std::string const &moduleName, - folly::dynamic const &props) const; + folly::dynamic const &props, + DisplayMode displayMode) const; ShadowTree::Unique stopSurface(SurfaceId surfaceId) const; diff --git a/ReactCommon/react/renderer/uimanager/UIManagerBinding.cpp b/ReactCommon/react/renderer/uimanager/UIManagerBinding.cpp index a281b9cacbc..ac083a7cebc 100644 --- a/ReactCommon/react/renderer/uimanager/UIManagerBinding.cpp +++ b/ReactCommon/react/renderer/uimanager/UIManagerBinding.cpp @@ -12,6 +12,7 @@ #include #include #include +#include namespace facebook::react { @@ -143,7 +144,8 @@ void UIManagerBinding::startSurface( jsi::Runtime &runtime, SurfaceId surfaceId, std::string const &moduleName, - folly::dynamic const &initalProps) const { + folly::dynamic const &initalProps, + DisplayMode displayMode) const { folly::dynamic parameters = folly::dynamic::object(); parameters["rootTag"] = surfaceId; parameters["initialProps"] = initalProps; @@ -158,14 +160,16 @@ void UIManagerBinding::startSurface( method.call( runtime, {jsi::String::createFromUtf8(runtime, moduleName), - jsi::valueFromDynamic(runtime, parameters)}); + jsi::valueFromDynamic(runtime, parameters), + jsi::Value(runtime, displayModeToInt(displayMode))}); } else { callMethodOfModule( runtime, "AppRegistry", "runApplication", {jsi::String::createFromUtf8(runtime, moduleName), - jsi::valueFromDynamic(runtime, parameters)}); + jsi::valueFromDynamic(runtime, parameters), + jsi::Value(runtime, displayModeToInt(displayMode))}); } } @@ -173,7 +177,8 @@ void UIManagerBinding::setSurfaceProps( jsi::Runtime &runtime, SurfaceId surfaceId, std::string const &moduleName, - folly::dynamic const &initalProps) const { + folly::dynamic const &initalProps, + DisplayMode displayMode) const { folly::dynamic parameters = folly::dynamic::object(); parameters["rootTag"] = surfaceId; parameters["initialProps"] = initalProps; @@ -188,14 +193,16 @@ void UIManagerBinding::setSurfaceProps( method.call( runtime, {jsi::String::createFromUtf8(runtime, moduleName), - jsi::valueFromDynamic(runtime, parameters)}); + jsi::valueFromDynamic(runtime, parameters), + jsi::Value(runtime, displayModeToInt(displayMode))}); } else { callMethodOfModule( runtime, "AppRegistry", "setSurfaceProps", {jsi::String::createFromUtf8(runtime, moduleName), - jsi::valueFromDynamic(runtime, parameters)}); + jsi::valueFromDynamic(runtime, parameters), + jsi::Value(runtime, displayModeToInt(displayMode))}); } } diff --git a/ReactCommon/react/renderer/uimanager/UIManagerBinding.h b/ReactCommon/react/renderer/uimanager/UIManagerBinding.h index 5880ebe4e9c..c20e6c0fb65 100644 --- a/ReactCommon/react/renderer/uimanager/UIManagerBinding.h +++ b/ReactCommon/react/renderer/uimanager/UIManagerBinding.h @@ -53,7 +53,8 @@ class UIManagerBinding : public jsi::HostObject { jsi::Runtime &runtime, SurfaceId surfaceId, std::string const &moduleName, - folly::dynamic const &initalProps) const; + folly::dynamic const &initalProps, + DisplayMode displayMode) const; /* * Updates the React Native Surface identified with surfaceId and moduleName @@ -64,7 +65,8 @@ class UIManagerBinding : public jsi::HostObject { jsi::Runtime &runtime, SurfaceId surfaceId, std::string const &moduleName, - folly::dynamic const &props) const; + folly::dynamic const &props, + DisplayMode displayMode) const; /* * Stops React Native Surface with given id. diff --git a/ReactCommon/react/renderer/uimanager/primitives.h b/ReactCommon/react/renderer/uimanager/primitives.h index cb66f371c5f..8474a15ae44 100644 --- a/ReactCommon/react/renderer/uimanager/primitives.h +++ b/ReactCommon/react/renderer/uimanager/primitives.h @@ -124,6 +124,17 @@ inline static SurfaceId surfaceIdFromValue( return (SurfaceId)value.getNumber(); } +inline static int displayModeToInt(DisplayMode const value) { + switch (value) { + case DisplayMode::Visible: + return 1; + case DisplayMode::Suspended: + return 2; + case DisplayMode::Hidden: + return 3; + } +} + inline static std::string stringFromValue( jsi::Runtime &runtime, jsi::Value const &value) {