[ReactNative] Refactor BatchedBridge and MessageQueue

Summary:
@public

The current implementation of `MessageQueue` is huge, over-complicated and spread
across `MethodQueue`, `MethodQueueMixin`, `BatchedBridge` and `BatchedBridgeFactory`

Refactored in a simpler way, were it's just a `MessageQueue` class and `BatchedBridge`
is only an instance of it.

Test Plan:
I had to make some updates to the tests, but no real update to the native side.
There's also tests covering the `remoteAsync` methods, and more integration tests for UIExplorer.
Verified whats being used by Android, and it should be safe, also tests Android tests have been pretty reliable.

Manually testing: Create a big hierarchy, like `<ListView>` example. Use the `TimerMixin` example to generate multiple calls.
Test the failure callback on the `Geolocation` example.

All the calls go through this entry point, so it's hard to miss if it's broken.
This commit is contained in:
Tadeu Zagallo 2015-06-17 07:51:48 -07:00
parent 253544cb45
commit 69e4217fbe
1 changed files with 3 additions and 2 deletions

View File

@ -48,10 +48,11 @@ var messageHandlers = {
loadScript(message.url, sendReply.bind(null, null)); loadScript(message.url, sendReply.bind(null, null));
}, },
'executeJSCall': function(message, sendReply) { 'executeJSCall': function(message, sendReply) {
var returnValue = [[], [], [], [], []]; var returnValue = null;
try { try {
if (window && window.require) { if (window && window.require) {
returnValue = window.require(message.moduleName)[message.moduleMethod].apply(null, message.arguments); var module = window.require(message.moduleName);
returnValue = module[message.moduleMethod].apply(module, message.arguments);
} }
} finally { } finally {
sendReply(JSON.stringify(returnValue)); sendReply(JSON.stringify(returnValue));