[whatwg] size limits on web databases

Ian Hickson ian at hixie.ch
Fri Aug 28 21:27:35 PDT 2009


On Thu, 13 Aug 2009, Rob Kroeger wrote:
> >
> >From http://dev.w3.org/html5/webdatabase/:
> 
> "The openDatabase() method on the Window and WorkerUtils interfaces must 
> return a newly constructed Database object that represents the database 
> requested."
> 
> The spec does not make it clear what the UA on an extremely 
> resource-constrained device (e.g. a mobile phone) should do if the 
> requested size database size cannot be satisfied. Some implementations 
> return a null Database object if something has gone wrong in the 
> openDatabase() call but (at least to me) the spec does not seem to 
> permit this and simply returning null does not particularly help an 
> application adapt gracefully to the availability of only a small 
> database.
> 
> Consequently, I would hope that this could be improved in some fashion. 
> Three possible modifications to the spec occur to me. From the viewpoint 
> of webdatabase developer, I prefer (1), could work with (2) and would 
> greatly dislike (3). Is this reasonable?
> 
> 1. Retain the existing def'n of openDatabase but add a property on
> interface Database:
>   unsigned long minimumCapacity;
> which returns the amount of storage that the UA guarantees to be
> present in the database at the time of opening. The UA should try to
> set minimumCapacity so that QUOTA_ERR will be extremely unlikely if
> the database client code never writes more than minimumCapacity bytes
> to the database.
> 
> 2. A language change:
> 
> "The user agent may raise a SECURITY_ERR exception instead of
> returning a Database object if the request violates a policy decision
> (e.g. if the user agent is configured to not allow the page to open
> databases)."
> 
> to something like this:
> 
> "The user agent must raise a SECURITY_ERR exception instead of
> returning a Database object if the request violates a policy decision
> (e.g. if the user agent is configured to not allow the page to open
> databases) or the estimatedSize of the database cannot currently be
> satisfied (e.g. the UA is running from a read-only volume or the
> estimatedSize exceeds the free space on the volume.)"
> 
> 3. An alternative language change:
> 
> "The openDatabase() method on the Window and WorkerUtils interfaces
> must return a newly constructed Database object that represents the
> database requested."
> 
> to
> 
> "The openDatabase() method on the Window and WorkerUtils interfaces
> must return a newly constructed Database object that represents the
> database requested or null if openDatabase call has failed."

Technically, a UA is allowed to do more or less whatever it wants when 
faced with hardware limitations.

However, a literal reading of the spec says it should return a Database, 
and then if writing to it fails due to lack of disk space, should throw or 
flag the QUOTA_ERR. Why is this not adequate?

-- 
Ian Hickson               U+1047E                )\._.,--....,'``.    fL
http://ln.hixie.ch/       U+263A                /,   _.. \   _\  ;`._ ,.
Things that are impossible just take longer.   `._.-(,_..'--(,_..'`-.;.'


More information about the whatwg mailing list