[
https://issues.apache.org/jira/browse/CB-6938?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14033770#comment-14033770
]
Ian Clelland commented on CB-6938:
----------------------------------
It looks like that wording was added for the most recent version of the spec --
it's in http://www.w3.org/TR/2012/WD-file-system-api-20120417/, but not in the
previous version http://www.w3.org/TR/2011/WD-file-system-api-20110419/
(A similar note appears with the {{.moveTo}} method, and dates back to the
original version of the document. It's just {{.copyoTo}} which had unspecified
behaviour.)
We'll need to work up a couple of test cases for this, but otherwise I'm fine
with adding it. The spec has been abandoned by the W3C, but this will at least
ensure better compatibility with Chrome apps using the same API.
> iOS File plugin: copyTo for file returns error when destination file exists
> ---------------------------------------------------------------------------
>
> Key: CB-6938
> URL: https://issues.apache.org/jira/browse/CB-6938
> Project: Apache Cordova
> Issue Type: Bug
> Components: Plugin File
> Affects Versions: 3.5.0
> Environment: ios
> Reporter: Vladimir Avdonin
>
> According to w3c spec:
> A copy of a file on top of an existing file must attempt to delete and
> replace that file.
> iOS version of plugin in file CDVLocalFilesystem.m contains this code for the
> case:
> } else if (bNewExists) {
> // the full destination should NOT already exist if a copy
> errCode = PATH_EXISTS_ERR;
> Suggested patch:
> diff --git a/src/ios/CDVLocalFilesystem.m b/src/ios/CDVLocalFilesystem.m
> index d1576ad..f5aa508 100644
> --- a/src/ios/CDVLocalFilesystem.m
> +++ b/src/ios/CDVLocalFilesystem.m
> @@ -535,11 +535,11 @@
> if (bSrcIsDir && ![self canCopyMoveSrc:srcFullPath
> ToDestination:newFileSystemPath]) {
> // can't copy dir into self
> errCode = INVALID_MODIFICATION_ERR;
> - } else if (bNewExists) {
> - // the full destination should NOT already exist if a
> copy
> - errCode = PATH_EXISTS_ERR;
> } else {
> - bSuccess = [fileMgr copyItemAtPath:srcFullPath
> toPath:newFileSystemPath error:&error];
> + bSuccess = YES;
> + if (bNewExists)
> + bSuccess = [fileMgr
> removeItemAtPath:newFileSystemPath error:&error];
> + if (bSuccess)
> + bSuccess = [fileMgr copyItemAtPath:srcFullPath
> toPath:newFileSystemPath error:&error];
> }
> } else { // move
> // iOS requires that destination must not exist before
> calling moveTo
--
This message was sent by Atlassian JIRA
(v6.2#6252)