summaryrefslogtreecommitdiff
path: root/plugins/org.apache.cordova.file/www/blackberry10/FileReader.js
blob: 6e3a10c6dbca0f497e656f473324a79bf22ec4ed (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
/*
 *
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 *
*/

var origFileReader = window.FileReader,
    fileUtils = require('./BB10Utils'),
    utils = require('cordova/utils');

var FileReader = function() {
    this.nativeReader = new origFileReader();
};

utils.defineGetter(FileReader.prototype, 'readyState', function() {
    return this.nativeReader.readyState;
});

utils.defineGetter(FileReader.prototype, 'error', function() {
    return this.nativeReader.error;
});

utils.defineGetter(FileReader.prototype, 'result', function() {
    return this.nativeReader.result;
});

function defineEvent(eventName) {
    utils.defineGetterSetter(FileReader.prototype, eventName, function() {
        return this.nativeReader[eventName] || null;
    }, function(value) {
        this.nativeReader[eventName] = value;
    });
}

defineEvent('onabort');
defineEvent('onerror');
defineEvent('onload');
defineEvent('onloadend');
defineEvent('onloadstart');
defineEvent('onprogress');

FileReader.prototype.abort = function() {
    return this.nativeReader.abort();
};

function read(method, context, file, encoding) {
    if (file.fullPath) {
         resolveLocalFileSystemURI("filesystem:local:///persistent/" + file.fullPath, function (entry) {
            entry.nativeEntry.file(function (nativeFile) {
                context.nativeReader[method].call(context.nativeReader, nativeFile, encoding);
            }, context.onerror);
        }, context.onerror);
    } else {
        context.nativeReader[method](file, encoding);
    }
}

FileReader.prototype.readAsText = function(file, encoding) {
    read("readAsText", this, file, encoding);
};

FileReader.prototype.readAsDataURL = function(file) {
    read("readAsDataURL", this, file);
};

FileReader.prototype.readAsBinaryString = function(file) {
    read("readAsBinaryString", this, file);
};

FileReader.prototype.readAsArrayBuffer = function(file) {
    read("readAsArrayBuffer", this, file);
};

window.FileReader = FileReader;
module.exports = FileReader;