I agree with Shaz—in general we should start using this type of syntax for dictionaries:
return @{@"CDVType": @"Multipart", @"messages": messages}; I'd say messageAsMultipart: makes sense, in keeping with the pattern set by the other names. On Thu, Feb 14, 2013 at 9:24 AM, Michal Mocny <mmo...@chromium.org> wrote: > And also: do we like the name "messageAsMultipart:" or should it just be > "messageWithArguments:"? > > > On Thu, Feb 14, 2013 at 9:23 AM, Michal Mocny <mmo...@chromium.org> wrote: > > > Andrew, > > > > Yes I was definitely thinking the same thing, but wanted to do that > later. > > I'll make the change before documenting how multipart messages work, as > > shaz suggested. Thanks for giving me a heads up about reference to it on > > android. Also: other platforms dont use it? > > > > -Michal > > > > > > On Wed, Feb 13, 2013 at 10:51 PM, Andrew Grieve <agri...@chromium.org > >wrote: > > > >> My only comment is that I think it's worth refactoring > >> cordova.callbackFromNative so that it passes the multiple values to > >> callbacks as separate parameters. All references to it are in cordova-js > >> plus one in Android's NativeToJsMessageQueue.java > >> > >> > >> On Wed, Feb 13, 2013 at 5:42 PM, Shazron <shaz...@gmail.com> wrote: > >> > >>> Looks good to me. > >>> Although I have a bone to pick with dictionaryWithObjectsAndKeys having > >>> objects first but that's not our problem ;) Good thing they support > >>> literal > >>> notation now... > >>> > >>> > >>> On Wed, Feb 13, 2013 at 12:24 PM, Michal Mocny <mmo...@chromium.org> > >>> wrote: > >>> > >>> > ping. Shaz? > >>> > > >>> > > >>> > On Tue, Feb 12, 2013 at 11:28 AM, Michal Mocny <mmo...@chromium.org> > >>> > wrote: > >>> > > >>> > > I've pushed this to a remote branch: multipart_plugin_result for > >>> both ios > >>> > > and js repo's: > >>> > > > >>> > > ios: > >>> > > > >>> > > >>> > https://git-wip-us.apache.org/repos/asf?p=cordova-ios.git;a=shortlog;h=refs/heads/multipart_plugin_result > >>> > > js: > >>> > > > >>> > > >>> > https://git-wip-us.apache.org/repos/asf?p=cordova-js.git;a=shortlog;h=refs/heads/multipart_plugin_result > >>> > > > >>> > > mobile-spec-tests run fine and there should be no difference to any > >>> > > existing plugins. Instead of adding anything complicated to > support > >>> > > multiple arguments, I just added a new CDVType: MultiPart much in > the > >>> > same > >>> > > fashion as ArrayBuffers (we can implement a more efficient way to > >>> encode > >>> > > type information at some point, but its not really a problem right > >>> now). > >>> > > > >>> > > The resulting arguments are unfortunately delivered to plugin > >>> callback as > >>> > > a single array argument instead of as separate arguments (ie > function > >>> > > win(args) { var arg1 = args[0] ...} instead of function win(arg1, > >>> arg2, > >>> > > arg3) {...}) due to the way cordova.callbackFromNative helper is > >>> > > implemented. This can be improved later if we would like. > >>> > > > >>> > > Please take a look! > >>> > > > >>> > > -Michal > >>> > > > >>> > > > >>> > > On Sat, Jan 19, 2013 at 11:45 AM, Shazron <shaz...@gmail.com> > wrote: > >>> > > > >>> > >> I don't see any problem with it as long as existing plugins (core > >>> and > >>> > >> third-party) don't break (unless we need to deprecate anything of > >>> > course) > >>> > >> > >>> > >> > >>> > >> On Fri, Jan 18, 2013 at 11:55 AM, Michal Mocny <mmo...@google.com > > > >>> > wrote: > >>> > >> > >>> > >> > I've filed https://issues.apache.org/jira/browse/CB-2239 but > >>> wanted > >>> > to > >>> > >> get > >>> > >> > feedback here in case there a simpler solution to this problem. > >>> > >> > > >>> > >> > Basically: I've recently added support for ArrayBuffer argument > >>> type > >>> > >> across > >>> > >> > iOS exec bridge and Braden added the same to Android. > >>> > >> > > >>> > >> > However, while working on a plugin to make use of this feature > >>> > >> (socket), we > >>> > >> > found that sound plugin calls expect to send an ArrayBuffer back > >>> along > >>> > >> with > >>> > >> > over values. > >>> > >> > > >>> > >> > We considered adding a special bucket for ArrayBuffer return > >>> values to > >>> > >> the > >>> > >> > bridge, so that you can send a normal result + ArrayBuffer, but > >>> > decided > >>> > >> > that wasn't scalable since we may want more custom non-json > >>> > serializable > >>> > >> > types in the future. > >>> > >> > > >>> > >> > We decided the best option was to allow returning a list of > >>> "cordova > >>> > >> bridge > >>> > >> > supported types", which includes everything we have had until > now > >>> + > >>> > >> > ArrayBuffer + whatever we add in the future. > >>> > >> > > >>> > >> > This shouldn't be a big change, existing plugins need not change > >>> at > >>> > all, > >>> > >> > and it also opens up the possibility to do some interesting > >>> encodings > >>> > >> for > >>> > >> > return values whenever JSON isn't the most efficient (we do some > >>> of > >>> > >> this on > >>> > >> > android already). > >>> > >> > > >>> > >> > -Michal > >>> > >> > > >>> > >> > >>> > > > >>> > > > >>> > > >>> > >> > >> > > >