You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cordova.apache.org by Simon MacDonald <si...@gmail.com> on 2015/08/11 19:29:30 UTC

Re: Make internal storage default on Android

So if there are no objections to:

https://github.com/apache/cordova-plugin-file/pull/127

I will merge later today and tag a new version.


Simon Mac Donald
http://hi.im/simonmacdonald

On Mon, Jul 27, 2015 at 5:18 PM, Simon MacDonald <si...@gmail.com>
wrote:

> Pull Request sent:
>
> https://github.com/apache/cordova-plugin-file/pull/127
>
> Simon Mac Donald
> http://hi.im/simonmacdonald
>
> On Mon, Jul 27, 2015 at 10:55 AM, Simon MacDonald <
> simon.macdonald@gmail.com> wrote:
>
>> kk, I think this has enough support and I'll end up putting together a
>> pull request today.
>>
>>
>> Simon Mac Donald
>> http://hi.im/simonmacdonald
>>
>> On Mon, Jul 27, 2015 at 10:40 AM, Andrew Grieve <ag...@chromium.org>
>> wrote:
>>
>>> Ian and I made the switch to internal (via the preference).
>>>
>>> - I thought at one point the default app template set the preference to
>>> internal, so that new apps would get the better behaviour and existing
>>> apps
>>> would continue to work. I don't see this happening now though :(
>>> - The duplicate files/files, although oddly names, was just meant to give
>>> the HTML5 FS root a directory that isolated from the rest of the app's
>>> internal storage (so that it doesn't conflict with files put there by
>>> plugins)
>>>
>>> Anyways, +1 for just switching this default and bumping the version.
>>>
>>> On Wed, Jul 22, 2015 at 9:27 PM, Carlos Santana <cs...@gmail.com>
>>> wrote:
>>>
>>> > ding ding ding we have a winner , Are the blackberry guys still around
>>> on
>>> > this mailing list by the way?
>>> > On Wed, Jul 22, 2015 at 10:00 PM Simon MacDonald <
>>> > simon.macdonald@gmail.com>
>>> > wrote:
>>> >
>>> > > As near as I can tell Windows use internal private storage as well.
>>> > >
>>> > > Simon Mac Donald
>>> > > http://hi.im/simonmacdonald
>>> > >
>>> > > On Wed, Jul 22, 2015 at 5:32 PM, Carlos Santana <
>>> csantana23@gmail.com>
>>> > > wrote:
>>> > >
>>> > > > I think cross platform web developers would expect all platforms to
>>> > have
>>> > > > same default. What the default for windows?
>>> > > >
>>> > > > +1 make default internal at least will have iOS and android with
>>> same
>>> > > > expectations
>>> > > >
>>> > > > We need to change the Major number (sever) for the version, it
>>> feels
>>> > like
>>> > > > is changing an API
>>> > > >
>>> > > > I like the explicit even if it's not needed because the default is
>>> > > > internal. But if they see it there it reminds them that internal is
>>> > being
>>> > > > used.
>>> > > > On Wed, Jul 22, 2015 at 4:02 PM Darryl Pogue <da...@dpogue.ca>
>>> wrote:
>>> > > >
>>> > > > > +1 because saving to the SD Card has added problems with other
>>> apps
>>> > > (such
>>> > > > > as photo and music apps) picking up files that they shouldn't.
>>> > > > >
>>> > > > > Nothing more annoying than accidentally unleashing 200 logos and
>>> > icons
>>> > > > into
>>> > > > > the photos app of unsuspecting users.
>>> > > > >
>>> > > > > On 22 July 2015 at 12:47, Simon MacDonald <
>>> simon.macdonald@gmail.com
>>>
>>> > >
>>> > > > > wrote:
>>> > > > >
>>> > > > > > *TL;DR Summary*
>>> > > > > >
>>> > > > > > We should switch the default for the Cordova Android File
>>> System to
>>> > > be
>>> > > > on
>>> > > > > > internal storage, not the SD Card (or emulated SD card).
>>> > > > > >
>>> > > > > >
>>> > > > > > *Long Version*
>>> > > > > >
>>> > > > > > Currently in Cordova Android when you use this code "window.
>>> > > > > > requestFileSystem(PERSISTENT, 0, win, fail);" the root file
>>> system
>>> > > path
>>> > > > > > that is returned is "/storage/emulated/0" i.e. "/sdcard".
>>> > > > > >
>>> > > > > > Why you may ask? Because back in 2010 or so Bryce Curtis and I
>>> > argued
>>> > > > > that
>>> > > > > > we should use the external storage location because internal
>>> > storage
>>> > > > was
>>> > > > > > not very large on Android 2.x and we didn't want to have
>>> developers
>>> > > > > filling
>>> > > > > > up the devices limited internal storage. Joe Bowser argued
>>> against
>>> > it
>>> > > > > > because of issues with the SD Card on Android but was
>>> eventually
>>> > out
>>> > > > > voted.
>>> > > > > >
>>> > > > > > Now, I'm prepared to admit that Bryce was wrong (see what I did
>>> > > > there?).
>>> > > > > I
>>> > > > > > feel that the default behaviour for
>>> > > > "window.requestFileSystem(PERSISTENT,
>>> > > > > > 0, win, fail);" should be to resolve to a location on internal
>>> > > storage
>>> > > > > that
>>> > > > > > meets the following requirements:
>>> > > > > >
>>> > > > > > a) private to the application
>>> > > > > >
>>> > > > > > b) removed when the application is uninstalled
>>> > > > > >
>>> > > > > > c) lines up with what we have on iOS and WP
>>> > > > > >
>>> > > > > > In fact you can get this behaviour right now but setting the
>>> > > following
>>> > > > > > preference in config.xml:
>>> > > > > >
>>> > > > > > <preference name="AndroidPersistentFileLocation"
>>> value="Internal"
>>> > />
>>> > > > > >
>>> > > > > > This gets you a root file path of "/data/data/<android
>>> > > > > > package>/files/files/". The double "files" is an issue but we
>>> can
>>> > > > > probably
>>> > > > > > ignore it for now.
>>> > > > > >
>>> > > > > > If a user wants the old behaviour they only need to make the
>>> > > > preference:
>>> > > > > >
>>> > > > > > <preference name="AndroidPersistentFileLocation"
>>> > > value="Compatibility"
>>> > > > />
>>> > > > > >
>>> > > > > > and the original behaviour will be retained.
>>> > > > > >
>>> > > > > > What I'm advocating for is to make internal storage the default
>>> > > > behaviour
>>> > > > > > for Cordova Android.
>>> > > > > >
>>> > > > > >
>>> > > > > > *Code Changes*
>>> > > > > >
>>> > > > > > I've already taken a brief look into this and I feel the
>>> change is
>>> > > > > > extremely minor. We need only change the default return value
>>> from
>>> > > > > > "compatibility" to "internal" at line 156 of FileUtils.java (
>>> > > > > > https://github
>>> > > > > >
>>> > > > >
>>> > > >
>>> > >
>>> >
>>> .com/apache/cordova-plugin-file/blob/master/src/android/FileUtils.java#L156
>>> > > > > > ).
>>> > > > > >
>>> > > > > > If we wanted to make the change explicit to the user we could
>>> > change
>>> > > > > > plugin.
>>> > > > > > xml to add the preference to config.xml as well.
>>> > > > > >
>>> > > > > > Thoughts, comments, applause?
>>> > > > > > Simon Mac Donald
>>> > > > > > http://hi.im/simonmacdonald
>>> > > > > >
>>> > > > >
>>> > > >
>>> > >
>>> >
>>>
>>
>>
>

Re: Make internal storage default on Android

Posted by Carlos Santana <cs...@gmail.com>.
I strongly object you are using 6 spaces for tabs :-)

Kidding aside I thought was already in master.
You got bonus points for using <info>
On Tue, Aug 11, 2015 at 1:30 PM Simon MacDonald <si...@gmail.com>
wrote:

> So if there are no objections to:
>
> https://github.com/apache/cordova-plugin-file/pull/127
>
> I will merge later today and tag a new version.
>
>
> Simon Mac Donald
> http://hi.im/simonmacdonald
>
> On Mon, Jul 27, 2015 at 5:18 PM, Simon MacDonald <
> simon.macdonald@gmail.com>
> wrote:
>
> > Pull Request sent:
> >
> > https://github.com/apache/cordova-plugin-file/pull/127
> >
> > Simon Mac Donald
> > http://hi.im/simonmacdonald
> >
> > On Mon, Jul 27, 2015 at 10:55 AM, Simon MacDonald <
> > simon.macdonald@gmail.com> wrote:
> >
> >> kk, I think this has enough support and I'll end up putting together a
> >> pull request today.
> >>
> >>
> >> Simon Mac Donald
> >> http://hi.im/simonmacdonald
> >>
> >> On Mon, Jul 27, 2015 at 10:40 AM, Andrew Grieve <ag...@chromium.org>
> >> wrote:
> >>
> >>> Ian and I made the switch to internal (via the preference).
> >>>
> >>> - I thought at one point the default app template set the preference to
> >>> internal, so that new apps would get the better behaviour and existing
> >>> apps
> >>> would continue to work. I don't see this happening now though :(
> >>> - The duplicate files/files, although oddly names, was just meant to
> give
> >>> the HTML5 FS root a directory that isolated from the rest of the app's
> >>> internal storage (so that it doesn't conflict with files put there by
> >>> plugins)
> >>>
> >>> Anyways, +1 for just switching this default and bumping the version.
> >>>
> >>> On Wed, Jul 22, 2015 at 9:27 PM, Carlos Santana <cs...@gmail.com>
> >>> wrote:
> >>>
> >>> > ding ding ding we have a winner , Are the blackberry guys still
> around
> >>> on
> >>> > this mailing list by the way?
> >>> > On Wed, Jul 22, 2015 at 10:00 PM Simon MacDonald <
> >>> > simon.macdonald@gmail.com>
> >>> > wrote:
> >>> >
> >>> > > As near as I can tell Windows use internal private storage as well.
> >>> > >
> >>> > > Simon Mac Donald
> >>> > > http://hi.im/simonmacdonald
> >>> > >
> >>> > > On Wed, Jul 22, 2015 at 5:32 PM, Carlos Santana <
> >>> csantana23@gmail.com>
> >>> > > wrote:
> >>> > >
> >>> > > > I think cross platform web developers would expect all platforms
> to
> >>> > have
> >>> > > > same default. What the default for windows?
> >>> > > >
> >>> > > > +1 make default internal at least will have iOS and android with
> >>> same
> >>> > > > expectations
> >>> > > >
> >>> > > > We need to change the Major number (sever) for the version, it
> >>> feels
> >>> > like
> >>> > > > is changing an API
> >>> > > >
> >>> > > > I like the explicit even if it's not needed because the default
> is
> >>> > > > internal. But if they see it there it reminds them that internal
> is
> >>> > being
> >>> > > > used.
> >>> > > > On Wed, Jul 22, 2015 at 4:02 PM Darryl Pogue <da...@dpogue.ca>
> >>> wrote:
> >>> > > >
> >>> > > > > +1 because saving to the SD Card has added problems with other
> >>> apps
> >>> > > (such
> >>> > > > > as photo and music apps) picking up files that they shouldn't.
> >>> > > > >
> >>> > > > > Nothing more annoying than accidentally unleashing 200 logos
> and
> >>> > icons
> >>> > > > into
> >>> > > > > the photos app of unsuspecting users.
> >>> > > > >
> >>> > > > > On 22 July 2015 at 12:47, Simon MacDonald <
> >>> simon.macdonald@gmail.com
> >>>
> >>> > >
> >>> > > > > wrote:
> >>> > > > >
> >>> > > > > > *TL;DR Summary*
> >>> > > > > >
> >>> > > > > > We should switch the default for the Cordova Android File
> >>> System to
> >>> > > be
> >>> > > > on
> >>> > > > > > internal storage, not the SD Card (or emulated SD card).
> >>> > > > > >
> >>> > > > > >
> >>> > > > > > *Long Version*
> >>> > > > > >
> >>> > > > > > Currently in Cordova Android when you use this code "window.
> >>> > > > > > requestFileSystem(PERSISTENT, 0, win, fail);" the root file
> >>> system
> >>> > > path
> >>> > > > > > that is returned is "/storage/emulated/0" i.e. "/sdcard".
> >>> > > > > >
> >>> > > > > > Why you may ask? Because back in 2010 or so Bryce Curtis and
> I
> >>> > argued
> >>> > > > > that
> >>> > > > > > we should use the external storage location because internal
> >>> > storage
> >>> > > > was
> >>> > > > > > not very large on Android 2.x and we didn't want to have
> >>> developers
> >>> > > > > filling
> >>> > > > > > up the devices limited internal storage. Joe Bowser argued
> >>> against
> >>> > it
> >>> > > > > > because of issues with the SD Card on Android but was
> >>> eventually
> >>> > out
> >>> > > > > voted.
> >>> > > > > >
> >>> > > > > > Now, I'm prepared to admit that Bryce was wrong (see what I
> did
> >>> > > > there?).
> >>> > > > > I
> >>> > > > > > feel that the default behaviour for
> >>> > > > "window.requestFileSystem(PERSISTENT,
> >>> > > > > > 0, win, fail);" should be to resolve to a location on
> internal
> >>> > > storage
> >>> > > > > that
> >>> > > > > > meets the following requirements:
> >>> > > > > >
> >>> > > > > > a) private to the application
> >>> > > > > >
> >>> > > > > > b) removed when the application is uninstalled
> >>> > > > > >
> >>> > > > > > c) lines up with what we have on iOS and WP
> >>> > > > > >
> >>> > > > > > In fact you can get this behaviour right now but setting the
> >>> > > following
> >>> > > > > > preference in config.xml:
> >>> > > > > >
> >>> > > > > > <preference name="AndroidPersistentFileLocation"
> >>> value="Internal"
> >>> > />
> >>> > > > > >
> >>> > > > > > This gets you a root file path of "/data/data/<android
> >>> > > > > > package>/files/files/". The double "files" is an issue but we
> >>> can
> >>> > > > > probably
> >>> > > > > > ignore it for now.
> >>> > > > > >
> >>> > > > > > If a user wants the old behaviour they only need to make the
> >>> > > > preference:
> >>> > > > > >
> >>> > > > > > <preference name="AndroidPersistentFileLocation"
> >>> > > value="Compatibility"
> >>> > > > />
> >>> > > > > >
> >>> > > > > > and the original behaviour will be retained.
> >>> > > > > >
> >>> > > > > > What I'm advocating for is to make internal storage the
> default
> >>> > > > behaviour
> >>> > > > > > for Cordova Android.
> >>> > > > > >
> >>> > > > > >
> >>> > > > > > *Code Changes*
> >>> > > > > >
> >>> > > > > > I've already taken a brief look into this and I feel the
> >>> change is
> >>> > > > > > extremely minor. We need only change the default return value
> >>> from
> >>> > > > > > "compatibility" to "internal" at line 156 of FileUtils.java (
> >>> > > > > > https://github
> >>> > > > > >
> >>> > > > >
> >>> > > >
> >>> > >
> >>> >
> >>>
> .com/apache/cordova-plugin-file/blob/master/src/android/FileUtils.java#L156
> >>> > > > > > ).
> >>> > > > > >
> >>> > > > > > If we wanted to make the change explicit to the user we could
> >>> > change
> >>> > > > > > plugin.
> >>> > > > > > xml to add the preference to config.xml as well.
> >>> > > > > >
> >>> > > > > > Thoughts, comments, applause?
> >>> > > > > > Simon Mac Donald
> >>> > > > > > http://hi.im/simonmacdonald
> >>> > > > > >
> >>> > > > >
> >>> > > >
> >>> > >
> >>> >
> >>>
> >>
> >>
> >
>