incubator-callback-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Joe Bowser <>
Subject [Android] loadUrl, input methods and making the web a thread-safe place
Date Thu, 26 Jul 2012 22:44:35 GMT

So, on ICS and greater, it turns out that the routing table is
fragile, so fragile in fact that you can't connect to localhost if you
don't have an internet connection of some sort.  This is a problem for
us on Android because we need to connect to localhost to use the
bridge and communicate with the Callback Server so that we can get the
callbacks.  In my opinion, this is the straw that broke the camel's
back, and this bug is far worse than the reason we moved to the
CallbackServer to begin with.

First, some history:

Back in OSCON 2010, we talked to Justin at Google about how they could
help PhoneGap, and he mentioned that we shouldn't be using loadUrl for
sending Javascript over because it is linked to the Handler and can
interrupt the UI thread.  He suggested a callback server, which Bryce
implemented.  The callback server and sending commands over the prompt
happened at roughly the same six months, when Gingerbread was being
rolled out.

Now, in 2012, we are starting to have issues with the Callback Server
approach, and we should examine why we did this in the first place.
The test case for it is simple:

1. Put an input field on the accelerometer page on Mobile-Spec
2. Turn on Accelerometer
3. Try to type something

What it will do is it will update the accelerometer values as you type
text. This is awesome, but I'm wondering if anyone is actually going
to use this use case, and if it's OK to break this functionality in
exchange for performance and stability.  We currently have the ability
to use loadUrl("javascript:foo()") again by checking whether we have
focus on a text field, which we can use with HitTestResult, which
inspect's webkit's cursor.  This would fix the bug that I call
"Airplane, Airplane Crash" where you can crash our bridge by switching
your phone in and out of airplane mode over and over again.  I have a
test repository here, and it passes most of Mobile Spec.  It would be
nice to be able to have this as a configurable option to start.

Any thoughts?


View raw message