blob: b9a107f49293e124be9569442711feb78fa61ebe [file] [log] [blame]
/*
*
* Copyright 2013 Canonical Ltd.
*
* Licensed 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 cordova = require('cordova'),
utils = require('cordova/utils');
var callbackId = 1;
cordova.callbacks = [];
cordova.callback = function() {
var scId = arguments[0];
var callbackRef = null;
var parameters = [];
for (var i = 1; i < arguments.length; i++) {
parameters[i-1] = arguments[i];
}
callbackRef = cordova.callbacks[scId];
// Even IDs are success-, odd are error-callbacks - make sure we remove both
if ((scId % 2) !== 0) {
scId = scId - 1;
}
// Remove both the success as well as the error callback from the stack
delete cordova.callbacks[scId];
delete cordova.callbacks[scId + 1];
if (typeof callbackRef == "function") callbackRef.apply(this, parameters);
};
cordova.callbackWithoutRemove = function() {
var scId = arguments[0];
var callbackRef = null;
var parameters = [];
for (var i = 1; i < arguments.length; i++) {
parameters[i-1] = arguments[i];
}
callbackRef = cordova.callbacks[scId];
if (typeof(callbackRef) == "function") callbackRef.apply(this, parameters);
};
function ubuntuExec(success, fail, service, action, args) {
if (callbackId % 2) {
callbackId++;
}
var scId = callbackId++;
var ecId = callbackId++;
cordova.callbacks[scId] = success;
cordova.callbacks[ecId] = fail;
args.unshift(ecId);
args.unshift(scId);
navigator.qt.postMessage(JSON.stringify({messageType: "callPluginFunction", plugin: service, func: action, params: args}));
}
module.exports = ubuntuExec;