W3C home > Mailing lists > Public > public-webapps@w3.org > July to September 2010

Re: New draft of FileSystem API posted

From: Eric Uhrhane <ericu@google.com>
Date: Wed, 11 Aug 2010 13:25:26 -0700
Message-ID: <AANLkTinN8TOSQxDSxrfFQ5xfbSAMdvxJNtoffrYVfYMz@mail.gmail.com>
To: Kinuko Yasuda <kinuko@google.com>
Cc: Web Applications Working Group WG <public-webapps@w3.org>
My apologies for the slow response; I'm now back from my vacation.

On Tue, Jul 20, 2010 at 6:27 PM, Kinuko Yasuda <kinuko@google.com> wrote:
> Hi Eric,
> Thanks for brushing up the draft.
> We had some internal discussion about the API details and came up with a
> question regarding is{File,Directory} attributes of Entry interface.
> It seems like user agent needs to be able to tell if a given entry is file
> or directory synchronously (or from its cache), but we wonder what should
> happen if the underlying file object is changed later.  For example, we may
> have a situation like this:
> 1. a user code gets (or creates) a file entry.
> 2. another flow of the code (or another code in the same origin) removes the
> same entry and creates a *directory* at the same path.
> 3. the original code refers isFile attribute of the entry. -- should it be
> true or false?

My intention was that the UA would look up that information when first
creating the Entry and keep it cached.  It's not the kind of thing
that changes very often, so I didn't think we needed it to be a live
query every time.  If the user tries to write to a file that's become
a directory, or vice-versa, that's what INVALID_STATE_ERROR is for.
This is an unusual error, thus it's appropriate that it be handled via

> If an Entry is just a reference (i.e. a pathname) of a system file entity,
> it would look natural that it is resolved at run-time thus returns false in
> the above case.   But if so we'll have two problems: 1) we'll need to make
> synchronous stat calls to get the attribute values, and 2) as we have
> different interfaces for file and directory, we may end up with having
> invalid FileEntry objects for directories - or vice versa.
> Would it be possible to have a single unified interface for file and
> directory and let scripts figure out the info at runtime (e.g. in each
> asynchronous filesystem operation)?

Do you mean, allow all file operations and directory operation, and
fail if you use the wrong one?  UAs already have to fail on operations
that don't make sense [or fail in the underlying implementation],
whether or not we keep a unified interface, so I think that would just
clutter up each subtype with the others' methods.

If I'm misunderstanding you, please give an example of your proposed
interface and a situation which it would improve.

> On Wed, Jul 7, 2010 at 6:50 PM, Eric Uhrhane <ericu@google.com> wrote:
>> I've posted a new draft of File API: Directories and System [1].  In
>> this draft I've rolled in quite a bit of feedback that I received
>> since first posting it on DAP--many apologies for the delay.  This is
>> the first draft produced since we agreed to move this spec from DAP to
>> WebApps; I hope those of you who have time will give it a look and let
>> me know what you think.
>> In general I've tried to address any comment I was sent and had not
>> already addressed via email.  The few that didn't make it in, I've
>> responded to below.
>> My thanks to Robin Berjon and Mike Clement for all their feedback.
>> Robin:
>>  - "data stored there by the application should not be deleted by the
>> UA without user intervention", "UA should require permission from the
>> user", "The application may of course delete it at will" -> these
>> sound like real conformance statements, therefore SHOULD, SHOULD NOT,
>> and MAY.
>> Those are in a non-normative section; is that language still appropriate
>> there?
>> Robin:
>> [discussion about speccing the URI format]
>> Left as an open issue.
>> Mike:
>> [discussion about multiple sandboxes per origin]
>> I think that would be very easy and clean to add later if desired, and
>> in the mean time, one can use subdirectories.
>> Mike:
>> getFile/getDirectory are a bit overloaded.  How about including
>> methods like exists(), createFile() and createDirectory()?  Though
>> these methods are easily implemented in terms of getFile/getDirectory,
>> I always prefer more direct API methods that help make the code easier
>> to understand.  I expect, though, that you are attempting to be a low
>> level as possible here.
>> As Robin pointed out, adding extra round-trips will slow things down.
>> Also, it can encourage race conditions.  These are easy for libraries
>> to implement via wrappers.
>> Mike:
>> [request for creation time in getMetadata]
>> It may be hard to support reliably cross-platform [2].
>> Robin:
>> [specifying a single locale everywhere]
>> I don't think that'll make folks very happy if it's not their locale.
>> If I e.g. try to force my locale on Turkish Windows users, they're
>> going to see some interesting errors trying to share files with apps
>> outside the browser, or for that matter even saving certain groups of
>> files from inside the browser.
>>    Eric
>> [1] http://dev.w3.org/2009/dap/file-system/file-dir-sys.html
>> [2] http://en.wikipedia.org/wiki/MAC_times
Received on Wednesday, 11 August 2010 20:26:11 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 18:13:10 UTC