cordova-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Michael Gauthier <>
Subject Re: Transitioning to a better File API implementation
Date Tue, 10 Dec 2013 16:54:42 GMT

With the new URLs will it be possible to write to both /Documents and 
/Library for iOS apps? In the old version, the filesystem root resolved 
as /Documents but it was possible to get to /Library by navigating the 
the parent dir.


On 2013-11-15 15:19, Ian Clelland wrote:
> On Fri, Nov 15, 2013 at 1:40 PM, purplecabbage <>wrote:
>> Considering the magnitude of the changes I would have expected that this
>> was just a new file plugin. The previous version was based on a spec, and
>> if we are deviating from it we should probably maintain both, and possibly
>> even make a recommendation to the w3c.
>> I hope we at least do a major version update for this if APIs have changed.
> Yes, definitely a major version bump, at least so that devs aren't caught
> by the URL-format-change.
> There aren't any changes to external APIs; I've been very careful to
> maintain conformance with the existing tests, except where those tests have
> been for undocumented implementation details. The only app-visible change
> is that URLs returned by the .toURL() method will look like
> filesystem://localhost/persistent/my/file.jpg
> rather than
> file:///var/mobile/Applications/<app id>/Documents/my/file.jpg
> We are still following the spec -- in fact, this brings us closer in line
> with the W3C File API spec, on these points:
> -- The fullPath
> of an entry should be the path from the root (of the HTML filesystem, not
> the underlying device file system).
> -- This is
> a note, rather than a requirement, but a filesystem url scheme is mentioned
> there.
> We're considering extending the spec in one way, which should be compatible
> with the spirit of the spec, and backwards-compatible with the previous
> API. That is the ability to declare new filesystem types, beyond
> "temporary" and "persistent", so that we can access things like device
> media and app bundle assets using the same APIs that we use for accessing
> user-defined files. If we're happy with the way that works, then we should
> definitely propose it for inclusion in the standard (not the specific
> filesystems, perhaps, but the mechanism for requesting and interacting with
> them)
> Ian
>> Sent from my iPhone
>>> On Nov 15, 2013, at 8:36 AM, Ian Clelland <>
>> wrote:
>>> I've created CB-5403 as the ├╝ber-ticket for this; various bits of it are
>> in
>>> subtasks.
>>> Once I have the tests and the JS updated, then platform owners can take a
>>> look and see whether they have anything to do to support their own
>> schemes.
>>> As general guidelines, I would say:
>>> * If you can intercept filesystem://* URLs in native code, and return
>>> arbitrary responses, then do it! It will let your platform support new
>>> filesystems in the future as we come up with them. Add a couple of
>> subtasks
>>> for CB-5403 for your platform and go.
>>> * If you can't do that, but you *can* provide access to things like media
>>> through special urls, then try that! You should be able to create a
>>> FileSystem object that uses that URL as its root, and everything should
>>> work. Add a subtask for that, and see what you can do.
>>> * If you can't do that either, and you just want to stick with the
>> file:///
>>> urls that we are currently using, then don't do anything; nothing should
>>> change for you.
>>> On Fri, Nov 15, 2013 at 10:36 AM, Ian Clelland <
>>> wrote:
>>>> On Fri, Nov 15, 2013 at 10:03 AM, Marcel Kinard <
>>> wrote:
>>>>> Ian, will there be changes that app developers will need to do? If so,
>>>>> those should be clearly documented in a migration guide. If not, it
>> sounds
>>>>> like the [improved] tests should pass on both the old and new versions,
>>>>> which would be sweet.
>>>> The filesystem URLs themselves will change as a result of this. The
>> tests
>>>> should pass on both old and new versions, but the tests mint their own
>> URLs
>>>> for testing against -- each version is internally consistent, but if an
>> app
>>>> is saving internal URLs and tries to dereference an old (file:///) url
>> with
>>>> the new plugin, it will probably not resolve.
>>>> Maybe there's a transition path here -- it might be possible to allow
>>>> window.resolveLocalFileSystemURL to access files with the old URL, but
>>>> never actually generate URLs.
>>>> That would mean that
>>>> (resolveLocalFileSystemURL(a)).toURL() !== a,
>>>> but I don't think that we depend on that as an identity.
>>>> Is there work which needs to be done on the other platforms (BB, WP8,
>>>>> Win8, FFOS, etc) so that those platforms don't get left behind? If so,
>>>>> would it make sense to reach out to those platform owners and at least
>> get
>>>>> Jira items created with some notes?
>>>> Yes. I'm going to create a ticket for this, and we can add
>>>> platform-specific tasks to it.
>>>> Other platforms shouldn't *have* to do anything, and some platforms
>>>> *can't* do anything, because they cannot access anything other than
>>>> file:/// urls anyway.
>>>> However, if the other platforms want to get in on the goodness, and
>> start
>>>> supporting their own URL schemes (I think the BB folks can use something
>>>> like local:// for their filesystem access), then that'll be the place to
>>>> keep everything organized.
>>>> I'll post back once I have that issue set up.
>>>> Ian
>>>>> Sounds like you've built some very significant improvements. Thanks!
>>>>>> On Nov 15, 2013, at 9:29 AM, Ian Clelland <>
>> wrote:
>>>>>> After working with the File plugin for a week or so, I've gotten
>>>>> more or
>>>>>> less where I want it to be on iOS, and am working through Android.
>>>>> Looking
>>>>>> at the end result, though, I expect that over 90% of the code has
>>>>>> touched in some way. (It's a huge diff.)

View raw message