Re: New draft of FileSystem API posted

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?

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)?

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, 21 July 2010 01:39:06 UTC