Revision c1adc63d

b/webodf/lib/runtime.js
101 101
 * @param {Element} logoutput
102 102
 */
103 103
function BrowserRuntime(logoutput) {
104
    var cache = {};
104
    var cache = {},
105
        nativeio = window.nativeio || {};
105 106
    function log(msgOrCategory, msg) {
106 107
        var node, doc, category;
107 108
        if (msg) {
......
134 135
        }
135 136
        return str;
136 137
    }
137
/*
138
    function makeBlob(data) {
139
        var builder = new BlobBuilder(),
140
            buffer = new ArrayBuffer(data.length),
141
            ui8a = new Uint8Array(data, 0),
142
            i, l = data.length;
143
        for (i = 0; i < l; i += 1) {
144
            ui8a[i] = data.charCodeAt(i) & 0xff;
145
        }
146
        builder.append(data);
147
        return builder.getBlob();
148
    }
149
*/
150
    this.readFile = function (path, encoding, callback) {
138
    function readFile(path, encoding, callback) {
151 139
        var xhr = new XMLHttpRequest();
152 140
        function handleResult() {
153 141
            var data;
......
183 171
        } catch (e) {
184 172
            callback(e.message);
185 173
        }
186
    };
187
    this.read = function (path, offset, length, callback) {
174
    }
175
    function read(path, offset, length, callback) {
188 176
        if (path in cache) {
189 177
            callback(null, cache[path].substring(offset, length + offset));
190 178
            return;
......
198 186
        });
199 187
        //xhr.setRequestHeader('Range', 'bytes=' + offset + '-' +
200 188
        //       (offset + length - 1));
201
    };
202
    this.readFileSync = function (path, encoding) {
189
    }
190
    function readFileSync(path, encoding) {
203 191
        var xhr = new XMLHttpRequest(),
204 192
            result;
205 193
        xhr.open('GET', path, false);
......
216 204
        } catch (e) {
217 205
        }
218 206
        return result;
219
    };
220
    this.writeFile = function (path, data, encoding, callback) {
207
    }
208
    function writeFile(path, data, encoding, callback) {
221 209
        var xhr = new XMLHttpRequest();
222 210
        function handleResult() {
223 211
            if (xhr.readyState === 4) {
......
251 239
        } catch (e) {
252 240
            callback(e.message);
253 241
        }
254
    };
255
    this.deleteFile = function (path, callback) {
242
    }
243
    function deleteFile(path, callback) {
256 244
        var xhr = new XMLHttpRequest();
257 245
        xhr.open('DELETE', path, true);
258 246
        xhr.onreadystatechange = function () {
......
265 253
            }
266 254
        };
267 255
        xhr.send(null);
268
    };
269
    this.loadXML = function (path, callback) {
256
    }
257
    function loadXML(path, callback) {
270 258
        var xhr = new XMLHttpRequest();
271 259
        function handleResult() {
272 260
            if (xhr.readyState === 4) {
......
289 277
        } catch (e) {
290 278
            callback(e.message);
291 279
        }
292
    };
293
    this.isFile = function (path, callback) {
280
    }
281
    function isFile(path, callback) {
294 282
        this.getFileSize(path, function (size) {
295 283
            callback(size !== -1);
296 284
        });
297
    };
298
    this.getFileSize = function (path, callback) {
285
    }
286
    function getFileSize(path, callback) {
299 287
        var xhr = new XMLHttpRequest();
300 288
        xhr.open("HEAD", path, true);
301 289
        xhr.onreadystatechange = function () {
......
310 298
            }
311 299
        };
312 300
        xhr.send(null);
313
    };
301
    }
302
    function wrap(nativeFunction, nargs) {
303
        if (!nativeFunction) {
304
            return null;
305
        }
306
        return function () {
307
            // assume the last argument is a callback function
308
            var callback = arguments[nargs],
309
                args = Array.prototype.slice.call(arguments, 0, nargs),
310
                callbackname = "callback" + String(Math.random()).substring(2);
311
            window[callbackname] = function () {
312
                delete window[callbackname];
313
                callback.apply(this, arguments);
314
            };
315
            args.push(callbackname);
316
            nativeFunction.apply(this, args);
317
        };
318
    }
319
    this.readFile = readFile;
320
    this.read = read;//wrap(nativeio.read, 3) || read;
321
    this.readFileSync = readFileSync;
322
    this.writeFile = wrap(nativeio.writeFile, 3) || writeFile;
323
    this.deleteFile = deleteFile;
324
    this.loadXML = loadXML;
325
    this.isFile = isFile;
326
    this.getFileSize = wrap(nativeio.getFileSize, 1) || getFileSize;
314 327
    this.log = log;
315 328
    this.setTimeout = function (f, msec) {
316 329
        setTimeout(f, msec);

Also available in: Unified diff