- From: Rick Byers <rbyers@google.com>
- Date: Mon, 5 Mar 2012 23:43:44 +0000
- To: timeless <timeless@gmail.com>
- Cc: WebIntents <public-web-intents@w3.org>
- Message-ID: <CAFUtAY-gvkmqWg_Qbwpz9K+WkKe0WRx-qYJdQ96_YO6JJE45Pg@mail.gmail.com>
+1 to an extra optional additional parameter.
On Mon, Mar 5, 2012 at 10:22 PM, timeless <timeless@gmail.com> wrote:
> You can use "optional dict extras" for A to address Rachel's concern...
>
> With that, I favor A
>
> On 3/5/12, Rachel Blum <groby@google.com> wrote:
> > 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
> >>
> >>
> >
>
> --
> Sent from my mobile device
>
>
Received on Monday, 5 March 2012 23:44:32 UTC