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. Tim ________________________________________ From: Jesse <purplecabb...@gmail.com> Sent: Tuesday, May 5, 2015 9:57 AM To: dev@cordova.apache.org 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. @purplecabbage risingj.com On Mon, May 4, 2015 at 3:56 PM, Tim Barham <tim.bar...@microsoft.com> 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 <purplecabb...@gmail.com> > Sent: Saturday, May 2, 2015 2:28 AM > To: dev@cordova.apache.org > 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 <tim.bar...@microsoft.com> > 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: dev-unsubscr...@cordova.apache.org > For additional commands, e-mail: dev-h...@cordova.apache.org > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscr...@cordova.apache.org > For additional commands, e-mail: dev-h...@cordova.apache.org > > --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@cordova.apache.org For additional commands, e-mail: dev-h...@cordova.apache.org