diff --git a/Libraries/ReactNative/DummyUIManager.js b/Libraries/ReactNative/DummyUIManager.js index 1947640e0a8d54..0d380f0a276f86 100644 --- a/Libraries/ReactNative/DummyUIManager.js +++ b/Libraries/ReactNative/DummyUIManager.js @@ -20,6 +20,9 @@ module.exports = { } return null; }, + hasViewManagerConfig: (viewManagerName: string): boolean => { + return viewManagerName === 'RCTVirtualText'; + }, getConstants: (): {...} => ({}), getConstantsForViewManager: (viewManagerName: string) => {}, getDefaultEventTypes: (): Array<$FlowFixMe> => [], diff --git a/Libraries/ReactNative/PaperUIManager.js b/Libraries/ReactNative/PaperUIManager.js index 3ee17c5d807341..92f59e0a20863b 100644 --- a/Libraries/ReactNative/PaperUIManager.js +++ b/Libraries/ReactNative/PaperUIManager.js @@ -97,6 +97,9 @@ const UIManagerJS = { getViewManagerConfig(viewManagerName: string): any { return getViewManagerConfig(viewManagerName); }, + hasViewManagerConfig(viewManagerName: string): boolean { + return getViewManagerConfig(viewManagerName) != null; + }, }; // TODO (T45220498): Remove this. diff --git a/Libraries/ReactNative/UIManager.js b/Libraries/ReactNative/UIManager.js index 84b280dce9dc5d..d25d3040d45642 100644 --- a/Libraries/ReactNative/UIManager.js +++ b/Libraries/ReactNative/UIManager.js @@ -15,6 +15,7 @@ import type {Spec} from './NativeUIManager'; interface UIManagerJSInterface extends Spec { +getViewManagerConfig: (viewManagerName: string) => Object; + +hasViewManagerConfig: (viewManagerName: string) => boolean; +createView: ( reactTag: ?number, viewName: string, diff --git a/Libraries/ReactNative/UIManagerProperties.js b/Libraries/ReactNative/UIManagerProperties.js index 77e67267e57b19..f8f9f6b7ea82bc 100644 --- a/Libraries/ReactNative/UIManagerProperties.js +++ b/Libraries/ReactNative/UIManagerProperties.js @@ -57,6 +57,7 @@ module.exports = [ 'AccessibilityEventTypes', 'UIView', 'getViewManagerConfig', + 'hasViewManagerConfig', 'blur', 'focus', 'genericBubblingEventTypes', diff --git a/Libraries/Utilities/deprecatedPropType.js b/Libraries/Utilities/deprecatedPropType.js index 480cf4cbeda6f6..4fc73c836fe832 100644 --- a/Libraries/Utilities/deprecatedPropType.js +++ b/Libraries/Utilities/deprecatedPropType.js @@ -10,7 +10,7 @@ 'use strict'; -const UIManager = require('../ReactNative/UIManager'); +import UIManager from '../ReactNative/UIManager'; /** * Adds a deprecation warning when the prop is used. @@ -23,7 +23,7 @@ function deprecatedPropType( // Don't warn for native components. if ( !global.RN$Bridgeless && - !UIManager.getViewManagerConfig(componentName) && + UIManager.hasViewManagerConfig(componentName) && props[propName] !== undefined ) { console.warn( diff --git a/jest/setup.js b/jest/setup.js index 514e76c5242b7a..504ff379363746 100644 --- a/jest/setup.js +++ b/jest/setup.js @@ -69,6 +69,9 @@ jest }; } }), + hasViewManagerConfig: jest.fn(name => { + return true; + }), measure: jest.fn(), manageChildren: jest.fn(), removeSubviewsFromContainerWithID: jest.fn(),