Try searching on the mail list, there should be information there. And
probably in JIRA too.

I’m a little familiar with the addJavascriptInterface bridge, but not with
the prompt bridge, there are several bridges and the prompt bridge was used
in old android versions only and I never looked into it.

El El sáb, 17 ene 2026 a las 18:28, Niklas Merz <[email protected]>
escribió:

> Great thank you. This confirms a lot I found during my digging.
>
> You're right I've opted to hack into the prompt method to use it with
> Websockets because this is currently the only thing that's possible with
> Servo. Servo lacks addJavascriptInterface and evaluateJavascript today.
>
> Did you ever find how out how these messages are built? What things like
> "51 S11 Battery..." mean? I suppose "S" is for success but I'll still
> have to figure out how to correctly split and parse these prompt
> messages.
>
> On January 17, 2026, "[email protected]" <[email protected]>
> wrote:
> > I don't think there is any documentation but I've done quite a bit of
> > reverse engineering myself in the past and might be able to loosely
> > explain the architecture. There are 3 classes that are probably of
> > interest to look at in the cordova-android framework:
> >
> > 1. SystemWebChromeClient
> > 2. SystemExposedJsApi
> > 3. CordovaBridge
> >
> > Based on my understanding, SystemWebViewEngine contains the entry
> > point
> > into native side, by using the onJsPrompt hook. This method is
> > normally
> > to handle window.prompt calls but Cordova uses it to deliver a payload
> > to native. The payload is passed to CordovaBridge and it decides if it
> > is a bridge call or if it is a regular window.prompt call.
> >
> > If it is a bridge call, it does some sanity access checks and pushes
> > the messages through a queue system which gets routed to plugins
> > (somehow).
> >
> > SystemExposedJsApi has some JavascriptInterface methods, which are
> > methods exposed directly to the webiew, and JS can call these methods
> > directly which controls bridge state. It also includes a `exec`
> > JavascriptInterface method, which seems to deliver a payload to the
> > bridge, similar to the prompt method. Both of these might be used, and
> > to me it looks like the bridge call implementation strategy might be
> > swapped based on certain conditions.
> >
> > Although based on your log snippets, it seems like it is using the
> > prompt method.
> >
> > Hopefully this at least puts your focus in the right direction.
> >
> > On Sat, 2026-01-17 at 17:45 +0100, Niklas Merz wrote:
> > > Hey everyone,
> > >
> > > As some of you know I'm currently trying out if Servo can be used in
> > > Cordova Android. I've made some good progress on my plugin [1] and
> > > now I
> > > could use some help with getting plugins going.
> > >
> > > If got the bride working with some hacky glue code and now some
> > > messages
> > > like this are exchanged:
> > >
> > > [ServoWS] Call to prompt []
> > > gap:[1670500204,"Battery","start","Battery1880458036"] servo-
> > > bridge.js
> > > <
> > > <http://localhost:5000/plugins/cordova-plugin-servo-
> > webview/www/servo>-
> > > bridge.js> [ServoWS] Intercepted gap: call [1670500204, "Battery",
> > > "start", "Battery1880458036"] servo-bridge.js
> > > <
> > > <http://localhost:5000/plugins/cordova-plugin-servo-
> > webview/www/servo>-
> > > bridge.js> [ServoWS] Call to prompt [false]
> > >
> > gap:[1670500204,"Geolocation","getPermission","Geolocation1880458037"
> > > ]
> > > servo-bridge.js <<http://localhost:5000/plugins/cordova-plugin-
> > servo>-
> > > webview/www/servo-bridge.js> [ServoWS] Intercepted gap: call
> > > [1670500204, "Geolocation", "getPermission",
> > "Geolocation1880458037"]
> > > servo-bridge.js <<http://localhost:5000/plugins/cordova-plugin-
> > servo>-
> > > webview/www/servo-bridge.js> [ServoWS] Received message: 51 S11
> > > Battery1880458036 {"level":59,"isPlugged":true}29 S01
> > > Geolocation1880458037 n36 servo-bridge.js
> > > <
> > > <http://localhost:5000/plugins/cordova-plugin-servo-
> > webview/www/servo>-
> > > bridge.js>
> > > Can someone can point me to any kind documentation on how the plugin
> > > bridge works? I've never looked into the part and if someone has any
> > > info I could save some time digging through the code and reverse
> > > engineering stuff.
> > >
> > > The chances are slim, I know, but maybe there is something out
> > there.
> > >
> > > Cheers,
> > > Niklas
> > >
> > >
> > > [1] <<https://github.com/NiklasMerz/cordova-plugin-servo-webview>>
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [email protected]
> > For additional commands, e-mail: [email protected]
>

Reply via email to