diff options
Diffstat (limited to 'js/io/system')
-rw-r--r-- | js/io/system/chromeapi.js | 295 | ||||
-rwxr-xr-x | js/io/system/coreioapi.js | 161 | ||||
-rwxr-xr-x | js/io/system/fileio.js | 2 |
3 files changed, 351 insertions, 107 deletions
diff --git a/js/io/system/chromeapi.js b/js/io/system/chromeapi.js new file mode 100644 index 00000000..d1ff6da3 --- /dev/null +++ b/js/io/system/chromeapi.js | |||
@@ -0,0 +1,295 @@ | |||
1 | /* <copyright> | ||
2 | This file contains proprietary software owned by Motorola Mobility, Inc.<br/> | ||
3 | No rights, expressed or implied, whatsoever to this software are provided by Motorola Mobility, Inc. hereunder.<br/> | ||
4 | (c) Copyright 2011 Motorola Mobility, Inc. All Rights Reserved. | ||
5 | </copyright> */ | ||
6 | |||
7 | /* ///////////////////////////////////////////////////////////////////// | ||
8 | //////////////////////////////////////////////////////////////////////// | ||
9 | NOTES: | ||
10 | //////////////////////////////////////////////////////////////////////// | ||
11 | ///////////////////////////////////////////////////////////////////// */ | ||
12 | // | ||
13 | var Montage = require("montage/core/core").Montage; | ||
14 | //////////////////////////////////////////////////////////////////////// | ||
15 | // | ||
16 | exports.ChromeApi = Montage.create(Object.prototype, { | ||
17 | //////////////////////////////////////////////////////////////////// | ||
18 | //Needs size in MBs for fileSystem init | ||
19 | init: { | ||
20 | enumerable: true, | ||
21 | value: function(size) { | ||
22 | // | ||
23 | if (window.webkitRequestFileSystem) { | ||
24 | //Current way to init Chrome's fileSystem API | ||
25 | window.webkitRequestFileSystem(window.PERSISTENT, size*1024*1024, function (fs) { | ||
26 | this.fileSystem = fs; | ||
27 | }).bind(this); | ||
28 | } else { | ||
29 | //No fileSystem API | ||
30 | } | ||
31 | } | ||
32 | }, | ||
33 | //////////////////////////////////////////////////////////////////// | ||
34 | // | ||
35 | _fileSystem: { | ||
36 | enumerable: false, | ||
37 | value: null | ||
38 | }, | ||
39 | //////////////////////////////////////////////////////////////////// | ||
40 | // | ||
41 | fileSystem: { | ||
42 | enumerable: false, | ||
43 | get: function() { | ||
44 | return this._fileSystem; | ||
45 | }, | ||
46 | set: function(value) { | ||
47 | this._fileSystem = value; | ||
48 | } | ||
49 | } | ||
50 | //////////////////////////////////////////////////////////////////// | ||
51 | //////////////////////////////////////////////////////////////////// | ||
52 | }); | ||
53 | //////////////////////////////////////////////////////////////////////// | ||
54 | //////////////////////////////////////////////////////////////////////// | ||
55 | |||
56 | |||
57 | |||
58 | //window.webkitRequestFileSystem(window.PERSISTENT, 10*1024*1024 /*10MB*/, function (fs) { | ||
59 | |||
60 | |||
61 | |||
62 | /* | ||
63 | for (var i=1; i<50; i++) { | ||
64 | fs.root.getDirectory('montage0.0.0.'+i, {}, function(dirEntry) { | ||
65 | // | ||
66 | dirEntry.removeRecursively(function() { | ||
67 | console.log('Directory removed.'); | ||
68 | }); | ||
69 | }); | ||
70 | } | ||
71 | */ | ||
72 | |||
73 | |||
74 | |||
75 | |||
76 | |||
77 | |||
78 | // | ||
79 | /* | ||
80 | var xhr = new XMLHttpRequest(), dir, mjs; | ||
81 | // | ||
82 | xhr.open("GET", '/ninja-internal/node_modules/descriptor.json', false); | ||
83 | xhr.send(); | ||
84 | // | ||
85 | if (xhr.readyState === 4) { | ||
86 | // | ||
87 | mjs = JSON.parse(xhr.response); | ||
88 | // | ||
89 | if (mjs.version) { | ||
90 | //Checking for version to exist | ||
91 | fs.root.getDirectory('montage'+mjs.version, {}, function(dirEntry) { | ||
92 | //Already copied, nothing | ||
93 | console.log('montage'+mjs.version+' has already been created'); | ||
94 | }, function (e) { | ||
95 | //Not present, should be copied | ||
96 | createFolder(false, {name: 'montage'+mjs.version}); | ||
97 | // | ||
98 | for (var i in mjs.directories) { | ||
99 | createFolder('montage'+mjs.version, mjs.directories[i]); | ||
100 | } | ||
101 | // | ||
102 | |||
103 | |||
104 | for (var j in mjs.files) { | ||
105 | |||
106 | var frqst = new XMLHttpRequest(); | ||
107 | frqst.open("GET", '/ninja-internal/node_modules/montage/'+mjs.files[j], false); | ||
108 | frqst.send(); | ||
109 | |||
110 | if (frqst.readyState === 4) { | ||
111 | createFile('montage'+mjs.version+'/'+mjs.files[j], frqst.response); | ||
112 | } | ||
113 | } | ||
114 | |||
115 | // | ||
116 | console.log('montage'+mjs.version+' was created'); | ||
117 | }, folderError); | ||
118 | } | ||
119 | |||
120 | } | ||
121 | // | ||
122 | function createFile (path, content) { | ||
123 | // | ||
124 | fs.root.getFile(path, {create: true}, function(fileEntry) { | ||
125 | // | ||
126 | fileEntry.createWriter(function(fileWriter) { | ||
127 | // | ||
128 | //console.log(path); | ||
129 | var bb = new window.WebKitBlobBuilder; | ||
130 | bb.append(content); | ||
131 | fileWriter.write(bb.getBlob('text/plain')); | ||
132 | }, fileError); | ||
133 | |||
134 | }, fileError); | ||
135 | } | ||
136 | // | ||
137 | function createFolder(root, folder) { | ||
138 | if (folder.name) { | ||
139 | if (root) { | ||
140 | dir = root+'/'+folder.name; | ||
141 | } else { | ||
142 | dir = folder.name; | ||
143 | } | ||
144 | // | ||
145 | //console.log(dir); | ||
146 | // | ||
147 | fs.root.getDirectory(dir, {create: true}, function(dirEntry) { | ||
148 | // | ||
149 | }, folderError); | ||
150 | } | ||
151 | // | ||
152 | if (folder.children) { | ||
153 | for (var i in folder.children) { | ||
154 | if (root) { | ||
155 | createFolder(root+'/'+folder.name, folder.children[i]); | ||
156 | } else { | ||
157 | createFolder(folder.name, folder.children[i]); | ||
158 | } | ||
159 | } | ||
160 | } | ||
161 | } | ||
162 | // | ||
163 | function folderError (e) { | ||
164 | console.log(e); | ||
165 | } | ||
166 | function fileError (e) { | ||
167 | console.log(e); | ||
168 | } | ||
169 | |||
170 | |||
171 | setTimeout( function () { | ||
172 | for (var m in mjs.files) { | ||
173 | |||
174 | fs.root.getFile('montage'+mjs.version+'/'+mjs.files[m], {}, function(fileEntry) { | ||
175 | |||
176 | console.log(mjs.files[m]); | ||
177 | |||
178 | fileEntry.file(function(file) { | ||
179 | |||
180 | var reader = new FileReader(); | ||
181 | reader.onloadend = function(e) { | ||
182 | //console.log(e.target.file.name); | ||
183 | var test = this.createFile({uri: '/Users/kgq387/Desktop/Ninja Cloud/Disk/'+e.target.file.name, contents: e.target.result}); | ||
184 | }.bind(this); | ||
185 | |||
186 | reader.file = file; | ||
187 | reader.readAsText(file); | ||
188 | |||
189 | }.bind(this)); | ||
190 | |||
191 | }.bind(this)); | ||
192 | |||
193 | }}.bind(this), 5000); | ||
194 | */ | ||
195 | |||
196 | |||
197 | |||
198 | |||
199 | |||
200 | //}.bind(this)); | ||
201 | |||
202 | |||
203 | |||
204 | |||
205 | |||
206 | |||
207 | |||
208 | //////////////////////////////////////////////////////////// | ||
209 | //////////////////////////////////////////////////////////// | ||
210 | //TODO: Remove, this is only for testing | ||
211 | |||
212 | |||
213 | /* | ||
214 | window.webkitRequestFileSystem(window.PERSISTENT, 10*1024*1024 , function (fs) { | ||
215 | |||
216 | |||
217 | var start = new Date().getTime(); | ||
218 | |||
219 | for (var i=0; i<250; i++) { | ||
220 | |||
221 | fs.root.getFile('test'+i+'.txt', {create: true}, function(fileEntry) { | ||
222 | |||
223 | fileEntry.createWriter(function(fileWriter) { | ||
224 | |||
225 | |||
226 | var xh |