- From: <bugzilla@jessica.w3.org>
- Date: Tue, 15 Apr 2014 00:24:50 +0000
- To: public-webapps-bugzilla@w3.org
https://www.w3.org/Bugs/Public/show_bug.cgi?id=25081 --- Comment #10 from Jonas Sicking <jonas@sicking.cc> --- I don't think we need keepalives and the like. It's easier to simply define that a lot of these APIs clones (by calling blob.slice()) the Blob that is passed to them. So calling `myFormData.append("foo", myblob)` would make the myFormData object call myblob.slice() before returning from .append. When myFormData is submitted it wouldn't matter if myblob has been closed or not. Same thing when xhr.send(myblob) is called. Before .send() returns it would call myblob.slice() and hold a reference to the returned object. This should generally avoid racy behavior. Though it does have the downside that it's somewhat harder to make sure that the data backing the blob goes away *right now* since there are more clones floating around. However it has the upside that if you want to use a blob and free the resources backing the blob as soon as you're done using it, you can do `useBlob(myblob); myblob.close();` rather than `x = useBlob(myblob); x.registerDoneHandler(() => myblob.close());` I think the latter is more error prone given that it puts more distance between when the blob is used and when its closed in application code. So it's more likely that bugs, error conditions or other edge cases will make the application not close the blob. So, in short, I think we can get rid of the keepalive counter and instead simply use Blob.slice() which gives us the semantics that we want. -- You are receiving this mail because: You are the QA Contact for the bug.
Received on Tuesday, 15 April 2014 00:24:52 UTC