From f2b102485fa554064c2af8ebe2080a6fca2c3f40 Mon Sep 17 00:00:00 2001 From: Phillip Pan Date: Thu, 17 Aug 2023 17:27:58 -0700 Subject: [PATCH] Back out "remove RCTSurfaceSizeMeasureMode from public contract of RCTSurfaceHostingProxyRootView" Summary: Original commit changeset: c3240ad4c1e6 Original Phabricator Diff: D48140102 Changelog: [Internal] i suck bypass-github-export-checks Reviewed By: makovkastar Differential Revision: D48449490 fbshipit-source-id: e398726dda8b8f08ab55326c1f210b3b01b09dc5 --- .../Libraries/AppDelegate/RCTAppDelegate.mm | 6 ++- .../RCTSurfaceHostingProxyRootView.h | 4 +- .../RCTSurfaceHostingProxyRootView.mm | 46 ++++++++++++++++++- 3 files changed, 51 insertions(+), 5 deletions(-) diff --git a/packages/react-native/Libraries/AppDelegate/RCTAppDelegate.mm b/packages/react-native/Libraries/AppDelegate/RCTAppDelegate.mm index 711c56115fd..12f59473293 100644 --- a/packages/react-native/Libraries/AppDelegate/RCTAppDelegate.mm +++ b/packages/react-native/Libraries/AppDelegate/RCTAppDelegate.mm @@ -87,8 +87,10 @@ static NSString *const kRNConcurrentRoot = @"concurrentRoot"; RCTFabricSurface *surface = [_reactHost createSurfaceWithModuleName:self.moduleName initialProperties:launchOptions]; - RCTSurfaceHostingProxyRootView *surfaceHostingProxyRootView = - [[RCTSurfaceHostingProxyRootView alloc] initWithSurface:surface moduleRegistry:[_reactHost getModuleRegistry]]; + RCTSurfaceHostingProxyRootView *surfaceHostingProxyRootView = [[RCTSurfaceHostingProxyRootView alloc] + initWithSurface:surface + sizeMeasureMode:RCTSurfaceSizeMeasureModeWidthExact | RCTSurfaceSizeMeasureModeHeightExact + moduleRegistry:[_reactHost getModuleRegistry]]; rootView = (RCTRootView *)surfaceHostingProxyRootView; #endif diff --git a/packages/react-native/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingProxyRootView.h b/packages/react-native/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingProxyRootView.h index 241693f25e9..647615e98f9 100644 --- a/packages/react-native/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingProxyRootView.h +++ b/packages/react-native/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingProxyRootView.h @@ -45,7 +45,9 @@ NS_ASSUME_NONNULL_BEGIN /** * Bridgeless mode initializer */ -- (instancetype)initWithSurface:(id)surface moduleRegistry:(RCTModuleRegistry *)moduleRegistry; +- (instancetype)initWithSurface:(id)surface + sizeMeasureMode:(RCTSurfaceSizeMeasureMode)sizeMeasureMode + moduleRegistry:(RCTModuleRegistry *)moduleRegistry; - (instancetype)initWithSurface:(id)surface; diff --git a/packages/react-native/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingProxyRootView.mm b/packages/react-native/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingProxyRootView.mm index 4755f7787c6..a7c67cffcc6 100644 --- a/packages/react-native/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingProxyRootView.mm +++ b/packages/react-native/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingProxyRootView.mm @@ -53,9 +53,51 @@ static RCTRootViewSizeFlexibility convertToRootViewSizeFlexibility(RCTSurfaceSiz RCTModuleRegistry *_moduleRegistry; } -- (instancetype)initWithSurface:(id)surface moduleRegistry:(RCTModuleRegistry *)moduleRegistry +- (instancetype)initWithBridge:(RCTBridge *)bridge + moduleName:(NSString *)moduleName + initialProperties:(NSDictionary *)initialProperties { - if (self = [self initWithSurface:surface]) { + RCTAssertMainQueue(); + RCTAssert(bridge, @"A bridge instance is required to create an RCTSurfaceHostingProxyRootView"); + RCTAssert(moduleName, @"A moduleName is required to create an RCTSurfaceHostingProxyRootView"); + + RCT_PROFILE_BEGIN_EVENT(RCTProfileTagAlways, @"-[RCTSurfaceHostingProxyRootView init]", nil); + + _bridge = bridge; + _minimumSize = CGSizeZero; + + if (!bridge.isLoading) { + [bridge.performanceLogger markStartForTag:RCTPLTTI]; + } + + // `RCTRootViewSizeFlexibilityNone` is the RCTRootView's default. + RCTSurfaceSizeMeasureMode sizeMeasureMode = convertToSurfaceSizeMeasureMode(RCTRootViewSizeFlexibilityNone); + + self = [super initWithBridge:bridge + moduleName:moduleName + initialProperties:initialProperties + sizeMeasureMode:sizeMeasureMode]; + + RCT_PROFILE_END_EVENT(RCTProfileTagAlways, @""); + + return self; +} + +- (instancetype)initWithBundleURL:(NSURL *)bundleURL + moduleName:(NSString *)moduleName + initialProperties:(NSDictionary *)initialProperties + launchOptions:(NSDictionary *)launchOptions +{ + RCTBridge *bridge = [[RCTBridge alloc] initWithBundleURL:bundleURL moduleProvider:nil launchOptions:launchOptions]; + + return [self initWithBridge:bridge moduleName:moduleName initialProperties:initialProperties]; +} + +- (instancetype)initWithSurface:(id)surface + sizeMeasureMode:(RCTSurfaceSizeMeasureMode)sizeMeasureMode + moduleRegistry:(RCTModuleRegistry *)moduleRegistry +{ + if (self = [super initWithSurface:surface sizeMeasureMode:sizeMeasureMode]) { _moduleRegistry = moduleRegistry; }