Shazron Abdullah created CB-10106:
-------------------------------------
Summary: iOS bridges need to take into account bridge changes
Key: CB-10106
URL: https://issues.apache.org/jira/browse/CB-10106
Project: Apache Cordova
Issue Type: Bug
Components: iOS, Plugin WKWebViewEngine
Reporter: Shazron Abdullah
New bridges (and the existing bridge) needs to take into account bridge changes.
Each bridge should have this at the end of their .js:
{code}
// unregister the old bridge
cordova.define.remove('cordova/exec');
// redefine bridge to our new bridge
cordova.define("cordova/exec", function(require, exports, module) {
module.exports = iOSExec;
});
{code}
But, this would only re-define cordova.exec and the return value of
`require('cordova/exec')`. However, if the bridge was not loaded first,
existing local references in plugins to `require('cordova/exec')` will not be
updated.
Therefore, each bridge itself must detect that it is not the current bridge,
and forward commands to the new bridge. Thus:
{code}
var iOSExec = function() {
if (iOSExec !== cordova.exec) {
cordova.exec.apply(null, arguments);
return;
}
// ... rest of the implementation here...
}
{code}
There might be an edge case where a command is already in the commandQueue
(default bridge) when the bridge is swapped, that needs to be handled.
I realize this seems hacky, but if there's a better way to handle this case I'm
all ears.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]