incubator-callback-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Anis KADRI <anis.ka...@gmail.com>
Subject Re: [Android] Plugin.ctx needs a rename
Date Mon, 18 Jun 2012 22:04:16 GMT
Yes it drove me nuts last time I was trying to write my google maps plugin.

https://github.com/imhotep/MapsPlugin/blob/master/GMPlugin.java

ctx.getContext() as you see in the file above definitely looks stupid and
broke my plugin that was working initially. My vote goes for trashing ctx.

-a

On Mon, Jun 18, 2012 at 2:58 PM, Filip Maj <fil@adobe.com> wrote:

> Sure thing.
>
> So from the early PhoneGap/Cordova days, the plugin interface (see [1] for
> old code ref from 0.9.6) has had a "ctx" member which pointed to a
> PhoneGapActivity (later renamed CordovaActivity) member which was an
> interface that extended the Android Activity class. The Activity class
> extends the Context class. So, in terms of naming, this made a lot of
> sense. In plugins back in the days of yore, you could do this in your
> plugin code:
>
> (Context)this.ctx
>
> .. And get access to Android Context info. Standard Java casting ceremony.
> Nothing out of the ordinary.
>
> Since CordovaWebView came into the picture, it is no longer necessary that
> the top-level class housing the cordova web view is an activity. All that
> we require now is that the housing class implement the CordovaInterface.
> Therefore we don't have the guarantee that "ctx" is a Context.
>
> This changes things. You can no longer cast a plugin's "ctx" member to
> Context.
>
> For me it's just about labeling. Rename this to something not resembling
> "Context" so it is _less_ confusing.
>
> Hope that makes sense.
>
> [1]
> https://github.com/apache/incubator-cordova-android/blob/f3d7ce8fc368609e73
> 923ca17913f0129f3620cd/framework/src/com/phonegap/api/Plugin.java#L23
>
> On 6/18/12 2:45 PM, "Brian LeRoux" <b@brian.io> wrote:
>
> >cool w/ that, and of course I trust you, but can you explain the
> >problem with ctx, a familiar convention since the earliest days of
> >phonegap/android, so I understand the benefit of the proposed
> >solution?
> >
> >(breaking plugins will cause some backlash and, as I mentioned,
> >creating a more abstract interface does increase ramp up for new
> >native devs)
> >
> >
> >On Mon, Jun 18, 2012 at 4:35 PM, Filip Maj <fil@adobe.com> wrote:
> >> Brian, we're doing Android devs (potential plugin authors) a favor here,
> >> trust me.
> >>
> >> 2.0 is our chance to break interfaces.
> >>
> >> Also, +1 to Bryce's comment re: get this change in for 1.9, deprecate
> >>the
> >> .ctx member in 1.9 as well, and axe it in 2.0.
> >>
> >> On 6/18/12 12:15 PM, "Brian LeRoux" <b@brian.io> wrote:
> >>
> >>>I'm of the opinion that native impl should *not* abstract the
> >>>platforms at the plugin level. It breaks old plugins, which is fine,
> >>>but for what benefit? Conceptual purity at that level will make it
> >>>harder to recruit plugin authors from their respective navtive
> >>>platforms.
> >>>
> >>>On Mon, Jun 18, 2012 at 3:06 PM, Michael Brooks
> >>><michael@michaelbrooks.ca> wrote:
> >>>> If we are planning to rename the Cordova interface object, then we
> >>>>should
> >>>> do it for each platform in a consistent manner. There should be a
> >>>>parent
> >>>> JIRA issue with sub-tasks for each Cordova platform.
> >>>>
> >>>> On Mon, Jun 18, 2012 at 11:50 AM, Filip Maj <fil@adobe.com> wrote:
> >>>>
> >>>>> Yeh "ctx" implies Context, especially for Android peoples, so +1
to
> >>>>> renaming to something less Android-ey.
> >>>>>
> >>>>> On 6/18/12 11:45 AM, "Joe Bowser" <bowserj@gmail.com> wrote:
> >>>>>
> >>>>> >Hey
> >>>>> >
> >>>>> >Since we're approaching 2.0 and since part of the goals of 2.0
is to
> >>>>> >improve the plugin architecture, I'm wondering if we should
take the
> >>>>> >opportunity to give the CordovaInterface variable on Plugin.java
a
> >>>>>name
> >>>>> >other than ctx, which on Android usually refers to a context.
 The
> >>>>>reason
> >>>>> >for this is the fact that there's a use case where the
> >>>>>CordovaInterface
> >>>>> >may
> >>>>> >not be a Context.  I propose that we change the name to cordova.
> >>>>> >
> >>>>> >I'm not sure if this needs a JIRA ticket or not.
> >>>>> >
> >>>>> >Any thoughts?
> >>>>> >
> >>>>> >Joe
> >>>>>
> >>>>>
> >>
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message