cordova-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tim Barham <>
Subject Re: Cordova 5.0.0 "duplicate cordova" check breaks Ripple
Date Tue, 05 May 2015 00:23:28 GMT
Thanks Jesse...

> but still it will be at least a week before we can get a new everything out

And the alternatives will take less than a week? :)

While I agree there may be better ways for Ripple to "do it's thing", my immediate concern
is to get Ripple working as quickly as possible. If we can indeed kill those two birds with
one stone, that's great, but I'm worried that anything beyond a simple fix will drag out for
quite a while.

Also, I was picturing these sorts of changes as being part of proper plugin simulation support
built into Cordova (that is, the ongoing project I've mentioned previously) - I wonder if
for now we should just fix this the quickest way we can, and make sure the appropriate, public,
documented hooks are in place as part of that project.

> override the entire cordova object

BTW, I guess you already know this, but to make sure it is clear - Ripple doesn't override
the cordova object - it only overrides cordova/exec. It intercepts the creation of the cordova
property so it can immediately patch cordova/exec before it can get called by anyone. It seems
to me that patching cordova/exec is pretty fundamental to how Ripple works, but if there was
another way it could ensure the correct timing (that is, patch cordova/exec after the cordova
object is created, but before it can ever get called), that would probably suffice.

I don't think cordova/exec/proxy is going to be a viable solution (at least as it currently
works) - isn't there the risk that that will get overridden by plugins themselves? Also, Ripple
wants to intercept *any* cordova.exec call, even ones it doesn't know about (so it can display
UI to handle those cases) - how to we handle that using cordova/exec/proxy?

Thanks for looking into this, BTW.


From: Jesse <>
Sent: Tuesday, May 5, 2015 9:57 AM
Subject: Re: Cordova 5.0.0 "duplicate cordova" check breaks Ripple

Yeah, my reasoning is that it is difficult to update all the affected bits
in cordova.  We can change the cordova logic, but still it will be at least
a week before we can get a new everything out.

Part of my reasoning is that ripple claims to be a '... platform agnostic
mobile application development and testing tool.' We should make that part
true as well.

Personally, I consider ripple's use of 'cordova' to be risky given that we
have certain expectations of how our own library works, which may or may
not be private to cordova.  I would much rather see ripple implement a
ripple-cordova connector class which uses cordova/exec/proxy or some
cordova apis that we purposely publish, which is what I plan to look into
this week. Or we can consider moving to a model where we do define a way to
override the entire cordova object, and document it.


On Mon, May 4, 2015 at 3:56 PM, Tim Barham <> wrote:

> Hey Jesse - is your reasoning behind that to avoid having to release an
> update for Cordova tools + all platforms, or because you don't want to
> change the existing Cordova logic (and if the latter, what's your concern)?
> Have you had any inspiration about how to fix Ripple to avoid tripping
> this? I've not been able to come up with a safe approach yet. On the other
> hand, the change in Cordova to avoid triggering this is very simple - just
> a pain that it requires releasing a bunch of updates.
> Tim
> ________________________________________
> From: Jesse <>
> Sent: Saturday, May 2, 2015 2:28 AM
> To:
> Subject: Re: Cordova 5.0.0 "duplicate cordova" check breaks Ripple
> I think ripple will need to change, I'll have a look and see if there is a
> more elegant way to implement honeypot.
> > On Apr 30, 2015, at 7:06 PM, Tim Barham <>
> wrote:
> >
> > Hey everyone - a bug was filed today against Ripple that it is broken
> with
> > Cordova 5.0.0. The issue is that Ripple triggers the new "duplicate
> > cordova" check:
> >
> >     cordova-js/src/cordova.js line 22:
> >     if ("cordova" in window) { throw new Error("cordova already
> defined"); };
> >
> > Ripple patches cordova by defining a setter for window.cordova to
> > intercept it being created. This is sufficient to make ("cordova" in
> > window) return true. I don't see a way to readily resolve this issue in
> > Ripple. We can fix it in Cordova by changing the test to:
> >
> >   if (window.cordova) ...
> >
> > Couple of questions:
> > 1. Any reason not to make this change?
> > 2. To get this fix out will require re-releasing all platforms, correct?
> > And I presume a tools release to update the pinned platforms? Is this
> > sufficient reason to trigger such a release?
> >
> > Thanks!
> >
> > Tim
> ---------------------------------------------------------------------
> To unsubscribe, e-mail:
> For additional commands, e-mail:
> ---------------------------------------------------------------------
> To unsubscribe, e-mail:
> For additional commands, e-mail:

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message