You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cordova.apache.org by "ASF GitHub Bot (JIRA)" <ji...@apache.org> on 2015/06/18 01:00:18 UTC
[jira] [Commented] (CB-8838) WKWebView iosExec Results in Double
Call
[ https://issues.apache.org/jira/browse/CB-8838?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14590800#comment-14590800 ]
ASF GitHub Bot commented on CB-8838:
------------------------------------
Github user shazron commented on the pull request:
https://github.com/apache/cordova-ios/pull/136#issuecomment-112975173
FYI this is in 4.0.x, will be auto-closed.
> WKWebView iosExec Results in Double Call
> ----------------------------------------
>
> Key: CB-8838
> URL: https://issues.apache.org/jira/browse/CB-8838
> Project: Apache Cordova
> Issue Type: Sub-task
> Components: CordovaJS, CordovaLib, iOS
> Affects Versions: 4.0.0
> Reporter: Thomas Mouton
> Assignee: Shazron Abdullah
> Fix For: 4.0.0
>
> Original Estimate: 4h
> Remaining Estimate: 4h
>
> When we invoke the cordova Barcode plugin, it is always called twice!
> I have only looked at the code a short time, but it appears to me that:
> * the first call to Barcode happens, and in iosExec, it gets placed in commandQueue.
> * the first call passes to Objective C world by WKScriptMessageHandler - (void)userContentController:(WKUserContentController*)userContentController didReceiveScriptMessage:(WKScriptMessage*)message
> * this call to Barcode does its thing, completes, and it's javascript response handler code winds through:
> CDVCommandDelegateImpl::sendPluginResult
> CDVCommandDelegateImpl::evalJSHelper
> CDVCommandDelegateImpl::evalJSHelper2
> * in Helper2, the callback is finally passed to a webViewEngine, which processes the Javascript, and returns, on completion, a list of commands remaining in the javascript commandQueue.
> * these commands are queued on the Obj-C side and run in CDVCommandQueue fashion.
> AHA!
> * since the command was persisted in commandQueue before execution, and not removed, it is called again!
> SO
> I moved the enqueue behavior into the branch that excludes bridgeMode === jsToNativeModes.WK_WEBVIEW_BINDING
> This fixes it, but I am not confident its the right solution.
> Do you have any insight into this problem?
> Feedback for my solution?
> A broader or more appropriate venue for the conversation?
> Thanks!
> Alex Mouton
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@cordova.apache.org
For additional commands, e-mail: issues-help@cordova.apache.org