aboutsummaryrefslogtreecommitdiff
path: root/js/io/system/chromeapi.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/io/system/chromeapi.js')
-rw-r--r--js/io/system/chromeapi.js295
1 files changed, 295 insertions, 0 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>
2This file contains proprietary software owned by Motorola Mobility, Inc.<br/>
3No 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////////////////////////////////////////////////////////////////////////
9NOTES:
10////////////////////////////////////////////////////////////////////////
11///////////////////////////////////////////////////////////////////// */
12//
13var Montage = require("montage/core/core").Montage;
14////////////////////////////////////////////////////////////////////////
15//
16exports.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 /*
63for (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 /*
80var 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 /*
214window.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 xhr = new XMLHttpRequest();
227 //
228 xhr.open("GET", '/ninja-internal/js/io/templates/descriptor.json', false);
229 xhr.send();