From bdcdfb03d41f82e2c9cd94147fd5fafe89e1a339 Mon Sep 17 00:00:00 2001 From: Nick Lockwood Date: Wed, 1 Jun 2016 06:18:17 -0700 Subject: [PATCH] Fixed "Sending `didSendNetworkData` with no listeners registered" warning Summary: XMLHttpRequest was sending the request before registering any listeners, resulting in a warning from the native event emitter. Since we weren't seeing widespread problems with XHR missing data, this was probably working OK in practice because the queuing of events meant that the listener would have been registered before the message was actually delivered. Still, this was working more through luck than design. This diff fixes it by registering the listeners *before* sending the request. Reviewed By: lexs Differential Revision: D3371320 fbshipit-source-id: c688d4053a61f856eaacccd0106905edbefcc86a --- Libraries/Network/XMLHttpRequest.js | 32 ++++++++++++++--------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/Libraries/Network/XMLHttpRequest.js b/Libraries/Network/XMLHttpRequest.js index 24c9445124f..cdd4073126c 100644 --- a/Libraries/Network/XMLHttpRequest.js +++ b/Libraries/Network/XMLHttpRequest.js @@ -212,22 +212,6 @@ class XMLHttpRequest extends EventTarget(...XHR_EVENTS) { // exposed for testing __didCreateRequest(requestId: number): void { this._requestId = requestId; - this._subscriptions.push(RCTNetworking.addListener( - 'didSendNetworkData', - (args) => this.__didUploadProgress(...args) - )); - this._subscriptions.push(RCTNetworking.addListener( - 'didReceiveNetworkResponse', - (args) => this._didReceiveResponse(...args) - )); - this._subscriptions.push(RCTNetworking.addListener( - 'didReceiveNetworkData', - (args) => this._didReceiveData(...args) - )); - this._subscriptions.push(RCTNetworking.addListener( - 'didCompleteNetworkResponse', - (args) => this.__didCompleteResponse(...args) - )); } // exposed for testing @@ -340,6 +324,22 @@ class XMLHttpRequest extends EventTarget(...XHR_EVENTS) { useIncrementalUpdates: boolean, timeout: number, ): void { + this._subscriptions.push(RCTNetworking.addListener( + 'didSendNetworkData', + (args) => this.__didUploadProgress(...args) + )); + this._subscriptions.push(RCTNetworking.addListener( + 'didReceiveNetworkResponse', + (args) => this._didReceiveResponse(...args) + )); + this._subscriptions.push(RCTNetworking.addListener( + 'didReceiveNetworkData', + (args) => this._didReceiveData(...args) + )); + this._subscriptions.push(RCTNetworking.addListener( + 'didCompleteNetworkResponse', + (args) => this.__didCompleteResponse(...args) + )); RCTNetworking.sendRequest( method, url,