mirror of https://github.com/status-im/metro.git
[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:
parent
253544cb45
commit
69e4217fbe
|
@ -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));
|
||||||
|
|
Loading…
Reference in New Issue