- From: James Robinson <jamesr@google.com>
- Date: Mon, 26 Apr 2010 14:53:12 -0700
- To: Jonas Sicking <jonas@sicking.cc>, japhet@chromium.org
- Cc: Jian Li <jianli@chromium.org>, Web Applications Working Group WG <public-webapps@w3.org>
- Message-ID: <p2oad1a0c1e1004261453sd825c43dob0b24d205821c1bf@mail.gmail.com>
On Tue, Apr 20, 2010 at 4:22 PM, Jonas Sicking <jonas@sicking.cc> wrote:
> On Tue, Apr 20, 2010 at 3:51 PM, Jian Li <jianli@chromium.org> wrote:
> > According to the spec, we will dispatch a progress event for a read
> method.
> > But per the "Progress Events 1.0" spec, the attributes "loaded" and
> "total"
> > are defined as "unsigned long".
> > interface ProgressEvent : events::Event {
> > ...
> > readonly attribute unsigned long loaded;
> > readonly attribute unsigned long total;
> > ...
> > The type "unsigned long" is not enough to represent the file size. Do we
> > want to update the Progress Event spec to use "unsigned long long"? Or we
> > could limit the FileReader to only read from the file with size less than
> > MAX_UINT.
>
> I think the progress events spec needs to be amended here yes. Though
> one complication is that ECMAScript can't represent all values of a
> unsigned long long.
>
> Ideally webidl would define an integer type with 53 bits (which iirc
> is the largest size you can precisely represent in an ECMAScript
> value).
>
The Blob interface defines 'size' and the 'slice' interface in terms of
unsigned long longs:
www.w3.org/TR/file-upload/#dfn-Blob
It's impossible to generate ECMAScript bindings that satisfy this interface
since no ECMAScript types can represent every possible value of type
'unsigned long long' as WebIDL defines it:
www.w3.org/TR/WebIDL/#idl-unsigned-long-long. What are we supposed to do?
I am thinking that for Chromium the obvious thing to do is to just treat
these fields as EMCAScript Number types and be wrong here for values greater
than 2^53.
- James
>
> / Jonas
>
>
Received on Monday, 26 April 2010 21:53:43 UTC