[ 
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]

Reply via email to