qt.js 1.34 KB
Newer Older
Marek Kotewicz's avatar
Marek Kotewicz committed
1 2 3 4
/*
    This file is part of ethereum.js.

    ethereum.js is free software: you can redistribute it and/or modify
Marek Kotewicz's avatar
Marek Kotewicz committed
5
    it under the terms of the GNU Lesser General Public License as published by
Marek Kotewicz's avatar
Marek Kotewicz committed
6 7 8 9 10 11
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    ethereum.js is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Marek Kotewicz's avatar
Marek Kotewicz committed
12
    GNU Lesser General Public License for more details.
Marek Kotewicz's avatar
Marek Kotewicz committed
13

Marek Kotewicz's avatar
Marek Kotewicz committed
14
    You should have received a copy of the GNU Lesser General Public License
Marek Kotewicz's avatar
Marek Kotewicz committed
15 16
    along with ethereum.js.  If not, see <http://www.gnu.org/licenses/>.
*/
Marek Kotewicz's avatar
Marek Kotewicz committed
17
/** @file qt.js
Marek Kotewicz's avatar
Marek Kotewicz committed
18
 * @authors:
Marek Kotewicz's avatar
Marek Kotewicz committed
19
 *   Jeffrey Wilcke <jeff@ethdev.com>
Marek Kotewicz's avatar
Marek Kotewicz committed
20 21 22 23
 *   Marek Kotewicz <marek@ethdev.com>
 * @date 2014
 */

Marek Kotewicz's avatar
Marek Kotewicz committed
24 25
var QtProvider = function() {
    this.handlers = [];
Marian Oancea's avatar
Marian Oancea committed
26

Marek Kotewicz's avatar
Marek Kotewicz committed
27 28 29 30 31
    var self = this;
    navigator.qt.onmessage = function (message) {
        self.handlers.forEach(function (handler) {
            handler.call(self, JSON.parse(message.data));
        });
32
    };
Marek Kotewicz's avatar
Marek Kotewicz committed
33
};
34

Marek Kotewicz's avatar
Marek Kotewicz committed
35 36 37
QtProvider.prototype.send = function(payload) {
    navigator.qt.postMessage(JSON.stringify(payload));
};
obscuren's avatar
obscuren committed
38

Marek Kotewicz's avatar
Marek Kotewicz committed
39 40 41 42 43
Object.defineProperty(QtProvider.prototype, "onmessage", {
    set: function(handler) {
        this.handlers.push(handler);
    }
});
44

Marian Oancea's avatar
Marian Oancea committed
45
module.exports = QtProvider;