pluotsorbet/main.js

144 строки
3.9 KiB
JavaScript
Исходник Обычный вид История

2014-07-06 12:29:36 +04:00
/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
'use strict';
function parseManifest(data) {
data
.replace(/\r\n|\r/g, "\n")
.replace(/\n /g, "")
.split("\n")
.forEach(function(entry) {
if (entry) {
var keyval = entry.split(':');
MIDP.manifest[keyval[0]] = keyval[1].trim();
}
});
}
function load(file, responseType, cb) {
2014-07-06 12:29:36 +04:00
var xhr = new XMLHttpRequest();
xhr.open("GET", file, true);
xhr.responseType = responseType;
2014-07-06 12:29:36 +04:00
xhr.onload = function () {
cb(xhr.response);
}
xhr.send(null);
}
2014-08-03 02:56:56 +04:00
function run(className, args) {
if (urlParams.pushConn && urlParams.pushMidlet) {
MIDP.pushRegistrations.push({
connection: urlParams.pushConn,
midlet: urlParams.pushMidlet,
filter: "*",
suiteId: "1",
id: ++MIDP.lastRegistrationId,
});
}
function startJVM() {
var jvm = new JVM();
var jars = ["java/classes.jar", "tests/tests.jar"];
if (urlParams.jars)
jars = jars.concat(urlParams.jars.split(":"));
(function loadNextJar() {
if (jars.length) {
var jar = jars.shift();
load(jar, "arraybuffer", function (data) {
jvm.addPath(jar, data);
loadNextJar();
});
} else {
jvm.initializeBuiltinClasses();
if (urlParams.jad) {
load(urlParams.jad, "text", function(data) {
parseManifest(data);
jvm.startIsolate0(className, args);
2014-08-26 21:57:42 +04:00
});
} else {
jvm.startIsolate0(className, args);
2014-08-26 21:57:42 +04:00
}
}
})();
}
fs.exists("/_main.ks", function(exists) {
if (exists) {
startJVM();
} else {
load("certs/_main.ks", "blob", function(data) {
fs.create("/_main.ks", data, function() {
startJVM();
});
});
}
2014-08-26 21:57:42 +04:00
});
2014-07-16 03:14:48 +04:00
}
2014-08-03 03:14:38 +04:00
// To launch the unit tests: ?main=RunTests
2014-08-03 05:00:19 +04:00
// To launch the MIDP demo: ?main=com/sun/midp/main/MIDletSuiteLoader&midletClassName=HelloCommandMIDlet
// To launch a JAR file: ?main=com/sun/midp/main/MIDletSuiteLoader&args=app.jar
2014-08-03 02:56:56 +04:00
2014-08-06 04:08:59 +04:00
fs.init(function() {
2014-09-20 00:25:03 +04:00
fs.mkdir("/Persistent", function() {
var main = urlParams.main || "com/sun/midp/main/MIDletSuiteLoader";
MIDP.midletClassName = urlParams.midletClassName ? urlParams.midletClassName.replace(/\//g, '.') : "RunTests";
2014-09-20 00:25:03 +04:00
if (MIDP.midletClassName == "RunTests") {
var element = document.createElement('script');
2014-09-20 03:54:29 +04:00
element.setAttribute("type", "text/javascript");
2014-09-20 00:25:03 +04:00
element.setAttribute("src", "tests/native.js");
document.getElementsByTagName("head")[0].appendChild(element);
2014-09-20 00:25:03 +04:00
var testContactsScript = document.createElement('script');
2014-09-20 03:54:29 +04:00
testContactsScript.setAttribute("type", "text/javascript");
2014-09-20 00:25:03 +04:00
testContactsScript.setAttribute("src", "tests/contacts.js");
document.getElementsByTagName("head")[0].appendChild(testContactsScript);
testContactsScript.onload = run.bind(null, main, urlParams.args);
} else {
run(main, urlParams.args);
}
2014-09-05 21:04:33 +04:00
});
2014-08-05 21:03:38 +04:00
});
function getIsOff(button) {
return button.textContent.contains("OFF");
}
function toggle(button) {
var isOff = getIsOff(button);
button.textContent = button.textContent.replace(isOff ? "OFF" : "ON", isOff ? "ON" : "OFF");
}
window.onload = function() {
document.getElementById("clearstorage").onclick = function() {
asyncStorage.clear();
};
2014-08-09 00:27:00 +04:00
document.getElementById("trace").onclick = function() {
VM.DEBUG = !VM.DEBUG;
toggle(this);
2014-08-09 00:27:00 +04:00
};
document.getElementById("printAllExceptions").onclick = function() {
VM.DEBUG_PRINT_ALL_EXCEPTIONS = !VM.DEBUG_PRINT_ALL_EXCEPTIONS;
toggle(this);
2014-08-09 00:27:00 +04:00
};
document.getElementById("profile").onclick = function() {
if (getIsOff(this)) {
Instrument.startProfile();
} else {
Instrument.stopProfile();
}
toggle(this);
};
if (Instrument.profiling) {
toggle(document.getElementById("profile"));
}
};
if (urlParams.profile && !/no|0/.test(urlParams.profile)) {
Instrument.startProfile();
}