/** * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * @providesModule SizeFlexibilityUpdateTest */ 'use strict'; var React = require('react'); var createReactClass = require('create-react-class'); var ReactNative = require('react-native'); var RCTNativeAppEventEmitter = require('RCTNativeAppEventEmitter'); var Subscribable = require('Subscribable'); var { View } = ReactNative; var { TestModule } = ReactNative.NativeModules; var reactViewWidth = 111; var reactViewHeight = 222; var finalState = false; var SizeFlexibilityUpdateTest = createReactClass({ displayName: 'SizeFlexibilityUpdateTest', mixins: [Subscribable.Mixin], componentWillMount: function() { this.addListenerOn( RCTNativeAppEventEmitter, 'rootViewDidChangeIntrinsicSize', this.rootViewDidChangeIntrinsicSize ); }, markPassed: function() { TestModule.markTestPassed(true); finalState = true; }, rootViewDidChangeIntrinsicSize: function(intrinsicSize) { if (finalState) { // If a test reaches its final state, it is not expected to do anything more TestModule.markTestPassed(false); return; } if (this.props.both) { if (intrinsicSize.width === reactViewWidth && intrinsicSize.height === reactViewHeight) { this.markPassed(); return; } } if (this.props.height) { if (intrinsicSize.width !== reactViewWidth && intrinsicSize.height === reactViewHeight) { this.markPassed(); return; } } if (this.props.width) { if (intrinsicSize.width === reactViewWidth && intrinsicSize.height !== reactViewHeight) { this.markPassed(); return; } } if (this.props.none) { if (intrinsicSize.width !== reactViewWidth && intrinsicSize.height !== reactViewHeight) { this.markPassed(); return; } } }, render() { return ( ); } }); SizeFlexibilityUpdateTest.displayName = 'SizeFlexibilityUpdateTest'; module.exports = SizeFlexibilityUpdateTest;