cordova-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ian Clelland (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CB-6938) iOS File plugin: copyTo for file returns error when destination file exists
Date Tue, 17 Jun 2014 13:20:02 GMT

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

Mime
View raw message