[
https://issues.apache.org/jira/browse/CB-13044?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16111818#comment-16111818
]
Filip Maj commented on CB-13044:
--------------------------------
OK, I've done some testing inside cordova-ios and cordova-android for the
latest File API spec and how the native implementations in the webview stack up
against web form tests.
tl;dr iOS 10+ is fine. iOS 9.3 is fine-ish. Android 5.1+ is fine. Android 5.0
is meh. Android 4.4 starts really shitting the bed.
The spreadsheet with the breakdown is here:
https://docs.google.com/spreadsheets/d/1SEZqZYfdqlEjJf6fz1ZqW5pQ1zbJw9voGb0475ccRlM/edit?usp=sharing
I used the W3C's web-platform-tests as the test suite - on my fork, there's a
cordova-testing branch I used:
https://github.com/filmaj/web-platform-tests/tree/cordova-testing. Ensure to
follow README if you want to test this on your end (which involves tweaking
your /etc/hosts file), you'll need to set up a config.json file w/ local
hosting details such as the IP to bind to (this can tricky if you are testing
on a real device: need to use a wifi internal IP address accessible to both
laptop and device. To test on an Android emulator, you will want the server to
bind to localhost).
The test app I used is this:
https://github.com/filmaj/cordova-web-platform-tests
Always make sure to tweak the config.xml for the above project, especially with
respect to the IPs under the <content> and <allow-*> tags, since the shell app
doesnt do much more than load the URL of the web-platform-tests. This is
non-intuitive with an Android emulator as your machine's 'localhost' address is
accessible at the IP 10.0.2.2 in an Android emulator. On an iOS sim, localhost
works just fine.
In conclusion, I still think we will need the JS for the new version of the
File API around.
> Update cordova-plugin-file to latest version of File API
> --------------------------------------------------------
>
> Key: CB-13044
> URL: https://issues.apache.org/jira/browse/CB-13044
> Project: Apache Cordova
> Issue Type: Task
> Components: cordova-plugin-file
> Reporter: Filip Maj
> Labels: plugins-next
>
> Part of the roadmap for the core plugins is to update them to make them
> spec-relevant once more. See CB-12715.
> After taking a look at the current version of [W3C File
> API|https://w3c.github.io/FileAPI/], here is one take on what specific API
> changes are needed to update the API to the current version:
> - *remove* a bunch of APIs, specifically:
> -- everything to do with the [old (now discontinued) File System
> API|https://www.w3.org/TR/file-system-api/]:
> --- {{window.requestFileSystem}} method
> --- {{LocalFileSystem}} object
> --- {{FileSystem}} object
> --- {{Flags}} object
> --- {{Metadata}} object
> --- {{Entry}}, {{DirectoryEntry}} and {{FileEntry}} objects
> --- {{DirectoryReader}} object
> -- everything to do with the [old, discontinued File Writer
> API|https://www.w3.org/TR/file-writer-api/]: {{FileWriter}} object
> -- {{FileUploadOptions}}, {{FileUploadResult}} objects (wtf are these? I
> think they are for supporting file transfer? why are they in plugin-file?
> lol?)
> -- the {{FileError}} object, as the [latest spec says to return
> {{DOMException}}|https://w3c.github.io/FileAPI/#failureReason]
> - update a bunch of APIs, specifically:
> -- update {{FileReader}} interface's {{readAs*}} methods so that they take a
> {{Blob}} object instead of a {{File}} object as parameter
> -- if the polyfill is still needed, might need to update the {{File}} object
> and remove a bunch of extra native-y cruft like "type" and stuff that was
> used when leveraging the bridge
> -- update any error handling to return {{DOMException}} instances instead of
> the now-removed {{FileError}}
> - possibly write up a polyfill for {{Blob}} ? Looks like it will be needed in
> Android 4.4 or lower.
> - possibly write up a polyfill for {{FileList}} (as per
> [spec|https://w3c.github.io/FileAPI/#dfn-filelist]) - might be needed on iOS
> 9.3 / Android 4.4. Worth noting that the first descriptive text in the spec
> mentions this interface being "at risk" as it's basically a glorified array.
> - review docs:
> -- are referencing local file system paths like {{<img
> src="cdvfile://filesystem/path">}} still relevant (related to open question
> #2 below)?
> -- review and update
> https://cordova.apache.org/docs/en/latest/cordova/storage/storage.html#indexeddb
> - it mentions some things like indexeddb has a 5MB storage, we should
> probably update it to mention it is supported in ios, and do some quick
> checking on max storage size.
> -- remove
> https://cordova.apache.org/docs/en/latest/cordova/storage/storage.html#filesystem-api
> -- how much of this documentation should reside in the File plugin docs vs.
> in the general "Storage" cordova docs, or perhaps even the platform docs?
> over half of the File plugin docs talk about filesystem formats and platform
> quirks therein.
> A few open questions:
> 1. One thing worth noting is that platform implementations for a lot of the
> above may not be needed on iOS 10+ and Android 5.0+. Would need to check
> windows / edge support. If support is splotchy, we need to keep in mind to
> write the plugin in such a way that we don't clobber over
> potentially-pre-existing spec-adhering objects of the File API.
> 2. Worth calling out that the [File API defines its own URL scheme to
> use|https://w3c.github.io/FileAPI/#url]. Does this then supercede the cordova
> custom ones like cdvfile:// and other protocols?
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]