You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by sg...@apache.org on 2014/10/08 18:44:16 UTC
[6/6] git commit: CB-6994 Improves merged code to be able to write a
File
CB-6994 Improves merged code to be able to write a File
Project: http://git-wip-us.apache.org/repos/asf/cordova-plugin-file/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-plugin-file/commit/055e7e0b
Tree: http://git-wip-us.apache.org/repos/asf/cordova-plugin-file/tree/055e7e0b
Diff: http://git-wip-us.apache.org/repos/asf/cordova-plugin-file/diff/055e7e0b
Branch: refs/heads/master
Commit: 055e7e0bde7d8580ec6c992b140fa5afbb3eda7e
Parents: a631753
Author: sgrebnov <v-...@microsoft.com>
Authored: Wed Oct 8 20:42:59 2014 +0400
Committer: sgrebnov <v-...@microsoft.com>
Committed: Wed Oct 8 20:42:59 2014 +0400
----------------------------------------------------------------------
src/windows/FileProxy.js | 55 +++++++++++++++++++++++--------------------
www/FileWriter.js | 6 ++---
2 files changed, 33 insertions(+), 28 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cordova-plugin-file/blob/055e7e0b/src/windows/FileProxy.js
----------------------------------------------------------------------
diff --git a/src/windows/FileProxy.js b/src/windows/FileProxy.js
index d466e87..5d1f7ca 100644
--- a/src/windows/FileProxy.js
+++ b/src/windows/FileProxy.js
@@ -67,13 +67,7 @@ var writeBlobAsync = function writeBlobAsync(storageFile, data) {
return new WinJS.Promise(function (resolve, reject) {
storageFile.openAsync(Windows.Storage.FileAccessMode.readWrite).then(
function (output) {
- var input;
- if (data.detachStream) {
- input = data.detachStream();
- }
- else {
- input = data.msDetachStream();
- }
+ var input = (data.detachStream || data.msDetachStream).call(data);
// Copy the stream from the blob to the File stream
Windows.Storage.Streams.RandomAccessStream.copyAsync(input, output).then(
@@ -102,6 +96,10 @@ var writeBlobAsync = function writeBlobAsync(storageFile, data) {
});
};
+var writeArrayBufferAsync = function writeArrayBufferAsync(storageFile, data) {
+ return writeBlobAsync(storageFile, new Blob([data]));
+};
+
module.exports = {
getFileMetadata: function (success, fail, args) {
@@ -555,32 +553,39 @@ module.exports = {
position = args[2],
isBinary = args[3];
- if (data instanceof ArrayBuffer) {
- var dataView = new DataView(data);
- data = new Blob([dataView]);
- }
-
fileName = fileName.split("/").join("\\");
// split path to folder and file name
var path = fileName.substring(0, fileName.lastIndexOf('\\')),
file = fileName.split('\\').pop();
+ function getWriteMethodForData(data, isBinary) {
+
+ if (data instanceof Blob) {
+ return writeBlobAsync;
+ }
+
+ if (data instanceof ArrayBuffer) {
+ return writeArrayBufferAsync;
+ }
+
+ if (isBinary) {
+ return writeBytesAsync;
+ }
+
+ if (typeof data === 'string') {
+ return writeTextAsync;
+ }
+
+ throw new Error('Unsupported data type for write method');
+ }
+
+ var writePromise = getWriteMethodForData(data, isBinary);
+
getFolderFromPathAsync(path).done(
- function(storageFolder) {
+ function (storageFolder) {
storageFolder.createFileAsync(file, Windows.Storage.CreationCollisionOption.openIfExists).done(
- function(storageFile) {
- var writePromise;
- if (data instanceof Blob || data instanceof File) {
- writePromise = writeBlobAsync;
- }
- else if (isBinary) {
- writePromise = writeBytesAsync;
- }
- else {
- writePromise = writeTextAsync;
- }
-
+ function (storageFile) {
writePromise(storageFile, data).done(
function () {
win(data.length);
http://git-wip-us.apache.org/repos/asf/cordova-plugin-file/blob/055e7e0b/www/FileWriter.js
----------------------------------------------------------------------
diff --git a/www/FileWriter.js b/www/FileWriter.js
index f009107..7f53c0c 100644
--- a/www/FileWriter.js
+++ b/www/FileWriter.js
@@ -1,4 +1,4 @@
-/*
+/*
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
@@ -99,11 +99,11 @@ FileWriter.prototype.write = function(data) {
var that=this;
var supportsBinary = (typeof window.Blob !== 'undefined' && typeof window.ArrayBuffer !== 'undefined');
- var isOkForWindows = (cordova.platformId === "windows8" || cordova.platformId === "windows") && (data instanceof Blob || data instanceof File);
+ var isProxySupportBlobNatively = (cordova.platformId === "windows8" || cordova.platformId === "windows");
var isBinary;
// Check to see if the incoming data is a blob
- if (!isOkForWindows && (data instanceof File || (supportsBinary && data instanceof Blob))) {
+ if (data instanceof File || (!isProxySupportBlobNatively && supportsBinary && data instanceof Blob)) {
var fileReader = new FileReader();
fileReader.onload = function() {
// Call this method again, with the arraybuffer as argument
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org