- From: Steve VanDeBogart <vandebo@google.com>
- Date: Fri, 2 Dec 2011 15:14:07 -0800
- To: Glenn Maynard <glenn@zewt.org>
- Cc: public-webapps <public-webapps@w3.org>, Tony Payne <tpayne@google.com>
- Message-ID: <CA+9kOWMYTzaQ4+htce+SbjZdmOXe9xHS7bMWDJ74Er29j_AwFA@mail.gmail.com>
On Fri, Dec 2, 2011 at 1:07 PM, Glenn Maynard <glenn@zewt.org> wrote: > On Fri, Dec 2, 2011 at 2:20 PM, Steve VanDeBogart <vandebo@google.com>wrote: > >> interface BlobDataProvider : EventTarget { >> void getSize(BlobDataProviderResult result); >> >>> void getDataSlice(long long start, long long end, >>> BlobDataProviderResult result); >>> } >>> >> >> As you say, since the size is an attribute of the blob, I don't see the >> benefit to making it part of the callback... I guess unless you're trying >> to support the streaming blob case. But maybe that's just an argument for >> making it >> an async function instead of an attribute in the Blob interface. >> > > The getSize method could be removed here, and creating a blob this way > would be synchronous: Blob.fromProvider(myProvider, size, type). (I should > have removed the EventTarget base from BlobDataProvider, too.) > > I don't know if there's any API precedent for passing in a user-created > object like this. (It's similar to WebIDL dictionaries, but I'm not sure > if that's meant for functions.) Anyway, the interface isn't really needed: > Blob.fromReader(myGetDataSliceFunc, size, type). > I haven't seen any other places where the javascript runtime satisfies a request by calling a previously called function, but in this case it seems like it could be done safely. > > The use case I've been thinking about is getting metadata out of files. >> So I may want to examine a slice at the beginning of a file and then,look >> at other slices at the end or various places in the middle. For a local >> file, not a problem, but if you want to integrate an online file provider, >> (drop box or something else of that ilk), you can either use a >> file/callback based blob, or build a second interface to accessing file >> data into your webapp. It all feels cleaner and nicer if just a single >> interface can be used. >> > > It feels like a natural thing to provide, but I don't know if the use > cases so far are really that compelling. > > Dropbox-like services don't really need to use a callback API; the > Blob-from-URL interface would probably be enough for that. > Indeed - the Blob-from-URL interface isn't as powerful, but it may be sufficient. Another use case to consider... I was looking at this API proposal: http://dev.w3.org/2009/dap/gallery/#mediaobject Each media object is a file (a blob). If I wanted to provide a cloud-backed gallery, I'd need some way to make MediaObjects for each image/song/video. It'd be a real shame to have to download an object just to provide a MediaObject, which the consumer may or may not access. > > It seems you've been following this issue longer than I, do you know of a >> bug filed against the File API for something like this? If not, I'll >> probably file one. >> > > I don't know of anything beyond that earlier discussion. > I went to file a bug, but there doesn't seem to be a File API component to file it against. I'll bug someone about that. > As an aside, in a sense "Blob from URL" is a natural inverse operation to > URL.createObjectURL. Indeed, I hadn't noticed that. -- Steve
Received on Friday, 2 December 2011 23:14:53 UTC