Hmm, shoot. This change is harmless I think, but I just committed a change to FileTransfer to allow passing in a headers map, which does the exact thing you warn against - it now has up to two JS objects being passed within the arguments array. (https://issues.apache.org/jira/browse/CB-765)
Could elaborate on this restriction? Is it that the JSON parser on WP7 supports extracting only a single JS object within the top-level array? Does it support nested objects? I'm not sure what you mean by object types. On Fri, Jul 27, 2012 at 9:11 PM, Jesse <[email protected]> wrote: > Windows 8, WP8 at least > .net only supports basic JSON serialization without the inclusion of > the 300KB JSON.net lib. > > > > On Fri, Jul 27, 2012 at 6:05 PM, Shazron Abdullah <[email protected]> > wrote: > > Thanks Jesse - seems like a doc issue we need to write for cross > > platform plugins. Would you know if this is a concern for other > > platforms as well besides WP7? > > > > On 2012-07-27, at 6:00 PM, Jesse <[email protected]> wrote: > > > >> Okay, that all looks/sounds fine. > >> However, we have to be careful not to encourage passing multiple > >> objects in the array, in addition to multiple different object types. > >> We should continue to strive to make sure that everything outside of > >> exec is portable, so even though in iOS, exec can receive args of > >> [{name:value}, {name:value}] the JS calling code will NOT be portable. > >> > >> I worry (just a little) we are opening a door we may have to close > later. > >> > >> > >> > >> > >> > >> On Fri, Jul 27, 2012 at 5:37 PM, Shazron <[email protected]> wrote: > >>> These changes transfer the decision that was done in JS to the > Objective-C side. > >>> The arguments are passed in as-is, if an object is passed in as an > >>> array element, it is converted to a NSDictionary in objective-C. So if > >>> you use the new plugin signature, you can pass in as many objects as > >>> you want to the plugin method, they will be in order in the arguments > >>> array as NSDictionary-s. > >>> > >>> The "extraction" occurs when we compare the plugin method signature - > >>> if its a legacy signature, we extract the first NSDictionary from the > >>> arguments, like we did in JS. If its not a legacy signature, we pass > >>> the arguments unchanged. > >>> > >>> re: > https://github.com/agrieve/incubator-cordova-ios/compare/legacy_exec#L3R63 > >>> > >>> > >>> On Fri, Jul 27, 2012 at 5:26 PM, Jesse <[email protected]> > wrote: > >>>> Wait! > >>>> > >>>> Can we discuss the EXACT nature of the command array? > >>>> I have had to work through a similar issue on WP7, it would be > >>>> extremely valuable if we could agree on what the args to exec looks > >>>> like. > >>>> > >>>> It looks like your changes are all inside and beyond exec, but I want > >>>> to make sure. > >>>> > >>>> In the past we discussed removing the array altogether and passing > >>>> named objects as args. > >>>> On WP7 it is extremely difficult to interpret arrays that do not > >>>> contain the same types of object. > >>>> For example, if the command has args of > ['what',23,{obj:literal},[1,2,3]] > >>>> > >>>> Do we still have a limitation of only passing 1 object literal? > >>>> > >>>> > >>>> > >>>> On Fri, Jul 27, 2012 at 5:08 PM, Andrew Grieve <[email protected]> > wrote: > >>>>> Committed. > >>>>> Sounds good! You update the dev guide, and I'll work to update the > existing > >>>>> core plugins. > >>>>> > >>>>> > >>>>> On Fri, Jul 27, 2012 at 6:22 PM, Shazron <[email protected]> wrote: > >>>>> > >>>>>> Thanks Andrew, this looks good! > >>>>>> > >>>>>> Once you merge it in, I'll add the doc issues, especially the Plugin > >>>>>> Dev Guide, we don't want people to start using the old way. I was > >>>>>> thinking, a deprecation NSLog would be great if they are using the > old > >>>>>> way, but that will just be too much noise at this point... > >>>>>> > >>>>>> On Fri, Jul 27, 2012 at 2:06 PM, Andrew Grieve < > [email protected]> > >>>>>> wrote: > >>>>>>> Shaz, > >>>>>>> > >>>>>>> I mentioned doing such a change during PGD, but was hoping you > could > >>>>>> give it > >>>>>>> a sanity check over: > >>>>>>> > >>>>>>> https://issues.apache.org/jira/browse/CB-1150 > >>>>>>> > https://github.com/agrieve/incubator-cordova-ios/compare/legacy_exec > >>>>>>> https://github.com/agrieve/incubator-cordova-js/tree/better_exec > >>>>>>> > >>>>>>> I ensured mobile-spec and unit tests pass, so should be good to go > I > >>>>>> think. > >>>>>>> > >>>>>>> Andrew > >>>>>> > >>>> > >>>> > >>>> > >>>> -- > >>>> @purplecabbage > >>>> risingj.com > >> > >> > >> > >> -- > >> @purplecabbage > >> risingj.com > > > > -- > @purplecabbage > risingj.com >
