From e00b9ac8f38fb1b7968c4bc5253a47656362fc5b Mon Sep 17 00:00:00 2001 From: Nick Lockwood Date: Fri, 5 Jun 2015 15:23:30 -0700 Subject: [PATCH 01/32] Added incremental XMLHttpRequest updates Summary: @public Previously, our XMLHttpRequest implementation would only update the readyState when the download was fully completed. This diff adds support for receiving incremental data updates as the download happens, which can be monitored by adding the onreadystatechange event handler. As a performance optimization, incremental data updates are only sent if the onreadystatechanged handler has been set in the JS, otherwise it just sends the whole data block once download is complete, as before. Test Plan: * Run the UIExplorer XMLHttpRequest example (in both OSS and Catalyst) to see incremental downloads working. * Run the Movies app to see regular (non-incremental) downloads in action * Run any network-based app in Catalyst shell to verify RKDataManager still works --- Examples/UIExplorer/UIExplorerList.js | 1 + Examples/UIExplorer/XHRExample.js | 131 +++++++++++++++++ .../InitializeJavaScriptAppEngine.js | 2 +- Libraries/Network/RCTDataManager.m | 139 ++++++++++++++---- Libraries/Network/XMLHttpRequest.ios.js | 69 ++++++++- Libraries/Network/XMLHttpRequestBase.js | 100 +++++++------ 6 files changed, 367 insertions(+), 75 deletions(-) create mode 100644 Examples/UIExplorer/XHRExample.js diff --git a/Examples/UIExplorer/UIExplorerList.js b/Examples/UIExplorer/UIExplorerList.js index cd73e6d06..d3ab881ac 100644 --- a/Examples/UIExplorer/UIExplorerList.js +++ b/Examples/UIExplorer/UIExplorerList.js @@ -77,6 +77,7 @@ var APIS = [ require('./StatusBarIOSExample'), require('./TimerExample'), require('./VibrationIOSExample'), + require('./XHRExample'), ]; var ds = new ListView.DataSource({ diff --git a/Examples/UIExplorer/XHRExample.js b/Examples/UIExplorer/XHRExample.js new file mode 100644 index 000000000..c5b350c70 --- /dev/null +++ b/Examples/UIExplorer/XHRExample.js @@ -0,0 +1,131 @@ +/** + * The examples provided by Facebook are for non-commercial testing and + * evaluation purposes only. + * + * Facebook reserves all rights not expressly granted. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL + * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * @flow + */ +'use strict'; + +var React = require('react-native'); +var { + ProgressViewIOS, + StyleSheet, + View, + Text, + TouchableHighlight, +} = React; + +class Downloader extends React.Component { + + xhr: XMLHttpRequest; + cancelled: boolean; + + constructor(props) { + super(props); + this.cancelled = false; + this.state = { + downloading: false, + contentSize: 1, + downloaded: 0, + }; + } + + download() { + this.xhr && this.xhr.abort(); + + var xhr = this.xhr || new XMLHttpRequest(); + xhr.onreadystatechange = () => { + if (xhr.readyState === xhr.HEADERS_RECEIVED) { + var contentSize = parseInt(xhr.getResponseHeader('Content-Length'), 10); + this.setState({ + contentSize: contentSize, + downloaded: 0, + }); + } else if (xhr.readyState === xhr.LOADING) { + this.setState({ + downloaded: xhr.responseText.length, + }); + } else if (xhr.readyState === xhr.DONE) { + this.setState({ + downloading: false, + }); + if (this.cancelled) { + this.cancelled = false; + return; + } + if (xhr.status === 200) { + alert('Download complete!'); + } else if (xhr.status !== 0) { + alert('Error: Server returned HTTP status of ' + xhr.status + ' ' + xhr.responseText); + } else { + alert('Error: ' + xhr.responseText); + } + } + }; + xhr.open('GET', 'http://www.gutenberg.org/cache/epub/100/pg100.txt'); + xhr.send(); + this.xhr = xhr; + + this.setState({downloading: true}); + } + + componentWillUnmount() { + this.cancelled = true; + this.xhr && this.xhr.abort(); + } + + render() { + var button = this.state.downloading ? ( + + + Downloading... + + + ) : ( + + + Download 5MB Text File + + + ); + + return ( + + {button} + + + ); + } +} + +exports.framework = 'React'; +exports.title = 'XMLHttpRequest'; +exports.description = 'XMLHttpRequest'; +exports.examples = [{ + title: 'File Download', + render() { + return ; + } +}]; + +var styles = StyleSheet.create({ + wrapper: { + borderRadius: 5, + marginBottom: 5, + }, + button: { + backgroundColor: '#eeeeee', + padding: 10, + }, +}); diff --git a/Libraries/JavaScriptAppEngine/Initialization/InitializeJavaScriptAppEngine.js b/Libraries/JavaScriptAppEngine/Initialization/InitializeJavaScriptAppEngine.js index 81978ee0c..f9fe1523d 100644 --- a/Libraries/JavaScriptAppEngine/Initialization/InitializeJavaScriptAppEngine.js +++ b/Libraries/JavaScriptAppEngine/Initialization/InitializeJavaScriptAppEngine.js @@ -85,7 +85,7 @@ function setUpAlert() { var alertOpts = { title: 'Alert', message: '' + text, - buttons: [{'cancel': 'Okay'}], + buttons: [{'cancel': 'OK'}], }; RCTAlertManager.alertWithArgs(alertOpts, null); }; diff --git a/Libraries/Network/RCTDataManager.m b/Libraries/Network/RCTDataManager.m index f4497a187..35400955b 100644 --- a/Libraries/Network/RCTDataManager.m +++ b/Libraries/Network/RCTDataManager.m @@ -11,10 +11,21 @@ #import "RCTAssert.h" #import "RCTConvert.h" +#import "RCTEventDispatcher.h" #import "RCTLog.h" #import "RCTUtils.h" +@interface RCTDataManager () + +@end + @implementation RCTDataManager +{ + NSURLSession *_session; + NSOperationQueue *_callbackQueue; +} + +@synthesize bridge = _bridge; RCT_EXPORT_MODULE() @@ -24,6 +35,7 @@ RCT_EXPORT_MODULE() */ RCT_EXPORT_METHOD(queryData:(NSString *)queryType withQuery:(NSDictionary *)query + sendIncrementalUpdates:(BOOL)incrementalUpdates responseSender:(RCTResponseSenderBlock)responseSender) { if ([queryType isEqualToString:@"http"]) { @@ -35,41 +47,30 @@ RCT_EXPORT_METHOD(queryData:(NSString *)queryType request.allHTTPHeaderFields = [RCTConvert NSDictionary:query[@"headers"]]; request.HTTPBody = [RCTConvert NSData:query[@"data"]]; - // Build data task - NSURLSessionDataTask *task = [[NSURLSession sharedSession] dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *connectionError) { + // Create session if one doesn't already exist + if (!_session) { + _callbackQueue = [[NSOperationQueue alloc] init]; + NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration]; + _session = [NSURLSession sessionWithConfiguration:configuration + delegate:self + delegateQueue:_callbackQueue]; + } - NSHTTPURLResponse *httpResponse = nil; - if ([response isKindOfClass:[NSHTTPURLResponse class]]) { - // Might be a local file request - httpResponse = (NSHTTPURLResponse *)response; - } - - // Build response - NSArray *responseJSON; - if (connectionError == nil) { - NSStringEncoding encoding = NSUTF8StringEncoding; - if (response.textEncodingName) { - CFStringEncoding cfEncoding = CFStringConvertIANACharSetNameToEncoding((CFStringRef)response.textEncodingName); - encoding = CFStringConvertEncodingToNSStringEncoding(cfEncoding); + __block NSURLSessionDataTask *task; + if (incrementalUpdates) { + task = [_session dataTaskWithRequest:request]; + } else { + task = [_session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + RCTSendResponseEvent(_bridge, task); + if (!error) { + RCTSendDataEvent(_bridge, task, data); } - responseJSON = @[ - @(httpResponse.statusCode ?: 200), - httpResponse.allHeaderFields ?: @{}, - [[NSString alloc] initWithData:data encoding:encoding] ?: @"", - ]; - } else { - responseJSON = @[ - @(httpResponse.statusCode), - httpResponse.allHeaderFields ?: @{}, - connectionError.localizedDescription ?: [NSNull null], - ]; - } - - // Send response (won't be sent on same thread as caller) - responseSender(responseJSON); - - }]; + RCTSendCompletionEvent(_bridge, task, error); + }]; + } + // Build data task + responseSender(@[@(task.taskIdentifier)]); [task resume]; } else { @@ -78,4 +79,78 @@ RCT_EXPORT_METHOD(queryData:(NSString *)queryType } } +#pragma mark - URLSession delegate + +- (void)URLSession:(NSURLSession *)session + dataTask:(NSURLSessionDataTask *)task +didReceiveResponse:(NSURLResponse *)response + completionHandler:(void (^)(NSURLSessionResponseDisposition))completionHandler +{ + RCTSendResponseEvent(_bridge, task); + completionHandler(NSURLSessionResponseAllow); +} + +- (void)URLSession:(NSURLSession *)session + dataTask:(NSURLSessionDataTask *)task + didReceiveData:(NSData *)data +{ + RCTSendDataEvent(_bridge, task, data); +} + +- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error +{ + RCTSendCompletionEvent(_bridge, task, error); +} + +#pragma mark - Build responses + +static void RCTSendResponseEvent(RCTBridge *bridge, NSURLSessionTask *task) +{ + NSURLResponse *response = task.response; + NSHTTPURLResponse *httpResponse = nil; + if ([response isKindOfClass:[NSHTTPURLResponse class]]) { + // Might be a local file request + httpResponse = (NSHTTPURLResponse *)response; + } + + NSArray *responseJSON = @[@(task.taskIdentifier), + @(httpResponse.statusCode ?: 200), + httpResponse.allHeaderFields ?: @{}, + ]; + + [bridge.eventDispatcher sendDeviceEventWithName:@"didReceiveNetworkResponse" + body:responseJSON]; +} + +static void RCTSendDataEvent(RCTBridge *bridge, NSURLSessionDataTask *task, NSData *data) +{ + // Get text encoding + NSURLResponse *response = task.response; + NSStringEncoding encoding = NSUTF8StringEncoding; + if (response.textEncodingName) { + CFStringEncoding cfEncoding = CFStringConvertIANACharSetNameToEncoding((CFStringRef)response.textEncodingName); + encoding = CFStringConvertEncodingToNSStringEncoding(cfEncoding); + } + + NSString *responseText = [[NSString alloc] initWithData:data encoding:encoding]; + if (!responseText && data.length) { + RCTLogError(@"Received data was invalid."); + return; + } + + NSArray *responseJSON = @[@(task.taskIdentifier), responseText ?: @""]; + [bridge.eventDispatcher sendDeviceEventWithName:@"didReceiveNetworkData" + body:responseJSON]; +} + +static void RCTSendCompletionEvent(RCTBridge *bridge, NSURLSessionTask *task, NSError *error) +{ + NSArray *responseJSON = @[@(task.taskIdentifier), + error.localizedDescription ?: [NSNull null], + ]; + + [bridge.eventDispatcher sendDeviceEventWithName:@"didCompleteNetworkResponse" + body:responseJSON]; +} + @end diff --git a/Libraries/Network/XMLHttpRequest.ios.js b/Libraries/Network/XMLHttpRequest.ios.js index 9249047da..a54822dab 100644 --- a/Libraries/Network/XMLHttpRequest.ios.js +++ b/Libraries/Network/XMLHttpRequest.ios.js @@ -12,11 +12,73 @@ 'use strict'; var RCTDataManager = require('NativeModules').DataManager; +var RCTDeviceEventEmitter = require('RCTDeviceEventEmitter'); var XMLHttpRequestBase = require('XMLHttpRequestBase'); class XMLHttpRequest extends XMLHttpRequestBase { + _requestId: ?number; + _subscriptions: [any]; + + constructor() { + super(); + this._requestId = null; + this._subscriptions = []; + } + + _didCreateRequest(requestId: number): void { + this._requestId = requestId; + this._subscriptions.push(RCTDeviceEventEmitter.addListener( + 'didReceiveNetworkResponse', + (args) => this._didReceiveResponse.call(this, args[0], args[1], args[2]) + )); + this._subscriptions.push(RCTDeviceEventEmitter.addListener( + 'didReceiveNetworkData', + (args) => this._didReceiveData.call(this, args[0], args[1]) + )); + this._subscriptions.push(RCTDeviceEventEmitter.addListener( + 'didCompleteNetworkResponse', + (args) => this._didCompleteResponse.apply(this, args[0], args[1]) + )); + } + + _didReceiveResponse(requestId: number, status: number, responseHeaders: ?Object): void { + if (requestId === this._requestId) { + this.status = status; + this.setResponseHeaders(responseHeaders); + this.setReadyState(this.HEADERS_RECEIVED); + } + } + + _didReceiveData(requestId: number, responseText: string): void { + if (requestId === this._requestId) { + if (!this.responseText) { + this.responseText = responseText; + } else { + this.responseText += responseText; + } + this.setReadyState(this.LOADING); + } + } + + _didCompleteResponse(requestId: number, error: string): void { + if (requestId === this._requestId) { + this.responseText = error; + this._clearSubscriptions(); + this._requestId = null; + this.setReadyState(this.DONE); + } + } + + _clearSubscriptions(): void { + for (var i = 0; i < this._subscriptions.length; i++) { + var sub = this._subscriptions[i]; + sub.remove(); + } + this._subscriptions = []; + } + sendImpl(method: ?string, url: ?string, headers: Object, data: any): void { RCTDataManager.queryData( 'http', @@ -26,11 +88,16 @@ class XMLHttpRequest extends XMLHttpRequestBase { data: data, headers: headers, }, - this.callback.bind(this) + this.onreadystatechange ? true : false, + this._didCreateRequest.bind(this) ); } abortImpl(): void { + if (this._requestId) { + this._clearSubscriptions(); + this._requestId = null; + } console.warn( 'XMLHttpRequest: abort() cancels JS callbacks ' + 'but not native HTTP request.' diff --git a/Libraries/Network/XMLHttpRequestBase.js b/Libraries/Network/XMLHttpRequestBase.js index 3570e4bf2..9d06f486a 100644 --- a/Libraries/Network/XMLHttpRequestBase.js +++ b/Libraries/Network/XMLHttpRequestBase.js @@ -1,8 +1,13 @@ /** - * Copyright 2004-present Facebook. All Rights Reserved. + * 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. * - * @flow * @providesModule XMLHttpRequestBase + * @flow */ 'use strict'; @@ -30,6 +35,7 @@ class XMLHttpRequestBase { _headers: Object; _sent: boolean; _aborted: boolean; + _lowerCaseResponseHeaders: Object; constructor() { this.UNSENT = 0; @@ -38,46 +44,52 @@ class XMLHttpRequestBase { this.LOADING = 3; this.DONE = 4; - this.onreadystatechange = undefined; - this.upload = undefined; /* Upload not supported */ - this.readyState = this.UNSENT; - this.responseHeaders = undefined; - this.responseText = undefined; - this.status = 0; + this.onreadystatechange = null; + this.onload = null; + this.upload = undefined; /* Upload not supported yet */ + this._reset(); this._method = null; this._url = null; - this._headers = {}; - this._sent = false; this._aborted = false; } + _reset() { + this.readyState = this.UNSENT; + this.responseHeaders = undefined; + this.responseText = ''; + this.status = 0; + + this._headers = {}; + this._sent = false; + this._lowerCaseResponseHeaders = {}; + } + getAllResponseHeaders(): ?string { - if (this.responseHeaders) { - var headers = []; - for (var headerName in this.responseHeaders) { - headers.push(headerName + ': ' + this.responseHeaders[headerName]); - } - return headers.join('\n'); + if (!this.responseHeaders) { + // according to the spec, return null if no response has been received + return null; } - // according to the spec, return null <==> no response has been received - return null; + var headers = this.responseHeaders || {}; + return Object.keys(headers).map((headerName) => { + return headerName + ': ' + headers[headerName]; + }).join('\n'); } getResponseHeader(header: string): ?string { - if (this.responseHeaders) { - var value = this.responseHeaders[header.toLowerCase()]; - return value !== undefined ? value : null; - } - return null; + var value = this._lowerCaseResponseHeaders[header.toLowerCase()]; + return value !== undefined ? value : null; } setRequestHeader(header: string, value: any): void { + if (this.readyState !== this.OPENED) { + throw new Error('Request has not been opened'); + } this._headers[header.toLowerCase()] = value; } open(method: string, url: string, async: ?boolean): void { - /* Other optional arguments are not supported */ + /* Other optional arguments are not supported yet */ if (this.readyState !== this.UNSENT) { throw new Error('Cannot open, already sending'); } @@ -85,10 +97,11 @@ class XMLHttpRequestBase { // async is default throw new Error('Synchronous http requests are not supported'); } + this._reset(); this._method = method; this._url = url; this._aborted = false; - this._setReadyState(this.OPENED); + this.setReadyState(this.OPENED); } sendImpl(method: ?string, url: ?string, headers: Object, data: any): void { @@ -111,20 +124,18 @@ class XMLHttpRequestBase { } abort(): void { + this._aborted = true; this.abortImpl(); // only call onreadystatechange if there is something to abort, // below logic is per spec if (!(this.readyState === this.UNSENT || (this.readyState === this.OPENED && !this._sent) || this.readyState === this.DONE)) { - this._sent = false; - this._setReadyState(this.DONE); + this._reset(); + this.setReadyState(this.DONE); } - if (this.readyState === this.DONE) { - this._sendLoad(); - } - this.readyState = this.UNSENT; - this._aborted = true; + // Reset again after, in case modified in handler + this._reset(); } callback(status: number, responseHeaders: ?Object, responseText: string): void { @@ -132,18 +143,22 @@ class XMLHttpRequestBase { return; } this.status = status; - // Headers should be case-insensitive - var lcResponseHeaders = {}; - for (var header in responseHeaders) { - lcResponseHeaders[header.toLowerCase()] = responseHeaders[header]; - } - this.responseHeaders = lcResponseHeaders; + this.setResponseHeaders(responseHeaders); this.responseText = responseText; - this._setReadyState(this.DONE); - this._sendLoad(); + this.setReadyState(this.DONE); } - _setReadyState(newState: number): void { + setResponseHeaders(responseHeaders: ?Object): void { + this.responseHeaders = responseHeaders || null; + var headers = responseHeaders || {}; + this._lowerCaseResponseHeaders = + Object.keys(headers).reduce((lcaseHeaders, headerName) => { + lcaseHeaders[headerName.toLowerCase()] = headers[headerName]; + return headers; + }, {}); + } + + setReadyState(newState: number): void { this.readyState = newState; // TODO: workaround flow bug with nullable function checks var onreadystatechange = this.onreadystatechange; @@ -152,6 +167,9 @@ class XMLHttpRequestBase { // event anywhere, let's leave it empty onreadystatechange(null); } + if (newState === this.DONE && !this._aborted) { + this._sendLoad(); + } } _sendLoad(): void { From 96c070de117793b37aaa6783df1fed785ae44a23 Mon Sep 17 00:00:00 2001 From: Nick Lockwood Date: Fri, 5 Jun 2015 18:47:32 -0700 Subject: [PATCH 02/32] Fixed typo in XMLHttpRequest.ios.js --- Libraries/Network/XMLHttpRequest.ios.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Libraries/Network/XMLHttpRequest.ios.js b/Libraries/Network/XMLHttpRequest.ios.js index a54822dab..8563c8b7a 100644 --- a/Libraries/Network/XMLHttpRequest.ios.js +++ b/Libraries/Network/XMLHttpRequest.ios.js @@ -39,7 +39,7 @@ class XMLHttpRequest extends XMLHttpRequestBase { )); this._subscriptions.push(RCTDeviceEventEmitter.addListener( 'didCompleteNetworkResponse', - (args) => this._didCompleteResponse.apply(this, args[0], args[1]) + (args) => this._didCompleteResponse.call(this, args[0], args[1]) )); } From 40579181d359d63d2d3b69113ed47ebd3c058d6d Mon Sep 17 00:00:00 2001 From: Tadeu Zagallo Date: Sat, 6 Jun 2015 13:37:20 -0700 Subject: [PATCH 03/32] [ReactNative] Split oss tests into two targets: unit and integration --- .../UIExplorer.xcodeproj/project.pbxproj | 229 ++++++++++++++---- .../xcschemes/UIExplorer.xcscheme | 32 ++- .../UIExplorerIntegrationTests/Info.plist | 24 ++ .../testLayoutExampleSnapshot_1@2x.png | Bin .../testSliderExampleSnapshot_1@2x.png | Bin .../testSwitchExampleSnapshot_1@2x.png | Bin .../testTabBarExampleSnapshot_1@2x.png | Bin .../testTextExampleSnapshot_1@2x.png | Bin .../testViewExampleSnapshot_1@2x.png | Bin .../UIExplorerIntegrationTests.m} | 0 .../ClippingTests.m | 0 .../Info.plist | 0 12 files changed, 238 insertions(+), 47 deletions(-) create mode 100644 Examples/UIExplorer/UIExplorerIntegrationTests/Info.plist rename Examples/UIExplorer/{UIExplorerTests => UIExplorerIntegrationTests}/ReferenceImages/Examples-UIExplorer-UIExplorerApp/testLayoutExampleSnapshot_1@2x.png (100%) rename Examples/UIExplorer/{UIExplorerTests => UIExplorerIntegrationTests}/ReferenceImages/Examples-UIExplorer-UIExplorerApp/testSliderExampleSnapshot_1@2x.png (100%) rename Examples/UIExplorer/{UIExplorerTests => UIExplorerIntegrationTests}/ReferenceImages/Examples-UIExplorer-UIExplorerApp/testSwitchExampleSnapshot_1@2x.png (100%) rename Examples/UIExplorer/{UIExplorerTests => UIExplorerIntegrationTests}/ReferenceImages/Examples-UIExplorer-UIExplorerApp/testTabBarExampleSnapshot_1@2x.png (100%) rename Examples/UIExplorer/{UIExplorerTests => UIExplorerIntegrationTests}/ReferenceImages/Examples-UIExplorer-UIExplorerApp/testTextExampleSnapshot_1@2x.png (100%) rename Examples/UIExplorer/{UIExplorerTests => UIExplorerIntegrationTests}/ReferenceImages/Examples-UIExplorer-UIExplorerApp/testViewExampleSnapshot_1@2x.png (100%) rename Examples/UIExplorer/{UIExplorerTests/UIExplorerTests.m => UIExplorerIntegrationTests/UIExplorerIntegrationTests.m} (100%) rename Examples/UIExplorer/{UIExplorerTests => UIExplorerUnitTests}/ClippingTests.m (100%) rename Examples/UIExplorer/{UIExplorerTests => UIExplorerUnitTests}/Info.plist (100%) diff --git a/Examples/UIExplorer/UIExplorer.xcodeproj/project.pbxproj b/Examples/UIExplorer/UIExplorer.xcodeproj/project.pbxproj index 8dea9bc79..0ffe9d4f4 100644 --- a/Examples/UIExplorer/UIExplorer.xcodeproj/project.pbxproj +++ b/Examples/UIExplorer/UIExplorer.xcodeproj/project.pbxproj @@ -7,18 +7,19 @@ objects = { /* Begin PBXBuildFile section */ - 004D28A31AAF61C70097A701 /* UIExplorerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 004D28A21AAF61C70097A701 /* UIExplorerTests.m */; }; 13417FE91AA91432003F314A /* libRCTImage.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 13417FE81AA91428003F314A /* libRCTImage.a */; }; 134180011AA9153C003F314A /* libRCTText.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 13417FEF1AA914B8003F314A /* libRCTText.a */; }; 1341802C1AA9178B003F314A /* libRCTNetwork.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1341802B1AA91779003F314A /* libRCTNetwork.a */; }; 134454601AAFCABD003F0779 /* libRCTAdSupport.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1344545A1AAFCAAE003F0779 /* libRCTAdSupport.a */; }; 134A8A2A1AACED7A00945AAE /* libRCTGeolocation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 134A8A251AACED6A00945AAE /* libRCTGeolocation.a */; }; - 1353F5461B0E64F9009B4FAC /* ClippingTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 1353F5451B0E64F9009B4FAC /* ClippingTests.m */; }; 139FDEDB1B0651FB00C62182 /* libRCTWebSocket.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 139FDED91B0651EA00C62182 /* libRCTWebSocket.a */; }; 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; }; 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB11A68108700A75B9A /* LaunchScreen.xib */; }; 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; + 143BC5881B21E18100462512 /* ClippingTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 143BC57D1B21E18100462512 /* ClippingTests.m */; }; + 143BC5891B21E18100462512 /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 143BC57E1B21E18100462512 /* Info.plist */; }; + 143BC5A11B21E45C00462512 /* UIExplorerIntegrationTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 143BC5A01B21E45C00462512 /* UIExplorerIntegrationTests.m */; }; 147CED4C1AB3532B00DA3E4C /* libRCTActionSheet.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 147CED4B1AB34F8C00DA3E4C /* libRCTActionSheet.a */; }; 14AADF051AC3DBB1002390C9 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 14AADF041AC3DB95002390C9 /* libReact.a */; }; 14DC67F41AB71881001358AB /* libRCTPushNotification.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 14DC67F11AB71876001358AB /* libRCTPushNotification.a */; }; @@ -77,6 +78,13 @@ remoteGlobalIDString = 3C86DF461ADF2C930047B81A; remoteInfo = RCTWebSocket; }; + 143BC59B1B21E3E100462512 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 13B07F861A680F5B00A75B9A; + remoteInfo = UIExplorer; + }; 147CED4A1AB34F8C00DA3E4C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 14E0EEC81AB118F7000DECC3 /* RCTActionSheet.xcodeproj */; @@ -122,15 +130,12 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 004D289E1AAF61C70097A701 /* UIExplorerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = UIExplorerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 004D28A11AAF61C70097A701 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 004D28A21AAF61C70097A701 /* UIExplorerTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = UIExplorerTests.m; sourceTree = ""; }; + 004D289E1AAF61C70097A701 /* UIExplorerUnitTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = UIExplorerUnitTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 13417FE31AA91428003F314A /* RCTImage.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTImage.xcodeproj; path = ../../Libraries/Image/RCTImage.xcodeproj; sourceTree = ""; }; 13417FEA1AA914B8003F314A /* RCTText.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTText.xcodeproj; path = ../../Libraries/Text/RCTText.xcodeproj; sourceTree = ""; }; 134180261AA91779003F314A /* RCTNetwork.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTNetwork.xcodeproj; path = ../../Libraries/Network/RCTNetwork.xcodeproj; sourceTree = ""; }; 134454551AAFCAAE003F0779 /* RCTAdSupport.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTAdSupport.xcodeproj; path = ../../Libraries/AdSupport/RCTAdSupport.xcodeproj; sourceTree = ""; }; 134A8A201AACED6A00945AAE /* RCTGeolocation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTGeolocation.xcodeproj; path = ../../Libraries/Geolocation/RCTGeolocation.xcodeproj; sourceTree = ""; }; - 1353F5451B0E64F9009B4FAC /* ClippingTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ClippingTests.m; sourceTree = ""; }; 139FDECA1B0651EA00C62182 /* RCTWebSocket.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTWebSocket.xcodeproj; path = ../../Libraries/WebSocket/RCTWebSocket.xcodeproj; sourceTree = ""; }; 13B07F961A680F5B00A75B9A /* UIExplorer.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = UIExplorer.app; sourceTree = BUILT_PRODUCTS_DIR; }; 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = UIExplorer/AppDelegate.h; sourceTree = ""; }; @@ -140,6 +145,17 @@ 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = UIExplorer/Info.plist; sourceTree = ""; }; 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = UIExplorer/main.m; sourceTree = ""; }; 13CC9D481AEED2B90020D1C2 /* RCTSettings.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTSettings.xcodeproj; path = ../../Libraries/Settings/RCTSettings.xcodeproj; sourceTree = ""; }; + 143BC57D1B21E18100462512 /* ClippingTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ClippingTests.m; sourceTree = ""; }; + 143BC57E1B21E18100462512 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 143BC5811B21E18100462512 /* testLayoutExampleSnapshot_1@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "testLayoutExampleSnapshot_1@2x.png"; sourceTree = ""; }; + 143BC5821B21E18100462512 /* testSliderExampleSnapshot_1@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "testSliderExampleSnapshot_1@2x.png"; sourceTree = ""; }; + 143BC5831B21E18100462512 /* testSwitchExampleSnapshot_1@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "testSwitchExampleSnapshot_1@2x.png"; sourceTree = ""; }; + 143BC5841B21E18100462512 /* testTabBarExampleSnapshot_1@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "testTabBarExampleSnapshot_1@2x.png"; sourceTree = ""; }; + 143BC5851B21E18100462512 /* testTextExampleSnapshot_1@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "testTextExampleSnapshot_1@2x.png"; sourceTree = ""; }; + 143BC5861B21E18100462512 /* testViewExampleSnapshot_1@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "testViewExampleSnapshot_1@2x.png"; sourceTree = ""; }; + 143BC5951B21E3E100462512 /* UIExplorerIntegrationTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = UIExplorerIntegrationTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 143BC5981B21E3E100462512 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 143BC5A01B21E45C00462512 /* UIExplorerIntegrationTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIExplorerIntegrationTests.m; sourceTree = ""; }; 14AADEFF1AC3DB95002390C9 /* React.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = React.xcodeproj; path = ../../React/React.xcodeproj; sourceTree = ""; }; 14DC67E71AB71876001358AB /* RCTPushNotification.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTPushNotification.xcodeproj; path = ../../Libraries/PushNotificationIOS/RCTPushNotification.xcodeproj; sourceTree = ""; }; 14E0EEC81AB118F7000DECC3 /* RCTActionSheet.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTActionSheet.xcodeproj; path = ../../Libraries/ActionSheetIOS/RCTActionSheet.xcodeproj; sourceTree = ""; }; @@ -174,27 +190,16 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 143BC5921B21E3E100462512 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 004D289F1AAF61C70097A701 /* UIExplorerTests */ = { - isa = PBXGroup; - children = ( - 004D28A21AAF61C70097A701 /* UIExplorerTests.m */, - 1353F5451B0E64F9009B4FAC /* ClippingTests.m */, - 004D28A01AAF61C70097A701 /* Supporting Files */, - ); - path = UIExplorerTests; - sourceTree = ""; - }; - 004D28A01AAF61C70097A701 /* Supporting Files */ = { - isa = PBXGroup; - children = ( - 004D28A11AAF61C70097A701 /* Info.plist */, - ); - name = "Supporting Files"; - sourceTree = ""; - }; 1316A21D1AA397F400C0188E /* Libraries */ = { isa = PBXGroup; children = ( @@ -275,6 +280,54 @@ name = UIExplorer; sourceTree = ""; }; + 143BC57C1B21E18100462512 /* UIExplorerUnitTests */ = { + isa = PBXGroup; + children = ( + 143BC57D1B21E18100462512 /* ClippingTests.m */, + 143BC57E1B21E18100462512 /* Info.plist */, + 143BC57F1B21E18100462512 /* ReferenceImages */, + ); + path = UIExplorerUnitTests; + sourceTree = ""; + }; + 143BC57F1B21E18100462512 /* ReferenceImages */ = { + isa = PBXGroup; + children = ( + 143BC5801B21E18100462512 /* Examples-UIExplorer-UIExplorerApp */, + ); + path = ReferenceImages; + sourceTree = ""; + }; + 143BC5801B21E18100462512 /* Examples-UIExplorer-UIExplorerApp */ = { + isa = PBXGroup; + children = ( + 143BC5811B21E18100462512 /* testLayoutExampleSnapshot_1@2x.png */, + 143BC5821B21E18100462512 /* testSliderExampleSnapshot_1@2x.png */, + 143BC5831B21E18100462512 /* testSwitchExampleSnapshot_1@2x.png */, + 143BC5841B21E18100462512 /* testTabBarExampleSnapshot_1@2x.png */, + 143BC5851B21E18100462512 /* testTextExampleSnapshot_1@2x.png */, + 143BC5861B21E18100462512 /* testViewExampleSnapshot_1@2x.png */, + ); + path = "Examples-UIExplorer-UIExplorerApp"; + sourceTree = ""; + }; + 143BC5961B21E3E100462512 /* UIExplorerIntegrationTests */ = { + isa = PBXGroup; + children = ( + 143BC5A01B21E45C00462512 /* UIExplorerIntegrationTests.m */, + 143BC5971B21E3E100462512 /* Supporting Files */, + ); + path = UIExplorerIntegrationTests; + sourceTree = ""; + }; + 143BC5971B21E3E100462512 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 143BC5981B21E3E100462512 /* Info.plist */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; 147CED471AB34F8C00DA3E4C /* Products */ = { isa = PBXGroup; children = ( @@ -320,7 +373,8 @@ children = ( 13B07FAE1A68108700A75B9A /* UIExplorer */, 1316A21D1AA397F400C0188E /* Libraries */, - 004D289F1AAF61C70097A701 /* UIExplorerTests */, + 143BC57C1B21E18100462512 /* UIExplorerUnitTests */, + 143BC5961B21E3E100462512 /* UIExplorerIntegrationTests */, 83CBBA001A601CBA00E9B192 /* Products */, ); indentWidth = 2; @@ -331,7 +385,8 @@ isa = PBXGroup; children = ( 13B07F961A680F5B00A75B9A /* UIExplorer.app */, - 004D289E1AAF61C70097A701 /* UIExplorerTests.xctest */, + 004D289E1AAF61C70097A701 /* UIExplorerUnitTests.xctest */, + 143BC5951B21E3E100462512 /* UIExplorerIntegrationTests.xctest */, ); name = Products; sourceTree = ""; @@ -347,9 +402,9 @@ /* End PBXGroup section */ /* Begin PBXNativeTarget section */ - 004D289D1AAF61C70097A701 /* UIExplorerTests */ = { + 004D289D1AAF61C70097A701 /* UIExplorerUnitTests */ = { isa = PBXNativeTarget; - buildConfigurationList = 004D28AD1AAF61C70097A701 /* Build configuration list for PBXNativeTarget "UIExplorerTests" */; + buildConfigurationList = 004D28AD1AAF61C70097A701 /* Build configuration list for PBXNativeTarget "UIExplorerUnitTests" */; buildPhases = ( 004D289A1AAF61C70097A701 /* Sources */, 004D289B1AAF61C70097A701 /* Frameworks */, @@ -360,9 +415,9 @@ dependencies = ( 004D28A51AAF61C70097A701 /* PBXTargetDependency */, ); - name = UIExplorerTests; + name = UIExplorerUnitTests; productName = UIExplorerTests; - productReference = 004D289E1AAF61C70097A701 /* UIExplorerTests.xctest */; + productReference = 004D289E1AAF61C70097A701 /* UIExplorerUnitTests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; 13B07F861A680F5B00A75B9A /* UIExplorer */ = { @@ -382,6 +437,24 @@ productReference = 13B07F961A680F5B00A75B9A /* UIExplorer.app */; productType = "com.apple.product-type.application"; }; + 143BC5941B21E3E100462512 /* UIExplorerIntegrationTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 143BC59D1B21E3E100462512 /* Build configuration list for PBXNativeTarget "UIExplorerIntegrationTests" */; + buildPhases = ( + 143BC5911B21E3E100462512 /* Sources */, + 143BC5921B21E3E100462512 /* Frameworks */, + 143BC5931B21E3E100462512 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 143BC59C1B21E3E100462512 /* PBXTargetDependency */, + ); + name = UIExplorerIntegrationTests; + productName = UIExplorerIntegrationTests; + productReference = 143BC5951B21E3E100462512 /* UIExplorerIntegrationTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -395,6 +468,10 @@ CreatedOnToolsVersion = 6.1.1; TestTargetID = 13B07F861A680F5B00A75B9A; }; + 143BC5941B21E3E100462512 = { + CreatedOnToolsVersion = 6.3.2; + TestTargetID = 13B07F861A680F5B00A75B9A; + }; }; }; buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "UIExplorer" */; @@ -461,7 +538,8 @@ projectRoot = ""; targets = ( 13B07F861A680F5B00A75B9A /* UIExplorer */, - 004D289D1AAF61C70097A701 /* UIExplorerTests */, + 004D289D1AAF61C70097A701 /* UIExplorerUnitTests */, + 143BC5941B21E3E100462512 /* UIExplorerIntegrationTests */, ); }; /* End PBXProject section */ @@ -558,6 +636,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 143BC5891B21E18100462512 /* Info.plist in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -570,6 +649,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 143BC5931B21E3E100462512 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -577,8 +663,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 004D28A31AAF61C70097A701 /* UIExplorerTests.m in Sources */, - 1353F5461B0E64F9009B4FAC /* ClippingTests.m in Sources */, + 143BC5881B21E18100462512 /* ClippingTests.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -591,6 +676,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 143BC5911B21E3E100462512 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 143BC5A11B21E45C00462512 /* UIExplorerIntegrationTests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ @@ -599,6 +692,11 @@ target = 13B07F861A680F5B00A75B9A /* UIExplorer */; targetProxy = 004D28A41AAF61C70097A701 /* PBXContainerItemProxy */; }; + 143BC59C1B21E3E100462512 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 13B07F861A680F5B00A75B9A /* UIExplorer */; + targetProxy = 143BC59B1B21E3E100462512 /* PBXContainerItemProxy */; + }; /* End PBXTargetDependency section */ /* Begin PBXVariantGroup section */ @@ -622,18 +720,14 @@ "$(SDKROOT)/Developer/Library/Frameworks", "$(inherited)", ); - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "FB_REFERENCE_IMAGE_DIR=\"\\\"$(SOURCE_ROOT)/$(PROJECT_NAME)Tests/ReferenceImages\\\"\"", - "$(inherited)", - ); + GCC_PREPROCESSOR_DEFINITIONS = "$(inherited)"; HEADER_SEARCH_PATHS = ( "$(inherited)", /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, "$(SRCROOT)/../../React/**", ); - INFOPLIST_FILE = UIExplorerTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 8.1; + INFOPLIST_FILE = UIExplorerUnitTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 8.3; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_NAME = "$(TARGET_NAME)"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/UIExplorer.app/UIExplorer"; @@ -653,8 +747,8 @@ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, "$(SRCROOT)/../../React/**", ); - INFOPLIST_FILE = UIExplorerTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 8.1; + INFOPLIST_FILE = UIExplorerUnitTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 8.3; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_NAME = "$(TARGET_NAME)"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/UIExplorer.app/UIExplorer"; @@ -698,6 +792,47 @@ }; name = Release; }; + 143BC59E1B21E3E100462512 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + ); + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + "$(inherited)", + "FB_REFERENCE_IMAGE_DIR=\"\\\"$(SOURCE_ROOT)/$(PROJECT_NAME)IntegrationTests/ReferenceImages\\\"\"", + ); + INFOPLIST_FILE = UIExplorerIntegrationTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 8.3; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/UIExplorer.app/UIExplorer"; + }; + name = Debug; + }; + 143BC59F1B21E3E100462512 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + ); + GCC_NO_COMMON_BLOCKS = YES; + INFOPLIST_FILE = UIExplorerIntegrationTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 8.3; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/UIExplorer.app/UIExplorer"; + }; + name = Release; + }; 83CBBA201A601CBA00E9B192 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -787,7 +922,7 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 004D28AD1AAF61C70097A701 /* Build configuration list for PBXNativeTarget "UIExplorerTests" */ = { + 004D28AD1AAF61C70097A701 /* Build configuration list for PBXNativeTarget "UIExplorerUnitTests" */ = { isa = XCConfigurationList; buildConfigurations = ( 004D28A61AAF61C70097A701 /* Debug */, @@ -805,6 +940,14 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 143BC59D1B21E3E100462512 /* Build configuration list for PBXNativeTarget "UIExplorerIntegrationTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 143BC59E1B21E3E100462512 /* Debug */, + 143BC59F1B21E3E100462512 /* Release */, + ); + defaultConfigurationIsVisible = 0; + }; 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "UIExplorer" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/Examples/UIExplorer/UIExplorer.xcodeproj/xcshareddata/xcschemes/UIExplorer.xcscheme b/Examples/UIExplorer/UIExplorer.xcodeproj/xcshareddata/xcschemes/UIExplorer.xcscheme index 488c0077d..cb55d85b0 100644 --- a/Examples/UIExplorer/UIExplorer.xcodeproj/xcshareddata/xcschemes/UIExplorer.xcscheme +++ b/Examples/UIExplorer/UIExplorer.xcodeproj/xcshareddata/xcschemes/UIExplorer.xcscheme @@ -29,8 +29,22 @@ + + + + @@ -47,8 +61,18 @@ + + + + diff --git a/Examples/UIExplorer/UIExplorerIntegrationTests/Info.plist b/Examples/UIExplorer/UIExplorerIntegrationTests/Info.plist new file mode 100644 index 000000000..802c25416 --- /dev/null +++ b/Examples/UIExplorer/UIExplorerIntegrationTests/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + com.facebook.React.$(PRODUCT_NAME:rfc1034identifier) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + + diff --git a/Examples/UIExplorer/UIExplorerTests/ReferenceImages/Examples-UIExplorer-UIExplorerApp/testLayoutExampleSnapshot_1@2x.png b/Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-UIExplorerApp/testLayoutExampleSnapshot_1@2x.png similarity index 100% rename from Examples/UIExplorer/UIExplorerTests/ReferenceImages/Examples-UIExplorer-UIExplorerApp/testLayoutExampleSnapshot_1@2x.png rename to Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-UIExplorerApp/testLayoutExampleSnapshot_1@2x.png diff --git a/Examples/UIExplorer/UIExplorerTests/ReferenceImages/Examples-UIExplorer-UIExplorerApp/testSliderExampleSnapshot_1@2x.png b/Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-UIExplorerApp/testSliderExampleSnapshot_1@2x.png similarity index 100% rename from Examples/UIExplorer/UIExplorerTests/ReferenceImages/Examples-UIExplorer-UIExplorerApp/testSliderExampleSnapshot_1@2x.png rename to Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-UIExplorerApp/testSliderExampleSnapshot_1@2x.png diff --git a/Examples/UIExplorer/UIExplorerTests/ReferenceImages/Examples-UIExplorer-UIExplorerApp/testSwitchExampleSnapshot_1@2x.png b/Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-UIExplorerApp/testSwitchExampleSnapshot_1@2x.png similarity index 100% rename from Examples/UIExplorer/UIExplorerTests/ReferenceImages/Examples-UIExplorer-UIExplorerApp/testSwitchExampleSnapshot_1@2x.png rename to Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-UIExplorerApp/testSwitchExampleSnapshot_1@2x.png diff --git a/Examples/UIExplorer/UIExplorerTests/ReferenceImages/Examples-UIExplorer-UIExplorerApp/testTabBarExampleSnapshot_1@2x.png b/Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-UIExplorerApp/testTabBarExampleSnapshot_1@2x.png similarity index 100% rename from Examples/UIExplorer/UIExplorerTests/ReferenceImages/Examples-UIExplorer-UIExplorerApp/testTabBarExampleSnapshot_1@2x.png rename to Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-UIExplorerApp/testTabBarExampleSnapshot_1@2x.png diff --git a/Examples/UIExplorer/UIExplorerTests/ReferenceImages/Examples-UIExplorer-UIExplorerApp/testTextExampleSnapshot_1@2x.png b/Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-UIExplorerApp/testTextExampleSnapshot_1@2x.png similarity index 100% rename from Examples/UIExplorer/UIExplorerTests/ReferenceImages/Examples-UIExplorer-UIExplorerApp/testTextExampleSnapshot_1@2x.png rename to Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-UIExplorerApp/testTextExampleSnapshot_1@2x.png diff --git a/Examples/UIExplorer/UIExplorerTests/ReferenceImages/Examples-UIExplorer-UIExplorerApp/testViewExampleSnapshot_1@2x.png b/Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-UIExplorerApp/testViewExampleSnapshot_1@2x.png similarity index 100% rename from Examples/UIExplorer/UIExplorerTests/ReferenceImages/Examples-UIExplorer-UIExplorerApp/testViewExampleSnapshot_1@2x.png rename to Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-UIExplorerApp/testViewExampleSnapshot_1@2x.png diff --git a/Examples/UIExplorer/UIExplorerTests/UIExplorerTests.m b/Examples/UIExplorer/UIExplorerIntegrationTests/UIExplorerIntegrationTests.m similarity index 100% rename from Examples/UIExplorer/UIExplorerTests/UIExplorerTests.m rename to Examples/UIExplorer/UIExplorerIntegrationTests/UIExplorerIntegrationTests.m diff --git a/Examples/UIExplorer/UIExplorerTests/ClippingTests.m b/Examples/UIExplorer/UIExplorerUnitTests/ClippingTests.m similarity index 100% rename from Examples/UIExplorer/UIExplorerTests/ClippingTests.m rename to Examples/UIExplorer/UIExplorerUnitTests/ClippingTests.m diff --git a/Examples/UIExplorer/UIExplorerTests/Info.plist b/Examples/UIExplorer/UIExplorerUnitTests/Info.plist similarity index 100% rename from Examples/UIExplorer/UIExplorerTests/Info.plist rename to Examples/UIExplorer/UIExplorerUnitTests/Info.plist From c2b0e727714cb55c43f7aba64a6ceb8905a009f6 Mon Sep 17 00:00:00 2001 From: Tadeu Zagallo Date: Sat, 6 Jun 2015 13:37:36 -0700 Subject: [PATCH 04/32] [ReactNative] Move unit tests to UIExplorer --- .../UIExplorer.xcodeproj/project.pbxproj | 147 +++++++++++--- .../LayoutSubviewsOrderingTest.m | 79 ++++++++ .../NSNotificationCenter+OCMAdditions.h | 26 +++ .../UIExplorerUnitTests/OCMock/OCMArg.h | 53 +++++ .../OCMock/OCMConstraint.h | 71 +++++++ .../UIExplorerUnitTests/OCMock/OCMLocation.h | 36 ++++ .../OCMock/OCMMacroState.h | 45 +++++ .../UIExplorerUnitTests/OCMock/OCMRecorder.h | 39 ++++ .../OCMock/OCMStubRecorder.h | 56 +++++ .../UIExplorerUnitTests/OCMock/OCMock.h | 84 ++++++++ .../UIExplorerUnitTests/OCMock/OCMockObject.h | 74 +++++++ .../UIExplorerUnitTests/RCTAllocationTests.m | 191 ++++++++++++++++++ .../UIExplorerUnitTests/RCTBridgeTests.m | 183 +++++++++++++++++ .../{ClippingTests.m => RCTClippingTests.m} | 0 .../RCTContextExecutorTests.m | 184 +++++++++++++++++ .../RCTConvert_NSURLTests.m | 48 +++++ .../RCTConvert_UIFontTests.m | 159 +++++++++++++++ .../RCTEventDispatcherTests.m | 144 +++++++++++++ .../UIExplorerUnitTests/RCTSparseArrayTests.m | 43 ++++ .../UIExplorerUnitTests/RCTUIManagerTests.m | 179 ++++++++++++++++ .../UIExplorerUnitTests/libOCMock.a | Bin 0 -> 2071640 bytes 21 files changed, 1815 insertions(+), 26 deletions(-) create mode 100644 Examples/UIExplorer/UIExplorerUnitTests/LayoutSubviewsOrderingTest.m create mode 100644 Examples/UIExplorer/UIExplorerUnitTests/OCMock/NSNotificationCenter+OCMAdditions.h create mode 100644 Examples/UIExplorer/UIExplorerUnitTests/OCMock/OCMArg.h create mode 100644 Examples/UIExplorer/UIExplorerUnitTests/OCMock/OCMConstraint.h create mode 100644 Examples/UIExplorer/UIExplorerUnitTests/OCMock/OCMLocation.h create mode 100644 Examples/UIExplorer/UIExplorerUnitTests/OCMock/OCMMacroState.h create mode 100644 Examples/UIExplorer/UIExplorerUnitTests/OCMock/OCMRecorder.h create mode 100644 Examples/UIExplorer/UIExplorerUnitTests/OCMock/OCMStubRecorder.h create mode 100644 Examples/UIExplorer/UIExplorerUnitTests/OCMock/OCMock.h create mode 100644 Examples/UIExplorer/UIExplorerUnitTests/OCMock/OCMockObject.h create mode 100644 Examples/UIExplorer/UIExplorerUnitTests/RCTAllocationTests.m create mode 100644 Examples/UIExplorer/UIExplorerUnitTests/RCTBridgeTests.m rename Examples/UIExplorer/UIExplorerUnitTests/{ClippingTests.m => RCTClippingTests.m} (100%) create mode 100644 Examples/UIExplorer/UIExplorerUnitTests/RCTContextExecutorTests.m create mode 100644 Examples/UIExplorer/UIExplorerUnitTests/RCTConvert_NSURLTests.m create mode 100644 Examples/UIExplorer/UIExplorerUnitTests/RCTConvert_UIFontTests.m create mode 100644 Examples/UIExplorer/UIExplorerUnitTests/RCTEventDispatcherTests.m create mode 100644 Examples/UIExplorer/UIExplorerUnitTests/RCTSparseArrayTests.m create mode 100644 Examples/UIExplorer/UIExplorerUnitTests/RCTUIManagerTests.m create mode 100644 Examples/UIExplorer/UIExplorerUnitTests/libOCMock.a diff --git a/Examples/UIExplorer/UIExplorer.xcodeproj/project.pbxproj b/Examples/UIExplorer/UIExplorer.xcodeproj/project.pbxproj index 0ffe9d4f4..30a39319a 100644 --- a/Examples/UIExplorer/UIExplorer.xcodeproj/project.pbxproj +++ b/Examples/UIExplorer/UIExplorer.xcodeproj/project.pbxproj @@ -17,11 +17,31 @@ 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB11A68108700A75B9A /* LaunchScreen.xib */; }; 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; - 143BC5881B21E18100462512 /* ClippingTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 143BC57D1B21E18100462512 /* ClippingTests.m */; }; - 143BC5891B21E18100462512 /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 143BC57E1B21E18100462512 /* Info.plist */; }; 143BC5A11B21E45C00462512 /* UIExplorerIntegrationTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 143BC5A01B21E45C00462512 /* UIExplorerIntegrationTests.m */; }; + 144D21241B2204C5006DB32B /* RCTClippingTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 144D21231B2204C5006DB32B /* RCTClippingTests.m */; }; 147CED4C1AB3532B00DA3E4C /* libRCTActionSheet.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 147CED4B1AB34F8C00DA3E4C /* libRCTActionSheet.a */; }; + 1497CFAC1B21F5E400C1F8F2 /* RCTAllocationTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 1497CFA41B21F5E400C1F8F2 /* RCTAllocationTests.m */; }; + 1497CFAD1B21F5E400C1F8F2 /* RCTBridgeTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 1497CFA51B21F5E400C1F8F2 /* RCTBridgeTests.m */; }; + 1497CFAE1B21F5E400C1F8F2 /* RCTContextExecutorTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 1497CFA61B21F5E400C1F8F2 /* RCTContextExecutorTests.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 1497CFAF1B21F5E400C1F8F2 /* RCTConvert_NSURLTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 1497CFA71B21F5E400C1F8F2 /* RCTConvert_NSURLTests.m */; }; + 1497CFB01B21F5E400C1F8F2 /* RCTConvert_UIFontTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 1497CFA81B21F5E400C1F8F2 /* RCTConvert_UIFontTests.m */; }; + 1497CFB11B21F5E400C1F8F2 /* RCTEventDispatcherTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 1497CFA91B21F5E400C1F8F2 /* RCTEventDispatcherTests.m */; }; + 1497CFB21B21F5E400C1F8F2 /* RCTSparseArrayTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 1497CFAA1B21F5E400C1F8F2 /* RCTSparseArrayTests.m */; }; + 1497CFB31B21F5E400C1F8F2 /* RCTUIManagerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 1497CFAB1B21F5E400C1F8F2 /* RCTUIManagerTests.m */; }; 14AADF051AC3DBB1002390C9 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 14AADF041AC3DB95002390C9 /* libReact.a */; }; + 14D6D7111B220EB3001FB087 /* libOCMock.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 14D6D7101B220EB3001FB087 /* libOCMock.a */; }; + 14D6D71E1B2222EF001FB087 /* libRCTActionSheet.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 147CED4B1AB34F8C00DA3E4C /* libRCTActionSheet.a */; }; + 14D6D71F1B2222EF001FB087 /* libRCTAdSupport.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1344545A1AAFCAAE003F0779 /* libRCTAdSupport.a */; }; + 14D6D7201B2222EF001FB087 /* libRCTGeolocation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 134A8A251AACED6A00945AAE /* libRCTGeolocation.a */; }; + 14D6D7211B2222EF001FB087 /* libRCTImage.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 13417FE81AA91428003F314A /* libRCTImage.a */; }; + 14D6D7221B2222EF001FB087 /* libRCTNetwork.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1341802B1AA91779003F314A /* libRCTNetwork.a */; }; + 14D6D7231B2222EF001FB087 /* libRCTPushNotification.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 14DC67F11AB71876001358AB /* libRCTPushNotification.a */; }; + 14D6D7241B2222EF001FB087 /* libRCTSettings.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 834C36D21AF8DA610019C93C /* libRCTSettings.a */; }; + 14D6D7251B2222EF001FB087 /* libRCTTest.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 58005BEE1ABA80530062E044 /* libRCTTest.a */; }; + 14D6D7261B2222EF001FB087 /* libRCTText.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 13417FEF1AA914B8003F314A /* libRCTText.a */; }; + 14D6D7271B2222EF001FB087 /* libRCTVibration.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D85B829C1AB6D5CE003F4FE2 /* libRCTVibration.a */; }; + 14D6D7281B2222EF001FB087 /* libRCTWebSocket.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 139FDED91B0651EA00C62182 /* libRCTWebSocket.a */; }; + 14D6D7291B2222EF001FB087 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 14AADF041AC3DB95002390C9 /* libReact.a */; }; 14DC67F41AB71881001358AB /* libRCTPushNotification.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 14DC67F11AB71876001358AB /* libRCTPushNotification.a */; }; 58005BF21ABA80A60062E044 /* libRCTTest.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 58005BEE1ABA80530062E044 /* libRCTTest.a */; }; 834C36EC1AF8DED70019C93C /* libRCTSettings.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 834C36D21AF8DA610019C93C /* libRCTSettings.a */; }; @@ -29,13 +49,6 @@ /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 004D28A41AAF61C70097A701 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 13B07F861A680F5B00A75B9A; - remoteInfo = UIExplorer; - }; 13417FE71AA91428003F314A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 13417FE31AA91428003F314A /* RCTImage.xcodeproj */; @@ -145,7 +158,6 @@ 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = UIExplorer/Info.plist; sourceTree = ""; }; 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = UIExplorer/main.m; sourceTree = ""; }; 13CC9D481AEED2B90020D1C2 /* RCTSettings.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTSettings.xcodeproj; path = ../../Libraries/Settings/RCTSettings.xcodeproj; sourceTree = ""; }; - 143BC57D1B21E18100462512 /* ClippingTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ClippingTests.m; sourceTree = ""; }; 143BC57E1B21E18100462512 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 143BC5811B21E18100462512 /* testLayoutExampleSnapshot_1@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "testLayoutExampleSnapshot_1@2x.png"; sourceTree = ""; }; 143BC5821B21E18100462512 /* testSliderExampleSnapshot_1@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "testSliderExampleSnapshot_1@2x.png"; sourceTree = ""; }; @@ -156,7 +168,26 @@ 143BC5951B21E3E100462512 /* UIExplorerIntegrationTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = UIExplorerIntegrationTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 143BC5981B21E3E100462512 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 143BC5A01B21E45C00462512 /* UIExplorerIntegrationTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIExplorerIntegrationTests.m; sourceTree = ""; }; + 144D21231B2204C5006DB32B /* RCTClippingTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTClippingTests.m; sourceTree = ""; }; + 1497CFA41B21F5E400C1F8F2 /* RCTAllocationTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTAllocationTests.m; sourceTree = ""; }; + 1497CFA51B21F5E400C1F8F2 /* RCTBridgeTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTBridgeTests.m; sourceTree = ""; }; + 1497CFA61B21F5E400C1F8F2 /* RCTContextExecutorTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTContextExecutorTests.m; sourceTree = ""; }; + 1497CFA71B21F5E400C1F8F2 /* RCTConvert_NSURLTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTConvert_NSURLTests.m; sourceTree = ""; }; + 1497CFA81B21F5E400C1F8F2 /* RCTConvert_UIFontTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTConvert_UIFontTests.m; sourceTree = ""; }; + 1497CFA91B21F5E400C1F8F2 /* RCTEventDispatcherTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTEventDispatcherTests.m; sourceTree = ""; }; + 1497CFAA1B21F5E400C1F8F2 /* RCTSparseArrayTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTSparseArrayTests.m; sourceTree = ""; }; + 1497CFAB1B21F5E400C1F8F2 /* RCTUIManagerTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTUIManagerTests.m; sourceTree = ""; }; 14AADEFF1AC3DB95002390C9 /* React.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = React.xcodeproj; path = ../../React/React.xcodeproj; sourceTree = ""; }; + 14D6D7021B220AE3001FB087 /* NSNotificationCenter+OCMAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSNotificationCenter+OCMAdditions.h"; sourceTree = ""; }; + 14D6D7031B220AE3001FB087 /* OCMArg.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMArg.h; sourceTree = ""; }; + 14D6D7041B220AE3001FB087 /* OCMConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMConstraint.h; sourceTree = ""; }; + 14D6D7051B220AE3001FB087 /* OCMLocation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMLocation.h; sourceTree = ""; }; + 14D6D7061B220AE3001FB087 /* OCMMacroState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMMacroState.h; sourceTree = ""; }; + 14D6D7071B220AE3001FB087 /* OCMock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMock.h; sourceTree = ""; }; + 14D6D7081B220AE3001FB087 /* OCMockObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMockObject.h; sourceTree = ""; }; + 14D6D7091B220AE3001FB087 /* OCMRecorder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMRecorder.h; sourceTree = ""; }; + 14D6D70A1B220AE3001FB087 /* OCMStubRecorder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMStubRecorder.h; sourceTree = ""; }; + 14D6D7101B220EB3001FB087 /* libOCMock.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libOCMock.a; sourceTree = ""; }; 14DC67E71AB71876001358AB /* RCTPushNotification.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTPushNotification.xcodeproj; path = ../../Libraries/PushNotificationIOS/RCTPushNotification.xcodeproj; sourceTree = ""; }; 14E0EEC81AB118F7000DECC3 /* RCTActionSheet.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTActionSheet.xcodeproj; path = ../../Libraries/ActionSheetIOS/RCTActionSheet.xcodeproj; sourceTree = ""; }; 58005BE41ABA80530062E044 /* RCTTest.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTTest.xcodeproj; path = ../../Libraries/RCTTest/RCTTest.xcodeproj; sourceTree = ""; }; @@ -168,6 +199,19 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 14D6D71E1B2222EF001FB087 /* libRCTActionSheet.a in Frameworks */, + 14D6D71F1B2222EF001FB087 /* libRCTAdSupport.a in Frameworks */, + 14D6D7201B2222EF001FB087 /* libRCTGeolocation.a in Frameworks */, + 14D6D7211B2222EF001FB087 /* libRCTImage.a in Frameworks */, + 14D6D7221B2222EF001FB087 /* libRCTNetwork.a in Frameworks */, + 14D6D7231B2222EF001FB087 /* libRCTPushNotification.a in Frameworks */, + 14D6D7241B2222EF001FB087 /* libRCTSettings.a in Frameworks */, + 14D6D7251B2222EF001FB087 /* libRCTTest.a in Frameworks */, + 14D6D7261B2222EF001FB087 /* libRCTText.a in Frameworks */, + 14D6D7271B2222EF001FB087 /* libRCTVibration.a in Frameworks */, + 14D6D7281B2222EF001FB087 /* libRCTWebSocket.a in Frameworks */, + 14D6D7291B2222EF001FB087 /* libReact.a in Frameworks */, + 14D6D7111B220EB3001FB087 /* libOCMock.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -283,8 +327,18 @@ 143BC57C1B21E18100462512 /* UIExplorerUnitTests */ = { isa = PBXGroup; children = ( - 143BC57D1B21E18100462512 /* ClippingTests.m */, + 1497CFA41B21F5E400C1F8F2 /* RCTAllocationTests.m */, + 1497CFA51B21F5E400C1F8F2 /* RCTBridgeTests.m */, + 144D21231B2204C5006DB32B /* RCTClippingTests.m */, + 1497CFA61B21F5E400C1F8F2 /* RCTContextExecutorTests.m */, + 1497CFA71B21F5E400C1F8F2 /* RCTConvert_NSURLTests.m */, + 1497CFA81B21F5E400C1F8F2 /* RCTConvert_UIFontTests.m */, + 1497CFA91B21F5E400C1F8F2 /* RCTEventDispatcherTests.m */, + 1497CFAA1B21F5E400C1F8F2 /* RCTSparseArrayTests.m */, + 1497CFAB1B21F5E400C1F8F2 /* RCTUIManagerTests.m */, 143BC57E1B21E18100462512 /* Info.plist */, + 14D6D7101B220EB3001FB087 /* libOCMock.a */, + 14D6D7011B220AE3001FB087 /* OCMock */, 143BC57F1B21E18100462512 /* ReferenceImages */, ); path = UIExplorerUnitTests; @@ -344,6 +398,29 @@ name = Products; sourceTree = ""; }; + 14D6D6EA1B2205C0001FB087 /* OCMock */ = { + isa = PBXGroup; + children = ( + ); + path = OCMock; + sourceTree = ""; + }; + 14D6D7011B220AE3001FB087 /* OCMock */ = { + isa = PBXGroup; + children = ( + 14D6D7021B220AE3001FB087 /* NSNotificationCenter+OCMAdditions.h */, + 14D6D7031B220AE3001FB087 /* OCMArg.h */, + 14D6D7041B220AE3001FB087 /* OCMConstraint.h */, + 14D6D7051B220AE3001FB087 /* OCMLocation.h */, + 14D6D7061B220AE3001FB087 /* OCMMacroState.h */, + 14D6D7071B220AE3001FB087 /* OCMock.h */, + 14D6D7081B220AE3001FB087 /* OCMockObject.h */, + 14D6D7091B220AE3001FB087 /* OCMRecorder.h */, + 14D6D70A1B220AE3001FB087 /* OCMStubRecorder.h */, + ); + path = OCMock; + sourceTree = ""; + }; 14DC67E81AB71876001358AB /* Products */ = { isa = PBXGroup; children = ( @@ -375,6 +452,7 @@ 1316A21D1AA397F400C0188E /* Libraries */, 143BC57C1B21E18100462512 /* UIExplorerUnitTests */, 143BC5961B21E3E100462512 /* UIExplorerIntegrationTests */, + 14D6D6EA1B2205C0001FB087 /* OCMock */, 83CBBA001A601CBA00E9B192 /* Products */, ); indentWidth = 2; @@ -413,7 +491,6 @@ buildRules = ( ); dependencies = ( - 004D28A51AAF61C70097A701 /* PBXTargetDependency */, ); name = UIExplorerUnitTests; productName = UIExplorerTests; @@ -466,7 +543,6 @@ TargetAttributes = { 004D289D1AAF61C70097A701 = { CreatedOnToolsVersion = 6.1.1; - TestTargetID = 13B07F861A680F5B00A75B9A; }; 143BC5941B21E3E100462512 = { CreatedOnToolsVersion = 6.3.2; @@ -636,7 +712,6 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 143BC5891B21E18100462512 /* Info.plist in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -663,7 +738,15 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 143BC5881B21E18100462512 /* ClippingTests.m in Sources */, + 1497CFB01B21F5E400C1F8F2 /* RCTConvert_UIFontTests.m in Sources */, + 144D21241B2204C5006DB32B /* RCTClippingTests.m in Sources */, + 1497CFB21B21F5E400C1F8F2 /* RCTSparseArrayTests.m in Sources */, + 1497CFAF1B21F5E400C1F8F2 /* RCTConvert_NSURLTests.m in Sources */, + 1497CFAE1B21F5E400C1F8F2 /* RCTContextExecutorTests.m in Sources */, + 1497CFAD1B21F5E400C1F8F2 /* RCTBridgeTests.m in Sources */, + 1497CFB11B21F5E400C1F8F2 /* RCTEventDispatcherTests.m in Sources */, + 1497CFB31B21F5E400C1F8F2 /* RCTUIManagerTests.m in Sources */, + 1497CFAC1B21F5E400C1F8F2 /* RCTAllocationTests.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -687,11 +770,6 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 004D28A51AAF61C70097A701 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 13B07F861A680F5B00A75B9A /* UIExplorer */; - targetProxy = 004D28A41AAF61C70097A701 /* PBXContainerItemProxy */; - }; 143BC59C1B21E3E100462512 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 13B07F861A680F5B00A75B9A /* UIExplorer */; @@ -715,7 +793,6 @@ 004D28A61AAF61C70097A701 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; FRAMEWORK_SEARCH_PATHS = ( "$(SDKROOT)/Developer/Library/Frameworks", "$(inherited)", @@ -723,35 +800,52 @@ GCC_PREPROCESSOR_DEFINITIONS = "$(inherited)"; HEADER_SEARCH_PATHS = ( "$(inherited)", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, "$(SRCROOT)/../../React/**", + "$(SRCROOT)/UIExplorerUnitTests/**", ); INFOPLIST_FILE = UIExplorerUnitTests/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 8.3; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/UIExplorerUnitTests", + ); + OTHER_LDFLAGS = ( + "$(inherited)", + "-framework", + XCTest, + "-ObjC", + ); PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/UIExplorer.app/UIExplorer"; }; name = Debug; }; 004D28A71AAF61C70097A701 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; FRAMEWORK_SEARCH_PATHS = ( "$(SDKROOT)/Developer/Library/Frameworks", "$(inherited)", ); HEADER_SEARCH_PATHS = ( "$(inherited)", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, "$(SRCROOT)/../../React/**", + "$(SRCROOT)/UIExplorerUnitTests/**", ); INFOPLIST_FILE = UIExplorerUnitTests/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 8.3; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/UIExplorerUnitTests", + ); + OTHER_LDFLAGS = ( + "$(inherited)", + "-framework", + XCTest, + "-ObjC", + ); PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/UIExplorer.app/UIExplorer"; }; name = Release; }; @@ -947,6 +1041,7 @@ 143BC59F1B21E3E100462512 /* Release */, ); defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; }; 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "UIExplorer" */ = { isa = XCConfigurationList; diff --git a/Examples/UIExplorer/UIExplorerUnitTests/LayoutSubviewsOrderingTest.m b/Examples/UIExplorer/UIExplorerUnitTests/LayoutSubviewsOrderingTest.m new file mode 100644 index 000000000..c00eedcfd --- /dev/null +++ b/Examples/UIExplorer/UIExplorerUnitTests/LayoutSubviewsOrderingTest.m @@ -0,0 +1,79 @@ +// Copyright 2004-present Facebook. All Rights Reserved. + +#import +#import + +#import + +@interface LayoutSubviewsOrderingTest : XCTestCase + +@end + +@implementation LayoutSubviewsOrderingTest + +/** + * This test exists to insure that didLayoutSubviews is always called immediately after layoutSubviews for a VC:View + * pair. In Catalyst we have multiple levels of ViewController containment, and we rely on this ordering + * to insure that layoutGuides are set on RKViewControllers before Views further down in the heirarchy have + * their layoutSubviews called (and need to use the aforementioned layoutGuides) + */ +- (void)testLayoutSubviewsOrdering +{ + // create some Views and ViewControllers + UIViewController *parentVC = [[UIViewController alloc] init]; + UIView *parentView = [[UIView alloc] init]; + UIViewController *childVC = [[UIViewController alloc] init]; + UIView *childView = [[UIView alloc] init]; + + // The ordering we expect is: + // parentView::layoutSubviews + // parentVC::didLayoutSubviews + // childView::layoutSubviews + // childVC::didLayoutSubviews + + id parentViewMock = [OCMockObject partialMockForObject:parentView]; + id parentVCMock = [OCMockObject partialMockForObject:parentVC]; + id childViewMock = [OCMockObject partialMockForObject:childView]; + id childVCMock = [OCMockObject partialMockForObject:childVC]; + + __block int layoutOrderCount = 0; + [[[parentViewMock stub] andDo:^(NSInvocation *inv) { + if (layoutOrderCount < 4) { + layoutOrderCount++; + XCTAssertEqual(layoutOrderCount, 1, @"Expect parentView::layoutSubviews to be called first"); + } + }] layoutSubviews]; + [[[parentVCMock stub] andDo:^(NSInvocation *inv) { + if (layoutOrderCount < 4) { + layoutOrderCount++; + XCTAssertEqual(layoutOrderCount, 2, @"Expect parentVC::viewDidLayoutSubviews to be called 2nd"); + } + }] viewDidLayoutSubviews]; + [[[childViewMock stub] andDo:^(NSInvocation *inv) { + if (layoutOrderCount < 4) { + layoutOrderCount++; + XCTAssertEqual(layoutOrderCount, 3, @"Expect childView::layoutSubviews to be called 3rd"); + } + }] layoutSubviews]; + [[[childVCMock stub] andDo:^(NSInvocation *inv) { + if (layoutOrderCount < 4) { + layoutOrderCount++; + XCTAssertEqual(layoutOrderCount, 4, @"Expect childVC::viewDidLayoutSubviews to be called last"); + [childVCMock stopMocking]; + } + }] viewDidLayoutSubviews]; + + // setup View heirarchy and force layout + parentVC.view = parentView; + childVC.view = childView; + [parentVC addChildViewController:childVC]; + [childVC didMoveToParentViewController:parentVC]; + [parentView addSubview:childView]; + + [childViewMock setNeedsLayout]; + [parentViewMock layoutIfNeeded]; + + XCTAssertEqual(layoutOrderCount, 4, @"Expect layoutSubviews/viewDidLayoutSubviews to be called"); +} + +@end diff --git a/Examples/UIExplorer/UIExplorerUnitTests/OCMock/NSNotificationCenter+OCMAdditions.h b/Examples/UIExplorer/UIExplorerUnitTests/OCMock/NSNotificationCenter+OCMAdditions.h new file mode 100644 index 000000000..c20a9c2b2 --- /dev/null +++ b/Examples/UIExplorer/UIExplorerUnitTests/OCMock/NSNotificationCenter+OCMAdditions.h @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2009-2014 Erik Doernenburg and contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use these files except in compliance with the License. You may obtain + * a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + */ + +#import + +@class OCObserverMockObject; + + +@interface NSNotificationCenter(OCMAdditions) + +- (void)addMockObserver:(OCObserverMockObject *)notificationObserver name:(NSString *)notificationName object:(id)notificationSender; + +@end diff --git a/Examples/UIExplorer/UIExplorerUnitTests/OCMock/OCMArg.h b/Examples/UIExplorer/UIExplorerUnitTests/OCMock/OCMArg.h new file mode 100644 index 000000000..d53437cb7 --- /dev/null +++ b/Examples/UIExplorer/UIExplorerUnitTests/OCMock/OCMArg.h @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2009-2014 Erik Doernenburg and contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use these files except in compliance with the License. You may obtain + * a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + */ + +#import + +@interface OCMArg : NSObject + +// constraining arguments + ++ (id)any; ++ (SEL)anySelector; ++ (void *)anyPointer; ++ (id __autoreleasing *)anyObjectRef; ++ (id)isNil; ++ (id)isNotNil; ++ (id)isEqual:(id)value; ++ (id)isNotEqual:(id)value; ++ (id)isKindOfClass:(Class)cls; ++ (id)checkWithSelector:(SEL)selector onObject:(id)anObject; ++ (id)checkWithBlock:(BOOL (^)(id obj))block; + +// manipulating arguments + ++ (id *)setTo:(id)value; ++ (void *)setToValue:(NSValue *)value; + +// internal use only + ++ (id)resolveSpecialValues:(NSValue *)value; + +@end + +#define OCMOCK_ANY [OCMArg any] + +#if defined(__GNUC__) && !defined(__STRICT_ANSI__) + #define OCMOCK_VALUE(variable) \ + ({ __typeof__(variable) __v = (variable); [NSValue value:&__v withObjCType:@encode(__typeof__(__v))]; }) +#else + #define OCMOCK_VALUE(variable) [NSValue value:&variable withObjCType:@encode(__typeof__(variable))] +#endif diff --git a/Examples/UIExplorer/UIExplorerUnitTests/OCMock/OCMConstraint.h b/Examples/UIExplorer/UIExplorerUnitTests/OCMock/OCMConstraint.h new file mode 100644 index 000000000..777966ab7 --- /dev/null +++ b/Examples/UIExplorer/UIExplorerUnitTests/OCMock/OCMConstraint.h @@ -0,0 +1,71 @@ +/* + * Copyright (c) 2007-2014 Erik Doernenburg and contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use these files except in compliance with the License. You may obtain + * a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + */ + +#import + + +@interface OCMConstraint : NSObject + ++ (instancetype)constraint; +- (BOOL)evaluate:(id)value; + +// if you are looking for any, isNil, etc, they have moved to OCMArg + +// try to use [OCMArg checkWith...] instead of the constraintWith... methods below + ++ (instancetype)constraintWithSelector:(SEL)aSelector onObject:(id)anObject; ++ (instancetype)constraintWithSelector:(SEL)aSelector onObject:(id)anObject withValue:(id)aValue; + + +@end + +@interface OCMAnyConstraint : OCMConstraint +@end + +@interface OCMIsNilConstraint : OCMConstraint +@end + +@interface OCMIsNotNilConstraint : OCMConstraint +@end + +@interface OCMIsNotEqualConstraint : OCMConstraint +{ + @public + id testValue; +} + +@end + +@interface OCMInvocationConstraint : OCMConstraint +{ + @public + NSInvocation *invocation; +} + +@end + +@interface OCMBlockConstraint : OCMConstraint +{ + BOOL (^block)(id); +} + +- (instancetype)initWithConstraintBlock:(BOOL (^)(id))block; + +@end + + +#define CONSTRAINT(aSelector) [OCMConstraint constraintWithSelector:aSelector onObject:self] +#define CONSTRAINTV(aSelector, aValue) [OCMConstraint constraintWithSelector:aSelector onObject:self withValue:(aValue)] diff --git a/Examples/UIExplorer/UIExplorerUnitTests/OCMock/OCMLocation.h b/Examples/UIExplorer/UIExplorerUnitTests/OCMock/OCMLocation.h new file mode 100644 index 000000000..e510db7aa --- /dev/null +++ b/Examples/UIExplorer/UIExplorerUnitTests/OCMock/OCMLocation.h @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2014 Erik Doernenburg and contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use these files except in compliance with the License. You may obtain + * a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + */ + +#import + +@interface OCMLocation : NSObject +{ + id testCase; + NSString *file; + NSUInteger line; +} + ++ (instancetype)locationWithTestCase:(id)aTestCase file:(NSString *)aFile line:(NSUInteger)aLine; + +- (instancetype)initWithTestCase:(id)aTestCase file:(NSString *)aFile line:(NSUInteger)aLine; + +- (id)testCase; +- (NSString *)file; +- (NSUInteger)line; + +@end + +extern OCMLocation *OCMMakeLocation(id testCase, const char *file, int line); diff --git a/Examples/UIExplorer/UIExplorerUnitTests/OCMock/OCMMacroState.h b/Examples/UIExplorer/UIExplorerUnitTests/OCMock/OCMMacroState.h new file mode 100644 index 000000000..4b2d63508 --- /dev/null +++ b/Examples/UIExplorer/UIExplorerUnitTests/OCMock/OCMMacroState.h @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2014 Erik Doernenburg and contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use these files except in compliance with the License. You may obtain + * a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + */ + +#import + +@class OCMLocation; +@class OCMRecorder; +@class OCMStubRecorder; +@class OCMockObject; + + +@interface OCMMacroState : NSObject +{ + OCMRecorder *recorder; +} + ++ (void)beginStubMacro; ++ (OCMStubRecorder *)endStubMacro; + ++ (void)beginExpectMacro; ++ (OCMStubRecorder *)endExpectMacro; + ++ (void)beginVerifyMacroAtLocation:(OCMLocation *)aLocation; ++ (void)endVerifyMacro; + ++ (OCMMacroState *)globalState; + +- (OCMRecorder *)recorder; + +- (void)switchToClassMethod; + +@end diff --git a/Examples/UIExplorer/UIExplorerUnitTests/OCMock/OCMRecorder.h b/Examples/UIExplorer/UIExplorerUnitTests/OCMock/OCMRecorder.h new file mode 100644 index 000000000..f56d2ca4c --- /dev/null +++ b/Examples/UIExplorer/UIExplorerUnitTests/OCMock/OCMRecorder.h @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2014 Erik Doernenburg and contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use these files except in compliance with the License. You may obtain + * a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + */ + +#import + +@class OCMockObject; +@class OCMInvocationMatcher; + + +@interface OCMRecorder : NSProxy +{ + OCMockObject *mockObject; + OCMInvocationMatcher *invocationMatcher; +} + +- (instancetype)init; +- (instancetype)initWithMockObject:(OCMockObject *)aMockObject; + +- (void)setMockObject:(OCMockObject *)aMockObject; + +- (OCMInvocationMatcher *)invocationMatcher; + +- (id)classMethod; +- (id)ignoringNonObjectArgs; + +@end diff --git a/Examples/UIExplorer/UIExplorerUnitTests/OCMock/OCMStubRecorder.h b/Examples/UIExplorer/UIExplorerUnitTests/OCMock/OCMStubRecorder.h new file mode 100644 index 000000000..890c9ef3b --- /dev/null +++ b/Examples/UIExplorer/UIExplorerUnitTests/OCMock/OCMStubRecorder.h @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2004-2014 Erik Doernenburg and contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use these files except in compliance with the License. You may obtain + * a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + */ + +#import "OCMRecorder.h" + + +@interface OCMStubRecorder : OCMRecorder + +- (id)andReturn:(id)anObject; +- (id)andReturnValue:(NSValue *)aValue; +- (id)andThrow:(NSException *)anException; +- (id)andPost:(NSNotification *)aNotification; +- (id)andCall:(SEL)selector onObject:(id)anObject; +- (id)andDo:(void (^)(NSInvocation *invocation))block; +- (id)andForwardToRealObject; + +@end + + +@interface OCMStubRecorder (Properties) + +#define andReturn(aValue) _andReturn(({ __typeof__(aValue) _v = (aValue); [NSValue value:&_v withObjCType:@encode(__typeof__(_v))]; })) +@property (nonatomic, readonly) OCMStubRecorder *(^ _andReturn)(NSValue *); + +#define andThrow(anException) _andThrow(anException) +@property (nonatomic, readonly) OCMStubRecorder *(^ _andThrow)(NSException *); + +#define andPost(aNotification) _andPost(aNotification) +@property (nonatomic, readonly) OCMStubRecorder *(^ _andPost)(NSNotification *); + +#define andCall(anObject, aSelector) _andCall(anObject, aSelector) +@property (nonatomic, readonly) OCMStubRecorder *(^ _andCall)(id, SEL); + +#define andDo(aBlock) _andDo(aBlock) +@property (nonatomic, readonly) OCMStubRecorder *(^ _andDo)(void (^)(NSInvocation *)); + +#define andForwardToRealObject() _andForwardToRealObject() +@property (nonatomic, readonly) OCMStubRecorder *(^ _andForwardToRealObject)(void); + +@end + + + diff --git a/Examples/UIExplorer/UIExplorerUnitTests/OCMock/OCMock.h b/Examples/UIExplorer/UIExplorerUnitTests/OCMock/OCMock.h new file mode 100644 index 000000000..f0083b350 --- /dev/null +++ b/Examples/UIExplorer/UIExplorerUnitTests/OCMock/OCMock.h @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2004-2014 Erik Doernenburg and contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use these files except in compliance with the License. You may obtain + * a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + */ + +#import +#import +#import +#import +#import +#import +#import +#import + + +#define OCMClassMock(cls) [OCMockObject niceMockForClass:cls] + +#define OCMStrictClassMock(cls) [OCMockObject mockForClass:cls] + +#define OCMProtocolMock(protocol) [OCMockObject niceMockForProtocol:protocol] + +#define OCMStrictProtocolMock(protocol) [OCMockObject mockForProtocol:protocol] + +#define OCMPartialMock(obj) [OCMockObject partialMockForObject:obj] + +#define OCMObserverMock() [OCMockObject observerMock] + + +#define OCMStub(invocation) \ +({ \ + _OCMSilenceWarnings( \ + [OCMMacroState beginStubMacro]; \ + invocation; \ + [OCMMacroState endStubMacro]; \ + ); \ +}) + +#define OCMExpect(invocation) \ +({ \ + _OCMSilenceWarnings( \ + [OCMMacroState beginExpectMacro]; \ + invocation; \ + [OCMMacroState endExpectMacro]; \ + ); \ +}) + +#define ClassMethod(invocation) \ + _OCMSilenceWarnings( \ + [[OCMMacroState globalState] switchToClassMethod]; \ + invocation; \ + ); + + +#define OCMVerifyAll(mock) [mock verifyAtLocation:OCMMakeLocation(self, __FILE__, __LINE__)] + +#define OCMVerifyAllWithDelay(mock, delay) [mock verifyWithDelay:delay atLocation:OCMMakeLocation(self, __FILE__, __LINE__)] + +#define OCMVerify(invocation) \ +({ \ + _OCMSilenceWarnings( \ + [OCMMacroState beginVerifyMacroAtLocation:OCMMakeLocation(self, __FILE__, __LINE__)]; \ + invocation; \ + [OCMMacroState endVerifyMacro]; \ + ); \ +}) + +#define _OCMSilenceWarnings(macro) \ +({ \ + _Pragma("clang diagnostic push") \ + _Pragma("clang diagnostic ignored \"-Wunused-value\"") \ + macro \ + _Pragma("clang diagnostic pop") \ +}) diff --git a/Examples/UIExplorer/UIExplorerUnitTests/OCMock/OCMockObject.h b/Examples/UIExplorer/UIExplorerUnitTests/OCMock/OCMockObject.h new file mode 100644 index 000000000..63f2bae2b --- /dev/null +++ b/Examples/UIExplorer/UIExplorerUnitTests/OCMock/OCMockObject.h @@ -0,0 +1,74 @@ +/* + * Copyright (c) 2004-2014 Erik Doernenburg and contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use these files except in compliance with the License. You may obtain + * a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + */ + +#import + +@class OCMLocation; +@class OCMInvocationStub; +@class OCMStubRecorder; +@class OCMInvocationMatcher; +@class OCMInvocationExpectation; + + +@interface OCMockObject : NSProxy +{ + BOOL isNice; + BOOL expectationOrderMatters; + NSMutableArray *stubs; + NSMutableArray *expectations; + NSMutableArray *exceptions; + NSMutableArray *invocations; +} + ++ (id)mockForClass:(Class)aClass; ++ (id)mockForProtocol:(Protocol *)aProtocol; ++ (id)partialMockForObject:(NSObject *)anObject; + ++ (id)niceMockForClass:(Class)aClass; ++ (id)niceMockForProtocol:(Protocol *)aProtocol; + ++ (id)observerMock; + +- (instancetype)init; + +- (void)setExpectationOrderMatters:(BOOL)flag; + +- (id)stub; +- (id)expect; +- (id)reject; + +- (id)verify; +- (id)verifyAtLocation:(OCMLocation *)location; + +- (void)verifyWithDelay:(NSTimeInterval)delay; +- (void)verifyWithDelay:(NSTimeInterval)delay atLocation:(OCMLocation *)location; + +- (void)stopMocking; + +// internal use only + +- (void)addStub:(OCMInvocationStub *)aStub; +- (void)addExpectation:(OCMInvocationExpectation *)anExpectation; + +- (BOOL)handleInvocation:(NSInvocation *)anInvocation; +- (void)handleUnRecordedInvocation:(NSInvocation *)anInvocation; +- (BOOL)handleSelector:(SEL)sel; + +- (void)verifyInvocation:(OCMInvocationMatcher *)matcher; +- (void)verifyInvocation:(OCMInvocationMatcher *)matcher atLocation:(OCMLocation *)location; + +@end + diff --git a/Examples/UIExplorer/UIExplorerUnitTests/RCTAllocationTests.m b/Examples/UIExplorer/UIExplorerUnitTests/RCTAllocationTests.m new file mode 100644 index 000000000..5e4ef0be3 --- /dev/null +++ b/Examples/UIExplorer/UIExplorerUnitTests/RCTAllocationTests.m @@ -0,0 +1,191 @@ +// Copyright 2004-present Facebook. All Rights Reserved. + +#import +#import + +#import "RCTBridge.h" +#import "RCTContextExecutor.h" +#import "RCTRootView.h" + +#define RUN_RUNLOOP_WHILE(CONDITION, TIMEOUT) \ +_Pragma("clang diagnostic push") \ +_Pragma("clang diagnostic ignored \"-Wshadow\"") \ +NSDate *timeout = [[NSDate date] dateByAddingTimeInterval:TIMEOUT]; \ +while ((CONDITION) && [timeout timeIntervalSinceNow] > 0) { \ + [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:timeout]; \ +} \ +_Pragma("clang diagnostic pop") + +#define DEFAULT_TIMEOUT 2 + +@interface RCTBridge (RCTAllocationTests) + +@property (nonatomic, weak) RCTBridge *batchedBridge; + +@end + +@interface RCTJavaScriptContext : NSObject + +@property (nonatomic, assign, readonly) JSGlobalContextRef ctx; + +@end + +@interface AllocationTestModule : NSObject +@end + +@implementation AllocationTestModule + +RCT_EXPORT_MODULE(); + +@synthesize valid = _valid; + +- (id)init +{ + if ((self = [super init])) { + _valid = YES; + } + return self; +} + +- (void)invalidate +{ + _valid = NO; +} + +@end + +@interface RCTAllocationTests : XCTestCase +@end + +@implementation RCTAllocationTests + +- (void)testBridgeIsDeallocated +{ + __weak RCTBridge *weakBridge; + @autoreleasepool { + RCTRootView *view = [[RCTRootView alloc] initWithBundleURL:nil + moduleName:@"" + launchOptions:nil]; + weakBridge = view.bridge; + XCTAssertNotNil(weakBridge, @"RCTBridge should have been created"); + (void)view; + } + + sleep(DEFAULT_TIMEOUT); + XCTAssertNil(weakBridge, @"RCTBridge should have been deallocated"); +} + +- (void)testModulesAreInvalidated +{ + AllocationTestModule *module = [[AllocationTestModule alloc] init]; + @autoreleasepool { + RCTBridge *bridge = [[RCTBridge alloc] initWithBundleURL:nil + moduleProvider:^{ + return @[module]; + } + launchOptions:nil]; + XCTAssertTrue(module.isValid, @"AllocationTestModule should be valid"); + (void)bridge; + } + + /** + * Sleep on the main thread to allow js thread deallocations then run the runloop + * to allow the module to be deallocated on the main thread + */ + sleep(1); + RUN_RUNLOOP_WHILE(module.isValid, 1) + XCTAssertFalse(module.isValid, @"AllocationTestModule should have been invalidated by the bridge"); +} + +- (void)testModulesAreDeallocated +{ + __weak AllocationTestModule *weakModule; + @autoreleasepool { + AllocationTestModule *module = [[AllocationTestModule alloc] init]; + RCTBridge *bridge = [[RCTBridge alloc] initWithBundleURL:nil + moduleProvider:^{ + return @[module]; + } + launchOptions:nil]; + weakModule = module; + XCTAssertNotNil(weakModule, @"AllocationTestModule should have been created"); + (void)bridge; + } + + /** + * Sleep on the main thread to allow js thread deallocations then run the runloop + * to allow the module to be deallocated on the main thread + */ + sleep(1); + RUN_RUNLOOP_WHILE(weakModule, 1) + XCTAssertNil(weakModule, @"AllocationTestModule should have been deallocated"); +} + +- (void)testJavaScriptExecutorIsDeallocated +{ + __weak id weakExecutor; + @autoreleasepool { + RCTBridge *bridge = [[RCTBridge alloc] initWithBundleURL:nil + moduleProvider:nil + launchOptions:nil]; + weakExecutor = [bridge.batchedBridge valueForKey:@"javaScriptExecutor"]; + XCTAssertNotNil(weakExecutor, @"JavaScriptExecutor should have been created"); + (void)bridge; + } + + // Sleep on the main thread so the deallocation can happen on the JS thread. + sleep(DEFAULT_TIMEOUT); + XCTAssertNil(weakExecutor, @"JavaScriptExecutor should have been released"); +} + +- (void)testJavaScriptContextIsDeallocated +{ + __weak id weakContext; + @autoreleasepool { + RCTBridge *bridge = [[RCTBridge alloc] initWithBundleURL:nil + moduleProvider:nil + launchOptions:nil]; + id executor = [bridge.batchedBridge valueForKey:@"javaScriptExecutor"]; + RUN_RUNLOOP_WHILE(!(weakContext = [executor valueForKey:@"context"]), DEFAULT_TIMEOUT); + XCTAssertNotNil(weakContext, @"RCTJavaScriptContext should have been created"); + (void)bridge; + } + + sleep(DEFAULT_TIMEOUT); + XCTAssertNil(weakContext, @"RCTJavaScriptContext should have been deallocated"); +} + +- (void)testContentViewIsInvalidated +{ + RCTBridge *bridge = [[RCTBridge alloc] initWithBundleURL:nil moduleProvider:nil launchOptions:nil]; + __weak id rootContentView; + @autoreleasepool { + RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge moduleName:@""]; + RUN_RUNLOOP_WHILE(!(rootContentView = [rootView valueForKey:@"contentView"]), DEFAULT_TIMEOUT) + XCTAssertTrue([rootContentView isValid], @"RCTContentView should be valid"); + (void)rootView; + } + + sleep(DEFAULT_TIMEOUT); + XCTAssertFalse([rootContentView isValid], @"RCTContentView should have been invalidated"); +} + +- (void)testUnderlyingBridgeIsDeallocated +{ + RCTBridge *bridge; + __weak id batchedBridge; + @autoreleasepool { + bridge = [[RCTBridge alloc] initWithBundleURL:nil moduleProvider:nil launchOptions:nil]; + batchedBridge = bridge.batchedBridge; + XCTAssertTrue([batchedBridge isValid], @"RCTBatchedBridge should be valid"); + [bridge reload]; + } + + // Use RUN_RUNLOOP_WHILE because `batchedBridge` deallocates on the main thread. + RUN_RUNLOOP_WHILE(batchedBridge != nil, DEFAULT_TIMEOUT) + + XCTAssertNotNil(bridge, @"RCTBridge should not have been deallocated"); + XCTAssertNil(batchedBridge, @"RCTBatchedBridge should have been deallocated"); +} + +@end diff --git a/Examples/UIExplorer/UIExplorerUnitTests/RCTBridgeTests.m b/Examples/UIExplorer/UIExplorerUnitTests/RCTBridgeTests.m new file mode 100644 index 000000000..ff4b8cae3 --- /dev/null +++ b/Examples/UIExplorer/UIExplorerUnitTests/RCTBridgeTests.m @@ -0,0 +1,183 @@ +// Copyright 2004-present Facebook. All Rights Reserved. + +#import +#import + +#import "RCTBridge.h" +#import "RCTBridgeModule.h" +#import "RCTJavaScriptExecutor.h" +#import "RCTUtils.h" + +@interface RCTBridge (Testing) + +@property (nonatomic, strong, readonly) RCTBridge *batchedBridge; + +- (void)_handleBuffer:(id)buffer context:(NSNumber *)context; +- (void)setUp; + +@end + +@interface TestExecutor : NSObject + +@property (nonatomic, readonly, copy) NSMutableDictionary *injectedStuff; + +@end + +@implementation TestExecutor + +- (instancetype)init +{ + if (self = [super init]) { + _injectedStuff = [NSMutableDictionary dictionary]; + } + return self; +} + +- (BOOL)isValid +{ + return YES; +} + +- (void)executeJSCall:(NSString *)name + method:(NSString *)method + arguments:(NSArray *)arguments + context:(NSNumber *)executorID + callback:(RCTJavaScriptCallback)onComplete +{ + onComplete(nil, nil); +} + +- (void)executeApplicationScript:(NSString *)script + sourceURL:(NSURL *)url + onComplete:(RCTJavaScriptCompleteBlock)onComplete +{ + onComplete(nil); +} + +- (void)executeBlockOnJavaScriptQueue:(dispatch_block_t)block +{ + block(); +} + +- (void)injectJSONText:(NSString *)script + asGlobalObjectNamed:(NSString *)objectName + callback:(RCTJavaScriptCompleteBlock)onComplete +{ + _injectedStuff[objectName] = script; + onComplete(nil); +} + +- (void)invalidate {} + +@end + +@interface RCTBridgeTests : XCTestCase +{ + RCTBridge *_bridge; + BOOL _testMethodCalled; + dispatch_queue_t _queue; +} +@end + +@implementation RCTBridgeTests + +RCT_EXPORT_MODULE(TestModule) + +- (dispatch_queue_t)methodQueue +{ + return _queue; +} + +- (void)setUp +{ + [super setUp]; + + _queue = dispatch_queue_create("com.facebook.React.TestQueue", DISPATCH_QUEUE_SERIAL); + + _bridge = [[RCTBridge alloc] initWithBundleURL:nil + moduleProvider:^{ return @[self]; } + launchOptions:nil]; + + _bridge.executorClass = [TestExecutor class]; + // Force to recreate the executor with the new class + // - reload: doesn't work here since bridge hasn't loaded yet. + [_bridge invalidate]; + [_bridge setUp]; +} + +- (void)tearDown +{ + [super tearDown]; + [_bridge invalidate]; +} + +- (void)testHookRegistration +{ + TestExecutor *executor = [_bridge.batchedBridge valueForKey:@"_javaScriptExecutor"]; + NSString *injectedStuff = executor.injectedStuff[@"__fbBatchedBridgeConfig"]; + NSDictionary *moduleConfig = RCTJSONParse(injectedStuff, NULL); + NSDictionary *remoteModuleConfig = moduleConfig[@"remoteModuleConfig"]; + NSDictionary *testModuleConfig = remoteModuleConfig[@"TestModule"]; + NSDictionary *constants = testModuleConfig[@"constants"]; + NSDictionary *methods = testModuleConfig[@"methods"]; + + XCTAssertNotNil(moduleConfig); + XCTAssertNotNil(remoteModuleConfig); + XCTAssertNotNil(testModuleConfig); + XCTAssertNotNil(constants); + XCTAssertEqualObjects(constants[@"eleventyMillion"], @42); + XCTAssertNotNil(methods); + XCTAssertNotNil(methods[@"testMethod"]); +} + +- (void)testCallNativeMethod +{ + TestExecutor *executor = [_bridge.batchedBridge valueForKey:@"_javaScriptExecutor"]; + NSString *injectedStuff = executor.injectedStuff[@"__fbBatchedBridgeConfig"]; + NSDictionary *moduleConfig = RCTJSONParse(injectedStuff, NULL); + NSDictionary *remoteModuleConfig = moduleConfig[@"remoteModuleConfig"]; + NSDictionary *testModuleConfig = remoteModuleConfig[@"TestModule"]; + NSNumber *testModuleID = testModuleConfig[@"moduleID"]; + NSDictionary *methods = testModuleConfig[@"methods"]; + NSDictionary *testMethod = methods[@"testMethod"]; + NSNumber *testMethodID = testMethod[@"methodID"]; + + NSArray *args = @[@1234, @5678, @"stringy", @{@"a": @1}, @42]; + NSArray *buffer = @[@[testModuleID], @[testMethodID], @[args], @[], @1234567]; + + [_bridge.batchedBridge _handleBuffer:buffer context:RCTGetExecutorID(executor)]; + + dispatch_sync(_queue, ^{ + // clear the queue + XCTAssertTrue(_testMethodCalled); + }); +} + +- (void)DISABLED_testBadArgumentsCount +{ + //NSArray *bufferWithMissingArgument = @[@[@1], @[@0], @[@[@1234, @5678, @"stringy", @{@"a": @1}/*, @42*/]], @[], @1234567]; + //[_bridge _handleBuffer:bufferWithMissingArgument]; + NSLog(@"WARNING: testBadArgumentsCount is temporarily disabled until we have a better way to test cases that we expect to trigger redbox errors"); +} + +RCT_EXPORT_METHOD(testMethod:(NSInteger)integer + number:(NSNumber *)number + string:(NSString *)string + dictionary:(NSDictionary *)dict + callback:(RCTResponseSenderBlock)callback) +{ + _testMethodCalled = YES; + + XCTAssertTrue(integer == 1234); + XCTAssertEqualObjects(number, @5678); + XCTAssertEqualObjects(string, @"stringy"); + XCTAssertEqualObjects(dict, @{@"a": @1}); + XCTAssertNotNil(callback); +} + +- (NSDictionary *)constantsToExport +{ + return @{@"eleventyMillion": @42}; +} + +@end diff --git a/Examples/UIExplorer/UIExplorerUnitTests/ClippingTests.m b/Examples/UIExplorer/UIExplorerUnitTests/RCTClippingTests.m similarity index 100% rename from Examples/UIExplorer/UIExplorerUnitTests/ClippingTests.m rename to Examples/UIExplorer/UIExplorerUnitTests/RCTClippingTests.m diff --git a/Examples/UIExplorer/UIExplorerUnitTests/RCTContextExecutorTests.m b/Examples/UIExplorer/UIExplorerUnitTests/RCTContextExecutorTests.m new file mode 100644 index 000000000..534f9ad91 --- /dev/null +++ b/Examples/UIExplorer/UIExplorerUnitTests/RCTContextExecutorTests.m @@ -0,0 +1,184 @@ +// Copyright 2004-present Facebook. All Rights Reserved. + +#import + +#import + +#import "RCTContextExecutor.h" +#import "RCTUtils.h" + + +@interface RCTContextExecutorTests : XCTestCase + +@end + +@implementation RCTContextExecutorTests + +- (void)testNativeLoggingHookExceptionBehavior +{ + RCTContextExecutor *executor = [[RCTContextExecutor alloc] init]; + dispatch_semaphore_t doneSem = dispatch_semaphore_create(0); + [executor executeApplicationScript:@"var x = {toString: function() { throw 1; }}; nativeLoggingHook(x);" + sourceURL:[NSURL URLWithString:@"file://"] + onComplete:^(id error){ + dispatch_semaphore_signal(doneSem); + }]; + dispatch_semaphore_wait(doneSem, DISPATCH_TIME_FOREVER); + [executor invalidate]; +} + +static uint64_t _get_time_nanoseconds(void) +{ + static struct mach_timebase_info tb_info = {0}; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + int ret = mach_timebase_info(&tb_info); + assert(0 == ret); + }); + + return (mach_absolute_time() * tb_info.numer) / tb_info.denom; +} + +- (void)testDeserializationPerf +{ + // This test case checks the assumption that deserializing objects from JavaScript + // values one-by-one via ObjC JSC API is slower than using JSON string + // You might want to switch your tests schema to "Release" build configuration + + JSContextGroupRef group = JSContextGroupCreate(); + JSGlobalContextRef context = JSGlobalContextCreateInGroup(group, NULL); + id message = @[@[@1, @2, @3, @4], @[@{@"a": @1}, @{@"b": @2}], [NSNull null]]; + NSString *code = RCTJSONStringify(message, NULL); + JSStringRef script = JSStringCreateWithCFString((__bridge CFStringRef)code); + JSValueRef error = NULL; + JSValueRef value = JSEvaluateScript(context, script, NULL, NULL, 0, &error); + XCTAssertTrue(error == NULL); + + id obj; + uint64_t start = _get_time_nanoseconds(); + for (int i = 0; i < 10000; i++) { + JSStringRef jsonJSString = JSValueCreateJSONString(context, value, 0, nil); + NSString *jsonString = (__bridge NSString *)JSStringCopyCFString(kCFAllocatorDefault, jsonJSString); + JSStringRelease(jsonJSString); + + obj = RCTJSONParse(jsonString, NULL); + } + NSLog(@"JSON Parse time: %.2fms", (_get_time_nanoseconds() - start) / 1000000.0); + + JSStringRelease(script); + JSGlobalContextRelease(context); + JSContextGroupRelease(group); +} + +- (void)MANUALLY_testJavaScriptCallSpeed +{ +/** + * Since we almost don't change the RCTContextExecutor logic, and this test is + * very likely to become flaky (specially accross different devices) leave it + * to be run manually + * + * Previous Values: If you change the executor code, you should update this values + */ + + int const runs = 4e5; + int const frequency = 10; + double const threshold = 0.1; + static double const expectedTimes[] = { + 0x1.6199943826cf1p+13, + 0x1.a3bc0a81551c3p+13, + 0x1.d49fbb8602fe3p+13, + 0x1.d1f64085ecb7bp+13, + }; + + dispatch_semaphore_t semaphore = dispatch_semaphore_create(0); + RCTContextExecutor *executor = RCTCreateExecutor([RCTContextExecutor class]); + NSString *script = @" \ + var modules = { \ + module: { \ + method: function () { \ + return true; \ + } \ + } \ + }; \ + function require(module) { \ + return modules[module]; \ + } \ + "; + + [executor executeApplicationScript:script sourceURL:[NSURL URLWithString:@"http://localhost:8081/"] onComplete:^(NSError *error) { + NSMutableArray *params = [[NSMutableArray alloc] init]; + id data = @1; + for (int i = 0; i < 4; i++) { + double samples[runs / frequency]; + int size = runs / frequency; + double total = 0; + for (int j = 0; j < runs; j++) { + @autoreleasepool { + double start = _get_time_nanoseconds(); + [executor executeJSCall:@"module" + method:@"method" + arguments:params + context:RCTGetExecutorID(executor) + callback:^(id json, NSError *__error) { + RCTAssert([json isEqual:@YES], @"Invalid return"); + }]; + double run = _get_time_nanoseconds() - start; + if ((j % frequency) == frequency - 1) { // Warmup + total += run; + samples[j/frequency] = run; + } + } + } + + double mean = total / size; + double variance = 0; + + for (int j = 0; j < size; j++) { + variance += pow(samples[j] - mean, 2); + } + variance /= size; + + double standardDeviation = sqrt(variance); + double marginOfError = standardDeviation * 1.645; + + double lower = mean - marginOfError; + double upper = mean + marginOfError; + + int s = 0; + total = 0; + for (int j = 0; j < size; j++) { + double v = samples[j]; + if (v >= lower && v <= upper) { + samples[s++] = v; + total += v; + } + } + mean = total / s; + + lower = mean * (1.0 - threshold); + upper = mean * (1.0 + threshold); + + double expected = expectedTimes[i]; + + NSLog(@"Previous: %lf, New: %f -> %a", expected, mean, mean); + if (upper < expected) { + NSLog(@"You made JS calls with %d argument(s) %.2lf%% faster :) - Remember to update the tests with the new value: %a", + i, (1 - (double)mean / expected) * 100, mean); + } + + + XCTAssertTrue(lower < expected, @"You made JS calls with %d argument(s) %.2lf%% slower :( - If that's *really* necessary, update the tests with the new value: %a", + i, ((double)mean / expected - 1) * 100, mean); + + [params addObject:data]; + } + dispatch_semaphore_signal(semaphore); + }]; + + while (dispatch_semaphore_wait(semaphore, DISPATCH_TIME_NOW)) { + [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode + beforeDate:[NSDate dateWithTimeIntervalSinceNow:10]]; + } +} + +@end diff --git a/Examples/UIExplorer/UIExplorerUnitTests/RCTConvert_NSURLTests.m b/Examples/UIExplorer/UIExplorerUnitTests/RCTConvert_NSURLTests.m new file mode 100644 index 000000000..05c07fa06 --- /dev/null +++ b/Examples/UIExplorer/UIExplorerUnitTests/RCTConvert_NSURLTests.m @@ -0,0 +1,48 @@ +// Copyright 2004-present Facebook. All Rights Reserved. + +#import + +#import "RCTConvert.h" + +@interface RCTConvert_NSURLTests : XCTestCase + +@end + +@implementation RCTConvert_NSURLTests + +#define TEST_URL(name, _input, _expectedURL) \ +- (void)test_##name { \ + NSURL *result = [RCTConvert NSURL:_input]; \ + NSURL *expected = [NSURL URLWithString:_expectedURL]; \ + XCTAssertEqualObjects(result.absoluteURL, expected); \ +} \ + +#define TEST_PATH(name, _input, _expectedPath) \ +- (void)test_##name { \ + NSURL *result = [RCTConvert NSURL:_input]; \ + XCTAssertEqualObjects(result.path, _expectedPath); \ +} \ + +#define TEST_BUNDLE_PATH(name, _input, _expectedPath) \ +TEST_PATH(name, _input, [[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:_expectedPath]) + +// Basic tests +TEST_URL(basic, @"http://example.com", @"http://example.com") +TEST_URL(null, [NSNull null], nil) + +// Local files +TEST_PATH(fileURL, @"file:///blah/hello.jsbundle", @"/blah/hello.jsbundle") +TEST_BUNDLE_PATH(filePath, @"blah/hello.jsbundle", @"blah/hello.jsbundle") +TEST_BUNDLE_PATH(filePathWithSpaces, @"blah blah/hello.jsbundle", @"blah blah/hello.jsbundle") +TEST_BUNDLE_PATH(filePathWithEncodedSpaces, @"blah%20blah/hello.jsbundle", @"blah blah/hello.jsbundle") +TEST_BUNDLE_PATH(imageAt2XPath, @"images/foo@2x.jpg", @"images/foo@2x.jpg") +TEST_BUNDLE_PATH(imageFile, @"foo.jpg", @"foo.jpg") + +// Remote files +TEST_URL(fullURL, @"http://example.com/blah/hello.jsbundle", @"http://example.com/blah/hello.jsbundle") +TEST_URL(urlWithSpaces, @"http://example.com/blah blah/foo", @"http://example.com/blah%20blah/foo") +TEST_URL(urlWithEncodedSpaces, @"http://example.com/blah%20blah/foo", @"http://example.com/blah%20blah/foo") +TEST_URL(imageURL, @"http://example.com/foo@2x.jpg", @"http://example.com/foo@2x.jpg") +TEST_URL(imageURLWithSpaces, @"http://example.com/blah foo@2x.jpg", @"http://example.com/blah%20foo@2x.jpg") + +@end diff --git a/Examples/UIExplorer/UIExplorerUnitTests/RCTConvert_UIFontTests.m b/Examples/UIExplorer/UIExplorerUnitTests/RCTConvert_UIFontTests.m new file mode 100644 index 000000000..35dfe1167 --- /dev/null +++ b/Examples/UIExplorer/UIExplorerUnitTests/RCTConvert_UIFontTests.m @@ -0,0 +1,159 @@ +// Copyright 2004-present Facebook. All Rights Reserved. + +#import + +#import "RCTConvert.h" + +@interface RCTConvert_UIFontTests : XCTestCase + +@end + +@implementation RCTConvert_UIFontTests + +#define RCTAssertEqualFonts(font1, font2) { \ + XCTAssertEqualObjects(font1, font2); \ +} + +- (void)DISABLED_testWeight // task #7118691 +{ + { + UIFont *expected = [UIFont fontWithName:@"HelveticaNeue-Bold" size:14]; + UIFont *result = [RCTConvert UIFont:@{@"fontWeight": @"bold"}]; + RCTAssertEqualFonts(expected, result); + } + { + UIFont *expected = [UIFont fontWithName:@"HelveticaNeue-Medium" size:14]; + UIFont *result = [RCTConvert UIFont:@{@"fontWeight": @"500"}]; + RCTAssertEqualFonts(expected, result); + } + { + UIFont *expected = [UIFont fontWithName:@"HelveticaNeue-UltraLight" size:14]; + UIFont *result = [RCTConvert UIFont:@{@"fontWeight": @"100"}]; + RCTAssertEqualFonts(expected, result); + } + { + UIFont *expected = [UIFont fontWithName:@"HelveticaNeue" size:14]; + UIFont *result = [RCTConvert UIFont:@{@"fontWeight": @"normal"}]; + RCTAssertEqualFonts(expected, result); + } +} + +- (void)testSize +{ + { + UIFont *expected = [UIFont fontWithName:@"HelveticaNeue" size:18.5]; + UIFont *result = [RCTConvert UIFont:@{@"fontSize": @18.5}]; + RCTAssertEqualFonts(expected, result); + } +} + +- (void)testFamily +{ + { + UIFont *expected = [UIFont fontWithName:@"Cochin" size:14]; + UIFont *result = [RCTConvert UIFont:@{@"fontFamily": @"Cochin"}]; + RCTAssertEqualFonts(expected, result); + } + { + UIFont *expected = [UIFont fontWithName:@"HelveticaNeue" size:14]; + UIFont *result = [RCTConvert UIFont:@{@"fontFamily": @"Helvetica Neue"}]; + RCTAssertEqualFonts(expected, result); + } + { + UIFont *expected = [UIFont fontWithName:@"HelveticaNeue-Italic" size:14]; + UIFont *result = [RCTConvert UIFont:@{@"fontFamily": @"HelveticaNeue-Italic"}]; + RCTAssertEqualFonts(expected, result); + } +} + +- (void)testStyle +{ + { + UIFont *expected = [UIFont fontWithName:@"HelveticaNeue-Italic" size:14]; + UIFont *result = [RCTConvert UIFont:@{@"fontStyle": @"italic"}]; + RCTAssertEqualFonts(expected, result); + } + { + UIFont *expected = [UIFont fontWithName:@"HelveticaNeue" size:14]; + UIFont *result = [RCTConvert UIFont:@{@"fontStyle": @"normal"}]; + RCTAssertEqualFonts(expected, result); + } +} + +- (void)DISABLED_testStyleAndWeight // task #7118691 +{ + { + UIFont *expected = [UIFont fontWithName:@"HelveticaNeue-UltraLightItalic" size:14]; + UIFont *result = [RCTConvert UIFont:@{@"fontStyle": @"italic", @"fontWeight": @"100"}]; + RCTAssertEqualFonts(expected, result); + } + { + UIFont *expected = [UIFont fontWithName:@"HelveticaNeue-BoldItalic" size:14]; + UIFont *result = [RCTConvert UIFont:@{@"fontStyle": @"italic", @"fontWeight": @"bold"}]; + RCTAssertEqualFonts(expected, result); + } +} + +- (void)DISABLED_testFamilyAndWeight // task #7118691 +{ + { + UIFont *expected = [UIFont fontWithName:@"HelveticaNeue-Bold" size:14]; + UIFont *result = [RCTConvert UIFont:@{@"fontFamily": @"Helvetica Neue", @"fontWeight": @"bold"}]; + RCTAssertEqualFonts(expected, result); + } + { + UIFont *expected = [UIFont fontWithName:@"HelveticaNeue" size:14]; + UIFont *result = [RCTConvert UIFont:@{@"fontFamily": @"HelveticaNeue-Bold", @"fontWeight": @"normal"}]; + RCTAssertEqualFonts(expected, result); + } + { + UIFont *expected = [UIFont fontWithName:@"Cochin-Bold" size:14]; + UIFont *result = [RCTConvert UIFont:@{@"fontFamily": @"Cochin", @"fontWeight": @"700"}]; + RCTAssertEqualFonts(expected, result); + } + { + UIFont *expected = [UIFont fontWithName:@"Cochin" size:14]; + UIFont *result = [RCTConvert UIFont:@{@"fontFamily": @"Cochin", @"fontWeight": @"500"}]; // regular Cochin is actually medium bold + RCTAssertEqualFonts(expected, result); + } + { + UIFont *expected = [UIFont fontWithName:@"Cochin" size:14]; + UIFont *result = [RCTConvert UIFont:@{@"fontFamily": @"Cochin", @"fontWeight": @"100"}]; + RCTAssertEqualFonts(expected, result); + } +} + +- (void)testFamilyAndStyle +{ + { + UIFont *expected = [UIFont fontWithName:@"HelveticaNeue-Italic" size:14]; + UIFont *result = [RCTConvert UIFont:@{@"fontFamily": @"Helvetica Neue", @"fontStyle": @"italic"}]; + RCTAssertEqualFonts(expected, result); + } + { + UIFont *expected = [UIFont fontWithName:@"HelveticaNeue" size:14]; + UIFont *result = [RCTConvert UIFont:@{@"fontFamily": @"HelveticaNeue-Italic", @"fontStyle": @"normal"}]; + RCTAssertEqualFonts(expected, result); + } +} + +- (void)DISABLED_testFamilyStyleAndWeight // task #7118691 +{ + { + UIFont *expected = [UIFont fontWithName:@"HelveticaNeue-UltraLightItalic" size:14]; + UIFont *result = [RCTConvert UIFont:@{@"fontFamily": @"Helvetica Neue", @"fontStyle": @"italic", @"fontWeight": @"100"}]; + RCTAssertEqualFonts(expected, result); + } + { + UIFont *expected = [UIFont fontWithName:@"HelveticaNeue-Bold" size:14]; + UIFont *result = [RCTConvert UIFont:@{@"fontFamily": @"HelveticaNeue-Italic", @"fontStyle": @"normal", @"fontWeight": @"bold"}]; + RCTAssertEqualFonts(expected, result); + } + { + UIFont *expected = [UIFont fontWithName:@"HelveticaNeue" size:14]; + UIFont *result = [RCTConvert UIFont:@{@"fontFamily": @"HelveticaNeue-Italic", @"fontStyle": @"normal", @"fontWeight": @"normal"}]; + RCTAssertEqualFonts(expected, result); + } +} + +@end diff --git a/Examples/UIExplorer/UIExplorerUnitTests/RCTEventDispatcherTests.m b/Examples/UIExplorer/UIExplorerUnitTests/RCTEventDispatcherTests.m new file mode 100644 index 000000000..188414ef9 --- /dev/null +++ b/Examples/UIExplorer/UIExplorerUnitTests/RCTEventDispatcherTests.m @@ -0,0 +1,144 @@ +// Copyright 2004-present Facebook. All Rights Reserved. + +/** + * 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. + */ + +#import +#import + +#import +#import "RCTEventDispatcher.h" + +@interface RCTTestEvent : RCTBaseEvent + +@property (nonatomic, assign) BOOL canCoalesce; + +@end + +@implementation RCTTestEvent + +- (instancetype)initWithViewTag:(NSNumber *)viewTag eventName:(NSString *)eventName body:(NSDictionary *)body +{ + if (self = [super initWithViewTag:viewTag eventName:eventName body:body]) { + self.canCoalesce = YES; + } + return self; +} + ++ (NSString *)moduleDotMethod +{ + return @"RCTDeviceEventEmitter.emit"; +} + +@end + +@interface RCTEventDispatcherTests : XCTestCase +@end + +@implementation RCTEventDispatcherTests +{ + id _bridge; + RCTEventDispatcher *_eventDispatcher; + + NSString *_eventName; + NSDictionary *_body; + RCTTestEvent *_testEvent; + NSString *_JSMethod; +} + + +- (void)setUp +{ + [super setUp]; + + _bridge = [OCMockObject mockForClass:[RCTBridge class]]; + _eventDispatcher = [[RCTEventDispatcher alloc] init]; + ((id)_eventDispatcher).bridge = _bridge; + + _eventName = @"sampleEvent"; + _body = @{ @"foo": @"bar" }; + _testEvent = [[RCTTestEvent alloc] initWithViewTag:nil + eventName:_eventName + body:_body]; + + _JSMethod = [[_testEvent class] moduleDotMethod]; +} + +- (void)testLegacyEventsAreImmediatelyDispatched +{ + [[_bridge expect] enqueueJSCall:_JSMethod + args:@[_eventName, _body]]; + + [_eventDispatcher sendDeviceEventWithName:_eventName body:_body]; + + [_bridge verify]; +} + +- (void)testNonCoalescingEventsAreImmediatelyDispatched +{ + _testEvent.canCoalesce = NO; + [[_bridge expect] enqueueJSCall:_JSMethod + args:@[_eventName, _body]]; + + [_eventDispatcher sendEvent:_testEvent]; + + [_bridge verify]; +} + +- (void)testCoalescedEventShouldBeDispatchedOnFrameUpdate +{ + [_eventDispatcher sendEvent:_testEvent]; + + [[_bridge expect] enqueueJSCall:@"RCTDeviceEventEmitter.emit" + args:@[_eventName, _body]]; + + [(id)_eventDispatcher didUpdateFrame:nil]; + + [_bridge verify]; +} + +- (void)testBasicCoalescingReturnsLastEvent +{ + RCTTestEvent *ignoredEvent = [[RCTTestEvent alloc] initWithViewTag:nil + eventName:_eventName + body:@{ @"other": @"body" }]; + + [_eventDispatcher sendEvent:ignoredEvent]; + [_eventDispatcher sendEvent:_testEvent]; + + [[_bridge expect] enqueueJSCall:@"RCTDeviceEventEmitter.emit" + args:@[_eventName, _body]]; + + [(id)_eventDispatcher didUpdateFrame:nil]; + + [_bridge verify]; +} + +- (void)testDifferentEventTypesDontCoalesce +{ + NSString *firstEventName = @"firstEvent"; + RCTTestEvent *firstEvent = [[RCTTestEvent alloc] initWithViewTag:nil + eventName:firstEventName + body:_body]; + + [_eventDispatcher sendEvent:firstEvent]; + [_eventDispatcher sendEvent:_testEvent]; + + [[_bridge expect] enqueueJSCall:@"RCTDeviceEventEmitter.emit" + args:@[firstEventName, _body]]; + + [[_bridge expect] enqueueJSCall:@"RCTDeviceEventEmitter.emit" + args:@[_eventName, _body]]; + + [(id)_eventDispatcher didUpdateFrame:nil]; + + [_bridge verify]; +} + +@end diff --git a/Examples/UIExplorer/UIExplorerUnitTests/RCTSparseArrayTests.m b/Examples/UIExplorer/UIExplorerUnitTests/RCTSparseArrayTests.m new file mode 100644 index 000000000..90bf824bd --- /dev/null +++ b/Examples/UIExplorer/UIExplorerUnitTests/RCTSparseArrayTests.m @@ -0,0 +1,43 @@ +// Copyright 2004-present Facebook. All Rights Reserved. + +#import + +#import "RCTSparseArray.h" +#import "UIView+React.h" + +@interface RCTSparseArrayTests : XCTestCase + +@end + +@implementation RCTSparseArrayTests + +- (void)testDictionary +{ + NSObject *myView = [[UIView alloc] init]; + myView.reactTag = @4; + + NSObject *myOtherView = [[UIView alloc] init]; + myOtherView.reactTag = @5; + + RCTSparseArray *registry = [[RCTSparseArray alloc] init]; + XCTAssertNil(registry[@4], @"how did you have a view when none are registered?"); + XCTAssertNil(registry[@5], @"how did you have a view when none are registered?"); + + registry[myView.reactTag] = myView; + XCTAssertEqual(registry[@4], myView); + XCTAssertNil(registry[@5], @"didn't register other view yet"); + + registry[myOtherView.reactTag] = myOtherView; + XCTAssertEqual(registry[@4], myView); + XCTAssertEqual(registry[@5], myOtherView); + + registry[myView.reactTag] = nil; + XCTAssertNil(registry[@4]); + XCTAssertEqual(registry[@5], myOtherView); + + registry[myOtherView.reactTag] = nil; + XCTAssertNil(registry[@4], @"how did you have a view when none are registered?"); + XCTAssertNil(registry[@5], @"how did you have a view when none are registered?"); +} + +@end diff --git a/Examples/UIExplorer/UIExplorerUnitTests/RCTUIManagerTests.m b/Examples/UIExplorer/UIExplorerUnitTests/RCTUIManagerTests.m new file mode 100644 index 000000000..3a4f62027 --- /dev/null +++ b/Examples/UIExplorer/UIExplorerUnitTests/RCTUIManagerTests.m @@ -0,0 +1,179 @@ +// Copyright 2004-present Facebook. All Rights Reserved. + +#import + +#import "RCTSparseArray.h" +#import "RCTUIManager.h" +#import "UIView+React.h" + +@interface RCTUIManager (Testing) + +- (void)_manageChildren:(NSNumber *)containerReactTag + moveFromIndices:(NSArray *)moveFromIndices + moveToIndices:(NSArray *)moveToIndices + addChildReactTags:(NSArray *)addChildReactTags + addAtIndices:(NSArray *)addAtIndices + removeAtIndices:(NSArray *)removeAtIndices + registry:(RCTSparseArray *)registry; + +@property (nonatomic, readonly) RCTSparseArray *viewRegistry; + +@end + +@interface RCTUIManagerTests : XCTestCase + +@property (nonatomic, readwrite, strong) RCTUIManager *uiManager; + +@end + +@implementation RCTUIManagerTests + +- (void)setUp +{ + [super setUp]; + + _uiManager = [[RCTUIManager alloc] init]; + + // Register 20 views to use in the tests + for (NSInteger i = 1; i <= 20; i++) { + UIView *registeredView = [[UIView alloc] init]; + [registeredView setReactTag:@(i)]; + _uiManager.viewRegistry[i] = registeredView; + } +} + +- (void)testManagingChildrenToAddViews +{ + UIView *containerView = _uiManager.viewRegistry[20]; + NSMutableArray *addedViews = [NSMutableArray array]; + + NSArray *tagsToAdd = @[@1, @2, @3, @4, @5]; + NSArray *addAtIndices = @[@0, @1, @2, @3, @4]; + for (NSNumber *tag in tagsToAdd) { + [addedViews addObject:_uiManager.viewRegistry[tag]]; + } + + // Add views 1-5 to view 20 + [_uiManager _manageChildren:@20 + moveFromIndices:nil + moveToIndices:nil + addChildReactTags:tagsToAdd + addAtIndices:addAtIndices + removeAtIndices:nil + registry:_uiManager.viewRegistry]; + + XCTAssertTrue([[containerView reactSubviews] count] == 5, + @"Expect to have 5 react subviews after calling manage children \ + with 5 tags to add, instead have %lu", (unsigned long)[[containerView reactSubviews] count]); + for (UIView *view in addedViews) { + XCTAssertTrue([view superview] == containerView, + @"Expected to have manage children successfully add children"); + [view removeFromSuperview]; + } +} + +- (void)testManagingChildrenToRemoveViews +{ + UIView *containerView = _uiManager.viewRegistry[20]; + NSMutableArray *removedViews = [NSMutableArray array]; + + NSArray *removeAtIndices = @[@0, @4, @8, @12, @16]; + for (NSNumber *index in removeAtIndices) { + NSNumber *reactTag = @([index integerValue] + 2); + [removedViews addObject:_uiManager.viewRegistry[reactTag]]; + } + for (NSInteger i = 2; i < 20; i++) { + UIView *view = _uiManager.viewRegistry[i]; + [containerView addSubview:view]; + } + + // Remove views 1-5 from view 20 + [_uiManager _manageChildren:@20 + moveFromIndices:nil + moveToIndices:nil + addChildReactTags:nil + addAtIndices:nil + removeAtIndices:removeAtIndices + registry:_uiManager.viewRegistry]; + + XCTAssertEqual(containerView.reactSubviews.count, (NSUInteger)13, + @"Expect to have 13 react subviews after calling manage children\ + with 5 tags to remove and 18 prior children, instead have %zd", + containerView.reactSubviews.count); + for (UIView *view in removedViews) { + XCTAssertTrue([view superview] == nil, + @"Expected to have manage children successfully remove children"); + // After removing views are unregistered - we need to reregister + _uiManager.viewRegistry[view.reactTag] = view; + } + for (NSInteger i = 2; i < 20; i++) { + UIView *view = _uiManager.viewRegistry[i]; + if (![removedViews containsObject:view]) { + XCTAssertTrue([view superview] == containerView, + @"Should not have removed view with react tag %ld during delete but did", (long)i); + [view removeFromSuperview]; + } + } +} + +// We want to start with views 1-10 added at indices 0-9 +// Then we'll remove indices 2, 3, 5 and 8 +// Add views 11 and 12 to indices 0 and 6 +// And move indices 4 and 9 to 1 and 7 +// So in total it goes from: +// [1,2,3,4,5,6,7,8,9,10] +// to +// [11,5,1,2,7,8,12,10] +- (void)testManagingChildrenToAddRemoveAndMove +{ + UIView *containerView = _uiManager.viewRegistry[20]; + + NSArray *removeAtIndices = @[@2, @3, @5, @8]; + NSArray *addAtIndices = @[@0, @6]; + NSArray *tagsToAdd = @[@11, @12]; + NSArray *moveFromIndices = @[@4, @9]; + NSArray *moveToIndices = @[@1, @7]; + + // We need to keep these in array to keep them around + NSMutableArray *viewsToRemove = [NSMutableArray array]; + for (NSInteger i = 0; i < removeAtIndices.count; i++) { + NSNumber *reactTagToRemove = @([removeAtIndices[i] integerValue] + 1); + UIView *viewToRemove = _uiManager.viewRegistry[reactTagToRemove]; + [viewsToRemove addObject:viewToRemove]; + } + + for (NSInteger i = 1; i < 11; i++) { + UIView *view = _uiManager.viewRegistry[i]; + [containerView addSubview:view]; + } + + [_uiManager _manageChildren:@20 + moveFromIndices:moveFromIndices + moveToIndices:moveToIndices + addChildReactTags:tagsToAdd + addAtIndices:addAtIndices + removeAtIndices:removeAtIndices + registry:_uiManager.viewRegistry]; + + XCTAssertTrue([[containerView reactSubviews] count] == 8, + @"Expect to have 8 react subviews after calling manage children,\ + instead have the following subviews %@", [containerView reactSubviews]); + + NSArray *expectedReactTags = @[@11, @5, @1, @2, @7, @8, @12, @10]; + for (NSInteger i = 0; i < [[containerView subviews] count]; i++) { + XCTAssertEqualObjects([[containerView reactSubviews][i] reactTag], expectedReactTags[i], + @"Expected subview at index %ld to have react tag #%@ but has tag #%@", + (long)i, expectedReactTags[i], [[containerView reactSubviews][i] reactTag]); + } + + // Clean up after ourselves + for (NSInteger i = 1; i < 13; i++) { + UIView *view = _uiManager.viewRegistry[i]; + [view removeFromSuperview]; + } + for (UIView *view in viewsToRemove) { + _uiManager.viewRegistry[view.reactTag] = view; + } +} + +@end diff --git a/Examples/UIExplorer/UIExplorerUnitTests/libOCMock.a b/Examples/UIExplorer/UIExplorerUnitTests/libOCMock.a new file mode 100644 index 0000000000000000000000000000000000000000..9bb38e21a3b12ae932680ed8919b61f143087b6e GIT binary patch literal 2071640 zcmeFa3wTx4wKhEWCCMfU5Flbi#7ztuFouAUMnueI69EH+BtoQUt~(?el9&q(h#09_ zwA7;Yf{GL%Af6 zdI${hsFaj3sj1+N9yQv~E{-fJO3uGyif=-;H-B1Q!2};&tam9j6G1F#aHu~c!s2aC zb(;9RLk$Domf=)qh5s;XQ07!upbYg2!<6!RTxwgSQWI|pQ`>-3;$7-Skw4H^soeH( z^*hvN*=^zK2PnQg%Atxx-Xe6J&#q< zR&CHb*vTeVYSr(Q8Vmo01H;sFkhk38R%gNY+~!aV(Ap_KajEbq;L0#{7#_Ry$F@w9}8JoqmmavtQgO?X^JK zVY}2jS?axB>b(PTt$!k1{ZVMA&|ZBE{&hlc6MDDMCZUfC{gcG~yx?C8-7oZ*&?xjH z`ny8tO+sf0^$T5&`WH>hoSapZm6MU5UzAWZEo(}izpS>t++Qz}Ni#C?f(6M{HS=oA zN*b$bYo?SmmQ`Lzb#86hJ=03>_Lnt^xhWG0GJ1AqlT5OlLZraKwOD?5e_jYY+ zU8BjYZT6Sv`5T++Yi5*GH~DkxYv)x3I%RO(rd&kZ7I#L?{4Dg2#`=<~8na8<#70aP zP`FUxKRb)>We7UHcq&=spR5X-C45w$&`@F1nrA}R(Da`4ky_)HvNXFUBXLl z^fxr>{nY)g?yl8CccJc3p)DVx)TP-%NBkYeI9G zzmDgouidS`MhTn!Nj2qF^*GV?Y~HpLd)7^^3qI7oUZDnmHC)%47md({?Ae{Pr>!37 zUN{FE*O%PdhQ@BrFkMxWYiy;u-$z{wb@e^1w839L&tKo;H84~m87qDRg~*fV@xmioA&x>+ zyT+Ome3uYt1XGY)QB`dk??zf(RdWF;Pq$em4W>p&aHb1Hl{IBb$vu7>qszTsNwsl% zmR(!_y%O7PUx>{-e@}|G2L3u{o^Et-3|ZIt?wh-tLS37DLZH)MxR>;-7^sVRum+Ai zacJ$Ut{TZ@{+jL%vu-rM<^kGGNjcwG2XpX#>RO;nJLQ(tH&)?pG4w#QD%M2-`^Vh* z-R_<)1-kmIuWhU?tG$rZE*f$Rj2k~)w0qB8N_BBPC2&vB)5A&^jpV91HMRBrskJr6 zv4J~a^K50cQdhgyr68lhxY_nMR@RnFKwqa^AdYS;+tnk~vZiEISCus2=$$5y0r`O| zan=-DAb}lzn}5D8nT7q@=+AE|E#tF^X6f6`g86m+hK%a!+V54>%$ZhKa&MDAzp=il ztkKZ9)!&%W&`?`eg~H{u3g_C7w$Po_dH~Ft0`a7V60JE2J`j3PyptLXU522QLTd$I zx|9}n>3C+%c(%gh5Sm{r=hpixs+x6?ZY5c$9;zw|b+z@4*(FugP4z|yxLRDGzTHV} z^@Z51FY7e33PCkBPRGr?e$F(zRp7*9+sn4|6hh;fySrXw(@L&t$j3#$0Z*_O>UZ`M zbNK+DQG-XVo}bYJ{nA!aBC-WOrKGIBHXnB#=4B}mZ9rrmB<9sO`1FOVm1P6tlGkGh z(%P(X$x-IGq%mq~j!RyD;|*glJc+G1a%z4c=4*M3l$TfOQGw)IjN};GzORm-!|;qA zP{lBg9$+oUIF9lvMa(g;?zWui82f=9DOH%R5XGXRMt^f-pj1&&!Gyws0A}tbjJdEp zhq(6Mq0}af0m69;{_D-KQC3@0U4$o8jL(GFV0muIml@RjkD;d)Ghb9x#wRKKFR3Q) z8`v;SpiEs=S;PFfrM1<(T}%DCHrRyR7-mrs`$JXPq?#(-Dqq(Iinbu>4RyieIuB11 z2e&EP<3At@Z4b7uxfKz$< zR$)J2LTz}mlxoF(SRytGU}KD7!}@QJgAEee9@~6MVF+8LO|gpTOgHVpHf_{b^N=?E z57=N`CS2TxKAF)$Xk8A&Mk?x33>)u%}TJYNHK(%Y*i)&Nm7sJ#N$usEZ99M_ox-sEt$T7YQiP7;@d} z&IWgEcXf%&QECIOYsB#Me zzGpwnI&L_B`rVTcXSRKyyy~#SyYr|DYu~BfH2pus;}S>zOZAOtbI&>18M5 zUQh3QyKWTAp(f`~FFCn?v#)boF|n`Xtb_J^9Ul+SwQ$|%o9}a0##N&310Zqrs_b8R zpHDq={&e-p6!@t;8Pk5gZ!}t9pNiW^8(E0aff&!9o^>*A`KO=2v$`?Sb!bGQYX9zo zZ+w!Gc-5h?iRtaHJ?QIrUa6rhbLpmL-=$B)XJ=&_CC8&~ixefkj>7(+&Su{NSdFPn z?@Vq0MqKgP%MLF{OgJ<#QT^k`Et#;swQvBbinPb@|TS$y$Ky7&BP z_sJi9avw_9K4`S=*%QOFGf{^#Cmb78Jof(y$MWLshU~-%Uq^y&C!=qCcEYjD*U?9; zw>s_domy2k2uh4&Y#|K!U^6&%?q^X z7I@CoezH1W(H5Gqf5K3LeRPd3lcURAulGVCEG<9b{p7a9D-KOU?bL%=ombcO4QZQ4 z5Koffsq;j=J^H@SpFiDvLVc2(IO|Xj${%jY>in#@cS!jPls{F>=(9Rs3M$_lobm4j0Iq*QZIsTaSD#vU1WV)tPme6EAf`eOGcZ6CFYmp+n&^0TCTYEb#~ z&ggt-qmQ(Gc4y+{ho&dq^j=nHa&crx1d*_iE*3f~P$In9x5yXyeAEk$%9P5Izm+E5 zeCRGj;70`QxkgWQKGE!RZZ!MpvEx~teZ)d*DJ)q1)QOsZbiC|ve&Pi9-jdrV#P?p5 z+>xv6)VUz2|M04VKDk6(V+*SXJYcOk|v+&{xyLLwuJX|MT(iC|FB3tgo4o-R4huRNvX)7Qn4r% ze*AHiicaqzQtGR=tj=&Lb%19~U7P;T4|w7DXIY(xQZ5P6{}lTBQj8W@n`y7n&MynF z2i|X+^*1@c_kO6ANBvT*Z65V+q5PszC?{8)*V@9Mvp-0uwe9@rm)e}yE!>~gxmD|C zbyjB1=QRiWkmrGwZLVdoBXJ}I#epjTd^}?Fv82uUlso&{Y}a*@KS2LUnbz)%GHNhO ztj`!t+gY8tH-LumOng83N_ge_xC;LMj9S&J((#0A`7i(ObWYE{0%x4N+7$esyB^xE ztj;za$9=wL-|K&O_RYv%@}>)QdPm#zW-q`MD7($Md{p)=&lZ4!%C z>)*CaUyD4r7Nxh(#8LgB*p0=NB=XQLiI?gt(_~0?i6r7MuL>F9tg&K9%#O#A(3*b! z^yjbNnHYO0J#9eZNPV0}CTC8ZnvAU=Ie8XoadHLDty1z6oKYfhM!5_%Diq!y{>Gy` z#yHBS^v&ywy4@v$-#(K|AdYIL*$nU|6$~pOa1{He?IcX!f!ynT=H{m{5i<` zgkSQv)>oY`KiG=4bPUk@=I(6c3Yh(cTCNiF(W7(wv5p3J>=(SZxB;y-Mq5DdyaZD8 z!25k_1@<)dYvLEYPR5G|cK>{Z9ht6O~?>C=s}Ssjb#>;2km*U4PdsF+NY!}Wtv=>`F1~X5AorU?TbJ!Tf4cmb zdef{+V}@CmtyTYL>XLLUt3&QtIbf85a^~4B|BR*PxQ%{pEz!4~vbO zx0jkVSGXU5&5qsL59@y7bMCo-o%dzmnf>|W&$Bun7dz{_*jZ@Vc{jw)V#@Mcn9rYnMJyYAZZXa^ zcZp4hw87e=FCKS9W_9$Jc#|?upV$={Y_lfM^kdpxa?~m3AbUGFL*kt$@or5q+G77` z(~kLEmep}}P`tCPc$dAJ)v;of<7Jd|;M}I~3g-Ln!+Gs8oL?uRg)8-ahOsBpkKzp7 zF+=LEdYI zHC&Ud#wwq}52hh}FH1Ev)$zwQ{5UmM4ND)EJ{BVqYTPZiU~H(Ss#>MT4@-|%BV`D*GkbdF5B`GelU$lk5wr{Z5Z`Hzx6xC8q0 z0kMT|z`rk$oEZ^+A$B<1K^zH=_b`;^aI^pvBLK(Dy~qV(SxRKZ@*$AtSG1il39~m zaKnwkuYXT#B?coE$)QApx9FhOhzmw4EEYDVT6UgrX)TYTWg-=p2aU%pt%|>Btu#Z+ zL@I0@G(NVp3eIAeyYAmD0a#Fl&A_h?OOcH7&7Wy&3BgE(QR6L3Yg_@eT=yT8LKei% zhRzvFZ{l&Sw_o%usKTg|h#qYCnR-g=?Foe{j5_S;hF<1BwcdeHh=z^+2>W0Hx>@hP zAk&A_@l{`T?|%R~uflQK`wVh1$zVC06Z!w=j{DF)4hQXTV!xU>2sm&w{RaIga5ViL z$h`onj$iP|z6r+MKgLMEV?BH7RKgX6zjET#vKX+RKHOi{{WxkHMK4_qk?P$7{r(#f zfjew+%z&Q)F}~OzfVb- z2@>IU{u_v6yVQ)envEac95YYRgmunZgYW`1`vk~1Pi*IT;u5GD=ZV*Oo|puvoX2VQ zpqQn}(Kyx}GjGFg449owC)Vkw7RVDx?+0miJ7BLE!jE`%ao(@O<^d(ZP6&Hpx9ni0 zV8jUdLXqP$i7*vb>vV+2gChJxP=x#)&xr6dM))sAs83QyjpIB7Dd%_Ts{jvBd zz%g?=dPSfWE~iJU6_SArAIIrqE?}=)*$O9b;U(yPq$gj{&)y#82W<9D^e`P@i={ zezseF25UciEk8pX#_3u7SWpf8HT@)*e&}Pe_Omj`&#@ps|FZlfXg@Kidt4;@`PB}d zYFVFPs0JRVpCr>y4tzYR{e+_#0`*B|D_Z*}1ITE%B<+VULm7sX9ma(+6sm#O;^=Xt zntq;wk2dY6Cdf~Hke`PwKdIW!a{9?-ea1L=NpRlp34v;$pMJ)fe(1voO~*`5FbLFV zYmlG+wET?Ies~vQ7#{C1F4p45f@dYpT$9bp0@lHXg}-e=NSFWa2WS@o)D-8=F!h=(@!pZ ztkQnw1^Ia=$PZt>G}>*p_R|Ke20lhhC8i}>`Al2d6=dmrkfr|U1%{;(ZD|;AoIc-{ zIgHz>P^bpJO+QtppQG?m90ShGL>&8pmdRrOvi86X%TJZ|(`fm*$8j4h;LbH}GU9Yp zJ7#LALZBLWmTntOw{*$*OOBa84RZTrklUYIZX31RZFGAt{mgUlE}SQTV5oYZguVV_ zaOOyeh_u~q@K%O5G7$s&#eRi6pK>BDbHqlYNAm(5ad~v?03J6m8!#?;+2S!h2a>+=P*am(wV68E=Clc)AXE47!}k zgJbY7OkHsVJa<^M7ia{c?L7>cn8C<7!uiBfhn(lih*A>A<*bV?*hhu)y2!JQyKe+- zgt;U35P5pffuO$&z0=+6r!fPb1VS8+*iK04xYz2yEnlxS(W?JR7VG7+HGp|X*elx+ z`#GdLSu6*4vTq?XB%&W|N4O)d0&zMbh7)-r(&^9>aVwECVg`{rVm1f@^OJZY8c3YI zBhWAVw^AXpkIm^uaMrJ(bgtY@ov=}km;tqT0rv<|j_H$pD#Ph-cgho?+d+RvTB1Z$n3;-C1!>3=M>|nNj09WPWW^eVN}Rm{$vt8kvDR=)4HfI?dGsN{z7 zdqy@j)Q_yHDXVTO_m9-GpZ;gu=Fi9bXLCp9RF&43)XyK8&3Q)OtF6DMVPtk~Q%$*k z!zx+NJ|cJIM1Kk1wrcqQp-qZpDpt=kpXYMaicObX$sRE^f0}+R+lI38nra%W=K4)m zzMggqgbTyed}BU+K3)}Y(Y=`S=&p2mFtTSbRb4=_`&mB`d zPyc@8>#lvu8Sil2?pfx!!!^#C=*yju%J%!ByZ)AY-m`Jjriq)tMISn*AEfc=q6bmM$N~|DMl*8??_)s2T41 z(;|lb3&(4S`zp`ODV|?BN5@X_-1Lv@ZkzP|NzU;DJU6cO41Flv^&74Dx?{5IKNc-^ zz3xbM#>ct_eCT^jIMsKxoSXnxT0Qjeebn5c5Hp~b%VMFycX_S zugx5CRCsQ#bWR=MOuYmRQyK1hUh_XE-x+^Nxa%hxcQ`sc^{CFooGE|sJn2jtup`{{ zu$HtqP04LA0QTAYS&=198c2qLQyMR`aGS=vGDwgF1cTq91Gn|kRG(8Yqj)aXR>R}{gYjw&WR}VQ_cOW z<^5TWPdGi}JWZ=SzZ~g#VpX_nsb-$hN~t)>vFmYU&S6dIBS$Z=;!x8$Mw^R-Y&l4! zk>zNv9t&2}k<%LodGAJYVknuEDh_o!{_D*g19qqalQj#OVkDd67Qm+r772$~9ctDl zkbOKYt63Z$H>=WMsJx4sZR@W@A8jKaVWSt~9c1LG&nT zpwBNtna6c;9wK^M26#rZZYN3CW%EfM*V)@iXw{+e%`)#m@lzxO8O<6OdR z;BX?@p|iP1K=^zOZZgPnBfASkk9YuadTM&0%ygE~vMP?yOgIjpl*N8s4!CSBI@M^?6GO+N^tM@9qY zD4nRKc_bVdur&e4Jh|+Ut@X(|p|z|gAgf)o@WrJgSHJW9`LDme- zvTTr5s9AX=3v|}9!SOmijoacNYolgaHptqfS$QO%>a1mhV{t?9NN2M_R=8$aHpud5 zRvyU+owaOmoUKl?th$gjTeB=1WIe7~dFJlsu-Y4%WfdfAqh?tJ$=ak@c_jOF)^g4v zvq3RI6(FlaYfYa4i5^f3^f5|LX=xtGcwN>qN99Gq=E%BRv#gNFs@AMLlE-z{vcV@& zzc(jm#uP8s@MyqNE8a25Dc(f9PgOJLx-ls!$tlS1VvVe;ubPK9U@u}yUH4tPl|=h1s>3n4q9LoYq&~M6Pg4GRb1uc5ssYbl z2)hh2l{sx%&V{Ya!E4Jh4I`rwYs2`PGvwv!v3IJfh7$cOSY*8V&BsE%zQ$#`s>&~H zx5`=q#21*Pai=og05_j1RkgonPGhBNs*#|%+S1hg+b5w$bFlQr)O_RN^1`mn=_NKt zQWaF;f=y`D<(ro)t*x#8=B2ntzIiFLZMd($d1*B0H!ozm#BTWJg&Qg{cjucIGkxZN zyW-WgHFLhb)0}Trnm)f>Nwcyn{p~E2*EW?_`@eaOE2?WtzQx{QRej&mCEhZ{q7dIa z)H>tD_RR~H87GZzUeKHc)@@1qnHVRgz<^fpX<2oDT2`=Kq4<_-ZMii#rfQnzmip_b zRhVbs2BilHbBwd1p=~T`Q^0p)^(o!X6~!XCoT#FDzh0QCTp1_Qkij@*o+%q(6f4{L z%T*&-{zgV;tjncO@fOOTkfVx>w7(M0%QICkK^1y`@JgINY1=Ekv0j&5-ok z=NW5fVpY!u|5*OSRMI$B*|f%%7`MP<)jTfh#$|Z)`C=>%kt~`RD@Q9O=&*LEJD;7w zoga!rc|2(BI=9P>a8LXYpQd^j-=-kcpPe5n%jT_tJs6{3**QEb+S*1QJ;nxIwXoPL zminl|QZ8&H;|eual{8`1M_gpM8ePzt*f>XTxpq|MeB&H9 zRvVSGm9;PN8=}9a9P2&leR-kNprL8n>iMMjP0xc(wtd!J@5h<0JGNQuo1XW~a^Lu5 zXBOms?=GNf@OzTk%l4$x^GU786B%9heD?a^eYP??S$CC(FRUGuIUi#K=uXI*{iLb^ zOUpISSH=@?Rl{vnHRaPP^keMUpewRrfqmZWjJ6YtbXV)qx~IFu?(Yz|uFMFeaYzM7 zrAXgHT88vfq*kO|NC%LPAe}`TFdk#ANIs-uqcq>V_sk^YSIPozsS zuto;bZAf#FT9B3?J&yDu(gvj0kuJ1x^2}C@oFLVp9eNCCd6U= zI2ILh zsdR$@Jq$zZwO0Oseb2RixNq1G_9Fiv@+Xl05cv}P_`|+PKHpnme`Nkn{ItP-$@~rY z$$9P@4$j$snQua#{h0Zk$d8tM7%IblP5u<**}s|R zHv}G${Bh*j-^rhVp;-2N=2s*CXUYFJ@;na6pN?@&9uHavc^((ce~vtl59UkIZ@GRF zx5GjWgyVaHnZr*U`5Am+LAPNtDBF`8c@Bj}lRRhjuwT28m`AheS8~uCx(wXueoNT^ zQFJ%6_!s%#5l{57w{$Q~y^pU+mm*`S}l4 zAM|?5WA{IO#nCHD?(&ZKjT)4c99H+6f`iZY%Ng)#)>rqXeY7P0$9GRZ^82Uv%>Rzs z{NF{ti+gZJ#hAbEIsTpet(#|j`H%9rXMg|P{@WMly|?9wS)bf=>#>HFLw|eCRW+BK z81nmrFHJ0(wdR^TPPX0jogMcy9Q)bSQGfW)WshF|r(gd(?3#6-T$|h;Rkii~R`+kC z2E<+e{f3cp8RE@L{X(`eQ zq)kXWkoF=SLTW=gixiCp9gLKOG!7{TX*Nd zq$H$qNI6J+Pof%WA<|N$6-b+qb|C537|`zT$q7fl&jEZ8GH#dZpZNlEJzX9A%RE}F zINh54;uE7=sP_b$ay?BO^6B7n)01pLf5uLNjlT%8yeZeOJOJMy_VjB7z@~jYy&U*+ z@vmP80Okx(Zn3aSd#3&Q&?7#Fw&A9yS%VIRUv8YrMtPKUay>m7_)(GTS+l^4MXp~9 z0NyPA)=T`R{#}B%OMPz_`(}APT^Z%?koxP%z`&+|9(eY6pMW3YRwQo5&+vG=PU2fE z{>=J(CD^q8xa<$Jee}y8u=7J{U;SDD@PpExdb&HX8UJ0-qyGdXZtY0+c=n1vGoE&7 z?~&4+5`A<3nCCJaTKbyQ z)4A;M-tT-~>+mI~L2nfjCoprpF8X2Hv;QzA#?51e^Hv***@}6AMU$|7j}(|iJtdL@stnW-nk}ixc9p^e;Jdz^@SHcxwmhb_vwYJ ze(~Ecxdvn{5?^+E8i}I@uOsb4`UL3|QUp56Af)S%(vk9!Dv;(QEk*h%(iWuuKst!@ z1=2aBerTiwr0*b2M!FNJ4(ajr{i<6LO6I5C=+M{Inzjx0`y7A?*M zCyR5yg~jRLWbu_LVR3FYS#N{IE{lzmu*u?!I>O>CZL;`|kg(VmWbw5?34(7mlEqp1 zVxCjD$>K{)Qt(Mr3k8M6DfQIi{CcsqQM6hD=D&ajwN@gDdCq_*i*x^lOAV34-&|$>Mu9!n#UWe9KN)JiMvJmlec3r=63dB+*Kjf_w=_SiEtk7T;qL7H7+o#aC#A#a9K$;=FcY@f`rN zI0ar3pIAMS-y)#g>; zJrkog5Mx_S{3PT@GjVPhtu{XojQIl_h$$ytf`ohGxtNHs-JOMf2ffAMEr1>|^@!&o z(I4g@Y>!3xm7~<=dhqbYy$!_FBc6?PHS}^sKO6eX5zl1AHyON4=o3?)I9dGeh2K=* z5jMZXS3}Ntw?IA`cnIWX{KTA(kpzEzKpCHs_@bfj2JdX&KzziQhp~OnG~B=5qBfsF z+n#`&nDG#Qj6^#Jp|=Eau1DO5z&ijvV(JmU13B9#^?J2=FYsHCo9#u6xh6X9L6E-- z{2JtD+{9av=w}o3*nW2*-Ywv*gPz%*#LtV~GUzqK|6#=Q6nKw8kC^cgKO+8Sz#pf+ zEVlV0UWi10jnF#+f0fW{2Coi!#I!?PEqcY!YXg5V^eVuc4LxG&5f?(v`mTVy95@eh zv;M?BB>Ec*y-LJ+^$i%N0dEZSh-rs-gxJ{+J1M~NHao;aAZNR6g*+J;?}S+GNZcQZ zemu})yE&oP2Ryu;ZnYzE8;(2bVNTNaLin#iJUst>)JJU~W<13EAZI<2(9Q>d-+|n$ z7cnM5>3I4>{yy*6^LgEcrDN)W<13863-I&YX+{d#Y2oqg*qPg zzj?qFws?q3k@WtOc(x#(yTHq{#Y3DadgGuM2mc2UPda#M&?9C%#3Ll0{qUCpe6=ke z;&_Q?E9A+*Lu~O74?lfumk$wA${0|4594d<7o9>$!oL z@eqFsIrmQ-;ynudG34g{BF5xT-9G0K&u73NLT>Ia;`fp02lGC4Jeknj2i{xIGmkIg zS48h6=$(PTOvJMVyp7N!W<12tOFYGhXBF@>ws?r2lz6fsUkUuUEgs^>kQh&k#Pb;9 zc?7%#ws?r|7QJ%Xga3tyrxLtk+LL&Q^CX`2@K*>t)fNviCh6+-c^vW?z}dEVh%=EG z59a6U_IV%ij0bPDEgs@{(HkuB>_$9Z@ZxOo5JyTp?eG@^9Bzw;*eUUR2zejib5Vi) zMf?@+#~2Uh9P4-nL9Y|MW6(4A7xBkPyl>bi`g@>%5bfeg!}S%s-OwlIej|Pba`u~S z#Qhp@E97QBBF6k`-A+l6Zv$R$i;H+I664B~xV9p$S>WZ^;v&X;Ykj}a=u?|>fiofB zGtG#DcnlKbz8aMFywGQyt%y4Tyur{n<0g)QoN*pQTmyllAvfbD_CU`5z8`XqDY+px z`#*7KB;rB&J+OZk_re{KhzFSMLX4T}+qVI~206!M@D}?9V#p$=eTO7oB5=S27rNC2daS%^NVjP%` zuj6r}4D9e5%7-C0_Yd($NWE1}1JG8=kp!FwKhX1^hR z2J%BFHwN-Gz)wO>OgqF&kcJ~Jyoj;=Ao#h^dk8$dPO*WQdc^gjhgU81ep!Qh)__+E zJ+prh7eKxW<$SPH2%HN!G3^jfguE4){UZn12RSk2#N!}e4_pp;I&d1~#FP`KK)zhc zrvfKIPE0v*0^~b@m!W(juorS-%8BD3-v+!K^1;BdkP}l*91ZzeDbLkOi0oCo=1&`SU>4tm7YBaVf9A@B^y{ftYgQT}Z6=Hs~dyTqW%60B;NQh^a@6*9N!Oq1;y3*$RwT2{#Z^ zPP_(*<0mUYY40iMS3|xZ`pdz?i-H@7sZacv=q-kx2Ykl&2zYqMa04;*h`DSD?bSh# z{b?!m8o|R$k5>O8o+Wydp?3y)Yf+C}@Uo#tOnbzckb8mm!Om3R@sJZ!PCOQg{*s{= z3;rSKrGkeSORe)h@gVVY0Dio{18shY`$L|H^5KvV0qz4iG5runBGJ#eFvCwY^xWX# zT~^BvaRsdof=tViU{=nvpwEYYeL@gc|)AWwsxqre9tC#FB*14y*9NBm_%Zy$JX z+58dj5WSbgUpoA~0^UZOKjL+e4~G2;*x3TS26AHhBj$=_^!KFrYlhx(@bCt&RX^fK zM6X%=&4a&1;5FL(5!XTPgZ5xx^-BT!^3p@^TV)`LYMWUZX@$)J4xaM2D%@1*m=((X6hvUdI9_M556!eH` zj~EN}ZEvSP#B;`twDA8|Pn{S}J8Ezr9QygZvf;)$X+ z7J8>pz7_t`!5afTV%j4f4S6nbAIQf8Cqqt5Iq?W2`Wqzv+TqU&9^T8g>PL)4C3QP? z!VZ6vJmm_sBXK+A>9Cs)Ip+glUcd%o`XN4wL_e4_pxZGSdY^)aSHUem#P2}<5yokw zdt=-b_$|nZX@__#|_Fn_u2sts!6R$&J9Lpt+dg!eL z4>NeJIEWt+y?M|(gYwPrw-CH~=n>N%aSh}-!24il0r1_B6H`uHfkc0^#2@!lF?d)s z!16~tRrJ!u-%Ie94c<7LKjJjV$HD$7*zp0ULQYJ7#3@Mhhu;KsJ7XT)<`LixvH2tJ zBYH~woq)e^@Guv|svq$gr`nzh`$>?yflonBOn=1fPQ%|3=*5D6HS~^w_c8Q{sYkpI ziE+IJJ?@Vj=JW^j?8pD|qXmM@)OfYal-boSBaCI^dO%6H`w7 zJQDpqE^#e{ou|Ni%oZ2%L!!3;dgYlouRw1Rc=Mn~Onbz2NVHc8y<+g&p;rxFIrNCB zM_i0Vy&2G(4gOi^%?2+Idc@Qto{B`hOz52jzZLbE2;O+;5mS$NEaZj2eIU;U9s@Zs z<-{pSw37(E0`L={mjqq{^oXfP>_wtpEGXtd&5ai97RukCDL>+n>um=1BY1}$f&M^z z2=bInTtDFFDDXkZiRp*<021x&fnF^5nb70!+*m2X>JP+gAU}xX8e{mI*8#7DoS1fq z@iVX9zlDfnIq>6ya@LB4a!F#CuVtK{=UpOu*!#y<9X=K1MhBI9K;hv zZ=C4ugI*?hV{CfFNk~`0-qoT%2>PBZ^cTbz58goN6VpF&B;@Ug=VQqG0Au-W>-t8l zAdi9kEd0d)pT+OE#4JyI2GclrJ=-=F;}yWCAUCgX#3!IQ0`VM$-oK&U-bOpNf%hr& zh_S6EK7^DAz4xKl3jX`h<0>h8p+}5uHSunwYoYfBXaeYKplrWZl#51O1*pd>;B7=X zVr;94*CA1FIrQA%mqL%fus;PoVr;94??$5DY*5BM1C)OFf;Ra+lz$2Fl*ZsV0B=0X z6JuLVJXYd(2li<;)fNYF5)$nUfu08pyyLkTAG)ZWp(A{{ZqI{Ro*+ThDNd76@W0STEeNpIhLT?qyc|z3tU$|!@ z{fp35LRScVROrJ(GlbqO6!&wwJnrK(jS(6xl=BK{f4$I$gtiEsEwoT5u6tUa*E^Qu z^^7!9=x0s?e=2mB&>cdb7y69QJfS=<(+q&Tl?8ZOi+^e}{!<9w*;Z-l-r^jV=l z5z6^L_;cSQl;;%U@j_#T^4KRoN@#@8x6miae?#aJp$`eI6Iv~FjL^|S*{4~4p~U|i z=~r(H-63?F&<#Sl5+}=Hd{I-3D{A_Ep$`ac7TPG(FSJDHETLRbl=k#mrJz}YIi^QG z#{D!ME_9gCfkOKWbqVFNs4Ukmv`y%rh5k|KyF$4jEA@XZ^xuST5{mILEq_iZmxiVO zBSIGom6=KITEQ6S(s~%*()4zrT*8*+Glg=2TjG&IuN9gg)GJgbR=Il%J}1ZRS3rQs+W#-1|0(n}p)!Zd{R_cA6S_j^a-ok3<nlE&k(1}8QLOD;9ac~K6(s-d910n7!G)gGPJjho< z|1RfEE>%wc$3nS~Iq`3W{zm97p*w{BO6Ufm7^l$XI6lGhKNiaM)`=Gi#dw6q_X_1g z?v&ppbe7P3q0@v;6pC>Lt#6+9ZxlRQD8~qB?@FOuMV^>r0;C?H4xwDEo_vfCXlh%-YJyJ@l(E0D4yFj=Db7lUl96~&}Bj&75cEyMMC)u&vFeyx%xkG zvC!ER%?5Unw9C7wQ!HPr1&W7K-O@t;hNJ z)c>nce)NF&eWCk={zmBALU#z=CUmpVUkP0&bd69vFKfGx3w=cBVxbK}YlT({Ef>mp zs*LLnp?N~53cW=rzdu2}B%z5yhYGzy=s=XD5Q^tqZRf09|NdJjKX*aB6#5IHtAwr)%6ZlJb3Y*z&xac0xlq#wgx)8# zQ7E1dwY*BGU+7&zX9>+0I!!2_8}aA%3B6gUOcr*J7Mv{f8lhJS9V|3XC>M^#pS!ov zaG_42|CIZ;(?Z*Ywh8^K&`*T&nGQwWoJ&jk8=-Ft-63?F(9J@BC3Kz8H9}ty`mE4p zLYE4?U+8?HcMGi$I#X!A(A$LGDl|J>UzXq?bkp)o?Eg?fa# zg@WjIq5e<|KT{v?qC`_4eU3jND=#SZ(HF_)O5@S%(fM%8=3WIl447k6#LEOP5!@oU zSuoE#)UOm=EVxi`u3(;LXfIuGn&1?{iGsa?;{?YD_6Syj&meBvYX_zOqk<0$J}7v< z;5~wO3En2SRq%Sjs{}6>yiD*C!7YND1=k6#6kII0P;jo`iGtGwrwL9GoG92UI8Jbk zV2@xBUEc(>1KtO9v%T1{ZpXiw+p{b_(z3*MEHk=e@OTTg?~W!`-Q((_p?Of1&W3h2JRrI^kCfzf$<+!Y>y7Y~dFQ zzd-o8!p{-@MB)2{pDz4y!cP-^s_;{UpCtT5;U@^+EBwL2j}v~Z@MDA@EqssgL3IB) z>QHMAO(s&Sz1f)G1H9LU4+HP8;X}ZiZ1^DX3LD0_`I@CRydQX>4dZ@kO|=d00iJEc zyMc3Tco*|HE^2^R{|fh;d0=;He3w6!-i)AZ?fS+;1xDp0KC+ObAcDya1L;_4NnA~ZNom` z92-st9%sYjfRk)E4S28(rvgXYF@B<1%9}LQzYYBY$J3ew8)p13O*7B0~>A!-etpWz`wHLqrlJG@Dbo2*zjTCMjLLH>s_T#?0el-59J>NpRt(@wPj zlo-DYscVq%yQAvk023RZO_^^&zBit4nJ>o8QikODuHt=?pWRETf0I0a%lTaLd_VC@ zj5V+<-%aE=2lGde=a>oed?)dDlIQz~9NQtE?;=i+Jl{j)XFJK~JBS>|VxI3G@(VW1 z^WDQ6!i+rMJLFg$`Kyp$D|xJ4tIlWGbP%eg z|B5aDfGz(+oBbPYe6X#u!)^Idw)_*eyy61EWkquv=Hz1`B~^rVV7PD^*F~yrYMkCw zQe9P1#gE?FJv zL#0M6T?_`+9%U;4p;5~-WCh5eY6aS2PE$$!MV4&te&y1OETMdXMXoMVvfH(;E>h+K z>$_c~WRL5;U8GzOtHE8Q6xTiNW|^^zlrmRY>tQL)iVP-EcJt zTJ5ZBar<)7q1w21Mq;~a)X3|{cmvz0)X^#5xjt=7>L{=GhLr0eNYTPkDJf%8Q@!4_ zQE6$0c5!5vudZEdk0-enF4VrSj-SJ=5?;|UuIIRwQZc-R^BQ4rojBMA z%X4dC;I<97hAk#6;zHC7jrdjhC4dX5tZK?g{ zH=;+BO~T@*-y{y`wosoN>Vl&P3s4%c+qw*eEVMn?zUEd`RPHZrnp0F&Q=#{LQIT(E zMqailR!wMA&dppcZ5oFgd#Q(I#z5OKgHw=Op3mXzu0gxcV5nzTz@TsSbe zjg$p%45a_tY#8_GSdG30U#f(S;A4(9{;eAumI26$jQf17sao%^XwYq%f%%Ts#`lF2 zfQ}#zmMg>yKkRPUT~_VT*DLIu9qkch;}C3kQN|N%*jNP{ZeaT+ap>h)8A+&(v#`N3 ziDF|HY)Buo#i83n+hBu)wg-Q?VE0Ob4g1zjdvHlvIlhuJ^ak}C~2&&YG~|ggYV0;J)RO9i8z_}&>mHDOXm1_(1pfP4I4aP zEDxy*ShhCBddt=RBDN>G2kR1a4&pQX9`IL*jTFQob+MYYsK~Ivy#v)QHn5I^ssz81 zi&bJ<1{=~py4cWh)RmNl#<3PQ5>R%(*wBWIe_d>F$97j2u9?BL$xexlR>XnBpPS8w zaZWbArqH!658=F#jsmT?MzT-~erVw}8k=Q<8II8`hYa0X4aNy(8~ie#i^PqmLpddC zieZUwye)gx@$%wUcXoQ`+LT=#c#p&9sPtx^KYi-t`O_UIRibylYQ8V=iuckxmjua= zoOEPw*qq*3uep$3-|Rzq*L^-`WhKfVIO$lf664-@H zQuQYtH$0sA`3LFQJCCZ~?K{<*Ew83`E+1M;ZO43HFGN|4@=J%Bc<0fU^z)}@yjj)Y zZK(5?Rh3kGjk{zozL?QeUvrE1jtTi{7`|qKy=&}g3~OSGQMZs_`vHyZoinMGvzX$JEAjFv~u!2e$RfjOx^><#j+AB*g2 zuyD6~0{^1s0=vT|$3%1T2EQBLdnz*23PUD}>)N?pH^lV8n6%>i1FkVpa;m-~k-r5g zG8O+~_|FkeWK9M!1Vhu z{zY)oOt>TR1(2vs_{ZhzIGLXBGB8T8#jGnU;J`&kSkRo~y=?fd3w#FMiE~bm zpJNZGp^um!Z;v#-v>s)BmfZMudUW91>AkytJH1cnx6}KYA8rqPo89;(I@h~W1B`E? z$C}?nza;QY^nn4tXe@7SdO@7w5IKgs?rzm3i>+ys9uDfprG z|Il~J^Z29^^6l|U@fGh%e*1dRV$UpB-<8hM1Fl$Zdj8XyI>6K9OzL-V zb+~IHnPZb(*^}|#>6P;|ZGY!@Ul~~{>9cvjGEdb*z~=X$59 zy_#-n;mZmCBVSd#NU!)NpH>Vp75pJDZ&QQ6A>X)U=j(ATe9j)<&B8Uihi@!i*jzur|}K3F2`2aqb;~GRL_mU zFaK27KVqf7Lv@iana$OQw$Yjw{)n0WXqbLHGe6&<_*F9f_>1ow86$A~8AKnssE0v~ zTlL^JS7aK^&-xl4025rLsB5*8e5uU{kb4cE`oM^aZAjmUU|NMyeynOR25s=bV*4CT z*YCU8elDR|>oYbXk=|aAohFf8pyh)@#?1^K1i0SSFr-wZn~)|UeHW<#X)zKvE^o^# z7#<_^MqCe!3z^>RqlebF8;mbD)Q^xaH}F}F&nG{EO+MSAxb_i?d=v6mJ4{`U{B;yi z85^Hp?OU!5o9kKgd4HoJKcT5^E-0ykz$^XiDuK$_e-LiC4 z+Nh5Q?5c!}x1>vumLsi4+J>|Xg=sT~|FG#hMNkue3_e9X({ek9M7)#$o4x}FHRXIC z+AcTi!5EoB>j9S5-*fw$PjkKOG+;ivy#XVv5AD*I8PBF3_@*EF<`(LQ?PKcT@l=mr z#A;2$kA01B>QY2o%rkCM#=~bx4-&_2aGR(3^u_hQxz6{1v=?vTTHjpvoAu$E;anG- zYld?zZ?5&tHNHn5IajtD<^F(l4C!A;nD3!Dw|flIB&69${Ed7u($h%mk$6LoKgD}| zX>&fRkj1AU4yj<{Juz8)!Vwm4oyp?exv==mK^AXn&O`&0g{GK|L}hBCdRg! z_){e69f00m@Y|tx5Io$IY#_$Ans_e~_1=IU{b23D&2NE+W7_gd{0iiIAjg`3n|A=W zLQafrHStCy+F1oXj!|N5!Od&ITLC>{Y^#Z%L89Jc(Bl|lCG?ho_XzZev8^Uv4Eb*0 z(U3n5jQg++#Mo97&p^U)GdBl%9M4<=yPdqK^( z$ftes?QxM$!{nQB0c!i@n9G*L3kUiY$7+j#2ix#$V5~P|$qRwGo-H=5UjW=@!@0nR zY&aEosg&n9F6y(U(S~;cW1VenkK?O5fbX>7ZNQUl_!Z#q*l;Uwf(>s1?q|d6fzR~` z*k23$g$=I)<`)65t)~AK!2e;x%YnDp@KeA)wc%yJOKms}hS=Wbeu@+PA}HsRar=|x z8$o%gA)n{-@yuhVC!qa!ZDgMJPWM9(P;W)HJgaH)Z?@&hGx^fr!NK;m=WOX4ahco2 z30(Me@Hd}46@2F%I_D|mX-0p*J%kthY;wT|HGcm6!li@nyp0JC7cXHwDcq^L{@mZq zY=IDqp_2f*+UOE?Xc6o-nKv-nm>FQq2DsR~fl)V%zHzixEsn%}exARqw!Yk7Z%h(^ z&F)fJ z)gD3f1a`xQKE8(98qq8qY@?jth3AI$2(qykHWI=2h>gRD!#rkn0bNG7M?+JczrMS< z2B%=d4ZRex;T>)D)6lx~IA7t6)FoAHB*KQYr_IKN=S}cOVk(al8)*R>W>w7n(&LeK+4jqY=R76PB2cA_37?&JtGp{c_&6{w;#x7{5 zi;YS=pz>J_n`M$2-f!=QjL&sRX&4*Cd7OH=NZfeO%*1$jnGqYvb=`Ks4!U)ht?pL! zX6vhA*%=*o*Kt;X^W|n=Y__8^5i(mbN)p}N2Rut(Gh>Ip4WgG2CA}GrMK|>>33nTUZfsfy4eTmQtwkiOlBzrC1oW^`;VG5tE?Ri)!) z!}n6mhQQp7Hx1q0qWgHax|}&dU76nz#@2aKN)%fqVzU`{BIN-x0e%qa&@vY@_q1C!_XB7LMm^jIfpjc@;rxx!n6;Ar z-ugSvpH9Xcl8lbFT%&$tOW7iU874zcIwAc?OF8Q$9c5!r#vl$aBG_v2X~}~awoErY zaps58no-bPWodFhpE{9` zd&bccll{jtD);>9))Nn+cG22zMu#t7TX&79yid>X`LEB_qvubrJmGA;^Njn4tviRM zkM)+7)YQ~AV#Z2S=}3Pwehh0IInQ5TRWaYo6LxL6_nKkp*LX|)WhMBT!dp}8ZD=a1 zG-du~oQoU0RW;tmO22n*ZP`8ka<9JNB&%z1j2p*i=xi50{K{+>Jaa3@WsW;Y^zp_L zGTY_*I8Y5iu4@VMJf0nn=~#3LI$;hjc@y31(wOjNfSm9UaXBm`AoaS86G@A7&x?-6HJ}IbZEp5@XnFXc@|FPeg}Eam-y#)PmT%yD>8J` z>my|P(-tOTc;2Jfc|(j<*lEmSiHv~8Zz<&EF=`ibj_50pJ%OAnruQcx5pFl<*Lq&W zzqp7&wwiEYniG8@2J4z|bU?!^G@Jp*f%AwV8qPQ2l^Q-`La&BTm~beeieCNyvG+Fc zRTbCX|31k{IOO#J;YCCZ5Gh(30wRr++Cb725FtVYv{nctm?$Bb1d9|kMXJMN2KUwxwzX4j$9v2-%bEds;2Spa3m*CbB*4s<`IU7 z!>=pQO(!9{Ta2gEHpm*I&+cxrmjR%Pp54PhO*|Ob)08HB9ysy}e+8KtF(I9$YVj=8 z%pP4jPqaxg&j@v{B7B){>t|+l{vu&>i|>=w>2AWG79EusZ1eQ?ZD6*6T6D;y$}v!D z5*e6lpq4CJrnFH5HA1hIjx)OmvZ5F`@@f9^GdcxIsE(zk$jA+Ke#Z-U4Rw~vj}~Rh z=n?ANjZ}uGXQGhMhfvlz*=pBFD5@$O z`8iICSvB$;dll;O$kUIj@L5>8`&S_(r@Mb0>LJ@>4ZNXqbjk55jb4quoI(Rap%71B zvwdV}Y6dK+zKl>sOoE1Qdl?A>Bq21(={aBNKTi5F#4+4P8OD)5R)%_LF$rG-IVq}0 zXh`U3v4@oCQH7=|&sf3-pv4ky0y!z)SHj^ToykyWGn5^;&{S>19ZM)$Ea7iJPRdRt zyf~yj6bgw!*K}y=yKxB*K#L`ekcpG>no@k$COizKxALAU1@~Bvx{JjU>QZ%5B8U!6 z2p~cEF8r0)FiLBBUF6Z>TTr#dfhSFgu6&@$}HT#`Ms-xp{Kox}_=3U{=ZLo`#&U-G*gJ zuZ}InQ*$JLY&XH4g_Kh8V_C1=k~K85OQ>t8B%_)a*j@of8sUtX-ks7J6CTsLyzpw8 zQ4Ov0;~kS}{uHx;^8YHeUGh&;Y8xyisXA9@rD^cASq;@Sg?us&#`d@wo93p$Wi>a{ z%xPeFVQ|Hqs^-}ZjrFm-3+Gu&9s}sC3f&xy^O;QhzffR{_OUhMO?CqOoDYjV{nAh|7dnUh5bP=gklb_l*gYM>RH9 zS;k;(NX?7{o=VQ)VJY7P$g&-%!aA{TZtXf8_jX<7&rq`zS3T1S^G(ELS z+IM}&rA}X*+PCnD$fxTv@_tj4o_e{+pID5hUcYYRGx8#T$;dmNo;q68r`ZDh$G1e9 z2^8L1m!A5>Eu#Ju>Q+&I3Uy9;>Z69bn4fX-aMPNZ;FP(^J1= zqF*D?w{LkV^)=F@6m(Bdz0Z)}Bvoa%ln8fc>SA_W4>^~2C76c`Xw@lJ->Ikq@^222 zdf-CNBzXlUSSimuh0XE;0JQONBXNPWdQMgtQiVM8$Ta&Z1KcO@RrrAf;@D_N;x~s# zD{%p?&A?|2$>$PjOFY*O;H!pIDenyv^b;udbwl!NdKj2P2SR~So?eXtO`}+;9t6sv zC!Jn};gYAAnJ%fvLp4T|v&H@F&4`Zoyw1Kt5Q7(q&&k#v~^ z4s?S-p(73BBzX%=urii=rN_967-bNsj6{tz;x3n0VuF6##9}KI>n=(;$rGp8i%kN* zZFnyzys+tpx#u~9o9pKdZkVNSyuu+x!-iipcyh!1##uF< z=iVm<2k!^<&WBgk45Z_8vab0HsN*%wYOHgYZ>Vdka?HT2`L=XQH4Nz9(YPx)A6ApH zor0geIO82LM+Cr%vixSz(x7d18Rp(#wI1z_&}nq%@Tz0CNUOd$nQ~U4 zuv+tvs%M&-xnKAnMn|*VT&3f!)6hinDy%N6on}bP7Mt_LpUzBOwRA@bH8i?(A4$V= zx;x@GojGPRXg^)8?$$=;zD6uVibR_XSpK5P@r>==Q)3??w0NLpyv7>UWcrEwIC2o( z&{#8}VXk|kjWAk0mdm17}uMQp0fbsE+HIC>GZ=k8R&ONBCEL z9J{$$)l|E;z*C$(x2?FJO`bo~G~2}4CXK{4&1;xj-Bj7&wa19KhNU=_=2CV`=HHA+ zSyk6mGlC|ouWBA)8X)l;w(GA+PE!ZXp1h^&W4A`lM@Dhy;68>MjQbSsa-0<6ZpD2A z_b_e~ZU=5J?seSTxDRk)9<&kMKIY-#4(4tW56y3B-Y|Gbms%fEdbJ8%`#k>L*S$Q; ztogN$4$Zmo(Z}ExuN>s5bXnvvm@r??rhXR@zKF2uSW0*-VbxXq_Yls9U*X3Ht9}aq zgz!*He}}NzVH|XgI*x%ZnHq2VJmE^hb%a$`JV*1Z^Kn;07gihX1S_Ap0UBfzr#k3R z9m{MzcL(ZQ;_8r>3>jKdG-6muv2#N#6c;tZk0MmkkM{IWc0U)#E=GF`>_@)AbK>bh zt4*o0uQ#i9l@7EHzI9DVAHvdIk-7`h^kzP&3%=%qy5lZ+zthiuHQ>#Cix2$AZ!=z7 zd;D*!{;;|Kk;g8(=qoE1U9_zzvgn*YJUi!}4Yx$kAOEv=&iifd=C{6i*LPnnI{xXI zmo|O%r>%D_YI^F#v#)I)K4J80PuBJyw|(KuuZ?Oe?)$@72faTgp?;>-R2p`_`4UxdR3frwIx5!2+D>t1_saR93a8WUAiEOZj_c4(379 zc6q4JdOVEtn11TrW7N#a^!&-r=xC|0YgkI3qmrex((8}RSo|54{h5A8Gk*EEmdmBn zZ}j*VT;Z(#{?Fh0?E8%uOUGY!0KVQoHUNju>pFPld8@y$Z`UW^lwH7k^X|P_b^ynb ztNnS-#tp%h;ilrQ#odHkj{7d|N4THi)VJTprO=PNI68X3jv@ zHixEhL|U$}2yV-Zq=_M`U9X7=ku*zTxl|63G~Z!KF91dQGtQDUDI${QNeb{eR1lFg z;A;zEMq(jpT-|bc<^tPcwX)2(FkJf5wF&f>a0~G#NH-5TOTi0?7goG5U-4V@{2fjF&0zMn*dVNU z;cA@9TM6Gb=riD(294`vgRuC78AjNuXLcj;lfY%f3oBl@1SdH~@NI#9Gkn9L@jTfe zEI#2LmM;sw&CplF7ljsqPgs1yAJEp4*M^;l*0gvOzW1RW#!f_7e8PHuiSJeTRzv?0 zd~ZNwAZCNG_=NXZzUScE2>oUFo`?1*j-K!Ys*&r-_;l-A3p5+?^Uo*5h0Y2ec z%Qpi))vp-7YG_x%=hatuJn=fubBM15k0IVW@4};TD%UXhR>3y|zG7&F@CmD2!sipO z^L#h)8U!0aym#J(b@!2+6!=!ccPD)5(0C`=AS^k;+`o++-kCS)UT~CnPmb^#FiOr# z@U0--kKof>_-^=wIn17kyR4kU#P5N)GayHJi;a);bnSOG2jaI8{|HX`tc7nma^FDC zgV1z)R|Luz7!6r1c%^pWyi+If;8I4X2Ev>lqu4HOE!NkZq4?%lzt;L!Sl`?8r`+Pv*1y2|ntNCJfz~guzTQDZ?_&K7 z>!(})7?FzC+^KxMTFBpL{oh*u*Vfm)ieH%fnem^n{(o4X`<0<{pECaUtgkl@e&PGA zFMSDN86C>E>-dJ3SlnX$8?CRIUw+}))}Lwp&s$&bWc+4%qayD6it@R(U{x_`u zHR~_3{sQY?Z+$5VNDkMl@ug@We2MivJFyarxh_roh1MTp{eITx`ZMu*hn5_@uxSpX=WET<^wLIYh@Z zzT|NmF!pNPE3za9mnAv!B}ef}uXrWoEl^_hjbP-+SD?G4!yjj_#*jdkDlIw3;gf$9 zA35Q@_~aAbgRgS!#_xi^!_v1~`Zh~%#aDZ7#8Oj>CKit&(h~udab2bTlx%3zsl05S$d_VS6KRZOCMwDWtLuI=_4(@ z*wTktdXc3^@zs8K<~$td6=fecdX6>HD?SR|9l(dd+XMI@xHW+HgI5Re>)_=9ybs(G zz^{Pk1@K<*i~!yPt_a}W;F18|1uhEUo#6Zc-T{sV@OH2hz}vuw^>DNG-2&bhz?;Fl z1Gp8uJ%BfYTLXAKcy$1;11}HYf#5!U-24tx4z=$=UF_s9-DkD$Zv$BE`)mNKeSa9h zYTwlXybt{K09N}h3}ChIH36*ltqfqb@2CJ)`xXYU+V{)=R{KT*csuxAUT`@~ebm0M z2C&-qmjSHy-4?)V-wgq*_PsZN)xNg|u-bQC03+XA*YFvCrS+Fue}VODtv}8BW2|3n z{ejl+Wqp0bF5`yb*;KB!;V|_7W5Y`OCmWW$<2Jm4u+;LDmijuwY?!ulq-ZEQ=iPkr zE39wI?^wFt7oN6Zy>lE;m>Zuqj*sw;qp-${&$nTXi&ogM#zyahHJ2OfF8D4`n498G z!rUWGSnq;Av^@I=^PQn~Gsms`d*R*z`U?U2`+@M301w{}e%ikTcqC6w$JID5+!zSA zvm4a{`(vk!n&jFl+6j%u!oU!{Ywg(qPy4xnIHT0bvbh;*GGxMVI#Y@690v=(xN0i# zy8y&3^&cFDck^cz=TY890PSPF7;ggDnyA#&&uhMM`m8FHPZCz-pIB-N6C0dPi2o>i z4Frqm7vvO+{m0KVx|8JXX$dnjiSvE&6KjdF|399fwD!4f&zLkZzJGfbz_C-7jH96a zLgK;h=UV~$2E<%TV@Hi1|Jlh}Vcff(e7oP`{Md0?yIW0c1~VE?Q1 zI`(ToJ8n{jKln=tU-UPco8-;2{t_j8WqxT&wA z9QJg#lab8+_iAM5Fl#}&LGQnvjAZt|lCc|ZPe%1A%8|_ew~+p+IgnR*zU!ESi~={< zt{lnif5&qY?&G|8Bld1`^WRQJGW*{@+w*ZB9~B8lK!#D*Noq5@9~lElyb2jgv@G9@ zGsTJX?0=Kl%tkqnDD_@;qed{b^@HUHpm==anPb zdgZOi$cL|*cPpja1JE@~_f0IvEGd|EWdFO{)43VpRLM<42v(7axoO3y@U#_i6_ zDqdcPA)|u#+u+erIg;7#?zV#$OOT;-yH3%j$<{01gAAR^r3vML6gao1w%vUN85&Pt zZe{GD96aiD_|-X`?QR~|{CE=Vv)x^S zjG=HBTNz6zN3wfRGP~O?d}z%eW9GF?1FY-s>Zd^R%b|dpYZr0)E^8$d=D*_XZuPj9 z)9ow^r}u_`^pHK|;?|P3He(A}(ze1_b>7Ij;m-0%ZJx1*?Ta1e!MD>`E4zXPXrMf$aGhw`Zn?iVz;d!oYhYF!AQvCX~^ z-x^@9Rj_;L3-S!tOogVF@Si#k0YAqXdg??%GA#?~JTtn?-*0ef*YTJBbN(D-19=Mp zV~m!zgivHVf3C?Sc1xj9HBk4Q&{Sm{%VB_!pF3od8P=69B!Se!Bm0>K=R3Sf+ zrfD*+R{{H*+Dvj%`cm@Hz|aVJq20vq!-b}v1&&F%30h3ba*&hu88|XEjvfx@M6<3Y zpeki+SAlHQzn>n|7 z&=_pyEb~$sgUy_8de9hb=Bx$YqqN3gGe^TRQWNUr8f>Qh9h|9oY_puZSIz9blu+kR z%ekxNOqk`|nZ0(dBDt1xXU5y5vz+@mgjGVjoV#+FE9e?*rd1K{Hk-d_Ct}h=dELd_ zV!)f6=Knn<_eS<*cT0)`R)dZg+6gel_DlgPsbukHZoU|>3GYj|&hp&%j zsT;c2l1xnhYi4r1*oHl8wlvpXF5NRmv!-#bF3X^6a0psJm-Y7mbASYK?(60n-R1G%cDlPpcRf6#yPh$lyADm^yssycI=eU#DUNh4{?`<)18cL7 zxW4=UQ&YHv(T@*n5Erm)(}xijXmpBp#t*ImThQphrF>YEHb#09$`^0xmdA4R*U3h$ z=j@aL-BOCWeI-4$TKH_&zU@-izO5}ib&{w><5DXgPc16kn^KsE>8JY~*T_u3AW7X^ zANB$3Dm{zm7*d5i^H`18r#8kX?Us}`AMgBGTN^VPoRBVlNH-y}syblKF=|#bMq!>&M*?S^ZwBD9vCh0Z zJnvbVS{o?eJ_qAYE}YBRb+qQ1nnr@IF;quItgV_`J*Os?Aw_6sf7SRu$O5YAf11ft zyOXP1p1XLyd)C_BusrJ*_60EZJf4A0M;!`-8n@3l?M`&Otqm9N2|H#*&>YQrv?m-I zx6rthF~D){f)ed+D8@u{Rg7>jRbe`(DbTw*C`NtNbv15+riz+I8MyeSF<->s%ahe% z?bNePdqbThiA$dRe(d~Ft1vK zr@`kP*4E<&*RCUG=rPMT`6%fZ-=F%K^XH`x>bC0f( z>F{hc@^9Pq!SY|Ne?0B@ISsEYIIGjf<0l{Me$%0+9((wf=}$lW`S(_mZar=bPLH#_ zxc#`}xCoi{!VScIme+8Vp#Z0&(&9T@XucX0|6_~wsU_?_f6?=`_?sefnD1G9kKcTq zf<6AV3gf)|UbfiF&wMvR^W=H$X7Yrd*lv)V69eDhI|yGNhH5X#mOPa~`F13WsCKf{ z&R%{R%jt^q`X{2zc}gXRuo?Mr>!JK2IGt1JOwoPJ`RaoIOY99~M=%sy1KAJA?m#vM zDzEGcJlg}=7s&oV_6V|5klli}|A1@`UP0E|ICNY20&vgUr||W0UWIGM-Hwwko%H^< z<9>yE1NR~G{SR{QETk&o` zQs3#wR$wN~UZ1TdJU)Q+Ua2=&FJ5nux(|7HAK^-zu2cF`J$f2jchbSw>v2;)v^?oR ztHYuDA{-@t7r2#pUEdkR3oBk2{pYQ^2R=i*-W;jP24Teuw-Hc2+$Xl~fc_$UhoHSK z9bU^PyoY$DJ5IdrE0o)pBm5jra-M>3JACiM_YAZx@CkFQ5#DU&wUU(c%`IK3|7=F#A+zJ21(1yV;%&|te zi1^LmX5vSJ2N5sKu|`@b!X5aDy<%8e#4|rv7czzXzCc1i${m8#uT8 z!r!yLH7*M0TKo%m6#p~pueAOO>kqg7Q0uFYivMfw#o)`4U6kk=iIuNE`R`eN4e$xS zVf|OF|2ym3JCD(&6yGjOf71F}t^cU?AF=-Tt^Zx?d*xnk@t3WyK~Tw^YyE4j|9R_c zs8#V}tgrJZe4+J+SpR(M>-;Fbr}cG@5Dr@(&)@=l&V$iarR|KaDz6qsSC!LfbX66v z=ZNB!o>xC}8-P#H=$Q7wr+U*|(u3FJ$Td?l2R=lk$vtph7RT|4r1zPsZu z!ly3b1^7zWj87inT71>3+Q!eoSNv6$KF!iAExp3h$6LDEQ~YI?USjDZExp*%hgo`& zrK?^l7oMsA3Uu$n2;x|yd93B&qhhjn8Tj=8UJBk5z)Qe80=NadIe@AE+I0a;JFHz1 zz|G(#0Xz@f9KZv?CANH;Bijr9uKVCvqq(X*;N=0l8+=m$?*d;Nz&pWH19%6xEP%Iz zhXn98@Yw;p1r>%bcWcs2OG0A2;YEr3^o zn*vzpZ$=*w&!mlVy zCpX_%+^-bYx0Qyv71q1HCI%GN`+g;9w7!|Xz4|Mh=YBUdTe`m8o+pf0b5KV={MSI3 zXRS|vB0#4<`*g|hOLcGhJh@(B{CANR8PhT=K>5-A`0OC6!yG#rUkRuR##bT#|K8wGN9Abu`S0(n z5wCR@U&!RTcOCO}tbuo0-Z(wH1a96VIQkD6JZxBg>^Pl1-teLehq~M|GA2xBU6i`n zc44?uR)VW(jNk3FfgbN39qH#S)ueg8drjmk+`-W&i}zpRI^LO^fo}^8?uzcvS$9SIX<_!S}Ubb4|7k-;s)Sw=aOZa3|rQ$;iRCG&L2q{G#bKH5=as3}(Z zDF7TDlq0DwS%`rpCI8;(WhC8?A`cmZkg)|B%6mU`;Z(&PUR|o1wUdO}Cw`xh5@du) zq4#CU=*5eP?dyKYtc;|4Nt7W&r+2@f!Y_hP@pQ?I9vIP-BX0kN@yO77;9;90-+SQ? zG^-~=y+k=A%2;P*jB($+osv_?NT!c=0vQF!UTtM4AA9(x*DFUdeYAY;8!yv{JFJWu zl%tO;Bp|~q&}UbLYhRZW+&A(`vzlj<5|!{?YR`)=Ljk=Tk0Fl!>ny=PimzKv1x|!djX?r9E-|R!6 zRrsad)vdOl(MI!DP;pQ%CZjIu62Zf;cDj zHoPoc=xk8<+Y0r}=YNRcC&?t#b31UNpq7pZ^?V&z4|LML#$Woo{1vD6jduDu0jZ!w z>R~tzNbPT6lLre7)Y!DfGE&bq`YP%A{*ZE1WFmprCBs#Y>iiaA4H~A=C{D&?LZQqo z$<0n9oZ;jw#tWx))?n^^xHMTiWf+s^v~vlj_oKMcv>t(yJqo!-ti8xPCGtCh8mUY( zy8uLb!*8Iw3qbBXqF%yyTHD2bCa!U zm=B@qldu?cs+48CC8Wdgnlth0KGL&!;}$N6PO-JIBZ+HcclK0;GCXadOuqc+Q=ze3 zec7IpO-@Y7CO5b+c2J9_{i@n%@@V00Y93q!yF)D<^>FXddr*q=CXMyKS~~wcEghzM zPxookq4G>Hk*ocpXOOEfGqH5y%%++~mYIzi%n`$x>u?q7fYOa;>*q@3GSLO%r1n4| zrcSCZXFML6pEA&0X<0FPZ$TYJp1B#umIPL;?tTG<7m;`#Kr$;Wy9t6l%yhw!Gg(ij zNrq9+U;hwmit|N1*Uj;-Q6%{==jX$(v)hrhgv~aY<#tb-dkRPByE}#bxIPzPG*J z7+i`seidKVO05Yl_iNQnSm4)P+V^y7EeYc|v&;v+mi6_rj$H^&uw)Zt>|)n1_WFJt z!{nN|tTvpusBYE#=7vc%^$j=F$SBqwP8ebJ8iE(*2sOJ`gb|)zO57Pe^@-8<#XYzU zIL4bsRae(ZNvO%WVQ7)NvZI!G95P(jgL^HaG7hia<+^hRY#dczS(uRC^{Td!Rr=}pX@E4@dFq}L?f zp*i%DB$8fCElIC_BI!NQiq|WmNP5||TzVN3N$+P?yx#Xj(p#eC(mSX~uj4F9Z*C&# zHO`9HYph6m3$`TpeCup?F#q)u}0s>wCma>0j&6g7VG<0@vj8%F7RJe zSlUnDr8~iU0(b}b=>Xmiek6dmfxi{NTfj>Lcr$o@0Jnl?2JlAk!~k9o9vQ&vz~=?< zYH*JLUIk7K;FaLR?zo((PcJH_^Q3;^%?-_0n8wq6nDU#j?!orlK{08R&OPFmW=NRo z=KV7cH1E(9uKZOiW1Y=dF9>-56!)rF(Cr&qx zpG*cxTfBmtZX91S2Ed%y9%^6j@W$YijpLUiRA z+3!V0KHR%ML^+b#*&ny1fc7pqLWZ1;*WF(u{7>|qsWR#t03m)^@$w)S@F%KD9 z6Rg(CINHx$#}!cl8K>SOdl=7owdo+9)qWzdzWuzzdp0Dq)gOtB3Ydpk8P!zGTt5Mk zlFcRQEF(^Od8^OmI)|uNNu|}H*JL^MQ}uiIHIqOG#}ecO%j>atw)zXruGA%MdmAOagH0VQqy8bke6pM_M`-K(|KXp#KWP8W_!fhj0Ekv z-0~#PGqaDBQ)%|Q7;j;}K?4R&neIpaj??G1ZkTIDSBN(o)C{t-L3|20q22-O{b~`W zmhhh{^M7qQU{a^P2>QN|c~~0j{h!0-TJOsm!0FV=-z_+I8e$2d2%j@xns>EmK~MK#zUY3a<~bomZ}i*RYtu7mJ8g}WL1a?Qtu zR6~^{H1)^)C#zH52AV{za4qbZEND^WXiE2JPA^WjDi`$_QhN64@u+1^QB_hkO5$XH z8(LOoPl{+$FsM#wZXUb%$?FN7)6o$<>4CedN6^`i?3sGU0X=o{4xp$Yfw>$giM zci-!@TM&@lm%m<}dk3<4h$IK0b~c+*=RV^>vnh41W_LeOtl5-0_dh*oHl@zhTFNFi zpNgd9YN=%d-A$>x90NZ|ipZ$0oA8*FOQizYhX{u=u8-#Q0I6}D>^BT4CvbxHLD31y zh=!cB5lXg{zpUI~hbck6`XU)C`>P46Cb@2hky43)c8!Buz}edDp&&aWkkMpP^x+c9 z?$ITxRT7jW`;1WZ&-m(%*=J@&Mbl-L-6t!z6B7PSVY9|TZjJ}d8V9*OfhLt%;~=-6 z2hAD>xt{<&p|oa=gWMk?_7{S7jf1`l>$#Jk)hSTISy0pzS-GL;d@tNJ6#X*c#U#n< z5sH4(qxTHuK15h0%rcu&n_N~1+BFVtC){%xe_ii}F+J4l3^Dg!&0m^x=9AD^q89%v6=MK&( z{)1~7@WjoGEqb8Y)Py3ifwG-t<=Z1WVgKNq*nDbk;(Thf{VZsg;Dl+{*s=%RVkKyo zf1aDa_V?}HemR65@wvWr3-|h-?h*;TcqezxaA$9Od$YG^#%6CjoP5>Y%sbSXQ_QQ* z|4zRC^Cn;apDvN$4_KM`U1oQDLTsv*IX`bo_fqdg#9!d z>n?CrB`&4VzU#-Yk`U~QPK%!Fful7V05+)cCyg%#)=TIh55JH%XddInm<7a$s#w?8 zR;B)R5U7r$al>!pwD!P{a6iWB&=^9nuA=F!LgRySIyA=C(V?`wHX7L)|57^1|0CfV z!pcYV-xHS2o9OQlmR#{_{O?WZZ{qV>>Wzn(u@=SW^LL&C9LftebErIHENHR*YJ6{< zgCX9YmhqqOrj4x#$I}texQ?9U>ri&d)-=$Zvg#}UjDkPU*LnuwiDPamdwKKbvws`D zA?LzNp3uIMXCM0DsTTN_<5uHZaocgbarC<0_83Mq+!yqi-ZM=t-XOQ2kzi4ua^*3TN*St4~fIfj$Z#m*|dqD_WqQv!c3gL@|NPhg?j|24>i~weYM$h zt?>$x^kHa+o%L-dlD^6;NrOQm>66rwG|(WDMkeeOi@vNy(r30MX`DbL4H{UIhLc3P z4rg^f^cg6Uz6@=-G^`_%#&~Q(eea8;?@3G2fQ(2Qov|bh6o{m6ZCg~0;)tZt9ZS-v zk4PFcvI#Y0Ba+5TY#}t-Ad&_kEJ-5_B5BOQCe#RuNE&gmBo$F4eeByD^*t_9Ur3hA zZh7VClh?L{#udb+K?chO@(%Sy_34guOR9v}B0<&hP|(;NO) z-4E&Ho77mmPHr$59SGqAL{XahSJ5>Qy&rsUKtrz2C;TFg>#P1*_@t;Y48C2^o`KIO zZXi#1o8?;%pDwBi@I3-;Eqvx8gHQN=;)@x(UXkZ)S`EIJcwvq;tNFW|c#V(WP5cAk zJBb(OSR<_a1+boX>8&TYfESX_&Cr_R6Xx*OFVOs09`TDH&LLh{@xr`vn|xj-pDEx8 zfqaC=;Z*N3>leeXIjU!ocQLeK@C$SJ>lYkH{ubg#LL5ZAu;PUW;8bqT+18`b_rj;K z`5gF!IsEktR8G~4^Qbuizudx)aqjqqZ9fkG37W8;iSk!ke}(mjTYsqaRb=r!@AlpB zjTXE@HX&c0lWpgHh?#SzY)N#;6(vEhKAI2RBV0Dhrzw9 z&;7)_*W3t`rwjIV8|K_P|8B#ygVFO84{hwcCOQ{{z9&N58x+nb+~0=veypdV=q-e= zx8c=^#0FU0EJRaK550?kR z>T({Bd@npL5dH}33V7oIg|RO=S5c1LiYgi#*ubdyMk|&tr5Gh~vm#GU$5#CbvEF7y zd`J2F!&rTRVH9Q%axmm@Ich+kfSLN1`p?PB6`GqJJd6}(~;*7>VK#%Iw1YkkA4 z>n6G@RhqQ{yh_@^p?F&R@6+VNKk+GpAE>@YVf^v}Ue3uE7D(jicu9d%aK$Yq(4Mbi z(!`4CMeL{EDfYYrnaKVM2EH3i(56xp?DrGq8jww=lkZ*^ zR(BRc{LwO&cmE8oZ+xkI$?1C5@nQ53rPHeP+!~yfli5C9fqy^`(dxuHmG1LH*_s2f zEjCCwjM@$VReBVIdzWGx2{>_4_gjcTg0#9 zbb5#?$M4`vY!5Z7cX)at$@CC=X7Mh`3)5ik+dA@Rqm$?ceKDSlWO|5qp|=x;dxO^* z-1PcyFC&Q_;yvig0LcO9t}H<=o5~>Lv{Qx08`f53%q< zt~U~vTSbw14Z7US5s-1stXb1*7R;)d*F3$sYGz_T9fJ(@=NZUQqUFf&6T7nLr>E9s zoQ4dl~0_`${WgA2RGST*Wg-Kxa-WUhS^ACCJc7$12+% zUb)`Ph2@>&8C0(3z8(RYp?_v+mW%#$|$+s?Jr&#bt+p% zy7O==_2L*fIx0spoyymdp?-P-8A=zKpR}K%^wsft6Z@?U=X0)%XmS}z^)e44L)Tas z83{+ApPqXEqoc^!Psh%(GI~)CnpKD2B&XBMd}Xw2Qgw8^n{fRC+fO=>kxVahJN>hO zgfo`IJI8pBHBTpb}KFmBm$>Piaoq%Wiq|Y z<;c+Z?RqO?{X%!{nB;yr&I9Nqt^AVfD?<12ZQv{MkKV#}7|(uwzMkd)!gA_+x|Vcr zNOr784yU!<;p%Com6sl=u8@XgY1^YAX<8Z`%6pvJyz~56D?nx()J&1N@X}0+Sz&Z!yWG{i_R8a7=RD-R zeyH?F#+TB|NtbzE`QOWacbqZnV|x!N$F(zDX|C4n^M|5`Pv({!KF}hb^U9GhoDiY)htidvoYs;59X@x; zUE|P;l#cGoL!sqG;;A@!?CwLMa<$i;@OJgfR8j8S#hzNwQvCEMk1aZs2Iqo9w^IH? zwl&ht?pt#Yg;u4O4=KO0Twe(2a6#VqkBRMrUt5>IG+*^8N`ILnUr)S<>dZgb>x3_04 zFFg`5b^21-&1f?(D9gSpXZgaiGiq-tE2{0(Klh&K-5C#^JQh8~*&UMoPF`mugi4QG zZSpHQ^0`zalN?9XnCmO8M{Uae+Mn#EvMZ0Letyus1!8;}4g2TDt@0Ew& zduws{y|cao3cwncp0BI28KD@nO4fEX(42u6k=T{pm|BNNDTf&*CZB6@*XWA4m`NsP2x%TEQVmLvZ1g3EYAHuic)5Dg#fI-J_--2l zbtt@{y$p}uSQfr}5_jK|#|r)2M+^z|bK`rN_|COgBH`?}QrDk6*88pK#sb>7fHwaA zJH2Re_k4s`h6Xyn{ooIO+^>gF+RF6%Lg$5FIC(6E7IxnH(_hGQNSGFU|KLg zu9`;<-dgVRJ_Mbs!AL1RGP|$$3_9Q3FN=6GtUQ>)ReE0e=Sg?>!Tj>e%ANZ^U+&6( za{pn_5o9e#n^y$4k+E>Id9S-QD{p98}*)-EB&dcKFHCBR537c-8OX zgC~!Tq}<#$U%J=c%SHEUtfD^e*HG8UG7sVoZ{jNY~3E28i}`d78d6ereJZV!9V$XVda z8DQlsPa@||BPXYwoW({?k(D#L?GKG=9iBl+oCn*?6Q4OY(4SsmBwM@G)o?c_XUOO0L~ zslHg%$dWK|$>VuC&SJu3=kl@6bVnPse5R=Xuo1=1gob<#%jc7OzNtX|xh2jG3=g{B zCNfjeCy6(H!nccOc(hi*Gea744H>RU3QaBHKXpqd)JQUb04McH&`hDTLE$~1(3w)| z7^2uTJ~7QcH0hGv>DQt~p5^aO9Httm@BAB~&d>1|%6MJ>+7PsozzTt>oA{4qI8n&Y zupY$5AmkM~FVsn1NQqv;g{B_hKbEjX$WN#&openzWmfPP4v&jweVl*_ls$xiR9C{- z17!|WKzo3y%&L`L<}OV(Nd0i8__<#oBuyXo04>I256~;{LWLnE35E8Oct0*QwM9&R z`#lIPR;sNaCqp(op$lmPC6KVtROtZ3677mhq-r`D-xA+Q5-Gs~ljuNPBB_AHavA_~ zGM*M+DT$Q8tR*s4JEg>Ox+pHuR8Y7xV-TUz8#vvniIee1{zI1{<2ZpSyzYml%0?w7 z;{oWgjJJWh6frdsx?DZ03#?s62wtUzDiACcyjroJ6s!=Oxt>qsDS}Ocvz`Lh32J5| zbd6%Q-)NUrg0^tjnngL&hZ^-Z@6{%?}gcQRwqY|l*X>J z+8oyKuSYpk=iI~+PLE62XcA`9z@aBX z3)HE z94GfF$u&=z?dIk>$w{e`l%H5B(~vO7NI4iM<%KvYuYvR2CERWj zKB0tvw+WS~k8WsFFN;g~tGI-3C}I9lC8XQ9okyvvP0FvurF<_gWft{t@&`i;rFkip zYNJW{lem=UsLp=74mBy~DrJV3QmKxblqcg-el{-UG?ViCN}21WR4UENhNfObjbjaT zU0lkWm9lT>n|S%!n|mp|dX>nz5sEsgyEk{vS3GE}Qk~2>;9im5(X4m91nE%JP7z~) zo0IK9V}YAaVYb#U*7 znm&&}=Vu6o(!V5m>f_NI+DMN>(?$oNs8Tt0|MFjhv$Emv#OLHf(bFK?-M{={pxP+g zv|`TF9&~Mc(_d9K4?rx)WdCwcNOnIcdIDs!fB8_GB$NHi%LwabBa{8hb+^*JDwF-o zD+%k?o9XUf{&^3&`D8NOi=Cy+8q?%nWzU?p%>6b2x~&svXy5FI36JIO9=)J%_S1w_?C6Dk zvtRbY!~5p=X$R6WsX2b~^9=MQoNu5iGKYqaeq4|h0}!6M8Dh9gR-ioI_0Rj97 za|R4j{i6SMo9KjPpFI=lba%V=PTsQ1cC}}ByZ6rC0?!#SyW<3_=l@&#yAPv9wHo!< zZh8go+F|~vrN?SDEK7`enW4+^x@U&Egt~HGd&K1MLM$l>&}wdAL9h~S1Gsvdm;YZ znCUpD-#r6nP3{iuussDN67s;~#^@X|Z~cGI$>zanzQ1XP(BS6!d4n5f>5IN_NYSw2 z7Y&}=Fu!qDjpw;z7S6xk=GZLa^RLPFf8bX2iHdt2uC|TlWa*^&bDQhxYg~J5Z?Ry{ z*4iB%@<)DLvKroFH+r5fIXHL)g}!5V=k}r#i)49X3Z*XNe{s9}#`yYt)+i;hxUegH z!sN0#vmtp^e$&1>J5PJGf@>Ck9{hmGsmvhgD73PZ`-gBkx#x>Lnt6a`E3hrZVA+ABfD4eEO2w^wcMB5&nrI$t*QK zyxVo@sXsKd7o5oQl({{&9bNN8X{nhnU2@y~sY`AlKBb^*MksYjD6%m<^~BA}?zYfN zx29%BmZvUQ{KPd&zC-E16Iqa+`d1UVGW61#l(M|YJ-4Ks-!0Ob(S2e@UgR(7slPO_ zKMY~KPR-sG(RHb3%3}Qi6a9LqFm=_<<5KZcO1h_~-e;(9Lj5LGd_!GfsE4554He%| zzhS6QSiphWd`7-Uan-sQ4)*-15{5cpswYR>(7BkMS$NYwRUpTMu&j8PX(q zZh}ftbtrHZ4sr5Um|$FNts$Yq;U4066h{I}F^N_ilFy}Ky*CWW=Mw3ac&`1x!!DP+ zV%^DO>jWs))px&4kGiu>te=CJM;lUwyaguc7hJJZ49QO*juu0zkaxrc{RE0#W=NN5 zByOi06qCD@aGaQXP3$Cju9(XysyU8Bl71+yBTt|7A*0CR$L5>Z%jV!Uy1^E_+uYzX zJS|Jc>05=j+6_udxsi0)I6O0!==cR%36q!uC*)D!*&5Jrrr2^hdm#M*m*U(M9zc{9 z^9i(d7NqeegFt*P^PUiK+#k<133#_5`B_~FTx>|{YvyeQS<(+SWeoMw; zFIQ}#iS_$$F>tgYRmvL^A6p5W>5}9vF~KRz@D8~_uLxpnHl)kMbhjG}#?COLN%CAV zm&e5TXXjc!_DaPbFlqdHt^~FklHb7}0ItK)0ldr{4JNrM{ianax5R$R7a_fhVn73yL-I?l;kSM9Tq13c z=h8TYmd6g1TBL{}`LZ;yHZPt_Br_)wE0;#mw#0LZw9=4#SsF6a5;B1tMcNn7rLWyF z@mwMeG$db^hQgM|bBUzEmOyXQu-D#rE|Ipxb7_bxU*GewekGD)NPdq0s-Qm-r`OiZ!NAT&L1Y!4 z=EjCZdPf;z6gGceaOONvT7Q1N<7zTBuKD)Zr;k@xzR2hpNg78>t<+V`savR7ev_HY z-fBx5+MSq*uFt@s?vLR5hro=sWI?B1O>5{s+)e~o%e3LXbMgp9rdZhD> z+uSg#VNS=411C%#Ys58;WhsX~VpICaWOKFY6bnETNZ zPp)bHNST`Li)yMrYVrxDSAC?M%c`0`VpWZ8%16u79}4(r$*Y>HK2k!nGnrC;s1?8H zMs>4ll5aA_&D7gZ$_}_N@N(&V%&_Lvn4E%1n*g%XGP^Cs>}<8Cly0!@<>=_jw9f*k zp|S3oy17+z{M$OL=DG>+>&6s&iBV>B%AAkb)4^2# zw2wxop}E%G8_#K)KhxYeow+q%jGegp8+i!mxdVyC)ZA6i+{c7tNj}TiODi0?`WwsU z*VnUfm-pzgjIn2t9uQ6K`AlMy&*(YqtTtYo;ug9OV6WTjbWGRl(e&xF=Tu$OgijyP z4u91I%jeIXRnaV#0KXqUr(y0j`Ef5glX)&Wr99HTgk|oN+=J8YGd?D5`WJak(@Q{g z9ZwS0_VZZg)UlCz)tu==P{3>s-u{%-V}q zC&4vl;xyY!kEfce>!(NyVqJ|MVyDi74$45xn`vZpbqA)XkjpS6|gU;uN=K?}j|8$$cQWcNLEs>r=XB z+`I3G>)P(EE8+C3?*;qKX?t!vh7rlTZtQNxBc!qFM%CZVtZ9VVs!`h@HdQp%%&uEt zf|KXZHbFY29yCqf6er3W5athHVqbduzR;o-X7xK z5!`1;$2oR%Wp{Kbw|~$0Z*X~XP08N-tGI`8|AG54?giYdxWD2;!6`0)1+=6UDzMt*vaUdrg)<^ zt?;E_ZZzf)o(%Tn3(o_e8His7=GNo$e+LYkkG~J@AHY&x4C1%JjEwvIM-uS6V21Vm z_!K6z^DGW}Dx*~3F2WrnjfA$l&+`oJ@IwrC2%KT zAbdIDSD@cT_#VRh39lslTf*ua;(3#>`i8>NV^$ye4&fUKs}G6(9%1#B4TPm|pnf8r zcL}Snh-WK}d=&XVBrGK}^(W=^d&25t3QH+ET1-6QGYG5S{gm)UgbSd*K==y6s-~2e?a(Y8-ADYLi?=SA1IT`tDR$u zMhxp;?A%bSfVaSEe;3J40cr`+ZU}<~n}pCTpJqddu_03QcV@Xl^o*^g&fejz71{>^ zP3o_gsQ#n1LUpLU6{6@S9t|CHZK}WN9QDBI+B*xUwHjsEkZ;5N@C$7CW7ZeX`GgB` zMYs!a!*HBpr|6~7OMABctoD^XM+WWx#Kt~X+}Gu-w5}WSZmW7YJ7e0w&-Iv7`{|3H z+x>K>uS_5DyT=Qr6-@6^ea6car+aiZ@ue+U%vL%__Ly4Zhq#uH;-4n^S8Rc-?HSzKX$3O zvUJd2Ms#^;=f@xHJvNio(5BIeYjF#3TB}r(b?b3kaMGgRi`$Poj*Bo!)(bZfSBx8j zn}(~!Ex;|st;DUzZNcrt?ZxfK9mhpDdA)E0amBbXIL(yR;uheR;#T6;-;`ZY9 zCQ{O#ne;|VTu@vr9^)?o}U@GqfF zb-a#K{Cxr(IhKF7+vS}Wz^mBygO`vc$!GXd+lj-=fU3j zy4SXk*WX+%aQ3yf?QJyw;rHb2vi#opzt`sHT`zNNymx(g_j#R8Iik&>GI{rTg>wp@ zZT;5aBV|0U%sSdq($>9Q^-|lbJ=JDvcl8z3N9R!OpmVMK)rRV)>Kkfrm0A5lbyazE zj&z+gQP+{`;`RRvDWIM=|416Ij;e=_#5(G^fsP5}sfI~{}B1yGc&BP&l zKanQ!XSt-xEs~VDElIPtB1!+b0H5R6mP;z|R+iN4#r5$RNtTC(#GmE*6C5JV!CCQA z1Q$sbSC%BLAdzH~Xmga=l1Q>)va+O`Es_+q?ZVYEg%nBZNS3RF?jn-(?X7sJ_0xXF zlpB1!4m zlBC`)l62i|jNXZseCRifL9?Oz+`w&T1 z4mQW7R=jliEf)+O9n>Z1+TYSTQM`^yTnWy@D+rGc;Jt+PE$PMYCoGi+532{11hCY; zZVq7SZ|NHG_@_~I>4SMV&o+UFr4*!lfrl%>4+OB(T6P5R7TZNU{%v60n>_pqcu)XG zXu)88dVz!d#R+&CSob+kp0q&51hDiyf>>QHh^503#M0IXV(DcBu~Eth$d|4~FkV^} zK`i|V;bMBkR6fVf&t#4Ci+I+2!r4>^Z9pb#q=Pxu2uuA!d|B{KgI-eTY|4WcflpX` z!eQc1@F05wIbFf%XlxKxyzq$(XRE#~i%A~^w`DjRgcUD*m~tr}E(BAa9`L;Z?GNyI zEE*FySM_;x|t4xg~(32!4_`44@r%Le!}#S9o@2|illT_! z>_B;hXW*32BwL;b;hO@Dd!^q#!ecDoF!;1?U*2HWfQMEDpRmd!Jjj;kDdda*4-Aw? zxWJYtO8R2(*@5y1_rj?>8MZu!kdp%qiyXf^!j9!T*xA{-fc#sKca%Q7zq7MJSmhCZ zop_zEbmEVI(LM6pNB9-u)nBF&e;E7{@m~KC-i=dvo`FyOWjK7#LVF56um1>38A^QX z;A@6&2Yef$t%grnxxt=MTu~4UPoLBOJEnDI$F@@CT9D z`4T=Jam#~=ojG4Q@EwBo27KQ65|+B0%DoG|TJm2G-yUc?;S*MQgm)0H{xg917s2S% z`R7Y`8}aHd3y9wh{!ySj!mT*vv(}bp3VaVj;{olLM|h>>TLND-^7g>D3|b3(!YYsO zB3quh#NPp45Gapuvn|hd;`Nl~z1;85!nHV7l&HVT^6iIj1~i^8KA-R;oXTAe-x%_L zAHH$WO5hV#d4xw=IpHDBCfOAh2jmFL?oe_Dz*k1P9`KzHEgwE%$r0{j~@OI*L-dl***fr04zx{-z+$uS%;Ts9x3i#GRTLqu66bUazYtm@{KDcFo?-c>z&8vzFTr;u zG?aBW2#Zg6yyYtqA7h#ahjJdFjSwGLe8R(tFCyI`u+j@}CcXl^ocL{E)Sfp8D_-~^+!e@Kjn6x0{Yw1F_;=&;K3RXW z^%oBCE8RxkIU~?NN4(a^ zn1X*C|8jhdxsAbp24D4jG|kz1obx&20%z0X(69yFAS^k;Yc1d1@D)(5+u*w&8hY^? zgvBS^V)^EYkMp^481;d6t@!Nu6`oCeKItAo&Rpl z(}~wQ#3P3Do(pz}7goIRiB#T`@u|zE9Q?La-jl^gyzmj?Rlch)bT+-uH{2oOz48hl zAbtt;T~z99(grmcZfp=%dSNY!qH;b3-yY;dD2K+OABRs^e8QWFKML+g{PW;Ph!ftOQ`9pJUZ3oBlD74ffwb4dRp_+H|L6)%j*$<`I%Hqze@zLR)i#S8O&y0sU0 z67kP~ZzEn<@xqIVUk84l_y@r^6ECcI;f2KSu<_4=Zy;V+@xqP7Zw7xr`bWWYi5FJ9 z@U=MIm#&5{5Bf&Yd9 zzK!@7!@m}P6#hzl<%==Y*4Mdy#*=;pGz_FR2rFM<*-hy=aD(NaVf`tjbI5ls>8^w} ziFCqBCp_NrmB3dCJ>!$krgCT_;1d>~@Nmn=`b*|Ieja(}L(7Lx*R}YBdl0Ytej##t zgBf@8p98`X;+N^V`mD1l3yg8t24STa*6wer@9XSUru%mma`r>p7mD4_g|*YX_!y5h z&-LE$y#(!f_`K)3u=dXr-*)&8BX1ylJD@R^u|Zh*3O{Q3*28xY`bhXTLR$x)u=s>m zPs%SK%U@%7t;@*1eRY6}|#!z2Os9xrBSza$U)NwI8@^ zpj^T^IJH+8KJ~A?$caF6;Pd*M@KL6{RnE%d|Bt=*fsd-V-p23UY?93%LLdo*KjH#W zBO(MEF(T*&LI^fsfFM!PBqV{LA&E)Apr|QDOIvDDsil@$5~&461&b{zDk`-&B_Zzq{O^PD+zX71eobI+Wywwy%vF?=F- z+D*J4`D|}3@(%#-Lq0J=`vLsyL1aCzKyEqs_-?%A7vSxH95F&W@pj}NKsz##zY};H z@`(}JiJwH|ee7Y#@pye0a*u$w4sy=%OT1RvvmW{Df$ulkL%b5P40>*X+C5Kzq(|aLz zFXV9Et2N|^5!^N8*l($q;Qb#=+`HX=B+f=GLw)Jcvj>bPp{GB17%SUIjL=SuaWK{H zYFrO9f${k7wwrh)-UYE+y%z}m2Ly;e5c;gpp9uYu(A$Jg7CKRAiqJ%%zm3=WUK5Jv zdZnMw^Q@;zXt_{6ACrHs(0AfAeoN?Dp?n^tT!GMl&?KSpLSM&o59MAJN*4;m|MF@o z-&Vc51TPV~Na!DN51_oPdFthNXJXvn6~%p5Q5g^R-XwUT&VTIe=n5YqKJ12 z-63>~P`aUF{)0m4!HW3nLcb!kRVd#@m|r85jy+SRaAIN#}zRE$>$a(>EaV^$cpu+a$P3C_N4`zeH%UP`+o7 zpC|Nuq2~zgBb4tFl#_4i-gv>ZGa>)D(D#M@P3Sv9-xB(3p<=V)<+DA@?-060=wm`3 z7TO{7yF%%yk>yqhT`u%Cq4X)pd_H%R&J$WLl)ebb=W{k`kV>wp>+Ald_LQf;`vw6$wDUzy;LY2h*B4!<6Ig#RgoDStxfhe8hvJtXvP zp>GQ1vnc+(uM7R9(4Pt2A(Y?P@b7(0=tiL(LLU_RO`%^GiswyLu1)AoLKh01Cv>jR zYlYHdEB?JjLJNeB7kY_MS(DLAx3Kv4_7$2YG+8L04e{^&NbWEH5PC%DdqV#x^!Gyf zJjimpg+3?rX`y_EWB$WJzb*7Wq05D~3B5_^LZR0Sy+$bB{ggh8?J61&I!-7a@f3fQ z&>=zx38g&*+mj>|mj#7E6vgwFqImpKw43~nw#k&X+DlPc783oSZy@MYJg)JX3~f&oBD7IxozPmL)j}(T&JkKB6z|YVPl?cCp+!Oq zga(AN-&k*+&|IN8LWc{@7Mdm0FO=KO^4xAxJkKhMZBvvRNP)8ok)VFi(V*0iHmQC^cdLHA7?k?a=49%}zQ(Y*vdvWedm%8Og=eSaZJ@ZddpCnl z0p1{Zo!~WsR|#GrxJ_`Y;6}lpVv9^+l0SV_^rZk5q_ia>x5q`{A%G>2!D?7 zi$K{A0iokS*$;kD);AE8+nEW9W7C@~e4p^W!aphfdK{GHj)Ah=Vc{PV{z2g%5dMDQ z?-TxB;qMXtZsG3|{!ZcV5dL=IZxjAj;cpiHCgE=o{(9lB6aHG^uMz%g;ja?@O5v{% z{&L~B34f{ZTZP{u{6^u|3BOkO)xxh3{v6?#3BOeMCBiQjev$ACgdY(8IN|3BKUerU z!cPUw#C`yAub154r5>we_XKkB{ToV3fVUeM<6|A03|s`f*1!e8D-Dcsw2q|)9tT`! zVA!8^%rS5-aIt}NfX5klIPh=-<2j{cpn>tc(vfUnjK_6+k{{fjfxw3ioC&<&!0Eud z4V((R-M|==>)2#qAMjcOWBjgTrGYKrr3U^4Ykk)l_$2Tg10M%2Ht;dvaRxpNJlw#C zfCn1*AaJsQ4*-7>2yXv=;KK&q2fW|Fdx3Wwcn|P)1MddjWZ+%EYYn^;c%^}N053K0 zcHlY#Zv&oV;H|*L2Hp%j&cK_1hZ}eU@IV8v2TnHdI^a+AS`F%WUJHEKz-xf_8+bMF zZUe6Z-frNPz?%%b0(h-~mjkafa2xPa11|-xGjJ>L90Rui7aJJoZO6)q7DM}f9M?F1 zJJJnY0{MCJ+;kB9V&ItuE&>i1xB&P<0|$Wn8+aUWyn*w8j~D9tsXrI^Z3E{3ziQy& zz|R^u8+e0(vw**4U_bCO0}ljlFmNXDECZ(lPcU#Q@JItE0}nK?4>-ZVUf`}t!R@ht z|7_q-(7$^Od=mIM10M%|#K6aZzir^dz{?GM2>2!g9|XSMzz2Z8XyE<8c?LdY>*tPr zLU#$>CUk?)H9}ViZ53K8v`lD`&^)2pLNkT>gkrnVH5jK6x=-jXq1%LR5V}U_3Zbn+ zYlW5xEfSh1G+St<&?B*|*P~_=`;Zz2{#ZnI$rXsa@BIaLtrXjb6zs7f&ou9k9IIh^ zHPVwMy$|VHNgqO*<3yC<_H#^$=~kqFCFzsg=s3;i_tB|L_r-k>jo=tr3SM;hJ^p5q zNeBIgr1L=OIZd?(l=Cl`J`UP9UZ=N#a*UAt?Vzy3Q0e`k-<33MQ>-6L8g?ueJ=9Yk zwlP)=BGYA{!zEn@I#1HH<9tZcpMd^R(ghgDru`Gkt^}PW>Aj$^5mWquiI(+qNmnE7 zL!|sB(0oZB2c;Qu3LX|Xhnv2jnO=?l`I)3S-|j<6bI#phycAM~bKN*clWERBTjqfs zJsw0jA1wp>re`|#?8#1pO{I`v| zW*RcJ27kPfmg|jb!%Txe*eH9ck=|~kUp3MJXaH1!)Jfxd?4~WfM)$(z`7>+kt7meV z?a@~Gl@qR*SU%;d{2Aq0QwHOX1ExE;N;T^PJ}CumKtXYyxLSaEhxu&TR~;epp;e79SF0g zgv{l)%Jocml@sC(%FLm|lu7kf4b^Z7V3liCaCIY&Rm#iD;T`~P%BpH_ET31opblP1 zX4T&ee^uo(Zz#T@d`8WDxKgQsUlgQ85LH5YE*;3Y=9 zCODlE=_Wu9kcq|lGiP>pv`PNdNu~K`k_qPXkkS4duwAN`Y8E!OEJ3eS)uIE`;q6E} zeGbX;iG>pz)b4MYsoZ|3&6-g&ucoO63#&yG)V`R))j1W1)e`guqYIc@G;OBxy4~%z zn%felQn@0FXqDshBq9T6RRk~S2PGm)dqjy~(>F>a({+pznFXI(JhG?M;}D0}sVO*5 z>YI7M*Hz0uIL4tlTy7lJf|Lk5HyK_lrTqe6$Z#Zk|UI30Z{xj|u|84#kBONkf ztpRKD#EIqFNm;q_VV1|8L@!Mdt{VRz@zogZaM70zb=B$qh)|c-?z6h_%F?}Hs285@ zWg@TB|8-Ucula~jAP?5;T zxu*Fe8u(K1>c{VYnhc89TlGGG*BWa--i7+6aL>OTZDmn?>c(t)s4pa7f9CdGVM6`~o2Dt01r>bxrEYHw~jW+^bquU(F z`wO1r@LO3&-sjNas6d&<1y#-3ogcha=6+TkPPgF|9XjyD(z2jx3jMczj&?w_jq(iG z7C12GtA!5TwIdr@;r+q>bpl;3&RsMgo|56w5TU%hV0QkDLMPiQM4!_B>N4rmx*TOk z$b46gqoZ=}+@=~BJ%;PxoW@Of$()wvs&x{PI+`l$=fiDcxDNV@@}tzp>AL7{d~k(I zh6o)CE34GzgzFe0+t8l_D4`)jM;%;>QlvW_H$d9avG+9Xpx4vxbgWFVEZX!e$5pz#}_L%K9#TmIQcm-^5-NrOrZ9qL(HJzu~l zUNhQ}Uz#5j`~*7ufXAVOg5z!TD)fT9KinzOG!~=gJ$Ed*0Av zz0R-uwEBE^8w}}9ZcX*wDuwoV%82! z2F%9EMf<4|M1~BBl;vd=m&d4KH}ts54XOOD0&7Pn#_v1-Iv3Q_T5wB&U7K2a>O|)Y z1)cLtc61I+ZJca{r1QIqRGHR-Qz!oPg7rdv7uu(EJRGKD&kOmT2OD+X-C=nzy^vbi zIC<4m`JFo&(+jmseNg5J-HOde^ShqE3Ay%?f`ra$|$# zRNGgh)bg8peBeuF$w24jo+SlHdGb5UmfXTrLVo9}=7d_LVyt_vJT@W!qXPS$TMMkg zD-R8_ZYcc2Nh|f#iKe6ZotL?FpE_~F(YVd4p2PNb4r*q}2@7s5@D&cI?N@l}#I@*$ zDGSnbVuqYLF$?Lyf|$XlPLx3QWCdi=zYko^dRq%nQ!Vscr%vQUj@!Sp!rA_&8IaNY zK(;>zZP;2lg#Dv>;M9q8!P!vh;O7pl3YKPrOCmE$$L-csSsR+|^@_Du= z*VXghgz)wpI+EX+6QbuWa5BU6?0x>&Q!!6`3H!(=x>~W-e)Q9>BUbC!?DW_2J3lSC zLG5)X=b0nc_wqZB;E2Pla~xSu9=UTu%4-=1uFp<_^ee*GTGk(lEwnDQUpuF8*a7D# zy>miO$UUIsunobMt0Q71N~9miMhosb5?7etxme_UVREfU?wXMK!a0T6h4$uS&$)h` zOKU4zrgB)hra8ZUi96^Ehl!Wx1adjcSk5kdKSoI9+%gsTfN84}&+~02Gwth0l+-|` zW(V*ab0=)!J5cc>~f@h8}Va% zUgqyv_KPGoYv4r}%U|O+SPOXxZY@~QJ<+p|VnghYNNnDTM>941E&K+{;e%Ufxma$E z=O{(bvoAvHZ95lW0vWS0m&zzx3|>f`Nde?5d)RYg>G;VP%kmy&DLY)csQ`s4lrlQ4 z3O1x1ykIvq0a>2&SbUTetN>>zqCI}hWO>H2;20^$LT!llY`Vh=*7zuR zX7iJOiJfGR;r2g|XnCem%cY{F4IJ($d-mB73u^foykPY`P(k2Yv_q>2| z1rI>Z=J&efw-shnZU(fH__6Luq&)el4}-+ny?z2>+b|;0i{#Cw+ppd)Le~BkcsjKK zDXZ6R{MvRIek+)o%{J-$XPNIgNbVG8Zvot{#HK+k*j@aB7u>eDfzoW;1nnv6P@9pK zr~n&m&$K*=+`ehf9)R#JrLsLlB^{duRno;-@=$7-Rvw2ZdK9oc%BFp$oC?$dBQIo0YLr@ z%tfjFe*g&{oiSsO;jxmYAble;?eXeL=5?^LF69*>wgwXYaIeNiVt8uiSAeLpe-{d| zzhg)08V<3B*mR@P*zZGj0N*?_?SlTCt-)5>1*-T&Ks5mg&};X<(ttj@KR^9D!pV03 zYQO|^9?PcM{dqid8wk^}ruG+sW4*B{kQlHD=~Pt5No_Nw2wJ<+fT->sz-uHI)qT%^ zuu@9B1vuUt%NE2|Lu{bUIXLNdalEq?+=h5(8@L7W&K7uv`s{e8{hp!HdNl{En60;B zf2=fe7LN}aorWrnPBW>|iv1G=`*BvEH!dOAuV>NLf`?KZni?B}+utA`eo`C3j>lmNfg|9mz2%NlCg3&T3n3TZisIClUXh z9tH>LmAkuLJlh#nL{D1ta87xw2XPkK_J0@89=V{T7Ry#$IWup>s1eQ8H;()tE}qR5 zi8%PI7Ov)tGnQ*cM^Br1rLsiONMzJX(n#aGFNSik9zzSVu|H&a4**;$aFsxLTvPkn zSkd^2#N|`@ua-D|LNU^(#>GtHBEsWG#7xBE%Hv0T`NL6hG0&@Yns;J1-_koVE#}!f zd@YIgGgxc+=hiYVjT{&Aq>|WUjfmNN2g)Jg8G%)iA5-k#g8eAjNGSFO#eM_qhsj1l zu^&?GKfw-dd`uF57W-ED#^diVF-e|bHqHzEOpNOXHqCj%BBvR;pr+M!r8NYo>vGJgb6_PNgL#|nqArcc08 zrJfCgdw|b+C5T3)WKB~nw`qLNgDVD8ssgY&lBJEx+=6Y8ctA;&lBg#(qhG*MSDs*d zSYWLx;ObzZcND9XL_Mtqbujm@D%b5>vJNVitAmAxA!6-V67{4O)WO^lD%aIP7A6~@ zfUARr=4vTEQ|YOeC497cM01}9c||8*1$kX3kANK0$#k5^{Sl4MrqVi%AX{PwmlXd`t#2yV(UFZ!3l_s3XC$mFMmAK@;$+0AoZK;&jGWo9sHv((h;;#0 z2W1g|W&M&fEnjNNmNekPThnx1hys1JhE-H3+ZiCZPA@`+5q!Ns(9B82!Qx!`uFfb2 z+|Uxvnsn2mN-oXlwnRyF!!;L^x(-8*qjQZSA(^4;ghs3=8O0g}i{o^&aHv}cMn0=w}b?2Ckcct`NLB?ib#h=m!Q&cgOQJ2YuVMjyV;+mO_HL!=QQ`ybPS5_kK z%~S5JSlnv~*JhdrgS&;*M6wH+baxzq(`K$+1&c&yM$gf*XWgLzf*EB7_f{N-e(L^5{Ji{i^<`l{+o1AANF6$L} zps2;-tVVqzI~TL=DZfV<`&cjM7`EqJvpM&5lz+Vuy!6=Q~D zQy)t_l-0K)3s$)z`M)`!jjKp-r*yLm-Q6o&)=mF+-_!iQc^=}0h~p4vAyy(TL%av^ z0mL67K8m;nk%4|KdC$UU)sTQ)VR3ZrYQ)QskDH9On@l74`x`)#C-EIlU+bM!a;}#} zbFL5Qm2Sq$8anQ(Il<+10;9%oB^^kN8tp8h6SzFjx?V&ANCsEiQQuwhiCb+GzagTD z*0b2IBS@cx^eaerAbS2V9kd8(BZ$tWoq`!nT`?Dwb zPaz$Ha{Z95L}h0qeJ;{pLV6_9qmceN(qoVwhcx}Ki5Af7Q3GUZ7lqf$hpb?1M+xO4;{-$2{pT{+JhTZ$q-Fv40?1fiP zEgvxdg7%aZJr?bM?O$J>KjL30-+bzi*-y0(xpCW@E8ZFN;$zQG&wBHMLx1AmVXE`U&AP zToz(3q8g({A3O)$3_pYnlbr@@k9`_&V9qYM>XG zBWesUBU1ir1PHf5j@Xee75ppFuf{%+pCS6xP&P1!O&Qc+J?L^OK@dMBu72@v;^wO% zY{)$*<@X`YqAwvba2VCZY0{oMr9IaQcG{z#XoKx}P0C|MN)>iP8TG*rq6&WjC3gBR zOXQvHRbMTT|3wNRsILK_jz0Z}9o&CElJbtc8oP$P(_ZHsqB_Rz&Y@3BQ+~?VUJkYL z+LMLI{qqtcj|=K%|MHk&JJ|PZKkHz-*%!|KGwVaqi2BTRQ4)~f8_~ITKo!~;To;A1 zV5w_{50vsf5ZOlN@f=THmGM2Ual&;>xJJp(Ctt9J>zQz!6Rw5AZR0v8(>l^#8S|s( z{#kY3UoPj`CcVD9Y$?}H8ILtmxUR{5=;E>N!8T?fW+QSw5Z_OEU2H-83Sv7V&(ohF zzJd5YA_rXhBVLFo{){Y+i^?JtJ0L+R4lwgFgs>HntQ!$U>S18A_^pIH0DVgRSsXDIT^#Zyi(|$j#eGXwFQp3r!oW;$d>-xMheBx{uc#E}Xt`7@ zew&m(VX1|Kxs>9_u1IlwoGcEOixj{6ko7xMCF(gu&x$$h4HmywN)AW%Da^5cQOS{D zvN$X(+XAElk7XVQ7$;uJW5PMMnK{tFO!L0ru3XE2{`r44D z4o5%t?(GK7MfuK*ro;5J|mI63(ob}%uA5KPQh{Z}BLg1vDb zd=$cu>eK1C-}}f@G#D?k(hGC^&(ddxfbw! zeXK3D;9Ul>!Ws=ZV#*PZ5IH~O z*zfP5-_8YZAmp6=K%9yEIVhJ4J-jdUMm{n15GNyYJ1uEf1?0ToeF7h$PP>RXx0rIr z;7gS4XoVb~CEkOa(=K9;W>Ib*@H!wz%dK!Uo{%s^?KJgsHq0ln} zbO>l6DD~!{Tm|F?^@R^n@N!X(nB|CviQEv#v0pBO+_~Tlf}FFzi2I8i?zK;^gWM{} zC4+YoUs#E$kN7z9*-vH2_W>V4zSD2S?;#&;pk3XTP82$bd}5X-K7jm2Kknsc!?!Q+ zKI9W4v=i?|RTBY2Wrd>UjjX z1Np=V?ZgivvYu6t^P!%4)N?<0DcJr7)4bq33_VwYR}4925C=WPMWV;bgim?k z0z(fm`dwYG@*uYY?JR=aIPh{IM~u);%p~heh8%5x|BCv0gXe=BF+w}BSL!Q(o>avS zZa?uqA%NZMJt6dMp>GQPh0s@oz9{rLq1%LR71|(_YwJ<(c|w(41Mr`4FCgFX$?Et- zyifQALIXn2653DbhqyMe{86Esg>DkcYcKPwg@*eA{53L}|4X5~1`yvX^g5w@zb8Lc zD9;_@z34O2Jwn$CT_bdi(9uHK$CQ6m%I}cvplt&Aj|rt21n~nx?-%+_pzPl# z>!kmb{cu94{0C-2NBErd3{gvUd(!MzgF~op)}qhzmHJdcNONl4*6Wikd*gT(&Iw^BJ^#cuL~7_ z0p1q`(@+Wj-c3R`2>p)GZwb9iDDGoQ{#KzhqQbuy_bo+nzfyFT(CI?;7dOkx`xE}X z7Yn5=7jc$QztCPnX+DO3FYZ5zek}CwLf;j7KEQEvjPWJq zn-Eh%ly5=|11jHy7;{s;2?v3)Jj&p*t;Ug(hlAo8;msDBCDbpJ`k7Dtq^L_#q!pzi z@^Rf)l=_K5Tz;J3b5JkK5wje(hvi6FFSb?ru*9}2UyFl5Ssy9OF`x3xX9Z}J+7532 zAz+M=d3TE34#As1sec0~ZcE zmv&?u7|(zmnFh`Q_8E9M@JVirv?m+*kb!aC=-6jqKkzOC4+P$3;7s5R22KZFV_@8u zJ60GN_vemQ1N(q$4eSLjGcXRyjv@npf=A3e1D^!WHt=!aOamVS_8Isv@JXEb&h{Sy zK4jp7!21k*0C<;y_XBS;@IK%T2FCHzu~Yhc4Jh-k_Om*xopVX{0v8&15AbjU?*{H? z;9bCR2HpuQ^U##O9l!@TU@rQ%1OLjv+kk&$;H|*x47?fm8wTD4e2alM0M9q@df-w6 zuLI6E@LJ#z23`X^z`(14eFnzygI$d4mC%#e5Mt~XMfV9sKPZgtQ55Y`6#5liA+%L! ztIdaH&v$eBr((#JG!LICl4iLIN#`QHSkeVZ-zDh^q`xESrAYIc zmpa>!=9n(i*bmkpCC&FXK98l~=CuwD;`c1d;98-^@tH0|daCd%kZzWA8`9s9^e&_y zlr+bQwo1AT>Ag(j#=vi0?@OBBZs?zie17*@i1PH8wGD0Ha|zS@W=7*kKo!1=gp;l^ z_&p6it~svEdPC-KM*62ln%n8`G}P0V7A73xqSY{er>m)`Z|X$2o;Qa>Ut%I@E%WBb2ACpnD55H+UGCMd2@EbdEn5 z&g3s5FL#WHD}NFCG=eoqO;dEg5v9E4`1N(_a6Ho8gdBVXYlIvrMHuy?2Iq^O*>A)% zkY{;ZGOcyE-t%6DH;^_GhBNt%V0ngN{5WR>7>2hw@JxOqPNTz7fp(nUZ$va5>_P@U zlb^|NL^K^J+J>mYnfyjX)4~3Af-|o-n%@ZO;7kgqPY?80?|m%ps&RBg^BZx27q%d{ z!F`u6A)z5sM-;yiSc{W~pLL*zR*;HkTDfON=!oVwVik0#zz=MpAwowqzY)~2lG36h z^EB;<<~IWC_F7w@VkHj*1V41(-IXDt9WYQ-8R7G-e+3-@?3eL4*TO=Cj%a=(ddU8` z4bM?w!O)@ZXiCZ}p*`3Z=QwwCIzAuhe3D)tuq`1zAM&6BhlsU7bfn^e zR`#v*5YHFYj;OvT#zDs<=-3ptE$)UO&uK?A-xJHBgB2c^cJMuo?ZPe(ZwIV$-Te}> zEvsc)yconV>xLRPNIR76TX#Mm)<6fJX?-*nGJ>hk(LqZ*iiG#+2IyD=ex|g8@1*WV zh)$zVyY(9pz`4d(q0OJ69rUi*ozI5~=wKi2k#=m0zHg)Ye5i&F9#eb6+5wikNshmU zXg(k6pko&b>=zw7&<=DFgWIi+4jyUD2tVg?an2Wjzg|vOKW=VPI6_A>pAW6jkp&%x zLJ1~~UVCc~PfTHFh5=S1PFA^Q#06? zz;A=K%2(T~)?QVMS?-6A#uf&;N&J0^}_CT=18jIJ4@IGMNbt^Y&;BcZgN53N+(N7_Nqra_dV+18 zVI|vJk?_T&r}p4LKU(H@?ZN5SA(I~oeP{RPH(Q_Ghg+#M;Ie1; zvd>9Li;YQ1jT?~i_8rN8xg&{RjyzFjyjJ5xig72>#<6zvGpCDANu$|XtTQJ!PS44W zcjn~!%sIIU&YaxDU^RcfBY8Bc?rjGWSxJ(i7ni~0$Z4-Vg4148!l$|R3{G=Z^I%im znXcF?yz=%APSZ_m!=V~F>owh+7@VP}!1l52DQH*U!I*425*O@DYDh}DjMr}5`kbql zvRMOEXFDmw3hWe*+OPke9s9-Rf7k5Tk(@iWpbE|c@ys@|49>)BM!?6^NDNZJRdP%7 z$by>1HFXVmMjlyGSJ^VJp=n{T?h){{tyqTC%z|zjx2U;kJIs0G|nm;*~9nn#jhKKY&UlhV2$KSL#WA zdU}p}^TH2Cj;#gS+jfYG5I5Q(IklDb)pa$&qXW9brnSwL*;1^synJ3=<@{#M9{P98 z42v8#Lauc^k)X~EewYYMIq^D#!P9_EW{>gTuAik2BQ zI1THAQ^mAy%@x6NnL}y?=h{V_$5y3NH;Q61eoeI%F^94RGH@{OZhEx>Ok^V;On5OV$CIh4h7*a(?;cMA`Ezvb8i4`0kjYg~fa zae8u^vlk){>~409KK!7Z;|KYOg^1G-d9eyREO1#+-^}^lTm`^EqyCE8-mRar@O5OQC%CWng`K5E(uZ%Cs|k3p2T7E?969 zSKxBpPn2VD=0xD(hxQxJJFsd4=R44bopPjX2e*UobeC+;@!cBu(Z}(PyGJa3@tUD| zMLiG1o;;p%JL&|uba`!#;bvHkR zeZ`v-pR=$l)q6Ab^hTQVLyn!_d!#u>g!4m|e0Ae$&JQ`T`{KW`&40UT$wQnc!Z{+p zx^LW*>wfslkHY7O9E83Th>6&?vk-F-`FMR5B42ElB65A;4n)56&|dK!#D5_Auww@x z(iS`)k*`DeS8_5_Ld^8k8-|Qj@YR!2b%?_Hjj;GaDh2sKPpJSpNcJ6@Mb<|A2#YT! zWbrM9y^6qBF0%MWCQ^LCB8zWZBE?-v7T?UIM!tWL#luzF#n&|;^)3w-U$-P@EpjN# zw@WF{7Z4#g|`cF<*no;yaP(;<3tO zqPw{w92;A+8+aYk{Snv07MItHLrK;ao^Rl9Bt~c_=6Q&BrGfOjMrbEqjEG}+;SG>m34VX*sRyqba>NMj#1+z>Y~oC#|gbi=qRDXgt9*<5Az5`dBhQWg@P!Y1)2f= zKv49JvdP2sN!jF)a{HL?lYEv>RHEwoMab)zmtBm{4N8ub8Klf7T?tA(%Z0XqVqbZy zL2-h3D?llSLvJt3{W3&5#e_>!8XB|H= z@Lu5c2HpdFkAZgs-)`Vtz&9FrC-8Iw?*P8cz}tZ@Fz`0uOapHPjy3RR;7$%RNc%Sd z|H;4`fOi{sJ@C^8UI+ZJf!6}xXW%u!Z3fOmMclvWM@2J*Vmn>iruQX{ePP8zm^Mc1 zkiLLv9AtbZu!8u zOwf$Ne>R$aKxV8 zt|FQar`vc*JCj{SG#x0~<}~C?b`{i74&m_rVE;P7v5AOgR}l|kK1)6;eYzJr)T;}- zY8)NW>?+3LWrK6_kLi1pQ#EO%jwp5&U&X_b9|gwi>$7zn?U3Cap(C1I#YX60xK4Cv zq<$lGM6;`)jw6tEbbNA}c0{wQ_%>eBI4}N-eAz``q{vm#0Rs`VCc~Ih-hnRP{)r^He83R0C{qS$A}EADu_evDvGc_vLN>f z+QD*r{n~E<4jX;<59&|@ecjn+)IkT2OFwSX)G=_ddwdu=PQM;UBXm$WOLSyGhq)cd za<(O^O$47GaOtvg`LJLFQ_q=fBGy7jBg&RYJ95#EFjFz79Z~IF_^_M}9XmwFQs{85 zKTfmGWLJ?39r)~S9r_I063won1Uk51yz>2id$;>V9b-}LDoUY)ZTGP;p#eEMI5rW{ z>?-C!auq~VMaRxyf4IBG(ZSYGYq(v-Vdw~ePn$mm?-2L+h|m$uu3|V|5O}N~h}@P4 z9ntJ6N}wYR(q6tqBBY}o_-8P5oPI40ehkDTrA6Bzw-B&gBB=}8e|p=DM(D_aT$bp_ z8tUqDRWiZDCxEU?19x!qFa&0qko~yAt%JR7(@-_jcgk0!}aezU&=D~%3vwD1a za~xI}n4zpCRuyu6gUKhe1_rtYHPU{f73)|`KItFmtql|ohNZ?qSXTIqRVMZy{c@qs z*@v7?cV&fBC-z{)hGTvNYBJoa}h797tl(EC`SulDtm*1FuX>4jWv z;m1c~VAZiztw3>&YDo^bn~tU)JJmCBPoV3;ieVvZFg$p)$ALiC-NL6IY&1?XZtrl zr=L6hi|N$QUsYLO-_YWpTjO8UjIRjzl<3zV1}+uqcgO0n1}d((Fjn@TcTV$p{<(`< zM8^Wn8DRzB6U-WgV}pkgP7a&DK|`12Kw{{!iOIe&AECrt{Mxg}ArSOt(FB5#QqyBuWv*MSRM2NEadY zWM8F@$B&)D_t*yV7UQQ^6@IMVEcZ1;RiP5@84H;5J^XN7w4J5X7s z^nkMzT}oM|^mxjF$}*+L4#0O2eabSW2WR)tl*OklQ+i&Bbn-m>_~YY^79K;*+|lu{ zOz97*(y&b7geUHzcvz-z(zN3DwR=zvTNtk_Q&cU=rbJt&_?|@;=ibDnCU_|2?fEm1 z^xgPLxR`u9qYsPsJ%AsWrpyKL#`-!z_9G^oo$x9MtWUTlN+`wZ!_xg&!0MTSgC&^{ z@ZQ7(V=IP(!`3DyV{^`ItP*BLa#~ZBP>1VrL5Qsj+NFdzeCN#wj%B8#X`2^pR?v=5pJ@Q;#kgLaD|2@sg8|IFUN$Yw`oGtoz;pqRLQ_YnROa# zm438ffe0V|*z@Rd_aoH?bg~oPL#9W$pZl-TN;h^P|3jDV|7VR>q7A5=$-#VggD{T6 z`3cdK{;!Q*LQP$|cVyqkPK;S#$Mo~9ikbhrn11tokNFl)898NY(S=j1FC3Xul;g=t z_g(9I+%u%#QBO%`T+DP@#f+X8Gwq6)(Ial~WMzEWHH+b6ChS;9Hml@S&bdI!XIR*= zFz0!ld{2V43?ShRQaDX_K9}XeqPI; zD0=)6HY<9S>#5OB7yp80Z40K)HCmvIt!h}<2=lhNbv1Mgtj0hU|GG$Hk}wOSiG0n4 z9mtj1$f!wKwI~JJ4he6LVtfRfjBd_uWvUTn)4H+xz=(-B&{i+Vu1O1Bng3sAs-rD{ zbXU)G4QwLKb^b%vIeO11d!t}-=7L*lv^(($i{{OP(T}nJ^09EbyCbzvYlrbUjv%dF zRjXfQf?c7pJ|+wS%@7kP>}6f`=czL2lo~TWwK}ySW9hDX!V=8O9qZ^FYr$)JbIn-V zY*x06?dFKHIG)#z_$1;_5no087}1NzpLE3Y_!uOCKBIYYx*C`^NYM^#h^TjezW+1G zH#QB7U)~|`bYxwGIym;ka;%@<3~LAw)Hsk%Dm^=m_6R$Ia6Cd3#*5N(q@Kz%DTEM4|YU( z+I%>5u)i_fr1l?W(G=7f^f&A9D915MwuR$2>^|zD9TDwGLgg6(bL?B+acEm9=dKLG3AK)s6~C(fZ}t? z!UD*193OTSTiB7~AWuwr;yn75l>7kjX!@0ueBu$v=j-UO-qw~e!0<=8k(lL)vk+NN zf5`Eh!xg9pzA3Rb9Q-wk9^zC)z=arSQ}Tyk>r(+nBjgW*_YQ1*h!NU}_aRd6Zpc-G ze>db_2M^Dy8;KFxiFY7U?#Gau1O9`Mdj`DCkRwKDCw>@_at}bR4E(K-TL<3#kRwKD zUx%Mnh?Khpa;4zE4mtESuT>j~5!#7skzb2`IEH>{0iKI|VuW_$>k+BvD#(?fTqpEg z1KteC5hJt{PeY^}j|tLokS|8Qucx&o0A3#Ci4ocZ_{l}2+z`m|JJBG>oeSO|$Ppv7 z6Q?4-4(*wdW^LhlgyU}`F+w}>C=UHflwaf z#McYuU>Y$8>_~AODjE>Vu`%*55{lzYVH{tI4i$Q~&`hB?u2eqHL;QO=Xi569w6{y> zQK1|mWd44kJg$ge6Z$KmuLylf=#PXxA#|Nk-ZNPKTSD&<`Zb|<3B6fpv(P%BIBryV zJ|j>M--1Ya9FX$WjC7*V%Z1`NP<-xx=3glEe4#iV6d%WdqC6BR$L|WHUZEfg`#~Y& z9Vj$YXu44Df9B)3QIz*HV(K9UaVheYf4ey0rvT4EK6H7@Kylc4d3>`S0Z<%&$~KI8 z%^1N< z;16(OJNmW)zh&Ufz`r!`Cg5!b-T?dq1Fr|Z*TCz5?=bLM;5q}Z0lwP6tAPs*ybAaW z23`s5H!%7~?cYqH{BD(q$S&ND9Zx$jhW91S`yhR2reNpsdGrQJ^Z9k1r1?ym0=b^p zfqee_D#|m>XIGBF<6niT_;u2_pSkHJM*1g)%`zQIS;uAYsCo_`vA*2%~) z7|}_G+Lqz7VR>^)Wz~)4Rkb&k&#T0uPQXo7bcKVr1m%c_FF?)tb#)ClFQ}h?Wn<+{ zi)!E|YEc#Dl!V%tO`AEXwW_9(bJ3`GVxe-CR9W8waTHbW7Cc3Il{ zQnc5SNT*5ei+yBPl=u0l#%qqtrPI9^g>GuJ8q}<{%DM&Bn3@VS`D9;}ZXSA;y zb@3=|k5`fC96}dhcji}DFHo~6wY#Ej?dm>@zoK;53eevWZ5Mc*VT3CM6+Vky-Saq6 z9e+h_IB~CH$>R$aDt!St}dDmeWlgc-ZR=PeuI>%!m=42-E2K|p7ol&r>UCY| zadbqptGfUP!gA>OE-&7p!EK7GBZ^(!6X?8bls#K2--dQb;Rqek?CO3mJ7BWtFq#sf zBbr?ubxek|qhlA^A%|V0j)p2#MYw$qZQ@R#(B1ku!`cHKe7;18(19JSGQxFa;3f4E z?3X)n-wg{9I-=RtP1DZ_*7N1a8=ek$2-HL&wPgIU$N5(p z&<;M2>_9uH!+)NulWY|X8!(zI;T#M-)+?an5G416ZHw6^(GlIg5Br1182!DnTmbFh zVIR%Dj|~ZLM?uj zIgl<99VNqDU2Z#=;Cn+g@~{i6q6^T6VB+!>VG{=y&lAokiyA7R$Gk2$f+03>T`yU* z`pSS^*&bM_y>Ze?4Ro$bCC_tDE3CH;9nJ50J*kbhTS@;c_~S{OuTST9b}C!3{LYiT z!S}Sn(~(`9T6^lm>#&D=XE1ompV6rkzc~6!l*sSgoq7W`AoYsMrKcj_PmM>hbS92)^zH`BS)?5ggyD4j~F`F!H?321NoiH{lk<_TJzC{ZZ+y&Y{;#I zTz+STwDc;srO;f#)(%6NTaJ1lQ>bKys(PuZ9-4Bc+z_{%-olEb`Gpy<)${B*b>f<% z_JLC;%8q)zgMRZ*?;rD8%x1^VuJ|bXdFn~;H)tIfb08afC!j@d!t%`;eCouwqiu!T zKCpUr?%9Vet=QuGz#Dh!#OR}cuJyo9@chCxldn37VTlaXFkGx`i?Vp#p8qpc278_x8vAW_%~;k` zN%)|G&*1kCzyyqiTiX!hQ*b!g<0!U){5FT*oBYcz!tX2Oufoq}L|+d16Ua|^0GNg1 ziR=Q_dJs{Cp3X+~yA^w`|5ENmYrsHddK{a0H{dKpPkvuI^^UWXXpEQEh#zlUfzg3g z;IISZ3hfLId;AnJuGqGceu2bUNqg{{b_$nnZ~VEb=?@{nJ(2Mpuy+H*Ut(uGg!FHi z9&2a3jPx5!UutL2knU}!$JrTONFQQ)yq&=**4zQ{m)RLKy*x_(<#xtU&@QF}b_OR~ z|BLB-JEIDeBYp7`?2J`N)0ubtL_4D$>E28i*co&J&cix>lAZB9(*4NC7X21!Ze9Fj zJL5g1v&f$^*ivSS-uMKgBUt<;h{Pvj<9~+4AZ}pam0-u&eQBNOv-|R^RII1(yCCtN zzU=E*Z{Plq1K~HHcyHfXM83XU3Mbyz_q!loZ{NpAe2MIWUozP@yqial`~||W2iV##)& zT>!~ES}*nt#c7?yA;{%ud~ht9;6K_&vu=Mu?xY^Ld2nfpe-lO zS0LxLow*ZvyjUNgkN#^x`R}u!bgh~~N3Kq5!l(wj!d-6_EU4n3S7p-@$Lm%>WlN=# zR;DQq(1W-Rni}eFNVA(vzh1mD@(76O1GiiYXmQxzcksldFFfnX>EnC!i}QWg%!s+g zH_kWSH`tTc-}l6@`3rvkTwF{cCCB}4-S-!)`{IQotG=?lJJZA`q1U#q;!_EqsgPt% zPVgfEbHfQBWjfge(x#Iv`eU7B@x409hn%rW)ARty1f84#QmT`4K=>>W-HcJUX%>|p zR!V2#SA{Y7EmCFK92MTc?|X=bsUWrUIR>mYkYzf_$AHy3c|XX5I>`rvCv}p~6zT!R zeH&5jyj|r^r>5mPNlg#yB#Y}Ze7;nHwet}LHkmBSa<=j-d&e14XXX`P1M^xWyusfzHH+I~8-FUP+t>-%ZMy_}N z=W$y18IEtOQkxc6s>2SZER=7vOs=8+J&{xc%N_A<_n`!AQ3|4qWWf*@d1hlx)q={p@bgW(A5@j#a2Sg=wOpz6 z)0|aR5Ijt(l$~~Hg{UX;T4{ZjeZw*Ed5AY6ehKlLh(AJn6_GXzu!*uhMl`R~*7cW< z8Xd?Pn>!ZH?zDC3(7XV6=s!Hb>jzy7{&7qiHz+F$bOj>qi#XQp1dca5VVjY5>@)H9 zqQ(cQlYzQupXsFeyo8q^WvlnqLuXC==b!)3vgD?hd)(A~-^jF2p8RMI^0;r8BCbSS zi|Cj<@`0Q|ja-2Kh{_Q%L75B?AT*-_VkiG$q=}vKPFvX)#%OI_Ir`e~((W@4GR26z znNyy69NnY4;W_$QCquY?+9^6R931x}V#rwqyeXosq4uooy?8{9>+{8g`uOdEdKjpK zlsf1-f!`E};l{zDpFID7!{78@JN~1JslR(UHF@z?$1fgjU7swUo9o!Rw!}Rj``csJ zq|$$0-176jaPHK%U!sjH?P6&kOIz7TKm1A(?PI_D_DwzMmv5Z+?r+gPmVWqXAN$y? zzx^lsY<%N~V}5<0>;gV?oyiuKg9@CkcnM-LVmV?H;+=?V5FbT+9`Q9qTEw0}q|*NFIK#QPC9B65vi>gImnd%Wy_4qlMOQ5a!yu!1ZOt_X|cMr5f$Bv1s7 zbCAVh8j<2430WKs5*Ejx$l~ZqA5a9243fnkVR1Z#EDje*L5{nS#X%ThacU`94}m2o z8wXR!;&_kfatwz#3?&6QoVSNY*N^xjY zbXAIaHC%%%1P(4zio-NgP;3P)j`#{|IC8N~YN!${j_^tjhmBaCV_jLG2pmEoivucB zF^5CRB9)EE7ZwNDq#(zoD8+FXVR1;1ERGTiOO|d{BW=Rs*-WWc{D^w$AWMy2fg*5l zkSsM)s5ttE=Oxd(?re~G9yr$lrmuqRlb{%oSjaI?oWl$G7K8J9A#2C?m4(%yIOi9# zYf*M#5h%|4h2uc+X?tM~Y<}n9IzObBwhcz-ZX`xfw!zu73C3pR!bUb1W$*^*+Mp8q zMGy9qvN49e*_Qs`;TUjjjENIP?j&ql%b@=%)b}YWIgZnenDr4KLw*J7!~JQ?C%}i1 zPmIt`{8vP_8^^=bbHHB=xp%jQr|b0p1$O5hJt{-;2n4+aOm0{wt8X3%sR}BSvT^ zZlxY<_ipsVa^NQF0Y+#iz5$VX=0dI*<=%mwdEi|SIbwu%;%g8oH;wh7{7LBJYvvWK zPxKKNBEJabI-zF<@C4)&BeWBbK|TkkUdI~qV}Wy!PmIt`JRA|~7UCd(n(xG`Y-`If z@cfV?MrbEaMLxedz63pefN{)iBt}p+%hNpSxc6Qmbga-ZLWc+)Bs5WIoX{6h7yiA^ z3Ec(7#5;w)AoN+GQ$cZlc(Hv-ZnRJ~iRI8R z&{0BpEhc}EP@a>-X+nDn^$GO~{g?F9M?yP=@*5UJyzdJAv(UXld2TWPMWOtVM*O(Y zM}$5k^!q~B2wg4oPN82CdW+D-LK}qMD70E=h0v>oa+Hbn<2+Fm=ZB&bgmvqHbT}x?29(V;>-7WUG*`CQY#;SPXNX?%sh505FQC#>1{>j4 zHUj4_Z7WKFYYkiiTxQ^6;35MT0p}Sw7kIB=+F9fP?=Ud#R~@_9NYqFBhYH}Q42%KB zjt&Et0e{oLrNB!KTmrnnz{S8<8Mp{|qJay5a||2+KFh#3zdB+JjPtDH7$2CWy|^cK zylLPZ;9nRR_t%b}7&sevy@9iU?=i3+_;v#i1isP0nZRWR#(lU${FbTyO9dWnd-9q(jET(0kVQ??G-bA?M=qM@ z&#bAhhF^ca|CeL_s~*G%9nPaQIu-~xy%5G%BCOb5t;&6>9%B$KRq*Vu>r&$=<$4T- zEzr%I*Hq(}r#qJ6-3^h3T7=8cVK`F;u)^7TFeJ3y+QvKT!0TriAmK`}-4DHDsLveF z>2`SKx)C(_4j_H%H-uaD_%ypePhT49ej4sxWpAFAjVxzA$v z9l(1N%i|Qcw&Lc&a~gNQHWG$2ty9bL3`=>#GXn14Z4Nw>-S=s9I4aPN)7yPV)8TYm zDm0zR?mLE6IjAr-Ek%jr#nSYW#Z5ad08eP~`Ni41 zG`nx=;MkI*qxdxKh~`gqJMM8D-#MwDHLOzTxJEZ7q8+&QtDJEA(T93l)&V?h{wd5h z7{U=cqS<|aS?Ygbu&&(rHFW4ZRWyI9)WP?ja2>7!C_R(Cbvh2H63CSd)s4>@tH(RB zc|28A5FJtdhgL%eo|mk3qGKm?jlemO4<2c+lMaUYQFHRYOPABErEsi{g5b9y7Rjp z7~<6J*r~6eEqm8!l|Ne5O?&dCC^IB=h-(E;UK4n2sx7VX-CA_gDhU+YVwFx`t)3^i zok#5F=-1V@zO@9NU1`If-&JsqmzrYpyMAZg#@4|v?yy?Bb{*ClE<*k*HcM#vz|olO z{`)3$ej1=$e%DHDF>}$k{nVBvcxpc?$nQFk25wA3?H^9!`c}{zH4TBLrB=*PmK#<} z+x>NAH=x~pj{4C~u6=A{AK~IY%%@W?Si>@3u!p1;g8KsZ`?_9wzvp+2P0)3HRFK3P zQeQ4hE$k0n$BtNo=}#9L2Kx%zpi{5Wj5!8f6}pc*KfXz~cu9eMZ)~mo2>ja)t+*O9 z7>?w39%^Lk*fw&00nWb08{A$dZ^x1EVK`5()vR?x^K^CW*!i9HO(^dPU;p{xBb<-0 z+SN@jzH5)3A!9a;`hq=3ez3YlK)tSGb?3yQI_`sB^A%)` z+W~tw5@s)m)1yDVpTX_NzTjtIzK`6rPw=Q^pEng{El(4x8!h!?D9?I>jM;R?6Re;6 zFjzka%ys>vSwF|yb^W7R|CNZzKVba|Vls)YFIU(1II`^m*=73y4v;aMAF5S-GuVN1 z!He8w1*$`5Sf1T1GF^1A{Ci5rj~yMesbf*MI;J~14ztMhqJyAI>G;^uF^4)Qh?YmquW1!MInePn zrDuhshka*vhUiI!gg%s8smF7hH+>U(ed)VYc$*c9EYH={_!YY^_r1-J*KP`l#00w&;wT~NN3pp z05{#fBlT|3d%&S+>S};{74X`r>s;WoQ)#21#ju7ttpdISG5ZcRBcM;pS}L)-dms16QYz8>YgF++nr1zv;Vog2birg-Ov z@H)Wr#S9Pfd~3j=@|cn88WMjH8{&(}H6(bh^GuJyJPMq*-rY#Y{~lsl@rl6;ZRSrQ z#_L0TpI(_)BbP@_d_Oz$MxQeFJIknRw-r+qc?*$|bk&dw{Bx za>?!6;6UY)+s8>C1E@#2ZdpwhkV zOqw>lO@1Fcb1>41-`Do#BFz@Yso5&3mQIT4*(yEWK>9e;#HOaa3li`3{uP{lf5%S> zkLftOKT8kz6pUDFAdfX~Y>!m5^Q&OnL%kVDCf>?)k8_dyHB!E_Q(h#o`*ZVD(G)Ae zDdU~Y61hBoyu2WK3;A;mf9m=0G=Qld2j*axE9T%JlA`8oNMuzgI zE$hn@=OvEDxKn~N+a%GMSE81bSC!!V1I`V1-FmF`Ooo7KFG`1OaE%WQ5Hn>C+P();H=jmCVTbF8%bRl>T}G%K&Eri!paaz3%c% z#ST$sCrt5NcLJ|;9_8-uzw=W5ee+WOk9zhFJ{FHq6JeY$2AG?IBO!FGU-{+cpoz{@ zqTzF6^d}`Vld;SHxtF@Z@A9=8Q^A|3_TRwVdN} z-h)_^-nZCOfR*Yo31<9I-ppt6d!D_QLK_x zAggt9F9=@^j2bA|s94h}xK<}A_?}MUR|N{rLB!k;67@74oOQz7dX+nqMCV?GlnQs_ z_c)?4pM_9M%~B%x;Y0EaM5A?NO;D`qcY)liliNYmqpIa@F9mN$q4jtqi%*Hh#27x5_Q!!{w3aM7v4?q>4wa+6}Y8$j0mky12FMQcf3QOQ!0U#O&8_5k1^%_32caKZYSdtBwZ z^;2RjqOs9r9`ps<`&w=aG|>kjDvxhl+Z@pb-%QjT9-h2Xc&n2mzuX zQcWPigAGXx0RtjN%IBpOZB%L_rIb)=0jUiZy{M?vOBKCdFDh-RqK%eXL|&#epx46x z_nW=uoH?%qd++V{|L)gG=B!z3)><=r_Uzg7SbIj1rVywOUgTE&W4`jGAil ztC?l|$X4l>-4vCQkweN%)t@!hR8O+a{kbIl+3p}qq_;_5m^S1(F@DJpi{{E2g` zI*+fZKMNMM)m>+Lsu$MGR$mx(!ek#6%H;qxRfARcx%DiUh=~3|Y8KYVzJ&Dz5A;sJi z3twN!hefssHqf|zLAh~bt-0YFARobm-^>X<4T>t3iBqqaZ;h-@KN(Wbgl!D+<-Z#W z&#^%i<^=e>CwBLI^(5)ZIg7^v++t7a??|-o>)5a+*{@LcVM{g1$EVSIN6hA$wydHMJ?kq zr}71uLq&sBKEINO2cQUzD~PQ_Q6Dx%Z@eF=c+7ZAuTXv3REnEli7oo^m6I-kkw#jH zuQxUa32HI);hw8~BuAFlkE^bzZ0K6AQI3&&8+}*j&Q}lDNaLyFMSiQ2rw~kulsZ2H z)2*JW7$`@(Jaus=y)Ab8hOQ6S$iD;s0Q_qB7Wggjw1xaF{9obuQBEfOVEC)xOW-%c zKL`I3{Cn^p!XJVUU~PBhxw=nl1SwyA$vo2Q3uC*Cy8+r4KaP0GN*FJ+SX{u@H&h z3jAxpF}V@;Xl{)r;_q+3lQr9oJ;8_9t3%rpd0{8$gFs#7-Fb@bK ztl9R5dVvvOQ=jbJe5W)|U%v}9E70F;3j1rWz&G$^pQ!(a8q}aDR9)mcKYGrp{uLv9 z9m18UXHyZrQgym*dyHJr>1bQPb^TbE0Rp%y$dohbEukw6dg z!nAaHFM%(SV|wJ(>Agn;&P;={RZ>swSo=3NjknJ-jSmu}LD@ZLk;X@7nZ}U>X;8LM zo{!G1Ft&6YRQQ&>?rOl6Te&mwdhuyRF(_1gQ zXv^2SPhWL+){S=#f8~`gzVg`eSFam*)9)v}Kki>A|L5|I@!iMX@yOAKzwyHDtN)z$ z(qGQhO#Y<&AatIBhYh*1tI7xD7@y03)8Rw#4e%@ATj6)Y?}2ZFKMv0V<3f%fp5y4n zxB!wr;tyOMpoyz>BG9XNli>CV|Ep3NKLU;XKVc-CTEzf7E%E(?|1%YfZ@5JN4M>}= zyWl#0yYO=lMml~&$nvFr%B+UxIugGjWuA08YOx7CTF#F+=1b>Ot-b-LEZtgo#^(`% zQ!A8!8V^Xm=8y@_o>sBbC$7(KVLs@1Ha%H2zpg*bJAG{Z;rE7gh_a}H#f8afRexT+ z=CbD7mpRj1!#^A|aea@M^Cx{!d1KG)WvjApYO4p&D)?}a}AzYiYSP}lGi zK$a=v{_dIIH1m6Be(TJ$gIIPf zM}G6nZ=(6#vsupk-kN6%>2Iw0%{0rL-$e7fYTgHacg=6E{kX7^@LXpvgP#w7FFe0H z+XDY0{9EvUg6BL}H$)Ac9=KB#En;BFH5rlDL>8T)e3yafM2_bUolg zl90HdMJ}#!Ns3%gBZ-S^Z292097+;bONEPdl%!ekqDxmxE>;Oi*Gw*Ai7qaWQIN~H zqKj*cByqt}xPB!hu9pcHO)bdvXLz|ruF8?bg*+kYy3KVm$;5wxgIo*YMLidnN#ato zaOsDJYimN{x+J*>MLkQCBrg6*zJS58{Pj1KH}+!_xdgCXkUEe3fzNu;&3g* zo$%j)o(?CzQHI>j(DOO+bliz=ltmBm!-!}4+mRp6;bM9>oFC$ENc=m9e+xJ!hQsm1 zIa$nfc7Sg>^sYiWJ3-qHKH|&|@h9N};9Cd2KA=~F?=jF&jW-b|A92h>tLrK|-`ctX z_(O=-*F}6OJkzTOUn%7FK~Do{)!-veJ;d3bkgp7UC7>S!Uj=A0!AG2Y#HR~iG5E%U z{yF%@gBAcEaqckmOoP87Oc?sXLGkttVxOF#ZSjq_Jhxm5k+YG*D$hSe?HqageA93m< zz83L~!1p131Mp_V6K6c}Rfr#ibXFprHNasbzlk{GiQ^mLXK4F+I?p~&4DI?R;*5U? z@k`;E--X}{LhfbgSqvKbO`C|5k9f84!LaC=0O*)c*g6NancyQ%KH}36&vJ$A)-vEz z5Up(hV`UqcV^KJe6&1-=oG>yPs34w@Hy z#Hok4Tlh}loAN@?hk@@jB2VC(a^mD8eiWYi+Q7FQ`CpB6KLTw(_=v-`5J!9eOabJ^ zLeBx<=&NiZ4%b3_4?Okk0^bVA?SP)$puGS-;&3g*pG7?H(;Vn|3HXzU*Y}P16Yyvw z=dA%B@7K`*k-Y-+{aX*7RfuPO*pGD90dImHT|bDgfM!l7?jWBRe7WFr zqdeGlJHbaBu7$V{uQgT+8Y>aXJJ-@Q^G$D70# z38XP3akg=UXa^OXDv(B-qz43!5_q}5O9l29c!9v)0`(pWY_IU|<`3bga(`)dO8k9+ z?+E;Nfv*VMDR76tp9|b1aJ|5_0@1r8L5CQZ?M3uK3se0U5M1W=HAvO#CNLKqYn5Qug~(a}~a$aaN%1p)^NL_4GC zc>?_c*>;d0?TdnFR}|!PMLOFILbNLiGJnJY6wF1YaSiSaz^l+*#QVqIQvncpQ(Lq% z{uKBbe*zHWJNI#chXEOXK;qkkz8{eC`v4ig2axiwOZ;wuyCi;x#BUe+HbBa^O8iEN z-yrep1g-(3{#Ag~-z4;vfRtY$@r{6tUjoSdHwdf;q54o979NW2v7Kl3#~;8;M6+1(r`V2tF>2V_0rcmR2Ev(Jwz;m(zK zpTuVf-79pr&^d8H{x8t}QQs**>SO!PbantT{cQqUh0gYy{A|C;&v6aYZv>>iB@*8t z@ocZDZxkT)6$&g6I@@FFV|z?}8GzKs7pux2epLPdRsH~}ZyO->an6o7`=a=FH{*x= zs{qMg56JiuKvkZCj{wBKyAVI*F90OJ50LzaabL)P5Rmv@K=SVaB>(Gxcz%2vc4g7dNCTFL&3wWD>?*zWxz;^)OXyDs{Hyiji;42Kg6?lVzZvh@M z@QuKy8~6s`V-0*A@DT>S26(=KHv{iu;HU@dOE2Q(SS_`<&MM$R0}lZ&H1G=Gc?Mnv zJlDWy0(Tqubl?Z1{HPz}nDuw_<%jh6U1J~MRR*35{6+&ueP3T};CRoh|B8X*eY4(g z;OIZB&oppU#`T{Mh@|%g^7Cf{KLvcRfu8{WD+50c{0Rd;4E%=%eh~Ny1803)VBl@Q zXBqf@;FAn|AMjBI&iZ(%fwMmLGH}*Mmw~JLm>0ReU5J0rz;^;midN+xyJt& z33F}#LQHrvKU|BPBw?=a-yvbH>;F{3Trd2cgt=ze&1=hYo&O36bA5ldgt@-=eF<}o z?^OwNz5l3$YZ309X6xa)TTsGWdrL#vWup<^hH)k4@l=>=ZJ3Kt;gz7jfcrX&o_ zpy!MJ-Jo;a$8>26fw?vnJ`Q>b^gyk0cz=b%dd`;-i@>0H^d7jRZ!_rAjPO7sOgVbG zJRu}$oL5`F z=oYnIdJOyDa~7~p%Cz7RwK4fMbE1ybHRHA2e_W2lBrRbHM4K(f6=kAmGfmt2#WX~X zNj)h;yp~wg$hgeFqB1d0B3&^xEn&9e>SH`tOqCOcm;~dP)SXOx9CC8AU@`lR++)*x zIo7f{%CPOr8ykOliHLdK|7G)JRm?HB^X$!l<*aD?d7d&Uc{^$B^EF}g)Ty_iK8>9e zoXUO3BDY^NMJk(C8PAjWu<3Zd=&Z%Z$EOwD0>~96PA(y9bczXC;uDRvo$fT*B+StX zCt*sMbZjHjRq9Fj<1&zhFG(I^8?df((X|9#-s47(nQ*nLX{tF*B9kERNjMYaK9SjD z=ea*SiRj#SA`_kan8!K!W0iz4ab@qCIV!uc>=yR#D=hR!Tvz9}4<9~sn9W_5j%MQO zhS`<1Ji^K_TP~@qSvVKx?8uIOs+*VaJonepKezmL|F44K1g;MZU=AXVkSz4*t}1sn z`}%RLMR{~@)g%puD4Z#2B%teRUq8w#hcSTZUqLiEfqZnnuU|49I$J(y z>S|xVWI7<)s58>lzJAGcsPYvhde5X}`}$GGA__?6^D%iQ@?kYvN3wnW9t0=HR*TYg z&ciTXN0NR0evEOBA7cMPqei$9$cKzY;&de2*Y8E>p!=EVurc);rz6?Ee$?@=;MO_< zo#Z3gzJ3caPQDn)-b`aLxUtaTwu5o`z*i_LCU#%HHPAtuj^(1m7FWM)CrL`Pe~dTQ%nEnzaT z^>hhza9*rJ=L3`KQl8;r)%(~b+k(oP&(0HyZzaW$K^8Q&1O z6@U&E`uU^{~La~eT*MR z+FSTN4+_$Mhd>6;H?T4(_X)g8P%)>^0h)FiKX;RtDR#RZKaO<1wNihI3szgl=saaL zf&4h5dgWwsl5Q+KwvNfV7La+x)-hRA5ayM0>zJDm=E9t89WzU#_SP}q0;;6!tz&4R zp-_A4n0tWEfS0Xfya-kiwYQE*Z&ld+ze@QYwc@%dwR5(XT5vMKWy`fE{c3eZ5{SsuCE+YKd*L3&Fp#DieT{2g2Lff4w+iBpl)`h z0DCil&UE=h<<%8cm67EG?Ag%yJ{9;7JN!+z>V)G*wwA!XO>p1&HG5}Su;Q{{eB7>5 zz_;#dJ5BY;eR*{xvuE)I_W$-i0^GF$XG@^tT~iU+&mev;fw)~eVmBA~-`h%{)51qH zjg}kTKIPen>+u)EremLvyc~~kJi#y>`}2BCL)m8dt{lf!92=Q#3-I`=urU0&@IixL ze;0+PT=fZ=H#+9Y{O-`2QMEed)P*%8KpzXQx`%-5x6@q@0m^7x>$UaR{ao^ydVe_o z$+|(Hv7eYsmNKz<;`b|BzYp>BEO$Ci0hr%&X&U>|oNuCRtYhDrG~5c67N)nteEgP+ z-)Qk$t(+e&TcW?o;&)&CW{cl;@!U&w)+Mgz_1#yjRp(sddoX^>br8D#3!XjAe(T|<)Cn-o$nQP2LVq{!|!x!4z%FO%3` zCyD)d5!5%EeRAOvTU(361kojC!0NLP$rpQ=)WuGxkT_N#iQQrmL`dC3-p@qeII)Ap zx`MHmvPI{Z??6Vx7M(bpvPB<;0Mxq&3uHYbzQ)dp8^bPzGilP@0s$0W0tgxR1VGxJ z@!26?As}Rw%_N4a;q&QuRpjprh`N};yrOO@TS-heC_cusjbJ>}!=tQn44Q)EgZ}kZ ztjxF$j`0hC&ouCS;2QqLo{f6hiSdKs!y3Dm`*L%w34 z&t$LibhRFIWx=olV?79)$)_z1~D5A!hP&So8mZz;;78Rd6H_UzM_SO=m!-BM=UaCoE}HQLoWP$xRH3e0tO zz7CX32aAvnO$T≪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
    e|=N+W(t^mS4-BeC^PS_RD7dkgmF;@4EW;Be#C` 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 VDQ{ZPSeo*VEjC<8D?IlQ{s%n#jcot` literal 0 HcmV?d00001 From 35b770201d8ac78a5240ff0e92428192f02d7940 Mon Sep 17 00:00:00 2001 From: Tadeu Zagallo Date: Sat, 6 Jun 2015 13:37:51 -0700 Subject: [PATCH 05/32] [ReactNative] Merge IntegrationTest into UIExplorer tests --- .../UIExplorer.xcodeproj/project.pbxproj | 4 + .../IntegrationTestsTests.m | 2 +- .../testSimpleSnapshot_1@2x.png | Bin .../js}/AppEventsTest.js | 0 .../js}/AsyncStorageTest.js | 0 .../js}/IntegrationTestHarnessTest.js | 0 .../js}/IntegrationTestsApp.js | 0 .../js}/LayoutEventsTest.js | 0 .../js}/SimpleSnapshotTest.js | 0 .../js}/TimersTest.js | 0 IntegrationTests/AppDelegate.h | 17 - IntegrationTests/AppDelegate.m | 51 -- IntegrationTests/Base.lproj/LaunchScreen.xib | 42 -- .../AppIcon.appiconset/Contents.json | 44 -- .../AppIcon.appiconset/uie_icon@2x-1.png | Bin 31759 -> 0 bytes .../AppIcon.appiconset/uie_icon@2x-2.png | Bin 31759 -> 0 bytes .../AppIcon.appiconset/uie_icon@2x-3.png | Bin 31759 -> 0 bytes .../AppIcon.appiconset/uie_icon@2x-4.png | Bin 31759 -> 0 bytes .../AppIcon.appiconset/uie_icon@2x-5.png | Bin 31759 -> 0 bytes .../AppIcon.appiconset/uie_icon@2x.png | Bin 31759 -> 0 bytes IntegrationTests/Info.plist | 42 -- .../project.pbxproj | 664 ------------------ .../IntegrationTestsTests/Info.plist | 24 - IntegrationTests/main.m | 17 - React/Modules/RCTUIManager.m | 7 +- 25 files changed, 11 insertions(+), 903 deletions(-) rename {IntegrationTests/IntegrationTestsTests => Examples/UIExplorer/UIExplorerIntegrationTests}/IntegrationTestsTests.m (95%) rename {IntegrationTests/IntegrationTestsTests/ReferenceImages/IntegrationTests-IntegrationTestsApp => Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-UIExplorerIntegrationTests-js-IntegrationTestsApp}/testSimpleSnapshot_1@2x.png (100%) rename {IntegrationTests => Examples/UIExplorer/UIExplorerIntegrationTests/js}/AppEventsTest.js (100%) rename {IntegrationTests => Examples/UIExplorer/UIExplorerIntegrationTests/js}/AsyncStorageTest.js (100%) rename {IntegrationTests => Examples/UIExplorer/UIExplorerIntegrationTests/js}/IntegrationTestHarnessTest.js (100%) rename {IntegrationTests => Examples/UIExplorer/UIExplorerIntegrationTests/js}/IntegrationTestsApp.js (100%) rename {IntegrationTests => Examples/UIExplorer/UIExplorerIntegrationTests/js}/LayoutEventsTest.js (100%) rename {IntegrationTests => Examples/UIExplorer/UIExplorerIntegrationTests/js}/SimpleSnapshotTest.js (100%) rename {IntegrationTests => Examples/UIExplorer/UIExplorerIntegrationTests/js}/TimersTest.js (100%) delete mode 100644 IntegrationTests/AppDelegate.h delete mode 100644 IntegrationTests/AppDelegate.m delete mode 100644 IntegrationTests/Base.lproj/LaunchScreen.xib delete mode 100644 IntegrationTests/Images.xcassets/AppIcon.appiconset/Contents.json delete mode 100644 IntegrationTests/Images.xcassets/AppIcon.appiconset/uie_icon@2x-1.png delete mode 100644 IntegrationTests/Images.xcassets/AppIcon.appiconset/uie_icon@2x-2.png delete mode 100644 IntegrationTests/Images.xcassets/AppIcon.appiconset/uie_icon@2x-3.png delete mode 100644 IntegrationTests/Images.xcassets/AppIcon.appiconset/uie_icon@2x-4.png delete mode 100644 IntegrationTests/Images.xcassets/AppIcon.appiconset/uie_icon@2x-5.png delete mode 100644 IntegrationTests/Images.xcassets/AppIcon.appiconset/uie_icon@2x.png delete mode 100644 IntegrationTests/Info.plist delete mode 100644 IntegrationTests/IntegrationTests.xcodeproj/project.pbxproj delete mode 100644 IntegrationTests/IntegrationTestsTests/Info.plist delete mode 100644 IntegrationTests/main.m diff --git a/Examples/UIExplorer/UIExplorer.xcodeproj/project.pbxproj b/Examples/UIExplorer/UIExplorer.xcodeproj/project.pbxproj index 30a39319a..101bae6f9 100644 --- a/Examples/UIExplorer/UIExplorer.xcodeproj/project.pbxproj +++ b/Examples/UIExplorer/UIExplorer.xcodeproj/project.pbxproj @@ -17,6 +17,7 @@ 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB11A68108700A75B9A /* LaunchScreen.xib */; }; 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; + 141FC1211B222EBB004D5FFB /* IntegrationTestsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 141FC1201B222EBB004D5FFB /* IntegrationTestsTests.m */; }; 143BC5A11B21E45C00462512 /* UIExplorerIntegrationTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 143BC5A01B21E45C00462512 /* UIExplorerIntegrationTests.m */; }; 144D21241B2204C5006DB32B /* RCTClippingTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 144D21231B2204C5006DB32B /* RCTClippingTests.m */; }; 147CED4C1AB3532B00DA3E4C /* libRCTActionSheet.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 147CED4B1AB34F8C00DA3E4C /* libRCTActionSheet.a */; }; @@ -158,6 +159,7 @@ 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = UIExplorer/Info.plist; sourceTree = ""; }; 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = UIExplorer/main.m; sourceTree = ""; }; 13CC9D481AEED2B90020D1C2 /* RCTSettings.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTSettings.xcodeproj; path = ../../Libraries/Settings/RCTSettings.xcodeproj; sourceTree = ""; }; + 141FC1201B222EBB004D5FFB /* IntegrationTestsTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IntegrationTestsTests.m; sourceTree = ""; }; 143BC57E1B21E18100462512 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 143BC5811B21E18100462512 /* testLayoutExampleSnapshot_1@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "testLayoutExampleSnapshot_1@2x.png"; sourceTree = ""; }; 143BC5821B21E18100462512 /* testSliderExampleSnapshot_1@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "testSliderExampleSnapshot_1@2x.png"; sourceTree = ""; }; @@ -368,6 +370,7 @@ 143BC5961B21E3E100462512 /* UIExplorerIntegrationTests */ = { isa = PBXGroup; children = ( + 141FC1201B222EBB004D5FFB /* IntegrationTestsTests.m */, 143BC5A01B21E45C00462512 /* UIExplorerIntegrationTests.m */, 143BC5971B21E3E100462512 /* Supporting Files */, ); @@ -763,6 +766,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 141FC1211B222EBB004D5FFB /* IntegrationTestsTests.m in Sources */, 143BC5A11B21E45C00462512 /* UIExplorerIntegrationTests.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/IntegrationTests/IntegrationTestsTests/IntegrationTestsTests.m b/Examples/UIExplorer/UIExplorerIntegrationTests/IntegrationTestsTests.m similarity index 95% rename from IntegrationTests/IntegrationTestsTests/IntegrationTestsTests.m rename to Examples/UIExplorer/UIExplorerIntegrationTests/IntegrationTestsTests.m index 0aca49d3c..3b701109e 100644 --- a/IntegrationTests/IntegrationTestsTests/IntegrationTestsTests.m +++ b/Examples/UIExplorer/UIExplorerIntegrationTests/IntegrationTestsTests.m @@ -30,7 +30,7 @@ #endif NSString *version = [[UIDevice currentDevice] systemVersion]; RCTAssert([version integerValue] == 8, @"Tests should be run on iOS 8.x, found %@", version); - _runner = RCTInitRunnerForApp(@"IntegrationTests/IntegrationTestsApp"); + _runner = RCTInitRunnerForApp(@"Examples/UIExplorer/UIExplorerIntegrationTests/js/IntegrationTestsApp"); // If tests have changes, set recordMode = YES below and run the affected // tests on an iPhone5, iOS 8.1 simulator. diff --git a/IntegrationTests/IntegrationTestsTests/ReferenceImages/IntegrationTests-IntegrationTestsApp/testSimpleSnapshot_1@2x.png b/Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-UIExplorerIntegrationTests-js-IntegrationTestsApp/testSimpleSnapshot_1@2x.png similarity index 100% rename from IntegrationTests/IntegrationTestsTests/ReferenceImages/IntegrationTests-IntegrationTestsApp/testSimpleSnapshot_1@2x.png rename to Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-UIExplorerIntegrationTests-js-IntegrationTestsApp/testSimpleSnapshot_1@2x.png diff --git a/IntegrationTests/AppEventsTest.js b/Examples/UIExplorer/UIExplorerIntegrationTests/js/AppEventsTest.js similarity index 100% rename from IntegrationTests/AppEventsTest.js rename to Examples/UIExplorer/UIExplorerIntegrationTests/js/AppEventsTest.js diff --git a/IntegrationTests/AsyncStorageTest.js b/Examples/UIExplorer/UIExplorerIntegrationTests/js/AsyncStorageTest.js similarity index 100% rename from IntegrationTests/AsyncStorageTest.js rename to Examples/UIExplorer/UIExplorerIntegrationTests/js/AsyncStorageTest.js diff --git a/IntegrationTests/IntegrationTestHarnessTest.js b/Examples/UIExplorer/UIExplorerIntegrationTests/js/IntegrationTestHarnessTest.js similarity index 100% rename from IntegrationTests/IntegrationTestHarnessTest.js rename to Examples/UIExplorer/UIExplorerIntegrationTests/js/IntegrationTestHarnessTest.js diff --git a/IntegrationTests/IntegrationTestsApp.js b/Examples/UIExplorer/UIExplorerIntegrationTests/js/IntegrationTestsApp.js similarity index 100% rename from IntegrationTests/IntegrationTestsApp.js rename to Examples/UIExplorer/UIExplorerIntegrationTests/js/IntegrationTestsApp.js diff --git a/IntegrationTests/LayoutEventsTest.js b/Examples/UIExplorer/UIExplorerIntegrationTests/js/LayoutEventsTest.js similarity index 100% rename from IntegrationTests/LayoutEventsTest.js rename to Examples/UIExplorer/UIExplorerIntegrationTests/js/LayoutEventsTest.js diff --git a/IntegrationTests/SimpleSnapshotTest.js b/Examples/UIExplorer/UIExplorerIntegrationTests/js/SimpleSnapshotTest.js similarity index 100% rename from IntegrationTests/SimpleSnapshotTest.js rename to Examples/UIExplorer/UIExplorerIntegrationTests/js/SimpleSnapshotTest.js diff --git a/IntegrationTests/TimersTest.js b/Examples/UIExplorer/UIExplorerIntegrationTests/js/TimersTest.js similarity index 100% rename from IntegrationTests/TimersTest.js rename to Examples/UIExplorer/UIExplorerIntegrationTests/js/TimersTest.js diff --git a/IntegrationTests/AppDelegate.h b/IntegrationTests/AppDelegate.h deleted file mode 100644 index 98876c3b7..000000000 --- a/IntegrationTests/AppDelegate.h +++ /dev/null @@ -1,17 +0,0 @@ -/** - * 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. - */ - -#import - -@interface AppDelegate : UIResponder - -@property (nonatomic, strong) UIWindow *window; - -@end - diff --git a/IntegrationTests/AppDelegate.m b/IntegrationTests/AppDelegate.m deleted file mode 100644 index e5466b235..000000000 --- a/IntegrationTests/AppDelegate.m +++ /dev/null @@ -1,51 +0,0 @@ -/** - * 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. - */ - -#import "AppDelegate.h" - -#import "RCTRootView.h" - -@implementation AppDelegate - -- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions -{ - NSURL *jsCodeLocation; - - // Loading JavaScript code - uncomment the one you want. - - // OPTION 1 - // Load from development server. Start the server from the repository root: - // - // $ npm start - // - // To run on device, change `localhost` to the IP address of your computer, and make sure your computer and - // iOS device are on the same Wi-Fi network. - jsCodeLocation = [NSURL URLWithString:@"http://localhost:8081/IntegrationTests/IntegrationTestsApp.includeRequire.runModule.bundle?dev=true"]; - - // OPTION 2 - // Load from pre-bundled file on disk. To re-generate the static bundle, run - // - // $ curl http://localhost:8081/IntegrationTests/IntegrationTestsApp.includeRequire.runModule.bundle -o main.jsbundle - // - // and uncomment the next following line - // jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"]; - - RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation - moduleName:@"IntegrationTestsApp" - launchOptions:launchOptions]; - - self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; - UIViewController *rootViewController = [[UIViewController alloc] init]; - rootViewController.view = rootView; - self.window.rootViewController = rootViewController; - [self.window makeKeyAndVisible]; - return YES; -} - -@end diff --git a/IntegrationTests/Base.lproj/LaunchScreen.xib b/IntegrationTests/Base.lproj/LaunchScreen.xib deleted file mode 100644 index 52cc0828d..000000000 --- a/IntegrationTests/Base.lproj/LaunchScreen.xib +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/IntegrationTests/Images.xcassets/AppIcon.appiconset/Contents.json b/IntegrationTests/Images.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index 413d60e76..000000000 --- a/IntegrationTests/Images.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "images" : [ - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "uie_icon@2x.png", - "scale" : "2x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "uie_icon@2x-1.png", - "scale" : "3x" - }, - { - "size" : "40x40", - "idiom" : "iphone", - "filename" : "uie_icon@2x-2.png", - "scale" : "2x" - }, - { - "size" : "40x40", - "idiom" : "iphone", - "filename" : "uie_icon@2x-3.png", - "scale" : "3x" - }, - { - "size" : "60x60", - "idiom" : "iphone", - "filename" : "uie_icon@2x-5.png", - "scale" : "2x" - }, - { - "size" : "60x60", - "idiom" : "iphone", - "filename" : "uie_icon@2x-4.png", - "scale" : "3x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/IntegrationTests/Images.xcassets/AppIcon.appiconset/uie_icon@2x-1.png b/IntegrationTests/Images.xcassets/AppIcon.appiconset/uie_icon@2x-1.png deleted file mode 100644 index 08a42699daa9ca2149e641e7236b63bf74bdb5f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31759 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 diff --git a/IntegrationTests/Images.xcassets/AppIcon.appiconset/uie_icon@2x-2.png b/IntegrationTests/Images.xcassets/AppIcon.appiconset/uie_icon@2x-2.png deleted file mode 100644 index 08a42699daa9ca2149e641e7236b63bf74bdb5f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31759 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 diff --git a/IntegrationTests/Images.xcassets/AppIcon.appiconset/uie_icon@2x-3.png b/IntegrationTests/Images.xcassets/AppIcon.appiconset/uie_icon@2x-3.png deleted file mode 100644 index 08a42699daa9ca2149e641e7236b63bf74bdb5f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31759 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 diff --git a/IntegrationTests/Images.xcassets/AppIcon.appiconset/uie_icon@2x-4.png b/IntegrationTests/Images.xcassets/AppIcon.appiconset/uie_icon@2x-4.png deleted file mode 100644 index 08a42699daa9ca2149e641e7236b63bf74bdb5f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31759 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 diff --git a/IntegrationTests/Images.xcassets/AppIcon.appiconset/uie_icon@2x-5.png b/IntegrationTests/Images.xcassets/AppIcon.appiconset/uie_icon@2x-5.png deleted file mode 100644 index 08a42699daa9ca2149e641e7236b63bf74bdb5f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31759 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 diff --git a/IntegrationTests/Images.xcassets/AppIcon.appiconset/uie_icon@2x.png b/IntegrationTests/Images.xcassets/AppIcon.appiconset/uie_icon@2x.png deleted file mode 100644 index 08a42699daa9ca2149e641e7236b63bf74bdb5f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31759 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 diff --git a/IntegrationTests/Info.plist b/IntegrationTests/Info.plist deleted file mode 100644 index 245054621..000000000 --- a/IntegrationTests/Info.plist +++ /dev/null @@ -1,42 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - com.facebook.$(PRODUCT_NAME:rfc1034identifier) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - APPL - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1 - LSRequiresIPhoneOS - - UILaunchStoryboardName - LaunchScreen - UIRequiredDeviceCapabilities - - armv7 - - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - NSLocationWhenInUseUsageDescription - You need to add NSLocationWhenInUseUsageDescription key in Info.plist to enable geolocation, otherwise it is going to *fail silently*! - UIViewControllerBasedStatusBarAppearance - - - diff --git a/IntegrationTests/IntegrationTests.xcodeproj/project.pbxproj b/IntegrationTests/IntegrationTests.xcodeproj/project.pbxproj deleted file mode 100644 index 78c8b97e1..000000000 --- a/IntegrationTests/IntegrationTests.xcodeproj/project.pbxproj +++ /dev/null @@ -1,664 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 004D28A31AAF61C70097A701 /* IntegrationTestsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 004D28A21AAF61C70097A701 /* IntegrationTestsTests.m */; }; - 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; }; - 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB11A68108700A75B9A /* LaunchScreen.xib */; }; - 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; - 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; - 1405E9C21AC3E65600F5BC37 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1405E9C11AC3E63C00F5BC37 /* libReact.a */; }; - 580C37611AB0F61E0015E709 /* libRCTAdSupport.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 580C374B1AB0F54A0015E709 /* libRCTAdSupport.a */; }; - 580C37621AB0F6260015E709 /* libRCTGeolocation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 580C37501AB0F55C0015E709 /* libRCTGeolocation.a */; }; - 580C37631AB0F62C0015E709 /* libRCTImage.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 580C37551AB0F56E0015E709 /* libRCTImage.a */; }; - 580C37641AB0F6350015E709 /* libRCTNetwork.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 580C375A1AB0F5970015E709 /* libRCTNetwork.a */; }; - 580C37651AB0F63E0015E709 /* libRCTText.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 580C375F1AB0F5D10015E709 /* libRCTText.a */; }; - 58B80D5F1ABA4147004008FB /* libRCTTest.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 580C378F1AB104B00015E709 /* libRCTTest.a */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 1405E9C01AC3E63C00F5BC37 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 1405E9BC1AC3E63C00F5BC37 /* React.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 83CBBA2E1A601D0E00E9B192; - remoteInfo = React; - }; - 58005BCB1ABA44F10062E044 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 13B07F861A680F5B00A75B9A; - remoteInfo = IntegrationTests; - }; - 580C374A1AB0F54A0015E709 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 134454551AAFCAAE003F0779 /* RCTAdSupport.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 832C81801AAF6DEF007FA2F7; - remoteInfo = RCTAdSupport; - }; - 580C374F1AB0F55C0015E709 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 134A8A201AACED6A00945AAE /* RCTGeolocation.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 134814201AA4EA6300B7C361; - remoteInfo = RCTGeolocation; - }; - 580C37541AB0F56E0015E709 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 13417FE31AA91428003F314A /* RCTImage.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 58B5115D1A9E6B3D00147676; - remoteInfo = RCTImage; - }; - 580C37591AB0F5970015E709 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 134180261AA91779003F314A /* RCTNetwork.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 58B511DB1A9E6C8500147676; - remoteInfo = RCTNetwork; - }; - 580C375E1AB0F5D10015E709 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 13417FEA1AA914B8003F314A /* RCTText.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 58B5119B1A9E6C1200147676; - remoteInfo = RCTText; - }; - 580C378E1AB104B00015E709 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 580C37891AB104AF0015E709 /* RCTTest.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 580C376F1AB104AF0015E709; - remoteInfo = RCTTest; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - 004D289E1AAF61C70097A701 /* IntegrationTestsTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = IntegrationTestsTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 004D28A11AAF61C70097A701 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 004D28A21AAF61C70097A701 /* IntegrationTestsTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = IntegrationTestsTests.m; sourceTree = ""; }; - 13417FE31AA91428003F314A /* RCTImage.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTImage.xcodeproj; path = ../Libraries/Image/RCTImage.xcodeproj; sourceTree = ""; }; - 13417FEA1AA914B8003F314A /* RCTText.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTText.xcodeproj; path = ../Libraries/Text/RCTText.xcodeproj; sourceTree = ""; }; - 134180261AA91779003F314A /* RCTNetwork.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTNetwork.xcodeproj; path = ../Libraries/Network/RCTNetwork.xcodeproj; sourceTree = ""; }; - 134454551AAFCAAE003F0779 /* RCTAdSupport.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTAdSupport.xcodeproj; path = ../Libraries/AdSupport/RCTAdSupport.xcodeproj; sourceTree = ""; }; - 134A8A201AACED6A00945AAE /* RCTGeolocation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTGeolocation.xcodeproj; path = ../Libraries/GeoLocation/RCTGeolocation.xcodeproj; sourceTree = ""; }; - 13B07F961A680F5B00A75B9A /* IntegrationTests.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = IntegrationTests.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; - 13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; - 13B07FB21A68108700A75B9A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; - 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; - 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; - 1405E9BC1AC3E63C00F5BC37 /* React.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = React.xcodeproj; path = ../React/React.xcodeproj; sourceTree = ""; }; - 580C37891AB104AF0015E709 /* RCTTest.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTTest.xcodeproj; path = ../Libraries/RCTTest/RCTTest.xcodeproj; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 004D289B1AAF61C70097A701 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 13B07F8C1A680F5B00A75B9A /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 1405E9C21AC3E65600F5BC37 /* libReact.a in Frameworks */, - 580C37611AB0F61E0015E709 /* libRCTAdSupport.a in Frameworks */, - 580C37621AB0F6260015E709 /* libRCTGeolocation.a in Frameworks */, - 580C37631AB0F62C0015E709 /* libRCTImage.a in Frameworks */, - 580C37641AB0F6350015E709 /* libRCTNetwork.a in Frameworks */, - 58B80D5F1ABA4147004008FB /* libRCTTest.a in Frameworks */, - 580C37651AB0F63E0015E709 /* libRCTText.a in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 004D289F1AAF61C70097A701 /* IntegrationTestsTests */ = { - isa = PBXGroup; - children = ( - 004D28A21AAF61C70097A701 /* IntegrationTestsTests.m */, - 004D28A01AAF61C70097A701 /* Supporting Files */, - ); - path = IntegrationTestsTests; - sourceTree = ""; - }; - 004D28A01AAF61C70097A701 /* Supporting Files */ = { - isa = PBXGroup; - children = ( - 004D28A11AAF61C70097A701 /* Info.plist */, - ); - name = "Supporting Files"; - sourceTree = ""; - }; - 1316A21D1AA397F400C0188E /* Libraries */ = { - isa = PBXGroup; - children = ( - 1405E9BC1AC3E63C00F5BC37 /* React.xcodeproj */, - 134454551AAFCAAE003F0779 /* RCTAdSupport.xcodeproj */, - 134A8A201AACED6A00945AAE /* RCTGeolocation.xcodeproj */, - 13417FE31AA91428003F314A /* RCTImage.xcodeproj */, - 134180261AA91779003F314A /* RCTNetwork.xcodeproj */, - 13417FEA1AA914B8003F314A /* RCTText.xcodeproj */, - 580C37891AB104AF0015E709 /* RCTTest.xcodeproj */, - ); - name = Libraries; - sourceTree = ""; - }; - 13B07FAE1A68108700A75B9A /* IntegrationTests */ = { - isa = PBXGroup; - children = ( - 13B07FAF1A68108700A75B9A /* AppDelegate.h */, - 13B07FB01A68108700A75B9A /* AppDelegate.m */, - 13B07FB51A68108700A75B9A /* Images.xcassets */, - 13B07FB61A68108700A75B9A /* Info.plist */, - 13B07FB11A68108700A75B9A /* LaunchScreen.xib */, - 13B07FB71A68108700A75B9A /* main.m */, - ); - name = IntegrationTests; - sourceTree = ""; - }; - 1405E9BD1AC3E63C00F5BC37 /* Products */ = { - isa = PBXGroup; - children = ( - 1405E9C11AC3E63C00F5BC37 /* libReact.a */, - ); - name = Products; - sourceTree = ""; - }; - 580C37471AB0F54A0015E709 /* Products */ = { - isa = PBXGroup; - children = ( - 580C374B1AB0F54A0015E709 /* libRCTAdSupport.a */, - ); - name = Products; - sourceTree = ""; - }; - 580C374C1AB0F55C0015E709 /* Products */ = { - isa = PBXGroup; - children = ( - 580C37501AB0F55C0015E709 /* libRCTGeolocation.a */, - ); - name = Products; - sourceTree = ""; - }; - 580C37511AB0F56E0015E709 /* Products */ = { - isa = PBXGroup; - children = ( - 580C37551AB0F56E0015E709 /* libRCTImage.a */, - ); - name = Products; - sourceTree = ""; - }; - 580C37561AB0F5970015E709 /* Products */ = { - isa = PBXGroup; - children = ( - 580C375A1AB0F5970015E709 /* libRCTNetwork.a */, - ); - name = Products; - sourceTree = ""; - }; - 580C375B1AB0F5D10015E709 /* Products */ = { - isa = PBXGroup; - children = ( - 580C375F1AB0F5D10015E709 /* libRCTText.a */, - ); - name = Products; - sourceTree = ""; - }; - 580C378A1AB104AF0015E709 /* Products */ = { - isa = PBXGroup; - children = ( - 580C378F1AB104B00015E709 /* libRCTTest.a */, - ); - name = Products; - sourceTree = ""; - }; - 83CBB9F61A601CBA00E9B192 = { - isa = PBXGroup; - children = ( - 13B07FAE1A68108700A75B9A /* IntegrationTests */, - 1316A21D1AA397F400C0188E /* Libraries */, - 004D289F1AAF61C70097A701 /* IntegrationTestsTests */, - 83CBBA001A601CBA00E9B192 /* Products */, - ); - indentWidth = 2; - sourceTree = ""; - tabWidth = 2; - }; - 83CBBA001A601CBA00E9B192 /* Products */ = { - isa = PBXGroup; - children = ( - 13B07F961A680F5B00A75B9A /* IntegrationTests.app */, - 004D289E1AAF61C70097A701 /* IntegrationTestsTests.xctest */, - ); - name = Products; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 004D289D1AAF61C70097A701 /* IntegrationTestsTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 004D28AD1AAF61C70097A701 /* Build configuration list for PBXNativeTarget "IntegrationTestsTests" */; - buildPhases = ( - 004D289A1AAF61C70097A701 /* Sources */, - 004D289B1AAF61C70097A701 /* Frameworks */, - 004D289C1AAF61C70097A701 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - 58005BCC1ABA44F10062E044 /* PBXTargetDependency */, - ); - name = IntegrationTestsTests; - productName = IntegrationTestsTests; - productReference = 004D289E1AAF61C70097A701 /* IntegrationTestsTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; - 13B07F861A680F5B00A75B9A /* IntegrationTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "IntegrationTests" */; - buildPhases = ( - 13B07F871A680F5B00A75B9A /* Sources */, - 13B07F8C1A680F5B00A75B9A /* Frameworks */, - 13B07F8E1A680F5B00A75B9A /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = IntegrationTests; - productName = "Hello World"; - productReference = 13B07F961A680F5B00A75B9A /* IntegrationTests.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 83CBB9F71A601CBA00E9B192 /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 0610; - ORGANIZATIONNAME = Facebook; - TargetAttributes = { - 004D289D1AAF61C70097A701 = { - CreatedOnToolsVersion = 6.1.1; - TestTargetID = 13B07F861A680F5B00A75B9A; - }; - }; - }; - buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "IntegrationTests" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 83CBB9F61A601CBA00E9B192; - productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */; - projectDirPath = ""; - projectReferences = ( - { - ProductGroup = 580C37471AB0F54A0015E709 /* Products */; - ProjectRef = 134454551AAFCAAE003F0779 /* RCTAdSupport.xcodeproj */; - }, - { - ProductGroup = 580C374C1AB0F55C0015E709 /* Products */; - ProjectRef = 134A8A201AACED6A00945AAE /* RCTGeolocation.xcodeproj */; - }, - { - ProductGroup = 580C37511AB0F56E0015E709 /* Products */; - ProjectRef = 13417FE31AA91428003F314A /* RCTImage.xcodeproj */; - }, - { - ProductGroup = 580C37561AB0F5970015E709 /* Products */; - ProjectRef = 134180261AA91779003F314A /* RCTNetwork.xcodeproj */; - }, - { - ProductGroup = 580C378A1AB104AF0015E709 /* Products */; - ProjectRef = 580C37891AB104AF0015E709 /* RCTTest.xcodeproj */; - }, - { - ProductGroup = 580C375B1AB0F5D10015E709 /* Products */; - ProjectRef = 13417FEA1AA914B8003F314A /* RCTText.xcodeproj */; - }, - { - ProductGroup = 1405E9BD1AC3E63C00F5BC37 /* Products */; - ProjectRef = 1405E9BC1AC3E63C00F5BC37 /* React.xcodeproj */; - }, - ); - projectRoot = ""; - targets = ( - 13B07F861A680F5B00A75B9A /* IntegrationTests */, - 004D289D1AAF61C70097A701 /* IntegrationTestsTests */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXReferenceProxy section */ - 1405E9C11AC3E63C00F5BC37 /* libReact.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libReact.a; - remoteRef = 1405E9C01AC3E63C00F5BC37 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 580C374B1AB0F54A0015E709 /* libRCTAdSupport.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libRCTAdSupport.a; - remoteRef = 580C374A1AB0F54A0015E709 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 580C37501AB0F55C0015E709 /* libRCTGeolocation.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libRCTGeolocation.a; - remoteRef = 580C374F1AB0F55C0015E709 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 580C37551AB0F56E0015E709 /* libRCTImage.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libRCTImage.a; - remoteRef = 580C37541AB0F56E0015E709 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 580C375A1AB0F5970015E709 /* libRCTNetwork.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libRCTNetwork.a; - remoteRef = 580C37591AB0F5970015E709 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 580C375F1AB0F5D10015E709 /* libRCTText.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libRCTText.a; - remoteRef = 580C375E1AB0F5D10015E709 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 580C378F1AB104B00015E709 /* libRCTTest.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libRCTTest.a; - remoteRef = 580C378E1AB104B00015E709 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; -/* End PBXReferenceProxy section */ - -/* Begin PBXResourcesBuildPhase section */ - 004D289C1AAF61C70097A701 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 13B07F8E1A680F5B00A75B9A /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, - 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 004D289A1AAF61C70097A701 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 004D28A31AAF61C70097A701 /* IntegrationTestsTests.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 13B07F871A680F5B00A75B9A /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */, - 13B07FC11A68108700A75B9A /* main.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 58005BCC1ABA44F10062E044 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 13B07F861A680F5B00A75B9A /* IntegrationTests */; - targetProxy = 58005BCB1ABA44F10062E044 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin PBXVariantGroup section */ - 13B07FB11A68108700A75B9A /* LaunchScreen.xib */ = { - isa = PBXVariantGroup; - children = ( - 13B07FB21A68108700A75B9A /* Base */, - ); - name = LaunchScreen.xib; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 004D28A61AAF61C70097A701 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(SDKROOT)/Developer/Library/Frameworks", - "$(DEVELOPER_FRAMEWORKS_DIR)", - ); - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "FB_REFERENCE_IMAGE_DIR=\"\\\"$(SOURCE_ROOT)/$(PROJECT_NAME)Tests/ReferenceImages\\\"\"", - "$(inherited)", - ); - HEADER_SEARCH_PATHS = ( - "$(inherited)", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../React/**", - ); - INFOPLIST_FILE = IntegrationTestsTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 8.1; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/IntegrationTests.app/IntegrationTests"; - }; - name = Debug; - }; - 004D28A71AAF61C70097A701 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(SDKROOT)/Developer/Library/Frameworks", - "$(DEVELOPER_FRAMEWORKS_DIR)", - ); - HEADER_SEARCH_PATHS = ( - "$(inherited)", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../React/**", - ); - INFOPLIST_FILE = IntegrationTestsTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 8.1; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/IntegrationTests.app/IntegrationTests"; - }; - name = Release; - }; - 13B07F941A680F5B00A75B9A /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../React/**", - ); - INFOPLIST_FILE = "$(SRCROOT)/Info.plist"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - LIBRARY_SEARCH_PATHS = "$(inherited)"; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = IntegrationTests; - }; - name = Debug; - }; - 13B07F951A680F5B00A75B9A /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../React/**", - ); - INFOPLIST_FILE = "$(SRCROOT)/Info.plist"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - LIBRARY_SEARCH_PATHS = "$(inherited)"; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = IntegrationTests; - }; - name = Release; - }; - 83CBBA201A601CBA00E9B192 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../React/**", - ); - IPHONEOS_DEPLOYMENT_TARGET = 7.0; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - }; - name = Debug; - }; - 83CBBA211A601CBA00E9B192 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = YES; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../React/**", - ); - IPHONEOS_DEPLOYMENT_TARGET = 7.0; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 004D28AD1AAF61C70097A701 /* Build configuration list for PBXNativeTarget "IntegrationTestsTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 004D28A61AAF61C70097A701 /* Debug */, - 004D28A71AAF61C70097A701 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "IntegrationTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 13B07F941A680F5B00A75B9A /* Debug */, - 13B07F951A680F5B00A75B9A /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "IntegrationTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 83CBBA201A601CBA00E9B192 /* Debug */, - 83CBBA211A601CBA00E9B192 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */; -} diff --git a/IntegrationTests/IntegrationTestsTests/Info.plist b/IntegrationTests/IntegrationTestsTests/Info.plist deleted file mode 100644 index 87e3a6175..000000000 --- a/IntegrationTests/IntegrationTestsTests/Info.plist +++ /dev/null @@ -1,24 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - com.facebook.$(PRODUCT_NAME:rfc1034identifier) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - BNDL - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1 - - diff --git a/IntegrationTests/main.m b/IntegrationTests/main.m deleted file mode 100644 index fe6bea2f8..000000000 --- a/IntegrationTests/main.m +++ /dev/null @@ -1,17 +0,0 @@ -/** - * 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. - */ - -#import -#import "AppDelegate.h" - -int main(int argc, char * argv[]) { - @autoreleasepool { - return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); - } -} diff --git a/React/Modules/RCTUIManager.m b/React/Modules/RCTUIManager.m index 570bdfef7..2367bbd81 100644 --- a/React/Modules/RCTUIManager.m +++ b/React/Modules/RCTUIManager.m @@ -379,8 +379,13 @@ static NSDictionary *RCTViewConfigForModule(Class managerClass, NSString *viewNa NSNumber *reactTag = rootView.reactTag; RCTAssert(RCTIsReactRootView(reactTag), @"Specified view %@ is not a root view", reactTag); + __weak RCTUIManager *weakSelf = self; dispatch_async(_shadowQueue, ^{ - RCTShadowView *rootShadowView = _shadowViewRegistry[reactTag]; + RCTUIManager *strongSelf = weakSelf; + if (!strongSelf.isValid) { + return; + } + RCTShadowView *rootShadowView = strongSelf->_shadowViewRegistry[reactTag]; RCTAssert(rootShadowView != nil, @"Could not locate root view with tag #%@", reactTag); rootShadowView.backgroundColor = color; [self _amendPendingUIBlocksWithStylePropagationUpdateForRootView:rootShadowView]; From 1c9e957d2267f3d088a8bef34bcf5a8d41fff914 Mon Sep 17 00:00:00 2001 From: Tadeu Zagallo Date: Sat, 6 Jun 2015 14:12:37 -0700 Subject: [PATCH 06/32] [ReactNative] Invalidate modules on their own queues Summary: @public Bridge modules were being invalidate on the main thread, what could lead to racing conditions, move the calls to invalidate on happen to the module's methodQueue Test Plan: Run the tests --- React/Base/RCTBridge.m | 4 +++- React/Modules/RCTUIManager.m | 9 +++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/React/Base/RCTBridge.m b/React/Base/RCTBridge.m index 98808fb3f..915d86466 100644 --- a/React/Base/RCTBridge.m +++ b/React/Base/RCTBridge.m @@ -1111,7 +1111,9 @@ RCT_INNER_BRIDGE_ONLY(_invokeAndProcessModule:(NSString *)module method:(NSStrin // Invalidate modules for (id target in _modulesByID.allObjects) { if ([target respondsToSelector:@selector(invalidate)]) { - [(id)target invalidate]; + [self dispatchBlock:^{ + [(id)target invalidate]; + } forModule:target]; } } diff --git a/React/Modules/RCTUIManager.m b/React/Modules/RCTUIManager.m index 2367bbd81..178281074 100644 --- a/React/Modules/RCTUIManager.m +++ b/React/Modules/RCTUIManager.m @@ -342,14 +342,19 @@ static NSDictionary *RCTViewConfigForModule(Class managerClass, NSString *viewNa CGRect frame = rootView.frame; // Register shadow view + __weak RCTUIManager *weakSelf = self; dispatch_async(_shadowQueue, ^{ + RCTUIManager *strongSelf = weakSelf; + if (!strongSelf.isValid) { + return; + } RCTShadowView *shadowView = [[RCTShadowView alloc] init]; shadowView.reactTag = reactTag; shadowView.frame = frame; shadowView.backgroundColor = rootView.backgroundColor; shadowView.viewName = NSStringFromClass([rootView class]); - _shadowViewRegistry[shadowView.reactTag] = shadowView; - [_rootViewTags addObject:reactTag]; + strongSelf->_shadowViewRegistry[shadowView.reactTag] = shadowView; + [strongSelf->_rootViewTags addObject:reactTag]; }); } From 8ee9bfe9440913d67c58fa68c3eca4d144f4ed0b Mon Sep 17 00:00:00 2001 From: Christopher Chedeau Date: Sat, 6 Jun 2015 16:44:58 -0700 Subject: [PATCH 07/32] [ReactNative] Fix XHR --- Libraries/Network/XMLHttpRequest.ios.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Libraries/Network/XMLHttpRequest.ios.js b/Libraries/Network/XMLHttpRequest.ios.js index 8563c8b7a..9344d43cc 100644 --- a/Libraries/Network/XMLHttpRequest.ios.js +++ b/Libraries/Network/XMLHttpRequest.ios.js @@ -64,7 +64,9 @@ class XMLHttpRequest extends XMLHttpRequestBase { _didCompleteResponse(requestId: number, error: string): void { if (requestId === this._requestId) { - this.responseText = error; + if (error) { + this.responseText = error; + } this._clearSubscriptions(); this._requestId = null; this.setReadyState(this.DONE); From c2fb21b322130433f868086cf7addaed43064313 Mon Sep 17 00:00:00 2001 From: Tadeu Zagallo Date: Sun, 7 Jun 2015 08:42:31 -0700 Subject: [PATCH 08/32] [ReactNative] Properly pause frame update observers when idle Summary: @public `RCTDispatchEvent` and `RCTTiming` weren't being paused when there wasn't any work left to be done. Test Plan: Run the timers example - check everything still works as expected Test the ListView paging example - check scroll events are still fired as expected Launch UIExplorer, let it idle, and put a break point on `-[RCTBridge dispatchBlock:moduleID:]`, it should never fire. --- React/Base/RCTEventDispatcher.m | 3 +++ React/Modules/RCTTiming.m | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/React/Base/RCTEventDispatcher.m b/React/Base/RCTEventDispatcher.m index 2009df542..b5b2857f0 100644 --- a/React/Base/RCTEventDispatcher.m +++ b/React/Base/RCTEventDispatcher.m @@ -72,6 +72,7 @@ static NSNumber *RCTGetEventID(id event) } @synthesize bridge = _bridge; +@synthesize paused = _paused; RCT_EXPORT_MODULE() @@ -146,6 +147,7 @@ RCT_IMPORT_METHOD(RCTEventEmitter, receiveEvent); } _eventQueue[eventID] = event; + _paused = NO; [_eventQueueLock unlock]; } @@ -180,6 +182,7 @@ RCT_IMPORT_METHOD(RCTEventEmitter, receiveEvent); [_eventQueueLock lock]; eventQueue = _eventQueue; _eventQueue = [[NSMutableDictionary alloc] init]; + _paused = YES; [_eventQueueLock unlock]; for (id event in eventQueue.allValues) { diff --git a/React/Modules/RCTTiming.m b/React/Modules/RCTTiming.m index e21c9d16f..4f92cfb05 100644 --- a/React/Modules/RCTTiming.m +++ b/React/Modules/RCTTiming.m @@ -155,6 +155,10 @@ RCT_IMPORT_METHOD(RCTJSTimers, callTimers) if ([timersToCall count] > 0) { [_bridge enqueueJSCall:@"RCTJSTimers.callTimers" args:@[timersToCall]]; } + + if (_timers.count == 0) { + [self stopTimers]; + } } /** From 8e3c02e4f01d9274180f6330b9f156d0d9d1ea92 Mon Sep 17 00:00:00 2001 From: Andrei Coman Date: Mon, 8 Jun 2015 04:28:27 -0700 Subject: [PATCH 09/32] [react_native] JS files from D2127018: [react_native] Add uiexplorer app --- Examples/UIExplorer/UIExplorerApp.android.js | 125 ++++++++++++++ ...{UIExplorerApp.js => UIExplorerApp.ios.js} | 32 ++-- Examples/UIExplorer/UIExplorerList.js | 158 ++++++++++++------ Libraries/react-native/react-native.js | 1 + 4 files changed, 247 insertions(+), 69 deletions(-) create mode 100644 Examples/UIExplorer/UIExplorerApp.android.js rename Examples/UIExplorer/{UIExplorerApp.js => UIExplorerApp.ios.js} (76%) diff --git a/Examples/UIExplorer/UIExplorerApp.android.js b/Examples/UIExplorer/UIExplorerApp.android.js new file mode 100644 index 000000000..69767c4b7 --- /dev/null +++ b/Examples/UIExplorer/UIExplorerApp.android.js @@ -0,0 +1,125 @@ +/** + * The examples provided by Facebook are for non-commercial testing and + * evaluation purposes only. + * + * Facebook reserves all rights not expressly granted. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL + * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * @providesModule UIExplorerApp + * @flow + */ +'use strict'; + +var React = require('react-native'); +var Dimensions = require('Dimensions'); +var DrawerLayoutAndroid = require('DrawerLayoutAndroid'); +var ToolbarAndroid = require('ToolbarAndroid'); +var UIExplorerList = require('./UIExplorerList'); +var { + StyleSheet, + View, +} = React; + +var DRAWER_WIDTH_LEFT = 56; + +var UIExplorerApp = React.createClass({ + + getInitialState: function() { + return { + example: { + title: 'UIExplorer', + component: this._renderHome(), + }, + }; + }, + + render: function() { + return ( + { this.drawer = drawer; }} + renderNavigationView={this._renderNavigationView}> + {this._renderNavigation()} + + ); + }, + + _renderNavigationView: function() { + return ( + + ); + }, + + onSelectExample: function(example) { + this.drawer.closeDrawer(); + if (example.title === 'UIExplorer') { + example.component = this._renderHome(); + } + this.setState({ + example: { + title: example.title, + component: example.component, + }, + }); + }, + + _renderHome: function() { + var onSelectExample = this.onSelectExample; + return React.createClass({ + render: function() { + return ( + + ); + } + }); + }, + + _renderNavigation: function() { + var Component = this.state.example.component; + return ( + + this.drawer.openDrawer()} + style={styles.toolbar} + title={this.state.example.title} + /> + + + ); + }, + +}); + +var styles = StyleSheet.create({ + messageText: { + fontSize: 17, + fontWeight: '500', + padding: 15, + marginTop: 50, + marginLeft: 15, + }, + container: { + flex: 1, + }, + toolbar: { + backgroundColor: '#E9EAED', + height: 56, + }, +}); + +module.exports = UIExplorerApp; diff --git a/Examples/UIExplorer/UIExplorerApp.js b/Examples/UIExplorer/UIExplorerApp.ios.js similarity index 76% rename from Examples/UIExplorer/UIExplorerApp.js rename to Examples/UIExplorer/UIExplorerApp.ios.js index fba5e89e4..fe643dec5 100644 --- a/Examples/UIExplorer/UIExplorerApp.js +++ b/Examples/UIExplorer/UIExplorerApp.ios.js @@ -43,22 +43,22 @@ var UIExplorerApp = React.createClass({ /> ); } - return ( - { - this.setState({ openExternalExample: example, }); - }, - } - }} - itemWrapperStyle={styles.itemWrapper} - tintColor='#008888' - /> - ); + return ( + { + this.setState({ openExternalExample: example, }); + }, + } + }} + itemWrapperStyle={styles.itemWrapper} + tintColor="#008888" + /> + ); } }); diff --git a/Examples/UIExplorer/UIExplorerList.js b/Examples/UIExplorer/UIExplorerList.js index d3ab881ac..ca6ee4248 100644 --- a/Examples/UIExplorer/UIExplorerList.js +++ b/Examples/UIExplorer/UIExplorerList.js @@ -20,6 +20,7 @@ var { AppRegistry, ListView, PixelRatio, + Platform, StyleSheet, Text, TextInput, @@ -34,52 +35,68 @@ import type { ExampleModule } from 'ExampleTypes'; var createExamplePage = require('./createExamplePage'); -var COMPONENTS = [ - require('./ActivityIndicatorIOSExample'), - require('./DatePickerIOSExample'), - require('./ImageExample'), - require('./ListViewExample'), - require('./ListViewPagingExample'), - require('./MapViewExample'), - require('./Navigator/NavigatorExample'), - require('./NavigatorIOSColorsExample'), - require('./NavigatorIOSExample'), - require('./PickerIOSExample'), - require('./ProgressViewIOSExample'), - require('./ScrollViewExample'), - require('./SegmentedControlIOSExample'), - require('./SliderIOSExample'), - require('./SwitchIOSExample'), - require('./TabBarIOSExample'), - require('./TextExample.ios'), - require('./TextInputExample'), - require('./TouchableExample'), +var COMMON_COMPONENTS = [ require('./ViewExample'), require('./WebViewExample'), ]; -var APIS = [ - require('./AccessibilityIOSExample'), - require('./ActionSheetIOSExample'), - require('./AdSupportIOSExample'), - require('./AlertIOSExample'), - require('./AppStateIOSExample'), - require('./AsyncStorageExample'), - require('./BorderExample'), - require('./CameraRollExample.ios'), +var COMMON_APIS = [ require('./GeolocationExample'), - require('./LayoutEventsExample'), require('./LayoutExample'), - require('./NetInfoExample'), require('./PanResponderExample'), - require('./PointerEventsExample'), - require('./PushNotificationIOSExample'), - require('./StatusBarIOSExample'), - require('./TimerExample'), - require('./VibrationIOSExample'), - require('./XHRExample'), ]; +if (Platform.OS === 'ios') { + var COMPONENTS = COMMON_COMPONENTS.concat([ + require('./ActivityIndicatorIOSExample'), + require('./DatePickerIOSExample'), + require('./ImageExample'), + require('./ListViewExample'), + require('./ListViewPagingExample'), + require('./MapViewExample'), + require('./Navigator/NavigatorExample'), + require('./NavigatorIOSColorsExample'), + require('./NavigatorIOSExample'), + require('./PickerIOSExample'), + require('./ProgressViewIOSExample'), + require('./ScrollViewExample'), + require('./SegmentedControlIOSExample'), + require('./SliderIOSExample'), + require('./SwitchIOSExample'), + require('./TabBarIOSExample'), + require('./TextExample.ios'), + require('./TextInputExample'), + require('./TouchableExample'), + ]); + + var APIS = COMMON_APIS.concat([ + require('./AccessibilityIOSExample'), + require('./ActionSheetIOSExample'), + require('./AdSupportIOSExample'), + require('./AlertIOSExample'), + require('./AppStateIOSExample'), + require('./AsyncStorageExample'), + require('./BorderExample'), + require('./CameraRollExample.ios'), + require('./LayoutEventsExample'), + require('./NetInfoExample'), + require('./PointerEventsExample'), + require('./PushNotificationIOSExample'), + require('./StatusBarIOSExample'), + require('./TimerExample'), + require('./VibrationIOSExample'), + require('./XHRExample'), + ]); + +} else if (Platform.OS === 'android') { + var COMPONENTS = COMMON_COMPONENTS.concat([ + require('ToolbarAndroidSampleApp'), + ]); + + var APIS = COMMON_APIS.concat([ + ]); +} + var ds = new ListView.DataSource({ rowHasChanged: (r1, r2) => r1 !== r2, sectionHeaderHasChanged: (h1, h2) => h1 !== h2, @@ -112,12 +129,17 @@ COMPONENTS.concat(APIS).forEach((Example) => { } }); -type Props = { - navigator: Array<{title: string, component: ReactClass}>, - onExternalExampleRequested: Function, -}; - - +if (Platform.OS === 'ios') { + type Props = { + navigator: Array<{title: string, component: ReactClass}>, + onExternalExampleRequested: Function, + }; +} else if (Platform.OS === 'android') { + type Props = { + onSelectExample: Function, + isInDrawer: bool, + }; +} class UIExplorerList extends React.Component { props: Props; @@ -129,7 +151,7 @@ class UIExplorerList extends React.Component { components: COMPONENTS, apis: APIS, }), - searchText: Settings.get('searchText'), + searchText: Platform.OS === 'ios' ? Settings.get('searchText') : '', }; } @@ -138,8 +160,12 @@ class UIExplorerList extends React.Component { } render() { - return ( - + if (Platform.OS === 'ios' || + (Platform.OS === 'android' && !this.props.isInDrawer)) { + var platformTextInputStyle = + Platform.OS === 'ios' ? styles.searchTextInputIOS : + Platform.OS === 'android' ? styles.searchTextInputAndroid : {}; + var textInput = ( - + ); + } + + var homePage; + if (Platform.OS === 'android' && this.props.isInDrawer) { + homePage = this._renderRow({ + title: 'UIExplorer', + description: 'List of examples', + }, -1); + } + + return ( + + {textInput} + {homePage} Date: Mon, 8 Jun 2015 03:45:44 -0700 Subject: [PATCH 10/32] [react_native] JS files from D2126599: Android MentionInput Rendering (part 1/2) --- Libraries/Components/TextInput/TextInput.js | 1 + 1 file changed, 1 insertion(+) diff --git a/Libraries/Components/TextInput/TextInput.js b/Libraries/Components/TextInput/TextInput.js index 7d3f04b33..1867b0c7f 100644 --- a/Libraries/Components/TextInput/TextInput.js +++ b/Libraries/Components/TextInput/TextInput.js @@ -510,6 +510,7 @@ var TextInput = React.createClass({ onFocus={this._onFocus} onBlur={this._onBlur} onChange={this._onChange} + onTextInput={this._onTextInput} onEndEditing={this.props.onEndEditing} onSubmitEditing={this.props.onSubmitEditing} onLayout={this.props.onLayout} From 16b8747f61ae42534b40ac4081e1a89f6763dbd5 Mon Sep 17 00:00:00 2001 From: Adam Ernst Date: Mon, 8 Jun 2015 10:38:44 -0400 Subject: [PATCH 11/32] @build-break Disable flaky react tests --- .../IntegrationTestsTests.m | 14 +++++++------- .../UIExplorerIntegrationTests.m | 3 +++ 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/Examples/UIExplorer/UIExplorerIntegrationTests/IntegrationTestsTests.m b/Examples/UIExplorer/UIExplorerIntegrationTests/IntegrationTestsTests.m index 3b701109e..c9cd16206 100644 --- a/Examples/UIExplorer/UIExplorerIntegrationTests/IntegrationTestsTests.m +++ b/Examples/UIExplorer/UIExplorerIntegrationTests/IntegrationTestsTests.m @@ -39,12 +39,12 @@ #pragma mark Logic Tests -- (void)testTheTester +- (void)DISABLED_testTheTester // #7149037 { [_runner runTest:_cmd module:@"IntegrationTestHarnessTest"]; } -- (void)testTheTester_waitOneFrame +- (void)DISABLED_testTheTester_waitOneFrame // #7149037 { [_runner runTest:_cmd module:@"IntegrationTestHarnessTest" @@ -61,29 +61,29 @@ expectErrorRegex:@"because shouldThrow"]; } -- (void)testTimers +- (void)DISABLED_testTimers // #7149037 { [_runner runTest:_cmd module:@"TimersTest"]; } -- (void)testAsyncStorage +- (void)DISABLED_testAsyncStorage // #7149037 { [_runner runTest:_cmd module:@"AsyncStorageTest"]; } -- (void)testLayoutEvents +- (void)DISABLED_testLayoutEvents // #7149037 { [_runner runTest:_cmd module:@"LayoutEventsTest"]; } -- (void)testAppEvents +- (void)DISABLED_testAppEvents // #7149037 { [_runner runTest:_cmd module:@"AppEventsTest"]; } #pragma mark Snapshot Tests -- (void)testSimpleSnapshot +- (void)DISABLED_testSimpleSnapshot // #7149037 { [_runner runTest:_cmd module:@"SimpleSnapshotTest"]; } diff --git a/Examples/UIExplorer/UIExplorerIntegrationTests/UIExplorerIntegrationTests.m b/Examples/UIExplorer/UIExplorerIntegrationTests/UIExplorerIntegrationTests.m index d48b25ddf..8328e8457 100644 --- a/Examples/UIExplorer/UIExplorerIntegrationTests/UIExplorerIntegrationTests.m +++ b/Examples/UIExplorer/UIExplorerIntegrationTests/UIExplorerIntegrationTests.m @@ -95,12 +95,15 @@ [_runner runTest:_cmd module:@#name]; \ } +/* +These tests are all disabled due to #7149037. RCT_SNAPSHOT_TEST(ViewExample, NO) RCT_SNAPSHOT_TEST(LayoutExample, NO) RCT_SNAPSHOT_TEST(TextExample, NO) RCT_SNAPSHOT_TEST(SwitchExample, NO) RCT_SNAPSHOT_TEST(SliderExample, NO) RCT_SNAPSHOT_TEST(TabBarExample, NO) +*/ // Make sure this test runs last - (void)testZZZ_NotInRecordMode From d68776d5deebfc54a22f87eab36d95ca2abccade Mon Sep 17 00:00:00 2001 From: Jared Forsyth Date: Mon, 8 Jun 2015 09:07:48 -0700 Subject: [PATCH 12/32] interop with react devtools --- .../InspectorOverlay/InspectorOverlay.js | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/Libraries/ReactIOS/InspectorOverlay/InspectorOverlay.js b/Libraries/ReactIOS/InspectorOverlay/InspectorOverlay.js index 3b391502f..4cb710f28 100644 --- a/Libraries/ReactIOS/InspectorOverlay/InspectorOverlay.js +++ b/Libraries/ReactIOS/InspectorOverlay/InspectorOverlay.js @@ -19,8 +19,61 @@ var UIManager = require('NativeModules').UIManager; var View = require('View'); var ElementBox = require('ElementBox'); var ElementProperties = require('ElementProperties'); +var TimerMixin = require('TimerMixin'); + +var highlightComponentInstance = function() {}; +var hideHighlight = function() {}; +var getSelectedInstance = function() {}; + +if (typeof window !== 'undefined' && window.__REACT_DEVTOOLS_GLOBAL_HOOK__) { + window.__REACT_DEVTOOLS_GLOBAL_HOOK__.getSelectedInstance = function() { + return getSelectedInstance(); + }; + + window.__REACT_DEVTOOLS_GLOBAL_HOOK__.Overlay = { + highlightComponentInstance(val) { + highlightComponentInstance(val); + }, + hideHighlight() { + hideHighlight(); + } + }; +} var InspectorOverlay = React.createClass({ + mixins: [TimerMixin], + + componentWillMount() { + highlightComponentInstance = this.handleHighlight; + hideHighlight = this.hideHighlight; + getSelectedInstance = this.getSelectedInstance; + // this is needed so that changes from chrome will be sent to RN (changes + // are flushed only when an event happens) + this.setInterval(() => {}, 100); + }, + + getSelectedInstance() { + return this.state.selInstance; + }, + + handleHighlight(publicInstance) { + var instance = publicInstance._reactInternalInstance; + var hierarchy = Inspector.getOwnerHierarchy(instance); + var handle = React.findNodeHandle(publicInstance); + if (!handle) { + return; + } + UIManager.measure(handle, (x, y, width, height, left, top) => { + this.setState({ + selInstance: publicInstance, + frame: {left, top, width, height}, + style: publicInstance.props ? publicInstance.props.style : {}, + selection: hierarchy.length - 1, + hierarchy, + }); + }); + }, + getInitialState: function() { return { frame: null, @@ -44,6 +97,7 @@ var InspectorOverlay = React.createClass({ var publicInstance = instance.getPublicInstance(); this.setState({ hierarchy, + selInstance: publicInstance, pointerY: locationY, selection: hierarchy.length - 1, frame: {left, top, width, height}, @@ -59,6 +113,7 @@ var InspectorOverlay = React.createClass({ UIManager.measure(React.findNodeHandle(instance), (x, y, width, height, left, top) => { this.setState({ frame: {left, top, width, height}, + selInstance: publicInstance, style: publicInstance.props ? publicInstance.props.style : {}, selection: i, }); From f6528171d09f6a70735b0ede24cb9da60c2e571d Mon Sep 17 00:00:00 2001 From: Eric Vicenti Date: Mon, 8 Jun 2015 11:23:03 -0700 Subject: [PATCH 13/32] [ReactNative] Fix navigator touch-blocking logic Summary: The logic for this is incorrect when the `state.transitionToIndex === 0`, and will return false and not capture the touch. @public Test Plan: Try to repro bugs on device and simulator --- Libraries/CustomComponents/Navigator/Navigator.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Libraries/CustomComponents/Navigator/Navigator.js b/Libraries/CustomComponents/Navigator/Navigator.js index 56bd98c73..4852e0a47 100644 --- a/Libraries/CustomComponents/Navigator/Navigator.js +++ b/Libraries/CustomComponents/Navigator/Navigator.js @@ -1290,7 +1290,7 @@ var Navigator = React.createClass({ key={this.state.idStack[i]} ref={'scene_' + i} onStartShouldSetResponderCapture={() => { - return !!this.state.transitionFromIndex || !!this.state.activeGesture; + return (this.state.transitionFromIndex != null) || (this.state.transitionFromIndex != null); }} style={[styles.baseScene, this.props.sceneStyle, disabledSceneStyle]}> {React.cloneElement(child, { From 8a0390f5f8d1d5839d179442ff6bc71d15b298e7 Mon Sep 17 00:00:00 2001 From: Andrei Coman Date: Mon, 8 Jun 2015 11:29:33 -0700 Subject: [PATCH 14/32] [react_native] Fix UIExplorer --- Examples/UIExplorer/UIExplorerList.js | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/Examples/UIExplorer/UIExplorerList.js b/Examples/UIExplorer/UIExplorerList.js index ca6ee4248..43d733506 100644 --- a/Examples/UIExplorer/UIExplorerList.js +++ b/Examples/UIExplorer/UIExplorerList.js @@ -90,7 +90,6 @@ if (Platform.OS === 'ios') { } else if (Platform.OS === 'android') { var COMPONENTS = COMMON_COMPONENTS.concat([ - require('ToolbarAndroidSampleApp'), ]); var APIS = COMMON_APIS.concat([ @@ -129,17 +128,12 @@ COMPONENTS.concat(APIS).forEach((Example) => { } }); -if (Platform.OS === 'ios') { - type Props = { - navigator: Array<{title: string, component: ReactClass}>, - onExternalExampleRequested: Function, - }; -} else if (Platform.OS === 'android') { - type Props = { - onSelectExample: Function, - isInDrawer: bool, - }; -} +type Props = { + navigator: Array<{title: string, component: ReactClass}>, + onExternalExampleRequested: Function, + onSelectExample: Function, + isInDrawer: bool, +}; class UIExplorerList extends React.Component { props: Props; @@ -214,7 +208,7 @@ class UIExplorerList extends React.Component { ); } - _renderRow(example: ExampleModule, i: number) { + _renderRow(example: any, i: number) { return ( this._onPressRow(example)}> @@ -246,7 +240,7 @@ class UIExplorerList extends React.Component { Settings.set({searchText: text}); } - _onPressRow(example: ExampleModule) { + _onPressRow(example: any) { if (example.external) { this.props.onExternalExampleRequested(example); return; From c9e555f4b3cac2e0fc79c820e37cee52f7b9121e Mon Sep 17 00:00:00 2001 From: Christopher Chedeau Date: Mon, 8 Jun 2015 13:44:32 -0700 Subject: [PATCH 15/32] [ReactNative] Better error message when forgetting to wrap Animated --- Libraries/StyleSheet/flattenStyle.js | 20 ++++++++++++++------ Libraries/StyleSheet/precomputeStyle.js | 2 +- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/Libraries/StyleSheet/flattenStyle.js b/Libraries/StyleSheet/flattenStyle.js index a18bce988..b267ac029 100644 --- a/Libraries/StyleSheet/flattenStyle.js +++ b/Libraries/StyleSheet/flattenStyle.js @@ -13,7 +13,6 @@ var StyleSheetRegistry = require('StyleSheetRegistry'); var invariant = require('invariant'); -var mergeIntoFast = require('mergeIntoFast'); type Atom = number | bool | Object | Array type StyleObj = Atom | Array @@ -25,10 +24,7 @@ function getStyle(style) { return style; } -// TODO: Flow 0.7.0 doesn't refine bools properly so we have to use `any` to -// tell it that this can't be a bool anymore. Should be fixed in 0.8.0, -// after which this can take a ?StyleObj. -function flattenStyle(style: any): ?Object { +function flattenStyle(style: ?StyleObj): ?Object { if (!style) { return undefined; } @@ -42,7 +38,19 @@ function flattenStyle(style: any): ?Object { for (var i = 0; i < style.length; ++i) { var computedStyle = flattenStyle(style[i]); if (computedStyle) { - mergeIntoFast(result, computedStyle); + for (var key in computedStyle) { + result[key] = computedStyle[key]; + + if (__DEV__) { + var value = computedStyle[key]; + invariant( + !value || typeof value !== 'object' || !value.getValue, + 'You passed an Animated.Value to a normal component. ' + + 'You need to wrap that component in an Animated. For example, ' + + 'replace by .' + ); + } + } } } return result; diff --git a/Libraries/StyleSheet/precomputeStyle.js b/Libraries/StyleSheet/precomputeStyle.js index 1e9a290f8..3294494fa 100644 --- a/Libraries/StyleSheet/precomputeStyle.js +++ b/Libraries/StyleSheet/precomputeStyle.js @@ -127,7 +127,7 @@ function _convertToRadians(value: string): number { function _validateTransform(key, value, transformation) { invariant( !value.getValue, - 'You passed an animated value or spring to a normal component. ' + + 'You passed an Animated.Value to a normal component. ' + 'You need to wrap that component in an Animated. For example, ' + 'replace by .' ); From 1a12b95f7af6387d71d69acf6c807b0594d0dc48 Mon Sep 17 00:00:00 2001 From: Christopher Chedeau Date: Mon, 8 Jun 2015 14:49:28 -0700 Subject: [PATCH 16/32] [ReactNative] Revert D2134877 --- Libraries/StyleSheet/flattenStyle.js | 6 ------ 1 file changed, 6 deletions(-) diff --git a/Libraries/StyleSheet/flattenStyle.js b/Libraries/StyleSheet/flattenStyle.js index b267ac029..50e061ede 100644 --- a/Libraries/StyleSheet/flattenStyle.js +++ b/Libraries/StyleSheet/flattenStyle.js @@ -43,12 +43,6 @@ function flattenStyle(style: ?StyleObj): ?Object { if (__DEV__) { var value = computedStyle[key]; - invariant( - !value || typeof value !== 'object' || !value.getValue, - 'You passed an Animated.Value to a normal component. ' + - 'You need to wrap that component in an Animated. For example, ' + - 'replace by .' - ); } } } From 0a95edf6eaeafdc91b96b25c8b049cc051173652 Mon Sep 17 00:00:00 2001 From: Philipp von Weitershausen Date: Fri, 5 Jun 2015 19:00:17 -0700 Subject: [PATCH 17/32] [ReactNative] use Map, not Object when functions are keys --- Libraries/LinkingIOS/LinkingIOS.js | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/Libraries/LinkingIOS/LinkingIOS.js b/Libraries/LinkingIOS/LinkingIOS.js index 7bd5c008b..84960ff32 100644 --- a/Libraries/LinkingIOS/LinkingIOS.js +++ b/Libraries/LinkingIOS/LinkingIOS.js @@ -13,9 +13,10 @@ var RCTDeviceEventEmitter = require('RCTDeviceEventEmitter'); var RCTLinkingManager = require('NativeModules').LinkingManager; +var Map = require('Map'); var invariant = require('invariant'); -var _notifHandlers = {}; +var _notifHandlers = new Map(); var _initialURL = RCTLinkingManager && RCTLinkingManager.initialURL; @@ -80,10 +81,6 @@ var DEVICE_NOTIF_EVENT = 'openURL'; * } * }); * ``` - * - * _The iOS simulator does not support the `mailto:` and `tel:` schemas - * because the Mail and Phone apps are not installed - you will need to test - * them on a device._ */ class LinkingIOS { /** @@ -95,10 +92,11 @@ class LinkingIOS { type === 'url', 'LinkingIOS only supports `url` events' ); - _notifHandlers[handler] = RCTDeviceEventEmitter.addListener( + var listener = RCTDeviceEventEmitter.addListener( DEVICE_NOTIF_EVENT, handler ); + _notifHandlers.set(handler, listener); } /** @@ -109,11 +107,12 @@ class LinkingIOS { type === 'url', 'LinkingIOS only supports `url` events' ); - if (!_notifHandlers[handler]) { + var listener = _notifHandlers.get(handler); + if (!listener) { return; } - _notifHandlers[handler].remove(); - _notifHandlers[handler] = null; + listener.remove(); + _notifHandlers.delete(handler); } /** From 8e2727ad5202b1eb3fd82042a029670a6646930e Mon Sep 17 00:00:00 2001 From: Philipp von Weitershausen Date: Mon, 8 Jun 2015 20:55:48 -0700 Subject: [PATCH 18/32] Back out D2128859: interop with react devtools --- .../InspectorOverlay/InspectorOverlay.js | 55 ------------------- 1 file changed, 55 deletions(-) diff --git a/Libraries/ReactIOS/InspectorOverlay/InspectorOverlay.js b/Libraries/ReactIOS/InspectorOverlay/InspectorOverlay.js index 4cb710f28..3b391502f 100644 --- a/Libraries/ReactIOS/InspectorOverlay/InspectorOverlay.js +++ b/Libraries/ReactIOS/InspectorOverlay/InspectorOverlay.js @@ -19,61 +19,8 @@ var UIManager = require('NativeModules').UIManager; var View = require('View'); var ElementBox = require('ElementBox'); var ElementProperties = require('ElementProperties'); -var TimerMixin = require('TimerMixin'); - -var highlightComponentInstance = function() {}; -var hideHighlight = function() {}; -var getSelectedInstance = function() {}; - -if (typeof window !== 'undefined' && window.__REACT_DEVTOOLS_GLOBAL_HOOK__) { - window.__REACT_DEVTOOLS_GLOBAL_HOOK__.getSelectedInstance = function() { - return getSelectedInstance(); - }; - - window.__REACT_DEVTOOLS_GLOBAL_HOOK__.Overlay = { - highlightComponentInstance(val) { - highlightComponentInstance(val); - }, - hideHighlight() { - hideHighlight(); - } - }; -} var InspectorOverlay = React.createClass({ - mixins: [TimerMixin], - - componentWillMount() { - highlightComponentInstance = this.handleHighlight; - hideHighlight = this.hideHighlight; - getSelectedInstance = this.getSelectedInstance; - // this is needed so that changes from chrome will be sent to RN (changes - // are flushed only when an event happens) - this.setInterval(() => {}, 100); - }, - - getSelectedInstance() { - return this.state.selInstance; - }, - - handleHighlight(publicInstance) { - var instance = publicInstance._reactInternalInstance; - var hierarchy = Inspector.getOwnerHierarchy(instance); - var handle = React.findNodeHandle(publicInstance); - if (!handle) { - return; - } - UIManager.measure(handle, (x, y, width, height, left, top) => { - this.setState({ - selInstance: publicInstance, - frame: {left, top, width, height}, - style: publicInstance.props ? publicInstance.props.style : {}, - selection: hierarchy.length - 1, - hierarchy, - }); - }); - }, - getInitialState: function() { return { frame: null, @@ -97,7 +44,6 @@ var InspectorOverlay = React.createClass({ var publicInstance = instance.getPublicInstance(); this.setState({ hierarchy, - selInstance: publicInstance, pointerY: locationY, selection: hierarchy.length - 1, frame: {left, top, width, height}, @@ -113,7 +59,6 @@ var InspectorOverlay = React.createClass({ UIManager.measure(React.findNodeHandle(instance), (x, y, width, height, left, top) => { this.setState({ frame: {left, top, width, height}, - selInstance: publicInstance, style: publicInstance.props ? publicInstance.props.style : {}, selection: i, }); From de1320acc797c3313932b5bdbaae1083d10a1de8 Mon Sep 17 00:00:00 2001 From: Tadeu Zagallo Date: Tue, 9 Jun 2015 02:50:59 -0700 Subject: [PATCH 19/32] [ReactNative] Check if bridge is valid on -modules --- React/Base/RCTBridge.m | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/React/Base/RCTBridge.m b/React/Base/RCTBridge.m index 915d86466..1403c3bd9 100644 --- a/React/Base/RCTBridge.m +++ b/React/Base/RCTBridge.m @@ -1081,6 +1081,10 @@ RCT_INNER_BRIDGE_ONLY(_invokeAndProcessModule:(NSString *)module method:(NSStrin - (NSDictionary *)modules { + if (!self.isValid) { + return nil; + } + RCTAssert(_modulesByName != nil, @"Bridge modules have not yet been initialized. " "You may be trying to access a module too early in the startup procedure."); From 0a3fca95206ed0ad310b1664ccbfa4de756447e0 Mon Sep 17 00:00:00 2001 From: Andy Street Date: Tue, 9 Jun 2015 03:11:12 -0700 Subject: [PATCH 20/32] [react_native] JS files from D2130816: [react_native] Don't render crumb container to texture --- .../Navigator/NavigatorBreadcrumbNavigationBar.js | 1 - 1 file changed, 1 deletion(-) diff --git a/Libraries/CustomComponents/Navigator/NavigatorBreadcrumbNavigationBar.js b/Libraries/CustomComponents/Navigator/NavigatorBreadcrumbNavigationBar.js index a43f2dafd..4b8724cbf 100644 --- a/Libraries/CustomComponents/Navigator/NavigatorBreadcrumbNavigationBar.js +++ b/Libraries/CustomComponents/Navigator/NavigatorBreadcrumbNavigationBar.js @@ -164,7 +164,6 @@ var NavigatorBreadcrumbNavigationBar = React.createClass({ renderToHardwareTextureAndroid: renderToHardwareTexture, }; - this.refs['crumb_' + index].setNativeProps(props); this.refs['icon_' + index].setNativeProps(props); this.refs['separator_' + index].setNativeProps(props); this.refs['title_' + index].setNativeProps(props); From 459882ea7e4de7277dd15400cd9b0f017afc2044 Mon Sep 17 00:00:00 2001 From: Tadeu Zagallo Date: Tue, 9 Jun 2015 05:11:40 -0700 Subject: [PATCH 21/32] [ReactNative] Fix BUCK file and reenable tests --- Examples/UIExplorer/UIExplorer/AppDelegate.m | 2 +- .../IntegrationTestsTests.m | 12 ++++++------ .../testLayoutExampleSnapshot_1@2x.png | Bin .../testSliderExampleSnapshot_1@2x.png | Bin .../testSwitchExampleSnapshot_1@2x.png | Bin .../testTabBarExampleSnapshot_1@2x.png | Bin .../testTextExampleSnapshot_1@2x.png | Bin .../testViewExampleSnapshot_1@2x.png | Bin .../UIExplorerIntegrationTests.m | 5 +---- 9 files changed, 8 insertions(+), 11 deletions(-) rename Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/{Examples-UIExplorer-UIExplorerApp => Examples-UIExplorer-UIExplorerApp.ios}/testLayoutExampleSnapshot_1@2x.png (100%) rename Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/{Examples-UIExplorer-UIExplorerApp => Examples-UIExplorer-UIExplorerApp.ios}/testSliderExampleSnapshot_1@2x.png (100%) rename Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/{Examples-UIExplorer-UIExplorerApp => Examples-UIExplorer-UIExplorerApp.ios}/testSwitchExampleSnapshot_1@2x.png (100%) rename Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/{Examples-UIExplorer-UIExplorerApp => Examples-UIExplorer-UIExplorerApp.ios}/testTabBarExampleSnapshot_1@2x.png (100%) rename Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/{Examples-UIExplorer-UIExplorerApp => Examples-UIExplorer-UIExplorerApp.ios}/testTextExampleSnapshot_1@2x.png (100%) rename Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/{Examples-UIExplorer-UIExplorerApp => Examples-UIExplorer-UIExplorerApp.ios}/testViewExampleSnapshot_1@2x.png (100%) diff --git a/Examples/UIExplorer/UIExplorer/AppDelegate.m b/Examples/UIExplorer/UIExplorer/AppDelegate.m index 9d3adb2ee..5e707db41 100644 --- a/Examples/UIExplorer/UIExplorer/AppDelegate.m +++ b/Examples/UIExplorer/UIExplorer/AppDelegate.m @@ -36,7 +36,7 @@ * on the same Wi-Fi network. */ - jsCodeLocation = [NSURL URLWithString:@"http://localhost:8081/Examples/UIExplorer/UIExplorerApp.includeRequire.runModule.bundle?dev=true"]; + jsCodeLocation = [NSURL URLWithString:@"http://localhost:8081/Examples/UIExplorer/UIExplorerApp.ios.includeRequire.runModule.bundle?dev=true"]; /** * OPTION 2 diff --git a/Examples/UIExplorer/UIExplorerIntegrationTests/IntegrationTestsTests.m b/Examples/UIExplorer/UIExplorerIntegrationTests/IntegrationTestsTests.m index c9cd16206..75483fa6e 100644 --- a/Examples/UIExplorer/UIExplorerIntegrationTests/IntegrationTestsTests.m +++ b/Examples/UIExplorer/UIExplorerIntegrationTests/IntegrationTestsTests.m @@ -39,12 +39,12 @@ #pragma mark Logic Tests -- (void)DISABLED_testTheTester // #7149037 +- (void)testTheTester { [_runner runTest:_cmd module:@"IntegrationTestHarnessTest"]; } -- (void)DISABLED_testTheTester_waitOneFrame // #7149037 +- (void)testTheTester_waitOneFrame { [_runner runTest:_cmd module:@"IntegrationTestHarnessTest" @@ -61,12 +61,12 @@ expectErrorRegex:@"because shouldThrow"]; } -- (void)DISABLED_testTimers // #7149037 +- (void)testTimers { [_runner runTest:_cmd module:@"TimersTest"]; } -- (void)DISABLED_testAsyncStorage // #7149037 +- (void)testAsyncStorage { [_runner runTest:_cmd module:@"AsyncStorageTest"]; } @@ -76,14 +76,14 @@ [_runner runTest:_cmd module:@"LayoutEventsTest"]; } -- (void)DISABLED_testAppEvents // #7149037 +- (void)testAppEvents { [_runner runTest:_cmd module:@"AppEventsTest"]; } #pragma mark Snapshot Tests -- (void)DISABLED_testSimpleSnapshot // #7149037 +- (void)testSimpleSnapshot { [_runner runTest:_cmd module:@"SimpleSnapshotTest"]; } diff --git a/Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-UIExplorerApp/testLayoutExampleSnapshot_1@2x.png b/Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-UIExplorerApp.ios/testLayoutExampleSnapshot_1@2x.png similarity index 100% rename from Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-UIExplorerApp/testLayoutExampleSnapshot_1@2x.png rename to Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-UIExplorerApp.ios/testLayoutExampleSnapshot_1@2x.png diff --git a/Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-UIExplorerApp/testSliderExampleSnapshot_1@2x.png b/Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-UIExplorerApp.ios/testSliderExampleSnapshot_1@2x.png similarity index 100% rename from Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-UIExplorerApp/testSliderExampleSnapshot_1@2x.png rename to Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-UIExplorerApp.ios/testSliderExampleSnapshot_1@2x.png diff --git a/Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-UIExplorerApp/testSwitchExampleSnapshot_1@2x.png b/Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-UIExplorerApp.ios/testSwitchExampleSnapshot_1@2x.png similarity index 100% rename from Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-UIExplorerApp/testSwitchExampleSnapshot_1@2x.png rename to Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-UIExplorerApp.ios/testSwitchExampleSnapshot_1@2x.png diff --git a/Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-UIExplorerApp/testTabBarExampleSnapshot_1@2x.png b/Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-UIExplorerApp.ios/testTabBarExampleSnapshot_1@2x.png similarity index 100% rename from Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-UIExplorerApp/testTabBarExampleSnapshot_1@2x.png rename to Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-UIExplorerApp.ios/testTabBarExampleSnapshot_1@2x.png diff --git a/Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-UIExplorerApp/testTextExampleSnapshot_1@2x.png b/Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-UIExplorerApp.ios/testTextExampleSnapshot_1@2x.png similarity index 100% rename from Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-UIExplorerApp/testTextExampleSnapshot_1@2x.png rename to Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-UIExplorerApp.ios/testTextExampleSnapshot_1@2x.png diff --git a/Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-UIExplorerApp/testViewExampleSnapshot_1@2x.png b/Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-UIExplorerApp.ios/testViewExampleSnapshot_1@2x.png similarity index 100% rename from Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-UIExplorerApp/testViewExampleSnapshot_1@2x.png rename to Examples/UIExplorer/UIExplorerIntegrationTests/ReferenceImages/Examples-UIExplorer-UIExplorerApp.ios/testViewExampleSnapshot_1@2x.png diff --git a/Examples/UIExplorer/UIExplorerIntegrationTests/UIExplorerIntegrationTests.m b/Examples/UIExplorer/UIExplorerIntegrationTests/UIExplorerIntegrationTests.m index 8328e8457..c1c5e5737 100644 --- a/Examples/UIExplorer/UIExplorerIntegrationTests/UIExplorerIntegrationTests.m +++ b/Examples/UIExplorer/UIExplorerIntegrationTests/UIExplorerIntegrationTests.m @@ -39,7 +39,7 @@ #endif NSString *version = [[UIDevice currentDevice] systemVersion]; RCTAssert([version isEqualToString:@"8.3"], @"Snapshot tests should be run on iOS 8.3, found %@", version); - _runner = RCTInitRunnerForApp(@"Examples/UIExplorer/UIExplorerApp"); + _runner = RCTInitRunnerForApp(@"Examples/UIExplorer/UIExplorerApp.ios"); // If tests have changes, set recordMode = YES below and run the affected // tests on an iPhone5, iOS 8.1 simulator. @@ -95,15 +95,12 @@ [_runner runTest:_cmd module:@#name]; \ } -/* -These tests are all disabled due to #7149037. RCT_SNAPSHOT_TEST(ViewExample, NO) RCT_SNAPSHOT_TEST(LayoutExample, NO) RCT_SNAPSHOT_TEST(TextExample, NO) RCT_SNAPSHOT_TEST(SwitchExample, NO) RCT_SNAPSHOT_TEST(SliderExample, NO) RCT_SNAPSHOT_TEST(TabBarExample, NO) -*/ // Make sure this test runs last - (void)testZZZ_NotInRecordMode From 2a08897c6e7fb1ad6d579914412d5a7cc5e7410b Mon Sep 17 00:00:00 2001 From: Tadeu Zagallo Date: Tue, 9 Jun 2015 06:46:49 -0700 Subject: [PATCH 22/32] [ReactNative] Batch JS -> Native calls per queue Summary: @public For every call that comes from JS to Native we'd call dispatch_async so the method would be cllead on the queue/thread it's expecting. This diff buckets the calls by target queue, dispatches only once to that queue, and then call all the methods for it inside the same dispatch. Test Plan: {F22510090} --- React/Base/RCTBridge.m | 89 ++++++++++++++++++++++++------------------ React/Base/RCTUtils.h | 3 ++ React/Base/RCTUtils.m | 10 +++++ 3 files changed, 64 insertions(+), 38 deletions(-) diff --git a/React/Base/RCTBridge.m b/React/Base/RCTBridge.m index 1403c3bd9..affefe7be 100644 --- a/React/Base/RCTBridge.m +++ b/React/Base/RCTBridge.m @@ -1379,15 +1379,42 @@ RCT_INNER_BRIDGE_ONLY(_invokeAndProcessModule:(NSString *)module method:(NSStrin return; } - // TODO: if we sort the requests by module, we could dispatch once per - // module instead of per request, which would reduce the call overhead. + NSMapTable *buckets = [[NSMapTable alloc] initWithKeyOptions:NSPointerFunctionsStrongMemory valueOptions:NSPointerFunctionsStrongMemory capacity:_queuesByID.count]; for (NSUInteger i = 0; i < numRequests; i++) { - @autoreleasepool { - [self _handleRequestNumber:i - moduleID:[moduleIDs[i] integerValue] - methodID:[methodIDs[i] integerValue] - params:paramsArrays[i] - context:context]; + id queue = RCTNullIfNil(_queuesByID[moduleIDs[i]]); + NSMutableOrderedSet *set = [buckets objectForKey:queue]; + if (!set) { + set = [[NSMutableOrderedSet alloc] init]; + [buckets setObject:set forKey:queue]; + } + [set addObject:@(i)]; + } + + for (id queue in buckets) { + RCTProfileBeginFlowEvent(); + dispatch_block_t block = ^{ + RCTProfileEndFlowEvent(); + RCTProfileBeginEvent(); + + NSOrderedSet *calls = [buckets objectForKey:queue]; + @autoreleasepool { + for (NSNumber *indexObj in calls) { + NSUInteger index = indexObj.unsignedIntegerValue; + [self _handleRequestNumber:index + moduleID:[moduleIDs[index] integerValue] + methodID:[methodIDs[index] integerValue] + params:paramsArrays[index] + context:context]; + } + } + + RCTProfileEndEvent(RCTCurrentThreadName(), @"objc_call,dispatch_async", @{ @"calls": @(calls.count) }); + }; + + if (queue == (id)kCFNull) { + [_javaScriptExecutor executeBlockOnJavaScriptQueue:block]; + } else { + dispatch_async(queue, block); } } @@ -1407,8 +1434,6 @@ RCT_INNER_BRIDGE_ONLY(_invokeAndProcessModule:(NSString *)module method:(NSStrin params:(NSArray *)params context:(NSNumber *)context { - RCTAssertJSThread(); - if (!self.isValid) { return NO; } @@ -1426,6 +1451,8 @@ RCT_INNER_BRIDGE_ONLY(_invokeAndProcessModule:(NSString *)module method:(NSStrin return NO; } + RCTProfileBeginEvent(); + RCTModuleMethod *method = methods[methodID]; // Look up module @@ -1435,36 +1462,22 @@ RCT_INNER_BRIDGE_ONLY(_invokeAndProcessModule:(NSString *)module method:(NSStrin return NO; } - RCTProfileBeginFlowEvent(); - __weak RCTBatchedBridge *weakSelf = self; - [self dispatchBlock:^{ - RCTProfileEndFlowEvent(); - RCTProfileBeginEvent(); - RCTBatchedBridge *strongSelf = weakSelf; - - if (!strongSelf.isValid) { - // strongSelf has been invalidated since the dispatch_async call and this - // invocation should not continue. - return; + @try { + [method invokeWithBridge:self module:module arguments:params context:context]; + } + @catch (NSException *exception) { + RCTLogError(@"Exception thrown while invoking %@ on target %@ with params %@: %@", method.JSMethodName, module, params, exception); + if (!RCT_DEBUG && [exception.name rangeOfString:@"Unhandled JS Exception"].location != NSNotFound) { + @throw exception; } + } - @try { - [method invokeWithBridge:strongSelf module:module arguments:params context:context]; - } - @catch (NSException *exception) { - RCTLogError(@"Exception thrown while invoking %@ on target %@ with params %@: %@", method.JSMethodName, module, params, exception); - if (!RCT_DEBUG && [exception.name rangeOfString:@"Unhandled JS Exception"].location != NSNotFound) { - @throw exception; - } - } - - RCTProfileEndEvent(@"Invoke callback", @"objc_call", @{ - @"module": method.moduleClassName, - @"method": method.JSMethodName, - @"selector": NSStringFromSelector(method.selector), - @"args": RCTJSONStringify(params ?: [NSNull null], NULL), - }); - } forModuleID:@(moduleID)]; + RCTProfileEndEvent(@"Invoke callback", @"objc_call", @{ + @"module": method.moduleClassName, + @"method": method.JSMethodName, + @"selector": NSStringFromSelector(method.selector), + @"args": RCTJSONStringify(params ?: [NSNull null], NULL), + }); return YES; } diff --git a/React/Base/RCTUtils.h b/React/Base/RCTUtils.h index 641500b38..366e8aa55 100644 --- a/React/Base/RCTUtils.h +++ b/React/Base/RCTUtils.h @@ -57,3 +57,6 @@ RCT_EXTERN BOOL RCTRunningInTestEnvironment(void); // Return YES if image has an alpha component RCT_EXTERN BOOL RCTImageHasAlpha(CGImageRef image); + +RCT_EXTERN id RCTNullIfNil(id value); +RCT_EXTERN id RCTNilIfNull(id value); diff --git a/React/Base/RCTUtils.m b/React/Base/RCTUtils.m index 613b13163..7a31cf768 100644 --- a/React/Base/RCTUtils.m +++ b/React/Base/RCTUtils.m @@ -281,3 +281,13 @@ BOOL RCTImageHasAlpha(CGImageRef image) return YES; } } + +id RCTNullIfNil(id value) +{ + return value ?: (id)kCFNull; +} + +id RCTNilIfNull(id value) +{ + return value == (id)kCFNull ? nil : value; +} From f590a8b15be971efd54905952b38f23a1c86e0a0 Mon Sep 17 00:00:00 2001 From: Spencer Ahrens Date: Tue, 9 Jun 2015 12:01:08 -0700 Subject: [PATCH 23/32] [ReactNative] fix navIOS example Summary: constants were refactored to be enums. Test Plan: @public navIOS example doesn't fatal. --- Examples/UIExplorer/NavigatorIOSColorsExample.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Examples/UIExplorer/NavigatorIOSColorsExample.js b/Examples/UIExplorer/NavigatorIOSColorsExample.js index a045807c7..0f695d956 100644 --- a/Examples/UIExplorer/NavigatorIOSColorsExample.js +++ b/Examples/UIExplorer/NavigatorIOSColorsExample.js @@ -45,7 +45,7 @@ var NavigatorIOSColors = React.createClass({ render: function() { // Set StatusBar with light contents to get better contrast - StatusBarIOS.setStyle(StatusBarIOS.Style.lightContent); + StatusBarIOS.setStyle('light-content'); return ( ', rightButtonTitle: 'Done', onRightButtonPress: () => { - StatusBarIOS.setStyle(StatusBarIOS.Style['default']); + StatusBarIOS.setStyle('default'); this.props.onExampleExit(); }, passProps: { From f4bf80f3ea3b7ed6aee8b068ec1a289e0965eb5e Mon Sep 17 00:00:00 2001 From: Nick Lockwood Date: Tue, 9 Jun 2015 12:25:24 -0700 Subject: [PATCH 24/32] [ReactNative] Allow uploading native files (e.g. photos) and FormData via XMLHttpRequest --- Libraries/Image/RCTImageDownloader.m | 4 +- Libraries/Image/RCTImageLoader.h | 2 + Libraries/Image/RCTImageLoader.m | 26 +- .../InitializeJavaScriptAppEngine.js | 1 + Libraries/Network/FormData.js | 67 ++++ Libraries/Network/RCTDataManager.m | 126 +------ Libraries/Network/RCTDataQuery.h | 21 ++ Libraries/Network/RCTHTTPQueryExecutor.h | 39 +++ Libraries/Network/RCTHTTPQueryExecutor.m | 314 ++++++++++++++++++ .../RCTNetwork.xcodeproj/project.pbxproj | 10 + Libraries/Network/XMLHttpRequest.ios.js | 15 +- React/Base/RCTUtils.h | 8 + React/Base/RCTUtils.m | 18 + 13 files changed, 513 insertions(+), 138 deletions(-) create mode 100644 Libraries/Network/FormData.js create mode 100644 Libraries/Network/RCTDataQuery.h create mode 100644 Libraries/Network/RCTHTTPQueryExecutor.h create mode 100644 Libraries/Network/RCTHTTPQueryExecutor.m diff --git a/Libraries/Image/RCTImageDownloader.m b/Libraries/Image/RCTImageDownloader.m index 7ff8c6379..760fce614 100644 --- a/Libraries/Image/RCTImageDownloader.m +++ b/Libraries/Image/RCTImageDownloader.m @@ -82,8 +82,8 @@ static NSString *RCTCacheKeyForURL(NSURL *url) RCTImageDownloader *strongSelf = weakSelf; NSArray *blocks = strongSelf->_pendingBlocks[cacheKey]; [strongSelf->_pendingBlocks removeObjectForKey:cacheKey]; - for (RCTCachedDataDownloadBlock cacheDownloadBlock in blocks) { - cacheDownloadBlock(cached, data, error); + for (RCTCachedDataDownloadBlock downloadBlock in blocks) { + downloadBlock(cached, data, error); } }); }; diff --git a/Libraries/Image/RCTImageLoader.h b/Libraries/Image/RCTImageLoader.h index 186a53cd1..4d23a628e 100644 --- a/Libraries/Image/RCTImageLoader.h +++ b/Libraries/Image/RCTImageLoader.h @@ -23,4 +23,6 @@ + (void)loadImageWithTag:(NSString *)tag callback:(void (^)(NSError *error, id /* UIImage or CAAnimation */ image))callback; ++ (BOOL)isSystemImageURI:(NSString *)uri; + @end diff --git a/Libraries/Image/RCTImageLoader.m b/Libraries/Image/RCTImageLoader.m index 7525b37d0..1fda32191 100644 --- a/Libraries/Image/RCTImageLoader.m +++ b/Libraries/Image/RCTImageLoader.m @@ -19,6 +19,7 @@ #import "RCTGIFImage.h" #import "RCTImageDownloader.h" #import "RCTLog.h" +#import "RCTUtils.h" static dispatch_queue_t RCTImageLoaderQueue(void) { @@ -31,24 +32,6 @@ static dispatch_queue_t RCTImageLoaderQueue(void) return queue; } -static NSError *RCTErrorWithMessage(NSString *message) -{ - NSDictionary *errorInfo = @{NSLocalizedDescriptionKey: message}; - NSError *error = [[NSError alloc] initWithDomain:RCTErrorDomain code:0 userInfo:errorInfo]; - return error; -} - -static void RCTDispatchCallbackOnMainQueue(void (^callback)(NSError *, id), NSError *error, UIImage *image) -{ - if ([NSThread isMainThread]) { - callback(error, image); - } else { - dispatch_async(dispatch_get_main_queue(), ^{ - callback(error, image); - }); - } -} - @implementation RCTImageLoader + (ALAssetsLibrary *)assetsLibrary @@ -154,4 +137,11 @@ static void RCTDispatchCallbackOnMainQueue(void (^callback)(NSError *, id), NSEr } } ++ (BOOL)isSystemImageURI:(NSString *)uri +{ + return uri != nil && ( + [uri hasPrefix:@"assets-library"] || + [uri hasPrefix:@"ph://"]); +} + @end diff --git a/Libraries/JavaScriptAppEngine/Initialization/InitializeJavaScriptAppEngine.js b/Libraries/JavaScriptAppEngine/Initialization/InitializeJavaScriptAppEngine.js index f9fe1523d..e87f44fca 100644 --- a/Libraries/JavaScriptAppEngine/Initialization/InitializeJavaScriptAppEngine.js +++ b/Libraries/JavaScriptAppEngine/Initialization/InitializeJavaScriptAppEngine.js @@ -102,6 +102,7 @@ function setUpXHR() { // The native XMLHttpRequest in Chrome dev tools is CORS aware and won't // let you fetch anything from the internet GLOBAL.XMLHttpRequest = require('XMLHttpRequest'); + GLOBAL.FormData = require('FormData'); var fetchPolyfill = require('fetch'); GLOBAL.fetch = fetchPolyfill.fetch; diff --git a/Libraries/Network/FormData.js b/Libraries/Network/FormData.js new file mode 100644 index 000000000..6e44f6193 --- /dev/null +++ b/Libraries/Network/FormData.js @@ -0,0 +1,67 @@ +/** + * 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 FormData + * @flow + */ +'use strict'; + +type FormDataValue = any; +type FormDataPart = [string, FormDataValue]; + +/** + * Polyfill for XMLHttpRequest2 FormData API, allowing multipart POST requests + * with mixed data (string, native files) to be submitted via XMLHttpRequest. + */ +class FormData { + _parts: Array; + _partsByKey: {[key: string]: FormDataPart}; + + constructor() { + this._parts = []; + this._partsByKey = {}; + } + + append(key: string, value: FormDataValue) { + var parts = this._partsByKey[key]; + if (parts) { + // It's a bit unclear what the behaviour should be in this case. + // The XMLHttpRequest spec doesn't specify it, while MDN says that + // the any new values should appended to existing values. We're not + // doing that for now -- it's tedious and doesn't seem worth the effort. + parts[1] = value; + return; + } + parts = [key, value]; + this._parts.push(parts); + this._partsByKey[key] = parts; + } + + getParts(): Array { + return this._parts.map(([name, value]) => { + if (typeof value === 'string') { + return { + string: value, + headers: { + 'content-disposition': 'form-data; name="' + name + '"', + }, + }; + } + var contentDisposition = 'form-data; name="' + name + '"'; + if (typeof value.name === 'string') { + contentDisposition += '; filename="' + value.name + '"'; + } + return { + ...value, + headers: {'content-disposition': contentDisposition}, + }; + }); + } +} + +module.exports = FormData; diff --git a/Libraries/Network/RCTDataManager.m b/Libraries/Network/RCTDataManager.m index 35400955b..135214106 100644 --- a/Libraries/Network/RCTDataManager.m +++ b/Libraries/Network/RCTDataManager.m @@ -11,19 +11,13 @@ #import "RCTAssert.h" #import "RCTConvert.h" +#import "RCTDataQuery.h" #import "RCTEventDispatcher.h" +#import "RCTHTTPQueryExecutor.h" #import "RCTLog.h" #import "RCTUtils.h" -@interface RCTDataManager () - -@end - @implementation RCTDataManager -{ - NSURLSession *_session; - NSOperationQueue *_callbackQueue; -} @synthesize bridge = _bridge; @@ -38,119 +32,23 @@ RCT_EXPORT_METHOD(queryData:(NSString *)queryType sendIncrementalUpdates:(BOOL)incrementalUpdates responseSender:(RCTResponseSenderBlock)responseSender) { + id executor = nil; if ([queryType isEqualToString:@"http"]) { - - // Build request - NSURL *URL = [RCTConvert NSURL:query[@"url"]]; - NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:URL]; - request.HTTPMethod = [RCTConvert NSString:query[@"method"]] ?: @"GET"; - request.allHTTPHeaderFields = [RCTConvert NSDictionary:query[@"headers"]]; - request.HTTPBody = [RCTConvert NSData:query[@"data"]]; - - // Create session if one doesn't already exist - if (!_session) { - _callbackQueue = [[NSOperationQueue alloc] init]; - NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration]; - _session = [NSURLSession sessionWithConfiguration:configuration - delegate:self - delegateQueue:_callbackQueue]; - } - - __block NSURLSessionDataTask *task; - if (incrementalUpdates) { - task = [_session dataTaskWithRequest:request]; - } else { - task = [_session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { - RCTSendResponseEvent(_bridge, task); - if (!error) { - RCTSendDataEvent(_bridge, task, data); - } - RCTSendCompletionEvent(_bridge, task, error); - }]; - } - - // Build data task - responseSender(@[@(task.taskIdentifier)]); - [task resume]; - + executor = [RCTHTTPQueryExecutor sharedInstance]; } else { - RCTLogError(@"unsupported query type %@", queryType); - } -} - -#pragma mark - URLSession delegate - -- (void)URLSession:(NSURLSession *)session - dataTask:(NSURLSessionDataTask *)task -didReceiveResponse:(NSURLResponse *)response - completionHandler:(void (^)(NSURLSessionResponseDisposition))completionHandler -{ - RCTSendResponseEvent(_bridge, task); - completionHandler(NSURLSessionResponseAllow); -} - -- (void)URLSession:(NSURLSession *)session - dataTask:(NSURLSessionDataTask *)task - didReceiveData:(NSData *)data -{ - RCTSendDataEvent(_bridge, task, data); -} - -- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error -{ - RCTSendCompletionEvent(_bridge, task, error); -} - -#pragma mark - Build responses - -static void RCTSendResponseEvent(RCTBridge *bridge, NSURLSessionTask *task) -{ - NSURLResponse *response = task.response; - NSHTTPURLResponse *httpResponse = nil; - if ([response isKindOfClass:[NSHTTPURLResponse class]]) { - // Might be a local file request - httpResponse = (NSHTTPURLResponse *)response; - } - - NSArray *responseJSON = @[@(task.taskIdentifier), - @(httpResponse.statusCode ?: 200), - httpResponse.allHeaderFields ?: @{}, - ]; - - [bridge.eventDispatcher sendDeviceEventWithName:@"didReceiveNetworkResponse" - body:responseJSON]; -} - -static void RCTSendDataEvent(RCTBridge *bridge, NSURLSessionDataTask *task, NSData *data) -{ - // Get text encoding - NSURLResponse *response = task.response; - NSStringEncoding encoding = NSUTF8StringEncoding; - if (response.textEncodingName) { - CFStringEncoding cfEncoding = CFStringConvertIANACharSetNameToEncoding((CFStringRef)response.textEncodingName); - encoding = CFStringConvertEncodingToNSStringEncoding(cfEncoding); - } - - NSString *responseText = [[NSString alloc] initWithData:data encoding:encoding]; - if (!responseText && data.length) { - RCTLogError(@"Received data was invalid."); return; } - NSArray *responseJSON = @[@(task.taskIdentifier), responseText ?: @""]; - [bridge.eventDispatcher sendDeviceEventWithName:@"didReceiveNetworkData" - body:responseJSON]; -} + RCTAssert(executor != nil, @"executor must be defined"); -static void RCTSendCompletionEvent(RCTBridge *bridge, NSURLSessionTask *task, NSError *error) -{ - NSArray *responseJSON = @[@(task.taskIdentifier), - error.localizedDescription ?: [NSNull null], - ]; - - [bridge.eventDispatcher sendDeviceEventWithName:@"didCompleteNetworkResponse" - body:responseJSON]; + if ([executor respondsToSelector:@selector(setBridge:)]) { + executor.bridge = _bridge; + } + if ([executor respondsToSelector:@selector(setSendIncrementalUpdates:)]) { + executor.sendIncrementalUpdates = incrementalUpdates; + } + [executor addQuery:query responseSender:responseSender]; } @end diff --git a/Libraries/Network/RCTDataQuery.h b/Libraries/Network/RCTDataQuery.h new file mode 100644 index 000000000..4588cbbe4 --- /dev/null +++ b/Libraries/Network/RCTDataQuery.h @@ -0,0 +1,21 @@ +/** + * 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. + */ + +#import "RCTBridgeModule.h" + +@protocol RCTDataQueryExecutor + +- (void)addQuery:(NSDictionary *)query responseSender:(RCTResponseSenderBlock)responseSender; + +@optional + +@property (nonatomic, weak) RCTBridge *bridge; +@property (nonatomic, assign) BOOL sendIncrementalUpdates; + +@end diff --git a/Libraries/Network/RCTHTTPQueryExecutor.h b/Libraries/Network/RCTHTTPQueryExecutor.h new file mode 100644 index 000000000..196a4da5f --- /dev/null +++ b/Libraries/Network/RCTHTTPQueryExecutor.h @@ -0,0 +1,39 @@ +/** + * 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. + */ + +#import + +#import "RCTDataQuery.h" + +@interface RCTHTTPQueryExecutor : NSObject + ++ (instancetype)sharedInstance; + +/** + * Process the 'data' part of an HTTP query. + * + * 'data' can be a JSON value of the following forms: + * + * - {"string": "..."}: a simple JS string that will be UTF-8 encoded and sent as the body + * + * - {"uri": "some-uri://..."}: reference to a system resource, e.g. an image in the asset library + * + * - {"formData": [...]}: list of data payloads that will be combined into a multipart/form-data request + * + * If successful, the callback be called with a result dictionary containing the following (optional) keys: + * + * - @"body" (NSData): the body of the request + * + * - @"contentType" (NSString): the content type header of the request + * + */ ++ (void)processDataForHTTPQuery:(NSDictionary *)data + callback:(void (^)(NSError *error, NSDictionary *result))callback; + +@end diff --git a/Libraries/Network/RCTHTTPQueryExecutor.m b/Libraries/Network/RCTHTTPQueryExecutor.m new file mode 100644 index 000000000..7eb858f18 --- /dev/null +++ b/Libraries/Network/RCTHTTPQueryExecutor.m @@ -0,0 +1,314 @@ +/** + * 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. + */ + +#import "RCTHTTPQueryExecutor.h" + +#import "RCTAssert.h" +#import "RCTConvert.h" +#import "RCTEventDispatcher.h" +#import "RCTImageLoader.h" +#import "RCTLog.h" +#import "RCTUtils.h" + +/** + * Helper to convert FormData payloads into multipart/formdata requests. + */ +@interface RCTHTTPFormDataHelper : NSObject + +- (void)process:(NSArray *)formData callback:(void (^)(NSError *error, NSDictionary *result))callback; + +@end + +@implementation RCTHTTPFormDataHelper +{ + NSMutableArray *parts; + NSMutableData *multipartBody; + RCTResultOrErrorBlock callback; + NSString *boundary; +} + +- (void)process:(NSArray *)formData callback:(void (^)(NSError *error, NSDictionary *result))cb +{ + if (![formData count]) { + RCTDispatchCallbackOnMainQueue(cb, nil, nil); + return; + } + parts = [formData mutableCopy]; + callback = cb; + multipartBody = [[NSMutableData alloc] init]; + boundary = [self generateBoundary]; + + NSDictionary *currentPart = [parts objectAtIndex: 0]; + [RCTHTTPQueryExecutor processDataForHTTPQuery:currentPart callback:^(NSError *e, NSDictionary *r) { + [self handleResult:r error:e]; + }]; +} + +- (NSString *)generateBoundary +{ + NSString *const boundaryChars = @"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_./"; + const NSUInteger boundaryLength = 70; + + NSMutableString *output = [NSMutableString stringWithCapacity:boundaryLength]; + NSUInteger numchars = [boundaryChars length]; + for (NSUInteger i = 0; i < boundaryLength; i++) { + [output appendFormat:@"%C", [boundaryChars characterAtIndex:arc4random_uniform((u_int32_t)numchars)]]; + } + return output; +} + +- (void)handleResult:(NSDictionary *)result error:(NSError *)error +{ + if (error) { + RCTDispatchCallbackOnMainQueue(callback, error, nil); + return; + } + NSDictionary *currentPart = parts[0]; + [parts removeObjectAtIndex:0]; + + // Start with boundary. + [multipartBody appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] + dataUsingEncoding:NSUTF8StringEncoding]]; + + // Print headers. + NSMutableDictionary *headers = [(NSDictionary*)currentPart[@"headers"] mutableCopy]; + NSString *partContentType = result[@"contentType"]; + if (partContentType != nil) { + [headers setObject:partContentType forKey:@"content-type"]; + } + [headers enumerateKeysAndObjectsUsingBlock:^(NSString *parameterKey, NSString *parameterValue, BOOL *stop) { + [multipartBody appendData:[[NSString stringWithFormat:@"%@: %@\r\n", parameterKey, parameterValue] + dataUsingEncoding:NSUTF8StringEncoding]]; + }]; + + // Add the body. + [multipartBody appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]]; + [multipartBody appendData:result[@"body"]]; + [multipartBody appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]]; + + if ([parts count]) { + NSDictionary *nextPart = [parts objectAtIndex: 0]; + [RCTHTTPQueryExecutor processDataForHTTPQuery:nextPart callback:^(NSError *e, NSDictionary *r) { + [self handleResult:r error:e]; + }]; + return; + } + + // We've processed the last item. Finish and return. + [multipartBody appendData:[[NSString stringWithFormat:@"--%@--\r\n", boundary] + dataUsingEncoding:NSUTF8StringEncoding]]; + NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=\"%@\"", boundary]; + callback(nil, @{@"body": multipartBody, @"contentType": contentType}); +} + +@end + +@interface RCTHTTPQueryExecutor () + +@end + +@implementation RCTHTTPQueryExecutor +{ + NSURLSession *_session; + NSOperationQueue *_callbackQueue; +} + +@synthesize bridge = _bridge; +@synthesize sendIncrementalUpdates = _sendIncrementalUpdates; + ++ (instancetype)sharedInstance +{ + static RCTHTTPQueryExecutor *_sharedInstance = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + _sharedInstance = [[RCTHTTPQueryExecutor alloc] init]; + }); + return _sharedInstance; +} + +- (void)addQuery:(NSDictionary *)query responseSender:(RCTResponseSenderBlock)responseSender +{ + [self makeRequest:query responseSender:responseSender]; +} + +- (void)makeRequest:(NSDictionary *)query responseSender:(RCTResponseSenderBlock)responseSender +{ + // Build request + NSURL *URL = [RCTConvert NSURL:query[@"url"]]; + NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:URL]; + request.HTTPMethod = [RCTConvert NSString:query[@"method"]] ?: @"GET"; + request.allHTTPHeaderFields = [RCTConvert NSDictionary:query[@"headers"]]; + + NSDictionary *data = [RCTConvert NSDictionary:query[@"data"]]; + + [[self class] processDataForHTTPQuery:data callback:^(NSError *error, NSDictionary *result) { + if (error != nil) { + RCTLogError(@"Error processing request body: %@", error); + // Ideally we'd circle back to JS here and notify an error/abort on the request. + return; + } + request.HTTPBody = result[@"body"]; + NSString *contentType = result[@"contentType"]; + if (contentType != nil) { + [request setValue:contentType forHTTPHeaderField:@"content-type"]; + } + [self sendRequest:request responseSender:responseSender]; + }]; +} + ++ (void)processURIDataForHTTPQuery:(NSString *)uri callback:(void (^)(NSError *error, NSDictionary *result))callback +{ + if ([RCTImageLoader isSystemImageURI:uri]) { + [RCTImageLoader loadImageWithTag:(NSString *)uri callback:^(NSError *error, UIImage *image) { + if (error) { + RCTDispatchCallbackOnMainQueue(callback, error, nil); + return; + } + NSData *imageData = UIImageJPEGRepresentation(image, 1.0); + RCTDispatchCallbackOnMainQueue(callback, nil, @{@"body": imageData, @"contentType": @"image/jpeg"}); + }]; + return; + } + NSString *errorText = [NSString stringWithFormat:@"Cannot resolve URI: %@", uri]; + NSError *error = RCTErrorWithMessage(errorText); + RCTDispatchCallbackOnMainQueue(callback, error, nil); +} + ++ (void)processDataForHTTPQuery:(NSDictionary *)data callback:(void (^)(NSError *error, NSDictionary *result))callback +{ + if (data == nil) { + RCTDispatchCallbackOnMainQueue(callback, nil, nil); + return; + } + + NSData *body = [RCTConvert NSData:data[@"string"]]; + if (body != nil) { + RCTDispatchCallbackOnMainQueue(callback, nil, @{@"body": body}); + return; + } + NSString *uri = [RCTConvert NSString:data[@"uri"]]; + if (uri != nil) { + [RCTHTTPQueryExecutor processURIDataForHTTPQuery:uri callback:callback]; + return; + } + NSDictionaryArray *formData = [RCTConvert NSDictionaryArray:data[@"formData"]]; + if (formData != nil) { + RCTHTTPFormDataHelper *formDataHelper = [[RCTHTTPFormDataHelper alloc] init]; + [formDataHelper process:formData callback:callback]; + return; + } + // Nothing in the data payload, at least nothing we could understand anyway. + // Ignore and treat it as if it were null. + RCTDispatchCallbackOnMainQueue(callback, nil, nil); +} + +- (void)sendRequest:(NSURLRequest *)request responseSender:(RCTResponseSenderBlock)responseSender +{ + // Create session if one doesn't already exist + if (!_session) { + _callbackQueue = [[NSOperationQueue alloc] init]; + NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration]; + _session = [NSURLSession sessionWithConfiguration:configuration + delegate:self + delegateQueue:_callbackQueue]; + } + + __block NSURLSessionDataTask *task; + if (_sendIncrementalUpdates) { + task = [_session dataTaskWithRequest:request]; + } else { + task = [_session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + RCTSendResponseEvent(_bridge, task); + if (!error) { + RCTSendDataEvent(_bridge, task, data); + } + RCTSendCompletionEvent(_bridge, task, error); + }]; + } + + // Build data task + responseSender(@[@(task.taskIdentifier)]); + [task resume]; +} + +#pragma mark - URLSession delegate + +- (void)URLSession:(NSURLSession *)session + dataTask:(NSURLSessionDataTask *)task +didReceiveResponse:(NSURLResponse *)response + completionHandler:(void (^)(NSURLSessionResponseDisposition))completionHandler +{ + RCTSendResponseEvent(_bridge, task); + completionHandler(NSURLSessionResponseAllow); +} + +- (void)URLSession:(NSURLSession *)session + dataTask:(NSURLSessionDataTask *)task + didReceiveData:(NSData *)data +{ + RCTSendDataEvent(_bridge, task, data); +} + +- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error +{ + RCTSendCompletionEvent(_bridge, task, error); +} + +#pragma mark - Build responses + +static void RCTSendResponseEvent(RCTBridge *bridge, NSURLSessionTask *task) +{ + NSURLResponse *response = task.response; + NSHTTPURLResponse *httpResponse = nil; + if ([response isKindOfClass:[NSHTTPURLResponse class]]) { + // Might be a local file request + httpResponse = (NSHTTPURLResponse *)response; + } + + NSArray *responseJSON = @[@(task.taskIdentifier), + @(httpResponse.statusCode ?: 200), + httpResponse.allHeaderFields ?: @{}, + ]; + + [bridge.eventDispatcher sendDeviceEventWithName:@"didReceiveNetworkResponse" + body:responseJSON]; +} + +static void RCTSendDataEvent(RCTBridge *bridge, NSURLSessionDataTask *task, NSData *data) +{ + // Get text encoding + NSURLResponse *response = task.response; + NSStringEncoding encoding = NSUTF8StringEncoding; + if (response.textEncodingName) { + CFStringEncoding cfEncoding = CFStringConvertIANACharSetNameToEncoding((CFStringRef)response.textEncodingName); + encoding = CFStringConvertEncodingToNSStringEncoding(cfEncoding); + } + + NSString *responseText = [[NSString alloc] initWithData:data encoding:encoding]; + if (!responseText && data.length) { + RCTLogError(@"Received data was invalid."); + return; + } + + NSArray *responseJSON = @[@(task.taskIdentifier), responseText ?: @""]; + [bridge.eventDispatcher sendDeviceEventWithName:@"didReceiveNetworkData" + body:responseJSON]; +} + +static void RCTSendCompletionEvent(RCTBridge *bridge, NSURLSessionTask *task, NSError *error) +{ + NSArray *responseJSON = @[@(task.taskIdentifier), + error.localizedDescription ?: [NSNull null], + ]; + + [bridge.eventDispatcher sendDeviceEventWithName:@"didCompleteNetworkResponse" + body:responseJSON]; +} + +@end diff --git a/Libraries/Network/RCTNetwork.xcodeproj/project.pbxproj b/Libraries/Network/RCTNetwork.xcodeproj/project.pbxproj index 1dca7fe6d..bc846292e 100644 --- a/Libraries/Network/RCTNetwork.xcodeproj/project.pbxproj +++ b/Libraries/Network/RCTNetwork.xcodeproj/project.pbxproj @@ -8,6 +8,7 @@ /* Begin PBXBuildFile section */ 1372B7371AB03E7B00659ED6 /* RCTReachability.m in Sources */ = {isa = PBXBuildFile; fileRef = 1372B7361AB03E7B00659ED6 /* RCTReachability.m */; }; + 352DA0BA1B17855800AA15A8 /* RCTHTTPQueryExecutor.m in Sources */ = {isa = PBXBuildFile; fileRef = 352DA0B81B17855800AA15A8 /* RCTHTTPQueryExecutor.m */; }; 58B512081A9E6CE300147676 /* RCTDataManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 58B512071A9E6CE300147676 /* RCTDataManager.m */; }; /* End PBXBuildFile section */ @@ -26,6 +27,9 @@ /* Begin PBXFileReference section */ 1372B7351AB03E7B00659ED6 /* RCTReachability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTReachability.h; sourceTree = ""; }; 1372B7361AB03E7B00659ED6 /* RCTReachability.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTReachability.m; sourceTree = ""; }; + 352DA0B51B17855800AA15A8 /* RCTDataQuery.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTDataQuery.h; sourceTree = ""; }; + 352DA0B71B17855800AA15A8 /* RCTHTTPQueryExecutor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTHTTPQueryExecutor.h; sourceTree = ""; }; + 352DA0B81B17855800AA15A8 /* RCTHTTPQueryExecutor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTHTTPQueryExecutor.m; sourceTree = ""; }; 58B511DB1A9E6C8500147676 /* libRCTNetwork.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libRCTNetwork.a; sourceTree = BUILT_PRODUCTS_DIR; }; 58B512061A9E6CE300147676 /* RCTDataManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTDataManager.h; sourceTree = ""; }; 58B512071A9E6CE300147676 /* RCTDataManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTDataManager.m; sourceTree = ""; }; @@ -47,6 +51,9 @@ children = ( 58B512061A9E6CE300147676 /* RCTDataManager.h */, 58B512071A9E6CE300147676 /* RCTDataManager.m */, + 352DA0B51B17855800AA15A8 /* RCTDataQuery.h */, + 352DA0B71B17855800AA15A8 /* RCTHTTPQueryExecutor.h */, + 352DA0B81B17855800AA15A8 /* RCTHTTPQueryExecutor.m */, 1372B7351AB03E7B00659ED6 /* RCTReachability.h */, 1372B7361AB03E7B00659ED6 /* RCTReachability.m */, 58B511DC1A9E6C8500147676 /* Products */, @@ -121,6 +128,7 @@ files = ( 1372B7371AB03E7B00659ED6 /* RCTReachability.m in Sources */, 58B512081A9E6CE300147676 /* RCTDataManager.m in Sources */, + 352DA0BA1B17855800AA15A8 /* RCTHTTPQueryExecutor.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -209,6 +217,7 @@ "$(inherited)", /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, "$(SRCROOT)/../../React/**", + "$(SRCROOT)/../Image/**", ); LIBRARY_SEARCH_PATHS = "$(inherited)"; OTHER_LDFLAGS = "-ObjC"; @@ -226,6 +235,7 @@ "$(inherited)", /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, "$(SRCROOT)/../../React/**", + "$(SRCROOT)/../Image/**", ); LIBRARY_SEARCH_PATHS = "$(inherited)"; OTHER_LDFLAGS = "-ObjC"; diff --git a/Libraries/Network/XMLHttpRequest.ios.js b/Libraries/Network/XMLHttpRequest.ios.js index 9344d43cc..5a5a29a9f 100644 --- a/Libraries/Network/XMLHttpRequest.ios.js +++ b/Libraries/Network/XMLHttpRequest.ios.js @@ -11,6 +11,7 @@ */ 'use strict'; +var FormData = require('FormData'); var RCTDataManager = require('NativeModules').DataManager; var RCTDeviceEventEmitter = require('RCTDeviceEventEmitter'); @@ -82,13 +83,19 @@ class XMLHttpRequest extends XMLHttpRequestBase { } sendImpl(method: ?string, url: ?string, headers: Object, data: any): void { + if (typeof data === 'string') { + data = {string: data}; + } + if (data instanceof FormData) { + data = {formData: data.getParts()}; + } RCTDataManager.queryData( 'http', { - method: method, - url: url, - data: data, - headers: headers, + method, + url, + data, + headers, }, this.onreadystatechange ? true : false, this._didCreateRequest.bind(this) diff --git a/React/Base/RCTUtils.h b/React/Base/RCTUtils.h index 366e8aa55..b620478fa 100644 --- a/React/Base/RCTUtils.h +++ b/React/Base/RCTUtils.h @@ -58,5 +58,13 @@ RCT_EXTERN BOOL RCTRunningInTestEnvironment(void); // Return YES if image has an alpha component RCT_EXTERN BOOL RCTImageHasAlpha(CGImageRef image); +// Create an NSError in the NCTErrorDomain +RCT_EXTERN NSError *RCTErrorWithMessage(NSString *message); + +// Dispatch an error + result callback on the main thread. +typedef void (^RCTResultOrErrorBlock)(NSError *error, id result); +RCT_EXTERN void RCTDispatchCallbackOnMainQueue(RCTResultOrErrorBlock callback, NSError *error, id result); + +// Convert nil values to NSNull, and vice-versa RCT_EXTERN id RCTNullIfNil(id value); RCT_EXTERN id RCTNilIfNull(id value); diff --git a/React/Base/RCTUtils.m b/React/Base/RCTUtils.m index 7a31cf768..fb79799a8 100644 --- a/React/Base/RCTUtils.m +++ b/React/Base/RCTUtils.m @@ -282,6 +282,24 @@ BOOL RCTImageHasAlpha(CGImageRef image) } } +NSError *RCTErrorWithMessage(NSString *message) +{ + NSDictionary *errorInfo = @{NSLocalizedDescriptionKey: message}; + NSError *error = [[NSError alloc] initWithDomain:RCTErrorDomain code:0 userInfo:errorInfo]; + return error; +} + +void RCTDispatchCallbackOnMainQueue(RCTResultOrErrorBlock callback, NSError *error, id result) +{ + if ([NSThread isMainThread]) { + callback(error, result); + } else { + dispatch_async(dispatch_get_main_queue(), ^{ + callback(error, result); + }); + } +} + id RCTNullIfNil(id value) { return value ?: (id)kCFNull; From f88bc3eb73107d0df25c660f159eac8197474d7e Mon Sep 17 00:00:00 2001 From: Nick Lockwood Date: Tue, 9 Jun 2015 12:25:33 -0700 Subject: [PATCH 25/32] [ReactNative] Refactor RCTDataManager to support pluggable data source modules (RCTURLRequestHandlers) Summary: @public This is a refactor of @philikon's original diff that decouples the dependencies between the Network and Image modules, and replaces RCTDataQueryExecutor with a more useful abstraction. I've introduced the RCTURLRequestHandler protocol, which is a new type of bridge module used for loading data using an NSURLRequest. RCTURLRequestHandlers can be registered using RCT_EXPORT_MODULE() and are then available at runtime for use by the RCTDataManager, which will automatically select the appropriate handler for a given request based on the handler's self-reported capabilities. The currently implemented handlers are: - RCTHTTPRequestHandler - the standard open source HTTP request handler that uses NSURLSession - RKHTTPRequestHandler - the internal FB HTTP request handler that uses FBNetworking - RCTImageRequestHandler - a handler for loading local images from the iOS asset-library Depends on D2108193 Test Plan: - Internal apps still work - OSS port still compiles, Movies app and a sample Parse app still work - uploading image to Parse using the above code snippet works - tested `FormData` with string and image parameters using http://www.posttestserver.com/ --- .../Image/RCTImage.xcodeproj/project.pbxproj | 6 + Libraries/Image/RCTImageLoader.h | 2 - Libraries/Image/RCTImageLoader.m | 19 +- .../RCTImageRequestHandler.h} | 11 +- Libraries/Image/RCTImageRequestHandler.m | 62 +++ Libraries/Network/RCTDataManager.m | 450 +++++++++++++++++- Libraries/Network/RCTHTTPQueryExecutor.h | 39 -- Libraries/Network/RCTHTTPQueryExecutor.m | 314 ------------ Libraries/Network/RCTHTTPRequestHandler.h | 15 + Libraries/Network/RCTHTTPRequestHandler.m | 107 +++++ .../RCTNetwork.xcodeproj/project.pbxproj | 14 +- Libraries/Network/XMLHttpRequest.ios.js | 10 +- React/Base/RCTConvert.m | 3 +- React/Base/RCTDefines.h | 15 + React/Base/RCTURLRequestDelegate.h | 36 ++ React/Base/RCTURLRequestHandler.h | 54 +++ React/Base/RCTUtils.h | 4 - React/Base/RCTUtils.m | 11 - React/React.xcodeproj/project.pbxproj | 4 + 19 files changed, 753 insertions(+), 423 deletions(-) rename Libraries/{Network/RCTDataQuery.h => Image/RCTImageRequestHandler.h} (52%) create mode 100644 Libraries/Image/RCTImageRequestHandler.m delete mode 100644 Libraries/Network/RCTHTTPQueryExecutor.h delete mode 100644 Libraries/Network/RCTHTTPQueryExecutor.m create mode 100644 Libraries/Network/RCTHTTPRequestHandler.h create mode 100644 Libraries/Network/RCTHTTPRequestHandler.m create mode 100644 React/Base/RCTURLRequestDelegate.h create mode 100644 React/Base/RCTURLRequestHandler.h diff --git a/Libraries/Image/RCTImage.xcodeproj/project.pbxproj b/Libraries/Image/RCTImage.xcodeproj/project.pbxproj index 3431def50..667995586 100644 --- a/Libraries/Image/RCTImage.xcodeproj/project.pbxproj +++ b/Libraries/Image/RCTImage.xcodeproj/project.pbxproj @@ -10,6 +10,7 @@ 1304D5AB1AA8C4A30002E2BE /* RCTStaticImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 1304D5A81AA8C4A30002E2BE /* RCTStaticImage.m */; }; 1304D5AC1AA8C4A30002E2BE /* RCTStaticImageManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 1304D5AA1AA8C4A30002E2BE /* RCTStaticImageManager.m */; }; 1304D5B21AA8C50D0002E2BE /* RCTGIFImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 1304D5B11AA8C50D0002E2BE /* RCTGIFImage.m */; }; + 1345A8391B26592900583190 /* RCTImageRequestHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 1345A8381B26592900583190 /* RCTImageRequestHandler.m */; }; 143879351AAD238D00F088A5 /* RCTCameraRollManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 143879341AAD238D00F088A5 /* RCTCameraRollManager.m */; }; 143879381AAD32A300F088A5 /* RCTImageLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = 143879371AAD32A300F088A5 /* RCTImageLoader.m */; }; 58B5118F1A9E6BD600147676 /* RCTImageDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = 58B5118A1A9E6BD600147676 /* RCTImageDownloader.m */; }; @@ -36,6 +37,8 @@ 1304D5AA1AA8C4A30002E2BE /* RCTStaticImageManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTStaticImageManager.m; sourceTree = ""; }; 1304D5B01AA8C50D0002E2BE /* RCTGIFImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTGIFImage.h; sourceTree = ""; }; 1304D5B11AA8C50D0002E2BE /* RCTGIFImage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTGIFImage.m; sourceTree = ""; }; + 1345A8371B26592900583190 /* RCTImageRequestHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTImageRequestHandler.h; sourceTree = ""; }; + 1345A8381B26592900583190 /* RCTImageRequestHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTImageRequestHandler.m; sourceTree = ""; }; 143879331AAD238D00F088A5 /* RCTCameraRollManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTCameraRollManager.h; sourceTree = ""; }; 143879341AAD238D00F088A5 /* RCTCameraRollManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTCameraRollManager.m; sourceTree = ""; }; 143879361AAD32A300F088A5 /* RCTImageLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTImageLoader.h; sourceTree = ""; }; @@ -71,6 +74,8 @@ 1304D5B11AA8C50D0002E2BE /* RCTGIFImage.m */, 58B511891A9E6BD600147676 /* RCTImageDownloader.h */, 58B5118A1A9E6BD600147676 /* RCTImageDownloader.m */, + 1345A8371B26592900583190 /* RCTImageRequestHandler.h */, + 1345A8381B26592900583190 /* RCTImageRequestHandler.m */, 58B5118B1A9E6BD600147676 /* RCTNetworkImageView.h */, 58B5118C1A9E6BD600147676 /* RCTNetworkImageView.m */, 58B5118D1A9E6BD600147676 /* RCTNetworkImageViewManager.h */, @@ -152,6 +157,7 @@ 58B5118F1A9E6BD600147676 /* RCTImageDownloader.m in Sources */, 58B511911A9E6BD600147676 /* RCTNetworkImageViewManager.m in Sources */, 1304D5AC1AA8C4A30002E2BE /* RCTStaticImageManager.m in Sources */, + 1345A8391B26592900583190 /* RCTImageRequestHandler.m in Sources */, 58B511901A9E6BD600147676 /* RCTNetworkImageView.m in Sources */, 1304D5B21AA8C50D0002E2BE /* RCTGIFImage.m in Sources */, 143879351AAD238D00F088A5 /* RCTCameraRollManager.m in Sources */, diff --git a/Libraries/Image/RCTImageLoader.h b/Libraries/Image/RCTImageLoader.h index 4d23a628e..186a53cd1 100644 --- a/Libraries/Image/RCTImageLoader.h +++ b/Libraries/Image/RCTImageLoader.h @@ -23,6 +23,4 @@ + (void)loadImageWithTag:(NSString *)tag callback:(void (^)(NSError *error, id /* UIImage or CAAnimation */ image))callback; -+ (BOOL)isSystemImageURI:(NSString *)uri; - @end diff --git a/Libraries/Image/RCTImageLoader.m b/Libraries/Image/RCTImageLoader.m index 1fda32191..f28502d7e 100644 --- a/Libraries/Image/RCTImageLoader.m +++ b/Libraries/Image/RCTImageLoader.m @@ -16,11 +16,23 @@ #import #import "RCTConvert.h" +#import "RCTDefines.h" #import "RCTGIFImage.h" #import "RCTImageDownloader.h" #import "RCTLog.h" #import "RCTUtils.h" +static void RCTDispatchCallbackOnMainQueue(void (^ __nonnull callback)(NSError *, id), NSError *error, UIImage *image) +{ + if ([NSThread isMainThread]) { + callback(error, image); + } else { + dispatch_async(dispatch_get_main_queue(), ^{ + callback(error, image); + }); + } +} + static dispatch_queue_t RCTImageLoaderQueue(void) { static dispatch_queue_t queue = NULL; @@ -137,11 +149,4 @@ static dispatch_queue_t RCTImageLoaderQueue(void) } } -+ (BOOL)isSystemImageURI:(NSString *)uri -{ - return uri != nil && ( - [uri hasPrefix:@"assets-library"] || - [uri hasPrefix:@"ph://"]); -} - @end diff --git a/Libraries/Network/RCTDataQuery.h b/Libraries/Image/RCTImageRequestHandler.h similarity index 52% rename from Libraries/Network/RCTDataQuery.h rename to Libraries/Image/RCTImageRequestHandler.h index 4588cbbe4..0f0359885 100644 --- a/Libraries/Network/RCTDataQuery.h +++ b/Libraries/Image/RCTImageRequestHandler.h @@ -7,15 +7,8 @@ * of patent rights can be found in the PATENTS file in the same directory. */ -#import "RCTBridgeModule.h" +#import "RCTURLRequestHandler.h" -@protocol RCTDataQueryExecutor - -- (void)addQuery:(NSDictionary *)query responseSender:(RCTResponseSenderBlock)responseSender; - -@optional - -@property (nonatomic, weak) RCTBridge *bridge; -@property (nonatomic, assign) BOOL sendIncrementalUpdates; +@interface RCTImageRequestHandler : NSObject @end diff --git a/Libraries/Image/RCTImageRequestHandler.m b/Libraries/Image/RCTImageRequestHandler.m new file mode 100644 index 000000000..e5eb3bfd4 --- /dev/null +++ b/Libraries/Image/RCTImageRequestHandler.m @@ -0,0 +1,62 @@ +// +// RCTImageRequestHandler.m +// RCTImage +// +// Created by Nick Lockwood on 09/06/2015. +// Copyright (c) 2015 Facebook. All rights reserved. +// + +#import "RCTImageRequestHandler.h" + +#import + +#import "RCTImageLoader.h" +#import "RCTUtils.h" + +@implementation RCTImageRequestHandler +{ + NSInteger _currentToken; +} + +RCT_EXPORT_MODULE() + +- (BOOL)canHandleRequest:(NSURLRequest *)request +{ + return [@[@"assets-library", @"ph"] containsObject:[request.URL.scheme lowercaseString]]; +} + +- (id)sendRequest:(NSURLRequest *)request + withDelegate:(id)delegate +{ + NSNumber *requestToken = @(++_currentToken); + NSString *URLString = [request.URL absoluteString]; + [RCTImageLoader loadImageWithTag:URLString callback:^(NSError *error, UIImage *image) { + if (error) { + [delegate URLRequest:requestToken didCompleteWithError:error]; + return; + } + + NSString *mimeType = nil; + NSData *imageData = nil; + if (RCTImageHasAlpha(image.CGImage)) { + mimeType = @"image/png"; + imageData = UIImagePNGRepresentation(image); + } else { + mimeType = @"image/jpeg"; + imageData = UIImageJPEGRepresentation(image, 1.0); + } + + NSURLResponse *response = [[NSURLResponse alloc] initWithURL:request.URL + MIMEType:mimeType + expectedContentLength:imageData.length + textEncodingName:nil]; + + [delegate URLRequest:requestToken didReceiveResponse:response]; + [delegate URLRequest:requestToken didReceiveData:imageData]; + [delegate URLRequest:requestToken didCompleteWithError:nil]; + }]; + + return requestToken; +} + +@end diff --git a/Libraries/Network/RCTDataManager.m b/Libraries/Network/RCTDataManager.m index 135214106..a05e942fb 100644 --- a/Libraries/Network/RCTDataManager.m +++ b/Libraries/Network/RCTDataManager.m @@ -11,44 +11,452 @@ #import "RCTAssert.h" #import "RCTConvert.h" -#import "RCTDataQuery.h" +#import "RCTURLRequestHandler.h" #import "RCTEventDispatcher.h" -#import "RCTHTTPQueryExecutor.h" +#import "RCTHTTPRequestHandler.h" #import "RCTLog.h" #import "RCTUtils.h" +typedef void (^RCTHTTPQueryResult)(NSError *error, NSDictionary *result); + +@interface RCTDataManager () + +- (void)processDataForHTTPQuery:(NSDictionary *)data callback:(void (^)(NSError *error, NSDictionary *result))callback; + +@end + +/** + * Helper to convert FormData payloads into multipart/formdata requests. + */ +@interface RCTHTTPFormDataHelper : NSObject + +@property (nonatomic, weak) RCTDataManager *dataManager; + +@end + +@implementation RCTHTTPFormDataHelper +{ + NSMutableArray *parts; + NSMutableData *multipartBody; + RCTHTTPQueryResult _callback; + NSString *boundary; +} + +- (void)process:(NSArray *)formData callback:(nonnull void (^)(NSError *error, NSDictionary *result))callback +{ + if (![formData count]) { + callback(nil, nil); + return; + } + parts = [formData mutableCopy]; + _callback = callback; + multipartBody = [[NSMutableData alloc] init]; + boundary = [self generateBoundary]; + + NSDictionary *currentPart = [parts objectAtIndex: 0]; + [_dataManager processDataForHTTPQuery:currentPart callback:^(NSError *e, NSDictionary *r) { + [self handleResult:r error:e]; + }]; +} + +- (NSString *)generateBoundary +{ + NSString *const boundaryChars = @"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_./"; + const NSUInteger boundaryLength = 70; + + NSMutableString *output = [NSMutableString stringWithCapacity:boundaryLength]; + NSUInteger numchars = [boundaryChars length]; + for (NSUInteger i = 0; i < boundaryLength; i++) { + [output appendFormat:@"%C", [boundaryChars characterAtIndex:arc4random_uniform((u_int32_t)numchars)]]; + } + return output; +} + +- (void)handleResult:(NSDictionary *)result error:(NSError *)error +{ + if (error) { + _callback(error, nil); + return; + } + NSDictionary *currentPart = parts[0]; + [parts removeObjectAtIndex:0]; + + // Start with boundary. + [multipartBody appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] + dataUsingEncoding:NSUTF8StringEncoding]]; + + // Print headers. + NSMutableDictionary *headers = [(NSDictionary*)currentPart[@"headers"] mutableCopy]; + NSString *partContentType = result[@"contentType"]; + if (partContentType != nil) { + [headers setObject:partContentType forKey:@"content-type"]; + } + [headers enumerateKeysAndObjectsUsingBlock:^(NSString *parameterKey, NSString *parameterValue, BOOL *stop) { + [multipartBody appendData:[[NSString stringWithFormat:@"%@: %@\r\n", parameterKey, parameterValue] + dataUsingEncoding:NSUTF8StringEncoding]]; + }]; + + // Add the body. + [multipartBody appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]]; + [multipartBody appendData:result[@"body"]]; + [multipartBody appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]]; + + if ([parts count]) { + NSDictionary *nextPart = [parts objectAtIndex: 0]; + [_dataManager processDataForHTTPQuery:nextPart callback:^(NSError *e, NSDictionary *r) { + [self handleResult:r error:e]; + }]; + return; + } + + // We've processed the last item. Finish and return. + [multipartBody appendData:[[NSString stringWithFormat:@"--%@--\r\n", boundary] + dataUsingEncoding:NSUTF8StringEncoding]]; + NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=\"%@\"", boundary]; + _callback(nil, @{@"body": multipartBody, @"contentType": contentType}); +} + +@end + +/** + * Helper to package in-flight requests together with their response data. + */ +@interface RCTActiveURLRequest : NSObject + +@property (nonatomic, strong) NSNumber *requestID; +@property (nonatomic, strong) NSURLRequest *request; +@property (nonatomic, strong) id handler; +@property (nonatomic, assign) BOOL incrementalUpdates; +@property (nonatomic, strong) NSURLResponse *response; +@property (nonatomic, strong) NSMutableData *data; + +@end + +@implementation RCTActiveURLRequest + +- (void)setResponse:(NSURLResponse *)response; +{ + _response = response; + if (!_incrementalUpdates) { + _data = [[NSMutableData alloc] initWithCapacity:(NSUInteger)MAX(0, response.expectedContentLength)]; + } +} + +@end + +/** + * Helper to load request body data using a handler. + */ +@interface RCTDataLoader : NSObject + +@end + +typedef void (^RCTDataLoaderCallback)(NSData *data, NSString *MIMEType, NSError *error); + +@implementation RCTDataLoader +{ + RCTDataLoaderCallback _callback; + RCTActiveURLRequest *_request; + id _requestToken; +} + +- (instancetype)initWithRequest:(NSURLRequest *)request + handler:(id)handler + callback:(RCTDataLoaderCallback)callback +{ + if ((self = [super init])) { + _callback = callback; + _request = [[RCTActiveURLRequest alloc] init]; + _request.request = request; + _request.handler = handler; + _request.incrementalUpdates = NO; + _requestToken = [handler sendRequest:request withDelegate:self]; + } + return self; +} + +- (void)URLRequest:(id)requestToken didReceiveResponse:(NSURLResponse *)response +{ + RCTAssert([requestToken isEqual:_requestToken], @"Shouldn't ever happen"); + _request.response = response; +} + +- (void)URLRequest:(id)requestToken didReceiveData:(NSData *)data +{ + RCTAssert([requestToken isEqual:_requestToken], @"Shouldn't ever happen"); + [_request.data appendData:data]; +} + +- (void)URLRequest:(id)requestToken didCompleteWithError:(NSError *)error +{ + RCTAssert(_callback != nil, @"The callback property must be set"); + _callback(_request.data, _request.response.MIMEType, error); +} + +@end + +/** + * Bridge module that provides the JS interface to the network stack. + */ @implementation RCTDataManager +{ + NSInteger _currentRequestID; + NSMapTable *_activeRequests; +} @synthesize bridge = _bridge; RCT_EXPORT_MODULE() -/** - * Executes a network request. - * The responseSender block won't be called on same thread as called. - */ -RCT_EXPORT_METHOD(queryData:(NSString *)queryType - withQuery:(NSDictionary *)query - sendIncrementalUpdates:(BOOL)incrementalUpdates - responseSender:(RCTResponseSenderBlock)responseSender) +- (instancetype)init { - id executor = nil; - if ([queryType isEqualToString:@"http"]) { - executor = [RCTHTTPQueryExecutor sharedInstance]; - } else { - RCTLogError(@"unsupported query type %@", queryType); + if ((self = [super init])) { + _currentRequestID = 0; + _activeRequests = [[NSMapTable alloc] initWithKeyOptions:NSPointerFunctionsStrongMemory + valueOptions:NSPointerFunctionsStrongMemory + capacity:0]; + } + return self; +} + +- (void)buildRequest:(NSDictionary *)query + responseSender:(RCTResponseSenderBlock)responseSender +{ + NSURL *URL = [RCTConvert NSURL:query[@"url"]]; + NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:URL]; + request.HTTPMethod = [[RCTConvert NSString:query[@"method"]] uppercaseString] ?: @"GET"; + request.allHTTPHeaderFields = [RCTConvert NSDictionary:query[@"headers"]]; + + BOOL incrementalUpdates = [RCTConvert BOOL:query[@"incrementalUpdates"]]; + + NSDictionary *data = [RCTConvert NSDictionary:query[@"data"]]; + [self processDataForHTTPQuery:data callback:^(NSError *error, NSDictionary *result) { + if (error) { + RCTLogError(@"Error processing request body: %@", error); + // Ideally we'd circle back to JS here and notify an error/abort on the request. + return; + } + request.HTTPBody = result[@"body"]; + NSString *contentType = result[@"contentType"]; + if (contentType) { + [request setValue:contentType forHTTPHeaderField:@"content-type"]; + } + [self sendRequest:request + incrementalUpdates:incrementalUpdates + responseSender:responseSender]; + }]; +} + +- (id)handlerForRequest:(NSURLRequest *)request +{ + NSMutableArray *handlers = [NSMutableArray array]; + for (id module in _bridge.modules.allValues) { + if ([module conformsToProtocol:@protocol(RCTURLRequestHandler)]) { + if ([(id)module canHandleRequest:request]) { + [handlers addObject:module]; + } + } + } + [handlers sortUsingComparator:^NSComparisonResult(id a, id b) { + float priorityA = [a respondsToSelector:@selector(handlerPriority)] ? [a handlerPriority] : 0; + float priorityB = [b respondsToSelector:@selector(handlerPriority)] ? [b handlerPriority] : 0; + if (priorityA < priorityB) { + return NSOrderedAscending; + } else if (priorityA > priorityB) { + return NSOrderedDescending; + } else { + RCTLogError(@"The RCTURLRequestHandlers %@ and %@ both reported that" + " they can handle the request %@, and have equal priority" + " (%g). This could result in non-deterministic behavior.", + a, b, request, priorityA); + + return NSOrderedSame; + } + }]; + id handler = [handlers lastObject]; + if (!handler) { + RCTLogError(@"No suitable request handler found for %@", request); + } + return handler; +} + +/** + * Process the 'data' part of an HTTP query. + * + * 'data' can be a JSON value of the following forms: + * + * - {"string": "..."}: a simple JS string that will be UTF-8 encoded and sent as the body + * + * - {"uri": "some-uri://..."}: reference to a system resource, e.g. an image in the asset library + * + * - {"formData": [...]}: list of data payloads that will be combined into a multipart/form-data request + * + * If successful, the callback be called with a result dictionary containing the following (optional) keys: + * + * - @"body" (NSData): the body of the request + * + * - @"contentType" (NSString): the content type header of the request + * + */ +- (void)processDataForHTTPQuery:(NSDictionary *)query callback:(nonnull void (^)(NSError *error, NSDictionary *result))callback +{ + if (!query) { + callback(nil, nil); + return; + } + NSData *body = [RCTConvert NSData:query[@"string"]]; + if (body) { + callback(nil, @{@"body": body}); + return; + } + NSURLRequest *request = [RCTConvert NSURLRequest:query[@"uri"]]; + if (request) { + id handler = [self handlerForRequest:request]; + (void)[[RCTDataLoader alloc] initWithRequest:request handler:handler callback:^(NSData *data, NSString *MIMEType, NSError *error) { + if (data) { + callback(nil, @{@"body": data, @"contentType": MIMEType}); + } else { + callback(error, nil); + } + }]; + return; + } + NSDictionaryArray *formData = [RCTConvert NSDictionaryArray:query[@"formData"]]; + if (formData != nil) { + RCTHTTPFormDataHelper *formDataHelper = [[RCTHTTPFormDataHelper alloc] init]; + formDataHelper.dataManager = self; + [formDataHelper process:formData callback:callback]; + return; + } + // Nothing in the data payload, at least nothing we could understand anyway. + // Ignore and treat it as if it were null. + callback(nil, nil); +} + +- (void)sendRequest:(NSURLRequest *)request + incrementalUpdates:(BOOL)incrementalUpdates + responseSender:(RCTResponseSenderBlock)responseSender +{ + id handler = [self handlerForRequest:request]; + id token = [handler sendRequest:request withDelegate:self]; + if (token) { + RCTActiveURLRequest *activeRequest = [[RCTActiveURLRequest alloc] init]; + activeRequest.requestID = @(++_currentRequestID); + activeRequest.request = request; + activeRequest.handler = handler; + activeRequest.incrementalUpdates = incrementalUpdates; + [_activeRequests setObject:activeRequest forKey:token]; + responseSender(@[activeRequest.requestID]); + } +} + +- (void)sendData:(NSData *)data forRequestToken:(id)requestToken +{ + if (data.length == 0) { return; } - RCTAssert(executor != nil, @"executor must be defined"); + RCTActiveURLRequest *request = [_activeRequests objectForKey:requestToken]; - if ([executor respondsToSelector:@selector(setBridge:)]) { - executor.bridge = _bridge; + // Get text encoding + NSURLResponse *response = request.response; + NSStringEncoding encoding = NSUTF8StringEncoding; + if (response.textEncodingName) { + CFStringEncoding cfEncoding = CFStringConvertIANACharSetNameToEncoding((CFStringRef)response.textEncodingName); + encoding = CFStringConvertEncodingToNSStringEncoding(cfEncoding); } - if ([executor respondsToSelector:@selector(setSendIncrementalUpdates:)]) { - executor.sendIncrementalUpdates = incrementalUpdates; + + NSString *responseText = [[NSString alloc] initWithData:data encoding:encoding]; + if (!responseText && data.length) { + RCTLogError(@"Received data was invalid."); + return; + } + + NSArray *responseJSON = @[request.requestID, responseText ?: @""]; + [_bridge.eventDispatcher sendDeviceEventWithName:@"didReceiveNetworkData" + body:responseJSON]; +} + +#pragma mark - RCTURLRequestDelegate + +- (void)URLRequest:(id)requestToken didReceiveResponse:(NSURLResponse *)response +{ + RCTActiveURLRequest *request = [_activeRequests objectForKey:requestToken]; + RCTAssert(request != nil, @"Unrecognized request token: %@", requestToken); + + request.response = response; + + NSHTTPURLResponse *httpResponse = nil; + if ([response isKindOfClass:[NSHTTPURLResponse class]]) { + // Might be a local file request + httpResponse = (NSHTTPURLResponse *)response; + } + + NSArray *responseJSON = @[request.requestID, + @(httpResponse.statusCode ?: 200), + httpResponse.allHeaderFields ?: @{}, + ]; + + [_bridge.eventDispatcher sendDeviceEventWithName:@"didReceiveNetworkResponse" + body:responseJSON]; +} + +- (void)URLRequest:(id)requestToken didReceiveData:(NSData *)data +{ + RCTActiveURLRequest *request = [_activeRequests objectForKey:requestToken]; + RCTAssert(request != nil, @"Unrecognized request token: %@", requestToken); + + if (request.incrementalUpdates) { + [self sendData:data forRequestToken:requestToken]; + } else { + [request.data appendData:data]; + } +} + +- (void)URLRequest:(id)requestToken didCompleteWithError:(NSError *)error +{ + RCTActiveURLRequest *request = [_activeRequests objectForKey:requestToken]; + RCTAssert(request != nil, @"Unrecognized request token: %@", requestToken); + + if (!request.incrementalUpdates) { + [self sendData:request.data forRequestToken:requestToken]; + } + + NSArray *responseJSON = @[request.requestID, + error.localizedDescription ?: [NSNull null] + ]; + + [_bridge.eventDispatcher sendDeviceEventWithName:@"didCompleteNetworkResponse" + body:responseJSON]; + + [_activeRequests removeObjectForKey:requestToken]; +} + +#pragma mark - JS API + +RCT_EXPORT_METHOD(sendRequest:(NSDictionary *)query + responseSender:(RCTResponseSenderBlock)responseSender) +{ + [self buildRequest:query responseSender:responseSender]; +} + +RCT_EXPORT_METHOD(cancelRequest:(NSNumber *)requestID) +{ + id requestToken = nil; + RCTActiveURLRequest *activeRequest = nil; + for (id token in _activeRequests) { + RCTActiveURLRequest *request = [_activeRequests objectForKey:token]; + if ([request.requestID isEqualToNumber:requestID]) { + activeRequest = request; + requestToken = token; + break; + } + } + + id handler = activeRequest.handler; + if ([handler respondsToSelector:@selector(cancelRequest:)]) { + [activeRequest.handler cancelRequest:requestToken]; } - [executor addQuery:query responseSender:responseSender]; } @end diff --git a/Libraries/Network/RCTHTTPQueryExecutor.h b/Libraries/Network/RCTHTTPQueryExecutor.h deleted file mode 100644 index 196a4da5f..000000000 --- a/Libraries/Network/RCTHTTPQueryExecutor.h +++ /dev/null @@ -1,39 +0,0 @@ -/** - * 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. - */ - -#import - -#import "RCTDataQuery.h" - -@interface RCTHTTPQueryExecutor : NSObject - -+ (instancetype)sharedInstance; - -/** - * Process the 'data' part of an HTTP query. - * - * 'data' can be a JSON value of the following forms: - * - * - {"string": "..."}: a simple JS string that will be UTF-8 encoded and sent as the body - * - * - {"uri": "some-uri://..."}: reference to a system resource, e.g. an image in the asset library - * - * - {"formData": [...]}: list of data payloads that will be combined into a multipart/form-data request - * - * If successful, the callback be called with a result dictionary containing the following (optional) keys: - * - * - @"body" (NSData): the body of the request - * - * - @"contentType" (NSString): the content type header of the request - * - */ -+ (void)processDataForHTTPQuery:(NSDictionary *)data - callback:(void (^)(NSError *error, NSDictionary *result))callback; - -@end diff --git a/Libraries/Network/RCTHTTPQueryExecutor.m b/Libraries/Network/RCTHTTPQueryExecutor.m deleted file mode 100644 index 7eb858f18..000000000 --- a/Libraries/Network/RCTHTTPQueryExecutor.m +++ /dev/null @@ -1,314 +0,0 @@ -/** - * 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. - */ - -#import "RCTHTTPQueryExecutor.h" - -#import "RCTAssert.h" -#import "RCTConvert.h" -#import "RCTEventDispatcher.h" -#import "RCTImageLoader.h" -#import "RCTLog.h" -#import "RCTUtils.h" - -/** - * Helper to convert FormData payloads into multipart/formdata requests. - */ -@interface RCTHTTPFormDataHelper : NSObject - -- (void)process:(NSArray *)formData callback:(void (^)(NSError *error, NSDictionary *result))callback; - -@end - -@implementation RCTHTTPFormDataHelper -{ - NSMutableArray *parts; - NSMutableData *multipartBody; - RCTResultOrErrorBlock callback; - NSString *boundary; -} - -- (void)process:(NSArray *)formData callback:(void (^)(NSError *error, NSDictionary *result))cb -{ - if (![formData count]) { - RCTDispatchCallbackOnMainQueue(cb, nil, nil); - return; - } - parts = [formData mutableCopy]; - callback = cb; - multipartBody = [[NSMutableData alloc] init]; - boundary = [self generateBoundary]; - - NSDictionary *currentPart = [parts objectAtIndex: 0]; - [RCTHTTPQueryExecutor processDataForHTTPQuery:currentPart callback:^(NSError *e, NSDictionary *r) { - [self handleResult:r error:e]; - }]; -} - -- (NSString *)generateBoundary -{ - NSString *const boundaryChars = @"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_./"; - const NSUInteger boundaryLength = 70; - - NSMutableString *output = [NSMutableString stringWithCapacity:boundaryLength]; - NSUInteger numchars = [boundaryChars length]; - for (NSUInteger i = 0; i < boundaryLength; i++) { - [output appendFormat:@"%C", [boundaryChars characterAtIndex:arc4random_uniform((u_int32_t)numchars)]]; - } - return output; -} - -- (void)handleResult:(NSDictionary *)result error:(NSError *)error -{ - if (error) { - RCTDispatchCallbackOnMainQueue(callback, error, nil); - return; - } - NSDictionary *currentPart = parts[0]; - [parts removeObjectAtIndex:0]; - - // Start with boundary. - [multipartBody appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] - dataUsingEncoding:NSUTF8StringEncoding]]; - - // Print headers. - NSMutableDictionary *headers = [(NSDictionary*)currentPart[@"headers"] mutableCopy]; - NSString *partContentType = result[@"contentType"]; - if (partContentType != nil) { - [headers setObject:partContentType forKey:@"content-type"]; - } - [headers enumerateKeysAndObjectsUsingBlock:^(NSString *parameterKey, NSString *parameterValue, BOOL *stop) { - [multipartBody appendData:[[NSString stringWithFormat:@"%@: %@\r\n", parameterKey, parameterValue] - dataUsingEncoding:NSUTF8StringEncoding]]; - }]; - - // Add the body. - [multipartBody appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]]; - [multipartBody appendData:result[@"body"]]; - [multipartBody appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]]; - - if ([parts count]) { - NSDictionary *nextPart = [parts objectAtIndex: 0]; - [RCTHTTPQueryExecutor processDataForHTTPQuery:nextPart callback:^(NSError *e, NSDictionary *r) { - [self handleResult:r error:e]; - }]; - return; - } - - // We've processed the last item. Finish and return. - [multipartBody appendData:[[NSString stringWithFormat:@"--%@--\r\n", boundary] - dataUsingEncoding:NSUTF8StringEncoding]]; - NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=\"%@\"", boundary]; - callback(nil, @{@"body": multipartBody, @"contentType": contentType}); -} - -@end - -@interface RCTHTTPQueryExecutor () - -@end - -@implementation RCTHTTPQueryExecutor -{ - NSURLSession *_session; - NSOperationQueue *_callbackQueue; -} - -@synthesize bridge = _bridge; -@synthesize sendIncrementalUpdates = _sendIncrementalUpdates; - -+ (instancetype)sharedInstance -{ - static RCTHTTPQueryExecutor *_sharedInstance = nil; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - _sharedInstance = [[RCTHTTPQueryExecutor alloc] init]; - }); - return _sharedInstance; -} - -- (void)addQuery:(NSDictionary *)query responseSender:(RCTResponseSenderBlock)responseSender -{ - [self makeRequest:query responseSender:responseSender]; -} - -- (void)makeRequest:(NSDictionary *)query responseSender:(RCTResponseSenderBlock)responseSender -{ - // Build request - NSURL *URL = [RCTConvert NSURL:query[@"url"]]; - NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:URL]; - request.HTTPMethod = [RCTConvert NSString:query[@"method"]] ?: @"GET"; - request.allHTTPHeaderFields = [RCTConvert NSDictionary:query[@"headers"]]; - - NSDictionary *data = [RCTConvert NSDictionary:query[@"data"]]; - - [[self class] processDataForHTTPQuery:data callback:^(NSError *error, NSDictionary *result) { - if (error != nil) { - RCTLogError(@"Error processing request body: %@", error); - // Ideally we'd circle back to JS here and notify an error/abort on the request. - return; - } - request.HTTPBody = result[@"body"]; - NSString *contentType = result[@"contentType"]; - if (contentType != nil) { - [request setValue:contentType forHTTPHeaderField:@"content-type"]; - } - [self sendRequest:request responseSender:responseSender]; - }]; -} - -+ (void)processURIDataForHTTPQuery:(NSString *)uri callback:(void (^)(NSError *error, NSDictionary *result))callback -{ - if ([RCTImageLoader isSystemImageURI:uri]) { - [RCTImageLoader loadImageWithTag:(NSString *)uri callback:^(NSError *error, UIImage *image) { - if (error) { - RCTDispatchCallbackOnMainQueue(callback, error, nil); - return; - } - NSData *imageData = UIImageJPEGRepresentation(image, 1.0); - RCTDispatchCallbackOnMainQueue(callback, nil, @{@"body": imageData, @"contentType": @"image/jpeg"}); - }]; - return; - } - NSString *errorText = [NSString stringWithFormat:@"Cannot resolve URI: %@", uri]; - NSError *error = RCTErrorWithMessage(errorText); - RCTDispatchCallbackOnMainQueue(callback, error, nil); -} - -+ (void)processDataForHTTPQuery:(NSDictionary *)data callback:(void (^)(NSError *error, NSDictionary *result))callback -{ - if (data == nil) { - RCTDispatchCallbackOnMainQueue(callback, nil, nil); - return; - } - - NSData *body = [RCTConvert NSData:data[@"string"]]; - if (body != nil) { - RCTDispatchCallbackOnMainQueue(callback, nil, @{@"body": body}); - return; - } - NSString *uri = [RCTConvert NSString:data[@"uri"]]; - if (uri != nil) { - [RCTHTTPQueryExecutor processURIDataForHTTPQuery:uri callback:callback]; - return; - } - NSDictionaryArray *formData = [RCTConvert NSDictionaryArray:data[@"formData"]]; - if (formData != nil) { - RCTHTTPFormDataHelper *formDataHelper = [[RCTHTTPFormDataHelper alloc] init]; - [formDataHelper process:formData callback:callback]; - return; - } - // Nothing in the data payload, at least nothing we could understand anyway. - // Ignore and treat it as if it were null. - RCTDispatchCallbackOnMainQueue(callback, nil, nil); -} - -- (void)sendRequest:(NSURLRequest *)request responseSender:(RCTResponseSenderBlock)responseSender -{ - // Create session if one doesn't already exist - if (!_session) { - _callbackQueue = [[NSOperationQueue alloc] init]; - NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration]; - _session = [NSURLSession sessionWithConfiguration:configuration - delegate:self - delegateQueue:_callbackQueue]; - } - - __block NSURLSessionDataTask *task; - if (_sendIncrementalUpdates) { - task = [_session dataTaskWithRequest:request]; - } else { - task = [_session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { - RCTSendResponseEvent(_bridge, task); - if (!error) { - RCTSendDataEvent(_bridge, task, data); - } - RCTSendCompletionEvent(_bridge, task, error); - }]; - } - - // Build data task - responseSender(@[@(task.taskIdentifier)]); - [task resume]; -} - -#pragma mark - URLSession delegate - -- (void)URLSession:(NSURLSession *)session - dataTask:(NSURLSessionDataTask *)task -didReceiveResponse:(NSURLResponse *)response - completionHandler:(void (^)(NSURLSessionResponseDisposition))completionHandler -{ - RCTSendResponseEvent(_bridge, task); - completionHandler(NSURLSessionResponseAllow); -} - -- (void)URLSession:(NSURLSession *)session - dataTask:(NSURLSessionDataTask *)task - didReceiveData:(NSData *)data -{ - RCTSendDataEvent(_bridge, task, data); -} - -- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error -{ - RCTSendCompletionEvent(_bridge, task, error); -} - -#pragma mark - Build responses - -static void RCTSendResponseEvent(RCTBridge *bridge, NSURLSessionTask *task) -{ - NSURLResponse *response = task.response; - NSHTTPURLResponse *httpResponse = nil; - if ([response isKindOfClass:[NSHTTPURLResponse class]]) { - // Might be a local file request - httpResponse = (NSHTTPURLResponse *)response; - } - - NSArray *responseJSON = @[@(task.taskIdentifier), - @(httpResponse.statusCode ?: 200), - httpResponse.allHeaderFields ?: @{}, - ]; - - [bridge.eventDispatcher sendDeviceEventWithName:@"didReceiveNetworkResponse" - body:responseJSON]; -} - -static void RCTSendDataEvent(RCTBridge *bridge, NSURLSessionDataTask *task, NSData *data) -{ - // Get text encoding - NSURLResponse *response = task.response; - NSStringEncoding encoding = NSUTF8StringEncoding; - if (response.textEncodingName) { - CFStringEncoding cfEncoding = CFStringConvertIANACharSetNameToEncoding((CFStringRef)response.textEncodingName); - encoding = CFStringConvertEncodingToNSStringEncoding(cfEncoding); - } - - NSString *responseText = [[NSString alloc] initWithData:data encoding:encoding]; - if (!responseText && data.length) { - RCTLogError(@"Received data was invalid."); - return; - } - - NSArray *responseJSON = @[@(task.taskIdentifier), responseText ?: @""]; - [bridge.eventDispatcher sendDeviceEventWithName:@"didReceiveNetworkData" - body:responseJSON]; -} - -static void RCTSendCompletionEvent(RCTBridge *bridge, NSURLSessionTask *task, NSError *error) -{ - NSArray *responseJSON = @[@(task.taskIdentifier), - error.localizedDescription ?: [NSNull null], - ]; - - [bridge.eventDispatcher sendDeviceEventWithName:@"didCompleteNetworkResponse" - body:responseJSON]; -} - -@end diff --git a/Libraries/Network/RCTHTTPRequestHandler.h b/Libraries/Network/RCTHTTPRequestHandler.h new file mode 100644 index 000000000..b8a7a3e26 --- /dev/null +++ b/Libraries/Network/RCTHTTPRequestHandler.h @@ -0,0 +1,15 @@ +/** + * 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. + */ + +#import "RCTURLRequestHandler.h" +#import "RCTInvalidating.h" + +@interface RCTHTTPRequestHandler : NSObject + +@end diff --git a/Libraries/Network/RCTHTTPRequestHandler.m b/Libraries/Network/RCTHTTPRequestHandler.m new file mode 100644 index 000000000..7c1a5ac68 --- /dev/null +++ b/Libraries/Network/RCTHTTPRequestHandler.m @@ -0,0 +1,107 @@ +/** + * 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. + */ + +#import "RCTHTTPRequestHandler.h" + +#import "RCTAssert.h" +#import "RCTConvert.h" +#import "RCTEventDispatcher.h" +#import "RCTImageLoader.h" +#import "RCTLog.h" +#import "RCTUtils.h" + +@interface RCTHTTPRequestHandler () + +@end + +@implementation RCTHTTPRequestHandler +{ + NSMapTable *_delegates; + NSURLSession *_session; +} + +RCT_EXPORT_MODULE() + +- (instancetype)init +{ + if ((self = [super init])) { + _delegates = [[NSMapTable alloc] initWithKeyOptions:NSPointerFunctionsStrongMemory + valueOptions:NSPointerFunctionsStrongMemory + capacity:0]; + } + return self; +} + +- (void)invalidate +{ + [_session invalidateAndCancel]; + _session = nil; + _delegates = nil; +} + +- (BOOL)isValid +{ + return _delegates != nil; +} + +#pragma mark - NSURLRequestHandler + +- (BOOL)canHandleRequest:(NSURLRequest *)request +{ + return [@[@"http", @"https", @"file"] containsObject:[request.URL.scheme lowercaseString]]; +} + +- (id)sendRequest:(NSURLRequest *)request + withDelegate:(id)delegate +{ + // Lazy setup + if (!_session && [self isValid]) { + NSOperationQueue *callbackQueue = [[NSOperationQueue alloc] init]; + NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration]; + _session = [NSURLSession sessionWithConfiguration:configuration + delegate:self + delegateQueue:callbackQueue]; + } + + NSURLSessionDataTask *task = [_session dataTaskWithRequest:request]; + [_delegates setObject:delegate forKey:task]; + [task resume]; + return task; +} + +- (void)cancelRequest:(NSURLSessionDataTask *)requestToken +{ + [requestToken cancel]; +} + +#pragma mark - NSURLSession delegate + +- (void)URLSession:(NSURLSession *)session + dataTask:(NSURLSessionDataTask *)task +didReceiveResponse:(NSURLResponse *)response + completionHandler:(void (^)(NSURLSessionResponseDisposition))completionHandler +{ + [[_delegates objectForKey:task] URLRequest:task didReceiveResponse:response]; + completionHandler(NSURLSessionResponseAllow); +} + +- (void)URLSession:(NSURLSession *)session + dataTask:(NSURLSessionDataTask *)task + didReceiveData:(NSData *)data +{ + [[_delegates objectForKey:task] URLRequest:task didReceiveData:data]; +} + +- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error +{ + [[_delegates objectForKey:task] URLRequest:task didCompleteWithError:error]; + [_delegates removeObjectForKey:task]; +} + +@end diff --git a/Libraries/Network/RCTNetwork.xcodeproj/project.pbxproj b/Libraries/Network/RCTNetwork.xcodeproj/project.pbxproj index bc846292e..dba7c65fa 100644 --- a/Libraries/Network/RCTNetwork.xcodeproj/project.pbxproj +++ b/Libraries/Network/RCTNetwork.xcodeproj/project.pbxproj @@ -8,7 +8,7 @@ /* Begin PBXBuildFile section */ 1372B7371AB03E7B00659ED6 /* RCTReachability.m in Sources */ = {isa = PBXBuildFile; fileRef = 1372B7361AB03E7B00659ED6 /* RCTReachability.m */; }; - 352DA0BA1B17855800AA15A8 /* RCTHTTPQueryExecutor.m in Sources */ = {isa = PBXBuildFile; fileRef = 352DA0B81B17855800AA15A8 /* RCTHTTPQueryExecutor.m */; }; + 352DA0BA1B17855800AA15A8 /* RCTHTTPRequestHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 352DA0B81B17855800AA15A8 /* RCTHTTPRequestHandler.m */; }; 58B512081A9E6CE300147676 /* RCTDataManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 58B512071A9E6CE300147676 /* RCTDataManager.m */; }; /* End PBXBuildFile section */ @@ -27,9 +27,8 @@ /* Begin PBXFileReference section */ 1372B7351AB03E7B00659ED6 /* RCTReachability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTReachability.h; sourceTree = ""; }; 1372B7361AB03E7B00659ED6 /* RCTReachability.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTReachability.m; sourceTree = ""; }; - 352DA0B51B17855800AA15A8 /* RCTDataQuery.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTDataQuery.h; sourceTree = ""; }; - 352DA0B71B17855800AA15A8 /* RCTHTTPQueryExecutor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTHTTPQueryExecutor.h; sourceTree = ""; }; - 352DA0B81B17855800AA15A8 /* RCTHTTPQueryExecutor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTHTTPQueryExecutor.m; sourceTree = ""; }; + 352DA0B71B17855800AA15A8 /* RCTHTTPRequestHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTHTTPRequestHandler.h; sourceTree = ""; }; + 352DA0B81B17855800AA15A8 /* RCTHTTPRequestHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTHTTPRequestHandler.m; sourceTree = ""; }; 58B511DB1A9E6C8500147676 /* libRCTNetwork.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libRCTNetwork.a; sourceTree = BUILT_PRODUCTS_DIR; }; 58B512061A9E6CE300147676 /* RCTDataManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTDataManager.h; sourceTree = ""; }; 58B512071A9E6CE300147676 /* RCTDataManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTDataManager.m; sourceTree = ""; }; @@ -51,9 +50,8 @@ children = ( 58B512061A9E6CE300147676 /* RCTDataManager.h */, 58B512071A9E6CE300147676 /* RCTDataManager.m */, - 352DA0B51B17855800AA15A8 /* RCTDataQuery.h */, - 352DA0B71B17855800AA15A8 /* RCTHTTPQueryExecutor.h */, - 352DA0B81B17855800AA15A8 /* RCTHTTPQueryExecutor.m */, + 352DA0B71B17855800AA15A8 /* RCTHTTPRequestHandler.h */, + 352DA0B81B17855800AA15A8 /* RCTHTTPRequestHandler.m */, 1372B7351AB03E7B00659ED6 /* RCTReachability.h */, 1372B7361AB03E7B00659ED6 /* RCTReachability.m */, 58B511DC1A9E6C8500147676 /* Products */, @@ -128,7 +126,7 @@ files = ( 1372B7371AB03E7B00659ED6 /* RCTReachability.m in Sources */, 58B512081A9E6CE300147676 /* RCTDataManager.m in Sources */, - 352DA0BA1B17855800AA15A8 /* RCTHTTPQueryExecutor.m in Sources */, + 352DA0BA1B17855800AA15A8 /* RCTHTTPRequestHandler.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/Libraries/Network/XMLHttpRequest.ios.js b/Libraries/Network/XMLHttpRequest.ios.js index 5a5a29a9f..151781c91 100644 --- a/Libraries/Network/XMLHttpRequest.ios.js +++ b/Libraries/Network/XMLHttpRequest.ios.js @@ -89,28 +89,24 @@ class XMLHttpRequest extends XMLHttpRequestBase { if (data instanceof FormData) { data = {formData: data.getParts()}; } - RCTDataManager.queryData( - 'http', + RCTDataManager.sendRequest( { method, url, data, headers, + incrementalUpdates: this.onreadystatechange ? true : false, }, - this.onreadystatechange ? true : false, this._didCreateRequest.bind(this) ); } abortImpl(): void { if (this._requestId) { + RCTDataManager.cancelRequest(this._requestId); this._clearSubscriptions(); this._requestId = null; } - console.warn( - 'XMLHttpRequest: abort() cancels JS callbacks ' + - 'but not native HTTP request.' - ); } } diff --git a/React/Base/RCTConvert.m b/React/Base/RCTConvert.m index 3bdf59753..0a08326c7 100644 --- a/React/Base/RCTConvert.m +++ b/React/Base/RCTConvert.m @@ -118,7 +118,8 @@ RCT_CONVERTER(NSString *, NSString, description) + (NSURLRequest *)NSURLRequest:(id)json { - return [NSURLRequest requestWithURL:[self NSURL:json]]; + NSURL *URL = [self NSURL:json]; + return URL ? [NSURLRequest requestWithURL:URL] : nil; } + (NSDate *)NSDate:(id)json diff --git a/React/Base/RCTDefines.h b/React/Base/RCTDefines.h index 0d985db8a..83a60d61a 100644 --- a/React/Base/RCTDefines.h +++ b/React/Base/RCTDefines.h @@ -18,6 +18,21 @@ #define RCT_EXTERN extern __attribute__((visibility("default"))) #endif +/** + * Nullability for Xcode 6.2 + */ +#if !__has_feature(nullability) +#define NS_ASSUME_NONNULL_BEGIN +#define NS_ASSUME_NONNULL_END +#define nullable +#define nonnull +#define null_unspecified +#define null_resettable +#define __nullable +#define __nonnull +#define __null_unspecified +#endif + /** * The RCT_DEBUG macro can be used to exclude error checking and logging code * from release builds to improve performance and reduce binary size. diff --git a/React/Base/RCTURLRequestDelegate.h b/React/Base/RCTURLRequestDelegate.h new file mode 100644 index 000000000..3ca5b0e01 --- /dev/null +++ b/React/Base/RCTURLRequestDelegate.h @@ -0,0 +1,36 @@ +/** + * 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. + */ + +#import + +/** + * An abstract interface used by request handler modules to send + * data back over the bridge back to JS. + */ +@protocol RCTURLRequestDelegate + +/** + * Call this when you first receives a response from the server. This should + * include response headers, etc. + */ +- (void)URLRequest:(id)requestToken didReceiveResponse:(NSURLResponse *)response; + +/** + * Call this when you receive data from the server. This can be called multiple + * times with partial data chunks, or just once with the full data packet. + */ +- (void)URLRequest:(id)requestToken didReceiveData:(NSData *)data; + +/** + * Call this when the request is complete and/or if an error is encountered. + * For a successful request, the error parameter should be nil. + */ +- (void)URLRequest:(id)requestToken didCompleteWithError:(NSError *)error; + +@end diff --git a/React/Base/RCTURLRequestHandler.h b/React/Base/RCTURLRequestHandler.h new file mode 100644 index 000000000..d5959e5eb --- /dev/null +++ b/React/Base/RCTURLRequestHandler.h @@ -0,0 +1,54 @@ +/** + * 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. + */ + +#import "RCTBridgeModule.h" +#import "RCTURLRequestDelegate.h" + +/** + * Provides the interface needed to register a request handler. Request handlers + * are also bridge modules, so should be registered using RCT_EXPORT_MODULE(). + */ +@protocol RCTURLRequestHandler + +/** + * Indicates whether this handler is capable of processing the specified + * request. Typically the handler would examine the scheme/protocol of the + * request URL (and possibly the HTTP method and/or headers) to determine this. + */ +- (BOOL)canHandleRequest:(NSURLRequest *)request; + +/** + * Send a network request and call the delegate with the response data. The + * method should return a token, which can be anything, including the request + * itself. This will be used later to refer to the request in callbacks. The + * `sendRequest:withDelegate:` method *must* return before calling any of the + * delegate methods, or the delegate won't recognize the token. + */ +- (id)sendRequest:(NSURLRequest *)request + withDelegate:(id)delegate; + +@optional + +/** + * Not all request types can be cancelled, but this method can be implemented + * for ones that can. It should be used to free up any resources on ongoing + * processes associated with the request. + */ +- (void)cancelRequest:(id)requestToken; + +/** + * If more than one RCTURLRequestHandler responds YES to `canHandleRequest:` + * then `handlerPriority` is used to determine which one to use. The handler + * with the highest priority will be selected. Default priority is zero. If + * two or more valid handlers have the same priority, the selection order is + * undefined. + */ +- (float)handlerPriority; + +@end diff --git a/React/Base/RCTUtils.h b/React/Base/RCTUtils.h index b620478fa..5150b5c97 100644 --- a/React/Base/RCTUtils.h +++ b/React/Base/RCTUtils.h @@ -61,10 +61,6 @@ RCT_EXTERN BOOL RCTImageHasAlpha(CGImageRef image); // Create an NSError in the NCTErrorDomain RCT_EXTERN NSError *RCTErrorWithMessage(NSString *message); -// Dispatch an error + result callback on the main thread. -typedef void (^RCTResultOrErrorBlock)(NSError *error, id result); -RCT_EXTERN void RCTDispatchCallbackOnMainQueue(RCTResultOrErrorBlock callback, NSError *error, id result); - // Convert nil values to NSNull, and vice-versa RCT_EXTERN id RCTNullIfNil(id value); RCT_EXTERN id RCTNilIfNull(id value); diff --git a/React/Base/RCTUtils.m b/React/Base/RCTUtils.m index fb79799a8..a9522ad8c 100644 --- a/React/Base/RCTUtils.m +++ b/React/Base/RCTUtils.m @@ -289,17 +289,6 @@ NSError *RCTErrorWithMessage(NSString *message) return error; } -void RCTDispatchCallbackOnMainQueue(RCTResultOrErrorBlock callback, NSError *error, id result) -{ - if ([NSThread isMainThread]) { - callback(error, result); - } else { - dispatch_async(dispatch_get_main_queue(), ^{ - callback(error, result); - }); - } -} - id RCTNullIfNil(id value) { return value ?: (id)kCFNull; diff --git a/React/React.xcodeproj/project.pbxproj b/React/React.xcodeproj/project.pbxproj index 3c0cfe722..513773b6d 100644 --- a/React/React.xcodeproj/project.pbxproj +++ b/React/React.xcodeproj/project.pbxproj @@ -101,6 +101,8 @@ 13456E921ADAD2DE009F94A7 /* RCTConvert+CoreLocation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "RCTConvert+CoreLocation.m"; sourceTree = ""; }; 13456E941ADAD482009F94A7 /* RCTConvert+MapKit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "RCTConvert+MapKit.h"; sourceTree = ""; }; 13456E951ADAD482009F94A7 /* RCTConvert+MapKit.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "RCTConvert+MapKit.m"; sourceTree = ""; }; + 1345A83A1B265A0E00583190 /* RCTURLRequestDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTURLRequestDelegate.h; sourceTree = ""; }; + 1345A83B1B265A0E00583190 /* RCTURLRequestHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTURLRequestHandler.h; sourceTree = ""; }; 134FCB391A6E7F0800051CC8 /* RCTContextExecutor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTContextExecutor.h; sourceTree = ""; }; 134FCB3A1A6E7F0800051CC8 /* RCTContextExecutor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTContextExecutor.m; sourceTree = ""; }; 134FCB3B1A6E7F0800051CC8 /* RCTWebViewExecutor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTWebViewExecutor.h; sourceTree = ""; }; @@ -396,6 +398,8 @@ 83CBBA491A601E3B00E9B192 /* Base */ = { isa = PBXGroup; children = ( + 1345A83A1B265A0E00583190 /* RCTURLRequestDelegate.h */, + 1345A83B1B265A0E00583190 /* RCTURLRequestHandler.h */, 14200DA81AC179B3008EE6BA /* RCTJavaScriptLoader.h */, 14200DA91AC179B3008EE6BA /* RCTJavaScriptLoader.m */, 83CBBA4A1A601E3B00E9B192 /* RCTAssert.h */, From cf8c2693af58aa2b35d1c598c77c1b75ecf2a4f9 Mon Sep 17 00:00:00 2001 From: David Callahan Date: Tue, 9 Jun 2015 12:19:24 -0700 Subject: [PATCH 26/32] Use getsectiondata --- React/Base/RCTBridge.m | 40 +++++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/React/Base/RCTBridge.m b/React/Base/RCTBridge.m index affefe7be..fc741208f 100644 --- a/React/Base/RCTBridge.m +++ b/React/Base/RCTBridge.m @@ -48,11 +48,11 @@ typedef NS_ENUM(NSUInteger, RCTBridgeFields) { }; #ifdef __LP64__ -typedef uint64_t RCTHeaderValue; +typedef struct mach_header_64 *RCTHeaderValue; typedef struct section_64 RCTHeaderSection; #define RCTGetSectByNameFromHeader getsectbynamefromheader_64 #else -typedef uint32_t RCTHeaderValue; +typedef struct mach_header *RCTHeaderValue; typedef struct section RCTHeaderSection; #define RCTGetSectByNameFromHeader getsectbynamefromheader #endif @@ -98,15 +98,15 @@ static NSArray *RCTJSMethods(void) dladdr(&RCTJSMethods, &info); const RCTHeaderValue mach_header = (RCTHeaderValue)info.dli_fbase; - const RCTHeaderSection *section = RCTGetSectByNameFromHeader((void *)mach_header, "__DATA", "RCTImport"); - - if (section) { - for (RCTHeaderValue addr = section->offset; - addr < section->offset + section->size; + unsigned long size = 0; + const uint8_t *sectionData = getsectiondata(mach_header, "__DATA", "RCTImport", &size); + if (sectionData) { + for (const uint8_t *addr = sectionData; + addr < sectionData + size; addr += sizeof(const char **)) { // Get data entry - NSString *entry = @(*(const char **)(mach_header + addr)); + NSString *entry = @(*(const char **)addr); [uniqueMethods addObject:entry]; } } @@ -139,15 +139,15 @@ static NSArray *RCTBridgeModuleClassesByModuleID(void) dladdr(&RCTBridgeModuleClassesByModuleID, &info); const RCTHeaderValue mach_header = (RCTHeaderValue)info.dli_fbase; - const RCTHeaderSection *section = RCTGetSectByNameFromHeader((void *)mach_header, "__DATA", "RCTExportModule"); - - if (section) { - for (RCTHeaderValue addr = section->offset; - addr < section->offset + section->size; + unsigned long size; + const uint8_t *sectionData = getsectiondata(mach_header, "__DATA", "RCTExportModule", &size); + if (sectionData) { + for (const uint8_t *addr = sectionData; + addr < sectionData + size; addr += sizeof(const char **)) { // Get data entry - NSString *entry = @(*(const char **)(mach_header + addr)); + NSString *entry = @(*(const char **)addr); NSArray *parts = [[entry substringWithRange:(NSRange){2, entry.length - 3}] componentsSeparatedByString:@" "]; @@ -481,21 +481,23 @@ static RCTSparseArray *RCTExportedMethodsByModuleID(void) dladdr(&RCTExportedMethodsByModuleID, &info); const RCTHeaderValue mach_header = (RCTHeaderValue)info.dli_fbase; - const RCTHeaderSection *section = RCTGetSectByNameFromHeader((void *)mach_header, "__DATA", "RCTExport"); - if (section == NULL) { + unsigned long size; + const uint8_t *sectionData = getsectiondata(mach_header, "__DATA", "RCTExport", &size); + + if (sectionData == NULL) { return; } NSArray *classes = RCTBridgeModuleClassesByModuleID(); NSMutableDictionary *methodsByModuleClassName = [NSMutableDictionary dictionaryWithCapacity:[classes count]]; - for (RCTHeaderValue addr = section->offset; - addr < section->offset + section->size; + for (const uint8_t *addr = sectionData; + addr < sectionData + size; addr += sizeof(const char **) * 3) { // Get data entry - const char **entries = (const char **)(mach_header + addr); + const char **entries = (const char **) addr; // Create method RCTModuleMethod *moduleMethod = From 90439cec26e5ba86ee4f7f12d5a7591cdd745e62 Mon Sep 17 00:00:00 2001 From: James Ide Date: Tue, 9 Jun 2015 14:26:40 -0700 Subject: [PATCH 27/32] [Bridge] Add support for JS async functions to RCT_EXPORT_METHOD Summary: Adds support for JS async methods and helps guide people writing native modules w.r.t. the callbacks. With this diff, on the native side you write: ```objc RCT_EXPORT_METHOD(getValueAsync:(NSString *)key resolver:(RCTPromiseResolver)resolve rejecter:(RCTPromiseRejecter)reject) { NSError *error = nil; id value = [_nativeDataStore valueForKey:key error:&error]; // "resolve" and "reject" are automatically defined blocks that take // any object (nil is OK) and an NSError, respectively if (!error) { resolve(value); } else { reject(error); } } ``` On the JS side, you can write: ```js var {DemoDataStore} = require('react-native').NativeModules; DemoDataStore.getValueAsync('sample-key').then((value) => { console.log('Got:', value); }, (error) => { console.error(error); // "error" is an Error object whose message is the NSError's description. // The NSError's code and domain are also set, and the native trace i Closes https://github.com/facebook/react-native/pull/1232 Github Author: James Ide Test Plan: Imported from GitHub, without a `Test Plan:` line. --- .../BatchedBridgeFactory.js | 68 ++++++++--- Libraries/Utilities/MessageQueue.js | 14 +-- React/Base/RCTBridge.m | 110 +++++++++++++++--- React/Base/RCTBridgeModule.h | 40 ++++++- 4 files changed, 190 insertions(+), 42 deletions(-) diff --git a/Libraries/BatchedBridge/BatchingImplementation/BatchedBridgeFactory.js b/Libraries/BatchedBridge/BatchingImplementation/BatchedBridgeFactory.js index dfc09ba7c..4702e246d 100644 --- a/Libraries/BatchedBridge/BatchingImplementation/BatchedBridgeFactory.js +++ b/Libraries/BatchedBridge/BatchingImplementation/BatchedBridgeFactory.js @@ -19,9 +19,17 @@ var slice = Array.prototype.slice; var MethodTypes = keyMirror({ remote: null, + remoteAsync: null, local: null, }); +type ErrorData = { + message: string; + domain: string; + code: number; + nativeStackIOS?: string; +}; + /** * Creates remotely invokable modules. */ @@ -36,21 +44,40 @@ var BatchedBridgeFactory = { */ _createBridgedModule: function(messageQueue, moduleConfig, moduleName) { var remoteModule = mapObject(moduleConfig.methods, function(methodConfig, memberName) { - return methodConfig.type === MethodTypes.local ? null : function() { - var lastArg = arguments.length > 0 ? arguments[arguments.length - 1] : null; - var secondLastArg = arguments.length > 1 ? arguments[arguments.length - 2] : null; - var hasSuccCB = typeof lastArg === 'function'; - var hasErrorCB = typeof secondLastArg === 'function'; - hasErrorCB && invariant( - hasSuccCB, - 'Cannot have a non-function arg after a function arg.' - ); - var numCBs = (hasSuccCB ? 1 : 0) + (hasErrorCB ? 1 : 0); - var args = slice.call(arguments, 0, arguments.length - numCBs); - var onSucc = hasSuccCB ? lastArg : null; - var onFail = hasErrorCB ? secondLastArg : null; - return messageQueue.call(moduleName, memberName, args, onFail, onSucc); - }; + switch (methodConfig.type) { + case MethodTypes.remote: + return function() { + var lastArg = arguments.length > 0 ? arguments[arguments.length - 1] : null; + var secondLastArg = arguments.length > 1 ? arguments[arguments.length - 2] : null; + var hasErrorCB = typeof lastArg === 'function'; + var hasSuccCB = typeof secondLastArg === 'function'; + hasSuccCB && invariant( + hasErrorCB, + 'Cannot have a non-function arg after a function arg.' + ); + var numCBs = (hasSuccCB ? 1 : 0) + (hasErrorCB ? 1 : 0); + var args = slice.call(arguments, 0, arguments.length - numCBs); + var onSucc = hasSuccCB ? secondLastArg : null; + var onFail = hasErrorCB ? lastArg : null; + messageQueue.call(moduleName, memberName, args, onSucc, onFail); + }; + + case MethodTypes.remoteAsync: + return function(...args) { + return new Promise((resolve, reject) => { + messageQueue.call(moduleName, memberName, args, resolve, (errorData) => { + var error = _createErrorFromErrorData(errorData); + reject(error); + }); + }); + }; + + case MethodTypes.local: + return null; + + default: + throw new Error('Unknown bridge method type: ' + methodConfig.type); + } }); for (var constName in moduleConfig.constants) { warning(!remoteModule[constName], 'saw constant and method named %s', constName); @@ -59,7 +86,6 @@ var BatchedBridgeFactory = { return remoteModule; }, - create: function(MessageQueue, modulesConfig, localModulesConfig) { var messageQueue = new MessageQueue(modulesConfig, localModulesConfig); return { @@ -80,4 +106,14 @@ var BatchedBridgeFactory = { } }; +function _createErrorFromErrorData(errorData: ErrorData): Error { + var { + message, + ...extraErrorInfo, + } = errorData; + var error = new Error(message); + error.framesToPop = 1; + return Object.assign(error, extraErrorInfo); +} + module.exports = BatchedBridgeFactory; diff --git a/Libraries/Utilities/MessageQueue.js b/Libraries/Utilities/MessageQueue.js index a09bd4f4a..8a819a939 100644 --- a/Libraries/Utilities/MessageQueue.js +++ b/Libraries/Utilities/MessageQueue.js @@ -441,14 +441,14 @@ var MessageQueueMixin = { }, /** - * @param {Function} onFail Function to store in current thread for later - * lookup, when request fails. * @param {Function} onSucc Function to store in current thread for later * lookup, when request succeeds. + * @param {Function} onFail Function to store in current thread for later + * lookup, when request fails. * @param {Object?=} scope Scope to invoke `cb` with. * @param {Object?=} res Resulting callback ids. Use `this._POOLED_CBIDS`. */ - _storeCallbacksInCurrentThread: function(onFail, onSucc, scope) { + _storeCallbacksInCurrentThread: function(onSucc, onFail, scope) { invariant(onFail || onSucc, INTERNAL_ERROR); this._bookkeeping.allocateCallbackIDs(this._POOLED_CBIDS); var succCBID = this._POOLED_CBIDS.successCallbackID; @@ -506,7 +506,7 @@ var MessageQueueMixin = { return ret; }, - call: function(moduleName, methodName, params, onFail, onSucc, scope) { + call: function(moduleName, methodName, params, onSucc, onFail, scope) { invariant( (!onFail || typeof onFail === 'function') && (!onSucc || typeof onSucc === 'function'), @@ -514,10 +514,10 @@ var MessageQueueMixin = { ); // Store callback _before_ sending the request, just in case the MailBox // returns the response in a blocking manner. - if (onSucc) { - this._storeCallbacksInCurrentThread(onFail, onSucc, scope, this._POOLED_CBIDS); + if (onSucc || onFail) { + this._storeCallbacksInCurrentThread(onSucc, onFail, scope, this._POOLED_CBIDS); + onSucc && params.push(this._POOLED_CBIDS.successCallbackID); onFail && params.push(this._POOLED_CBIDS.errorCallbackID); - params.push(this._POOLED_CBIDS.successCallbackID); } var moduleID = this._remoteModuleNameToModuleID[moduleName]; if (moduleID === undefined || moduleID === null) { diff --git a/React/Base/RCTBridge.m b/React/Base/RCTBridge.m index fc741208f..8a479eade 100644 --- a/React/Base/RCTBridge.m +++ b/React/Base/RCTBridge.m @@ -47,6 +47,11 @@ typedef NS_ENUM(NSUInteger, RCTBridgeFields) { RCTBridgeFieldFlushDateMillis }; +typedef NS_ENUM(NSUInteger, RCTJavaScriptFunctionKind) { + RCTJavaScriptFunctionKindNormal, + RCTJavaScriptFunctionKindAsync, +}; + #ifdef __LP64__ typedef struct mach_header_64 *RCTHeaderValue; typedef struct section_64 RCTHeaderSection; @@ -204,6 +209,27 @@ static NSArray *RCTBridgeModuleClassesByModuleID(void) return RCTModuleClassesByID; } +// TODO: Can we just replace RCTMakeError with this function instead? +static NSDictionary *RCTJSErrorFromNSError(NSError *error) +{ + NSString *errorMessage; + NSArray *stackTrace = [NSThread callStackSymbols]; + NSMutableDictionary *errorInfo = + [NSMutableDictionary dictionaryWithObject:stackTrace forKey:@"nativeStackIOS"]; + + if (error) { + errorMessage = error.localizedDescription ?: @"Unknown error from a native module"; + errorInfo[@"domain"] = error.domain ?: RCTErrorDomain; + errorInfo[@"code"] = @(error.code); + } else { + errorMessage = @"Unknown error from a native module"; + errorInfo[@"domain"] = RCTErrorDomain; + errorInfo[@"code"] = @-1; + } + + return RCTMakeError(errorMessage, nil, errorInfo); +} + @class RCTBatchedBridge; @interface RCTBridge () @@ -239,6 +265,7 @@ static NSArray *RCTBridgeModuleClassesByModuleID(void) @property (nonatomic, copy, readonly) NSString *moduleClassName; @property (nonatomic, copy, readonly) NSString *JSMethodName; @property (nonatomic, assign, readonly) SEL selector; +@property (nonatomic, assign, readonly) RCTJavaScriptFunctionKind functionKind; @end @@ -390,22 +417,64 @@ case _value: { \ [invocation setArgument:returnValue atIndex:index]; - free(returnValue); - }]; - break; + free(returnValue); + }]; + break; + } + + default: + defaultCase(argumentType); + } + } else if ([argumentName isEqualToString:@"RCTResponseSenderBlock"]) { + addBlockArgument(); + } else if ([argumentName isEqualToString:@"RCTPromiseResolveBlock"]) { + RCTAssert(i == numberOfArguments - 2, + @"The RCTPromiseResolveBlock must be the second to last parameter in -[%@ %@]", + _moduleClassName, objCMethodName); + RCT_ARG_BLOCK( + if (RCT_DEBUG && ![json isKindOfClass:[NSNumber class]]) { + RCTLogError(@"Argument %tu (%@) of %@.%@ must be a promise resolver ID", index, + json, RCTBridgeModuleNameForClass(_moduleClass), _JSMethodName); + return; } - default: - defaultCase(argumentType); - } - } else if ([argumentName isEqualToString:@"RCTResponseSenderBlock"]) { - addBlockArgument(); - } else { + // Marked as autoreleasing, because NSInvocation doesn't retain arguments + __autoreleasing RCTPromiseResolveBlock value = (^(id result) { + NSArray *arguments = result ? @[result] : @[]; + [bridge _invokeAndProcessModule:@"BatchedBridge" + method:@"invokeCallbackAndReturnFlushedQueue" + arguments:@[json, arguments] + context:context]; + }); + ) + _functionKind = RCTJavaScriptFunctionKindAsync; + } else if ([argumentName isEqualToString:@"RCTPromiseRejectBlock"]) { + RCTAssert(i == numberOfArguments - 1, + @"The RCTPromiseRejectBlock must be the last parameter in -[%@ %@]", + _moduleClassName, objCMethodName); + RCT_ARG_BLOCK( + if (RCT_DEBUG && ![json isKindOfClass:[NSNumber class]]) { + RCTLogError(@"Argument %tu (%@) of %@.%@ must be a promise rejecter ID", index, + json, RCTBridgeModuleNameForClass(_moduleClass), _JSMethodName); + return; + } - // Unknown argument type - RCTLogError(@"Unknown argument type '%@' in method %@. Extend RCTConvert" - " to support this type.", argumentName, [self methodName]); - } + // Marked as autoreleasing, because NSInvocation doesn't retain arguments + __autoreleasing RCTPromiseRejectBlock value = (^(NSError *error) { + NSDictionary *errorJSON = RCTJSErrorFromNSError(error); + [bridge _invokeAndProcessModule:@"BatchedBridge" + method:@"invokeCallbackAndReturnFlushedQueue" + arguments:@[json, @[errorJSON]] + context:context]; + }); + ) + _functionKind = RCTJavaScriptFunctionKindAsync; + } else { + + // Unknown argument type + RCTLogError(@"Unknown argument type '%@' in method %@. Extend RCTConvert" + " to support this type.", argumentName, [self methodName]); + } } _argumentBlocks = [argumentBlocks copy]; @@ -427,9 +496,18 @@ case _value: { \ // Safety check if (arguments.count != _argumentBlocks.count) { + NSInteger actualCount = arguments.count; + NSInteger expectedCount = _argumentBlocks.count; + + // Subtract the implicit Promise resolver and rejecter functions for implementations of async functions + if (_functionKind == RCTJavaScriptFunctionKindAsync) { + actualCount -= 2; + expectedCount -= 2; + } + RCTLogError(@"%@.%@ was called with %zd arguments, but expects %zd", RCTBridgeModuleNameForClass(_moduleClass), _JSMethodName, - arguments.count, _argumentBlocks.count); + actualCount, expectedCount); return; } } @@ -535,7 +613,7 @@ static RCTSparseArray *RCTExportedMethodsByModuleID(void) * }, * "methodName2": { * "methodID": 1, - * "type": "remote" + * "type": "remoteAsync" * }, * etc... * }, @@ -559,7 +637,7 @@ static NSDictionary *RCTRemoteModulesConfig(NSDictionary *modulesByName) [methods enumerateObjectsUsingBlock:^(RCTModuleMethod *method, NSUInteger methodID, BOOL *_stop) { methodsByName[method.JSMethodName] = @{ @"methodID": @(methodID), - @"type": @"remote", + @"type": method.functionKind == RCTJavaScriptFunctionKindAsync ? @"remoteAsync" : @"remote", }; }]; diff --git a/React/Base/RCTBridgeModule.h b/React/Base/RCTBridgeModule.h index f3a9a5a3e..d64e81693 100644 --- a/React/Base/RCTBridgeModule.h +++ b/React/Base/RCTBridgeModule.h @@ -17,6 +17,20 @@ */ typedef void (^RCTResponseSenderBlock)(NSArray *response); +/** + * Block that bridge modules use to resolve the JS promise waiting for a result. + * Nil results are supported and are converted to JS's undefined value. + */ +typedef void (^RCTPromiseResolveBlock)(id result); + +/** + * Block that bridge modules use to reject the JS promise waiting for a result. + * The error may be nil but it is preferable to pass an NSError object for more + * precise error messages. + */ +typedef void (^RCTPromiseRejectBlock)(NSError *error); + + /** * This constant can be returned from +methodQueue to force module * methods to be called on the JavaScript thread. This can have serious @@ -37,7 +51,7 @@ extern const dispatch_queue_t RCTJSThread; * A reference to the RCTBridge. Useful for modules that require access * to bridge features, such as sending events or making JS calls. This * will be set automatically by the bridge when it initializes the module. -* To implement this in your module, just add @synthesize bridge = _bridge; + * To implement this in your module, just add @synthesize bridge = _bridge; */ @property (nonatomic, weak) RCTBridge *bridge; @@ -70,6 +84,26 @@ extern const dispatch_queue_t RCTJSThread; * { ... } * * and is exposed to JavaScript as `NativeModules.ModuleName.doSomething`. + * + * ## Promises + * + * Bridge modules can also define methods that are exported to JavaScript as + * methods that return a Promise, and are compatible with JS async functions. + * + * Declare the last two parameters of your native method to be a resolver block + * and a rejecter block. The resolver block must precede the rejecter block. + * + * For example: + * + * RCT_EXPORT_METHOD(doSomethingAsync:(NSString *)aString + * resolver:(RCTPromiseResolveBlock)resolve + * rejecter:(RCTPromiseRejectBlock)reject + * { ... } + * + * Calling `NativeModules.ModuleName.doSomethingAsync(aString)` from + * JavaScript will return a promise that is resolved or rejected when your + * native method implementation calls the respective block. + * */ #define RCT_EXPORT_METHOD(method) \ RCT_REMAP_METHOD(, method) @@ -118,7 +152,7 @@ extern const dispatch_queue_t RCTJSThread; RCT_EXTERN_REMAP_MODULE(, objc_name, objc_supername) /** - * Similar to RCT_EXTERN_MODULE but allows setting a custom JavaScript name + * Like RCT_EXTERN_MODULE, but allows setting a custom JavaScript name. */ #define RCT_EXTERN_REMAP_MODULE(js_name, objc_name, objc_supername) \ objc_name : objc_supername \ @@ -136,7 +170,7 @@ extern const dispatch_queue_t RCTJSThread; RCT_EXTERN_REMAP_METHOD(, method) /** - * Similar to RCT_EXTERN_REMAP_METHOD but allows setting a custom JavaScript name + * Like RCT_EXTERN_REMAP_METHOD, but allows setting a custom JavaScript name. */ #define RCT_EXTERN_REMAP_METHOD(js_name, method) \ - (void)__rct_export__##method { \ From 6358e163a5c87f36d02410163aaae21a642dee9a Mon Sep 17 00:00:00 2001 From: Tadeu Zagallo Date: Tue, 9 Jun 2015 14:26:49 -0700 Subject: [PATCH 28/32] [ReactNative] Revert `async exports` changes to MessageQueue + test Summary: @public `[Bridge] Add support for JS async functions to RCT_EXPORT_METHOD` was imported but broke some internal code, reverting the `MessageQueue` that caused the issues and add a test, since the method is not used yet. Test Plan: Run the test o/ --- .../IntegrationTestsTests.m | 7 ++- .../js/IntegrationTestsApp.js | 1 + .../js/PromiseTest.js | 50 +++++++++++++++++++ .../BatchedBridgeFactory.js | 33 ++++++------ Libraries/RCTTest/RCTTestModule.m | 17 +++++++ Libraries/Utilities/MessageQueue.js | 14 +++--- React/Base/RCTBridge.m | 2 +- 7 files changed, 97 insertions(+), 27 deletions(-) create mode 100644 Examples/UIExplorer/UIExplorerIntegrationTests/js/PromiseTest.js diff --git a/Examples/UIExplorer/UIExplorerIntegrationTests/IntegrationTestsTests.m b/Examples/UIExplorer/UIExplorerIntegrationTests/IntegrationTestsTests.m index 75483fa6e..ddd204f99 100644 --- a/Examples/UIExplorer/UIExplorerIntegrationTests/IntegrationTestsTests.m +++ b/Examples/UIExplorer/UIExplorerIntegrationTests/IntegrationTestsTests.m @@ -33,7 +33,7 @@ _runner = RCTInitRunnerForApp(@"Examples/UIExplorer/UIExplorerIntegrationTests/js/IntegrationTestsApp"); // If tests have changes, set recordMode = YES below and run the affected - // tests on an iPhone5, iOS 8.1 simulator. + // tests on an iPhone5, iOS 8.3 simulator. _runner.recordMode = NO; } @@ -81,6 +81,11 @@ [_runner runTest:_cmd module:@"AppEventsTest"]; } +- (void)testPromises +{ + [_runner runTest:_cmd module:@"PromiseTest"]; +} + #pragma mark Snapshot Tests - (void)testSimpleSnapshot diff --git a/Examples/UIExplorer/UIExplorerIntegrationTests/js/IntegrationTestsApp.js b/Examples/UIExplorer/UIExplorerIntegrationTests/js/IntegrationTestsApp.js index d769c0831..21f0f7a2a 100644 --- a/Examples/UIExplorer/UIExplorerIntegrationTests/js/IntegrationTestsApp.js +++ b/Examples/UIExplorer/UIExplorerIntegrationTests/js/IntegrationTestsApp.js @@ -28,6 +28,7 @@ var TESTS = [ require('./LayoutEventsTest'), require('./AppEventsTest'), require('./SimpleSnapshotTest'), + require('./PromiseTest'), ]; TESTS.forEach( diff --git a/Examples/UIExplorer/UIExplorerIntegrationTests/js/PromiseTest.js b/Examples/UIExplorer/UIExplorerIntegrationTests/js/PromiseTest.js new file mode 100644 index 000000000..38660d3d8 --- /dev/null +++ b/Examples/UIExplorer/UIExplorerIntegrationTests/js/PromiseTest.js @@ -0,0 +1,50 @@ +/** + * 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 PromiseTest + */ +'use strict'; + +var RCTTestModule = require('NativeModules').TestModule; +var React = require('react-native'); + +var PromiseTest = React.createClass({ + + shouldResolve: false, + shouldReject: false, + + componentDidMount() { + Promise.all([ + this.testShouldResolve(), + this.testShouldReject(), + ]).then(() => RCTTestModule.finish( + this.shouldResolve && this.shouldReject + )); + }, + + testShouldResolve() { + return RCTTestModule + .shouldResolve() + .then(() => this.shouldResolve = true) + .catch(() => this.shouldResolve = false); + }, + + testShouldReject() { + return RCTTestModule + .shouldReject() + .then(() => this.shouldReject = false) + .catch(() => this.shouldReject = true); + }, + + render() { + return ; + } + +}); + +module.exports = PromiseTest; diff --git a/Libraries/BatchedBridge/BatchingImplementation/BatchedBridgeFactory.js b/Libraries/BatchedBridge/BatchingImplementation/BatchedBridgeFactory.js index 4702e246d..3243fb145 100644 --- a/Libraries/BatchedBridge/BatchingImplementation/BatchedBridgeFactory.js +++ b/Libraries/BatchedBridge/BatchingImplementation/BatchedBridgeFactory.js @@ -45,23 +45,6 @@ var BatchedBridgeFactory = { _createBridgedModule: function(messageQueue, moduleConfig, moduleName) { var remoteModule = mapObject(moduleConfig.methods, function(methodConfig, memberName) { switch (methodConfig.type) { - case MethodTypes.remote: - return function() { - var lastArg = arguments.length > 0 ? arguments[arguments.length - 1] : null; - var secondLastArg = arguments.length > 1 ? arguments[arguments.length - 2] : null; - var hasErrorCB = typeof lastArg === 'function'; - var hasSuccCB = typeof secondLastArg === 'function'; - hasSuccCB && invariant( - hasErrorCB, - 'Cannot have a non-function arg after a function arg.' - ); - var numCBs = (hasSuccCB ? 1 : 0) + (hasErrorCB ? 1 : 0); - var args = slice.call(arguments, 0, arguments.length - numCBs); - var onSucc = hasSuccCB ? secondLastArg : null; - var onFail = hasErrorCB ? lastArg : null; - messageQueue.call(moduleName, memberName, args, onSucc, onFail); - }; - case MethodTypes.remoteAsync: return function(...args) { return new Promise((resolve, reject) => { @@ -76,7 +59,21 @@ var BatchedBridgeFactory = { return null; default: - throw new Error('Unknown bridge method type: ' + methodConfig.type); + return function() { + var lastArg = arguments.length > 0 ? arguments[arguments.length - 1] : null; + var secondLastArg = arguments.length > 1 ? arguments[arguments.length - 2] : null; + var hasSuccCB = typeof lastArg === 'function'; + var hasErrorCB = typeof secondLastArg === 'function'; + hasErrorCB && invariant( + hasSuccCB, + 'Cannot have a non-function arg after a function arg.' + ); + var numCBs = (hasSuccCB ? 1 : 0) + (hasErrorCB ? 1 : 0); + var args = slice.call(arguments, 0, arguments.length - numCBs); + var onSucc = hasSuccCB ? lastArg : null; + var onFail = hasErrorCB ? secondLastArg : null; + return messageQueue.call(moduleName, memberName, args, onFail, onSucc); + }; } }); for (var constName in moduleConfig.constants) { diff --git a/Libraries/RCTTest/RCTTestModule.m b/Libraries/RCTTest/RCTTestModule.m index 2508b88fe..f7d504b06 100644 --- a/Libraries/RCTTest/RCTTestModule.m +++ b/Libraries/RCTTest/RCTTestModule.m @@ -69,4 +69,21 @@ RCT_EXPORT_METHOD(sendAppEvent:(NSString *)name body:(id)body) [_bridge.eventDispatcher sendAppEventWithName:name body:body]; } +RCT_REMAP_METHOD(shouldResolve, shouldResolve_resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) +{ + resolve(@1); +} + +RCT_REMAP_METHOD(shouldReject, shouldReject_resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) +{ + reject(nil); +} + +RCT_EXPORT_METHOD(finish:(BOOL)success) +{ + RCTAssert(success, @"RCTTestModule finished without success"); + [self markTestCompleted]; +} + + @end diff --git a/Libraries/Utilities/MessageQueue.js b/Libraries/Utilities/MessageQueue.js index 8a819a939..8a56aa714 100644 --- a/Libraries/Utilities/MessageQueue.js +++ b/Libraries/Utilities/MessageQueue.js @@ -441,14 +441,14 @@ var MessageQueueMixin = { }, /** - * @param {Function} onSucc Function to store in current thread for later - * lookup, when request succeeds. * @param {Function} onFail Function to store in current thread for later * lookup, when request fails. + * @param {Function} onSucc Function to store in current thread for later + * lookup, when request succeeds. * @param {Object?=} scope Scope to invoke `cb` with. * @param {Object?=} res Resulting callback ids. Use `this._POOLED_CBIDS`. */ - _storeCallbacksInCurrentThread: function(onSucc, onFail, scope) { + _storeCallbacksInCurrentThread: function(onFail, onSucc, scope) { invariant(onFail || onSucc, INTERNAL_ERROR); this._bookkeeping.allocateCallbackIDs(this._POOLED_CBIDS); var succCBID = this._POOLED_CBIDS.successCallbackID; @@ -506,7 +506,7 @@ var MessageQueueMixin = { return ret; }, - call: function(moduleName, methodName, params, onSucc, onFail, scope) { + call: function(moduleName, methodName, params, onFail, onSucc, scope) { invariant( (!onFail || typeof onFail === 'function') && (!onSucc || typeof onSucc === 'function'), @@ -514,10 +514,10 @@ var MessageQueueMixin = { ); // Store callback _before_ sending the request, just in case the MailBox // returns the response in a blocking manner. - if (onSucc || onFail) { - this._storeCallbacksInCurrentThread(onSucc, onFail, scope, this._POOLED_CBIDS); - onSucc && params.push(this._POOLED_CBIDS.successCallbackID); + if (onFail || onSucc) { + this._storeCallbacksInCurrentThread(onFail, onSucc, scope, this._POOLED_CBIDS); onFail && params.push(this._POOLED_CBIDS.errorCallbackID); + onSucc && params.push(this._POOLED_CBIDS.successCallbackID); } var moduleID = this._remoteModuleNameToModuleID[moduleName]; if (moduleID === undefined || moduleID === null) { diff --git a/React/Base/RCTBridge.m b/React/Base/RCTBridge.m index 8a479eade..f79026fda 100644 --- a/React/Base/RCTBridge.m +++ b/React/Base/RCTBridge.m @@ -473,7 +473,7 @@ case _value: { \ // Unknown argument type RCTLogError(@"Unknown argument type '%@' in method %@. Extend RCTConvert" - " to support this type.", argumentName, [self methodName]); + " to support this type.", argumentName, [self methodName]); } } From 68bb3a7e7159c3682996d6ff601fcdd98a1aa2cc Mon Sep 17 00:00:00 2001 From: Spencer Ahrens Date: Tue, 9 Jun 2015 14:51:25 -0700 Subject: [PATCH 29/32] [ReactNative] orange box Summary: @public There have been multiple instances of confusion about whether a redbox means the developer did something they shouldn't but things will keep working, or if something went horribly wrong and the app will crash in prod. This diff introduces an orange background color to the redbox for `console.error` and `RCTLogError` to indicate that something bad happened, but that the app will continue working. Test Plan: see orange error for geo permissions: {F22541375} --- React/Base/RCTLog.m | 3 +++ React/Base/RCTRedBox.h | 2 ++ React/Base/RCTRedBox.m | 17 +++++++++++++++-- React/Modules/RCTExceptionsManager.m | 4 +++- 4 files changed, 23 insertions(+), 3 deletions(-) diff --git a/React/Base/RCTLog.m b/React/Base/RCTLog.m index d99bb4fe1..9469d3015 100644 --- a/React/Base/RCTLog.m +++ b/React/Base/RCTLog.m @@ -171,6 +171,9 @@ void _RCTLogFormat( // Log to red box if (level >= RCTLOG_REDBOX_LEVEL) { + if (level < RCTLOG_FATAL_LEVEL) { + [[RCTRedBox sharedInstance] setNextBackgroundColor:[UIColor colorWithRed:0.9 green:0.4 blue:0.2 alpha:1]]; + } [[RCTRedBox sharedInstance] showErrorMessage:message]; } diff --git a/React/Base/RCTRedBox.h b/React/Base/RCTRedBox.h index 9a3a9b49a..7a1f51f36 100644 --- a/React/Base/RCTRedBox.h +++ b/React/Base/RCTRedBox.h @@ -18,6 +18,8 @@ - (void)showErrorMessage:(NSString *)message withStack:(NSArray *)stack; - (void)updateErrorMessage:(NSString *)message withStack:(NSArray *)stack; +- (void)setNextBackgroundColor:(UIColor *)color; + - (NSString *)currentErrorMessage; - (void)dismiss; diff --git a/React/Base/RCTRedBox.m b/React/Base/RCTRedBox.m index 6330454ab..b293a162d 100644 --- a/React/Base/RCTRedBox.m +++ b/React/Base/RCTRedBox.m @@ -29,14 +29,15 @@ NSArray *_lastStackTrace; UITableViewCell *_cachedMessageCell; + UIColor *_redColor; } - (id)initWithFrame:(CGRect)frame { if ((self = [super initWithFrame:frame])) { - + _redColor = [UIColor colorWithRed:0.8 green:0 blue:0 alpha:1]; self.windowLevel = UIWindowLevelStatusBar + 5; - self.backgroundColor = [UIColor colorWithRed:0.8 green:0 blue:0 alpha:1]; + self.backgroundColor = _redColor; self.hidden = YES; UIViewController *rootController = [[UIViewController alloc] init]; @@ -132,6 +133,7 @@ - (void)dismiss { self.hidden = YES; + self.backgroundColor = _redColor; [self resignFirstResponder]; [[[[UIApplication sharedApplication] delegate] window] makeKeyWindow]; } @@ -261,6 +263,7 @@ @implementation RCTRedBox { RCTRedBoxWindow *_window; + UIColor *_nextBackgroundColor; } + (instancetype)sharedInstance @@ -273,6 +276,11 @@ return _sharedInstance; } +- (void)setNextBackgroundColor:(UIColor *)color +{ + _nextBackgroundColor = color; +} + - (void)showErrorMessage:(NSString *)message { [self showErrorMessage:message withStack:nil showIfHidden:YES]; @@ -304,6 +312,10 @@ _window = [[RCTRedBoxWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; } [_window showErrorMessage:message withStack:stack showIfHidden:shouldShow]; + if (_nextBackgroundColor) { + _window.backgroundColor = _nextBackgroundColor; + _nextBackgroundColor = nil; + } }); } @@ -334,6 +346,7 @@ - (void)updateErrorMessage:(NSString *)message withStack:(NSArray *)stack {} - (void)showErrorMessage:(NSString *)message withStack:(NSArray *)stack showIfHidden:(BOOL)shouldShow {} - (NSString *)currentErrorMessage { return nil; } +- (void)setNextBackgroundColor:(UIColor *)color {} - (void)dismiss {} @end diff --git a/React/Modules/RCTExceptionsManager.m b/React/Modules/RCTExceptionsManager.m index 64a5c85f0..4a9815f31 100644 --- a/React/Modules/RCTExceptionsManager.m +++ b/React/Modules/RCTExceptionsManager.m @@ -44,7 +44,9 @@ RCT_EXPORT_METHOD(reportSoftException:(NSString *)message [_delegate handleSoftJSExceptionWithMessage:message stack:stack]; return; } - // JS already logs the error via console. + RCTRedBox *box = [RCTRedBox sharedInstance]; + [box setNextBackgroundColor:[UIColor colorWithRed:0.9 green:0.4 blue:0.2 alpha:1]]; + [box showErrorMessage:message withStack:stack]; } RCT_EXPORT_METHOD(reportFatalException:(NSString *)message From 847dff8d75836bfc66e20c9d363d4ad6d7d1fb7e Mon Sep 17 00:00:00 2001 From: Tadeu Zagallo Date: Tue, 9 Jun 2015 15:42:10 -0700 Subject: [PATCH 30/32] [ReactNative] Make JavaScript executors bridge modules Summary: @public This is the first of a few diffs that change the way the executors are handled by the bridge. For they are just promoted to modules, so they are automatically loaded by the bridge. Test Plan: Tested on UIExplorer, Catalyst and MAdMan. Tested all the 3 executors, everything looks fine. --- .../UIExplorerUnitTests/RCTAllocationTests.m | 7 +- .../UIExplorerUnitTests/RCTBridgeTests.m | 4 ++ .../RCTContextExecutorTests.m | 23 +++++-- .../RCTPushNotificationManager.m | 2 +- Libraries/WebSocket/RCTWebSocketExecutor.m | 69 ++++++++++--------- React/Base/RCTBridge.m | 21 +++--- React/Base/RCTJavaScriptExecutor.h | 13 ++-- React/Executors/RCTContextExecutor.m | 56 ++++++++------- React/Executors/RCTWebViewExecutor.m | 20 ++++-- 9 files changed, 131 insertions(+), 84 deletions(-) diff --git a/Examples/UIExplorer/UIExplorerUnitTests/RCTAllocationTests.m b/Examples/UIExplorer/UIExplorerUnitTests/RCTAllocationTests.m index 5e4ef0be3..7eafce75e 100644 --- a/Examples/UIExplorer/UIExplorerUnitTests/RCTAllocationTests.m +++ b/Examples/UIExplorer/UIExplorerUnitTests/RCTAllocationTests.m @@ -133,8 +133,8 @@ RCT_EXPORT_MODULE(); (void)bridge; } - // Sleep on the main thread so the deallocation can happen on the JS thread. - sleep(DEFAULT_TIMEOUT); + RUN_RUNLOOP_WHILE(weakExecutor, 1); + sleep(1); XCTAssertNil(weakExecutor, @"JavaScriptExecutor should have been released"); } @@ -151,7 +151,8 @@ RCT_EXPORT_MODULE(); (void)bridge; } - sleep(DEFAULT_TIMEOUT); + RUN_RUNLOOP_WHILE(weakContext, 1); + sleep(1); XCTAssertNil(weakContext, @"RCTJavaScriptContext should have been deallocated"); } diff --git a/Examples/UIExplorer/UIExplorerUnitTests/RCTBridgeTests.m b/Examples/UIExplorer/UIExplorerUnitTests/RCTBridgeTests.m index ff4b8cae3..390459b1b 100644 --- a/Examples/UIExplorer/UIExplorerUnitTests/RCTBridgeTests.m +++ b/Examples/UIExplorer/UIExplorerUnitTests/RCTBridgeTests.m @@ -25,6 +25,10 @@ @implementation TestExecutor +RCT_EXPORT_MODULE() + +- (void)setUp {} + - (instancetype)init { if (self = [super init]) { diff --git a/Examples/UIExplorer/UIExplorerUnitTests/RCTContextExecutorTests.m b/Examples/UIExplorer/UIExplorerUnitTests/RCTContextExecutorTests.m index 534f9ad91..1ba3eaf56 100644 --- a/Examples/UIExplorer/UIExplorerUnitTests/RCTContextExecutorTests.m +++ b/Examples/UIExplorer/UIExplorerUnitTests/RCTContextExecutorTests.m @@ -13,18 +13,28 @@ @end @implementation RCTContextExecutorTests +{ + RCTContextExecutor *_executor; +} + +- (void)setUp +{ + [super setUp]; + _executor = [[RCTContextExecutor alloc] init]; + RCTSetExecutorID(_executor); + [_executor setUp]; +} - (void)testNativeLoggingHookExceptionBehavior { - RCTContextExecutor *executor = [[RCTContextExecutor alloc] init]; dispatch_semaphore_t doneSem = dispatch_semaphore_create(0); - [executor executeApplicationScript:@"var x = {toString: function() { throw 1; }}; nativeLoggingHook(x);" + [_executor executeApplicationScript:@"var x = {toString: function() { throw 1; }}; nativeLoggingHook(x);" sourceURL:[NSURL URLWithString:@"file://"] onComplete:^(id error){ dispatch_semaphore_signal(doneSem); }]; dispatch_semaphore_wait(doneSem, DISPATCH_TIME_FOREVER); - [executor invalidate]; + [_executor invalidate]; } static uint64_t _get_time_nanoseconds(void) @@ -91,7 +101,6 @@ static uint64_t _get_time_nanoseconds(void) }; dispatch_semaphore_t semaphore = dispatch_semaphore_create(0); - RCTContextExecutor *executor = RCTCreateExecutor([RCTContextExecutor class]); NSString *script = @" \ var modules = { \ module: { \ @@ -105,7 +114,7 @@ static uint64_t _get_time_nanoseconds(void) } \ "; - [executor executeApplicationScript:script sourceURL:[NSURL URLWithString:@"http://localhost:8081/"] onComplete:^(NSError *error) { + [_executor executeApplicationScript:script sourceURL:[NSURL URLWithString:@"http://localhost:8081/"] onComplete:^(NSError *error) { NSMutableArray *params = [[NSMutableArray alloc] init]; id data = @1; for (int i = 0; i < 4; i++) { @@ -115,10 +124,10 @@ static uint64_t _get_time_nanoseconds(void) for (int j = 0; j < runs; j++) { @autoreleasepool { double start = _get_time_nanoseconds(); - [executor executeJSCall:@"module" + [_executor executeJSCall:@"module" method:@"method" arguments:params - context:RCTGetExecutorID(executor) + context:RCTGetExecutorID(_executor) callback:^(id json, NSError *__error) { RCTAssert([json isEqual:@YES], @"Invalid return"); }]; diff --git a/Libraries/PushNotificationIOS/RCTPushNotificationManager.m b/Libraries/PushNotificationIOS/RCTPushNotificationManager.m index 1966c6045..12d6ba456 100644 --- a/Libraries/PushNotificationIOS/RCTPushNotificationManager.m +++ b/Libraries/PushNotificationIOS/RCTPushNotificationManager.m @@ -121,7 +121,7 @@ RCT_EXPORT_METHOD(getApplicationIconBadgeNumber:(RCTResponseSenderBlock)callback RCT_EXPORT_METHOD(requestPermissions:(NSDictionary *)permissions) { - UIUserNotificationType types = UIRemoteNotificationTypeNone; + UIUserNotificationType types = UIUserNotificationTypeNone; if (permissions) { if ([permissions[@"alert"] boolValue]) { types |= UIUserNotificationTypeAlert; diff --git a/Libraries/WebSocket/RCTWebSocketExecutor.m b/Libraries/WebSocket/RCTWebSocketExecutor.m index 97095a5c9..a8cf9ae5e 100644 --- a/Libraries/WebSocket/RCTWebSocketExecutor.m +++ b/Libraries/WebSocket/RCTWebSocketExecutor.m @@ -31,8 +31,11 @@ typedef void (^RCTWSMessageCallback)(NSError *error, NSDictionary *reply); RCTSparseArray *_callbacks; dispatch_semaphore_t _socketOpenSemaphore; NSMutableDictionary *_injectedObjects; + NSURL *_url; } +RCT_EXPORT_MODULE() + - (instancetype)init { return [self initWithURL:[NSURL URLWithString:@"http://localhost:8081/debugger-proxy"]]; @@ -41,41 +44,45 @@ typedef void (^RCTWSMessageCallback)(NSError *error, NSDictionary *reply); - (instancetype)initWithURL:(NSURL *)URL { if (self = [super init]) { - - _jsQueue = dispatch_queue_create("com.facebook.React.WebSocketExecutor", DISPATCH_QUEUE_SERIAL); - _socket = [[RCTSRWebSocket alloc] initWithURL:URL]; - _socket.delegate = self; - _callbacks = [[RCTSparseArray alloc] init]; - _injectedObjects = [[NSMutableDictionary alloc] init]; - [_socket setDelegateDispatchQueue:_jsQueue]; - - NSURL *startDevToolsURL = [NSURL URLWithString:@"/launch-chrome-devtools" relativeToURL:URL]; - [NSURLConnection connectionWithRequest:[NSURLRequest requestWithURL:startDevToolsURL] delegate:nil]; - - if (![self connectToProxy]) { - RCTLogError(@"Connection to %@ timed out. Are you running node proxy? If \ - you are running on the device, check if you have the right IP \ - address in `RCTWebSocketExecutor.m`.", URL); - [self invalidate]; - return nil; - } - - NSInteger retries = 3; - BOOL runtimeIsReady = [self prepareJSRuntime]; - while (!runtimeIsReady && retries > 0) { - runtimeIsReady = [self prepareJSRuntime]; - retries--; - } - if (!runtimeIsReady) { - RCTLogError(@"Runtime is not ready. Make sure Chrome is running and not " - "paused on a breakpoint or exception and try reloading again."); - [self invalidate]; - return nil; - } + _url = URL; } return self; } +- (void)setUp +{ + _jsQueue = dispatch_queue_create("com.facebook.React.WebSocketExecutor", DISPATCH_QUEUE_SERIAL); + _socket = [[RCTSRWebSocket alloc] initWithURL:_url]; + _socket.delegate = self; + _callbacks = [[RCTSparseArray alloc] init]; + _injectedObjects = [[NSMutableDictionary alloc] init]; + [_socket setDelegateDispatchQueue:_jsQueue]; + + NSURL *startDevToolsURL = [NSURL URLWithString:@"/launch-chrome-devtools" relativeToURL:_url]; + [NSURLConnection connectionWithRequest:[NSURLRequest requestWithURL:startDevToolsURL] delegate:nil]; + + if (![self connectToProxy]) { + RCTLogError(@"Connection to %@ timed out. Are you running node proxy? If \ + you are running on the device, check if you have the right IP \ + address in `RCTWebSocketExecutor.m`.", _url); + [self invalidate]; + return; + } + + NSInteger retries = 3; + BOOL runtimeIsReady = [self prepareJSRuntime]; + while (!runtimeIsReady && retries > 0) { + runtimeIsReady = [self prepareJSRuntime]; + retries--; + } + if (!runtimeIsReady) { + RCTLogError(@"Runtime is not ready. Make sure Chrome is running and not " + "paused on a breakpoint or exception and try reloading again."); + [self invalidate]; + return; + } +} + - (BOOL)connectToProxy { _socketOpenSemaphore = dispatch_semaphore_create(0); diff --git a/React/Base/RCTBridge.m b/React/Base/RCTBridge.m index f79026fda..841d7c0b1 100644 --- a/React/Base/RCTBridge.m +++ b/React/Base/RCTBridge.m @@ -899,7 +899,7 @@ RCT_INNER_BRIDGE_ONLY(_invokeAndProcessModule:(NSString *)module method:(NSStrin @implementation RCTBatchedBridge { BOOL _loading; - id _javaScriptExecutor; + __weak id _javaScriptExecutor; RCTSparseArray *_modulesByID; RCTSparseArray *_queuesByID; dispatch_queue_t _methodQueue; @@ -936,13 +936,6 @@ RCT_INNER_BRIDGE_ONLY(_invokeAndProcessModule:(NSString *)module method:(NSStrin [_mainDisplayLink addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSRunLoopCommonModes]; } - /** - * Initialize executor to allow enqueueing calls - */ - Class executorClass = self.executorClass ?: [RCTContextExecutor class]; - _javaScriptExecutor = RCTCreateExecutor(executorClass); - _latestJSExecutor = _javaScriptExecutor; - /** * Initialize and register bridge modules *before* adding the display link * so we don't have threading issues @@ -980,7 +973,7 @@ RCT_INNER_BRIDGE_ONLY(_invokeAndProcessModule:(NSString *)module method:(NSStrin - (Class)executorClass { - return _parentBridge.executorClass; + return _parentBridge.executorClass ?: [RCTContextExecutor class]; } - (void)setExecutorClass:(Class)executorClass @@ -1045,6 +1038,16 @@ RCT_INNER_BRIDGE_ONLY(_invokeAndProcessModule:(NSString *)module method:(NSStrin // Store modules _modulesByName = [modulesByName copy]; + /** + * The executor is a bridge module, wait for it to be created and set it before + * any other module has access to the bridge + */ + _javaScriptExecutor = _modulesByName[RCTBridgeModuleNameForClass(self.executorClass)]; + _latestJSExecutor = _javaScriptExecutor; + RCTSetExecutorID(_javaScriptExecutor); + + [_javaScriptExecutor setUp]; + // Set bridge for (id module in _modulesByName.allValues) { if ([module respondsToSelector:@selector(setBridge:)]) { diff --git a/React/Base/RCTJavaScriptExecutor.h b/React/Base/RCTJavaScriptExecutor.h index 8f1eb8a98..7a3aa2870 100644 --- a/React/Base/RCTJavaScriptExecutor.h +++ b/React/Base/RCTJavaScriptExecutor.h @@ -11,6 +11,7 @@ #import +#import "RCTBridgeModule.h" #import "RCTInvalidating.h" typedef void (^RCTJavaScriptCompleteBlock)(NSError *error); @@ -20,7 +21,13 @@ typedef void (^RCTJavaScriptCallback)(id json, NSError *error); * Abstracts away a JavaScript execution context - we may be running code in a * web view (for debugging purposes), or may be running code in a `JSContext`. */ -@protocol RCTJavaScriptExecutor +@protocol RCTJavaScriptExecutor + +/** + * Used to set up the executor after the bridge has been fully initialized. + * Do any expensive setup in this method instead of `-init`. + */ +- (void)setUp; /** * Executes given method with arguments on JS thread and calls the given callback @@ -61,14 +68,12 @@ typedef void (^RCTJavaScriptCallback)(id json, NSError *error); @end static const char *RCTJavaScriptExecutorID = "RCTJavaScriptExecutorID"; -__used static id RCTCreateExecutor(Class executorClass) +__used static void RCTSetExecutorID(id executor) { static NSUInteger executorID = 0; - id executor = [[executorClass alloc] init]; if (executor) { objc_setAssociatedObject(executor, RCTJavaScriptExecutorID, @(++executorID), OBJC_ASSOCIATION_RETAIN); } - return executor; } __used static NSNumber *RCTGetExecutorID(id executor) diff --git a/React/Executors/RCTContextExecutor.m b/React/Executors/RCTContextExecutor.m index 627255c37..d17791c9a 100644 --- a/React/Executors/RCTContextExecutor.m +++ b/React/Executors/RCTContextExecutor.m @@ -68,6 +68,8 @@ NSThread *_javaScriptThread; } +RCT_EXPORT_MODULE() + /** * The one tiny pure native hook that we implement is a native logging hook. * You could even argue that this is not necessary - we could plumb logging @@ -233,37 +235,43 @@ static NSError *RCTNSErrorFromJSError(JSContextRef context, JSValueRef jsError) JSGlobalContextRef ctx; if (context) { ctx = JSGlobalContextRetain(context); - } else { - JSContextGroupRef group = JSContextGroupCreate(); - ctx = JSGlobalContextCreateInGroup(group, NULL); -#if FB_JSC_HACK - JSContextGroupBindToCurrentThread(group); -#endif - JSContextGroupRelease(group); + strongSelf->_context = [[RCTJavaScriptContext alloc] initWithJSContext:ctx]; } - - strongSelf->_context = [[RCTJavaScriptContext alloc] initWithJSContext:ctx]; - [strongSelf _addNativeHook:RCTNativeLoggingHook withName:"nativeLoggingHook"]; - [strongSelf _addNativeHook:RCTNoop withName:"noop"]; - -#if RCT_DEV - [strongSelf _addNativeHook:RCTConsoleProfile withName:"consoleProfile"]; - [strongSelf _addNativeHook:RCTConsoleProfileEnd withName:"consoleProfileEnd"]; - - for (NSString *event in @[RCTProfileDidStartProfiling, RCTProfileDidEndProfiling]) { - [[NSNotificationCenter defaultCenter] addObserver:self - selector:@selector(toggleProfilingFlag:) - name:event - object:nil]; - } -#endif - }]; } return self; } +- (void)setUp +{ + __weak RCTContextExecutor *weakSelf = self; + [self executeBlockOnJavaScriptQueue:^{ + RCTContextExecutor *strongSelf = weakSelf; + if (!strongSelf) { + return; + } + if (!strongSelf->_context) { + JSGlobalContextRef ctx = JSGlobalContextCreate(NULL); + JSGlobalContextRetain(ctx); + strongSelf->_context = [[RCTJavaScriptContext alloc] initWithJSContext:ctx]; + } + [strongSelf _addNativeHook:RCTNativeLoggingHook withName:"nativeLoggingHook"]; + [strongSelf _addNativeHook:RCTNoop withName:"noop"]; +#if RCT_DEV + [strongSelf _addNativeHook:RCTConsoleProfile withName:"consoleProfile"]; + [strongSelf _addNativeHook:RCTConsoleProfileEnd withName:"consoleProfileEnd"]; + + for (NSString *event in @[RCTProfileDidStartProfiling, RCTProfileDidEndProfiling]) { + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(toggleProfilingFlag:) + name:event + object:nil]; + } +#endif + }]; +} + - (void)toggleProfilingFlag:(NSNotification *)notification { JSObjectRef globalObject = JSContextGetGlobalObject(_context.ctx); diff --git a/React/Executors/RCTWebViewExecutor.m b/React/Executors/RCTWebViewExecutor.m index 56323fb99..fb3c6f031 100644 --- a/React/Executors/RCTWebViewExecutor.m +++ b/React/Executors/RCTWebViewExecutor.m @@ -46,16 +46,14 @@ static void RCTReportError(RCTJavaScriptCallback callback, NSString *fmt, ...) NSRegularExpression *_scriptTagsRegex; } +RCT_EXPORT_MODULE() + @synthesize valid = _valid; - (instancetype)initWithWebView:(UIWebView *)webView { if ((self = [super init])) { - _objectsToInject = [[NSMutableDictionary alloc] init]; - _webView = webView ?: [[UIWebView alloc] init]; - _commentsRegex = [NSRegularExpression regularExpressionWithPattern:@"(^ *?\\/\\/.*?$|\\/\\*\\*[\\s\\S]*?\\*\\/)" options:NSRegularExpressionAnchorsMatchLines error:NULL], - _scriptTagsRegex = [NSRegularExpression regularExpressionWithPattern:@"<(\\/?script[^>]*?)>" options:0 error:NULL], - _webView.delegate = self; + _webView = webView; } return self; } @@ -65,6 +63,18 @@ static void RCTReportError(RCTJavaScriptCallback callback, NSString *fmt, ...) return [self initWithWebView:nil]; } +- (void)setUp +{ + if (!_webView) { + _webView = [[UIWebView alloc] init]; + } + + _objectsToInject = [[NSMutableDictionary alloc] init]; + _commentsRegex = [NSRegularExpression regularExpressionWithPattern:@"(^ *?\\/\\/.*?$|\\/\\*\\*[\\s\\S]*?\\*\\/)" options:NSRegularExpressionAnchorsMatchLines error:NULL], + _scriptTagsRegex = [NSRegularExpression regularExpressionWithPattern:@"<(\\/?script[^>]*?)>" options:0 error:NULL], + _webView.delegate = self; +} + - (void)invalidate { _valid = NO; From 6c6b8bec7e7eadf387f6569d3cb4c5b6462c2d09 Mon Sep 17 00:00:00 2001 From: Spencer Ahrens Date: Tue, 9 Jun 2015 15:43:52 -0700 Subject: [PATCH 31/32] [ReactNative] Fix require-time redboxes --- .../DependencyResolver/haste/polyfills/require.js | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/packager/react-packager/src/DependencyResolver/haste/polyfills/require.js b/packager/react-packager/src/DependencyResolver/haste/polyfills/require.js index 807058480..04a0bff75 100644 --- a/packager/react-packager/src/DependencyResolver/haste/polyfills/require.js +++ b/packager/react-packager/src/DependencyResolver/haste/polyfills/require.js @@ -117,11 +117,12 @@ } var _now = _performance ? - _performance.now.bind(_performance) : function(){return 0;}; + _performance.now.bind(_performance) : function(){ return 0; }; var _factoryStackCount = 0; var _factoryTime = 0; var _totalFactories = 0; + var _inGuard = false; /** * The require function conforming to CommonJS spec: @@ -188,9 +189,15 @@ } return module.exports; } - - if (global.ErrorUtils && !global.ErrorUtils.inGuard()) { - return ErrorUtils.applyWithGuard(require, this, arguments); + if (global.ErrorUtils && !_inGuard) { + _inGuard = true; + try { + var ret = require.apply(this, arguments); + } catch(e) { + global.ErrorUtils.reportFatalError(e); + } + _inGuard = false; + return ret; } if (!module) { From 3102fc5df9bc8bc4ead6b1a0fd041938859ba50d Mon Sep 17 00:00:00 2001 From: Spencer Ahrens Date: Tue, 9 Jun 2015 16:02:16 -0700 Subject: [PATCH 32/32] [ReactNative] Fix secure text entry Summary: @public `validAttributes` strikes again. Test Plan: secure box in example is actually secure --- Libraries/Components/TextInput/TextInput.js | 54 +++---------------- .../createReactNativeComponentClass.js | 1 + 2 files changed, 7 insertions(+), 48 deletions(-) diff --git a/Libraries/Components/TextInput/TextInput.js b/Libraries/Components/TextInput/TextInput.js index 1867b0c7f..0b3d8d4e3 100644 --- a/Libraries/Components/TextInput/TextInput.js +++ b/Libraries/Components/TextInput/TextInput.js @@ -19,7 +19,6 @@ var Platform = require('Platform'); var PropTypes = require('ReactPropTypes'); var React = require('React'); var ReactChildren = require('ReactChildren'); -var ReactNativeViewAttributes = require('ReactNativeViewAttributes'); var StyleSheet = require('StyleSheet'); var Text = require('Text'); var TextInputState = require('TextInputState'); @@ -29,36 +28,7 @@ var TouchableWithoutFeedback = require('TouchableWithoutFeedback'); var createReactNativeComponentClass = require('createReactNativeComponentClass'); var emptyFunction = require('emptyFunction'); var invariant = require('invariant'); -var merge = require('merge'); - -var RCTTextViewAttributes = merge(ReactNativeViewAttributes.UIView, { - autoCorrect: true, - autoCapitalize: true, - clearTextOnFocus: true, - color: true, - editable: true, - fontFamily: true, - fontSize: true, - fontStyle: true, - fontWeight: true, - keyboardType: true, - returnKeyType: true, - enablesReturnKeyAutomatically: true, - secureTextEntry: true, - selectTextOnFocus: true, - mostRecentEventCounter: true, - placeholder: true, - placeholderTextColor: true, - text: true, -}); - -var RCTTextFieldAttributes = merge(RCTTextViewAttributes, { - caretHidden: true, - enabled: true, - clearButtonMode: true, - clearTextOnFocus: true, - selectTextOnFocus: true, -}); +var requireNativeComponent = require('requireNativeComponent'); var onlyMultiline = { onSelectionChange: true, @@ -82,16 +52,14 @@ var AndroidTextInputAttributes = { testID: true, }; -var viewConfigIOS = { - uiViewClassName: 'RCTTextField', - validAttributes: RCTTextFieldAttributes, -}; - var viewConfigAndroid = { uiViewClassName: 'AndroidTextInput', validAttributes: AndroidTextInputAttributes, }; +var RCTTextView = requireNativeComponent('RCTTextView', null); +var RCTTextField = requireNativeComponent('RCTTextField', null); + type DefaultProps = { bufferDelay: number; }; @@ -164,7 +132,7 @@ var TextInput = React.createClass({ */ keyboardType: PropTypes.oneOf([ // Cross-platform - 'default', + 'default', 'numeric', 'email-address', // iOS-only @@ -296,7 +264,7 @@ var TextInput = React.createClass({ */ mixins: [NativeMethodsMixin, TimerMixin], - viewConfig: ((Platform.OS === 'ios' ? viewConfigIOS : + viewConfig: ((Platform.OS === 'ios' ? RCTTextField.viewConfig : (Platform.OS === 'android' ? viewConfigAndroid : {})) : Object), isFocused: function(): boolean { @@ -577,16 +545,6 @@ var styles = StyleSheet.create({ }, }); -var RCTTextView = createReactNativeComponentClass({ - validAttributes: RCTTextViewAttributes, - uiViewClassName: 'RCTTextView', -}); - -var RCTTextField = createReactNativeComponentClass({ - validAttributes: RCTTextFieldAttributes, - uiViewClassName: 'RCTTextField', -}); - var AndroidTextInput = createReactNativeComponentClass({ validAttributes: AndroidTextInputAttributes, uiViewClassName: 'AndroidTextInput', diff --git a/Libraries/ReactNative/createReactNativeComponentClass.js b/Libraries/ReactNative/createReactNativeComponentClass.js index 65af58d5e..3940df012 100644 --- a/Libraries/ReactNative/createReactNativeComponentClass.js +++ b/Libraries/ReactNative/createReactNativeComponentClass.js @@ -35,6 +35,7 @@ var createReactNativeComponentClass = function( this.previousFlattenedStyle = null; }; Constructor.displayName = viewConfig.uiViewClassName; + Constructor.viewConfig = viewConfig; Constructor.prototype = new ReactNativeBaseComponent(viewConfig); Constructor.prototype.constructor = Constructor;

<2<0K<{61lYK;%u~59@Xm;p`p5-zjjDzz%^c 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�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