cordova-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "William Wong (JIRA)" <j...@apache.org>
Subject [jira] [Comment Edited] (CB-2183) [iOS] FileTransfer.didReceiveResponse may not return NSHTTPURLResponse
Date Mon, 14 Jan 2013 04:10:12 GMT

    [ https://issues.apache.org/jira/browse/CB-2183?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13552419#comment-13552419
] 

William Wong edited comment on CB-2183 at 1/14/13 4:09 AM:
-----------------------------------------------------------

Andrew, in my case, files downloaded from file:///.../www/ could be binaries (e.g. PNGs).
It would be great if we can use standard FileSystem APIs.

To obsolete FileTransfer and use standard HTML5 File APIs, PhoneGap will need to implement
few things around HTML5 Blob:
* Download HTTP (via XHR) -> file:///.../Documents
** (!) Sends Blob downloaded by XHR to native, i.e. implements FileWriter.write(Blob), currently
PhoneGap only support FileWriter.write(utf8)
** FYI, ArrayBuffer (http://www.khronos.org/registry/typedarray/specs/latest/#5) may give
you some hints how to convert Blob <-> DOM String, but looks like it won't be an efficient
approach
* Upload file:///.../www/ or file:///.../Documents -> HTTP (via XHR)
** (*) Implements FileReader.readAsArrayBuffer(Blob), or ask the user to use Data URI and
convert to Blob (http://stackoverflow.com/questions/4998908/convert-data-uri-to-file-then-append-to-formdata)
* File copy file:///.../www/ -> file:///.../Documents
** Implements (*)
** Implements (!)

If the bridge can handle Blob objects, and implement FileWriter.write(Blob) correctly, we
should be able to obsolete FileTransfer.
                
      was (Author: compulim):
    Andrew, in my case, files downloaded from file:///.../www/ could be binaries (e.g. PNGs).
It would be great if we can use standard FileSystem APIs.

To obsolete FileTransfer and use standard HTML5 File APIs, PhoneGap will need to implement
few things around HTML5 Blob:
* HTTP (via XHR) -> file:///.../Documents
** Sends Blob downloaded by XHR to native
** FYI, ArrayBuffer (http://www.khronos.org/registry/typedarray/specs/latest/#5) may give
you some hints how to convert Blob <-> DOM String, but looks like it won't be an efficient
approach
* file:///.../Documents -> HTTP (via XHR)
** (*) Implements FileReader.readAsArrayBuffer(Blob), or ask the user to use Data URI and
convert to Blob (http://stackoverflow.com/questions/4998908/convert-data-uri-to-file-then-append-to-formdata)
* file:///.../www/ -> file:///.../Documents
** Implements (*)
** Implements FileWriter.write(Blob), currently PhoneGap only support FileWriter.write(utf8)

If the bridge can handle Blob objects, and implement FileWriter.write(Blob) correctly, we
should be able to obsolete FileTransfer.
                  
> [iOS] FileTransfer.didReceiveResponse may not return NSHTTPURLResponse
> ----------------------------------------------------------------------
>
>                 Key: CB-2183
>                 URL: https://issues.apache.org/jira/browse/CB-2183
>             Project: Apache Cordova
>          Issue Type: Bug
>          Components: iOS
>    Affects Versions: 2.2.0
>         Environment: Tested on iOS 5.1 and 6.0
>            Reporter: William Wong
>            Assignee: Shazron Abdullah
>            Priority: Minor
>              Labels: File, FileTransfer
>             Fix For: 2.4.0
>
>
> When FileTransfer.download() is downloading a file from file:///, NSURLConnection did
not return with NSHTTPURLResponse. This will fail for apps that copy files from www/, e.g.
apps that initialize its database from a pre-built cache packaged in IPA.
> In CB-1600 (fixed in 2.2.0), the fix assumes all response must be NSHTTPURLResponse.
So when FileTransfer.download() is downloading from a file:/// URL (e.g. copying file from
www/ folder to Documents/), FileTransfer assumed the download operation failed and returned
403.
> Tested if we comment out CB-1600, downloading from file:/// works again.
> We need to find out a better fix instead of commenting out CB-1600.
> According to http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/URLLoadingSystem/URLLoadingSystem.html#//apple_ref/doc/uid/10000165i,
URL of file:/// is supported.
> You can test FileTransfer.download() by calling it with "encodeURI(document.location.href)"
as the "source" parameter.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message