- From: Glenn Maynard <glenn@zewt.org>
- Date: Tue, 26 Feb 2013 09:53:07 -0600
- To: Anne van Kesteren <annevk@annevk.nl>
- Cc: WebApps WG <public-webapps@w3.org>
- Message-ID: <CABirCh9i0AiRASA4WVKxtFYv71G+JZU3WKv-d+a4fKJcphrmXw@mail.gmail.com>
On Tue, Feb 26, 2013 at 4:56 AM, Anne van Kesteren <annevk@annevk.nl> wrote: > The advantage the Streams API seems to have over moz-blob is that you do not need to create a new object to read from each time there's > fresh data. The disadvantage is that that's only a minor advantage and > there's a whole lot of new API that comes with it. > I suppose a use case would be making a POST request or a request with special headers set to access a video stream. You can createObjectURL on the resulting Stream and pass that to <video>. Did I miss something? > > I'm kinda leaning towards adding incremental Blob and chunked > ArrayBuffer support and removing the Streams API. I can see use for > Stream construction going forward to generate a request entity body > that increases over time, but nobody is there yet. > > (Also, in retrospect, I think we should have made Blob's be able to > increase in size over time and not have the synchronous size > getter...) > Yeah, the sync size getter is unfortunate. I've wondered about taking Blob and splitting out a base class without the size getter, but it's probably not worth it now. (Actually, wait. That's almost exactly what Stream is. Hmm.) I don't think it's a problem that Blob's size is immutable. It's fine to have XHR create and return a new Blob object each time you read .response, since they'd all share the same underlying storage. We can get "chunked" reads without an additional mode. Just add an additional method, eg. clearResponse, which empties .response. This would work for all modes that support incremental reads. For Blobs, this would cause .response to return an empty blob and start filling up from scratch. In other words, .response in incremental blob mode returns a slice of the complete response in the range [start,end), where end is the total number of bytes read, start is initialized to 0, and clearResponse sets start = end. -- Glenn Maynard
Received on Tuesday, 26 February 2013 15:53:34 UTC