Dear mailing list, For reasons too complicated to explain here, i would like to have a result of WebViewClient.shouldInterceptRequest be based on a result of Javascript call in another WebView instance. As shouldInterceptRequest is being invoked on a non-Main thread, while WebView.evaluateJavascript is expected to be called on Main, i actually tried it. Miracles don't happen: the shouldInterceptRequest IOThread gets as far as enqueing a main thread task and waiting itself on a condition. Main thread keeps running after evaluateJavascript execution, but its ValueCallback never hits. Chrome Inspection of the "another" WebView instance shows it frozen, expectedly deadlocked on IOThread somewhere inside WebKit.
My skimming of the WebKit and Crosswalk sources shows that shouldInterceptRequest starts its life as an asynchronous IOThread task, so my question is: how insane it would be to try propagating that asynchronicity through the JNI interface, so that it won't block IOThread on return value? FYI, the Android PoC is here https://github.com/pavel-zdenek/android-testbrowser which works out of the box because i shortcutted the JS eval. It will deadlock on uncommenting https://github.com/pavel-zdenek/android-testbrowser/blob/master/app/src/main/java/my/mybrowser/background/ScriptContainer.java#L111 (and removing the following line) Best regards, Pavel Zdenek _______________________________________________ Crosswalk-dev mailing list Crosswalk-dev@lists.crosswalk-project.org https://lists.crosswalk-project.org/mailman/listinfo/crosswalk-dev