- From: Greg Billock <gbillock@google.com>
- Date: Fri, 18 Nov 2011 14:55:50 -0800
- To: Charles Pritchard <chuck@jumis.com>
- Cc: Paul Kinlan <paulkinlan@google.com>, timeless <timeless@gmail.com>, WebIntents <public-web-intents@w3.org>
- Message-ID: <CAAxVY9c_mh7-tQ4zuoKd=hWzDwW3XT3Hs29sKbgMW0=TDxeuZg@mail.gmail.com>
Ideally, any Transferable object should be able to move through the serialization layer and be part of an intent payload or return type, including MessagePort. This allows sophisticated use cases like establishing persistent connections, transferring file objects via blobs, and so forth. As currently envisioned, those use cases will require an additional layer of specification. (The "myprotocol" above encapsulates a lot of that hard work!) Something even further in this direction is a "Persistable" connection; that is, a url-type reference clients could store locally and then use to connect up again in subsequent sessions. This would allow for persistent permission grants and service connections. Our sense while developing the proposal was that the common case will be RPC-style copy-by-value type semantics where you'll just wrap up the picture, link, vcard, etc. and send it to the service for processing and possible response. But I definitely think we want to take care not to rule out these more sophisticated use cases, because the intents modality of getting the user and UA in the loop while hooking these things up is a very powerful capabilities-style architecture for great app integration while being able to maintain the proper level of good sandboxing. On Fri, Nov 18, 2011 at 2:42 PM, Charles Pritchard <chuck@jumis.com> wrote: > ** > Thanks for exploring this complex use case. This is an edge case, and I > appreciate you taking the time. > > Here's my understanding: > > The following sends an entangled port through intents. The client can then > dispatch a Transferable ArrayBuffer. > > var channel = new MessageChannel(); > > var intent = new Intent("http://webintents.org/transfer", > "application/octet-stream+myprotocol", channel.port2); > channel.port1.onmessage = function (event) { > if(event.data == "OK") > channel.port1.postMessage("DATA", [myArrayBuffer], event.origin); > }; > window.navigator.startActivity(intent); > > This extra work is to ensure the ArrayBuffer is neutered: > http://www.khronos.org/registry/typedarray/specs/latest/#9.2 > > > -Charles > > > On 11/18/11 1:52 PM, Paul Kinlan wrote: > > The Pseudo code you have is nearly exactly how we envisaged it. We just > passed the port, then the data over the port as that could be part of the > lower level protocol (the 'myprotocol' bit). > > > P > > On Fri, Nov 18, 2011 at 10:40 PM, Charles Pritchard <chuck@jumis.com>wrote: > >> Carrying this thread over to the web intents mailing list. >> >> The current issue I'm asking about, in this thread, is how we might >> present the postMessage transfer semantic in Web Intents. >> >> Web Intents currently works much like postMessage(message). The >> Transferable semantic is relatively new to Web Messaging >> and allows the transfer of Array Buffer objects and MessagePorts. >> >> In pseudo-code: >> >> var intent = new Intent("http://webintents.org/transfer", >> "application/octet-stream+myprotocol", >> [messagePort, arrayBuffer]); >> > > >
Received on Friday, 18 November 2011 22:56:19 UTC