- From: Rachel Blum <groby@google.com>
- Date: Mon, 5 Mar 2012 14:01:35 -0800
- To: James Hawkins <jhawkins@google.com>
- Cc: WebIntents <public-web-intents@w3.org>
- Message-ID: <CACmqxcwy_w+J=iscxP5i3dv+ZYamJMaZdBugg33esimN5yzohQ@mail.gmail.com>
Initial reaction is C) It is almost identical to A), except that intents without extras don't need an extra parameter. I'm not to fond of B), since it replicates a dictionary-like API on a non-dictionary object. Rachel On Mar 5, 2012 1:54 PM, "James Hawkins" <jhawkins@google.com> wrote: > TL;DR - We need a method to set extra data on the intent payload. Ideas? > > For several use cases, extra data which augments the payload needs to > be passed either to or from the client. For example a picker which > returns files may want to pass along the filename of the picked file. > > There are several ways to augment the API to allow providing extras. > Let's go over constraints first: > * Must be allowed to pass several extras. > * It follows from above that the extras must be named. > - We could impose ordering in an array as a solution, but that is > extremely fragile! > > >From the constraints it's clear we need a dictionary for extras. > Android Intents agrees and uses a 'Bundle', which is "a mapping from > String values to various Parcelable types." Different parlance, same > concept. > > Android > ====== > > >From the Android Intents spec: > > Intent putExtra(String name, [type] value); > > putExtra is overloaded for each native [type], e.g., double, int, > Bundle, Parcelable, etc. > > > Possible Solutions > ============== > > A) Add an |extras| parameter to the Intent constructor: > > Currently: > [Constructor(in string action, in string type, in any data) raises > DOMException] > > Modified: > [Constructor(in string action, in string type, in any data, in > Dictionary extras) raises DOMException] > > e.g., > > var dict = {filename: 'image.png', size: 20000}; > var intent = new Intent('http://webintents.org/save', 'image/png', > imageData, dict); > > > B) Add a method to set an extra on Intent: > > interface Intent { > ... > void setExtra(DOMString name, any value); > } > > e.g., > > var intent = new Intent('http://webintents.org/save', 'image/png', > imageData); > intent.setExtra('filename', 'image.png'); > intent.setExtra('size', 20000); > > > C) Add a method to set the entire |extras| dictionary on Intent: > > interface Intent { > ... > void setExtras(Dictionary extras); > } > > e.g., > > var intent = new Intent('http://webintents.org/save', 'image/png', > imageData); > > var dict = {filename: 'image.png', size: 20000}; > intent.setExtras(dict); > > > What are your thoughts, preferences, anecdotal evidence? I'd love to > hear your feedback on the issue. Any other methods than those I > listed? > > Thanks, > James > >
Received on Monday, 5 March 2012 22:05:28 UTC